mirror of
https://github.com/anatolykopyl/vue-three-d-mockup.git
synced 2026-03-26 12:55:08 +00:00
16804 lines
1.2 MiB
16804 lines
1.2 MiB
import { ref as NI, onMounted as nI, openBlock as AI, createElementBlock as zI } from "vue";
|
|
/**
|
|
* @license
|
|
* Copyright 2010-2022 Three.js Authors
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
const Wn = "137", iI = 0, yA = 1, II = 2, ti = 1, TI = 2, le = 3, Ye = 0, eD = 1, Ne = 2, ei = 1, zt = 0, ve = 1, oA = 2, aA = 3, CA = 4, uI = 5, Wt = 100, gI = 101, rI = 102, LA = 103, wA = 104, sI = 200, cI = 201, jI = 202, yI = 203, Ni = 204, ni = 205, oI = 206, aI = 207, CI = 208, LI = 209, wI = 210, OI = 0, xI = 1, EI = 2, fn = 3, lI = 4, dI = 5, vI = 6, pI = 7, fN = 0, hI = 1, YI = 2, it = 0, UI = 1, QI = 2, fI = 3, mI = 4, kI = 5, Ai = 300, be = 301, Ke = 302, mn = 303, kn = 304, mN = 306, qn = 307, Sn = 1e3, xD = 1001, Zn = 1002, ND = 1003, OA = 1004, xA = 1005, uD = 1006, SI = 1007, kN = 1008, It = 1009, ZI = 1010, _I = 1011, Ue = 1012, bI = 1013, lN = 1014, Ot = 1015, Me = 1016, KI = 1017, RI = 1018, De = 1020, PI = 1021, FI = 1022, yD = 1023, BI = 1024, VI = 1025, Et = 1026, ne = 1027, HI = 1028, GI = 1029, WI = 1030, qI = 1031, XI = 1033, VN = 33776, HN = 33777, GN = 33778, WN = 33779, EA = 35840, lA = 35841, dA = 35842, vA = 35843, JI = 36196, pA = 37492, hA = 37496, YA = 37808, UA = 37809, QA = 37810, fA = 37811, mA = 37812, kA = 37813, SA = 37814, ZA = 37815, _A = 37816, bA = 37817, KA = 37818, RA = 37819, PA = 37820, FA = 37821, BA = 36492, $I = 2200, MT = 2201, DT = 2202, vN = 2300, pN = 2301, qN = 2302, qt = 2400, Xt = 2401, hN = 2402, Xn = 2500, zi = 2501, tT = 0, st = 3e3, HM = 3001, eT = 3200, NT = 3201, ie = 0, nT = 1, XN = 7680, AT = 519, Qe = 35044, YN = 35048, VA = "300 es", _n = 1035;
|
|
class dt {
|
|
addEventListener(M, D) {
|
|
this._listeners === void 0 && (this._listeners = {});
|
|
const t = this._listeners;
|
|
t[M] === void 0 && (t[M] = []), t[M].indexOf(D) === -1 && t[M].push(D);
|
|
}
|
|
hasEventListener(M, D) {
|
|
if (this._listeners === void 0)
|
|
return !1;
|
|
const t = this._listeners;
|
|
return t[M] !== void 0 && t[M].indexOf(D) !== -1;
|
|
}
|
|
removeEventListener(M, D) {
|
|
if (this._listeners === void 0)
|
|
return;
|
|
const e = this._listeners[M];
|
|
if (e !== void 0) {
|
|
const N = e.indexOf(D);
|
|
N !== -1 && e.splice(N, 1);
|
|
}
|
|
}
|
|
dispatchEvent(M) {
|
|
if (this._listeners === void 0)
|
|
return;
|
|
const t = this._listeners[M.type];
|
|
if (t !== void 0) {
|
|
M.target = this;
|
|
const e = t.slice(0);
|
|
for (let N = 0, A = e.length; N < A; N++)
|
|
e[N].call(this, M);
|
|
M.target = null;
|
|
}
|
|
}
|
|
}
|
|
const TD = [];
|
|
for (let n = 0; n < 256; n++)
|
|
TD[n] = (n < 16 ? "0" : "") + n.toString(16);
|
|
const JN = Math.PI / 180, bn = 180 / Math.PI;
|
|
function bD() {
|
|
const n = Math.random() * 4294967295 | 0, M = Math.random() * 4294967295 | 0, D = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0;
|
|
return (TD[n & 255] + TD[n >> 8 & 255] + TD[n >> 16 & 255] + TD[n >> 24 & 255] + "-" + TD[M & 255] + TD[M >> 8 & 255] + "-" + TD[M >> 16 & 15 | 64] + TD[M >> 24 & 255] + "-" + TD[D & 63 | 128] + TD[D >> 8 & 255] + "-" + TD[D >> 16 & 255] + TD[D >> 24 & 255] + TD[t & 255] + TD[t >> 8 & 255] + TD[t >> 16 & 255] + TD[t >> 24 & 255]).toUpperCase();
|
|
}
|
|
function OD(n, M, D) {
|
|
return Math.max(M, Math.min(D, n));
|
|
}
|
|
function zT(n, M) {
|
|
return (n % M + M) % M;
|
|
}
|
|
function $N(n, M, D) {
|
|
return (1 - D) * n + D * M;
|
|
}
|
|
function HA(n) {
|
|
return (n & n - 1) === 0 && n !== 0;
|
|
}
|
|
function iT(n) {
|
|
return Math.pow(2, Math.floor(Math.log(n) / Math.LN2));
|
|
}
|
|
class q {
|
|
constructor(M = 0, D = 0) {
|
|
this.x = M, this.y = D;
|
|
}
|
|
get width() {
|
|
return this.x;
|
|
}
|
|
set width(M) {
|
|
this.x = M;
|
|
}
|
|
get height() {
|
|
return this.y;
|
|
}
|
|
set height(M) {
|
|
this.y = M;
|
|
}
|
|
set(M, D) {
|
|
return this.x = M, this.y = D, this;
|
|
}
|
|
setScalar(M) {
|
|
return this.x = M, this.y = M, this;
|
|
}
|
|
setX(M) {
|
|
return this.x = M, this;
|
|
}
|
|
setY(M) {
|
|
return this.y = M, this;
|
|
}
|
|
setComponent(M, D) {
|
|
switch (M) {
|
|
case 0:
|
|
this.x = D;
|
|
break;
|
|
case 1:
|
|
this.y = D;
|
|
break;
|
|
default:
|
|
throw new Error("index is out of range: " + M);
|
|
}
|
|
return this;
|
|
}
|
|
getComponent(M) {
|
|
switch (M) {
|
|
case 0:
|
|
return this.x;
|
|
case 1:
|
|
return this.y;
|
|
default:
|
|
throw new Error("index is out of range: " + M);
|
|
}
|
|
}
|
|
clone() {
|
|
return new this.constructor(this.x, this.y);
|
|
}
|
|
copy(M) {
|
|
return this.x = M.x, this.y = M.y, this;
|
|
}
|
|
add(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(M, D)) : (this.x += M.x, this.y += M.y, this);
|
|
}
|
|
addScalar(M) {
|
|
return this.x += M, this.y += M, this;
|
|
}
|
|
addVectors(M, D) {
|
|
return this.x = M.x + D.x, this.y = M.y + D.y, this;
|
|
}
|
|
addScaledVector(M, D) {
|
|
return this.x += M.x * D, this.y += M.y * D, this;
|
|
}
|
|
sub(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(M, D)) : (this.x -= M.x, this.y -= M.y, this);
|
|
}
|
|
subScalar(M) {
|
|
return this.x -= M, this.y -= M, this;
|
|
}
|
|
subVectors(M, D) {
|
|
return this.x = M.x - D.x, this.y = M.y - D.y, this;
|
|
}
|
|
multiply(M) {
|
|
return this.x *= M.x, this.y *= M.y, this;
|
|
}
|
|
multiplyScalar(M) {
|
|
return this.x *= M, this.y *= M, this;
|
|
}
|
|
divide(M) {
|
|
return this.x /= M.x, this.y /= M.y, this;
|
|
}
|
|
divideScalar(M) {
|
|
return this.multiplyScalar(1 / M);
|
|
}
|
|
applyMatrix3(M) {
|
|
const D = this.x, t = this.y, e = M.elements;
|
|
return this.x = e[0] * D + e[3] * t + e[6], this.y = e[1] * D + e[4] * t + e[7], this;
|
|
}
|
|
min(M) {
|
|
return this.x = Math.min(this.x, M.x), this.y = Math.min(this.y, M.y), this;
|
|
}
|
|
max(M) {
|
|
return this.x = Math.max(this.x, M.x), this.y = Math.max(this.y, M.y), this;
|
|
}
|
|
clamp(M, D) {
|
|
return this.x = Math.max(M.x, Math.min(D.x, this.x)), this.y = Math.max(M.y, Math.min(D.y, this.y)), this;
|
|
}
|
|
clampScalar(M, D) {
|
|
return this.x = Math.max(M, Math.min(D, this.x)), this.y = Math.max(M, Math.min(D, this.y)), this;
|
|
}
|
|
clampLength(M, D) {
|
|
const t = this.length();
|
|
return this.divideScalar(t || 1).multiplyScalar(Math.max(M, Math.min(D, t)));
|
|
}
|
|
floor() {
|
|
return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this;
|
|
}
|
|
ceil() {
|
|
return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this;
|
|
}
|
|
round() {
|
|
return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
|
|
}
|
|
roundToZero() {
|
|
return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this;
|
|
}
|
|
negate() {
|
|
return this.x = -this.x, this.y = -this.y, this;
|
|
}
|
|
dot(M) {
|
|
return this.x * M.x + this.y * M.y;
|
|
}
|
|
cross(M) {
|
|
return this.x * M.y - this.y * M.x;
|
|
}
|
|
lengthSq() {
|
|
return this.x * this.x + this.y * this.y;
|
|
}
|
|
length() {
|
|
return Math.sqrt(this.x * this.x + this.y * this.y);
|
|
}
|
|
manhattanLength() {
|
|
return Math.abs(this.x) + Math.abs(this.y);
|
|
}
|
|
normalize() {
|
|
return this.divideScalar(this.length() || 1);
|
|
}
|
|
angle() {
|
|
return Math.atan2(-this.y, -this.x) + Math.PI;
|
|
}
|
|
distanceTo(M) {
|
|
return Math.sqrt(this.distanceToSquared(M));
|
|
}
|
|
distanceToSquared(M) {
|
|
const D = this.x - M.x, t = this.y - M.y;
|
|
return D * D + t * t;
|
|
}
|
|
manhattanDistanceTo(M) {
|
|
return Math.abs(this.x - M.x) + Math.abs(this.y - M.y);
|
|
}
|
|
setLength(M) {
|
|
return this.normalize().multiplyScalar(M);
|
|
}
|
|
lerp(M, D) {
|
|
return this.x += (M.x - this.x) * D, this.y += (M.y - this.y) * D, this;
|
|
}
|
|
lerpVectors(M, D, t) {
|
|
return this.x = M.x + (D.x - M.x) * t, this.y = M.y + (D.y - M.y) * t, this;
|
|
}
|
|
equals(M) {
|
|
return M.x === this.x && M.y === this.y;
|
|
}
|
|
fromArray(M, D = 0) {
|
|
return this.x = M[D], this.y = M[D + 1], this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
return M[D] = this.x, M[D + 1] = this.y, M;
|
|
}
|
|
fromBufferAttribute(M, D, t) {
|
|
return t !== void 0 && console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."), this.x = M.getX(D), this.y = M.getY(D), this;
|
|
}
|
|
rotateAround(M, D) {
|
|
const t = Math.cos(D), e = Math.sin(D), N = this.x - M.x, A = this.y - M.y;
|
|
return this.x = N * t - A * e + M.x, this.y = N * e + A * t + M.y, this;
|
|
}
|
|
random() {
|
|
return this.x = Math.random(), this.y = Math.random(), this;
|
|
}
|
|
*[Symbol.iterator]() {
|
|
yield this.x, yield this.y;
|
|
}
|
|
}
|
|
q.prototype.isVector2 = !0;
|
|
class gD {
|
|
constructor() {
|
|
this.elements = [
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
], arguments.length > 0 && console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.");
|
|
}
|
|
set(M, D, t, e, N, A, z, I, i) {
|
|
const T = this.elements;
|
|
return T[0] = M, T[1] = e, T[2] = z, T[3] = D, T[4] = N, T[5] = I, T[6] = t, T[7] = A, T[8] = i, this;
|
|
}
|
|
identity() {
|
|
return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1), this;
|
|
}
|
|
copy(M) {
|
|
const D = this.elements, t = M.elements;
|
|
return D[0] = t[0], D[1] = t[1], D[2] = t[2], D[3] = t[3], D[4] = t[4], D[5] = t[5], D[6] = t[6], D[7] = t[7], D[8] = t[8], this;
|
|
}
|
|
extractBasis(M, D, t) {
|
|
return M.setFromMatrix3Column(this, 0), D.setFromMatrix3Column(this, 1), t.setFromMatrix3Column(this, 2), this;
|
|
}
|
|
setFromMatrix4(M) {
|
|
const D = M.elements;
|
|
return this.set(D[0], D[4], D[8], D[1], D[5], D[9], D[2], D[6], D[10]), this;
|
|
}
|
|
multiply(M) {
|
|
return this.multiplyMatrices(this, M);
|
|
}
|
|
premultiply(M) {
|
|
return this.multiplyMatrices(M, this);
|
|
}
|
|
multiplyMatrices(M, D) {
|
|
const t = M.elements, e = D.elements, N = this.elements, A = t[0], z = t[3], I = t[6], i = t[1], T = t[4], u = t[7], g = t[2], s = t[5], j = t[8], y = e[0], a = e[3], c = e[6], r = e[1], l = e[4], C = e[7], E = e[2], d = e[5], p = e[8];
|
|
return N[0] = A * y + z * r + I * E, N[3] = A * a + z * l + I * d, N[6] = A * c + z * C + I * p, N[1] = i * y + T * r + u * E, N[4] = i * a + T * l + u * d, N[7] = i * c + T * C + u * p, N[2] = g * y + s * r + j * E, N[5] = g * a + s * l + j * d, N[8] = g * c + s * C + j * p, this;
|
|
}
|
|
multiplyScalar(M) {
|
|
const D = this.elements;
|
|
return D[0] *= M, D[3] *= M, D[6] *= M, D[1] *= M, D[4] *= M, D[7] *= M, D[2] *= M, D[5] *= M, D[8] *= M, this;
|
|
}
|
|
determinant() {
|
|
const M = this.elements, D = M[0], t = M[1], e = M[2], N = M[3], A = M[4], z = M[5], I = M[6], i = M[7], T = M[8];
|
|
return D * A * T - D * z * i - t * N * T + t * z * I + e * N * i - e * A * I;
|
|
}
|
|
invert() {
|
|
const M = this.elements, D = M[0], t = M[1], e = M[2], N = M[3], A = M[4], z = M[5], I = M[6], i = M[7], T = M[8], u = T * A - z * i, g = z * I - T * N, s = i * N - A * I, j = D * u + t * g + e * s;
|
|
if (j === 0)
|
|
return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
const y = 1 / j;
|
|
return M[0] = u * y, M[1] = (e * i - T * t) * y, M[2] = (z * t - e * A) * y, M[3] = g * y, M[4] = (T * D - e * I) * y, M[5] = (e * N - z * D) * y, M[6] = s * y, M[7] = (t * I - i * D) * y, M[8] = (A * D - t * N) * y, this;
|
|
}
|
|
transpose() {
|
|
let M;
|
|
const D = this.elements;
|
|
return M = D[1], D[1] = D[3], D[3] = M, M = D[2], D[2] = D[6], D[6] = M, M = D[5], D[5] = D[7], D[7] = M, this;
|
|
}
|
|
getNormalMatrix(M) {
|
|
return this.setFromMatrix4(M).invert().transpose();
|
|
}
|
|
transposeIntoArray(M) {
|
|
const D = this.elements;
|
|
return M[0] = D[0], M[1] = D[3], M[2] = D[6], M[3] = D[1], M[4] = D[4], M[5] = D[7], M[6] = D[2], M[7] = D[5], M[8] = D[8], this;
|
|
}
|
|
setUvTransform(M, D, t, e, N, A, z) {
|
|
const I = Math.cos(N), i = Math.sin(N);
|
|
return this.set(t * I, t * i, -t * (I * A + i * z) + A + M, -e * i, e * I, -e * (-i * A + I * z) + z + D, 0, 0, 1), this;
|
|
}
|
|
scale(M, D) {
|
|
const t = this.elements;
|
|
return t[0] *= M, t[3] *= M, t[6] *= M, t[1] *= D, t[4] *= D, t[7] *= D, this;
|
|
}
|
|
rotate(M) {
|
|
const D = Math.cos(M), t = Math.sin(M), e = this.elements, N = e[0], A = e[3], z = e[6], I = e[1], i = e[4], T = e[7];
|
|
return e[0] = D * N + t * I, e[3] = D * A + t * i, e[6] = D * z + t * T, e[1] = -t * N + D * I, e[4] = -t * A + D * i, e[7] = -t * z + D * T, this;
|
|
}
|
|
translate(M, D) {
|
|
const t = this.elements;
|
|
return t[0] += M * t[2], t[3] += M * t[5], t[6] += M * t[8], t[1] += D * t[2], t[4] += D * t[5], t[7] += D * t[8], this;
|
|
}
|
|
equals(M) {
|
|
const D = this.elements, t = M.elements;
|
|
for (let e = 0; e < 9; e++)
|
|
if (D[e] !== t[e])
|
|
return !1;
|
|
return !0;
|
|
}
|
|
fromArray(M, D = 0) {
|
|
for (let t = 0; t < 9; t++)
|
|
this.elements[t] = M[t + D];
|
|
return this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
const t = this.elements;
|
|
return M[D] = t[0], M[D + 1] = t[1], M[D + 2] = t[2], M[D + 3] = t[3], M[D + 4] = t[4], M[D + 5] = t[5], M[D + 6] = t[6], M[D + 7] = t[7], M[D + 8] = t[8], M;
|
|
}
|
|
clone() {
|
|
return new this.constructor().fromArray(this.elements);
|
|
}
|
|
}
|
|
gD.prototype.isMatrix3 = !0;
|
|
function ii(n) {
|
|
for (let M = n.length - 1; M >= 0; --M)
|
|
if (n[M] > 65535)
|
|
return !0;
|
|
return !1;
|
|
}
|
|
function fe(n) {
|
|
return document.createElementNS("http://www.w3.org/1999/xhtml", n);
|
|
}
|
|
const Ii = {
|
|
aliceblue: 15792383,
|
|
antiquewhite: 16444375,
|
|
aqua: 65535,
|
|
aquamarine: 8388564,
|
|
azure: 15794175,
|
|
beige: 16119260,
|
|
bisque: 16770244,
|
|
black: 0,
|
|
blanchedalmond: 16772045,
|
|
blue: 255,
|
|
blueviolet: 9055202,
|
|
brown: 10824234,
|
|
burlywood: 14596231,
|
|
cadetblue: 6266528,
|
|
chartreuse: 8388352,
|
|
chocolate: 13789470,
|
|
coral: 16744272,
|
|
cornflowerblue: 6591981,
|
|
cornsilk: 16775388,
|
|
crimson: 14423100,
|
|
cyan: 65535,
|
|
darkblue: 139,
|
|
darkcyan: 35723,
|
|
darkgoldenrod: 12092939,
|
|
darkgray: 11119017,
|
|
darkgreen: 25600,
|
|
darkgrey: 11119017,
|
|
darkkhaki: 12433259,
|
|
darkmagenta: 9109643,
|
|
darkolivegreen: 5597999,
|
|
darkorange: 16747520,
|
|
darkorchid: 10040012,
|
|
darkred: 9109504,
|
|
darksalmon: 15308410,
|
|
darkseagreen: 9419919,
|
|
darkslateblue: 4734347,
|
|
darkslategray: 3100495,
|
|
darkslategrey: 3100495,
|
|
darkturquoise: 52945,
|
|
darkviolet: 9699539,
|
|
deeppink: 16716947,
|
|
deepskyblue: 49151,
|
|
dimgray: 6908265,
|
|
dimgrey: 6908265,
|
|
dodgerblue: 2003199,
|
|
firebrick: 11674146,
|
|
floralwhite: 16775920,
|
|
forestgreen: 2263842,
|
|
fuchsia: 16711935,
|
|
gainsboro: 14474460,
|
|
ghostwhite: 16316671,
|
|
gold: 16766720,
|
|
goldenrod: 14329120,
|
|
gray: 8421504,
|
|
green: 32768,
|
|
greenyellow: 11403055,
|
|
grey: 8421504,
|
|
honeydew: 15794160,
|
|
hotpink: 16738740,
|
|
indianred: 13458524,
|
|
indigo: 4915330,
|
|
ivory: 16777200,
|
|
khaki: 15787660,
|
|
lavender: 15132410,
|
|
lavenderblush: 16773365,
|
|
lawngreen: 8190976,
|
|
lemonchiffon: 16775885,
|
|
lightblue: 11393254,
|
|
lightcoral: 15761536,
|
|
lightcyan: 14745599,
|
|
lightgoldenrodyellow: 16448210,
|
|
lightgray: 13882323,
|
|
lightgreen: 9498256,
|
|
lightgrey: 13882323,
|
|
lightpink: 16758465,
|
|
lightsalmon: 16752762,
|
|
lightseagreen: 2142890,
|
|
lightskyblue: 8900346,
|
|
lightslategray: 7833753,
|
|
lightslategrey: 7833753,
|
|
lightsteelblue: 11584734,
|
|
lightyellow: 16777184,
|
|
lime: 65280,
|
|
limegreen: 3329330,
|
|
linen: 16445670,
|
|
magenta: 16711935,
|
|
maroon: 8388608,
|
|
mediumaquamarine: 6737322,
|
|
mediumblue: 205,
|
|
mediumorchid: 12211667,
|
|
mediumpurple: 9662683,
|
|
mediumseagreen: 3978097,
|
|
mediumslateblue: 8087790,
|
|
mediumspringgreen: 64154,
|
|
mediumturquoise: 4772300,
|
|
mediumvioletred: 13047173,
|
|
midnightblue: 1644912,
|
|
mintcream: 16121850,
|
|
mistyrose: 16770273,
|
|
moccasin: 16770229,
|
|
navajowhite: 16768685,
|
|
navy: 128,
|
|
oldlace: 16643558,
|
|
olive: 8421376,
|
|
olivedrab: 7048739,
|
|
orange: 16753920,
|
|
orangered: 16729344,
|
|
orchid: 14315734,
|
|
palegoldenrod: 15657130,
|
|
palegreen: 10025880,
|
|
paleturquoise: 11529966,
|
|
palevioletred: 14381203,
|
|
papayawhip: 16773077,
|
|
peachpuff: 16767673,
|
|
peru: 13468991,
|
|
pink: 16761035,
|
|
plum: 14524637,
|
|
powderblue: 11591910,
|
|
purple: 8388736,
|
|
rebeccapurple: 6697881,
|
|
red: 16711680,
|
|
rosybrown: 12357519,
|
|
royalblue: 4286945,
|
|
saddlebrown: 9127187,
|
|
salmon: 16416882,
|
|
sandybrown: 16032864,
|
|
seagreen: 3050327,
|
|
seashell: 16774638,
|
|
sienna: 10506797,
|
|
silver: 12632256,
|
|
skyblue: 8900331,
|
|
slateblue: 6970061,
|
|
slategray: 7372944,
|
|
slategrey: 7372944,
|
|
snow: 16775930,
|
|
springgreen: 65407,
|
|
steelblue: 4620980,
|
|
tan: 13808780,
|
|
teal: 32896,
|
|
thistle: 14204888,
|
|
tomato: 16737095,
|
|
turquoise: 4251856,
|
|
violet: 15631086,
|
|
wheat: 16113331,
|
|
white: 16777215,
|
|
whitesmoke: 16119285,
|
|
yellow: 16776960,
|
|
yellowgreen: 10145074
|
|
}, YD = { h: 0, s: 0, l: 0 }, He = { h: 0, s: 0, l: 0 };
|
|
function Mn(n, M, D) {
|
|
return D < 0 && (D += 1), D > 1 && (D -= 1), D < 1 / 6 ? n + (M - n) * 6 * D : D < 1 / 2 ? M : D < 2 / 3 ? n + (M - n) * 6 * (2 / 3 - D) : n;
|
|
}
|
|
function te(n) {
|
|
return n < 0.04045 ? n * 0.0773993808 : Math.pow(n * 0.9478672986 + 0.0521327014, 2.4);
|
|
}
|
|
function Dn(n) {
|
|
return n < 31308e-7 ? n * 12.92 : 1.055 * Math.pow(n, 0.41666) - 0.055;
|
|
}
|
|
class cM {
|
|
constructor(M, D, t) {
|
|
return D === void 0 && t === void 0 ? this.set(M) : this.setRGB(M, D, t);
|
|
}
|
|
set(M) {
|
|
return M && M.isColor ? this.copy(M) : typeof M == "number" ? this.setHex(M) : typeof M == "string" && this.setStyle(M), this;
|
|
}
|
|
setScalar(M) {
|
|
return this.r = M, this.g = M, this.b = M, this;
|
|
}
|
|
setHex(M) {
|
|
return M = Math.floor(M), this.r = (M >> 16 & 255) / 255, this.g = (M >> 8 & 255) / 255, this.b = (M & 255) / 255, this;
|
|
}
|
|
setRGB(M, D, t) {
|
|
return this.r = M, this.g = D, this.b = t, this;
|
|
}
|
|
setHSL(M, D, t) {
|
|
if (M = zT(M, 1), D = OD(D, 0, 1), t = OD(t, 0, 1), D === 0)
|
|
this.r = this.g = this.b = t;
|
|
else {
|
|
const e = t <= 0.5 ? t * (1 + D) : t + D - t * D, N = 2 * t - e;
|
|
this.r = Mn(N, e, M + 1 / 3), this.g = Mn(N, e, M), this.b = Mn(N, e, M - 1 / 3);
|
|
}
|
|
return this;
|
|
}
|
|
setStyle(M) {
|
|
function D(e) {
|
|
e !== void 0 && parseFloat(e) < 1 && console.warn("THREE.Color: Alpha component of " + M + " will be ignored.");
|
|
}
|
|
let t;
|
|
if (t = /^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(M)) {
|
|
let e;
|
|
const N = t[1], A = t[2];
|
|
switch (N) {
|
|
case "rgb":
|
|
case "rgba":
|
|
if (e = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(A))
|
|
return this.r = Math.min(255, parseInt(e[1], 10)) / 255, this.g = Math.min(255, parseInt(e[2], 10)) / 255, this.b = Math.min(255, parseInt(e[3], 10)) / 255, D(e[4]), this;
|
|
if (e = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(A))
|
|
return this.r = Math.min(100, parseInt(e[1], 10)) / 100, this.g = Math.min(100, parseInt(e[2], 10)) / 100, this.b = Math.min(100, parseInt(e[3], 10)) / 100, D(e[4]), this;
|
|
break;
|
|
case "hsl":
|
|
case "hsla":
|
|
if (e = /^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(A)) {
|
|
const z = parseFloat(e[1]) / 360, I = parseInt(e[2], 10) / 100, i = parseInt(e[3], 10) / 100;
|
|
return D(e[4]), this.setHSL(z, I, i);
|
|
}
|
|
break;
|
|
}
|
|
} else if (t = /^\#([A-Fa-f\d]+)$/.exec(M)) {
|
|
const e = t[1], N = e.length;
|
|
if (N === 3)
|
|
return this.r = parseInt(e.charAt(0) + e.charAt(0), 16) / 255, this.g = parseInt(e.charAt(1) + e.charAt(1), 16) / 255, this.b = parseInt(e.charAt(2) + e.charAt(2), 16) / 255, this;
|
|
if (N === 6)
|
|
return this.r = parseInt(e.charAt(0) + e.charAt(1), 16) / 255, this.g = parseInt(e.charAt(2) + e.charAt(3), 16) / 255, this.b = parseInt(e.charAt(4) + e.charAt(5), 16) / 255, this;
|
|
}
|
|
return M && M.length > 0 ? this.setColorName(M) : this;
|
|
}
|
|
setColorName(M) {
|
|
const D = Ii[M.toLowerCase()];
|
|
return D !== void 0 ? this.setHex(D) : console.warn("THREE.Color: Unknown color " + M), this;
|
|
}
|
|
clone() {
|
|
return new this.constructor(this.r, this.g, this.b);
|
|
}
|
|
copy(M) {
|
|
return this.r = M.r, this.g = M.g, this.b = M.b, this;
|
|
}
|
|
copySRGBToLinear(M) {
|
|
return this.r = te(M.r), this.g = te(M.g), this.b = te(M.b), this;
|
|
}
|
|
copyLinearToSRGB(M) {
|
|
return this.r = Dn(M.r), this.g = Dn(M.g), this.b = Dn(M.b), this;
|
|
}
|
|
convertSRGBToLinear() {
|
|
return this.copySRGBToLinear(this), this;
|
|
}
|
|
convertLinearToSRGB() {
|
|
return this.copyLinearToSRGB(this), this;
|
|
}
|
|
getHex() {
|
|
return this.r * 255 << 16 ^ this.g * 255 << 8 ^ this.b * 255 << 0;
|
|
}
|
|
getHexString() {
|
|
return ("000000" + this.getHex().toString(16)).slice(-6);
|
|
}
|
|
getHSL(M) {
|
|
const D = this.r, t = this.g, e = this.b, N = Math.max(D, t, e), A = Math.min(D, t, e);
|
|
let z, I;
|
|
const i = (A + N) / 2;
|
|
if (A === N)
|
|
z = 0, I = 0;
|
|
else {
|
|
const T = N - A;
|
|
switch (I = i <= 0.5 ? T / (N + A) : T / (2 - N - A), N) {
|
|
case D:
|
|
z = (t - e) / T + (t < e ? 6 : 0);
|
|
break;
|
|
case t:
|
|
z = (e - D) / T + 2;
|
|
break;
|
|
case e:
|
|
z = (D - t) / T + 4;
|
|
break;
|
|
}
|
|
z /= 6;
|
|
}
|
|
return M.h = z, M.s = I, M.l = i, M;
|
|
}
|
|
getStyle() {
|
|
return "rgb(" + (this.r * 255 | 0) + "," + (this.g * 255 | 0) + "," + (this.b * 255 | 0) + ")";
|
|
}
|
|
offsetHSL(M, D, t) {
|
|
return this.getHSL(YD), YD.h += M, YD.s += D, YD.l += t, this.setHSL(YD.h, YD.s, YD.l), this;
|
|
}
|
|
add(M) {
|
|
return this.r += M.r, this.g += M.g, this.b += M.b, this;
|
|
}
|
|
addColors(M, D) {
|
|
return this.r = M.r + D.r, this.g = M.g + D.g, this.b = M.b + D.b, this;
|
|
}
|
|
addScalar(M) {
|
|
return this.r += M, this.g += M, this.b += M, this;
|
|
}
|
|
sub(M) {
|
|
return this.r = Math.max(0, this.r - M.r), this.g = Math.max(0, this.g - M.g), this.b = Math.max(0, this.b - M.b), this;
|
|
}
|
|
multiply(M) {
|
|
return this.r *= M.r, this.g *= M.g, this.b *= M.b, this;
|
|
}
|
|
multiplyScalar(M) {
|
|
return this.r *= M, this.g *= M, this.b *= M, this;
|
|
}
|
|
lerp(M, D) {
|
|
return this.r += (M.r - this.r) * D, this.g += (M.g - this.g) * D, this.b += (M.b - this.b) * D, this;
|
|
}
|
|
lerpColors(M, D, t) {
|
|
return this.r = M.r + (D.r - M.r) * t, this.g = M.g + (D.g - M.g) * t, this.b = M.b + (D.b - M.b) * t, this;
|
|
}
|
|
lerpHSL(M, D) {
|
|
this.getHSL(YD), M.getHSL(He);
|
|
const t = $N(YD.h, He.h, D), e = $N(YD.s, He.s, D), N = $N(YD.l, He.l, D);
|
|
return this.setHSL(t, e, N), this;
|
|
}
|
|
equals(M) {
|
|
return M.r === this.r && M.g === this.g && M.b === this.b;
|
|
}
|
|
fromArray(M, D = 0) {
|
|
return this.r = M[D], this.g = M[D + 1], this.b = M[D + 2], this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
return M[D] = this.r, M[D + 1] = this.g, M[D + 2] = this.b, M;
|
|
}
|
|
fromBufferAttribute(M, D) {
|
|
return this.r = M.getX(D), this.g = M.getY(D), this.b = M.getZ(D), M.normalized === !0 && (this.r /= 255, this.g /= 255, this.b /= 255), this;
|
|
}
|
|
toJSON() {
|
|
return this.getHex();
|
|
}
|
|
}
|
|
cM.NAMES = Ii;
|
|
cM.prototype.isColor = !0;
|
|
cM.prototype.r = 1;
|
|
cM.prototype.g = 1;
|
|
cM.prototype.b = 1;
|
|
let ht;
|
|
class vt {
|
|
static getDataURL(M) {
|
|
if (/^data:/i.test(M.src) || typeof HTMLCanvasElement > "u")
|
|
return M.src;
|
|
let D;
|
|
if (M instanceof HTMLCanvasElement)
|
|
D = M;
|
|
else {
|
|
ht === void 0 && (ht = fe("canvas")), ht.width = M.width, ht.height = M.height;
|
|
const t = ht.getContext("2d");
|
|
M instanceof ImageData ? t.putImageData(M, 0, 0) : t.drawImage(M, 0, 0, M.width, M.height), D = ht;
|
|
}
|
|
return D.width > 2048 || D.height > 2048 ? (console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons", M), D.toDataURL("image/jpeg", 0.6)) : D.toDataURL("image/png");
|
|
}
|
|
static sRGBToLinear(M) {
|
|
if (typeof HTMLImageElement < "u" && M instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && M instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && M instanceof ImageBitmap) {
|
|
const D = fe("canvas");
|
|
D.width = M.width, D.height = M.height;
|
|
const t = D.getContext("2d");
|
|
t.drawImage(M, 0, 0, M.width, M.height);
|
|
const e = t.getImageData(0, 0, M.width, M.height), N = e.data;
|
|
for (let A = 0; A < N.length; A++)
|
|
N[A] = te(N[A] / 255) * 255;
|
|
return t.putImageData(e, 0, 0), D;
|
|
} else if (M.data) {
|
|
const D = M.data.slice(0);
|
|
for (let t = 0; t < D.length; t++)
|
|
D instanceof Uint8Array || D instanceof Uint8ClampedArray ? D[t] = Math.floor(te(D[t] / 255) * 255) : D[t] = te(D[t]);
|
|
return {
|
|
data: D,
|
|
width: M.width,
|
|
height: M.height
|
|
};
|
|
} else
|
|
return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."), M;
|
|
}
|
|
}
|
|
let IT = 0;
|
|
class iD extends dt {
|
|
constructor(M = iD.DEFAULT_IMAGE, D = iD.DEFAULT_MAPPING, t = xD, e = xD, N = uD, A = kN, z = yD, I = It, i = 1, T = st) {
|
|
super(), Object.defineProperty(this, "id", { value: IT++ }), this.uuid = bD(), this.name = "", this.image = M, this.mipmaps = [], this.mapping = D, this.wrapS = t, this.wrapT = e, this.magFilter = N, this.minFilter = A, this.anisotropy = i, this.format = z, this.internalFormat = null, this.type = I, this.offset = new q(0, 0), this.repeat = new q(1, 1), this.center = new q(0, 0), this.rotation = 0, this.matrixAutoUpdate = !0, this.matrix = new gD(), this.generateMipmaps = !0, this.premultiplyAlpha = !1, this.flipY = !0, this.unpackAlignment = 4, this.encoding = T, this.userData = {}, this.version = 0, this.onUpdate = null, this.isRenderTargetTexture = !1, this.needsPMREMUpdate = !1;
|
|
}
|
|
updateMatrix() {
|
|
this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
copy(M) {
|
|
return this.name = M.name, this.image = M.image, this.mipmaps = M.mipmaps.slice(0), this.mapping = M.mapping, this.wrapS = M.wrapS, this.wrapT = M.wrapT, this.magFilter = M.magFilter, this.minFilter = M.minFilter, this.anisotropy = M.anisotropy, this.format = M.format, this.internalFormat = M.internalFormat, this.type = M.type, this.offset.copy(M.offset), this.repeat.copy(M.repeat), this.center.copy(M.center), this.rotation = M.rotation, this.matrixAutoUpdate = M.matrixAutoUpdate, this.matrix.copy(M.matrix), this.generateMipmaps = M.generateMipmaps, this.premultiplyAlpha = M.premultiplyAlpha, this.flipY = M.flipY, this.unpackAlignment = M.unpackAlignment, this.encoding = M.encoding, this.userData = JSON.parse(JSON.stringify(M.userData)), this;
|
|
}
|
|
toJSON(M) {
|
|
const D = M === void 0 || typeof M == "string";
|
|
if (!D && M.textures[this.uuid] !== void 0)
|
|
return M.textures[this.uuid];
|
|
const t = {
|
|
metadata: {
|
|
version: 4.5,
|
|
type: "Texture",
|
|
generator: "Texture.toJSON"
|
|
},
|
|
uuid: this.uuid,
|
|
name: this.name,
|
|
mapping: this.mapping,
|
|
repeat: [this.repeat.x, this.repeat.y],
|
|
offset: [this.offset.x, this.offset.y],
|
|
center: [this.center.x, this.center.y],
|
|
rotation: this.rotation,
|
|
wrap: [this.wrapS, this.wrapT],
|
|
format: this.format,
|
|
type: this.type,
|
|
encoding: this.encoding,
|
|
minFilter: this.minFilter,
|
|
magFilter: this.magFilter,
|
|
anisotropy: this.anisotropy,
|
|
flipY: this.flipY,
|
|
premultiplyAlpha: this.premultiplyAlpha,
|
|
unpackAlignment: this.unpackAlignment
|
|
};
|
|
if (this.image !== void 0) {
|
|
const e = this.image;
|
|
if (e.uuid === void 0 && (e.uuid = bD()), !D && M.images[e.uuid] === void 0) {
|
|
let N;
|
|
if (Array.isArray(e)) {
|
|
N = [];
|
|
for (let A = 0, z = e.length; A < z; A++)
|
|
e[A].isDataTexture ? N.push(tn(e[A].image)) : N.push(tn(e[A]));
|
|
} else
|
|
N = tn(e);
|
|
M.images[e.uuid] = {
|
|
uuid: e.uuid,
|
|
url: N
|
|
};
|
|
}
|
|
t.image = e.uuid;
|
|
}
|
|
return JSON.stringify(this.userData) !== "{}" && (t.userData = this.userData), D || (M.textures[this.uuid] = t), t;
|
|
}
|
|
dispose() {
|
|
this.dispatchEvent({ type: "dispose" });
|
|
}
|
|
transformUv(M) {
|
|
if (this.mapping !== Ai)
|
|
return M;
|
|
if (M.applyMatrix3(this.matrix), M.x < 0 || M.x > 1)
|
|
switch (this.wrapS) {
|
|
case Sn:
|
|
M.x = M.x - Math.floor(M.x);
|
|
break;
|
|
case xD:
|
|
M.x = M.x < 0 ? 0 : 1;
|
|
break;
|
|
case Zn:
|
|
Math.abs(Math.floor(M.x) % 2) === 1 ? M.x = Math.ceil(M.x) - M.x : M.x = M.x - Math.floor(M.x);
|
|
break;
|
|
}
|
|
if (M.y < 0 || M.y > 1)
|
|
switch (this.wrapT) {
|
|
case Sn:
|
|
M.y = M.y - Math.floor(M.y);
|
|
break;
|
|
case xD:
|
|
M.y = M.y < 0 ? 0 : 1;
|
|
break;
|
|
case Zn:
|
|
Math.abs(Math.floor(M.y) % 2) === 1 ? M.y = Math.ceil(M.y) - M.y : M.y = M.y - Math.floor(M.y);
|
|
break;
|
|
}
|
|
return this.flipY && (M.y = 1 - M.y), M;
|
|
}
|
|
set needsUpdate(M) {
|
|
M === !0 && this.version++;
|
|
}
|
|
}
|
|
iD.DEFAULT_IMAGE = void 0;
|
|
iD.DEFAULT_MAPPING = Ai;
|
|
iD.prototype.isTexture = !0;
|
|
function tn(n) {
|
|
return typeof HTMLImageElement < "u" && n instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && n instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && n instanceof ImageBitmap ? vt.getDataURL(n) : n.data ? {
|
|
data: Array.prototype.slice.call(n.data),
|
|
width: n.width,
|
|
height: n.height,
|
|
type: n.data.constructor.name
|
|
} : (console.warn("THREE.Texture: Unable to serialize Texture."), {});
|
|
}
|
|
class PM {
|
|
constructor(M = 0, D = 0, t = 0, e = 1) {
|
|
this.x = M, this.y = D, this.z = t, this.w = e;
|
|
}
|
|
get width() {
|
|
return this.z;
|
|
}
|
|
set width(M) {
|
|
this.z = M;
|
|
}
|
|
get height() {
|
|
return this.w;
|
|
}
|
|
set height(M) {
|
|
this.w = M;
|
|
}
|
|
set(M, D, t, e) {
|
|
return this.x = M, this.y = D, this.z = t, this.w = e, this;
|
|
}
|
|
setScalar(M) {
|
|
return this.x = M, this.y = M, this.z = M, this.w = M, this;
|
|
}
|
|
setX(M) {
|
|
return this.x = M, this;
|
|
}
|
|
setY(M) {
|
|
return this.y = M, this;
|
|
}
|
|
setZ(M) {
|
|
return this.z = M, this;
|
|
}
|
|
setW(M) {
|
|
return this.w = M, this;
|
|
}
|
|
setComponent(M, D) {
|
|
switch (M) {
|
|
case 0:
|
|
this.x = D;
|
|
break;
|
|
case 1:
|
|
this.y = D;
|
|
break;
|
|
case 2:
|
|
this.z = D;
|
|
break;
|
|
case 3:
|
|
this.w = D;
|
|
break;
|
|
default:
|
|
throw new Error("index is out of range: " + M);
|
|
}
|
|
return this;
|
|
}
|
|
getComponent(M) {
|
|
switch (M) {
|
|
case 0:
|
|
return this.x;
|
|
case 1:
|
|
return this.y;
|
|
case 2:
|
|
return this.z;
|
|
case 3:
|
|
return this.w;
|
|
default:
|
|
throw new Error("index is out of range: " + M);
|
|
}
|
|
}
|
|
clone() {
|
|
return new this.constructor(this.x, this.y, this.z, this.w);
|
|
}
|
|
copy(M) {
|
|
return this.x = M.x, this.y = M.y, this.z = M.z, this.w = M.w !== void 0 ? M.w : 1, this;
|
|
}
|
|
add(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(M, D)) : (this.x += M.x, this.y += M.y, this.z += M.z, this.w += M.w, this);
|
|
}
|
|
addScalar(M) {
|
|
return this.x += M, this.y += M, this.z += M, this.w += M, this;
|
|
}
|
|
addVectors(M, D) {
|
|
return this.x = M.x + D.x, this.y = M.y + D.y, this.z = M.z + D.z, this.w = M.w + D.w, this;
|
|
}
|
|
addScaledVector(M, D) {
|
|
return this.x += M.x * D, this.y += M.y * D, this.z += M.z * D, this.w += M.w * D, this;
|
|
}
|
|
sub(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(M, D)) : (this.x -= M.x, this.y -= M.y, this.z -= M.z, this.w -= M.w, this);
|
|
}
|
|
subScalar(M) {
|
|
return this.x -= M, this.y -= M, this.z -= M, this.w -= M, this;
|
|
}
|
|
subVectors(M, D) {
|
|
return this.x = M.x - D.x, this.y = M.y - D.y, this.z = M.z - D.z, this.w = M.w - D.w, this;
|
|
}
|
|
multiply(M) {
|
|
return this.x *= M.x, this.y *= M.y, this.z *= M.z, this.w *= M.w, this;
|
|
}
|
|
multiplyScalar(M) {
|
|
return this.x *= M, this.y *= M, this.z *= M, this.w *= M, this;
|
|
}
|
|
applyMatrix4(M) {
|
|
const D = this.x, t = this.y, e = this.z, N = this.w, A = M.elements;
|
|
return this.x = A[0] * D + A[4] * t + A[8] * e + A[12] * N, this.y = A[1] * D + A[5] * t + A[9] * e + A[13] * N, this.z = A[2] * D + A[6] * t + A[10] * e + A[14] * N, this.w = A[3] * D + A[7] * t + A[11] * e + A[15] * N, this;
|
|
}
|
|
divideScalar(M) {
|
|
return this.multiplyScalar(1 / M);
|
|
}
|
|
setAxisAngleFromQuaternion(M) {
|
|
this.w = 2 * Math.acos(M.w);
|
|
const D = Math.sqrt(1 - M.w * M.w);
|
|
return D < 1e-4 ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = M.x / D, this.y = M.y / D, this.z = M.z / D), this;
|
|
}
|
|
setAxisAngleFromRotationMatrix(M) {
|
|
let D, t, e, N;
|
|
const I = M.elements, i = I[0], T = I[4], u = I[8], g = I[1], s = I[5], j = I[9], y = I[2], a = I[6], c = I[10];
|
|
if (Math.abs(T - g) < 0.01 && Math.abs(u - y) < 0.01 && Math.abs(j - a) < 0.01) {
|
|
if (Math.abs(T + g) < 0.1 && Math.abs(u + y) < 0.1 && Math.abs(j + a) < 0.1 && Math.abs(i + s + c - 3) < 0.1)
|
|
return this.set(1, 0, 0, 0), this;
|
|
D = Math.PI;
|
|
const l = (i + 1) / 2, C = (s + 1) / 2, E = (c + 1) / 2, d = (T + g) / 4, p = (u + y) / 4, H = (j + a) / 4;
|
|
return l > C && l > E ? l < 0.01 ? (t = 0, e = 0.707106781, N = 0.707106781) : (t = Math.sqrt(l), e = d / t, N = p / t) : C > E ? C < 0.01 ? (t = 0.707106781, e = 0, N = 0.707106781) : (e = Math.sqrt(C), t = d / e, N = H / e) : E < 0.01 ? (t = 0.707106781, e = 0.707106781, N = 0) : (N = Math.sqrt(E), t = p / N, e = H / N), this.set(t, e, N, D), this;
|
|
}
|
|
let r = Math.sqrt((a - j) * (a - j) + (u - y) * (u - y) + (g - T) * (g - T));
|
|
return Math.abs(r) < 1e-3 && (r = 1), this.x = (a - j) / r, this.y = (u - y) / r, this.z = (g - T) / r, this.w = Math.acos((i + s + c - 1) / 2), this;
|
|
}
|
|
min(M) {
|
|
return this.x = Math.min(this.x, M.x), this.y = Math.min(this.y, M.y), this.z = Math.min(this.z, M.z), this.w = Math.min(this.w, M.w), this;
|
|
}
|
|
max(M) {
|
|
return this.x = Math.max(this.x, M.x), this.y = Math.max(this.y, M.y), this.z = Math.max(this.z, M.z), this.w = Math.max(this.w, M.w), this;
|
|
}
|
|
clamp(M, D) {
|
|
return this.x = Math.max(M.x, Math.min(D.x, this.x)), this.y = Math.max(M.y, Math.min(D.y, this.y)), this.z = Math.max(M.z, Math.min(D.z, this.z)), this.w = Math.max(M.w, Math.min(D.w, this.w)), this;
|
|
}
|
|
clampScalar(M, D) {
|
|
return this.x = Math.max(M, Math.min(D, this.x)), this.y = Math.max(M, Math.min(D, this.y)), this.z = Math.max(M, Math.min(D, this.z)), this.w = Math.max(M, Math.min(D, this.w)), this;
|
|
}
|
|
clampLength(M, D) {
|
|
const t = this.length();
|
|
return this.divideScalar(t || 1).multiplyScalar(Math.max(M, Math.min(D, t)));
|
|
}
|
|
floor() {
|
|
return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this;
|
|
}
|
|
ceil() {
|
|
return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this;
|
|
}
|
|
round() {
|
|
return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this;
|
|
}
|
|
roundToZero() {
|
|
return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z), this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w), this;
|
|
}
|
|
negate() {
|
|
return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this;
|
|
}
|
|
dot(M) {
|
|
return this.x * M.x + this.y * M.y + this.z * M.z + this.w * M.w;
|
|
}
|
|
lengthSq() {
|
|
return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;
|
|
}
|
|
length() {
|
|
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
|
|
}
|
|
manhattanLength() {
|
|
return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);
|
|
}
|
|
normalize() {
|
|
return this.divideScalar(this.length() || 1);
|
|
}
|
|
setLength(M) {
|
|
return this.normalize().multiplyScalar(M);
|
|
}
|
|
lerp(M, D) {
|
|
return this.x += (M.x - this.x) * D, this.y += (M.y - this.y) * D, this.z += (M.z - this.z) * D, this.w += (M.w - this.w) * D, this;
|
|
}
|
|
lerpVectors(M, D, t) {
|
|
return this.x = M.x + (D.x - M.x) * t, this.y = M.y + (D.y - M.y) * t, this.z = M.z + (D.z - M.z) * t, this.w = M.w + (D.w - M.w) * t, this;
|
|
}
|
|
equals(M) {
|
|
return M.x === this.x && M.y === this.y && M.z === this.z && M.w === this.w;
|
|
}
|
|
fromArray(M, D = 0) {
|
|
return this.x = M[D], this.y = M[D + 1], this.z = M[D + 2], this.w = M[D + 3], this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
return M[D] = this.x, M[D + 1] = this.y, M[D + 2] = this.z, M[D + 3] = this.w, M;
|
|
}
|
|
fromBufferAttribute(M, D, t) {
|
|
return t !== void 0 && console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."), this.x = M.getX(D), this.y = M.getY(D), this.z = M.getZ(D), this.w = M.getW(D), this;
|
|
}
|
|
random() {
|
|
return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this.w = Math.random(), this;
|
|
}
|
|
*[Symbol.iterator]() {
|
|
yield this.x, yield this.y, yield this.z, yield this.w;
|
|
}
|
|
}
|
|
PM.prototype.isVector4 = !0;
|
|
class dD extends dt {
|
|
constructor(M, D, t = {}) {
|
|
super(), this.width = M, this.height = D, this.depth = 1, this.scissor = new PM(0, 0, M, D), this.scissorTest = !1, this.viewport = new PM(0, 0, M, D), this.texture = new iD(void 0, t.mapping, t.wrapS, t.wrapT, t.magFilter, t.minFilter, t.format, t.type, t.anisotropy, t.encoding), this.texture.isRenderTargetTexture = !0, this.texture.image = { width: M, height: D, depth: 1 }, this.texture.generateMipmaps = t.generateMipmaps !== void 0 ? t.generateMipmaps : !1, this.texture.internalFormat = t.internalFormat !== void 0 ? t.internalFormat : null, this.texture.minFilter = t.minFilter !== void 0 ? t.minFilter : uD, this.depthBuffer = t.depthBuffer !== void 0 ? t.depthBuffer : !0, this.stencilBuffer = t.stencilBuffer !== void 0 ? t.stencilBuffer : !1, this.depthTexture = t.depthTexture !== void 0 ? t.depthTexture : null;
|
|
}
|
|
setTexture(M) {
|
|
M.image = {
|
|
width: this.width,
|
|
height: this.height,
|
|
depth: this.depth
|
|
}, this.texture = M;
|
|
}
|
|
setSize(M, D, t = 1) {
|
|
(this.width !== M || this.height !== D || this.depth !== t) && (this.width = M, this.height = D, this.depth = t, this.texture.image.width = M, this.texture.image.height = D, this.texture.image.depth = t, this.dispose()), this.viewport.set(0, 0, M, D), this.scissor.set(0, 0, M, D);
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
copy(M) {
|
|
return this.width = M.width, this.height = M.height, this.depth = M.depth, this.viewport.copy(M.viewport), this.texture = M.texture.clone(), this.texture.image = Object.assign({}, M.texture.image), this.depthBuffer = M.depthBuffer, this.stencilBuffer = M.stencilBuffer, this.depthTexture = M.depthTexture, this;
|
|
}
|
|
dispose() {
|
|
this.dispatchEvent({ type: "dispose" });
|
|
}
|
|
}
|
|
dD.prototype.isWebGLRenderTarget = !0;
|
|
class TT extends dD {
|
|
constructor(M, D, t) {
|
|
super(M, D);
|
|
const e = this.texture;
|
|
this.texture = [];
|
|
for (let N = 0; N < t; N++)
|
|
this.texture[N] = e.clone();
|
|
}
|
|
setSize(M, D, t = 1) {
|
|
if (this.width !== M || this.height !== D || this.depth !== t) {
|
|
this.width = M, this.height = D, this.depth = t;
|
|
for (let e = 0, N = this.texture.length; e < N; e++)
|
|
this.texture[e].image.width = M, this.texture[e].image.height = D, this.texture[e].image.depth = t;
|
|
this.dispose();
|
|
}
|
|
return this.viewport.set(0, 0, M, D), this.scissor.set(0, 0, M, D), this;
|
|
}
|
|
copy(M) {
|
|
this.dispose(), this.width = M.width, this.height = M.height, this.depth = M.depth, this.viewport.set(0, 0, this.width, this.height), this.scissor.set(0, 0, this.width, this.height), this.depthBuffer = M.depthBuffer, this.stencilBuffer = M.stencilBuffer, this.depthTexture = M.depthTexture, this.texture.length = 0;
|
|
for (let D = 0, t = M.texture.length; D < t; D++)
|
|
this.texture[D] = M.texture[D].clone();
|
|
return this;
|
|
}
|
|
}
|
|
TT.prototype.isWebGLMultipleRenderTargets = !0;
|
|
class Jn extends dD {
|
|
constructor(M, D, t = {}) {
|
|
super(M, D, t), this.samples = 4, this.ignoreDepthForMultisampleCopy = t.ignoreDepth !== void 0 ? t.ignoreDepth : !0, this.useRenderToTexture = t.useRenderToTexture !== void 0 ? t.useRenderToTexture : !1, this.useRenderbuffer = this.useRenderToTexture === !1;
|
|
}
|
|
copy(M) {
|
|
return super.copy.call(this, M), this.samples = M.samples, this.useRenderToTexture = M.useRenderToTexture, this.useRenderbuffer = M.useRenderbuffer, this;
|
|
}
|
|
}
|
|
Jn.prototype.isWebGLMultisampleRenderTarget = !0;
|
|
class aD {
|
|
constructor(M = 0, D = 0, t = 0, e = 1) {
|
|
this._x = M, this._y = D, this._z = t, this._w = e;
|
|
}
|
|
static slerp(M, D, t, e) {
|
|
return console.warn("THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead."), t.slerpQuaternions(M, D, e);
|
|
}
|
|
static slerpFlat(M, D, t, e, N, A, z) {
|
|
let I = t[e + 0], i = t[e + 1], T = t[e + 2], u = t[e + 3];
|
|
const g = N[A + 0], s = N[A + 1], j = N[A + 2], y = N[A + 3];
|
|
if (z === 0) {
|
|
M[D + 0] = I, M[D + 1] = i, M[D + 2] = T, M[D + 3] = u;
|
|
return;
|
|
}
|
|
if (z === 1) {
|
|
M[D + 0] = g, M[D + 1] = s, M[D + 2] = j, M[D + 3] = y;
|
|
return;
|
|
}
|
|
if (u !== y || I !== g || i !== s || T !== j) {
|
|
let a = 1 - z;
|
|
const c = I * g + i * s + T * j + u * y, r = c >= 0 ? 1 : -1, l = 1 - c * c;
|
|
if (l > Number.EPSILON) {
|
|
const E = Math.sqrt(l), d = Math.atan2(E, c * r);
|
|
a = Math.sin(a * d) / E, z = Math.sin(z * d) / E;
|
|
}
|
|
const C = z * r;
|
|
if (I = I * a + g * C, i = i * a + s * C, T = T * a + j * C, u = u * a + y * C, a === 1 - z) {
|
|
const E = 1 / Math.sqrt(I * I + i * i + T * T + u * u);
|
|
I *= E, i *= E, T *= E, u *= E;
|
|
}
|
|
}
|
|
M[D] = I, M[D + 1] = i, M[D + 2] = T, M[D + 3] = u;
|
|
}
|
|
static multiplyQuaternionsFlat(M, D, t, e, N, A) {
|
|
const z = t[e], I = t[e + 1], i = t[e + 2], T = t[e + 3], u = N[A], g = N[A + 1], s = N[A + 2], j = N[A + 3];
|
|
return M[D] = z * j + T * u + I * s - i * g, M[D + 1] = I * j + T * g + i * u - z * s, M[D + 2] = i * j + T * s + z * g - I * u, M[D + 3] = T * j - z * u - I * g - i * s, M;
|
|
}
|
|
get x() {
|
|
return this._x;
|
|
}
|
|
set x(M) {
|
|
this._x = M, this._onChangeCallback();
|
|
}
|
|
get y() {
|
|
return this._y;
|
|
}
|
|
set y(M) {
|
|
this._y = M, this._onChangeCallback();
|
|
}
|
|
get z() {
|
|
return this._z;
|
|
}
|
|
set z(M) {
|
|
this._z = M, this._onChangeCallback();
|
|
}
|
|
get w() {
|
|
return this._w;
|
|
}
|
|
set w(M) {
|
|
this._w = M, this._onChangeCallback();
|
|
}
|
|
set(M, D, t, e) {
|
|
return this._x = M, this._y = D, this._z = t, this._w = e, this._onChangeCallback(), this;
|
|
}
|
|
clone() {
|
|
return new this.constructor(this._x, this._y, this._z, this._w);
|
|
}
|
|
copy(M) {
|
|
return this._x = M.x, this._y = M.y, this._z = M.z, this._w = M.w, this._onChangeCallback(), this;
|
|
}
|
|
setFromEuler(M, D) {
|
|
if (!(M && M.isEuler))
|
|
throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");
|
|
const t = M._x, e = M._y, N = M._z, A = M._order, z = Math.cos, I = Math.sin, i = z(t / 2), T = z(e / 2), u = z(N / 2), g = I(t / 2), s = I(e / 2), j = I(N / 2);
|
|
switch (A) {
|
|
case "XYZ":
|
|
this._x = g * T * u + i * s * j, this._y = i * s * u - g * T * j, this._z = i * T * j + g * s * u, this._w = i * T * u - g * s * j;
|
|
break;
|
|
case "YXZ":
|
|
this._x = g * T * u + i * s * j, this._y = i * s * u - g * T * j, this._z = i * T * j - g * s * u, this._w = i * T * u + g * s * j;
|
|
break;
|
|
case "ZXY":
|
|
this._x = g * T * u - i * s * j, this._y = i * s * u + g * T * j, this._z = i * T * j + g * s * u, this._w = i * T * u - g * s * j;
|
|
break;
|
|
case "ZYX":
|
|
this._x = g * T * u - i * s * j, this._y = i * s * u + g * T * j, this._z = i * T * j - g * s * u, this._w = i * T * u + g * s * j;
|
|
break;
|
|
case "YZX":
|
|
this._x = g * T * u + i * s * j, this._y = i * s * u + g * T * j, this._z = i * T * j - g * s * u, this._w = i * T * u - g * s * j;
|
|
break;
|
|
case "XZY":
|
|
this._x = g * T * u - i * s * j, this._y = i * s * u - g * T * j, this._z = i * T * j + g * s * u, this._w = i * T * u + g * s * j;
|
|
break;
|
|
default:
|
|
console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + A);
|
|
}
|
|
return D !== !1 && this._onChangeCallback(), this;
|
|
}
|
|
setFromAxisAngle(M, D) {
|
|
const t = D / 2, e = Math.sin(t);
|
|
return this._x = M.x * e, this._y = M.y * e, this._z = M.z * e, this._w = Math.cos(t), this._onChangeCallback(), this;
|
|
}
|
|
setFromRotationMatrix(M) {
|
|
const D = M.elements, t = D[0], e = D[4], N = D[8], A = D[1], z = D[5], I = D[9], i = D[2], T = D[6], u = D[10], g = t + z + u;
|
|
if (g > 0) {
|
|
const s = 0.5 / Math.sqrt(g + 1);
|
|
this._w = 0.25 / s, this._x = (T - I) * s, this._y = (N - i) * s, this._z = (A - e) * s;
|
|
} else if (t > z && t > u) {
|
|
const s = 2 * Math.sqrt(1 + t - z - u);
|
|
this._w = (T - I) / s, this._x = 0.25 * s, this._y = (e + A) / s, this._z = (N + i) / s;
|
|
} else if (z > u) {
|
|
const s = 2 * Math.sqrt(1 + z - t - u);
|
|
this._w = (N - i) / s, this._x = (e + A) / s, this._y = 0.25 * s, this._z = (I + T) / s;
|
|
} else {
|
|
const s = 2 * Math.sqrt(1 + u - t - z);
|
|
this._w = (A - e) / s, this._x = (N + i) / s, this._y = (I + T) / s, this._z = 0.25 * s;
|
|
}
|
|
return this._onChangeCallback(), this;
|
|
}
|
|
setFromUnitVectors(M, D) {
|
|
let t = M.dot(D) + 1;
|
|
return t < Number.EPSILON ? (t = 0, Math.abs(M.x) > Math.abs(M.z) ? (this._x = -M.y, this._y = M.x, this._z = 0, this._w = t) : (this._x = 0, this._y = -M.z, this._z = M.y, this._w = t)) : (this._x = M.y * D.z - M.z * D.y, this._y = M.z * D.x - M.x * D.z, this._z = M.x * D.y - M.y * D.x, this._w = t), this.normalize();
|
|
}
|
|
angleTo(M) {
|
|
return 2 * Math.acos(Math.abs(OD(this.dot(M), -1, 1)));
|
|
}
|
|
rotateTowards(M, D) {
|
|
const t = this.angleTo(M);
|
|
if (t === 0)
|
|
return this;
|
|
const e = Math.min(1, D / t);
|
|
return this.slerp(M, e), this;
|
|
}
|
|
identity() {
|
|
return this.set(0, 0, 0, 1);
|
|
}
|
|
invert() {
|
|
return this.conjugate();
|
|
}
|
|
conjugate() {
|
|
return this._x *= -1, this._y *= -1, this._z *= -1, this._onChangeCallback(), this;
|
|
}
|
|
dot(M) {
|
|
return this._x * M._x + this._y * M._y + this._z * M._z + this._w * M._w;
|
|
}
|
|
lengthSq() {
|
|
return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;
|
|
}
|
|
length() {
|
|
return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);
|
|
}
|
|
normalize() {
|
|
let M = this.length();
|
|
return M === 0 ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (M = 1 / M, this._x = this._x * M, this._y = this._y * M, this._z = this._z * M, this._w = this._w * M), this._onChangeCallback(), this;
|
|
}
|
|
multiply(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."), this.multiplyQuaternions(M, D)) : this.multiplyQuaternions(this, M);
|
|
}
|
|
premultiply(M) {
|
|
return this.multiplyQuaternions(M, this);
|
|
}
|
|
multiplyQuaternions(M, D) {
|
|
const t = M._x, e = M._y, N = M._z, A = M._w, z = D._x, I = D._y, i = D._z, T = D._w;
|
|
return this._x = t * T + A * z + e * i - N * I, this._y = e * T + A * I + N * z - t * i, this._z = N * T + A * i + t * I - e * z, this._w = A * T - t * z - e * I - N * i, this._onChangeCallback(), this;
|
|
}
|
|
slerp(M, D) {
|
|
if (D === 0)
|
|
return this;
|
|
if (D === 1)
|
|
return this.copy(M);
|
|
const t = this._x, e = this._y, N = this._z, A = this._w;
|
|
let z = A * M._w + t * M._x + e * M._y + N * M._z;
|
|
if (z < 0 ? (this._w = -M._w, this._x = -M._x, this._y = -M._y, this._z = -M._z, z = -z) : this.copy(M), z >= 1)
|
|
return this._w = A, this._x = t, this._y = e, this._z = N, this;
|
|
const I = 1 - z * z;
|
|
if (I <= Number.EPSILON) {
|
|
const s = 1 - D;
|
|
return this._w = s * A + D * this._w, this._x = s * t + D * this._x, this._y = s * e + D * this._y, this._z = s * N + D * this._z, this.normalize(), this._onChangeCallback(), this;
|
|
}
|
|
const i = Math.sqrt(I), T = Math.atan2(i, z), u = Math.sin((1 - D) * T) / i, g = Math.sin(D * T) / i;
|
|
return this._w = A * u + this._w * g, this._x = t * u + this._x * g, this._y = e * u + this._y * g, this._z = N * u + this._z * g, this._onChangeCallback(), this;
|
|
}
|
|
slerpQuaternions(M, D, t) {
|
|
return this.copy(M).slerp(D, t);
|
|
}
|
|
random() {
|
|
const M = Math.random(), D = Math.sqrt(1 - M), t = Math.sqrt(M), e = 2 * Math.PI * Math.random(), N = 2 * Math.PI * Math.random();
|
|
return this.set(D * Math.cos(e), t * Math.sin(N), t * Math.cos(N), D * Math.sin(e));
|
|
}
|
|
equals(M) {
|
|
return M._x === this._x && M._y === this._y && M._z === this._z && M._w === this._w;
|
|
}
|
|
fromArray(M, D = 0) {
|
|
return this._x = M[D], this._y = M[D + 1], this._z = M[D + 2], this._w = M[D + 3], this._onChangeCallback(), this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
return M[D] = this._x, M[D + 1] = this._y, M[D + 2] = this._z, M[D + 3] = this._w, M;
|
|
}
|
|
fromBufferAttribute(M, D) {
|
|
return this._x = M.getX(D), this._y = M.getY(D), this._z = M.getZ(D), this._w = M.getW(D), this;
|
|
}
|
|
_onChange(M) {
|
|
return this._onChangeCallback = M, this;
|
|
}
|
|
_onChangeCallback() {
|
|
}
|
|
}
|
|
aD.prototype.isQuaternion = !0;
|
|
class O {
|
|
constructor(M = 0, D = 0, t = 0) {
|
|
this.x = M, this.y = D, this.z = t;
|
|
}
|
|
set(M, D, t) {
|
|
return t === void 0 && (t = this.z), this.x = M, this.y = D, this.z = t, this;
|
|
}
|
|
setScalar(M) {
|
|
return this.x = M, this.y = M, this.z = M, this;
|
|
}
|
|
setX(M) {
|
|
return this.x = M, this;
|
|
}
|
|
setY(M) {
|
|
return this.y = M, this;
|
|
}
|
|
setZ(M) {
|
|
return this.z = M, this;
|
|
}
|
|
setComponent(M, D) {
|
|
switch (M) {
|
|
case 0:
|
|
this.x = D;
|
|
break;
|
|
case 1:
|
|
this.y = D;
|
|
break;
|
|
case 2:
|
|
this.z = D;
|
|
break;
|
|
default:
|
|
throw new Error("index is out of range: " + M);
|
|
}
|
|
return this;
|
|
}
|
|
getComponent(M) {
|
|
switch (M) {
|
|
case 0:
|
|
return this.x;
|
|
case 1:
|
|
return this.y;
|
|
case 2:
|
|
return this.z;
|
|
default:
|
|
throw new Error("index is out of range: " + M);
|
|
}
|
|
}
|
|
clone() {
|
|
return new this.constructor(this.x, this.y, this.z);
|
|
}
|
|
copy(M) {
|
|
return this.x = M.x, this.y = M.y, this.z = M.z, this;
|
|
}
|
|
add(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(M, D)) : (this.x += M.x, this.y += M.y, this.z += M.z, this);
|
|
}
|
|
addScalar(M) {
|
|
return this.x += M, this.y += M, this.z += M, this;
|
|
}
|
|
addVectors(M, D) {
|
|
return this.x = M.x + D.x, this.y = M.y + D.y, this.z = M.z + D.z, this;
|
|
}
|
|
addScaledVector(M, D) {
|
|
return this.x += M.x * D, this.y += M.y * D, this.z += M.z * D, this;
|
|
}
|
|
sub(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(M, D)) : (this.x -= M.x, this.y -= M.y, this.z -= M.z, this);
|
|
}
|
|
subScalar(M) {
|
|
return this.x -= M, this.y -= M, this.z -= M, this;
|
|
}
|
|
subVectors(M, D) {
|
|
return this.x = M.x - D.x, this.y = M.y - D.y, this.z = M.z - D.z, this;
|
|
}
|
|
multiply(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."), this.multiplyVectors(M, D)) : (this.x *= M.x, this.y *= M.y, this.z *= M.z, this);
|
|
}
|
|
multiplyScalar(M) {
|
|
return this.x *= M, this.y *= M, this.z *= M, this;
|
|
}
|
|
multiplyVectors(M, D) {
|
|
return this.x = M.x * D.x, this.y = M.y * D.y, this.z = M.z * D.z, this;
|
|
}
|
|
applyEuler(M) {
|
|
return M && M.isEuler || console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."), this.applyQuaternion(GA.setFromEuler(M));
|
|
}
|
|
applyAxisAngle(M, D) {
|
|
return this.applyQuaternion(GA.setFromAxisAngle(M, D));
|
|
}
|
|
applyMatrix3(M) {
|
|
const D = this.x, t = this.y, e = this.z, N = M.elements;
|
|
return this.x = N[0] * D + N[3] * t + N[6] * e, this.y = N[1] * D + N[4] * t + N[7] * e, this.z = N[2] * D + N[5] * t + N[8] * e, this;
|
|
}
|
|
applyNormalMatrix(M) {
|
|
return this.applyMatrix3(M).normalize();
|
|
}
|
|
applyMatrix4(M) {
|
|
const D = this.x, t = this.y, e = this.z, N = M.elements, A = 1 / (N[3] * D + N[7] * t + N[11] * e + N[15]);
|
|
return this.x = (N[0] * D + N[4] * t + N[8] * e + N[12]) * A, this.y = (N[1] * D + N[5] * t + N[9] * e + N[13]) * A, this.z = (N[2] * D + N[6] * t + N[10] * e + N[14]) * A, this;
|
|
}
|
|
applyQuaternion(M) {
|
|
const D = this.x, t = this.y, e = this.z, N = M.x, A = M.y, z = M.z, I = M.w, i = I * D + A * e - z * t, T = I * t + z * D - N * e, u = I * e + N * t - A * D, g = -N * D - A * t - z * e;
|
|
return this.x = i * I + g * -N + T * -z - u * -A, this.y = T * I + g * -A + u * -N - i * -z, this.z = u * I + g * -z + i * -A - T * -N, this;
|
|
}
|
|
project(M) {
|
|
return this.applyMatrix4(M.matrixWorldInverse).applyMatrix4(M.projectionMatrix);
|
|
}
|
|
unproject(M) {
|
|
return this.applyMatrix4(M.projectionMatrixInverse).applyMatrix4(M.matrixWorld);
|
|
}
|
|
transformDirection(M) {
|
|
const D = this.x, t = this.y, e = this.z, N = M.elements;
|
|
return this.x = N[0] * D + N[4] * t + N[8] * e, this.y = N[1] * D + N[5] * t + N[9] * e, this.z = N[2] * D + N[6] * t + N[10] * e, this.normalize();
|
|
}
|
|
divide(M) {
|
|
return this.x /= M.x, this.y /= M.y, this.z /= M.z, this;
|
|
}
|
|
divideScalar(M) {
|
|
return this.multiplyScalar(1 / M);
|
|
}
|
|
min(M) {
|
|
return this.x = Math.min(this.x, M.x), this.y = Math.min(this.y, M.y), this.z = Math.min(this.z, M.z), this;
|
|
}
|
|
max(M) {
|
|
return this.x = Math.max(this.x, M.x), this.y = Math.max(this.y, M.y), this.z = Math.max(this.z, M.z), this;
|
|
}
|
|
clamp(M, D) {
|
|
return this.x = Math.max(M.x, Math.min(D.x, this.x)), this.y = Math.max(M.y, Math.min(D.y, this.y)), this.z = Math.max(M.z, Math.min(D.z, this.z)), this;
|
|
}
|
|
clampScalar(M, D) {
|
|
return this.x = Math.max(M, Math.min(D, this.x)), this.y = Math.max(M, Math.min(D, this.y)), this.z = Math.max(M, Math.min(D, this.z)), this;
|
|
}
|
|
clampLength(M, D) {
|
|
const t = this.length();
|
|
return this.divideScalar(t || 1).multiplyScalar(Math.max(M, Math.min(D, t)));
|
|
}
|
|
floor() {
|
|
return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this;
|
|
}
|
|
ceil() {
|
|
return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this;
|
|
}
|
|
round() {
|
|
return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this;
|
|
}
|
|
roundToZero() {
|
|
return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z), this;
|
|
}
|
|
negate() {
|
|
return this.x = -this.x, this.y = -this.y, this.z = -this.z, this;
|
|
}
|
|
dot(M) {
|
|
return this.x * M.x + this.y * M.y + this.z * M.z;
|
|
}
|
|
lengthSq() {
|
|
return this.x * this.x + this.y * this.y + this.z * this.z;
|
|
}
|
|
length() {
|
|
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
|
|
}
|
|
manhattanLength() {
|
|
return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);
|
|
}
|
|
normalize() {
|
|
return this.divideScalar(this.length() || 1);
|
|
}
|
|
setLength(M) {
|
|
return this.normalize().multiplyScalar(M);
|
|
}
|
|
lerp(M, D) {
|
|
return this.x += (M.x - this.x) * D, this.y += (M.y - this.y) * D, this.z += (M.z - this.z) * D, this;
|
|
}
|
|
lerpVectors(M, D, t) {
|
|
return this.x = M.x + (D.x - M.x) * t, this.y = M.y + (D.y - M.y) * t, this.z = M.z + (D.z - M.z) * t, this;
|
|
}
|
|
cross(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."), this.crossVectors(M, D)) : this.crossVectors(this, M);
|
|
}
|
|
crossVectors(M, D) {
|
|
const t = M.x, e = M.y, N = M.z, A = D.x, z = D.y, I = D.z;
|
|
return this.x = e * I - N * z, this.y = N * A - t * I, this.z = t * z - e * A, this;
|
|
}
|
|
projectOnVector(M) {
|
|
const D = M.lengthSq();
|
|
if (D === 0)
|
|
return this.set(0, 0, 0);
|
|
const t = M.dot(this) / D;
|
|
return this.copy(M).multiplyScalar(t);
|
|
}
|
|
projectOnPlane(M) {
|
|
return en.copy(this).projectOnVector(M), this.sub(en);
|
|
}
|
|
reflect(M) {
|
|
return this.sub(en.copy(M).multiplyScalar(2 * this.dot(M)));
|
|
}
|
|
angleTo(M) {
|
|
const D = Math.sqrt(this.lengthSq() * M.lengthSq());
|
|
if (D === 0)
|
|
return Math.PI / 2;
|
|
const t = this.dot(M) / D;
|
|
return Math.acos(OD(t, -1, 1));
|
|
}
|
|
distanceTo(M) {
|
|
return Math.sqrt(this.distanceToSquared(M));
|
|
}
|
|
distanceToSquared(M) {
|
|
const D = this.x - M.x, t = this.y - M.y, e = this.z - M.z;
|
|
return D * D + t * t + e * e;
|
|
}
|
|
manhattanDistanceTo(M) {
|
|
return Math.abs(this.x - M.x) + Math.abs(this.y - M.y) + Math.abs(this.z - M.z);
|
|
}
|
|
setFromSpherical(M) {
|
|
return this.setFromSphericalCoords(M.radius, M.phi, M.theta);
|
|
}
|
|
setFromSphericalCoords(M, D, t) {
|
|
const e = Math.sin(D) * M;
|
|
return this.x = e * Math.sin(t), this.y = Math.cos(D) * M, this.z = e * Math.cos(t), this;
|
|
}
|
|
setFromCylindrical(M) {
|
|
return this.setFromCylindricalCoords(M.radius, M.theta, M.y);
|
|
}
|
|
setFromCylindricalCoords(M, D, t) {
|
|
return this.x = M * Math.sin(D), this.y = t, this.z = M * Math.cos(D), this;
|
|
}
|
|
setFromMatrixPosition(M) {
|
|
const D = M.elements;
|
|
return this.x = D[12], this.y = D[13], this.z = D[14], this;
|
|
}
|
|
setFromMatrixScale(M) {
|
|
const D = this.setFromMatrixColumn(M, 0).length(), t = this.setFromMatrixColumn(M, 1).length(), e = this.setFromMatrixColumn(M, 2).length();
|
|
return this.x = D, this.y = t, this.z = e, this;
|
|
}
|
|
setFromMatrixColumn(M, D) {
|
|
return this.fromArray(M.elements, D * 4);
|
|
}
|
|
setFromMatrix3Column(M, D) {
|
|
return this.fromArray(M.elements, D * 3);
|
|
}
|
|
equals(M) {
|
|
return M.x === this.x && M.y === this.y && M.z === this.z;
|
|
}
|
|
fromArray(M, D = 0) {
|
|
return this.x = M[D], this.y = M[D + 1], this.z = M[D + 2], this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
return M[D] = this.x, M[D + 1] = this.y, M[D + 2] = this.z, M;
|
|
}
|
|
fromBufferAttribute(M, D, t) {
|
|
return t !== void 0 && console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."), this.x = M.getX(D), this.y = M.getY(D), this.z = M.getZ(D), this;
|
|
}
|
|
random() {
|
|
return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this;
|
|
}
|
|
randomDirection() {
|
|
const M = (Math.random() - 0.5) * 2, D = Math.random() * Math.PI * 2, t = Math.sqrt(1 - M ** 2);
|
|
return this.x = t * Math.cos(D), this.y = t * Math.sin(D), this.z = M, this;
|
|
}
|
|
*[Symbol.iterator]() {
|
|
yield this.x, yield this.y, yield this.z;
|
|
}
|
|
}
|
|
O.prototype.isVector3 = !0;
|
|
const en = /* @__PURE__ */ new O(), GA = /* @__PURE__ */ new aD();
|
|
class pD {
|
|
constructor(M = new O(1 / 0, 1 / 0, 1 / 0), D = new O(-1 / 0, -1 / 0, -1 / 0)) {
|
|
this.min = M, this.max = D;
|
|
}
|
|
set(M, D) {
|
|
return this.min.copy(M), this.max.copy(D), this;
|
|
}
|
|
setFromArray(M) {
|
|
let D = 1 / 0, t = 1 / 0, e = 1 / 0, N = -1 / 0, A = -1 / 0, z = -1 / 0;
|
|
for (let I = 0, i = M.length; I < i; I += 3) {
|
|
const T = M[I], u = M[I + 1], g = M[I + 2];
|
|
T < D && (D = T), u < t && (t = u), g < e && (e = g), T > N && (N = T), u > A && (A = u), g > z && (z = g);
|
|
}
|
|
return this.min.set(D, t, e), this.max.set(N, A, z), this;
|
|
}
|
|
setFromBufferAttribute(M) {
|
|
let D = 1 / 0, t = 1 / 0, e = 1 / 0, N = -1 / 0, A = -1 / 0, z = -1 / 0;
|
|
for (let I = 0, i = M.count; I < i; I++) {
|
|
const T = M.getX(I), u = M.getY(I), g = M.getZ(I);
|
|
T < D && (D = T), u < t && (t = u), g < e && (e = g), T > N && (N = T), u > A && (A = u), g > z && (z = g);
|
|
}
|
|
return this.min.set(D, t, e), this.max.set(N, A, z), this;
|
|
}
|
|
setFromPoints(M) {
|
|
this.makeEmpty();
|
|
for (let D = 0, t = M.length; D < t; D++)
|
|
this.expandByPoint(M[D]);
|
|
return this;
|
|
}
|
|
setFromCenterAndSize(M, D) {
|
|
const t = at.copy(D).multiplyScalar(0.5);
|
|
return this.min.copy(M).sub(t), this.max.copy(M).add(t), this;
|
|
}
|
|
setFromObject(M, D = !1) {
|
|
return this.makeEmpty(), this.expandByObject(M, D);
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
copy(M) {
|
|
return this.min.copy(M.min), this.max.copy(M.max), this;
|
|
}
|
|
makeEmpty() {
|
|
return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this;
|
|
}
|
|
isEmpty() {
|
|
return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;
|
|
}
|
|
getCenter(M) {
|
|
return this.isEmpty() ? M.set(0, 0, 0) : M.addVectors(this.min, this.max).multiplyScalar(0.5);
|
|
}
|
|
getSize(M) {
|
|
return this.isEmpty() ? M.set(0, 0, 0) : M.subVectors(this.max, this.min);
|
|
}
|
|
expandByPoint(M) {
|
|
return this.min.min(M), this.max.max(M), this;
|
|
}
|
|
expandByVector(M) {
|
|
return this.min.sub(M), this.max.add(M), this;
|
|
}
|
|
expandByScalar(M) {
|
|
return this.min.addScalar(-M), this.max.addScalar(M), this;
|
|
}
|
|
expandByObject(M, D = !1) {
|
|
M.updateWorldMatrix(!1, !1);
|
|
const t = M.geometry;
|
|
if (t !== void 0)
|
|
if (D && t.attributes != null && t.attributes.position !== void 0) {
|
|
const N = t.attributes.position;
|
|
for (let A = 0, z = N.count; A < z; A++)
|
|
at.fromBufferAttribute(N, A).applyMatrix4(M.matrixWorld), this.expandByPoint(at);
|
|
} else
|
|
t.boundingBox === null && t.computeBoundingBox(), Nn.copy(t.boundingBox), Nn.applyMatrix4(M.matrixWorld), this.union(Nn);
|
|
const e = M.children;
|
|
for (let N = 0, A = e.length; N < A; N++)
|
|
this.expandByObject(e[N], D);
|
|
return this;
|
|
}
|
|
containsPoint(M) {
|
|
return !(M.x < this.min.x || M.x > this.max.x || M.y < this.min.y || M.y > this.max.y || M.z < this.min.z || M.z > this.max.z);
|
|
}
|
|
containsBox(M) {
|
|
return this.min.x <= M.min.x && M.max.x <= this.max.x && this.min.y <= M.min.y && M.max.y <= this.max.y && this.min.z <= M.min.z && M.max.z <= this.max.z;
|
|
}
|
|
getParameter(M, D) {
|
|
return D.set((M.x - this.min.x) / (this.max.x - this.min.x), (M.y - this.min.y) / (this.max.y - this.min.y), (M.z - this.min.z) / (this.max.z - this.min.z));
|
|
}
|
|
intersectsBox(M) {
|
|
return !(M.max.x < this.min.x || M.min.x > this.max.x || M.max.y < this.min.y || M.min.y > this.max.y || M.max.z < this.min.z || M.min.z > this.max.z);
|
|
}
|
|
intersectsSphere(M) {
|
|
return this.clampPoint(M.center, at), at.distanceToSquared(M.center) <= M.radius * M.radius;
|
|
}
|
|
intersectsPlane(M) {
|
|
let D, t;
|
|
return M.normal.x > 0 ? (D = M.normal.x * this.min.x, t = M.normal.x * this.max.x) : (D = M.normal.x * this.max.x, t = M.normal.x * this.min.x), M.normal.y > 0 ? (D += M.normal.y * this.min.y, t += M.normal.y * this.max.y) : (D += M.normal.y * this.max.y, t += M.normal.y * this.min.y), M.normal.z > 0 ? (D += M.normal.z * this.min.z, t += M.normal.z * this.max.z) : (D += M.normal.z * this.max.z, t += M.normal.z * this.min.z), D <= -M.constant && t >= -M.constant;
|
|
}
|
|
intersectsTriangle(M) {
|
|
if (this.isEmpty())
|
|
return !1;
|
|
this.getCenter(ye), Ge.subVectors(this.max, ye), Yt.subVectors(M.a, ye), Ut.subVectors(M.b, ye), Qt.subVectors(M.c, ye), $D.subVectors(Ut, Yt), Mt.subVectors(Qt, Ut), Ct.subVectors(Yt, Qt);
|
|
let D = [
|
|
0,
|
|
-$D.z,
|
|
$D.y,
|
|
0,
|
|
-Mt.z,
|
|
Mt.y,
|
|
0,
|
|
-Ct.z,
|
|
Ct.y,
|
|
$D.z,
|
|
0,
|
|
-$D.x,
|
|
Mt.z,
|
|
0,
|
|
-Mt.x,
|
|
Ct.z,
|
|
0,
|
|
-Ct.x,
|
|
-$D.y,
|
|
$D.x,
|
|
0,
|
|
-Mt.y,
|
|
Mt.x,
|
|
0,
|
|
-Ct.y,
|
|
Ct.x,
|
|
0
|
|
];
|
|
return !nn(D, Yt, Ut, Qt, Ge) || (D = [1, 0, 0, 0, 1, 0, 0, 0, 1], !nn(D, Yt, Ut, Qt, Ge)) ? !1 : (We.crossVectors($D, Mt), D = [We.x, We.y, We.z], nn(D, Yt, Ut, Qt, Ge));
|
|
}
|
|
clampPoint(M, D) {
|
|
return D.copy(M).clamp(this.min, this.max);
|
|
}
|
|
distanceToPoint(M) {
|
|
return at.copy(M).clamp(this.min, this.max).sub(M).length();
|
|
}
|
|
getBoundingSphere(M) {
|
|
return this.getCenter(M.center), M.radius = this.getSize(at).length() * 0.5, M;
|
|
}
|
|
intersect(M) {
|
|
return this.min.max(M.min), this.max.min(M.max), this.isEmpty() && this.makeEmpty(), this;
|
|
}
|
|
union(M) {
|
|
return this.min.min(M.min), this.max.max(M.max), this;
|
|
}
|
|
applyMatrix4(M) {
|
|
return this.isEmpty() ? this : (BD[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(M), BD[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(M), BD[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(M), BD[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(M), BD[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(M), BD[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(M), BD[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(M), BD[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(M), this.setFromPoints(BD), this);
|
|
}
|
|
translate(M) {
|
|
return this.min.add(M), this.max.add(M), this;
|
|
}
|
|
equals(M) {
|
|
return M.min.equals(this.min) && M.max.equals(this.max);
|
|
}
|
|
}
|
|
pD.prototype.isBox3 = !0;
|
|
const BD = [
|
|
/* @__PURE__ */ new O(),
|
|
/* @__PURE__ */ new O(),
|
|
/* @__PURE__ */ new O(),
|
|
/* @__PURE__ */ new O(),
|
|
/* @__PURE__ */ new O(),
|
|
/* @__PURE__ */ new O(),
|
|
/* @__PURE__ */ new O(),
|
|
/* @__PURE__ */ new O()
|
|
], at = /* @__PURE__ */ new O(), Nn = /* @__PURE__ */ new pD(), Yt = /* @__PURE__ */ new O(), Ut = /* @__PURE__ */ new O(), Qt = /* @__PURE__ */ new O(), $D = /* @__PURE__ */ new O(), Mt = /* @__PURE__ */ new O(), Ct = /* @__PURE__ */ new O(), ye = /* @__PURE__ */ new O(), Ge = /* @__PURE__ */ new O(), We = /* @__PURE__ */ new O(), Lt = /* @__PURE__ */ new O();
|
|
function nn(n, M, D, t, e) {
|
|
for (let N = 0, A = n.length - 3; N <= A; N += 3) {
|
|
Lt.fromArray(n, N);
|
|
const z = e.x * Math.abs(Lt.x) + e.y * Math.abs(Lt.y) + e.z * Math.abs(Lt.z), I = M.dot(Lt), i = D.dot(Lt), T = t.dot(Lt);
|
|
if (Math.max(-Math.max(I, i, T), Math.min(I, i, T)) > z)
|
|
return !1;
|
|
}
|
|
return !0;
|
|
}
|
|
const uT = /* @__PURE__ */ new pD(), WA = /* @__PURE__ */ new O(), qe = /* @__PURE__ */ new O(), An = /* @__PURE__ */ new O();
|
|
class Ie {
|
|
constructor(M = new O(), D = -1) {
|
|
this.center = M, this.radius = D;
|
|
}
|
|
set(M, D) {
|
|
return this.center.copy(M), this.radius = D, this;
|
|
}
|
|
setFromPoints(M, D) {
|
|
const t = this.center;
|
|
D !== void 0 ? t.copy(D) : uT.setFromPoints(M).getCenter(t);
|
|
let e = 0;
|
|
for (let N = 0, A = M.length; N < A; N++)
|
|
e = Math.max(e, t.distanceToSquared(M[N]));
|
|
return this.radius = Math.sqrt(e), this;
|
|
}
|
|
copy(M) {
|
|
return this.center.copy(M.center), this.radius = M.radius, this;
|
|
}
|
|
isEmpty() {
|
|
return this.radius < 0;
|
|
}
|
|
makeEmpty() {
|
|
return this.center.set(0, 0, 0), this.radius = -1, this;
|
|
}
|
|
containsPoint(M) {
|
|
return M.distanceToSquared(this.center) <= this.radius * this.radius;
|
|
}
|
|
distanceToPoint(M) {
|
|
return M.distanceTo(this.center) - this.radius;
|
|
}
|
|
intersectsSphere(M) {
|
|
const D = this.radius + M.radius;
|
|
return M.center.distanceToSquared(this.center) <= D * D;
|
|
}
|
|
intersectsBox(M) {
|
|
return M.intersectsSphere(this);
|
|
}
|
|
intersectsPlane(M) {
|
|
return Math.abs(M.distanceToPoint(this.center)) <= this.radius;
|
|
}
|
|
clampPoint(M, D) {
|
|
const t = this.center.distanceToSquared(M);
|
|
return D.copy(M), t > this.radius * this.radius && (D.sub(this.center).normalize(), D.multiplyScalar(this.radius).add(this.center)), D;
|
|
}
|
|
getBoundingBox(M) {
|
|
return this.isEmpty() ? (M.makeEmpty(), M) : (M.set(this.center, this.center), M.expandByScalar(this.radius), M);
|
|
}
|
|
applyMatrix4(M) {
|
|
return this.center.applyMatrix4(M), this.radius = this.radius * M.getMaxScaleOnAxis(), this;
|
|
}
|
|
translate(M) {
|
|
return this.center.add(M), this;
|
|
}
|
|
expandByPoint(M) {
|
|
An.subVectors(M, this.center);
|
|
const D = An.lengthSq();
|
|
if (D > this.radius * this.radius) {
|
|
const t = Math.sqrt(D), e = (t - this.radius) * 0.5;
|
|
this.center.add(An.multiplyScalar(e / t)), this.radius += e;
|
|
}
|
|
return this;
|
|
}
|
|
union(M) {
|
|
return this.center.equals(M.center) === !0 ? qe.set(0, 0, 1).multiplyScalar(M.radius) : qe.subVectors(M.center, this.center).normalize().multiplyScalar(M.radius), this.expandByPoint(WA.copy(M.center).add(qe)), this.expandByPoint(WA.copy(M.center).sub(qe)), this;
|
|
}
|
|
equals(M) {
|
|
return M.center.equals(this.center) && M.radius === this.radius;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
}
|
|
const VD = /* @__PURE__ */ new O(), zn = /* @__PURE__ */ new O(), Xe = /* @__PURE__ */ new O(), Dt = /* @__PURE__ */ new O(), In = /* @__PURE__ */ new O(), Je = /* @__PURE__ */ new O(), Tn = /* @__PURE__ */ new O();
|
|
class Te {
|
|
constructor(M = new O(), D = new O(0, 0, -1)) {
|
|
this.origin = M, this.direction = D;
|
|
}
|
|
set(M, D) {
|
|
return this.origin.copy(M), this.direction.copy(D), this;
|
|
}
|
|
copy(M) {
|
|
return this.origin.copy(M.origin), this.direction.copy(M.direction), this;
|
|
}
|
|
at(M, D) {
|
|
return D.copy(this.direction).multiplyScalar(M).add(this.origin);
|
|
}
|
|
lookAt(M) {
|
|
return this.direction.copy(M).sub(this.origin).normalize(), this;
|
|
}
|
|
recast(M) {
|
|
return this.origin.copy(this.at(M, VD)), this;
|
|
}
|
|
closestPointToPoint(M, D) {
|
|
D.subVectors(M, this.origin);
|
|
const t = D.dot(this.direction);
|
|
return t < 0 ? D.copy(this.origin) : D.copy(this.direction).multiplyScalar(t).add(this.origin);
|
|
}
|
|
distanceToPoint(M) {
|
|
return Math.sqrt(this.distanceSqToPoint(M));
|
|
}
|
|
distanceSqToPoint(M) {
|
|
const D = VD.subVectors(M, this.origin).dot(this.direction);
|
|
return D < 0 ? this.origin.distanceToSquared(M) : (VD.copy(this.direction).multiplyScalar(D).add(this.origin), VD.distanceToSquared(M));
|
|
}
|
|
distanceSqToSegment(M, D, t, e) {
|
|
zn.copy(M).add(D).multiplyScalar(0.5), Xe.copy(D).sub(M).normalize(), Dt.copy(this.origin).sub(zn);
|
|
const N = M.distanceTo(D) * 0.5, A = -this.direction.dot(Xe), z = Dt.dot(this.direction), I = -Dt.dot(Xe), i = Dt.lengthSq(), T = Math.abs(1 - A * A);
|
|
let u, g, s, j;
|
|
if (T > 0)
|
|
if (u = A * I - z, g = A * z - I, j = N * T, u >= 0)
|
|
if (g >= -j)
|
|
if (g <= j) {
|
|
const y = 1 / T;
|
|
u *= y, g *= y, s = u * (u + A * g + 2 * z) + g * (A * u + g + 2 * I) + i;
|
|
} else
|
|
g = N, u = Math.max(0, -(A * g + z)), s = -u * u + g * (g + 2 * I) + i;
|
|
else
|
|
g = -N, u = Math.max(0, -(A * g + z)), s = -u * u + g * (g + 2 * I) + i;
|
|
else
|
|
g <= -j ? (u = Math.max(0, -(-A * N + z)), g = u > 0 ? -N : Math.min(Math.max(-N, -I), N), s = -u * u + g * (g + 2 * I) + i) : g <= j ? (u = 0, g = Math.min(Math.max(-N, -I), N), s = g * (g + 2 * I) + i) : (u = Math.max(0, -(A * N + z)), g = u > 0 ? N : Math.min(Math.max(-N, -I), N), s = -u * u + g * (g + 2 * I) + i);
|
|
else
|
|
g = A > 0 ? -N : N, u = Math.max(0, -(A * g + z)), s = -u * u + g * (g + 2 * I) + i;
|
|
return t && t.copy(this.direction).multiplyScalar(u).add(this.origin), e && e.copy(Xe).multiplyScalar(g).add(zn), s;
|
|
}
|
|
intersectSphere(M, D) {
|
|
VD.subVectors(M.center, this.origin);
|
|
const t = VD.dot(this.direction), e = VD.dot(VD) - t * t, N = M.radius * M.radius;
|
|
if (e > N)
|
|
return null;
|
|
const A = Math.sqrt(N - e), z = t - A, I = t + A;
|
|
return z < 0 && I < 0 ? null : z < 0 ? this.at(I, D) : this.at(z, D);
|
|
}
|
|
intersectsSphere(M) {
|
|
return this.distanceSqToPoint(M.center) <= M.radius * M.radius;
|
|
}
|
|
distanceToPlane(M) {
|
|
const D = M.normal.dot(this.direction);
|
|
if (D === 0)
|
|
return M.distanceToPoint(this.origin) === 0 ? 0 : null;
|
|
const t = -(this.origin.dot(M.normal) + M.constant) / D;
|
|
return t >= 0 ? t : null;
|
|
}
|
|
intersectPlane(M, D) {
|
|
const t = this.distanceToPlane(M);
|
|
return t === null ? null : this.at(t, D);
|
|
}
|
|
intersectsPlane(M) {
|
|
const D = M.distanceToPoint(this.origin);
|
|
return D === 0 || M.normal.dot(this.direction) * D < 0;
|
|
}
|
|
intersectBox(M, D) {
|
|
let t, e, N, A, z, I;
|
|
const i = 1 / this.direction.x, T = 1 / this.direction.y, u = 1 / this.direction.z, g = this.origin;
|
|
return i >= 0 ? (t = (M.min.x - g.x) * i, e = (M.max.x - g.x) * i) : (t = (M.max.x - g.x) * i, e = (M.min.x - g.x) * i), T >= 0 ? (N = (M.min.y - g.y) * T, A = (M.max.y - g.y) * T) : (N = (M.max.y - g.y) * T, A = (M.min.y - g.y) * T), t > A || N > e || ((N > t || t !== t) && (t = N), (A < e || e !== e) && (e = A), u >= 0 ? (z = (M.min.z - g.z) * u, I = (M.max.z - g.z) * u) : (z = (M.max.z - g.z) * u, I = (M.min.z - g.z) * u), t > I || z > e) || ((z > t || t !== t) && (t = z), (I < e || e !== e) && (e = I), e < 0) ? null : this.at(t >= 0 ? t : e, D);
|
|
}
|
|
intersectsBox(M) {
|
|
return this.intersectBox(M, VD) !== null;
|
|
}
|
|
intersectTriangle(M, D, t, e, N) {
|
|
In.subVectors(D, M), Je.subVectors(t, M), Tn.crossVectors(In, Je);
|
|
let A = this.direction.dot(Tn), z;
|
|
if (A > 0) {
|
|
if (e)
|
|
return null;
|
|
z = 1;
|
|
} else if (A < 0)
|
|
z = -1, A = -A;
|
|
else
|
|
return null;
|
|
Dt.subVectors(this.origin, M);
|
|
const I = z * this.direction.dot(Je.crossVectors(Dt, Je));
|
|
if (I < 0)
|
|
return null;
|
|
const i = z * this.direction.dot(In.cross(Dt));
|
|
if (i < 0 || I + i > A)
|
|
return null;
|
|
const T = -z * Dt.dot(Tn);
|
|
return T < 0 ? null : this.at(T / A, N);
|
|
}
|
|
applyMatrix4(M) {
|
|
return this.origin.applyMatrix4(M), this.direction.transformDirection(M), this;
|
|
}
|
|
equals(M) {
|
|
return M.origin.equals(this.origin) && M.direction.equals(this.direction);
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
}
|
|
class aM {
|
|
constructor() {
|
|
this.elements = [
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
], arguments.length > 0 && console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.");
|
|
}
|
|
set(M, D, t, e, N, A, z, I, i, T, u, g, s, j, y, a) {
|
|
const c = this.elements;
|
|
return c[0] = M, c[4] = D, c[8] = t, c[12] = e, c[1] = N, c[5] = A, c[9] = z, c[13] = I, c[2] = i, c[6] = T, c[10] = u, c[14] = g, c[3] = s, c[7] = j, c[11] = y, c[15] = a, this;
|
|
}
|
|
identity() {
|
|
return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), this;
|
|
}
|
|
clone() {
|
|
return new aM().fromArray(this.elements);
|
|
}
|
|
copy(M) {
|
|
const D = this.elements, t = M.elements;
|
|
return D[0] = t[0], D[1] = t[1], D[2] = t[2], D[3] = t[3], D[4] = t[4], D[5] = t[5], D[6] = t[6], D[7] = t[7], D[8] = t[8], D[9] = t[9], D[10] = t[10], D[11] = t[11], D[12] = t[12], D[13] = t[13], D[14] = t[14], D[15] = t[15], this;
|
|
}
|
|
copyPosition(M) {
|
|
const D = this.elements, t = M.elements;
|
|
return D[12] = t[12], D[13] = t[13], D[14] = t[14], this;
|
|
}
|
|
setFromMatrix3(M) {
|
|
const D = M.elements;
|
|
return this.set(D[0], D[3], D[6], 0, D[1], D[4], D[7], 0, D[2], D[5], D[8], 0, 0, 0, 0, 1), this;
|
|
}
|
|
extractBasis(M, D, t) {
|
|
return M.setFromMatrixColumn(this, 0), D.setFromMatrixColumn(this, 1), t.setFromMatrixColumn(this, 2), this;
|
|
}
|
|
makeBasis(M, D, t) {
|
|
return this.set(M.x, D.x, t.x, 0, M.y, D.y, t.y, 0, M.z, D.z, t.z, 0, 0, 0, 0, 1), this;
|
|
}
|
|
extractRotation(M) {
|
|
const D = this.elements, t = M.elements, e = 1 / ft.setFromMatrixColumn(M, 0).length(), N = 1 / ft.setFromMatrixColumn(M, 1).length(), A = 1 / ft.setFromMatrixColumn(M, 2).length();
|
|
return D[0] = t[0] * e, D[1] = t[1] * e, D[2] = t[2] * e, D[3] = 0, D[4] = t[4] * N, D[5] = t[5] * N, D[6] = t[6] * N, D[7] = 0, D[8] = t[8] * A, D[9] = t[9] * A, D[10] = t[10] * A, D[11] = 0, D[12] = 0, D[13] = 0, D[14] = 0, D[15] = 1, this;
|
|
}
|
|
makeRotationFromEuler(M) {
|
|
M && M.isEuler || console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");
|
|
const D = this.elements, t = M.x, e = M.y, N = M.z, A = Math.cos(t), z = Math.sin(t), I = Math.cos(e), i = Math.sin(e), T = Math.cos(N), u = Math.sin(N);
|
|
if (M.order === "XYZ") {
|
|
const g = A * T, s = A * u, j = z * T, y = z * u;
|
|
D[0] = I * T, D[4] = -I * u, D[8] = i, D[1] = s + j * i, D[5] = g - y * i, D[9] = -z * I, D[2] = y - g * i, D[6] = j + s * i, D[10] = A * I;
|
|
} else if (M.order === "YXZ") {
|
|
const g = I * T, s = I * u, j = i * T, y = i * u;
|
|
D[0] = g + y * z, D[4] = j * z - s, D[8] = A * i, D[1] = A * u, D[5] = A * T, D[9] = -z, D[2] = s * z - j, D[6] = y + g * z, D[10] = A * I;
|
|
} else if (M.order === "ZXY") {
|
|
const g = I * T, s = I * u, j = i * T, y = i * u;
|
|
D[0] = g - y * z, D[4] = -A * u, D[8] = j + s * z, D[1] = s + j * z, D[5] = A * T, D[9] = y - g * z, D[2] = -A * i, D[6] = z, D[10] = A * I;
|
|
} else if (M.order === "ZYX") {
|
|
const g = A * T, s = A * u, j = z * T, y = z * u;
|
|
D[0] = I * T, D[4] = j * i - s, D[8] = g * i + y, D[1] = I * u, D[5] = y * i + g, D[9] = s * i - j, D[2] = -i, D[6] = z * I, D[10] = A * I;
|
|
} else if (M.order === "YZX") {
|
|
const g = A * I, s = A * i, j = z * I, y = z * i;
|
|
D[0] = I * T, D[4] = y - g * u, D[8] = j * u + s, D[1] = u, D[5] = A * T, D[9] = -z * T, D[2] = -i * T, D[6] = s * u + j, D[10] = g - y * u;
|
|
} else if (M.order === "XZY") {
|
|
const g = A * I, s = A * i, j = z * I, y = z * i;
|
|
D[0] = I * T, D[4] = -u, D[8] = i * T, D[1] = g * u + y, D[5] = A * T, D[9] = s * u - j, D[2] = j * u - s, D[6] = z * T, D[10] = y * u + g;
|
|
}
|
|
return D[3] = 0, D[7] = 0, D[11] = 0, D[12] = 0, D[13] = 0, D[14] = 0, D[15] = 1, this;
|
|
}
|
|
makeRotationFromQuaternion(M) {
|
|
return this.compose(gT, M, rT);
|
|
}
|
|
lookAt(M, D, t) {
|
|
const e = this.elements;
|
|
return LD.subVectors(M, D), LD.lengthSq() === 0 && (LD.z = 1), LD.normalize(), tt.crossVectors(t, LD), tt.lengthSq() === 0 && (Math.abs(t.z) === 1 ? LD.x += 1e-4 : LD.z += 1e-4, LD.normalize(), tt.crossVectors(t, LD)), tt.normalize(), $e.crossVectors(LD, tt), e[0] = tt.x, e[4] = $e.x, e[8] = LD.x, e[1] = tt.y, e[5] = $e.y, e[9] = LD.y, e[2] = tt.z, e[6] = $e.z, e[10] = LD.z, this;
|
|
}
|
|
multiply(M, D) {
|
|
return D !== void 0 ? (console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."), this.multiplyMatrices(M, D)) : this.multiplyMatrices(this, M);
|
|
}
|
|
premultiply(M) {
|
|
return this.multiplyMatrices(M, this);
|
|
}
|
|
multiplyMatrices(M, D) {
|
|
const t = M.elements, e = D.elements, N = this.elements, A = t[0], z = t[4], I = t[8], i = t[12], T = t[1], u = t[5], g = t[9], s = t[13], j = t[2], y = t[6], a = t[10], c = t[14], r = t[3], l = t[7], C = t[11], E = t[15], d = e[0], p = e[4], H = e[8], DM = e[12], G = e[1], o = e[5], h = e[9], Y = e[13], k = e[2], f = e[6], Q = e[10], b = e[14], W = e[3], IM = e[7], Z = e[11], V = e[15];
|
|
return N[0] = A * d + z * G + I * k + i * W, N[4] = A * p + z * o + I * f + i * IM, N[8] = A * H + z * h + I * Q + i * Z, N[12] = A * DM + z * Y + I * b + i * V, N[1] = T * d + u * G + g * k + s * W, N[5] = T * p + u * o + g * f + s * IM, N[9] = T * H + u * h + g * Q + s * Z, N[13] = T * DM + u * Y + g * b + s * V, N[2] = j * d + y * G + a * k + c * W, N[6] = j * p + y * o + a * f + c * IM, N[10] = j * H + y * h + a * Q + c * Z, N[14] = j * DM + y * Y + a * b + c * V, N[3] = r * d + l * G + C * k + E * W, N[7] = r * p + l * o + C * f + E * IM, N[11] = r * H + l * h + C * Q + E * Z, N[15] = r * DM + l * Y + C * b + E * V, this;
|
|
}
|
|
multiplyScalar(M) {
|
|
const D = this.elements;
|
|
return D[0] *= M, D[4] *= M, D[8] *= M, D[12] *= M, D[1] *= M, D[5] *= M, D[9] *= M, D[13] *= M, D[2] *= M, D[6] *= M, D[10] *= M, D[14] *= M, D[3] *= M, D[7] *= M, D[11] *= M, D[15] *= M, this;
|
|
}
|
|
determinant() {
|
|
const M = this.elements, D = M[0], t = M[4], e = M[8], N = M[12], A = M[1], z = M[5], I = M[9], i = M[13], T = M[2], u = M[6], g = M[10], s = M[14], j = M[3], y = M[7], a = M[11], c = M[15];
|
|
return j * (+N * I * u - e * i * u - N * z * g + t * i * g + e * z * s - t * I * s) + y * (+D * I * s - D * i * g + N * A * g - e * A * s + e * i * T - N * I * T) + a * (+D * i * u - D * z * s - N * A * u + t * A * s + N * z * T - t * i * T) + c * (-e * z * T - D * I * u + D * z * g + e * A * u - t * A * g + t * I * T);
|
|
}
|
|
transpose() {
|
|
const M = this.elements;
|
|
let D;
|
|
return D = M[1], M[1] = M[4], M[4] = D, D = M[2], M[2] = M[8], M[8] = D, D = M[6], M[6] = M[9], M[9] = D, D = M[3], M[3] = M[12], M[12] = D, D = M[7], M[7] = M[13], M[13] = D, D = M[11], M[11] = M[14], M[14] = D, this;
|
|
}
|
|
setPosition(M, D, t) {
|
|
const e = this.elements;
|
|
return M.isVector3 ? (e[12] = M.x, e[13] = M.y, e[14] = M.z) : (e[12] = M, e[13] = D, e[14] = t), this;
|
|
}
|
|
invert() {
|
|
const M = this.elements, D = M[0], t = M[1], e = M[2], N = M[3], A = M[4], z = M[5], I = M[6], i = M[7], T = M[8], u = M[9], g = M[10], s = M[11], j = M[12], y = M[13], a = M[14], c = M[15], r = u * a * i - y * g * i + y * I * s - z * a * s - u * I * c + z * g * c, l = j * g * i - T * a * i - j * I * s + A * a * s + T * I * c - A * g * c, C = T * y * i - j * u * i + j * z * s - A * y * s - T * z * c + A * u * c, E = j * u * I - T * y * I - j * z * g + A * y * g + T * z * a - A * u * a, d = D * r + t * l + e * C + N * E;
|
|
if (d === 0)
|
|
return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
const p = 1 / d;
|
|
return M[0] = r * p, M[1] = (y * g * N - u * a * N - y * e * s + t * a * s + u * e * c - t * g * c) * p, M[2] = (z * a * N - y * I * N + y * e * i - t * a * i - z * e * c + t * I * c) * p, M[3] = (u * I * N - z * g * N - u * e * i + t * g * i + z * e * s - t * I * s) * p, M[4] = l * p, M[5] = (T * a * N - j * g * N + j * e * s - D * a * s - T * e * c + D * g * c) * p, M[6] = (j * I * N - A * a * N - j * e * i + D * a * i + A * e * c - D * I * c) * p, M[7] = (A * g * N - T * I * N + T * e * i - D * g * i - A * e * s + D * I * s) * p, M[8] = C * p, M[9] = (j * u * N - T * y * N - j * t * s + D * y * s + T * t * c - D * u * c) * p, M[10] = (A * y * N - j * z * N + j * t * i - D * y * i - A * t * c + D * z * c) * p, M[11] = (T * z * N - A * u * N - T * t * i + D * u * i + A * t * s - D * z * s) * p, M[12] = E * p, M[13] = (T * y * e - j * u * e + j * t * g - D * y * g - T * t * a + D * u * a) * p, M[14] = (j * z * e - A * y * e - j * t * I + D * y * I + A * t * a - D * z * a) * p, M[15] = (A * u * e - T * z * e + T * t * I - D * u * I - A * t * g + D * z * g) * p, this;
|
|
}
|
|
scale(M) {
|
|
const D = this.elements, t = M.x, e = M.y, N = M.z;
|
|
return D[0] *= t, D[4] *= e, D[8] *= N, D[1] *= t, D[5] *= e, D[9] *= N, D[2] *= t, D[6] *= e, D[10] *= N, D[3] *= t, D[7] *= e, D[11] *= N, this;
|
|
}
|
|
getMaxScaleOnAxis() {
|
|
const M = this.elements, D = M[0] * M[0] + M[1] * M[1] + M[2] * M[2], t = M[4] * M[4] + M[5] * M[5] + M[6] * M[6], e = M[8] * M[8] + M[9] * M[9] + M[10] * M[10];
|
|
return Math.sqrt(Math.max(D, t, e));
|
|
}
|
|
makeTranslation(M, D, t) {
|
|
return this.set(1, 0, 0, M, 0, 1, 0, D, 0, 0, 1, t, 0, 0, 0, 1), this;
|
|
}
|
|
makeRotationX(M) {
|
|
const D = Math.cos(M), t = Math.sin(M);
|
|
return this.set(1, 0, 0, 0, 0, D, -t, 0, 0, t, D, 0, 0, 0, 0, 1), this;
|
|
}
|
|
makeRotationY(M) {
|
|
const D = Math.cos(M), t = Math.sin(M);
|
|
return this.set(D, 0, t, 0, 0, 1, 0, 0, -t, 0, D, 0, 0, 0, 0, 1), this;
|
|
}
|
|
makeRotationZ(M) {
|
|
const D = Math.cos(M), t = Math.sin(M);
|
|
return this.set(D, -t, 0, 0, t, D, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), this;
|
|
}
|
|
makeRotationAxis(M, D) {
|
|
const t = Math.cos(D), e = Math.sin(D), N = 1 - t, A = M.x, z = M.y, I = M.z, i = N * A, T = N * z;
|
|
return this.set(i * A + t, i * z - e * I, i * I + e * z, 0, i * z + e * I, T * z + t, T * I - e * A, 0, i * I - e * z, T * I + e * A, N * I * I + t, 0, 0, 0, 0, 1), this;
|
|
}
|
|
makeScale(M, D, t) {
|
|
return this.set(M, 0, 0, 0, 0, D, 0, 0, 0, 0, t, 0, 0, 0, 0, 1), this;
|
|
}
|
|
makeShear(M, D, t, e, N, A) {
|
|
return this.set(1, t, N, 0, M, 1, A, 0, D, e, 1, 0, 0, 0, 0, 1), this;
|
|
}
|
|
compose(M, D, t) {
|
|
const e = this.elements, N = D._x, A = D._y, z = D._z, I = D._w, i = N + N, T = A + A, u = z + z, g = N * i, s = N * T, j = N * u, y = A * T, a = A * u, c = z * u, r = I * i, l = I * T, C = I * u, E = t.x, d = t.y, p = t.z;
|
|
return e[0] = (1 - (y + c)) * E, e[1] = (s + C) * E, e[2] = (j - l) * E, e[3] = 0, e[4] = (s - C) * d, e[5] = (1 - (g + c)) * d, e[6] = (a + r) * d, e[7] = 0, e[8] = (j + l) * p, e[9] = (a - r) * p, e[10] = (1 - (g + y)) * p, e[11] = 0, e[12] = M.x, e[13] = M.y, e[14] = M.z, e[15] = 1, this;
|
|
}
|
|
decompose(M, D, t) {
|
|
const e = this.elements;
|
|
let N = ft.set(e[0], e[1], e[2]).length();
|
|
const A = ft.set(e[4], e[5], e[6]).length(), z = ft.set(e[8], e[9], e[10]).length();
|
|
this.determinant() < 0 && (N = -N), M.x = e[12], M.y = e[13], M.z = e[14], UD.copy(this);
|
|
const i = 1 / N, T = 1 / A, u = 1 / z;
|
|
return UD.elements[0] *= i, UD.elements[1] *= i, UD.elements[2] *= i, UD.elements[4] *= T, UD.elements[5] *= T, UD.elements[6] *= T, UD.elements[8] *= u, UD.elements[9] *= u, UD.elements[10] *= u, D.setFromRotationMatrix(UD), t.x = N, t.y = A, t.z = z, this;
|
|
}
|
|
makePerspective(M, D, t, e, N, A) {
|
|
A === void 0 && console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");
|
|
const z = this.elements, I = 2 * N / (D - M), i = 2 * N / (t - e), T = (D + M) / (D - M), u = (t + e) / (t - e), g = -(A + N) / (A - N), s = -2 * A * N / (A - N);
|
|
return z[0] = I, z[4] = 0, z[8] = T, z[12] = 0, z[1] = 0, z[5] = i, z[9] = u, z[13] = 0, z[2] = 0, z[6] = 0, z[10] = g, z[14] = s, z[3] = 0, z[7] = 0, z[11] = -1, z[15] = 0, this;
|
|
}
|
|
makeOrthographic(M, D, t, e, N, A) {
|
|
const z = this.elements, I = 1 / (D - M), i = 1 / (t - e), T = 1 / (A - N), u = (D + M) * I, g = (t + e) * i, s = (A + N) * T;
|
|
return z[0] = 2 * I, z[4] = 0, z[8] = 0, z[12] = -u, z[1] = 0, z[5] = 2 * i, z[9] = 0, z[13] = -g, z[2] = 0, z[6] = 0, z[10] = -2 * T, z[14] = -s, z[3] = 0, z[7] = 0, z[11] = 0, z[15] = 1, this;
|
|
}
|
|
equals(M) {
|
|
const D = this.elements, t = M.elements;
|
|
for (let e = 0; e < 16; e++)
|
|
if (D[e] !== t[e])
|
|
return !1;
|
|
return !0;
|
|
}
|
|
fromArray(M, D = 0) {
|
|
for (let t = 0; t < 16; t++)
|
|
this.elements[t] = M[t + D];
|
|
return this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
const t = this.elements;
|
|
return M[D] = t[0], M[D + 1] = t[1], M[D + 2] = t[2], M[D + 3] = t[3], M[D + 4] = t[4], M[D + 5] = t[5], M[D + 6] = t[6], M[D + 7] = t[7], M[D + 8] = t[8], M[D + 9] = t[9], M[D + 10] = t[10], M[D + 11] = t[11], M[D + 12] = t[12], M[D + 13] = t[13], M[D + 14] = t[14], M[D + 15] = t[15], M;
|
|
}
|
|
}
|
|
aM.prototype.isMatrix4 = !0;
|
|
const ft = /* @__PURE__ */ new O(), UD = /* @__PURE__ */ new aM(), gT = /* @__PURE__ */ new O(0, 0, 0), rT = /* @__PURE__ */ new O(1, 1, 1), tt = /* @__PURE__ */ new O(), $e = /* @__PURE__ */ new O(), LD = /* @__PURE__ */ new O(), qA = /* @__PURE__ */ new aM(), XA = /* @__PURE__ */ new aD();
|
|
class ct {
|
|
constructor(M = 0, D = 0, t = 0, e = ct.DefaultOrder) {
|
|
this._x = M, this._y = D, this._z = t, this._order = e;
|
|
}
|
|
get x() {
|
|
return this._x;
|
|
}
|
|
set x(M) {
|
|
this._x = M, this._onChangeCallback();
|
|
}
|
|
get y() {
|
|
return this._y;
|
|
}
|
|
set y(M) {
|
|
this._y = M, this._onChangeCallback();
|
|
}
|
|
get z() {
|
|
return this._z;
|
|
}
|
|
set z(M) {
|
|
this._z = M, this._onChangeCallback();
|
|
}
|
|
get order() {
|
|
return this._order;
|
|
}
|
|
set order(M) {
|
|
this._order = M, this._onChangeCallback();
|
|
}
|
|
set(M, D, t, e = this._order) {
|
|
return this._x = M, this._y = D, this._z = t, this._order = e, this._onChangeCallback(), this;
|
|
}
|
|
clone() {
|
|
return new this.constructor(this._x, this._y, this._z, this._order);
|
|
}
|
|
copy(M) {
|
|
return this._x = M._x, this._y = M._y, this._z = M._z, this._order = M._order, this._onChangeCallback(), this;
|
|
}
|
|
setFromRotationMatrix(M, D = this._order, t = !0) {
|
|
const e = M.elements, N = e[0], A = e[4], z = e[8], I = e[1], i = e[5], T = e[9], u = e[2], g = e[6], s = e[10];
|
|
switch (D) {
|
|
case "XYZ":
|
|
this._y = Math.asin(OD(z, -1, 1)), Math.abs(z) < 0.9999999 ? (this._x = Math.atan2(-T, s), this._z = Math.atan2(-A, N)) : (this._x = Math.atan2(g, i), this._z = 0);
|
|
break;
|
|
case "YXZ":
|
|
this._x = Math.asin(-OD(T, -1, 1)), Math.abs(T) < 0.9999999 ? (this._y = Math.atan2(z, s), this._z = Math.atan2(I, i)) : (this._y = Math.atan2(-u, N), this._z = 0);
|
|
break;
|
|
case "ZXY":
|
|
this._x = Math.asin(OD(g, -1, 1)), Math.abs(g) < 0.9999999 ? (this._y = Math.atan2(-u, s), this._z = Math.atan2(-A, i)) : (this._y = 0, this._z = Math.atan2(I, N));
|
|
break;
|
|
case "ZYX":
|
|
this._y = Math.asin(-OD(u, -1, 1)), Math.abs(u) < 0.9999999 ? (this._x = Math.atan2(g, s), this._z = Math.atan2(I, N)) : (this._x = 0, this._z = Math.atan2(-A, i));
|
|
break;
|
|
case "YZX":
|
|
this._z = Math.asin(OD(I, -1, 1)), Math.abs(I) < 0.9999999 ? (this._x = Math.atan2(-T, i), this._y = Math.atan2(-u, N)) : (this._x = 0, this._y = Math.atan2(z, s));
|
|
break;
|
|
case "XZY":
|
|
this._z = Math.asin(-OD(A, -1, 1)), Math.abs(A) < 0.9999999 ? (this._x = Math.atan2(g, i), this._y = Math.atan2(z, N)) : (this._x = Math.atan2(-T, s), this._y = 0);
|
|
break;
|
|
default:
|
|
console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: " + D);
|
|
}
|
|
return this._order = D, t === !0 && this._onChangeCallback(), this;
|
|
}
|
|
setFromQuaternion(M, D, t) {
|
|
return qA.makeRotationFromQuaternion(M), this.setFromRotationMatrix(qA, D, t);
|
|
}
|
|
setFromVector3(M, D = this._order) {
|
|
return this.set(M.x, M.y, M.z, D);
|
|
}
|
|
reorder(M) {
|
|
return XA.setFromEuler(this), this.setFromQuaternion(XA, M);
|
|
}
|
|
equals(M) {
|
|
return M._x === this._x && M._y === this._y && M._z === this._z && M._order === this._order;
|
|
}
|
|
fromArray(M) {
|
|
return this._x = M[0], this._y = M[1], this._z = M[2], M[3] !== void 0 && (this._order = M[3]), this._onChangeCallback(), this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
return M[D] = this._x, M[D + 1] = this._y, M[D + 2] = this._z, M[D + 3] = this._order, M;
|
|
}
|
|
toVector3(M) {
|
|
return M ? M.set(this._x, this._y, this._z) : new O(this._x, this._y, this._z);
|
|
}
|
|
_onChange(M) {
|
|
return this._onChangeCallback = M, this;
|
|
}
|
|
_onChangeCallback() {
|
|
}
|
|
}
|
|
ct.prototype.isEuler = !0;
|
|
ct.DefaultOrder = "XYZ";
|
|
ct.RotationOrders = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"];
|
|
class Ti {
|
|
constructor() {
|
|
this.mask = 1;
|
|
}
|
|
set(M) {
|
|
this.mask = (1 << M | 0) >>> 0;
|
|
}
|
|
enable(M) {
|
|
this.mask |= 1 << M | 0;
|
|
}
|
|
enableAll() {
|
|
this.mask = -1;
|
|
}
|
|
toggle(M) {
|
|
this.mask ^= 1 << M | 0;
|
|
}
|
|
disable(M) {
|
|
this.mask &= ~(1 << M | 0);
|
|
}
|
|
disableAll() {
|
|
this.mask = 0;
|
|
}
|
|
test(M) {
|
|
return (this.mask & M.mask) !== 0;
|
|
}
|
|
isEnabled(M) {
|
|
return (this.mask & (1 << M | 0)) !== 0;
|
|
}
|
|
}
|
|
let sT = 0;
|
|
const JA = /* @__PURE__ */ new O(), mt = /* @__PURE__ */ new aD(), HD = /* @__PURE__ */ new aM(), MN = /* @__PURE__ */ new O(), oe = /* @__PURE__ */ new O(), cT = /* @__PURE__ */ new O(), jT = /* @__PURE__ */ new aD(), $A = /* @__PURE__ */ new O(1, 0, 0), Mz = /* @__PURE__ */ new O(0, 1, 0), Dz = /* @__PURE__ */ new O(0, 0, 1), yT = { type: "added" }, tz = { type: "removed" };
|
|
class ZM extends dt {
|
|
constructor() {
|
|
super(), Object.defineProperty(this, "id", { value: sT++ }), this.uuid = bD(), this.name = "", this.type = "Object3D", this.parent = null, this.children = [], this.up = ZM.DefaultUp.clone();
|
|
const M = new O(), D = new ct(), t = new aD(), e = new O(1, 1, 1);
|
|
function N() {
|
|
t.setFromEuler(D, !1);
|
|
}
|
|
function A() {
|
|
D.setFromQuaternion(t, void 0, !1);
|
|
}
|
|
D._onChange(N), t._onChange(A), Object.defineProperties(this, {
|
|
position: {
|
|
configurable: !0,
|
|
enumerable: !0,
|
|
value: M
|
|
},
|
|
rotation: {
|
|
configurable: !0,
|
|
enumerable: !0,
|
|
value: D
|
|
},
|
|
quaternion: {
|
|
configurable: !0,
|
|
enumerable: !0,
|
|
value: t
|
|
},
|
|
scale: {
|
|
configurable: !0,
|
|
enumerable: !0,
|
|
value: e
|
|
},
|
|
modelViewMatrix: {
|
|
value: new aM()
|
|
},
|
|
normalMatrix: {
|
|
value: new gD()
|
|
}
|
|
}), this.matrix = new aM(), this.matrixWorld = new aM(), this.matrixAutoUpdate = ZM.DefaultMatrixAutoUpdate, this.matrixWorldNeedsUpdate = !1, this.layers = new Ti(), this.visible = !0, this.castShadow = !1, this.receiveShadow = !1, this.frustumCulled = !0, this.renderOrder = 0, this.animations = [], this.userData = {};
|
|
}
|
|
onBeforeRender() {
|
|
}
|
|
onAfterRender() {
|
|
}
|
|
applyMatrix4(M) {
|
|
this.matrixAutoUpdate && this.updateMatrix(), this.matrix.premultiply(M), this.matrix.decompose(this.position, this.quaternion, this.scale);
|
|
}
|
|
applyQuaternion(M) {
|
|
return this.quaternion.premultiply(M), this;
|
|
}
|
|
setRotationFromAxisAngle(M, D) {
|
|
this.quaternion.setFromAxisAngle(M, D);
|
|
}
|
|
setRotationFromEuler(M) {
|
|
this.quaternion.setFromEuler(M, !0);
|
|
}
|
|
setRotationFromMatrix(M) {
|
|
this.quaternion.setFromRotationMatrix(M);
|
|
}
|
|
setRotationFromQuaternion(M) {
|
|
this.quaternion.copy(M);
|
|
}
|
|
rotateOnAxis(M, D) {
|
|
return mt.setFromAxisAngle(M, D), this.quaternion.multiply(mt), this;
|
|
}
|
|
rotateOnWorldAxis(M, D) {
|
|
return mt.setFromAxisAngle(M, D), this.quaternion.premultiply(mt), this;
|
|
}
|
|
rotateX(M) {
|
|
return this.rotateOnAxis($A, M);
|
|
}
|
|
rotateY(M) {
|
|
return this.rotateOnAxis(Mz, M);
|
|
}
|
|
rotateZ(M) {
|
|
return this.rotateOnAxis(Dz, M);
|
|
}
|
|
translateOnAxis(M, D) {
|
|
return JA.copy(M).applyQuaternion(this.quaternion), this.position.add(JA.multiplyScalar(D)), this;
|
|
}
|
|
translateX(M) {
|
|
return this.translateOnAxis($A, M);
|
|
}
|
|
translateY(M) {
|
|
return this.translateOnAxis(Mz, M);
|
|
}
|
|
translateZ(M) {
|
|
return this.translateOnAxis(Dz, M);
|
|
}
|
|
localToWorld(M) {
|
|
return M.applyMatrix4(this.matrixWorld);
|
|
}
|
|
worldToLocal(M) {
|
|
return M.applyMatrix4(HD.copy(this.matrixWorld).invert());
|
|
}
|
|
lookAt(M, D, t) {
|
|
M.isVector3 ? MN.copy(M) : MN.set(M, D, t);
|
|
const e = this.parent;
|
|
this.updateWorldMatrix(!0, !1), oe.setFromMatrixPosition(this.matrixWorld), this.isCamera || this.isLight ? HD.lookAt(oe, MN, this.up) : HD.lookAt(MN, oe, this.up), this.quaternion.setFromRotationMatrix(HD), e && (HD.extractRotation(e.matrixWorld), mt.setFromRotationMatrix(HD), this.quaternion.premultiply(mt.invert()));
|
|
}
|
|
add(M) {
|
|
if (arguments.length > 1) {
|
|
for (let D = 0; D < arguments.length; D++)
|
|
this.add(arguments[D]);
|
|
return this;
|
|
}
|
|
return M === this ? (console.error("THREE.Object3D.add: object can't be added as a child of itself.", M), this) : (M && M.isObject3D ? (M.parent !== null && M.parent.remove(M), M.parent = this, this.children.push(M), M.dispatchEvent(yT)) : console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", M), this);
|
|
}
|
|
remove(M) {
|
|
if (arguments.length > 1) {
|
|
for (let t = 0; t < arguments.length; t++)
|
|
this.remove(arguments[t]);
|
|
return this;
|
|
}
|
|
const D = this.children.indexOf(M);
|
|
return D !== -1 && (M.parent = null, this.children.splice(D, 1), M.dispatchEvent(tz)), this;
|
|
}
|
|
removeFromParent() {
|
|
const M = this.parent;
|
|
return M !== null && M.remove(this), this;
|
|
}
|
|
clear() {
|
|
for (let M = 0; M < this.children.length; M++) {
|
|
const D = this.children[M];
|
|
D.parent = null, D.dispatchEvent(tz);
|
|
}
|
|
return this.children.length = 0, this;
|
|
}
|
|
attach(M) {
|
|
return this.updateWorldMatrix(!0, !1), HD.copy(this.matrixWorld).invert(), M.parent !== null && (M.parent.updateWorldMatrix(!0, !1), HD.multiply(M.parent.matrixWorld)), M.applyMatrix4(HD), this.add(M), M.updateWorldMatrix(!1, !0), this;
|
|
}
|
|
getObjectById(M) {
|
|
return this.getObjectByProperty("id", M);
|
|
}
|
|
getObjectByName(M) {
|
|
return this.getObjectByProperty("name", M);
|
|
}
|
|
getObjectByProperty(M, D) {
|
|
if (this[M] === D)
|
|
return this;
|
|
for (let t = 0, e = this.children.length; t < e; t++) {
|
|
const A = this.children[t].getObjectByProperty(M, D);
|
|
if (A !== void 0)
|
|
return A;
|
|
}
|
|
}
|
|
getWorldPosition(M) {
|
|
return this.updateWorldMatrix(!0, !1), M.setFromMatrixPosition(this.matrixWorld);
|
|
}
|
|
getWorldQuaternion(M) {
|
|
return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(oe, M, cT), M;
|
|
}
|
|
getWorldScale(M) {
|
|
return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(oe, jT, M), M;
|
|
}
|
|
getWorldDirection(M) {
|
|
this.updateWorldMatrix(!0, !1);
|
|
const D = this.matrixWorld.elements;
|
|
return M.set(D[8], D[9], D[10]).normalize();
|
|
}
|
|
raycast() {
|
|
}
|
|
traverse(M) {
|
|
M(this);
|
|
const D = this.children;
|
|
for (let t = 0, e = D.length; t < e; t++)
|
|
D[t].traverse(M);
|
|
}
|
|
traverseVisible(M) {
|
|
if (this.visible === !1)
|
|
return;
|
|
M(this);
|
|
const D = this.children;
|
|
for (let t = 0, e = D.length; t < e; t++)
|
|
D[t].traverseVisible(M);
|
|
}
|
|
traverseAncestors(M) {
|
|
const D = this.parent;
|
|
D !== null && (M(D), D.traverseAncestors(M));
|
|
}
|
|
updateMatrix() {
|
|
this.matrix.compose(this.position, this.quaternion, this.scale), this.matrixWorldNeedsUpdate = !0;
|
|
}
|
|
updateMatrixWorld(M) {
|
|
this.matrixAutoUpdate && this.updateMatrix(), (this.matrixWorldNeedsUpdate || M) && (this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), this.matrixWorldNeedsUpdate = !1, M = !0);
|
|
const D = this.children;
|
|
for (let t = 0, e = D.length; t < e; t++)
|
|
D[t].updateMatrixWorld(M);
|
|
}
|
|
updateWorldMatrix(M, D) {
|
|
const t = this.parent;
|
|
if (M === !0 && t !== null && t.updateWorldMatrix(!0, !1), this.matrixAutoUpdate && this.updateMatrix(), this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), D === !0) {
|
|
const e = this.children;
|
|
for (let N = 0, A = e.length; N < A; N++)
|
|
e[N].updateWorldMatrix(!1, !0);
|
|
}
|
|
}
|
|
toJSON(M) {
|
|
const D = M === void 0 || typeof M == "string", t = {};
|
|
D && (M = {
|
|
geometries: {},
|
|
materials: {},
|
|
textures: {},
|
|
images: {},
|
|
shapes: {},
|
|
skeletons: {},
|
|
animations: {}
|
|
}, t.metadata = {
|
|
version: 4.5,
|
|
type: "Object",
|
|
generator: "Object3D.toJSON"
|
|
});
|
|
const e = {};
|
|
e.uuid = this.uuid, e.type = this.type, this.name !== "" && (e.name = this.name), this.castShadow === !0 && (e.castShadow = !0), this.receiveShadow === !0 && (e.receiveShadow = !0), this.visible === !1 && (e.visible = !1), this.frustumCulled === !1 && (e.frustumCulled = !1), this.renderOrder !== 0 && (e.renderOrder = this.renderOrder), JSON.stringify(this.userData) !== "{}" && (e.userData = this.userData), e.layers = this.layers.mask, e.matrix = this.matrix.toArray(), this.matrixAutoUpdate === !1 && (e.matrixAutoUpdate = !1), this.isInstancedMesh && (e.type = "InstancedMesh", e.count = this.count, e.instanceMatrix = this.instanceMatrix.toJSON(), this.instanceColor !== null && (e.instanceColor = this.instanceColor.toJSON()));
|
|
function N(z, I) {
|
|
return z[I.uuid] === void 0 && (z[I.uuid] = I.toJSON(M)), I.uuid;
|
|
}
|
|
if (this.isScene)
|
|
this.background && (this.background.isColor ? e.background = this.background.toJSON() : this.background.isTexture && (e.background = this.background.toJSON(M).uuid)), this.environment && this.environment.isTexture && (e.environment = this.environment.toJSON(M).uuid);
|
|
else if (this.isMesh || this.isLine || this.isPoints) {
|
|
e.geometry = N(M.geometries, this.geometry);
|
|
const z = this.geometry.parameters;
|
|
if (z !== void 0 && z.shapes !== void 0) {
|
|
const I = z.shapes;
|
|
if (Array.isArray(I))
|
|
for (let i = 0, T = I.length; i < T; i++) {
|
|
const u = I[i];
|
|
N(M.shapes, u);
|
|
}
|
|
else
|
|
N(M.shapes, I);
|
|
}
|
|
}
|
|
if (this.isSkinnedMesh && (e.bindMode = this.bindMode, e.bindMatrix = this.bindMatrix.toArray(), this.skeleton !== void 0 && (N(M.skeletons, this.skeleton), e.skeleton = this.skeleton.uuid)), this.material !== void 0)
|
|
if (Array.isArray(this.material)) {
|
|
const z = [];
|
|
for (let I = 0, i = this.material.length; I < i; I++)
|
|
z.push(N(M.materials, this.material[I]));
|
|
e.material = z;
|
|
} else
|
|
e.material = N(M.materials, this.material);
|
|
if (this.children.length > 0) {
|
|
e.children = [];
|
|
for (let z = 0; z < this.children.length; z++)
|
|
e.children.push(this.children[z].toJSON(M).object);
|
|
}
|
|
if (this.animations.length > 0) {
|
|
e.animations = [];
|
|
for (let z = 0; z < this.animations.length; z++) {
|
|
const I = this.animations[z];
|
|
e.animations.push(N(M.animations, I));
|
|
}
|
|
}
|
|
if (D) {
|
|
const z = A(M.geometries), I = A(M.materials), i = A(M.textures), T = A(M.images), u = A(M.shapes), g = A(M.skeletons), s = A(M.animations);
|
|
z.length > 0 && (t.geometries = z), I.length > 0 && (t.materials = I), i.length > 0 && (t.textures = i), T.length > 0 && (t.images = T), u.length > 0 && (t.shapes = u), g.length > 0 && (t.skeletons = g), s.length > 0 && (t.animations = s);
|
|
}
|
|
return t.object = e, t;
|
|
function A(z) {
|
|
const I = [];
|
|
for (const i in z) {
|
|
const T = z[i];
|
|
delete T.metadata, I.push(T);
|
|
}
|
|
return I;
|
|
}
|
|
}
|
|
clone(M) {
|
|
return new this.constructor().copy(this, M);
|
|
}
|
|
copy(M, D = !0) {
|
|
if (this.name = M.name, this.up.copy(M.up), this.position.copy(M.position), this.rotation.order = M.rotation.order, this.quaternion.copy(M.quaternion), this.scale.copy(M.scale), this.matrix.copy(M.matrix), this.matrixWorld.copy(M.matrixWorld), this.matrixAutoUpdate = M.matrixAutoUpdate, this.matrixWorldNeedsUpdate = M.matrixWorldNeedsUpdate, this.layers.mask = M.layers.mask, this.visible = M.visible, this.castShadow = M.castShadow, this.receiveShadow = M.receiveShadow, this.frustumCulled = M.frustumCulled, this.renderOrder = M.renderOrder, this.userData = JSON.parse(JSON.stringify(M.userData)), D === !0)
|
|
for (let t = 0; t < M.children.length; t++) {
|
|
const e = M.children[t];
|
|
this.add(e.clone());
|
|
}
|
|
return this;
|
|
}
|
|
}
|
|
ZM.DefaultUp = new O(0, 1, 0);
|
|
ZM.DefaultMatrixAutoUpdate = !0;
|
|
ZM.prototype.isObject3D = !0;
|
|
const QD = /* @__PURE__ */ new O(), GD = /* @__PURE__ */ new O(), un = /* @__PURE__ */ new O(), WD = /* @__PURE__ */ new O(), kt = /* @__PURE__ */ new O(), St = /* @__PURE__ */ new O(), ez = /* @__PURE__ */ new O(), gn = /* @__PURE__ */ new O(), rn = /* @__PURE__ */ new O(), sn = /* @__PURE__ */ new O();
|
|
class DD {
|
|
constructor(M = new O(), D = new O(), t = new O()) {
|
|
this.a = M, this.b = D, this.c = t;
|
|
}
|
|
static getNormal(M, D, t, e) {
|
|
e.subVectors(t, D), QD.subVectors(M, D), e.cross(QD);
|
|
const N = e.lengthSq();
|
|
return N > 0 ? e.multiplyScalar(1 / Math.sqrt(N)) : e.set(0, 0, 0);
|
|
}
|
|
static getBarycoord(M, D, t, e, N) {
|
|
QD.subVectors(e, D), GD.subVectors(t, D), un.subVectors(M, D);
|
|
const A = QD.dot(QD), z = QD.dot(GD), I = QD.dot(un), i = GD.dot(GD), T = GD.dot(un), u = A * i - z * z;
|
|
if (u === 0)
|
|
return N.set(-2, -1, -1);
|
|
const g = 1 / u, s = (i * I - z * T) * g, j = (A * T - z * I) * g;
|
|
return N.set(1 - s - j, j, s);
|
|
}
|
|
static containsPoint(M, D, t, e) {
|
|
return this.getBarycoord(M, D, t, e, WD), WD.x >= 0 && WD.y >= 0 && WD.x + WD.y <= 1;
|
|
}
|
|
static getUV(M, D, t, e, N, A, z, I) {
|
|
return this.getBarycoord(M, D, t, e, WD), I.set(0, 0), I.addScaledVector(N, WD.x), I.addScaledVector(A, WD.y), I.addScaledVector(z, WD.z), I;
|
|
}
|
|
static isFrontFacing(M, D, t, e) {
|
|
return QD.subVectors(t, D), GD.subVectors(M, D), QD.cross(GD).dot(e) < 0;
|
|
}
|
|
set(M, D, t) {
|
|
return this.a.copy(M), this.b.copy(D), this.c.copy(t), this;
|
|
}
|
|
setFromPointsAndIndices(M, D, t, e) {
|
|
return this.a.copy(M[D]), this.b.copy(M[t]), this.c.copy(M[e]), this;
|
|
}
|
|
setFromAttributeAndIndices(M, D, t, e) {
|
|
return this.a.fromBufferAttribute(M, D), this.b.fromBufferAttribute(M, t), this.c.fromBufferAttribute(M, e), this;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
copy(M) {
|
|
return this.a.copy(M.a), this.b.copy(M.b), this.c.copy(M.c), this;
|
|
}
|
|
getArea() {
|
|
return QD.subVectors(this.c, this.b), GD.subVectors(this.a, this.b), QD.cross(GD).length() * 0.5;
|
|
}
|
|
getMidpoint(M) {
|
|
return M.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);
|
|
}
|
|
getNormal(M) {
|
|
return DD.getNormal(this.a, this.b, this.c, M);
|
|
}
|
|
getPlane(M) {
|
|
return M.setFromCoplanarPoints(this.a, this.b, this.c);
|
|
}
|
|
getBarycoord(M, D) {
|
|
return DD.getBarycoord(M, this.a, this.b, this.c, D);
|
|
}
|
|
getUV(M, D, t, e, N) {
|
|
return DD.getUV(M, this.a, this.b, this.c, D, t, e, N);
|
|
}
|
|
containsPoint(M) {
|
|
return DD.containsPoint(M, this.a, this.b, this.c);
|
|
}
|
|
isFrontFacing(M) {
|
|
return DD.isFrontFacing(this.a, this.b, this.c, M);
|
|
}
|
|
intersectsBox(M) {
|
|
return M.intersectsTriangle(this);
|
|
}
|
|
closestPointToPoint(M, D) {
|
|
const t = this.a, e = this.b, N = this.c;
|
|
let A, z;
|
|
kt.subVectors(e, t), St.subVectors(N, t), gn.subVectors(M, t);
|
|
const I = kt.dot(gn), i = St.dot(gn);
|
|
if (I <= 0 && i <= 0)
|
|
return D.copy(t);
|
|
rn.subVectors(M, e);
|
|
const T = kt.dot(rn), u = St.dot(rn);
|
|
if (T >= 0 && u <= T)
|
|
return D.copy(e);
|
|
const g = I * u - T * i;
|
|
if (g <= 0 && I >= 0 && T <= 0)
|
|
return A = I / (I - T), D.copy(t).addScaledVector(kt, A);
|
|
sn.subVectors(M, N);
|
|
const s = kt.dot(sn), j = St.dot(sn);
|
|
if (j >= 0 && s <= j)
|
|
return D.copy(N);
|
|
const y = s * i - I * j;
|
|
if (y <= 0 && i >= 0 && j <= 0)
|
|
return z = i / (i - j), D.copy(t).addScaledVector(St, z);
|
|
const a = T * j - s * u;
|
|
if (a <= 0 && u - T >= 0 && s - j >= 0)
|
|
return ez.subVectors(N, e), z = (u - T) / (u - T + (s - j)), D.copy(e).addScaledVector(ez, z);
|
|
const c = 1 / (a + y + g);
|
|
return A = y * c, z = g * c, D.copy(t).addScaledVector(kt, A).addScaledVector(St, z);
|
|
}
|
|
equals(M) {
|
|
return M.a.equals(this.a) && M.b.equals(this.b) && M.c.equals(this.c);
|
|
}
|
|
}
|
|
let oT = 0;
|
|
class ID extends dt {
|
|
constructor() {
|
|
super(), Object.defineProperty(this, "id", { value: oT++ }), this.uuid = bD(), this.name = "", this.type = "Material", this.fog = !0, this.blending = ve, this.side = Ye, this.vertexColors = !1, this.opacity = 1, this.transparent = !1, this.blendSrc = Ni, this.blendDst = ni, this.blendEquation = Wt, this.blendSrcAlpha = null, this.blendDstAlpha = null, this.blendEquationAlpha = null, this.depthFunc = fn, this.depthTest = !0, this.depthWrite = !0, this.stencilWriteMask = 255, this.stencilFunc = AT, this.stencilRef = 0, this.stencilFuncMask = 255, this.stencilFail = XN, this.stencilZFail = XN, this.stencilZPass = XN, this.stencilWrite = !1, this.clippingPlanes = null, this.clipIntersection = !1, this.clipShadows = !1, this.shadowSide = null, this.colorWrite = !0, this.precision = null, this.polygonOffset = !1, this.polygonOffsetFactor = 0, this.polygonOffsetUnits = 0, this.dithering = !1, this.alphaToCoverage = !1, this.premultipliedAlpha = !1, this.visible = !0, this.toneMapped = !0, this.userData = {}, this.version = 0, this._alphaTest = 0;
|
|
}
|
|
get alphaTest() {
|
|
return this._alphaTest;
|
|
}
|
|
set alphaTest(M) {
|
|
this._alphaTest > 0 != M > 0 && this.version++, this._alphaTest = M;
|
|
}
|
|
onBuild() {
|
|
}
|
|
onBeforeRender() {
|
|
}
|
|
onBeforeCompile() {
|
|
}
|
|
customProgramCacheKey() {
|
|
return this.onBeforeCompile.toString();
|
|
}
|
|
setValues(M) {
|
|
if (M !== void 0)
|
|
for (const D in M) {
|
|
const t = M[D];
|
|
if (t === void 0) {
|
|
console.warn("THREE.Material: '" + D + "' parameter is undefined.");
|
|
continue;
|
|
}
|
|
if (D === "shading") {
|
|
console.warn("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead."), this.flatShading = t === ei;
|
|
continue;
|
|
}
|
|
const e = this[D];
|
|
if (e === void 0) {
|
|
console.warn("THREE." + this.type + ": '" + D + "' is not a property of this material.");
|
|
continue;
|
|
}
|
|
e && e.isColor ? e.set(t) : e && e.isVector3 && t && t.isVector3 ? e.copy(t) : this[D] = t;
|
|
}
|
|
}
|
|
toJSON(M) {
|
|
const D = M === void 0 || typeof M == "string";
|
|
D && (M = {
|
|
textures: {},
|
|
images: {}
|
|
});
|
|
const t = {
|
|
metadata: {
|
|
version: 4.5,
|
|
type: "Material",
|
|
generator: "Material.toJSON"
|
|
}
|
|
};
|
|
t.uuid = this.uuid, t.type = this.type, this.name !== "" && (t.name = this.name), this.color && this.color.isColor && (t.color = this.color.getHex()), this.roughness !== void 0 && (t.roughness = this.roughness), this.metalness !== void 0 && (t.metalness = this.metalness), this.sheen !== void 0 && (t.sheen = this.sheen), this.sheenColor && this.sheenColor.isColor && (t.sheenColor = this.sheenColor.getHex()), this.sheenRoughness !== void 0 && (t.sheenRoughness = this.sheenRoughness), this.emissive && this.emissive.isColor && (t.emissive = this.emissive.getHex()), this.emissiveIntensity && this.emissiveIntensity !== 1 && (t.emissiveIntensity = this.emissiveIntensity), this.specular && this.specular.isColor && (t.specular = this.specular.getHex()), this.specularIntensity !== void 0 && (t.specularIntensity = this.specularIntensity), this.specularColor && this.specularColor.isColor && (t.specularColor = this.specularColor.getHex()), this.shininess !== void 0 && (t.shininess = this.shininess), this.clearcoat !== void 0 && (t.clearcoat = this.clearcoat), this.clearcoatRoughness !== void 0 && (t.clearcoatRoughness = this.clearcoatRoughness), this.clearcoatMap && this.clearcoatMap.isTexture && (t.clearcoatMap = this.clearcoatMap.toJSON(M).uuid), this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture && (t.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(M).uuid), this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (t.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(M).uuid, t.clearcoatNormalScale = this.clearcoatNormalScale.toArray()), this.map && this.map.isTexture && (t.map = this.map.toJSON(M).uuid), this.matcap && this.matcap.isTexture && (t.matcap = this.matcap.toJSON(M).uuid), this.alphaMap && this.alphaMap.isTexture && (t.alphaMap = this.alphaMap.toJSON(M).uuid), this.lightMap && this.lightMap.isTexture && (t.lightMap = this.lightMap.toJSON(M).uuid, t.lightMapIntensity = this.lightMapIntensity), this.aoMap && this.aoMap.isTexture && (t.aoMap = this.aoMap.toJSON(M).uuid, t.aoMapIntensity = this.aoMapIntensity), this.bumpMap && this.bumpMap.isTexture && (t.bumpMap = this.bumpMap.toJSON(M).uuid, t.bumpScale = this.bumpScale), this.normalMap && this.normalMap.isTexture && (t.normalMap = this.normalMap.toJSON(M).uuid, t.normalMapType = this.normalMapType, t.normalScale = this.normalScale.toArray()), this.displacementMap && this.displacementMap.isTexture && (t.displacementMap = this.displacementMap.toJSON(M).uuid, t.displacementScale = this.displacementScale, t.displacementBias = this.displacementBias), this.roughnessMap && this.roughnessMap.isTexture && (t.roughnessMap = this.roughnessMap.toJSON(M).uuid), this.metalnessMap && this.metalnessMap.isTexture && (t.metalnessMap = this.metalnessMap.toJSON(M).uuid), this.emissiveMap && this.emissiveMap.isTexture && (t.emissiveMap = this.emissiveMap.toJSON(M).uuid), this.specularMap && this.specularMap.isTexture && (t.specularMap = this.specularMap.toJSON(M).uuid), this.specularIntensityMap && this.specularIntensityMap.isTexture && (t.specularIntensityMap = this.specularIntensityMap.toJSON(M).uuid), this.specularColorMap && this.specularColorMap.isTexture && (t.specularColorMap = this.specularColorMap.toJSON(M).uuid), this.envMap && this.envMap.isTexture && (t.envMap = this.envMap.toJSON(M).uuid, this.combine !== void 0 && (t.combine = this.combine)), this.envMapIntensity !== void 0 && (t.envMapIntensity = this.envMapIntensity), this.reflectivity !== void 0 && (t.reflectivity = this.reflectivity), this.refractionRatio !== void 0 && (t.refractionRatio = this.refractionRatio), this.gradientMap && this.gradientMap.isTexture && (t.gradientMap = this.gradientMap.toJSON(M).uuid), this.transmission !== void 0 && (t.transmission = this.transmission), this.transmissionMap && this.transmissionMap.isTexture && (t.transmissionMap = this.transmissionMap.toJSON(M).uuid), this.thickness !== void 0 && (t.thickness = this.thickness), this.thicknessMap && this.thicknessMap.isTexture && (t.thicknessMap = this.thicknessMap.toJSON(M).uuid), this.attenuationDistance !== void 0 && (t.attenuationDistance = this.attenuationDistance), this.attenuationColor !== void 0 && (t.attenuationColor = this.attenuationColor.getHex()), this.size !== void 0 && (t.size = this.size), this.shadowSide !== null && (t.shadowSide = this.shadowSide), this.sizeAttenuation !== void 0 && (t.sizeAttenuation = this.sizeAttenuation), this.blending !== ve && (t.blending = this.blending), this.side !== Ye && (t.side = this.side), this.vertexColors && (t.vertexColors = !0), this.opacity < 1 && (t.opacity = this.opacity), this.transparent === !0 && (t.transparent = this.transparent), t.depthFunc = this.depthFunc, t.depthTest = this.depthTest, t.depthWrite = this.depthWrite, t.colorWrite = this.colorWrite, t.stencilWrite = this.stencilWrite, t.stencilWriteMask = this.stencilWriteMask, t.stencilFunc = this.stencilFunc, t.stencilRef = this.stencilRef, t.stencilFuncMask = this.stencilFuncMask, t.stencilFail = this.stencilFail, t.stencilZFail = this.stencilZFail, t.stencilZPass = this.stencilZPass, this.rotation && this.rotation !== 0 && (t.rotation = this.rotation), this.polygonOffset === !0 && (t.polygonOffset = !0), this.polygonOffsetFactor !== 0 && (t.polygonOffsetFactor = this.polygonOffsetFactor), this.polygonOffsetUnits !== 0 && (t.polygonOffsetUnits = this.polygonOffsetUnits), this.linewidth && this.linewidth !== 1 && (t.linewidth = this.linewidth), this.dashSize !== void 0 && (t.dashSize = this.dashSize), this.gapSize !== void 0 && (t.gapSize = this.gapSize), this.scale !== void 0 && (t.scale = this.scale), this.dithering === !0 && (t.dithering = !0), this.alphaTest > 0 && (t.alphaTest = this.alphaTest), this.alphaToCoverage === !0 && (t.alphaToCoverage = this.alphaToCoverage), this.premultipliedAlpha === !0 && (t.premultipliedAlpha = this.premultipliedAlpha), this.wireframe === !0 && (t.wireframe = this.wireframe), this.wireframeLinewidth > 1 && (t.wireframeLinewidth = this.wireframeLinewidth), this.wireframeLinecap !== "round" && (t.wireframeLinecap = this.wireframeLinecap), this.wireframeLinejoin !== "round" && (t.wireframeLinejoin = this.wireframeLinejoin), this.flatShading === !0 && (t.flatShading = this.flatShading), this.visible === !1 && (t.visible = !1), this.toneMapped === !1 && (t.toneMapped = !1), JSON.stringify(this.userData) !== "{}" && (t.userData = this.userData);
|
|
function e(N) {
|
|
const A = [];
|
|
for (const z in N) {
|
|
const I = N[z];
|
|
delete I.metadata, A.push(I);
|
|
}
|
|
return A;
|
|
}
|
|
if (D) {
|
|
const N = e(M.textures), A = e(M.images);
|
|
N.length > 0 && (t.textures = N), A.length > 0 && (t.images = A);
|
|
}
|
|
return t;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
copy(M) {
|
|
this.name = M.name, this.fog = M.fog, this.blending = M.blending, this.side = M.side, this.vertexColors = M.vertexColors, this.opacity = M.opacity, this.transparent = M.transparent, this.blendSrc = M.blendSrc, this.blendDst = M.blendDst, this.blendEquation = M.blendEquation, this.blendSrcAlpha = M.blendSrcAlpha, this.blendDstAlpha = M.blendDstAlpha, this.blendEquationAlpha = M.blendEquationAlpha, this.depthFunc = M.depthFunc, this.depthTest = M.depthTest, this.depthWrite = M.depthWrite, this.stencilWriteMask = M.stencilWriteMask, this.stencilFunc = M.stencilFunc, this.stencilRef = M.stencilRef, this.stencilFuncMask = M.stencilFuncMask, this.stencilFail = M.stencilFail, this.stencilZFail = M.stencilZFail, this.stencilZPass = M.stencilZPass, this.stencilWrite = M.stencilWrite;
|
|
const D = M.clippingPlanes;
|
|
let t = null;
|
|
if (D !== null) {
|
|
const e = D.length;
|
|
t = new Array(e);
|
|
for (let N = 0; N !== e; ++N)
|
|
t[N] = D[N].clone();
|
|
}
|
|
return this.clippingPlanes = t, this.clipIntersection = M.clipIntersection, this.clipShadows = M.clipShadows, this.shadowSide = M.shadowSide, this.colorWrite = M.colorWrite, this.precision = M.precision, this.polygonOffset = M.polygonOffset, this.polygonOffsetFactor = M.polygonOffsetFactor, this.polygonOffsetUnits = M.polygonOffsetUnits, this.dithering = M.dithering, this.alphaTest = M.alphaTest, this.alphaToCoverage = M.alphaToCoverage, this.premultipliedAlpha = M.premultipliedAlpha, this.visible = M.visible, this.toneMapped = M.toneMapped, this.userData = JSON.parse(JSON.stringify(M.userData)), this;
|
|
}
|
|
dispose() {
|
|
this.dispatchEvent({ type: "dispose" });
|
|
}
|
|
set needsUpdate(M) {
|
|
M === !0 && this.version++;
|
|
}
|
|
}
|
|
ID.prototype.isMaterial = !0;
|
|
class $n extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "MeshBasicMaterial", this.color = new cM(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.combine = fN, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.map = M.map, this.lightMap = M.lightMap, this.lightMapIntensity = M.lightMapIntensity, this.aoMap = M.aoMap, this.aoMapIntensity = M.aoMapIntensity, this.specularMap = M.specularMap, this.alphaMap = M.alphaMap, this.envMap = M.envMap, this.combine = M.combine, this.reflectivity = M.reflectivity, this.refractionRatio = M.refractionRatio, this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this.wireframeLinecap = M.wireframeLinecap, this.wireframeLinejoin = M.wireframeLinejoin, this;
|
|
}
|
|
}
|
|
$n.prototype.isMeshBasicMaterial = !0;
|
|
const BM = /* @__PURE__ */ new O(), DN = /* @__PURE__ */ new q();
|
|
class AD {
|
|
constructor(M, D, t) {
|
|
if (Array.isArray(M))
|
|
throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");
|
|
this.name = "", this.array = M, this.itemSize = D, this.count = M !== void 0 ? M.length / D : 0, this.normalized = t === !0, this.usage = Qe, this.updateRange = { offset: 0, count: -1 }, this.version = 0;
|
|
}
|
|
onUploadCallback() {
|
|
}
|
|
set needsUpdate(M) {
|
|
M === !0 && this.version++;
|
|
}
|
|
setUsage(M) {
|
|
return this.usage = M, this;
|
|
}
|
|
copy(M) {
|
|
return this.name = M.name, this.array = new M.array.constructor(M.array), this.itemSize = M.itemSize, this.count = M.count, this.normalized = M.normalized, this.usage = M.usage, this;
|
|
}
|
|
copyAt(M, D, t) {
|
|
M *= this.itemSize, t *= D.itemSize;
|
|
for (let e = 0, N = this.itemSize; e < N; e++)
|
|
this.array[M + e] = D.array[t + e];
|
|
return this;
|
|
}
|
|
copyArray(M) {
|
|
return this.array.set(M), this;
|
|
}
|
|
copyColorsArray(M) {
|
|
const D = this.array;
|
|
let t = 0;
|
|
for (let e = 0, N = M.length; e < N; e++) {
|
|
let A = M[e];
|
|
A === void 0 && (console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined", e), A = new cM()), D[t++] = A.r, D[t++] = A.g, D[t++] = A.b;
|
|
}
|
|
return this;
|
|
}
|
|
copyVector2sArray(M) {
|
|
const D = this.array;
|
|
let t = 0;
|
|
for (let e = 0, N = M.length; e < N; e++) {
|
|
let A = M[e];
|
|
A === void 0 && (console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined", e), A = new q()), D[t++] = A.x, D[t++] = A.y;
|
|
}
|
|
return this;
|
|
}
|
|
copyVector3sArray(M) {
|
|
const D = this.array;
|
|
let t = 0;
|
|
for (let e = 0, N = M.length; e < N; e++) {
|
|
let A = M[e];
|
|
A === void 0 && (console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined", e), A = new O()), D[t++] = A.x, D[t++] = A.y, D[t++] = A.z;
|
|
}
|
|
return this;
|
|
}
|
|
copyVector4sArray(M) {
|
|
const D = this.array;
|
|
let t = 0;
|
|
for (let e = 0, N = M.length; e < N; e++) {
|
|
let A = M[e];
|
|
A === void 0 && (console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined", e), A = new PM()), D[t++] = A.x, D[t++] = A.y, D[t++] = A.z, D[t++] = A.w;
|
|
}
|
|
return this;
|
|
}
|
|
applyMatrix3(M) {
|
|
if (this.itemSize === 2)
|
|
for (let D = 0, t = this.count; D < t; D++)
|
|
DN.fromBufferAttribute(this, D), DN.applyMatrix3(M), this.setXY(D, DN.x, DN.y);
|
|
else if (this.itemSize === 3)
|
|
for (let D = 0, t = this.count; D < t; D++)
|
|
BM.fromBufferAttribute(this, D), BM.applyMatrix3(M), this.setXYZ(D, BM.x, BM.y, BM.z);
|
|
return this;
|
|
}
|
|
applyMatrix4(M) {
|
|
for (let D = 0, t = this.count; D < t; D++)
|
|
BM.x = this.getX(D), BM.y = this.getY(D), BM.z = this.getZ(D), BM.applyMatrix4(M), this.setXYZ(D, BM.x, BM.y, BM.z);
|
|
return this;
|
|
}
|
|
applyNormalMatrix(M) {
|
|
for (let D = 0, t = this.count; D < t; D++)
|
|
BM.x = this.getX(D), BM.y = this.getY(D), BM.z = this.getZ(D), BM.applyNormalMatrix(M), this.setXYZ(D, BM.x, BM.y, BM.z);
|
|
return this;
|
|
}
|
|
transformDirection(M) {
|
|
for (let D = 0, t = this.count; D < t; D++)
|
|
BM.x = this.getX(D), BM.y = this.getY(D), BM.z = this.getZ(D), BM.transformDirection(M), this.setXYZ(D, BM.x, BM.y, BM.z);
|
|
return this;
|
|
}
|
|
set(M, D = 0) {
|
|
return this.array.set(M, D), this;
|
|
}
|
|
getX(M) {
|
|
return this.array[M * this.itemSize];
|
|
}
|
|
setX(M, D) {
|
|
return this.array[M * this.itemSize] = D, this;
|
|
}
|
|
getY(M) {
|
|
return this.array[M * this.itemSize + 1];
|
|
}
|
|
setY(M, D) {
|
|
return this.array[M * this.itemSize + 1] = D, this;
|
|
}
|
|
getZ(M) {
|
|
return this.array[M * this.itemSize + 2];
|
|
}
|
|
setZ(M, D) {
|
|
return this.array[M * this.itemSize + 2] = D, this;
|
|
}
|
|
getW(M) {
|
|
return this.array[M * this.itemSize + 3];
|
|
}
|
|
setW(M, D) {
|
|
return this.array[M * this.itemSize + 3] = D, this;
|
|
}
|
|
setXY(M, D, t) {
|
|
return M *= this.itemSize, this.array[M + 0] = D, this.array[M + 1] = t, this;
|
|
}
|
|
setXYZ(M, D, t, e) {
|
|
return M *= this.itemSize, this.array[M + 0] = D, this.array[M + 1] = t, this.array[M + 2] = e, this;
|
|
}
|
|
setXYZW(M, D, t, e, N) {
|
|
return M *= this.itemSize, this.array[M + 0] = D, this.array[M + 1] = t, this.array[M + 2] = e, this.array[M + 3] = N, this;
|
|
}
|
|
onUpload(M) {
|
|
return this.onUploadCallback = M, this;
|
|
}
|
|
clone() {
|
|
return new this.constructor(this.array, this.itemSize).copy(this);
|
|
}
|
|
toJSON() {
|
|
const M = {
|
|
itemSize: this.itemSize,
|
|
type: this.array.constructor.name,
|
|
array: Array.prototype.slice.call(this.array),
|
|
normalized: this.normalized
|
|
};
|
|
return this.name !== "" && (M.name = this.name), this.usage !== Qe && (M.usage = this.usage), (this.updateRange.offset !== 0 || this.updateRange.count !== -1) && (M.updateRange = this.updateRange), M;
|
|
}
|
|
}
|
|
AD.prototype.isBufferAttribute = !0;
|
|
class ui extends AD {
|
|
constructor(M, D, t) {
|
|
super(new Uint16Array(M), D, t);
|
|
}
|
|
}
|
|
class gi extends AD {
|
|
constructor(M, D, t) {
|
|
super(new Uint32Array(M), D, t);
|
|
}
|
|
}
|
|
class aT extends AD {
|
|
constructor(M, D, t) {
|
|
super(new Uint16Array(M), D, t);
|
|
}
|
|
}
|
|
aT.prototype.isFloat16BufferAttribute = !0;
|
|
class WM extends AD {
|
|
constructor(M, D, t) {
|
|
super(new Float32Array(M), D, t);
|
|
}
|
|
}
|
|
let CT = 0;
|
|
const ED = /* @__PURE__ */ new aM(), cn = /* @__PURE__ */ new ZM(), Zt = /* @__PURE__ */ new O(), wD = /* @__PURE__ */ new pD(), ae = /* @__PURE__ */ new pD(), zD = /* @__PURE__ */ new O();
|
|
class VM extends dt {
|
|
constructor() {
|
|
super(), Object.defineProperty(this, "id", { value: CT++ }), this.uuid = bD(), this.name = "", this.type = "BufferGeometry", this.index = null, this.attributes = {}, this.morphAttributes = {}, this.morphTargetsRelative = !1, this.groups = [], this.boundingBox = null, this.boundingSphere = null, this.drawRange = { start: 0, count: 1 / 0 }, this.userData = {};
|
|
}
|
|
getIndex() {
|
|
return this.index;
|
|
}
|
|
setIndex(M) {
|
|
return Array.isArray(M) ? this.index = new (ii(M) ? gi : ui)(M, 1) : this.index = M, this;
|
|
}
|
|
getAttribute(M) {
|
|
return this.attributes[M];
|
|
}
|
|
setAttribute(M, D) {
|
|
return this.attributes[M] = D, this;
|
|
}
|
|
deleteAttribute(M) {
|
|
return delete this.attributes[M], this;
|
|
}
|
|
hasAttribute(M) {
|
|
return this.attributes[M] !== void 0;
|
|
}
|
|
addGroup(M, D, t = 0) {
|
|
this.groups.push({
|
|
start: M,
|
|
count: D,
|
|
materialIndex: t
|
|
});
|
|
}
|
|
clearGroups() {
|
|
this.groups = [];
|
|
}
|
|
setDrawRange(M, D) {
|
|
this.drawRange.start = M, this.drawRange.count = D;
|
|
}
|
|
applyMatrix4(M) {
|
|
const D = this.attributes.position;
|
|
D !== void 0 && (D.applyMatrix4(M), D.needsUpdate = !0);
|
|
const t = this.attributes.normal;
|
|
if (t !== void 0) {
|
|
const N = new gD().getNormalMatrix(M);
|
|
t.applyNormalMatrix(N), t.needsUpdate = !0;
|
|
}
|
|
const e = this.attributes.tangent;
|
|
return e !== void 0 && (e.transformDirection(M), e.needsUpdate = !0), this.boundingBox !== null && this.computeBoundingBox(), this.boundingSphere !== null && this.computeBoundingSphere(), this;
|
|
}
|
|
applyQuaternion(M) {
|
|
return ED.makeRotationFromQuaternion(M), this.applyMatrix4(ED), this;
|
|
}
|
|
rotateX(M) {
|
|
return ED.makeRotationX(M), this.applyMatrix4(ED), this;
|
|
}
|
|
rotateY(M) {
|
|
return ED.makeRotationY(M), this.applyMatrix4(ED), this;
|
|
}
|
|
rotateZ(M) {
|
|
return ED.makeRotationZ(M), this.applyMatrix4(ED), this;
|
|
}
|
|
translate(M, D, t) {
|
|
return ED.makeTranslation(M, D, t), this.applyMatrix4(ED), this;
|
|
}
|
|
scale(M, D, t) {
|
|
return ED.makeScale(M, D, t), this.applyMatrix4(ED), this;
|
|
}
|
|
lookAt(M) {
|
|
return cn.lookAt(M), cn.updateMatrix(), this.applyMatrix4(cn.matrix), this;
|
|
}
|
|
center() {
|
|
return this.computeBoundingBox(), this.boundingBox.getCenter(Zt).negate(), this.translate(Zt.x, Zt.y, Zt.z), this;
|
|
}
|
|
setFromPoints(M) {
|
|
const D = [];
|
|
for (let t = 0, e = M.length; t < e; t++) {
|
|
const N = M[t];
|
|
D.push(N.x, N.y, N.z || 0);
|
|
}
|
|
return this.setAttribute("position", new WM(D, 3)), this;
|
|
}
|
|
computeBoundingBox() {
|
|
this.boundingBox === null && (this.boundingBox = new pD());
|
|
const M = this.attributes.position, D = this.morphAttributes.position;
|
|
if (M && M.isGLBufferAttribute) {
|
|
console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingBox.set(new O(-1 / 0, -1 / 0, -1 / 0), new O(1 / 0, 1 / 0, 1 / 0));
|
|
return;
|
|
}
|
|
if (M !== void 0) {
|
|
if (this.boundingBox.setFromBufferAttribute(M), D)
|
|
for (let t = 0, e = D.length; t < e; t++) {
|
|
const N = D[t];
|
|
wD.setFromBufferAttribute(N), this.morphTargetsRelative ? (zD.addVectors(this.boundingBox.min, wD.min), this.boundingBox.expandByPoint(zD), zD.addVectors(this.boundingBox.max, wD.max), this.boundingBox.expandByPoint(zD)) : (this.boundingBox.expandByPoint(wD.min), this.boundingBox.expandByPoint(wD.max));
|
|
}
|
|
} else
|
|
this.boundingBox.makeEmpty();
|
|
(isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this);
|
|
}
|
|
computeBoundingSphere() {
|
|
this.boundingSphere === null && (this.boundingSphere = new Ie());
|
|
const M = this.attributes.position, D = this.morphAttributes.position;
|
|
if (M && M.isGLBufferAttribute) {
|
|
console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingSphere.set(new O(), 1 / 0);
|
|
return;
|
|
}
|
|
if (M) {
|
|
const t = this.boundingSphere.center;
|
|
if (wD.setFromBufferAttribute(M), D)
|
|
for (let N = 0, A = D.length; N < A; N++) {
|
|
const z = D[N];
|
|
ae.setFromBufferAttribute(z), this.morphTargetsRelative ? (zD.addVectors(wD.min, ae.min), wD.expandByPoint(zD), zD.addVectors(wD.max, ae.max), wD.expandByPoint(zD)) : (wD.expandByPoint(ae.min), wD.expandByPoint(ae.max));
|
|
}
|
|
wD.getCenter(t);
|
|
let e = 0;
|
|
for (let N = 0, A = M.count; N < A; N++)
|
|
zD.fromBufferAttribute(M, N), e = Math.max(e, t.distanceToSquared(zD));
|
|
if (D)
|
|
for (let N = 0, A = D.length; N < A; N++) {
|
|
const z = D[N], I = this.morphTargetsRelative;
|
|
for (let i = 0, T = z.count; i < T; i++)
|
|
zD.fromBufferAttribute(z, i), I && (Zt.fromBufferAttribute(M, i), zD.add(Zt)), e = Math.max(e, t.distanceToSquared(zD));
|
|
}
|
|
this.boundingSphere.radius = Math.sqrt(e), isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this);
|
|
}
|
|
}
|
|
computeTangents() {
|
|
const M = this.index, D = this.attributes;
|
|
if (M === null || D.position === void 0 || D.normal === void 0 || D.uv === void 0) {
|
|
console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");
|
|
return;
|
|
}
|
|
const t = M.array, e = D.position.array, N = D.normal.array, A = D.uv.array, z = e.length / 3;
|
|
D.tangent === void 0 && this.setAttribute("tangent", new AD(new Float32Array(4 * z), 4));
|
|
const I = D.tangent.array, i = [], T = [];
|
|
for (let G = 0; G < z; G++)
|
|
i[G] = new O(), T[G] = new O();
|
|
const u = new O(), g = new O(), s = new O(), j = new q(), y = new q(), a = new q(), c = new O(), r = new O();
|
|
function l(G, o, h) {
|
|
u.fromArray(e, G * 3), g.fromArray(e, o * 3), s.fromArray(e, h * 3), j.fromArray(A, G * 2), y.fromArray(A, o * 2), a.fromArray(A, h * 2), g.sub(u), s.sub(u), y.sub(j), a.sub(j);
|
|
const Y = 1 / (y.x * a.y - a.x * y.y);
|
|
!isFinite(Y) || (c.copy(g).multiplyScalar(a.y).addScaledVector(s, -y.y).multiplyScalar(Y), r.copy(s).multiplyScalar(y.x).addScaledVector(g, -a.x).multiplyScalar(Y), i[G].add(c), i[o].add(c), i[h].add(c), T[G].add(r), T[o].add(r), T[h].add(r));
|
|
}
|
|
let C = this.groups;
|
|
C.length === 0 && (C = [{
|
|
start: 0,
|
|
count: t.length
|
|
}]);
|
|
for (let G = 0, o = C.length; G < o; ++G) {
|
|
const h = C[G], Y = h.start, k = h.count;
|
|
for (let f = Y, Q = Y + k; f < Q; f += 3)
|
|
l(t[f + 0], t[f + 1], t[f + 2]);
|
|
}
|
|
const E = new O(), d = new O(), p = new O(), H = new O();
|
|
function DM(G) {
|
|
p.fromArray(N, G * 3), H.copy(p);
|
|
const o = i[G];
|
|
E.copy(o), E.sub(p.multiplyScalar(p.dot(o))).normalize(), d.crossVectors(H, o);
|
|
const Y = d.dot(T[G]) < 0 ? -1 : 1;
|
|
I[G * 4] = E.x, I[G * 4 + 1] = E.y, I[G * 4 + 2] = E.z, I[G * 4 + 3] = Y;
|
|
}
|
|
for (let G = 0, o = C.length; G < o; ++G) {
|
|
const h = C[G], Y = h.start, k = h.count;
|
|
for (let f = Y, Q = Y + k; f < Q; f += 3)
|
|
DM(t[f + 0]), DM(t[f + 1]), DM(t[f + 2]);
|
|
}
|
|
}
|
|
computeVertexNormals() {
|
|
const M = this.index, D = this.getAttribute("position");
|
|
if (D !== void 0) {
|
|
let t = this.getAttribute("normal");
|
|
if (t === void 0)
|
|
t = new AD(new Float32Array(D.count * 3), 3), this.setAttribute("normal", t);
|
|
else
|
|
for (let g = 0, s = t.count; g < s; g++)
|
|
t.setXYZ(g, 0, 0, 0);
|
|
const e = new O(), N = new O(), A = new O(), z = new O(), I = new O(), i = new O(), T = new O(), u = new O();
|
|
if (M)
|
|
for (let g = 0, s = M.count; g < s; g += 3) {
|
|
const j = M.getX(g + 0), y = M.getX(g + 1), a = M.getX(g + 2);
|
|
e.fromBufferAttribute(D, j), N.fromBufferAttribute(D, y), A.fromBufferAttribute(D, a), T.subVectors(A, N), u.subVectors(e, N), T.cross(u), z.fromBufferAttribute(t, j), I.fromBufferAttribute(t, y), i.fromBufferAttribute(t, a), z.add(T), I.add(T), i.add(T), t.setXYZ(j, z.x, z.y, z.z), t.setXYZ(y, I.x, I.y, I.z), t.setXYZ(a, i.x, i.y, i.z);
|
|
}
|
|
else
|
|
for (let g = 0, s = D.count; g < s; g += 3)
|
|
e.fromBufferAttribute(D, g + 0), N.fromBufferAttribute(D, g + 1), A.fromBufferAttribute(D, g + 2), T.subVectors(A, N), u.subVectors(e, N), T.cross(u), t.setXYZ(g + 0, T.x, T.y, T.z), t.setXYZ(g + 1, T.x, T.y, T.z), t.setXYZ(g + 2, T.x, T.y, T.z);
|
|
this.normalizeNormals(), t.needsUpdate = !0;
|
|
}
|
|
}
|
|
merge(M, D) {
|
|
if (!(M && M.isBufferGeometry)) {
|
|
console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.", M);
|
|
return;
|
|
}
|
|
D === void 0 && (D = 0, console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));
|
|
const t = this.attributes;
|
|
for (const e in t) {
|
|
if (M.attributes[e] === void 0)
|
|
continue;
|
|
const A = t[e].array, z = M.attributes[e], I = z.array, i = z.itemSize * D, T = Math.min(I.length, A.length - i);
|
|
for (let u = 0, g = i; u < T; u++, g++)
|
|
A[g] = I[u];
|
|
}
|
|
return this;
|
|
}
|
|
normalizeNormals() {
|
|
const M = this.attributes.normal;
|
|
for (let D = 0, t = M.count; D < t; D++)
|
|
zD.fromBufferAttribute(M, D), zD.normalize(), M.setXYZ(D, zD.x, zD.y, zD.z);
|
|
}
|
|
toNonIndexed() {
|
|
function M(z, I) {
|
|
const i = z.array, T = z.itemSize, u = z.normalized, g = new i.constructor(I.length * T);
|
|
let s = 0, j = 0;
|
|
for (let y = 0, a = I.length; y < a; y++) {
|
|
z.isInterleavedBufferAttribute ? s = I[y] * z.data.stride + z.offset : s = I[y] * T;
|
|
for (let c = 0; c < T; c++)
|
|
g[j++] = i[s++];
|
|
}
|
|
return new AD(g, T, u);
|
|
}
|
|
if (this.index === null)
|
|
return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."), this;
|
|
const D = new VM(), t = this.index.array, e = this.attributes;
|
|
for (const z in e) {
|
|
const I = e[z], i = M(I, t);
|
|
D.setAttribute(z, i);
|
|
}
|
|
const N = this.morphAttributes;
|
|
for (const z in N) {
|
|
const I = [], i = N[z];
|
|
for (let T = 0, u = i.length; T < u; T++) {
|
|
const g = i[T], s = M(g, t);
|
|
I.push(s);
|
|
}
|
|
D.morphAttributes[z] = I;
|
|
}
|
|
D.morphTargetsRelative = this.morphTargetsRelative;
|
|
const A = this.groups;
|
|
for (let z = 0, I = A.length; z < I; z++) {
|
|
const i = A[z];
|
|
D.addGroup(i.start, i.count, i.materialIndex);
|
|
}
|
|
return D;
|
|
}
|
|
toJSON() {
|
|
const M = {
|
|
metadata: {
|
|
version: 4.5,
|
|
type: "BufferGeometry",
|
|
generator: "BufferGeometry.toJSON"
|
|
}
|
|
};
|
|
if (M.uuid = this.uuid, M.type = this.type, this.name !== "" && (M.name = this.name), Object.keys(this.userData).length > 0 && (M.userData = this.userData), this.parameters !== void 0) {
|
|
const I = this.parameters;
|
|
for (const i in I)
|
|
I[i] !== void 0 && (M[i] = I[i]);
|
|
return M;
|
|
}
|
|
M.data = { attributes: {} };
|
|
const D = this.index;
|
|
D !== null && (M.data.index = {
|
|
type: D.array.constructor.name,
|
|
array: Array.prototype.slice.call(D.array)
|
|
});
|
|
const t = this.attributes;
|
|
for (const I in t) {
|
|
const i = t[I];
|
|
M.data.attributes[I] = i.toJSON(M.data);
|
|
}
|
|
const e = {};
|
|
let N = !1;
|
|
for (const I in this.morphAttributes) {
|
|
const i = this.morphAttributes[I], T = [];
|
|
for (let u = 0, g = i.length; u < g; u++) {
|
|
const s = i[u];
|
|
T.push(s.toJSON(M.data));
|
|
}
|
|
T.length > 0 && (e[I] = T, N = !0);
|
|
}
|
|
N && (M.data.morphAttributes = e, M.data.morphTargetsRelative = this.morphTargetsRelative);
|
|
const A = this.groups;
|
|
A.length > 0 && (M.data.groups = JSON.parse(JSON.stringify(A)));
|
|
const z = this.boundingSphere;
|
|
return z !== null && (M.data.boundingSphere = {
|
|
center: z.center.toArray(),
|
|
radius: z.radius
|
|
}), M;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
copy(M) {
|
|
this.index = null, this.attributes = {}, this.morphAttributes = {}, this.groups = [], this.boundingBox = null, this.boundingSphere = null;
|
|
const D = {};
|
|
this.name = M.name;
|
|
const t = M.index;
|
|
t !== null && this.setIndex(t.clone(D));
|
|
const e = M.attributes;
|
|
for (const i in e) {
|
|
const T = e[i];
|
|
this.setAttribute(i, T.clone(D));
|
|
}
|
|
const N = M.morphAttributes;
|
|
for (const i in N) {
|
|
const T = [], u = N[i];
|
|
for (let g = 0, s = u.length; g < s; g++)
|
|
T.push(u[g].clone(D));
|
|
this.morphAttributes[i] = T;
|
|
}
|
|
this.morphTargetsRelative = M.morphTargetsRelative;
|
|
const A = M.groups;
|
|
for (let i = 0, T = A.length; i < T; i++) {
|
|
const u = A[i];
|
|
this.addGroup(u.start, u.count, u.materialIndex);
|
|
}
|
|
const z = M.boundingBox;
|
|
z !== null && (this.boundingBox = z.clone());
|
|
const I = M.boundingSphere;
|
|
return I !== null && (this.boundingSphere = I.clone()), this.drawRange.start = M.drawRange.start, this.drawRange.count = M.drawRange.count, this.userData = M.userData, M.parameters !== void 0 && (this.parameters = Object.assign({}, M.parameters)), this;
|
|
}
|
|
dispose() {
|
|
this.dispatchEvent({ type: "dispose" });
|
|
}
|
|
}
|
|
VM.prototype.isBufferGeometry = !0;
|
|
const Nz = /* @__PURE__ */ new aM(), _t = /* @__PURE__ */ new Te(), jn = /* @__PURE__ */ new Ie(), et = /* @__PURE__ */ new O(), Nt = /* @__PURE__ */ new O(), nt = /* @__PURE__ */ new O(), yn = /* @__PURE__ */ new O(), on = /* @__PURE__ */ new O(), an = /* @__PURE__ */ new O(), tN = /* @__PURE__ */ new O(), eN = /* @__PURE__ */ new O(), NN = /* @__PURE__ */ new O(), nN = /* @__PURE__ */ new q(), AN = /* @__PURE__ */ new q(), zN = /* @__PURE__ */ new q(), Cn = /* @__PURE__ */ new O(), iN = /* @__PURE__ */ new O();
|
|
class nD extends ZM {
|
|
constructor(M = new VM(), D = new $n()) {
|
|
super(), this.type = "Mesh", this.geometry = M, this.material = D, this.updateMorphTargets();
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), M.morphTargetInfluences !== void 0 && (this.morphTargetInfluences = M.morphTargetInfluences.slice()), M.morphTargetDictionary !== void 0 && (this.morphTargetDictionary = Object.assign({}, M.morphTargetDictionary)), this.material = M.material, this.geometry = M.geometry, this;
|
|
}
|
|
updateMorphTargets() {
|
|
const M = this.geometry;
|
|
if (M.isBufferGeometry) {
|
|
const D = M.morphAttributes, t = Object.keys(D);
|
|
if (t.length > 0) {
|
|
const e = D[t[0]];
|
|
if (e !== void 0) {
|
|
this.morphTargetInfluences = [], this.morphTargetDictionary = {};
|
|
for (let N = 0, A = e.length; N < A; N++) {
|
|
const z = e[N].name || String(N);
|
|
this.morphTargetInfluences.push(0), this.morphTargetDictionary[z] = N;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
const D = M.morphTargets;
|
|
D !== void 0 && D.length > 0 && console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
}
|
|
}
|
|
raycast(M, D) {
|
|
const t = this.geometry, e = this.material, N = this.matrixWorld;
|
|
if (e === void 0 || (t.boundingSphere === null && t.computeBoundingSphere(), jn.copy(t.boundingSphere), jn.applyMatrix4(N), M.ray.intersectsSphere(jn) === !1) || (Nz.copy(N).invert(), _t.copy(M.ray).applyMatrix4(Nz), t.boundingBox !== null && _t.intersectsBox(t.boundingBox) === !1))
|
|
return;
|
|
let A;
|
|
if (t.isBufferGeometry) {
|
|
const z = t.index, I = t.attributes.position, i = t.morphAttributes.position, T = t.morphTargetsRelative, u = t.attributes.uv, g = t.attributes.uv2, s = t.groups, j = t.drawRange;
|
|
if (z !== null)
|
|
if (Array.isArray(e))
|
|
for (let y = 0, a = s.length; y < a; y++) {
|
|
const c = s[y], r = e[c.materialIndex], l = Math.max(c.start, j.start), C = Math.min(z.count, Math.min(c.start + c.count, j.start + j.count));
|
|
for (let E = l, d = C; E < d; E += 3) {
|
|
const p = z.getX(E), H = z.getX(E + 1), DM = z.getX(E + 2);
|
|
A = IN(this, r, M, _t, I, i, T, u, g, p, H, DM), A && (A.faceIndex = Math.floor(E / 3), A.face.materialIndex = c.materialIndex, D.push(A));
|
|
}
|
|
}
|
|
else {
|
|
const y = Math.max(0, j.start), a = Math.min(z.count, j.start + j.count);
|
|
for (let c = y, r = a; c < r; c += 3) {
|
|
const l = z.getX(c), C = z.getX(c + 1), E = z.getX(c + 2);
|
|
A = IN(this, e, M, _t, I, i, T, u, g, l, C, E), A && (A.faceIndex = Math.floor(c / 3), D.push(A));
|
|
}
|
|
}
|
|
else if (I !== void 0)
|
|
if (Array.isArray(e))
|
|
for (let y = 0, a = s.length; y < a; y++) {
|
|
const c = s[y], r = e[c.materialIndex], l = Math.max(c.start, j.start), C = Math.min(I.count, Math.min(c.start + c.count, j.start + j.count));
|
|
for (let E = l, d = C; E < d; E += 3) {
|
|
const p = E, H = E + 1, DM = E + 2;
|
|
A = IN(this, r, M, _t, I, i, T, u, g, p, H, DM), A && (A.faceIndex = Math.floor(E / 3), A.face.materialIndex = c.materialIndex, D.push(A));
|
|
}
|
|
}
|
|
else {
|
|
const y = Math.max(0, j.start), a = Math.min(I.count, j.start + j.count);
|
|
for (let c = y, r = a; c < r; c += 3) {
|
|
const l = c, C = c + 1, E = c + 2;
|
|
A = IN(this, e, M, _t, I, i, T, u, g, l, C, E), A && (A.faceIndex = Math.floor(c / 3), D.push(A));
|
|
}
|
|
}
|
|
} else
|
|
t.isGeometry && console.error("THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
}
|
|
}
|
|
nD.prototype.isMesh = !0;
|
|
function LT(n, M, D, t, e, N, A, z) {
|
|
let I;
|
|
if (M.side === eD ? I = t.intersectTriangle(A, N, e, !0, z) : I = t.intersectTriangle(e, N, A, M.side !== Ne, z), I === null)
|
|
return null;
|
|
iN.copy(z), iN.applyMatrix4(n.matrixWorld);
|
|
const i = D.ray.origin.distanceTo(iN);
|
|
return i < D.near || i > D.far ? null : {
|
|
distance: i,
|
|
point: iN.clone(),
|
|
object: n
|
|
};
|
|
}
|
|
function IN(n, M, D, t, e, N, A, z, I, i, T, u) {
|
|
et.fromBufferAttribute(e, i), Nt.fromBufferAttribute(e, T), nt.fromBufferAttribute(e, u);
|
|
const g = n.morphTargetInfluences;
|
|
if (N && g) {
|
|
tN.set(0, 0, 0), eN.set(0, 0, 0), NN.set(0, 0, 0);
|
|
for (let j = 0, y = N.length; j < y; j++) {
|
|
const a = g[j], c = N[j];
|
|
a !== 0 && (yn.fromBufferAttribute(c, i), on.fromBufferAttribute(c, T), an.fromBufferAttribute(c, u), A ? (tN.addScaledVector(yn, a), eN.addScaledVector(on, a), NN.addScaledVector(an, a)) : (tN.addScaledVector(yn.sub(et), a), eN.addScaledVector(on.sub(Nt), a), NN.addScaledVector(an.sub(nt), a)));
|
|
}
|
|
et.add(tN), Nt.add(eN), nt.add(NN);
|
|
}
|
|
n.isSkinnedMesh && (n.boneTransform(i, et), n.boneTransform(T, Nt), n.boneTransform(u, nt));
|
|
const s = LT(n, M, D, t, et, Nt, nt, Cn);
|
|
if (s) {
|
|
z && (nN.fromBufferAttribute(z, i), AN.fromBufferAttribute(z, T), zN.fromBufferAttribute(z, u), s.uv = DD.getUV(Cn, et, Nt, nt, nN, AN, zN, new q())), I && (nN.fromBufferAttribute(I, i), AN.fromBufferAttribute(I, T), zN.fromBufferAttribute(I, u), s.uv2 = DD.getUV(Cn, et, Nt, nt, nN, AN, zN, new q()));
|
|
const j = {
|
|
a: i,
|
|
b: T,
|
|
c: u,
|
|
normal: new O(),
|
|
materialIndex: 0
|
|
};
|
|
DD.getNormal(et, Nt, nt, j.normal), s.face = j;
|
|
}
|
|
return s;
|
|
}
|
|
class Re extends VM {
|
|
constructor(M = 1, D = 1, t = 1, e = 1, N = 1, A = 1) {
|
|
super(), this.type = "BoxGeometry", this.parameters = {
|
|
width: M,
|
|
height: D,
|
|
depth: t,
|
|
widthSegments: e,
|
|
heightSegments: N,
|
|
depthSegments: A
|
|
};
|
|
const z = this;
|
|
e = Math.floor(e), N = Math.floor(N), A = Math.floor(A);
|
|
const I = [], i = [], T = [], u = [];
|
|
let g = 0, s = 0;
|
|
j("z", "y", "x", -1, -1, t, D, M, A, N, 0), j("z", "y", "x", 1, -1, t, D, -M, A, N, 1), j("x", "z", "y", 1, 1, M, t, D, e, A, 2), j("x", "z", "y", 1, -1, M, t, -D, e, A, 3), j("x", "y", "z", 1, -1, M, D, t, e, N, 4), j("x", "y", "z", -1, -1, M, D, -t, e, N, 5), this.setIndex(I), this.setAttribute("position", new WM(i, 3)), this.setAttribute("normal", new WM(T, 3)), this.setAttribute("uv", new WM(u, 2));
|
|
function j(y, a, c, r, l, C, E, d, p, H, DM) {
|
|
const G = C / p, o = E / H, h = C / 2, Y = E / 2, k = d / 2, f = p + 1, Q = H + 1;
|
|
let b = 0, W = 0;
|
|
const IM = new O();
|
|
for (let Z = 0; Z < Q; Z++) {
|
|
const V = Z * o - Y;
|
|
for (let eM = 0; eM < f; eM++) {
|
|
const uM = eM * G - h;
|
|
IM[y] = uM * r, IM[a] = V * l, IM[c] = k, i.push(IM.x, IM.y, IM.z), IM[y] = 0, IM[a] = 0, IM[c] = d > 0 ? 1 : -1, T.push(IM.x, IM.y, IM.z), u.push(eM / p), u.push(1 - Z / H), b += 1;
|
|
}
|
|
}
|
|
for (let Z = 0; Z < H; Z++)
|
|
for (let V = 0; V < p; V++) {
|
|
const eM = g + V + f * Z, uM = g + V + f * (Z + 1), jM = g + (V + 1) + f * (Z + 1), _ = g + (V + 1) + f * Z;
|
|
I.push(eM, uM, _), I.push(uM, jM, _), W += 6;
|
|
}
|
|
z.addGroup(s, W, DM), s += W, g += b;
|
|
}
|
|
}
|
|
static fromJSON(M) {
|
|
return new Re(M.width, M.height, M.depth, M.widthSegments, M.heightSegments, M.depthSegments);
|
|
}
|
|
}
|
|
function Ae(n) {
|
|
const M = {};
|
|
for (const D in n) {
|
|
M[D] = {};
|
|
for (const t in n[D]) {
|
|
const e = n[D][t];
|
|
e && (e.isColor || e.isMatrix3 || e.isMatrix4 || e.isVector2 || e.isVector3 || e.isVector4 || e.isTexture || e.isQuaternion) ? M[D][t] = e.clone() : Array.isArray(e) ? M[D][t] = e.slice() : M[D][t] = e;
|
|
}
|
|
}
|
|
return M;
|
|
}
|
|
function sD(n) {
|
|
const M = {};
|
|
for (let D = 0; D < n.length; D++) {
|
|
const t = Ae(n[D]);
|
|
for (const e in t)
|
|
M[e] = t[e];
|
|
}
|
|
return M;
|
|
}
|
|
const wT = { clone: Ae, merge: sD };
|
|
var OT = `void main() {
|
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
}`, xT = `void main() {
|
|
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
|
|
}`;
|
|
class lt extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "ShaderMaterial", this.defines = {}, this.uniforms = {}, this.vertexShader = OT, this.fragmentShader = xT, this.linewidth = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.lights = !1, this.clipping = !1, this.extensions = {
|
|
derivatives: !1,
|
|
fragDepth: !1,
|
|
drawBuffers: !1,
|
|
shaderTextureLOD: !1
|
|
}, this.defaultAttributeValues = {
|
|
color: [1, 1, 1],
|
|
uv: [0, 0],
|
|
uv2: [0, 0]
|
|
}, this.index0AttributeName = void 0, this.uniformsNeedUpdate = !1, this.glslVersion = null, M !== void 0 && (M.attributes !== void 0 && console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."), this.setValues(M));
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.fragmentShader = M.fragmentShader, this.vertexShader = M.vertexShader, this.uniforms = Ae(M.uniforms), this.defines = Object.assign({}, M.defines), this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this.lights = M.lights, this.clipping = M.clipping, this.extensions = Object.assign({}, M.extensions), this.glslVersion = M.glslVersion, this;
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
D.glslVersion = this.glslVersion, D.uniforms = {};
|
|
for (const e in this.uniforms) {
|
|
const A = this.uniforms[e].value;
|
|
A && A.isTexture ? D.uniforms[e] = {
|
|
type: "t",
|
|
value: A.toJSON(M).uuid
|
|
} : A && A.isColor ? D.uniforms[e] = {
|
|
type: "c",
|
|
value: A.getHex()
|
|
} : A && A.isVector2 ? D.uniforms[e] = {
|
|
type: "v2",
|
|
value: A.toArray()
|
|
} : A && A.isVector3 ? D.uniforms[e] = {
|
|
type: "v3",
|
|
value: A.toArray()
|
|
} : A && A.isVector4 ? D.uniforms[e] = {
|
|
type: "v4",
|
|
value: A.toArray()
|
|
} : A && A.isMatrix3 ? D.uniforms[e] = {
|
|
type: "m3",
|
|
value: A.toArray()
|
|
} : A && A.isMatrix4 ? D.uniforms[e] = {
|
|
type: "m4",
|
|
value: A.toArray()
|
|
} : D.uniforms[e] = {
|
|
value: A
|
|
};
|
|
}
|
|
Object.keys(this.defines).length > 0 && (D.defines = this.defines), D.vertexShader = this.vertexShader, D.fragmentShader = this.fragmentShader;
|
|
const t = {};
|
|
for (const e in this.extensions)
|
|
this.extensions[e] === !0 && (t[e] = !0);
|
|
return Object.keys(t).length > 0 && (D.extensions = t), D;
|
|
}
|
|
}
|
|
lt.prototype.isShaderMaterial = !0;
|
|
class MA extends ZM {
|
|
constructor() {
|
|
super(), this.type = "Camera", this.matrixWorldInverse = new aM(), this.projectionMatrix = new aM(), this.projectionMatrixInverse = new aM();
|
|
}
|
|
copy(M, D) {
|
|
return super.copy(M, D), this.matrixWorldInverse.copy(M.matrixWorldInverse), this.projectionMatrix.copy(M.projectionMatrix), this.projectionMatrixInverse.copy(M.projectionMatrixInverse), this;
|
|
}
|
|
getWorldDirection(M) {
|
|
this.updateWorldMatrix(!0, !1);
|
|
const D = this.matrixWorld.elements;
|
|
return M.set(-D[8], -D[9], -D[10]).normalize();
|
|
}
|
|
updateMatrixWorld(M) {
|
|
super.updateMatrixWorld(M), this.matrixWorldInverse.copy(this.matrixWorld).invert();
|
|
}
|
|
updateWorldMatrix(M, D) {
|
|
super.updateWorldMatrix(M, D), this.matrixWorldInverse.copy(this.matrixWorld).invert();
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
}
|
|
MA.prototype.isCamera = !0;
|
|
class jD extends MA {
|
|
constructor(M = 50, D = 1, t = 0.1, e = 2e3) {
|
|
super(), this.type = "PerspectiveCamera", this.fov = M, this.zoom = 1, this.near = t, this.far = e, this.focus = 10, this.aspect = D, this.view = null, this.filmGauge = 35, this.filmOffset = 0, this.updateProjectionMatrix();
|
|
}
|
|
copy(M, D) {
|
|
return super.copy(M, D), this.fov = M.fov, this.zoom = M.zoom, this.near = M.near, this.far = M.far, this.focus = M.focus, this.aspect = M.aspect, this.view = M.view === null ? null : Object.assign({}, M.view), this.filmGauge = M.filmGauge, this.filmOffset = M.filmOffset, this;
|
|
}
|
|
setFocalLength(M) {
|
|
const D = 0.5 * this.getFilmHeight() / M;
|
|
this.fov = bn * 2 * Math.atan(D), this.updateProjectionMatrix();
|
|
}
|
|
getFocalLength() {
|
|
const M = Math.tan(JN * 0.5 * this.fov);
|
|
return 0.5 * this.getFilmHeight() / M;
|
|
}
|
|
getEffectiveFOV() {
|
|
return bn * 2 * Math.atan(Math.tan(JN * 0.5 * this.fov) / this.zoom);
|
|
}
|
|
getFilmWidth() {
|
|
return this.filmGauge * Math.min(this.aspect, 1);
|
|
}
|
|
getFilmHeight() {
|
|
return this.filmGauge / Math.max(this.aspect, 1);
|
|
}
|
|
setViewOffset(M, D, t, e, N, A) {
|
|
this.aspect = M / D, this.view === null && (this.view = {
|
|
enabled: !0,
|
|
fullWidth: 1,
|
|
fullHeight: 1,
|
|
offsetX: 0,
|
|
offsetY: 0,
|
|
width: 1,
|
|
height: 1
|
|
}), this.view.enabled = !0, this.view.fullWidth = M, this.view.fullHeight = D, this.view.offsetX = t, this.view.offsetY = e, this.view.width = N, this.view.height = A, this.updateProjectionMatrix();
|
|
}
|
|
clearViewOffset() {
|
|
this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix();
|
|
}
|
|
updateProjectionMatrix() {
|
|
const M = this.near;
|
|
let D = M * Math.tan(JN * 0.5 * this.fov) / this.zoom, t = 2 * D, e = this.aspect * t, N = -0.5 * e;
|
|
const A = this.view;
|
|
if (this.view !== null && this.view.enabled) {
|
|
const I = A.fullWidth, i = A.fullHeight;
|
|
N += A.offsetX * e / I, D -= A.offsetY * t / i, e *= A.width / I, t *= A.height / i;
|
|
}
|
|
const z = this.filmOffset;
|
|
z !== 0 && (N += M * z / this.getFilmWidth()), this.projectionMatrix.makePerspective(N, N + e, D, D - t, M, this.far), this.projectionMatrixInverse.copy(this.projectionMatrix).invert();
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
return D.object.fov = this.fov, D.object.zoom = this.zoom, D.object.near = this.near, D.object.far = this.far, D.object.focus = this.focus, D.object.aspect = this.aspect, this.view !== null && (D.object.view = Object.assign({}, this.view)), D.object.filmGauge = this.filmGauge, D.object.filmOffset = this.filmOffset, D;
|
|
}
|
|
}
|
|
jD.prototype.isPerspectiveCamera = !0;
|
|
const bt = 90, Kt = 1;
|
|
class DA extends ZM {
|
|
constructor(M, D, t) {
|
|
if (super(), this.type = "CubeCamera", t.isWebGLCubeRenderTarget !== !0) {
|
|
console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");
|
|
return;
|
|
}
|
|
this.renderTarget = t;
|
|
const e = new jD(bt, Kt, M, D);
|
|
e.layers = this.layers, e.up.set(0, -1, 0), e.lookAt(new O(1, 0, 0)), this.add(e);
|
|
const N = new jD(bt, Kt, M, D);
|
|
N.layers = this.layers, N.up.set(0, -1, 0), N.lookAt(new O(-1, 0, 0)), this.add(N);
|
|
const A = new jD(bt, Kt, M, D);
|
|
A.layers = this.layers, A.up.set(0, 0, 1), A.lookAt(new O(0, 1, 0)), this.add(A);
|
|
const z = new jD(bt, Kt, M, D);
|
|
z.layers = this.layers, z.up.set(0, 0, -1), z.lookAt(new O(0, -1, 0)), this.add(z);
|
|
const I = new jD(bt, Kt, M, D);
|
|
I.layers = this.layers, I.up.set(0, -1, 0), I.lookAt(new O(0, 0, 1)), this.add(I);
|
|
const i = new jD(bt, Kt, M, D);
|
|
i.layers = this.layers, i.up.set(0, -1, 0), i.lookAt(new O(0, 0, -1)), this.add(i);
|
|
}
|
|
update(M, D) {
|
|
this.parent === null && this.updateMatrixWorld();
|
|
const t = this.renderTarget, [e, N, A, z, I, i] = this.children, T = M.xr.enabled, u = M.getRenderTarget();
|
|
M.xr.enabled = !1;
|
|
const g = t.texture.generateMipmaps;
|
|
t.texture.generateMipmaps = !1, M.setRenderTarget(t, 0), M.render(D, e), M.setRenderTarget(t, 1), M.render(D, N), M.setRenderTarget(t, 2), M.render(D, A), M.setRenderTarget(t, 3), M.render(D, z), M.setRenderTarget(t, 4), M.render(D, I), t.texture.generateMipmaps = g, M.setRenderTarget(t, 5), M.render(D, i), M.setRenderTarget(u), M.xr.enabled = T, t.texture.needsPMREMUpdate = !0;
|
|
}
|
|
}
|
|
class SN extends iD {
|
|
constructor(M, D, t, e, N, A, z, I, i, T) {
|
|
M = M !== void 0 ? M : [], D = D !== void 0 ? D : be, super(M, D, t, e, N, A, z, I, i, T), this.flipY = !1;
|
|
}
|
|
get images() {
|
|
return this.image;
|
|
}
|
|
set images(M) {
|
|
this.image = M;
|
|
}
|
|
}
|
|
SN.prototype.isCubeTexture = !0;
|
|
class ri extends dD {
|
|
constructor(M, D, t) {
|
|
Number.isInteger(D) && (console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"), D = t), super(M, M, D), D = D || {}, this.texture = new SN(void 0, D.mapping, D.wrapS, D.wrapT, D.magFilter, D.minFilter, D.format, D.type, D.anisotropy, D.encoding), this.texture.isRenderTargetTexture = !0, this.texture.generateMipmaps = D.generateMipmaps !== void 0 ? D.generateMipmaps : !1, this.texture.minFilter = D.minFilter !== void 0 ? D.minFilter : uD;
|
|
}
|
|
fromEquirectangularTexture(M, D) {
|
|
this.texture.type = D.type, this.texture.format = yD, this.texture.encoding = D.encoding, this.texture.generateMipmaps = D.generateMipmaps, this.texture.minFilter = D.minFilter, this.texture.magFilter = D.magFilter;
|
|
const t = {
|
|
uniforms: {
|
|
tEquirect: { value: null }
|
|
},
|
|
vertexShader: `
|
|
|
|
varying vec3 vWorldDirection;
|
|
|
|
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
|
|
|
|
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
|
|
|
|
}
|
|
|
|
void main() {
|
|
|
|
vWorldDirection = transformDirection( position, modelMatrix );
|
|
|
|
#include <begin_vertex>
|
|
#include <project_vertex>
|
|
|
|
}
|
|
`,
|
|
fragmentShader: `
|
|
|
|
uniform sampler2D tEquirect;
|
|
|
|
varying vec3 vWorldDirection;
|
|
|
|
#include <common>
|
|
|
|
void main() {
|
|
|
|
vec3 direction = normalize( vWorldDirection );
|
|
|
|
vec2 sampleUV = equirectUv( direction );
|
|
|
|
gl_FragColor = texture2D( tEquirect, sampleUV );
|
|
|
|
}
|
|
`
|
|
}, e = new Re(5, 5, 5), N = new lt({
|
|
name: "CubemapFromEquirect",
|
|
uniforms: Ae(t.uniforms),
|
|
vertexShader: t.vertexShader,
|
|
fragmentShader: t.fragmentShader,
|
|
side: eD,
|
|
blending: zt
|
|
});
|
|
N.uniforms.tEquirect.value = D;
|
|
const A = new nD(e, N), z = D.minFilter;
|
|
return D.minFilter === kN && (D.minFilter = uD), new DA(1, 10, this).update(M, A), D.minFilter = z, A.geometry.dispose(), A.material.dispose(), this;
|
|
}
|
|
clear(M, D, t, e) {
|
|
const N = M.getRenderTarget();
|
|
for (let A = 0; A < 6; A++)
|
|
M.setRenderTarget(this, A), M.clear(D, t, e);
|
|
M.setRenderTarget(N);
|
|
}
|
|
}
|
|
ri.prototype.isWebGLCubeRenderTarget = !0;
|
|
const Ln = /* @__PURE__ */ new O(), ET = /* @__PURE__ */ new O(), lT = /* @__PURE__ */ new gD();
|
|
class XD {
|
|
constructor(M = new O(1, 0, 0), D = 0) {
|
|
this.normal = M, this.constant = D;
|
|
}
|
|
set(M, D) {
|
|
return this.normal.copy(M), this.constant = D, this;
|
|
}
|
|
setComponents(M, D, t, e) {
|
|
return this.normal.set(M, D, t), this.constant = e, this;
|
|
}
|
|
setFromNormalAndCoplanarPoint(M, D) {
|
|
return this.normal.copy(M), this.constant = -D.dot(this.normal), this;
|
|
}
|
|
setFromCoplanarPoints(M, D, t) {
|
|
const e = Ln.subVectors(t, D).cross(ET.subVectors(M, D)).normalize();
|
|
return this.setFromNormalAndCoplanarPoint(e, M), this;
|
|
}
|
|
copy(M) {
|
|
return this.normal.copy(M.normal), this.constant = M.constant, this;
|
|
}
|
|
normalize() {
|
|
const M = 1 / this.normal.length();
|
|
return this.normal.multiplyScalar(M), this.constant *= M, this;
|
|
}
|
|
negate() {
|
|
return this.constant *= -1, this.normal.negate(), this;
|
|
}
|
|
distanceToPoint(M) {
|
|
return this.normal.dot(M) + this.constant;
|
|
}
|
|
distanceToSphere(M) {
|
|
return this.distanceToPoint(M.center) - M.radius;
|
|
}
|
|
projectPoint(M, D) {
|
|
return D.copy(this.normal).multiplyScalar(-this.distanceToPoint(M)).add(M);
|
|
}
|
|
intersectLine(M, D) {
|
|
const t = M.delta(Ln), e = this.normal.dot(t);
|
|
if (e === 0)
|
|
return this.distanceToPoint(M.start) === 0 ? D.copy(M.start) : null;
|
|
const N = -(M.start.dot(this.normal) + this.constant) / e;
|
|
return N < 0 || N > 1 ? null : D.copy(t).multiplyScalar(N).add(M.start);
|
|
}
|
|
intersectsLine(M) {
|
|
const D = this.distanceToPoint(M.start), t = this.distanceToPoint(M.end);
|
|
return D < 0 && t > 0 || t < 0 && D > 0;
|
|
}
|
|
intersectsBox(M) {
|
|
return M.intersectsPlane(this);
|
|
}
|
|
intersectsSphere(M) {
|
|
return M.intersectsPlane(this);
|
|
}
|
|
coplanarPoint(M) {
|
|
return M.copy(this.normal).multiplyScalar(-this.constant);
|
|
}
|
|
applyMatrix4(M, D) {
|
|
const t = D || lT.getNormalMatrix(M), e = this.coplanarPoint(Ln).applyMatrix4(M), N = this.normal.applyMatrix3(t).normalize();
|
|
return this.constant = -e.dot(N), this;
|
|
}
|
|
translate(M) {
|
|
return this.constant -= M.dot(this.normal), this;
|
|
}
|
|
equals(M) {
|
|
return M.normal.equals(this.normal) && M.constant === this.constant;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
}
|
|
XD.prototype.isPlane = !0;
|
|
const Rt = /* @__PURE__ */ new Ie(), TN = /* @__PURE__ */ new O();
|
|
class ZN {
|
|
constructor(M = new XD(), D = new XD(), t = new XD(), e = new XD(), N = new XD(), A = new XD()) {
|
|
this.planes = [M, D, t, e, N, A];
|
|
}
|
|
set(M, D, t, e, N, A) {
|
|
const z = this.planes;
|
|
return z[0].copy(M), z[1].copy(D), z[2].copy(t), z[3].copy(e), z[4].copy(N), z[5].copy(A), this;
|
|
}
|
|
copy(M) {
|
|
const D = this.planes;
|
|
for (let t = 0; t < 6; t++)
|
|
D[t].copy(M.planes[t]);
|
|
return this;
|
|
}
|
|
setFromProjectionMatrix(M) {
|
|
const D = this.planes, t = M.elements, e = t[0], N = t[1], A = t[2], z = t[3], I = t[4], i = t[5], T = t[6], u = t[7], g = t[8], s = t[9], j = t[10], y = t[11], a = t[12], c = t[13], r = t[14], l = t[15];
|
|
return D[0].setComponents(z - e, u - I, y - g, l - a).normalize(), D[1].setComponents(z + e, u + I, y + g, l + a).normalize(), D[2].setComponents(z + N, u + i, y + s, l + c).normalize(), D[3].setComponents(z - N, u - i, y - s, l - c).normalize(), D[4].setComponents(z - A, u - T, y - j, l - r).normalize(), D[5].setComponents(z + A, u + T, y + j, l + r).normalize(), this;
|
|
}
|
|
intersectsObject(M) {
|
|
const D = M.geometry;
|
|
return D.boundingSphere === null && D.computeBoundingSphere(), Rt.copy(D.boundingSphere).applyMatrix4(M.matrixWorld), this.intersectsSphere(Rt);
|
|
}
|
|
intersectsSprite(M) {
|
|
return Rt.center.set(0, 0, 0), Rt.radius = 0.7071067811865476, Rt.applyMatrix4(M.matrixWorld), this.intersectsSphere(Rt);
|
|
}
|
|
intersectsSphere(M) {
|
|
const D = this.planes, t = M.center, e = -M.radius;
|
|
for (let N = 0; N < 6; N++)
|
|
if (D[N].distanceToPoint(t) < e)
|
|
return !1;
|
|
return !0;
|
|
}
|
|
intersectsBox(M) {
|
|
const D = this.planes;
|
|
for (let t = 0; t < 6; t++) {
|
|
const e = D[t];
|
|
if (TN.x = e.normal.x > 0 ? M.max.x : M.min.x, TN.y = e.normal.y > 0 ? M.max.y : M.min.y, TN.z = e.normal.z > 0 ? M.max.z : M.min.z, e.distanceToPoint(TN) < 0)
|
|
return !1;
|
|
}
|
|
return !0;
|
|
}
|
|
containsPoint(M) {
|
|
const D = this.planes;
|
|
for (let t = 0; t < 6; t++)
|
|
if (D[t].distanceToPoint(M) < 0)
|
|
return !1;
|
|
return !0;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
}
|
|
function si() {
|
|
let n = null, M = !1, D = null, t = null;
|
|
function e(N, A) {
|
|
D(N, A), t = n.requestAnimationFrame(e);
|
|
}
|
|
return {
|
|
start: function() {
|
|
M !== !0 && D !== null && (t = n.requestAnimationFrame(e), M = !0);
|
|
},
|
|
stop: function() {
|
|
n.cancelAnimationFrame(t), M = !1;
|
|
},
|
|
setAnimationLoop: function(N) {
|
|
D = N;
|
|
},
|
|
setContext: function(N) {
|
|
n = N;
|
|
}
|
|
};
|
|
}
|
|
function dT(n, M) {
|
|
const D = M.isWebGL2, t = /* @__PURE__ */ new WeakMap();
|
|
function e(i, T) {
|
|
const u = i.array, g = i.usage, s = n.createBuffer();
|
|
n.bindBuffer(T, s), n.bufferData(T, u, g), i.onUploadCallback();
|
|
let j = 5126;
|
|
return u instanceof Float32Array ? j = 5126 : u instanceof Float64Array ? console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.") : u instanceof Uint16Array ? i.isFloat16BufferAttribute ? D ? j = 5131 : console.warn("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.") : j = 5123 : u instanceof Int16Array ? j = 5122 : u instanceof Uint32Array ? j = 5125 : u instanceof Int32Array ? j = 5124 : u instanceof Int8Array ? j = 5120 : (u instanceof Uint8Array || u instanceof Uint8ClampedArray) && (j = 5121), {
|
|
buffer: s,
|
|
type: j,
|
|
bytesPerElement: u.BYTES_PER_ELEMENT,
|
|
version: i.version
|
|
};
|
|
}
|
|
function N(i, T, u) {
|
|
const g = T.array, s = T.updateRange;
|
|
n.bindBuffer(u, i), s.count === -1 ? n.bufferSubData(u, 0, g) : (D ? n.bufferSubData(u, s.offset * g.BYTES_PER_ELEMENT, g, s.offset, s.count) : n.bufferSubData(u, s.offset * g.BYTES_PER_ELEMENT, g.subarray(s.offset, s.offset + s.count)), s.count = -1);
|
|
}
|
|
function A(i) {
|
|
return i.isInterleavedBufferAttribute && (i = i.data), t.get(i);
|
|
}
|
|
function z(i) {
|
|
i.isInterleavedBufferAttribute && (i = i.data);
|
|
const T = t.get(i);
|
|
T && (n.deleteBuffer(T.buffer), t.delete(i));
|
|
}
|
|
function I(i, T) {
|
|
if (i.isGLBufferAttribute) {
|
|
const g = t.get(i);
|
|
(!g || g.version < i.version) && t.set(i, {
|
|
buffer: i.buffer,
|
|
type: i.type,
|
|
bytesPerElement: i.elementSize,
|
|
version: i.version
|
|
});
|
|
return;
|
|
}
|
|
i.isInterleavedBufferAttribute && (i = i.data);
|
|
const u = t.get(i);
|
|
u === void 0 ? t.set(i, e(i, T)) : u.version < i.version && (N(u.buffer, i, T), u.version = i.version);
|
|
}
|
|
return {
|
|
get: A,
|
|
remove: z,
|
|
update: I
|
|
};
|
|
}
|
|
class tA extends VM {
|
|
constructor(M = 1, D = 1, t = 1, e = 1) {
|
|
super(), this.type = "PlaneGeometry", this.parameters = {
|
|
width: M,
|
|
height: D,
|
|
widthSegments: t,
|
|
heightSegments: e
|
|
};
|
|
const N = M / 2, A = D / 2, z = Math.floor(t), I = Math.floor(e), i = z + 1, T = I + 1, u = M / z, g = D / I, s = [], j = [], y = [], a = [];
|
|
for (let c = 0; c < T; c++) {
|
|
const r = c * g - A;
|
|
for (let l = 0; l < i; l++) {
|
|
const C = l * u - N;
|
|
j.push(C, -r, 0), y.push(0, 0, 1), a.push(l / z), a.push(1 - c / I);
|
|
}
|
|
}
|
|
for (let c = 0; c < I; c++)
|
|
for (let r = 0; r < z; r++) {
|
|
const l = r + i * c, C = r + i * (c + 1), E = r + 1 + i * (c + 1), d = r + 1 + i * c;
|
|
s.push(l, C, d), s.push(C, E, d);
|
|
}
|
|
this.setIndex(s), this.setAttribute("position", new WM(j, 3)), this.setAttribute("normal", new WM(y, 3)), this.setAttribute("uv", new WM(a, 2));
|
|
}
|
|
static fromJSON(M) {
|
|
return new tA(M.width, M.height, M.widthSegments, M.heightSegments);
|
|
}
|
|
}
|
|
var vT = `#ifdef USE_ALPHAMAP
|
|
diffuseColor.a *= texture2D( alphaMap, vUv ).g;
|
|
#endif`, pT = `#ifdef USE_ALPHAMAP
|
|
uniform sampler2D alphaMap;
|
|
#endif`, hT = `#ifdef USE_ALPHATEST
|
|
if ( diffuseColor.a < alphaTest ) discard;
|
|
#endif`, YT = `#ifdef USE_ALPHATEST
|
|
uniform float alphaTest;
|
|
#endif`, UT = `#ifdef USE_AOMAP
|
|
float ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
|
|
reflectedLight.indirectDiffuse *= ambientOcclusion;
|
|
#if defined( USE_ENVMAP ) && defined( STANDARD )
|
|
float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
|
|
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
|
|
#endif
|
|
#endif`, QT = `#ifdef USE_AOMAP
|
|
uniform sampler2D aoMap;
|
|
uniform float aoMapIntensity;
|
|
#endif`, fT = "vec3 transformed = vec3( position );", mT = `vec3 objectNormal = vec3( normal );
|
|
#ifdef USE_TANGENT
|
|
vec3 objectTangent = vec3( tangent.xyz );
|
|
#endif`, kT = `vec3 BRDF_Lambert( const in vec3 diffuseColor ) {
|
|
return RECIPROCAL_PI * diffuseColor;
|
|
}
|
|
vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
|
|
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
|
|
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
|
|
}
|
|
float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
|
|
float a2 = pow2( alpha );
|
|
float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
|
|
float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
|
|
return 0.5 / max( gv + gl, EPSILON );
|
|
}
|
|
float D_GGX( const in float alpha, const in float dotNH ) {
|
|
float a2 = pow2( alpha );
|
|
float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;
|
|
return RECIPROCAL_PI * a2 / pow2( denom );
|
|
}
|
|
vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {
|
|
float alpha = pow2( roughness );
|
|
vec3 halfDir = normalize( lightDir + viewDir );
|
|
float dotNL = saturate( dot( normal, lightDir ) );
|
|
float dotNV = saturate( dot( normal, viewDir ) );
|
|
float dotNH = saturate( dot( normal, halfDir ) );
|
|
float dotVH = saturate( dot( viewDir, halfDir ) );
|
|
vec3 F = F_Schlick( f0, f90, dotVH );
|
|
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
|
float D = D_GGX( alpha, dotNH );
|
|
return F * ( V * D );
|
|
}
|
|
vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {
|
|
const float LUT_SIZE = 64.0;
|
|
const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;
|
|
const float LUT_BIAS = 0.5 / LUT_SIZE;
|
|
float dotNV = saturate( dot( N, V ) );
|
|
vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );
|
|
uv = uv * LUT_SCALE + LUT_BIAS;
|
|
return uv;
|
|
}
|
|
float LTC_ClippedSphereFormFactor( const in vec3 f ) {
|
|
float l = length( f );
|
|
return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );
|
|
}
|
|
vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {
|
|
float x = dot( v1, v2 );
|
|
float y = abs( x );
|
|
float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;
|
|
float b = 3.4175940 + ( 4.1616724 + y ) * y;
|
|
float v = a / b;
|
|
float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;
|
|
return cross( v1, v2 ) * theta_sintheta;
|
|
}
|
|
vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {
|
|
vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];
|
|
vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];
|
|
vec3 lightNormal = cross( v1, v2 );
|
|
if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );
|
|
vec3 T1, T2;
|
|
T1 = normalize( V - N * dot( V, N ) );
|
|
T2 = - cross( N, T1 );
|
|
mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );
|
|
vec3 coords[ 4 ];
|
|
coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );
|
|
coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );
|
|
coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );
|
|
coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );
|
|
coords[ 0 ] = normalize( coords[ 0 ] );
|
|
coords[ 1 ] = normalize( coords[ 1 ] );
|
|
coords[ 2 ] = normalize( coords[ 2 ] );
|
|
coords[ 3 ] = normalize( coords[ 3 ] );
|
|
vec3 vectorFormFactor = vec3( 0.0 );
|
|
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );
|
|
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );
|
|
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );
|
|
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );
|
|
float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
|
|
return vec3( result );
|
|
}
|
|
float G_BlinnPhong_Implicit( ) {
|
|
return 0.25;
|
|
}
|
|
float D_BlinnPhong( const in float shininess, const in float dotNH ) {
|
|
return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );
|
|
}
|
|
vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {
|
|
vec3 halfDir = normalize( lightDir + viewDir );
|
|
float dotNH = saturate( dot( normal, halfDir ) );
|
|
float dotVH = saturate( dot( viewDir, halfDir ) );
|
|
vec3 F = F_Schlick( specularColor, 1.0, dotVH );
|
|
float G = G_BlinnPhong_Implicit( );
|
|
float D = D_BlinnPhong( shininess, dotNH );
|
|
return F * ( G * D );
|
|
}
|
|
#if defined( USE_SHEEN )
|
|
float D_Charlie( float roughness, float dotNH ) {
|
|
float alpha = pow2( roughness );
|
|
float invAlpha = 1.0 / alpha;
|
|
float cos2h = dotNH * dotNH;
|
|
float sin2h = max( 1.0 - cos2h, 0.0078125 );
|
|
return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );
|
|
}
|
|
float V_Neubelt( float dotNV, float dotNL ) {
|
|
return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );
|
|
}
|
|
vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
|
|
vec3 halfDir = normalize( lightDir + viewDir );
|
|
float dotNL = saturate( dot( normal, lightDir ) );
|
|
float dotNV = saturate( dot( normal, viewDir ) );
|
|
float dotNH = saturate( dot( normal, halfDir ) );
|
|
float D = D_Charlie( sheenRoughness, dotNH );
|
|
float V = V_Neubelt( dotNV, dotNL );
|
|
return sheenColor * ( D * V );
|
|
}
|
|
#endif`, ST = `#ifdef USE_BUMPMAP
|
|
uniform sampler2D bumpMap;
|
|
uniform float bumpScale;
|
|
vec2 dHdxy_fwd() {
|
|
vec2 dSTdx = dFdx( vUv );
|
|
vec2 dSTdy = dFdy( vUv );
|
|
float Hll = bumpScale * texture2D( bumpMap, vUv ).x;
|
|
float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;
|
|
float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;
|
|
return vec2( dBx, dBy );
|
|
}
|
|
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
|
|
vec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );
|
|
vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );
|
|
vec3 vN = surf_norm;
|
|
vec3 R1 = cross( vSigmaY, vN );
|
|
vec3 R2 = cross( vN, vSigmaX );
|
|
float fDet = dot( vSigmaX, R1 ) * faceDirection;
|
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
return normalize( abs( fDet ) * surf_norm - vGrad );
|
|
}
|
|
#endif`, ZT = `#if NUM_CLIPPING_PLANES > 0
|
|
vec4 plane;
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
|
|
plane = clippingPlanes[ i ];
|
|
if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;
|
|
}
|
|
#pragma unroll_loop_end
|
|
#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
|
|
bool clipped = true;
|
|
#pragma unroll_loop_start
|
|
for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
|
|
plane = clippingPlanes[ i ];
|
|
clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;
|
|
}
|
|
#pragma unroll_loop_end
|
|
if ( clipped ) discard;
|
|
#endif
|
|
#endif`, _T = `#if NUM_CLIPPING_PLANES > 0
|
|
varying vec3 vClipPosition;
|
|
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
|
|
#endif`, bT = `#if NUM_CLIPPING_PLANES > 0
|
|
varying vec3 vClipPosition;
|
|
#endif`, KT = `#if NUM_CLIPPING_PLANES > 0
|
|
vClipPosition = - mvPosition.xyz;
|
|
#endif`, RT = `#if defined( USE_COLOR_ALPHA )
|
|
diffuseColor *= vColor;
|
|
#elif defined( USE_COLOR )
|
|
diffuseColor.rgb *= vColor;
|
|
#endif`, PT = `#if defined( USE_COLOR_ALPHA )
|
|
varying vec4 vColor;
|
|
#elif defined( USE_COLOR )
|
|
varying vec3 vColor;
|
|
#endif`, FT = `#if defined( USE_COLOR_ALPHA )
|
|
varying vec4 vColor;
|
|
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
|
|
varying vec3 vColor;
|
|
#endif`, BT = `#if defined( USE_COLOR_ALPHA )
|
|
vColor = vec4( 1.0 );
|
|
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
|
|
vColor = vec3( 1.0 );
|
|
#endif
|
|
#ifdef USE_COLOR
|
|
vColor *= color;
|
|
#endif
|
|
#ifdef USE_INSTANCING_COLOR
|
|
vColor.xyz *= instanceColor.xyz;
|
|
#endif`, VT = `#define PI 3.141592653589793
|
|
#define PI2 6.283185307179586
|
|
#define PI_HALF 1.5707963267948966
|
|
#define RECIPROCAL_PI 0.3183098861837907
|
|
#define RECIPROCAL_PI2 0.15915494309189535
|
|
#define EPSILON 1e-6
|
|
#ifndef saturate
|
|
#define saturate( a ) clamp( a, 0.0, 1.0 )
|
|
#endif
|
|
#define whiteComplement( a ) ( 1.0 - saturate( a ) )
|
|
float pow2( const in float x ) { return x*x; }
|
|
float pow3( const in float x ) { return x*x*x; }
|
|
float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
|
|
float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
|
|
float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }
|
|
highp float rand( const in vec2 uv ) {
|
|
const highp float a = 12.9898, b = 78.233, c = 43758.5453;
|
|
highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );
|
|
return fract( sin( sn ) * c );
|
|
}
|
|
#ifdef HIGH_PRECISION
|
|
float precisionSafeLength( vec3 v ) { return length( v ); }
|
|
#else
|
|
float precisionSafeLength( vec3 v ) {
|
|
float maxComponent = max3( abs( v ) );
|
|
return length( v / maxComponent ) * maxComponent;
|
|
}
|
|
#endif
|
|
struct IncidentLight {
|
|
vec3 color;
|
|
vec3 direction;
|
|
bool visible;
|
|
};
|
|
struct ReflectedLight {
|
|
vec3 directDiffuse;
|
|
vec3 directSpecular;
|
|
vec3 indirectDiffuse;
|
|
vec3 indirectSpecular;
|
|
};
|
|
struct GeometricContext {
|
|
vec3 position;
|
|
vec3 normal;
|
|
vec3 viewDir;
|
|
#ifdef USE_CLEARCOAT
|
|
vec3 clearcoatNormal;
|
|
#endif
|
|
};
|
|
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
|
|
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
|
|
}
|
|
vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
|
|
return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
|
|
}
|
|
mat3 transposeMat3( const in mat3 m ) {
|
|
mat3 tmp;
|
|
tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );
|
|
tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );
|
|
tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );
|
|
return tmp;
|
|
}
|
|
float linearToRelativeLuminance( const in vec3 color ) {
|
|
vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );
|
|
return dot( weights, color.rgb );
|
|
}
|
|
bool isPerspectiveMatrix( mat4 m ) {
|
|
return m[ 2 ][ 3 ] == - 1.0;
|
|
}
|
|
vec2 equirectUv( in vec3 dir ) {
|
|
float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;
|
|
float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;
|
|
return vec2( u, v );
|
|
}`, HT = `#ifdef ENVMAP_TYPE_CUBE_UV
|
|
#define cubeUV_maxMipLevel 8.0
|
|
#define cubeUV_minMipLevel 4.0
|
|
#define cubeUV_maxTileSize 256.0
|
|
#define cubeUV_minTileSize 16.0
|
|
float getFace( vec3 direction ) {
|
|
vec3 absDirection = abs( direction );
|
|
float face = - 1.0;
|
|
if ( absDirection.x > absDirection.z ) {
|
|
if ( absDirection.x > absDirection.y )
|
|
face = direction.x > 0.0 ? 0.0 : 3.0;
|
|
else
|
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
} else {
|
|
if ( absDirection.z > absDirection.y )
|
|
face = direction.z > 0.0 ? 2.0 : 5.0;
|
|
else
|
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
}
|
|
return face;
|
|
}
|
|
vec2 getUV( vec3 direction, float face ) {
|
|
vec2 uv;
|
|
if ( face == 0.0 ) {
|
|
uv = vec2( direction.z, direction.y ) / abs( direction.x );
|
|
} else if ( face == 1.0 ) {
|
|
uv = vec2( - direction.x, - direction.z ) / abs( direction.y );
|
|
} else if ( face == 2.0 ) {
|
|
uv = vec2( - direction.x, direction.y ) / abs( direction.z );
|
|
} else if ( face == 3.0 ) {
|
|
uv = vec2( - direction.z, direction.y ) / abs( direction.x );
|
|
} else if ( face == 4.0 ) {
|
|
uv = vec2( - direction.x, direction.z ) / abs( direction.y );
|
|
} else {
|
|
uv = vec2( direction.x, direction.y ) / abs( direction.z );
|
|
}
|
|
return 0.5 * ( uv + 1.0 );
|
|
}
|
|
vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {
|
|
float face = getFace( direction );
|
|
float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );
|
|
mipInt = max( mipInt, cubeUV_minMipLevel );
|
|
float faceSize = exp2( mipInt );
|
|
float texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );
|
|
vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;
|
|
if ( face > 2.0 ) {
|
|
uv.y += faceSize;
|
|
face -= 3.0;
|
|
}
|
|
uv.x += face * faceSize;
|
|
if ( mipInt < cubeUV_maxMipLevel ) {
|
|
uv.y += 2.0 * cubeUV_maxTileSize;
|
|
}
|
|
uv.y += filterInt * 2.0 * cubeUV_minTileSize;
|
|
uv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );
|
|
uv *= texelSize;
|
|
return texture2D( envMap, uv ).rgb;
|
|
}
|
|
#define r0 1.0
|
|
#define v0 0.339
|
|
#define m0 - 2.0
|
|
#define r1 0.8
|
|
#define v1 0.276
|
|
#define m1 - 1.0
|
|
#define r4 0.4
|
|
#define v4 0.046
|
|
#define m4 2.0
|
|
#define r5 0.305
|
|
#define v5 0.016
|
|
#define m5 3.0
|
|
#define r6 0.21
|
|
#define v6 0.0038
|
|
#define m6 4.0
|
|
float roughnessToMip( float roughness ) {
|
|
float mip = 0.0;
|
|
if ( roughness >= r1 ) {
|
|
mip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;
|
|
} else if ( roughness >= r4 ) {
|
|
mip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;
|
|
} else if ( roughness >= r5 ) {
|
|
mip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;
|
|
} else if ( roughness >= r6 ) {
|
|
mip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;
|
|
} else {
|
|
mip = - 2.0 * log2( 1.16 * roughness ); }
|
|
return mip;
|
|
}
|
|
vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
|
|
float mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );
|
|
float mipF = fract( mip );
|
|
float mipInt = floor( mip );
|
|
vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );
|
|
if ( mipF == 0.0 ) {
|
|
return vec4( color0, 1.0 );
|
|
} else {
|
|
vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );
|
|
return vec4( mix( color0, color1, mipF ), 1.0 );
|
|
}
|
|
}
|
|
#endif`, GT = `vec3 transformedNormal = objectNormal;
|
|
#ifdef USE_INSTANCING
|
|
mat3 m = mat3( instanceMatrix );
|
|
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
|
|
transformedNormal = m * transformedNormal;
|
|
#endif
|
|
transformedNormal = normalMatrix * transformedNormal;
|
|
#ifdef FLIP_SIDED
|
|
transformedNormal = - transformedNormal;
|
|
#endif
|
|
#ifdef USE_TANGENT
|
|
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
|
|
#ifdef FLIP_SIDED
|
|
transformedTangent = - transformedTangent;
|
|
#endif
|
|
#endif`, WT = `#ifdef USE_DISPLACEMENTMAP
|
|
uniform sampler2D displacementMap;
|
|
uniform float displacementScale;
|
|
uniform float displacementBias;
|
|
#endif`, qT = `#ifdef USE_DISPLACEMENTMAP
|
|
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );
|
|
#endif`, XT = `#ifdef USE_EMISSIVEMAP
|
|
vec4 emissiveColor = texture2D( emissiveMap, vUv );
|
|
totalEmissiveRadiance *= emissiveColor.rgb;
|
|
#endif`, JT = `#ifdef USE_EMISSIVEMAP
|
|
uniform sampler2D emissiveMap;
|
|
#endif`, $T = "gl_FragColor = linearToOutputTexel( gl_FragColor );", Mu = `vec4 LinearToLinear( in vec4 value ) {
|
|
return value;
|
|
}
|
|
vec4 LinearTosRGB( in vec4 value ) {
|
|
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
|
}`, Du = `#ifdef USE_ENVMAP
|
|
#ifdef ENV_WORLDPOS
|
|
vec3 cameraToFrag;
|
|
if ( isOrthographic ) {
|
|
cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
|
|
} else {
|
|
cameraToFrag = normalize( vWorldPosition - cameraPosition );
|
|
}
|
|
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
|
#ifdef ENVMAP_MODE_REFLECTION
|
|
vec3 reflectVec = reflect( cameraToFrag, worldNormal );
|
|
#else
|
|
vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );
|
|
#endif
|
|
#else
|
|
vec3 reflectVec = vReflect;
|
|
#endif
|
|
#ifdef ENVMAP_TYPE_CUBE
|
|
vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
|
|
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
|
vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );
|
|
#else
|
|
vec4 envColor = vec4( 0.0 );
|
|
#endif
|
|
#ifdef ENVMAP_BLENDING_MULTIPLY
|
|
outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
|
|
#elif defined( ENVMAP_BLENDING_MIX )
|
|
outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
|
|
#elif defined( ENVMAP_BLENDING_ADD )
|
|
outgoingLight += envColor.xyz * specularStrength * reflectivity;
|
|
#endif
|
|
#endif`, tu = `#ifdef USE_ENVMAP
|
|
uniform float envMapIntensity;
|
|
uniform float flipEnvMap;
|
|
#ifdef ENVMAP_TYPE_CUBE
|
|
uniform samplerCube envMap;
|
|
#else
|
|
uniform sampler2D envMap;
|
|
#endif
|
|
|
|
#endif`, eu = `#ifdef USE_ENVMAP
|
|
uniform float reflectivity;
|
|
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )
|
|
#define ENV_WORLDPOS
|
|
#endif
|
|
#ifdef ENV_WORLDPOS
|
|
varying vec3 vWorldPosition;
|
|
uniform float refractionRatio;
|
|
#else
|
|
varying vec3 vReflect;
|
|
#endif
|
|
#endif`, Nu = `#ifdef USE_ENVMAP
|
|
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )
|
|
#define ENV_WORLDPOS
|
|
#endif
|
|
#ifdef ENV_WORLDPOS
|
|
|
|
varying vec3 vWorldPosition;
|
|
#else
|
|
varying vec3 vReflect;
|
|
uniform float refractionRatio;
|
|
#endif
|
|
#endif`, nu = `#ifdef USE_ENVMAP
|
|
#ifdef ENV_WORLDPOS
|
|
vWorldPosition = worldPosition.xyz;
|
|
#else
|
|
vec3 cameraToVertex;
|
|
if ( isOrthographic ) {
|
|
cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
|
|
} else {
|
|
cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
|
|
}
|
|
vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
|
|
#ifdef ENVMAP_MODE_REFLECTION
|
|
vReflect = reflect( cameraToVertex, worldNormal );
|
|
#else
|
|
vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
|
|
#endif
|
|
#endif
|
|
#endif`, Au = `#ifdef USE_FOG
|
|
vFogDepth = - mvPosition.z;
|
|
#endif`, zu = `#ifdef USE_FOG
|
|
varying float vFogDepth;
|
|
#endif`, iu = `#ifdef USE_FOG
|
|
#ifdef FOG_EXP2
|
|
float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
|
|
#else
|
|
float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
|
|
#endif
|
|
gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
|
|
#endif`, Iu = `#ifdef USE_FOG
|
|
uniform vec3 fogColor;
|
|
varying float vFogDepth;
|
|
#ifdef FOG_EXP2
|
|
uniform float fogDensity;
|
|
#else
|
|
uniform float fogNear;
|
|
uniform float fogFar;
|
|
#endif
|
|
#endif`, Tu = `#ifdef USE_GRADIENTMAP
|
|
uniform sampler2D gradientMap;
|
|
#endif
|
|
vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
|
|
float dotNL = dot( normal, lightDirection );
|
|
vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );
|
|
#ifdef USE_GRADIENTMAP
|
|
return vec3( texture2D( gradientMap, coord ).r );
|
|
#else
|
|
return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );
|
|
#endif
|
|
}`, uu = `#ifdef USE_LIGHTMAP
|
|
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
|
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
|
#ifndef PHYSICALLY_CORRECT_LIGHTS
|
|
lightMapIrradiance *= PI;
|
|
#endif
|
|
reflectedLight.indirectDiffuse += lightMapIrradiance;
|
|
#endif`, gu = `#ifdef USE_LIGHTMAP
|
|
uniform sampler2D lightMap;
|
|
uniform float lightMapIntensity;
|
|
#endif`, ru = `vec3 diffuse = vec3( 1.0 );
|
|
GeometricContext geometry;
|
|
geometry.position = mvPosition.xyz;
|
|
geometry.normal = normalize( transformedNormal );
|
|
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
|
|
GeometricContext backGeometry;
|
|
backGeometry.position = geometry.position;
|
|
backGeometry.normal = -geometry.normal;
|
|
backGeometry.viewDir = geometry.viewDir;
|
|
vLightFront = vec3( 0.0 );
|
|
vIndirectFront = vec3( 0.0 );
|
|
#ifdef DOUBLE_SIDED
|
|
vLightBack = vec3( 0.0 );
|
|
vIndirectBack = vec3( 0.0 );
|
|
#endif
|
|
IncidentLight directLight;
|
|
float dotNL;
|
|
vec3 directLightColor_Diffuse;
|
|
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
#ifdef DOUBLE_SIDED
|
|
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
|
|
#endif
|
|
#if NUM_POINT_LIGHTS > 0
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
dotNL = dot( geometry.normal, directLight.direction );
|
|
directLightColor_Diffuse = directLight.color;
|
|
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
#ifdef DOUBLE_SIDED
|
|
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
|
|
#endif
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if NUM_SPOT_LIGHTS > 0
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
dotNL = dot( geometry.normal, directLight.direction );
|
|
directLightColor_Diffuse = directLight.color;
|
|
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
#ifdef DOUBLE_SIDED
|
|
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
|
|
#endif
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if NUM_DIR_LIGHTS > 0
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
dotNL = dot( geometry.normal, directLight.direction );
|
|
directLightColor_Diffuse = directLight.color;
|
|
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
#ifdef DOUBLE_SIDED
|
|
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
|
|
#endif
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if NUM_HEMI_LIGHTS > 0
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
#ifdef DOUBLE_SIDED
|
|
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
|
|
#endif
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif`, su = `uniform bool receiveShadow;
|
|
uniform vec3 ambientLightColor;
|
|
uniform vec3 lightProbe[ 9 ];
|
|
vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
|
|
float x = normal.x, y = normal.y, z = normal.z;
|
|
vec3 result = shCoefficients[ 0 ] * 0.886227;
|
|
result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
|
|
result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
|
|
result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
|
|
result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
|
|
result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
|
|
result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
|
|
result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
|
|
result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
|
|
return result;
|
|
}
|
|
vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
|
|
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
|
vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
|
|
return irradiance;
|
|
}
|
|
vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
|
|
vec3 irradiance = ambientLightColor;
|
|
return irradiance;
|
|
}
|
|
float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {
|
|
#if defined ( PHYSICALLY_CORRECT_LIGHTS )
|
|
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
|
|
if ( cutoffDistance > 0.0 ) {
|
|
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
|
|
}
|
|
return distanceFalloff;
|
|
#else
|
|
if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
|
|
return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );
|
|
}
|
|
return 1.0;
|
|
#endif
|
|
}
|
|
float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {
|
|
return smoothstep( coneCosine, penumbraCosine, angleCosine );
|
|
}
|
|
#if NUM_DIR_LIGHTS > 0
|
|
struct DirectionalLight {
|
|
vec3 direction;
|
|
vec3 color;
|
|
};
|
|
uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
|
|
void getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {
|
|
light.color = directionalLight.color;
|
|
light.direction = directionalLight.direction;
|
|
light.visible = true;
|
|
}
|
|
#endif
|
|
#if NUM_POINT_LIGHTS > 0
|
|
struct PointLight {
|
|
vec3 position;
|
|
vec3 color;
|
|
float distance;
|
|
float decay;
|
|
};
|
|
uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
|
|
void getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {
|
|
vec3 lVector = pointLight.position - geometry.position;
|
|
light.direction = normalize( lVector );
|
|
float lightDistance = length( lVector );
|
|
light.color = pointLight.color;
|
|
light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );
|
|
light.visible = ( light.color != vec3( 0.0 ) );
|
|
}
|
|
#endif
|
|
#if NUM_SPOT_LIGHTS > 0
|
|
struct SpotLight {
|
|
vec3 position;
|
|
vec3 direction;
|
|
vec3 color;
|
|
float distance;
|
|
float decay;
|
|
float coneCos;
|
|
float penumbraCos;
|
|
};
|
|
uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
|
|
void getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {
|
|
vec3 lVector = spotLight.position - geometry.position;
|
|
light.direction = normalize( lVector );
|
|
float angleCos = dot( light.direction, spotLight.direction );
|
|
float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );
|
|
if ( spotAttenuation > 0.0 ) {
|
|
float lightDistance = length( lVector );
|
|
light.color = spotLight.color * spotAttenuation;
|
|
light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );
|
|
light.visible = ( light.color != vec3( 0.0 ) );
|
|
} else {
|
|
light.color = vec3( 0.0 );
|
|
light.visible = false;
|
|
}
|
|
}
|
|
#endif
|
|
#if NUM_RECT_AREA_LIGHTS > 0
|
|
struct RectAreaLight {
|
|
vec3 color;
|
|
vec3 position;
|
|
vec3 halfWidth;
|
|
vec3 halfHeight;
|
|
};
|
|
uniform sampler2D ltc_1; uniform sampler2D ltc_2;
|
|
uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];
|
|
#endif
|
|
#if NUM_HEMI_LIGHTS > 0
|
|
struct HemisphereLight {
|
|
vec3 direction;
|
|
vec3 skyColor;
|
|
vec3 groundColor;
|
|
};
|
|
uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
|
|
vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {
|
|
float dotNL = dot( normal, hemiLight.direction );
|
|
float hemiDiffuseWeight = 0.5 * dotNL + 0.5;
|
|
vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
|
|
return irradiance;
|
|
}
|
|
#endif`, cu = `#if defined( USE_ENVMAP )
|
|
#ifdef ENVMAP_MODE_REFRACTION
|
|
uniform float refractionRatio;
|
|
#endif
|
|
vec3 getIBLIrradiance( const in vec3 normal ) {
|
|
#if defined( ENVMAP_TYPE_CUBE_UV )
|
|
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
|
vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );
|
|
return PI * envMapColor.rgb * envMapIntensity;
|
|
#else
|
|
return vec3( 0.0 );
|
|
#endif
|
|
}
|
|
vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
|
|
#if defined( ENVMAP_TYPE_CUBE_UV )
|
|
vec3 reflectVec;
|
|
#ifdef ENVMAP_MODE_REFLECTION
|
|
reflectVec = reflect( - viewDir, normal );
|
|
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
|
|
#else
|
|
reflectVec = refract( - viewDir, normal, refractionRatio );
|
|
#endif
|
|
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
|
|
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
|
|
return envMapColor.rgb * envMapIntensity;
|
|
#else
|
|
return vec3( 0.0 );
|
|
#endif
|
|
}
|
|
#endif`, ju = `ToonMaterial material;
|
|
material.diffuseColor = diffuseColor.rgb;`, yu = `varying vec3 vViewPosition;
|
|
struct ToonMaterial {
|
|
vec3 diffuseColor;
|
|
};
|
|
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
|
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
}
|
|
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
}
|
|
#define RE_Direct RE_Direct_Toon
|
|
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
#define Material_LightProbeLOD( material ) (0)`, ou = `BlinnPhongMaterial material;
|
|
material.diffuseColor = diffuseColor.rgb;
|
|
material.specularColor = specular;
|
|
material.specularShininess = shininess;
|
|
material.specularStrength = specularStrength;`, au = `varying vec3 vViewPosition;
|
|
struct BlinnPhongMaterial {
|
|
vec3 diffuseColor;
|
|
vec3 specularColor;
|
|
float specularShininess;
|
|
float specularStrength;
|
|
};
|
|
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
|
|
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
|
vec3 irradiance = dotNL * directLight.color;
|
|
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
|
}
|
|
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
|
|
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
}
|
|
#define RE_Direct RE_Direct_BlinnPhong
|
|
#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong
|
|
#define Material_LightProbeLOD( material ) (0)`, Cu = `PhysicalMaterial material;
|
|
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
|
|
vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );
|
|
float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
|
|
material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;
|
|
material.roughness = min( material.roughness, 1.0 );
|
|
#ifdef IOR
|
|
#ifdef SPECULAR
|
|
float specularIntensityFactor = specularIntensity;
|
|
vec3 specularColorFactor = specularColor;
|
|
#ifdef USE_SPECULARINTENSITYMAP
|
|
specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;
|
|
#endif
|
|
#ifdef USE_SPECULARCOLORMAP
|
|
specularColorFactor *= texture2D( specularColorMap, vUv ).rgb;
|
|
#endif
|
|
material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );
|
|
#else
|
|
float specularIntensityFactor = 1.0;
|
|
vec3 specularColorFactor = vec3( 1.0 );
|
|
material.specularF90 = 1.0;
|
|
#endif
|
|
material.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );
|
|
#else
|
|
material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
|
|
material.specularF90 = 1.0;
|
|
#endif
|
|
#ifdef USE_CLEARCOAT
|
|
material.clearcoat = clearcoat;
|
|
material.clearcoatRoughness = clearcoatRoughness;
|
|
material.clearcoatF0 = vec3( 0.04 );
|
|
material.clearcoatF90 = 1.0;
|
|
#ifdef USE_CLEARCOATMAP
|
|
material.clearcoat *= texture2D( clearcoatMap, vUv ).x;
|
|
#endif
|
|
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
|
material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;
|
|
#endif
|
|
material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );
|
|
material.clearcoatRoughness += geometryRoughness;
|
|
material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );
|
|
#endif
|
|
#ifdef USE_SHEEN
|
|
material.sheenColor = sheenColor;
|
|
#ifdef USE_SHEENCOLORMAP
|
|
material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;
|
|
#endif
|
|
material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
|
|
#ifdef USE_SHEENROUGHNESSMAP
|
|
material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;
|
|
#endif
|
|
#endif`, Lu = `struct PhysicalMaterial {
|
|
vec3 diffuseColor;
|
|
float roughness;
|
|
vec3 specularColor;
|
|
float specularF90;
|
|
#ifdef USE_CLEARCOAT
|
|
float clearcoat;
|
|
float clearcoatRoughness;
|
|
vec3 clearcoatF0;
|
|
float clearcoatF90;
|
|
#endif
|
|
#ifdef USE_SHEEN
|
|
vec3 sheenColor;
|
|
float sheenRoughness;
|
|
#endif
|
|
};
|
|
vec3 clearcoatSpecular = vec3( 0.0 );
|
|
vec3 sheenSpecular = vec3( 0.0 );
|
|
float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {
|
|
float dotNV = saturate( dot( normal, viewDir ) );
|
|
float r2 = roughness * roughness;
|
|
float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;
|
|
float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;
|
|
float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );
|
|
return saturate( DG * RECIPROCAL_PI );
|
|
}
|
|
vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
|
|
float dotNV = saturate( dot( normal, viewDir ) );
|
|
const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );
|
|
const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );
|
|
vec4 r = roughness * c0 + c1;
|
|
float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;
|
|
vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;
|
|
return fab;
|
|
}
|
|
vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {
|
|
vec2 fab = DFGApprox( normal, viewDir, roughness );
|
|
return specularColor * fab.x + specularF90 * fab.y;
|
|
}
|
|
void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
|
|
vec2 fab = DFGApprox( normal, viewDir, roughness );
|
|
vec3 FssEss = specularColor * fab.x + specularF90 * fab.y;
|
|
float Ess = fab.x + fab.y;
|
|
float Ems = 1.0 - Ess;
|
|
vec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );
|
|
singleScatter += FssEss;
|
|
multiScatter += Fms * Ems;
|
|
}
|
|
#if NUM_RECT_AREA_LIGHTS > 0
|
|
void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
|
vec3 normal = geometry.normal;
|
|
vec3 viewDir = geometry.viewDir;
|
|
vec3 position = geometry.position;
|
|
vec3 lightPos = rectAreaLight.position;
|
|
vec3 halfWidth = rectAreaLight.halfWidth;
|
|
vec3 halfHeight = rectAreaLight.halfHeight;
|
|
vec3 lightColor = rectAreaLight.color;
|
|
float roughness = material.roughness;
|
|
vec3 rectCoords[ 4 ];
|
|
rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;
|
|
rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;
|
|
rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;
|
|
vec2 uv = LTC_Uv( normal, viewDir, roughness );
|
|
vec4 t1 = texture2D( ltc_1, uv );
|
|
vec4 t2 = texture2D( ltc_2, uv );
|
|
mat3 mInv = mat3(
|
|
vec3( t1.x, 0, t1.y ),
|
|
vec3( 0, 1, 0 ),
|
|
vec3( t1.z, 0, t1.w )
|
|
);
|
|
vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );
|
|
reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );
|
|
reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );
|
|
}
|
|
#endif
|
|
void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
|
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
|
vec3 irradiance = dotNL * directLight.color;
|
|
#ifdef USE_CLEARCOAT
|
|
float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );
|
|
vec3 ccIrradiance = dotNLcc * directLight.color;
|
|
clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
|
#endif
|
|
#ifdef USE_SHEEN
|
|
sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );
|
|
#endif
|
|
reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );
|
|
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
}
|
|
void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
|
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
}
|
|
void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
|
#ifdef USE_CLEARCOAT
|
|
clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
|
#endif
|
|
#ifdef USE_SHEEN
|
|
sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );
|
|
#endif
|
|
vec3 singleScattering = vec3( 0.0 );
|
|
vec3 multiScattering = vec3( 0.0 );
|
|
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
|
|
computeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );
|
|
vec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );
|
|
reflectedLight.indirectSpecular += radiance * singleScattering;
|
|
reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
|
|
reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
|
|
}
|
|
#define RE_Direct RE_Direct_Physical
|
|
#define RE_Direct_RectArea RE_Direct_RectArea_Physical
|
|
#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical
|
|
#define RE_IndirectSpecular RE_IndirectSpecular_Physical
|
|
float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
|
|
return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
|
|
}`, wu = `
|
|
GeometricContext geometry;
|
|
geometry.position = - vViewPosition;
|
|
geometry.normal = normal;
|
|
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
|
|
#ifdef USE_CLEARCOAT
|
|
geometry.clearcoatNormal = clearcoatNormal;
|
|
#endif
|
|
IncidentLight directLight;
|
|
#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
|
|
PointLight pointLight;
|
|
#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
|
|
PointLightShadow pointLightShadow;
|
|
#endif
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
pointLight = pointLights[ i ];
|
|
getPointLightInfo( pointLight, geometry, directLight );
|
|
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
|
|
pointLightShadow = pointLightShadows[ i ];
|
|
directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
|
|
#endif
|
|
RE_Direct( directLight, geometry, material, reflectedLight );
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
|
|
SpotLight spotLight;
|
|
#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
|
|
SpotLightShadow spotLightShadow;
|
|
#endif
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
spotLight = spotLights[ i ];
|
|
getSpotLightInfo( spotLight, geometry, directLight );
|
|
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
|
|
spotLightShadow = spotLightShadows[ i ];
|
|
directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
|
|
#endif
|
|
RE_Direct( directLight, geometry, material, reflectedLight );
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
|
|
DirectionalLight directionalLight;
|
|
#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
|
|
DirectionalLightShadow directionalLightShadow;
|
|
#endif
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
directionalLight = directionalLights[ i ];
|
|
getDirectionalLightInfo( directionalLight, geometry, directLight );
|
|
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
|
|
directionalLightShadow = directionalLightShadows[ i ];
|
|
directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
#endif
|
|
RE_Direct( directLight, geometry, material, reflectedLight );
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
|
|
RectAreaLight rectAreaLight;
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
|
|
rectAreaLight = rectAreaLights[ i ];
|
|
RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if defined( RE_IndirectDiffuse )
|
|
vec3 iblIrradiance = vec3( 0.0 );
|
|
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
|
|
irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
#if ( NUM_HEMI_LIGHTS > 0 )
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#endif
|
|
#if defined( RE_IndirectSpecular )
|
|
vec3 radiance = vec3( 0.0 );
|
|
vec3 clearcoatRadiance = vec3( 0.0 );
|
|
#endif`, Ou = `#if defined( RE_IndirectDiffuse )
|
|
#ifdef USE_LIGHTMAP
|
|
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
|
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
|
#ifndef PHYSICALLY_CORRECT_LIGHTS
|
|
lightMapIrradiance *= PI;
|
|
#endif
|
|
irradiance += lightMapIrradiance;
|
|
#endif
|
|
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
|
|
iblIrradiance += getIBLIrradiance( geometry.normal );
|
|
#endif
|
|
#endif
|
|
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
|
|
radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );
|
|
#ifdef USE_CLEARCOAT
|
|
clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );
|
|
#endif
|
|
#endif`, xu = `#if defined( RE_IndirectDiffuse )
|
|
RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );
|
|
#endif
|
|
#if defined( RE_IndirectSpecular )
|
|
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );
|
|
#endif`, Eu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
|
gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
|
|
#endif`, lu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
|
uniform float logDepthBufFC;
|
|
varying float vFragDepth;
|
|
varying float vIsPerspective;
|
|
#endif`, du = `#ifdef USE_LOGDEPTHBUF
|
|
#ifdef USE_LOGDEPTHBUF_EXT
|
|
varying float vFragDepth;
|
|
varying float vIsPerspective;
|
|
#else
|
|
uniform float logDepthBufFC;
|
|
#endif
|
|
#endif`, vu = `#ifdef USE_LOGDEPTHBUF
|
|
#ifdef USE_LOGDEPTHBUF_EXT
|
|
vFragDepth = 1.0 + gl_Position.w;
|
|
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
|
#else
|
|
if ( isPerspectiveMatrix( projectionMatrix ) ) {
|
|
gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;
|
|
gl_Position.z *= gl_Position.w;
|
|
}
|
|
#endif
|
|
#endif`, pu = `#ifdef USE_MAP
|
|
vec4 sampledDiffuseColor = texture2D( map, vUv );
|
|
#ifdef DECODE_VIDEO_TEXTURE
|
|
sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );
|
|
#endif
|
|
diffuseColor *= sampledDiffuseColor;
|
|
#endif`, hu = `#ifdef USE_MAP
|
|
uniform sampler2D map;
|
|
#endif`, Yu = `#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
|
vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
|
|
#endif
|
|
#ifdef USE_MAP
|
|
diffuseColor *= texture2D( map, uv );
|
|
#endif
|
|
#ifdef USE_ALPHAMAP
|
|
diffuseColor.a *= texture2D( alphaMap, uv ).g;
|
|
#endif`, Uu = `#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
|
uniform mat3 uvTransform;
|
|
#endif
|
|
#ifdef USE_MAP
|
|
uniform sampler2D map;
|
|
#endif
|
|
#ifdef USE_ALPHAMAP
|
|
uniform sampler2D alphaMap;
|
|
#endif`, Qu = `float metalnessFactor = metalness;
|
|
#ifdef USE_METALNESSMAP
|
|
vec4 texelMetalness = texture2D( metalnessMap, vUv );
|
|
metalnessFactor *= texelMetalness.b;
|
|
#endif`, fu = `#ifdef USE_METALNESSMAP
|
|
uniform sampler2D metalnessMap;
|
|
#endif`, mu = `#ifdef USE_MORPHNORMALS
|
|
objectNormal *= morphTargetBaseInfluence;
|
|
#ifdef MORPHTARGETS_TEXTURE
|
|
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
|
|
if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1, 2 ) * morphTargetInfluences[ i ];
|
|
}
|
|
#else
|
|
objectNormal += morphNormal0 * morphTargetInfluences[ 0 ];
|
|
objectNormal += morphNormal1 * morphTargetInfluences[ 1 ];
|
|
objectNormal += morphNormal2 * morphTargetInfluences[ 2 ];
|
|
objectNormal += morphNormal3 * morphTargetInfluences[ 3 ];
|
|
#endif
|
|
#endif`, ku = `#ifdef USE_MORPHTARGETS
|
|
uniform float morphTargetBaseInfluence;
|
|
#ifdef MORPHTARGETS_TEXTURE
|
|
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
|
|
uniform sampler2DArray morphTargetsTexture;
|
|
uniform vec2 morphTargetsTextureSize;
|
|
vec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) {
|
|
float texelIndex = float( vertexIndex * stride + offset );
|
|
float y = floor( texelIndex / morphTargetsTextureSize.x );
|
|
float x = texelIndex - y * morphTargetsTextureSize.x;
|
|
vec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );
|
|
return texture( morphTargetsTexture, morphUV ).xyz;
|
|
}
|
|
#else
|
|
#ifndef USE_MORPHNORMALS
|
|
uniform float morphTargetInfluences[ 8 ];
|
|
#else
|
|
uniform float morphTargetInfluences[ 4 ];
|
|
#endif
|
|
#endif
|
|
#endif`, Su = `#ifdef USE_MORPHTARGETS
|
|
transformed *= morphTargetBaseInfluence;
|
|
#ifdef MORPHTARGETS_TEXTURE
|
|
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
|
|
#ifndef USE_MORPHNORMALS
|
|
if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ];
|
|
#else
|
|
if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ];
|
|
#endif
|
|
}
|
|
#else
|
|
transformed += morphTarget0 * morphTargetInfluences[ 0 ];
|
|
transformed += morphTarget1 * morphTargetInfluences[ 1 ];
|
|
transformed += morphTarget2 * morphTargetInfluences[ 2 ];
|
|
transformed += morphTarget3 * morphTargetInfluences[ 3 ];
|
|
#ifndef USE_MORPHNORMALS
|
|
transformed += morphTarget4 * morphTargetInfluences[ 4 ];
|
|
transformed += morphTarget5 * morphTargetInfluences[ 5 ];
|
|
transformed += morphTarget6 * morphTargetInfluences[ 6 ];
|
|
transformed += morphTarget7 * morphTargetInfluences[ 7 ];
|
|
#endif
|
|
#endif
|
|
#endif`, Zu = `float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
|
|
#ifdef FLAT_SHADED
|
|
vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );
|
|
vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );
|
|
vec3 normal = normalize( cross( fdx, fdy ) );
|
|
#else
|
|
vec3 normal = normalize( vNormal );
|
|
#ifdef DOUBLE_SIDED
|
|
normal = normal * faceDirection;
|
|
#endif
|
|
#ifdef USE_TANGENT
|
|
vec3 tangent = normalize( vTangent );
|
|
vec3 bitangent = normalize( vBitangent );
|
|
#ifdef DOUBLE_SIDED
|
|
tangent = tangent * faceDirection;
|
|
bitangent = bitangent * faceDirection;
|
|
#endif
|
|
#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )
|
|
mat3 vTBN = mat3( tangent, bitangent, normal );
|
|
#endif
|
|
#endif
|
|
#endif
|
|
vec3 geometryNormal = normal;`, _u = `#ifdef OBJECTSPACE_NORMALMAP
|
|
normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
|
#ifdef FLIP_SIDED
|
|
normal = - normal;
|
|
#endif
|
|
#ifdef DOUBLE_SIDED
|
|
normal = normal * faceDirection;
|
|
#endif
|
|
normal = normalize( normalMatrix * normal );
|
|
#elif defined( TANGENTSPACE_NORMALMAP )
|
|
vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
|
mapN.xy *= normalScale;
|
|
#ifdef USE_TANGENT
|
|
normal = normalize( vTBN * mapN );
|
|
#else
|
|
normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );
|
|
#endif
|
|
#elif defined( USE_BUMPMAP )
|
|
normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
|
|
#endif`, bu = `#ifndef FLAT_SHADED
|
|
varying vec3 vNormal;
|
|
#ifdef USE_TANGENT
|
|
varying vec3 vTangent;
|
|
varying vec3 vBitangent;
|
|
#endif
|
|
#endif`, Ku = `#ifndef FLAT_SHADED
|
|
varying vec3 vNormal;
|
|
#ifdef USE_TANGENT
|
|
varying vec3 vTangent;
|
|
varying vec3 vBitangent;
|
|
#endif
|
|
#endif`, Ru = `#ifndef FLAT_SHADED
|
|
vNormal = normalize( transformedNormal );
|
|
#ifdef USE_TANGENT
|
|
vTangent = normalize( transformedTangent );
|
|
vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
|
|
#endif
|
|
#endif`, Pu = `#ifdef USE_NORMALMAP
|
|
uniform sampler2D normalMap;
|
|
uniform vec2 normalScale;
|
|
#endif
|
|
#ifdef OBJECTSPACE_NORMALMAP
|
|
uniform mat3 normalMatrix;
|
|
#endif
|
|
#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )
|
|
vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {
|
|
vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );
|
|
vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );
|
|
vec2 st0 = dFdx( vUv.st );
|
|
vec2 st1 = dFdy( vUv.st );
|
|
vec3 N = surf_norm;
|
|
vec3 q1perp = cross( q1, N );
|
|
vec3 q0perp = cross( N, q0 );
|
|
vec3 T = q1perp * st0.x + q0perp * st1.x;
|
|
vec3 B = q1perp * st0.y + q0perp * st1.y;
|
|
float det = max( dot( T, T ), dot( B, B ) );
|
|
float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );
|
|
return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );
|
|
}
|
|
#endif`, Fu = `#ifdef USE_CLEARCOAT
|
|
vec3 clearcoatNormal = geometryNormal;
|
|
#endif`, Bu = `#ifdef USE_CLEARCOAT_NORMALMAP
|
|
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;
|
|
clearcoatMapN.xy *= clearcoatNormalScale;
|
|
#ifdef USE_TANGENT
|
|
clearcoatNormal = normalize( vTBN * clearcoatMapN );
|
|
#else
|
|
clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );
|
|
#endif
|
|
#endif`, Vu = `#ifdef USE_CLEARCOATMAP
|
|
uniform sampler2D clearcoatMap;
|
|
#endif
|
|
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
|
uniform sampler2D clearcoatRoughnessMap;
|
|
#endif
|
|
#ifdef USE_CLEARCOAT_NORMALMAP
|
|
uniform sampler2D clearcoatNormalMap;
|
|
uniform vec2 clearcoatNormalScale;
|
|
#endif`, Hu = `#ifdef OPAQUE
|
|
diffuseColor.a = 1.0;
|
|
#endif
|
|
#ifdef USE_TRANSMISSION
|
|
diffuseColor.a *= transmissionAlpha + 0.1;
|
|
#endif
|
|
gl_FragColor = vec4( outgoingLight, diffuseColor.a );`, Gu = `vec3 packNormalToRGB( const in vec3 normal ) {
|
|
return normalize( normal ) * 0.5 + 0.5;
|
|
}
|
|
vec3 unpackRGBToNormal( const in vec3 rgb ) {
|
|
return 2.0 * rgb.xyz - 1.0;
|
|
}
|
|
const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;
|
|
const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );
|
|
const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );
|
|
const float ShiftRight8 = 1. / 256.;
|
|
vec4 packDepthToRGBA( const in float v ) {
|
|
vec4 r = vec4( fract( v * PackFactors ), v );
|
|
r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;
|
|
}
|
|
float unpackRGBAToDepth( const in vec4 v ) {
|
|
return dot( v, UnpackFactors );
|
|
}
|
|
vec4 pack2HalfToRGBA( vec2 v ) {
|
|
vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
|
|
return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
|
|
}
|
|
vec2 unpackRGBATo2Half( vec4 v ) {
|
|
return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
|
|
}
|
|
float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {
|
|
return ( viewZ + near ) / ( near - far );
|
|
}
|
|
float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {
|
|
return linearClipZ * ( near - far ) - near;
|
|
}
|
|
float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {
|
|
return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );
|
|
}
|
|
float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {
|
|
return ( near * far ) / ( ( far - near ) * invClipZ - far );
|
|
}`, Wu = `#ifdef PREMULTIPLIED_ALPHA
|
|
gl_FragColor.rgb *= gl_FragColor.a;
|
|
#endif`, qu = `vec4 mvPosition = vec4( transformed, 1.0 );
|
|
#ifdef USE_INSTANCING
|
|
mvPosition = instanceMatrix * mvPosition;
|
|
#endif
|
|
mvPosition = modelViewMatrix * mvPosition;
|
|
gl_Position = projectionMatrix * mvPosition;`, Xu = `#ifdef DITHERING
|
|
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
|
|
#endif`, Ju = `#ifdef DITHERING
|
|
vec3 dithering( vec3 color ) {
|
|
float grid_position = rand( gl_FragCoord.xy );
|
|
vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
|
|
dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
|
|
return color + dither_shift_RGB;
|
|
}
|
|
#endif`, $u = `float roughnessFactor = roughness;
|
|
#ifdef USE_ROUGHNESSMAP
|
|
vec4 texelRoughness = texture2D( roughnessMap, vUv );
|
|
roughnessFactor *= texelRoughness.g;
|
|
#endif`, Mg = `#ifdef USE_ROUGHNESSMAP
|
|
uniform sampler2D roughnessMap;
|
|
#endif`, Dg = `#ifdef USE_SHADOWMAP
|
|
#if NUM_DIR_LIGHT_SHADOWS > 0
|
|
uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
|
|
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
|
|
struct DirectionalLightShadow {
|
|
float shadowBias;
|
|
float shadowNormalBias;
|
|
float shadowRadius;
|
|
vec2 shadowMapSize;
|
|
};
|
|
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
|
|
#endif
|
|
#if NUM_SPOT_LIGHT_SHADOWS > 0
|
|
uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
|
|
varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];
|
|
struct SpotLightShadow {
|
|
float shadowBias;
|
|
float shadowNormalBias;
|
|
float shadowRadius;
|
|
vec2 shadowMapSize;
|
|
};
|
|
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
|
|
#endif
|
|
#if NUM_POINT_LIGHT_SHADOWS > 0
|
|
uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
|
|
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
|
|
struct PointLightShadow {
|
|
float shadowBias;
|
|
float shadowNormalBias;
|
|
float shadowRadius;
|
|
vec2 shadowMapSize;
|
|
float shadowCameraNear;
|
|
float shadowCameraFar;
|
|
};
|
|
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
|
|
#endif
|
|
float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
|
|
return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
|
|
}
|
|
vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
|
|
return unpackRGBATo2Half( texture2D( shadow, uv ) );
|
|
}
|
|
float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
|
|
float occlusion = 1.0;
|
|
vec2 distribution = texture2DDistribution( shadow, uv );
|
|
float hard_shadow = step( compare , distribution.x );
|
|
if (hard_shadow != 1.0 ) {
|
|
float distance = compare - distribution.x ;
|
|
float variance = max( 0.00000, distribution.y * distribution.y );
|
|
float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
|
|
}
|
|
return occlusion;
|
|
}
|
|
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
|
|
float shadow = 1.0;
|
|
shadowCoord.xyz /= shadowCoord.w;
|
|
shadowCoord.z += shadowBias;
|
|
bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );
|
|
bool inFrustum = all( inFrustumVec );
|
|
bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );
|
|
bool frustumTest = all( frustumTestVec );
|
|
if ( frustumTest ) {
|
|
#if defined( SHADOWMAP_TYPE_PCF )
|
|
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
|
|
float dx0 = - texelSize.x * shadowRadius;
|
|
float dy0 = - texelSize.y * shadowRadius;
|
|
float dx1 = + texelSize.x * shadowRadius;
|
|
float dy1 = + texelSize.y * shadowRadius;
|
|
float dx2 = dx0 / 2.0;
|
|
float dy2 = dy0 / 2.0;
|
|
float dx3 = dx1 / 2.0;
|
|
float dy3 = dy1 / 2.0;
|
|
shadow = (
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )
|
|
) * ( 1.0 / 17.0 );
|
|
#elif defined( SHADOWMAP_TYPE_PCF_SOFT )
|
|
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
|
|
float dx = texelSize.x;
|
|
float dy = texelSize.y;
|
|
vec2 uv = shadowCoord.xy;
|
|
vec2 f = fract( uv * shadowMapSize + 0.5 );
|
|
uv -= f * texelSize;
|
|
shadow = (
|
|
texture2DCompare( shadowMap, uv, shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
|
|
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
|
|
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
|
|
f.x ) +
|
|
mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
|
|
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
|
|
f.x ) +
|
|
mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
|
|
texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
|
|
f.y ) +
|
|
mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
|
|
texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
|
|
f.y ) +
|
|
mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
|
|
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
|
|
f.x ),
|
|
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
|
|
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
|
|
f.x ),
|
|
f.y )
|
|
) * ( 1.0 / 9.0 );
|
|
#elif defined( SHADOWMAP_TYPE_VSM )
|
|
shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
|
|
#else
|
|
shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
|
|
#endif
|
|
}
|
|
return shadow;
|
|
}
|
|
vec2 cubeToUV( vec3 v, float texelSizeY ) {
|
|
vec3 absV = abs( v );
|
|
float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
|
|
absV *= scaleToCube;
|
|
v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
|
|
vec2 planar = v.xy;
|
|
float almostATexel = 1.5 * texelSizeY;
|
|
float almostOne = 1.0 - almostATexel;
|
|
if ( absV.z >= almostOne ) {
|
|
if ( v.z > 0.0 )
|
|
planar.x = 4.0 - v.x;
|
|
} else if ( absV.x >= almostOne ) {
|
|
float signX = sign( v.x );
|
|
planar.x = v.z * signX + 2.0 * signX;
|
|
} else if ( absV.y >= almostOne ) {
|
|
float signY = sign( v.y );
|
|
planar.x = v.x + 2.0 * signY + 2.0;
|
|
planar.y = v.z * signY - 2.0;
|
|
}
|
|
return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
|
|
}
|
|
float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
|
|
vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
|
|
vec3 lightToPosition = shadowCoord.xyz;
|
|
float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
|
|
vec3 bd3D = normalize( lightToPosition );
|
|
#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
|
|
vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
|
|
return (
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +
|
|
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )
|
|
) * ( 1.0 / 9.0 );
|
|
#else
|
|
return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
|
|
#endif
|
|
}
|
|
#endif`, tg = `#ifdef USE_SHADOWMAP
|
|
#if NUM_DIR_LIGHT_SHADOWS > 0
|
|
uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];
|
|
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
|
|
struct DirectionalLightShadow {
|
|
float shadowBias;
|
|
float shadowNormalBias;
|
|
float shadowRadius;
|
|
vec2 shadowMapSize;
|
|
};
|
|
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
|
|
#endif
|
|
#if NUM_SPOT_LIGHT_SHADOWS > 0
|
|
uniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];
|
|
varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];
|
|
struct SpotLightShadow {
|
|
float shadowBias;
|
|
float shadowNormalBias;
|
|
float shadowRadius;
|
|
vec2 shadowMapSize;
|
|
};
|
|
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
|
|
#endif
|
|
#if NUM_POINT_LIGHT_SHADOWS > 0
|
|
uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];
|
|
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
|
|
struct PointLightShadow {
|
|
float shadowBias;
|
|
float shadowNormalBias;
|
|
float shadowRadius;
|
|
vec2 shadowMapSize;
|
|
float shadowCameraNear;
|
|
float shadowCameraFar;
|
|
};
|
|
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
|
|
#endif
|
|
#endif`, eg = `#ifdef USE_SHADOWMAP
|
|
#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0
|
|
vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
|
|
vec4 shadowWorldPosition;
|
|
#endif
|
|
#if NUM_DIR_LIGHT_SHADOWS > 0
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
|
|
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );
|
|
vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if NUM_SPOT_LIGHT_SHADOWS > 0
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
|
|
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );
|
|
vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if NUM_POINT_LIGHT_SHADOWS > 0
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
|
|
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );
|
|
vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#endif`, Ng = `float getShadowMask() {
|
|
float shadow = 1.0;
|
|
#ifdef USE_SHADOWMAP
|
|
#if NUM_DIR_LIGHT_SHADOWS > 0
|
|
DirectionalLightShadow directionalLight;
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
|
|
directionalLight = directionalLightShadows[ i ];
|
|
shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if NUM_SPOT_LIGHT_SHADOWS > 0
|
|
SpotLightShadow spotLight;
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
|
|
spotLight = spotLightShadows[ i ];
|
|
shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#if NUM_POINT_LIGHT_SHADOWS > 0
|
|
PointLightShadow pointLight;
|
|
#pragma unroll_loop_start
|
|
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
|
|
pointLight = pointLightShadows[ i ];
|
|
shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
|
|
}
|
|
#pragma unroll_loop_end
|
|
#endif
|
|
#endif
|
|
return shadow;
|
|
}`, ng = `#ifdef USE_SKINNING
|
|
mat4 boneMatX = getBoneMatrix( skinIndex.x );
|
|
mat4 boneMatY = getBoneMatrix( skinIndex.y );
|
|
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
|
|
mat4 boneMatW = getBoneMatrix( skinIndex.w );
|
|
#endif`, Ag = `#ifdef USE_SKINNING
|
|
uniform mat4 bindMatrix;
|
|
uniform mat4 bindMatrixInverse;
|
|
#ifdef BONE_TEXTURE
|
|
uniform highp sampler2D boneTexture;
|
|
uniform int boneTextureSize;
|
|
mat4 getBoneMatrix( const in float i ) {
|
|
float j = i * 4.0;
|
|
float x = mod( j, float( boneTextureSize ) );
|
|
float y = floor( j / float( boneTextureSize ) );
|
|
float dx = 1.0 / float( boneTextureSize );
|
|
float dy = 1.0 / float( boneTextureSize );
|
|
y = dy * ( y + 0.5 );
|
|
vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );
|
|
vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );
|
|
vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );
|
|
vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );
|
|
mat4 bone = mat4( v1, v2, v3, v4 );
|
|
return bone;
|
|
}
|
|
#else
|
|
uniform mat4 boneMatrices[ MAX_BONES ];
|
|
mat4 getBoneMatrix( const in float i ) {
|
|
mat4 bone = boneMatrices[ int(i) ];
|
|
return bone;
|
|
}
|
|
#endif
|
|
#endif`, zg = `#ifdef USE_SKINNING
|
|
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
|
|
vec4 skinned = vec4( 0.0 );
|
|
skinned += boneMatX * skinVertex * skinWeight.x;
|
|
skinned += boneMatY * skinVertex * skinWeight.y;
|
|
skinned += boneMatZ * skinVertex * skinWeight.z;
|
|
skinned += boneMatW * skinVertex * skinWeight.w;
|
|
transformed = ( bindMatrixInverse * skinned ).xyz;
|
|
#endif`, ig = `#ifdef USE_SKINNING
|
|
mat4 skinMatrix = mat4( 0.0 );
|
|
skinMatrix += skinWeight.x * boneMatX;
|
|
skinMatrix += skinWeight.y * boneMatY;
|
|
skinMatrix += skinWeight.z * boneMatZ;
|
|
skinMatrix += skinWeight.w * boneMatW;
|
|
skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;
|
|
objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;
|
|
#ifdef USE_TANGENT
|
|
objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
|
|
#endif
|
|
#endif`, Ig = `float specularStrength;
|
|
#ifdef USE_SPECULARMAP
|
|
vec4 texelSpecular = texture2D( specularMap, vUv );
|
|
specularStrength = texelSpecular.r;
|
|
#else
|
|
specularStrength = 1.0;
|
|
#endif`, Tg = `#ifdef USE_SPECULARMAP
|
|
uniform sampler2D specularMap;
|
|
#endif`, ug = `#if defined( TONE_MAPPING )
|
|
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
|
|
#endif`, gg = `#ifndef saturate
|
|
#define saturate( a ) clamp( a, 0.0, 1.0 )
|
|
#endif
|
|
uniform float toneMappingExposure;
|
|
vec3 LinearToneMapping( vec3 color ) {
|
|
return toneMappingExposure * color;
|
|
}
|
|
vec3 ReinhardToneMapping( vec3 color ) {
|
|
color *= toneMappingExposure;
|
|
return saturate( color / ( vec3( 1.0 ) + color ) );
|
|
}
|
|
vec3 OptimizedCineonToneMapping( vec3 color ) {
|
|
color *= toneMappingExposure;
|
|
color = max( vec3( 0.0 ), color - 0.004 );
|
|
return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
|
|
}
|
|
vec3 RRTAndODTFit( vec3 v ) {
|
|
vec3 a = v * ( v + 0.0245786 ) - 0.000090537;
|
|
vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;
|
|
return a / b;
|
|
}
|
|
vec3 ACESFilmicToneMapping( vec3 color ) {
|
|
const mat3 ACESInputMat = mat3(
|
|
vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),
|
|
vec3( 0.04823, 0.01566, 0.83777 )
|
|
);
|
|
const mat3 ACESOutputMat = mat3(
|
|
vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),
|
|
vec3( -0.07367, -0.00605, 1.07602 )
|
|
);
|
|
color *= toneMappingExposure / 0.6;
|
|
color = ACESInputMat * color;
|
|
color = RRTAndODTFit( color );
|
|
color = ACESOutputMat * color;
|
|
return saturate( color );
|
|
}
|
|
vec3 CustomToneMapping( vec3 color ) { return color; }`, rg = `#ifdef USE_TRANSMISSION
|
|
float transmissionAlpha = 1.0;
|
|
float transmissionFactor = transmission;
|
|
float thicknessFactor = thickness;
|
|
#ifdef USE_TRANSMISSIONMAP
|
|
transmissionFactor *= texture2D( transmissionMap, vUv ).r;
|
|
#endif
|
|
#ifdef USE_THICKNESSMAP
|
|
thicknessFactor *= texture2D( thicknessMap, vUv ).g;
|
|
#endif
|
|
vec3 pos = vWorldPosition;
|
|
vec3 v = normalize( cameraPosition - pos );
|
|
vec3 n = inverseTransformDirection( normal, viewMatrix );
|
|
vec4 transmission = getIBLVolumeRefraction(
|
|
n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,
|
|
pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,
|
|
attenuationColor, attenuationDistance );
|
|
totalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );
|
|
transmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );
|
|
#endif`, sg = `#ifdef USE_TRANSMISSION
|
|
uniform float transmission;
|
|
uniform float thickness;
|
|
uniform float attenuationDistance;
|
|
uniform vec3 attenuationColor;
|
|
#ifdef USE_TRANSMISSIONMAP
|
|
uniform sampler2D transmissionMap;
|
|
#endif
|
|
#ifdef USE_THICKNESSMAP
|
|
uniform sampler2D thicknessMap;
|
|
#endif
|
|
uniform vec2 transmissionSamplerSize;
|
|
uniform sampler2D transmissionSamplerMap;
|
|
uniform mat4 modelMatrix;
|
|
uniform mat4 projectionMatrix;
|
|
varying vec3 vWorldPosition;
|
|
vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
|
|
vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
|
|
vec3 modelScale;
|
|
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
|
|
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
|
|
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
}
|
|
float applyIorToRoughness( const in float roughness, const in float ior ) {
|
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
}
|
|
vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
|
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
#ifdef TEXTURE_LOD_EXT
|
|
return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
|
#else
|
|
return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
|
#endif
|
|
}
|
|
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
if ( attenuationDistance == 0.0 ) {
|
|
return radiance;
|
|
} else {
|
|
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
|
|
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance * radiance;
|
|
}
|
|
}
|
|
vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
|
|
const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
|
|
const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,
|
|
const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
vec3 refractedRayExit = position + transmissionRay;
|
|
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
|
|
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
|
|
refractionCoords += 1.0;
|
|
refractionCoords /= 2.0;
|
|
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
|
|
vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );
|
|
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
|
|
return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );
|
|
}
|
|
#endif`, cg = `#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )
|
|
varying vec2 vUv;
|
|
#endif`, jg = `#ifdef USE_UV
|
|
#ifdef UVS_VERTEX_ONLY
|
|
vec2 vUv;
|
|
#else
|
|
varying vec2 vUv;
|
|
#endif
|
|
uniform mat3 uvTransform;
|
|
#endif`, yg = `#ifdef USE_UV
|
|
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
|
#endif`, og = `#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
|
varying vec2 vUv2;
|
|
#endif`, ag = `#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
|
attribute vec2 uv2;
|
|
varying vec2 vUv2;
|
|
uniform mat3 uv2Transform;
|
|
#endif`, Cg = `#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
|
vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;
|
|
#endif`, Lg = `#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )
|
|
vec4 worldPosition = vec4( transformed, 1.0 );
|
|
#ifdef USE_INSTANCING
|
|
worldPosition = instanceMatrix * worldPosition;
|
|
#endif
|
|
worldPosition = modelMatrix * worldPosition;
|
|
#endif`;
|
|
const wg = `varying vec2 vUv;
|
|
uniform mat3 uvTransform;
|
|
void main() {
|
|
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
|
gl_Position = vec4( position.xy, 1.0, 1.0 );
|
|
}`, Og = `uniform sampler2D t2D;
|
|
varying vec2 vUv;
|
|
void main() {
|
|
gl_FragColor = texture2D( t2D, vUv );
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
}`, xg = `varying vec3 vWorldDirection;
|
|
#include <common>
|
|
void main() {
|
|
vWorldDirection = transformDirection( position, modelMatrix );
|
|
#include <begin_vertex>
|
|
#include <project_vertex>
|
|
gl_Position.z = gl_Position.w;
|
|
}`, Eg = `#include <envmap_common_pars_fragment>
|
|
uniform float opacity;
|
|
varying vec3 vWorldDirection;
|
|
#include <cube_uv_reflection_fragment>
|
|
void main() {
|
|
vec3 vReflect = vWorldDirection;
|
|
#include <envmap_fragment>
|
|
gl_FragColor = envColor;
|
|
gl_FragColor.a *= opacity;
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
}`, lg = `#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <displacementmap_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
varying vec2 vHighPrecisionZW;
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <skinbase_vertex>
|
|
#ifdef USE_DISPLACEMENTMAP
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinnormal_vertex>
|
|
#endif
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <displacementmap_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
vHighPrecisionZW = gl_Position.zw;
|
|
}`, dg = `#if DEPTH_PACKING == 3200
|
|
uniform float opacity;
|
|
#endif
|
|
#include <common>
|
|
#include <packing>
|
|
#include <uv_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
varying vec2 vHighPrecisionZW;
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( 1.0 );
|
|
#if DEPTH_PACKING == 3200
|
|
diffuseColor.a = opacity;
|
|
#endif
|
|
#include <map_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
#include <logdepthbuf_fragment>
|
|
float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;
|
|
#if DEPTH_PACKING == 3200
|
|
gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );
|
|
#elif DEPTH_PACKING == 3201
|
|
gl_FragColor = packDepthToRGBA( fragCoordZ );
|
|
#endif
|
|
}`, vg = `#define DISTANCE
|
|
varying vec3 vWorldPosition;
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <displacementmap_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <skinbase_vertex>
|
|
#ifdef USE_DISPLACEMENTMAP
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinnormal_vertex>
|
|
#endif
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <displacementmap_vertex>
|
|
#include <project_vertex>
|
|
#include <worldpos_vertex>
|
|
#include <clipping_planes_vertex>
|
|
vWorldPosition = worldPosition.xyz;
|
|
}`, pg = `#define DISTANCE
|
|
uniform vec3 referencePosition;
|
|
uniform float nearDistance;
|
|
uniform float farDistance;
|
|
varying vec3 vWorldPosition;
|
|
#include <common>
|
|
#include <packing>
|
|
#include <uv_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main () {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( 1.0 );
|
|
#include <map_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
float dist = length( vWorldPosition - referencePosition );
|
|
dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
|
|
dist = saturate( dist );
|
|
gl_FragColor = packDepthToRGBA( dist );
|
|
}`, hg = `varying vec3 vWorldDirection;
|
|
#include <common>
|
|
void main() {
|
|
vWorldDirection = transformDirection( position, modelMatrix );
|
|
#include <begin_vertex>
|
|
#include <project_vertex>
|
|
}`, Yg = `uniform sampler2D tEquirect;
|
|
varying vec3 vWorldDirection;
|
|
#include <common>
|
|
void main() {
|
|
vec3 direction = normalize( vWorldDirection );
|
|
vec2 sampleUV = equirectUv( direction );
|
|
gl_FragColor = texture2D( tEquirect, sampleUV );
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
}`, Ug = `uniform float scale;
|
|
attribute float lineDistance;
|
|
varying float vLineDistance;
|
|
#include <common>
|
|
#include <color_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
vLineDistance = scale * lineDistance;
|
|
#include <color_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
#include <fog_vertex>
|
|
}`, Qg = `uniform vec3 diffuse;
|
|
uniform float opacity;
|
|
uniform float dashSize;
|
|
uniform float totalSize;
|
|
varying float vLineDistance;
|
|
#include <common>
|
|
#include <color_pars_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
if ( mod( vLineDistance, totalSize ) > dashSize ) {
|
|
discard;
|
|
}
|
|
vec3 outgoingLight = vec3( 0.0 );
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
#include <logdepthbuf_fragment>
|
|
#include <color_fragment>
|
|
outgoingLight = diffuseColor.rgb;
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
}`, fg = `#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <uv2_pars_vertex>
|
|
#include <envmap_pars_vertex>
|
|
#include <color_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <uv2_vertex>
|
|
#include <color_vertex>
|
|
#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#endif
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
#include <worldpos_vertex>
|
|
#include <envmap_vertex>
|
|
#include <fog_vertex>
|
|
}`, mg = `uniform vec3 diffuse;
|
|
uniform float opacity;
|
|
#ifndef FLAT_SHADED
|
|
varying vec3 vNormal;
|
|
#endif
|
|
#include <common>
|
|
#include <dithering_pars_fragment>
|
|
#include <color_pars_fragment>
|
|
#include <uv_pars_fragment>
|
|
#include <uv2_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <aomap_pars_fragment>
|
|
#include <lightmap_pars_fragment>
|
|
#include <envmap_common_pars_fragment>
|
|
#include <envmap_pars_fragment>
|
|
#include <cube_uv_reflection_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <specularmap_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_fragment>
|
|
#include <color_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
#include <specularmap_fragment>
|
|
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
#ifdef USE_LIGHTMAP
|
|
vec4 lightMapTexel= texture2D( lightMap, vUv2 );
|
|
reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity;
|
|
#else
|
|
reflectedLight.indirectDiffuse += vec3( 1.0 );
|
|
#endif
|
|
#include <aomap_fragment>
|
|
reflectedLight.indirectDiffuse *= diffuseColor.rgb;
|
|
vec3 outgoingLight = reflectedLight.indirectDiffuse;
|
|
#include <envmap_fragment>
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
#include <dithering_fragment>
|
|
}`, kg = `#define LAMBERT
|
|
varying vec3 vLightFront;
|
|
varying vec3 vIndirectFront;
|
|
#ifdef DOUBLE_SIDED
|
|
varying vec3 vLightBack;
|
|
varying vec3 vIndirectBack;
|
|
#endif
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <uv2_pars_vertex>
|
|
#include <envmap_pars_vertex>
|
|
#include <bsdfs>
|
|
#include <lights_pars_begin>
|
|
#include <color_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <shadowmap_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <uv2_vertex>
|
|
#include <color_vertex>
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
#include <worldpos_vertex>
|
|
#include <envmap_vertex>
|
|
#include <lights_lambert_vertex>
|
|
#include <shadowmap_vertex>
|
|
#include <fog_vertex>
|
|
}`, Sg = `uniform vec3 diffuse;
|
|
uniform vec3 emissive;
|
|
uniform float opacity;
|
|
varying vec3 vLightFront;
|
|
varying vec3 vIndirectFront;
|
|
#ifdef DOUBLE_SIDED
|
|
varying vec3 vLightBack;
|
|
varying vec3 vIndirectBack;
|
|
#endif
|
|
#include <common>
|
|
#include <packing>
|
|
#include <dithering_pars_fragment>
|
|
#include <color_pars_fragment>
|
|
#include <uv_pars_fragment>
|
|
#include <uv2_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <aomap_pars_fragment>
|
|
#include <lightmap_pars_fragment>
|
|
#include <emissivemap_pars_fragment>
|
|
#include <envmap_common_pars_fragment>
|
|
#include <envmap_pars_fragment>
|
|
#include <cube_uv_reflection_fragment>
|
|
#include <bsdfs>
|
|
#include <lights_pars_begin>
|
|
#include <fog_pars_fragment>
|
|
#include <shadowmap_pars_fragment>
|
|
#include <shadowmask_pars_fragment>
|
|
#include <specularmap_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
vec3 totalEmissiveRadiance = emissive;
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_fragment>
|
|
#include <color_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
#include <specularmap_fragment>
|
|
#include <emissivemap_fragment>
|
|
#ifdef DOUBLE_SIDED
|
|
reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;
|
|
#else
|
|
reflectedLight.indirectDiffuse += vIndirectFront;
|
|
#endif
|
|
#include <lightmap_fragment>
|
|
reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );
|
|
#ifdef DOUBLE_SIDED
|
|
reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;
|
|
#else
|
|
reflectedLight.directDiffuse = vLightFront;
|
|
#endif
|
|
reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();
|
|
#include <aomap_fragment>
|
|
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
|
|
#include <envmap_fragment>
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
#include <dithering_fragment>
|
|
}`, Zg = `#define MATCAP
|
|
varying vec3 vViewPosition;
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <color_pars_vertex>
|
|
#include <displacementmap_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <normal_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <color_vertex>
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#include <normal_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <displacementmap_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
#include <fog_vertex>
|
|
vViewPosition = - mvPosition.xyz;
|
|
}`, _g = `#define MATCAP
|
|
uniform vec3 diffuse;
|
|
uniform float opacity;
|
|
uniform sampler2D matcap;
|
|
varying vec3 vViewPosition;
|
|
#include <common>
|
|
#include <dithering_pars_fragment>
|
|
#include <color_pars_fragment>
|
|
#include <uv_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <normal_pars_fragment>
|
|
#include <bumpmap_pars_fragment>
|
|
#include <normalmap_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_fragment>
|
|
#include <color_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
#include <normal_fragment_begin>
|
|
#include <normal_fragment_maps>
|
|
vec3 viewDir = normalize( vViewPosition );
|
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
vec3 y = cross( viewDir, x );
|
|
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;
|
|
#ifdef USE_MATCAP
|
|
vec4 matcapColor = texture2D( matcap, uv );
|
|
#else
|
|
vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );
|
|
#endif
|
|
vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
#include <dithering_fragment>
|
|
}`, bg = `#define NORMAL
|
|
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
|
varying vec3 vViewPosition;
|
|
#endif
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <displacementmap_pars_vertex>
|
|
#include <normal_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#include <normal_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <displacementmap_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
|
vViewPosition = - mvPosition.xyz;
|
|
#endif
|
|
}`, Kg = `#define NORMAL
|
|
uniform float opacity;
|
|
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
|
varying vec3 vViewPosition;
|
|
#endif
|
|
#include <packing>
|
|
#include <uv_pars_fragment>
|
|
#include <normal_pars_fragment>
|
|
#include <bumpmap_pars_fragment>
|
|
#include <normalmap_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
#include <logdepthbuf_fragment>
|
|
#include <normal_fragment_begin>
|
|
#include <normal_fragment_maps>
|
|
gl_FragColor = vec4( packNormalToRGB( normal ), opacity );
|
|
#ifdef OPAQUE
|
|
gl_FragColor.a = 1.0;
|
|
#endif
|
|
}`, Rg = `#define PHONG
|
|
varying vec3 vViewPosition;
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <uv2_pars_vertex>
|
|
#include <displacementmap_pars_vertex>
|
|
#include <envmap_pars_vertex>
|
|
#include <color_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <normal_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <shadowmap_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <uv2_vertex>
|
|
#include <color_vertex>
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#include <normal_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <displacementmap_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
vViewPosition = - mvPosition.xyz;
|
|
#include <worldpos_vertex>
|
|
#include <envmap_vertex>
|
|
#include <shadowmap_vertex>
|
|
#include <fog_vertex>
|
|
}`, Pg = `#define PHONG
|
|
uniform vec3 diffuse;
|
|
uniform vec3 emissive;
|
|
uniform vec3 specular;
|
|
uniform float shininess;
|
|
uniform float opacity;
|
|
#include <common>
|
|
#include <packing>
|
|
#include <dithering_pars_fragment>
|
|
#include <color_pars_fragment>
|
|
#include <uv_pars_fragment>
|
|
#include <uv2_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <aomap_pars_fragment>
|
|
#include <lightmap_pars_fragment>
|
|
#include <emissivemap_pars_fragment>
|
|
#include <envmap_common_pars_fragment>
|
|
#include <envmap_pars_fragment>
|
|
#include <cube_uv_reflection_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <bsdfs>
|
|
#include <lights_pars_begin>
|
|
#include <normal_pars_fragment>
|
|
#include <lights_phong_pars_fragment>
|
|
#include <shadowmap_pars_fragment>
|
|
#include <bumpmap_pars_fragment>
|
|
#include <normalmap_pars_fragment>
|
|
#include <specularmap_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
vec3 totalEmissiveRadiance = emissive;
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_fragment>
|
|
#include <color_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
#include <specularmap_fragment>
|
|
#include <normal_fragment_begin>
|
|
#include <normal_fragment_maps>
|
|
#include <emissivemap_fragment>
|
|
#include <lights_phong_fragment>
|
|
#include <lights_fragment_begin>
|
|
#include <lights_fragment_maps>
|
|
#include <lights_fragment_end>
|
|
#include <aomap_fragment>
|
|
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;
|
|
#include <envmap_fragment>
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
#include <dithering_fragment>
|
|
}`, Fg = `#define STANDARD
|
|
varying vec3 vViewPosition;
|
|
#ifdef USE_TRANSMISSION
|
|
varying vec3 vWorldPosition;
|
|
#endif
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <uv2_pars_vertex>
|
|
#include <displacementmap_pars_vertex>
|
|
#include <color_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <normal_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <shadowmap_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <uv2_vertex>
|
|
#include <color_vertex>
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#include <normal_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <displacementmap_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
vViewPosition = - mvPosition.xyz;
|
|
#include <worldpos_vertex>
|
|
#include <shadowmap_vertex>
|
|
#include <fog_vertex>
|
|
#ifdef USE_TRANSMISSION
|
|
vWorldPosition = worldPosition.xyz;
|
|
#endif
|
|
}`, Bg = `#define STANDARD
|
|
#ifdef PHYSICAL
|
|
#define IOR
|
|
#define SPECULAR
|
|
#endif
|
|
uniform vec3 diffuse;
|
|
uniform vec3 emissive;
|
|
uniform float roughness;
|
|
uniform float metalness;
|
|
uniform float opacity;
|
|
#ifdef IOR
|
|
uniform float ior;
|
|
#endif
|
|
#ifdef SPECULAR
|
|
uniform float specularIntensity;
|
|
uniform vec3 specularColor;
|
|
#ifdef USE_SPECULARINTENSITYMAP
|
|
uniform sampler2D specularIntensityMap;
|
|
#endif
|
|
#ifdef USE_SPECULARCOLORMAP
|
|
uniform sampler2D specularColorMap;
|
|
#endif
|
|
#endif
|
|
#ifdef USE_CLEARCOAT
|
|
uniform float clearcoat;
|
|
uniform float clearcoatRoughness;
|
|
#endif
|
|
#ifdef USE_SHEEN
|
|
uniform vec3 sheenColor;
|
|
uniform float sheenRoughness;
|
|
#ifdef USE_SHEENCOLORMAP
|
|
uniform sampler2D sheenColorMap;
|
|
#endif
|
|
#ifdef USE_SHEENROUGHNESSMAP
|
|
uniform sampler2D sheenRoughnessMap;
|
|
#endif
|
|
#endif
|
|
varying vec3 vViewPosition;
|
|
#include <common>
|
|
#include <packing>
|
|
#include <dithering_pars_fragment>
|
|
#include <color_pars_fragment>
|
|
#include <uv_pars_fragment>
|
|
#include <uv2_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <aomap_pars_fragment>
|
|
#include <lightmap_pars_fragment>
|
|
#include <emissivemap_pars_fragment>
|
|
#include <bsdfs>
|
|
#include <cube_uv_reflection_fragment>
|
|
#include <envmap_common_pars_fragment>
|
|
#include <envmap_physical_pars_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <lights_pars_begin>
|
|
#include <normal_pars_fragment>
|
|
#include <lights_physical_pars_fragment>
|
|
#include <transmission_pars_fragment>
|
|
#include <shadowmap_pars_fragment>
|
|
#include <bumpmap_pars_fragment>
|
|
#include <normalmap_pars_fragment>
|
|
#include <clearcoat_pars_fragment>
|
|
#include <roughnessmap_pars_fragment>
|
|
#include <metalnessmap_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
vec3 totalEmissiveRadiance = emissive;
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_fragment>
|
|
#include <color_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
#include <roughnessmap_fragment>
|
|
#include <metalnessmap_fragment>
|
|
#include <normal_fragment_begin>
|
|
#include <normal_fragment_maps>
|
|
#include <clearcoat_normal_fragment_begin>
|
|
#include <clearcoat_normal_fragment_maps>
|
|
#include <emissivemap_fragment>
|
|
#include <lights_physical_fragment>
|
|
#include <lights_fragment_begin>
|
|
#include <lights_fragment_maps>
|
|
#include <lights_fragment_end>
|
|
#include <aomap_fragment>
|
|
vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
|
|
vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
|
|
#include <transmission_fragment>
|
|
vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
|
|
#ifdef USE_SHEEN
|
|
float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
|
|
outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;
|
|
#endif
|
|
#ifdef USE_CLEARCOAT
|
|
float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
|
|
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
|
|
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
|
|
#endif
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
#include <dithering_fragment>
|
|
}`, Vg = `#define TOON
|
|
varying vec3 vViewPosition;
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <uv2_pars_vertex>
|
|
#include <displacementmap_pars_vertex>
|
|
#include <color_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <normal_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <shadowmap_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
#include <uv2_vertex>
|
|
#include <color_vertex>
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#include <normal_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <displacementmap_vertex>
|
|
#include <project_vertex>
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
vViewPosition = - mvPosition.xyz;
|
|
#include <worldpos_vertex>
|
|
#include <shadowmap_vertex>
|
|
#include <fog_vertex>
|
|
}`, Hg = `#define TOON
|
|
uniform vec3 diffuse;
|
|
uniform vec3 emissive;
|
|
uniform float opacity;
|
|
#include <common>
|
|
#include <packing>
|
|
#include <dithering_pars_fragment>
|
|
#include <color_pars_fragment>
|
|
#include <uv_pars_fragment>
|
|
#include <uv2_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <aomap_pars_fragment>
|
|
#include <lightmap_pars_fragment>
|
|
#include <emissivemap_pars_fragment>
|
|
#include <gradientmap_pars_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <bsdfs>
|
|
#include <lights_pars_begin>
|
|
#include <normal_pars_fragment>
|
|
#include <lights_toon_pars_fragment>
|
|
#include <shadowmap_pars_fragment>
|
|
#include <bumpmap_pars_fragment>
|
|
#include <normalmap_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
vec3 totalEmissiveRadiance = emissive;
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_fragment>
|
|
#include <color_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
#include <normal_fragment_begin>
|
|
#include <normal_fragment_maps>
|
|
#include <emissivemap_fragment>
|
|
#include <lights_toon_fragment>
|
|
#include <lights_fragment_begin>
|
|
#include <lights_fragment_maps>
|
|
#include <lights_fragment_end>
|
|
#include <aomap_fragment>
|
|
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
#include <dithering_fragment>
|
|
}`, Gg = `uniform float size;
|
|
uniform float scale;
|
|
#include <common>
|
|
#include <color_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <color_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <project_vertex>
|
|
gl_PointSize = size;
|
|
#ifdef USE_SIZEATTENUATION
|
|
bool isPerspective = isPerspectiveMatrix( projectionMatrix );
|
|
if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );
|
|
#endif
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
#include <worldpos_vertex>
|
|
#include <fog_vertex>
|
|
}`, Wg = `uniform vec3 diffuse;
|
|
uniform float opacity;
|
|
#include <common>
|
|
#include <color_pars_fragment>
|
|
#include <map_particle_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec3 outgoingLight = vec3( 0.0 );
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_particle_fragment>
|
|
#include <color_fragment>
|
|
#include <alphatest_fragment>
|
|
outgoingLight = diffuseColor.rgb;
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
#include <premultiplied_alpha_fragment>
|
|
}`, qg = `#include <common>
|
|
#include <fog_pars_vertex>
|
|
#include <morphtarget_pars_vertex>
|
|
#include <skinning_pars_vertex>
|
|
#include <shadowmap_pars_vertex>
|
|
void main() {
|
|
#include <beginnormal_vertex>
|
|
#include <morphnormal_vertex>
|
|
#include <skinbase_vertex>
|
|
#include <skinnormal_vertex>
|
|
#include <defaultnormal_vertex>
|
|
#include <begin_vertex>
|
|
#include <morphtarget_vertex>
|
|
#include <skinning_vertex>
|
|
#include <project_vertex>
|
|
#include <worldpos_vertex>
|
|
#include <shadowmap_vertex>
|
|
#include <fog_vertex>
|
|
}`, Xg = `uniform vec3 color;
|
|
uniform float opacity;
|
|
#include <common>
|
|
#include <packing>
|
|
#include <fog_pars_fragment>
|
|
#include <bsdfs>
|
|
#include <lights_pars_begin>
|
|
#include <shadowmap_pars_fragment>
|
|
#include <shadowmask_pars_fragment>
|
|
void main() {
|
|
gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
}`, Jg = `uniform float rotation;
|
|
uniform vec2 center;
|
|
#include <common>
|
|
#include <uv_pars_vertex>
|
|
#include <fog_pars_vertex>
|
|
#include <logdepthbuf_pars_vertex>
|
|
#include <clipping_planes_pars_vertex>
|
|
void main() {
|
|
#include <uv_vertex>
|
|
vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
vec2 scale;
|
|
scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );
|
|
scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );
|
|
#ifndef USE_SIZEATTENUATION
|
|
bool isPerspective = isPerspectiveMatrix( projectionMatrix );
|
|
if ( isPerspective ) scale *= - mvPosition.z;
|
|
#endif
|
|
vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;
|
|
vec2 rotatedPosition;
|
|
rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
|
|
rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
|
|
mvPosition.xy += rotatedPosition;
|
|
gl_Position = projectionMatrix * mvPosition;
|
|
#include <logdepthbuf_vertex>
|
|
#include <clipping_planes_vertex>
|
|
#include <fog_vertex>
|
|
}`, $g = `uniform vec3 diffuse;
|
|
uniform float opacity;
|
|
#include <common>
|
|
#include <uv_pars_fragment>
|
|
#include <map_pars_fragment>
|
|
#include <alphamap_pars_fragment>
|
|
#include <alphatest_pars_fragment>
|
|
#include <fog_pars_fragment>
|
|
#include <logdepthbuf_pars_fragment>
|
|
#include <clipping_planes_pars_fragment>
|
|
void main() {
|
|
#include <clipping_planes_fragment>
|
|
vec3 outgoingLight = vec3( 0.0 );
|
|
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
#include <logdepthbuf_fragment>
|
|
#include <map_fragment>
|
|
#include <alphamap_fragment>
|
|
#include <alphatest_fragment>
|
|
outgoingLight = diffuseColor.rgb;
|
|
#include <output_fragment>
|
|
#include <tonemapping_fragment>
|
|
#include <encodings_fragment>
|
|
#include <fog_fragment>
|
|
}`, YM = {
|
|
alphamap_fragment: vT,
|
|
alphamap_pars_fragment: pT,
|
|
alphatest_fragment: hT,
|
|
alphatest_pars_fragment: YT,
|
|
aomap_fragment: UT,
|
|
aomap_pars_fragment: QT,
|
|
begin_vertex: fT,
|
|
beginnormal_vertex: mT,
|
|
bsdfs: kT,
|
|
bumpmap_pars_fragment: ST,
|
|
clipping_planes_fragment: ZT,
|
|
clipping_planes_pars_fragment: _T,
|
|
clipping_planes_pars_vertex: bT,
|
|
clipping_planes_vertex: KT,
|
|
color_fragment: RT,
|
|
color_pars_fragment: PT,
|
|
color_pars_vertex: FT,
|
|
color_vertex: BT,
|
|
common: VT,
|
|
cube_uv_reflection_fragment: HT,
|
|
defaultnormal_vertex: GT,
|
|
displacementmap_pars_vertex: WT,
|
|
displacementmap_vertex: qT,
|
|
emissivemap_fragment: XT,
|
|
emissivemap_pars_fragment: JT,
|
|
encodings_fragment: $T,
|
|
encodings_pars_fragment: Mu,
|
|
envmap_fragment: Du,
|
|
envmap_common_pars_fragment: tu,
|
|
envmap_pars_fragment: eu,
|
|
envmap_pars_vertex: Nu,
|
|
envmap_physical_pars_fragment: cu,
|
|
envmap_vertex: nu,
|
|
fog_vertex: Au,
|
|
fog_pars_vertex: zu,
|
|
fog_fragment: iu,
|
|
fog_pars_fragment: Iu,
|
|
gradientmap_pars_fragment: Tu,
|
|
lightmap_fragment: uu,
|
|
lightmap_pars_fragment: gu,
|
|
lights_lambert_vertex: ru,
|
|
lights_pars_begin: su,
|
|
lights_toon_fragment: ju,
|
|
lights_toon_pars_fragment: yu,
|
|
lights_phong_fragment: ou,
|
|
lights_phong_pars_fragment: au,
|
|
lights_physical_fragment: Cu,
|
|
lights_physical_pars_fragment: Lu,
|
|
lights_fragment_begin: wu,
|
|
lights_fragment_maps: Ou,
|
|
lights_fragment_end: xu,
|
|
logdepthbuf_fragment: Eu,
|
|
logdepthbuf_pars_fragment: lu,
|
|
logdepthbuf_pars_vertex: du,
|
|
logdepthbuf_vertex: vu,
|
|
map_fragment: pu,
|
|
map_pars_fragment: hu,
|
|
map_particle_fragment: Yu,
|
|
map_particle_pars_fragment: Uu,
|
|
metalnessmap_fragment: Qu,
|
|
metalnessmap_pars_fragment: fu,
|
|
morphnormal_vertex: mu,
|
|
morphtarget_pars_vertex: ku,
|
|
morphtarget_vertex: Su,
|
|
normal_fragment_begin: Zu,
|
|
normal_fragment_maps: _u,
|
|
normal_pars_fragment: bu,
|
|
normal_pars_vertex: Ku,
|
|
normal_vertex: Ru,
|
|
normalmap_pars_fragment: Pu,
|
|
clearcoat_normal_fragment_begin: Fu,
|
|
clearcoat_normal_fragment_maps: Bu,
|
|
clearcoat_pars_fragment: Vu,
|
|
output_fragment: Hu,
|
|
packing: Gu,
|
|
premultiplied_alpha_fragment: Wu,
|
|
project_vertex: qu,
|
|
dithering_fragment: Xu,
|
|
dithering_pars_fragment: Ju,
|
|
roughnessmap_fragment: $u,
|
|
roughnessmap_pars_fragment: Mg,
|
|
shadowmap_pars_fragment: Dg,
|
|
shadowmap_pars_vertex: tg,
|
|
shadowmap_vertex: eg,
|
|
shadowmask_pars_fragment: Ng,
|
|
skinbase_vertex: ng,
|
|
skinning_pars_vertex: Ag,
|
|
skinning_vertex: zg,
|
|
skinnormal_vertex: ig,
|
|
specularmap_fragment: Ig,
|
|
specularmap_pars_fragment: Tg,
|
|
tonemapping_fragment: ug,
|
|
tonemapping_pars_fragment: gg,
|
|
transmission_fragment: rg,
|
|
transmission_pars_fragment: sg,
|
|
uv_pars_fragment: cg,
|
|
uv_pars_vertex: jg,
|
|
uv_vertex: yg,
|
|
uv2_pars_fragment: og,
|
|
uv2_pars_vertex: ag,
|
|
uv2_vertex: Cg,
|
|
worldpos_vertex: Lg,
|
|
background_vert: wg,
|
|
background_frag: Og,
|
|
cube_vert: xg,
|
|
cube_frag: Eg,
|
|
depth_vert: lg,
|
|
depth_frag: dg,
|
|
distanceRGBA_vert: vg,
|
|
distanceRGBA_frag: pg,
|
|
equirect_vert: hg,
|
|
equirect_frag: Yg,
|
|
linedashed_vert: Ug,
|
|
linedashed_frag: Qg,
|
|
meshbasic_vert: fg,
|
|
meshbasic_frag: mg,
|
|
meshlambert_vert: kg,
|
|
meshlambert_frag: Sg,
|
|
meshmatcap_vert: Zg,
|
|
meshmatcap_frag: _g,
|
|
meshnormal_vert: bg,
|
|
meshnormal_frag: Kg,
|
|
meshphong_vert: Rg,
|
|
meshphong_frag: Pg,
|
|
meshphysical_vert: Fg,
|
|
meshphysical_frag: Bg,
|
|
meshtoon_vert: Vg,
|
|
meshtoon_frag: Hg,
|
|
points_vert: Gg,
|
|
points_frag: Wg,
|
|
shadow_vert: qg,
|
|
shadow_frag: Xg,
|
|
sprite_vert: Jg,
|
|
sprite_frag: $g
|
|
}, MM = {
|
|
common: {
|
|
diffuse: { value: new cM(16777215) },
|
|
opacity: { value: 1 },
|
|
map: { value: null },
|
|
uvTransform: { value: new gD() },
|
|
uv2Transform: { value: new gD() },
|
|
alphaMap: { value: null },
|
|
alphaTest: { value: 0 }
|
|
},
|
|
specularmap: {
|
|
specularMap: { value: null }
|
|
},
|
|
envmap: {
|
|
envMap: { value: null },
|
|
flipEnvMap: { value: -1 },
|
|
reflectivity: { value: 1 },
|
|
ior: { value: 1.5 },
|
|
refractionRatio: { value: 0.98 }
|
|
},
|
|
aomap: {
|
|
aoMap: { value: null },
|
|
aoMapIntensity: { value: 1 }
|
|
},
|
|
lightmap: {
|
|
lightMap: { value: null },
|
|
lightMapIntensity: { value: 1 }
|
|
},
|
|
emissivemap: {
|
|
emissiveMap: { value: null }
|
|
},
|
|
bumpmap: {
|
|
bumpMap: { value: null },
|
|
bumpScale: { value: 1 }
|
|
},
|
|
normalmap: {
|
|
normalMap: { value: null },
|
|
normalScale: { value: new q(1, 1) }
|
|
},
|
|
displacementmap: {
|
|
displacementMap: { value: null },
|
|
displacementScale: { value: 1 },
|
|
displacementBias: { value: 0 }
|
|
},
|
|
roughnessmap: {
|
|
roughnessMap: { value: null }
|
|
},
|
|
metalnessmap: {
|
|
metalnessMap: { value: null }
|
|
},
|
|
gradientmap: {
|
|
gradientMap: { value: null }
|
|
},
|
|
fog: {
|
|
fogDensity: { value: 25e-5 },
|
|
fogNear: { value: 1 },
|
|
fogFar: { value: 2e3 },
|
|
fogColor: { value: new cM(16777215) }
|
|
},
|
|
lights: {
|
|
ambientLightColor: { value: [] },
|
|
lightProbe: { value: [] },
|
|
directionalLights: { value: [], properties: {
|
|
direction: {},
|
|
color: {}
|
|
} },
|
|
directionalLightShadows: { value: [], properties: {
|
|
shadowBias: {},
|
|
shadowNormalBias: {},
|
|
shadowRadius: {},
|
|
shadowMapSize: {}
|
|
} },
|
|
directionalShadowMap: { value: [] },
|
|
directionalShadowMatrix: { value: [] },
|
|
spotLights: { value: [], properties: {
|
|
color: {},
|
|
position: {},
|
|
direction: {},
|
|
distance: {},
|
|
coneCos: {},
|
|
penumbraCos: {},
|
|
decay: {}
|
|
} },
|
|
spotLightShadows: { value: [], properties: {
|
|
shadowBias: {},
|
|
shadowNormalBias: {},
|
|
shadowRadius: {},
|
|
shadowMapSize: {}
|
|
} },
|
|
spotShadowMap: { value: [] },
|
|
spotShadowMatrix: { value: [] },
|
|
pointLights: { value: [], properties: {
|
|
color: {},
|
|
position: {},
|
|
decay: {},
|
|
distance: {}
|
|
} },
|
|
pointLightShadows: { value: [], properties: {
|
|
shadowBias: {},
|
|
shadowNormalBias: {},
|
|
shadowRadius: {},
|
|
shadowMapSize: {},
|
|
shadowCameraNear: {},
|
|
shadowCameraFar: {}
|
|
} },
|
|
pointShadowMap: { value: [] },
|
|
pointShadowMatrix: { value: [] },
|
|
hemisphereLights: { value: [], properties: {
|
|
direction: {},
|
|
skyColor: {},
|
|
groundColor: {}
|
|
} },
|
|
rectAreaLights: { value: [], properties: {
|
|
color: {},
|
|
position: {},
|
|
width: {},
|
|
height: {}
|
|
} },
|
|
ltc_1: { value: null },
|
|
ltc_2: { value: null }
|
|
},
|
|
points: {
|
|
diffuse: { value: new cM(16777215) },
|
|
opacity: { value: 1 },
|
|
size: { value: 1 },
|
|
scale: { value: 1 },
|
|
map: { value: null },
|
|
alphaMap: { value: null },
|
|
alphaTest: { value: 0 },
|
|
uvTransform: { value: new gD() }
|
|
},
|
|
sprite: {
|
|
diffuse: { value: new cM(16777215) },
|
|
opacity: { value: 1 },
|
|
center: { value: new q(0.5, 0.5) },
|
|
rotation: { value: 0 },
|
|
map: { value: null },
|
|
alphaMap: { value: null },
|
|
alphaTest: { value: 0 },
|
|
uvTransform: { value: new gD() }
|
|
}
|
|
}, _D = {
|
|
basic: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.specularmap,
|
|
MM.envmap,
|
|
MM.aomap,
|
|
MM.lightmap,
|
|
MM.fog
|
|
]),
|
|
vertexShader: YM.meshbasic_vert,
|
|
fragmentShader: YM.meshbasic_frag
|
|
},
|
|
lambert: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.specularmap,
|
|
MM.envmap,
|
|
MM.aomap,
|
|
MM.lightmap,
|
|
MM.emissivemap,
|
|
MM.fog,
|
|
MM.lights,
|
|
{
|
|
emissive: { value: new cM(0) }
|
|
}
|
|
]),
|
|
vertexShader: YM.meshlambert_vert,
|
|
fragmentShader: YM.meshlambert_frag
|
|
},
|
|
phong: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.specularmap,
|
|
MM.envmap,
|
|
MM.aomap,
|
|
MM.lightmap,
|
|
MM.emissivemap,
|
|
MM.bumpmap,
|
|
MM.normalmap,
|
|
MM.displacementmap,
|
|
MM.fog,
|
|
MM.lights,
|
|
{
|
|
emissive: { value: new cM(0) },
|
|
specular: { value: new cM(1118481) },
|
|
shininess: { value: 30 }
|
|
}
|
|
]),
|
|
vertexShader: YM.meshphong_vert,
|
|
fragmentShader: YM.meshphong_frag
|
|
},
|
|
standard: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.envmap,
|
|
MM.aomap,
|
|
MM.lightmap,
|
|
MM.emissivemap,
|
|
MM.bumpmap,
|
|
MM.normalmap,
|
|
MM.displacementmap,
|
|
MM.roughnessmap,
|
|
MM.metalnessmap,
|
|
MM.fog,
|
|
MM.lights,
|
|
{
|
|
emissive: { value: new cM(0) },
|
|
roughness: { value: 1 },
|
|
metalness: { value: 0 },
|
|
envMapIntensity: { value: 1 }
|
|
}
|
|
]),
|
|
vertexShader: YM.meshphysical_vert,
|
|
fragmentShader: YM.meshphysical_frag
|
|
},
|
|
toon: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.aomap,
|
|
MM.lightmap,
|
|
MM.emissivemap,
|
|
MM.bumpmap,
|
|
MM.normalmap,
|
|
MM.displacementmap,
|
|
MM.gradientmap,
|
|
MM.fog,
|
|
MM.lights,
|
|
{
|
|
emissive: { value: new cM(0) }
|
|
}
|
|
]),
|
|
vertexShader: YM.meshtoon_vert,
|
|
fragmentShader: YM.meshtoon_frag
|
|
},
|
|
matcap: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.bumpmap,
|
|
MM.normalmap,
|
|
MM.displacementmap,
|
|
MM.fog,
|
|
{
|
|
matcap: { value: null }
|
|
}
|
|
]),
|
|
vertexShader: YM.meshmatcap_vert,
|
|
fragmentShader: YM.meshmatcap_frag
|
|
},
|
|
points: {
|
|
uniforms: sD([
|
|
MM.points,
|
|
MM.fog
|
|
]),
|
|
vertexShader: YM.points_vert,
|
|
fragmentShader: YM.points_frag
|
|
},
|
|
dashed: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.fog,
|
|
{
|
|
scale: { value: 1 },
|
|
dashSize: { value: 1 },
|
|
totalSize: { value: 2 }
|
|
}
|
|
]),
|
|
vertexShader: YM.linedashed_vert,
|
|
fragmentShader: YM.linedashed_frag
|
|
},
|
|
depth: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.displacementmap
|
|
]),
|
|
vertexShader: YM.depth_vert,
|
|
fragmentShader: YM.depth_frag
|
|
},
|
|
normal: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.bumpmap,
|
|
MM.normalmap,
|
|
MM.displacementmap,
|
|
{
|
|
opacity: { value: 1 }
|
|
}
|
|
]),
|
|
vertexShader: YM.meshnormal_vert,
|
|
fragmentShader: YM.meshnormal_frag
|
|
},
|
|
sprite: {
|
|
uniforms: sD([
|
|
MM.sprite,
|
|
MM.fog
|
|
]),
|
|
vertexShader: YM.sprite_vert,
|
|
fragmentShader: YM.sprite_frag
|
|
},
|
|
background: {
|
|
uniforms: {
|
|
uvTransform: { value: new gD() },
|
|
t2D: { value: null }
|
|
},
|
|
vertexShader: YM.background_vert,
|
|
fragmentShader: YM.background_frag
|
|
},
|
|
cube: {
|
|
uniforms: sD([
|
|
MM.envmap,
|
|
{
|
|
opacity: { value: 1 }
|
|
}
|
|
]),
|
|
vertexShader: YM.cube_vert,
|
|
fragmentShader: YM.cube_frag
|
|
},
|
|
equirect: {
|
|
uniforms: {
|
|
tEquirect: { value: null }
|
|
},
|
|
vertexShader: YM.equirect_vert,
|
|
fragmentShader: YM.equirect_frag
|
|
},
|
|
distanceRGBA: {
|
|
uniforms: sD([
|
|
MM.common,
|
|
MM.displacementmap,
|
|
{
|
|
referencePosition: { value: new O() },
|
|
nearDistance: { value: 1 },
|
|
farDistance: { value: 1e3 }
|
|
}
|
|
]),
|
|
vertexShader: YM.distanceRGBA_vert,
|
|
fragmentShader: YM.distanceRGBA_frag
|
|
},
|
|
shadow: {
|
|
uniforms: sD([
|
|
MM.lights,
|
|
MM.fog,
|
|
{
|
|
color: { value: new cM(0) },
|
|
opacity: { value: 1 }
|
|
}
|
|
]),
|
|
vertexShader: YM.shadow_vert,
|
|
fragmentShader: YM.shadow_frag
|
|
}
|
|
};
|
|
_D.physical = {
|
|
uniforms: sD([
|
|
_D.standard.uniforms,
|
|
{
|
|
clearcoat: { value: 0 },
|
|
clearcoatMap: { value: null },
|
|
clearcoatRoughness: { value: 0 },
|
|
clearcoatRoughnessMap: { value: null },
|
|
clearcoatNormalScale: { value: new q(1, 1) },
|
|
clearcoatNormalMap: { value: null },
|
|
sheen: { value: 0 },
|
|
sheenColor: { value: new cM(0) },
|
|
sheenColorMap: { value: null },
|
|
sheenRoughness: { value: 1 },
|
|
sheenRoughnessMap: { value: null },
|
|
transmission: { value: 0 },
|
|
transmissionMap: { value: null },
|
|
transmissionSamplerSize: { value: new q() },
|
|
transmissionSamplerMap: { value: null },
|
|
thickness: { value: 0 },
|
|
thicknessMap: { value: null },
|
|
attenuationDistance: { value: 0 },
|
|
attenuationColor: { value: new cM(0) },
|
|
specularIntensity: { value: 1 },
|
|
specularIntensityMap: { value: null },
|
|
specularColor: { value: new cM(1, 1, 1) },
|
|
specularColorMap: { value: null }
|
|
}
|
|
]),
|
|
vertexShader: YM.meshphysical_vert,
|
|
fragmentShader: YM.meshphysical_frag
|
|
};
|
|
function Mr(n, M, D, t, e, N) {
|
|
const A = new cM(0);
|
|
let z = e === !0 ? 0 : 1, I, i, T = null, u = 0, g = null;
|
|
function s(y, a) {
|
|
let c = !1, r = a.isScene === !0 ? a.background : null;
|
|
r && r.isTexture && (r = M.get(r));
|
|
const l = n.xr, C = l.getSession && l.getSession();
|
|
C && C.environmentBlendMode === "additive" && (r = null), r === null ? j(A, z) : r && r.isColor && (j(r, 1), c = !0), (n.autoClear || c) && n.clear(n.autoClearColor, n.autoClearDepth, n.autoClearStencil), r && (r.isCubeTexture || r.mapping === mN) ? (i === void 0 && (i = new nD(new Re(1, 1, 1), new lt({
|
|
name: "BackgroundCubeMaterial",
|
|
uniforms: Ae(_D.cube.uniforms),
|
|
vertexShader: _D.cube.vertexShader,
|
|
fragmentShader: _D.cube.fragmentShader,
|
|
side: eD,
|
|
depthTest: !1,
|
|
depthWrite: !1,
|
|
fog: !1
|
|
})), i.geometry.deleteAttribute("normal"), i.geometry.deleteAttribute("uv"), i.onBeforeRender = function(E, d, p) {
|
|
this.matrixWorld.copyPosition(p.matrixWorld);
|
|
}, Object.defineProperty(i.material, "envMap", {
|
|
get: function() {
|
|
return this.uniforms.envMap.value;
|
|
}
|
|
}), t.update(i)), i.material.uniforms.envMap.value = r, i.material.uniforms.flipEnvMap.value = r.isCubeTexture && r.isRenderTargetTexture === !1 ? -1 : 1, (T !== r || u !== r.version || g !== n.toneMapping) && (i.material.needsUpdate = !0, T = r, u = r.version, g = n.toneMapping), y.unshift(i, i.geometry, i.material, 0, 0, null)) : r && r.isTexture && (I === void 0 && (I = new nD(new tA(2, 2), new lt({
|
|
name: "BackgroundMaterial",
|
|
uniforms: Ae(_D.background.uniforms),
|
|
vertexShader: _D.background.vertexShader,
|
|
fragmentShader: _D.background.fragmentShader,
|
|
side: Ye,
|
|
depthTest: !1,
|
|
depthWrite: !1,
|
|
fog: !1
|
|
})), I.geometry.deleteAttribute("normal"), Object.defineProperty(I.material, "map", {
|
|
get: function() {
|
|
return this.uniforms.t2D.value;
|
|
}
|
|
}), t.update(I)), I.material.uniforms.t2D.value = r, r.matrixAutoUpdate === !0 && r.updateMatrix(), I.material.uniforms.uvTransform.value.copy(r.matrix), (T !== r || u !== r.version || g !== n.toneMapping) && (I.material.needsUpdate = !0, T = r, u = r.version, g = n.toneMapping), y.unshift(I, I.geometry, I.material, 0, 0, null));
|
|
}
|
|
function j(y, a) {
|
|
D.buffers.color.setClear(y.r, y.g, y.b, a, N);
|
|
}
|
|
return {
|
|
getClearColor: function() {
|
|
return A;
|
|
},
|
|
setClearColor: function(y, a = 1) {
|
|
A.set(y), z = a, j(A, z);
|
|
},
|
|
getClearAlpha: function() {
|
|
return z;
|
|
},
|
|
setClearAlpha: function(y) {
|
|
z = y, j(A, z);
|
|
},
|
|
render: s
|
|
};
|
|
}
|
|
function Dr(n, M, D, t) {
|
|
const e = n.getParameter(34921), N = t.isWebGL2 ? null : M.get("OES_vertex_array_object"), A = t.isWebGL2 || N !== null, z = {}, I = y(null);
|
|
let i = I;
|
|
function T(Y, k, f, Q, b) {
|
|
let W = !1;
|
|
if (A) {
|
|
const IM = j(Q, f, k);
|
|
i !== IM && (i = IM, g(i.object)), W = a(Q, b), W && c(Q, b);
|
|
} else {
|
|
const IM = k.wireframe === !0;
|
|
(i.geometry !== Q.id || i.program !== f.id || i.wireframe !== IM) && (i.geometry = Q.id, i.program = f.id, i.wireframe = IM, W = !0);
|
|
}
|
|
Y.isInstancedMesh === !0 && (W = !0), b !== null && D.update(b, 34963), W && (p(Y, k, f, Q), b !== null && n.bindBuffer(34963, D.get(b).buffer));
|
|
}
|
|
function u() {
|
|
return t.isWebGL2 ? n.createVertexArray() : N.createVertexArrayOES();
|
|
}
|
|
function g(Y) {
|
|
return t.isWebGL2 ? n.bindVertexArray(Y) : N.bindVertexArrayOES(Y);
|
|
}
|
|
function s(Y) {
|
|
return t.isWebGL2 ? n.deleteVertexArray(Y) : N.deleteVertexArrayOES(Y);
|
|
}
|
|
function j(Y, k, f) {
|
|
const Q = f.wireframe === !0;
|
|
let b = z[Y.id];
|
|
b === void 0 && (b = {}, z[Y.id] = b);
|
|
let W = b[k.id];
|
|
W === void 0 && (W = {}, b[k.id] = W);
|
|
let IM = W[Q];
|
|
return IM === void 0 && (IM = y(u()), W[Q] = IM), IM;
|
|
}
|
|
function y(Y) {
|
|
const k = [], f = [], Q = [];
|
|
for (let b = 0; b < e; b++)
|
|
k[b] = 0, f[b] = 0, Q[b] = 0;
|
|
return {
|
|
geometry: null,
|
|
program: null,
|
|
wireframe: !1,
|
|
newAttributes: k,
|
|
enabledAttributes: f,
|
|
attributeDivisors: Q,
|
|
object: Y,
|
|
attributes: {},
|
|
index: null
|
|
};
|
|
}
|
|
function a(Y, k) {
|
|
const f = i.attributes, Q = Y.attributes;
|
|
let b = 0;
|
|
for (const W in Q) {
|
|
const IM = f[W], Z = Q[W];
|
|
if (IM === void 0 || IM.attribute !== Z || IM.data !== Z.data)
|
|
return !0;
|
|
b++;
|
|
}
|
|
return i.attributesNum !== b || i.index !== k;
|
|
}
|
|
function c(Y, k) {
|
|
const f = {}, Q = Y.attributes;
|
|
let b = 0;
|
|
for (const W in Q) {
|
|
const IM = Q[W], Z = {};
|
|
Z.attribute = IM, IM.data && (Z.data = IM.data), f[W] = Z, b++;
|
|
}
|
|
i.attributes = f, i.attributesNum = b, i.index = k;
|
|
}
|
|
function r() {
|
|
const Y = i.newAttributes;
|
|
for (let k = 0, f = Y.length; k < f; k++)
|
|
Y[k] = 0;
|
|
}
|
|
function l(Y) {
|
|
C(Y, 0);
|
|
}
|
|
function C(Y, k) {
|
|
const f = i.newAttributes, Q = i.enabledAttributes, b = i.attributeDivisors;
|
|
f[Y] = 1, Q[Y] === 0 && (n.enableVertexAttribArray(Y), Q[Y] = 1), b[Y] !== k && ((t.isWebGL2 ? n : M.get("ANGLE_instanced_arrays"))[t.isWebGL2 ? "vertexAttribDivisor" : "vertexAttribDivisorANGLE"](Y, k), b[Y] = k);
|
|
}
|
|
function E() {
|
|
const Y = i.newAttributes, k = i.enabledAttributes;
|
|
for (let f = 0, Q = k.length; f < Q; f++)
|
|
k[f] !== Y[f] && (n.disableVertexAttribArray(f), k[f] = 0);
|
|
}
|
|
function d(Y, k, f, Q, b, W) {
|
|
t.isWebGL2 === !0 && (f === 5124 || f === 5125) ? n.vertexAttribIPointer(Y, k, f, b, W) : n.vertexAttribPointer(Y, k, f, Q, b, W);
|
|
}
|
|
function p(Y, k, f, Q) {
|
|
if (t.isWebGL2 === !1 && (Y.isInstancedMesh || Q.isInstancedBufferGeometry) && M.get("ANGLE_instanced_arrays") === null)
|
|
return;
|
|
r();
|
|
const b = Q.attributes, W = f.getAttributes(), IM = k.defaultAttributeValues;
|
|
for (const Z in W) {
|
|
const V = W[Z];
|
|
if (V.location >= 0) {
|
|
let eM = b[Z];
|
|
if (eM === void 0 && (Z === "instanceMatrix" && Y.instanceMatrix && (eM = Y.instanceMatrix), Z === "instanceColor" && Y.instanceColor && (eM = Y.instanceColor)), eM !== void 0) {
|
|
const uM = eM.normalized, jM = eM.itemSize, _ = D.get(eM);
|
|
if (_ === void 0)
|
|
continue;
|
|
const kM = _.buffer, rM = _.type, wM = _.bytesPerElement;
|
|
if (eM.isInterleavedBufferAttribute) {
|
|
const zM = eM.data, vM = zM.stride, OM = eM.offset;
|
|
if (zM && zM.isInstancedInterleavedBuffer) {
|
|
for (let P = 0; P < V.locationSize; P++)
|
|
C(V.location + P, zM.meshPerAttribute);
|
|
Y.isInstancedMesh !== !0 && Q._maxInstanceCount === void 0 && (Q._maxInstanceCount = zM.meshPerAttribute * zM.count);
|
|
} else
|
|
for (let P = 0; P < V.locationSize; P++)
|
|
l(V.location + P);
|
|
n.bindBuffer(34962, kM);
|
|
for (let P = 0; P < V.locationSize; P++)
|
|
d(V.location + P, jM / V.locationSize, rM, uM, vM * wM, (OM + jM / V.locationSize * P) * wM);
|
|
} else {
|
|
if (eM.isInstancedBufferAttribute) {
|
|
for (let zM = 0; zM < V.locationSize; zM++)
|
|
C(V.location + zM, eM.meshPerAttribute);
|
|
Y.isInstancedMesh !== !0 && Q._maxInstanceCount === void 0 && (Q._maxInstanceCount = eM.meshPerAttribute * eM.count);
|
|
} else
|
|
for (let zM = 0; zM < V.locationSize; zM++)
|
|
l(V.location + zM);
|
|
n.bindBuffer(34962, kM);
|
|
for (let zM = 0; zM < V.locationSize; zM++)
|
|
d(V.location + zM, jM / V.locationSize, rM, uM, jM * wM, jM / V.locationSize * zM * wM);
|
|
}
|
|
} else if (IM !== void 0) {
|
|
const uM = IM[Z];
|
|
if (uM !== void 0)
|
|
switch (uM.length) {
|
|
case 2:
|
|
n.vertexAttrib2fv(V.location, uM);
|
|
break;
|
|
case 3:
|
|
n.vertexAttrib3fv(V.location, uM);
|
|
break;
|
|
case 4:
|
|
n.vertexAttrib4fv(V.location, uM);
|
|
break;
|
|
default:
|
|
n.vertexAttrib1fv(V.location, uM);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
E();
|
|
}
|
|
function H() {
|
|
o();
|
|
for (const Y in z) {
|
|
const k = z[Y];
|
|
for (const f in k) {
|
|
const Q = k[f];
|
|
for (const b in Q)
|
|
s(Q[b].object), delete Q[b];
|
|
delete k[f];
|
|
}
|
|
delete z[Y];
|
|
}
|
|
}
|
|
function DM(Y) {
|
|
if (z[Y.id] === void 0)
|
|
return;
|
|
const k = z[Y.id];
|
|
for (const f in k) {
|
|
const Q = k[f];
|
|
for (const b in Q)
|
|
s(Q[b].object), delete Q[b];
|
|
delete k[f];
|
|
}
|
|
delete z[Y.id];
|
|
}
|
|
function G(Y) {
|
|
for (const k in z) {
|
|
const f = z[k];
|
|
if (f[Y.id] === void 0)
|
|
continue;
|
|
const Q = f[Y.id];
|
|
for (const b in Q)
|
|
s(Q[b].object), delete Q[b];
|
|
delete f[Y.id];
|
|
}
|
|
}
|
|
function o() {
|
|
h(), i !== I && (i = I, g(i.object));
|
|
}
|
|
function h() {
|
|
I.geometry = null, I.program = null, I.wireframe = !1;
|
|
}
|
|
return {
|
|
setup: T,
|
|
reset: o,
|
|
resetDefaultState: h,
|
|
dispose: H,
|
|
releaseStatesOfGeometry: DM,
|
|
releaseStatesOfProgram: G,
|
|
initAttributes: r,
|
|
enableAttribute: l,
|
|
disableUnusedAttributes: E
|
|
};
|
|
}
|
|
function tr(n, M, D, t) {
|
|
const e = t.isWebGL2;
|
|
let N;
|
|
function A(i) {
|
|
N = i;
|
|
}
|
|
function z(i, T) {
|
|
n.drawArrays(N, i, T), D.update(T, N, 1);
|
|
}
|
|
function I(i, T, u) {
|
|
if (u === 0)
|
|
return;
|
|
let g, s;
|
|
if (e)
|
|
g = n, s = "drawArraysInstanced";
|
|
else if (g = M.get("ANGLE_instanced_arrays"), s = "drawArraysInstancedANGLE", g === null) {
|
|
console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
|
|
return;
|
|
}
|
|
g[s](N, i, T, u), D.update(T, N, u);
|
|
}
|
|
this.setMode = A, this.render = z, this.renderInstances = I;
|
|
}
|
|
function er(n, M, D) {
|
|
let t;
|
|
function e() {
|
|
if (t !== void 0)
|
|
return t;
|
|
if (M.has("EXT_texture_filter_anisotropic") === !0) {
|
|
const p = M.get("EXT_texture_filter_anisotropic");
|
|
t = n.getParameter(p.MAX_TEXTURE_MAX_ANISOTROPY_EXT);
|
|
} else
|
|
t = 0;
|
|
return t;
|
|
}
|
|
function N(p) {
|
|
if (p === "highp") {
|
|
if (n.getShaderPrecisionFormat(35633, 36338).precision > 0 && n.getShaderPrecisionFormat(35632, 36338).precision > 0)
|
|
return "highp";
|
|
p = "mediump";
|
|
}
|
|
return p === "mediump" && n.getShaderPrecisionFormat(35633, 36337).precision > 0 && n.getShaderPrecisionFormat(35632, 36337).precision > 0 ? "mediump" : "lowp";
|
|
}
|
|
const A = typeof WebGL2RenderingContext < "u" && n instanceof WebGL2RenderingContext || typeof WebGL2ComputeRenderingContext < "u" && n instanceof WebGL2ComputeRenderingContext;
|
|
let z = D.precision !== void 0 ? D.precision : "highp";
|
|
const I = N(z);
|
|
I !== z && (console.warn("THREE.WebGLRenderer:", z, "not supported, using", I, "instead."), z = I);
|
|
const i = A || M.has("WEBGL_draw_buffers"), T = D.logarithmicDepthBuffer === !0, u = n.getParameter(34930), g = n.getParameter(35660), s = n.getParameter(3379), j = n.getParameter(34076), y = n.getParameter(34921), a = n.getParameter(36347), c = n.getParameter(36348), r = n.getParameter(36349), l = g > 0, C = A || M.has("OES_texture_float"), E = l && C, d = A ? n.getParameter(36183) : 0;
|
|
return {
|
|
isWebGL2: A,
|
|
drawBuffers: i,
|
|
getMaxAnisotropy: e,
|
|
getMaxPrecision: N,
|
|
precision: z,
|
|
logarithmicDepthBuffer: T,
|
|
maxTextures: u,
|
|
maxVertexTextures: g,
|
|
maxTextureSize: s,
|
|
maxCubemapSize: j,
|
|
maxAttributes: y,
|
|
maxVertexUniforms: a,
|
|
maxVaryings: c,
|
|
maxFragmentUniforms: r,
|
|
vertexTextures: l,
|
|
floatFragmentTextures: C,
|
|
floatVertexTextures: E,
|
|
maxSamples: d
|
|
};
|
|
}
|
|
function Nr(n) {
|
|
const M = this;
|
|
let D = null, t = 0, e = !1, N = !1;
|
|
const A = new XD(), z = new gD(), I = { value: null, needsUpdate: !1 };
|
|
this.uniform = I, this.numPlanes = 0, this.numIntersection = 0, this.init = function(u, g, s) {
|
|
const j = u.length !== 0 || g || t !== 0 || e;
|
|
return e = g, D = T(u, s, 0), t = u.length, j;
|
|
}, this.beginShadows = function() {
|
|
N = !0, T(null);
|
|
}, this.endShadows = function() {
|
|
N = !1, i();
|
|
}, this.setState = function(u, g, s) {
|
|
const j = u.clippingPlanes, y = u.clipIntersection, a = u.clipShadows, c = n.get(u);
|
|
if (!e || j === null || j.length === 0 || N && !a)
|
|
N ? T(null) : i();
|
|
else {
|
|
const r = N ? 0 : t, l = r * 4;
|
|
let C = c.clippingState || null;
|
|
I.value = C, C = T(j, g, l, s);
|
|
for (let E = 0; E !== l; ++E)
|
|
C[E] = D[E];
|
|
c.clippingState = C, this.numIntersection = y ? this.numPlanes : 0, this.numPlanes += r;
|
|
}
|
|
};
|
|
function i() {
|
|
I.value !== D && (I.value = D, I.needsUpdate = t > 0), M.numPlanes = t, M.numIntersection = 0;
|
|
}
|
|
function T(u, g, s, j) {
|
|
const y = u !== null ? u.length : 0;
|
|
let a = null;
|
|
if (y !== 0) {
|
|
if (a = I.value, j !== !0 || a === null) {
|
|
const c = s + y * 4, r = g.matrixWorldInverse;
|
|
z.getNormalMatrix(r), (a === null || a.length < c) && (a = new Float32Array(c));
|
|
for (let l = 0, C = s; l !== y; ++l, C += 4)
|
|
A.copy(u[l]).applyMatrix4(r, z), A.normal.toArray(a, C), a[C + 3] = A.constant;
|
|
}
|
|
I.value = a, I.needsUpdate = !0;
|
|
}
|
|
return M.numPlanes = y, M.numIntersection = 0, a;
|
|
}
|
|
}
|
|
function nr(n) {
|
|
let M = /* @__PURE__ */ new WeakMap();
|
|
function D(A, z) {
|
|
return z === mn ? A.mapping = be : z === kn && (A.mapping = Ke), A;
|
|
}
|
|
function t(A) {
|
|
if (A && A.isTexture && A.isRenderTargetTexture === !1) {
|
|
const z = A.mapping;
|
|
if (z === mn || z === kn)
|
|
if (M.has(A)) {
|
|
const I = M.get(A).texture;
|
|
return D(I, A.mapping);
|
|
} else {
|
|
const I = A.image;
|
|
if (I && I.height > 0) {
|
|
const i = new ri(I.height / 2);
|
|
return i.fromEquirectangularTexture(n, A), M.set(A, i), A.addEventListener("dispose", e), D(i.texture, A.mapping);
|
|
} else
|
|
return null;
|
|
}
|
|
}
|
|
return A;
|
|
}
|
|
function e(A) {
|
|
const z = A.target;
|
|
z.removeEventListener("dispose", e);
|
|
const I = M.get(z);
|
|
I !== void 0 && (M.delete(z), I.dispose());
|
|
}
|
|
function N() {
|
|
M = /* @__PURE__ */ new WeakMap();
|
|
}
|
|
return {
|
|
get: t,
|
|
dispose: N
|
|
};
|
|
}
|
|
class eA extends MA {
|
|
constructor(M = -1, D = 1, t = 1, e = -1, N = 0.1, A = 2e3) {
|
|
super(), this.type = "OrthographicCamera", this.zoom = 1, this.view = null, this.left = M, this.right = D, this.top = t, this.bottom = e, this.near = N, this.far = A, this.updateProjectionMatrix();
|
|
}
|
|
copy(M, D) {
|
|
return super.copy(M, D), this.left = M.left, this.right = M.right, this.top = M.top, this.bottom = M.bottom, this.near = M.near, this.far = M.far, this.zoom = M.zoom, this.view = M.view === null ? null : Object.assign({}, M.view), this;
|
|
}
|
|
setViewOffset(M, D, t, e, N, A) {
|
|
this.view === null && (this.view = {
|
|
enabled: !0,
|
|
fullWidth: 1,
|
|
fullHeight: 1,
|
|
offsetX: 0,
|
|
offsetY: 0,
|
|
width: 1,
|
|
height: 1
|
|
}), this.view.enabled = !0, this.view.fullWidth = M, this.view.fullHeight = D, this.view.offsetX = t, this.view.offsetY = e, this.view.width = N, this.view.height = A, this.updateProjectionMatrix();
|
|
}
|
|
clearViewOffset() {
|
|
this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix();
|
|
}
|
|
updateProjectionMatrix() {
|
|
const M = (this.right - this.left) / (2 * this.zoom), D = (this.top - this.bottom) / (2 * this.zoom), t = (this.right + this.left) / 2, e = (this.top + this.bottom) / 2;
|
|
let N = t - M, A = t + M, z = e + D, I = e - D;
|
|
if (this.view !== null && this.view.enabled) {
|
|
const i = (this.right - this.left) / this.view.fullWidth / this.zoom, T = (this.top - this.bottom) / this.view.fullHeight / this.zoom;
|
|
N += i * this.view.offsetX, A = N + i * this.view.width, z -= T * this.view.offsetY, I = z - T * this.view.height;
|
|
}
|
|
this.projectionMatrix.makeOrthographic(N, A, z, I, this.near, this.far), this.projectionMatrixInverse.copy(this.projectionMatrix).invert();
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
return D.object.zoom = this.zoom, D.object.left = this.left, D.object.right = this.right, D.object.top = this.top, D.object.bottom = this.bottom, D.object.near = this.near, D.object.far = this.far, this.view !== null && (D.object.view = Object.assign({}, this.view)), D;
|
|
}
|
|
}
|
|
eA.prototype.isOrthographicCamera = !0;
|
|
class _N extends lt {
|
|
constructor(M) {
|
|
super(M), this.type = "RawShaderMaterial";
|
|
}
|
|
}
|
|
_N.prototype.isRawShaderMaterial = !0;
|
|
const ee = 4, Tt = 8, ZD = Math.pow(2, Tt), ci = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582], ji = Tt - ee + 1 + ci.length, Pt = 20, wn = /* @__PURE__ */ new eA(), { _lodPlanes: Ce, _sizeLods: nz, _sigmas: uN } = /* @__PURE__ */ Ar(), Az = /* @__PURE__ */ new cM();
|
|
let On = null;
|
|
const wt = (1 + Math.sqrt(5)) / 2, Ft = 1 / wt, zz = [
|
|
/* @__PURE__ */ new O(1, 1, 1),
|
|
/* @__PURE__ */ new O(-1, 1, 1),
|
|
/* @__PURE__ */ new O(1, 1, -1),
|
|
/* @__PURE__ */ new O(-1, 1, -1),
|
|
/* @__PURE__ */ new O(0, wt, Ft),
|
|
/* @__PURE__ */ new O(0, wt, -Ft),
|
|
/* @__PURE__ */ new O(Ft, 0, wt),
|
|
/* @__PURE__ */ new O(-Ft, 0, wt),
|
|
/* @__PURE__ */ new O(wt, Ft, 0),
|
|
/* @__PURE__ */ new O(-wt, Ft, 0)
|
|
];
|
|
class iz {
|
|
constructor(M) {
|
|
this._renderer = M, this._pingPongRenderTarget = null, this._blurMaterial = zr(Pt), this._equirectShader = null, this._cubemapShader = null, this._compileMaterial(this._blurMaterial);
|
|
}
|
|
fromScene(M, D = 0, t = 0.1, e = 100) {
|
|
On = this._renderer.getRenderTarget();
|
|
const N = this._allocateTargets();
|
|
return this._sceneToCubeUV(M, t, e, N), D > 0 && this._blur(N, 0, 0, D), this._applyPMREM(N), this._cleanup(N), N;
|
|
}
|
|
fromEquirectangular(M, D = null) {
|
|
return this._fromTexture(M, D);
|
|
}
|
|
fromCubemap(M, D = null) {
|
|
return this._fromTexture(M, D);
|
|
}
|
|
compileCubemapShader() {
|
|
this._cubemapShader === null && (this._cubemapShader = uz(), this._compileMaterial(this._cubemapShader));
|
|
}
|
|
compileEquirectangularShader() {
|
|
this._equirectShader === null && (this._equirectShader = Tz(), this._compileMaterial(this._equirectShader));
|
|
}
|
|
dispose() {
|
|
this._blurMaterial.dispose(), this._pingPongRenderTarget !== null && this._pingPongRenderTarget.dispose(), this._cubemapShader !== null && this._cubemapShader.dispose(), this._equirectShader !== null && this._equirectShader.dispose();
|
|
for (let M = 0; M < Ce.length; M++)
|
|
Ce[M].dispose();
|
|
}
|
|
_cleanup(M) {
|
|
this._renderer.setRenderTarget(On), M.scissorTest = !1, gN(M, 0, 0, M.width, M.height);
|
|
}
|
|
_fromTexture(M, D) {
|
|
On = this._renderer.getRenderTarget();
|
|
const t = D || this._allocateTargets(M);
|
|
return this._textureToCubeUV(M, t), this._applyPMREM(t), this._cleanup(t), t;
|
|
}
|
|
_allocateTargets(M) {
|
|
const D = {
|
|
magFilter: uD,
|
|
minFilter: uD,
|
|
generateMipmaps: !1,
|
|
type: Me,
|
|
format: yD,
|
|
encoding: st,
|
|
depthBuffer: !1
|
|
}, t = Iz(D);
|
|
return t.depthBuffer = !M, this._pingPongRenderTarget === null && (this._pingPongRenderTarget = Iz(D)), t;
|
|
}
|
|
_compileMaterial(M) {
|
|
const D = new nD(Ce[0], M);
|
|
this._renderer.compile(D, wn);
|
|
}
|
|
_sceneToCubeUV(M, D, t, e) {
|
|
const z = new jD(90, 1, D, t), I = [1, -1, 1, 1, 1, 1], i = [1, 1, 1, -1, -1, -1], T = this._renderer, u = T.autoClear, g = T.toneMapping;
|
|
T.getClearColor(Az), T.toneMapping = it, T.autoClear = !1;
|
|
const s = new $n({
|
|
name: "PMREM.Background",
|
|
side: eD,
|
|
depthWrite: !1,
|
|
depthTest: !1
|
|
}), j = new nD(new Re(), s);
|
|
let y = !1;
|
|
const a = M.background;
|
|
a ? a.isColor && (s.color.copy(a), M.background = null, y = !0) : (s.color.copy(Az), y = !0);
|
|
for (let c = 0; c < 6; c++) {
|
|
const r = c % 3;
|
|
r === 0 ? (z.up.set(0, I[c], 0), z.lookAt(i[c], 0, 0)) : r === 1 ? (z.up.set(0, 0, I[c]), z.lookAt(0, i[c], 0)) : (z.up.set(0, I[c], 0), z.lookAt(0, 0, i[c])), gN(e, r * ZD, c > 2 ? ZD : 0, ZD, ZD), T.setRenderTarget(e), y && T.render(j, z), T.render(M, z);
|
|
}
|
|
j.geometry.dispose(), j.material.dispose(), T.toneMapping = g, T.autoClear = u, M.background = a;
|
|
}
|
|
_textureToCubeUV(M, D) {
|
|
const t = this._renderer, e = M.mapping === be || M.mapping === Ke;
|
|
e ? (this._cubemapShader === null && (this._cubemapShader = uz()), this._cubemapShader.uniforms.flipEnvMap.value = M.isRenderTargetTexture === !1 ? -1 : 1) : this._equirectShader === null && (this._equirectShader = Tz());
|
|
const N = e ? this._cubemapShader : this._equirectShader, A = new nD(Ce[0], N), z = N.uniforms;
|
|
z.envMap.value = M, e || z.texelSize.value.set(1 / M.image.width, 1 / M.image.height), gN(D, 0, 0, 3 * ZD, 2 * ZD), t.setRenderTarget(D), t.render(A, wn);
|
|
}
|
|
_applyPMREM(M) {
|
|
const D = this._renderer, t = D.autoClear;
|
|
D.autoClear = !1;
|
|
for (let e = 1; e < ji; e++) {
|
|
const N = Math.sqrt(uN[e] * uN[e] - uN[e - 1] * uN[e - 1]), A = zz[(e - 1) % zz.length];
|
|
this._blur(M, e - 1, e, N, A);
|
|
}
|
|
D.autoClear = t;
|
|
}
|
|
_blur(M, D, t, e, N) {
|
|
const A = this._pingPongRenderTarget;
|
|
this._halfBlur(M, A, D, t, e, "latitudinal", N), this._halfBlur(A, M, t, t, e, "longitudinal", N);
|
|
}
|
|
_halfBlur(M, D, t, e, N, A, z) {
|
|
const I = this._renderer, i = this._blurMaterial;
|
|
A !== "latitudinal" && A !== "longitudinal" && console.error("blur direction must be either latitudinal or longitudinal!");
|
|
const T = 3, u = new nD(Ce[e], i), g = i.uniforms, s = nz[t] - 1, j = isFinite(N) ? Math.PI / (2 * s) : 2 * Math.PI / (2 * Pt - 1), y = N / j, a = isFinite(N) ? 1 + Math.floor(T * y) : Pt;
|
|
a > Pt && console.warn(`sigmaRadians, ${N}, is too large and will clip, as it requested ${a} samples when the maximum is set to ${Pt}`);
|
|
const c = [];
|
|
let r = 0;
|
|
for (let d = 0; d < Pt; ++d) {
|
|
const p = d / y, H = Math.exp(-p * p / 2);
|
|
c.push(H), d === 0 ? r += H : d < a && (r += 2 * H);
|
|
}
|
|
for (let d = 0; d < c.length; d++)
|
|
c[d] = c[d] / r;
|
|
g.envMap.value = M.texture, g.samples.value = a, g.weights.value = c, g.latitudinal.value = A === "latitudinal", z && (g.poleAxis.value = z), g.dTheta.value = j, g.mipInt.value = Tt - t;
|
|
const l = nz[e], C = 3 * Math.max(0, ZD - 2 * l), E = (e === 0 ? 0 : 2 * ZD) + 2 * l * (e > Tt - ee ? e - Tt + ee : 0);
|
|
gN(D, C, E, 3 * l, 2 * l), I.setRenderTarget(D), I.render(u, wn);
|
|
}
|
|
}
|
|
function Ar() {
|
|
const n = [], M = [], D = [];
|
|
let t = Tt;
|
|
for (let e = 0; e < ji; e++) {
|
|
const N = Math.pow(2, t);
|
|
M.push(N);
|
|
let A = 1 / N;
|
|
e > Tt - ee ? A = ci[e - Tt + ee - 1] : e === 0 && (A = 0), D.push(A);
|
|
const z = 1 / (N - 1), I = -z / 2, i = 1 + z / 2, T = [I, I, i, I, i, i, I, I, i, i, I, i], u = 6, g = 6, s = 3, j = 2, y = 1, a = new Float32Array(s * g * u), c = new Float32Array(j * g * u), r = new Float32Array(y * g * u);
|
|
for (let C = 0; C < u; C++) {
|
|
const E = C % 3 * 2 / 3 - 1, d = C > 2 ? 0 : -1, p = [
|
|
E,
|
|
d,
|
|
0,
|
|
E + 2 / 3,
|
|
d,
|
|
0,
|
|
E + 2 / 3,
|
|
d + 1,
|
|
0,
|
|
E,
|
|
d,
|
|
0,
|
|
E + 2 / 3,
|
|
d + 1,
|
|
0,
|
|
E,
|
|
d + 1,
|
|
0
|
|
];
|
|
a.set(p, s * g * C), c.set(T, j * g * C);
|
|
const H = [C, C, C, C, C, C];
|
|
r.set(H, y * g * C);
|
|
}
|
|
const l = new VM();
|
|
l.setAttribute("position", new AD(a, s)), l.setAttribute("uv", new AD(c, j)), l.setAttribute("faceIndex", new AD(r, y)), n.push(l), t > ee && t--;
|
|
}
|
|
return { _lodPlanes: n, _sizeLods: M, _sigmas: D };
|
|
}
|
|
function Iz(n) {
|
|
const M = new dD(3 * ZD, 3 * ZD, n);
|
|
return M.texture.mapping = mN, M.texture.name = "PMREM.cubeUv", M.scissorTest = !0, M;
|
|
}
|
|
function gN(n, M, D, t, e) {
|
|
n.viewport.set(M, D, t, e), n.scissor.set(M, D, t, e);
|
|
}
|
|
function zr(n) {
|
|
const M = new Float32Array(n), D = new O(0, 1, 0);
|
|
return new _N({
|
|
name: "SphericalGaussianBlur",
|
|
defines: { n },
|
|
uniforms: {
|
|
envMap: { value: null },
|
|
samples: { value: 1 },
|
|
weights: { value: M },
|
|
latitudinal: { value: !1 },
|
|
dTheta: { value: 0 },
|
|
mipInt: { value: 0 },
|
|
poleAxis: { value: D }
|
|
},
|
|
vertexShader: NA(),
|
|
fragmentShader: `
|
|
|
|
precision mediump float;
|
|
precision mediump int;
|
|
|
|
varying vec3 vOutputDirection;
|
|
|
|
uniform sampler2D envMap;
|
|
uniform int samples;
|
|
uniform float weights[ n ];
|
|
uniform bool latitudinal;
|
|
uniform float dTheta;
|
|
uniform float mipInt;
|
|
uniform vec3 poleAxis;
|
|
|
|
#define ENVMAP_TYPE_CUBE_UV
|
|
#include <cube_uv_reflection_fragment>
|
|
|
|
vec3 getSample( float theta, vec3 axis ) {
|
|
|
|
float cosTheta = cos( theta );
|
|
// Rodrigues' axis-angle rotation
|
|
vec3 sampleDirection = vOutputDirection * cosTheta
|
|
+ cross( axis, vOutputDirection ) * sin( theta )
|
|
+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );
|
|
|
|
return bilinearCubeUV( envMap, sampleDirection, mipInt );
|
|
|
|
}
|
|
|
|
void main() {
|
|
|
|
vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );
|
|
|
|
if ( all( equal( axis, vec3( 0.0 ) ) ) ) {
|
|
|
|
axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );
|
|
|
|
}
|
|
|
|
axis = normalize( axis );
|
|
|
|
gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );
|
|
|
|
for ( int i = 1; i < n; i++ ) {
|
|
|
|
if ( i >= samples ) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
float theta = dTheta * float( i );
|
|
gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );
|
|
gl_FragColor.rgb += weights[ i ] * getSample( theta, axis );
|
|
|
|
}
|
|
|
|
}
|
|
`,
|
|
blending: zt,
|
|
depthTest: !1,
|
|
depthWrite: !1
|
|
});
|
|
}
|
|
function Tz() {
|
|
const n = new q(1, 1);
|
|
return new _N({
|
|
name: "EquirectangularToCubeUV",
|
|
uniforms: {
|
|
envMap: { value: null },
|
|
texelSize: { value: n }
|
|
},
|
|
vertexShader: NA(),
|
|
fragmentShader: `
|
|
|
|
precision mediump float;
|
|
precision mediump int;
|
|
|
|
varying vec3 vOutputDirection;
|
|
|
|
uniform sampler2D envMap;
|
|
uniform vec2 texelSize;
|
|
|
|
#include <common>
|
|
|
|
void main() {
|
|
|
|
gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
|
|
vec3 outputDirection = normalize( vOutputDirection );
|
|
vec2 uv = equirectUv( outputDirection );
|
|
|
|
vec2 f = fract( uv / texelSize - 0.5 );
|
|
uv -= f * texelSize;
|
|
vec3 tl = texture2D ( envMap, uv ).rgb;
|
|
uv.x += texelSize.x;
|
|
vec3 tr = texture2D ( envMap, uv ).rgb;
|
|
uv.y += texelSize.y;
|
|
vec3 br = texture2D ( envMap, uv ).rgb;
|
|
uv.x -= texelSize.x;
|
|
vec3 bl = texture2D ( envMap, uv ).rgb;
|
|
|
|
vec3 tm = mix( tl, tr, f.x );
|
|
vec3 bm = mix( bl, br, f.x );
|
|
gl_FragColor.rgb = mix( tm, bm, f.y );
|
|
|
|
}
|
|
`,
|
|
blending: zt,
|
|
depthTest: !1,
|
|
depthWrite: !1
|
|
});
|
|
}
|
|
function uz() {
|
|
return new _N({
|
|
name: "CubemapToCubeUV",
|
|
uniforms: {
|
|
envMap: { value: null },
|
|
flipEnvMap: { value: -1 }
|
|
},
|
|
vertexShader: NA(),
|
|
fragmentShader: `
|
|
|
|
precision mediump float;
|
|
precision mediump int;
|
|
|
|
uniform float flipEnvMap;
|
|
|
|
varying vec3 vOutputDirection;
|
|
|
|
uniform samplerCube envMap;
|
|
|
|
void main() {
|
|
|
|
gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
|
|
|
|
}
|
|
`,
|
|
blending: zt,
|
|
depthTest: !1,
|
|
depthWrite: !1
|
|
});
|
|
}
|
|
function NA() {
|
|
return `
|
|
|
|
precision mediump float;
|
|
precision mediump int;
|
|
|
|
attribute vec3 position;
|
|
attribute vec2 uv;
|
|
attribute float faceIndex;
|
|
|
|
varying vec3 vOutputDirection;
|
|
|
|
// RH coordinate system; PMREM face-indexing convention
|
|
vec3 getDirection( vec2 uv, float face ) {
|
|
|
|
uv = 2.0 * uv - 1.0;
|
|
|
|
vec3 direction = vec3( uv, 1.0 );
|
|
|
|
if ( face == 0.0 ) {
|
|
|
|
direction = direction.zyx; // ( 1, v, u ) pos x
|
|
|
|
} else if ( face == 1.0 ) {
|
|
|
|
direction = direction.xzy;
|
|
direction.xz *= -1.0; // ( -u, 1, -v ) pos y
|
|
|
|
} else if ( face == 2.0 ) {
|
|
|
|
direction.x *= -1.0; // ( -u, v, 1 ) pos z
|
|
|
|
} else if ( face == 3.0 ) {
|
|
|
|
direction = direction.zyx;
|
|
direction.xz *= -1.0; // ( -1, v, -u ) neg x
|
|
|
|
} else if ( face == 4.0 ) {
|
|
|
|
direction = direction.xzy;
|
|
direction.xy *= -1.0; // ( -u, -1, v ) neg y
|
|
|
|
} else if ( face == 5.0 ) {
|
|
|
|
direction.z *= -1.0; // ( u, v, -1 ) neg z
|
|
|
|
}
|
|
|
|
return direction;
|
|
|
|
}
|
|
|
|
void main() {
|
|
|
|
vOutputDirection = getDirection( uv, faceIndex );
|
|
gl_Position = vec4( position, 1.0 );
|
|
|
|
}
|
|
`;
|
|
}
|
|
function ir(n) {
|
|
let M = /* @__PURE__ */ new WeakMap(), D = null;
|
|
function t(z) {
|
|
if (z && z.isTexture) {
|
|
const I = z.mapping, i = I === mn || I === kn, T = I === be || I === Ke;
|
|
if (i || T)
|
|
if (z.isRenderTargetTexture && z.needsPMREMUpdate === !0) {
|
|
z.needsPMREMUpdate = !1;
|
|
let u = M.get(z);
|
|
return D === null && (D = new iz(n)), u = i ? D.fromEquirectangular(z, u) : D.fromCubemap(z, u), M.set(z, u), u.texture;
|
|
} else {
|
|
if (M.has(z))
|
|
return M.get(z).texture;
|
|
{
|
|
const u = z.image;
|
|
if (i && u && u.height > 0 || T && u && e(u)) {
|
|
D === null && (D = new iz(n));
|
|
const g = i ? D.fromEquirectangular(z) : D.fromCubemap(z);
|
|
return M.set(z, g), z.addEventListener("dispose", N), g.texture;
|
|
} else
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
return z;
|
|
}
|
|
function e(z) {
|
|
let I = 0;
|
|
const i = 6;
|
|
for (let T = 0; T < i; T++)
|
|
z[T] !== void 0 && I++;
|
|
return I === i;
|
|
}
|
|
function N(z) {
|
|
const I = z.target;
|
|
I.removeEventListener("dispose", N);
|
|
const i = M.get(I);
|
|
i !== void 0 && (M.delete(I), i.dispose());
|
|
}
|
|
function A() {
|
|
M = /* @__PURE__ */ new WeakMap(), D !== null && (D.dispose(), D = null);
|
|
}
|
|
return {
|
|
get: t,
|
|
dispose: A
|
|
};
|
|
}
|
|
function Ir(n) {
|
|
const M = {};
|
|
function D(t) {
|
|
if (M[t] !== void 0)
|
|
return M[t];
|
|
let e;
|
|
switch (t) {
|
|
case "WEBGL_depth_texture":
|
|
e = n.getExtension("WEBGL_depth_texture") || n.getExtension("MOZ_WEBGL_depth_texture") || n.getExtension("WEBKIT_WEBGL_depth_texture");
|
|
break;
|
|
case "EXT_texture_filter_anisotropic":
|
|
e = n.getExtension("EXT_texture_filter_anisotropic") || n.getExtension("MOZ_EXT_texture_filter_anisotropic") || n.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
|
|
break;
|
|
case "WEBGL_compressed_texture_s3tc":
|
|
e = n.getExtension("WEBGL_compressed_texture_s3tc") || n.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || n.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
|
|
break;
|
|
case "WEBGL_compressed_texture_pvrtc":
|
|
e = n.getExtension("WEBGL_compressed_texture_pvrtc") || n.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");
|
|
break;
|
|
default:
|
|
e = n.getExtension(t);
|
|
}
|
|
return M[t] = e, e;
|
|
}
|
|
return {
|
|
has: function(t) {
|
|
return D(t) !== null;
|
|
},
|
|
init: function(t) {
|
|
t.isWebGL2 ? D("EXT_color_buffer_float") : (D("WEBGL_depth_texture"), D("OES_texture_float"), D("OES_texture_half_float"), D("OES_texture_half_float_linear"), D("OES_standard_derivatives"), D("OES_element_index_uint"), D("OES_vertex_array_object"), D("ANGLE_instanced_arrays")), D("OES_texture_float_linear"), D("EXT_color_buffer_half_float"), D("WEBGL_multisampled_render_to_texture");
|
|
},
|
|
get: function(t) {
|
|
const e = D(t);
|
|
return e === null && console.warn("THREE.WebGLRenderer: " + t + " extension not supported."), e;
|
|
}
|
|
};
|
|
}
|
|
function Tr(n, M, D, t) {
|
|
const e = {}, N = /* @__PURE__ */ new WeakMap();
|
|
function A(u) {
|
|
const g = u.target;
|
|
g.index !== null && M.remove(g.index);
|
|
for (const j in g.attributes)
|
|
M.remove(g.attributes[j]);
|
|
g.removeEventListener("dispose", A), delete e[g.id];
|
|
const s = N.get(g);
|
|
s && (M.remove(s), N.delete(g)), t.releaseStatesOfGeometry(g), g.isInstancedBufferGeometry === !0 && delete g._maxInstanceCount, D.memory.geometries--;
|
|
}
|
|
function z(u, g) {
|
|
return e[g.id] === !0 || (g.addEventListener("dispose", A), e[g.id] = !0, D.memory.geometries++), g;
|
|
}
|
|
function I(u) {
|
|
const g = u.attributes;
|
|
for (const j in g)
|
|
M.update(g[j], 34962);
|
|
const s = u.morphAttributes;
|
|
for (const j in s) {
|
|
const y = s[j];
|
|
for (let a = 0, c = y.length; a < c; a++)
|
|
M.update(y[a], 34962);
|
|
}
|
|
}
|
|
function i(u) {
|
|
const g = [], s = u.index, j = u.attributes.position;
|
|
let y = 0;
|
|
if (s !== null) {
|
|
const r = s.array;
|
|
y = s.version;
|
|
for (let l = 0, C = r.length; l < C; l += 3) {
|
|
const E = r[l + 0], d = r[l + 1], p = r[l + 2];
|
|
g.push(E, d, d, p, p, E);
|
|
}
|
|
} else {
|
|
const r = j.array;
|
|
y = j.version;
|
|
for (let l = 0, C = r.length / 3 - 1; l < C; l += 3) {
|
|
const E = l + 0, d = l + 1, p = l + 2;
|
|
g.push(E, d, d, p, p, E);
|
|
}
|
|
}
|
|
const a = new (ii(g) ? gi : ui)(g, 1);
|
|
a.version = y;
|
|
const c = N.get(u);
|
|
c && M.remove(c), N.set(u, a);
|
|
}
|
|
function T(u) {
|
|
const g = N.get(u);
|
|
if (g) {
|
|
const s = u.index;
|
|
s !== null && g.version < s.version && i(u);
|
|
} else
|
|
i(u);
|
|
return N.get(u);
|
|
}
|
|
return {
|
|
get: z,
|
|
update: I,
|
|
getWireframeAttribute: T
|
|
};
|
|
}
|
|
function ur(n, M, D, t) {
|
|
const e = t.isWebGL2;
|
|
let N;
|
|
function A(g) {
|
|
N = g;
|
|
}
|
|
let z, I;
|
|
function i(g) {
|
|
z = g.type, I = g.bytesPerElement;
|
|
}
|
|
function T(g, s) {
|
|
n.drawElements(N, s, z, g * I), D.update(s, N, 1);
|
|
}
|
|
function u(g, s, j) {
|
|
if (j === 0)
|
|
return;
|
|
let y, a;
|
|
if (e)
|
|
y = n, a = "drawElementsInstanced";
|
|
else if (y = M.get("ANGLE_instanced_arrays"), a = "drawElementsInstancedANGLE", y === null) {
|
|
console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
|
|
return;
|
|
}
|
|
y[a](N, s, z, g * I, j), D.update(s, N, j);
|
|
}
|
|
this.setMode = A, this.setIndex = i, this.render = T, this.renderInstances = u;
|
|
}
|
|
function gr(n) {
|
|
const M = {
|
|
geometries: 0,
|
|
textures: 0
|
|
}, D = {
|
|
frame: 0,
|
|
calls: 0,
|
|
triangles: 0,
|
|
points: 0,
|
|
lines: 0
|
|
};
|
|
function t(N, A, z) {
|
|
switch (D.calls++, A) {
|
|
case 4:
|
|
D.triangles += z * (N / 3);
|
|
break;
|
|
case 1:
|
|
D.lines += z * (N / 2);
|
|
break;
|
|
case 3:
|
|
D.lines += z * (N - 1);
|
|
break;
|
|
case 2:
|
|
D.lines += z * N;
|
|
break;
|
|
case 0:
|
|
D.points += z * N;
|
|
break;
|
|
default:
|
|
console.error("THREE.WebGLInfo: Unknown draw mode:", A);
|
|
break;
|
|
}
|
|
}
|
|
function e() {
|
|
D.frame++, D.calls = 0, D.triangles = 0, D.points = 0, D.lines = 0;
|
|
}
|
|
return {
|
|
memory: M,
|
|
render: D,
|
|
programs: null,
|
|
autoReset: !0,
|
|
reset: e,
|
|
update: t
|
|
};
|
|
}
|
|
class nA extends iD {
|
|
constructor(M = null, D = 1, t = 1, e = 1) {
|
|
super(null), this.image = { data: M, width: D, height: t, depth: e }, this.magFilter = ND, this.minFilter = ND, this.wrapR = xD, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1;
|
|
}
|
|
}
|
|
nA.prototype.isDataTexture2DArray = !0;
|
|
function rr(n, M) {
|
|
return n[0] - M[0];
|
|
}
|
|
function sr(n, M) {
|
|
return Math.abs(M[1]) - Math.abs(n[1]);
|
|
}
|
|
function gz(n, M) {
|
|
let D = 1;
|
|
const t = M.isInterleavedBufferAttribute ? M.data.array : M.array;
|
|
t instanceof Int8Array ? D = 127 : t instanceof Int16Array ? D = 32767 : t instanceof Int32Array ? D = 2147483647 : console.error("THREE.WebGLMorphtargets: Unsupported morph attribute data type: ", t), n.divideScalar(D);
|
|
}
|
|
function cr(n, M, D) {
|
|
const t = {}, e = new Float32Array(8), N = /* @__PURE__ */ new WeakMap(), A = new O(), z = [];
|
|
for (let i = 0; i < 8; i++)
|
|
z[i] = [i, 0];
|
|
function I(i, T, u, g) {
|
|
const s = i.morphTargetInfluences;
|
|
if (M.isWebGL2 === !0) {
|
|
const j = T.morphAttributes.position.length;
|
|
let y = N.get(T);
|
|
if (y === void 0 || y.count !== j) {
|
|
let h = function() {
|
|
G.dispose(), N.delete(T), T.removeEventListener("dispose", h);
|
|
};
|
|
y !== void 0 && y.texture.dispose();
|
|
const r = T.morphAttributes.normal !== void 0, l = T.morphAttributes.position, C = T.morphAttributes.normal || [], E = T.attributes.position.count, d = r === !0 ? 2 : 1;
|
|
let p = E * d, H = 1;
|
|
p > M.maxTextureSize && (H = Math.ceil(p / M.maxTextureSize), p = M.maxTextureSize);
|
|
const DM = new Float32Array(p * H * 4 * j), G = new nA(DM, p, H, j);
|
|
G.format = yD, G.type = Ot, G.needsUpdate = !0;
|
|
const o = d * 4;
|
|
for (let Y = 0; Y < j; Y++) {
|
|
const k = l[Y], f = C[Y], Q = p * H * 4 * Y;
|
|
for (let b = 0; b < k.count; b++) {
|
|
A.fromBufferAttribute(k, b), k.normalized === !0 && gz(A, k);
|
|
const W = b * o;
|
|
DM[Q + W + 0] = A.x, DM[Q + W + 1] = A.y, DM[Q + W + 2] = A.z, DM[Q + W + 3] = 0, r === !0 && (A.fromBufferAttribute(f, b), f.normalized === !0 && gz(A, f), DM[Q + W + 4] = A.x, DM[Q + W + 5] = A.y, DM[Q + W + 6] = A.z, DM[Q + W + 7] = 0);
|
|
}
|
|
}
|
|
y = {
|
|
count: j,
|
|
texture: G,
|
|
size: new q(p, H)
|
|
}, N.set(T, y), T.addEventListener("dispose", h);
|
|
}
|
|
let a = 0;
|
|
for (let r = 0; r < s.length; r++)
|
|
a += s[r];
|
|
const c = T.morphTargetsRelative ? 1 : 1 - a;
|
|
g.getUniforms().setValue(n, "morphTargetBaseInfluence", c), g.getUniforms().setValue(n, "morphTargetInfluences", s), g.getUniforms().setValue(n, "morphTargetsTexture", y.texture, D), g.getUniforms().setValue(n, "morphTargetsTextureSize", y.size);
|
|
} else {
|
|
const j = s === void 0 ? 0 : s.length;
|
|
let y = t[T.id];
|
|
if (y === void 0 || y.length !== j) {
|
|
y = [];
|
|
for (let C = 0; C < j; C++)
|
|
y[C] = [C, 0];
|
|
t[T.id] = y;
|
|
}
|
|
for (let C = 0; C < j; C++) {
|
|
const E = y[C];
|
|
E[0] = C, E[1] = s[C];
|
|
}
|
|
y.sort(sr);
|
|
for (let C = 0; C < 8; C++)
|
|
C < j && y[C][1] ? (z[C][0] = y[C][0], z[C][1] = y[C][1]) : (z[C][0] = Number.MAX_SAFE_INTEGER, z[C][1] = 0);
|
|
z.sort(rr);
|
|
const a = T.morphAttributes.position, c = T.morphAttributes.normal;
|
|
let r = 0;
|
|
for (let C = 0; C < 8; C++) {
|
|
const E = z[C], d = E[0], p = E[1];
|
|
d !== Number.MAX_SAFE_INTEGER && p ? (a && T.getAttribute("morphTarget" + C) !== a[d] && T.setAttribute("morphTarget" + C, a[d]), c && T.getAttribute("morphNormal" + C) !== c[d] && T.setAttribute("morphNormal" + C, c[d]), e[C] = p, r += p) : (a && T.hasAttribute("morphTarget" + C) === !0 && T.deleteAttribute("morphTarget" + C), c && T.hasAttribute("morphNormal" + C) === !0 && T.deleteAttribute("morphNormal" + C), e[C] = 0);
|
|
}
|
|
const l = T.morphTargetsRelative ? 1 : 1 - r;
|
|
g.getUniforms().setValue(n, "morphTargetBaseInfluence", l), g.getUniforms().setValue(n, "morphTargetInfluences", e);
|
|
}
|
|
}
|
|
return {
|
|
update: I
|
|
};
|
|
}
|
|
function jr(n, M, D, t) {
|
|
let e = /* @__PURE__ */ new WeakMap();
|
|
function N(I) {
|
|
const i = t.render.frame, T = I.geometry, u = M.get(I, T);
|
|
return e.get(u) !== i && (M.update(u), e.set(u, i)), I.isInstancedMesh && (I.hasEventListener("dispose", z) === !1 && I.addEventListener("dispose", z), D.update(I.instanceMatrix, 34962), I.instanceColor !== null && D.update(I.instanceColor, 34962)), u;
|
|
}
|
|
function A() {
|
|
e = /* @__PURE__ */ new WeakMap();
|
|
}
|
|
function z(I) {
|
|
const i = I.target;
|
|
i.removeEventListener("dispose", z), D.remove(i.instanceMatrix), i.instanceColor !== null && D.remove(i.instanceColor);
|
|
}
|
|
return {
|
|
update: N,
|
|
dispose: A
|
|
};
|
|
}
|
|
class yi extends iD {
|
|
constructor(M = null, D = 1, t = 1, e = 1) {
|
|
super(null), this.image = { data: M, width: D, height: t, depth: e }, this.magFilter = ND, this.minFilter = ND, this.wrapR = xD, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1;
|
|
}
|
|
}
|
|
yi.prototype.isDataTexture3D = !0;
|
|
const oi = new iD(), ai = new nA(), Ci = new yi(), Li = new SN(), rz = [], sz = [], cz = new Float32Array(16), jz = new Float32Array(9), yz = new Float32Array(4);
|
|
function ue(n, M, D) {
|
|
const t = n[0];
|
|
if (t <= 0 || t > 0)
|
|
return n;
|
|
const e = M * D;
|
|
let N = rz[e];
|
|
if (N === void 0 && (N = new Float32Array(e), rz[e] = N), M !== 0) {
|
|
t.toArray(N, 0);
|
|
for (let A = 1, z = 0; A !== M; ++A)
|
|
z += D, n[A].toArray(N, z);
|
|
}
|
|
return N;
|
|
}
|
|
function oD(n, M) {
|
|
if (n.length !== M.length)
|
|
return !1;
|
|
for (let D = 0, t = n.length; D < t; D++)
|
|
if (n[D] !== M[D])
|
|
return !1;
|
|
return !0;
|
|
}
|
|
function cD(n, M) {
|
|
for (let D = 0, t = M.length; D < t; D++)
|
|
n[D] = M[D];
|
|
}
|
|
function bN(n, M) {
|
|
let D = sz[M];
|
|
D === void 0 && (D = new Int32Array(M), sz[M] = D);
|
|
for (let t = 0; t !== M; ++t)
|
|
D[t] = n.allocateTextureUnit();
|
|
return D;
|
|
}
|
|
function yr(n, M) {
|
|
const D = this.cache;
|
|
D[0] !== M && (n.uniform1f(this.addr, M), D[0] = M);
|
|
}
|
|
function or(n, M) {
|
|
const D = this.cache;
|
|
if (M.x !== void 0)
|
|
(D[0] !== M.x || D[1] !== M.y) && (n.uniform2f(this.addr, M.x, M.y), D[0] = M.x, D[1] = M.y);
|
|
else {
|
|
if (oD(D, M))
|
|
return;
|
|
n.uniform2fv(this.addr, M), cD(D, M);
|
|
}
|
|
}
|
|
function ar(n, M) {
|
|
const D = this.cache;
|
|
if (M.x !== void 0)
|
|
(D[0] !== M.x || D[1] !== M.y || D[2] !== M.z) && (n.uniform3f(this.addr, M.x, M.y, M.z), D[0] = M.x, D[1] = M.y, D[2] = M.z);
|
|
else if (M.r !== void 0)
|
|
(D[0] !== M.r || D[1] !== M.g || D[2] !== M.b) && (n.uniform3f(this.addr, M.r, M.g, M.b), D[0] = M.r, D[1] = M.g, D[2] = M.b);
|
|
else {
|
|
if (oD(D, M))
|
|
return;
|
|
n.uniform3fv(this.addr, M), cD(D, M);
|
|
}
|
|
}
|
|
function Cr(n, M) {
|
|
const D = this.cache;
|
|
if (M.x !== void 0)
|
|
(D[0] !== M.x || D[1] !== M.y || D[2] !== M.z || D[3] !== M.w) && (n.uniform4f(this.addr, M.x, M.y, M.z, M.w), D[0] = M.x, D[1] = M.y, D[2] = M.z, D[3] = M.w);
|
|
else {
|
|
if (oD(D, M))
|
|
return;
|
|
n.uniform4fv(this.addr, M), cD(D, M);
|
|
}
|
|
}
|
|
function Lr(n, M) {
|
|
const D = this.cache, t = M.elements;
|
|
if (t === void 0) {
|
|
if (oD(D, M))
|
|
return;
|
|
n.uniformMatrix2fv(this.addr, !1, M), cD(D, M);
|
|
} else {
|
|
if (oD(D, t))
|
|
return;
|
|
yz.set(t), n.uniformMatrix2fv(this.addr, !1, yz), cD(D, t);
|
|
}
|
|
}
|
|
function wr(n, M) {
|
|
const D = this.cache, t = M.elements;
|
|
if (t === void 0) {
|
|
if (oD(D, M))
|
|
return;
|
|
n.uniformMatrix3fv(this.addr, !1, M), cD(D, M);
|
|
} else {
|
|
if (oD(D, t))
|
|
return;
|
|
jz.set(t), n.uniformMatrix3fv(this.addr, !1, jz), cD(D, t);
|
|
}
|
|
}
|
|
function Or(n, M) {
|
|
const D = this.cache, t = M.elements;
|
|
if (t === void 0) {
|
|
if (oD(D, M))
|
|
return;
|
|
n.uniformMatrix4fv(this.addr, !1, M), cD(D, M);
|
|
} else {
|
|
if (oD(D, t))
|
|
return;
|
|
cz.set(t), n.uniformMatrix4fv(this.addr, !1, cz), cD(D, t);
|
|
}
|
|
}
|
|
function xr(n, M) {
|
|
const D = this.cache;
|
|
D[0] !== M && (n.uniform1i(this.addr, M), D[0] = M);
|
|
}
|
|
function Er(n, M) {
|
|
const D = this.cache;
|
|
oD(D, M) || (n.uniform2iv(this.addr, M), cD(D, M));
|
|
}
|
|
function lr(n, M) {
|
|
const D = this.cache;
|
|
oD(D, M) || (n.uniform3iv(this.addr, M), cD(D, M));
|
|
}
|
|
function dr(n, M) {
|
|
const D = this.cache;
|
|
oD(D, M) || (n.uniform4iv(this.addr, M), cD(D, M));
|
|
}
|
|
function vr(n, M) {
|
|
const D = this.cache;
|
|
D[0] !== M && (n.uniform1ui(this.addr, M), D[0] = M);
|
|
}
|
|
function pr(n, M) {
|
|
const D = this.cache;
|
|
oD(D, M) || (n.uniform2uiv(this.addr, M), cD(D, M));
|
|
}
|
|
function hr(n, M) {
|
|
const D = this.cache;
|
|
oD(D, M) || (n.uniform3uiv(this.addr, M), cD(D, M));
|
|
}
|
|
function Yr(n, M) {
|
|
const D = this.cache;
|
|
oD(D, M) || (n.uniform4uiv(this.addr, M), cD(D, M));
|
|
}
|
|
function Ur(n, M, D) {
|
|
const t = this.cache, e = D.allocateTextureUnit();
|
|
t[0] !== e && (n.uniform1i(this.addr, e), t[0] = e), D.safeSetTexture2D(M || oi, e);
|
|
}
|
|
function Qr(n, M, D) {
|
|
const t = this.cache, e = D.allocateTextureUnit();
|
|
t[0] !== e && (n.uniform1i(this.addr, e), t[0] = e), D.setTexture3D(M || Ci, e);
|
|
}
|
|
function fr(n, M, D) {
|
|
const t = this.cache, e = D.allocateTextureUnit();
|
|
t[0] !== e && (n.uniform1i(this.addr, e), t[0] = e), D.safeSetTextureCube(M || Li, e);
|
|
}
|
|
function mr(n, M, D) {
|
|
const t = this.cache, e = D.allocateTextureUnit();
|
|
t[0] !== e && (n.uniform1i(this.addr, e), t[0] = e), D.setTexture2DArray(M || ai, e);
|
|
}
|
|
function kr(n) {
|
|
switch (n) {
|
|
case 5126:
|
|
return yr;
|
|
case 35664:
|
|
return or;
|
|
case 35665:
|
|
return ar;
|
|
case 35666:
|
|
return Cr;
|
|
case 35674:
|
|
return Lr;
|
|
case 35675:
|
|
return wr;
|
|
case 35676:
|
|
return Or;
|
|
case 5124:
|
|
case 35670:
|
|
return xr;
|
|
case 35667:
|
|
case 35671:
|
|
return Er;
|
|
case 35668:
|
|
case 35672:
|
|
return lr;
|
|
case 35669:
|
|
case 35673:
|
|
return dr;
|
|
case 5125:
|
|
return vr;
|
|
case 36294:
|
|
return pr;
|
|
case 36295:
|
|
return hr;
|
|
case 36296:
|
|
return Yr;
|
|
case 35678:
|
|
case 36198:
|
|
case 36298:
|
|
case 36306:
|
|
case 35682:
|
|
return Ur;
|
|
case 35679:
|
|
case 36299:
|
|
case 36307:
|
|
return Qr;
|
|
case 35680:
|
|
case 36300:
|
|
case 36308:
|
|
case 36293:
|
|
return fr;
|
|
case 36289:
|
|
case 36303:
|
|
case 36311:
|
|
case 36292:
|
|
return mr;
|
|
}
|
|
}
|
|
function Sr(n, M) {
|
|
n.uniform1fv(this.addr, M);
|
|
}
|
|
function Zr(n, M) {
|
|
const D = ue(M, this.size, 2);
|
|
n.uniform2fv(this.addr, D);
|
|
}
|
|
function _r(n, M) {
|
|
const D = ue(M, this.size, 3);
|
|
n.uniform3fv(this.addr, D);
|
|
}
|
|
function br(n, M) {
|
|
const D = ue(M, this.size, 4);
|
|
n.uniform4fv(this.addr, D);
|
|
}
|
|
function Kr(n, M) {
|
|
const D = ue(M, this.size, 4);
|
|
n.uniformMatrix2fv(this.addr, !1, D);
|
|
}
|
|
function Rr(n, M) {
|
|
const D = ue(M, this.size, 9);
|
|
n.uniformMatrix3fv(this.addr, !1, D);
|
|
}
|
|
function Pr(n, M) {
|
|
const D = ue(M, this.size, 16);
|
|
n.uniformMatrix4fv(this.addr, !1, D);
|
|
}
|
|
function Fr(n, M) {
|
|
n.uniform1iv(this.addr, M);
|
|
}
|
|
function Br(n, M) {
|
|
n.uniform2iv(this.addr, M);
|
|
}
|
|
function Vr(n, M) {
|
|
n.uniform3iv(this.addr, M);
|
|
}
|
|
function Hr(n, M) {
|
|
n.uniform4iv(this.addr, M);
|
|
}
|
|
function Gr(n, M) {
|
|
n.uniform1uiv(this.addr, M);
|
|
}
|
|
function Wr(n, M) {
|
|
n.uniform2uiv(this.addr, M);
|
|
}
|
|
function qr(n, M) {
|
|
n.uniform3uiv(this.addr, M);
|
|
}
|
|
function Xr(n, M) {
|
|
n.uniform4uiv(this.addr, M);
|
|
}
|
|
function Jr(n, M, D) {
|
|
const t = M.length, e = bN(D, t);
|
|
n.uniform1iv(this.addr, e);
|
|
for (let N = 0; N !== t; ++N)
|
|
D.safeSetTexture2D(M[N] || oi, e[N]);
|
|
}
|
|
function $r(n, M, D) {
|
|
const t = M.length, e = bN(D, t);
|
|
n.uniform1iv(this.addr, e);
|
|
for (let N = 0; N !== t; ++N)
|
|
D.setTexture3D(M[N] || Ci, e[N]);
|
|
}
|
|
function Ms(n, M, D) {
|
|
const t = M.length, e = bN(D, t);
|
|
n.uniform1iv(this.addr, e);
|
|
for (let N = 0; N !== t; ++N)
|
|
D.safeSetTextureCube(M[N] || Li, e[N]);
|
|
}
|
|
function Ds(n, M, D) {
|
|
const t = M.length, e = bN(D, t);
|
|
n.uniform1iv(this.addr, e);
|
|
for (let N = 0; N !== t; ++N)
|
|
D.setTexture2DArray(M[N] || ai, e[N]);
|
|
}
|
|
function ts(n) {
|
|
switch (n) {
|
|
case 5126:
|
|
return Sr;
|
|
case 35664:
|
|
return Zr;
|
|
case 35665:
|
|
return _r;
|
|
case 35666:
|
|
return br;
|
|
case 35674:
|
|
return Kr;
|
|
case 35675:
|
|
return Rr;
|
|
case 35676:
|
|
return Pr;
|
|
case 5124:
|
|
case 35670:
|
|
return Fr;
|
|
case 35667:
|
|
case 35671:
|
|
return Br;
|
|
case 35668:
|
|
case 35672:
|
|
return Vr;
|
|
case 35669:
|
|
case 35673:
|
|
return Hr;
|
|
case 5125:
|
|
return Gr;
|
|
case 36294:
|
|
return Wr;
|
|
case 36295:
|
|
return qr;
|
|
case 36296:
|
|
return Xr;
|
|
case 35678:
|
|
case 36198:
|
|
case 36298:
|
|
case 36306:
|
|
case 35682:
|
|
return Jr;
|
|
case 35679:
|
|
case 36299:
|
|
case 36307:
|
|
return $r;
|
|
case 35680:
|
|
case 36300:
|
|
case 36308:
|
|
case 36293:
|
|
return Ms;
|
|
case 36289:
|
|
case 36303:
|
|
case 36311:
|
|
case 36292:
|
|
return Ds;
|
|
}
|
|
}
|
|
function es(n, M, D) {
|
|
this.id = n, this.addr = D, this.cache = [], this.setValue = kr(M.type);
|
|
}
|
|
function wi(n, M, D) {
|
|
this.id = n, this.addr = D, this.cache = [], this.size = M.size, this.setValue = ts(M.type);
|
|
}
|
|
wi.prototype.updateCache = function(n) {
|
|
const M = this.cache;
|
|
n instanceof Float32Array && M.length !== n.length && (this.cache = new Float32Array(n.length)), cD(M, n);
|
|
};
|
|
function Oi(n) {
|
|
this.id = n, this.seq = [], this.map = {};
|
|
}
|
|
Oi.prototype.setValue = function(n, M, D) {
|
|
const t = this.seq;
|
|
for (let e = 0, N = t.length; e !== N; ++e) {
|
|
const A = t[e];
|
|
A.setValue(n, M[A.id], D);
|
|
}
|
|
};
|
|
const xn = /(\w+)(\])?(\[|\.)?/g;
|
|
function oz(n, M) {
|
|
n.seq.push(M), n.map[M.id] = M;
|
|
}
|
|
function Ns(n, M, D) {
|
|
const t = n.name, e = t.length;
|
|
for (xn.lastIndex = 0; ; ) {
|
|
const N = xn.exec(t), A = xn.lastIndex;
|
|
let z = N[1];
|
|
const I = N[2] === "]", i = N[3];
|
|
if (I && (z = z | 0), i === void 0 || i === "[" && A + 2 === e) {
|
|
oz(D, i === void 0 ? new es(z, n, M) : new wi(z, n, M));
|
|
break;
|
|
} else {
|
|
let u = D.map[z];
|
|
u === void 0 && (u = new Oi(z), oz(D, u)), D = u;
|
|
}
|
|
}
|
|
}
|
|
function ut(n, M) {
|
|
this.seq = [], this.map = {};
|
|
const D = n.getProgramParameter(M, 35718);
|
|
for (let t = 0; t < D; ++t) {
|
|
const e = n.getActiveUniform(M, t), N = n.getUniformLocation(M, e.name);
|
|
Ns(e, N, this);
|
|
}
|
|
}
|
|
ut.prototype.setValue = function(n, M, D, t) {
|
|
const e = this.map[M];
|
|
e !== void 0 && e.setValue(n, D, t);
|
|
};
|
|
ut.prototype.setOptional = function(n, M, D) {
|
|
const t = M[D];
|
|
t !== void 0 && this.setValue(n, D, t);
|
|
};
|
|
ut.upload = function(n, M, D, t) {
|
|
for (let e = 0, N = M.length; e !== N; ++e) {
|
|
const A = M[e], z = D[A.id];
|
|
z.needsUpdate !== !1 && A.setValue(n, z.value, t);
|
|
}
|
|
};
|
|
ut.seqWithValue = function(n, M) {
|
|
const D = [];
|
|
for (let t = 0, e = n.length; t !== e; ++t) {
|
|
const N = n[t];
|
|
N.id in M && D.push(N);
|
|
}
|
|
return D;
|
|
};
|
|
function az(n, M, D) {
|
|
const t = n.createShader(M);
|
|
return n.shaderSource(t, D), n.compileShader(t), t;
|
|
}
|
|
let ns = 0;
|
|
function As(n) {
|
|
const M = n.split(`
|
|
`);
|
|
for (let D = 0; D < M.length; D++)
|
|
M[D] = D + 1 + ": " + M[D];
|
|
return M.join(`
|
|
`);
|
|
}
|
|
function zs(n) {
|
|
switch (n) {
|
|
case st:
|
|
return ["Linear", "( value )"];
|
|
case HM:
|
|
return ["sRGB", "( value )"];
|
|
default:
|
|
return console.warn("THREE.WebGLProgram: Unsupported encoding:", n), ["Linear", "( value )"];
|
|
}
|
|
}
|
|
function Cz(n, M, D) {
|
|
const t = n.getShaderParameter(M, 35713), e = n.getShaderInfoLog(M).trim();
|
|
return t && e === "" ? "" : D.toUpperCase() + `
|
|
|
|
` + e + `
|
|
|
|
` + As(n.getShaderSource(M));
|
|
}
|
|
function is(n, M) {
|
|
const D = zs(M);
|
|
return "vec4 " + n + "( vec4 value ) { return LinearTo" + D[0] + D[1] + "; }";
|
|
}
|
|
function Is(n, M) {
|
|
let D;
|
|
switch (M) {
|
|
case UI:
|
|
D = "Linear";
|
|
break;
|
|
case QI:
|
|
D = "Reinhard";
|
|
break;
|
|
case fI:
|
|
D = "OptimizedCineon";
|
|
break;
|
|
case mI:
|
|
D = "ACESFilmic";
|
|
break;
|
|
case kI:
|
|
D = "Custom";
|
|
break;
|
|
default:
|
|
console.warn("THREE.WebGLProgram: Unsupported toneMapping:", M), D = "Linear";
|
|
}
|
|
return "vec3 " + n + "( vec3 color ) { return " + D + "ToneMapping( color ); }";
|
|
}
|
|
function Ts(n) {
|
|
return [
|
|
n.extensionDerivatives || n.envMapCubeUV || n.bumpMap || n.tangentSpaceNormalMap || n.clearcoatNormalMap || n.flatShading || n.shaderID === "physical" ? "#extension GL_OES_standard_derivatives : enable" : "",
|
|
(n.extensionFragDepth || n.logarithmicDepthBuffer) && n.rendererExtensionFragDepth ? "#extension GL_EXT_frag_depth : enable" : "",
|
|
n.extensionDrawBuffers && n.rendererExtensionDrawBuffers ? "#extension GL_EXT_draw_buffers : require" : "",
|
|
(n.extensionShaderTextureLOD || n.envMap || n.transmission) && n.rendererExtensionShaderTextureLod ? "#extension GL_EXT_shader_texture_lod : enable" : ""
|
|
].filter(de).join(`
|
|
`);
|
|
}
|
|
function us(n) {
|
|
const M = [];
|
|
for (const D in n) {
|
|
const t = n[D];
|
|
t !== !1 && M.push("#define " + D + " " + t);
|
|
}
|
|
return M.join(`
|
|
`);
|
|
}
|
|
function gs(n, M) {
|
|
const D = {}, t = n.getProgramParameter(M, 35721);
|
|
for (let e = 0; e < t; e++) {
|
|
const N = n.getActiveAttrib(M, e), A = N.name;
|
|
let z = 1;
|
|
N.type === 35674 && (z = 2), N.type === 35675 && (z = 3), N.type === 35676 && (z = 4), D[A] = {
|
|
type: N.type,
|
|
location: n.getAttribLocation(M, A),
|
|
locationSize: z
|
|
};
|
|
}
|
|
return D;
|
|
}
|
|
function de(n) {
|
|
return n !== "";
|
|
}
|
|
function Lz(n, M) {
|
|
return n.replace(/NUM_DIR_LIGHTS/g, M.numDirLights).replace(/NUM_SPOT_LIGHTS/g, M.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, M.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, M.numPointLights).replace(/NUM_HEMI_LIGHTS/g, M.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, M.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, M.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, M.numPointLightShadows);
|
|
}
|
|
function wz(n, M) {
|
|
return n.replace(/NUM_CLIPPING_PLANES/g, M.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, M.numClippingPlanes - M.numClipIntersection);
|
|
}
|
|
const rs = /^[ \t]*#include +<([\w\d./]+)>/gm;
|
|
function Kn(n) {
|
|
return n.replace(rs, ss);
|
|
}
|
|
function ss(n, M) {
|
|
const D = YM[M];
|
|
if (D === void 0)
|
|
throw new Error("Can not resolve #include <" + M + ">");
|
|
return Kn(D);
|
|
}
|
|
const cs = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g, js = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;
|
|
function Oz(n) {
|
|
return n.replace(js, xi).replace(cs, ys);
|
|
}
|
|
function ys(n, M, D, t) {
|
|
return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."), xi(n, M, D, t);
|
|
}
|
|
function xi(n, M, D, t) {
|
|
let e = "";
|
|
for (let N = parseInt(M); N < parseInt(D); N++)
|
|
e += t.replace(/\[\s*i\s*\]/g, "[ " + N + " ]").replace(/UNROLLED_LOOP_INDEX/g, N);
|
|
return e;
|
|
}
|
|
function xz(n) {
|
|
let M = "precision " + n.precision + ` float;
|
|
precision ` + n.precision + " int;";
|
|
return n.precision === "highp" ? M += `
|
|
#define HIGH_PRECISION` : n.precision === "mediump" ? M += `
|
|
#define MEDIUM_PRECISION` : n.precision === "lowp" && (M += `
|
|
#define LOW_PRECISION`), M;
|
|
}
|
|
function os(n) {
|
|
let M = "SHADOWMAP_TYPE_BASIC";
|
|
return n.shadowMapType === ti ? M = "SHADOWMAP_TYPE_PCF" : n.shadowMapType === TI ? M = "SHADOWMAP_TYPE_PCF_SOFT" : n.shadowMapType === le && (M = "SHADOWMAP_TYPE_VSM"), M;
|
|
}
|
|
function as(n) {
|
|
let M = "ENVMAP_TYPE_CUBE";
|
|
if (n.envMap)
|
|
switch (n.envMapMode) {
|
|
case be:
|
|
case Ke:
|
|
M = "ENVMAP_TYPE_CUBE";
|
|
break;
|
|
case mN:
|
|
case qn:
|
|
M = "ENVMAP_TYPE_CUBE_UV";
|
|
break;
|
|
}
|
|
return M;
|
|
}
|
|
function Cs(n) {
|
|
let M = "ENVMAP_MODE_REFLECTION";
|
|
if (n.envMap)
|
|
switch (n.envMapMode) {
|
|
case Ke:
|
|
case qn:
|
|
M = "ENVMAP_MODE_REFRACTION";
|
|
break;
|
|
}
|
|
return M;
|
|
}
|
|
function Ls(n) {
|
|
let M = "ENVMAP_BLENDING_NONE";
|
|
if (n.envMap)
|
|
switch (n.combine) {
|
|
case fN:
|
|
M = "ENVMAP_BLENDING_MULTIPLY";
|
|
break;
|
|
case hI:
|
|
M = "ENVMAP_BLENDING_MIX";
|
|
break;
|
|
case YI:
|
|
M = "ENVMAP_BLENDING_ADD";
|
|
break;
|
|
}
|
|
return M;
|
|
}
|
|
function ws(n, M, D, t) {
|
|
const e = n.getContext(), N = D.defines;
|
|
let A = D.vertexShader, z = D.fragmentShader;
|
|
const I = os(D), i = as(D), T = Cs(D), u = Ls(D), g = D.isWebGL2 ? "" : Ts(D), s = us(N), j = e.createProgram();
|
|
let y, a, c = D.glslVersion ? "#version " + D.glslVersion + `
|
|
` : "";
|
|
D.isRawShaderMaterial ? (y = [
|
|
s
|
|
].filter(de).join(`
|
|
`), y.length > 0 && (y += `
|
|
`), a = [
|
|
g,
|
|
s
|
|
].filter(de).join(`
|
|
`), a.length > 0 && (a += `
|
|
`)) : (y = [
|
|
xz(D),
|
|
"#define SHADER_NAME " + D.shaderName,
|
|
s,
|
|
D.instancing ? "#define USE_INSTANCING" : "",
|
|
D.instancingColor ? "#define USE_INSTANCING_COLOR" : "",
|
|
D.supportsVertexTextures ? "#define VERTEX_TEXTURES" : "",
|
|
"#define MAX_BONES " + D.maxBones,
|
|
D.useFog && D.fog ? "#define USE_FOG" : "",
|
|
D.useFog && D.fogExp2 ? "#define FOG_EXP2" : "",
|
|
D.map ? "#define USE_MAP" : "",
|
|
D.envMap ? "#define USE_ENVMAP" : "",
|
|
D.envMap ? "#define " + T : "",
|
|
D.lightMap ? "#define USE_LIGHTMAP" : "",
|
|
D.aoMap ? "#define USE_AOMAP" : "",
|
|
D.emissiveMap ? "#define USE_EMISSIVEMAP" : "",
|
|
D.bumpMap ? "#define USE_BUMPMAP" : "",
|
|
D.normalMap ? "#define USE_NORMALMAP" : "",
|
|
D.normalMap && D.objectSpaceNormalMap ? "#define OBJECTSPACE_NORMALMAP" : "",
|
|
D.normalMap && D.tangentSpaceNormalMap ? "#define TANGENTSPACE_NORMALMAP" : "",
|
|
D.clearcoatMap ? "#define USE_CLEARCOATMAP" : "",
|
|
D.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "",
|
|
D.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "",
|
|
D.displacementMap && D.supportsVertexTextures ? "#define USE_DISPLACEMENTMAP" : "",
|
|
D.specularMap ? "#define USE_SPECULARMAP" : "",
|
|
D.specularIntensityMap ? "#define USE_SPECULARINTENSITYMAP" : "",
|
|
D.specularColorMap ? "#define USE_SPECULARCOLORMAP" : "",
|
|
D.roughnessMap ? "#define USE_ROUGHNESSMAP" : "",
|
|
D.metalnessMap ? "#define USE_METALNESSMAP" : "",
|
|
D.alphaMap ? "#define USE_ALPHAMAP" : "",
|
|
D.transmission ? "#define USE_TRANSMISSION" : "",
|
|
D.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "",
|
|
D.thicknessMap ? "#define USE_THICKNESSMAP" : "",
|
|
D.sheenColorMap ? "#define USE_SHEENCOLORMAP" : "",
|
|
D.sheenRoughnessMap ? "#define USE_SHEENROUGHNESSMAP" : "",
|
|
D.vertexTangents ? "#define USE_TANGENT" : "",
|
|
D.vertexColors ? "#define USE_COLOR" : "",
|
|
D.vertexAlphas ? "#define USE_COLOR_ALPHA" : "",
|
|
D.vertexUvs ? "#define USE_UV" : "",
|
|
D.uvsVertexOnly ? "#define UVS_VERTEX_ONLY" : "",
|
|
D.flatShading ? "#define FLAT_SHADED" : "",
|
|
D.skinning ? "#define USE_SKINNING" : "",
|
|
D.useVertexTexture ? "#define BONE_TEXTURE" : "",
|
|
D.morphTargets ? "#define USE_MORPHTARGETS" : "",
|
|
D.morphNormals && D.flatShading === !1 ? "#define USE_MORPHNORMALS" : "",
|
|
D.morphTargets && D.isWebGL2 ? "#define MORPHTARGETS_TEXTURE" : "",
|
|
D.morphTargets && D.isWebGL2 ? "#define MORPHTARGETS_COUNT " + D.morphTargetsCount : "",
|
|
D.doubleSided ? "#define DOUBLE_SIDED" : "",
|
|
D.flipSided ? "#define FLIP_SIDED" : "",
|
|
D.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
|
|
D.shadowMapEnabled ? "#define " + I : "",
|
|
D.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "",
|
|
D.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "",
|
|
D.logarithmicDepthBuffer && D.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "",
|
|
"uniform mat4 modelMatrix;",
|
|
"uniform mat4 modelViewMatrix;",
|
|
"uniform mat4 projectionMatrix;",
|
|
"uniform mat4 viewMatrix;",
|
|
"uniform mat3 normalMatrix;",
|
|
"uniform vec3 cameraPosition;",
|
|
"uniform bool isOrthographic;",
|
|
"#ifdef USE_INSTANCING",
|
|
" attribute mat4 instanceMatrix;",
|
|
"#endif",
|
|
"#ifdef USE_INSTANCING_COLOR",
|
|
" attribute vec3 instanceColor;",
|
|
"#endif",
|
|
"attribute vec3 position;",
|
|
"attribute vec3 normal;",
|
|
"attribute vec2 uv;",
|
|
"#ifdef USE_TANGENT",
|
|
" attribute vec4 tangent;",
|
|
"#endif",
|
|
"#if defined( USE_COLOR_ALPHA )",
|
|
" attribute vec4 color;",
|
|
"#elif defined( USE_COLOR )",
|
|
" attribute vec3 color;",
|
|
"#endif",
|
|
"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )",
|
|
" attribute vec3 morphTarget0;",
|
|
" attribute vec3 morphTarget1;",
|
|
" attribute vec3 morphTarget2;",
|
|
" attribute vec3 morphTarget3;",
|
|
" #ifdef USE_MORPHNORMALS",
|
|
" attribute vec3 morphNormal0;",
|
|
" attribute vec3 morphNormal1;",
|
|
" attribute vec3 morphNormal2;",
|
|
" attribute vec3 morphNormal3;",
|
|
" #else",
|
|
" attribute vec3 morphTarget4;",
|
|
" attribute vec3 morphTarget5;",
|
|
" attribute vec3 morphTarget6;",
|
|
" attribute vec3 morphTarget7;",
|
|
" #endif",
|
|
"#endif",
|
|
"#ifdef USE_SKINNING",
|
|
" attribute vec4 skinIndex;",
|
|
" attribute vec4 skinWeight;",
|
|
"#endif",
|
|
`
|
|
`
|
|
].filter(de).join(`
|
|
`), a = [
|
|
g,
|
|
xz(D),
|
|
"#define SHADER_NAME " + D.shaderName,
|
|
s,
|
|
D.useFog && D.fog ? "#define USE_FOG" : "",
|
|
D.useFog && D.fogExp2 ? "#define FOG_EXP2" : "",
|
|
D.map ? "#define USE_MAP" : "",
|
|
D.matcap ? "#define USE_MATCAP" : "",
|
|
D.envMap ? "#define USE_ENVMAP" : "",
|
|
D.envMap ? "#define " + i : "",
|
|
D.envMap ? "#define " + T : "",
|
|
D.envMap ? "#define " + u : "",
|
|
D.lightMap ? "#define USE_LIGHTMAP" : "",
|
|
D.aoMap ? "#define USE_AOMAP" : "",
|
|
D.emissiveMap ? "#define USE_EMISSIVEMAP" : "",
|
|
D.bumpMap ? "#define USE_BUMPMAP" : "",
|
|
D.normalMap ? "#define USE_NORMALMAP" : "",
|
|
D.normalMap && D.objectSpaceNormalMap ? "#define OBJECTSPACE_NORMALMAP" : "",
|
|
D.normalMap && D.tangentSpaceNormalMap ? "#define TANGENTSPACE_NORMALMAP" : "",
|
|
D.clearcoat ? "#define USE_CLEARCOAT" : "",
|
|
D.clearcoatMap ? "#define USE_CLEARCOATMAP" : "",
|
|
D.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "",
|
|
D.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "",
|
|
D.specularMap ? "#define USE_SPECULARMAP" : "",
|
|
D.specularIntensityMap ? "#define USE_SPECULARINTENSITYMAP" : "",
|
|
D.specularColorMap ? "#define USE_SPECULARCOLORMAP" : "",
|
|
D.roughnessMap ? "#define USE_ROUGHNESSMAP" : "",
|
|
D.metalnessMap ? "#define USE_METALNESSMAP" : "",
|
|
D.alphaMap ? "#define USE_ALPHAMAP" : "",
|
|
D.alphaTest ? "#define USE_ALPHATEST" : "",
|
|
D.sheen ? "#define USE_SHEEN" : "",
|
|
D.sheenColorMap ? "#define USE_SHEENCOLORMAP" : "",
|
|
D.sheenRoughnessMap ? "#define USE_SHEENROUGHNESSMAP" : "",
|
|
D.transmission ? "#define USE_TRANSMISSION" : "",
|
|
D.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "",
|
|
D.thicknessMap ? "#define USE_THICKNESSMAP" : "",
|
|
D.decodeVideoTexture ? "#define DECODE_VIDEO_TEXTURE" : "",
|
|
D.vertexTangents ? "#define USE_TANGENT" : "",
|
|
D.vertexColors || D.instancingColor ? "#define USE_COLOR" : "",
|
|
D.vertexAlphas ? "#define USE_COLOR_ALPHA" : "",
|
|
D.vertexUvs ? "#define USE_UV" : "",
|
|
D.uvsVertexOnly ? "#define UVS_VERTEX_ONLY" : "",
|
|
D.gradientMap ? "#define USE_GRADIENTMAP" : "",
|
|
D.flatShading ? "#define FLAT_SHADED" : "",
|
|
D.doubleSided ? "#define DOUBLE_SIDED" : "",
|
|
D.flipSided ? "#define FLIP_SIDED" : "",
|
|
D.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
|
|
D.shadowMapEnabled ? "#define " + I : "",
|
|
D.premultipliedAlpha ? "#define PREMULTIPLIED_ALPHA" : "",
|
|
D.physicallyCorrectLights ? "#define PHYSICALLY_CORRECT_LIGHTS" : "",
|
|
D.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "",
|
|
D.logarithmicDepthBuffer && D.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "",
|
|
(D.extensionShaderTextureLOD || D.envMap) && D.rendererExtensionShaderTextureLod ? "#define TEXTURE_LOD_EXT" : "",
|
|
"uniform mat4 viewMatrix;",
|
|
"uniform vec3 cameraPosition;",
|
|
"uniform bool isOrthographic;",
|
|
D.toneMapping !== it ? "#define TONE_MAPPING" : "",
|
|
D.toneMapping !== it ? YM.tonemapping_pars_fragment : "",
|
|
D.toneMapping !== it ? Is("toneMapping", D.toneMapping) : "",
|
|
D.dithering ? "#define DITHERING" : "",
|
|
D.transparent ? "" : "#define OPAQUE",
|
|
YM.encodings_pars_fragment,
|
|
is("linearToOutputTexel", D.outputEncoding),
|
|
D.depthPacking ? "#define DEPTH_PACKING " + D.depthPacking : "",
|
|
`
|
|
`
|
|
].filter(de).join(`
|
|
`)), A = Kn(A), A = Lz(A, D), A = wz(A, D), z = Kn(z), z = Lz(z, D), z = wz(z, D), A = Oz(A), z = Oz(z), D.isWebGL2 && D.isRawShaderMaterial !== !0 && (c = `#version 300 es
|
|
`, y = [
|
|
"precision mediump sampler2DArray;",
|
|
"#define attribute in",
|
|
"#define varying out",
|
|
"#define texture2D texture"
|
|
].join(`
|
|
`) + `
|
|
` + y, a = [
|
|
"#define varying in",
|
|
D.glslVersion === VA ? "" : "layout(location = 0) out highp vec4 pc_fragColor;",
|
|
D.glslVersion === VA ? "" : "#define gl_FragColor pc_fragColor",
|
|
"#define gl_FragDepthEXT gl_FragDepth",
|
|
"#define texture2D texture",
|
|
"#define textureCube texture",
|
|
"#define texture2DProj textureProj",
|
|
"#define texture2DLodEXT textureLod",
|
|
"#define texture2DProjLodEXT textureProjLod",
|
|
"#define textureCubeLodEXT textureLod",
|
|
"#define texture2DGradEXT textureGrad",
|
|
"#define texture2DProjGradEXT textureProjGrad",
|
|
"#define textureCubeGradEXT textureGrad"
|
|
].join(`
|
|
`) + `
|
|
` + a);
|
|
const r = c + y + A, l = c + a + z, C = az(e, 35633, r), E = az(e, 35632, l);
|
|
if (e.attachShader(j, C), e.attachShader(j, E), D.index0AttributeName !== void 0 ? e.bindAttribLocation(j, 0, D.index0AttributeName) : D.morphTargets === !0 && e.bindAttribLocation(j, 0, "position"), e.linkProgram(j), n.debug.checkShaderErrors) {
|
|
const H = e.getProgramInfoLog(j).trim(), DM = e.getShaderInfoLog(C).trim(), G = e.getShaderInfoLog(E).trim();
|
|
let o = !0, h = !0;
|
|
if (e.getProgramParameter(j, 35714) === !1) {
|
|
o = !1;
|
|
const Y = Cz(e, C, "vertex"), k = Cz(e, E, "fragment");
|
|
console.error("THREE.WebGLProgram: Shader Error " + e.getError() + " - VALIDATE_STATUS " + e.getProgramParameter(j, 35715) + `
|
|
|
|
Program Info Log: ` + H + `
|
|
` + Y + `
|
|
` + k);
|
|
} else
|
|
H !== "" ? console.warn("THREE.WebGLProgram: Program Info Log:", H) : (DM === "" || G === "") && (h = !1);
|
|
h && (this.diagnostics = {
|
|
runnable: o,
|
|
programLog: H,
|
|
vertexShader: {
|
|
log: DM,
|
|
prefix: y
|
|
},
|
|
fragmentShader: {
|
|
log: G,
|
|
prefix: a
|
|
}
|
|
});
|
|
}
|
|
e.deleteShader(C), e.deleteShader(E);
|
|
let d;
|
|
this.getUniforms = function() {
|
|
return d === void 0 && (d = new ut(e, j)), d;
|
|
};
|
|
let p;
|
|
return this.getAttributes = function() {
|
|
return p === void 0 && (p = gs(e, j)), p;
|
|
}, this.destroy = function() {
|
|
t.releaseStatesOfProgram(this), e.deleteProgram(j), this.program = void 0;
|
|
}, this.name = D.shaderName, this.id = ns++, this.cacheKey = M, this.usedTimes = 1, this.program = j, this.vertexShader = C, this.fragmentShader = E, this;
|
|
}
|
|
let Os = 0;
|
|
class xs {
|
|
constructor() {
|
|
this.shaderCache = /* @__PURE__ */ new Map(), this.materialCache = /* @__PURE__ */ new Map();
|
|
}
|
|
update(M) {
|
|
const D = M.vertexShader, t = M.fragmentShader, e = this._getShaderStage(D), N = this._getShaderStage(t), A = this._getShaderCacheForMaterial(M);
|
|
return A.has(e) === !1 && (A.add(e), e.usedTimes++), A.has(N) === !1 && (A.add(N), N.usedTimes++), this;
|
|
}
|
|
remove(M) {
|
|
const D = this.materialCache.get(M);
|
|
for (const t of D)
|
|
t.usedTimes--, t.usedTimes === 0 && this.shaderCache.delete(t);
|
|
return this.materialCache.delete(M), this;
|
|
}
|
|
getVertexShaderID(M) {
|
|
return this._getShaderStage(M.vertexShader).id;
|
|
}
|
|
getFragmentShaderID(M) {
|
|
return this._getShaderStage(M.fragmentShader).id;
|
|
}
|
|
dispose() {
|
|
this.shaderCache.clear(), this.materialCache.clear();
|
|
}
|
|
_getShaderCacheForMaterial(M) {
|
|
const D = this.materialCache;
|
|
return D.has(M) === !1 && D.set(M, /* @__PURE__ */ new Set()), D.get(M);
|
|
}
|
|
_getShaderStage(M) {
|
|
const D = this.shaderCache;
|
|
if (D.has(M) === !1) {
|
|
const t = new Es();
|
|
D.set(M, t);
|
|
}
|
|
return D.get(M);
|
|
}
|
|
}
|
|
class Es {
|
|
constructor() {
|
|
this.id = Os++, this.usedTimes = 0;
|
|
}
|
|
}
|
|
function ls(n, M, D, t, e, N, A) {
|
|
const z = new Ti(), I = new xs(), i = [], T = e.isWebGL2, u = e.logarithmicDepthBuffer, g = e.floatVertexTextures, s = e.maxVertexUniforms, j = e.vertexTextures;
|
|
let y = e.precision;
|
|
const a = {
|
|
MeshDepthMaterial: "depth",
|
|
MeshDistanceMaterial: "distanceRGBA",
|
|
MeshNormalMaterial: "normal",
|
|
MeshBasicMaterial: "basic",
|
|
MeshLambertMaterial: "lambert",
|
|
MeshPhongMaterial: "phong",
|
|
MeshToonMaterial: "toon",
|
|
MeshStandardMaterial: "physical",
|
|
MeshPhysicalMaterial: "physical",
|
|
MeshMatcapMaterial: "matcap",
|
|
LineBasicMaterial: "basic",
|
|
LineDashedMaterial: "dashed",
|
|
PointsMaterial: "points",
|
|
ShadowMaterial: "shadow",
|
|
SpriteMaterial: "sprite"
|
|
};
|
|
function c(o) {
|
|
const Y = o.skeleton.bones;
|
|
if (g)
|
|
return 1024;
|
|
{
|
|
const f = Math.floor((s - 20) / 4), Q = Math.min(f, Y.length);
|
|
return Q < Y.length ? (console.warn("THREE.WebGLRenderer: Skeleton has " + Y.length + " bones. This GPU supports " + Q + "."), 0) : Q;
|
|
}
|
|
}
|
|
function r(o, h, Y, k, f) {
|
|
const Q = k.fog, b = o.isMeshStandardMaterial ? k.environment : null, W = (o.isMeshStandardMaterial ? D : M).get(o.envMap || b), IM = a[o.type], Z = f.isSkinnedMesh ? c(f) : 0;
|
|
o.precision !== null && (y = e.getMaxPrecision(o.precision), y !== o.precision && console.warn("THREE.WebGLProgram.getParameters:", o.precision, "not supported, using", y, "instead."));
|
|
let V, eM, uM, jM;
|
|
if (IM) {
|
|
const zM = _D[IM];
|
|
V = zM.vertexShader, eM = zM.fragmentShader;
|
|
} else
|
|
V = o.vertexShader, eM = o.fragmentShader, I.update(o), uM = I.getVertexShaderID(o), jM = I.getFragmentShaderID(o);
|
|
const _ = n.getRenderTarget(), kM = o.alphaTest > 0, rM = o.clearcoat > 0;
|
|
return {
|
|
isWebGL2: T,
|
|
shaderID: IM,
|
|
shaderName: o.type,
|
|
vertexShader: V,
|
|
fragmentShader: eM,
|
|
defines: o.defines,
|
|
customVertexShaderID: uM,
|
|
customFragmentShaderID: jM,
|
|
isRawShaderMaterial: o.isRawShaderMaterial === !0,
|
|
glslVersion: o.glslVersion,
|
|
precision: y,
|
|
instancing: f.isInstancedMesh === !0,
|
|
instancingColor: f.isInstancedMesh === !0 && f.instanceColor !== null,
|
|
supportsVertexTextures: j,
|
|
outputEncoding: _ === null ? n.outputEncoding : _.isXRRenderTarget === !0 ? _.texture.encoding : st,
|
|
map: !!o.map,
|
|
matcap: !!o.matcap,
|
|
envMap: !!W,
|
|
envMapMode: W && W.mapping,
|
|
envMapCubeUV: !!W && (W.mapping === mN || W.mapping === qn),
|
|
lightMap: !!o.lightMap,
|
|
aoMap: !!o.aoMap,
|
|
emissiveMap: !!o.emissiveMap,
|
|
bumpMap: !!o.bumpMap,
|
|
normalMap: !!o.normalMap,
|
|
objectSpaceNormalMap: o.normalMapType === nT,
|
|
tangentSpaceNormalMap: o.normalMapType === ie,
|
|
decodeVideoTexture: !!o.map && o.map.isVideoTexture === !0 && o.map.encoding === HM,
|
|
clearcoat: rM,
|
|
clearcoatMap: rM && !!o.clearcoatMap,
|
|
clearcoatRoughnessMap: rM && !!o.clearcoatRoughnessMap,
|
|
clearcoatNormalMap: rM && !!o.clearcoatNormalMap,
|
|
displacementMap: !!o.displacementMap,
|
|
roughnessMap: !!o.roughnessMap,
|
|
metalnessMap: !!o.metalnessMap,
|
|
specularMap: !!o.specularMap,
|
|
specularIntensityMap: !!o.specularIntensityMap,
|
|
specularColorMap: !!o.specularColorMap,
|
|
transparent: o.transparent,
|
|
alphaMap: !!o.alphaMap,
|
|
alphaTest: kM,
|
|
gradientMap: !!o.gradientMap,
|
|
sheen: o.sheen > 0,
|
|
sheenColorMap: !!o.sheenColorMap,
|
|
sheenRoughnessMap: !!o.sheenRoughnessMap,
|
|
transmission: o.transmission > 0,
|
|
transmissionMap: !!o.transmissionMap,
|
|
thicknessMap: !!o.thicknessMap,
|
|
combine: o.combine,
|
|
vertexTangents: !!o.normalMap && !!f.geometry && !!f.geometry.attributes.tangent,
|
|
vertexColors: o.vertexColors,
|
|
vertexAlphas: o.vertexColors === !0 && !!f.geometry && !!f.geometry.attributes.color && f.geometry.attributes.color.itemSize === 4,
|
|
vertexUvs: !!o.map || !!o.bumpMap || !!o.normalMap || !!o.specularMap || !!o.alphaMap || !!o.emissiveMap || !!o.roughnessMap || !!o.metalnessMap || !!o.clearcoatMap || !!o.clearcoatRoughnessMap || !!o.clearcoatNormalMap || !!o.displacementMap || !!o.transmissionMap || !!o.thicknessMap || !!o.specularIntensityMap || !!o.specularColorMap || !!o.sheenColorMap || !!o.sheenRoughnessMap,
|
|
uvsVertexOnly: !(!!o.map || !!o.bumpMap || !!o.normalMap || !!o.specularMap || !!o.alphaMap || !!o.emissiveMap || !!o.roughnessMap || !!o.metalnessMap || !!o.clearcoatNormalMap || o.transmission > 0 || !!o.transmissionMap || !!o.thicknessMap || !!o.specularIntensityMap || !!o.specularColorMap || o.sheen > 0 || !!o.sheenColorMap || !!o.sheenRoughnessMap) && !!o.displacementMap,
|
|
fog: !!Q,
|
|
useFog: o.fog,
|
|
fogExp2: Q && Q.isFogExp2,
|
|
flatShading: !!o.flatShading,
|
|
sizeAttenuation: o.sizeAttenuation,
|
|
logarithmicDepthBuffer: u,
|
|
skinning: f.isSkinnedMesh === !0 && Z > 0,
|
|
maxBones: Z,
|
|
useVertexTexture: g,
|
|
morphTargets: !!f.geometry && !!f.geometry.morphAttributes.position,
|
|
morphNormals: !!f.geometry && !!f.geometry.morphAttributes.normal,
|
|
morphTargetsCount: !!f.geometry && !!f.geometry.morphAttributes.position ? f.geometry.morphAttributes.position.length : 0,
|
|
numDirLights: h.directional.length,
|
|
numPointLights: h.point.length,
|
|
numSpotLights: h.spot.length,
|
|
numRectAreaLights: h.rectArea.length,
|
|
numHemiLights: h.hemi.length,
|
|
numDirLightShadows: h.directionalShadowMap.length,
|
|
numPointLightShadows: h.pointShadowMap.length,
|
|
numSpotLightShadows: h.spotShadowMap.length,
|
|
numClippingPlanes: A.numPlanes,
|
|
numClipIntersection: A.numIntersection,
|
|
dithering: o.dithering,
|
|
shadowMapEnabled: n.shadowMap.enabled && Y.length > 0,
|
|
shadowMapType: n.shadowMap.type,
|
|
toneMapping: o.toneMapped ? n.toneMapping : it,
|
|
physicallyCorrectLights: n.physicallyCorrectLights,
|
|
premultipliedAlpha: o.premultipliedAlpha,
|
|
doubleSided: o.side === Ne,
|
|
flipSided: o.side === eD,
|
|
depthPacking: o.depthPacking !== void 0 ? o.depthPacking : !1,
|
|
index0AttributeName: o.index0AttributeName,
|
|
extensionDerivatives: o.extensions && o.extensions.derivatives,
|
|
extensionFragDepth: o.extensions && o.extensions.fragDepth,
|
|
extensionDrawBuffers: o.extensions && o.extensions.drawBuffers,
|
|
extensionShaderTextureLOD: o.extensions && o.extensions.shaderTextureLOD,
|
|
rendererExtensionFragDepth: T || t.has("EXT_frag_depth"),
|
|
rendererExtensionDrawBuffers: T || t.has("WEBGL_draw_buffers"),
|
|
rendererExtensionShaderTextureLod: T || t.has("EXT_shader_texture_lod"),
|
|
customProgramCacheKey: o.customProgramCacheKey()
|
|
};
|
|
}
|
|
function l(o) {
|
|
const h = [];
|
|
if (o.shaderID ? h.push(o.shaderID) : (h.push(o.customVertexShaderID), h.push(o.customFragmentShaderID)), o.defines !== void 0)
|
|
for (const Y in o.defines)
|
|
h.push(Y), h.push(o.defines[Y]);
|
|
return o.isRawShaderMaterial === !1 && (C(h, o), E(h, o), h.push(n.outputEncoding)), h.push(o.customProgramCacheKey), h.join();
|
|
}
|
|
function C(o, h) {
|
|
o.push(h.precision), o.push(h.outputEncoding), o.push(h.envMapMode), o.push(h.combine), o.push(h.vertexUvs), o.push(h.fogExp2), o.push(h.sizeAttenuation), o.push(h.maxBones), o.push(h.morphTargetsCount), o.push(h.numDirLights), o.push(h.numPointLights), o.push(h.numSpotLights), o.push(h.numHemiLights), o.push(h.numRectAreaLights), o.push(h.numDirLightShadows), o.push(h.numPointLightShadows), o.push(h.numSpotLightShadows), o.push(h.shadowMapType), o.push(h.toneMapping), o.push(h.numClippingPlanes), o.push(h.numClipIntersection);
|
|
}
|
|
function E(o, h) {
|
|
z.disableAll(), h.isWebGL2 && z.enable(0), h.supportsVertexTextures && z.enable(1), h.instancing && z.enable(2), h.instancingColor && z.enable(3), h.map && z.enable(4), h.matcap && z.enable(5), h.envMap && z.enable(6), h.envMapCubeUV && z.enable(7), h.lightMap && z.enable(8), h.aoMap && z.enable(9), h.emissiveMap && z.enable(10), h.bumpMap && z.enable(11), h.normalMap && z.enable(12), h.objectSpaceNormalMap && z.enable(13), h.tangentSpaceNormalMap && z.enable(14), h.clearcoat && z.enable(15), h.clearcoatMap && z.enable(16), h.clearcoatRoughnessMap && z.enable(17), h.clearcoatNormalMap && z.enable(18), h.displacementMap && z.enable(19), h.specularMap && z.enable(20), h.roughnessMap && z.enable(21), h.metalnessMap && z.enable(22), h.gradientMap && z.enable(23), h.alphaMap && z.enable(24), h.alphaTest && z.enable(25), h.vertexColors && z.enable(26), h.vertexAlphas && z.enable(27), h.vertexUvs && z.enable(28), h.vertexTangents && z.enable(29), h.uvsVertexOnly && z.enable(30), h.fog && z.enable(31), o.push(z.mask), z.disableAll(), h.useFog && z.enable(0), h.flatShading && z.enable(1), h.logarithmicDepthBuffer && z.enable(2), h.skinning && z.enable(3), h.useVertexTexture && z.enable(4), h.morphTargets && z.enable(5), h.morphNormals && z.enable(6), h.premultipliedAlpha && z.enable(7), h.shadowMapEnabled && z.enable(8), h.physicallyCorrectLights && z.enable(9), h.doubleSided && z.enable(10), h.flipSided && z.enable(11), h.depthPacking && z.enable(12), h.dithering && z.enable(13), h.specularIntensityMap && z.enable(14), h.specularColorMap && z.enable(15), h.transmission && z.enable(16), h.transmissionMap && z.enable(17), h.thicknessMap && z.enable(18), h.sheen && z.enable(19), h.sheenColorMap && z.enable(20), h.sheenRoughnessMap && z.enable(21), h.decodeVideoTexture && z.enable(22), h.transparent && z.enable(23), o.push(z.mask);
|
|
}
|
|
function d(o) {
|
|
const h = a[o.type];
|
|
let Y;
|
|
if (h) {
|
|
const k = _D[h];
|
|
Y = wT.clone(k.uniforms);
|
|
} else
|
|
Y = o.uniforms;
|
|
return Y;
|
|
}
|
|
function p(o, h) {
|
|
let Y;
|
|
for (let k = 0, f = i.length; k < f; k++) {
|
|
const Q = i[k];
|
|
if (Q.cacheKey === h) {
|
|
Y = Q, ++Y.usedTimes;
|
|
break;
|
|
}
|
|
}
|
|
return Y === void 0 && (Y = new ws(n, h, o, N), i.push(Y)), Y;
|
|
}
|
|
function H(o) {
|
|
if (--o.usedTimes === 0) {
|
|
const h = i.indexOf(o);
|
|
i[h] = i[i.length - 1], i.pop(), o.destroy();
|
|
}
|
|
}
|
|
function DM(o) {
|
|
I.remove(o);
|
|
}
|
|
function G() {
|
|
I.dispose();
|
|
}
|
|
return {
|
|
getParameters: r,
|
|
getProgramCacheKey: l,
|
|
getUniforms: d,
|
|
acquireProgram: p,
|
|
releaseProgram: H,
|
|
releaseShaderCache: DM,
|
|
programs: i,
|
|
dispose: G
|
|
};
|
|
}
|
|
function ds() {
|
|
let n = /* @__PURE__ */ new WeakMap();
|
|
function M(N) {
|
|
let A = n.get(N);
|
|
return A === void 0 && (A = {}, n.set(N, A)), A;
|
|
}
|
|
function D(N) {
|
|
n.delete(N);
|
|
}
|
|
function t(N, A, z) {
|
|
n.get(N)[A] = z;
|
|
}
|
|
function e() {
|
|
n = /* @__PURE__ */ new WeakMap();
|
|
}
|
|
return {
|
|
get: M,
|
|
remove: D,
|
|
update: t,
|
|
dispose: e
|
|
};
|
|
}
|
|
function vs(n, M) {
|
|
return n.groupOrder !== M.groupOrder ? n.groupOrder - M.groupOrder : n.renderOrder !== M.renderOrder ? n.renderOrder - M.renderOrder : n.material.id !== M.material.id ? n.material.id - M.material.id : n.z !== M.z ? n.z - M.z : n.id - M.id;
|
|
}
|
|
function Ez(n, M) {
|
|
return n.groupOrder !== M.groupOrder ? n.groupOrder - M.groupOrder : n.renderOrder !== M.renderOrder ? n.renderOrder - M.renderOrder : n.z !== M.z ? M.z - n.z : n.id - M.id;
|
|
}
|
|
function lz() {
|
|
const n = [];
|
|
let M = 0;
|
|
const D = [], t = [], e = [];
|
|
function N() {
|
|
M = 0, D.length = 0, t.length = 0, e.length = 0;
|
|
}
|
|
function A(u, g, s, j, y, a) {
|
|
let c = n[M];
|
|
return c === void 0 ? (c = {
|
|
id: u.id,
|
|
object: u,
|
|
geometry: g,
|
|
material: s,
|
|
groupOrder: j,
|
|
renderOrder: u.renderOrder,
|
|
z: y,
|
|
group: a
|
|
}, n[M] = c) : (c.id = u.id, c.object = u, c.geometry = g, c.material = s, c.groupOrder = j, c.renderOrder = u.renderOrder, c.z = y, c.group = a), M++, c;
|
|
}
|
|
function z(u, g, s, j, y, a) {
|
|
const c = A(u, g, s, j, y, a);
|
|
s.transmission > 0 ? t.push(c) : s.transparent === !0 ? e.push(c) : D.push(c);
|
|
}
|
|
function I(u, g, s, j, y, a) {
|
|
const c = A(u, g, s, j, y, a);
|
|
s.transmission > 0 ? t.unshift(c) : s.transparent === !0 ? e.unshift(c) : D.unshift(c);
|
|
}
|
|
function i(u, g) {
|
|
D.length > 1 && D.sort(u || vs), t.length > 1 && t.sort(g || Ez), e.length > 1 && e.sort(g || Ez);
|
|
}
|
|
function T() {
|
|
for (let u = M, g = n.length; u < g; u++) {
|
|
const s = n[u];
|
|
if (s.id === null)
|
|
break;
|
|
s.id = null, s.object = null, s.geometry = null, s.material = null, s.group = null;
|
|
}
|
|
}
|
|
return {
|
|
opaque: D,
|
|
transmissive: t,
|
|
transparent: e,
|
|
init: N,
|
|
push: z,
|
|
unshift: I,
|
|
finish: T,
|
|
sort: i
|
|
};
|
|
}
|
|
function ps() {
|
|
let n = /* @__PURE__ */ new WeakMap();
|
|
function M(t, e) {
|
|
let N;
|
|
return n.has(t) === !1 ? (N = new lz(), n.set(t, [N])) : e >= n.get(t).length ? (N = new lz(), n.get(t).push(N)) : N = n.get(t)[e], N;
|
|
}
|
|
function D() {
|
|
n = /* @__PURE__ */ new WeakMap();
|
|
}
|
|
return {
|
|
get: M,
|
|
dispose: D
|
|
};
|
|
}
|
|
function hs() {
|
|
const n = {};
|
|
return {
|
|
get: function(M) {
|
|
if (n[M.id] !== void 0)
|
|
return n[M.id];
|
|
let D;
|
|
switch (M.type) {
|
|
case "DirectionalLight":
|
|
D = {
|
|
direction: new O(),
|
|
color: new cM()
|
|
};
|
|
break;
|
|
case "SpotLight":
|
|
D = {
|
|
position: new O(),
|
|
direction: new O(),
|
|
color: new cM(),
|
|
distance: 0,
|
|
coneCos: 0,
|
|
penumbraCos: 0,
|
|
decay: 0
|
|
};
|
|
break;
|
|
case "PointLight":
|
|
D = {
|
|
position: new O(),
|
|
color: new cM(),
|
|
distance: 0,
|
|
decay: 0
|
|
};
|
|
break;
|
|
case "HemisphereLight":
|
|
D = {
|
|
direction: new O(),
|
|
skyColor: new cM(),
|
|
groundColor: new cM()
|
|
};
|
|
break;
|
|
case "RectAreaLight":
|
|
D = {
|
|
color: new cM(),
|
|
position: new O(),
|
|
halfWidth: new O(),
|
|
halfHeight: new O()
|
|
};
|
|
break;
|
|
}
|
|
return n[M.id] = D, D;
|
|
}
|
|
};
|
|
}
|
|
function Ys() {
|
|
const n = {};
|
|
return {
|
|
get: function(M) {
|
|
if (n[M.id] !== void 0)
|
|
return n[M.id];
|
|
let D;
|
|
switch (M.type) {
|
|
case "DirectionalLight":
|
|
D = {
|
|
shadowBias: 0,
|
|
shadowNormalBias: 0,
|
|
shadowRadius: 1,
|
|
shadowMapSize: new q()
|
|
};
|
|
break;
|
|
case "SpotLight":
|
|
D = {
|
|
shadowBias: 0,
|
|
shadowNormalBias: 0,
|
|
shadowRadius: 1,
|
|
shadowMapSize: new q()
|
|
};
|
|
break;
|
|
case "PointLight":
|
|
D = {
|
|
shadowBias: 0,
|
|
shadowNormalBias: 0,
|
|
shadowRadius: 1,
|
|
shadowMapSize: new q(),
|
|
shadowCameraNear: 1,
|
|
shadowCameraFar: 1e3
|
|
};
|
|
break;
|
|
}
|
|
return n[M.id] = D, D;
|
|
}
|
|
};
|
|
}
|
|
let Us = 0;
|
|
function Qs(n, M) {
|
|
return (M.castShadow ? 1 : 0) - (n.castShadow ? 1 : 0);
|
|
}
|
|
function fs(n, M) {
|
|
const D = new hs(), t = Ys(), e = {
|
|
version: 0,
|
|
hash: {
|
|
directionalLength: -1,
|
|
pointLength: -1,
|
|
spotLength: -1,
|
|
rectAreaLength: -1,
|
|
hemiLength: -1,
|
|
numDirectionalShadows: -1,
|
|
numPointShadows: -1,
|
|
numSpotShadows: -1
|
|
},
|
|
ambient: [0, 0, 0],
|
|
probe: [],
|
|
directional: [],
|
|
directionalShadow: [],
|
|
directionalShadowMap: [],
|
|
directionalShadowMatrix: [],
|
|
spot: [],
|
|
spotShadow: [],
|
|
spotShadowMap: [],
|
|
spotShadowMatrix: [],
|
|
rectArea: [],
|
|
rectAreaLTC1: null,
|
|
rectAreaLTC2: null,
|
|
point: [],
|
|
pointShadow: [],
|
|
pointShadowMap: [],
|
|
pointShadowMatrix: [],
|
|
hemi: []
|
|
};
|
|
for (let T = 0; T < 9; T++)
|
|
e.probe.push(new O());
|
|
const N = new O(), A = new aM(), z = new aM();
|
|
function I(T, u) {
|
|
let g = 0, s = 0, j = 0;
|
|
for (let DM = 0; DM < 9; DM++)
|
|
e.probe[DM].set(0, 0, 0);
|
|
let y = 0, a = 0, c = 0, r = 0, l = 0, C = 0, E = 0, d = 0;
|
|
T.sort(Qs);
|
|
const p = u !== !0 ? Math.PI : 1;
|
|
for (let DM = 0, G = T.length; DM < G; DM++) {
|
|
const o = T[DM], h = o.color, Y = o.intensity, k = o.distance, f = o.shadow && o.shadow.map ? o.shadow.map.texture : null;
|
|
if (o.isAmbientLight)
|
|
g += h.r * Y * p, s += h.g * Y * p, j += h.b * Y * p;
|
|
else if (o.isLightProbe)
|
|
for (let Q = 0; Q < 9; Q++)
|
|
e.probe[Q].addScaledVector(o.sh.coefficients[Q], Y);
|
|
else if (o.isDirectionalLight) {
|
|
const Q = D.get(o);
|
|
if (Q.color.copy(o.color).multiplyScalar(o.intensity * p), o.castShadow) {
|
|
const b = o.shadow, W = t.get(o);
|
|
W.shadowBias = b.bias, W.shadowNormalBias = b.normalBias, W.shadowRadius = b.radius, W.shadowMapSize = b.mapSize, e.directionalShadow[y] = W, e.directionalShadowMap[y] = f, e.directionalShadowMatrix[y] = o.shadow.matrix, C++;
|
|
}
|
|
e.directional[y] = Q, y++;
|
|
} else if (o.isSpotLight) {
|
|
const Q = D.get(o);
|
|
if (Q.position.setFromMatrixPosition(o.matrixWorld), Q.color.copy(h).multiplyScalar(Y * p), Q.distance = k, Q.coneCos = Math.cos(o.angle), Q.penumbraCos = Math.cos(o.angle * (1 - o.penumbra)), Q.decay = o.decay, o.castShadow) {
|
|
const b = o.shadow, W = t.get(o);
|
|
W.shadowBias = b.bias, W.shadowNormalBias = b.normalBias, W.shadowRadius = b.radius, W.shadowMapSize = b.mapSize, e.spotShadow[c] = W, e.spotShadowMap[c] = f, e.spotShadowMatrix[c] = o.shadow.matrix, d++;
|
|
}
|
|
e.spot[c] = Q, c++;
|
|
} else if (o.isRectAreaLight) {
|
|
const Q = D.get(o);
|
|
Q.color.copy(h).multiplyScalar(Y), Q.halfWidth.set(o.width * 0.5, 0, 0), Q.halfHeight.set(0, o.height * 0.5, 0), e.rectArea[r] = Q, r++;
|
|
} else if (o.isPointLight) {
|
|
const Q = D.get(o);
|
|
if (Q.color.copy(o.color).multiplyScalar(o.intensity * p), Q.distance = o.distance, Q.decay = o.decay, o.castShadow) {
|
|
const b = o.shadow, W = t.get(o);
|
|
W.shadowBias = b.bias, W.shadowNormalBias = b.normalBias, W.shadowRadius = b.radius, W.shadowMapSize = b.mapSize, W.shadowCameraNear = b.camera.near, W.shadowCameraFar = b.camera.far, e.pointShadow[a] = W, e.pointShadowMap[a] = f, e.pointShadowMatrix[a] = o.shadow.matrix, E++;
|
|
}
|
|
e.point[a] = Q, a++;
|
|
} else if (o.isHemisphereLight) {
|
|
const Q = D.get(o);
|
|
Q.skyColor.copy(o.color).multiplyScalar(Y * p), Q.groundColor.copy(o.groundColor).multiplyScalar(Y * p), e.hemi[l] = Q, l++;
|
|
}
|
|
}
|
|
r > 0 && (M.isWebGL2 || n.has("OES_texture_float_linear") === !0 ? (e.rectAreaLTC1 = MM.LTC_FLOAT_1, e.rectAreaLTC2 = MM.LTC_FLOAT_2) : n.has("OES_texture_half_float_linear") === !0 ? (e.rectAreaLTC1 = MM.LTC_HALF_1, e.rectAreaLTC2 = MM.LTC_HALF_2) : console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")), e.ambient[0] = g, e.ambient[1] = s, e.ambient[2] = j;
|
|
const H = e.hash;
|
|
(H.directionalLength !== y || H.pointLength !== a || H.spotLength !== c || H.rectAreaLength !== r || H.hemiLength !== l || H.numDirectionalShadows !== C || H.numPointShadows !== E || H.numSpotShadows !== d) && (e.directional.length = y, e.spot.length = c, e.rectArea.length = r, e.point.length = a, e.hemi.length = l, e.directionalShadow.length = C, e.directionalShadowMap.length = C, e.pointShadow.length = E, e.pointShadowMap.length = E, e.spotShadow.length = d, e.spotShadowMap.length = d, e.directionalShadowMatrix.length = C, e.pointShadowMatrix.length = E, e.spotShadowMatrix.length = d, H.directionalLength = y, H.pointLength = a, H.spotLength = c, H.rectAreaLength = r, H.hemiLength = l, H.numDirectionalShadows = C, H.numPointShadows = E, H.numSpotShadows = d, e.version = Us++);
|
|
}
|
|
function i(T, u) {
|
|
let g = 0, s = 0, j = 0, y = 0, a = 0;
|
|
const c = u.matrixWorldInverse;
|
|
for (let r = 0, l = T.length; r < l; r++) {
|
|
const C = T[r];
|
|
if (C.isDirectionalLight) {
|
|
const E = e.directional[g];
|
|
E.direction.setFromMatrixPosition(C.matrixWorld), N.setFromMatrixPosition(C.target.matrixWorld), E.direction.sub(N), E.direction.transformDirection(c), g++;
|
|
} else if (C.isSpotLight) {
|
|
const E = e.spot[j];
|
|
E.position.setFromMatrixPosition(C.matrixWorld), E.position.applyMatrix4(c), E.direction.setFromMatrixPosition(C.matrixWorld), N.setFromMatrixPosition(C.target.matrixWorld), E.direction.sub(N), E.direction.transformDirection(c), j++;
|
|
} else if (C.isRectAreaLight) {
|
|
const E = e.rectArea[y];
|
|
E.position.setFromMatrixPosition(C.matrixWorld), E.position.applyMatrix4(c), z.identity(), A.copy(C.matrixWorld), A.premultiply(c), z.extractRotation(A), E.halfWidth.set(C.width * 0.5, 0, 0), E.halfHeight.set(0, C.height * 0.5, 0), E.halfWidth.applyMatrix4(z), E.halfHeight.applyMatrix4(z), y++;
|
|
} else if (C.isPointLight) {
|
|
const E = e.point[s];
|
|
E.position.setFromMatrixPosition(C.matrixWorld), E.position.applyMatrix4(c), s++;
|
|
} else if (C.isHemisphereLight) {
|
|
const E = e.hemi[a];
|
|
E.direction.setFromMatrixPosition(C.matrixWorld), E.direction.transformDirection(c), E.direction.normalize(), a++;
|
|
}
|
|
}
|
|
}
|
|
return {
|
|
setup: I,
|
|
setupView: i,
|
|
state: e
|
|
};
|
|
}
|
|
function dz(n, M) {
|
|
const D = new fs(n, M), t = [], e = [];
|
|
function N() {
|
|
t.length = 0, e.length = 0;
|
|
}
|
|
function A(u) {
|
|
t.push(u);
|
|
}
|
|
function z(u) {
|
|
e.push(u);
|
|
}
|
|
function I(u) {
|
|
D.setup(t, u);
|
|
}
|
|
function i(u) {
|
|
D.setupView(t, u);
|
|
}
|
|
return {
|
|
init: N,
|
|
state: {
|
|
lightsArray: t,
|
|
shadowsArray: e,
|
|
lights: D
|
|
},
|
|
setupLights: I,
|
|
setupLightsView: i,
|
|
pushLight: A,
|
|
pushShadow: z
|
|
};
|
|
}
|
|
function ms(n, M) {
|
|
let D = /* @__PURE__ */ new WeakMap();
|
|
function t(N, A = 0) {
|
|
let z;
|
|
return D.has(N) === !1 ? (z = new dz(n, M), D.set(N, [z])) : A >= D.get(N).length ? (z = new dz(n, M), D.get(N).push(z)) : z = D.get(N)[A], z;
|
|
}
|
|
function e() {
|
|
D = /* @__PURE__ */ new WeakMap();
|
|
}
|
|
return {
|
|
get: t,
|
|
dispose: e
|
|
};
|
|
}
|
|
class Ei extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "MeshDepthMaterial", this.depthPacking = eT, this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.depthPacking = M.depthPacking, this.map = M.map, this.alphaMap = M.alphaMap, this.displacementMap = M.displacementMap, this.displacementScale = M.displacementScale, this.displacementBias = M.displacementBias, this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this;
|
|
}
|
|
}
|
|
Ei.prototype.isMeshDepthMaterial = !0;
|
|
class li extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "MeshDistanceMaterial", this.referencePosition = new O(), this.nearDistance = 1, this.farDistance = 1e3, this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.fog = !1, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.referencePosition.copy(M.referencePosition), this.nearDistance = M.nearDistance, this.farDistance = M.farDistance, this.map = M.map, this.alphaMap = M.alphaMap, this.displacementMap = M.displacementMap, this.displacementScale = M.displacementScale, this.displacementBias = M.displacementBias, this;
|
|
}
|
|
}
|
|
li.prototype.isMeshDistanceMaterial = !0;
|
|
const ks = `void main() {
|
|
gl_Position = vec4( position, 1.0 );
|
|
}`, Ss = `uniform sampler2D shadow_pass;
|
|
uniform vec2 resolution;
|
|
uniform float radius;
|
|
#include <packing>
|
|
void main() {
|
|
const float samples = float( VSM_SAMPLES );
|
|
float mean = 0.0;
|
|
float squared_mean = 0.0;
|
|
float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );
|
|
float uvStart = samples <= 1.0 ? 0.0 : - 1.0;
|
|
for ( float i = 0.0; i < samples; i ++ ) {
|
|
float uvOffset = uvStart + i * uvStride;
|
|
#ifdef HORIZONTAL_PASS
|
|
vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );
|
|
mean += distribution.x;
|
|
squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;
|
|
#else
|
|
float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );
|
|
mean += depth;
|
|
squared_mean += depth * depth;
|
|
#endif
|
|
}
|
|
mean = mean / samples;
|
|
squared_mean = squared_mean / samples;
|
|
float std_dev = sqrt( squared_mean - mean * mean );
|
|
gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
|
|
}`;
|
|
function di(n, M, D) {
|
|
let t = new ZN();
|
|
const e = new q(), N = new q(), A = new PM(), z = new Ei({ depthPacking: NT }), I = new li(), i = {}, T = D.maxTextureSize, u = { 0: eD, 1: Ye, 2: Ne }, g = new lt({
|
|
defines: {
|
|
VSM_SAMPLES: 8
|
|
},
|
|
uniforms: {
|
|
shadow_pass: { value: null },
|
|
resolution: { value: new q() },
|
|
radius: { value: 4 }
|
|
},
|
|
vertexShader: ks,
|
|
fragmentShader: Ss
|
|
}), s = g.clone();
|
|
s.defines.HORIZONTAL_PASS = 1;
|
|
const j = new VM();
|
|
j.setAttribute("position", new AD(new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), 3));
|
|
const y = new nD(j, g), a = this;
|
|
this.enabled = !1, this.autoUpdate = !0, this.needsUpdate = !1, this.type = ti, this.render = function(C, E, d) {
|
|
if (a.enabled === !1 || a.autoUpdate === !1 && a.needsUpdate === !1 || C.length === 0)
|
|
return;
|
|
const p = n.getRenderTarget(), H = n.getActiveCubeFace(), DM = n.getActiveMipmapLevel(), G = n.state;
|
|
G.setBlending(zt), G.buffers.color.setClear(1, 1, 1, 1), G.buffers.depth.setTest(!0), G.setScissorTest(!1);
|
|
for (let o = 0, h = C.length; o < h; o++) {
|
|
const Y = C[o], k = Y.shadow;
|
|
if (k === void 0) {
|
|
console.warn("THREE.WebGLShadowMap:", Y, "has no shadow.");
|
|
continue;
|
|
}
|
|
if (k.autoUpdate === !1 && k.needsUpdate === !1)
|
|
continue;
|
|
e.copy(k.mapSize);
|
|
const f = k.getFrameExtents();
|
|
if (e.multiply(f), N.copy(k.mapSize), (e.x > T || e.y > T) && (e.x > T && (N.x = Math.floor(T / f.x), e.x = N.x * f.x, k.mapSize.x = N.x), e.y > T && (N.y = Math.floor(T / f.y), e.y = N.y * f.y, k.mapSize.y = N.y)), k.map === null && !k.isPointLightShadow && this.type === le) {
|
|
const b = { minFilter: uD, magFilter: uD, format: yD };
|
|
k.map = new dD(e.x, e.y, b), k.map.texture.name = Y.name + ".shadowMap", k.mapPass = new dD(e.x, e.y, b), k.camera.updateProjectionMatrix();
|
|
}
|
|
if (k.map === null) {
|
|
const b = { minFilter: ND, magFilter: ND, format: yD };
|
|
k.map = new dD(e.x, e.y, b), k.map.texture.name = Y.name + ".shadowMap", k.camera.updateProjectionMatrix();
|
|
}
|
|
n.setRenderTarget(k.map), n.clear();
|
|
const Q = k.getViewportCount();
|
|
for (let b = 0; b < Q; b++) {
|
|
const W = k.getViewport(b);
|
|
A.set(N.x * W.x, N.y * W.y, N.x * W.z, N.y * W.w), G.viewport(A), k.updateMatrices(Y, b), t = k.getFrustum(), l(E, d, k.camera, Y, this.type);
|
|
}
|
|
!k.isPointLightShadow && this.type === le && c(k, d), k.needsUpdate = !1;
|
|
}
|
|
a.needsUpdate = !1, n.setRenderTarget(p, H, DM);
|
|
};
|
|
function c(C, E) {
|
|
const d = M.update(y);
|
|
g.defines.VSM_SAMPLES !== C.blurSamples && (g.defines.VSM_SAMPLES = C.blurSamples, s.defines.VSM_SAMPLES = C.blurSamples, g.needsUpdate = !0, s.needsUpdate = !0), g.uniforms.shadow_pass.value = C.map.texture, g.uniforms.resolution.value = C.mapSize, g.uniforms.radius.value = C.radius, n.setRenderTarget(C.mapPass), n.clear(), n.renderBufferDirect(E, null, d, g, y, null), s.uniforms.shadow_pass.value = C.mapPass.texture, s.uniforms.resolution.value = C.mapSize, s.uniforms.radius.value = C.radius, n.setRenderTarget(C.map), n.clear(), n.renderBufferDirect(E, null, d, s, y, null);
|
|
}
|
|
function r(C, E, d, p, H, DM, G) {
|
|
let o = null;
|
|
const h = p.isPointLight === !0 ? C.customDistanceMaterial : C.customDepthMaterial;
|
|
if (h !== void 0 ? o = h : o = p.isPointLight === !0 ? I : z, n.localClippingEnabled && d.clipShadows === !0 && d.clippingPlanes.length !== 0 || d.displacementMap && d.displacementScale !== 0 || d.alphaMap && d.alphaTest > 0) {
|
|
const Y = o.uuid, k = d.uuid;
|
|
let f = i[Y];
|
|
f === void 0 && (f = {}, i[Y] = f);
|
|
let Q = f[k];
|
|
Q === void 0 && (Q = o.clone(), f[k] = Q), o = Q;
|
|
}
|
|
return o.visible = d.visible, o.wireframe = d.wireframe, G === le ? o.side = d.shadowSide !== null ? d.shadowSide : d.side : o.side = d.shadowSide !== null ? d.shadowSide : u[d.side], o.alphaMap = d.alphaMap, o.alphaTest = d.alphaTest, o.clipShadows = d.clipShadows, o.clippingPlanes = d.clippingPlanes, o.clipIntersection = d.clipIntersection, o.displacementMap = d.displacementMap, o.displacementScale = d.displacementScale, o.displacementBias = d.displacementBias, o.wireframeLinewidth = d.wireframeLinewidth, o.linewidth = d.linewidth, p.isPointLight === !0 && o.isMeshDistanceMaterial === !0 && (o.referencePosition.setFromMatrixPosition(p.matrixWorld), o.nearDistance = H, o.farDistance = DM), o;
|
|
}
|
|
function l(C, E, d, p, H) {
|
|
if (C.visible === !1)
|
|
return;
|
|
if (C.layers.test(E.layers) && (C.isMesh || C.isLine || C.isPoints) && (C.castShadow || C.receiveShadow && H === le) && (!C.frustumCulled || t.intersectsObject(C))) {
|
|
C.modelViewMatrix.multiplyMatrices(d.matrixWorldInverse, C.matrixWorld);
|
|
const o = M.update(C), h = C.material;
|
|
if (Array.isArray(h)) {
|
|
const Y = o.groups;
|
|
for (let k = 0, f = Y.length; k < f; k++) {
|
|
const Q = Y[k], b = h[Q.materialIndex];
|
|
if (b && b.visible) {
|
|
const W = r(C, o, b, p, d.near, d.far, H);
|
|
n.renderBufferDirect(d, null, o, W, C, Q);
|
|
}
|
|
}
|
|
} else if (h.visible) {
|
|
const Y = r(C, o, h, p, d.near, d.far, H);
|
|
n.renderBufferDirect(d, null, o, Y, C, null);
|
|
}
|
|
}
|
|
const G = C.children;
|
|
for (let o = 0, h = G.length; o < h; o++)
|
|
l(G[o], E, d, p, H);
|
|
}
|
|
}
|
|
function Zs(n, M, D) {
|
|
const t = D.isWebGL2;
|
|
function e() {
|
|
let v = !1;
|
|
const TM = new PM();
|
|
let AM = null;
|
|
const LM = new PM(0, 0, 0, 0);
|
|
return {
|
|
setMask: function(F) {
|
|
AM !== F && !v && (n.colorMask(F, F, F, F), AM = F);
|
|
},
|
|
setLocked: function(F) {
|
|
v = F;
|
|
},
|
|
setClear: function(F, oM, UM, qM, CD) {
|
|
CD === !0 && (F *= qM, oM *= qM, UM *= qM), TM.set(F, oM, UM, qM), LM.equals(TM) === !1 && (n.clearColor(F, oM, UM, qM), LM.copy(TM));
|
|
},
|
|
reset: function() {
|
|
v = !1, AM = null, LM.set(-1, 0, 0, 0);
|
|
}
|
|
};
|
|
}
|
|
function N() {
|
|
let v = !1, TM = null, AM = null, LM = null;
|
|
return {
|
|
setTest: function(F) {
|
|
F ? _(2929) : kM(2929);
|
|
},
|
|
setMask: function(F) {
|
|
TM !== F && !v && (n.depthMask(F), TM = F);
|
|
},
|
|
setFunc: function(F) {
|
|
if (AM !== F) {
|
|
if (F)
|
|
switch (F) {
|
|
case OI:
|
|
n.depthFunc(512);
|
|
break;
|
|
case xI:
|
|
n.depthFunc(519);
|
|
break;
|
|
case EI:
|
|
n.depthFunc(513);
|
|
break;
|
|
case fn:
|
|
n.depthFunc(515);
|
|
break;
|
|
case lI:
|
|
n.depthFunc(514);
|
|
break;
|
|
case dI:
|
|
n.depthFunc(518);
|
|
break;
|
|
case vI:
|
|
n.depthFunc(516);
|
|
break;
|
|
case pI:
|
|
n.depthFunc(517);
|
|
break;
|
|
default:
|
|
n.depthFunc(515);
|
|
}
|
|
else
|
|
n.depthFunc(515);
|
|
AM = F;
|
|
}
|
|
},
|
|
setLocked: function(F) {
|
|
v = F;
|
|
},
|
|
setClear: function(F) {
|
|
LM !== F && (n.clearDepth(F), LM = F);
|
|
},
|
|
reset: function() {
|
|
v = !1, TM = null, AM = null, LM = null;
|
|
}
|
|
};
|
|
}
|
|
function A() {
|
|
let v = !1, TM = null, AM = null, LM = null, F = null, oM = null, UM = null, qM = null, CD = null;
|
|
return {
|
|
setTest: function(JM) {
|
|
v || (JM ? _(2960) : kM(2960));
|
|
},
|
|
setMask: function(JM) {
|
|
TM !== JM && !v && (n.stencilMask(JM), TM = JM);
|
|
},
|
|
setFunc: function(JM, fD, PD) {
|
|
(AM !== JM || LM !== fD || F !== PD) && (n.stencilFunc(JM, fD, PD), AM = JM, LM = fD, F = PD);
|
|
},
|
|
setOp: function(JM, fD, PD) {
|
|
(oM !== JM || UM !== fD || qM !== PD) && (n.stencilOp(JM, fD, PD), oM = JM, UM = fD, qM = PD);
|
|
},
|
|
setLocked: function(JM) {
|
|
v = JM;
|
|
},
|
|
setClear: function(JM) {
|
|
CD !== JM && (n.clearStencil(JM), CD = JM);
|
|
},
|
|
reset: function() {
|
|
v = !1, TM = null, AM = null, LM = null, F = null, oM = null, UM = null, qM = null, CD = null;
|
|
}
|
|
};
|
|
}
|
|
const z = new e(), I = new N(), i = new A();
|
|
let T = {}, u = {}, g = /* @__PURE__ */ new WeakMap(), s = [], j = null, y = !1, a = null, c = null, r = null, l = null, C = null, E = null, d = null, p = !1, H = null, DM = null, G = null, o = null, h = null;
|
|
const Y = n.getParameter(35661);
|
|
let k = !1, f = 0;
|
|
const Q = n.getParameter(7938);
|
|
Q.indexOf("WebGL") !== -1 ? (f = parseFloat(/^WebGL (\d)/.exec(Q)[1]), k = f >= 1) : Q.indexOf("OpenGL ES") !== -1 && (f = parseFloat(/^OpenGL ES (\d)/.exec(Q)[1]), k = f >= 2);
|
|
let b = null, W = {};
|
|
const IM = n.getParameter(3088), Z = n.getParameter(2978), V = new PM().fromArray(IM), eM = new PM().fromArray(Z);
|
|
function uM(v, TM, AM) {
|
|
const LM = new Uint8Array(4), F = n.createTexture();
|
|
n.bindTexture(v, F), n.texParameteri(v, 10241, 9728), n.texParameteri(v, 10240, 9728);
|
|
for (let oM = 0; oM < AM; oM++)
|
|
n.texImage2D(TM + oM, 0, 6408, 1, 1, 0, 6408, 5121, LM);
|
|
return F;
|
|
}
|
|
const jM = {};
|
|
jM[3553] = uM(3553, 3553, 1), jM[34067] = uM(34067, 34069, 6), z.setClear(0, 0, 0, 1), I.setClear(1), i.setClear(0), _(2929), I.setFunc(fn), X(!1), iM(yA), _(2884), P(zt);
|
|
function _(v) {
|
|
T[v] !== !0 && (n.enable(v), T[v] = !0);
|
|
}
|
|
function kM(v) {
|
|
T[v] !== !1 && (n.disable(v), T[v] = !1);
|
|
}
|
|
function rM(v, TM) {
|
|
return u[v] !== TM ? (n.bindFramebuffer(v, TM), u[v] = TM, t && (v === 36009 && (u[36160] = TM), v === 36160 && (u[36009] = TM)), !0) : !1;
|
|
}
|
|
function wM(v, TM) {
|
|
let AM = s, LM = !1;
|
|
if (v)
|
|
if (AM = g.get(TM), AM === void 0 && (AM = [], g.set(TM, AM)), v.isWebGLMultipleRenderTargets) {
|
|
const F = v.texture;
|
|
if (AM.length !== F.length || AM[0] !== 36064) {
|
|
for (let oM = 0, UM = F.length; oM < UM; oM++)
|
|
AM[oM] = 36064 + oM;
|
|
AM.length = F.length, LM = !0;
|
|
}
|
|
} else
|
|
AM[0] !== 36064 && (AM[0] = 36064, LM = !0);
|
|
else
|
|
AM[0] !== 1029 && (AM[0] = 1029, LM = !0);
|
|
LM && (D.isWebGL2 ? n.drawBuffers(AM) : M.get("WEBGL_draw_buffers").drawBuffersWEBGL(AM));
|
|
}
|
|
function zM(v) {
|
|
return j !== v ? (n.useProgram(v), j = v, !0) : !1;
|
|
}
|
|
const vM = {
|
|
[Wt]: 32774,
|
|
[gI]: 32778,
|
|
[rI]: 32779
|
|
};
|
|
if (t)
|
|
vM[LA] = 32775, vM[wA] = 32776;
|
|
else {
|
|
const v = M.get("EXT_blend_minmax");
|
|
v !== null && (vM[LA] = v.MIN_EXT, vM[wA] = v.MAX_EXT);
|
|
}
|
|
const OM = {
|
|
[sI]: 0,
|
|
[cI]: 1,
|
|
[jI]: 768,
|
|
[Ni]: 770,
|
|
[wI]: 776,
|
|
[CI]: 774,
|
|
[oI]: 772,
|
|
[yI]: 769,
|
|
[ni]: 771,
|
|
[LI]: 775,
|
|
[aI]: 773
|
|
};
|
|
function P(v, TM, AM, LM, F, oM, UM, qM) {
|
|
if (v === zt) {
|
|
y === !0 && (kM(3042), y = !1);
|
|
return;
|
|
}
|
|
if (y === !1 && (_(3042), y = !0), v !== uI) {
|
|
if (v !== a || qM !== p) {
|
|
if ((c !== Wt || C !== Wt) && (n.blendEquation(32774), c = Wt, C = Wt), qM)
|
|
switch (v) {
|
|
case ve:
|
|
n.blendFuncSeparate(1, 771, 1, 771);
|
|
break;
|
|
case oA:
|
|
n.blendFunc(1, 1);
|
|
break;
|
|
case aA:
|
|
n.blendFuncSeparate(0, 769, 0, 1);
|
|
break;
|
|
case CA:
|
|
n.blendFuncSeparate(0, 768, 0, 770);
|
|
break;
|
|
default:
|
|
console.error("THREE.WebGLState: Invalid blending: ", v);
|
|
break;
|
|
}
|
|
else
|
|
switch (v) {
|
|
case ve:
|
|
n.blendFuncSeparate(770, 771, 1, 771);
|
|
break;
|
|
case oA:
|
|
n.blendFunc(770, 1);
|
|
break;
|
|
case aA:
|
|
n.blendFuncSeparate(0, 769, 0, 1);
|
|
break;
|
|
case CA:
|
|
n.blendFunc(0, 768);
|
|
break;
|
|
default:
|
|
console.error("THREE.WebGLState: Invalid blending: ", v);
|
|
break;
|
|
}
|
|
r = null, l = null, E = null, d = null, a = v, p = qM;
|
|
}
|
|
return;
|
|
}
|
|
F = F || TM, oM = oM || AM, UM = UM || LM, (TM !== c || F !== C) && (n.blendEquationSeparate(vM[TM], vM[F]), c = TM, C = F), (AM !== r || LM !== l || oM !== E || UM !== d) && (n.blendFuncSeparate(OM[AM], OM[LM], OM[oM], OM[UM]), r = AM, l = LM, E = oM, d = UM), a = v, p = null;
|
|
}
|
|
function $(v, TM) {
|
|
v.side === Ne ? kM(2884) : _(2884);
|
|
let AM = v.side === eD;
|
|
TM && (AM = !AM), X(AM), v.blending === ve && v.transparent === !1 ? P(zt) : P(v.blending, v.blendEquation, v.blendSrc, v.blendDst, v.blendEquationAlpha, v.blendSrcAlpha, v.blendDstAlpha, v.premultipliedAlpha), I.setFunc(v.depthFunc), I.setTest(v.depthTest), I.setMask(v.depthWrite), z.setMask(v.colorWrite);
|
|
const LM = v.stencilWrite;
|
|
i.setTest(LM), LM && (i.setMask(v.stencilWriteMask), i.setFunc(v.stencilFunc, v.stencilRef, v.stencilFuncMask), i.setOp(v.stencilFail, v.stencilZFail, v.stencilZPass)), CM(v.polygonOffset, v.polygonOffsetFactor, v.polygonOffsetUnits), v.alphaToCoverage === !0 ? _(32926) : kM(32926);
|
|
}
|
|
function X(v) {
|
|
H !== v && (v ? n.frontFace(2304) : n.frontFace(2305), H = v);
|
|
}
|
|
function iM(v) {
|
|
v !== iI ? (_(2884), v !== DM && (v === yA ? n.cullFace(1029) : v === II ? n.cullFace(1028) : n.cullFace(1032))) : kM(2884), DM = v;
|
|
}
|
|
function nM(v) {
|
|
v !== G && (k && n.lineWidth(v), G = v);
|
|
}
|
|
function CM(v, TM, AM) {
|
|
v ? (_(32823), (o !== TM || h !== AM) && (n.polygonOffset(TM, AM), o = TM, h = AM)) : kM(32823);
|
|
}
|
|
function xM(v) {
|
|
v ? _(3089) : kM(3089);
|
|
}
|
|
function QM(v) {
|
|
v === void 0 && (v = 33984 + Y - 1), b !== v && (n.activeTexture(v), b = v);
|
|
}
|
|
function FM(v, TM) {
|
|
b === null && QM();
|
|
let AM = W[b];
|
|
AM === void 0 && (AM = { type: void 0, texture: void 0 }, W[b] = AM), (AM.type !== v || AM.texture !== TM) && (n.bindTexture(v, TM || jM[v]), AM.type = v, AM.texture = TM);
|
|
}
|
|
function RM() {
|
|
const v = W[b];
|
|
v !== void 0 && v.type !== void 0 && (n.bindTexture(v.type, null), v.type = void 0, v.texture = void 0);
|
|
}
|
|
function x() {
|
|
try {
|
|
n.compressedTexImage2D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function L() {
|
|
try {
|
|
n.texSubImage2D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function R() {
|
|
try {
|
|
n.texSubImage3D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function J() {
|
|
try {
|
|
n.compressedTexSubImage2D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function gM() {
|
|
try {
|
|
n.texStorage2D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function K() {
|
|
try {
|
|
n.texStorage3D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function yM() {
|
|
try {
|
|
n.texImage2D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function sM() {
|
|
try {
|
|
n.texImage3D.apply(n, arguments);
|
|
} catch (v) {
|
|
console.error("THREE.WebGLState:", v);
|
|
}
|
|
}
|
|
function NM(v) {
|
|
V.equals(v) === !1 && (n.scissor(v.x, v.y, v.z, v.w), V.copy(v));
|
|
}
|
|
function tM(v) {
|
|
eM.equals(v) === !1 && (n.viewport(v.x, v.y, v.z, v.w), eM.copy(v));
|
|
}
|
|
function lM() {
|
|
n.disable(3042), n.disable(2884), n.disable(2929), n.disable(32823), n.disable(3089), n.disable(2960), n.disable(32926), n.blendEquation(32774), n.blendFunc(1, 0), n.blendFuncSeparate(1, 0, 1, 0), n.colorMask(!0, !0, !0, !0), n.clearColor(0, 0, 0, 0), n.depthMask(!0), n.depthFunc(513), n.clearDepth(1), n.stencilMask(4294967295), n.stencilFunc(519, 0, 4294967295), n.stencilOp(7680, 7680, 7680), n.clearStencil(0), n.cullFace(1029), n.frontFace(2305), n.polygonOffset(0, 0), n.activeTexture(33984), n.bindFramebuffer(36160, null), t === !0 && (n.bindFramebuffer(36009, null), n.bindFramebuffer(36008, null)), n.useProgram(null), n.lineWidth(1), n.scissor(0, 0, n.canvas.width, n.canvas.height), n.viewport(0, 0, n.canvas.width, n.canvas.height), T = {}, b = null, W = {}, u = {}, g = /* @__PURE__ */ new WeakMap(), s = [], j = null, y = !1, a = null, c = null, r = null, l = null, C = null, E = null, d = null, p = !1, H = null, DM = null, G = null, o = null, h = null, V.set(0, 0, n.canvas.width, n.canvas.height), eM.set(0, 0, n.canvas.width, n.canvas.height), z.reset(), I.reset(), i.reset();
|
|
}
|
|
return {
|
|
buffers: {
|
|
color: z,
|
|
depth: I,
|
|
stencil: i
|
|
},
|
|
enable: _,
|
|
disable: kM,
|
|
bindFramebuffer: rM,
|
|
drawBuffers: wM,
|
|
useProgram: zM,
|
|
setBlending: P,
|
|
setMaterial: $,
|
|
setFlipSided: X,
|
|
setCullFace: iM,
|
|
setLineWidth: nM,
|
|
setPolygonOffset: CM,
|
|
setScissorTest: xM,
|
|
activeTexture: QM,
|
|
bindTexture: FM,
|
|
unbindTexture: RM,
|
|
compressedTexImage2D: x,
|
|
texImage2D: yM,
|
|
texImage3D: sM,
|
|
texStorage2D: gM,
|
|
texStorage3D: K,
|
|
texSubImage2D: L,
|
|
texSubImage3D: R,
|
|
compressedTexSubImage2D: J,
|
|
scissor: NM,
|
|
viewport: tM,
|
|
reset: lM
|
|
};
|
|
}
|
|
function _s(n, M, D, t, e, N, A) {
|
|
const z = e.isWebGL2, I = e.maxTextures, i = e.maxCubemapSize, T = e.maxTextureSize, u = e.maxSamples, s = M.has("WEBGL_multisampled_render_to_texture") ? M.get("WEBGL_multisampled_render_to_texture") : void 0, j = /* @__PURE__ */ new WeakMap();
|
|
let y, a = !1;
|
|
try {
|
|
a = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") !== null;
|
|
} catch {
|
|
}
|
|
function c(x, L) {
|
|
return a ? new OffscreenCanvas(x, L) : fe("canvas");
|
|
}
|
|
function r(x, L, R, J) {
|
|
let gM = 1;
|
|
if ((x.width > J || x.height > J) && (gM = J / Math.max(x.width, x.height)), gM < 1 || L === !0)
|
|
if (typeof HTMLImageElement < "u" && x instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && x instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && x instanceof ImageBitmap) {
|
|
const K = L ? iT : Math.floor, yM = K(gM * x.width), sM = K(gM * x.height);
|
|
y === void 0 && (y = c(yM, sM));
|
|
const NM = R ? c(yM, sM) : y;
|
|
return NM.width = yM, NM.height = sM, NM.getContext("2d").drawImage(x, 0, 0, yM, sM), console.warn("THREE.WebGLRenderer: Texture has been resized from (" + x.width + "x" + x.height + ") to (" + yM + "x" + sM + ")."), NM;
|
|
} else
|
|
return "data" in x && console.warn("THREE.WebGLRenderer: Image in DataTexture is too big (" + x.width + "x" + x.height + ")."), x;
|
|
return x;
|
|
}
|
|
function l(x) {
|
|
return HA(x.width) && HA(x.height);
|
|
}
|
|
function C(x) {
|
|
return z ? !1 : x.wrapS !== xD || x.wrapT !== xD || x.minFilter !== ND && x.minFilter !== uD;
|
|
}
|
|
function E(x, L) {
|
|
return x.generateMipmaps && L && x.minFilter !== ND && x.minFilter !== uD;
|
|
}
|
|
function d(x) {
|
|
n.generateMipmap(x);
|
|
}
|
|
function p(x, L, R, J, gM = !1) {
|
|
if (z === !1)
|
|
return L;
|
|
if (x !== null) {
|
|
if (n[x] !== void 0)
|
|
return n[x];
|
|
console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '" + x + "'");
|
|
}
|
|
let K = L;
|
|
return L === 6403 && (R === 5126 && (K = 33326), R === 5131 && (K = 33325), R === 5121 && (K = 33321)), L === 33319 && (R === 5126 && (K = 33328), R === 5131 && (K = 33327), R === 5121 && (K = 33323)), L === 6408 && (R === 5126 && (K = 34836), R === 5131 && (K = 34842), R === 5121 && (K = J === HM && gM === !1 ? 35907 : 32856), R === 32819 && (K = 32854), R === 32820 && (K = 32855)), (K === 33325 || K === 33326 || K === 33327 || K === 33328 || K === 34842 || K === 34836) && M.get("EXT_color_buffer_float"), K;
|
|
}
|
|
function H(x, L, R) {
|
|
return E(x, R) === !0 || x.isFramebufferTexture && x.minFilter !== ND && x.minFilter !== uD ? Math.log2(Math.max(L.width, L.height)) + 1 : x.mipmaps !== void 0 && x.mipmaps.length > 0 ? x.mipmaps.length : x.isCompressedTexture && Array.isArray(x.image) ? L.mipmaps.length : 1;
|
|
}
|
|
function DM(x) {
|
|
return x === ND || x === OA || x === xA ? 9728 : 9729;
|
|
}
|
|
function G(x) {
|
|
const L = x.target;
|
|
L.removeEventListener("dispose", G), h(L), L.isVideoTexture && j.delete(L), A.memory.textures--;
|
|
}
|
|
function o(x) {
|
|
const L = x.target;
|
|
L.removeEventListener("dispose", o), Y(L);
|
|
}
|
|
function h(x) {
|
|
const L = t.get(x);
|
|
L.__webglInit !== void 0 && (n.deleteTexture(L.__webglTexture), t.remove(x));
|
|
}
|
|
function Y(x) {
|
|
const L = x.texture, R = t.get(x), J = t.get(L);
|
|
if (!!x) {
|
|
if (J.__webglTexture !== void 0 && (n.deleteTexture(J.__webglTexture), A.memory.textures--), x.depthTexture && x.depthTexture.dispose(), x.isWebGLCubeRenderTarget)
|
|
for (let gM = 0; gM < 6; gM++)
|
|
n.deleteFramebuffer(R.__webglFramebuffer[gM]), R.__webglDepthbuffer && n.deleteRenderbuffer(R.__webglDepthbuffer[gM]);
|
|
else
|
|
n.deleteFramebuffer(R.__webglFramebuffer), R.__webglDepthbuffer && n.deleteRenderbuffer(R.__webglDepthbuffer), R.__webglMultisampledFramebuffer && n.deleteFramebuffer(R.__webglMultisampledFramebuffer), R.__webglColorRenderbuffer && n.deleteRenderbuffer(R.__webglColorRenderbuffer), R.__webglDepthRenderbuffer && n.deleteRenderbuffer(R.__webglDepthRenderbuffer);
|
|
if (x.isWebGLMultipleRenderTargets)
|
|
for (let gM = 0, K = L.length; gM < K; gM++) {
|
|
const yM = t.get(L[gM]);
|
|
yM.__webglTexture && (n.deleteTexture(yM.__webglTexture), A.memory.textures--), t.remove(L[gM]);
|
|
}
|
|
t.remove(L), t.remove(x);
|
|
}
|
|
}
|
|
let k = 0;
|
|
function f() {
|
|
k = 0;
|
|
}
|
|
function Q() {
|
|
const x = k;
|
|
return x >= I && console.warn("THREE.WebGLTextures: Trying to use " + x + " texture units while this GPU supports only " + I), k += 1, x;
|
|
}
|
|
function b(x, L) {
|
|
const R = t.get(x);
|
|
if (x.isVideoTexture && nM(x), x.version > 0 && R.__version !== x.version) {
|
|
const J = x.image;
|
|
if (J === void 0)
|
|
console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");
|
|
else if (J.complete === !1)
|
|
console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");
|
|
else {
|
|
_(R, x, L);
|
|
return;
|
|
}
|
|
}
|
|
D.activeTexture(33984 + L), D.bindTexture(3553, R.__webglTexture);
|
|
}
|
|
function W(x, L) {
|
|
const R = t.get(x);
|
|
if (x.version > 0 && R.__version !== x.version) {
|
|
_(R, x, L);
|
|
return;
|
|
}
|
|
D.activeTexture(33984 + L), D.bindTexture(35866, R.__webglTexture);
|
|
}
|
|
function IM(x, L) {
|
|
const R = t.get(x);
|
|
if (x.version > 0 && R.__version !== x.version) {
|
|
_(R, x, L);
|
|
return;
|
|
}
|
|
D.activeTexture(33984 + L), D.bindTexture(32879, R.__webglTexture);
|
|
}
|
|
function Z(x, L) {
|
|
const R = t.get(x);
|
|
if (x.version > 0 && R.__version !== x.version) {
|
|
kM(R, x, L);
|
|
return;
|
|
}
|
|
D.activeTexture(33984 + L), D.bindTexture(34067, R.__webglTexture);
|
|
}
|
|
const V = {
|
|
[Sn]: 10497,
|
|
[xD]: 33071,
|
|
[Zn]: 33648
|
|
}, eM = {
|
|
[ND]: 9728,
|
|
[OA]: 9984,
|
|
[xA]: 9986,
|
|
[uD]: 9729,
|
|
[SI]: 9985,
|
|
[kN]: 9987
|
|
};
|
|
function uM(x, L, R) {
|
|
if (R ? (n.texParameteri(x, 10242, V[L.wrapS]), n.texParameteri(x, 10243, V[L.wrapT]), (x === 32879 || x === 35866) && n.texParameteri(x, 32882, V[L.wrapR]), n.texParameteri(x, 10240, eM[L.magFilter]), n.texParameteri(x, 10241, eM[L.minFilter])) : (n.texParameteri(x, 10242, 33071), n.texParameteri(x, 10243, 33071), (x === 32879 || x === 35866) && n.texParameteri(x, 32882, 33071), (L.wrapS !== xD || L.wrapT !== xD) && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."), n.texParameteri(x, 10240, DM(L.magFilter)), n.texParameteri(x, 10241, DM(L.minFilter)), L.minFilter !== ND && L.minFilter !== uD && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")), M.has("EXT_texture_filter_anisotropic") === !0) {
|
|
const J = M.get("EXT_texture_filter_anisotropic");
|
|
if (L.type === Ot && M.has("OES_texture_float_linear") === !1 || z === !1 && L.type === Me && M.has("OES_texture_half_float_linear") === !1)
|
|
return;
|
|
(L.anisotropy > 1 || t.get(L).__currentAnisotropy) && (n.texParameterf(x, J.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(L.anisotropy, e.getMaxAnisotropy())), t.get(L).__currentAnisotropy = L.anisotropy);
|
|
}
|
|
}
|
|
function jM(x, L) {
|
|
x.__webglInit === void 0 && (x.__webglInit = !0, L.addEventListener("dispose", G), x.__webglTexture = n.createTexture(), A.memory.textures++);
|
|
}
|
|
function _(x, L, R) {
|
|
let J = 3553;
|
|
L.isDataTexture2DArray && (J = 35866), L.isDataTexture3D && (J = 32879), jM(x, L), D.activeTexture(33984 + R), D.bindTexture(J, x.__webglTexture), n.pixelStorei(37440, L.flipY), n.pixelStorei(37441, L.premultiplyAlpha), n.pixelStorei(3317, L.unpackAlignment), n.pixelStorei(37443, 0);
|
|
const gM = C(L) && l(L.image) === !1;
|
|
let K = r(L.image, gM, !1, T);
|
|
K = CM(L, K);
|
|
const yM = l(K) || z, sM = N.convert(L.format, L.encoding);
|
|
let NM = N.convert(L.type), tM = p(L.internalFormat, sM, NM, L.encoding, L.isVideoTexture);
|
|
uM(J, L, yM);
|
|
let lM;
|
|
const v = L.mipmaps, TM = z && L.isVideoTexture !== !0, AM = x.__version === void 0, LM = H(L, K, yM);
|
|
if (L.isDepthTexture)
|
|
tM = 6402, z ? L.type === Ot ? tM = 36012 : L.type === lN ? tM = 33190 : L.type === De ? tM = 35056 : tM = 33189 : L.type === Ot && console.error("WebGLRenderer: Floating point depth texture requires WebGL2."), L.format === Et && tM === 6402 && L.type !== Ue && L.type !== lN && (console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."), L.type = Ue, NM = N.convert(L.type)), L.format === ne && tM === 6402 && (tM = 34041, L.type !== De && (console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."), L.type = De, NM = N.convert(L.type))), TM && AM ? D.texStorage2D(3553, 1, tM, K.width, K.height) : D.texImage2D(3553, 0, tM, K.width, K.height, 0, sM, NM, null);
|
|
else if (L.isDataTexture)
|
|
if (v.length > 0 && yM) {
|
|
TM && AM && D.texStorage2D(3553, LM, tM, v[0].width, v[0].height);
|
|
for (let F = 0, oM = v.length; F < oM; F++)
|
|
lM = v[F], TM ? D.texSubImage2D(3553, 0, 0, 0, lM.width, lM.height, sM, NM, lM.data) : D.texImage2D(3553, F, tM, lM.width, lM.height, 0, sM, NM, lM.data);
|
|
L.generateMipmaps = !1;
|
|
} else
|
|
TM ? (AM && D.texStorage2D(3553, LM, tM, K.width, K.height), D.texSubImage2D(3553, 0, 0, 0, K.width, K.height, sM, NM, K.data)) : D.texImage2D(3553, 0, tM, K.width, K.height, 0, sM, NM, K.data);
|
|
else if (L.isCompressedTexture) {
|
|
TM && AM && D.texStorage2D(3553, LM, tM, v[0].width, v[0].height);
|
|
for (let F = 0, oM = v.length; F < oM; F++)
|
|
lM = v[F], L.format !== yD ? sM !== null ? TM ? D.compressedTexSubImage2D(3553, F, 0, 0, lM.width, lM.height, sM, lM.data) : D.compressedTexImage2D(3553, F, tM, lM.width, lM.height, 0, lM.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : TM ? D.texSubImage2D(3553, F, 0, 0, lM.width, lM.height, sM, NM, lM.data) : D.texImage2D(3553, F, tM, lM.width, lM.height, 0, sM, NM, lM.data);
|
|
} else if (L.isDataTexture2DArray)
|
|
TM ? (AM && D.texStorage3D(35866, LM, tM, K.width, K.height, K.depth), D.texSubImage3D(35866, 0, 0, 0, 0, K.width, K.height, K.depth, sM, NM, K.data)) : D.texImage3D(35866, 0, tM, K.width, K.height, K.depth, 0, sM, NM, K.data);
|
|
else if (L.isDataTexture3D)
|
|
TM ? (AM && D.texStorage3D(32879, LM, tM, K.width, K.height, K.depth), D.texSubImage3D(32879, 0, 0, 0, 0, K.width, K.height, K.depth, sM, NM, K.data)) : D.texImage3D(32879, 0, tM, K.width, K.height, K.depth, 0, sM, NM, K.data);
|
|
else if (L.isFramebufferTexture)
|
|
TM && AM ? D.texStorage2D(3553, LM, tM, K.width, K.height) : D.texImage2D(3553, 0, tM, K.width, K.height, 0, sM, NM, null);
|
|
else if (v.length > 0 && yM) {
|
|
TM && AM && D.texStorage2D(3553, LM, tM, v[0].width, v[0].height);
|
|
for (let F = 0, oM = v.length; F < oM; F++)
|
|
lM = v[F], TM ? D.texSubImage2D(3553, F, 0, 0, sM, NM, lM) : D.texImage2D(3553, F, tM, sM, NM, lM);
|
|
L.generateMipmaps = !1;
|
|
} else
|
|
TM ? (AM && D.texStorage2D(3553, LM, tM, K.width, K.height), D.texSubImage2D(3553, 0, 0, 0, sM, NM, K)) : D.texImage2D(3553, 0, tM, sM, NM, K);
|
|
E(L, yM) && d(J), x.__version = L.version, L.onUpdate && L.onUpdate(L);
|
|
}
|
|
function kM(x, L, R) {
|
|
if (L.image.length !== 6)
|
|
return;
|
|
jM(x, L), D.activeTexture(33984 + R), D.bindTexture(34067, x.__webglTexture), n.pixelStorei(37440, L.flipY), n.pixelStorei(37441, L.premultiplyAlpha), n.pixelStorei(3317, L.unpackAlignment), n.pixelStorei(37443, 0);
|
|
const J = L && (L.isCompressedTexture || L.image[0].isCompressedTexture), gM = L.image[0] && L.image[0].isDataTexture, K = [];
|
|
for (let F = 0; F < 6; F++)
|
|
!J && !gM ? K[F] = r(L.image[F], !1, !0, i) : K[F] = gM ? L.image[F].image : L.image[F], K[F] = CM(L, K[F]);
|
|
const yM = K[0], sM = l(yM) || z, NM = N.convert(L.format, L.encoding), tM = N.convert(L.type), lM = p(L.internalFormat, NM, tM, L.encoding), v = z && L.isVideoTexture !== !0, TM = x.__version === void 0;
|
|
let AM = H(L, yM, sM);
|
|
uM(34067, L, sM);
|
|
let LM;
|
|
if (J) {
|
|
v && TM && D.texStorage2D(34067, AM, lM, yM.width, yM.height);
|
|
for (let F = 0; F < 6; F++) {
|
|
LM = K[F].mipmaps;
|
|
for (let oM = 0; oM < LM.length; oM++) {
|
|
const UM = LM[oM];
|
|
L.format !== yD ? NM !== null ? v ? D.compressedTexSubImage2D(34069 + F, oM, 0, 0, UM.width, UM.height, NM, UM.data) : D.compressedTexImage2D(34069 + F, oM, lM, UM.width, UM.height, 0, UM.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()") : v ? D.texSubImage2D(34069 + F, oM, 0, 0, UM.width, UM.height, NM, tM, UM.data) : D.texImage2D(34069 + F, oM, lM, UM.width, UM.height, 0, NM, tM, UM.data);
|
|
}
|
|
}
|
|
} else {
|
|
LM = L.mipmaps, v && TM && (LM.length > 0 && AM++, D.texStorage2D(34067, AM, lM, K[0].width, K[0].height));
|
|
for (let F = 0; F < 6; F++)
|
|
if (gM) {
|
|
v ? D.texSubImage2D(34069 + F, 0, 0, 0, K[F].width, K[F].height, NM, tM, K[F].data) : D.texImage2D(34069 + F, 0, lM, K[F].width, K[F].height, 0, NM, tM, K[F].data);
|
|
for (let oM = 0; oM < LM.length; oM++) {
|
|
const qM = LM[oM].image[F].image;
|
|
v ? D.texSubImage2D(34069 + F, oM + 1, 0, 0, qM.width, qM.height, NM, tM, qM.data) : D.texImage2D(34069 + F, oM + 1, lM, qM.width, qM.height, 0, NM, tM, qM.data);
|
|
}
|
|
} else {
|
|
v ? D.texSubImage2D(34069 + F, 0, 0, 0, NM, tM, K[F]) : D.texImage2D(34069 + F, 0, lM, NM, tM, K[F]);
|
|
for (let oM = 0; oM < LM.length; oM++) {
|
|
const UM = LM[oM];
|
|
v ? D.texSubImage2D(34069 + F, oM + 1, 0, 0, NM, tM, UM.image[F]) : D.texImage2D(34069 + F, oM + 1, lM, NM, tM, UM.image[F]);
|
|
}
|
|
}
|
|
}
|
|
E(L, sM) && d(34067), x.__version = L.version, L.onUpdate && L.onUpdate(L);
|
|
}
|
|
function rM(x, L, R, J, gM) {
|
|
const K = N.convert(R.format, R.encoding), yM = N.convert(R.type), sM = p(R.internalFormat, K, yM, R.encoding);
|
|
t.get(L).__hasExternalTextures || (gM === 32879 || gM === 35866 ? D.texImage3D(gM, 0, sM, L.width, L.height, L.depth, 0, K, yM, null) : D.texImage2D(gM, 0, sM, L.width, L.height, 0, K, yM, null)), D.bindFramebuffer(36160, x), L.useRenderToTexture ? s.framebufferTexture2DMultisampleEXT(36160, J, gM, t.get(R).__webglTexture, 0, iM(L)) : n.framebufferTexture2D(36160, J, gM, t.get(R).__webglTexture, 0), D.bindFramebuffer(36160, null);
|
|
}
|
|
function wM(x, L, R) {
|
|
if (n.bindRenderbuffer(36161, x), L.depthBuffer && !L.stencilBuffer) {
|
|
let J = 33189;
|
|
if (R || L.useRenderToTexture) {
|
|
const gM = L.depthTexture;
|
|
gM && gM.isDepthTexture && (gM.type === Ot ? J = 36012 : gM.type === lN && (J = 33190));
|
|
const K = iM(L);
|
|
L.useRenderToTexture ? s.renderbufferStorageMultisampleEXT(36161, K, J, L.width, L.height) : n.renderbufferStorageMultisample(36161, K, J, L.width, L.height);
|
|
} else
|
|
n.renderbufferStorage(36161, J, L.width, L.height);
|
|
n.framebufferRenderbuffer(36160, 36096, 36161, x);
|
|
} else if (L.depthBuffer && L.stencilBuffer) {
|
|
const J = iM(L);
|
|
R && L.useRenderbuffer ? n.renderbufferStorageMultisample(36161, J, 35056, L.width, L.height) : L.useRenderToTexture ? s.renderbufferStorageMultisampleEXT(36161, J, 35056, L.width, L.height) : n.renderbufferStorage(36161, 34041, L.width, L.height), n.framebufferRenderbuffer(36160, 33306, 36161, x);
|
|
} else {
|
|
const J = L.isWebGLMultipleRenderTargets === !0 ? L.texture[0] : L.texture, gM = N.convert(J.format, J.encoding), K = N.convert(J.type), yM = p(J.internalFormat, gM, K, J.encoding), sM = iM(L);
|
|
R && L.useRenderbuffer ? n.renderbufferStorageMultisample(36161, sM, yM, L.width, L.height) : L.useRenderToTexture ? s.renderbufferStorageMultisampleEXT(36161, sM, yM, L.width, L.height) : n.renderbufferStorage(36161, yM, L.width, L.height);
|
|
}
|
|
n.bindRenderbuffer(36161, null);
|
|
}
|
|
function zM(x, L) {
|
|
if (L && L.isWebGLCubeRenderTarget)
|
|
throw new Error("Depth Texture with cube render targets is not supported");
|
|
if (D.bindFramebuffer(36160, x), !(L.depthTexture && L.depthTexture.isDepthTexture))
|
|
throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");
|
|
(!t.get(L.depthTexture).__webglTexture || L.depthTexture.image.width !== L.width || L.depthTexture.image.height !== L.height) && (L.depthTexture.image.width = L.width, L.depthTexture.image.height = L.height, L.depthTexture.needsUpdate = !0), b(L.depthTexture, 0);
|
|
const J = t.get(L.depthTexture).__webglTexture, gM = iM(L);
|
|
if (L.depthTexture.format === Et)
|
|
L.useRenderToTexture ? s.framebufferTexture2DMultisampleEXT(36160, 36096, 3553, J, 0, gM) : n.framebufferTexture2D(36160, 36096, 3553, J, 0);
|
|
else if (L.depthTexture.format === ne)
|
|
L.useRenderToTexture ? s.framebufferTexture2DMultisampleEXT(36160, 33306, 3553, J, 0, gM) : n.framebufferTexture2D(36160, 33306, 3553, J, 0);
|
|
else
|
|
throw new Error("Unknown depthTexture format");
|
|
}
|
|
function vM(x) {
|
|
const L = t.get(x), R = x.isWebGLCubeRenderTarget === !0;
|
|
if (x.depthTexture && !L.__autoAllocateDepthBuffer) {
|
|
if (R)
|
|
throw new Error("target.depthTexture not supported in Cube render targets");
|
|
zM(L.__webglFramebuffer, x);
|
|
} else if (R) {
|
|
L.__webglDepthbuffer = [];
|
|
for (let J = 0; J < 6; J++)
|
|
D.bindFramebuffer(36160, L.__webglFramebuffer[J]), L.__webglDepthbuffer[J] = n.createRenderbuffer(), wM(L.__webglDepthbuffer[J], x, !1);
|
|
} else
|
|
D.bindFramebuffer(36160, L.__webglFramebuffer), L.__webglDepthbuffer = n.createRenderbuffer(), wM(L.__webglDepthbuffer, x, !1);
|
|
D.bindFramebuffer(36160, null);
|
|
}
|
|
function OM(x, L, R) {
|
|
const J = t.get(x);
|
|
L !== void 0 && rM(J.__webglFramebuffer, x, x.texture, 36064, 3553), R !== void 0 && vM(x);
|
|
}
|
|
function P(x) {
|
|
const L = x.texture, R = t.get(x), J = t.get(L);
|
|
x.addEventListener("dispose", o), x.isWebGLMultipleRenderTargets !== !0 && (J.__webglTexture === void 0 && (J.__webglTexture = n.createTexture()), J.__version = L.version, A.memory.textures++);
|
|
const gM = x.isWebGLCubeRenderTarget === !0, K = x.isWebGLMultipleRenderTargets === !0, yM = L.isDataTexture3D || L.isDataTexture2DArray, sM = l(x) || z;
|
|
if (gM) {
|
|
R.__webglFramebuffer = [];
|
|
for (let NM = 0; NM < 6; NM++)
|
|
R.__webglFramebuffer[NM] = n.createFramebuffer();
|
|
} else if (R.__webglFramebuffer = n.createFramebuffer(), K)
|
|
if (e.drawBuffers) {
|
|
const NM = x.texture;
|
|
for (let tM = 0, lM = NM.length; tM < lM; tM++) {
|
|
const v = t.get(NM[tM]);
|
|
v.__webglTexture === void 0 && (v.__webglTexture = n.createTexture(), A.memory.textures++);
|
|
}
|
|
} else
|
|
console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");
|
|
else if (x.useRenderbuffer)
|
|
if (z) {
|
|
R.__webglMultisampledFramebuffer = n.createFramebuffer(), R.__webglColorRenderbuffer = n.createRenderbuffer(), n.bindRenderbuffer(36161, R.__webglColorRenderbuffer);
|
|
const NM = N.convert(L.format, L.encoding), tM = N.convert(L.type), lM = p(L.internalFormat, NM, tM, L.encoding), v = iM(x);
|
|
n.renderbufferStorageMultisample(36161, v, lM, x.width, x.height), D.bindFramebuffer(36160, R.__webglMultisampledFramebuffer), n.framebufferRenderbuffer(36160, 36064, 36161, R.__webglColorRenderbuffer), n.bindRenderbuffer(36161, null), x.depthBuffer && (R.__webglDepthRenderbuffer = n.createRenderbuffer(), wM(R.__webglDepthRenderbuffer, x, !0)), D.bindFramebuffer(36160, null);
|
|
} else
|
|
console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");
|
|
if (gM) {
|
|
D.bindTexture(34067, J.__webglTexture), uM(34067, L, sM);
|
|
for (let NM = 0; NM < 6; NM++)
|
|
rM(R.__webglFramebuffer[NM], x, L, 36064, 34069 + NM);
|
|
E(L, sM) && d(34067), D.unbindTexture();
|
|
} else if (K) {
|
|
const NM = x.texture;
|
|
for (let tM = 0, lM = NM.length; tM < lM; tM++) {
|
|
const v = NM[tM], TM = t.get(v);
|
|
D.bindTexture(3553, TM.__webglTexture), uM(3553, v, sM), rM(R.__webglFramebuffer, x, v, 36064 + tM, 3553), E(v, sM) && d(3553);
|
|
}
|
|
D.unbindTexture();
|
|
} else {
|
|
let NM = 3553;
|
|
yM && (z ? NM = L.isDataTexture3D ? 32879 : 35866 : console.warn("THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.")), D.bindTexture(NM, J.__webglTexture), uM(NM, L, sM), rM(R.__webglFramebuffer, x, L, 36064, NM), E(L, sM) && d(NM), D.unbindTexture();
|
|
}
|
|
x.depthBuffer && vM(x);
|
|
}
|
|
function $(x) {
|
|
const L = l(x) || z, R = x.isWebGLMultipleRenderTargets === !0 ? x.texture : [x.texture];
|
|
for (let J = 0, gM = R.length; J < gM; J++) {
|
|
const K = R[J];
|
|
if (E(K, L)) {
|
|
const yM = x.isWebGLCubeRenderTarget ? 34067 : 3553, sM = t.get(K).__webglTexture;
|
|
D.bindTexture(yM, sM), d(yM), D.unbindTexture();
|
|
}
|
|
}
|
|
}
|
|
function X(x) {
|
|
if (x.useRenderbuffer)
|
|
if (z) {
|
|
const L = x.width, R = x.height;
|
|
let J = 16384;
|
|
const gM = [36064], K = x.stencilBuffer ? 33306 : 36096;
|
|
x.depthBuffer && gM.push(K), x.ignoreDepthForMultisampleCopy || (x.depthBuffer && (J |= 256), x.stencilBuffer && (J |= 1024));
|
|
const yM = t.get(x);
|
|
D.bindFramebuffer(36008, yM.__webglMultisampledFramebuffer), D.bindFramebuffer(36009, yM.__webglFramebuffer), x.ignoreDepthForMultisampleCopy && (n.invalidateFramebuffer(36008, [K]), n.invalidateFramebuffer(36009, [K])), n.blitFramebuffer(0, 0, L, R, 0, 0, L, R, J, 9728), n.invalidateFramebuffer(36008, gM), D.bindFramebuffer(36008, null), D.bindFramebuffer(36009, yM.__webglMultisampledFramebuffer);
|
|
} else
|
|
console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");
|
|
}
|
|
function iM(x) {
|
|
return z && (x.useRenderbuffer || x.useRenderToTexture) ? Math.min(u, x.samples) : 0;
|
|
}
|
|
function nM(x) {
|
|
const L = A.render.frame;
|
|
j.get(x) !== L && (j.set(x, L), x.update());
|
|
}
|
|
function CM(x, L) {
|
|
const R = x.encoding, J = x.format, gM = x.type;
|
|
return x.isCompressedTexture === !0 || x.isVideoTexture === !0 || x.format === _n || R !== st && (R === HM ? z === !1 ? M.has("EXT_sRGB") === !0 && J === yD ? (x.format = _n, x.minFilter = uD, x.generateMipmaps = !1) : L = vt.sRGBToLinear(L) : (J !== yD || gM !== It) && console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.") : console.error("THREE.WebGLTextures: Unsupported texture encoding:", R)), L;
|
|
}
|
|
let xM = !1, QM = !1;
|
|
function FM(x, L) {
|
|
x && x.isWebGLRenderTarget && (xM === !1 && (console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."), xM = !0), x = x.texture), b(x, L);
|
|
}
|
|
function RM(x, L) {
|
|
x && x.isWebGLCubeRenderTarget && (QM === !1 && (console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."), QM = !0), x = x.texture), Z(x, L);
|
|
}
|
|
this.allocateTextureUnit = Q, this.resetTextureUnits = f, this.setTexture2D = b, this.setTexture2DArray = W, this.setTexture3D = IM, this.setTextureCube = Z, this.rebindTextures = OM, this.setupRenderTarget = P, this.updateRenderTargetMipmap = $, this.updateMultisampleRenderTarget = X, this.setupDepthRenderbuffer = vM, this.setupFrameBufferTexture = rM, this.safeSetTexture2D = FM, this.safeSetTextureCube = RM;
|
|
}
|
|
function bs(n, M, D) {
|
|
const t = D.isWebGL2;
|
|
function e(N, A = null) {
|
|
let z;
|
|
if (N === It)
|
|
return 5121;
|
|
if (N === KI)
|
|
return 32819;
|
|
if (N === RI)
|
|
return 32820;
|
|
if (N === ZI)
|
|
return 5120;
|
|
if (N === _I)
|
|
return 5122;
|
|
if (N === Ue)
|
|
return 5123;
|
|
if (N === bI)
|
|
return 5124;
|
|
if (N === lN)
|
|
return 5125;
|
|
if (N === Ot)
|
|
return 5126;
|
|
if (N === Me)
|
|
return t ? 5131 : (z = M.get("OES_texture_half_float"), z !== null ? z.HALF_FLOAT_OES : null);
|
|
if (N === PI)
|
|
return 6406;
|
|
if (N === yD)
|
|
return 6408;
|
|
if (N === BI)
|
|
return 6409;
|
|
if (N === VI)
|
|
return 6410;
|
|
if (N === Et)
|
|
return 6402;
|
|
if (N === ne)
|
|
return 34041;
|
|
if (N === HI)
|
|
return 6403;
|
|
if (N === FI)
|
|
return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"), 6408;
|
|
if (N === _n)
|
|
return z = M.get("EXT_sRGB"), z !== null ? z.SRGB_ALPHA_EXT : null;
|
|
if (N === GI)
|
|
return 36244;
|
|
if (N === WI)
|
|
return 33319;
|
|
if (N === qI)
|
|
return 33320;
|
|
if (N === XI)
|
|
return 36249;
|
|
if (N === VN || N === HN || N === GN || N === WN)
|
|
if (A === HM)
|
|
if (z = M.get("WEBGL_compressed_texture_s3tc_srgb"), z !== null) {
|
|
if (N === VN)
|
|
return z.COMPRESSED_SRGB_S3TC_DXT1_EXT;
|
|
if (N === HN)
|
|
return z.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;
|
|
if (N === GN)
|
|
return z.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;
|
|
if (N === WN)
|
|
return z.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;
|
|
} else
|
|
return null;
|
|
else if (z = M.get("WEBGL_compressed_texture_s3tc"), z !== null) {
|
|
if (N === VN)
|
|
return z.COMPRESSED_RGB_S3TC_DXT1_EXT;
|
|
if (N === HN)
|
|
return z.COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
if (N === GN)
|
|
return z.COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
if (N === WN)
|
|
return z.COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
} else
|
|
return null;
|
|
if (N === EA || N === lA || N === dA || N === vA)
|
|
if (z = M.get("WEBGL_compressed_texture_pvrtc"), z !== null) {
|
|
if (N === EA)
|
|
return z.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
|
|
if (N === lA)
|
|
return z.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
|
|
if (N === dA)
|
|
return z.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
|
if (N === vA)
|
|
return z.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
|
|
} else
|
|
return null;
|
|
if (N === JI)
|
|
return z = M.get("WEBGL_compressed_texture_etc1"), z !== null ? z.COMPRESSED_RGB_ETC1_WEBGL : null;
|
|
if (N === pA || N === hA)
|
|
if (z = M.get("WEBGL_compressed_texture_etc"), z !== null) {
|
|
if (N === pA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ETC2 : z.COMPRESSED_RGB8_ETC2;
|
|
if (N === hA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : z.COMPRESSED_RGBA8_ETC2_EAC;
|
|
} else
|
|
return null;
|
|
if (N === YA || N === UA || N === QA || N === fA || N === mA || N === kA || N === SA || N === ZA || N === _A || N === bA || N === KA || N === RA || N === PA || N === FA)
|
|
if (z = M.get("WEBGL_compressed_texture_astc"), z !== null) {
|
|
if (N === YA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : z.COMPRESSED_RGBA_ASTC_4x4_KHR;
|
|
if (N === UA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : z.COMPRESSED_RGBA_ASTC_5x4_KHR;
|
|
if (N === QA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : z.COMPRESSED_RGBA_ASTC_5x5_KHR;
|
|
if (N === fA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : z.COMPRESSED_RGBA_ASTC_6x5_KHR;
|
|
if (N === mA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : z.COMPRESSED_RGBA_ASTC_6x6_KHR;
|
|
if (N === kA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : z.COMPRESSED_RGBA_ASTC_8x5_KHR;
|
|
if (N === SA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : z.COMPRESSED_RGBA_ASTC_8x6_KHR;
|
|
if (N === ZA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : z.COMPRESSED_RGBA_ASTC_8x8_KHR;
|
|
if (N === _A)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : z.COMPRESSED_RGBA_ASTC_10x5_KHR;
|
|
if (N === bA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : z.COMPRESSED_RGBA_ASTC_10x6_KHR;
|
|
if (N === KA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : z.COMPRESSED_RGBA_ASTC_10x8_KHR;
|
|
if (N === RA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : z.COMPRESSED_RGBA_ASTC_10x10_KHR;
|
|
if (N === PA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : z.COMPRESSED_RGBA_ASTC_12x10_KHR;
|
|
if (N === FA)
|
|
return A === HM ? z.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : z.COMPRESSED_RGBA_ASTC_12x12_KHR;
|
|
} else
|
|
return null;
|
|
if (N === BA)
|
|
if (z = M.get("EXT_texture_compression_bptc"), z !== null) {
|
|
if (N === BA)
|
|
return A === HM ? z.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : z.COMPRESSED_RGBA_BPTC_UNORM_EXT;
|
|
} else
|
|
return null;
|
|
if (N === De)
|
|
return t ? 34042 : (z = M.get("WEBGL_depth_texture"), z !== null ? z.UNSIGNED_INT_24_8_WEBGL : null);
|
|
}
|
|
return { convert: e };
|
|
}
|
|
class vi extends jD {
|
|
constructor(M = []) {
|
|
super(), this.cameras = M;
|
|
}
|
|
}
|
|
vi.prototype.isArrayCamera = !0;
|
|
class xt extends ZM {
|
|
constructor() {
|
|
super(), this.type = "Group";
|
|
}
|
|
}
|
|
xt.prototype.isGroup = !0;
|
|
const Ks = { type: "move" };
|
|
class En {
|
|
constructor() {
|
|
this._targetRay = null, this._grip = null, this._hand = null;
|
|
}
|
|
getHandSpace() {
|
|
return this._hand === null && (this._hand = new xt(), this._hand.matrixAutoUpdate = !1, this._hand.visible = !1, this._hand.joints = {}, this._hand.inputState = { pinching: !1 }), this._hand;
|
|
}
|
|
getTargetRaySpace() {
|
|
return this._targetRay === null && (this._targetRay = new xt(), this._targetRay.matrixAutoUpdate = !1, this._targetRay.visible = !1, this._targetRay.hasLinearVelocity = !1, this._targetRay.linearVelocity = new O(), this._targetRay.hasAngularVelocity = !1, this._targetRay.angularVelocity = new O()), this._targetRay;
|
|
}
|
|
getGripSpace() {
|
|
return this._grip === null && (this._grip = new xt(), this._grip.matrixAutoUpdate = !1, this._grip.visible = !1, this._grip.hasLinearVelocity = !1, this._grip.linearVelocity = new O(), this._grip.hasAngularVelocity = !1, this._grip.angularVelocity = new O()), this._grip;
|
|
}
|
|
dispatchEvent(M) {
|
|
return this._targetRay !== null && this._targetRay.dispatchEvent(M), this._grip !== null && this._grip.dispatchEvent(M), this._hand !== null && this._hand.dispatchEvent(M), this;
|
|
}
|
|
disconnect(M) {
|
|
return this.dispatchEvent({ type: "disconnected", data: M }), this._targetRay !== null && (this._targetRay.visible = !1), this._grip !== null && (this._grip.visible = !1), this._hand !== null && (this._hand.visible = !1), this;
|
|
}
|
|
update(M, D, t) {
|
|
let e = null, N = null, A = null;
|
|
const z = this._targetRay, I = this._grip, i = this._hand;
|
|
if (M && D.session.visibilityState !== "visible-blurred")
|
|
if (z !== null && (e = D.getPose(M.targetRaySpace, t), e !== null && (z.matrix.fromArray(e.transform.matrix), z.matrix.decompose(z.position, z.rotation, z.scale), e.linearVelocity ? (z.hasLinearVelocity = !0, z.linearVelocity.copy(e.linearVelocity)) : z.hasLinearVelocity = !1, e.angularVelocity ? (z.hasAngularVelocity = !0, z.angularVelocity.copy(e.angularVelocity)) : z.hasAngularVelocity = !1, this.dispatchEvent(Ks))), i && M.hand) {
|
|
A = !0;
|
|
for (const y of M.hand.values()) {
|
|
const a = D.getJointPose(y, t);
|
|
if (i.joints[y.jointName] === void 0) {
|
|
const r = new xt();
|
|
r.matrixAutoUpdate = !1, r.visible = !1, i.joints[y.jointName] = r, i.add(r);
|
|
}
|
|
const c = i.joints[y.jointName];
|
|
a !== null && (c.matrix.fromArray(a.transform.matrix), c.matrix.decompose(c.position, c.rotation, c.scale), c.jointRadius = a.radius), c.visible = a !== null;
|
|
}
|
|
const T = i.joints["index-finger-tip"], u = i.joints["thumb-tip"], g = T.position.distanceTo(u.position), s = 0.02, j = 5e-3;
|
|
i.inputState.pinching && g > s + j ? (i.inputState.pinching = !1, this.dispatchEvent({
|
|
type: "pinchend",
|
|
handedness: M.handedness,
|
|
target: this
|
|
})) : !i.inputState.pinching && g <= s - j && (i.inputState.pinching = !0, this.dispatchEvent({
|
|
type: "pinchstart",
|
|
handedness: M.handedness,
|
|
target: this
|
|
}));
|
|
} else
|
|
I !== null && M.gripSpace && (N = D.getPose(M.gripSpace, t), N !== null && (I.matrix.fromArray(N.transform.matrix), I.matrix.decompose(I.position, I.rotation, I.scale), N.linearVelocity ? (I.hasLinearVelocity = !0, I.linearVelocity.copy(N.linearVelocity)) : I.hasLinearVelocity = !1, N.angularVelocity ? (I.hasAngularVelocity = !0, I.angularVelocity.copy(N.angularVelocity)) : I.hasAngularVelocity = !1));
|
|
return z !== null && (z.visible = e !== null), I !== null && (I.visible = N !== null), i !== null && (i.visible = A !== null), this;
|
|
}
|
|
}
|
|
class Rn extends iD {
|
|
constructor(M, D, t, e, N, A, z, I, i, T) {
|
|
if (T = T !== void 0 ? T : Et, T !== Et && T !== ne)
|
|
throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");
|
|
t === void 0 && T === Et && (t = Ue), t === void 0 && T === ne && (t = De), super(null, e, N, A, z, I, T, t, i), this.image = { width: M, height: D }, this.magFilter = z !== void 0 ? z : ND, this.minFilter = I !== void 0 ? I : ND, this.flipY = !1, this.generateMipmaps = !1;
|
|
}
|
|
}
|
|
Rn.prototype.isDepthTexture = !0;
|
|
class Rs extends dt {
|
|
constructor(M, D) {
|
|
super();
|
|
const t = this;
|
|
let e = null, N = 1, A = null, z = "local-floor";
|
|
const I = M.extensions.has("WEBGL_multisampled_render_to_texture");
|
|
let i = null, T = null, u = null, g = null, s = !1, j = null;
|
|
const y = D.getContextAttributes();
|
|
let a = null, c = null;
|
|
const r = [], l = /* @__PURE__ */ new Map(), C = new jD();
|
|
C.layers.enable(1), C.viewport = new PM();
|
|
const E = new jD();
|
|
E.layers.enable(2), E.viewport = new PM();
|
|
const d = [C, E], p = new vi();
|
|
p.layers.enable(1), p.layers.enable(2);
|
|
let H = null, DM = null;
|
|
this.cameraAutoUpdate = !0, this.enabled = !1, this.isPresenting = !1, this.getController = function(Z) {
|
|
let V = r[Z];
|
|
return V === void 0 && (V = new En(), r[Z] = V), V.getTargetRaySpace();
|
|
}, this.getControllerGrip = function(Z) {
|
|
let V = r[Z];
|
|
return V === void 0 && (V = new En(), r[Z] = V), V.getGripSpace();
|
|
}, this.getHand = function(Z) {
|
|
let V = r[Z];
|
|
return V === void 0 && (V = new En(), r[Z] = V), V.getHandSpace();
|
|
};
|
|
function G(Z) {
|
|
const V = l.get(Z.inputSource);
|
|
V && V.dispatchEvent({ type: Z.type, data: Z.inputSource });
|
|
}
|
|
function o() {
|
|
l.forEach(function(Z, V) {
|
|
Z.disconnect(V);
|
|
}), l.clear(), H = null, DM = null, M.setRenderTarget(a), g = null, u = null, T = null, e = null, c = null, IM.stop(), t.isPresenting = !1, t.dispatchEvent({ type: "sessionend" });
|
|
}
|
|
this.setFramebufferScaleFactor = function(Z) {
|
|
N = Z, t.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.");
|
|
}, this.setReferenceSpaceType = function(Z) {
|
|
z = Z, t.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.");
|
|
}, this.getReferenceSpace = function() {
|
|
return A;
|
|
}, this.getBaseLayer = function() {
|
|
return u !== null ? u : g;
|
|
}, this.getBinding = function() {
|
|
return T;
|
|
}, this.getFrame = function() {
|
|
return j;
|
|
}, this.getSession = function() {
|
|
return e;
|
|
}, this.setSession = async function(Z) {
|
|
if (e = Z, e !== null) {
|
|
if (a = M.getRenderTarget(), e.addEventListener("select", G), e.addEventListener("selectstart", G), e.addEventListener("selectend", G), e.addEventListener("squeeze", G), e.addEventListener("squeezestart", G), e.addEventListener("squeezeend", G), e.addEventListener("end", o), e.addEventListener("inputsourceschange", h), y.xrCompatible !== !0 && await D.makeXRCompatible(), e.renderState.layers === void 0 || M.capabilities.isWebGL2 === !1) {
|
|
const V = {
|
|
antialias: e.renderState.layers === void 0 ? y.antialias : !0,
|
|
alpha: y.alpha,
|
|
depth: y.depth,
|
|
stencil: y.stencil,
|
|
framebufferScaleFactor: N
|
|
};
|
|
g = new XRWebGLLayer(e, D, V), e.updateRenderState({ baseLayer: g }), c = new dD(g.framebufferWidth, g.framebufferHeight, {
|
|
format: yD,
|
|
type: It,
|
|
encoding: M.outputEncoding
|
|
});
|
|
} else {
|
|
s = y.antialias;
|
|
let V = null, eM = null, uM = null;
|
|
y.depth && (uM = y.stencil ? 35056 : 33190, V = y.stencil ? ne : Et, eM = y.stencil ? De : Ue);
|
|
const jM = {
|
|
colorFormat: M.outputEncoding === HM ? 35907 : 32856,
|
|
depthFormat: uM,
|
|
scaleFactor: N
|
|
};
|
|
T = new XRWebGLBinding(e, D), u = T.createProjectionLayer(jM), e.updateRenderState({ layers: [u] }), s ? c = new Jn(u.textureWidth, u.textureHeight, {
|
|
format: yD,
|
|
type: It,
|
|
depthTexture: new Rn(u.textureWidth, u.textureHeight, eM, void 0, void 0, void 0, void 0, void 0, void 0, V),
|
|
stencilBuffer: y.stencil,
|
|
ignoreDepth: u.ignoreDepthValues,
|
|
useRenderToTexture: I,
|
|
encoding: M.outputEncoding
|
|
}) : c = new dD(u.textureWidth, u.textureHeight, {
|
|
format: yD,
|
|
type: It,
|
|
depthTexture: new Rn(u.textureWidth, u.textureHeight, eM, void 0, void 0, void 0, void 0, void 0, void 0, V),
|
|
stencilBuffer: y.stencil,
|
|
ignoreDepth: u.ignoreDepthValues,
|
|
encoding: M.outputEncoding
|
|
});
|
|
}
|
|
c.isXRRenderTarget = !0, this.setFoveation(1), A = await e.requestReferenceSpace(z), IM.setContext(e), IM.start(), t.isPresenting = !0, t.dispatchEvent({ type: "sessionstart" });
|
|
}
|
|
};
|
|
function h(Z) {
|
|
const V = e.inputSources;
|
|
for (let eM = 0; eM < r.length; eM++)
|
|
l.set(V[eM], r[eM]);
|
|
for (let eM = 0; eM < Z.removed.length; eM++) {
|
|
const uM = Z.removed[eM], jM = l.get(uM);
|
|
jM && (jM.dispatchEvent({ type: "disconnected", data: uM }), l.delete(uM));
|
|
}
|
|
for (let eM = 0; eM < Z.added.length; eM++) {
|
|
const uM = Z.added[eM], jM = l.get(uM);
|
|
jM && jM.dispatchEvent({ type: "connected", data: uM });
|
|
}
|
|
}
|
|
const Y = new O(), k = new O();
|
|
function f(Z, V, eM) {
|
|
Y.setFromMatrixPosition(V.matrixWorld), k.setFromMatrixPosition(eM.matrixWorld);
|
|
const uM = Y.distanceTo(k), jM = V.projectionMatrix.elements, _ = eM.projectionMatrix.elements, kM = jM[14] / (jM[10] - 1), rM = jM[14] / (jM[10] + 1), wM = (jM[9] + 1) / jM[5], zM = (jM[9] - 1) / jM[5], vM = (jM[8] - 1) / jM[0], OM = (_[8] + 1) / _[0], P = kM * vM, $ = kM * OM, X = uM / (-vM + OM), iM = X * -vM;
|
|
V.matrixWorld.decompose(Z.position, Z.quaternion, Z.scale), Z.translateX(iM), Z.translateZ(X), Z.matrixWorld.compose(Z.position, Z.quaternion, Z.scale), Z.matrixWorldInverse.copy(Z.matrixWorld).invert();
|
|
const nM = kM + X, CM = rM + X, xM = P - iM, QM = $ + (uM - iM), FM = wM * rM / CM * nM, RM = zM * rM / CM * nM;
|
|
Z.projectionMatrix.makePerspective(xM, QM, FM, RM, nM, CM);
|
|
}
|
|
function Q(Z, V) {
|
|
V === null ? Z.matrixWorld.copy(Z.matrix) : Z.matrixWorld.multiplyMatrices(V.matrixWorld, Z.matrix), Z.matrixWorldInverse.copy(Z.matrixWorld).invert();
|
|
}
|
|
this.updateCamera = function(Z) {
|
|
if (e === null)
|
|
return;
|
|
p.near = E.near = C.near = Z.near, p.far = E.far = C.far = Z.far, (H !== p.near || DM !== p.far) && (e.updateRenderState({
|
|
depthNear: p.near,
|
|
depthFar: p.far
|
|
}), H = p.near, DM = p.far);
|
|
const V = Z.parent, eM = p.cameras;
|
|
Q(p, V);
|
|
for (let jM = 0; jM < eM.length; jM++)
|
|
Q(eM[jM], V);
|
|
p.matrixWorld.decompose(p.position, p.quaternion, p.scale), Z.position.copy(p.position), Z.quaternion.copy(p.quaternion), Z.scale.copy(p.scale), Z.matrix.copy(p.matrix), Z.matrixWorld.copy(p.matrixWorld);
|
|
const uM = Z.children;
|
|
for (let jM = 0, _ = uM.length; jM < _; jM++)
|
|
uM[jM].updateMatrixWorld(!0);
|
|
eM.length === 2 ? f(p, C, E) : p.projectionMatrix.copy(C.projectionMatrix);
|
|
}, this.getCamera = function() {
|
|
return p;
|
|
}, this.getFoveation = function() {
|
|
if (u !== null)
|
|
return u.fixedFoveation;
|
|
if (g !== null)
|
|
return g.fixedFoveation;
|
|
}, this.setFoveation = function(Z) {
|
|
u !== null && (u.fixedFoveation = Z), g !== null && g.fixedFoveation !== void 0 && (g.fixedFoveation = Z);
|
|
};
|
|
let b = null;
|
|
function W(Z, V) {
|
|
if (i = V.getViewerPose(A), j = V, i !== null) {
|
|
const uM = i.views;
|
|
g !== null && (M.setRenderTargetFramebuffer(c, g.framebuffer), M.setRenderTarget(c));
|
|
let jM = !1;
|
|
uM.length !== p.cameras.length && (p.cameras.length = 0, jM = !0);
|
|
for (let _ = 0; _ < uM.length; _++) {
|
|
const kM = uM[_];
|
|
let rM = null;
|
|
if (g !== null)
|
|
rM = g.getViewport(kM);
|
|
else {
|
|
const zM = T.getViewSubImage(u, kM);
|
|
rM = zM.viewport, _ === 0 && (M.setRenderTargetTextures(c, zM.colorTexture, u.ignoreDepthValues ? void 0 : zM.depthStencilTexture), M.setRenderTarget(c));
|
|
}
|
|
const wM = d[_];
|
|
wM.matrix.fromArray(kM.transform.matrix), wM.projectionMatrix.fromArray(kM.projectionMatrix), wM.viewport.set(rM.x, rM.y, rM.width, rM.height), _ === 0 && p.matrix.copy(wM.matrix), jM === !0 && p.cameras.push(wM);
|
|
}
|
|
}
|
|
const eM = e.inputSources;
|
|
for (let uM = 0; uM < r.length; uM++) {
|
|
const jM = r[uM], _ = eM[uM];
|
|
jM.update(_, V, A);
|
|
}
|
|
b && b(Z, V), j = null;
|
|
}
|
|
const IM = new si();
|
|
IM.setAnimationLoop(W), this.setAnimationLoop = function(Z) {
|
|
b = Z;
|
|
}, this.dispose = function() {
|
|
};
|
|
}
|
|
}
|
|
function Ps(n) {
|
|
function M(c, r) {
|
|
c.fogColor.value.copy(r.color), r.isFog ? (c.fogNear.value = r.near, c.fogFar.value = r.far) : r.isFogExp2 && (c.fogDensity.value = r.density);
|
|
}
|
|
function D(c, r, l, C, E) {
|
|
r.isMeshBasicMaterial ? t(c, r) : r.isMeshLambertMaterial ? (t(c, r), I(c, r)) : r.isMeshToonMaterial ? (t(c, r), T(c, r)) : r.isMeshPhongMaterial ? (t(c, r), i(c, r)) : r.isMeshStandardMaterial ? (t(c, r), r.isMeshPhysicalMaterial ? g(c, r, E) : u(c, r)) : r.isMeshMatcapMaterial ? (t(c, r), s(c, r)) : r.isMeshDepthMaterial ? (t(c, r), j(c, r)) : r.isMeshDistanceMaterial ? (t(c, r), y(c, r)) : r.isMeshNormalMaterial ? (t(c, r), a(c, r)) : r.isLineBasicMaterial ? (e(c, r), r.isLineDashedMaterial && N(c, r)) : r.isPointsMaterial ? A(c, r, l, C) : r.isSpriteMaterial ? z(c, r) : r.isShadowMaterial ? (c.color.value.copy(r.color), c.opacity.value = r.opacity) : r.isShaderMaterial && (r.uniformsNeedUpdate = !1);
|
|
}
|
|
function t(c, r) {
|
|
c.opacity.value = r.opacity, r.color && c.diffuse.value.copy(r.color), r.emissive && c.emissive.value.copy(r.emissive).multiplyScalar(r.emissiveIntensity), r.map && (c.map.value = r.map), r.alphaMap && (c.alphaMap.value = r.alphaMap), r.specularMap && (c.specularMap.value = r.specularMap), r.alphaTest > 0 && (c.alphaTest.value = r.alphaTest);
|
|
const l = n.get(r).envMap;
|
|
l && (c.envMap.value = l, c.flipEnvMap.value = l.isCubeTexture && l.isRenderTargetTexture === !1 ? -1 : 1, c.reflectivity.value = r.reflectivity, c.ior.value = r.ior, c.refractionRatio.value = r.refractionRatio), r.lightMap && (c.lightMap.value = r.lightMap, c.lightMapIntensity.value = r.lightMapIntensity), r.aoMap && (c.aoMap.value = r.aoMap, c.aoMapIntensity.value = r.aoMapIntensity);
|
|
let C;
|
|
r.map ? C = r.map : r.specularMap ? C = r.specularMap : r.displacementMap ? C = r.displacementMap : r.normalMap ? C = r.normalMap : r.bumpMap ? C = r.bumpMap : r.roughnessMap ? C = r.roughnessMap : r.metalnessMap ? C = r.metalnessMap : r.alphaMap ? C = r.alphaMap : r.emissiveMap ? C = r.emissiveMap : r.clearcoatMap ? C = r.clearcoatMap : r.clearcoatNormalMap ? C = r.clearcoatNormalMap : r.clearcoatRoughnessMap ? C = r.clearcoatRoughnessMap : r.specularIntensityMap ? C = r.specularIntensityMap : r.specularColorMap ? C = r.specularColorMap : r.transmissionMap ? C = r.transmissionMap : r.thicknessMap ? C = r.thicknessMap : r.sheenColorMap ? C = r.sheenColorMap : r.sheenRoughnessMap && (C = r.sheenRoughnessMap), C !== void 0 && (C.isWebGLRenderTarget && (C = C.texture), C.matrixAutoUpdate === !0 && C.updateMatrix(), c.uvTransform.value.copy(C.matrix));
|
|
let E;
|
|
r.aoMap ? E = r.aoMap : r.lightMap && (E = r.lightMap), E !== void 0 && (E.isWebGLRenderTarget && (E = E.texture), E.matrixAutoUpdate === !0 && E.updateMatrix(), c.uv2Transform.value.copy(E.matrix));
|
|
}
|
|
function e(c, r) {
|
|
c.diffuse.value.copy(r.color), c.opacity.value = r.opacity;
|
|
}
|
|
function N(c, r) {
|
|
c.dashSize.value = r.dashSize, c.totalSize.value = r.dashSize + r.gapSize, c.scale.value = r.scale;
|
|
}
|
|
function A(c, r, l, C) {
|
|
c.diffuse.value.copy(r.color), c.opacity.value = r.opacity, c.size.value = r.size * l, c.scale.value = C * 0.5, r.map && (c.map.value = r.map), r.alphaMap && (c.alphaMap.value = r.alphaMap), r.alphaTest > 0 && (c.alphaTest.value = r.alphaTest);
|
|
let E;
|
|
r.map ? E = r.map : r.alphaMap && (E = r.alphaMap), E !== void 0 && (E.matrixAutoUpdate === !0 && E.updateMatrix(), c.uvTransform.value.copy(E.matrix));
|
|
}
|
|
function z(c, r) {
|
|
c.diffuse.value.copy(r.color), c.opacity.value = r.opacity, c.rotation.value = r.rotation, r.map && (c.map.value = r.map), r.alphaMap && (c.alphaMap.value = r.alphaMap), r.alphaTest > 0 && (c.alphaTest.value = r.alphaTest);
|
|
let l;
|
|
r.map ? l = r.map : r.alphaMap && (l = r.alphaMap), l !== void 0 && (l.matrixAutoUpdate === !0 && l.updateMatrix(), c.uvTransform.value.copy(l.matrix));
|
|
}
|
|
function I(c, r) {
|
|
r.emissiveMap && (c.emissiveMap.value = r.emissiveMap);
|
|
}
|
|
function i(c, r) {
|
|
c.specular.value.copy(r.specular), c.shininess.value = Math.max(r.shininess, 1e-4), r.emissiveMap && (c.emissiveMap.value = r.emissiveMap), r.bumpMap && (c.bumpMap.value = r.bumpMap, c.bumpScale.value = r.bumpScale, r.side === eD && (c.bumpScale.value *= -1)), r.normalMap && (c.normalMap.value = r.normalMap, c.normalScale.value.copy(r.normalScale), r.side === eD && c.normalScale.value.negate()), r.displacementMap && (c.displacementMap.value = r.displacementMap, c.displacementScale.value = r.displacementScale, c.displacementBias.value = r.displacementBias);
|
|
}
|
|
function T(c, r) {
|
|
r.gradientMap && (c.gradientMap.value = r.gradientMap), r.emissiveMap && (c.emissiveMap.value = r.emissiveMap), r.bumpMap && (c.bumpMap.value = r.bumpMap, c.bumpScale.value = r.bumpScale, r.side === eD && (c.bumpScale.value *= -1)), r.normalMap && (c.normalMap.value = r.normalMap, c.normalScale.value.copy(r.normalScale), r.side === eD && c.normalScale.value.negate()), r.displacementMap && (c.displacementMap.value = r.displacementMap, c.displacementScale.value = r.displacementScale, c.displacementBias.value = r.displacementBias);
|
|
}
|
|
function u(c, r) {
|
|
c.roughness.value = r.roughness, c.metalness.value = r.metalness, r.roughnessMap && (c.roughnessMap.value = r.roughnessMap), r.metalnessMap && (c.metalnessMap.value = r.metalnessMap), r.emissiveMap && (c.emissiveMap.value = r.emissiveMap), r.bumpMap && (c.bumpMap.value = r.bumpMap, c.bumpScale.value = r.bumpScale, r.side === eD && (c.bumpScale.value *= -1)), r.normalMap && (c.normalMap.value = r.normalMap, c.normalScale.value.copy(r.normalScale), r.side === eD && c.normalScale.value.negate()), r.displacementMap && (c.displacementMap.value = r.displacementMap, c.displacementScale.value = r.displacementScale, c.displacementBias.value = r.displacementBias), n.get(r).envMap && (c.envMapIntensity.value = r.envMapIntensity);
|
|
}
|
|
function g(c, r, l) {
|
|
u(c, r), c.ior.value = r.ior, r.sheen > 0 && (c.sheenColor.value.copy(r.sheenColor).multiplyScalar(r.sheen), c.sheenRoughness.value = r.sheenRoughness, r.sheenColorMap && (c.sheenColorMap.value = r.sheenColorMap), r.sheenRoughnessMap && (c.sheenRoughnessMap.value = r.sheenRoughnessMap)), r.clearcoat > 0 && (c.clearcoat.value = r.clearcoat, c.clearcoatRoughness.value = r.clearcoatRoughness, r.clearcoatMap && (c.clearcoatMap.value = r.clearcoatMap), r.clearcoatRoughnessMap && (c.clearcoatRoughnessMap.value = r.clearcoatRoughnessMap), r.clearcoatNormalMap && (c.clearcoatNormalScale.value.copy(r.clearcoatNormalScale), c.clearcoatNormalMap.value = r.clearcoatNormalMap, r.side === eD && c.clearcoatNormalScale.value.negate())), r.transmission > 0 && (c.transmission.value = r.transmission, c.transmissionSamplerMap.value = l.texture, c.transmissionSamplerSize.value.set(l.width, l.height), r.transmissionMap && (c.transmissionMap.value = r.transmissionMap), c.thickness.value = r.thickness, r.thicknessMap && (c.thicknessMap.value = r.thicknessMap), c.attenuationDistance.value = r.attenuationDistance, c.attenuationColor.value.copy(r.attenuationColor)), c.specularIntensity.value = r.specularIntensity, c.specularColor.value.copy(r.specularColor), r.specularIntensityMap && (c.specularIntensityMap.value = r.specularIntensityMap), r.specularColorMap && (c.specularColorMap.value = r.specularColorMap);
|
|
}
|
|
function s(c, r) {
|
|
r.matcap && (c.matcap.value = r.matcap), r.bumpMap && (c.bumpMap.value = r.bumpMap, c.bumpScale.value = r.bumpScale, r.side === eD && (c.bumpScale.value *= -1)), r.normalMap && (c.normalMap.value = r.normalMap, c.normalScale.value.copy(r.normalScale), r.side === eD && c.normalScale.value.negate()), r.displacementMap && (c.displacementMap.value = r.displacementMap, c.displacementScale.value = r.displacementScale, c.displacementBias.value = r.displacementBias);
|
|
}
|
|
function j(c, r) {
|
|
r.displacementMap && (c.displacementMap.value = r.displacementMap, c.displacementScale.value = r.displacementScale, c.displacementBias.value = r.displacementBias);
|
|
}
|
|
function y(c, r) {
|
|
r.displacementMap && (c.displacementMap.value = r.displacementMap, c.displacementScale.value = r.displacementScale, c.displacementBias.value = r.displacementBias), c.referencePosition.value.copy(r.referencePosition), c.nearDistance.value = r.nearDistance, c.farDistance.value = r.farDistance;
|
|
}
|
|
function a(c, r) {
|
|
r.bumpMap && (c.bumpMap.value = r.bumpMap, c.bumpScale.value = r.bumpScale, r.side === eD && (c.bumpScale.value *= -1)), r.normalMap && (c.normalMap.value = r.normalMap, c.normalScale.value.copy(r.normalScale), r.side === eD && c.normalScale.value.negate()), r.displacementMap && (c.displacementMap.value = r.displacementMap, c.displacementScale.value = r.displacementScale, c.displacementBias.value = r.displacementBias);
|
|
}
|
|
return {
|
|
refreshFogUniforms: M,
|
|
refreshMaterialUniforms: D
|
|
};
|
|
}
|
|
function Fs() {
|
|
const n = fe("canvas");
|
|
return n.style.display = "block", n;
|
|
}
|
|
function KM(n = {}) {
|
|
const M = n.canvas !== void 0 ? n.canvas : Fs(), D = n.context !== void 0 ? n.context : null, t = n.alpha !== void 0 ? n.alpha : !1, e = n.depth !== void 0 ? n.depth : !0, N = n.stencil !== void 0 ? n.stencil : !0, A = n.antialias !== void 0 ? n.antialias : !1, z = n.premultipliedAlpha !== void 0 ? n.premultipliedAlpha : !0, I = n.preserveDrawingBuffer !== void 0 ? n.preserveDrawingBuffer : !1, i = n.powerPreference !== void 0 ? n.powerPreference : "default", T = n.failIfMajorPerformanceCaveat !== void 0 ? n.failIfMajorPerformanceCaveat : !1;
|
|
let u = null, g = null;
|
|
const s = [], j = [];
|
|
this.domElement = M, this.debug = {
|
|
checkShaderErrors: !0
|
|
}, this.autoClear = !0, this.autoClearColor = !0, this.autoClearDepth = !0, this.autoClearStencil = !0, this.sortObjects = !0, this.clippingPlanes = [], this.localClippingEnabled = !1, this.outputEncoding = st, this.physicallyCorrectLights = !1, this.toneMapping = it, this.toneMappingExposure = 1;
|
|
const y = this;
|
|
let a = !1, c = 0, r = 0, l = null, C = -1, E = null;
|
|
const d = new PM(), p = new PM();
|
|
let H = null, DM = M.width, G = M.height, o = 1, h = null, Y = null;
|
|
const k = new PM(0, 0, DM, G), f = new PM(0, 0, DM, G);
|
|
let Q = !1;
|
|
const b = new ZN();
|
|
let W = !1, IM = !1, Z = null;
|
|
const V = new aM(), eM = new O(), uM = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: !0 };
|
|
function jM() {
|
|
return l === null ? o : 1;
|
|
}
|
|
let _ = D;
|
|
function kM(w, U) {
|
|
for (let S = 0; S < w.length; S++) {
|
|
const m = w[S], B = M.getContext(m, U);
|
|
if (B !== null)
|
|
return B;
|
|
}
|
|
return null;
|
|
}
|
|
try {
|
|
const w = {
|
|
alpha: !0,
|
|
depth: e,
|
|
stencil: N,
|
|
antialias: A,
|
|
premultipliedAlpha: z,
|
|
preserveDrawingBuffer: I,
|
|
powerPreference: i,
|
|
failIfMajorPerformanceCaveat: T
|
|
};
|
|
if ("setAttribute" in M && M.setAttribute("data-engine", `three.js r${Wn}`), M.addEventListener("webglcontextlost", lM, !1), M.addEventListener("webglcontextrestored", v, !1), _ === null) {
|
|
const U = ["webgl2", "webgl", "experimental-webgl"];
|
|
if (y.isWebGL1Renderer === !0 && U.shift(), _ = kM(U, w), _ === null)
|
|
throw kM(U) ? new Error("Error creating WebGL context with your selected attributes.") : new Error("Error creating WebGL context.");
|
|
}
|
|
_.getShaderPrecisionFormat === void 0 && (_.getShaderPrecisionFormat = function() {
|
|
return { rangeMin: 1, rangeMax: 1, precision: 1 };
|
|
});
|
|
} catch (w) {
|
|
throw console.error("THREE.WebGLRenderer: " + w.message), w;
|
|
}
|
|
let rM, wM, zM, vM, OM, P, $, X, iM, nM, CM, xM, QM, FM, RM, x, L, R, J, gM, K, yM, sM;
|
|
function NM() {
|
|
rM = new Ir(_), wM = new er(_, rM, n), rM.init(wM), yM = new bs(_, rM, wM), zM = new Zs(_, rM, wM), vM = new gr(), OM = new ds(), P = new _s(_, rM, zM, OM, wM, yM, vM), $ = new nr(y), X = new ir(y), iM = new dT(_, wM), sM = new Dr(_, rM, iM, wM), nM = new Tr(_, iM, vM, sM), CM = new jr(_, nM, iM, vM), J = new cr(_, wM, P), x = new Nr(OM), xM = new ls(y, $, X, rM, wM, sM, x), QM = new Ps(OM), FM = new ps(), RM = new ms(rM, wM), R = new Mr(y, $, zM, CM, t, z), L = new di(y, CM, wM), gM = new tr(_, rM, vM, wM), K = new ur(_, rM, vM, wM), vM.programs = xM.programs, y.capabilities = wM, y.extensions = rM, y.properties = OM, y.renderLists = FM, y.shadowMap = L, y.state = zM, y.info = vM;
|
|
}
|
|
NM();
|
|
const tM = new Rs(y, _);
|
|
this.xr = tM, this.getContext = function() {
|
|
return _;
|
|
}, this.getContextAttributes = function() {
|
|
return _.getContextAttributes();
|
|
}, this.forceContextLoss = function() {
|
|
const w = rM.get("WEBGL_lose_context");
|
|
w && w.loseContext();
|
|
}, this.forceContextRestore = function() {
|
|
const w = rM.get("WEBGL_lose_context");
|
|
w && w.restoreContext();
|
|
}, this.getPixelRatio = function() {
|
|
return o;
|
|
}, this.setPixelRatio = function(w) {
|
|
w !== void 0 && (o = w, this.setSize(DM, G, !1));
|
|
}, this.getSize = function(w) {
|
|
return w.set(DM, G);
|
|
}, this.setSize = function(w, U, S) {
|
|
if (tM.isPresenting) {
|
|
console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");
|
|
return;
|
|
}
|
|
DM = w, G = U, M.width = Math.floor(w * o), M.height = Math.floor(U * o), S !== !1 && (M.style.width = w + "px", M.style.height = U + "px"), this.setViewport(0, 0, w, U);
|
|
}, this.getDrawingBufferSize = function(w) {
|
|
return w.set(DM * o, G * o).floor();
|
|
}, this.setDrawingBufferSize = function(w, U, S) {
|
|
DM = w, G = U, o = S, M.width = Math.floor(w * S), M.height = Math.floor(U * S), this.setViewport(0, 0, w, U);
|
|
}, this.getCurrentViewport = function(w) {
|
|
return w.copy(d);
|
|
}, this.getViewport = function(w) {
|
|
return w.copy(k);
|
|
}, this.setViewport = function(w, U, S, m) {
|
|
w.isVector4 ? k.set(w.x, w.y, w.z, w.w) : k.set(w, U, S, m), zM.viewport(d.copy(k).multiplyScalar(o).floor());
|
|
}, this.getScissor = function(w) {
|
|
return w.copy(f);
|
|
}, this.setScissor = function(w, U, S, m) {
|
|
w.isVector4 ? f.set(w.x, w.y, w.z, w.w) : f.set(w, U, S, m), zM.scissor(p.copy(f).multiplyScalar(o).floor());
|
|
}, this.getScissorTest = function() {
|
|
return Q;
|
|
}, this.setScissorTest = function(w) {
|
|
zM.setScissorTest(Q = w);
|
|
}, this.setOpaqueSort = function(w) {
|
|
h = w;
|
|
}, this.setTransparentSort = function(w) {
|
|
Y = w;
|
|
}, this.getClearColor = function(w) {
|
|
return w.copy(R.getClearColor());
|
|
}, this.setClearColor = function() {
|
|
R.setClearColor.apply(R, arguments);
|
|
}, this.getClearAlpha = function() {
|
|
return R.getClearAlpha();
|
|
}, this.setClearAlpha = function() {
|
|
R.setClearAlpha.apply(R, arguments);
|
|
}, this.clear = function(w, U, S) {
|
|
let m = 0;
|
|
(w === void 0 || w) && (m |= 16384), (U === void 0 || U) && (m |= 256), (S === void 0 || S) && (m |= 1024), _.clear(m);
|
|
}, this.clearColor = function() {
|
|
this.clear(!0, !1, !1);
|
|
}, this.clearDepth = function() {
|
|
this.clear(!1, !0, !1);
|
|
}, this.clearStencil = function() {
|
|
this.clear(!1, !1, !0);
|
|
}, this.dispose = function() {
|
|
M.removeEventListener("webglcontextlost", lM, !1), M.removeEventListener("webglcontextrestored", v, !1), FM.dispose(), RM.dispose(), OM.dispose(), $.dispose(), X.dispose(), CM.dispose(), sM.dispose(), xM.dispose(), tM.dispose(), tM.removeEventListener("sessionstart", UM), tM.removeEventListener("sessionend", qM), Z && (Z.dispose(), Z = null), CD.stop();
|
|
};
|
|
function lM(w) {
|
|
w.preventDefault(), console.log("THREE.WebGLRenderer: Context Lost."), a = !0;
|
|
}
|
|
function v() {
|
|
console.log("THREE.WebGLRenderer: Context Restored."), a = !1;
|
|
const w = vM.autoReset, U = L.enabled, S = L.autoUpdate, m = L.needsUpdate, B = L.type;
|
|
NM(), vM.autoReset = w, L.enabled = U, L.autoUpdate = S, L.needsUpdate = m, L.type = B;
|
|
}
|
|
function TM(w) {
|
|
const U = w.target;
|
|
U.removeEventListener("dispose", TM), AM(U);
|
|
}
|
|
function AM(w) {
|
|
LM(w), OM.remove(w);
|
|
}
|
|
function LM(w) {
|
|
const U = OM.get(w).programs;
|
|
U !== void 0 && (U.forEach(function(S) {
|
|
xM.releaseProgram(S);
|
|
}), w.isShaderMaterial && xM.releaseShaderCache(w));
|
|
}
|
|
this.renderBufferDirect = function(w, U, S, m, B, EM) {
|
|
U === null && (U = uM);
|
|
const dM = B.isMesh && B.matrixWorld.determinant() < 0, hM = DI(w, U, S, m, B);
|
|
zM.setMaterial(m, dM);
|
|
let pM = S.index;
|
|
const _M = S.attributes.position;
|
|
if (pM === null) {
|
|
if (_M === void 0 || _M.count === 0)
|
|
return;
|
|
} else if (pM.count === 0)
|
|
return;
|
|
let fM = 1;
|
|
m.wireframe === !0 && (pM = nM.getWireframeAttribute(S), fM = 2), sM.setup(B, m, hM, S, pM);
|
|
let mM, $M = gM;
|
|
pM !== null && (mM = iM.get(pM), $M = K, $M.setIndex(mM));
|
|
const ot = pM !== null ? pM.count : _M.count, pt = S.drawRange.start * fM, SM = S.drawRange.count * fM, mD = EM !== null ? EM.start * fM : 0, tD = EM !== null ? EM.count * fM : 1 / 0, kD = Math.max(pt, mD), Ve = Math.min(ot, pt + SM, mD + tD) - 1, SD = Math.max(0, Ve - kD + 1);
|
|
if (SD !== 0) {
|
|
if (B.isMesh)
|
|
m.wireframe === !0 ? (zM.setLineWidth(m.wireframeLinewidth * jM()), $M.setMode(1)) : $M.setMode(4);
|
|
else if (B.isLine) {
|
|
let FD = m.linewidth;
|
|
FD === void 0 && (FD = 1), zM.setLineWidth(FD * jM()), B.isLineSegments ? $M.setMode(1) : B.isLineLoop ? $M.setMode(2) : $M.setMode(3);
|
|
} else
|
|
B.isPoints ? $M.setMode(0) : B.isSprite && $M.setMode(4);
|
|
if (B.isInstancedMesh)
|
|
$M.renderInstances(kD, SD, B.count);
|
|
else if (S.isInstancedBufferGeometry) {
|
|
const FD = Math.min(S.instanceCount, S._maxInstanceCount);
|
|
$M.renderInstances(kD, SD, FD);
|
|
} else
|
|
$M.render(kD, SD);
|
|
}
|
|
}, this.compile = function(w, U) {
|
|
g = RM.get(w), g.init(), j.push(g), w.traverseVisible(function(S) {
|
|
S.isLight && S.layers.test(U.layers) && (g.pushLight(S), S.castShadow && g.pushShadow(S));
|
|
}), g.setupLights(y.physicallyCorrectLights), w.traverse(function(S) {
|
|
const m = S.material;
|
|
if (m)
|
|
if (Array.isArray(m))
|
|
for (let B = 0; B < m.length; B++) {
|
|
const EM = m[B];
|
|
BN(EM, w, S);
|
|
}
|
|
else
|
|
BN(m, w, S);
|
|
}), j.pop(), g = null;
|
|
};
|
|
let F = null;
|
|
function oM(w) {
|
|
F && F(w);
|
|
}
|
|
function UM() {
|
|
CD.stop();
|
|
}
|
|
function qM() {
|
|
CD.start();
|
|
}
|
|
const CD = new si();
|
|
CD.setAnimationLoop(oM), typeof window < "u" && CD.setContext(window), this.setAnimationLoop = function(w) {
|
|
F = w, tM.setAnimationLoop(w), w === null ? CD.stop() : CD.start();
|
|
}, tM.addEventListener("sessionstart", UM), tM.addEventListener("sessionend", qM), this.render = function(w, U) {
|
|
if (U !== void 0 && U.isCamera !== !0) {
|
|
console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");
|
|
return;
|
|
}
|
|
if (a === !0)
|
|
return;
|
|
w.autoUpdate === !0 && w.updateMatrixWorld(), U.parent === null && U.updateMatrixWorld(), tM.enabled === !0 && tM.isPresenting === !0 && (tM.cameraAutoUpdate === !0 && tM.updateCamera(U), U = tM.getCamera()), w.isScene === !0 && w.onBeforeRender(y, w, U, l), g = RM.get(w, j.length), g.init(), j.push(g), V.multiplyMatrices(U.projectionMatrix, U.matrixWorldInverse), b.setFromProjectionMatrix(V), IM = this.localClippingEnabled, W = x.init(this.clippingPlanes, IM, U), u = FM.get(w, s.length), u.init(), s.push(u), JM(w, U, 0, y.sortObjects), u.finish(), y.sortObjects === !0 && u.sort(h, Y), W === !0 && x.beginShadows();
|
|
const S = g.state.shadowsArray;
|
|
if (L.render(S, w, U), W === !0 && x.endShadows(), this.info.autoReset === !0 && this.info.reset(), R.render(u, w), g.setupLights(y.physicallyCorrectLights), U.isArrayCamera) {
|
|
const m = U.cameras;
|
|
for (let B = 0, EM = m.length; B < EM; B++) {
|
|
const dM = m[B];
|
|
fD(u, w, dM, dM.viewport);
|
|
}
|
|
} else
|
|
fD(u, w, U);
|
|
l !== null && (P.updateMultisampleRenderTarget(l), P.updateRenderTargetMipmap(l)), w.isScene === !0 && w.onAfterRender(y, w, U), zM.buffers.depth.setTest(!0), zM.buffers.depth.setMask(!0), zM.buffers.color.setMask(!0), zM.setPolygonOffset(!1), sM.resetDefaultState(), C = -1, E = null, j.pop(), j.length > 0 ? g = j[j.length - 1] : g = null, s.pop(), s.length > 0 ? u = s[s.length - 1] : u = null;
|
|
};
|
|
function JM(w, U, S, m) {
|
|
if (w.visible === !1)
|
|
return;
|
|
if (w.layers.test(U.layers)) {
|
|
if (w.isGroup)
|
|
S = w.renderOrder;
|
|
else if (w.isLOD)
|
|
w.autoUpdate === !0 && w.update(U);
|
|
else if (w.isLight)
|
|
g.pushLight(w), w.castShadow && g.pushShadow(w);
|
|
else if (w.isSprite) {
|
|
if (!w.frustumCulled || b.intersectsSprite(w)) {
|
|
m && eM.setFromMatrixPosition(w.matrixWorld).applyMatrix4(V);
|
|
const dM = CM.update(w), hM = w.material;
|
|
hM.visible && u.push(w, dM, hM, S, eM.z, null);
|
|
}
|
|
} else if ((w.isMesh || w.isLine || w.isPoints) && (w.isSkinnedMesh && w.skeleton.frame !== vM.render.frame && (w.skeleton.update(), w.skeleton.frame = vM.render.frame), !w.frustumCulled || b.intersectsObject(w))) {
|
|
m && eM.setFromMatrixPosition(w.matrixWorld).applyMatrix4(V);
|
|
const dM = CM.update(w), hM = w.material;
|
|
if (Array.isArray(hM)) {
|
|
const pM = dM.groups;
|
|
for (let _M = 0, fM = pM.length; _M < fM; _M++) {
|
|
const mM = pM[_M], $M = hM[mM.materialIndex];
|
|
$M && $M.visible && u.push(w, dM, $M, S, eM.z, mM);
|
|
}
|
|
} else
|
|
hM.visible && u.push(w, dM, hM, S, eM.z, null);
|
|
}
|
|
}
|
|
const EM = w.children;
|
|
for (let dM = 0, hM = EM.length; dM < hM; dM++)
|
|
JM(EM[dM], U, S, m);
|
|
}
|
|
function fD(w, U, S, m) {
|
|
const B = w.opaque, EM = w.transmissive, dM = w.transparent;
|
|
g.setupLightsView(S), EM.length > 0 && PD(B, U, S), m && zM.viewport(d.copy(m)), B.length > 0 && Be(B, U, S), EM.length > 0 && Be(EM, U, S), dM.length > 0 && Be(dM, U, S);
|
|
}
|
|
function PD(w, U, S) {
|
|
if (Z === null) {
|
|
const dM = A === !0 && wM.isWebGL2 === !0 ? Jn : dD;
|
|
Z = new dM(1024, 1024, {
|
|
generateMipmaps: !0,
|
|
type: yM.convert(Me) !== null ? Me : It,
|
|
minFilter: kN,
|
|
magFilter: ND,
|
|
wrapS: xD,
|
|
wrapT: xD,
|
|
useRenderToTexture: rM.has("WEBGL_multisampled_render_to_texture")
|
|
});
|
|
}
|
|
const m = y.getRenderTarget();
|
|
y.setRenderTarget(Z), y.clear();
|
|
const B = y.toneMapping;
|
|
y.toneMapping = it, Be(w, U, S), y.toneMapping = B, P.updateMultisampleRenderTarget(Z), P.updateRenderTargetMipmap(Z), y.setRenderTarget(m);
|
|
}
|
|
function Be(w, U, S) {
|
|
const m = U.isScene === !0 ? U.overrideMaterial : null;
|
|
for (let B = 0, EM = w.length; B < EM; B++) {
|
|
const dM = w[B], hM = dM.object, pM = dM.geometry, _M = m === null ? dM.material : m, fM = dM.group;
|
|
hM.layers.test(S.layers) && MI(hM, U, S, pM, _M, fM);
|
|
}
|
|
}
|
|
function MI(w, U, S, m, B, EM) {
|
|
w.onBeforeRender(y, U, S, m, B, EM), w.modelViewMatrix.multiplyMatrices(S.matrixWorldInverse, w.matrixWorld), w.normalMatrix.getNormalMatrix(w.modelViewMatrix), B.onBeforeRender(y, U, S, m, w, EM), B.transparent === !0 && B.side === Ne ? (B.side = eD, B.needsUpdate = !0, y.renderBufferDirect(S, U, m, B, w, EM), B.side = Ye, B.needsUpdate = !0, y.renderBufferDirect(S, U, m, B, w, EM), B.side = Ne) : y.renderBufferDirect(S, U, m, B, w, EM), w.onAfterRender(y, U, S, m, B, EM);
|
|
}
|
|
function BN(w, U, S) {
|
|
U.isScene !== !0 && (U = uM);
|
|
const m = OM.get(w), B = g.state.lights, EM = g.state.shadowsArray, dM = B.state.version, hM = xM.getParameters(w, B.state, EM, U, S), pM = xM.getProgramCacheKey(hM);
|
|
let _M = m.programs;
|
|
m.environment = w.isMeshStandardMaterial ? U.environment : null, m.fog = U.fog, m.envMap = (w.isMeshStandardMaterial ? X : $).get(w.envMap || m.environment), _M === void 0 && (w.addEventListener("dispose", TM), _M = /* @__PURE__ */ new Map(), m.programs = _M);
|
|
let fM = _M.get(pM);
|
|
if (fM !== void 0) {
|
|
if (m.currentProgram === fM && m.lightsStateVersion === dM)
|
|
return jA(w, hM), fM;
|
|
} else
|
|
hM.uniforms = xM.getUniforms(w), w.onBuild(S, hM, y), w.onBeforeCompile(hM, y), fM = xM.acquireProgram(hM, pM), _M.set(pM, fM), m.uniforms = hM.uniforms;
|
|
const mM = m.uniforms;
|
|
(!w.isShaderMaterial && !w.isRawShaderMaterial || w.clipping === !0) && (mM.clippingPlanes = x.uniform), jA(w, hM), m.needsLights = eI(w), m.lightsStateVersion = dM, m.needsLights && (mM.ambientLightColor.value = B.state.ambient, mM.lightProbe.value = B.state.probe, mM.directionalLights.value = B.state.directional, mM.directionalLightShadows.value = B.state.directionalShadow, mM.spotLights.value = B.state.spot, mM.spotLightShadows.value = B.state.spotShadow, mM.rectAreaLights.value = B.state.rectArea, mM.ltc_1.value = B.state.rectAreaLTC1, mM.ltc_2.value = B.state.rectAreaLTC2, mM.pointLights.value = B.state.point, mM.pointLightShadows.value = B.state.pointShadow, mM.hemisphereLights.value = B.state.hemi, mM.directionalShadowMap.value = B.state.directionalShadowMap, mM.directionalShadowMatrix.value = B.state.directionalShadowMatrix, mM.spotShadowMap.value = B.state.spotShadowMap, mM.spotShadowMatrix.value = B.state.spotShadowMatrix, mM.pointShadowMap.value = B.state.pointShadowMap, mM.pointShadowMatrix.value = B.state.pointShadowMatrix);
|
|
const $M = fM.getUniforms(), ot = ut.seqWithValue($M.seq, mM);
|
|
return m.currentProgram = fM, m.uniformsList = ot, fM;
|
|
}
|
|
function jA(w, U) {
|
|
const S = OM.get(w);
|
|
S.outputEncoding = U.outputEncoding, S.instancing = U.instancing, S.skinning = U.skinning, S.morphTargets = U.morphTargets, S.morphNormals = U.morphNormals, S.morphTargetsCount = U.morphTargetsCount, S.numClippingPlanes = U.numClippingPlanes, S.numIntersection = U.numClipIntersection, S.vertexAlphas = U.vertexAlphas, S.vertexTangents = U.vertexTangents, S.toneMapping = U.toneMapping;
|
|
}
|
|
function DI(w, U, S, m, B) {
|
|
U.isScene !== !0 && (U = uM), P.resetTextureUnits();
|
|
const EM = U.fog, dM = m.isMeshStandardMaterial ? U.environment : null, hM = l === null ? y.outputEncoding : l.isXRRenderTarget === !0 ? l.texture.encoding : st, pM = (m.isMeshStandardMaterial ? X : $).get(m.envMap || dM), _M = m.vertexColors === !0 && !!S.attributes.color && S.attributes.color.itemSize === 4, fM = !!m.normalMap && !!S.attributes.tangent, mM = !!S.morphAttributes.position, $M = !!S.morphAttributes.normal, ot = S.morphAttributes.position ? S.morphAttributes.position.length : 0, pt = m.toneMapped ? y.toneMapping : it, SM = OM.get(m), mD = g.state.lights;
|
|
if (W === !0 && (IM === !0 || w !== E)) {
|
|
const hD = w === E && m.id === C;
|
|
x.setState(m, w, hD);
|
|
}
|
|
let tD = !1;
|
|
m.version === SM.__version ? (SM.needsLights && SM.lightsStateVersion !== mD.state.version || SM.outputEncoding !== hM || B.isInstancedMesh && SM.instancing === !1 || !B.isInstancedMesh && SM.instancing === !0 || B.isSkinnedMesh && SM.skinning === !1 || !B.isSkinnedMesh && SM.skinning === !0 || SM.envMap !== pM || m.fog && SM.fog !== EM || SM.numClippingPlanes !== void 0 && (SM.numClippingPlanes !== x.numPlanes || SM.numIntersection !== x.numIntersection) || SM.vertexAlphas !== _M || SM.vertexTangents !== fM || SM.morphTargets !== mM || SM.morphNormals !== $M || SM.toneMapping !== pt || wM.isWebGL2 === !0 && SM.morphTargetsCount !== ot) && (tD = !0) : (tD = !0, SM.__version = m.version);
|
|
let kD = SM.currentProgram;
|
|
tD === !0 && (kD = BN(m, U, B));
|
|
let Ve = !1, SD = !1, FD = !1;
|
|
const rD = kD.getUniforms(), je = SM.uniforms;
|
|
if (zM.useProgram(kD.program) && (Ve = !0, SD = !0, FD = !0), m.id !== C && (C = m.id, SD = !0), Ve || E !== w) {
|
|
if (rD.setValue(_, "projectionMatrix", w.projectionMatrix), wM.logarithmicDepthBuffer && rD.setValue(_, "logDepthBufFC", 2 / (Math.log(w.far + 1) / Math.LN2)), E !== w && (E = w, SD = !0, FD = !0), m.isShaderMaterial || m.isMeshPhongMaterial || m.isMeshToonMaterial || m.isMeshStandardMaterial || m.envMap) {
|
|
const hD = rD.map.cameraPosition;
|
|
hD !== void 0 && hD.setValue(_, eM.setFromMatrixPosition(w.matrixWorld));
|
|
}
|
|
(m.isMeshPhongMaterial || m.isMeshToonMaterial || m.isMeshLambertMaterial || m.isMeshBasicMaterial || m.isMeshStandardMaterial || m.isShaderMaterial) && rD.setValue(_, "isOrthographic", w.isOrthographicCamera === !0), (m.isMeshPhongMaterial || m.isMeshToonMaterial || m.isMeshLambertMaterial || m.isMeshBasicMaterial || m.isMeshStandardMaterial || m.isShaderMaterial || m.isShadowMaterial || B.isSkinnedMesh) && rD.setValue(_, "viewMatrix", w.matrixWorldInverse);
|
|
}
|
|
if (B.isSkinnedMesh) {
|
|
rD.setOptional(_, B, "bindMatrix"), rD.setOptional(_, B, "bindMatrixInverse");
|
|
const hD = B.skeleton;
|
|
hD && (wM.floatVertexTextures ? (hD.boneTexture === null && hD.computeBoneTexture(), rD.setValue(_, "boneTexture", hD.boneTexture, P), rD.setValue(_, "boneTextureSize", hD.boneTextureSize)) : rD.setOptional(_, hD, "boneMatrices"));
|
|
}
|
|
return !!S && (S.morphAttributes.position !== void 0 || S.morphAttributes.normal !== void 0) && J.update(B, S, m, kD), (SD || SM.receiveShadow !== B.receiveShadow) && (SM.receiveShadow = B.receiveShadow, rD.setValue(_, "receiveShadow", B.receiveShadow)), SD && (rD.setValue(_, "toneMappingExposure", y.toneMappingExposure), SM.needsLights && tI(je, FD), EM && m.fog && QM.refreshFogUniforms(je, EM), QM.refreshMaterialUniforms(je, m, o, G, Z), ut.upload(_, SM.uniformsList, je, P)), m.isShaderMaterial && m.uniformsNeedUpdate === !0 && (ut.upload(_, SM.uniformsList, je, P), m.uniformsNeedUpdate = !1), m.isSpriteMaterial && rD.setValue(_, "center", B.center), rD.setValue(_, "modelViewMatrix", B.modelViewMatrix), rD.setValue(_, "normalMatrix", B.normalMatrix), rD.setValue(_, "modelMatrix", B.matrixWorld), kD;
|
|
}
|
|
function tI(w, U) {
|
|
w.ambientLightColor.needsUpdate = U, w.lightProbe.needsUpdate = U, w.directionalLights.needsUpdate = U, w.directionalLightShadows.needsUpdate = U, w.pointLights.needsUpdate = U, w.pointLightShadows.needsUpdate = U, w.spotLights.needsUpdate = U, w.spotLightShadows.needsUpdate = U, w.rectAreaLights.needsUpdate = U, w.hemisphereLights.needsUpdate = U;
|
|
}
|
|
function eI(w) {
|
|
return w.isMeshLambertMaterial || w.isMeshToonMaterial || w.isMeshPhongMaterial || w.isMeshStandardMaterial || w.isShadowMaterial || w.isShaderMaterial && w.lights === !0;
|
|
}
|
|
this.getActiveCubeFace = function() {
|
|
return c;
|
|
}, this.getActiveMipmapLevel = function() {
|
|
return r;
|
|
}, this.getRenderTarget = function() {
|
|
return l;
|
|
}, this.setRenderTargetTextures = function(w, U, S) {
|
|
OM.get(w.texture).__webglTexture = U, OM.get(w.depthTexture).__webglTexture = S;
|
|
const m = OM.get(w);
|
|
m.__hasExternalTextures = !0, m.__hasExternalTextures && (m.__autoAllocateDepthBuffer = S === void 0, m.__autoAllocateDepthBuffer || w.useRenderToTexture && (console.warn("render-to-texture extension was disabled because an external texture was provided"), w.useRenderToTexture = !1, w.useRenderbuffer = !0));
|
|
}, this.setRenderTargetFramebuffer = function(w, U) {
|
|
const S = OM.get(w);
|
|
S.__webglFramebuffer = U, S.__useDefaultFramebuffer = U === void 0;
|
|
}, this.setRenderTarget = function(w, U = 0, S = 0) {
|
|
l = w, c = U, r = S;
|
|
let m = !0;
|
|
if (w) {
|
|
const pM = OM.get(w);
|
|
pM.__useDefaultFramebuffer !== void 0 ? (zM.bindFramebuffer(36160, null), m = !1) : pM.__webglFramebuffer === void 0 ? P.setupRenderTarget(w) : pM.__hasExternalTextures && P.rebindTextures(w, OM.get(w.texture).__webglTexture, OM.get(w.depthTexture).__webglTexture);
|
|
}
|
|
let B = null, EM = !1, dM = !1;
|
|
if (w) {
|
|
const pM = w.texture;
|
|
(pM.isDataTexture3D || pM.isDataTexture2DArray) && (dM = !0);
|
|
const _M = OM.get(w).__webglFramebuffer;
|
|
w.isWebGLCubeRenderTarget ? (B = _M[U], EM = !0) : w.useRenderbuffer ? B = OM.get(w).__webglMultisampledFramebuffer : B = _M, d.copy(w.viewport), p.copy(w.scissor), H = w.scissorTest;
|
|
} else
|
|
d.copy(k).multiplyScalar(o).floor(), p.copy(f).multiplyScalar(o).floor(), H = Q;
|
|
if (zM.bindFramebuffer(36160, B) && wM.drawBuffers && m && zM.drawBuffers(w, B), zM.viewport(d), zM.scissor(p), zM.setScissorTest(H), EM) {
|
|
const pM = OM.get(w.texture);
|
|
_.framebufferTexture2D(36160, 36064, 34069 + U, pM.__webglTexture, S);
|
|
} else if (dM) {
|
|
const pM = OM.get(w.texture), _M = U || 0;
|
|
_.framebufferTextureLayer(36160, 36064, pM.__webglTexture, S || 0, _M);
|
|
}
|
|
C = -1;
|
|
}, this.readRenderTargetPixels = function(w, U, S, m, B, EM, dM) {
|
|
if (!(w && w.isWebGLRenderTarget)) {
|
|
console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");
|
|
return;
|
|
}
|
|
let hM = OM.get(w).__webglFramebuffer;
|
|
if (w.isWebGLCubeRenderTarget && dM !== void 0 && (hM = hM[dM]), hM) {
|
|
zM.bindFramebuffer(36160, hM);
|
|
try {
|
|
const pM = w.texture, _M = pM.format, fM = pM.type;
|
|
if (_M !== yD && yM.convert(_M) !== _.getParameter(35739)) {
|
|
console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");
|
|
return;
|
|
}
|
|
const mM = fM === Me && (rM.has("EXT_color_buffer_half_float") || wM.isWebGL2 && rM.has("EXT_color_buffer_float"));
|
|
if (fM !== It && yM.convert(fM) !== _.getParameter(35738) && !(fM === Ot && (wM.isWebGL2 || rM.has("OES_texture_float") || rM.has("WEBGL_color_buffer_float"))) && !mM) {
|
|
console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");
|
|
return;
|
|
}
|
|
_.checkFramebufferStatus(36160) === 36053 ? U >= 0 && U <= w.width - m && S >= 0 && S <= w.height - B && _.readPixels(U, S, m, B, yM.convert(_M), yM.convert(fM), EM) : console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");
|
|
} finally {
|
|
const pM = l !== null ? OM.get(l).__webglFramebuffer : null;
|
|
zM.bindFramebuffer(36160, pM);
|
|
}
|
|
}
|
|
}, this.copyFramebufferToTexture = function(w, U, S = 0) {
|
|
if (U.isFramebufferTexture !== !0) {
|
|
console.error("THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.");
|
|
return;
|
|
}
|
|
const m = Math.pow(2, -S), B = Math.floor(U.image.width * m), EM = Math.floor(U.image.height * m);
|
|
P.setTexture2D(U, 0), _.copyTexSubImage2D(3553, S, 0, 0, w.x, w.y, B, EM), zM.unbindTexture();
|
|
}, this.copyTextureToTexture = function(w, U, S, m = 0) {
|
|
const B = U.image.width, EM = U.image.height, dM = yM.convert(S.format), hM = yM.convert(S.type);
|
|
P.setTexture2D(S, 0), _.pixelStorei(37440, S.flipY), _.pixelStorei(37441, S.premultiplyAlpha), _.pixelStorei(3317, S.unpackAlignment), U.isDataTexture ? _.texSubImage2D(3553, m, w.x, w.y, B, EM, dM, hM, U.image.data) : U.isCompressedTexture ? _.compressedTexSubImage2D(3553, m, w.x, w.y, U.mipmaps[0].width, U.mipmaps[0].height, dM, U.mipmaps[0].data) : _.texSubImage2D(3553, m, w.x, w.y, dM, hM, U.image), m === 0 && S.generateMipmaps && _.generateMipmap(3553), zM.unbindTexture();
|
|
}, this.copyTextureToTexture3D = function(w, U, S, m, B = 0) {
|
|
if (y.isWebGL1Renderer) {
|
|
console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");
|
|
return;
|
|
}
|
|
const EM = w.max.x - w.min.x + 1, dM = w.max.y - w.min.y + 1, hM = w.max.z - w.min.z + 1, pM = yM.convert(m.format), _M = yM.convert(m.type);
|
|
let fM;
|
|
if (m.isDataTexture3D)
|
|
P.setTexture3D(m, 0), fM = 32879;
|
|
else if (m.isDataTexture2DArray)
|
|
P.setTexture2DArray(m, 0), fM = 35866;
|
|
else {
|
|
console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");
|
|
return;
|
|
}
|
|
_.pixelStorei(37440, m.flipY), _.pixelStorei(37441, m.premultiplyAlpha), _.pixelStorei(3317, m.unpackAlignment);
|
|
const mM = _.getParameter(3314), $M = _.getParameter(32878), ot = _.getParameter(3316), pt = _.getParameter(3315), SM = _.getParameter(32877), mD = S.isCompressedTexture ? S.mipmaps[0] : S.image;
|
|
_.pixelStorei(3314, mD.width), _.pixelStorei(32878, mD.height), _.pixelStorei(3316, w.min.x), _.pixelStorei(3315, w.min.y), _.pixelStorei(32877, w.min.z), S.isDataTexture || S.isDataTexture3D ? _.texSubImage3D(fM, B, U.x, U.y, U.z, EM, dM, hM, pM, _M, mD.data) : S.isCompressedTexture ? (console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."), _.compressedTexSubImage3D(fM, B, U.x, U.y, U.z, EM, dM, hM, pM, mD.data)) : _.texSubImage3D(fM, B, U.x, U.y, U.z, EM, dM, hM, pM, _M, mD), _.pixelStorei(3314, mM), _.pixelStorei(32878, $M), _.pixelStorei(3316, ot), _.pixelStorei(3315, pt), _.pixelStorei(32877, SM), B === 0 && m.generateMipmaps && _.generateMipmap(fM), zM.unbindTexture();
|
|
}, this.initTexture = function(w) {
|
|
P.setTexture2D(w, 0), zM.unbindTexture();
|
|
}, this.resetState = function() {
|
|
c = 0, r = 0, l = null, zM.reset(), sM.reset();
|
|
}, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this }));
|
|
}
|
|
KM.prototype.isWebGLRenderer = !0;
|
|
class Bs extends KM {
|
|
}
|
|
Bs.prototype.isWebGL1Renderer = !0;
|
|
class AA extends ZM {
|
|
constructor() {
|
|
super(), this.type = "Scene", this.background = null, this.environment = null, this.fog = null, this.overrideMaterial = null, this.autoUpdate = !0, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this }));
|
|
}
|
|
copy(M, D) {
|
|
return super.copy(M, D), M.background !== null && (this.background = M.background.clone()), M.environment !== null && (this.environment = M.environment.clone()), M.fog !== null && (this.fog = M.fog.clone()), M.overrideMaterial !== null && (this.overrideMaterial = M.overrideMaterial.clone()), this.autoUpdate = M.autoUpdate, this.matrixAutoUpdate = M.matrixAutoUpdate, this;
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
return this.fog !== null && (D.object.fog = this.fog.toJSON()), D;
|
|
}
|
|
}
|
|
AA.prototype.isScene = !0;
|
|
class Pe {
|
|
constructor(M, D) {
|
|
this.array = M, this.stride = D, this.count = M !== void 0 ? M.length / D : 0, this.usage = Qe, this.updateRange = { offset: 0, count: -1 }, this.version = 0, this.uuid = bD();
|
|
}
|
|
onUploadCallback() {
|
|
}
|
|
set needsUpdate(M) {
|
|
M === !0 && this.version++;
|
|
}
|
|
setUsage(M) {
|
|
return this.usage = M, this;
|
|
}
|
|
copy(M) {
|
|
return this.array = new M.array.constructor(M.array), this.count = M.count, this.stride = M.stride, this.usage = M.usage, this;
|
|
}
|
|
copyAt(M, D, t) {
|
|
M *= this.stride, t *= D.stride;
|
|
for (let e = 0, N = this.stride; e < N; e++)
|
|
this.array[M + e] = D.array[t + e];
|
|
return this;
|
|
}
|
|
set(M, D = 0) {
|
|
return this.array.set(M, D), this;
|
|
}
|
|
clone(M) {
|
|
M.arrayBuffers === void 0 && (M.arrayBuffers = {}), this.array.buffer._uuid === void 0 && (this.array.buffer._uuid = bD()), M.arrayBuffers[this.array.buffer._uuid] === void 0 && (M.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer);
|
|
const D = new this.array.constructor(M.arrayBuffers[this.array.buffer._uuid]), t = new this.constructor(D, this.stride);
|
|
return t.setUsage(this.usage), t;
|
|
}
|
|
onUpload(M) {
|
|
return this.onUploadCallback = M, this;
|
|
}
|
|
toJSON(M) {
|
|
return M.arrayBuffers === void 0 && (M.arrayBuffers = {}), this.array.buffer._uuid === void 0 && (this.array.buffer._uuid = bD()), M.arrayBuffers[this.array.buffer._uuid] === void 0 && (M.arrayBuffers[this.array.buffer._uuid] = Array.prototype.slice.call(new Uint32Array(this.array.buffer))), {
|
|
uuid: this.uuid,
|
|
buffer: this.array.buffer._uuid,
|
|
type: this.array.constructor.name,
|
|
stride: this.stride
|
|
};
|
|
}
|
|
}
|
|
Pe.prototype.isInterleavedBuffer = !0;
|
|
const MD = /* @__PURE__ */ new O();
|
|
class me {
|
|
constructor(M, D, t, e = !1) {
|
|
this.name = "", this.data = M, this.itemSize = D, this.offset = t, this.normalized = e === !0;
|
|
}
|
|
get count() {
|
|
return this.data.count;
|
|
}
|
|
get array() {
|
|
return this.data.array;
|
|
}
|
|
set needsUpdate(M) {
|
|
this.data.needsUpdate = M;
|
|
}
|
|
applyMatrix4(M) {
|
|
for (let D = 0, t = this.data.count; D < t; D++)
|
|
MD.x = this.getX(D), MD.y = this.getY(D), MD.z = this.getZ(D), MD.applyMatrix4(M), this.setXYZ(D, MD.x, MD.y, MD.z);
|
|
return this;
|
|
}
|
|
applyNormalMatrix(M) {
|
|
for (let D = 0, t = this.count; D < t; D++)
|
|
MD.x = this.getX(D), MD.y = this.getY(D), MD.z = this.getZ(D), MD.applyNormalMatrix(M), this.setXYZ(D, MD.x, MD.y, MD.z);
|
|
return this;
|
|
}
|
|
transformDirection(M) {
|
|
for (let D = 0, t = this.count; D < t; D++)
|
|
MD.x = this.getX(D), MD.y = this.getY(D), MD.z = this.getZ(D), MD.transformDirection(M), this.setXYZ(D, MD.x, MD.y, MD.z);
|
|
return this;
|
|
}
|
|
setX(M, D) {
|
|
return this.data.array[M * this.data.stride + this.offset] = D, this;
|
|
}
|
|
setY(M, D) {
|
|
return this.data.array[M * this.data.stride + this.offset + 1] = D, this;
|
|
}
|
|
setZ(M, D) {
|
|
return this.data.array[M * this.data.stride + this.offset + 2] = D, this;
|
|
}
|
|
setW(M, D) {
|
|
return this.data.array[M * this.data.stride + this.offset + 3] = D, this;
|
|
}
|
|
getX(M) {
|
|
return this.data.array[M * this.data.stride + this.offset];
|
|
}
|
|
getY(M) {
|
|
return this.data.array[M * this.data.stride + this.offset + 1];
|
|
}
|
|
getZ(M) {
|
|
return this.data.array[M * this.data.stride + this.offset + 2];
|
|
}
|
|
getW(M) {
|
|
return this.data.array[M * this.data.stride + this.offset + 3];
|
|
}
|
|
setXY(M, D, t) {
|
|
return M = M * this.data.stride + this.offset, this.data.array[M + 0] = D, this.data.array[M + 1] = t, this;
|
|
}
|
|
setXYZ(M, D, t, e) {
|
|
return M = M * this.data.stride + this.offset, this.data.array[M + 0] = D, this.data.array[M + 1] = t, this.data.array[M + 2] = e, this;
|
|
}
|
|
setXYZW(M, D, t, e, N) {
|
|
return M = M * this.data.stride + this.offset, this.data.array[M + 0] = D, this.data.array[M + 1] = t, this.data.array[M + 2] = e, this.data.array[M + 3] = N, this;
|
|
}
|
|
clone(M) {
|
|
if (M === void 0) {
|
|
console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.");
|
|
const D = [];
|
|
for (let t = 0; t < this.count; t++) {
|
|
const e = t * this.data.stride + this.offset;
|
|
for (let N = 0; N < this.itemSize; N++)
|
|
D.push(this.data.array[e + N]);
|
|
}
|
|
return new AD(new this.array.constructor(D), this.itemSize, this.normalized);
|
|
} else
|
|
return M.interleavedBuffers === void 0 && (M.interleavedBuffers = {}), M.interleavedBuffers[this.data.uuid] === void 0 && (M.interleavedBuffers[this.data.uuid] = this.data.clone(M)), new me(M.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);
|
|
}
|
|
toJSON(M) {
|
|
if (M === void 0) {
|
|
console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.");
|
|
const D = [];
|
|
for (let t = 0; t < this.count; t++) {
|
|
const e = t * this.data.stride + this.offset;
|
|
for (let N = 0; N < this.itemSize; N++)
|
|
D.push(this.data.array[e + N]);
|
|
}
|
|
return {
|
|
itemSize: this.itemSize,
|
|
type: this.array.constructor.name,
|
|
array: D,
|
|
normalized: this.normalized
|
|
};
|
|
} else
|
|
return M.interleavedBuffers === void 0 && (M.interleavedBuffers = {}), M.interleavedBuffers[this.data.uuid] === void 0 && (M.interleavedBuffers[this.data.uuid] = this.data.toJSON(M)), {
|
|
isInterleavedBufferAttribute: !0,
|
|
itemSize: this.itemSize,
|
|
data: this.data.uuid,
|
|
offset: this.offset,
|
|
normalized: this.normalized
|
|
};
|
|
}
|
|
}
|
|
me.prototype.isInterleavedBufferAttribute = !0;
|
|
class pi extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "SpriteMaterial", this.color = new cM(16777215), this.map = null, this.alphaMap = null, this.rotation = 0, this.sizeAttenuation = !0, this.transparent = !0, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.map = M.map, this.alphaMap = M.alphaMap, this.rotation = M.rotation, this.sizeAttenuation = M.sizeAttenuation, this;
|
|
}
|
|
}
|
|
pi.prototype.isSpriteMaterial = !0;
|
|
let Bt;
|
|
const Le = /* @__PURE__ */ new O(), Vt = /* @__PURE__ */ new O(), Ht = /* @__PURE__ */ new O(), Gt = /* @__PURE__ */ new q(), we = /* @__PURE__ */ new q(), hi = /* @__PURE__ */ new aM(), rN = /* @__PURE__ */ new O(), Oe = /* @__PURE__ */ new O(), sN = /* @__PURE__ */ new O(), vz = /* @__PURE__ */ new q(), ln = /* @__PURE__ */ new q(), pz = /* @__PURE__ */ new q();
|
|
class Vs extends ZM {
|
|
constructor(M) {
|
|
if (super(), this.type = "Sprite", Bt === void 0) {
|
|
Bt = new VM();
|
|
const D = new Float32Array([
|
|
-0.5,
|
|
-0.5,
|
|
0,
|
|
0,
|
|
0,
|
|
0.5,
|
|
-0.5,
|
|
0,
|
|
1,
|
|
0,
|
|
0.5,
|
|
0.5,
|
|
0,
|
|
1,
|
|
1,
|
|
-0.5,
|
|
0.5,
|
|
0,
|
|
0,
|
|
1
|
|
]), t = new Pe(D, 5);
|
|
Bt.setIndex([0, 1, 2, 0, 2, 3]), Bt.setAttribute("position", new me(t, 3, 0, !1)), Bt.setAttribute("uv", new me(t, 2, 3, !1));
|
|
}
|
|
this.geometry = Bt, this.material = M !== void 0 ? M : new pi(), this.center = new q(0.5, 0.5);
|
|
}
|
|
raycast(M, D) {
|
|
M.camera === null && console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'), Vt.setFromMatrixScale(this.matrixWorld), hi.copy(M.camera.matrixWorld), this.modelViewMatrix.multiplyMatrices(M.camera.matrixWorldInverse, this.matrixWorld), Ht.setFromMatrixPosition(this.modelViewMatrix), M.camera.isPerspectiveCamera && this.material.sizeAttenuation === !1 && Vt.multiplyScalar(-Ht.z);
|
|
const t = this.material.rotation;
|
|
let e, N;
|
|
t !== 0 && (N = Math.cos(t), e = Math.sin(t));
|
|
const A = this.center;
|
|
cN(rN.set(-0.5, -0.5, 0), Ht, A, Vt, e, N), cN(Oe.set(0.5, -0.5, 0), Ht, A, Vt, e, N), cN(sN.set(0.5, 0.5, 0), Ht, A, Vt, e, N), vz.set(0, 0), ln.set(1, 0), pz.set(1, 1);
|
|
let z = M.ray.intersectTriangle(rN, Oe, sN, !1, Le);
|
|
if (z === null && (cN(Oe.set(-0.5, 0.5, 0), Ht, A, Vt, e, N), ln.set(0, 1), z = M.ray.intersectTriangle(rN, sN, Oe, !1, Le), z === null))
|
|
return;
|
|
const I = M.ray.origin.distanceTo(Le);
|
|
I < M.near || I > M.far || D.push({
|
|
distance: I,
|
|
point: Le.clone(),
|
|
uv: DD.getUV(Le, rN, Oe, sN, vz, ln, pz, new q()),
|
|
face: null,
|
|
object: this
|
|
});
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), M.center !== void 0 && this.center.copy(M.center), this.material = M.material, this;
|
|
}
|
|
}
|
|
Vs.prototype.isSprite = !0;
|
|
function cN(n, M, D, t, e, N) {
|
|
Gt.subVectors(n, D).addScalar(0.5).multiply(t), e !== void 0 ? (we.x = N * Gt.x - e * Gt.y, we.y = e * Gt.x + N * Gt.y) : we.copy(Gt), n.copy(M), n.x += we.x, n.y += we.y, n.applyMatrix4(hi);
|
|
}
|
|
const hz = /* @__PURE__ */ new O(), Yz = /* @__PURE__ */ new PM(), Uz = /* @__PURE__ */ new PM(), Hs = /* @__PURE__ */ new O(), Qz = /* @__PURE__ */ new aM();
|
|
class Yi extends nD {
|
|
constructor(M, D) {
|
|
super(M, D), this.type = "SkinnedMesh", this.bindMode = "attached", this.bindMatrix = new aM(), this.bindMatrixInverse = new aM();
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.bindMode = M.bindMode, this.bindMatrix.copy(M.bindMatrix), this.bindMatrixInverse.copy(M.bindMatrixInverse), this.skeleton = M.skeleton, this;
|
|
}
|
|
bind(M, D) {
|
|
this.skeleton = M, D === void 0 && (this.updateMatrixWorld(!0), this.skeleton.calculateInverses(), D = this.matrixWorld), this.bindMatrix.copy(D), this.bindMatrixInverse.copy(D).invert();
|
|
}
|
|
pose() {
|
|
this.skeleton.pose();
|
|
}
|
|
normalizeSkinWeights() {
|
|
const M = new PM(), D = this.geometry.attributes.skinWeight;
|
|
for (let t = 0, e = D.count; t < e; t++) {
|
|
M.x = D.getX(t), M.y = D.getY(t), M.z = D.getZ(t), M.w = D.getW(t);
|
|
const N = 1 / M.manhattanLength();
|
|
N !== 1 / 0 ? M.multiplyScalar(N) : M.set(1, 0, 0, 0), D.setXYZW(t, M.x, M.y, M.z, M.w);
|
|
}
|
|
}
|
|
updateMatrixWorld(M) {
|
|
super.updateMatrixWorld(M), this.bindMode === "attached" ? this.bindMatrixInverse.copy(this.matrixWorld).invert() : this.bindMode === "detached" ? this.bindMatrixInverse.copy(this.bindMatrix).invert() : console.warn("THREE.SkinnedMesh: Unrecognized bindMode: " + this.bindMode);
|
|
}
|
|
boneTransform(M, D) {
|
|
const t = this.skeleton, e = this.geometry;
|
|
Yz.fromBufferAttribute(e.attributes.skinIndex, M), Uz.fromBufferAttribute(e.attributes.skinWeight, M), hz.copy(D).applyMatrix4(this.bindMatrix), D.set(0, 0, 0);
|
|
for (let N = 0; N < 4; N++) {
|
|
const A = Uz.getComponent(N);
|
|
if (A !== 0) {
|
|
const z = Yz.getComponent(N);
|
|
Qz.multiplyMatrices(t.bones[z].matrixWorld, t.boneInverses[z]), D.addScaledVector(Hs.copy(hz).applyMatrix4(Qz), A);
|
|
}
|
|
}
|
|
return D.applyMatrix4(this.bindMatrixInverse);
|
|
}
|
|
}
|
|
Yi.prototype.isSkinnedMesh = !0;
|
|
class Gs extends ZM {
|
|
constructor() {
|
|
super(), this.type = "Bone";
|
|
}
|
|
}
|
|
Gs.prototype.isBone = !0;
|
|
class Ws extends iD {
|
|
constructor(M = null, D = 1, t = 1, e, N, A, z, I, i = ND, T = ND, u, g) {
|
|
super(null, A, z, I, i, T, e, N, u, g), this.image = { data: M, width: D, height: t }, this.magFilter = i, this.minFilter = T, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1;
|
|
}
|
|
}
|
|
Ws.prototype.isDataTexture = !0;
|
|
class Pn extends AD {
|
|
constructor(M, D, t, e = 1) {
|
|
typeof t == "number" && (e = t, t = !1, console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")), super(M, D, t), this.meshPerAttribute = e;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.meshPerAttribute = M.meshPerAttribute, this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.meshPerAttribute = this.meshPerAttribute, M.isInstancedBufferAttribute = !0, M;
|
|
}
|
|
}
|
|
Pn.prototype.isInstancedBufferAttribute = !0;
|
|
const fz = /* @__PURE__ */ new aM(), mz = /* @__PURE__ */ new aM(), jN = [], xe = /* @__PURE__ */ new nD();
|
|
class qs extends nD {
|
|
constructor(M, D, t) {
|
|
super(M, D), this.instanceMatrix = new Pn(new Float32Array(t * 16), 16), this.instanceColor = null, this.count = t, this.frustumCulled = !1;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.instanceMatrix.copy(M.instanceMatrix), M.instanceColor !== null && (this.instanceColor = M.instanceColor.clone()), this.count = M.count, this;
|
|
}
|
|
getColorAt(M, D) {
|
|
D.fromArray(this.instanceColor.array, M * 3);
|
|
}
|
|
getMatrixAt(M, D) {
|
|
D.fromArray(this.instanceMatrix.array, M * 16);
|
|
}
|
|
raycast(M, D) {
|
|
const t = this.matrixWorld, e = this.count;
|
|
if (xe.geometry = this.geometry, xe.material = this.material, xe.material !== void 0)
|
|
for (let N = 0; N < e; N++) {
|
|
this.getMatrixAt(N, fz), mz.multiplyMatrices(t, fz), xe.matrixWorld = mz, xe.raycast(M, jN);
|
|
for (let A = 0, z = jN.length; A < z; A++) {
|
|
const I = jN[A];
|
|
I.instanceId = N, I.object = this, D.push(I);
|
|
}
|
|
jN.length = 0;
|
|
}
|
|
}
|
|
setColorAt(M, D) {
|
|
this.instanceColor === null && (this.instanceColor = new Pn(new Float32Array(this.instanceMatrix.count * 3), 3)), D.toArray(this.instanceColor.array, M * 3);
|
|
}
|
|
setMatrixAt(M, D) {
|
|
D.toArray(this.instanceMatrix.array, M * 16);
|
|
}
|
|
updateMorphTargets() {
|
|
}
|
|
dispose() {
|
|
this.dispatchEvent({ type: "dispose" });
|
|
}
|
|
}
|
|
qs.prototype.isInstancedMesh = !0;
|
|
class gt extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "LineBasicMaterial", this.color = new cM(16777215), this.linewidth = 1, this.linecap = "round", this.linejoin = "round", this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.linewidth = M.linewidth, this.linecap = M.linecap, this.linejoin = M.linejoin, this;
|
|
}
|
|
}
|
|
gt.prototype.isLineBasicMaterial = !0;
|
|
const kz = /* @__PURE__ */ new O(), Sz = /* @__PURE__ */ new O(), Zz = /* @__PURE__ */ new aM(), dn = /* @__PURE__ */ new Te(), yN = /* @__PURE__ */ new Ie();
|
|
class zA extends ZM {
|
|
constructor(M = new VM(), D = new gt()) {
|
|
super(), this.type = "Line", this.geometry = M, this.material = D, this.updateMorphTargets();
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.material = M.material, this.geometry = M.geometry, this;
|
|
}
|
|
computeLineDistances() {
|
|
const M = this.geometry;
|
|
if (M.isBufferGeometry)
|
|
if (M.index === null) {
|
|
const D = M.attributes.position, t = [0];
|
|
for (let e = 1, N = D.count; e < N; e++)
|
|
kz.fromBufferAttribute(D, e - 1), Sz.fromBufferAttribute(D, e), t[e] = t[e - 1], t[e] += kz.distanceTo(Sz);
|
|
M.setAttribute("lineDistance", new WM(t, 1));
|
|
} else
|
|
console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");
|
|
else
|
|
M.isGeometry && console.error("THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
return this;
|
|
}
|
|
raycast(M, D) {
|
|
const t = this.geometry, e = this.matrixWorld, N = M.params.Line.threshold, A = t.drawRange;
|
|
if (t.boundingSphere === null && t.computeBoundingSphere(), yN.copy(t.boundingSphere), yN.applyMatrix4(e), yN.radius += N, M.ray.intersectsSphere(yN) === !1)
|
|
return;
|
|
Zz.copy(e).invert(), dn.copy(M.ray).applyMatrix4(Zz);
|
|
const z = N / ((this.scale.x + this.scale.y + this.scale.z) / 3), I = z * z, i = new O(), T = new O(), u = new O(), g = new O(), s = this.isLineSegments ? 2 : 1;
|
|
if (t.isBufferGeometry) {
|
|
const j = t.index, a = t.attributes.position;
|
|
if (j !== null) {
|
|
const c = Math.max(0, A.start), r = Math.min(j.count, A.start + A.count);
|
|
for (let l = c, C = r - 1; l < C; l += s) {
|
|
const E = j.getX(l), d = j.getX(l + 1);
|
|
if (i.fromBufferAttribute(a, E), T.fromBufferAttribute(a, d), dn.distanceSqToSegment(i, T, g, u) > I)
|
|
continue;
|
|
g.applyMatrix4(this.matrixWorld);
|
|
const H = M.ray.origin.distanceTo(g);
|
|
H < M.near || H > M.far || D.push({
|
|
distance: H,
|
|
point: u.clone().applyMatrix4(this.matrixWorld),
|
|
index: l,
|
|
face: null,
|
|
faceIndex: null,
|
|
object: this
|
|
});
|
|
}
|
|
} else {
|
|
const c = Math.max(0, A.start), r = Math.min(a.count, A.start + A.count);
|
|
for (let l = c, C = r - 1; l < C; l += s) {
|
|
if (i.fromBufferAttribute(a, l), T.fromBufferAttribute(a, l + 1), dn.distanceSqToSegment(i, T, g, u) > I)
|
|
continue;
|
|
g.applyMatrix4(this.matrixWorld);
|
|
const d = M.ray.origin.distanceTo(g);
|
|
d < M.near || d > M.far || D.push({
|
|
distance: d,
|
|
point: u.clone().applyMatrix4(this.matrixWorld),
|
|
index: l,
|
|
face: null,
|
|
faceIndex: null,
|
|
object: this
|
|
});
|
|
}
|
|
}
|
|
} else
|
|
t.isGeometry && console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
}
|
|
updateMorphTargets() {
|
|
const M = this.geometry;
|
|
if (M.isBufferGeometry) {
|
|
const D = M.morphAttributes, t = Object.keys(D);
|
|
if (t.length > 0) {
|
|
const e = D[t[0]];
|
|
if (e !== void 0) {
|
|
this.morphTargetInfluences = [], this.morphTargetDictionary = {};
|
|
for (let N = 0, A = e.length; N < A; N++) {
|
|
const z = e[N].name || String(N);
|
|
this.morphTargetInfluences.push(0), this.morphTargetDictionary[z] = N;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
const D = M.morphTargets;
|
|
D !== void 0 && D.length > 0 && console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
}
|
|
}
|
|
}
|
|
zA.prototype.isLine = !0;
|
|
const _z = /* @__PURE__ */ new O(), bz = /* @__PURE__ */ new O();
|
|
class ke extends zA {
|
|
constructor(M, D) {
|
|
super(M, D), this.type = "LineSegments";
|
|
}
|
|
computeLineDistances() {
|
|
const M = this.geometry;
|
|
if (M.isBufferGeometry)
|
|
if (M.index === null) {
|
|
const D = M.attributes.position, t = [];
|
|
for (let e = 0, N = D.count; e < N; e += 2)
|
|
_z.fromBufferAttribute(D, e), bz.fromBufferAttribute(D, e + 1), t[e] = e === 0 ? 0 : t[e - 1], t[e + 1] = t[e] + _z.distanceTo(bz);
|
|
M.setAttribute("lineDistance", new WM(t, 1));
|
|
} else
|
|
console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");
|
|
else
|
|
M.isGeometry && console.error("THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
return this;
|
|
}
|
|
}
|
|
ke.prototype.isLineSegments = !0;
|
|
class Xs extends zA {
|
|
constructor(M, D) {
|
|
super(M, D), this.type = "LineLoop";
|
|
}
|
|
}
|
|
Xs.prototype.isLineLoop = !0;
|
|
class Jt extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "PointsMaterial", this.color = new cM(16777215), this.map = null, this.alphaMap = null, this.size = 1, this.sizeAttenuation = !0, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.map = M.map, this.alphaMap = M.alphaMap, this.size = M.size, this.sizeAttenuation = M.sizeAttenuation, this;
|
|
}
|
|
}
|
|
Jt.prototype.isPointsMaterial = !0;
|
|
const Kz = /* @__PURE__ */ new aM(), Fn = /* @__PURE__ */ new Te(), oN = /* @__PURE__ */ new Ie(), aN = /* @__PURE__ */ new O();
|
|
class dN extends ZM {
|
|
constructor(M = new VM(), D = new Jt()) {
|
|
super(), this.type = "Points", this.geometry = M, this.material = D, this.updateMorphTargets();
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.material = M.material, this.geometry = M.geometry, this;
|
|
}
|
|
raycast(M, D) {
|
|
const t = this.geometry, e = this.matrixWorld, N = M.params.Points.threshold, A = t.drawRange;
|
|
if (t.boundingSphere === null && t.computeBoundingSphere(), oN.copy(t.boundingSphere), oN.applyMatrix4(e), oN.radius += N, M.ray.intersectsSphere(oN) === !1)
|
|
return;
|
|
Kz.copy(e).invert(), Fn.copy(M.ray).applyMatrix4(Kz);
|
|
const z = N / ((this.scale.x + this.scale.y + this.scale.z) / 3), I = z * z;
|
|
if (t.isBufferGeometry) {
|
|
const i = t.index, u = t.attributes.position;
|
|
if (i !== null) {
|
|
const g = Math.max(0, A.start), s = Math.min(i.count, A.start + A.count);
|
|
for (let j = g, y = s; j < y; j++) {
|
|
const a = i.getX(j);
|
|
aN.fromBufferAttribute(u, a), Rz(aN, a, I, e, M, D, this);
|
|
}
|
|
} else {
|
|
const g = Math.max(0, A.start), s = Math.min(u.count, A.start + A.count);
|
|
for (let j = g, y = s; j < y; j++)
|
|
aN.fromBufferAttribute(u, j), Rz(aN, j, I, e, M, D, this);
|
|
}
|
|
} else
|
|
console.error("THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
}
|
|
updateMorphTargets() {
|
|
const M = this.geometry;
|
|
if (M.isBufferGeometry) {
|
|
const D = M.morphAttributes, t = Object.keys(D);
|
|
if (t.length > 0) {
|
|
const e = D[t[0]];
|
|
if (e !== void 0) {
|
|
this.morphTargetInfluences = [], this.morphTargetDictionary = {};
|
|
for (let N = 0, A = e.length; N < A; N++) {
|
|
const z = e[N].name || String(N);
|
|
this.morphTargetInfluences.push(0), this.morphTargetDictionary[z] = N;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
const D = M.morphTargets;
|
|
D !== void 0 && D.length > 0 && console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.");
|
|
}
|
|
}
|
|
}
|
|
dN.prototype.isPoints = !0;
|
|
function Rz(n, M, D, t, e, N, A) {
|
|
const z = Fn.distanceSqToPoint(n);
|
|
if (z < D) {
|
|
const I = new O();
|
|
Fn.closestPointToPoint(n, I), I.applyMatrix4(t);
|
|
const i = e.ray.origin.distanceTo(I);
|
|
if (i < e.near || i > e.far)
|
|
return;
|
|
N.push({
|
|
distance: i,
|
|
distanceToRay: Math.sqrt(z),
|
|
point: I,
|
|
index: M,
|
|
face: null,
|
|
object: A
|
|
});
|
|
}
|
|
}
|
|
class Ui extends iD {
|
|
constructor(M, D, t, e, N, A, z, I, i) {
|
|
super(M, D, t, e, N, A, z, I, i), this.minFilter = A !== void 0 ? A : uD, this.magFilter = N !== void 0 ? N : uD, this.generateMipmaps = !1;
|
|
const T = this;
|
|
function u() {
|
|
T.needsUpdate = !0, M.requestVideoFrameCallback(u);
|
|
}
|
|
"requestVideoFrameCallback" in M && M.requestVideoFrameCallback(u);
|
|
}
|
|
clone() {
|
|
return new this.constructor(this.image).copy(this);
|
|
}
|
|
update() {
|
|
const M = this.image;
|
|
"requestVideoFrameCallback" in M === !1 && M.readyState >= M.HAVE_CURRENT_DATA && (this.needsUpdate = !0);
|
|
}
|
|
}
|
|
Ui.prototype.isVideoTexture = !0;
|
|
class Js extends iD {
|
|
constructor(M, D, t) {
|
|
super({ width: M, height: D }), this.format = t, this.magFilter = ND, this.minFilter = ND, this.generateMipmaps = !1, this.needsUpdate = !0;
|
|
}
|
|
}
|
|
Js.prototype.isFramebufferTexture = !0;
|
|
class $s extends iD {
|
|
constructor(M, D, t, e, N, A, z, I, i, T, u, g) {
|
|
super(null, A, z, I, i, T, e, N, u, g), this.image = { width: D, height: t }, this.mipmaps = M, this.flipY = !1, this.generateMipmaps = !1;
|
|
}
|
|
}
|
|
$s.prototype.isCompressedTexture = !0;
|
|
class Mc extends iD {
|
|
constructor(M, D, t, e, N, A, z, I, i) {
|
|
super(M, D, t, e, N, A, z, I, i), this.needsUpdate = !0;
|
|
}
|
|
}
|
|
Mc.prototype.isCanvasTexture = !0;
|
|
new O();
|
|
new O();
|
|
new O();
|
|
new DD();
|
|
class vD {
|
|
constructor() {
|
|
this.type = "Curve", this.arcLengthDivisions = 200;
|
|
}
|
|
getPoint() {
|
|
return console.warn("THREE.Curve: .getPoint() not implemented."), null;
|
|
}
|
|
getPointAt(M, D) {
|
|
const t = this.getUtoTmapping(M);
|
|
return this.getPoint(t, D);
|
|
}
|
|
getPoints(M = 5) {
|
|
const D = [];
|
|
for (let t = 0; t <= M; t++)
|
|
D.push(this.getPoint(t / M));
|
|
return D;
|
|
}
|
|
getSpacedPoints(M = 5) {
|
|
const D = [];
|
|
for (let t = 0; t <= M; t++)
|
|
D.push(this.getPointAt(t / M));
|
|
return D;
|
|
}
|
|
getLength() {
|
|
const M = this.getLengths();
|
|
return M[M.length - 1];
|
|
}
|
|
getLengths(M = this.arcLengthDivisions) {
|
|
if (this.cacheArcLengths && this.cacheArcLengths.length === M + 1 && !this.needsUpdate)
|
|
return this.cacheArcLengths;
|
|
this.needsUpdate = !1;
|
|
const D = [];
|
|
let t, e = this.getPoint(0), N = 0;
|
|
D.push(0);
|
|
for (let A = 1; A <= M; A++)
|
|
t = this.getPoint(A / M), N += t.distanceTo(e), D.push(N), e = t;
|
|
return this.cacheArcLengths = D, D;
|
|
}
|
|
updateArcLengths() {
|
|
this.needsUpdate = !0, this.getLengths();
|
|
}
|
|
getUtoTmapping(M, D) {
|
|
const t = this.getLengths();
|
|
let e = 0;
|
|
const N = t.length;
|
|
let A;
|
|
D ? A = D : A = M * t[N - 1];
|
|
let z = 0, I = N - 1, i;
|
|
for (; z <= I; )
|
|
if (e = Math.floor(z + (I - z) / 2), i = t[e] - A, i < 0)
|
|
z = e + 1;
|
|
else if (i > 0)
|
|
I = e - 1;
|
|
else {
|
|
I = e;
|
|
break;
|
|
}
|
|
if (e = I, t[e] === A)
|
|
return e / (N - 1);
|
|
const T = t[e], g = t[e + 1] - T, s = (A - T) / g;
|
|
return (e + s) / (N - 1);
|
|
}
|
|
getTangent(M, D) {
|
|
let e = M - 1e-4, N = M + 1e-4;
|
|
e < 0 && (e = 0), N > 1 && (N = 1);
|
|
const A = this.getPoint(e), z = this.getPoint(N), I = D || (A.isVector2 ? new q() : new O());
|
|
return I.copy(z).sub(A).normalize(), I;
|
|
}
|
|
getTangentAt(M, D) {
|
|
const t = this.getUtoTmapping(M);
|
|
return this.getTangent(t, D);
|
|
}
|
|
computeFrenetFrames(M, D) {
|
|
const t = new O(), e = [], N = [], A = [], z = new O(), I = new aM();
|
|
for (let s = 0; s <= M; s++) {
|
|
const j = s / M;
|
|
e[s] = this.getTangentAt(j, new O());
|
|
}
|
|
N[0] = new O(), A[0] = new O();
|
|
let i = Number.MAX_VALUE;
|
|
const T = Math.abs(e[0].x), u = Math.abs(e[0].y), g = Math.abs(e[0].z);
|
|
T <= i && (i = T, t.set(1, 0, 0)), u <= i && (i = u, t.set(0, 1, 0)), g <= i && t.set(0, 0, 1), z.crossVectors(e[0], t).normalize(), N[0].crossVectors(e[0], z), A[0].crossVectors(e[0], N[0]);
|
|
for (let s = 1; s <= M; s++) {
|
|
if (N[s] = N[s - 1].clone(), A[s] = A[s - 1].clone(), z.crossVectors(e[s - 1], e[s]), z.length() > Number.EPSILON) {
|
|
z.normalize();
|
|
const j = Math.acos(OD(e[s - 1].dot(e[s]), -1, 1));
|
|
N[s].applyMatrix4(I.makeRotationAxis(z, j));
|
|
}
|
|
A[s].crossVectors(e[s], N[s]);
|
|
}
|
|
if (D === !0) {
|
|
let s = Math.acos(OD(N[0].dot(N[M]), -1, 1));
|
|
s /= M, e[0].dot(z.crossVectors(N[0], N[M])) > 0 && (s = -s);
|
|
for (let j = 1; j <= M; j++)
|
|
N[j].applyMatrix4(I.makeRotationAxis(e[j], s * j)), A[j].crossVectors(e[j], N[j]);
|
|
}
|
|
return {
|
|
tangents: e,
|
|
normals: N,
|
|
binormals: A
|
|
};
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
copy(M) {
|
|
return this.arcLengthDivisions = M.arcLengthDivisions, this;
|
|
}
|
|
toJSON() {
|
|
const M = {
|
|
metadata: {
|
|
version: 4.5,
|
|
type: "Curve",
|
|
generator: "Curve.toJSON"
|
|
}
|
|
};
|
|
return M.arcLengthDivisions = this.arcLengthDivisions, M.type = this.type, M;
|
|
}
|
|
fromJSON(M) {
|
|
return this.arcLengthDivisions = M.arcLengthDivisions, this;
|
|
}
|
|
}
|
|
class KN extends vD {
|
|
constructor(M = 0, D = 0, t = 1, e = 1, N = 0, A = Math.PI * 2, z = !1, I = 0) {
|
|
super(), this.type = "EllipseCurve", this.aX = M, this.aY = D, this.xRadius = t, this.yRadius = e, this.aStartAngle = N, this.aEndAngle = A, this.aClockwise = z, this.aRotation = I;
|
|
}
|
|
getPoint(M, D) {
|
|
const t = D || new q(), e = Math.PI * 2;
|
|
let N = this.aEndAngle - this.aStartAngle;
|
|
const A = Math.abs(N) < Number.EPSILON;
|
|
for (; N < 0; )
|
|
N += e;
|
|
for (; N > e; )
|
|
N -= e;
|
|
N < Number.EPSILON && (A ? N = 0 : N = e), this.aClockwise === !0 && !A && (N === e ? N = -e : N = N - e);
|
|
const z = this.aStartAngle + M * N;
|
|
let I = this.aX + this.xRadius * Math.cos(z), i = this.aY + this.yRadius * Math.sin(z);
|
|
if (this.aRotation !== 0) {
|
|
const T = Math.cos(this.aRotation), u = Math.sin(this.aRotation), g = I - this.aX, s = i - this.aY;
|
|
I = g * T - s * u + this.aX, i = g * u + s * T + this.aY;
|
|
}
|
|
return t.set(I, i);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.aX = M.aX, this.aY = M.aY, this.xRadius = M.xRadius, this.yRadius = M.yRadius, this.aStartAngle = M.aStartAngle, this.aEndAngle = M.aEndAngle, this.aClockwise = M.aClockwise, this.aRotation = M.aRotation, this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.aX = this.aX, M.aY = this.aY, M.xRadius = this.xRadius, M.yRadius = this.yRadius, M.aStartAngle = this.aStartAngle, M.aEndAngle = this.aEndAngle, M.aClockwise = this.aClockwise, M.aRotation = this.aRotation, M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.aX = M.aX, this.aY = M.aY, this.xRadius = M.xRadius, this.yRadius = M.yRadius, this.aStartAngle = M.aStartAngle, this.aEndAngle = M.aEndAngle, this.aClockwise = M.aClockwise, this.aRotation = M.aRotation, this;
|
|
}
|
|
}
|
|
KN.prototype.isEllipseCurve = !0;
|
|
class Qi extends KN {
|
|
constructor(M, D, t, e, N, A) {
|
|
super(M, D, t, t, e, N, A), this.type = "ArcCurve";
|
|
}
|
|
}
|
|
Qi.prototype.isArcCurve = !0;
|
|
function iA() {
|
|
let n = 0, M = 0, D = 0, t = 0;
|
|
function e(N, A, z, I) {
|
|
n = N, M = z, D = -3 * N + 3 * A - 2 * z - I, t = 2 * N - 2 * A + z + I;
|
|
}
|
|
return {
|
|
initCatmullRom: function(N, A, z, I, i) {
|
|
e(A, z, i * (z - N), i * (I - A));
|
|
},
|
|
initNonuniformCatmullRom: function(N, A, z, I, i, T, u) {
|
|
let g = (A - N) / i - (z - N) / (i + T) + (z - A) / T, s = (z - A) / T - (I - A) / (T + u) + (I - z) / u;
|
|
g *= T, s *= T, e(A, z, g, s);
|
|
},
|
|
calc: function(N) {
|
|
const A = N * N, z = A * N;
|
|
return n + M * N + D * A + t * z;
|
|
}
|
|
};
|
|
}
|
|
const CN = new O(), vn = new iA(), pn = new iA(), hn = new iA();
|
|
class fi extends vD {
|
|
constructor(M = [], D = !1, t = "centripetal", e = 0.5) {
|
|
super(), this.type = "CatmullRomCurve3", this.points = M, this.closed = D, this.curveType = t, this.tension = e;
|
|
}
|
|
getPoint(M, D = new O()) {
|
|
const t = D, e = this.points, N = e.length, A = (N - (this.closed ? 0 : 1)) * M;
|
|
let z = Math.floor(A), I = A - z;
|
|
this.closed ? z += z > 0 ? 0 : (Math.floor(Math.abs(z) / N) + 1) * N : I === 0 && z === N - 1 && (z = N - 2, I = 1);
|
|
let i, T;
|
|
this.closed || z > 0 ? i = e[(z - 1) % N] : (CN.subVectors(e[0], e[1]).add(e[0]), i = CN);
|
|
const u = e[z % N], g = e[(z + 1) % N];
|
|
if (this.closed || z + 2 < N ? T = e[(z + 2) % N] : (CN.subVectors(e[N - 1], e[N - 2]).add(e[N - 1]), T = CN), this.curveType === "centripetal" || this.curveType === "chordal") {
|
|
const s = this.curveType === "chordal" ? 0.5 : 0.25;
|
|
let j = Math.pow(i.distanceToSquared(u), s), y = Math.pow(u.distanceToSquared(g), s), a = Math.pow(g.distanceToSquared(T), s);
|
|
y < 1e-4 && (y = 1), j < 1e-4 && (j = y), a < 1e-4 && (a = y), vn.initNonuniformCatmullRom(i.x, u.x, g.x, T.x, j, y, a), pn.initNonuniformCatmullRom(i.y, u.y, g.y, T.y, j, y, a), hn.initNonuniformCatmullRom(i.z, u.z, g.z, T.z, j, y, a);
|
|
} else
|
|
this.curveType === "catmullrom" && (vn.initCatmullRom(i.x, u.x, g.x, T.x, this.tension), pn.initCatmullRom(i.y, u.y, g.y, T.y, this.tension), hn.initCatmullRom(i.z, u.z, g.z, T.z, this.tension));
|
|
return t.set(vn.calc(I), pn.calc(I), hn.calc(I)), t;
|
|
}
|
|
copy(M) {
|
|
super.copy(M), this.points = [];
|
|
for (let D = 0, t = M.points.length; D < t; D++) {
|
|
const e = M.points[D];
|
|
this.points.push(e.clone());
|
|
}
|
|
return this.closed = M.closed, this.curveType = M.curveType, this.tension = M.tension, this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
M.points = [];
|
|
for (let D = 0, t = this.points.length; D < t; D++) {
|
|
const e = this.points[D];
|
|
M.points.push(e.toArray());
|
|
}
|
|
return M.closed = this.closed, M.curveType = this.curveType, M.tension = this.tension, M;
|
|
}
|
|
fromJSON(M) {
|
|
super.fromJSON(M), this.points = [];
|
|
for (let D = 0, t = M.points.length; D < t; D++) {
|
|
const e = M.points[D];
|
|
this.points.push(new O().fromArray(e));
|
|
}
|
|
return this.closed = M.closed, this.curveType = M.curveType, this.tension = M.tension, this;
|
|
}
|
|
}
|
|
fi.prototype.isCatmullRomCurve3 = !0;
|
|
function Pz(n, M, D, t, e) {
|
|
const N = (t - M) * 0.5, A = (e - D) * 0.5, z = n * n, I = n * z;
|
|
return (2 * D - 2 * t + N + A) * I + (-3 * D + 3 * t - 2 * N - A) * z + N * n + D;
|
|
}
|
|
function Dc(n, M) {
|
|
const D = 1 - n;
|
|
return D * D * M;
|
|
}
|
|
function tc(n, M) {
|
|
return 2 * (1 - n) * n * M;
|
|
}
|
|
function ec(n, M) {
|
|
return n * n * M;
|
|
}
|
|
function pe(n, M, D, t) {
|
|
return Dc(n, M) + tc(n, D) + ec(n, t);
|
|
}
|
|
function Nc(n, M) {
|
|
const D = 1 - n;
|
|
return D * D * D * M;
|
|
}
|
|
function nc(n, M) {
|
|
const D = 1 - n;
|
|
return 3 * D * D * n * M;
|
|
}
|
|
function Ac(n, M) {
|
|
return 3 * (1 - n) * n * n * M;
|
|
}
|
|
function zc(n, M) {
|
|
return n * n * n * M;
|
|
}
|
|
function he(n, M, D, t, e) {
|
|
return Nc(n, M) + nc(n, D) + Ac(n, t) + zc(n, e);
|
|
}
|
|
class IA extends vD {
|
|
constructor(M = new q(), D = new q(), t = new q(), e = new q()) {
|
|
super(), this.type = "CubicBezierCurve", this.v0 = M, this.v1 = D, this.v2 = t, this.v3 = e;
|
|
}
|
|
getPoint(M, D = new q()) {
|
|
const t = D, e = this.v0, N = this.v1, A = this.v2, z = this.v3;
|
|
return t.set(he(M, e.x, N.x, A.x, z.x), he(M, e.y, N.y, A.y, z.y)), t;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.v0.copy(M.v0), this.v1.copy(M.v1), this.v2.copy(M.v2), this.v3.copy(M.v3), this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.v0 = this.v0.toArray(), M.v1 = this.v1.toArray(), M.v2 = this.v2.toArray(), M.v3 = this.v3.toArray(), M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.v0.fromArray(M.v0), this.v1.fromArray(M.v1), this.v2.fromArray(M.v2), this.v3.fromArray(M.v3), this;
|
|
}
|
|
}
|
|
IA.prototype.isCubicBezierCurve = !0;
|
|
class mi extends vD {
|
|
constructor(M = new O(), D = new O(), t = new O(), e = new O()) {
|
|
super(), this.type = "CubicBezierCurve3", this.v0 = M, this.v1 = D, this.v2 = t, this.v3 = e;
|
|
}
|
|
getPoint(M, D = new O()) {
|
|
const t = D, e = this.v0, N = this.v1, A = this.v2, z = this.v3;
|
|
return t.set(he(M, e.x, N.x, A.x, z.x), he(M, e.y, N.y, A.y, z.y), he(M, e.z, N.z, A.z, z.z)), t;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.v0.copy(M.v0), this.v1.copy(M.v1), this.v2.copy(M.v2), this.v3.copy(M.v3), this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.v0 = this.v0.toArray(), M.v1 = this.v1.toArray(), M.v2 = this.v2.toArray(), M.v3 = this.v3.toArray(), M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.v0.fromArray(M.v0), this.v1.fromArray(M.v1), this.v2.fromArray(M.v2), this.v3.fromArray(M.v3), this;
|
|
}
|
|
}
|
|
mi.prototype.isCubicBezierCurve3 = !0;
|
|
class RN extends vD {
|
|
constructor(M = new q(), D = new q()) {
|
|
super(), this.type = "LineCurve", this.v1 = M, this.v2 = D;
|
|
}
|
|
getPoint(M, D = new q()) {
|
|
const t = D;
|
|
return M === 1 ? t.copy(this.v2) : (t.copy(this.v2).sub(this.v1), t.multiplyScalar(M).add(this.v1)), t;
|
|
}
|
|
getPointAt(M, D) {
|
|
return this.getPoint(M, D);
|
|
}
|
|
getTangent(M, D) {
|
|
const t = D || new q();
|
|
return t.copy(this.v2).sub(this.v1).normalize(), t;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.v1.copy(M.v1), this.v2.copy(M.v2), this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.v1 = this.v1.toArray(), M.v2 = this.v2.toArray(), M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.v1.fromArray(M.v1), this.v2.fromArray(M.v2), this;
|
|
}
|
|
}
|
|
RN.prototype.isLineCurve = !0;
|
|
class ic extends vD {
|
|
constructor(M = new O(), D = new O()) {
|
|
super(), this.type = "LineCurve3", this.isLineCurve3 = !0, this.v1 = M, this.v2 = D;
|
|
}
|
|
getPoint(M, D = new O()) {
|
|
const t = D;
|
|
return M === 1 ? t.copy(this.v2) : (t.copy(this.v2).sub(this.v1), t.multiplyScalar(M).add(this.v1)), t;
|
|
}
|
|
getPointAt(M, D) {
|
|
return this.getPoint(M, D);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.v1.copy(M.v1), this.v2.copy(M.v2), this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.v1 = this.v1.toArray(), M.v2 = this.v2.toArray(), M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.v1.fromArray(M.v1), this.v2.fromArray(M.v2), this;
|
|
}
|
|
}
|
|
class TA extends vD {
|
|
constructor(M = new q(), D = new q(), t = new q()) {
|
|
super(), this.type = "QuadraticBezierCurve", this.v0 = M, this.v1 = D, this.v2 = t;
|
|
}
|
|
getPoint(M, D = new q()) {
|
|
const t = D, e = this.v0, N = this.v1, A = this.v2;
|
|
return t.set(pe(M, e.x, N.x, A.x), pe(M, e.y, N.y, A.y)), t;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.v0.copy(M.v0), this.v1.copy(M.v1), this.v2.copy(M.v2), this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.v0 = this.v0.toArray(), M.v1 = this.v1.toArray(), M.v2 = this.v2.toArray(), M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.v0.fromArray(M.v0), this.v1.fromArray(M.v1), this.v2.fromArray(M.v2), this;
|
|
}
|
|
}
|
|
TA.prototype.isQuadraticBezierCurve = !0;
|
|
class ki extends vD {
|
|
constructor(M = new O(), D = new O(), t = new O()) {
|
|
super(), this.type = "QuadraticBezierCurve3", this.v0 = M, this.v1 = D, this.v2 = t;
|
|
}
|
|
getPoint(M, D = new O()) {
|
|
const t = D, e = this.v0, N = this.v1, A = this.v2;
|
|
return t.set(pe(M, e.x, N.x, A.x), pe(M, e.y, N.y, A.y), pe(M, e.z, N.z, A.z)), t;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.v0.copy(M.v0), this.v1.copy(M.v1), this.v2.copy(M.v2), this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.v0 = this.v0.toArray(), M.v1 = this.v1.toArray(), M.v2 = this.v2.toArray(), M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.v0.fromArray(M.v0), this.v1.fromArray(M.v1), this.v2.fromArray(M.v2), this;
|
|
}
|
|
}
|
|
ki.prototype.isQuadraticBezierCurve3 = !0;
|
|
class uA extends vD {
|
|
constructor(M = []) {
|
|
super(), this.type = "SplineCurve", this.points = M;
|
|
}
|
|
getPoint(M, D = new q()) {
|
|
const t = D, e = this.points, N = (e.length - 1) * M, A = Math.floor(N), z = N - A, I = e[A === 0 ? A : A - 1], i = e[A], T = e[A > e.length - 2 ? e.length - 1 : A + 1], u = e[A > e.length - 3 ? e.length - 1 : A + 2];
|
|
return t.set(Pz(z, I.x, i.x, T.x, u.x), Pz(z, I.y, i.y, T.y, u.y)), t;
|
|
}
|
|
copy(M) {
|
|
super.copy(M), this.points = [];
|
|
for (let D = 0, t = M.points.length; D < t; D++) {
|
|
const e = M.points[D];
|
|
this.points.push(e.clone());
|
|
}
|
|
return this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
M.points = [];
|
|
for (let D = 0, t = this.points.length; D < t; D++) {
|
|
const e = this.points[D];
|
|
M.points.push(e.toArray());
|
|
}
|
|
return M;
|
|
}
|
|
fromJSON(M) {
|
|
super.fromJSON(M), this.points = [];
|
|
for (let D = 0, t = M.points.length; D < t; D++) {
|
|
const e = M.points[D];
|
|
this.points.push(new q().fromArray(e));
|
|
}
|
|
return this;
|
|
}
|
|
}
|
|
uA.prototype.isSplineCurve = !0;
|
|
var Si = /* @__PURE__ */ Object.freeze({
|
|
__proto__: null,
|
|
ArcCurve: Qi,
|
|
CatmullRomCurve3: fi,
|
|
CubicBezierCurve: IA,
|
|
CubicBezierCurve3: mi,
|
|
EllipseCurve: KN,
|
|
LineCurve: RN,
|
|
LineCurve3: ic,
|
|
QuadraticBezierCurve: TA,
|
|
QuadraticBezierCurve3: ki,
|
|
SplineCurve: uA
|
|
});
|
|
class Ic extends vD {
|
|
constructor() {
|
|
super(), this.type = "CurvePath", this.curves = [], this.autoClose = !1;
|
|
}
|
|
add(M) {
|
|
this.curves.push(M);
|
|
}
|
|
closePath() {
|
|
const M = this.curves[0].getPoint(0), D = this.curves[this.curves.length - 1].getPoint(1);
|
|
M.equals(D) || this.curves.push(new RN(D, M));
|
|
}
|
|
getPoint(M, D) {
|
|
const t = M * this.getLength(), e = this.getCurveLengths();
|
|
let N = 0;
|
|
for (; N < e.length; ) {
|
|
if (e[N] >= t) {
|
|
const A = e[N] - t, z = this.curves[N], I = z.getLength(), i = I === 0 ? 0 : 1 - A / I;
|
|
return z.getPointAt(i, D);
|
|
}
|
|
N++;
|
|
}
|
|
return null;
|
|
}
|
|
getLength() {
|
|
const M = this.getCurveLengths();
|
|
return M[M.length - 1];
|
|
}
|
|
updateArcLengths() {
|
|
this.needsUpdate = !0, this.cacheLengths = null, this.getCurveLengths();
|
|
}
|
|
getCurveLengths() {
|
|
if (this.cacheLengths && this.cacheLengths.length === this.curves.length)
|
|
return this.cacheLengths;
|
|
const M = [];
|
|
let D = 0;
|
|
for (let t = 0, e = this.curves.length; t < e; t++)
|
|
D += this.curves[t].getLength(), M.push(D);
|
|
return this.cacheLengths = M, M;
|
|
}
|
|
getSpacedPoints(M = 40) {
|
|
const D = [];
|
|
for (let t = 0; t <= M; t++)
|
|
D.push(this.getPoint(t / M));
|
|
return this.autoClose && D.push(D[0]), D;
|
|
}
|
|
getPoints(M = 12) {
|
|
const D = [];
|
|
let t;
|
|
for (let e = 0, N = this.curves; e < N.length; e++) {
|
|
const A = N[e], z = A && A.isEllipseCurve ? M * 2 : A && (A.isLineCurve || A.isLineCurve3) ? 1 : A && A.isSplineCurve ? M * A.points.length : M, I = A.getPoints(z);
|
|
for (let i = 0; i < I.length; i++) {
|
|
const T = I[i];
|
|
t && t.equals(T) || (D.push(T), t = T);
|
|
}
|
|
}
|
|
return this.autoClose && D.length > 1 && !D[D.length - 1].equals(D[0]) && D.push(D[0]), D;
|
|
}
|
|
copy(M) {
|
|
super.copy(M), this.curves = [];
|
|
for (let D = 0, t = M.curves.length; D < t; D++) {
|
|
const e = M.curves[D];
|
|
this.curves.push(e.clone());
|
|
}
|
|
return this.autoClose = M.autoClose, this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
M.autoClose = this.autoClose, M.curves = [];
|
|
for (let D = 0, t = this.curves.length; D < t; D++) {
|
|
const e = this.curves[D];
|
|
M.curves.push(e.toJSON());
|
|
}
|
|
return M;
|
|
}
|
|
fromJSON(M) {
|
|
super.fromJSON(M), this.autoClose = M.autoClose, this.curves = [];
|
|
for (let D = 0, t = M.curves.length; D < t; D++) {
|
|
const e = M.curves[D];
|
|
this.curves.push(new Si[e.type]().fromJSON(e));
|
|
}
|
|
return this;
|
|
}
|
|
}
|
|
class Bn extends Ic {
|
|
constructor(M) {
|
|
super(), this.type = "Path", this.currentPoint = new q(), M && this.setFromPoints(M);
|
|
}
|
|
setFromPoints(M) {
|
|
this.moveTo(M[0].x, M[0].y);
|
|
for (let D = 1, t = M.length; D < t; D++)
|
|
this.lineTo(M[D].x, M[D].y);
|
|
return this;
|
|
}
|
|
moveTo(M, D) {
|
|
return this.currentPoint.set(M, D), this;
|
|
}
|
|
lineTo(M, D) {
|
|
const t = new RN(this.currentPoint.clone(), new q(M, D));
|
|
return this.curves.push(t), this.currentPoint.set(M, D), this;
|
|
}
|
|
quadraticCurveTo(M, D, t, e) {
|
|
const N = new TA(this.currentPoint.clone(), new q(M, D), new q(t, e));
|
|
return this.curves.push(N), this.currentPoint.set(t, e), this;
|
|
}
|
|
bezierCurveTo(M, D, t, e, N, A) {
|
|
const z = new IA(this.currentPoint.clone(), new q(M, D), new q(t, e), new q(N, A));
|
|
return this.curves.push(z), this.currentPoint.set(N, A), this;
|
|
}
|
|
splineThru(M) {
|
|
const D = [this.currentPoint.clone()].concat(M), t = new uA(D);
|
|
return this.curves.push(t), this.currentPoint.copy(M[M.length - 1]), this;
|
|
}
|
|
arc(M, D, t, e, N, A) {
|
|
const z = this.currentPoint.x, I = this.currentPoint.y;
|
|
return this.absarc(M + z, D + I, t, e, N, A), this;
|
|
}
|
|
absarc(M, D, t, e, N, A) {
|
|
return this.absellipse(M, D, t, t, e, N, A), this;
|
|
}
|
|
ellipse(M, D, t, e, N, A, z, I) {
|
|
const i = this.currentPoint.x, T = this.currentPoint.y;
|
|
return this.absellipse(M + i, D + T, t, e, N, A, z, I), this;
|
|
}
|
|
absellipse(M, D, t, e, N, A, z, I) {
|
|
const i = new KN(M, D, t, e, N, A, z, I);
|
|
if (this.curves.length > 0) {
|
|
const u = i.getPoint(0);
|
|
u.equals(this.currentPoint) || this.lineTo(u.x, u.y);
|
|
}
|
|
this.curves.push(i);
|
|
const T = i.getPoint(1);
|
|
return this.currentPoint.copy(T), this;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.currentPoint.copy(M.currentPoint), this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
return M.currentPoint = this.currentPoint.toArray(), M;
|
|
}
|
|
fromJSON(M) {
|
|
return super.fromJSON(M), this.currentPoint.fromArray(M.currentPoint), this;
|
|
}
|
|
}
|
|
class ge extends Bn {
|
|
constructor(M) {
|
|
super(M), this.uuid = bD(), this.type = "Shape", this.holes = [];
|
|
}
|
|
getPointsHoles(M) {
|
|
const D = [];
|
|
for (let t = 0, e = this.holes.length; t < e; t++)
|
|
D[t] = this.holes[t].getPoints(M);
|
|
return D;
|
|
}
|
|
extractPoints(M) {
|
|
return {
|
|
shape: this.getPoints(M),
|
|
holes: this.getPointsHoles(M)
|
|
};
|
|
}
|
|
copy(M) {
|
|
super.copy(M), this.holes = [];
|
|
for (let D = 0, t = M.holes.length; D < t; D++) {
|
|
const e = M.holes[D];
|
|
this.holes.push(e.clone());
|
|
}
|
|
return this;
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON();
|
|
M.uuid = this.uuid, M.holes = [];
|
|
for (let D = 0, t = this.holes.length; D < t; D++) {
|
|
const e = this.holes[D];
|
|
M.holes.push(e.toJSON());
|
|
}
|
|
return M;
|
|
}
|
|
fromJSON(M) {
|
|
super.fromJSON(M), this.uuid = M.uuid, this.holes = [];
|
|
for (let D = 0, t = M.holes.length; D < t; D++) {
|
|
const e = M.holes[D];
|
|
this.holes.push(new Bn().fromJSON(e));
|
|
}
|
|
return this;
|
|
}
|
|
}
|
|
const Tc = {
|
|
triangulate: function(n, M, D = 2) {
|
|
const t = M && M.length, e = t ? M[0] * D : n.length;
|
|
let N = Zi(n, 0, e, D, !0);
|
|
const A = [];
|
|
if (!N || N.next === N.prev)
|
|
return A;
|
|
let z, I, i, T, u, g, s;
|
|
if (t && (N = cc(n, M, N, D)), n.length > 80 * D) {
|
|
z = i = n[0], I = T = n[1];
|
|
for (let j = D; j < e; j += D)
|
|
u = n[j], g = n[j + 1], u < z && (z = u), g < I && (I = g), u > i && (i = u), g > T && (T = g);
|
|
s = Math.max(i - z, T - I), s = s !== 0 ? 1 / s : 0;
|
|
}
|
|
return Se(N, A, D, z, I, s), A;
|
|
}
|
|
};
|
|
function Zi(n, M, D, t, e) {
|
|
let N, A;
|
|
if (e === lc(n, M, D, t) > 0)
|
|
for (N = M; N < D; N += t)
|
|
A = Fz(N, n[N], n[N + 1], A);
|
|
else
|
|
for (N = D - t; N >= M; N -= t)
|
|
A = Fz(N, n[N], n[N + 1], A);
|
|
return A && PN(A, A.next) && (_e(A), A = A.next), A;
|
|
}
|
|
function jt(n, M) {
|
|
if (!n)
|
|
return n;
|
|
M || (M = n);
|
|
let D = n, t;
|
|
do
|
|
if (t = !1, !D.steiner && (PN(D, D.next) || XM(D.prev, D, D.next) === 0)) {
|
|
if (_e(D), D = M = D.prev, D === D.next)
|
|
break;
|
|
t = !0;
|
|
} else
|
|
D = D.next;
|
|
while (t || D !== M);
|
|
return M;
|
|
}
|
|
function Se(n, M, D, t, e, N, A) {
|
|
if (!n)
|
|
return;
|
|
!A && N && Cc(n, t, e, N);
|
|
let z = n, I, i;
|
|
for (; n.prev !== n.next; ) {
|
|
if (I = n.prev, i = n.next, N ? gc(n, t, e, N) : uc(n)) {
|
|
M.push(I.i / D), M.push(n.i / D), M.push(i.i / D), _e(n), n = i.next, z = i.next;
|
|
continue;
|
|
}
|
|
if (n = i, n === z) {
|
|
A ? A === 1 ? (n = rc(jt(n), M, D), Se(n, M, D, t, e, N, 2)) : A === 2 && sc(n, M, D, t, e, N) : Se(jt(n), M, D, t, e, N, 1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
function uc(n) {
|
|
const M = n.prev, D = n, t = n.next;
|
|
if (XM(M, D, t) >= 0)
|
|
return !1;
|
|
let e = n.next.next;
|
|
for (; e !== n.prev; ) {
|
|
if ($t(M.x, M.y, D.x, D.y, t.x, t.y, e.x, e.y) && XM(e.prev, e, e.next) >= 0)
|
|
return !1;
|
|
e = e.next;
|
|
}
|
|
return !0;
|
|
}
|
|
function gc(n, M, D, t) {
|
|
const e = n.prev, N = n, A = n.next;
|
|
if (XM(e, N, A) >= 0)
|
|
return !1;
|
|
const z = e.x < N.x ? e.x < A.x ? e.x : A.x : N.x < A.x ? N.x : A.x, I = e.y < N.y ? e.y < A.y ? e.y : A.y : N.y < A.y ? N.y : A.y, i = e.x > N.x ? e.x > A.x ? e.x : A.x : N.x > A.x ? N.x : A.x, T = e.y > N.y ? e.y > A.y ? e.y : A.y : N.y > A.y ? N.y : A.y, u = Vn(z, I, M, D, t), g = Vn(i, T, M, D, t);
|
|
let s = n.prevZ, j = n.nextZ;
|
|
for (; s && s.z >= u && j && j.z <= g; ) {
|
|
if (s !== n.prev && s !== n.next && $t(e.x, e.y, N.x, N.y, A.x, A.y, s.x, s.y) && XM(s.prev, s, s.next) >= 0 || (s = s.prevZ, j !== n.prev && j !== n.next && $t(e.x, e.y, N.x, N.y, A.x, A.y, j.x, j.y) && XM(j.prev, j, j.next) >= 0))
|
|
return !1;
|
|
j = j.nextZ;
|
|
}
|
|
for (; s && s.z >= u; ) {
|
|
if (s !== n.prev && s !== n.next && $t(e.x, e.y, N.x, N.y, A.x, A.y, s.x, s.y) && XM(s.prev, s, s.next) >= 0)
|
|
return !1;
|
|
s = s.prevZ;
|
|
}
|
|
for (; j && j.z <= g; ) {
|
|
if (j !== n.prev && j !== n.next && $t(e.x, e.y, N.x, N.y, A.x, A.y, j.x, j.y) && XM(j.prev, j, j.next) >= 0)
|
|
return !1;
|
|
j = j.nextZ;
|
|
}
|
|
return !0;
|
|
}
|
|
function rc(n, M, D) {
|
|
let t = n;
|
|
do {
|
|
const e = t.prev, N = t.next.next;
|
|
!PN(e, N) && _i(e, t, t.next, N) && Ze(e, N) && Ze(N, e) && (M.push(e.i / D), M.push(t.i / D), M.push(N.i / D), _e(t), _e(t.next), t = n = N), t = t.next;
|
|
} while (t !== n);
|
|
return jt(t);
|
|
}
|
|
function sc(n, M, D, t, e, N) {
|
|
let A = n;
|
|
do {
|
|
let z = A.next.next;
|
|
for (; z !== A.prev; ) {
|
|
if (A.i !== z.i && Oc(A, z)) {
|
|
let I = bi(A, z);
|
|
A = jt(A, A.next), I = jt(I, I.next), Se(A, M, D, t, e, N), Se(I, M, D, t, e, N);
|
|
return;
|
|
}
|
|
z = z.next;
|
|
}
|
|
A = A.next;
|
|
} while (A !== n);
|
|
}
|
|
function cc(n, M, D, t) {
|
|
const e = [];
|
|
let N, A, z, I, i;
|
|
for (N = 0, A = M.length; N < A; N++)
|
|
z = M[N] * t, I = N < A - 1 ? M[N + 1] * t : n.length, i = Zi(n, z, I, t, !1), i === i.next && (i.steiner = !0), e.push(wc(i));
|
|
for (e.sort(jc), N = 0; N < e.length; N++)
|
|
yc(e[N], D), D = jt(D, D.next);
|
|
return D;
|
|
}
|
|
function jc(n, M) {
|
|
return n.x - M.x;
|
|
}
|
|
function yc(n, M) {
|
|
if (M = oc(n, M), M) {
|
|
const D = bi(M, n);
|
|
jt(M, M.next), jt(D, D.next);
|
|
}
|
|
}
|
|
function oc(n, M) {
|
|
let D = M;
|
|
const t = n.x, e = n.y;
|
|
let N = -1 / 0, A;
|
|
do {
|
|
if (e <= D.y && e >= D.next.y && D.next.y !== D.y) {
|
|
const g = D.x + (e - D.y) * (D.next.x - D.x) / (D.next.y - D.y);
|
|
if (g <= t && g > N) {
|
|
if (N = g, g === t) {
|
|
if (e === D.y)
|
|
return D;
|
|
if (e === D.next.y)
|
|
return D.next;
|
|
}
|
|
A = D.x < D.next.x ? D : D.next;
|
|
}
|
|
}
|
|
D = D.next;
|
|
} while (D !== M);
|
|
if (!A)
|
|
return null;
|
|
if (t === N)
|
|
return A;
|
|
const z = A, I = A.x, i = A.y;
|
|
let T = 1 / 0, u;
|
|
D = A;
|
|
do
|
|
t >= D.x && D.x >= I && t !== D.x && $t(e < i ? t : N, e, I, i, e < i ? N : t, e, D.x, D.y) && (u = Math.abs(e - D.y) / (t - D.x), Ze(D, n) && (u < T || u === T && (D.x > A.x || D.x === A.x && ac(A, D))) && (A = D, T = u)), D = D.next;
|
|
while (D !== z);
|
|
return A;
|
|
}
|
|
function ac(n, M) {
|
|
return XM(n.prev, n, M.prev) < 0 && XM(M.next, n, n.next) < 0;
|
|
}
|
|
function Cc(n, M, D, t) {
|
|
let e = n;
|
|
do
|
|
e.z === null && (e.z = Vn(e.x, e.y, M, D, t)), e.prevZ = e.prev, e.nextZ = e.next, e = e.next;
|
|
while (e !== n);
|
|
e.prevZ.nextZ = null, e.prevZ = null, Lc(e);
|
|
}
|
|
function Lc(n) {
|
|
let M, D, t, e, N, A, z, I, i = 1;
|
|
do {
|
|
for (D = n, n = null, N = null, A = 0; D; ) {
|
|
for (A++, t = D, z = 0, M = 0; M < i && (z++, t = t.nextZ, !!t); M++)
|
|
;
|
|
for (I = i; z > 0 || I > 0 && t; )
|
|
z !== 0 && (I === 0 || !t || D.z <= t.z) ? (e = D, D = D.nextZ, z--) : (e = t, t = t.nextZ, I--), N ? N.nextZ = e : n = e, e.prevZ = N, N = e;
|
|
D = t;
|
|
}
|
|
N.nextZ = null, i *= 2;
|
|
} while (A > 1);
|
|
return n;
|
|
}
|
|
function Vn(n, M, D, t, e) {
|
|
return n = 32767 * (n - D) * e, M = 32767 * (M - t) * e, n = (n | n << 8) & 16711935, n = (n | n << 4) & 252645135, n = (n | n << 2) & 858993459, n = (n | n << 1) & 1431655765, M = (M | M << 8) & 16711935, M = (M | M << 4) & 252645135, M = (M | M << 2) & 858993459, M = (M | M << 1) & 1431655765, n | M << 1;
|
|
}
|
|
function wc(n) {
|
|
let M = n, D = n;
|
|
do
|
|
(M.x < D.x || M.x === D.x && M.y < D.y) && (D = M), M = M.next;
|
|
while (M !== n);
|
|
return D;
|
|
}
|
|
function $t(n, M, D, t, e, N, A, z) {
|
|
return (e - A) * (M - z) - (n - A) * (N - z) >= 0 && (n - A) * (t - z) - (D - A) * (M - z) >= 0 && (D - A) * (N - z) - (e - A) * (t - z) >= 0;
|
|
}
|
|
function Oc(n, M) {
|
|
return n.next.i !== M.i && n.prev.i !== M.i && !xc(n, M) && (Ze(n, M) && Ze(M, n) && Ec(n, M) && (XM(n.prev, n, M.prev) || XM(n, M.prev, M)) || PN(n, M) && XM(n.prev, n, n.next) > 0 && XM(M.prev, M, M.next) > 0);
|
|
}
|
|
function XM(n, M, D) {
|
|
return (M.y - n.y) * (D.x - M.x) - (M.x - n.x) * (D.y - M.y);
|
|
}
|
|
function PN(n, M) {
|
|
return n.x === M.x && n.y === M.y;
|
|
}
|
|
function _i(n, M, D, t) {
|
|
const e = wN(XM(n, M, D)), N = wN(XM(n, M, t)), A = wN(XM(D, t, n)), z = wN(XM(D, t, M));
|
|
return !!(e !== N && A !== z || e === 0 && LN(n, D, M) || N === 0 && LN(n, t, M) || A === 0 && LN(D, n, t) || z === 0 && LN(D, M, t));
|
|
}
|
|
function LN(n, M, D) {
|
|
return M.x <= Math.max(n.x, D.x) && M.x >= Math.min(n.x, D.x) && M.y <= Math.max(n.y, D.y) && M.y >= Math.min(n.y, D.y);
|
|
}
|
|
function wN(n) {
|
|
return n > 0 ? 1 : n < 0 ? -1 : 0;
|
|
}
|
|
function xc(n, M) {
|
|
let D = n;
|
|
do {
|
|
if (D.i !== n.i && D.next.i !== n.i && D.i !== M.i && D.next.i !== M.i && _i(D, D.next, n, M))
|
|
return !0;
|
|
D = D.next;
|
|
} while (D !== n);
|
|
return !1;
|
|
}
|
|
function Ze(n, M) {
|
|
return XM(n.prev, n, n.next) < 0 ? XM(n, M, n.next) >= 0 && XM(n, n.prev, M) >= 0 : XM(n, M, n.prev) < 0 || XM(n, n.next, M) < 0;
|
|
}
|
|
function Ec(n, M) {
|
|
let D = n, t = !1;
|
|
const e = (n.x + M.x) / 2, N = (n.y + M.y) / 2;
|
|
do
|
|
D.y > N != D.next.y > N && D.next.y !== D.y && e < (D.next.x - D.x) * (N - D.y) / (D.next.y - D.y) + D.x && (t = !t), D = D.next;
|
|
while (D !== n);
|
|
return t;
|
|
}
|
|
function bi(n, M) {
|
|
const D = new Hn(n.i, n.x, n.y), t = new Hn(M.i, M.x, M.y), e = n.next, N = M.prev;
|
|
return n.next = M, M.prev = n, D.next = e, e.prev = D, t.next = D, D.prev = t, N.next = t, t.prev = N, t;
|
|
}
|
|
function Fz(n, M, D, t) {
|
|
const e = new Hn(n, M, D);
|
|
return t ? (e.next = t.next, e.prev = t, t.next.prev = e, t.next = e) : (e.prev = e, e.next = e), e;
|
|
}
|
|
function _e(n) {
|
|
n.next.prev = n.prev, n.prev.next = n.next, n.prevZ && (n.prevZ.nextZ = n.nextZ), n.nextZ && (n.nextZ.prevZ = n.prevZ);
|
|
}
|
|
function Hn(n, M, D) {
|
|
this.i = n, this.x = M, this.y = D, this.prev = null, this.next = null, this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = !1;
|
|
}
|
|
function lc(n, M, D, t) {
|
|
let e = 0;
|
|
for (let N = M, A = D - t; N < D; N += t)
|
|
e += (n[A] - n[N]) * (n[N + 1] + n[A + 1]), A = N;
|
|
return e;
|
|
}
|
|
class rt {
|
|
static area(M) {
|
|
const D = M.length;
|
|
let t = 0;
|
|
for (let e = D - 1, N = 0; N < D; e = N++)
|
|
t += M[e].x * M[N].y - M[N].x * M[e].y;
|
|
return t * 0.5;
|
|
}
|
|
static isClockWise(M) {
|
|
return rt.area(M) < 0;
|
|
}
|
|
static triangulateShape(M, D) {
|
|
const t = [], e = [], N = [];
|
|
Bz(M), Vz(t, M);
|
|
let A = M.length;
|
|
D.forEach(Bz);
|
|
for (let I = 0; I < D.length; I++)
|
|
e.push(A), A += D[I].length, Vz(t, D[I]);
|
|
const z = Tc.triangulate(t, e);
|
|
for (let I = 0; I < z.length; I += 3)
|
|
N.push(z.slice(I, I + 3));
|
|
return N;
|
|
}
|
|
}
|
|
function Bz(n) {
|
|
const M = n.length;
|
|
M > 2 && n[M - 1].equals(n[0]) && n.pop();
|
|
}
|
|
function Vz(n, M) {
|
|
for (let D = 0; D < M.length; D++)
|
|
n.push(M[D].x), n.push(M[D].y);
|
|
}
|
|
class re extends VM {
|
|
constructor(M = new ge([new q(0.5, 0.5), new q(-0.5, 0.5), new q(-0.5, -0.5), new q(0.5, -0.5)]), D = {}) {
|
|
super(), this.type = "ExtrudeGeometry", this.parameters = {
|
|
shapes: M,
|
|
options: D
|
|
}, M = Array.isArray(M) ? M : [M];
|
|
const t = this, e = [], N = [];
|
|
for (let z = 0, I = M.length; z < I; z++) {
|
|
const i = M[z];
|
|
A(i);
|
|
}
|
|
this.setAttribute("position", new WM(e, 3)), this.setAttribute("uv", new WM(N, 2)), this.computeVertexNormals();
|
|
function A(z) {
|
|
const I = [], i = D.curveSegments !== void 0 ? D.curveSegments : 12, T = D.steps !== void 0 ? D.steps : 1;
|
|
let u = D.depth !== void 0 ? D.depth : 1, g = D.bevelEnabled !== void 0 ? D.bevelEnabled : !0, s = D.bevelThickness !== void 0 ? D.bevelThickness : 0.2, j = D.bevelSize !== void 0 ? D.bevelSize : s - 0.1, y = D.bevelOffset !== void 0 ? D.bevelOffset : 0, a = D.bevelSegments !== void 0 ? D.bevelSegments : 3;
|
|
const c = D.extrudePath, r = D.UVGenerator !== void 0 ? D.UVGenerator : dc;
|
|
D.amount !== void 0 && (console.warn("THREE.ExtrudeBufferGeometry: amount has been renamed to depth."), u = D.amount);
|
|
let l, C = !1, E, d, p, H;
|
|
c && (l = c.getSpacedPoints(T), C = !0, g = !1, E = c.computeFrenetFrames(T, !1), d = new O(), p = new O(), H = new O()), g || (a = 0, s = 0, j = 0, y = 0);
|
|
const DM = z.extractPoints(i);
|
|
let G = DM.shape;
|
|
const o = DM.holes;
|
|
if (!rt.isClockWise(G)) {
|
|
G = G.reverse();
|
|
for (let P = 0, $ = o.length; P < $; P++) {
|
|
const X = o[P];
|
|
rt.isClockWise(X) && (o[P] = X.reverse());
|
|
}
|
|
}
|
|
const Y = rt.triangulateShape(G, o), k = G;
|
|
for (let P = 0, $ = o.length; P < $; P++) {
|
|
const X = o[P];
|
|
G = G.concat(X);
|
|
}
|
|
function f(P, $, X) {
|
|
return $ || console.error("THREE.ExtrudeGeometry: vec does not exist"), $.clone().multiplyScalar(X).add(P);
|
|
}
|
|
const Q = G.length, b = Y.length;
|
|
function W(P, $, X) {
|
|
let iM, nM, CM;
|
|
const xM = P.x - $.x, QM = P.y - $.y, FM = X.x - P.x, RM = X.y - P.y, x = xM * xM + QM * QM, L = xM * RM - QM * FM;
|
|
if (Math.abs(L) > Number.EPSILON) {
|
|
const R = Math.sqrt(x), J = Math.sqrt(FM * FM + RM * RM), gM = $.x - QM / R, K = $.y + xM / R, yM = X.x - RM / J, sM = X.y + FM / J, NM = ((yM - gM) * RM - (sM - K) * FM) / (xM * RM - QM * FM);
|
|
iM = gM + xM * NM - P.x, nM = K + QM * NM - P.y;
|
|
const tM = iM * iM + nM * nM;
|
|
if (tM <= 2)
|
|
return new q(iM, nM);
|
|
CM = Math.sqrt(tM / 2);
|
|
} else {
|
|
let R = !1;
|
|
xM > Number.EPSILON ? FM > Number.EPSILON && (R = !0) : xM < -Number.EPSILON ? FM < -Number.EPSILON && (R = !0) : Math.sign(QM) === Math.sign(RM) && (R = !0), R ? (iM = -QM, nM = xM, CM = Math.sqrt(x)) : (iM = xM, nM = QM, CM = Math.sqrt(x / 2));
|
|
}
|
|
return new q(iM / CM, nM / CM);
|
|
}
|
|
const IM = [];
|
|
for (let P = 0, $ = k.length, X = $ - 1, iM = P + 1; P < $; P++, X++, iM++)
|
|
X === $ && (X = 0), iM === $ && (iM = 0), IM[P] = W(k[P], k[X], k[iM]);
|
|
const Z = [];
|
|
let V, eM = IM.concat();
|
|
for (let P = 0, $ = o.length; P < $; P++) {
|
|
const X = o[P];
|
|
V = [];
|
|
for (let iM = 0, nM = X.length, CM = nM - 1, xM = iM + 1; iM < nM; iM++, CM++, xM++)
|
|
CM === nM && (CM = 0), xM === nM && (xM = 0), V[iM] = W(X[iM], X[CM], X[xM]);
|
|
Z.push(V), eM = eM.concat(V);
|
|
}
|
|
for (let P = 0; P < a; P++) {
|
|
const $ = P / a, X = s * Math.cos($ * Math.PI / 2), iM = j * Math.sin($ * Math.PI / 2) + y;
|
|
for (let nM = 0, CM = k.length; nM < CM; nM++) {
|
|
const xM = f(k[nM], IM[nM], iM);
|
|
rM(xM.x, xM.y, -X);
|
|
}
|
|
for (let nM = 0, CM = o.length; nM < CM; nM++) {
|
|
const xM = o[nM];
|
|
V = Z[nM];
|
|
for (let QM = 0, FM = xM.length; QM < FM; QM++) {
|
|
const RM = f(xM[QM], V[QM], iM);
|
|
rM(RM.x, RM.y, -X);
|
|
}
|
|
}
|
|
}
|
|
const uM = j + y;
|
|
for (let P = 0; P < Q; P++) {
|
|
const $ = g ? f(G[P], eM[P], uM) : G[P];
|
|
C ? (p.copy(E.normals[0]).multiplyScalar($.x), d.copy(E.binormals[0]).multiplyScalar($.y), H.copy(l[0]).add(p).add(d), rM(H.x, H.y, H.z)) : rM($.x, $.y, 0);
|
|
}
|
|
for (let P = 1; P <= T; P++)
|
|
for (let $ = 0; $ < Q; $++) {
|
|
const X = g ? f(G[$], eM[$], uM) : G[$];
|
|
C ? (p.copy(E.normals[P]).multiplyScalar(X.x), d.copy(E.binormals[P]).multiplyScalar(X.y), H.copy(l[P]).add(p).add(d), rM(H.x, H.y, H.z)) : rM(X.x, X.y, u / T * P);
|
|
}
|
|
for (let P = a - 1; P >= 0; P--) {
|
|
const $ = P / a, X = s * Math.cos($ * Math.PI / 2), iM = j * Math.sin($ * Math.PI / 2) + y;
|
|
for (let nM = 0, CM = k.length; nM < CM; nM++) {
|
|
const xM = f(k[nM], IM[nM], iM);
|
|
rM(xM.x, xM.y, u + X);
|
|
}
|
|
for (let nM = 0, CM = o.length; nM < CM; nM++) {
|
|
const xM = o[nM];
|
|
V = Z[nM];
|
|
for (let QM = 0, FM = xM.length; QM < FM; QM++) {
|
|
const RM = f(xM[QM], V[QM], iM);
|
|
C ? rM(RM.x, RM.y + l[T - 1].y, l[T - 1].x + X) : rM(RM.x, RM.y, u + X);
|
|
}
|
|
}
|
|
}
|
|
jM(), _();
|
|
function jM() {
|
|
const P = e.length / 3;
|
|
if (g) {
|
|
let $ = 0, X = Q * $;
|
|
for (let iM = 0; iM < b; iM++) {
|
|
const nM = Y[iM];
|
|
wM(nM[2] + X, nM[1] + X, nM[0] + X);
|
|
}
|
|
$ = T + a * 2, X = Q * $;
|
|
for (let iM = 0; iM < b; iM++) {
|
|
const nM = Y[iM];
|
|
wM(nM[0] + X, nM[1] + X, nM[2] + X);
|
|
}
|
|
} else {
|
|
for (let $ = 0; $ < b; $++) {
|
|
const X = Y[$];
|
|
wM(X[2], X[1], X[0]);
|
|
}
|
|
for (let $ = 0; $ < b; $++) {
|
|
const X = Y[$];
|
|
wM(X[0] + Q * T, X[1] + Q * T, X[2] + Q * T);
|
|
}
|
|
}
|
|
t.addGroup(P, e.length / 3 - P, 0);
|
|
}
|
|
function _() {
|
|
const P = e.length / 3;
|
|
let $ = 0;
|
|
kM(k, $), $ += k.length;
|
|
for (let X = 0, iM = o.length; X < iM; X++) {
|
|
const nM = o[X];
|
|
kM(nM, $), $ += nM.length;
|
|
}
|
|
t.addGroup(P, e.length / 3 - P, 1);
|
|
}
|
|
function kM(P, $) {
|
|
let X = P.length;
|
|
for (; --X >= 0; ) {
|
|
const iM = X;
|
|
let nM = X - 1;
|
|
nM < 0 && (nM = P.length - 1);
|
|
for (let CM = 0, xM = T + a * 2; CM < xM; CM++) {
|
|
const QM = Q * CM, FM = Q * (CM + 1), RM = $ + iM + QM, x = $ + nM + QM, L = $ + nM + FM, R = $ + iM + FM;
|
|
zM(RM, x, L, R);
|
|
}
|
|
}
|
|
}
|
|
function rM(P, $, X) {
|
|
I.push(P), I.push($), I.push(X);
|
|
}
|
|
function wM(P, $, X) {
|
|
vM(P), vM($), vM(X);
|
|
const iM = e.length / 3, nM = r.generateTopUV(t, e, iM - 3, iM - 2, iM - 1);
|
|
OM(nM[0]), OM(nM[1]), OM(nM[2]);
|
|
}
|
|
function zM(P, $, X, iM) {
|
|
vM(P), vM($), vM(iM), vM($), vM(X), vM(iM);
|
|
const nM = e.length / 3, CM = r.generateSideWallUV(t, e, nM - 6, nM - 3, nM - 2, nM - 1);
|
|
OM(CM[0]), OM(CM[1]), OM(CM[3]), OM(CM[1]), OM(CM[2]), OM(CM[3]);
|
|
}
|
|
function vM(P) {
|
|
e.push(I[P * 3 + 0]), e.push(I[P * 3 + 1]), e.push(I[P * 3 + 2]);
|
|
}
|
|
function OM(P) {
|
|
N.push(P.x), N.push(P.y);
|
|
}
|
|
}
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON(), D = this.parameters.shapes, t = this.parameters.options;
|
|
return vc(D, t, M);
|
|
}
|
|
static fromJSON(M, D) {
|
|
const t = [];
|
|
for (let N = 0, A = M.shapes.length; N < A; N++) {
|
|
const z = D[M.shapes[N]];
|
|
t.push(z);
|
|
}
|
|
const e = M.options.extrudePath;
|
|
return e !== void 0 && (M.options.extrudePath = new Si[e.type]().fromJSON(e)), new re(t, M.options);
|
|
}
|
|
}
|
|
const dc = {
|
|
generateTopUV: function(n, M, D, t, e) {
|
|
const N = M[D * 3], A = M[D * 3 + 1], z = M[t * 3], I = M[t * 3 + 1], i = M[e * 3], T = M[e * 3 + 1];
|
|
return [
|
|
new q(N, A),
|
|
new q(z, I),
|
|
new q(i, T)
|
|
];
|
|
},
|
|
generateSideWallUV: function(n, M, D, t, e, N) {
|
|
const A = M[D * 3], z = M[D * 3 + 1], I = M[D * 3 + 2], i = M[t * 3], T = M[t * 3 + 1], u = M[t * 3 + 2], g = M[e * 3], s = M[e * 3 + 1], j = M[e * 3 + 2], y = M[N * 3], a = M[N * 3 + 1], c = M[N * 3 + 2];
|
|
return Math.abs(z - T) < Math.abs(A - i) ? [
|
|
new q(A, 1 - I),
|
|
new q(i, 1 - u),
|
|
new q(g, 1 - j),
|
|
new q(y, 1 - c)
|
|
] : [
|
|
new q(z, 1 - I),
|
|
new q(T, 1 - u),
|
|
new q(s, 1 - j),
|
|
new q(a, 1 - c)
|
|
];
|
|
}
|
|
};
|
|
function vc(n, M, D) {
|
|
if (D.shapes = [], Array.isArray(n))
|
|
for (let t = 0, e = n.length; t < e; t++) {
|
|
const N = n[t];
|
|
D.shapes.push(N.uuid);
|
|
}
|
|
else
|
|
D.shapes.push(n.uuid);
|
|
return M.extrudePath !== void 0 && (D.options.extrudePath = M.extrudePath.toJSON()), D;
|
|
}
|
|
class FN extends VM {
|
|
constructor(M = new ge([new q(0, 0.5), new q(-0.5, -0.5), new q(0.5, -0.5)]), D = 12) {
|
|
super(), this.type = "ShapeGeometry", this.parameters = {
|
|
shapes: M,
|
|
curveSegments: D
|
|
};
|
|
const t = [], e = [], N = [], A = [];
|
|
let z = 0, I = 0;
|
|
if (Array.isArray(M) === !1)
|
|
i(M);
|
|
else
|
|
for (let T = 0; T < M.length; T++)
|
|
i(M[T]), this.addGroup(z, I, T), z += I, I = 0;
|
|
this.setIndex(t), this.setAttribute("position", new WM(e, 3)), this.setAttribute("normal", new WM(N, 3)), this.setAttribute("uv", new WM(A, 2));
|
|
function i(T) {
|
|
const u = e.length / 3, g = T.extractPoints(D);
|
|
let s = g.shape;
|
|
const j = g.holes;
|
|
rt.isClockWise(s) === !1 && (s = s.reverse());
|
|
for (let a = 0, c = j.length; a < c; a++) {
|
|
const r = j[a];
|
|
rt.isClockWise(r) === !0 && (j[a] = r.reverse());
|
|
}
|
|
const y = rt.triangulateShape(s, j);
|
|
for (let a = 0, c = j.length; a < c; a++) {
|
|
const r = j[a];
|
|
s = s.concat(r);
|
|
}
|
|
for (let a = 0, c = s.length; a < c; a++) {
|
|
const r = s[a];
|
|
e.push(r.x, r.y, 0), N.push(0, 0, 1), A.push(r.x, r.y);
|
|
}
|
|
for (let a = 0, c = y.length; a < c; a++) {
|
|
const r = y[a], l = r[0] + u, C = r[1] + u, E = r[2] + u;
|
|
t.push(l, C, E), I += 3;
|
|
}
|
|
}
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON(), D = this.parameters.shapes;
|
|
return pc(D, M);
|
|
}
|
|
static fromJSON(M, D) {
|
|
const t = [];
|
|
for (let e = 0, N = M.shapes.length; e < N; e++) {
|
|
const A = D[M.shapes[e]];
|
|
t.push(A);
|
|
}
|
|
return new FN(t, M.curveSegments);
|
|
}
|
|
}
|
|
function pc(n, M) {
|
|
if (M.shapes = [], Array.isArray(n))
|
|
for (let D = 0, t = n.length; D < t; D++) {
|
|
const e = n[D];
|
|
M.shapes.push(e.uuid);
|
|
}
|
|
else
|
|
M.shapes.push(n.uuid);
|
|
return M;
|
|
}
|
|
class hc extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "ShadowMaterial", this.color = new cM(0), this.transparent = !0, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this;
|
|
}
|
|
}
|
|
hc.prototype.isShadowMaterial = !0;
|
|
class Ki extends ID {
|
|
constructor(M) {
|
|
super(), this.defines = { STANDARD: "" }, this.type = "MeshStandardMaterial", this.color = new cM(16777215), this.roughness = 1, this.metalness = 0, this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new cM(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = ie, this.normalScale = new q(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.roughnessMap = null, this.metalnessMap = null, this.alphaMap = null, this.envMap = null, this.envMapIntensity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.flatShading = !1, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.defines = { STANDARD: "" }, this.color.copy(M.color), this.roughness = M.roughness, this.metalness = M.metalness, this.map = M.map, this.lightMap = M.lightMap, this.lightMapIntensity = M.lightMapIntensity, this.aoMap = M.aoMap, this.aoMapIntensity = M.aoMapIntensity, this.emissive.copy(M.emissive), this.emissiveMap = M.emissiveMap, this.emissiveIntensity = M.emissiveIntensity, this.bumpMap = M.bumpMap, this.bumpScale = M.bumpScale, this.normalMap = M.normalMap, this.normalMapType = M.normalMapType, this.normalScale.copy(M.normalScale), this.displacementMap = M.displacementMap, this.displacementScale = M.displacementScale, this.displacementBias = M.displacementBias, this.roughnessMap = M.roughnessMap, this.metalnessMap = M.metalnessMap, this.alphaMap = M.alphaMap, this.envMap = M.envMap, this.envMapIntensity = M.envMapIntensity, this.refractionRatio = M.refractionRatio, this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this.wireframeLinecap = M.wireframeLinecap, this.wireframeLinejoin = M.wireframeLinejoin, this.flatShading = M.flatShading, this;
|
|
}
|
|
}
|
|
Ki.prototype.isMeshStandardMaterial = !0;
|
|
class Yc extends Ki {
|
|
constructor(M) {
|
|
super(), this.defines = {
|
|
STANDARD: "",
|
|
PHYSICAL: ""
|
|
}, this.type = "MeshPhysicalMaterial", this.clearcoatMap = null, this.clearcoatRoughness = 0, this.clearcoatRoughnessMap = null, this.clearcoatNormalScale = new q(1, 1), this.clearcoatNormalMap = null, this.ior = 1.5, Object.defineProperty(this, "reflectivity", {
|
|
get: function() {
|
|
return OD(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);
|
|
},
|
|
set: function(D) {
|
|
this.ior = (1 + 0.4 * D) / (1 - 0.4 * D);
|
|
}
|
|
}), this.sheenColor = new cM(0), this.sheenColorMap = null, this.sheenRoughness = 1, this.sheenRoughnessMap = null, this.transmissionMap = null, this.thickness = 0, this.thicknessMap = null, this.attenuationDistance = 0, this.attenuationColor = new cM(1, 1, 1), this.specularIntensity = 1, this.specularIntensityMap = null, this.specularColor = new cM(1, 1, 1), this.specularColorMap = null, this._sheen = 0, this._clearcoat = 0, this._transmission = 0, this.setValues(M);
|
|
}
|
|
get sheen() {
|
|
return this._sheen;
|
|
}
|
|
set sheen(M) {
|
|
this._sheen > 0 != M > 0 && this.version++, this._sheen = M;
|
|
}
|
|
get clearcoat() {
|
|
return this._clearcoat;
|
|
}
|
|
set clearcoat(M) {
|
|
this._clearcoat > 0 != M > 0 && this.version++, this._clearcoat = M;
|
|
}
|
|
get transmission() {
|
|
return this._transmission;
|
|
}
|
|
set transmission(M) {
|
|
this._transmission > 0 != M > 0 && this.version++, this._transmission = M;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.defines = {
|
|
STANDARD: "",
|
|
PHYSICAL: ""
|
|
}, this.clearcoat = M.clearcoat, this.clearcoatMap = M.clearcoatMap, this.clearcoatRoughness = M.clearcoatRoughness, this.clearcoatRoughnessMap = M.clearcoatRoughnessMap, this.clearcoatNormalMap = M.clearcoatNormalMap, this.clearcoatNormalScale.copy(M.clearcoatNormalScale), this.ior = M.ior, this.sheen = M.sheen, this.sheenColor.copy(M.sheenColor), this.sheenColorMap = M.sheenColorMap, this.sheenRoughness = M.sheenRoughness, this.sheenRoughnessMap = M.sheenRoughnessMap, this.transmission = M.transmission, this.transmissionMap = M.transmissionMap, this.thickness = M.thickness, this.thicknessMap = M.thicknessMap, this.attenuationDistance = M.attenuationDistance, this.attenuationColor.copy(M.attenuationColor), this.specularIntensity = M.specularIntensity, this.specularIntensityMap = M.specularIntensityMap, this.specularColor.copy(M.specularColor), this.specularColorMap = M.specularColorMap, this;
|
|
}
|
|
}
|
|
Yc.prototype.isMeshPhysicalMaterial = !0;
|
|
class Ri extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "MeshPhongMaterial", this.color = new cM(16777215), this.specular = new cM(1118481), this.shininess = 30, this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new cM(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = ie, this.normalScale = new q(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.combine = fN, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.flatShading = !1, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.specular.copy(M.specular), this.shininess = M.shininess, this.map = M.map, this.lightMap = M.lightMap, this.lightMapIntensity = M.lightMapIntensity, this.aoMap = M.aoMap, this.aoMapIntensity = M.aoMapIntensity, this.emissive.copy(M.emissive), this.emissiveMap = M.emissiveMap, this.emissiveIntensity = M.emissiveIntensity, this.bumpMap = M.bumpMap, this.bumpScale = M.bumpScale, this.normalMap = M.normalMap, this.normalMapType = M.normalMapType, this.normalScale.copy(M.normalScale), this.displacementMap = M.displacementMap, this.displacementScale = M.displacementScale, this.displacementBias = M.displacementBias, this.specularMap = M.specularMap, this.alphaMap = M.alphaMap, this.envMap = M.envMap, this.combine = M.combine, this.reflectivity = M.reflectivity, this.refractionRatio = M.refractionRatio, this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this.wireframeLinecap = M.wireframeLinecap, this.wireframeLinejoin = M.wireframeLinejoin, this.flatShading = M.flatShading, this;
|
|
}
|
|
}
|
|
Ri.prototype.isMeshPhongMaterial = !0;
|
|
class Uc extends ID {
|
|
constructor(M) {
|
|
super(), this.defines = { TOON: "" }, this.type = "MeshToonMaterial", this.color = new cM(16777215), this.map = null, this.gradientMap = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new cM(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = ie, this.normalScale = new q(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.alphaMap = null, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.map = M.map, this.gradientMap = M.gradientMap, this.lightMap = M.lightMap, this.lightMapIntensity = M.lightMapIntensity, this.aoMap = M.aoMap, this.aoMapIntensity = M.aoMapIntensity, this.emissive.copy(M.emissive), this.emissiveMap = M.emissiveMap, this.emissiveIntensity = M.emissiveIntensity, this.bumpMap = M.bumpMap, this.bumpScale = M.bumpScale, this.normalMap = M.normalMap, this.normalMapType = M.normalMapType, this.normalScale.copy(M.normalScale), this.displacementMap = M.displacementMap, this.displacementScale = M.displacementScale, this.displacementBias = M.displacementBias, this.alphaMap = M.alphaMap, this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this.wireframeLinecap = M.wireframeLinecap, this.wireframeLinejoin = M.wireframeLinejoin, this;
|
|
}
|
|
}
|
|
Uc.prototype.isMeshToonMaterial = !0;
|
|
class Qc extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "MeshNormalMaterial", this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = ie, this.normalScale = new q(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.flatShading = !1, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.bumpMap = M.bumpMap, this.bumpScale = M.bumpScale, this.normalMap = M.normalMap, this.normalMapType = M.normalMapType, this.normalScale.copy(M.normalScale), this.displacementMap = M.displacementMap, this.displacementScale = M.displacementScale, this.displacementBias = M.displacementBias, this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this.flatShading = M.flatShading, this;
|
|
}
|
|
}
|
|
Qc.prototype.isMeshNormalMaterial = !0;
|
|
class Gn extends ID {
|
|
constructor(M) {
|
|
super(), this.type = "MeshLambertMaterial", this.color = new cM(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new cM(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.combine = fN, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.map = M.map, this.lightMap = M.lightMap, this.lightMapIntensity = M.lightMapIntensity, this.aoMap = M.aoMap, this.aoMapIntensity = M.aoMapIntensity, this.emissive.copy(M.emissive), this.emissiveMap = M.emissiveMap, this.emissiveIntensity = M.emissiveIntensity, this.specularMap = M.specularMap, this.alphaMap = M.alphaMap, this.envMap = M.envMap, this.combine = M.combine, this.reflectivity = M.reflectivity, this.refractionRatio = M.refractionRatio, this.wireframe = M.wireframe, this.wireframeLinewidth = M.wireframeLinewidth, this.wireframeLinecap = M.wireframeLinecap, this.wireframeLinejoin = M.wireframeLinejoin, this;
|
|
}
|
|
}
|
|
Gn.prototype.isMeshLambertMaterial = !0;
|
|
class fc extends ID {
|
|
constructor(M) {
|
|
super(), this.defines = { MATCAP: "" }, this.type = "MeshMatcapMaterial", this.color = new cM(16777215), this.matcap = null, this.map = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = ie, this.normalScale = new q(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.alphaMap = null, this.flatShading = !1, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.defines = { MATCAP: "" }, this.color.copy(M.color), this.matcap = M.matcap, this.map = M.map, this.bumpMap = M.bumpMap, this.bumpScale = M.bumpScale, this.normalMap = M.normalMap, this.normalMapType = M.normalMapType, this.normalScale.copy(M.normalScale), this.displacementMap = M.displacementMap, this.displacementScale = M.displacementScale, this.displacementBias = M.displacementBias, this.alphaMap = M.alphaMap, this.flatShading = M.flatShading, this;
|
|
}
|
|
}
|
|
fc.prototype.isMeshMatcapMaterial = !0;
|
|
class mc extends gt {
|
|
constructor(M) {
|
|
super(), this.type = "LineDashedMaterial", this.scale = 1, this.dashSize = 3, this.gapSize = 1, this.setValues(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.scale = M.scale, this.dashSize = M.dashSize, this.gapSize = M.gapSize, this;
|
|
}
|
|
}
|
|
mc.prototype.isLineDashedMaterial = !0;
|
|
const GM = {
|
|
arraySlice: function(n, M, D) {
|
|
return GM.isTypedArray(n) ? new n.constructor(n.subarray(M, D !== void 0 ? D : n.length)) : n.slice(M, D);
|
|
},
|
|
convertArray: function(n, M, D) {
|
|
return !n || !D && n.constructor === M ? n : typeof M.BYTES_PER_ELEMENT == "number" ? new M(n) : Array.prototype.slice.call(n);
|
|
},
|
|
isTypedArray: function(n) {
|
|
return ArrayBuffer.isView(n) && !(n instanceof DataView);
|
|
},
|
|
getKeyframeOrder: function(n) {
|
|
function M(e, N) {
|
|
return n[e] - n[N];
|
|
}
|
|
const D = n.length, t = new Array(D);
|
|
for (let e = 0; e !== D; ++e)
|
|
t[e] = e;
|
|
return t.sort(M), t;
|
|
},
|
|
sortedArray: function(n, M, D) {
|
|
const t = n.length, e = new n.constructor(t);
|
|
for (let N = 0, A = 0; A !== t; ++N) {
|
|
const z = D[N] * M;
|
|
for (let I = 0; I !== M; ++I)
|
|
e[A++] = n[z + I];
|
|
}
|
|
return e;
|
|
},
|
|
flattenJSON: function(n, M, D, t) {
|
|
let e = 1, N = n[0];
|
|
for (; N !== void 0 && N[t] === void 0; )
|
|
N = n[e++];
|
|
if (N === void 0)
|
|
return;
|
|
let A = N[t];
|
|
if (A !== void 0)
|
|
if (Array.isArray(A))
|
|
do
|
|
A = N[t], A !== void 0 && (M.push(N.time), D.push.apply(D, A)), N = n[e++];
|
|
while (N !== void 0);
|
|
else if (A.toArray !== void 0)
|
|
do
|
|
A = N[t], A !== void 0 && (M.push(N.time), A.toArray(D, D.length)), N = n[e++];
|
|
while (N !== void 0);
|
|
else
|
|
do
|
|
A = N[t], A !== void 0 && (M.push(N.time), D.push(A)), N = n[e++];
|
|
while (N !== void 0);
|
|
},
|
|
subclip: function(n, M, D, t, e = 30) {
|
|
const N = n.clone();
|
|
N.name = M;
|
|
const A = [];
|
|
for (let I = 0; I < N.tracks.length; ++I) {
|
|
const i = N.tracks[I], T = i.getValueSize(), u = [], g = [];
|
|
for (let s = 0; s < i.times.length; ++s) {
|
|
const j = i.times[s] * e;
|
|
if (!(j < D || j >= t)) {
|
|
u.push(i.times[s]);
|
|
for (let y = 0; y < T; ++y)
|
|
g.push(i.values[s * T + y]);
|
|
}
|
|
}
|
|
u.length !== 0 && (i.times = GM.convertArray(u, i.times.constructor), i.values = GM.convertArray(g, i.values.constructor), A.push(i));
|
|
}
|
|
N.tracks = A;
|
|
let z = 1 / 0;
|
|
for (let I = 0; I < N.tracks.length; ++I)
|
|
z > N.tracks[I].times[0] && (z = N.tracks[I].times[0]);
|
|
for (let I = 0; I < N.tracks.length; ++I)
|
|
N.tracks[I].shift(-1 * z);
|
|
return N.resetDuration(), N;
|
|
},
|
|
makeClipAdditive: function(n, M = 0, D = n, t = 30) {
|
|
t <= 0 && (t = 30);
|
|
const e = D.tracks.length, N = M / t;
|
|
for (let A = 0; A < e; ++A) {
|
|
const z = D.tracks[A], I = z.ValueTypeName;
|
|
if (I === "bool" || I === "string")
|
|
continue;
|
|
const i = n.tracks.find(function(c) {
|
|
return c.name === z.name && c.ValueTypeName === I;
|
|
});
|
|
if (i === void 0)
|
|
continue;
|
|
let T = 0;
|
|
const u = z.getValueSize();
|
|
z.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline && (T = u / 3);
|
|
let g = 0;
|
|
const s = i.getValueSize();
|
|
i.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline && (g = s / 3);
|
|
const j = z.times.length - 1;
|
|
let y;
|
|
if (N <= z.times[0]) {
|
|
const c = T, r = u - T;
|
|
y = GM.arraySlice(z.values, c, r);
|
|
} else if (N >= z.times[j]) {
|
|
const c = j * u + T, r = c + u - T;
|
|
y = GM.arraySlice(z.values, c, r);
|
|
} else {
|
|
const c = z.createInterpolant(), r = T, l = u - T;
|
|
c.evaluate(N), y = GM.arraySlice(c.resultBuffer, r, l);
|
|
}
|
|
I === "quaternion" && new aD().fromArray(y).normalize().conjugate().toArray(y);
|
|
const a = i.times.length;
|
|
for (let c = 0; c < a; ++c) {
|
|
const r = c * s + g;
|
|
if (I === "quaternion")
|
|
aD.multiplyQuaternionsFlat(i.values, r, y, 0, i.values, r);
|
|
else {
|
|
const l = s - g * 2;
|
|
for (let C = 0; C < l; ++C)
|
|
i.values[r + C] -= y[C];
|
|
}
|
|
}
|
|
}
|
|
return n.blendMode = zi, n;
|
|
}
|
|
};
|
|
class yt {
|
|
constructor(M, D, t, e) {
|
|
this.parameterPositions = M, this._cachedIndex = 0, this.resultBuffer = e !== void 0 ? e : new D.constructor(t), this.sampleValues = D, this.valueSize = t, this.settings = null, this.DefaultSettings_ = {};
|
|
}
|
|
evaluate(M) {
|
|
const D = this.parameterPositions;
|
|
let t = this._cachedIndex, e = D[t], N = D[t - 1];
|
|
M: {
|
|
D: {
|
|
let A;
|
|
t: {
|
|
e:
|
|
if (!(M < e)) {
|
|
for (let z = t + 2; ; ) {
|
|
if (e === void 0) {
|
|
if (M < N)
|
|
break e;
|
|
return t = D.length, this._cachedIndex = t, this.afterEnd_(t - 1, M, N);
|
|
}
|
|
if (t === z)
|
|
break;
|
|
if (N = e, e = D[++t], M < e)
|
|
break D;
|
|
}
|
|
A = D.length;
|
|
break t;
|
|
}
|
|
if (!(M >= N)) {
|
|
const z = D[1];
|
|
M < z && (t = 2, N = z);
|
|
for (let I = t - 2; ; ) {
|
|
if (N === void 0)
|
|
return this._cachedIndex = 0, this.beforeStart_(0, M, e);
|
|
if (t === I)
|
|
break;
|
|
if (e = N, N = D[--t - 1], M >= N)
|
|
break D;
|
|
}
|
|
A = t, t = 0;
|
|
break t;
|
|
}
|
|
break M;
|
|
}
|
|
for (; t < A; ) {
|
|
const z = t + A >>> 1;
|
|
M < D[z] ? A = z : t = z + 1;
|
|
}
|
|
if (e = D[t], N = D[t - 1], N === void 0)
|
|
return this._cachedIndex = 0, this.beforeStart_(0, M, e);
|
|
if (e === void 0)
|
|
return t = D.length, this._cachedIndex = t, this.afterEnd_(t - 1, N, M);
|
|
}
|
|
this._cachedIndex = t, this.intervalChanged_(t, N, e);
|
|
}
|
|
return this.interpolate_(t, N, M, e);
|
|
}
|
|
getSettings_() {
|
|
return this.settings || this.DefaultSettings_;
|
|
}
|
|
copySampleValue_(M) {
|
|
const D = this.resultBuffer, t = this.sampleValues, e = this.valueSize, N = M * e;
|
|
for (let A = 0; A !== e; ++A)
|
|
D[A] = t[N + A];
|
|
return D;
|
|
}
|
|
interpolate_() {
|
|
throw new Error("call to abstract method");
|
|
}
|
|
intervalChanged_() {
|
|
}
|
|
}
|
|
yt.prototype.beforeStart_ = yt.prototype.copySampleValue_;
|
|
yt.prototype.afterEnd_ = yt.prototype.copySampleValue_;
|
|
class kc extends yt {
|
|
constructor(M, D, t, e) {
|
|
super(M, D, t, e), this._weightPrev = -0, this._offsetPrev = -0, this._weightNext = -0, this._offsetNext = -0, this.DefaultSettings_ = {
|
|
endingStart: qt,
|
|
endingEnd: qt
|
|
};
|
|
}
|
|
intervalChanged_(M, D, t) {
|
|
const e = this.parameterPositions;
|
|
let N = M - 2, A = M + 1, z = e[N], I = e[A];
|
|
if (z === void 0)
|
|
switch (this.getSettings_().endingStart) {
|
|
case Xt:
|
|
N = M, z = 2 * D - t;
|
|
break;
|
|
case hN:
|
|
N = e.length - 2, z = D + e[N] - e[N + 1];
|
|
break;
|
|
default:
|
|
N = M, z = t;
|
|
}
|
|
if (I === void 0)
|
|
switch (this.getSettings_().endingEnd) {
|
|
case Xt:
|
|
A = M, I = 2 * t - D;
|
|
break;
|
|
case hN:
|
|
A = 1, I = t + e[1] - e[0];
|
|
break;
|
|
default:
|
|
A = M - 1, I = D;
|
|
}
|
|
const i = (t - D) * 0.5, T = this.valueSize;
|
|
this._weightPrev = i / (D - z), this._weightNext = i / (I - t), this._offsetPrev = N * T, this._offsetNext = A * T;
|
|
}
|
|
interpolate_(M, D, t, e) {
|
|
const N = this.resultBuffer, A = this.sampleValues, z = this.valueSize, I = M * z, i = I - z, T = this._offsetPrev, u = this._offsetNext, g = this._weightPrev, s = this._weightNext, j = (t - D) / (e - D), y = j * j, a = y * j, c = -g * a + 2 * g * y - g * j, r = (1 + g) * a + (-1.5 - 2 * g) * y + (-0.5 + g) * j + 1, l = (-1 - s) * a + (1.5 + s) * y + 0.5 * j, C = s * a - s * y;
|
|
for (let E = 0; E !== z; ++E)
|
|
N[E] = c * A[T + E] + r * A[i + E] + l * A[I + E] + C * A[u + E];
|
|
return N;
|
|
}
|
|
}
|
|
class Pi extends yt {
|
|
constructor(M, D, t, e) {
|
|
super(M, D, t, e);
|
|
}
|
|
interpolate_(M, D, t, e) {
|
|
const N = this.resultBuffer, A = this.sampleValues, z = this.valueSize, I = M * z, i = I - z, T = (t - D) / (e - D), u = 1 - T;
|
|
for (let g = 0; g !== z; ++g)
|
|
N[g] = A[i + g] * u + A[I + g] * T;
|
|
return N;
|
|
}
|
|
}
|
|
class Sc extends yt {
|
|
constructor(M, D, t, e) {
|
|
super(M, D, t, e);
|
|
}
|
|
interpolate_(M) {
|
|
return this.copySampleValue_(M - 1);
|
|
}
|
|
}
|
|
class RD {
|
|
constructor(M, D, t, e) {
|
|
if (M === void 0)
|
|
throw new Error("THREE.KeyframeTrack: track name is undefined");
|
|
if (D === void 0 || D.length === 0)
|
|
throw new Error("THREE.KeyframeTrack: no keyframes in track named " + M);
|
|
this.name = M, this.times = GM.convertArray(D, this.TimeBufferType), this.values = GM.convertArray(t, this.ValueBufferType), this.setInterpolation(e || this.DefaultInterpolation);
|
|
}
|
|
static toJSON(M) {
|
|
const D = M.constructor;
|
|
let t;
|
|
if (D.toJSON !== this.toJSON)
|
|
t = D.toJSON(M);
|
|
else {
|
|
t = {
|
|
name: M.name,
|
|
times: GM.convertArray(M.times, Array),
|
|
values: GM.convertArray(M.values, Array)
|
|
};
|
|
const e = M.getInterpolation();
|
|
e !== M.DefaultInterpolation && (t.interpolation = e);
|
|
}
|
|
return t.type = M.ValueTypeName, t;
|
|
}
|
|
InterpolantFactoryMethodDiscrete(M) {
|
|
return new Sc(this.times, this.values, this.getValueSize(), M);
|
|
}
|
|
InterpolantFactoryMethodLinear(M) {
|
|
return new Pi(this.times, this.values, this.getValueSize(), M);
|
|
}
|
|
InterpolantFactoryMethodSmooth(M) {
|
|
return new kc(this.times, this.values, this.getValueSize(), M);
|
|
}
|
|
setInterpolation(M) {
|
|
let D;
|
|
switch (M) {
|
|
case vN:
|
|
D = this.InterpolantFactoryMethodDiscrete;
|
|
break;
|
|
case pN:
|
|
D = this.InterpolantFactoryMethodLinear;
|
|
break;
|
|
case qN:
|
|
D = this.InterpolantFactoryMethodSmooth;
|
|
break;
|
|
}
|
|
if (D === void 0) {
|
|
const t = "unsupported interpolation for " + this.ValueTypeName + " keyframe track named " + this.name;
|
|
if (this.createInterpolant === void 0)
|
|
if (M !== this.DefaultInterpolation)
|
|
this.setInterpolation(this.DefaultInterpolation);
|
|
else
|
|
throw new Error(t);
|
|
return console.warn("THREE.KeyframeTrack:", t), this;
|
|
}
|
|
return this.createInterpolant = D, this;
|
|
}
|
|
getInterpolation() {
|
|
switch (this.createInterpolant) {
|
|
case this.InterpolantFactoryMethodDiscrete:
|
|
return vN;
|
|
case this.InterpolantFactoryMethodLinear:
|
|
return pN;
|
|
case this.InterpolantFactoryMethodSmooth:
|
|
return qN;
|
|
}
|
|
}
|
|
getValueSize() {
|
|
return this.values.length / this.times.length;
|
|
}
|
|
shift(M) {
|
|
if (M !== 0) {
|
|
const D = this.times;
|
|
for (let t = 0, e = D.length; t !== e; ++t)
|
|
D[t] += M;
|
|
}
|
|
return this;
|
|
}
|
|
scale(M) {
|
|
if (M !== 1) {
|
|
const D = this.times;
|
|
for (let t = 0, e = D.length; t !== e; ++t)
|
|
D[t] *= M;
|
|
}
|
|
return this;
|
|
}
|
|
trim(M, D) {
|
|
const t = this.times, e = t.length;
|
|
let N = 0, A = e - 1;
|
|
for (; N !== e && t[N] < M; )
|
|
++N;
|
|
for (; A !== -1 && t[A] > D; )
|
|
--A;
|
|
if (++A, N !== 0 || A !== e) {
|
|
N >= A && (A = Math.max(A, 1), N = A - 1);
|
|
const z = this.getValueSize();
|
|
this.times = GM.arraySlice(t, N, A), this.values = GM.arraySlice(this.values, N * z, A * z);
|
|
}
|
|
return this;
|
|
}
|
|
validate() {
|
|
let M = !0;
|
|
const D = this.getValueSize();
|
|
D - Math.floor(D) !== 0 && (console.error("THREE.KeyframeTrack: Invalid value size in track.", this), M = !1);
|
|
const t = this.times, e = this.values, N = t.length;
|
|
N === 0 && (console.error("THREE.KeyframeTrack: Track is empty.", this), M = !1);
|
|
let A = null;
|
|
for (let z = 0; z !== N; z++) {
|
|
const I = t[z];
|
|
if (typeof I == "number" && isNaN(I)) {
|
|
console.error("THREE.KeyframeTrack: Time is not a valid number.", this, z, I), M = !1;
|
|
break;
|
|
}
|
|
if (A !== null && A > I) {
|
|
console.error("THREE.KeyframeTrack: Out of order keys.", this, z, I, A), M = !1;
|
|
break;
|
|
}
|
|
A = I;
|
|
}
|
|
if (e !== void 0 && GM.isTypedArray(e))
|
|
for (let z = 0, I = e.length; z !== I; ++z) {
|
|
const i = e[z];
|
|
if (isNaN(i)) {
|
|
console.error("THREE.KeyframeTrack: Value is not a valid number.", this, z, i), M = !1;
|
|
break;
|
|
}
|
|
}
|
|
return M;
|
|
}
|
|
optimize() {
|
|
const M = GM.arraySlice(this.times), D = GM.arraySlice(this.values), t = this.getValueSize(), e = this.getInterpolation() === qN, N = M.length - 1;
|
|
let A = 1;
|
|
for (let z = 1; z < N; ++z) {
|
|
let I = !1;
|
|
const i = M[z], T = M[z + 1];
|
|
if (i !== T && (z !== 1 || i !== M[0]))
|
|
if (e)
|
|
I = !0;
|
|
else {
|
|
const u = z * t, g = u - t, s = u + t;
|
|
for (let j = 0; j !== t; ++j) {
|
|
const y = D[u + j];
|
|
if (y !== D[g + j] || y !== D[s + j]) {
|
|
I = !0;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (I) {
|
|
if (z !== A) {
|
|
M[A] = M[z];
|
|
const u = z * t, g = A * t;
|
|
for (let s = 0; s !== t; ++s)
|
|
D[g + s] = D[u + s];
|
|
}
|
|
++A;
|
|
}
|
|
}
|
|
if (N > 0) {
|
|
M[A] = M[N];
|
|
for (let z = N * t, I = A * t, i = 0; i !== t; ++i)
|
|
D[I + i] = D[z + i];
|
|
++A;
|
|
}
|
|
return A !== M.length ? (this.times = GM.arraySlice(M, 0, A), this.values = GM.arraySlice(D, 0, A * t)) : (this.times = M, this.values = D), this;
|
|
}
|
|
clone() {
|
|
const M = GM.arraySlice(this.times, 0), D = GM.arraySlice(this.values, 0), t = this.constructor, e = new t(this.name, M, D);
|
|
return e.createInterpolant = this.createInterpolant, e;
|
|
}
|
|
}
|
|
RD.prototype.TimeBufferType = Float32Array;
|
|
RD.prototype.ValueBufferType = Float32Array;
|
|
RD.prototype.DefaultInterpolation = pN;
|
|
class se extends RD {
|
|
}
|
|
se.prototype.ValueTypeName = "bool";
|
|
se.prototype.ValueBufferType = Array;
|
|
se.prototype.DefaultInterpolation = vN;
|
|
se.prototype.InterpolantFactoryMethodLinear = void 0;
|
|
se.prototype.InterpolantFactoryMethodSmooth = void 0;
|
|
class Fi extends RD {
|
|
}
|
|
Fi.prototype.ValueTypeName = "color";
|
|
class UN extends RD {
|
|
}
|
|
UN.prototype.ValueTypeName = "number";
|
|
class Zc extends yt {
|
|
constructor(M, D, t, e) {
|
|
super(M, D, t, e);
|
|
}
|
|
interpolate_(M, D, t, e) {
|
|
const N = this.resultBuffer, A = this.sampleValues, z = this.valueSize, I = (t - D) / (e - D);
|
|
let i = M * z;
|
|
for (let T = i + z; i !== T; i += 4)
|
|
aD.slerpFlat(N, 0, A, i - z, A, i, I);
|
|
return N;
|
|
}
|
|
}
|
|
class Fe extends RD {
|
|
InterpolantFactoryMethodLinear(M) {
|
|
return new Zc(this.times, this.values, this.getValueSize(), M);
|
|
}
|
|
}
|
|
Fe.prototype.ValueTypeName = "quaternion";
|
|
Fe.prototype.DefaultInterpolation = pN;
|
|
Fe.prototype.InterpolantFactoryMethodSmooth = void 0;
|
|
class ce extends RD {
|
|
}
|
|
ce.prototype.ValueTypeName = "string";
|
|
ce.prototype.ValueBufferType = Array;
|
|
ce.prototype.DefaultInterpolation = vN;
|
|
ce.prototype.InterpolantFactoryMethodLinear = void 0;
|
|
ce.prototype.InterpolantFactoryMethodSmooth = void 0;
|
|
class QN extends RD {
|
|
}
|
|
QN.prototype.ValueTypeName = "vector";
|
|
class Hz {
|
|
constructor(M, D = -1, t, e = Xn) {
|
|
this.name = M, this.tracks = t, this.duration = D, this.blendMode = e, this.uuid = bD(), this.duration < 0 && this.resetDuration();
|
|
}
|
|
static parse(M) {
|
|
const D = [], t = M.tracks, e = 1 / (M.fps || 1);
|
|
for (let A = 0, z = t.length; A !== z; ++A)
|
|
D.push(bc(t[A]).scale(e));
|
|
const N = new this(M.name, M.duration, D, M.blendMode);
|
|
return N.uuid = M.uuid, N;
|
|
}
|
|
static toJSON(M) {
|
|
const D = [], t = M.tracks, e = {
|
|
name: M.name,
|
|
duration: M.duration,
|
|
tracks: D,
|
|
uuid: M.uuid,
|
|
blendMode: M.blendMode
|
|
};
|
|
for (let N = 0, A = t.length; N !== A; ++N)
|
|
D.push(RD.toJSON(t[N]));
|
|
return e;
|
|
}
|
|
static CreateFromMorphTargetSequence(M, D, t, e) {
|
|
const N = D.length, A = [];
|
|
for (let z = 0; z < N; z++) {
|
|
let I = [], i = [];
|
|
I.push((z + N - 1) % N, z, (z + 1) % N), i.push(0, 1, 0);
|
|
const T = GM.getKeyframeOrder(I);
|
|
I = GM.sortedArray(I, 1, T), i = GM.sortedArray(i, 1, T), !e && I[0] === 0 && (I.push(N), i.push(i[0])), A.push(new UN(".morphTargetInfluences[" + D[z].name + "]", I, i).scale(1 / t));
|
|
}
|
|
return new this(M, -1, A);
|
|
}
|
|
static findByName(M, D) {
|
|
let t = M;
|
|
if (!Array.isArray(M)) {
|
|
const e = M;
|
|
t = e.geometry && e.geometry.animations || e.animations;
|
|
}
|
|
for (let e = 0; e < t.length; e++)
|
|
if (t[e].name === D)
|
|
return t[e];
|
|
return null;
|
|
}
|
|
static CreateClipsFromMorphTargetSequences(M, D, t) {
|
|
const e = {}, N = /^([\w-]*?)([\d]+)$/;
|
|
for (let z = 0, I = M.length; z < I; z++) {
|
|
const i = M[z], T = i.name.match(N);
|
|
if (T && T.length > 1) {
|
|
const u = T[1];
|
|
let g = e[u];
|
|
g || (e[u] = g = []), g.push(i);
|
|
}
|
|
}
|
|
const A = [];
|
|
for (const z in e)
|
|
A.push(this.CreateFromMorphTargetSequence(z, e[z], D, t));
|
|
return A;
|
|
}
|
|
static parseAnimation(M, D) {
|
|
if (!M)
|
|
return console.error("THREE.AnimationClip: No animation in JSONLoader data."), null;
|
|
const t = function(u, g, s, j, y) {
|
|
if (s.length !== 0) {
|
|
const a = [], c = [];
|
|
GM.flattenJSON(s, a, c, j), a.length !== 0 && y.push(new u(g, a, c));
|
|
}
|
|
}, e = [], N = M.name || "default", A = M.fps || 30, z = M.blendMode;
|
|
let I = M.length || -1;
|
|
const i = M.hierarchy || [];
|
|
for (let u = 0; u < i.length; u++) {
|
|
const g = i[u].keys;
|
|
if (!(!g || g.length === 0))
|
|
if (g[0].morphTargets) {
|
|
const s = {};
|
|
let j;
|
|
for (j = 0; j < g.length; j++)
|
|
if (g[j].morphTargets)
|
|
for (let y = 0; y < g[j].morphTargets.length; y++)
|
|
s[g[j].morphTargets[y]] = -1;
|
|
for (const y in s) {
|
|
const a = [], c = [];
|
|
for (let r = 0; r !== g[j].morphTargets.length; ++r) {
|
|
const l = g[j];
|
|
a.push(l.time), c.push(l.morphTarget === y ? 1 : 0);
|
|
}
|
|
e.push(new UN(".morphTargetInfluence[" + y + "]", a, c));
|
|
}
|
|
I = s.length * (A || 1);
|
|
} else {
|
|
const s = ".bones[" + D[u].name + "]";
|
|
t(QN, s + ".position", g, "pos", e), t(Fe, s + ".quaternion", g, "rot", e), t(QN, s + ".scale", g, "scl", e);
|
|
}
|
|
}
|
|
return e.length === 0 ? null : new this(N, I, e, z);
|
|
}
|
|
resetDuration() {
|
|
const M = this.tracks;
|
|
let D = 0;
|
|
for (let t = 0, e = M.length; t !== e; ++t) {
|
|
const N = this.tracks[t];
|
|
D = Math.max(D, N.times[N.times.length - 1]);
|
|
}
|
|
return this.duration = D, this;
|
|
}
|
|
trim() {
|
|
for (let M = 0; M < this.tracks.length; M++)
|
|
this.tracks[M].trim(0, this.duration);
|
|
return this;
|
|
}
|
|
validate() {
|
|
let M = !0;
|
|
for (let D = 0; D < this.tracks.length; D++)
|
|
M = M && this.tracks[D].validate();
|
|
return M;
|
|
}
|
|
optimize() {
|
|
for (let M = 0; M < this.tracks.length; M++)
|
|
this.tracks[M].optimize();
|
|
return this;
|
|
}
|
|
clone() {
|
|
const M = [];
|
|
for (let D = 0; D < this.tracks.length; D++)
|
|
M.push(this.tracks[D].clone());
|
|
return new this.constructor(this.name, this.duration, M, this.blendMode);
|
|
}
|
|
toJSON() {
|
|
return this.constructor.toJSON(this);
|
|
}
|
|
}
|
|
function _c(n) {
|
|
switch (n.toLowerCase()) {
|
|
case "scalar":
|
|
case "double":
|
|
case "float":
|
|
case "number":
|
|
case "integer":
|
|
return UN;
|
|
case "vector":
|
|
case "vector2":
|
|
case "vector3":
|
|
case "vector4":
|
|
return QN;
|
|
case "color":
|
|
return Fi;
|
|
case "quaternion":
|
|
return Fe;
|
|
case "bool":
|
|
case "boolean":
|
|
return se;
|
|
case "string":
|
|
return ce;
|
|
}
|
|
throw new Error("THREE.KeyframeTrack: Unsupported typeName: " + n);
|
|
}
|
|
function bc(n) {
|
|
if (n.type === void 0)
|
|
throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");
|
|
const M = _c(n.type);
|
|
if (n.times === void 0) {
|
|
const D = [], t = [];
|
|
GM.flattenJSON(n.keys, D, t, "value"), n.times = D, n.values = t;
|
|
}
|
|
return M.parse !== void 0 ? M.parse(n) : new M(n.name, n.times, n.values, n.interpolation);
|
|
}
|
|
const ze = {
|
|
enabled: !1,
|
|
files: {},
|
|
add: function(n, M) {
|
|
this.enabled !== !1 && (this.files[n] = M);
|
|
},
|
|
get: function(n) {
|
|
if (this.enabled !== !1)
|
|
return this.files[n];
|
|
},
|
|
remove: function(n) {
|
|
delete this.files[n];
|
|
},
|
|
clear: function() {
|
|
this.files = {};
|
|
}
|
|
};
|
|
class Kc {
|
|
constructor(M, D, t) {
|
|
const e = this;
|
|
let N = !1, A = 0, z = 0, I;
|
|
const i = [];
|
|
this.onStart = void 0, this.onLoad = M, this.onProgress = D, this.onError = t, this.itemStart = function(T) {
|
|
z++, N === !1 && e.onStart !== void 0 && e.onStart(T, A, z), N = !0;
|
|
}, this.itemEnd = function(T) {
|
|
A++, e.onProgress !== void 0 && e.onProgress(T, A, z), A === z && (N = !1, e.onLoad !== void 0 && e.onLoad());
|
|
}, this.itemError = function(T) {
|
|
e.onError !== void 0 && e.onError(T);
|
|
}, this.resolveURL = function(T) {
|
|
return I ? I(T) : T;
|
|
}, this.setURLModifier = function(T) {
|
|
return I = T, this;
|
|
}, this.addHandler = function(T, u) {
|
|
return i.push(T, u), this;
|
|
}, this.removeHandler = function(T) {
|
|
const u = i.indexOf(T);
|
|
return u !== -1 && i.splice(u, 2), this;
|
|
}, this.getHandler = function(T) {
|
|
for (let u = 0, g = i.length; u < g; u += 2) {
|
|
const s = i[u], j = i[u + 1];
|
|
if (s.global && (s.lastIndex = 0), s.test(T))
|
|
return j;
|
|
}
|
|
return null;
|
|
};
|
|
}
|
|
}
|
|
const Rc = new Kc();
|
|
class JD {
|
|
constructor(M) {
|
|
this.manager = M !== void 0 ? M : Rc, this.crossOrigin = "anonymous", this.withCredentials = !1, this.path = "", this.resourcePath = "", this.requestHeader = {};
|
|
}
|
|
load() {
|
|
}
|
|
loadAsync(M, D) {
|
|
const t = this;
|
|
return new Promise(function(e, N) {
|
|
t.load(M, e, D, N);
|
|
});
|
|
}
|
|
parse() {
|
|
}
|
|
setCrossOrigin(M) {
|
|
return this.crossOrigin = M, this;
|
|
}
|
|
setWithCredentials(M) {
|
|
return this.withCredentials = M, this;
|
|
}
|
|
setPath(M) {
|
|
return this.path = M, this;
|
|
}
|
|
setResourcePath(M) {
|
|
return this.resourcePath = M, this;
|
|
}
|
|
setRequestHeader(M) {
|
|
return this.requestHeader = M, this;
|
|
}
|
|
}
|
|
const qD = {};
|
|
class Bi extends JD {
|
|
constructor(M) {
|
|
super(M);
|
|
}
|
|
load(M, D, t, e) {
|
|
M === void 0 && (M = ""), this.path !== void 0 && (M = this.path + M), M = this.manager.resolveURL(M);
|
|
const N = ze.get(M);
|
|
if (N !== void 0)
|
|
return this.manager.itemStart(M), setTimeout(() => {
|
|
D && D(N), this.manager.itemEnd(M);
|
|
}, 0), N;
|
|
if (qD[M] !== void 0) {
|
|
qD[M].push({
|
|
onLoad: D,
|
|
onProgress: t,
|
|
onError: e
|
|
});
|
|
return;
|
|
}
|
|
qD[M] = [], qD[M].push({
|
|
onLoad: D,
|
|
onProgress: t,
|
|
onError: e
|
|
});
|
|
const A = new Request(M, {
|
|
headers: new Headers(this.requestHeader),
|
|
credentials: this.withCredentials ? "include" : "same-origin"
|
|
}), z = this.mimeType, I = this.responseType;
|
|
fetch(A).then((i) => {
|
|
if (i.status === 200 || i.status === 0) {
|
|
if (i.status === 0 && console.warn("THREE.FileLoader: HTTP Status 0 received."), typeof ReadableStream > "u" || i.body.getReader === void 0)
|
|
return i;
|
|
const T = qD[M], u = i.body.getReader(), g = i.headers.get("Content-Length"), s = g ? parseInt(g) : 0, j = s !== 0;
|
|
let y = 0;
|
|
const a = new ReadableStream({
|
|
start(c) {
|
|
r();
|
|
function r() {
|
|
u.read().then(({ done: l, value: C }) => {
|
|
if (l)
|
|
c.close();
|
|
else {
|
|
y += C.byteLength;
|
|
const E = new ProgressEvent("progress", { lengthComputable: j, loaded: y, total: s });
|
|
for (let d = 0, p = T.length; d < p; d++) {
|
|
const H = T[d];
|
|
H.onProgress && H.onProgress(E);
|
|
}
|
|
c.enqueue(C), r();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
return new Response(a);
|
|
} else
|
|
throw Error(`fetch for "${i.url}" responded with ${i.status}: ${i.statusText}`);
|
|
}).then((i) => {
|
|
switch (I) {
|
|
case "arraybuffer":
|
|
return i.arrayBuffer();
|
|
case "blob":
|
|
return i.blob();
|
|
case "document":
|
|
return i.text().then((T) => new DOMParser().parseFromString(T, z));
|
|
case "json":
|
|
return i.json();
|
|
default:
|
|
if (z === void 0)
|
|
return i.text();
|
|
{
|
|
const u = /charset="?([^;"\s]*)"?/i.exec(z), g = u && u[1] ? u[1].toLowerCase() : void 0, s = new TextDecoder(g);
|
|
return i.arrayBuffer().then((j) => s.decode(j));
|
|
}
|
|
}
|
|
}).then((i) => {
|
|
ze.add(M, i);
|
|
const T = qD[M];
|
|
delete qD[M];
|
|
for (let u = 0, g = T.length; u < g; u++) {
|
|
const s = T[u];
|
|
s.onLoad && s.onLoad(i);
|
|
}
|
|
}).catch((i) => {
|
|
const T = qD[M];
|
|
if (T === void 0)
|
|
throw this.manager.itemError(M), i;
|
|
delete qD[M];
|
|
for (let u = 0, g = T.length; u < g; u++) {
|
|
const s = T[u];
|
|
s.onError && s.onError(i);
|
|
}
|
|
this.manager.itemError(M);
|
|
}).finally(() => {
|
|
this.manager.itemEnd(M);
|
|
}), this.manager.itemStart(M);
|
|
}
|
|
setResponseType(M) {
|
|
return this.responseType = M, this;
|
|
}
|
|
setMimeType(M) {
|
|
return this.mimeType = M, this;
|
|
}
|
|
}
|
|
class Vi extends JD {
|
|
constructor(M) {
|
|
super(M);
|
|
}
|
|
load(M, D, t, e) {
|
|
this.path !== void 0 && (M = this.path + M), M = this.manager.resolveURL(M);
|
|
const N = this, A = ze.get(M);
|
|
if (A !== void 0)
|
|
return N.manager.itemStart(M), setTimeout(function() {
|
|
D && D(A), N.manager.itemEnd(M);
|
|
}, 0), A;
|
|
const z = fe("img");
|
|
function I() {
|
|
T(), ze.add(M, this), D && D(this), N.manager.itemEnd(M);
|
|
}
|
|
function i(u) {
|
|
T(), e && e(u), N.manager.itemError(M), N.manager.itemEnd(M);
|
|
}
|
|
function T() {
|
|
z.removeEventListener("load", I, !1), z.removeEventListener("error", i, !1);
|
|
}
|
|
return z.addEventListener("load", I, !1), z.addEventListener("error", i, !1), M.substr(0, 5) !== "data:" && this.crossOrigin !== void 0 && (z.crossOrigin = this.crossOrigin), N.manager.itemStart(M), z.src = M, z;
|
|
}
|
|
}
|
|
class Pc extends JD {
|
|
constructor(M) {
|
|
super(M);
|
|
}
|
|
load(M, D, t, e) {
|
|
const N = new SN(), A = new Vi(this.manager);
|
|
A.setCrossOrigin(this.crossOrigin), A.setPath(this.path);
|
|
let z = 0;
|
|
function I(i) {
|
|
A.load(M[i], function(T) {
|
|
N.images[i] = T, z++, z === 6 && (N.needsUpdate = !0, D && D(N));
|
|
}, void 0, e);
|
|
}
|
|
for (let i = 0; i < M.length; ++i)
|
|
I(i);
|
|
return N;
|
|
}
|
|
}
|
|
class Hi extends JD {
|
|
constructor(M) {
|
|
super(M);
|
|
}
|
|
load(M, D, t, e) {
|
|
const N = new iD(), A = new Vi(this.manager);
|
|
return A.setCrossOrigin(this.crossOrigin), A.setPath(this.path), A.load(M, function(z) {
|
|
N.image = z, N.needsUpdate = !0, D !== void 0 && D(N);
|
|
}, t, e), N;
|
|
}
|
|
}
|
|
class KD extends ZM {
|
|
constructor(M, D = 1) {
|
|
super(), this.type = "Light", this.color = new cM(M), this.intensity = D;
|
|
}
|
|
dispose() {
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.color.copy(M.color), this.intensity = M.intensity, this;
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
return D.object.color = this.color.getHex(), D.object.intensity = this.intensity, this.groundColor !== void 0 && (D.object.groundColor = this.groundColor.getHex()), this.distance !== void 0 && (D.object.distance = this.distance), this.angle !== void 0 && (D.object.angle = this.angle), this.decay !== void 0 && (D.object.decay = this.decay), this.penumbra !== void 0 && (D.object.penumbra = this.penumbra), this.shadow !== void 0 && (D.object.shadow = this.shadow.toJSON()), D;
|
|
}
|
|
}
|
|
KD.prototype.isLight = !0;
|
|
class Fc extends KD {
|
|
constructor(M, D, t) {
|
|
super(M, t), this.type = "HemisphereLight", this.position.copy(ZM.DefaultUp), this.updateMatrix(), this.groundColor = new cM(D);
|
|
}
|
|
copy(M) {
|
|
return KD.prototype.copy.call(this, M), this.groundColor.copy(M.groundColor), this;
|
|
}
|
|
}
|
|
Fc.prototype.isHemisphereLight = !0;
|
|
const Gz = /* @__PURE__ */ new aM(), Wz = /* @__PURE__ */ new O(), qz = /* @__PURE__ */ new O();
|
|
class gA {
|
|
constructor(M) {
|
|
this.camera = M, this.bias = 0, this.normalBias = 0, this.radius = 1, this.blurSamples = 8, this.mapSize = new q(512, 512), this.map = null, this.mapPass = null, this.matrix = new aM(), this.autoUpdate = !0, this.needsUpdate = !1, this._frustum = new ZN(), this._frameExtents = new q(1, 1), this._viewportCount = 1, this._viewports = [
|
|
new PM(0, 0, 1, 1)
|
|
];
|
|
}
|
|
getViewportCount() {
|
|
return this._viewportCount;
|
|
}
|
|
getFrustum() {
|
|
return this._frustum;
|
|
}
|
|
updateMatrices(M) {
|
|
const D = this.camera, t = this.matrix;
|
|
Wz.setFromMatrixPosition(M.matrixWorld), D.position.copy(Wz), qz.setFromMatrixPosition(M.target.matrixWorld), D.lookAt(qz), D.updateMatrixWorld(), Gz.multiplyMatrices(D.projectionMatrix, D.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Gz), t.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1), t.multiply(D.projectionMatrix), t.multiply(D.matrixWorldInverse);
|
|
}
|
|
getViewport(M) {
|
|
return this._viewports[M];
|
|
}
|
|
getFrameExtents() {
|
|
return this._frameExtents;
|
|
}
|
|
dispose() {
|
|
this.map && this.map.dispose(), this.mapPass && this.mapPass.dispose();
|
|
}
|
|
copy(M) {
|
|
return this.camera = M.camera.clone(), this.bias = M.bias, this.radius = M.radius, this.mapSize.copy(M.mapSize), this;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
toJSON() {
|
|
const M = {};
|
|
return this.bias !== 0 && (M.bias = this.bias), this.normalBias !== 0 && (M.normalBias = this.normalBias), this.radius !== 1 && (M.radius = this.radius), (this.mapSize.x !== 512 || this.mapSize.y !== 512) && (M.mapSize = this.mapSize.toArray()), M.camera = this.camera.toJSON(!1).object, delete M.camera.matrix, M;
|
|
}
|
|
}
|
|
class Gi extends gA {
|
|
constructor() {
|
|
super(new jD(50, 1, 0.5, 500)), this.focus = 1;
|
|
}
|
|
updateMatrices(M) {
|
|
const D = this.camera, t = bn * 2 * M.angle * this.focus, e = this.mapSize.width / this.mapSize.height, N = M.distance || D.far;
|
|
(t !== D.fov || e !== D.aspect || N !== D.far) && (D.fov = t, D.aspect = e, D.far = N, D.updateProjectionMatrix()), super.updateMatrices(M);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.focus = M.focus, this;
|
|
}
|
|
}
|
|
Gi.prototype.isSpotLightShadow = !0;
|
|
class Bc extends KD {
|
|
constructor(M, D, t = 0, e = Math.PI / 3, N = 0, A = 1) {
|
|
super(M, D), this.type = "SpotLight", this.position.copy(ZM.DefaultUp), this.updateMatrix(), this.target = new ZM(), this.distance = t, this.angle = e, this.penumbra = N, this.decay = A, this.shadow = new Gi();
|
|
}
|
|
get power() {
|
|
return this.intensity * Math.PI;
|
|
}
|
|
set power(M) {
|
|
this.intensity = M / Math.PI;
|
|
}
|
|
dispose() {
|
|
this.shadow.dispose();
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.distance = M.distance, this.angle = M.angle, this.penumbra = M.penumbra, this.decay = M.decay, this.target = M.target.clone(), this.shadow = M.shadow.clone(), this;
|
|
}
|
|
}
|
|
Bc.prototype.isSpotLight = !0;
|
|
const Xz = /* @__PURE__ */ new aM(), Ee = /* @__PURE__ */ new O(), Yn = /* @__PURE__ */ new O();
|
|
class Wi extends gA {
|
|
constructor() {
|
|
super(new jD(90, 1, 0.5, 500)), this._frameExtents = new q(4, 2), this._viewportCount = 6, this._viewports = [
|
|
new PM(2, 1, 1, 1),
|
|
new PM(0, 1, 1, 1),
|
|
new PM(3, 1, 1, 1),
|
|
new PM(1, 1, 1, 1),
|
|
new PM(3, 0, 1, 1),
|
|
new PM(1, 0, 1, 1)
|
|
], this._cubeDirections = [
|
|
new O(1, 0, 0),
|
|
new O(-1, 0, 0),
|
|
new O(0, 0, 1),
|
|
new O(0, 0, -1),
|
|
new O(0, 1, 0),
|
|
new O(0, -1, 0)
|
|
], this._cubeUps = [
|
|
new O(0, 1, 0),
|
|
new O(0, 1, 0),
|
|
new O(0, 1, 0),
|
|
new O(0, 1, 0),
|
|
new O(0, 0, 1),
|
|
new O(0, 0, -1)
|
|
];
|
|
}
|
|
updateMatrices(M, D = 0) {
|
|
const t = this.camera, e = this.matrix, N = M.distance || t.far;
|
|
N !== t.far && (t.far = N, t.updateProjectionMatrix()), Ee.setFromMatrixPosition(M.matrixWorld), t.position.copy(Ee), Yn.copy(t.position), Yn.add(this._cubeDirections[D]), t.up.copy(this._cubeUps[D]), t.lookAt(Yn), t.updateMatrixWorld(), e.makeTranslation(-Ee.x, -Ee.y, -Ee.z), Xz.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Xz);
|
|
}
|
|
}
|
|
Wi.prototype.isPointLightShadow = !0;
|
|
class Vc extends KD {
|
|
constructor(M, D, t = 0, e = 1) {
|
|
super(M, D), this.type = "PointLight", this.distance = t, this.decay = e, this.shadow = new Wi();
|
|
}
|
|
get power() {
|
|
return this.intensity * 4 * Math.PI;
|
|
}
|
|
set power(M) {
|
|
this.intensity = M / (4 * Math.PI);
|
|
}
|
|
dispose() {
|
|
this.shadow.dispose();
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.distance = M.distance, this.decay = M.decay, this.shadow = M.shadow.clone(), this;
|
|
}
|
|
}
|
|
Vc.prototype.isPointLight = !0;
|
|
class qi extends gA {
|
|
constructor() {
|
|
super(new eA(-5, 5, 5, -5, 0.5, 500));
|
|
}
|
|
}
|
|
qi.prototype.isDirectionalLightShadow = !0;
|
|
class Xi extends KD {
|
|
constructor(M, D) {
|
|
super(M, D), this.type = "DirectionalLight", this.position.copy(ZM.DefaultUp), this.updateMatrix(), this.target = new ZM(), this.shadow = new qi();
|
|
}
|
|
dispose() {
|
|
this.shadow.dispose();
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.target = M.target.clone(), this.shadow = M.shadow.clone(), this;
|
|
}
|
|
}
|
|
Xi.prototype.isDirectionalLight = !0;
|
|
class Hc extends KD {
|
|
constructor(M, D) {
|
|
super(M, D), this.type = "AmbientLight";
|
|
}
|
|
}
|
|
Hc.prototype.isAmbientLight = !0;
|
|
class Gc extends KD {
|
|
constructor(M, D, t = 10, e = 10) {
|
|
super(M, D), this.type = "RectAreaLight", this.width = t, this.height = e;
|
|
}
|
|
get power() {
|
|
return this.intensity * this.width * this.height * Math.PI;
|
|
}
|
|
set power(M) {
|
|
this.intensity = M / (this.width * this.height * Math.PI);
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.width = M.width, this.height = M.height, this;
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
return D.object.width = this.width, D.object.height = this.height, D;
|
|
}
|
|
}
|
|
Gc.prototype.isRectAreaLight = !0;
|
|
class Ji {
|
|
constructor() {
|
|
this.coefficients = [];
|
|
for (let M = 0; M < 9; M++)
|
|
this.coefficients.push(new O());
|
|
}
|
|
set(M) {
|
|
for (let D = 0; D < 9; D++)
|
|
this.coefficients[D].copy(M[D]);
|
|
return this;
|
|
}
|
|
zero() {
|
|
for (let M = 0; M < 9; M++)
|
|
this.coefficients[M].set(0, 0, 0);
|
|
return this;
|
|
}
|
|
getAt(M, D) {
|
|
const t = M.x, e = M.y, N = M.z, A = this.coefficients;
|
|
return D.copy(A[0]).multiplyScalar(0.282095), D.addScaledVector(A[1], 0.488603 * e), D.addScaledVector(A[2], 0.488603 * N), D.addScaledVector(A[3], 0.488603 * t), D.addScaledVector(A[4], 1.092548 * (t * e)), D.addScaledVector(A[5], 1.092548 * (e * N)), D.addScaledVector(A[6], 0.315392 * (3 * N * N - 1)), D.addScaledVector(A[7], 1.092548 * (t * N)), D.addScaledVector(A[8], 0.546274 * (t * t - e * e)), D;
|
|
}
|
|
getIrradianceAt(M, D) {
|
|
const t = M.x, e = M.y, N = M.z, A = this.coefficients;
|
|
return D.copy(A[0]).multiplyScalar(0.886227), D.addScaledVector(A[1], 2 * 0.511664 * e), D.addScaledVector(A[2], 2 * 0.511664 * N), D.addScaledVector(A[3], 2 * 0.511664 * t), D.addScaledVector(A[4], 2 * 0.429043 * t * e), D.addScaledVector(A[5], 2 * 0.429043 * e * N), D.addScaledVector(A[6], 0.743125 * N * N - 0.247708), D.addScaledVector(A[7], 2 * 0.429043 * t * N), D.addScaledVector(A[8], 0.429043 * (t * t - e * e)), D;
|
|
}
|
|
add(M) {
|
|
for (let D = 0; D < 9; D++)
|
|
this.coefficients[D].add(M.coefficients[D]);
|
|
return this;
|
|
}
|
|
addScaledSH(M, D) {
|
|
for (let t = 0; t < 9; t++)
|
|
this.coefficients[t].addScaledVector(M.coefficients[t], D);
|
|
return this;
|
|
}
|
|
scale(M) {
|
|
for (let D = 0; D < 9; D++)
|
|
this.coefficients[D].multiplyScalar(M);
|
|
return this;
|
|
}
|
|
lerp(M, D) {
|
|
for (let t = 0; t < 9; t++)
|
|
this.coefficients[t].lerp(M.coefficients[t], D);
|
|
return this;
|
|
}
|
|
equals(M) {
|
|
for (let D = 0; D < 9; D++)
|
|
if (!this.coefficients[D].equals(M.coefficients[D]))
|
|
return !1;
|
|
return !0;
|
|
}
|
|
copy(M) {
|
|
return this.set(M.coefficients);
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
fromArray(M, D = 0) {
|
|
const t = this.coefficients;
|
|
for (let e = 0; e < 9; e++)
|
|
t[e].fromArray(M, D + e * 3);
|
|
return this;
|
|
}
|
|
toArray(M = [], D = 0) {
|
|
const t = this.coefficients;
|
|
for (let e = 0; e < 9; e++)
|
|
t[e].toArray(M, D + e * 3);
|
|
return M;
|
|
}
|
|
static getBasisAt(M, D) {
|
|
const t = M.x, e = M.y, N = M.z;
|
|
D[0] = 0.282095, D[1] = 0.488603 * e, D[2] = 0.488603 * N, D[3] = 0.488603 * t, D[4] = 1.092548 * t * e, D[5] = 1.092548 * e * N, D[6] = 0.315392 * (3 * N * N - 1), D[7] = 1.092548 * t * N, D[8] = 0.546274 * (t * t - e * e);
|
|
}
|
|
}
|
|
Ji.prototype.isSphericalHarmonics3 = !0;
|
|
class rA extends KD {
|
|
constructor(M = new Ji(), D = 1) {
|
|
super(void 0, D), this.sh = M;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.sh.copy(M.sh), this;
|
|
}
|
|
fromJSON(M) {
|
|
return this.intensity = M.intensity, this.sh.fromArray(M.sh), this;
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
return D.object.sh = this.sh.toArray(), D;
|
|
}
|
|
}
|
|
rA.prototype.isLightProbe = !0;
|
|
class Wc {
|
|
static decodeText(M) {
|
|
if (typeof TextDecoder < "u")
|
|
return new TextDecoder().decode(M);
|
|
let D = "";
|
|
for (let t = 0, e = M.length; t < e; t++)
|
|
D += String.fromCharCode(M[t]);
|
|
try {
|
|
return decodeURIComponent(escape(D));
|
|
} catch {
|
|
return D;
|
|
}
|
|
}
|
|
static extractUrlBase(M) {
|
|
const D = M.lastIndexOf("/");
|
|
return D === -1 ? "./" : M.substr(0, D + 1);
|
|
}
|
|
static resolveURL(M, D) {
|
|
return typeof M != "string" || M === "" ? "" : (/^https?:\/\//i.test(D) && /^\//.test(M) && (D = D.replace(/(^https?:\/\/[^\/]+).*/i, "$1")), /^(https?:)?\/\//i.test(M) || /^data:.*,.*$/i.test(M) || /^blob:.*$/i.test(M) ? M : D + M);
|
|
}
|
|
}
|
|
class qc extends VM {
|
|
constructor() {
|
|
super(), this.type = "InstancedBufferGeometry", this.instanceCount = 1 / 0;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.instanceCount = M.instanceCount, this;
|
|
}
|
|
clone() {
|
|
return new this.constructor().copy(this);
|
|
}
|
|
toJSON() {
|
|
const M = super.toJSON(this);
|
|
return M.instanceCount = this.instanceCount, M.isInstancedBufferGeometry = !0, M;
|
|
}
|
|
}
|
|
qc.prototype.isInstancedBufferGeometry = !0;
|
|
class Xc extends JD {
|
|
constructor(M) {
|
|
super(M), typeof createImageBitmap > "u" && console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."), typeof fetch > "u" && console.warn("THREE.ImageBitmapLoader: fetch() not supported."), this.options = { premultiplyAlpha: "none" };
|
|
}
|
|
setOptions(M) {
|
|
return this.options = M, this;
|
|
}
|
|
load(M, D, t, e) {
|
|
M === void 0 && (M = ""), this.path !== void 0 && (M = this.path + M), M = this.manager.resolveURL(M);
|
|
const N = this, A = ze.get(M);
|
|
if (A !== void 0)
|
|
return N.manager.itemStart(M), setTimeout(function() {
|
|
D && D(A), N.manager.itemEnd(M);
|
|
}, 0), A;
|
|
const z = {};
|
|
z.credentials = this.crossOrigin === "anonymous" ? "same-origin" : "include", z.headers = this.requestHeader, fetch(M, z).then(function(I) {
|
|
return I.blob();
|
|
}).then(function(I) {
|
|
return createImageBitmap(I, Object.assign(N.options, { colorSpaceConversion: "none" }));
|
|
}).then(function(I) {
|
|
ze.add(M, I), D && D(I), N.manager.itemEnd(M);
|
|
}).catch(function(I) {
|
|
e && e(I), N.manager.itemError(M), N.manager.itemEnd(M);
|
|
}), N.manager.itemStart(M);
|
|
}
|
|
}
|
|
Xc.prototype.isImageBitmapLoader = !0;
|
|
let ON;
|
|
const Jc = {
|
|
getContext: function() {
|
|
return ON === void 0 && (ON = new (window.AudioContext || window.webkitAudioContext)()), ON;
|
|
},
|
|
setContext: function(n) {
|
|
ON = n;
|
|
}
|
|
};
|
|
class $c extends JD {
|
|
constructor(M) {
|
|
super(M);
|
|
}
|
|
load(M, D, t, e) {
|
|
const N = this, A = new Bi(this.manager);
|
|
A.setResponseType("arraybuffer"), A.setPath(this.path), A.setRequestHeader(this.requestHeader), A.setWithCredentials(this.withCredentials), A.load(M, function(z) {
|
|
try {
|
|
const I = z.slice(0);
|
|
Jc.getContext().decodeAudioData(I, function(T) {
|
|
D(T);
|
|
});
|
|
} catch (I) {
|
|
e ? e(I) : console.error(I), N.manager.itemError(M);
|
|
}
|
|
}, t, e);
|
|
}
|
|
}
|
|
class Mj extends rA {
|
|
constructor(M, D, t = 1) {
|
|
super(void 0, t);
|
|
const e = new cM().set(M), N = new cM().set(D), A = new O(e.r, e.g, e.b), z = new O(N.r, N.g, N.b), I = Math.sqrt(Math.PI), i = I * Math.sqrt(0.75);
|
|
this.sh.coefficients[0].copy(A).add(z).multiplyScalar(I), this.sh.coefficients[1].copy(A).sub(z).multiplyScalar(i);
|
|
}
|
|
}
|
|
Mj.prototype.isHemisphereLightProbe = !0;
|
|
class Dj extends rA {
|
|
constructor(M, D = 1) {
|
|
super(void 0, D);
|
|
const t = new cM().set(M);
|
|
this.sh.coefficients[0].set(t.r, t.g, t.b).multiplyScalar(2 * Math.sqrt(Math.PI));
|
|
}
|
|
}
|
|
Dj.prototype.isAmbientLightProbe = !0;
|
|
class tj extends ZM {
|
|
constructor(M) {
|
|
super(), this.type = "Audio", this.listener = M, this.context = M.context, this.gain = this.context.createGain(), this.gain.connect(M.getInput()), this.autoplay = !1, this.buffer = null, this.detune = 0, this.loop = !1, this.loopStart = 0, this.loopEnd = 0, this.offset = 0, this.duration = void 0, this.playbackRate = 1, this.isPlaying = !1, this.hasPlaybackControl = !0, this.source = null, this.sourceType = "empty", this._startedAt = 0, this._progress = 0, this._connected = !1, this.filters = [];
|
|
}
|
|
getOutput() {
|
|
return this.gain;
|
|
}
|
|
setNodeSource(M) {
|
|
return this.hasPlaybackControl = !1, this.sourceType = "audioNode", this.source = M, this.connect(), this;
|
|
}
|
|
setMediaElementSource(M) {
|
|
return this.hasPlaybackControl = !1, this.sourceType = "mediaNode", this.source = this.context.createMediaElementSource(M), this.connect(), this;
|
|
}
|
|
setMediaStreamSource(M) {
|
|
return this.hasPlaybackControl = !1, this.sourceType = "mediaStreamNode", this.source = this.context.createMediaStreamSource(M), this.connect(), this;
|
|
}
|
|
setBuffer(M) {
|
|
return this.buffer = M, this.sourceType = "buffer", this.autoplay && this.play(), this;
|
|
}
|
|
play(M = 0) {
|
|
if (this.isPlaying === !0) {
|
|
console.warn("THREE.Audio: Audio is already playing.");
|
|
return;
|
|
}
|
|
if (this.hasPlaybackControl === !1) {
|
|
console.warn("THREE.Audio: this Audio has no playback control.");
|
|
return;
|
|
}
|
|
this._startedAt = this.context.currentTime + M;
|
|
const D = this.context.createBufferSource();
|
|
return D.buffer = this.buffer, D.loop = this.loop, D.loopStart = this.loopStart, D.loopEnd = this.loopEnd, D.onended = this.onEnded.bind(this), D.start(this._startedAt, this._progress + this.offset, this.duration), this.isPlaying = !0, this.source = D, this.setDetune(this.detune), this.setPlaybackRate(this.playbackRate), this.connect();
|
|
}
|
|
pause() {
|
|
if (this.hasPlaybackControl === !1) {
|
|
console.warn("THREE.Audio: this Audio has no playback control.");
|
|
return;
|
|
}
|
|
return this.isPlaying === !0 && (this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate, this.loop === !0 && (this._progress = this._progress % (this.duration || this.buffer.duration)), this.source.stop(), this.source.onended = null, this.isPlaying = !1), this;
|
|
}
|
|
stop() {
|
|
if (this.hasPlaybackControl === !1) {
|
|
console.warn("THREE.Audio: this Audio has no playback control.");
|
|
return;
|
|
}
|
|
return this._progress = 0, this.source.stop(), this.source.onended = null, this.isPlaying = !1, this;
|
|
}
|
|
connect() {
|
|
if (this.filters.length > 0) {
|
|
this.source.connect(this.filters[0]);
|
|
for (let M = 1, D = this.filters.length; M < D; M++)
|
|
this.filters[M - 1].connect(this.filters[M]);
|
|
this.filters[this.filters.length - 1].connect(this.getOutput());
|
|
} else
|
|
this.source.connect(this.getOutput());
|
|
return this._connected = !0, this;
|
|
}
|
|
disconnect() {
|
|
if (this.filters.length > 0) {
|
|
this.source.disconnect(this.filters[0]);
|
|
for (let M = 1, D = this.filters.length; M < D; M++)
|
|
this.filters[M - 1].disconnect(this.filters[M]);
|
|
this.filters[this.filters.length - 1].disconnect(this.getOutput());
|
|
} else
|
|
this.source.disconnect(this.getOutput());
|
|
return this._connected = !1, this;
|
|
}
|
|
getFilters() {
|
|
return this.filters;
|
|
}
|
|
setFilters(M) {
|
|
return M || (M = []), this._connected === !0 ? (this.disconnect(), this.filters = M.slice(), this.connect()) : this.filters = M.slice(), this;
|
|
}
|
|
setDetune(M) {
|
|
if (this.detune = M, this.source.detune !== void 0)
|
|
return this.isPlaying === !0 && this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01), this;
|
|
}
|
|
getDetune() {
|
|
return this.detune;
|
|
}
|
|
getFilter() {
|
|
return this.getFilters()[0];
|
|
}
|
|
setFilter(M) {
|
|
return this.setFilters(M ? [M] : []);
|
|
}
|
|
setPlaybackRate(M) {
|
|
if (this.hasPlaybackControl === !1) {
|
|
console.warn("THREE.Audio: this Audio has no playback control.");
|
|
return;
|
|
}
|
|
return this.playbackRate = M, this.isPlaying === !0 && this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01), this;
|
|
}
|
|
getPlaybackRate() {
|
|
return this.playbackRate;
|
|
}
|
|
onEnded() {
|
|
this.isPlaying = !1;
|
|
}
|
|
getLoop() {
|
|
return this.hasPlaybackControl === !1 ? (console.warn("THREE.Audio: this Audio has no playback control."), !1) : this.loop;
|
|
}
|
|
setLoop(M) {
|
|
if (this.hasPlaybackControl === !1) {
|
|
console.warn("THREE.Audio: this Audio has no playback control.");
|
|
return;
|
|
}
|
|
return this.loop = M, this.isPlaying === !0 && (this.source.loop = this.loop), this;
|
|
}
|
|
setLoopStart(M) {
|
|
return this.loopStart = M, this;
|
|
}
|
|
setLoopEnd(M) {
|
|
return this.loopEnd = M, this;
|
|
}
|
|
getVolume() {
|
|
return this.gain.gain.value;
|
|
}
|
|
setVolume(M) {
|
|
return this.gain.gain.setTargetAtTime(M, this.context.currentTime, 0.01), this;
|
|
}
|
|
}
|
|
class ej {
|
|
constructor(M, D, t) {
|
|
this.binding = M, this.valueSize = t;
|
|
let e, N, A;
|
|
switch (D) {
|
|
case "quaternion":
|
|
e = this._slerp, N = this._slerpAdditive, A = this._setAdditiveIdentityQuaternion, this.buffer = new Float64Array(t * 6), this._workIndex = 5;
|
|
break;
|
|
case "string":
|
|
case "bool":
|
|
e = this._select, N = this._select, A = this._setAdditiveIdentityOther, this.buffer = new Array(t * 5);
|
|
break;
|
|
default:
|
|
e = this._lerp, N = this._lerpAdditive, A = this._setAdditiveIdentityNumeric, this.buffer = new Float64Array(t * 5);
|
|
}
|
|
this._mixBufferRegion = e, this._mixBufferRegionAdditive = N, this._setIdentity = A, this._origIndex = 3, this._addIndex = 4, this.cumulativeWeight = 0, this.cumulativeWeightAdditive = 0, this.useCount = 0, this.referenceCount = 0;
|
|
}
|
|
accumulate(M, D) {
|
|
const t = this.buffer, e = this.valueSize, N = M * e + e;
|
|
let A = this.cumulativeWeight;
|
|
if (A === 0) {
|
|
for (let z = 0; z !== e; ++z)
|
|
t[N + z] = t[z];
|
|
A = D;
|
|
} else {
|
|
A += D;
|
|
const z = D / A;
|
|
this._mixBufferRegion(t, N, 0, z, e);
|
|
}
|
|
this.cumulativeWeight = A;
|
|
}
|
|
accumulateAdditive(M) {
|
|
const D = this.buffer, t = this.valueSize, e = t * this._addIndex;
|
|
this.cumulativeWeightAdditive === 0 && this._setIdentity(), this._mixBufferRegionAdditive(D, e, 0, M, t), this.cumulativeWeightAdditive += M;
|
|
}
|
|
apply(M) {
|
|
const D = this.valueSize, t = this.buffer, e = M * D + D, N = this.cumulativeWeight, A = this.cumulativeWeightAdditive, z = this.binding;
|
|
if (this.cumulativeWeight = 0, this.cumulativeWeightAdditive = 0, N < 1) {
|
|
const I = D * this._origIndex;
|
|
this._mixBufferRegion(t, e, I, 1 - N, D);
|
|
}
|
|
A > 0 && this._mixBufferRegionAdditive(t, e, this._addIndex * D, 1, D);
|
|
for (let I = D, i = D + D; I !== i; ++I)
|
|
if (t[I] !== t[I + D]) {
|
|
z.setValue(t, e);
|
|
break;
|
|
}
|
|
}
|
|
saveOriginalState() {
|
|
const M = this.binding, D = this.buffer, t = this.valueSize, e = t * this._origIndex;
|
|
M.getValue(D, e);
|
|
for (let N = t, A = e; N !== A; ++N)
|
|
D[N] = D[e + N % t];
|
|
this._setIdentity(), this.cumulativeWeight = 0, this.cumulativeWeightAdditive = 0;
|
|
}
|
|
restoreOriginalState() {
|
|
const M = this.valueSize * 3;
|
|
this.binding.setValue(this.buffer, M);
|
|
}
|
|
_setAdditiveIdentityNumeric() {
|
|
const M = this._addIndex * this.valueSize, D = M + this.valueSize;
|
|
for (let t = M; t < D; t++)
|
|
this.buffer[t] = 0;
|
|
}
|
|
_setAdditiveIdentityQuaternion() {
|
|
this._setAdditiveIdentityNumeric(), this.buffer[this._addIndex * this.valueSize + 3] = 1;
|
|
}
|
|
_setAdditiveIdentityOther() {
|
|
const M = this._origIndex * this.valueSize, D = this._addIndex * this.valueSize;
|
|
for (let t = 0; t < this.valueSize; t++)
|
|
this.buffer[D + t] = this.buffer[M + t];
|
|
}
|
|
_select(M, D, t, e, N) {
|
|
if (e >= 0.5)
|
|
for (let A = 0; A !== N; ++A)
|
|
M[D + A] = M[t + A];
|
|
}
|
|
_slerp(M, D, t, e) {
|
|
aD.slerpFlat(M, D, M, D, M, t, e);
|
|
}
|
|
_slerpAdditive(M, D, t, e, N) {
|
|
const A = this._workIndex * N;
|
|
aD.multiplyQuaternionsFlat(M, A, M, D, M, t), aD.slerpFlat(M, D, M, D, M, A, e);
|
|
}
|
|
_lerp(M, D, t, e, N) {
|
|
const A = 1 - e;
|
|
for (let z = 0; z !== N; ++z) {
|
|
const I = D + z;
|
|
M[I] = M[I] * A + M[t + z] * e;
|
|
}
|
|
}
|
|
_lerpAdditive(M, D, t, e, N) {
|
|
for (let A = 0; A !== N; ++A) {
|
|
const z = D + A;
|
|
M[z] = M[z] + M[t + A] * e;
|
|
}
|
|
}
|
|
}
|
|
const sA = "\\[\\]\\.:\\/", Nj = new RegExp("[" + sA + "]", "g"), cA = "[^" + sA + "]", nj = "[^" + sA.replace("\\.", "") + "]", Aj = /((?:WC+[\/:])*)/.source.replace("WC", cA), zj = /(WCOD+)?/.source.replace("WCOD", nj), ij = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC", cA), Ij = /\.(WC+)(?:\[(.+)\])?/.source.replace("WC", cA), Tj = new RegExp("^" + Aj + zj + ij + Ij + "$"), uj = ["material", "materials", "bones"];
|
|
class gj {
|
|
constructor(M, D, t) {
|
|
const e = t || bM.parseTrackName(D);
|
|
this._targetGroup = M, this._bindings = M.subscribe_(D, e);
|
|
}
|
|
getValue(M, D) {
|
|
this.bind();
|
|
const t = this._targetGroup.nCachedObjects_, e = this._bindings[t];
|
|
e !== void 0 && e.getValue(M, D);
|
|
}
|
|
setValue(M, D) {
|
|
const t = this._bindings;
|
|
for (let e = this._targetGroup.nCachedObjects_, N = t.length; e !== N; ++e)
|
|
t[e].setValue(M, D);
|
|
}
|
|
bind() {
|
|
const M = this._bindings;
|
|
for (let D = this._targetGroup.nCachedObjects_, t = M.length; D !== t; ++D)
|
|
M[D].bind();
|
|
}
|
|
unbind() {
|
|
const M = this._bindings;
|
|
for (let D = this._targetGroup.nCachedObjects_, t = M.length; D !== t; ++D)
|
|
M[D].unbind();
|
|
}
|
|
}
|
|
class bM {
|
|
constructor(M, D, t) {
|
|
this.path = D, this.parsedPath = t || bM.parseTrackName(D), this.node = bM.findNode(M, this.parsedPath.nodeName) || M, this.rootNode = M, this.getValue = this._getValue_unbound, this.setValue = this._setValue_unbound;
|
|
}
|
|
static create(M, D, t) {
|
|
return M && M.isAnimationObjectGroup ? new bM.Composite(M, D, t) : new bM(M, D, t);
|
|
}
|
|
static sanitizeNodeName(M) {
|
|
return M.replace(/\s/g, "_").replace(Nj, "");
|
|
}
|
|
static parseTrackName(M) {
|
|
const D = Tj.exec(M);
|
|
if (!D)
|
|
throw new Error("PropertyBinding: Cannot parse trackName: " + M);
|
|
const t = {
|
|
nodeName: D[2],
|
|
objectName: D[3],
|
|
objectIndex: D[4],
|
|
propertyName: D[5],
|
|
propertyIndex: D[6]
|
|
}, e = t.nodeName && t.nodeName.lastIndexOf(".");
|
|
if (e !== void 0 && e !== -1) {
|
|
const N = t.nodeName.substring(e + 1);
|
|
uj.indexOf(N) !== -1 && (t.nodeName = t.nodeName.substring(0, e), t.objectName = N);
|
|
}
|
|
if (t.propertyName === null || t.propertyName.length === 0)
|
|
throw new Error("PropertyBinding: can not parse propertyName from trackName: " + M);
|
|
return t;
|
|
}
|
|
static findNode(M, D) {
|
|
if (!D || D === "" || D === "." || D === -1 || D === M.name || D === M.uuid)
|
|
return M;
|
|
if (M.skeleton) {
|
|
const t = M.skeleton.getBoneByName(D);
|
|
if (t !== void 0)
|
|
return t;
|
|
}
|
|
if (M.children) {
|
|
const t = function(N) {
|
|
for (let A = 0; A < N.length; A++) {
|
|
const z = N[A];
|
|
if (z.name === D || z.uuid === D)
|
|
return z;
|
|
const I = t(z.children);
|
|
if (I)
|
|
return I;
|
|
}
|
|
return null;
|
|
}, e = t(M.children);
|
|
if (e)
|
|
return e;
|
|
}
|
|
return null;
|
|
}
|
|
_getValue_unavailable() {
|
|
}
|
|
_setValue_unavailable() {
|
|
}
|
|
_getValue_direct(M, D) {
|
|
M[D] = this.targetObject[this.propertyName];
|
|
}
|
|
_getValue_array(M, D) {
|
|
const t = this.resolvedProperty;
|
|
for (let e = 0, N = t.length; e !== N; ++e)
|
|
M[D++] = t[e];
|
|
}
|
|
_getValue_arrayElement(M, D) {
|
|
M[D] = this.resolvedProperty[this.propertyIndex];
|
|
}
|
|
_getValue_toArray(M, D) {
|
|
this.resolvedProperty.toArray(M, D);
|
|
}
|
|
_setValue_direct(M, D) {
|
|
this.targetObject[this.propertyName] = M[D];
|
|
}
|
|
_setValue_direct_setNeedsUpdate(M, D) {
|
|
this.targetObject[this.propertyName] = M[D], this.targetObject.needsUpdate = !0;
|
|
}
|
|
_setValue_direct_setMatrixWorldNeedsUpdate(M, D) {
|
|
this.targetObject[this.propertyName] = M[D], this.targetObject.matrixWorldNeedsUpdate = !0;
|
|
}
|
|
_setValue_array(M, D) {
|
|
const t = this.resolvedProperty;
|
|
for (let e = 0, N = t.length; e !== N; ++e)
|
|
t[e] = M[D++];
|
|
}
|
|
_setValue_array_setNeedsUpdate(M, D) {
|
|
const t = this.resolvedProperty;
|
|
for (let e = 0, N = t.length; e !== N; ++e)
|
|
t[e] = M[D++];
|
|
this.targetObject.needsUpdate = !0;
|
|
}
|
|
_setValue_array_setMatrixWorldNeedsUpdate(M, D) {
|
|
const t = this.resolvedProperty;
|
|
for (let e = 0, N = t.length; e !== N; ++e)
|
|
t[e] = M[D++];
|
|
this.targetObject.matrixWorldNeedsUpdate = !0;
|
|
}
|
|
_setValue_arrayElement(M, D) {
|
|
this.resolvedProperty[this.propertyIndex] = M[D];
|
|
}
|
|
_setValue_arrayElement_setNeedsUpdate(M, D) {
|
|
this.resolvedProperty[this.propertyIndex] = M[D], this.targetObject.needsUpdate = !0;
|
|
}
|
|
_setValue_arrayElement_setMatrixWorldNeedsUpdate(M, D) {
|
|
this.resolvedProperty[this.propertyIndex] = M[D], this.targetObject.matrixWorldNeedsUpdate = !0;
|
|
}
|
|
_setValue_fromArray(M, D) {
|
|
this.resolvedProperty.fromArray(M, D);
|
|
}
|
|
_setValue_fromArray_setNeedsUpdate(M, D) {
|
|
this.resolvedProperty.fromArray(M, D), this.targetObject.needsUpdate = !0;
|
|
}
|
|
_setValue_fromArray_setMatrixWorldNeedsUpdate(M, D) {
|
|
this.resolvedProperty.fromArray(M, D), this.targetObject.matrixWorldNeedsUpdate = !0;
|
|
}
|
|
_getValue_unbound(M, D) {
|
|
this.bind(), this.getValue(M, D);
|
|
}
|
|
_setValue_unbound(M, D) {
|
|
this.bind(), this.setValue(M, D);
|
|
}
|
|
bind() {
|
|
let M = this.node;
|
|
const D = this.parsedPath, t = D.objectName, e = D.propertyName;
|
|
let N = D.propertyIndex;
|
|
if (M || (M = bM.findNode(this.rootNode, D.nodeName) || this.rootNode, this.node = M), this.getValue = this._getValue_unavailable, this.setValue = this._setValue_unavailable, !M) {
|
|
console.error("THREE.PropertyBinding: Trying to update node for track: " + this.path + " but it wasn't found.");
|
|
return;
|
|
}
|
|
if (t) {
|
|
let i = D.objectIndex;
|
|
switch (t) {
|
|
case "materials":
|
|
if (!M.material) {
|
|
console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.", this);
|
|
return;
|
|
}
|
|
if (!M.material.materials) {
|
|
console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.", this);
|
|
return;
|
|
}
|
|
M = M.material.materials;
|
|
break;
|
|
case "bones":
|
|
if (!M.skeleton) {
|
|
console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.", this);
|
|
return;
|
|
}
|
|
M = M.skeleton.bones;
|
|
for (let T = 0; T < M.length; T++)
|
|
if (M[T].name === i) {
|
|
i = T;
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
if (M[t] === void 0) {
|
|
console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.", this);
|
|
return;
|
|
}
|
|
M = M[t];
|
|
}
|
|
if (i !== void 0) {
|
|
if (M[i] === void 0) {
|
|
console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.", this, M);
|
|
return;
|
|
}
|
|
M = M[i];
|
|
}
|
|
}
|
|
const A = M[e];
|
|
if (A === void 0) {
|
|
const i = D.nodeName;
|
|
console.error("THREE.PropertyBinding: Trying to update property for track: " + i + "." + e + " but it wasn't found.", M);
|
|
return;
|
|
}
|
|
let z = this.Versioning.None;
|
|
this.targetObject = M, M.needsUpdate !== void 0 ? z = this.Versioning.NeedsUpdate : M.matrixWorldNeedsUpdate !== void 0 && (z = this.Versioning.MatrixWorldNeedsUpdate);
|
|
let I = this.BindingType.Direct;
|
|
if (N !== void 0) {
|
|
if (e === "morphTargetInfluences") {
|
|
if (!M.geometry) {
|
|
console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.", this);
|
|
return;
|
|
}
|
|
if (M.geometry.isBufferGeometry) {
|
|
if (!M.geometry.morphAttributes) {
|
|
console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.", this);
|
|
return;
|
|
}
|
|
M.morphTargetDictionary[N] !== void 0 && (N = M.morphTargetDictionary[N]);
|
|
} else {
|
|
console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.", this);
|
|
return;
|
|
}
|
|
}
|
|
I = this.BindingType.ArrayElement, this.resolvedProperty = A, this.propertyIndex = N;
|
|
} else
|
|
A.fromArray !== void 0 && A.toArray !== void 0 ? (I = this.BindingType.HasFromToArray, this.resolvedProperty = A) : Array.isArray(A) ? (I = this.BindingType.EntireArray, this.resolvedProperty = A) : this.propertyName = e;
|
|
this.getValue = this.GetterByBindingType[I], this.setValue = this.SetterByBindingTypeAndVersioning[I][z];
|
|
}
|
|
unbind() {
|
|
this.node = null, this.getValue = this._getValue_unbound, this.setValue = this._setValue_unbound;
|
|
}
|
|
}
|
|
bM.Composite = gj;
|
|
bM.prototype.BindingType = {
|
|
Direct: 0,
|
|
EntireArray: 1,
|
|
ArrayElement: 2,
|
|
HasFromToArray: 3
|
|
};
|
|
bM.prototype.Versioning = {
|
|
None: 0,
|
|
NeedsUpdate: 1,
|
|
MatrixWorldNeedsUpdate: 2
|
|
};
|
|
bM.prototype.GetterByBindingType = [
|
|
bM.prototype._getValue_direct,
|
|
bM.prototype._getValue_array,
|
|
bM.prototype._getValue_arrayElement,
|
|
bM.prototype._getValue_toArray
|
|
];
|
|
bM.prototype.SetterByBindingTypeAndVersioning = [
|
|
[
|
|
bM.prototype._setValue_direct,
|
|
bM.prototype._setValue_direct_setNeedsUpdate,
|
|
bM.prototype._setValue_direct_setMatrixWorldNeedsUpdate
|
|
],
|
|
[
|
|
bM.prototype._setValue_array,
|
|
bM.prototype._setValue_array_setNeedsUpdate,
|
|
bM.prototype._setValue_array_setMatrixWorldNeedsUpdate
|
|
],
|
|
[
|
|
bM.prototype._setValue_arrayElement,
|
|
bM.prototype._setValue_arrayElement_setNeedsUpdate,
|
|
bM.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate
|
|
],
|
|
[
|
|
bM.prototype._setValue_fromArray,
|
|
bM.prototype._setValue_fromArray_setNeedsUpdate,
|
|
bM.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate
|
|
]
|
|
];
|
|
class rj {
|
|
constructor(M, D, t = null, e = D.blendMode) {
|
|
this._mixer = M, this._clip = D, this._localRoot = t, this.blendMode = e;
|
|
const N = D.tracks, A = N.length, z = new Array(A), I = {
|
|
endingStart: qt,
|
|
endingEnd: qt
|
|
};
|
|
for (let i = 0; i !== A; ++i) {
|
|
const T = N[i].createInterpolant(null);
|
|
z[i] = T, T.settings = I;
|
|
}
|
|
this._interpolantSettings = I, this._interpolants = z, this._propertyBindings = new Array(A), this._cacheIndex = null, this._byClipCacheIndex = null, this._timeScaleInterpolant = null, this._weightInterpolant = null, this.loop = MT, this._loopCount = -1, this._startTime = null, this.time = 0, this.timeScale = 1, this._effectiveTimeScale = 1, this.weight = 1, this._effectiveWeight = 1, this.repetitions = 1 / 0, this.paused = !1, this.enabled = !0, this.clampWhenFinished = !1, this.zeroSlopeAtStart = !0, this.zeroSlopeAtEnd = !0;
|
|
}
|
|
play() {
|
|
return this._mixer._activateAction(this), this;
|
|
}
|
|
stop() {
|
|
return this._mixer._deactivateAction(this), this.reset();
|
|
}
|
|
reset() {
|
|
return this.paused = !1, this.enabled = !0, this.time = 0, this._loopCount = -1, this._startTime = null, this.stopFading().stopWarping();
|
|
}
|
|
isRunning() {
|
|
return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);
|
|
}
|
|
isScheduled() {
|
|
return this._mixer._isActiveAction(this);
|
|
}
|
|
startAt(M) {
|
|
return this._startTime = M, this;
|
|
}
|
|
setLoop(M, D) {
|
|
return this.loop = M, this.repetitions = D, this;
|
|
}
|
|
setEffectiveWeight(M) {
|
|
return this.weight = M, this._effectiveWeight = this.enabled ? M : 0, this.stopFading();
|
|
}
|
|
getEffectiveWeight() {
|
|
return this._effectiveWeight;
|
|
}
|
|
fadeIn(M) {
|
|
return this._scheduleFading(M, 0, 1);
|
|
}
|
|
fadeOut(M) {
|
|
return this._scheduleFading(M, 1, 0);
|
|
}
|
|
crossFadeFrom(M, D, t) {
|
|
if (M.fadeOut(D), this.fadeIn(D), t) {
|
|
const e = this._clip.duration, N = M._clip.duration, A = N / e, z = e / N;
|
|
M.warp(1, A, D), this.warp(z, 1, D);
|
|
}
|
|
return this;
|
|
}
|
|
crossFadeTo(M, D, t) {
|
|
return M.crossFadeFrom(this, D, t);
|
|
}
|
|
stopFading() {
|
|
const M = this._weightInterpolant;
|
|
return M !== null && (this._weightInterpolant = null, this._mixer._takeBackControlInterpolant(M)), this;
|
|
}
|
|
setEffectiveTimeScale(M) {
|
|
return this.timeScale = M, this._effectiveTimeScale = this.paused ? 0 : M, this.stopWarping();
|
|
}
|
|
getEffectiveTimeScale() {
|
|
return this._effectiveTimeScale;
|
|
}
|
|
setDuration(M) {
|
|
return this.timeScale = this._clip.duration / M, this.stopWarping();
|
|
}
|
|
syncWith(M) {
|
|
return this.time = M.time, this.timeScale = M.timeScale, this.stopWarping();
|
|
}
|
|
halt(M) {
|
|
return this.warp(this._effectiveTimeScale, 0, M);
|
|
}
|
|
warp(M, D, t) {
|
|
const e = this._mixer, N = e.time, A = this.timeScale;
|
|
let z = this._timeScaleInterpolant;
|
|
z === null && (z = e._lendControlInterpolant(), this._timeScaleInterpolant = z);
|
|
const I = z.parameterPositions, i = z.sampleValues;
|
|
return I[0] = N, I[1] = N + t, i[0] = M / A, i[1] = D / A, this;
|
|
}
|
|
stopWarping() {
|
|
const M = this._timeScaleInterpolant;
|
|
return M !== null && (this._timeScaleInterpolant = null, this._mixer._takeBackControlInterpolant(M)), this;
|
|
}
|
|
getMixer() {
|
|
return this._mixer;
|
|
}
|
|
getClip() {
|
|
return this._clip;
|
|
}
|
|
getRoot() {
|
|
return this._localRoot || this._mixer._root;
|
|
}
|
|
_update(M, D, t, e) {
|
|
if (!this.enabled) {
|
|
this._updateWeight(M);
|
|
return;
|
|
}
|
|
const N = this._startTime;
|
|
if (N !== null) {
|
|
const I = (M - N) * t;
|
|
if (I < 0 || t === 0)
|
|
return;
|
|
this._startTime = null, D = t * I;
|
|
}
|
|
D *= this._updateTimeScale(M);
|
|
const A = this._updateTime(D), z = this._updateWeight(M);
|
|
if (z > 0) {
|
|
const I = this._interpolants, i = this._propertyBindings;
|
|
switch (this.blendMode) {
|
|
case zi:
|
|
for (let T = 0, u = I.length; T !== u; ++T)
|
|
I[T].evaluate(A), i[T].accumulateAdditive(z);
|
|
break;
|
|
case Xn:
|
|
default:
|
|
for (let T = 0, u = I.length; T !== u; ++T)
|
|
I[T].evaluate(A), i[T].accumulate(e, z);
|
|
}
|
|
}
|
|
}
|
|
_updateWeight(M) {
|
|
let D = 0;
|
|
if (this.enabled) {
|
|
D = this.weight;
|
|
const t = this._weightInterpolant;
|
|
if (t !== null) {
|
|
const e = t.evaluate(M)[0];
|
|
D *= e, M > t.parameterPositions[1] && (this.stopFading(), e === 0 && (this.enabled = !1));
|
|
}
|
|
}
|
|
return this._effectiveWeight = D, D;
|
|
}
|
|
_updateTimeScale(M) {
|
|
let D = 0;
|
|
if (!this.paused) {
|
|
D = this.timeScale;
|
|
const t = this._timeScaleInterpolant;
|
|
t !== null && (D *= t.evaluate(M)[0], M > t.parameterPositions[1] && (this.stopWarping(), D === 0 ? this.paused = !0 : this.timeScale = D));
|
|
}
|
|
return this._effectiveTimeScale = D, D;
|
|
}
|
|
_updateTime(M) {
|
|
const D = this._clip.duration, t = this.loop;
|
|
let e = this.time + M, N = this._loopCount;
|
|
const A = t === DT;
|
|
if (M === 0)
|
|
return N === -1 ? e : A && (N & 1) === 1 ? D - e : e;
|
|
if (t === $I) {
|
|
N === -1 && (this._loopCount = 0, this._setEndings(!0, !0, !1));
|
|
M: {
|
|
if (e >= D)
|
|
e = D;
|
|
else if (e < 0)
|
|
e = 0;
|
|
else {
|
|
this.time = e;
|
|
break M;
|
|
}
|
|
this.clampWhenFinished ? this.paused = !0 : this.enabled = !1, this.time = e, this._mixer.dispatchEvent({
|
|
type: "finished",
|
|
action: this,
|
|
direction: M < 0 ? -1 : 1
|
|
});
|
|
}
|
|
} else {
|
|
if (N === -1 && (M >= 0 ? (N = 0, this._setEndings(!0, this.repetitions === 0, A)) : this._setEndings(this.repetitions === 0, !0, A)), e >= D || e < 0) {
|
|
const z = Math.floor(e / D);
|
|
e -= D * z, N += Math.abs(z);
|
|
const I = this.repetitions - N;
|
|
if (I <= 0)
|
|
this.clampWhenFinished ? this.paused = !0 : this.enabled = !1, e = M > 0 ? D : 0, this.time = e, this._mixer.dispatchEvent({
|
|
type: "finished",
|
|
action: this,
|
|
direction: M > 0 ? 1 : -1
|
|
});
|
|
else {
|
|
if (I === 1) {
|
|
const i = M < 0;
|
|
this._setEndings(i, !i, A);
|
|
} else
|
|
this._setEndings(!1, !1, A);
|
|
this._loopCount = N, this.time = e, this._mixer.dispatchEvent({
|
|
type: "loop",
|
|
action: this,
|
|
loopDelta: z
|
|
});
|
|
}
|
|
} else
|
|
this.time = e;
|
|
if (A && (N & 1) === 1)
|
|
return D - e;
|
|
}
|
|
return e;
|
|
}
|
|
_setEndings(M, D, t) {
|
|
const e = this._interpolantSettings;
|
|
t ? (e.endingStart = Xt, e.endingEnd = Xt) : (M ? e.endingStart = this.zeroSlopeAtStart ? Xt : qt : e.endingStart = hN, D ? e.endingEnd = this.zeroSlopeAtEnd ? Xt : qt : e.endingEnd = hN);
|
|
}
|
|
_scheduleFading(M, D, t) {
|
|
const e = this._mixer, N = e.time;
|
|
let A = this._weightInterpolant;
|
|
A === null && (A = e._lendControlInterpolant(), this._weightInterpolant = A);
|
|
const z = A.parameterPositions, I = A.sampleValues;
|
|
return z[0] = N, I[0] = D, z[1] = N + M, I[1] = t, this;
|
|
}
|
|
}
|
|
class sj extends dt {
|
|
constructor(M) {
|
|
super(), this._root = M, this._initMemoryManager(), this._accuIndex = 0, this.time = 0, this.timeScale = 1;
|
|
}
|
|
_bindAction(M, D) {
|
|
const t = M._localRoot || this._root, e = M._clip.tracks, N = e.length, A = M._propertyBindings, z = M._interpolants, I = t.uuid, i = this._bindingsByRootAndName;
|
|
let T = i[I];
|
|
T === void 0 && (T = {}, i[I] = T);
|
|
for (let u = 0; u !== N; ++u) {
|
|
const g = e[u], s = g.name;
|
|
let j = T[s];
|
|
if (j !== void 0)
|
|
++j.referenceCount, A[u] = j;
|
|
else {
|
|
if (j = A[u], j !== void 0) {
|
|
j._cacheIndex === null && (++j.referenceCount, this._addInactiveBinding(j, I, s));
|
|
continue;
|
|
}
|
|
const y = D && D._propertyBindings[u].binding.parsedPath;
|
|
j = new ej(bM.create(t, s, y), g.ValueTypeName, g.getValueSize()), ++j.referenceCount, this._addInactiveBinding(j, I, s), A[u] = j;
|
|
}
|
|
z[u].resultBuffer = j.buffer;
|
|
}
|
|
}
|
|
_activateAction(M) {
|
|
if (!this._isActiveAction(M)) {
|
|
if (M._cacheIndex === null) {
|
|
const t = (M._localRoot || this._root).uuid, e = M._clip.uuid, N = this._actionsByClip[e];
|
|
this._bindAction(M, N && N.knownActions[0]), this._addInactiveAction(M, e, t);
|
|
}
|
|
const D = M._propertyBindings;
|
|
for (let t = 0, e = D.length; t !== e; ++t) {
|
|
const N = D[t];
|
|
N.useCount++ === 0 && (this._lendBinding(N), N.saveOriginalState());
|
|
}
|
|
this._lendAction(M);
|
|
}
|
|
}
|
|
_deactivateAction(M) {
|
|
if (this._isActiveAction(M)) {
|
|
const D = M._propertyBindings;
|
|
for (let t = 0, e = D.length; t !== e; ++t) {
|
|
const N = D[t];
|
|
--N.useCount === 0 && (N.restoreOriginalState(), this._takeBackBinding(N));
|
|
}
|
|
this._takeBackAction(M);
|
|
}
|
|
}
|
|
_initMemoryManager() {
|
|
this._actions = [], this._nActiveActions = 0, this._actionsByClip = {}, this._bindings = [], this._nActiveBindings = 0, this._bindingsByRootAndName = {}, this._controlInterpolants = [], this._nActiveControlInterpolants = 0;
|
|
const M = this;
|
|
this.stats = {
|
|
actions: {
|
|
get total() {
|
|
return M._actions.length;
|
|
},
|
|
get inUse() {
|
|
return M._nActiveActions;
|
|
}
|
|
},
|
|
bindings: {
|
|
get total() {
|
|
return M._bindings.length;
|
|
},
|
|
get inUse() {
|
|
return M._nActiveBindings;
|
|
}
|
|
},
|
|
controlInterpolants: {
|
|
get total() {
|
|
return M._controlInterpolants.length;
|
|
},
|
|
get inUse() {
|
|
return M._nActiveControlInterpolants;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
_isActiveAction(M) {
|
|
const D = M._cacheIndex;
|
|
return D !== null && D < this._nActiveActions;
|
|
}
|
|
_addInactiveAction(M, D, t) {
|
|
const e = this._actions, N = this._actionsByClip;
|
|
let A = N[D];
|
|
if (A === void 0)
|
|
A = {
|
|
knownActions: [M],
|
|
actionByRoot: {}
|
|
}, M._byClipCacheIndex = 0, N[D] = A;
|
|
else {
|
|
const z = A.knownActions;
|
|
M._byClipCacheIndex = z.length, z.push(M);
|
|
}
|
|
M._cacheIndex = e.length, e.push(M), A.actionByRoot[t] = M;
|
|
}
|
|
_removeInactiveAction(M) {
|
|
const D = this._actions, t = D[D.length - 1], e = M._cacheIndex;
|
|
t._cacheIndex = e, D[e] = t, D.pop(), M._cacheIndex = null;
|
|
const N = M._clip.uuid, A = this._actionsByClip, z = A[N], I = z.knownActions, i = I[I.length - 1], T = M._byClipCacheIndex;
|
|
i._byClipCacheIndex = T, I[T] = i, I.pop(), M._byClipCacheIndex = null;
|
|
const u = z.actionByRoot, g = (M._localRoot || this._root).uuid;
|
|
delete u[g], I.length === 0 && delete A[N], this._removeInactiveBindingsForAction(M);
|
|
}
|
|
_removeInactiveBindingsForAction(M) {
|
|
const D = M._propertyBindings;
|
|
for (let t = 0, e = D.length; t !== e; ++t) {
|
|
const N = D[t];
|
|
--N.referenceCount === 0 && this._removeInactiveBinding(N);
|
|
}
|
|
}
|
|
_lendAction(M) {
|
|
const D = this._actions, t = M._cacheIndex, e = this._nActiveActions++, N = D[e];
|
|
M._cacheIndex = e, D[e] = M, N._cacheIndex = t, D[t] = N;
|
|
}
|
|
_takeBackAction(M) {
|
|
const D = this._actions, t = M._cacheIndex, e = --this._nActiveActions, N = D[e];
|
|
M._cacheIndex = e, D[e] = M, N._cacheIndex = t, D[t] = N;
|
|
}
|
|
_addInactiveBinding(M, D, t) {
|
|
const e = this._bindingsByRootAndName, N = this._bindings;
|
|
let A = e[D];
|
|
A === void 0 && (A = {}, e[D] = A), A[t] = M, M._cacheIndex = N.length, N.push(M);
|
|
}
|
|
_removeInactiveBinding(M) {
|
|
const D = this._bindings, t = M.binding, e = t.rootNode.uuid, N = t.path, A = this._bindingsByRootAndName, z = A[e], I = D[D.length - 1], i = M._cacheIndex;
|
|
I._cacheIndex = i, D[i] = I, D.pop(), delete z[N], Object.keys(z).length === 0 && delete A[e];
|
|
}
|
|
_lendBinding(M) {
|
|
const D = this._bindings, t = M._cacheIndex, e = this._nActiveBindings++, N = D[e];
|
|
M._cacheIndex = e, D[e] = M, N._cacheIndex = t, D[t] = N;
|
|
}
|
|
_takeBackBinding(M) {
|
|
const D = this._bindings, t = M._cacheIndex, e = --this._nActiveBindings, N = D[e];
|
|
M._cacheIndex = e, D[e] = M, N._cacheIndex = t, D[t] = N;
|
|
}
|
|
_lendControlInterpolant() {
|
|
const M = this._controlInterpolants, D = this._nActiveControlInterpolants++;
|
|
let t = M[D];
|
|
return t === void 0 && (t = new Pi(new Float32Array(2), new Float32Array(2), 1, this._controlInterpolantsResultBuffer), t.__cacheIndex = D, M[D] = t), t;
|
|
}
|
|
_takeBackControlInterpolant(M) {
|
|
const D = this._controlInterpolants, t = M.__cacheIndex, e = --this._nActiveControlInterpolants, N = D[e];
|
|
M.__cacheIndex = e, D[e] = M, N.__cacheIndex = t, D[t] = N;
|
|
}
|
|
clipAction(M, D, t) {
|
|
const e = D || this._root, N = e.uuid;
|
|
let A = typeof M == "string" ? Hz.findByName(e, M) : M;
|
|
const z = A !== null ? A.uuid : M, I = this._actionsByClip[z];
|
|
let i = null;
|
|
if (t === void 0 && (A !== null ? t = A.blendMode : t = Xn), I !== void 0) {
|
|
const u = I.actionByRoot[N];
|
|
if (u !== void 0 && u.blendMode === t)
|
|
return u;
|
|
i = I.knownActions[0], A === null && (A = i._clip);
|
|
}
|
|
if (A === null)
|
|
return null;
|
|
const T = new rj(this, A, D, t);
|
|
return this._bindAction(T, i), this._addInactiveAction(T, z, N), T;
|
|
}
|
|
existingAction(M, D) {
|
|
const t = D || this._root, e = t.uuid, N = typeof M == "string" ? Hz.findByName(t, M) : M, A = N ? N.uuid : M, z = this._actionsByClip[A];
|
|
return z !== void 0 && z.actionByRoot[e] || null;
|
|
}
|
|
stopAllAction() {
|
|
const M = this._actions, D = this._nActiveActions;
|
|
for (let t = D - 1; t >= 0; --t)
|
|
M[t].stop();
|
|
return this;
|
|
}
|
|
update(M) {
|
|
M *= this.timeScale;
|
|
const D = this._actions, t = this._nActiveActions, e = this.time += M, N = Math.sign(M), A = this._accuIndex ^= 1;
|
|
for (let i = 0; i !== t; ++i)
|
|
D[i]._update(e, M, N, A);
|
|
const z = this._bindings, I = this._nActiveBindings;
|
|
for (let i = 0; i !== I; ++i)
|
|
z[i].apply(A);
|
|
return this;
|
|
}
|
|
setTime(M) {
|
|
this.time = 0;
|
|
for (let D = 0; D < this._actions.length; D++)
|
|
this._actions[D].time = 0;
|
|
return this.update(M);
|
|
}
|
|
getRoot() {
|
|
return this._root;
|
|
}
|
|
uncacheClip(M) {
|
|
const D = this._actions, t = M.uuid, e = this._actionsByClip, N = e[t];
|
|
if (N !== void 0) {
|
|
const A = N.knownActions;
|
|
for (let z = 0, I = A.length; z !== I; ++z) {
|
|
const i = A[z];
|
|
this._deactivateAction(i);
|
|
const T = i._cacheIndex, u = D[D.length - 1];
|
|
i._cacheIndex = null, i._byClipCacheIndex = null, u._cacheIndex = T, D[T] = u, D.pop(), this._removeInactiveBindingsForAction(i);
|
|
}
|
|
delete e[t];
|
|
}
|
|
}
|
|
uncacheRoot(M) {
|
|
const D = M.uuid, t = this._actionsByClip;
|
|
for (const A in t) {
|
|
const z = t[A].actionByRoot, I = z[D];
|
|
I !== void 0 && (this._deactivateAction(I), this._removeInactiveAction(I));
|
|
}
|
|
const e = this._bindingsByRootAndName, N = e[D];
|
|
if (N !== void 0)
|
|
for (const A in N) {
|
|
const z = N[A];
|
|
z.restoreOriginalState(), this._removeInactiveBinding(z);
|
|
}
|
|
}
|
|
uncacheAction(M, D) {
|
|
const t = this.existingAction(M, D);
|
|
t !== null && (this._deactivateAction(t), this._removeInactiveAction(t));
|
|
}
|
|
}
|
|
sj.prototype._controlInterpolantsResultBuffer = new Float32Array(1);
|
|
class cj extends Pe {
|
|
constructor(M, D, t = 1) {
|
|
super(M, D), this.meshPerAttribute = t;
|
|
}
|
|
copy(M) {
|
|
return super.copy(M), this.meshPerAttribute = M.meshPerAttribute, this;
|
|
}
|
|
clone(M) {
|
|
const D = super.clone(M);
|
|
return D.meshPerAttribute = this.meshPerAttribute, D;
|
|
}
|
|
toJSON(M) {
|
|
const D = super.toJSON(M);
|
|
return D.isInstancedInterleavedBuffer = !0, D.meshPerAttribute = this.meshPerAttribute, D;
|
|
}
|
|
}
|
|
cj.prototype.isInstancedInterleavedBuffer = !0;
|
|
const At = /* @__PURE__ */ new O(), xN = /* @__PURE__ */ new aM(), Un = /* @__PURE__ */ new aM();
|
|
class jj extends ke {
|
|
constructor(M) {
|
|
const D = $i(M), t = new VM(), e = [], N = [], A = new cM(0, 0, 1), z = new cM(0, 1, 0);
|
|
for (let i = 0; i < D.length; i++) {
|
|
const T = D[i];
|
|
T.parent && T.parent.isBone && (e.push(0, 0, 0), e.push(0, 0, 0), N.push(A.r, A.g, A.b), N.push(z.r, z.g, z.b));
|
|
}
|
|
t.setAttribute("position", new WM(e, 3)), t.setAttribute("color", new WM(N, 3));
|
|
const I = new gt({ vertexColors: !0, depthTest: !1, depthWrite: !1, toneMapped: !1, transparent: !0 });
|
|
super(t, I), this.type = "SkeletonHelper", this.isSkeletonHelper = !0, this.root = M, this.bones = D, this.matrix = M.matrixWorld, this.matrixAutoUpdate = !1;
|
|
}
|
|
updateMatrixWorld(M) {
|
|
const D = this.bones, t = this.geometry, e = t.getAttribute("position");
|
|
Un.copy(this.root.matrixWorld).invert();
|
|
for (let N = 0, A = 0; N < D.length; N++) {
|
|
const z = D[N];
|
|
z.parent && z.parent.isBone && (xN.multiplyMatrices(Un, z.matrixWorld), At.setFromMatrixPosition(xN), e.setXYZ(A, At.x, At.y, At.z), xN.multiplyMatrices(Un, z.parent.matrixWorld), At.setFromMatrixPosition(xN), e.setXYZ(A + 1, At.x, At.y, At.z), A += 2);
|
|
}
|
|
t.getAttribute("position").needsUpdate = !0, super.updateMatrixWorld(M);
|
|
}
|
|
}
|
|
function $i(n) {
|
|
const M = [];
|
|
n && n.isBone && M.push(n);
|
|
for (let D = 0; D < n.children.length; D++)
|
|
M.push.apply(M, $i(n.children[D]));
|
|
return M;
|
|
}
|
|
class yj extends ke {
|
|
constructor(M = 10, D = 10, t = 4473924, e = 8947848) {
|
|
t = new cM(t), e = new cM(e);
|
|
const N = D / 2, A = M / D, z = M / 2, I = [], i = [];
|
|
for (let g = 0, s = 0, j = -z; g <= D; g++, j += A) {
|
|
I.push(-z, 0, j, z, 0, j), I.push(j, 0, -z, j, 0, z);
|
|
const y = g === N ? t : e;
|
|
y.toArray(i, s), s += 3, y.toArray(i, s), s += 3, y.toArray(i, s), s += 3, y.toArray(i, s), s += 3;
|
|
}
|
|
const T = new VM();
|
|
T.setAttribute("position", new WM(I, 3)), T.setAttribute("color", new WM(i, 3));
|
|
const u = new gt({ vertexColors: !0, toneMapped: !1 });
|
|
super(T, u), this.type = "GridHelper";
|
|
}
|
|
}
|
|
const oj = new Float32Array(1);
|
|
new Int32Array(oj.buffer);
|
|
vD.create = function(n, M) {
|
|
return console.log("THREE.Curve.create() has been deprecated"), n.prototype = Object.create(vD.prototype), n.prototype.constructor = n, n.prototype.getPoint = M, n;
|
|
};
|
|
Bn.prototype.fromPoints = function(n) {
|
|
return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."), this.setFromPoints(n);
|
|
};
|
|
yj.prototype.setColors = function() {
|
|
console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.");
|
|
};
|
|
jj.prototype.update = function() {
|
|
console.error("THREE.SkeletonHelper: update() no longer needs to be called.");
|
|
};
|
|
JD.prototype.extractUrlBase = function(n) {
|
|
return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."), Wc.extractUrlBase(n);
|
|
};
|
|
JD.Handlers = {
|
|
add: function() {
|
|
console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.");
|
|
},
|
|
get: function() {
|
|
console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.");
|
|
}
|
|
};
|
|
pD.prototype.center = function(n) {
|
|
return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."), this.getCenter(n);
|
|
};
|
|
pD.prototype.empty = function() {
|
|
return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."), this.isEmpty();
|
|
};
|
|
pD.prototype.isIntersectionBox = function(n) {
|
|
return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."), this.intersectsBox(n);
|
|
};
|
|
pD.prototype.isIntersectionSphere = function(n) {
|
|
return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."), this.intersectsSphere(n);
|
|
};
|
|
pD.prototype.size = function(n) {
|
|
return console.warn("THREE.Box3: .size() has been renamed to .getSize()."), this.getSize(n);
|
|
};
|
|
Ie.prototype.empty = function() {
|
|
return console.warn("THREE.Sphere: .empty() has been renamed to .isEmpty()."), this.isEmpty();
|
|
};
|
|
ZN.prototype.setFromMatrix = function(n) {
|
|
return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."), this.setFromProjectionMatrix(n);
|
|
};
|
|
gD.prototype.flattenToArrayOffset = function(n, M) {
|
|
return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."), this.toArray(n, M);
|
|
};
|
|
gD.prototype.multiplyVector3 = function(n) {
|
|
return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."), n.applyMatrix3(this);
|
|
};
|
|
gD.prototype.multiplyVector3Array = function() {
|
|
console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.");
|
|
};
|
|
gD.prototype.applyToBufferAttribute = function(n) {
|
|
return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."), n.applyMatrix3(this);
|
|
};
|
|
gD.prototype.applyToVector3Array = function() {
|
|
console.error("THREE.Matrix3: .applyToVector3Array() has been removed.");
|
|
};
|
|
gD.prototype.getInverse = function(n) {
|
|
return console.warn("THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."), this.copy(n).invert();
|
|
};
|
|
aM.prototype.extractPosition = function(n) {
|
|
return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."), this.copyPosition(n);
|
|
};
|
|
aM.prototype.flattenToArrayOffset = function(n, M) {
|
|
return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."), this.toArray(n, M);
|
|
};
|
|
aM.prototype.getPosition = function() {
|
|
return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."), new O().setFromMatrixColumn(this, 3);
|
|
};
|
|
aM.prototype.setRotationFromQuaternion = function(n) {
|
|
return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."), this.makeRotationFromQuaternion(n);
|
|
};
|
|
aM.prototype.multiplyToArray = function() {
|
|
console.warn("THREE.Matrix4: .multiplyToArray() has been removed.");
|
|
};
|
|
aM.prototype.multiplyVector3 = function(n) {
|
|
return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."), n.applyMatrix4(this);
|
|
};
|
|
aM.prototype.multiplyVector4 = function(n) {
|
|
return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."), n.applyMatrix4(this);
|
|
};
|
|
aM.prototype.multiplyVector3Array = function() {
|
|
console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.");
|
|
};
|
|
aM.prototype.rotateAxis = function(n) {
|
|
console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."), n.transformDirection(this);
|
|
};
|
|
aM.prototype.crossVector = function(n) {
|
|
return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."), n.applyMatrix4(this);
|
|
};
|
|
aM.prototype.translate = function() {
|
|
console.error("THREE.Matrix4: .translate() has been removed.");
|
|
};
|
|
aM.prototype.rotateX = function() {
|
|
console.error("THREE.Matrix4: .rotateX() has been removed.");
|
|
};
|
|
aM.prototype.rotateY = function() {
|
|
console.error("THREE.Matrix4: .rotateY() has been removed.");
|
|
};
|
|
aM.prototype.rotateZ = function() {
|
|
console.error("THREE.Matrix4: .rotateZ() has been removed.");
|
|
};
|
|
aM.prototype.rotateByAxis = function() {
|
|
console.error("THREE.Matrix4: .rotateByAxis() has been removed.");
|
|
};
|
|
aM.prototype.applyToBufferAttribute = function(n) {
|
|
return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."), n.applyMatrix4(this);
|
|
};
|
|
aM.prototype.applyToVector3Array = function() {
|
|
console.error("THREE.Matrix4: .applyToVector3Array() has been removed.");
|
|
};
|
|
aM.prototype.makeFrustum = function(n, M, D, t, e, N) {
|
|
return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."), this.makePerspective(n, M, t, D, e, N);
|
|
};
|
|
aM.prototype.getInverse = function(n) {
|
|
return console.warn("THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."), this.copy(n).invert();
|
|
};
|
|
XD.prototype.isIntersectionLine = function(n) {
|
|
return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."), this.intersectsLine(n);
|
|
};
|
|
aD.prototype.multiplyVector3 = function(n) {
|
|
return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."), n.applyQuaternion(this);
|
|
};
|
|
aD.prototype.inverse = function() {
|
|
return console.warn("THREE.Quaternion: .inverse() has been renamed to invert()."), this.invert();
|
|
};
|
|
Te.prototype.isIntersectionBox = function(n) {
|
|
return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."), this.intersectsBox(n);
|
|
};
|
|
Te.prototype.isIntersectionPlane = function(n) {
|
|
return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."), this.intersectsPlane(n);
|
|
};
|
|
Te.prototype.isIntersectionSphere = function(n) {
|
|
return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."), this.intersectsSphere(n);
|
|
};
|
|
DD.prototype.area = function() {
|
|
return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."), this.getArea();
|
|
};
|
|
DD.prototype.barycoordFromPoint = function(n, M) {
|
|
return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."), this.getBarycoord(n, M);
|
|
};
|
|
DD.prototype.midpoint = function(n) {
|
|
return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."), this.getMidpoint(n);
|
|
};
|
|
DD.prototypenormal = function(n) {
|
|
return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."), this.getNormal(n);
|
|
};
|
|
DD.prototype.plane = function(n) {
|
|
return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."), this.getPlane(n);
|
|
};
|
|
DD.barycoordFromPoint = function(n, M, D, t, e) {
|
|
return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."), DD.getBarycoord(n, M, D, t, e);
|
|
};
|
|
DD.normal = function(n, M, D, t) {
|
|
return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."), DD.getNormal(n, M, D, t);
|
|
};
|
|
ge.prototype.extractAllPoints = function(n) {
|
|
return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."), this.extractPoints(n);
|
|
};
|
|
ge.prototype.extrude = function(n) {
|
|
return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."), new re(this, n);
|
|
};
|
|
ge.prototype.makeGeometry = function(n) {
|
|
return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."), new FN(this, n);
|
|
};
|
|
q.prototype.fromAttribute = function(n, M, D) {
|
|
return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."), this.fromBufferAttribute(n, M, D);
|
|
};
|
|
q.prototype.distanceToManhattan = function(n) {
|
|
return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."), this.manhattanDistanceTo(n);
|
|
};
|
|
q.prototype.lengthManhattan = function() {
|
|
return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."), this.manhattanLength();
|
|
};
|
|
O.prototype.setEulerFromRotationMatrix = function() {
|
|
console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.");
|
|
};
|
|
O.prototype.setEulerFromQuaternion = function() {
|
|
console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.");
|
|
};
|
|
O.prototype.getPositionFromMatrix = function(n) {
|
|
return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."), this.setFromMatrixPosition(n);
|
|
};
|
|
O.prototype.getScaleFromMatrix = function(n) {
|
|
return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."), this.setFromMatrixScale(n);
|
|
};
|
|
O.prototype.getColumnFromMatrix = function(n, M) {
|
|
return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."), this.setFromMatrixColumn(M, n);
|
|
};
|
|
O.prototype.applyProjection = function(n) {
|
|
return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."), this.applyMatrix4(n);
|
|
};
|
|
O.prototype.fromAttribute = function(n, M, D) {
|
|
return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."), this.fromBufferAttribute(n, M, D);
|
|
};
|
|
O.prototype.distanceToManhattan = function(n) {
|
|
return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."), this.manhattanDistanceTo(n);
|
|
};
|
|
O.prototype.lengthManhattan = function() {
|
|
return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."), this.manhattanLength();
|
|
};
|
|
PM.prototype.fromAttribute = function(n, M, D) {
|
|
return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."), this.fromBufferAttribute(n, M, D);
|
|
};
|
|
PM.prototype.lengthManhattan = function() {
|
|
return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."), this.manhattanLength();
|
|
};
|
|
ZM.prototype.getChildByName = function(n) {
|
|
return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."), this.getObjectByName(n);
|
|
};
|
|
ZM.prototype.renderDepth = function() {
|
|
console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.");
|
|
};
|
|
ZM.prototype.translate = function(n, M) {
|
|
return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."), this.translateOnAxis(M, n);
|
|
};
|
|
ZM.prototype.getWorldRotation = function() {
|
|
console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.");
|
|
};
|
|
ZM.prototype.applyMatrix = function(n) {
|
|
return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."), this.applyMatrix4(n);
|
|
};
|
|
Object.defineProperties(ZM.prototype, {
|
|
eulerOrder: {
|
|
get: function() {
|
|
return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."), this.rotation.order;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."), this.rotation.order = n;
|
|
}
|
|
},
|
|
useQuaternion: {
|
|
get: function() {
|
|
console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.");
|
|
}
|
|
}
|
|
});
|
|
nD.prototype.setDrawMode = function() {
|
|
console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.");
|
|
};
|
|
Object.defineProperties(nD.prototype, {
|
|
drawMode: {
|
|
get: function() {
|
|
return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."), tT;
|
|
},
|
|
set: function() {
|
|
console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.");
|
|
}
|
|
}
|
|
});
|
|
Yi.prototype.initBones = function() {
|
|
console.error("THREE.SkinnedMesh: initBones() has been removed.");
|
|
};
|
|
jD.prototype.setLens = function(n, M) {
|
|
console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."), M !== void 0 && (this.filmGauge = M), this.setFocalLength(n);
|
|
};
|
|
Object.defineProperties(KD.prototype, {
|
|
onlyShadow: {
|
|
set: function() {
|
|
console.warn("THREE.Light: .onlyShadow has been removed.");
|
|
}
|
|
},
|
|
shadowCameraFov: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."), this.shadow.camera.fov = n;
|
|
}
|
|
},
|
|
shadowCameraLeft: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."), this.shadow.camera.left = n;
|
|
}
|
|
},
|
|
shadowCameraRight: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."), this.shadow.camera.right = n;
|
|
}
|
|
},
|
|
shadowCameraTop: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."), this.shadow.camera.top = n;
|
|
}
|
|
},
|
|
shadowCameraBottom: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."), this.shadow.camera.bottom = n;
|
|
}
|
|
},
|
|
shadowCameraNear: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."), this.shadow.camera.near = n;
|
|
}
|
|
},
|
|
shadowCameraFar: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."), this.shadow.camera.far = n;
|
|
}
|
|
},
|
|
shadowCameraVisible: {
|
|
set: function() {
|
|
console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.");
|
|
}
|
|
},
|
|
shadowBias: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowBias is now .shadow.bias."), this.shadow.bias = n;
|
|
}
|
|
},
|
|
shadowDarkness: {
|
|
set: function() {
|
|
console.warn("THREE.Light: .shadowDarkness has been removed.");
|
|
}
|
|
},
|
|
shadowMapWidth: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."), this.shadow.mapSize.width = n;
|
|
}
|
|
},
|
|
shadowMapHeight: {
|
|
set: function(n) {
|
|
console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."), this.shadow.mapSize.height = n;
|
|
}
|
|
}
|
|
});
|
|
Object.defineProperties(AD.prototype, {
|
|
length: {
|
|
get: function() {
|
|
return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."), this.array.length;
|
|
}
|
|
},
|
|
dynamic: {
|
|
get: function() {
|
|
return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."), this.usage === YN;
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."), this.setUsage(YN);
|
|
}
|
|
}
|
|
});
|
|
AD.prototype.setDynamic = function(n) {
|
|
return console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead."), this.setUsage(n === !0 ? YN : Qe), this;
|
|
};
|
|
AD.prototype.copyIndicesArray = function() {
|
|
console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.");
|
|
}, AD.prototype.setArray = function() {
|
|
console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers");
|
|
};
|
|
VM.prototype.addIndex = function(n) {
|
|
console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."), this.setIndex(n);
|
|
};
|
|
VM.prototype.addAttribute = function(n, M) {
|
|
return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."), !(M && M.isBufferAttribute) && !(M && M.isInterleavedBufferAttribute) ? (console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."), this.setAttribute(n, new AD(arguments[1], arguments[2]))) : n === "index" ? (console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."), this.setIndex(M), this) : this.setAttribute(n, M);
|
|
};
|
|
VM.prototype.addDrawCall = function(n, M, D) {
|
|
D !== void 0 && console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."), console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."), this.addGroup(n, M);
|
|
};
|
|
VM.prototype.clearDrawCalls = function() {
|
|
console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."), this.clearGroups();
|
|
};
|
|
VM.prototype.computeOffsets = function() {
|
|
console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.");
|
|
};
|
|
VM.prototype.removeAttribute = function(n) {
|
|
return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."), this.deleteAttribute(n);
|
|
};
|
|
VM.prototype.applyMatrix = function(n) {
|
|
return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."), this.applyMatrix4(n);
|
|
};
|
|
Object.defineProperties(VM.prototype, {
|
|
drawcalls: {
|
|
get: function() {
|
|
return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."), this.groups;
|
|
}
|
|
},
|
|
offsets: {
|
|
get: function() {
|
|
return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."), this.groups;
|
|
}
|
|
}
|
|
});
|
|
Pe.prototype.setDynamic = function(n) {
|
|
return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."), this.setUsage(n === !0 ? YN : Qe), this;
|
|
};
|
|
Pe.prototype.setArray = function() {
|
|
console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers");
|
|
};
|
|
re.prototype.getArrays = function() {
|
|
console.error("THREE.ExtrudeGeometry: .getArrays() has been removed.");
|
|
};
|
|
re.prototype.addShapeList = function() {
|
|
console.error("THREE.ExtrudeGeometry: .addShapeList() has been removed.");
|
|
};
|
|
re.prototype.addShape = function() {
|
|
console.error("THREE.ExtrudeGeometry: .addShape() has been removed.");
|
|
};
|
|
AA.prototype.dispose = function() {
|
|
console.error("THREE.Scene: .dispose() has been removed.");
|
|
};
|
|
Object.defineProperties(ID.prototype, {
|
|
wrapAround: {
|
|
get: function() {
|
|
console.warn("THREE.Material: .wrapAround has been removed.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.Material: .wrapAround has been removed.");
|
|
}
|
|
},
|
|
overdraw: {
|
|
get: function() {
|
|
console.warn("THREE.Material: .overdraw has been removed.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.Material: .overdraw has been removed.");
|
|
}
|
|
},
|
|
wrapRGB: {
|
|
get: function() {
|
|
return console.warn("THREE.Material: .wrapRGB has been removed."), new cM();
|
|
}
|
|
},
|
|
shading: {
|
|
get: function() {
|
|
console.error("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead.");
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead."), this.flatShading = n === ei;
|
|
}
|
|
},
|
|
stencilMask: {
|
|
get: function() {
|
|
return console.warn("THREE." + this.type + ": .stencilMask has been removed. Use .stencilFuncMask instead."), this.stencilFuncMask;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE." + this.type + ": .stencilMask has been removed. Use .stencilFuncMask instead."), this.stencilFuncMask = n;
|
|
}
|
|
},
|
|
vertexTangents: {
|
|
get: function() {
|
|
console.warn("THREE." + this.type + ": .vertexTangents has been removed.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE." + this.type + ": .vertexTangents has been removed.");
|
|
}
|
|
}
|
|
});
|
|
Object.defineProperties(lt.prototype, {
|
|
derivatives: {
|
|
get: function() {
|
|
return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."), this.extensions.derivatives;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."), this.extensions.derivatives = n;
|
|
}
|
|
}
|
|
});
|
|
KM.prototype.clearTarget = function(n, M, D, t) {
|
|
console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."), this.setRenderTarget(n), this.clear(M, D, t);
|
|
};
|
|
KM.prototype.animate = function(n) {
|
|
console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."), this.setAnimationLoop(n);
|
|
};
|
|
KM.prototype.getCurrentRenderTarget = function() {
|
|
return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."), this.getRenderTarget();
|
|
};
|
|
KM.prototype.getMaxAnisotropy = function() {
|
|
return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."), this.capabilities.getMaxAnisotropy();
|
|
};
|
|
KM.prototype.getPrecision = function() {
|
|
return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."), this.capabilities.precision;
|
|
};
|
|
KM.prototype.resetGLState = function() {
|
|
return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."), this.state.reset();
|
|
};
|
|
KM.prototype.supportsFloatTextures = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."), this.extensions.get("OES_texture_float");
|
|
};
|
|
KM.prototype.supportsHalfFloatTextures = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."), this.extensions.get("OES_texture_half_float");
|
|
};
|
|
KM.prototype.supportsStandardDerivatives = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."), this.extensions.get("OES_standard_derivatives");
|
|
};
|
|
KM.prototype.supportsCompressedTextureS3TC = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."), this.extensions.get("WEBGL_compressed_texture_s3tc");
|
|
};
|
|
KM.prototype.supportsCompressedTexturePVRTC = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."), this.extensions.get("WEBGL_compressed_texture_pvrtc");
|
|
};
|
|
KM.prototype.supportsBlendMinMax = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."), this.extensions.get("EXT_blend_minmax");
|
|
};
|
|
KM.prototype.supportsVertexTextures = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."), this.capabilities.vertexTextures;
|
|
};
|
|
KM.prototype.supportsInstancedArrays = function() {
|
|
return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."), this.extensions.get("ANGLE_instanced_arrays");
|
|
};
|
|
KM.prototype.enableScissorTest = function(n) {
|
|
console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."), this.setScissorTest(n);
|
|
};
|
|
KM.prototype.initMaterial = function() {
|
|
console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.");
|
|
};
|
|
KM.prototype.addPrePlugin = function() {
|
|
console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.");
|
|
};
|
|
KM.prototype.addPostPlugin = function() {
|
|
console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.");
|
|
};
|
|
KM.prototype.updateShadowMap = function() {
|
|
console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.");
|
|
};
|
|
KM.prototype.setFaceCulling = function() {
|
|
console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.");
|
|
};
|
|
KM.prototype.allocTextureUnit = function() {
|
|
console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.");
|
|
};
|
|
KM.prototype.setTexture = function() {
|
|
console.warn("THREE.WebGLRenderer: .setTexture() has been removed.");
|
|
};
|
|
KM.prototype.setTexture2D = function() {
|
|
console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.");
|
|
};
|
|
KM.prototype.setTextureCube = function() {
|
|
console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.");
|
|
};
|
|
KM.prototype.getActiveMipMapLevel = function() {
|
|
return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."), this.getActiveMipmapLevel();
|
|
};
|
|
Object.defineProperties(KM.prototype, {
|
|
shadowMapEnabled: {
|
|
get: function() {
|
|
return this.shadowMap.enabled;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."), this.shadowMap.enabled = n;
|
|
}
|
|
},
|
|
shadowMapType: {
|
|
get: function() {
|
|
return this.shadowMap.type;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."), this.shadowMap.type = n;
|
|
}
|
|
},
|
|
shadowMapCullFace: {
|
|
get: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.");
|
|
}
|
|
},
|
|
context: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."), this.getContext();
|
|
}
|
|
},
|
|
vr: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"), this.xr;
|
|
}
|
|
},
|
|
gammaInput: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."), !1;
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.");
|
|
}
|
|
},
|
|
gammaOutput: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."), !1;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."), this.outputEncoding = n === !0 ? HM : st;
|
|
}
|
|
},
|
|
toneMappingWhitePoint: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed."), 1;
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.");
|
|
}
|
|
},
|
|
gammaFactor: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."), 2;
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.");
|
|
}
|
|
}
|
|
});
|
|
Object.defineProperties(di.prototype, {
|
|
cullFace: {
|
|
get: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.");
|
|
}
|
|
},
|
|
renderReverseSided: {
|
|
get: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.");
|
|
}
|
|
},
|
|
renderSingleSided: {
|
|
get: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.");
|
|
},
|
|
set: function() {
|
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.");
|
|
}
|
|
}
|
|
});
|
|
Object.defineProperties(dD.prototype, {
|
|
wrapS: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."), this.texture.wrapS;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."), this.texture.wrapS = n;
|
|
}
|
|
},
|
|
wrapT: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."), this.texture.wrapT;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."), this.texture.wrapT = n;
|
|
}
|
|
},
|
|
magFilter: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."), this.texture.magFilter;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."), this.texture.magFilter = n;
|
|
}
|
|
},
|
|
minFilter: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."), this.texture.minFilter;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."), this.texture.minFilter = n;
|
|
}
|
|
},
|
|
anisotropy: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."), this.texture.anisotropy;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."), this.texture.anisotropy = n;
|
|
}
|
|
},
|
|
offset: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."), this.texture.offset;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."), this.texture.offset = n;
|
|
}
|
|
},
|
|
repeat: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."), this.texture.repeat;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."), this.texture.repeat = n;
|
|
}
|
|
},
|
|
format: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."), this.texture.format;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."), this.texture.format = n;
|
|
}
|
|
},
|
|
type: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."), this.texture.type;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."), this.texture.type = n;
|
|
}
|
|
},
|
|
generateMipmaps: {
|
|
get: function() {
|
|
return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."), this.texture.generateMipmaps;
|
|
},
|
|
set: function(n) {
|
|
console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."), this.texture.generateMipmaps = n;
|
|
}
|
|
}
|
|
});
|
|
tj.prototype.load = function(n) {
|
|
console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");
|
|
const M = this;
|
|
return new $c().load(n, function(t) {
|
|
M.setBuffer(t);
|
|
}), this;
|
|
};
|
|
DA.prototype.updateCubeMap = function(n, M) {
|
|
return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."), this.update(n, M);
|
|
};
|
|
DA.prototype.clear = function(n, M, D, t) {
|
|
return console.warn("THREE.CubeCamera: .clear() is now .renderTarget.clear()."), this.renderTarget.clear(n, M, D, t);
|
|
};
|
|
vt.crossOrigin = void 0;
|
|
vt.loadTexture = function(n, M, D, t) {
|
|
console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");
|
|
const e = new Hi();
|
|
e.setCrossOrigin(this.crossOrigin);
|
|
const N = e.load(n, D, void 0, t);
|
|
return M && (N.mapping = M), N;
|
|
};
|
|
vt.loadTextureCube = function(n, M, D, t) {
|
|
console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");
|
|
const e = new Pc();
|
|
e.setCrossOrigin(this.crossOrigin);
|
|
const N = e.load(n, D, void 0, t);
|
|
return M && (N.mapping = M), N;
|
|
};
|
|
vt.loadCompressedTexture = function() {
|
|
console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.");
|
|
};
|
|
vt.loadCompressedTextureCube = function() {
|
|
console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.");
|
|
};
|
|
typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: {
|
|
revision: Wn
|
|
} }));
|
|
typeof window < "u" && (window.__THREE__ ? console.warn("WARNING: Multiple instances of Three.js being imported.") : window.__THREE__ = Wn);
|
|
const aj = /^[og]\s*(.+)?/, Cj = /^mtllib /, Lj = /^usemtl /, wj = /^usemap /, Jz = /\s+/, $z = new O(), Qn = new O(), Mi = new O(), Di = new O(), lD = new O(), EN = new cM();
|
|
function Oj() {
|
|
const n = {
|
|
objects: [],
|
|
object: {},
|
|
vertices: [],
|
|
normals: [],
|
|
colors: [],
|
|
uvs: [],
|
|
materials: {},
|
|
materialLibraries: [],
|
|
startObject: function(M, D) {
|
|
if (this.object && this.object.fromDeclaration === !1) {
|
|
this.object.name = M, this.object.fromDeclaration = D !== !1;
|
|
return;
|
|
}
|
|
const t = this.object && typeof this.object.currentMaterial == "function" ? this.object.currentMaterial() : void 0;
|
|
if (this.object && typeof this.object._finalize == "function" && this.object._finalize(!0), this.object = {
|
|
name: M || "",
|
|
fromDeclaration: D !== !1,
|
|
geometry: {
|
|
vertices: [],
|
|
normals: [],
|
|
colors: [],
|
|
uvs: [],
|
|
hasUVIndices: !1
|
|
},
|
|
materials: [],
|
|
smooth: !0,
|
|
startMaterial: function(e, N) {
|
|
const A = this._finalize(!1);
|
|
A && (A.inherited || A.groupCount <= 0) && this.materials.splice(A.index, 1);
|
|
const z = {
|
|
index: this.materials.length,
|
|
name: e || "",
|
|
mtllib: Array.isArray(N) && N.length > 0 ? N[N.length - 1] : "",
|
|
smooth: A !== void 0 ? A.smooth : this.smooth,
|
|
groupStart: A !== void 0 ? A.groupEnd : 0,
|
|
groupEnd: -1,
|
|
groupCount: -1,
|
|
inherited: !1,
|
|
clone: function(I) {
|
|
const i = {
|
|
index: typeof I == "number" ? I : this.index,
|
|
name: this.name,
|
|
mtllib: this.mtllib,
|
|
smooth: this.smooth,
|
|
groupStart: 0,
|
|
groupEnd: -1,
|
|
groupCount: -1,
|
|
inherited: !1
|
|
};
|
|
return i.clone = this.clone.bind(i), i;
|
|
}
|
|
};
|
|
return this.materials.push(z), z;
|
|
},
|
|
currentMaterial: function() {
|
|
if (this.materials.length > 0)
|
|
return this.materials[this.materials.length - 1];
|
|
},
|
|
_finalize: function(e) {
|
|
const N = this.currentMaterial();
|
|
if (N && N.groupEnd === -1 && (N.groupEnd = this.geometry.vertices.length / 3, N.groupCount = N.groupEnd - N.groupStart, N.inherited = !1), e && this.materials.length > 1)
|
|
for (let A = this.materials.length - 1; A >= 0; A--)
|
|
this.materials[A].groupCount <= 0 && this.materials.splice(A, 1);
|
|
return e && this.materials.length === 0 && this.materials.push({
|
|
name: "",
|
|
smooth: this.smooth
|
|
}), N;
|
|
}
|
|
}, t && t.name && typeof t.clone == "function") {
|
|
const e = t.clone(0);
|
|
e.inherited = !0, this.object.materials.push(e);
|
|
}
|
|
this.objects.push(this.object);
|
|
},
|
|
finalize: function() {
|
|
this.object && typeof this.object._finalize == "function" && this.object._finalize(!0);
|
|
},
|
|
parseVertexIndex: function(M, D) {
|
|
const t = parseInt(M, 10);
|
|
return (t >= 0 ? t - 1 : t + D / 3) * 3;
|
|
},
|
|
parseNormalIndex: function(M, D) {
|
|
const t = parseInt(M, 10);
|
|
return (t >= 0 ? t - 1 : t + D / 3) * 3;
|
|
},
|
|
parseUVIndex: function(M, D) {
|
|
const t = parseInt(M, 10);
|
|
return (t >= 0 ? t - 1 : t + D / 2) * 2;
|
|
},
|
|
addVertex: function(M, D, t) {
|
|
const e = this.vertices, N = this.object.geometry.vertices;
|
|
N.push(e[M + 0], e[M + 1], e[M + 2]), N.push(e[D + 0], e[D + 1], e[D + 2]), N.push(e[t + 0], e[t + 1], e[t + 2]);
|
|
},
|
|
addVertexPoint: function(M) {
|
|
const D = this.vertices;
|
|
this.object.geometry.vertices.push(D[M + 0], D[M + 1], D[M + 2]);
|
|
},
|
|
addVertexLine: function(M) {
|
|
const D = this.vertices;
|
|
this.object.geometry.vertices.push(D[M + 0], D[M + 1], D[M + 2]);
|
|
},
|
|
addNormal: function(M, D, t) {
|
|
const e = this.normals, N = this.object.geometry.normals;
|
|
N.push(e[M + 0], e[M + 1], e[M + 2]), N.push(e[D + 0], e[D + 1], e[D + 2]), N.push(e[t + 0], e[t + 1], e[t + 2]);
|
|
},
|
|
addFaceNormal: function(M, D, t) {
|
|
const e = this.vertices, N = this.object.geometry.normals;
|
|
$z.fromArray(e, M), Qn.fromArray(e, D), Mi.fromArray(e, t), lD.subVectors(Mi, Qn), Di.subVectors($z, Qn), lD.cross(Di), lD.normalize(), N.push(lD.x, lD.y, lD.z), N.push(lD.x, lD.y, lD.z), N.push(lD.x, lD.y, lD.z);
|
|
},
|
|
addColor: function(M, D, t) {
|
|
const e = this.colors, N = this.object.geometry.colors;
|
|
e[M] !== void 0 && N.push(e[M + 0], e[M + 1], e[M + 2]), e[D] !== void 0 && N.push(e[D + 0], e[D + 1], e[D + 2]), e[t] !== void 0 && N.push(e[t + 0], e[t + 1], e[t + 2]);
|
|
},
|
|
addUV: function(M, D, t) {
|
|
const e = this.uvs, N = this.object.geometry.uvs;
|
|
N.push(e[M + 0], e[M + 1]), N.push(e[D + 0], e[D + 1]), N.push(e[t + 0], e[t + 1]);
|
|
},
|
|
addDefaultUV: function() {
|
|
const M = this.object.geometry.uvs;
|
|
M.push(0, 0), M.push(0, 0), M.push(0, 0);
|
|
},
|
|
addUVLine: function(M) {
|
|
const D = this.uvs;
|
|
this.object.geometry.uvs.push(D[M + 0], D[M + 1]);
|
|
},
|
|
addFace: function(M, D, t, e, N, A, z, I, i) {
|
|
const T = this.vertices.length;
|
|
let u = this.parseVertexIndex(M, T), g = this.parseVertexIndex(D, T), s = this.parseVertexIndex(t, T);
|
|
if (this.addVertex(u, g, s), this.addColor(u, g, s), z !== void 0 && z !== "") {
|
|
const j = this.normals.length;
|
|
u = this.parseNormalIndex(z, j), g = this.parseNormalIndex(I, j), s = this.parseNormalIndex(i, j), this.addNormal(u, g, s);
|
|
} else
|
|
this.addFaceNormal(u, g, s);
|
|
if (e !== void 0 && e !== "") {
|
|
const j = this.uvs.length;
|
|
u = this.parseUVIndex(e, j), g = this.parseUVIndex(N, j), s = this.parseUVIndex(A, j), this.addUV(u, g, s), this.object.geometry.hasUVIndices = !0;
|
|
} else
|
|
this.addDefaultUV();
|
|
},
|
|
addPointGeometry: function(M) {
|
|
this.object.geometry.type = "Points";
|
|
const D = this.vertices.length;
|
|
for (let t = 0, e = M.length; t < e; t++) {
|
|
const N = this.parseVertexIndex(M[t], D);
|
|
this.addVertexPoint(N), this.addColor(N);
|
|
}
|
|
},
|
|
addLineGeometry: function(M, D) {
|
|
this.object.geometry.type = "Line";
|
|
const t = this.vertices.length, e = this.uvs.length;
|
|
for (let N = 0, A = M.length; N < A; N++)
|
|
this.addVertexLine(this.parseVertexIndex(M[N], t));
|
|
for (let N = 0, A = D.length; N < A; N++)
|
|
this.addUVLine(this.parseUVIndex(D[N], e));
|
|
}
|
|
};
|
|
return n.startObject("", !1), n;
|
|
}
|
|
class xj extends JD {
|
|
constructor(M) {
|
|
super(M), this.materials = null;
|
|
}
|
|
load(M, D, t, e) {
|
|
const N = this, A = new Bi(this.manager);
|
|
A.setPath(this.path), A.setRequestHeader(this.requestHeader), A.setWithCredentials(this.withCredentials), A.load(M, function(z) {
|
|
try {
|
|
D(N.parse(z));
|
|
} catch (I) {
|
|
e ? e(I) : console.error(I), N.manager.itemError(M);
|
|
}
|
|
}, t, e);
|
|
}
|
|
setMaterials(M) {
|
|
return this.materials = M, this;
|
|
}
|
|
parse(M) {
|
|
const D = new Oj();
|
|
M.indexOf(`\r
|
|
`) !== -1 && (M = M.replace(/\r\n/g, `
|
|
`)), M.indexOf(`\\
|
|
`) !== -1 && (M = M.replace(/\\\n/g, ""));
|
|
const t = M.split(`
|
|
`);
|
|
let e = [];
|
|
for (let z = 0, I = t.length; z < I; z++) {
|
|
const i = t[z].trimStart();
|
|
if (i.length === 0)
|
|
continue;
|
|
const T = i.charAt(0);
|
|
if (T !== "#")
|
|
if (T === "v") {
|
|
const u = i.split(Jz);
|
|
switch (u[0]) {
|
|
case "v":
|
|
D.vertices.push(parseFloat(u[1]), parseFloat(u[2]), parseFloat(u[3])), u.length >= 7 ? (EN.setRGB(parseFloat(u[4]), parseFloat(u[5]), parseFloat(u[6])).convertSRGBToLinear(), D.colors.push(EN.r, EN.g, EN.b)) : D.colors.push(void 0, void 0, void 0);
|
|
break;
|
|
case "vn":
|
|
D.normals.push(parseFloat(u[1]), parseFloat(u[2]), parseFloat(u[3]));
|
|
break;
|
|
case "vt":
|
|
D.uvs.push(parseFloat(u[1]), parseFloat(u[2]));
|
|
break;
|
|
}
|
|
} else if (T === "f") {
|
|
const g = i.slice(1).trim().split(Jz), s = [];
|
|
for (let y = 0, a = g.length; y < a; y++) {
|
|
const c = g[y];
|
|
if (c.length > 0) {
|
|
const r = c.split("/");
|
|
s.push(r);
|
|
}
|
|
}
|
|
const j = s[0];
|
|
for (let y = 1, a = s.length - 1; y < a; y++) {
|
|
const c = s[y], r = s[y + 1];
|
|
D.addFace(j[0], c[0], r[0], j[1], c[1], r[1], j[2], c[2], r[2]);
|
|
}
|
|
} else if (T === "l") {
|
|
const u = i.substring(1).trim().split(" ");
|
|
let g = [];
|
|
const s = [];
|
|
if (i.indexOf("/") === -1)
|
|
g = u;
|
|
else
|
|
for (let j = 0, y = u.length; j < y; j++) {
|
|
const a = u[j].split("/");
|
|
a[0] !== "" && g.push(a[0]), a[1] !== "" && s.push(a[1]);
|
|
}
|
|
D.addLineGeometry(g, s);
|
|
} else if (T === "p") {
|
|
const g = i.slice(1).trim().split(" ");
|
|
D.addPointGeometry(g);
|
|
} else if ((e = aj.exec(i)) !== null) {
|
|
const u = (" " + e[0].slice(1).trim()).slice(1);
|
|
D.startObject(u);
|
|
} else if (Lj.test(i))
|
|
D.object.startMaterial(i.substring(7).trim(), D.materialLibraries);
|
|
else if (Cj.test(i))
|
|
D.materialLibraries.push(i.substring(7).trim());
|
|
else if (wj.test(i))
|
|
console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');
|
|
else if (T === "s") {
|
|
if (e = i.split(" "), e.length > 1) {
|
|
const g = e[1].trim().toLowerCase();
|
|
D.object.smooth = g !== "0" && g !== "off";
|
|
} else
|
|
D.object.smooth = !0;
|
|
const u = D.object.currentMaterial();
|
|
u && (u.smooth = D.object.smooth);
|
|
} else {
|
|
if (i === "\0")
|
|
continue;
|
|
console.warn('THREE.OBJLoader: Unexpected line: "' + i + '"');
|
|
}
|
|
}
|
|
D.finalize();
|
|
const N = new xt();
|
|
if (N.materialLibraries = [].concat(D.materialLibraries), !(D.objects.length === 1 && D.objects[0].geometry.vertices.length === 0) === !0)
|
|
for (let z = 0, I = D.objects.length; z < I; z++) {
|
|
const i = D.objects[z], T = i.geometry, u = i.materials, g = T.type === "Line", s = T.type === "Points";
|
|
let j = !1;
|
|
if (T.vertices.length === 0)
|
|
continue;
|
|
const y = new VM();
|
|
y.setAttribute("position", new WM(T.vertices, 3)), T.normals.length > 0 && y.setAttribute("normal", new WM(T.normals, 3)), T.colors.length > 0 && (j = !0, y.setAttribute("color", new WM(T.colors, 3))), T.hasUVIndices === !0 && y.setAttribute("uv", new WM(T.uvs, 2));
|
|
const a = [];
|
|
for (let r = 0, l = u.length; r < l; r++) {
|
|
const C = u[r], E = C.name + "_" + C.smooth + "_" + j;
|
|
let d = D.materials[E];
|
|
if (this.materials !== null) {
|
|
if (d = this.materials.create(C.name), g && d && !(d instanceof gt)) {
|
|
const p = new gt();
|
|
ID.prototype.copy.call(p, d), p.color.copy(d.color), d = p;
|
|
} else if (s && d && !(d instanceof Jt)) {
|
|
const p = new Jt({ size: 10, sizeAttenuation: !1 });
|
|
ID.prototype.copy.call(p, d), p.color.copy(d.color), p.map = d.map, d = p;
|
|
}
|
|
}
|
|
d === void 0 && (g ? d = new gt() : s ? d = new Jt({ size: 1, sizeAttenuation: !1 }) : d = new Ri(), d.name = C.name, d.flatShading = !C.smooth, d.vertexColors = j, D.materials[E] = d), a.push(d);
|
|
}
|
|
let c;
|
|
if (a.length > 1) {
|
|
for (let r = 0, l = u.length; r < l; r++) {
|
|
const C = u[r];
|
|
y.addGroup(C.groupStart, C.groupCount, r);
|
|
}
|
|
g ? c = new ke(y, a) : s ? c = new dN(y, a) : c = new nD(y, a);
|
|
} else
|
|
g ? c = new ke(y, a[0]) : s ? c = new dN(y, a[0]) : c = new nD(y, a[0]);
|
|
c.name = i.name, N.add(c);
|
|
}
|
|
else if (D.vertices.length > 0) {
|
|
const z = new Jt({ size: 1, sizeAttenuation: !1 }), I = new VM();
|
|
I.setAttribute("position", new WM(D.vertices, 3)), D.colors.length > 0 && D.colors[0] !== void 0 && (I.setAttribute("color", new WM(D.colors, 3)), z.vertexColors = !0);
|
|
const i = new dN(I, z);
|
|
N.add(i);
|
|
}
|
|
return N;
|
|
}
|
|
}
|
|
class Ej extends xt {
|
|
constructor(M) {
|
|
super(), this.animation = this.floatAnim, this.goingHome = !1, this.homeTimeout = null, this.home = {
|
|
position: new O(M.position.x, M.position.y, M.position.z),
|
|
rotation: new ct(M.rotation.x, M.rotation.y, M.rotation.z)
|
|
}, this.reset();
|
|
}
|
|
reset() {
|
|
this.position.copy(this.home.position), this.rotation.copy(this.home.rotation), this.speed = new O(), this.rotSpeed = new ct(), this.acceleration = new O();
|
|
}
|
|
homeAnim(M) {
|
|
if (!this.goingHome) {
|
|
this.goingHome = !0;
|
|
const D = 1;
|
|
this.speed.subVectors(this.home.position, this.position).multiplyScalar(1 / D);
|
|
const t = this.rotSpeed.toVector3();
|
|
t.subVectors(this.home.rotation, this.rotation).multiplyScalar(1 / D), this.rotSpeed.setFromVector3(t), this.homeTimeout = setTimeout(() => {
|
|
this.goingHome = !1, this.reset(), this.startFloat();
|
|
}, D * 1e3);
|
|
}
|
|
this.position.addScaledVector(this.speed, M), this.rotation.setFromVector3(this.rotation.toVector3().addScaledVector(this.rotSpeed, M));
|
|
}
|
|
startFloat() {
|
|
this.acceleration.y = -0.01, this.animation = this.floatAnim;
|
|
}
|
|
floatAnim() {
|
|
this.position.y < -2 && (this.acceleration.y = 0.01), this.position.y > 2 && (this.acceleration.y = -0.01), this.speed.y = Math.min(this.speed.y + this.acceleration.y, 0.1), this.position.y += this.speed.y;
|
|
}
|
|
rotateAnim() {
|
|
this.rotation.y += 0.02;
|
|
}
|
|
lookAtAnim(M, { x: D, y: t, z: e }) {
|
|
const N = new O(D, t, e).sub(this.position);
|
|
this.lookAt(N);
|
|
}
|
|
}
|
|
function lj(n, M, D) {
|
|
const A = D / 2.2, z = new ge();
|
|
return z.moveTo(0, 0 + D), z.lineTo(0, 0 + M - D), z.quadraticCurveTo(0, 0 + M, 0 + D, 0 + M), z.lineTo(n / 2 - 25 / 2 - A, 0 + M), z.quadraticCurveTo(n / 2 - 25 / 2, 0 + M, n / 2 - 25 / 2, 0 + M - A / 10), z.quadraticCurveTo(n / 2 - 25 / 2, 0 + M - A, n / 2 - 25 / 2 + A, 0 + M - A), z.lineTo(n / 2 + 25 / 2 - A, 0 + M - A), z.quadraticCurveTo(n / 2 + 25 / 2, 0 + M - A, n / 2 + 25 / 2, 0 + M - A / 10), z.quadraticCurveTo(n / 2 + 25 / 2, 0 + M, n / 2 + 25 / 2 + A, 0 + M), z.lineTo(0 + n - D, 0 + M), z.quadraticCurveTo(0 + n, 0 + M, 0 + n, 0 + M - D), z.lineTo(0 + n, 0 + D), z.quadraticCurveTo(0 + n, 0, 0 + n - D, 0), z.lineTo(0 + D, 0), z.quadraticCurveTo(0, 0, 0, 0 + D), new FN(z);
|
|
}
|
|
const dj = (n, M) => {
|
|
const D = n.__vccOpts || n;
|
|
for (const [t, e] of M)
|
|
D[t] = e;
|
|
return D;
|
|
}, vj = new URL("data:model/obj;base64,IyBCbGVuZGVyIHYzLjAuMSBPQkogRmlsZTogJ2lwaG9uZS5ibGVuZCcKIyB3d3cuYmxlbmRlci5vcmcKbXRsbGliIGlwaG9uZU9iai5tdGwKbyBwaG9uZV9DdWJlLjAwNQp2IDMuNDY4MTQ3IDIuNjUxMDk5IC00Ljk1OTYwNwp2IDMuNDY2MjgyIDIuNjUxMTkwIC00LjQwMjg4NAp2IDMuNDYxMjA4IDIuNDk4MTY5IC00Ljk0MDE5Ngp2IDMuNDU5MTQ3IDIuNDkzMzA0IC00LjQyNzk1OAp2IDMuNDYyMTM4IDIuNTAzNjgxIC00Ljk0NTI1Nwp2IDMuNDU5OTU0IDIuNDk4MjMwIC00LjQyMjI5NAp2IDMuNDY4NjU4IDIuNjQzNjM0IC00Ljk2MDAzMgp2IDMuNDY2NzkwIDIuNjQzNzI1IC00LjQwMjQ1OQp2IDMuNDY4NTM2IDIuNTQ0ODAxIC00Ljk2MDAzMgp2IDMuNDY4MzM0IDIuNTQwNjY2IC00Ljk1OTc5NQp2IDMuNDY2NjIwIDIuNTM4NTM2IC00LjQwMjgyMgp2IDMuNDY3Nzg5IDIuNTM3Mzk3IC00Ljk1OTYwNwp2IDMuNDY2NTczIDIuNTMwMTEwIC00Ljk1ODMzNAp2IDMuNDY1Mzg0IDIuNTIzMDA3IC00Ljk1NjIzMgp2IDMuNDY0MjQwIDIuNTE2MTc4IC00Ljk1MzMyNgp2IDMuNDYzMTUzIDIuNTA5NzA5IC00Ljk0OTY1Mgp2IDMuNDYyOTIyIDIuNTE2MjQyIC00LjQwOTE2NQp2IDMuNDY1MjMwIDIuNTMwMTc1IC00LjQwNDE1Ngp2IDMuNDYxODUzIDIuNTA5NzcyIC00LjQxMjgzOQp2IDMuNDYwODYwIDIuNTAzNzQzIC00LjQxNzIzMwp2IDMuNDY2NDQxIDIuNTM3NDYyIC00LjQwMjg4NAp2IDMuNDY0MDUyIDIuNTIzMDcxIC00LjQwNjI1OQp2IDMuNDcxMzg5IDIuNjAzNjQ2IC00Ljk2MDAzMgp2IDMuNDY5NjcyIDIuNjAxNTEzIC00LjQwMjQ1OAp2IDMuNDY2OTI3IDIuNTQ0ODc5IC00LjQwMjQ1OAp2IDMuNDU4ODg2IDIuNzA4ODgwIC00LjkwNzM3OQp2IDMuNDU4NjE4IDIuNzEwMTUyIC00Ljg5OTg5MQp2IDMuNDU4NTA5IDIuNzEwNTc2IC00Ljg5MjMwOQp2IDMuNDU2ODkxIDIuNzEwNjU0IC00LjQ3MDE4Mgp2IDMuNDU2OTQxIDIuNzEwMjM0IC00LjQ2MjYwMAp2IDMuNDU5ODc3IDIuNzAzOTE1IC00LjkyMTY5NAp2IDMuNDU5MzA1IDIuNzA2ODA4IC00LjkxNDY3Nwp2IDMuNDU3MTUwIDIuNzA4OTc1IC00LjQ1NTExMgp2IDMuNDU3NTE1IDIuNzA2ODk1IC00LjQ0NzgxNAp2IDMuNDU3ODc2IDIuNDc4ODY4IC00Ljg5MjMwOQp2IDMuNDYwNTg2IDIuNzAwMjkwIC00LjkyODM0MAp2IDMuNDU4MDMxIDIuNzA0MDE4IC00LjQ0MDc5OAp2IDMuNDU4MTg4IDIuNDgwNTE5IC00LjkwNzM3OQp2IDMuNDU4NTQ2IDIuNDgyNTY1IC00LjkxNDY3Nwp2IDMuNDU3OTYzIDIuNDc5MjgyIC00Ljg5OTg5MQp2IDMuNDU5MDM1IDIuNDg1MzkzIC00LjkyMTY5Mwp2IDMuNDU2ODU0IDIuNDc4OTE4IC00LjQ3MDE4Mgp2IDMuNDU2OTA1IDIuNDc5MzMzIC00LjQ2MjU5OQp2IDMuNDU3MDkzIDIuNDgwNTcyIC00LjQ1NTExMgp2IDMuNDU3NDE2IDIuNDgyNjIwIC00LjQ0NzgxNAp2IDMuNDY1OTAyIDIuNjcyNTk5IC00Ljk1MzMyNgp2IDMuNDYxNDMwIDIuNjk1OTM3IC00LjkzNDUzNAp2IDMuNDYzNDc0IDIuNjg1MzE2IC00Ljk0NTI1Nwp2IDMuNDYyMzk3IDIuNjkwOTI1IC00Ljk0MDE5Nwp2IDMuNDY0NjQ3IDIuNjc5MTgyIC00Ljk0OTY1Mgp2IDMuNDY3MDk2IDIuNjY2MzIyIC00Ljk1NTk1Mgp2IDMuNDYxNDQ5IDIuNjg1NDE0IC00LjQxNzIzMwp2IDMuNDYwNDExIDIuNjkxMDIxIC00LjQyMjI5NQp2IDMuNDYzODE2IDIuNjcyNzAwIC00LjQwOTE2NQp2IDMuNDYyNTg5IDIuNjc5MjgyIC00LjQxMjgzOQp2IDMuNDU5NDg4IDIuNjk2MDMxIC00LjQyNzk1Ngp2IDMuNDU4NjkxIDIuNzAwMzgyIC00LjQzNDE1MQp2IDMuNDY1NDAyIDIuNjY0MjE4IC00LjQwNTgxMQp2IDMuNDY1MTE1IDIuNjY1NzUzIC00LjQwNjI1OQp2IDMuNDY3MTQzIDIuNjY1NjU1IC00Ljk1NjIzMwp2IDMuNDY3NjQwIDIuNjU4NDcwIC00Ljk1ODMzNQp2IDMuNDY1NzgzIDIuNjU4NTYwIC00LjQwNDE1Ngp2IDMuNDU5NjQ2IDIuNDg4OTY4IC00LjkyODM0MAp2IDMuNDYwMzc0IDIuNDkzMjQ0IC00LjkzNDUzNAp2IDMuNDU3ODcwIDIuNDg1NDQ5IC00LjQ0MDc5OAp2IDMuNDU4NDUwIDIuNDg5MDI2IC00LjQzNDE1MQp2IDMuMzI5Mjk3IDIuNjk4MTA3IC0yLjk2MDc0NAp2IDMuMzI5Mjk3IDIuNjk1OTMwIC0yLjkzOTA5Mwp2IDMuMzI5Mjk3IDIuNjg5NTU4IC0yLjkxODUxOAp2IDMuMzI5Mjk3IDIuNjc5MjA1IC0yLjg5OTU0OQp2IDMuMzI5Mjk3IDIuNjY1MjY2IC0yLjg4MjkxMgp2IDMuMzI5Mjk3IDIuNjQ4MjcxIC0yLjg2OTI1Mgp2IDMuMzI5Mjk3IDIuNjI4ODcxIC0yLjg1OTA5Ngp2IDMuMzI5Mjk3IDIuNjA3ODEzIC0yLjg1MjgzOQp2IDMuMzI5Mjk3IDIuNTg1OTA5IC0yLjg1MDcyNgp2IDMuMzI5Mjk3IDIuNTY0MDA1IC0yLjg1MjgzOQp2IDMuMzI5Mjk3IDIuNTQyOTQ3IC0yLjg1OTA5Ngp2IDMuMzI5Mjk3IDIuNTIzNTQ3IC0yLjg2OTI1MQp2IDMuMzI5Mjk3IDIuNTA2NTUyIC0yLjg4MjkxMgp2IDMuMzI5Mjk3IDIuNDkyNjEzIC0yLjg5OTU0OAp2IDMuMzI5Mjk3IDIuNDgyMjYwIC0yLjkxODUxOAp2IDMuMzI5Mjk3IDIuNDc1ODg4IC0yLjkzOTA5Mwp2IDMuMzI5Mjk3IDIuNDczNzExIC0yLjk2MDc0NAp2IDMuMzI5Mjk3IDIuNDc1OTY2IC0zLjg1NDE3MQp2IDMuMzI5Mjk3IDIuNDgyMjYwIC0zLjg3NDQ5NQp2IDMuMzI5Mjk3IDIuNDkyNjEzIC0zLjg5MzQ2NAp2IDMuMzI5Mjk3IDIuNTA2NTUyIC0zLjkxMDEwMAp2IDMuMzI5Mjk3IDIuNTIzNTQ3IC0zLjkyMzc2MQp2IDMuMzI5Mjk3IDIuNTQyOTQ3IC0zLjkzMzkxNwp2IDMuMzI5Mjk3IDIuNTY0MDA1IC0zLjk0MDE3NAp2IDMuMzI5Mjk3IDIuNTg1OTA5IC0zLjk0MjI4Nwp2IDMuMzI5Mjk3IDIuNjA3ODEzIC0zLjk0MDE3NAp2IDMuMzI5Mjk3IDIuNjI4ODcxIC0zLjkzMzkxNwp2IDMuMzI5Mjk3IDIuNjQ4MjcxIC0zLjkyMzc2MAp2IDMuMzI5Mjk3IDIuNjY1MjY2IC0zLjkxMDEwMAp2IDMuMzI5Mjk3IDIuNjc5MjA1IC0zLjg5MzQ2NAp2IDMuMzI5Mjk3IDIuNjg5NTU4IC0zLjg3NDQ5NQp2IDMuMzI5Mjk3IDIuNjk1ODUyIC0zLjg1NDE3MQp2IDMuMzI5Mjk3IDIuNjk4MTA3IC0xLjY0MDEwMQp2IDMuMzI5Mjk3IDIuNjk1OTMwIC0xLjYxODQ1MAp2IDMuMzI5Mjk3IDIuNjg5NTU4IC0xLjU5Nzg3NQp2IDMuMzI5Mjk3IDIuNjc5MjA1IC0xLjU3ODkwNQp2IDMuMzI5Mjk3IDIuNjY1MjY2IC0xLjU2MjI2OQp2IDMuMzI5Mjk3IDIuNjQ4MjcxIC0xLjU0ODYwOQp2IDMuMzI5Mjk3IDIuNjI4ODcxIC0xLjUzODQ1Mgp2IDMuMzI5Mjk3IDIuNjA3ODEzIC0xLjUzMjE5Ngp2IDMuMzI5Mjk3IDIuNTg1OTA5IC0xLjUzMDA4Mwp2IDMuMzI5Mjk3IDIuNTY0MDA1IC0xLjUzMjE5Ngp2IDMuMzI5Mjk3IDIuNTQyOTQ3IC0xLjUzODQ1Mwp2IDMuMzI5Mjk3IDIuNTIzNTQ3IC0xLjU0ODYwOQp2IDMuMzI5Mjk3IDIuNTA2NTUyIC0xLjU2MjI2OQp2IDMuMzI5Mjk3IDIuNDkyNjEzIC0xLjU3ODkwNQp2IDMuMzI5Mjk3IDIuNDgyMjYwIC0xLjU5Nzg3NQp2IDMuMzI5Mjk3IDIuNDc1ODg4IC0xLjYxODQ1MAp2IDMuMzI5Mjk3IDIuNDczNzExIC0xLjY0MDEwMQp2IDMuMzI5Mjk3IDIuNDc1OTY2IC0yLjUzMzUyOAp2IDMuMzI5Mjk3IDIuNDgyMjYwIC0yLjU1Mzg1MQp2IDMuMzI5Mjk3IDIuNDkyNjEzIC0yLjU3MjgyMQp2IDMuMzI5Mjk3IDIuNTA2NTUyIC0yLjU4OTQ1Nwp2IDMuMzI5Mjk3IDIuNTIzNTQ3IC0yLjYwMzExOAp2IDMuMzI5Mjk3IDIuNTQyOTQ3IC0yLjYxMzI3NAp2IDMuMzI5Mjk3IDIuNTY0MDA1IC0yLjYxOTUzMAp2IDMuMzI5Mjk3IDIuNTg1OTA5IC0yLjYyMTY0NAp2IDMuMzI5Mjk3IDIuNjA3ODEzIC0yLjYxOTUzMAp2IDMuMzI5Mjk3IDIuNjI4ODcxIC0yLjYxMzI3NAp2IDMuMzI5Mjk3IDIuNjQ4MjcxIC0yLjYwMzExOAp2IDMuMzI5Mjk3IDIuNjY1MjY2IC0yLjU4OTQ1Nwp2IDMuMzI5Mjk3IDIuNjc5MjA1IC0yLjU3MjgyMQp2IDMuMzI5Mjk3IDIuNjg5NTU4IC0yLjU1Mzg1MQp2IDMuMzI5Mjk3IDIuNjk1ODUyIC0yLjUzMzUyOAp2IDEuNTU5MDU1IDIuNTEwNTIzIDUuNDM5MDQ3CnYgMS41NDc0NTEgMi41MTE2NjYgNS40MzkwNDcKdiAxLjUzNjI5MyAyLjUxNTA1MSA1LjQzOTA0OAp2IDEuNTI2MDA5IDIuNTIwNTQ3IDUuNDM5MDQ4CnYgMS41MTY5OTYgMi41Mjc5NDUgNS40MzkwNDgKdiAxLjUwOTU5OCAyLjUzNjk1OCA1LjQzOTA0OAp2IDEuNTA0MTAyIDIuNTQ3MjQyIDUuNDM5MDQ3CnYgMS41MDA3MTcgMi41NTg0MDAgNS40MzkwNDgKdiAxLjQ5OTU3NCAyLjU3MDAwNCA1LjQzOTA0OAp2IDEuNTAwNzE3IDIuNTgxNjA4IDUuNDM5MDQ4CnYgMS41MDQxMDIgMi41OTI3NjcgNS40MzkwNDgKdiAxLjUwOTU5OCAyLjYwMzA1MCA1LjQzOTA0Nwp2IDEuNTE2OTk2IDIuNjEyMDY0IDUuNDM5MDQ3CnYgMS41MjYwMDkgMi42MTk0NjEgNS40MzkwNDgKdiAxLjUzNjI5MyAyLjYyNDk1OCA1LjQzOTA0OAp2IDEuNTQ3NDUxIDIuNjI4MzQyIDUuNDM5MDQ4CnYgMS41NTkwNTUgMi42Mjk0ODUgNS40MzkwNDcKdiAxLjU3MDY1OSAyLjYyODM0MiA1LjQzOTA0Nwp2IDEuNTgxODE4IDIuNjI0OTU4IDUuNDM5MDQ3CnYgMS41OTIxMDEgMi42MTk0NjEgNS40MzkwNDgKdiAxLjYwMTExNSAyLjYxMjA2NCA1LjQzOTA0Nwp2IDEuNjA4NTEyIDIuNjAzMDUwIDUuNDM5MDQ3CnYgMS42MTQwMDkgMi41OTI3NjcgNS40MzkwNDcKdiAxLjYxNzM5MyAyLjU4MTYwOCA1LjQzOTA0Nwp2IDEuNjE4NTM2IDIuNTcwMDA0IDUuNDM5MDQ4CnYgMS42MTczOTMgMi41NTg0MDAgNS40MzkwNDcKdiAxLjYxNDAwOSAyLjU0NzI0MSA1LjQzOTA0Nwp2IDEuNjA4NTEyIDIuNTM2OTU4IDUuNDM5MDQ3CnYgMS42MDExMTUgMi41Mjc5NDQgNS40MzkwNDcKdiAxLjU5MjEwMSAyLjUyMDU0NyA1LjQzOTA0OAp2IDEuNTgxODE4IDIuNTE1MDUwIDUuNDM5MDQ3CnYgMS41NzA2NTkgMi41MTE2NjYgNS40MzkwNDcKdiAxLjMzMzAyNyAyLjUxMDUyMyA1LjQzOTA0OAp2IDEuMzIxNDIyIDIuNTExNjY2IDUuNDM5MDQ3CnYgMS4zMTAyNjQgMi41MTUwNTEgNS40MzkwNDcKdiAxLjI5OTk4MSAyLjUyMDU0NyA1LjQzOTA0OAp2IDEuMjkwOTY3IDIuNTI3OTQ1IDUuNDM5MDQ4CnYgMS4yODM1NzAgMi41MzY5NTggNS40MzkwNDcKdiAxLjI3ODA3MyAyLjU0NzI0MiA1LjQzOTA0Nwp2IDEuMjc0Njg4IDIuNTU4NDAwIDUuNDM5MDQ3CnYgMS4yNzM1NDUgMi41NzAwMDQgNS40MzkwNDgKdiAxLjI3NDY4OCAyLjU4MTYwOCA1LjQzOTA0Nwp2IDEuMjc4MDczIDIuNTkyNzY3IDUuNDM5MDQ3CnYgMS4yODM1NzAgMi42MDMwNTAgNS40MzkwNDcKdiAxLjI5MDk2NyAyLjYxMjA2NCA1LjQzOTA0OAp2IDEuMjk5OTgxIDIuNjE5NDYxIDUuNDM5MDQ4CnYgMS4zMTAyNjQgMi42MjQ5NTggNS40MzkwNDcKdiAxLjMyMTQyMiAyLjYyODM0MiA1LjQzOTA0Nwp2IDEuMzMzMDI3IDIuNjI5NDg1IDUuNDM5MDQ4CnYgMS4zNDQ2MzEgMi42MjgzNDIgNS40MzkwNDgKdiAxLjM1NTc4OSAyLjYyNDk1OCA1LjQzOTA0Nwp2IDEuMzY2MDczIDIuNjE5NDYxIDUuNDM5MDQ3CnYgMS4zNzUwODYgMi42MTIwNjQgNS40MzkwNDgKdiAxLjM4MjQ4MyAyLjYwMzA1MCA1LjQzOTA0Nwp2IDEuMzg3OTgwIDIuNTkyNzY3IDUuNDM5MDQ4CnYgMS4zOTEzNjUgMi41ODE2MDggNS40MzkwNDgKdiAxLjM5MjUwOCAyLjU3MDAwNCA1LjQzOTA0OAp2IDEuMzkxMzY1IDIuNTU4NDAwIDUuNDM5MDQ4CnYgMS4zODc5ODAgMi41NDcyNDEgNS40MzkwNDcKdiAxLjM4MjQ4MyAyLjUzNjk1OCA1LjQzOTA0OAp2IDEuMzc1MDg2IDIuNTI3OTQ0IDUuNDM5MDQ4CnYgMS4zNjYwNzMgMi41MjA1NDcgNS40MzkwNDcKdiAxLjM1NTc4OSAyLjUxNTA1MSA1LjQzOTA0OAp2IDEuMzQ0NjMxIDIuNTExNjY2IDUuNDM5MDQ3CnYgMS4xMDY5OTggMi41MTA1MjMgNS40MzkwNDgKdiAxLjA5NTM5NCAyLjUxMTY2NiA1LjQzOTA0OAp2IDEuMDg0MjM2IDIuNTE1MDUxIDUuNDM5MDQ4CnYgMS4wNzM5NTIgMi41MjA1NDcgNS40MzkwNDgKdiAxLjA2NDkzOCAyLjUyNzk0NSA1LjQzOTA0OAp2IDEuMDU3NTQxIDIuNTM2OTU4IDUuNDM5MDQ4CnYgMS4wNTIwNDUgMi41NDcyNDIgNS40MzkwNDcKdiAxLjA0ODY2MCAyLjU1ODQwMCA1LjQzOTA0OAp2IDEuMDQ3NTE3IDIuNTcwMDA0IDUuNDM5MDQ4CnYgMS4wNDg2NjAgMi41ODE2MDggNS40MzkwNDcKdiAxLjA1MjA0NSAyLjU5Mjc2NyA1LjQzOTA0OAp2IDEuMDU3NTQxIDIuNjAzMDUwIDUuNDM5MDQ4CnYgMS4wNjQ5MzggMi42MTIwNjQgNS40MzkwNDcKdiAxLjA3Mzk1MiAyLjYxOTQ2MSA1LjQzOTA0OAp2IDEuMDg0MjM2IDIuNjI0OTU4IDUuNDM5MDQ3CnYgMS4wOTUzOTQgMi42MjgzNDIgNS40MzkwNDgKdiAxLjEwNjk5OCAyLjYyOTQ4NSA1LjQzOTA0Nwp2IDEuMTE4NjAyIDIuNjI4MzQyIDUuNDM5MDQ3CnYgMS4xMjk3NjEgMi42MjQ5NTggNS40MzkwNDcKdiAxLjE0MDA0NCAyLjYxOTQ2MSA1LjQzOTA0OAp2IDEuMTQ5MDU4IDIuNjEyMDY0IDUuNDM5MDQ4CnYgMS4xNTY0NTUgMi42MDMwNTAgNS40MzkwNDcKdiAxLjE2MTk1MiAyLjU5Mjc2NyA1LjQzOTA0Nwp2IDEuMTY1MzM2IDIuNTgxNjA4IDUuNDM5MDQ3CnYgMS4xNjY0NzkgMi41NzAwMDQgNS40MzkwNDgKdiAxLjE2NTMzNiAyLjU1ODQwMCA1LjQzOTA0Nwp2IDEuMTYxOTUxIDIuNTQ3MjQxIDUuNDM5MDQ3CnYgMS4xNTY0NTUgMi41MzY5NTggNS40MzkwNDcKdiAxLjE0OTA1NyAyLjUyNzk0NSA1LjQzOTA0OAp2IDEuMTQwMDQ0IDIuNTIwNTQ3IDUuNDM5MDQ4CnYgMS4xMjk3NjEgMi41MTUwNTEgNS40MzkwNDcKdiAxLjExODYwMiAyLjUxMTY2NiA1LjQzOTA0Nwp2IC0xLjEyNzk2MiAyLjUxMDUyMyA1LjQzOTA0OAp2IC0xLjEzOTU2NiAyLjUxMTY2NiA1LjQzOTA0OAp2IC0xLjE1MDcyNCAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjE2MTAwOCAyLjUyMDU0OCA1LjQzOTA0OAp2IC0xLjE3MDAyMSAyLjUyNzk0NSA1LjQzOTA0OAp2IC0xLjE3NzQxOCAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjE4MjkxNSAyLjU0NzI0MiA1LjQzOTA0OAp2IC0xLjE4NjMwMCAyLjU1ODQwMCA1LjQzOTA0OAp2IC0xLjE4NzQ0MyAyLjU3MDAwNCA1LjQzOTA0Nwp2IC0xLjE4NjMwMCAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjE4MjkxNSAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0xLjE3NzQxOCAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjE3MDAyMSAyLjYxMjA2NCA1LjQzOTA0Nwp2IC0xLjE2MTAwOCAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0xLjE1MDcyNCAyLjYyNDk1OCA1LjQzOTA0Nwp2IC0xLjEzOTU2NiAyLjYyODM0MyA1LjQzOTA0Nwp2IC0xLjEyNzk2MSAyLjYyOTQ4NiA1LjQzOTA0Nwp2IC0xLjExNjM1NyAyLjYyODM0MyA1LjQzOTA0Nwp2IC0xLjEwNTE5OSAyLjYyNDk1OCA1LjQzOTA0OAp2IC0xLjA5NDkxNiAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0xLjA4NTkwMiAyLjYxMjA2NCA1LjQzOTA0Nwp2IC0xLjA3ODUwNSAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjA3MzAwOCAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0xLjA2OTYyMyAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjA2ODQ4MCAyLjU3MDAwNCA1LjQzOTA0Nwp2IC0xLjA2OTYyMyAyLjU1ODQwMCA1LjQzOTA0Nwp2IC0xLjA3MzAwOCAyLjU0NzI0MiA1LjQzOTA0OAp2IC0xLjA3ODUwNSAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjA4NTkwMiAyLjUyNzk0NSA1LjQzOTA0OAp2IC0xLjA5NDkxNiAyLjUyMDU0OCA1LjQzOTA0OAp2IC0xLjEwNTE5OSAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjExNjM1NyAyLjUxMTY2NiA1LjQzOTA0OAp2IC0xLjM1Mzk5MCAyLjUxMDUyMyA1LjQzOTA0OAp2IC0xLjM2NTU5NSAyLjUxMTY2NiA1LjQzOTA0OAp2IC0xLjM3Njc1MyAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjM4NzAzNiAyLjUyMDU0OCA1LjQzOTA0Nwp2IC0xLjM5NjA1MCAyLjUyNzk0NSA1LjQzOTA0OAp2IC0xLjQwMzQ0NyAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjQwODk0NCAyLjU0NzI0MiA1LjQzOTA0OAp2IC0xLjQxMjMyOCAyLjU1ODQwMCA1LjQzOTA0Nwp2IC0xLjQxMzQ3MSAyLjU3MDAwNCA1LjQzOTA0OAp2IC0xLjQxMjMyOCAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjQwODk0NCAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0xLjQwMzQ0NyAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjM5NjA1MCAyLjYxMjA2NCA1LjQzOTA0OAp2IC0xLjM4NzAzNiAyLjYxOTQ2MSA1LjQzOTA0Nwp2IC0xLjM3Njc1MyAyLjYyNDk1OCA1LjQzOTA0OAp2IC0xLjM2NTU5NCAyLjYyODM0MyA1LjQzOTA0Nwp2IC0xLjM1Mzk5MCAyLjYyOTQ4NiA1LjQzOTA0OAp2IC0xLjM0MjM4NiAyLjYyODM0MyA1LjQzOTA0Nwp2IC0xLjMzMTIyOCAyLjYyNDk1OCA1LjQzOTA0Nwp2IC0xLjMyMDk0NCAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0xLjMxMTkzMSAyLjYxMjA2NCA1LjQzOTA0OAp2IC0xLjMwNDUzMyAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjI5OTAzNyAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0xLjI5NTY1MiAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjI5NDUwOSAyLjU3MDAwNCA1LjQzOTA0Nwp2IC0xLjI5NTY1MiAyLjU1ODQwMCA1LjQzOTA0Nwp2IC0xLjI5OTAzNyAyLjU0NzI0MiA1LjQzOTA0Nwp2IC0xLjMwNDUzNCAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjMxMTkzMSAyLjUyNzk0NSA1LjQzOTA0OAp2IC0xLjMyMDk0NCAyLjUyMDU0OCA1LjQzOTA0OAp2IC0xLjMzMTIyOCAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjM0MjM4NiAyLjUxMTY2NiA1LjQzOTA0OAp2IC0xLjU4MDAxOSAyLjUxMDUyMyA1LjQzOTA0Nwp2IC0xLjU5MTYyMyAyLjUxMTY2NiA1LjQzOTA0Nwp2IC0xLjYwMjc4MSAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjYxMzA2NSAyLjUyMDU0OCA1LjQzOTA0OAp2IC0xLjYyMjA3OCAyLjUyNzk0NSA1LjQzOTA0OAp2IC0xLjYyOTQ3NiAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjYzNDk3MiAyLjU0NzI0MiA1LjQzOTA0Nwp2IC0xLjYzODM1NyAyLjU1ODQwMCA1LjQzOTA0OAp2IC0xLjYzOTUwMCAyLjU3MDAwNCA1LjQzOTA0Nwp2IC0xLjYzODM1NyAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjYzNDk3MiAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0xLjYyOTQ3NiAyLjYwMzA1MCA1LjQzOTA0Nwp2IC0xLjYyMjA3OCAyLjYxMjA2NCA1LjQzOTA0Nwp2IC0xLjYxMzA2NSAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0xLjYwMjc4MSAyLjYyNDk1OCA1LjQzOTA0Nwp2IC0xLjU5MTYyMyAyLjYyODM0MyA1LjQzOTA0Nwp2IC0xLjU4MDAxOSAyLjYyOTQ4NiA1LjQzOTA0Nwp2IC0xLjU2ODQxNSAyLjYyODM0MyA1LjQzOTA0Nwp2IC0xLjU1NzI1NiAyLjYyNDk1OCA1LjQzOTA0OAp2IC0xLjU0Njk3MyAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0xLjUzNzk1OSAyLjYxMjA2NCA1LjQzOTA0Nwp2IC0xLjUzMDU2MiAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjUyNTA2NSAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0xLjUyMTY4MSAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjUyMDUzOCAyLjU3MDAwNCA1LjQzOTA0OAp2IC0xLjUyMTY4MSAyLjU1ODQwMCA1LjQzOTA0Nwp2IC0xLjUyNTA2NiAyLjU0NzI0MiA1LjQzOTA0OAp2IC0xLjUzMDU2MiAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjUzNzk1OSAyLjUyNzk0NSA1LjQzOTA0Nwp2IC0xLjU0Njk3MyAyLjUyMDU0OCA1LjQzOTA0OAp2IC0xLjU1NzI1NiAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjU2ODQxNSAyLjUxMTY2NiA1LjQzOTA0OAp2IC0xLjc5NjA1NSAyLjUxMDUyMyA1LjQzOTA0OAp2IC0xLjgwNzY1OSAyLjUxMTY2NiA1LjQzOTA0OAp2IC0xLjgxODgxNyAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjgyOTEwMSAyLjUyMDU0OCA1LjQzOTA0Nwp2IC0xLjgzODExNCAyLjUyNzk0NSA1LjQzOTA0Nwp2IC0xLjg0NTUxMSAyLjUzNjk1OCA1LjQzOTA0OAp2IC0xLjg1MTAwOCAyLjU0NzI0MiA1LjQzOTA0OAp2IC0xLjg1NDM5MyAyLjU1ODQwMCA1LjQzOTA0OAp2IC0xLjg1NTUzNiAyLjU3MDAwNCA1LjQzOTA0OAp2IC0xLjg1NDM5MyAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjg1MTAwOCAyLjU5Mjc2NyA1LjQzOTA0OAp2IC0xLjg0NTUxMSAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjgzODExNCAyLjYxMjA2NCA1LjQzOTA0Nwp2IC0xLjgyOTEwMSAyLjYxOTQ2MSA1LjQzOTA0Nwp2IC0xLjgxODgxNyAyLjYyNDk1OCA1LjQzOTA0OAp2IC0xLjgwNzY1OSAyLjYyODM0MyA1LjQzOTA0OAp2IC0xLjc5NjA1NCAyLjYyOTQ4NiA1LjQzOTA0OAp2IC0xLjc4NDQ1MCAyLjYyODM0MyA1LjQzOTA0OAp2IC0xLjc3MzI5MiAyLjYyNDk1OCA1LjQzOTA0OAp2IC0xLjc2MzAwOCAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0xLjc1Mzk5NSAyLjYxMjA2NCA1LjQzOTA0OAp2IC0xLjc0NjU5OCAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjc0MTEwMSAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0xLjczNzcxNiAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjczNjU3MyAyLjU3MDAwNCA1LjQzOTA0Nwp2IC0xLjczNzcxNiAyLjU1ODQwMCA1LjQzOTA0OAp2IC0xLjc0MTEwMSAyLjU0NzI0MiA1LjQzOTA0OAp2IC0xLjc0NjU5OCAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjc1Mzk5NSAyLjUyNzk0NSA1LjQzOTA0OAp2IC0xLjc2MzAwOSAyLjUyMDU0OCA1LjQzOTA0OAp2IC0xLjc3MzI5MiAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0xLjc4NDQ1MCAyLjUxMTY2NiA1LjQzOTA0OAp2IC0yLjAyMjA4MyAyLjUxMDUyMyA1LjQzOTA0OAp2IC0yLjAzMzY4NyAyLjUxMTY2NiA1LjQzOTA0OAp2IC0yLjA0NDg0NiAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0yLjA1NTEyOSAyLjUyMDU0OCA1LjQzOTA0OAp2IC0yLjA2NDE0MyAyLjUyNzk0NSA1LjQzOTA0OAp2IC0yLjA3MTU0MCAyLjUzNjk1OSA1LjQzOTA0Nwp2IC0yLjA3NzAzNyAyLjU0NzI0MiA1LjQzOTA0OAp2IC0yLjA4MDQyMSAyLjU1ODQwMCA1LjQzOTA0OAp2IC0yLjA4MTU2NCAyLjU3MDAwNCA1LjQzOTA0Nwp2IC0yLjA4MDQyMSAyLjU4MTYwOSA1LjQzOTA0OAp2IC0yLjA3NzAzNyAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0yLjA3MTU0MCAyLjYwMzA1MCA1LjQzOTA0OAp2IC0yLjA2NDE0MyAyLjYxMjA2NCA1LjQzOTA0Nwp2IC0yLjA1NTEyOSAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0yLjA0NDg0NiAyLjYyNDk1OCA1LjQzOTA0Nwp2IC0yLjAzMzY4NyAyLjYyODM0MyA1LjQzOTA0OAp2IC0yLjAyMjA4MyAyLjYyOTQ4NiA1LjQzOTA0Nwp2IC0yLjAxMDQ3OSAyLjYyODM0MyA1LjQzOTA0OAp2IC0xLjk5OTMyMSAyLjYyNDk1OCA1LjQzOTA0OAp2IC0xLjk4OTAzNyAyLjYxOTQ2MSA1LjQzOTA0Nwp2IC0xLjk4MDAyNCAyLjYxMjA2NCA1LjQzOTA0Nwp2IC0xLjk3MjYyNiAyLjYwMzA1MCA1LjQzOTA0OAp2IC0xLjk2NzEzMCAyLjU5Mjc2NyA1LjQzOTA0OAp2IC0xLjk2Mzc0NSAyLjU4MTYwOSA1LjQzOTA0OAp2IC0xLjk2MjYwMiAyLjU3MDAwNCA1LjQzOTA0OAp2IC0xLjk2Mzc0NSAyLjU1ODQwMCA1LjQzOTA0OAp2IC0xLjk2NzEzMCAyLjU0NzI0MiA1LjQzOTA0OAp2IC0xLjk3MjYyNiAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0xLjk4MDAyNCAyLjUyNzk0NSA1LjQzOTA0OAp2IC0xLjk4OTAzNyAyLjUyMDU0OCA1LjQzOTA0Nwp2IC0xLjk5OTMyMSAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0yLjAxMDQ3OSAyLjUxMTY2NiA1LjQzOTA0OAp2IC0yLjI0ODExMiAyLjUxMDUyMyA1LjQzOTA0OAp2IC0yLjI1OTcxNiAyLjUxMTY2NiA1LjQzOTA0OAp2IC0yLjI3MDg3NCAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0yLjI4MTE1OCAyLjUyMDU0OCA1LjQzOTA0Nwp2IC0yLjI5MDE3MSAyLjUyNzk0NSA1LjQzOTA0OAp2IC0yLjI5NzU2OCAyLjUzNjk1OSA1LjQzOTA0Nwp2IC0yLjMwMzA2NSAyLjU0NzI0MiA1LjQzOTA0OAp2IC0yLjMwNjQ1MCAyLjU1ODQwMCA1LjQzOTA0OAp2IC0yLjMwNzU5MyAyLjU3MDAwNSA1LjQzOTA0OAp2IC0yLjMwNjQ1MCAyLjU4MTYwOSA1LjQzOTA0OAp2IC0yLjMwMzA2NSAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0yLjI5NzU2OCAyLjYwMzA1MSA1LjQzOTA0OAp2IC0yLjI5MDE3MSAyLjYxMjA2NCA1LjQzOTA0OAp2IC0yLjI4MTE1OCAyLjYxOTQ2MiA1LjQzOTA0Nwp2IC0yLjI3MDg3NCAyLjYyNDk1OCA1LjQzOTA0OAp2IC0yLjI1OTcxNiAyLjYyODM0MyA1LjQzOTA0OAp2IC0yLjI0ODExMiAyLjYyOTQ4NiA1LjQzOTA0OAp2IC0yLjIzNjUwNyAyLjYyODM0MyA1LjQzOTA0OAp2IC0yLjIyNTM0OSAyLjYyNDk1OCA1LjQzOTA0OAp2IC0yLjIxNTA2NiAyLjYxOTQ2MSA1LjQzOTA0OAp2IC0yLjIwNjA1MiAyLjYxMjA2NCA1LjQzOTA0OAp2IC0yLjE5ODY1NSAyLjYwMzA1MCA1LjQzOTA0OAp2IC0yLjE5MzE1OCAyLjU5Mjc2NyA1LjQzOTA0Nwp2IC0yLjE4OTc3MyAyLjU4MTYwOSA1LjQzOTA0OAp2IC0yLjE4ODYzMSAyLjU3MDAwNCA1LjQzOTA0Nwp2IC0yLjE4OTc3MyAyLjU1ODQwMCA1LjQzOTA0OAp2IC0yLjE5MzE1OCAyLjU0NzI0MiA1LjQzOTA0OAp2IC0yLjE5ODY1NSAyLjUzNjk1OCA1LjQzOTA0Nwp2IC0yLjIwNjA1MiAyLjUyNzk0NSA1LjQzOTA0OAp2IC0yLjIxNTA2NiAyLjUyMDU0OCA1LjQzOTA0OAp2IC0yLjIyNTM0OSAyLjUxNTA1MSA1LjQzOTA0Nwp2IC0yLjIzNjUwOCAyLjUxMTY2NiA1LjQzOTA0OAp2IC0wLjI4MDc4MSAyLjQ0Mjc4MiA2LjU0MDMyNwp2IC0wLjMwNTczOCAyLjQ0NTI0MCA2LjU0MDMyNwp2IC0wLjMyOTczNSAyLjQ1MjUyMCA2LjU0MDMyNwp2IC0wLjM1MTg1MSAyLjQ2NDM0MSA2LjU0MDMyNwp2IC0wLjM3MTIzNiAyLjQ4MDI1MCA2LjU0MDMyNwp2IC0wLjM4NzE0NSAyLjQ5OTYzNSA2LjU0MDMyNwp2IC0wLjM5ODk2NyAyLjUyMTc1MSA2LjU0MDMyNwp2IC0wLjQwNjI0NiAyLjU0NTc0OSA2LjU0MDMyNwp2IC0wLjQwODcwNCAyLjU3MDcwNSA2LjU0MDMyNwp2IC0wLjQwNjI0NiAyLjU5NTY2MiA2LjU0MDMyNwp2IC0wLjM5ODk2NyAyLjYxOTY2MCA2LjU0MDMyNwp2IC0wLjM4NzE0NSAyLjY0MTc3NiA2LjU0MDMyNwp2IC0wLjM3MTIzNiAyLjY2MTE2MSA2LjU0MDMyNwp2IC0wLjM1MTg1MSAyLjY3NzA3MCA2LjU0MDMyNwp2IC0wLjMyOTczNSAyLjY4ODg5MSA2LjU0MDMyNwp2IC0wLjMwNTczNyAyLjY5NjE3MSA2LjU0MDMyNwp2IC0wLjI4MDc4MSAyLjY5ODYyOSA2LjU0MDMyNwp2IDAuMzA2NDIwIDIuNjk2MTcxIDYuNTQwMzI3CnYgMC4zMzA0MTcgMi42ODg4OTEgNi41NDAzMjcKdiAwLjM1MjUzMyAyLjY3NzA3MCA2LjU0MDMyNwp2IDAuMzcxOTE4IDIuNjYxMTYxIDYuNTQwMzI3CnYgMC4zODc4MjcgMi42NDE3NzYgNi41NDAzMjcKdiAwLjM5OTY0OSAyLjYxOTY1OSA2LjU0MDMyNwp2IDAuNDA2OTI4IDIuNTk1NjYyIDYuNTQwMzI3CnYgMC40MDkzODYgMi41NzA3MDUgNi41NDAzMjcKdiAwLjQwNjkyOCAyLjU0NTc0OSA2LjU0MDMyNwp2IDAuMzk5NjQ5IDIuNTIxNzUxIDYuNTQwMzI3CnYgMC4zODc4MjcgMi40OTk2MzUgNi41NDAzMjcKdiAwLjM3MTkxOCAyLjQ4MDI1MCA2LjU0MDMyNwp2IDAuMzUyNTMzIDIuNDY0MzQxIDYuNTQwMzI3CnYgMC4zMzA0MTcgMi40NTI1MjAgNi41NDAzMjcKdiAwLjMwNjQxOSAyLjQ0NTI0MCA2LjU0MDMyNwp2IC0zLjMxNzE2NCAyLjU4NTg4OCAtMy41NDc1NTQKdiAtMy4zMTcxNjQgMi42MDc4ODkgLTMuNTQ1Mzg3CnYgLTMuMzE3MTY0IDIuNjI5MDQ1IC0zLjUzODk2OQp2IC0zLjMxNzE2NCAyLjY0ODU0MiAtMy41Mjg1NDcKdiAtMy4zMTcxNjQgMi42NjU2MzIgLTMuNTE0NTIzCnYgLTMuMzE3MTY0IDIuNjc5NjU3IC0zLjQ5NzQzMwp2IC0zLjMxNzE2NCAyLjY5MDA3OCAtMy40Nzc5MzYKdiAtMy4zMTcxNjMgMi42OTY0OTYgLTMuNDU2NzgwCnYgLTMuMzE3MTY0IDIuNjk4Njg4IC0zLjQzNDUyMQp2IC0zLjMxNzE2NCAyLjY5NjQyMCAtMS45Mjc5MDQKdiAtMy4zMTcxNjMgMi42OTAwNzggLTEuOTA2OTk4CnYgLTMuMzE3MTY0IDIuNjc5NjU3IC0xLjg4NzUwMQp2IC0zLjMxNzE2NCAyLjY2NTYzMiAtMS44NzA0MTIKdiAtMy4zMTcxNjMgMi42NDg1NDIgLTEuODU2Mzg3CnYgLTMuMzE3MTYzIDIuNjI5MDQ1IC0xLjg0NTk2NQp2IC0zLjMxNzE2NCAyLjYwNzg4OSAtMS44Mzk1NDcKdiAtMy4zMTcxNjMgMi41ODU4ODggLTEuODM3MzgxCnYgLTMuMzE3MTY0IDIuNTYzODg3IC0xLjgzOTU0Nwp2IC0zLjMxNzE2MyAyLjU0MjczMSAtMS44NDU5NjUKdiAtMy4zMTcxNjQgMi41MjMyMzQgLTEuODU2Mzg3CnYgLTMuMzE3MTY0IDIuNTA2MTQ0IC0xLjg3MDQxMgp2IC0zLjMxNzE2NCAyLjQ5MjExOSAtMS44ODc1MDEKdiAtMy4zMTcxNjQgMi40ODE2OTggLTEuOTA2OTk5CnYgLTMuMzE3MTY0IDIuNDc1MzU2IC0xLjkyNzkwNAp2IC0zLjMxNzE2NCAyLjQ3MzA4OCAtMy40MzQ1MjEKdiAtMy4zMTcxNjQgMi40NzUyODAgLTMuNDU2NzgwCnYgLTMuMzE3MTY0IDIuNDgxNjk4IC0zLjQ3NzkzNgp2IC0zLjMxNzE2MyAyLjQ5MjExOSAtMy40OTc0MzMKdiAtMy4zMTcxNjQgMi41MDYxNDQgLTMuNTE0NTIzCnYgLTMuMzE3MTY0IDIuNTIzMjM0IC0zLjUyODU0OAp2IC0zLjMxNzE2NCAyLjU0MjczMSAtMy41Mzg5NjkKdiAtMy4zMTcxNjQgMi41NjM4ODcgLTMuNTQ1Mzg2CnYgLTMuMzY1Njg1IDIuOTE4MDIyIDUuOTkxODk5CnYgLTIuNDMyOTgxIDIuOTE0MTg2IDYuOTQxNDg0CnYgLTMuMzUxOTU4IDIuOTE3MzU2IDYuMTU2MzU2CnYgLTMuMzEwMjIzIDIuOTE2NzEwIDYuMzE1OTAwCnYgLTMuMjQxNzQ4IDIuOTE2MTA0IDYuNDY1NjgyCnYgLTMuMTQ4NjE1IDIuOTE1NTU3IDYuNjAxMTUzCnYgLTMuMDMzNjUzIDIuOTE1MDg0IDYuNzE4MTk1CnYgLTIuOTAwMzU1IDIuOTE0NzAxIDYuODEzMjU0CnYgLTIuNzUyNzcxIDIuOTE0NDE4IDYuODgzNDQwCnYgLTIuNTk1Mzg2IDIuOTE0MjQ1IDYuOTI2NjIwCnYgLTIuMzkyMDE4IDIuOTcwNDU0IC02Ljk1MjcyOAp2IC0zLjMzMDMwNSAyLjk2NjYyMCAtNi4wMDg2NTkKdiAtMi41NTQ1MDcgMi45NzAzOTUgLTYuOTM4ODIyCnYgLTIuNzEyMTQ0IDIuOTcwMjIyIC02Ljg5NjU3MQp2IC0yLjg2MDE0MCAyLjk2OTk0MCAtNi44MjcyNTYKdiAtMi45OTM5OTYgMi45Njk1NTcgLTYuNzMyOTg1CnYgLTMuMTA5NjQ3IDIuOTY5MDg0IC02LjYxNjYyMwp2IC0zLjIwMzU3NyAyLjk2ODUzNyAtNi40ODE3MDMKdiAtMy4yNzI5MzMgMi45Njc5MzEgLTYuMzMyMzI3CnYgLTMuMzE1NjA4IDIuOTY3Mjg2IC02LjE3MzAzMgp2IDIuMzkyMDA5IDIuOTE0MTgzIDYuOTU1NzA5CnYgMy4zMzAyOTcgMi45MTgwMTcgNi4wMTE2NDEKdiAyLjU1NDQ5OSAyLjkxNDI0MSA2Ljk0MTgwMwp2IDIuNzEyMTM2IDIuOTE0NDE0IDYuODk5NTUyCnYgMi44NjAxMzIgMi45MTQ2OTYgNi44MzAyMzcKdiAyLjk5Mzk4OCAyLjkxNTA4MCA2LjczNTk2Ngp2IDMuMTA5NjM4IDIuOTE1NTUyIDYuNjE5NjA0CnYgMy4yMDM1NjggMi45MTYxMDAgNi40ODQ2ODQKdiAzLjI3MjkyNSAyLjkxNjcwNSA2LjMzNTMwOAp2IDMuMzE1NjAwIDIuOTE3MzUxIDYuMTc2MDEzCnYgMy4zNjU2NzcgMi45NjY2MTUgLTUuOTg4OTE4CnYgMi40MzI5NzMgMi45NzA0NTAgLTYuOTM4NTAzCnYgMy4zNTE5NDkgMi45NjcyODEgLTYuMTUzMzc1CnYgMy4zMTAyMTUgMi45Njc5MjcgLTYuMzEyOTE5CnYgMy4yNDE3NDAgMi45Njg1MzIgLTYuNDYyNzAxCnYgMy4xNDg2MDcgMi45NjkwODAgLTYuNTk4MTcyCnYgMy4wMzM2NDUgMi45Njk1NTMgLTYuNzE1MjE0CnYgMi45MDAzNDcgMi45Njk5MzYgLTYuODEwMjczCnYgMi43NTI3NjMgMi45NzAyMTkgLTYuODgwNDU5CnYgMi41OTUzNzggMi45NzAzOTIgLTYuOTIzNjM5CnYgLTIuNDY2NTYwIDIuMjM0ODA2IDYuOTkxNTM5CnYgLTIuNDY2NTY4IDIuODU3MDI4IDYuOTk0MDU4CnYgLTIuNDkwODA4IDIuMjgyMDkzIDcuMDI5ODUxCnYgLTIuNTEwODI3IDIuMzM0Nzc1IDcuMDYxNTM3CnYgLTIuNTI2MjA5IDIuMzkxNzgwIDcuMDg1OTUxCnYgLTIuNTM2NjQxIDIuNDUxOTQ2IDcuMTAyNTk1CnYgLTIuNTQxOTExIDIuNTE0MDQ5IDcuMTExMTMxCnYgLTIuNTQxOTEyIDIuNTc2ODI0IDcuMTExMzg1CnYgLTIuNTM2NjQzIDIuNjM4OTk0IDcuMTAzMzUyCnYgLTIuNTI2MjEyIDIuNjk5MjkzIDcuMDg3MTk2CnYgLTIuNTEwODMyIDIuNzU2NDkzIDcuMDYzMjQ1CnYgLTIuNDkwODE0IDIuODA5NDMxIDcuMDMxOTg3CnYgLTIuNjMxOTc5IDIuMjM2MDcyIDYuOTc3Njg1CnYgLTIuNjMxOTg3IDIuODU1ODcwIDYuOTgwMTk2CnYgLTIuNjU3NzUyIDIuMjgzMTc2IDcuMDE1NzY2CnYgLTIuNjc5MDI4IDIuMzM1NjUzIDcuMDQ3MjU5CnYgLTIuNjk1Mzc3IDIuMzkyNDM2IDcuMDcxNTI0CnYgLTIuNzA2NDY1IDIuNDUyMzY3IDcuMDg4MDY4CnYgLTIuNzEyMDY2IDIuNTE0MjI4IDcuMDk2NTUyCnYgLTIuNzEyMDY3IDIuNTc2NzU5IDcuMDk2ODA2CnYgLTIuNzA2NDY3IDIuNjM4Njg2IDcuMDg4ODIyCnYgLTIuNjk1MzgwIDIuNjk4NzUwIDcuMDcyNzY1CnYgLTIuNjc5MDMzIDIuNzU1NzI3IDcuMDQ4OTYwCnYgLTIuNjU3NzU3IDIuODA4NDU4IDcuMDE3ODkzCnYgLTIuNzkyODE0IDIuMjM4MDY5IDYuOTM1ODU2CnYgLTIuNzkyODIxIDIuODU0MjA4IDYuOTM4MzUxCnYgLTIuODE5OTkzIDIuMjg0ODk2IDYuOTczNDc0CnYgLTIuODQyNDMyIDIuMzM3MDY0IDcuMDA0NTg2CnYgLTIuODU5Njc0IDIuMzkzNTEyIDcuMDI4NTU3CnYgLTIuODcxMzY4IDIuNDUzMDkwIDcuMDQ0OTAwCnYgLTIuODc3Mjc1IDIuNTE0NTg2IDcuMDUzMjg0CnYgLTIuODc3Mjc1IDIuNTc2NzQ3IDcuMDUzNTM1CnYgLTIuODcxMzcwIDIuNjM4MzA5IDcuMDQ1NjUxCnYgLTIuODU5Njc3IDIuNjk4MDE4IDcuMDI5NzkwCnYgLTIuODQyNDM3IDIuNzU0NjU5IDcuMDA2Mjc3CnYgLTIuODE5OTk5IDIuODA3MDc4IDYuOTc1NTg4CnYgLTIuOTQzNzM3IDIuMjQwMDI5IDYuODY2NjQxCnYgLTIuOTQzNzQ0IDIuODUyODA1IDYuODY5MTIyCnYgLTIuOTcyMjIzIDIuMjg2NjAyIDYuOTAzNjcyCnYgLTIuOTk1NzQwIDIuMzM4NDg2IDYuOTM0Mjk4CnYgLTMuMDEzODExIDIuMzk0NjI3IDYuOTU3ODk2CnYgLTMuMDI2MDY3IDIuNDUzODgxIDYuOTczOTg3CnYgLTMuMDMyMjU4IDIuNTE1MDQxIDYuOTgyMjQxCnYgLTMuMDMyMjU5IDIuNTc2ODY0IDYuOTgyNDkxCnYgLTMuMDI2MDY4IDIuNjM4MDg5IDYuOTc0NzMzCnYgLTMuMDEzODE0IDIuNjk3NDcyIDYuOTU5MTIzCnYgLTIuOTk1NzQ1IDIuNzUzODAyIDYuOTM1OTgwCnYgLTIuOTcyMjI4IDIuODA1OTM0IDYuOTA1Nzc1CnYgLTMuMDc5Nzk3IDIuMjQxNDQ0IDYuNzcxNzI2CnYgLTMuMDc5ODAzIDIuODUyMTU2IDYuNzc0MTk5CnYgLTMuMTA5NDk3IDIuMjg3ODYyIDYuODA4MTE3CnYgLTMuMTM0MDE3IDIuMzM5NTczIDYuODM4MjE2CnYgLTMuMTUyODU4IDIuMzk1NTI2IDYuODYxNDA4CnYgLTMuMTY1NjM2IDIuNDU0NTgxIDYuODc3MjIzCnYgLTMuMTcyMDkwIDIuNTE1NTM2IDYuODg1MzM3CnYgLTMuMTcyMDkxIDIuNTc3MTUxIDYuODg1NTg3CnYgLTMuMTY1NjM3IDIuNjM4MTY5IDYuODc3OTY2CnYgLTMuMTUyODYxIDIuNjk3MzUxIDYuODYyNjMxCnYgLTMuMTM0MDIxIDIuNzUzNDkwIDYuODM5ODkyCnYgLTMuMTA5NTAzIDIuODA1NDQ0IDYuODEwMjE0CnYgLTMuMTk2NTgyIDIuMjQyMDA3IDYuNjUzNzc3CnYgLTMuMTk2NTg5IDIuODUyNTQ1IDYuNjU2MjUwCnYgLTMuMjI3NDAzIDIuMjg4NDE0IDYuNjg5NTI2CnYgLTMuMjUyODQ5IDIuMzQwMTE0IDYuNzE5MDkyCnYgLTMuMjcyNDAyIDIuMzk2MDUyIDYuNzQxODc3CnYgLTMuMjg1NjYyIDIuNDU1MDkxIDYuNzU3NDE1CnYgLTMuMjkyMzYxIDIuNTE2MDMwIDYuNzY1Mzg5CnYgLTMuMjkyMzYxIDIuNTc3NjI2IDYuNzY1NjM5CnYgLTMuMjg1NjY0IDIuNjM4NjI3IDYuNzU4MTU4CnYgLTMuMjcyNDA1IDIuNjk3NzkwIDYuNzQzMDk5CnYgLTMuMjUyODU0IDIuNzUzOTEyIDYuNzIwNzY4CnYgLTMuMjI3NDA5IDIuODA1ODUwIDYuNjkxNjIxCnYgLTMuMjkwMzgzIDIuMjQxNjAwIDYuNTE2MzMxCnYgLTMuMjkwMzkwIDIuODU0MDY0IDYuNTE4ODExCnYgLTMuMzIyMjIxIDIuMjg4MTU2IDYuNTUxNDU4CnYgLTMuMzQ4NTA1IDIuMzQwMDIxIDYuNTgwNTEyCnYgLTMuMzY4NzAyIDIuMzk2MTM4IDYuNjAyOTAyCnYgLTMuMzgyNDAwIDIuNDU1MzY1IDYuNjE4MTczCnYgLTMuMzg5MzIwIDIuNTE2NDk2IDYuNjI2MDE0CnYgLTMuMzg5MzIwIDIuNTc4Mjg3IDYuNjI2MjY0CnYgLTMuMzgyNDAyIDIuNjM5NDc5IDYuNjE4OTE5CnYgLTMuMzY4NzA2IDIuNjk4ODI4IDYuNjA0MTI3CnYgLTMuMzQ4NTEwIDIuNzU1MTI1IDYuNTgyMTkzCnYgLTMuMzIyMjI3IDIuODA3MjI0IDYuNTUzNTYwCnYgLTMuMzU4MzY3IDIuMjQwMzIxIDYuMzYzNzAyCnYgLTMuMzU4Mzc0IDIuODU2NTc4IDYuMzY2MTk4CnYgLTMuMzkxMDgyIDIuMjg3MTY5IDYuMzk4MjMwCnYgLTMuNDE4MDkxIDIuMzM5MzU3IDYuNDI2NzkwCnYgLTMuNDM4ODQ1IDIuMzk1ODI0IDYuNDQ4ODAxCnYgLTMuNDUyOTIwIDIuNDU1NDE5IDYuNDYzODE1CnYgLTMuNDYwMDMwIDIuNTE2OTI5IDYuNDcxNTI3CnYgLTMuNDYwMDMxIDIuNTc5MTAzIDYuNDcxNzc4CnYgLTMuNDUyOTIyIDIuNjQwNjc0IDYuNDY0NTY1CnYgLTMuNDM4ODQ4IDIuNzAwMzg5IDYuNDUwMDM0CnYgLTMuNDE4MDk2IDIuNzU3MDMyIDYuNDI4NDgyCnYgLTMuMzkxMDg4IDIuODA5NDUxIDYuNDAwMzQ1CnYgLTMuMzk4NzY1IDIuMjM4NTg1IDYuMjAwOTAxCnYgLTMuMzk4NzcyIDIuODU5NjMxIDYuMjAzNDE2CnYgLTMuNDMyMTU0IDIuMjg1ODAxIDYuMjM0ODIxCnYgLTMuNDU5NzE5IDIuMzM4Mzk4IDYuMjYyODgwCnYgLTMuNDgwODk5IDIuMzk1MzA1IDYuMjg0NTA3CnYgLTMuNDk1MjY0IDIuNDU1MzY1IDYuMjk5MjYwCnYgLTMuNTAyNTIwIDIuNTE3MzU0IDYuMzA2ODQyCnYgLTMuNTAyNTIxIDIuNTgwMDExIDYuMzA3MDk2CnYgLTMuNDk1MjY2IDIuNjQyMDU5IDYuMzAwMDE2CnYgLTMuNDgwOTAyIDIuNzAyMjM3IDYuMjg1NzUwCnYgLTMuNDU5NzIzIDIuNzU5MzE4IDYuMjY0NTg0CnYgLTMuNDMyMTU5IDIuODEyMTQxIDYuMjM2OTUyCnYgLTMuNDExMDk1IDIuODYyMjY3IDYuMDM2MTM1CnYgLTMuNDExMDg4IDIuMjM3MzA0IDYuMDMzNjA0CnYgLTMuNDQ0ODMzIDIuODE0NDgxIDYuMDY4OTc1CnYgLTMuNDcyNjg2IDIuNzYxMzI4IDYuMDk2MDMyCnYgLTMuNDk0MDg4IDIuNzAzODg5IDYuMTE2NzU0CnYgLTMuNTA4NjAyIDIuNjQzMzMzIDYuMTMwNzIwCnYgLTMuNTE1OTMzIDIuNTgwODk0IDYuMTM3NjQ2CnYgLTMuNTE1OTMzIDIuNTE3ODQzIDYuMTM3MzkxCnYgLTMuNTA4NjAwIDIuNDU1NDYyIDYuMTI5OTU5CnYgLTMuNDk0MDg1IDIuMzk1MDIyIDYuMTE1NTAyCnYgLTMuNDcyNjgyIDIuMzM3NzUzIDYuMDk0MzE2CnYgLTMuNDQ0ODI3IDIuMjg0ODIxIDYuMDY2ODMwCnYgLTIuNDI1MjkyIDIuOTEzNzIzIC03LjAwNTk2MQp2IC0yLjQyNTI4NSAyLjI5MTUwMSAtNy4wMDg0ODEKdiAtMi40NDkzMTQgMi44NjY0MzYgLTcuMDQ0NDE2CnYgLTIuNDY5MTQ2IDIuODEzNzUzIC03LjA3NjIxOQp2IC0yLjQ4NDM4MyAyLjc1Njc0OSAtNy4xMDA3MjMKdiAtMi40OTQ3MTcgMi42OTY1ODMgLTcuMTE3NDI4CnYgLTIuNDk5OTM3IDIuNjM0NDgwIC03LjEyNTk5NQp2IC0yLjQ5OTkzNyAyLjU3MTcwNSAtNy4xMjYyNDkKdiAtMi40OTQ3MTUgMi41MDk1MzUgLTcuMTE4MTg2CnYgLTIuNDg0MzgwIDIuNDQ5MjM2IC03LjEwMTk2OQp2IC0yLjQ2OTE0MSAyLjM5MjAzNiAtNy4wNzc5MjcKdiAtMi40NDkzMDggMi4zMzkwOTggLTcuMDQ2NTUxCnYgLTIuNTkwNzkwIDIuOTEyNDU3IC02Ljk5MzA4Mwp2IC0yLjU5MDc4MyAyLjI5MjY1OSAtNi45OTU1OTQKdiAtMi42MTYzMzcgMi44NjUzNTMgLTcuMDMxMzE0CnYgLTIuNjM3NDI4IDIuODEyODc2IC03LjA2MjkzMgp2IC0yLjY1MzYzMyAyLjc1NjA5NCAtNy4wODcyOTQKdiAtMi42NjQ2MjQgMi42OTYxNjIgLTcuMTAzOTAyCnYgLTIuNjcwMTc1IDIuNjM0MzAxIC03LjExMjQyMAp2IC0yLjY3MDE3NSAyLjU3MTc3MCAtNy4xMTI2NzQKdiAtMi42NjQ2MjIgMi41MDk4NDMgLTcuMTA0NjU3CnYgLTIuNjUzNjMwIDIuNDQ5Nzc5IC03LjA4ODUzNQp2IC0yLjYzNzQyMyAyLjM5MjgwMiAtNy4wNjQ2MzQKdiAtMi42MTYzMzIgMi4zNDAwNzEgLTcuMDMzNDQyCnYgLTIuNzUxODY5IDIuOTEwNDYwIC02Ljk1MjIwMwp2IC0yLjc1MTg2MiAyLjI5NDMyMSAtNi45NTQ2OTgKdiAtMi43Nzg4MjYgMi44NjM2MzQgLTYuOTg5OTgwCnYgLTIuODAxMDgxIDIuODExNDY2IC03LjAyMTIyNAp2IC0yLjgxODE4MSAyLjc1NTAxOCAtNy4wNDUyOTcKdiAtMi44Mjk3NzggMi42OTU0MzkgLTcuMDYxNzA5CnYgLTIuODM1NjM2IDIuNjMzOTQ0IC03LjA3MDEyNwp2IC0yLjgzNTYzNSAyLjU3MTc4MiAtNy4wNzAzNzgKdiAtMi44Mjk3NzYgMi41MTAyMjAgLTcuMDYyNDU5CnYgLTIuODE4MTc4IDIuNDUwNTExIC03LjA0NjUzMAp2IC0yLjgwMTA3NiAyLjM5Mzg3MSAtNy4wMjI5MTQKdiAtMi43Nzg4MjAgMi4zNDE0NTEgLTYuOTkyMDk1CnYgLTIuOTAzMTk3IDIuOTA4NTAwIC02Ljg4Mzg3OAp2IC0yLjkwMzE5MCAyLjI5NTcyNCAtNi44ODYzNjAKdiAtMi45MzE0NjQgMi44NjE5MjggLTYuOTIxMDc3CnYgLTIuOTU0ODAxIDIuODEwMDQzIC02Ljk1MTg0MQp2IC0yLjk3MjczMiAyLjc1MzkwMiAtNi45NzU1NDYKdiAtMi45ODQ4OTMgMi42OTQ2NDkgLTYuOTkxNzA4CnYgLTIuOTkxMDM1IDIuNjMzNDg4IC02Ljk5OTk5OQp2IC0yLjk5MTAzNSAyLjU3MTY2NiAtNy4wMDAyNTAKdiAtMi45ODQ4OTEgMi41MTA0NDAgLTYuOTkyNDU0CnYgLTIuOTcyNzI4IDIuNDUxMDU4IC02Ljk3Njc3Mgp2IC0yLjk1NDc5NiAyLjM5NDcyNyAtNi45NTM1MjQKdiAtMi45MzE0NTggMi4zNDI1OTYgLTYuOTIzMTgwCnYgLTMuMDM5ODE0IDIuOTA3MDg2IC02Ljc4OTc2OAp2IC0zLjAzOTgwNyAyLjI5NjM3MyAtNi43OTIyNDEKdiAtMy4wNjkyOTkgMi44NjA2NjggLTYuODI2MzM0CnYgLTMuMDkzNjQxIDIuODA4OTU2IC02Ljg1NjU3Ngp2IC0zLjExMjM0NSAyLjc1MzAwMyAtNi44Nzk4NzkKdiAtMy4xMjUwMzAgMi42OTM5NDggLTYuODk1NzY5CnYgLTMuMTMxNDM3IDIuNjMyOTkzIC02LjkwMzkyMQp2IC0zLjEzMTQzNiAyLjU3MTM3OSAtNi45MDQxNzEKdiAtMy4xMjUwMjggMi41MTAzNjAgLTYuODk2NTEzCnYgLTMuMTEyMzQyIDIuNDUxMTc5IC02Ljg4MTEwMgp2IC0zLjA5MzYzNyAyLjM5NTA0MCAtNi44NTgyNTMKdiAtMy4wNjkyOTMgMi4zNDMwODUgLTYuODI4NDMwCnYgLTMuMTU3MjkzIDIuOTA2NTIyIC02LjY3MjUwOQp2IC0zLjE1NzI4NiAyLjI5NTk4NSAtNi42NzQ5ODIKdiAtMy4xODc5MDMgMi44NjAxMTUgLTYuNzA4NDM5CnYgLTMuMjEzMTc1IDIuODA4NDE2IC02LjczODE1NQp2IC0zLjIzMjU5MiAyLjc1MjQ3OCAtNi43NjEwNTUKdiAtMy4yNDU3NjAgMi42OTM0MzkgLTYuNzc2NjcwCnYgLTMuMjUyNDEyIDIuNjMyNTAwIC02Ljc4NDY4NQp2IC0zLjI1MjQxMiAyLjU3MDkwNCAtNi43ODQ5MzUKdiAtMy4yNDU3NTkgMi41MDk5MDMgLTYuNzc3NDEzCnYgLTMuMjMyNTg5IDIuNDUwNzM5IC02Ljc2MjI3Nwp2IC0zLjIxMzE3MCAyLjM5NDYxOCAtNi43Mzk4MzEKdiAtMy4xODc4OTggMi4zNDI2ODAgLTYuNzEwNTM0CnYgLTMuMjUxOTAzIDIuOTA2OTMwIC02LjUzNTYxOQp2IC0zLjI1MTg5NiAyLjI5NDQ2NiAtNi41MzgwOTkKdiAtMy4yODM1MzMgMi44NjAzNzQgLTYuNTcwOTMzCnYgLTMuMzA5NjQ2IDIuODA4NTA5IC02LjYwMDE0MQp2IC0zLjMyOTcxMCAyLjc1MjM5MiAtNi42MjI2NTEKdiAtMy4zNDMzMTggMi42OTMxNjUgLTYuNjM4MDAyCnYgLTMuMzUwMTkxIDIuNjMyMDM0IC02LjY0NTg4NAp2IC0zLjM1MDE5MSAyLjU3MDI0NCAtNi42NDYxMzMKdiAtMy4zNDMzMTYgMi41MDkwNTEgLTYuNjM4NzQ4CnYgLTMuMzI5NzA3IDIuNDQ5NzAyIC02LjYyMzg3Ngp2IC0zLjMwOTY0MSAyLjM5MzQwNSAtNi42MDE4MjIKdiAtMy4yODM1MjcgMi4zNDEzMDYgLTYuNTczMDM1CnYgLTMuMzIwNzg1IDIuOTA4MjA5IC02LjM4MzM5Mwp2IC0zLjMyMDc3OCAyLjI5MTk1MiAtNi4zODU4ODkKdiAtMy4zNTMyOTcgMi44NjEzNjEgLTYuNDE4MTE0CnYgLTMuMzgwMTM3IDIuODA5MTczIC02LjQ0NjgzMgp2IC0zLjQwMDc2MCAyLjc1MjcwNiAtNi40Njg5NjYKdiAtMy40MTQ3NDcgMi42OTMxMTEgLTYuNDg0MDYyCnYgLTMuNDIxODExIDIuNjMxNjAxIC02LjQ5MTgxNgp2IC0zLjQyMTgxMSAyLjU2OTQyNyAtNi40OTIwNjgKdiAtMy40MTQ3NDUgMi41MDc4NTcgLTYuNDg0ODEzCnYgLTMuNDAwNzU3IDIuNDQ4MTQyIC02LjQ3MDE5OQp2IC0zLjM4MDEzMiAyLjM5MTQ5OCAtNi40NDg1MjQKdiAtMy4zNTMyOTEgMi4zMzkwNzkgLTYuNDIwMjI5CnYgLTMuMzYyMTQzIDIuOTA5OTQ1IC02LjIyMDgzNAp2IC0zLjM2MjEzNiAyLjI4ODg5OSAtNi4yMjMzNDkKdiAtMy4zOTUzMzEgMi44NjI3MjkgLTYuMjU0OTUwCnYgLTMuNDIyNzMwIDIuODEwMTMyIC02LjI4MzE3MQp2IC0zLjQ0Mzc4MyAyLjc1MzIyNSAtNi4zMDQ5MjMKdiAtMy40NTgwNjAgMi42OTMxNjUgLTYuMzE5NzYwCnYgLTMuNDY1MjcyIDIuNjMxMTc2IC02LjMyNzM4NAp2IC0zLjQ2NTI3MSAyLjU2ODUyMCAtNi4zMjc2MzgKdiAtMy40NTgwNTggMi41MDY0NzEgLTYuMzIwNTE3CnYgLTMuNDQzNzc5IDIuNDQ2MjkzIC02LjMwNjE2NQp2IC0zLjQyMjcyNSAyLjM4OTIxMiAtNi4yODQ4NzUKdiAtMy4zOTUzMjUgMi4zMzYzODkgLTYuMjU3MDgyCnYgLTMuMzc1NDQ1IDIuMjg2MjYzIC02LjA1NjE0Mwp2IC0zLjM3NTQ1MiAyLjkxMTIyNiAtNi4wNTM2MTIKdiAtMy40MDg5ODggMi4zMzQwNDkgLTYuMDg5MTgxCnYgLTMuNDM2NjgyIDIuMzg3MjAyIC02LjExNjQwMgp2IC0zLjQ1Nzk2MSAyLjQ0NDY0MSAtNi4xMzcyNTAKdiAtMy40NzIzOTIgMi41MDUxOTcgLTYuMTUxMzAxCnYgLTMuNDc5NjgzIDIuNTY3NjM2IC02LjE1ODI3MAp2IC0zLjQ3OTY4MyAyLjYzMDY4OCAtNi4xNTgwMTUKdiAtMy40NzIzOTQgMi42OTMwNjkgLTYuMTUwNTQwCnYgLTMuNDU3OTY0IDIuNzUzNTA4IC02LjEzNTk5OQp2IC0zLjQzNjY4NyAyLjgxMDc3NyAtNi4xMTQ2ODYKdiAtMy40MDg5OTQgMi44NjM3MDkgLTYuMDg3MDM3CnYgMy40MTEwODggMi45MTEyMjEgLTYuMDMzNjA0CnYgMy40MTEwOTUgMi4yODYyNTkgLTYuMDM2MTM1CnYgMy40NDQ4MjcgMi44NjM3MDQgLTYuMDY2ODMwCnYgMy40NzI2ODIgMi44MTA3NzIgLTYuMDk0MzE2CnYgMy40OTQwODUgMi43NTM1MDMgLTYuMTE1NTAyCnYgMy41MDg2MDAgMi42OTMwNjMgLTYuMTI5OTU5CnYgMy41MTU5MzMgMi42MzA2ODMgLTYuMTM3MzkxCnYgMy41MTU5MzMgMi41Njc2MzEgLTYuMTM3NjQ2CnYgMy41MDg2MDIgMi41MDUxOTIgLTYuMTMwNzIwCnYgMy40OTQwODggMi40NDQ2MzYgLTYuMTE2NzU0CnYgMy40NzI2ODYgMi4zODcxOTcgLTYuMDk2MDMyCnYgMy40NDQ4MzMgMi4zMzQwNDQgLTYuMDY4OTc1CnYgMy4zOTg3NjUgMi45MDk5NDAgLTYuMjAwOTAxCnYgMy4zOTg3NzIgMi4yODg4OTQgLTYuMjAzNDE2CnYgMy40MzIxNTQgMi44NjI3MjQgLTYuMjM0ODIxCnYgMy40NTk3MTkgMi44MTAxMjcgLTYuMjYyODgwCnYgMy40ODA4OTkgMi43NTMyMjAgLTYuMjg0NTA3CnYgMy40OTUyNjQgMi42OTMxNjAgLTYuMjk5MjYwCnYgMy41MDI1MjAgMi42MzExNzEgLTYuMzA2ODQyCnYgMy41MDI1MjEgMi41Njg1MTUgLTYuMzA3MDk2CnYgMy40OTUyNjYgMi41MDY0NjYgLTYuMzAwMDE2CnYgMy40ODA5MDIgMi40NDYyODggLTYuMjg1NzUwCnYgMy40NTk3MjMgMi4zODkyMDcgLTYuMjY0NTg0CnYgMy40MzIxNTkgMi4zMzYzODQgLTYuMjM2OTUyCnYgMy4zNTgzNjcgMi45MDgyMDUgLTYuMzYzNzAyCnYgMy4zNTgzNzQgMi4yOTE5NDcgLTYuMzY2MTk4CnYgMy4zOTEwODIgMi44NjEzNTYgLTYuMzk4MjMwCnYgMy40MTgwOTEgMi44MDkxNjggLTYuNDI2NzkwCnYgMy40Mzg4NDUgMi43NTI3MDEgLTYuNDQ4ODAxCnYgMy40NTI5MjAgMi42OTMxMDYgLTYuNDYzODE1CnYgMy40NjAwMzAgMi42MzE1OTYgLTYuNDcxNTI3CnYgMy40NjAwMzEgMi41Njk0MjIgLTYuNDcxNzc4CnYgMy40NTI5MjIgMi41MDc4NTIgLTYuNDY0NTY1CnYgMy40Mzg4NDggMi40NDgxMzcgLTYuNDUwMDM0CnYgMy40MTgwOTYgMi4zOTE0OTMgLTYuNDI4NDgyCnYgMy4zOTEwODggMi4zMzkwNzQgLTYuNDAwMzQ1CnYgMy4yOTAzODMgMi45MDY5MjUgLTYuNTE2MzMxCnYgMy4yOTAzOTAgMi4yOTQ0NjEgLTYuNTE4ODExCnYgMy4zMjIyMjEgMi44NjAzNjkgLTYuNTUxNDU4CnYgMy4zNDg1MDUgMi44MDg1MDQgLTYuNTgwNTEyCnYgMy4zNjg3MDIgMi43NTIzODcgLTYuNjAyOTAyCnYgMy4zODI0MDAgMi42OTMxNjEgLTYuNjE4MTczCnYgMy4zODkzMjAgMi42MzIwMzAgLTYuNjI2MDE0CnYgMy4zODkzMjAgMi41NzAyMzkgLTYuNjI2MjY0CnYgMy4zODI0MDIgMi41MDkwNDYgLTYuNjE4OTE5CnYgMy4zNjg3MDYgMi40NDk2OTcgLTYuNjA0MTI3CnYgMy4zNDg1MTAgMi4zOTM0MDAgLTYuNTgyMTkzCnYgMy4zMjIyMjcgMi4zNDEzMDEgLTYuNTUzNTYwCnYgMy4xOTY1ODMgMi45MDY1MTggLTYuNjUzNzc3CnYgMy4xOTY1ODkgMi4yOTU5ODAgLTYuNjU2MjUwCnYgMy4yMjc0MDQgMi44NjAxMTEgLTYuNjg5NTI2CnYgMy4yNTI4NTAgMi44MDg0MTIgLTYuNzE5MDkyCnYgMy4yNzI0MDIgMi43NTI0NzMgLTYuNzQxODc3CnYgMy4yODU2NjIgMi42OTM0MzQgLTYuNzU3NDE1CnYgMy4yOTIzNjEgMi42MzI0OTYgLTYuNzY1Mzg5CnYgMy4yOTIzNjEgMi41NzA4OTkgLTYuNzY1NjM5CnYgMy4yODU2NjQgMi41MDk4OTggLTYuNzU4MTU4CnYgMy4yNzI0MDUgMi40NTA3MzUgLTYuNzQzMDk5CnYgMy4yNTI4NTQgMi4zOTQ2MTMgLTYuNzIwNzY4CnYgMy4yMjc0MDkgMi4zNDI2NzYgLTYuNjkxNjIxCnYgMy4wNzk3OTcgMi45MDcwODEgLTYuNzcxNzI2CnYgMy4wNzk4MDMgMi4yOTYzNjkgLTYuNzc0MTk5CnYgMy4xMDk0OTcgMi44NjA2NjQgLTYuODA4MTE3CnYgMy4xMzQwMTcgMi44MDg5NTIgLTYuODM4MjE2CnYgMy4xNTI4NTggMi43NTI5OTkgLTYuODYxNDA4CnYgMy4xNjU2MzYgMi42OTM5NDQgLTYuODc3MjIzCnYgMy4xNzIwOTAgMi42MzI5ODkgLTYuODg1MzM3CnYgMy4xNzIwOTEgMi41NzEzNzUgLTYuODg1NTg3CnYgMy4xNjU2MzcgMi41MTAzNTYgLTYuODc3OTY2CnYgMy4xNTI4NjEgMi40NTExNzQgLTYuODYyNjMxCnYgMy4xMzQwMjEgMi4zOTUwMzUgLTYuODM5ODkyCnYgMy4xMDk1MDMgMi4zNDMwODEgLTYuODEwMjE0CnYgMi45NDM3MzcgMi45MDg0OTYgLTYuODY2NjQxCnYgMi45NDM3NDQgMi4yOTU3MjAgLTYuODY5MTIyCnYgMi45NzIyMjMgMi44NjE5MjMgLTYuOTAzNjcyCnYgMi45OTU3NDAgMi44MTAwMzkgLTYuOTM0Mjk4CnYgMy4wMTM4MTEgMi43NTM4OTggLTYuOTU3ODk2CnYgMy4wMjYwNjcgMi42OTQ2NDQgLTYuOTczOTg3CnYgMy4wMzIyNTggMi42MzM0ODQgLTYuOTgyMjQxCnYgMy4wMzIyNTkgMi41NzE2NjEgLTYuOTgyNDkxCnYgMy4wMjYwNjggMi41MTA0MzYgLTYuOTc0NzMzCnYgMy4wMTM4MTQgMi40NTEwNTQgLTYuOTU5MTIzCnYgMi45OTU3NDUgMi4zOTQ3MjMgLTYuOTM1OTgwCnYgMi45NzIyMjggMi4zNDI1OTIgLTYuOTA1Nzc1CnYgMi43OTI4MTQgMi45MTA0NTYgLTYuOTM1ODU2CnYgMi43OTI4MjEgMi4yOTQzMTcgLTYuOTM4MzUxCnYgMi44MTk5OTMgMi44NjM2MzAgLTYuOTczNDc0CnYgMi44NDI0MzIgMi44MTE0NjEgLTcuMDA0NTg2CnYgMi44NTk2NzQgMi43NTUwMTMgLTcuMDI4NTU3CnYgMi44NzEzNjggMi42OTU0MzUgLTcuMDQ0OTAwCnYgMi44NzcyNzUgMi42MzM5NDAgLTcuMDUzMjg0CnYgMi44NzcyNzUgMi41NzE3NzggLTcuMDUzNTM1CnYgMi44NzEzNzAgMi41MTAyMTYgLTcuMDQ1NjUxCnYgMi44NTk2NzcgMi40NTA1MDcgLTcuMDI5NzkwCnYgMi44NDI0MzcgMi4zOTM4NjcgLTcuMDA2Mjc3CnYgMi44MTk5OTkgMi4zNDE0NDcgLTYuOTc1NTg4CnYgMi42MzE5NzkgMi45MTI0NTMgLTYuOTc3Njg1CnYgMi42MzE5ODcgMi4yOTI2NTYgLTYuOTgwMTk2CnYgMi42NTc3NTIgMi44NjUzNDkgLTcuMDE1NzY2CnYgMi42NzkwMjggMi44MTI4NzIgLTcuMDQ3MjU5CnYgMi42OTUzNzcgMi43NTYwOTAgLTcuMDcxNTI0CnYgMi43MDY0NjUgMi42OTYxNTggLTcuMDg4MDY4CnYgMi43MTIwNjYgMi42MzQyOTcgLTcuMDk2NTUyCnYgMi43MTIwNjcgMi41NzE3NjcgLTcuMDk2ODA2CnYgMi43MDY0NjcgMi41MDk4MzkgLTcuMDg4ODIyCnYgMi42OTUzODAgMi40NDk3NzUgLTcuMDcyNzY1CnYgMi42NzkwMzMgMi4zOTI3OTggLTcuMDQ4OTYwCnYgMi42NTc3NTcgMi4zNDAwNjcgLTcuMDE3ODkzCnYgMi40NjY1NjggMi4yOTE0OTcgLTYuOTk0MDU4CnYgMi40NjY1NjAgMi45MTM3MjAgLTYuOTkxNTM5CnYgMi40OTA4MTQgMi4zMzkwOTQgLTcuMDMxOTg3CnYgMi41MTA4MzIgMi4zOTIwMzIgLTcuMDYzMjQ1CnYgMi41MjYyMTIgMi40NDkyMzMgLTcuMDg3MTk2CnYgMi41MzY2NDMgMi41MDk1MzEgLTcuMTAzMzUyCnYgMi41NDE5MTIgMi41NzE3MDIgLTcuMTExMzg1CnYgMi41NDE5MTEgMi42MzQ0NzcgLTcuMTExMTMxCnYgMi41MzY2NDEgMi42OTY1NzkgLTcuMTAyNTk1CnYgMi41MjYyMDkgMi43NTY3NDUgLTcuMDg1OTUxCnYgMi41MTA4MjcgMi44MTM3NTAgLTcuMDYxNTM3CnYgMi40OTA4MDggMi44NjY0MzIgLTcuMDI5ODUxCnYgMi40MjUyODUgMi44NTcwMjQgNy4wMDg0ODEKdiAyLjQyNTI5MiAyLjIzNDgwMiA3LjAwNTk2MQp2IDIuNDQ5MzA4IDIuODA5NDI3IDcuMDQ2NTUxCnYgMi40NjkxNDEgMi43NTY0OTAgNy4wNzc5MjcKdiAyLjQ4NDM4MCAyLjY5OTI4OSA3LjEwMTk2OQp2IDIuNDk0NzE1IDIuNjM4OTkwIDcuMTE4MTg2CnYgMi40OTk5MzcgMi41NzY4MjAgNy4xMjYyNDkKdiAyLjQ5OTkzNyAyLjUxNDA0NSA3LjEyNTk5NQp2IDIuNDk0NzE3IDIuNDUxOTQyIDcuMTE3NDI4CnYgMi40ODQzODMgMi4zOTE3NzYgNy4xMDA3MjMKdiAyLjQ2OTE0NiAyLjMzNDc3MiA3LjA3NjIxOQp2IDIuNDQ5MzE0IDIuMjgyMDkwIDcuMDQ0NDE2CnYgMi41OTA3ODMgMi44NTU4NjYgNi45OTU1OTQKdiAyLjU5MDc5MCAyLjIzNjA2OCA2Ljk5MzA4Mwp2IDIuNjE2MzMyIDIuODA4NDU1IDcuMDMzNDQyCnYgMi42Mzc0MjMgMi43NTU3MjMgNy4wNjQ2MzQKdiAyLjY1MzYzMCAyLjY5ODc0NiA3LjA4ODUzNQp2IDIuNjY0NjIyIDIuNjM4NjgyIDcuMTA0NjU3CnYgMi42NzAxNzUgMi41NzY3NTUgNy4xMTI2NzQKdiAyLjY3MDE3NSAyLjUxNDIyNCA3LjExMjQyMAp2IDIuNjY0NjI0IDIuNDUyMzYzIDcuMTAzOTAyCnYgMi42NTM2MzMgMi4zOTI0MzIgNy4wODcyOTQKdiAyLjYzNzQyOCAyLjMzNTY0OSA3LjA2MjkzMgp2IDIuNjE2MzM3IDIuMjgzMTcyIDcuMDMxMzE0CnYgMi43NTE4NjIgMi44NTQyMDQgNi45NTQ2OTgKdiAyLjc1MTg2OSAyLjIzODA2NSA2Ljk1MjIwMwp2IDIuNzc4ODIwIDIuODA3MDc0IDYuOTkyMDk1CnYgMi44MDEwNzYgMi43NTQ2NTUgNy4wMjI5MTQKdiAyLjgxODE3OCAyLjY5ODAxNCA3LjA0NjUzMAp2IDIuODI5Nzc2IDIuNjM4MzA1IDcuMDYyNDU5CnYgMi44MzU2MzUgMi41NzY3NDMgNy4wNzAzNzgKdiAyLjgzNTYzNiAyLjUxNDU4MiA3LjA3MDEyNwp2IDIuODI5Nzc4IDIuNDUzMDg2IDcuMDYxNzA5CnYgMi44MTgxODEgMi4zOTM1MDggNy4wNDUyOTcKdiAyLjgwMTA4MSAyLjMzNzA2MCA3LjAyMTIyNAp2IDIuNzc4ODI2IDIuMjg0ODkyIDYuOTg5OTgwCnYgMi45MDMxOTAgMi44NTI4MDEgNi44ODYzNjAKdiAyLjkwMzE5NyAyLjI0MDAyNSA2Ljg4Mzg3OAp2IDIuOTMxNDU4IDIuODA1OTI5IDYuOTIzMTgwCnYgMi45NTQ3OTYgMi43NTM3OTggNi45NTM1MjQKdiAyLjk3MjcyOCAyLjY5NzQ2NyA2Ljk3Njc3Mgp2IDIuOTg0ODkxIDIuNjM4MDg1IDYuOTkyNDU0CnYgMi45OTEwMzUgMi41NzY4NTkgNy4wMDAyNTAKdiAyLjk5MTAzNSAyLjUxNTAzNyA2Ljk5OTk5OQp2IDIuOTg0ODkzIDIuNDUzODc2IDYuOTkxNzA4CnYgMi45NzI3MzIgMi4zOTQ2MjMgNi45NzU1NDYKdiAyLjk1NDgwMSAyLjMzODQ4MiA2Ljk1MTg0MQp2IDIuOTMxNDY0IDIuMjg2NTk3IDYuOTIxMDc3CnYgMy4wMzk4MDcgMi44NTIxNTIgNi43OTIyNDEKdiAzLjAzOTgxNCAyLjI0MTQzOSA2Ljc4OTc2OAp2IDMuMDY5MjkzIDIuODA1NDQwIDYuODI4NDMwCnYgMy4wOTM2MzcgMi43NTM0ODYgNi44NTgyNTMKdiAzLjExMjM0MiAyLjY5NzM0NiA2Ljg4MTEwMgp2IDMuMTI1MDI4IDIuNjM4MTY1IDYuODk2NTEzCnYgMy4xMzE0MzYgMi41NzcxNDYgNi45MDQxNzEKdiAzLjEzMTQzNyAyLjUxNTUzMiA2LjkwMzkyMQp2IDMuMTI1MDMwIDIuNDU0NTc3IDYuODk1NzY5CnYgMy4xMTIzNDUgMi4zOTU1MjIgNi44Nzk4NzkKdiAzLjA5MzY0MSAyLjMzOTU2OSA2Ljg1NjU3Ngp2IDMuMDY5Mjk5IDIuMjg3ODU3IDYuODI2MzM0CnYgMy4xNTcyODYgMi44NTI1NDEgNi42NzQ5ODIKdiAzLjE1NzI5MyAyLjI0MjAwMyA2LjY3MjUwOQp2IDMuMTg3ODk3IDIuODA1ODQ1IDYuNzEwNTM0CnYgMy4yMTMxNzAgMi43NTM5MDcgNi43Mzk4MzEKdiAzLjIzMjU4OSAyLjY5Nzc4NiA2Ljc2MjI3Nwp2IDMuMjQ1NzU5IDIuNjM4NjIyIDYuNzc3NDEzCnYgMy4yNTI0MTIgMi41Nzc2MjEgNi43ODQ5MzUKdiAzLjI1MjQxMiAyLjUxNjAyNSA2Ljc4NDY4NQp2IDMuMjQ1NzYwIDIuNDU1MDg3IDYuNzc2NjcwCnYgMy4yMzI1OTIgMi4zOTYwNDggNi43NjEwNTUKdiAzLjIxMzE3NSAyLjM0MDEwOSA2LjczODE1NQp2IDMuMTg3OTAzIDIuMjg4NDEwIDYuNzA4NDM5CnYgMy4yNTE4OTYgMi44NTQwNTkgNi41MzgwOTkKdiAzLjI1MTkwMyAyLjI0MTU5NSA2LjUzNTYxOQp2IDMuMjgzNTI3IDIuODA3MjE5IDYuNTczMDM1CnYgMy4zMDk2NDEgMi43NTUxMjAgNi42MDE4MjIKdiAzLjMyOTcwNyAyLjY5ODgyMyA2LjYyMzg3Ngp2IDMuMzQzMzE2IDIuNjM5NDc0IDYuNjM4NzQ4CnYgMy4zNTAxOTEgMi41NzgyODIgNi42NDYxMzMKdiAzLjM1MDE5MSAyLjUxNjQ5MSA2LjY0NTg4NAp2IDMuMzQzMzE4IDIuNDU1MzYwIDYuNjM4MDAyCnYgMy4zMjk3MTAgMi4zOTYxMzMgNi42MjI2NTEKdiAzLjMwOTY0NiAyLjM0MDAxNiA2LjYwMDE0MQp2IDMuMjgzNTMzIDIuMjg4MTUyIDYuNTcwOTMzCnYgMy4zMjA3NzggMi44NTY1NzMgNi4zODU4ODkKdiAzLjMyMDc4NSAyLjI0MDMxNiA2LjM4MzM5Mwp2IDMuMzUzMjkxIDIuODA5NDQ2IDYuNDIwMjI5CnYgMy4zODAxMzIgMi43NTcwMjcgNi40NDg1MjQKdiAzLjQwMDc1NyAyLjcwMDM4NCA2LjQ3MDE5OQp2IDMuNDE0NzQ1IDIuNjQwNjY5IDYuNDg0ODEzCnYgMy40MjE4MTEgMi41NzkwOTggNi40OTIwNjgKdiAzLjQyMTgxMSAyLjUxNjkyNCA2LjQ5MTgxNgp2IDMuNDE0NzQ3IDIuNDU1NDE0IDYuNDg0MDYyCnYgMy40MDA3NjAgMi4zOTU4MTkgNi40Njg5NjYKdiAzLjM4MDEzNyAyLjMzOTM1MiA2LjQ0NjgzMgp2IDMuMzUzMjk3IDIuMjg3MTY0IDYuNDE4MTE0CnYgMy4zNjIxMzYgMi44NTk2MjYgNi4yMjMzNDkKdiAzLjM2MjE0MyAyLjIzODU4MCA2LjIyMDgzNAp2IDMuMzk1MzI1IDIuODEyMTM2IDYuMjU3MDgyCnYgMy40MjI3MjUgMi43NTkzMTMgNi4yODQ4NzUKdiAzLjQ0Mzc3OSAyLjcwMjIzMiA2LjMwNjE2NQp2IDMuNDU4MDU4IDIuNjQyMDU0IDYuMzIwNTE3CnYgMy40NjUyNzEgMi41ODAwMDYgNi4zMjc2MzgKdiAzLjQ2NTI3MiAyLjUxNzM0OSA2LjMyNzM4NAp2IDMuNDU4MDYwIDIuNDU1MzYwIDYuMzE5NzYwCnYgMy40NDM3ODMgMi4zOTUzMDAgNi4zMDQ5MjMKdiAzLjQyMjczMCAyLjMzODM5MyA2LjI4MzE3MQp2IDMuMzk1MzMxIDIuMjg1Nzk2IDYuMjU0OTUwCnYgMy4zNzU0NTIgMi4yMzcyOTkgNi4wNTM2MTIKdiAzLjM3NTQ0NSAyLjg2MjI2MiA2LjA1NjE0Mwp2IDMuNDA4OTk0IDIuMjg0ODE2IDYuMDg3MDM3CnYgMy40MzY2ODcgMi4zMzc3NDggNi4xMTQ2ODYKdiAzLjQ1Nzk2NCAyLjM5NTAxNyA2LjEzNTk5OQp2IDMuNDcyMzk0IDIuNDU1NDU3IDYuMTUwNTQwCnYgMy40Nzk2ODMgMi41MTc4MzggNi4xNTgwMTUKdiAzLjQ3OTY4MyAyLjU4MDg4OSA2LjE1ODI3MAp2IDMuNDcyMzkyIDIuNjQzMzI4IDYuMTUxMzAxCnYgMy40NTc5NjEgMi43MDM4ODQgNi4xMzcyNTAKdiAzLjQzNjY4MiAyLjc2MTMyMyA2LjExNjQwMgp2IDMuNDA4OTg4IDIuODE0NDc2IDYuMDg5MTgxCnYgLTIuNTkxODc5IDIuMTc4MTMzIDYuOTIyNzAxCnYgLTIuNDI5NjkzIDIuMTc4MDc1IDYuOTM3NTYyCnYgLTIuNzQ5MDUzIDIuMTc4MzA3IDYuODc5NTI3CnYgLTIuODk2NDM3IDIuMTc4NTg5IDYuODA5MzUwCnYgLTMuMDI5NTU2IDIuMTc4OTczIDYuNzE0MzA0CnYgLTMuMTQ0MzYzIDIuMTc5NDQ1IDYuNTk3Mjc5CnYgLTMuMjM3MzcxIDIuMTc5OTkzIDYuNDYxODI1CnYgLTMuMzA1NzUzIDIuMTgwNTk5IDYuMzEyMDY0CnYgLTMuMzQ3NDMxIDIuMTgxMjQ0IDYuMTUyNTQyCnYgLTMuMzYxMTQxIDIuMTgxOTEwIDUuOTg4MTA4CnYgLTIuMzg4Nzg2IDIuMjM0MzQyIC02Ljk1NDc2Nwp2IC0yLjU1MTA1NiAyLjIzNDI4NCAtNi45NDA4NjMKdiAtMi43MDg0ODEgMi4yMzQxMTEgLTYuODk4NjE4CnYgLTIuODU2Mjc3IDIuMjMzODI5IC02LjgyOTMxMgp2IC0yLjk4OTk1MyAyLjIzMzQ0NSAtNi43MzUwNTQKdiAtMy4xMDU0NDcgMi4yMzI5NzMgLTYuNjE4NzA4CnYgLTMuMTk5MjUwIDIuMjMyNDI1IC02LjQ4MzgwNgp2IC0zLjI2ODUxMyAyLjIzMTgyMCAtNi4zMzQ0NTAKdiAtMy4zMTExMzEgMi4yMzExNzQgLTYuMTc1MTc4CnYgLTMuMzI1ODA4IDIuMjMwNTA4IC02LjAxMDgyNwp2IDMuMzYxMTQ5IDIuMjMwNTA0IC01Ljk5MTA4OQp2IDMuMzQ3NDM5IDIuMjMxMTY5IC02LjE1NTUyMwp2IDMuMzA1NzYxIDIuMjMxODE1IC02LjMxNTA0NQp2IDMuMjM3Mzc5IDIuMjMyNDIxIC02LjQ2NDgwNwp2IDMuMTQ0MzcxIDIuMjMyOTY5IC02LjYwMDI2MAp2IDMuMDI5NTY0IDIuMjMzNDQxIC02LjcxNzI4Ngp2IDIuODk2NDQ2IDIuMjMzODI1IC02LjgxMjMzMQp2IDIuNzQ5MDYxIDIuMjM0MTA3IC02Ljg4MjUwOAp2IDIuNTkxODg3IDIuMjM0MjgwIC02LjkyNTY4Mgp2IDIuNDI5NzAyIDIuMjM0MzM5IC02Ljk0MDU0NAp2IDIuMzg4Nzk0IDIuMTc4MDcyIDYuOTUxNzg2CnYgMi41NTEwNjQgMi4xNzgxMzAgNi45Mzc4ODEKdiAyLjcwODQ4OSAyLjE3ODMwMyA2Ljg5NTYzNwp2IDIuODU2Mjg1IDIuMTc4NTg1IDYuODI2MzMxCnYgMi45ODk5NjEgMi4xNzg5NjggNi43MzIwNzIKdiAzLjEwNTQ1NSAyLjE3OTQ0MSA2LjYxNTcyNgp2IDMuMTk5MjU5IDIuMTc5OTg4IDYuNDgwODI0CnYgMy4yNjg1MjEgMi4xODA1OTQgNi4zMzE0NjkKdiAzLjMxMTEzOSAyLjE4MTI0MCA2LjE3MjE5Ngp2IDMuMzI1ODE2IDIuMTgxOTA1IDYuMDA3ODQ2CnYgLTIuNTY1MTA5IDIuMTc4ODA5IDYuNzU2ODQ4CnYgLTIuNDI1MDEzIDIuMTc4NzU5IDYuNzY5NjcwCnYgLTIuNjkzNzA3IDIuMTc4OTUxIDYuNzIxNTY2CnYgLTIuODE0NDA1IDIuMTc5MTgyIDYuNjY0MTY1CnYgLTIuOTIzNTUyIDIuMTc5NDk2IDYuNTg2MzMwCnYgLTMuMDE3ODExIDIuMTc5ODgzIDYuNDkwMzY1CnYgLTMuMDk0Mjc0IDIuMTgwMzMzIDYuMzc5MTQyCnYgLTMuMTUwNTU4IDIuMTgwODMxIDYuMjU2MDI1CnYgLTMuMTg0ODkyIDIuMTgxMzYyIDYuMTI0NzczCnYgLTMuMTk2Nzk5IDIuMTgxOTQwIDUuOTgyMTMyCnYgLTIuMzg1MDQ2IDIuMjMzNjU4IC02Ljc4NjgzMgp2IC0yLjUyNTIxNSAyLjIzMzYwOCAtNi43NzQ4MzYKdiAtMi42NTQwMTggMi4yMzM0NjcgLTYuNzQwMzEzCnYgLTIuNzc1MDUzIDIuMjMzMjM2IC02LjY4MzYyNQp2IC0yLjg4NDY1NiAyLjIzMjkyMiAtNi42MDY0MzUKdiAtMi45Nzk0ODAgMi4yMzI1MzUgLTYuNTExMDI3CnYgLTMuMDU2NTk4IDIuMjMyMDg1IC02LjQwMDI1Nwp2IC0zLjExMzYwNyAyLjIzMTU4NyAtNi4yNzc0NzQKdiAtMy4xNDg3MTQgMi4yMzEwNTYgLTYuMTQ2NDI3CnYgLTMuMTYxNDYyIDIuMjMwNDc5IC02LjAwMzg1OQp2IDMuMTk2ODA3IDIuMjMwNDc0IC01Ljk4NTExMwp2IDMuMTg0OTAwIDIuMjMxMDUyIC02LjEyNzc1NAp2IDMuMTUwNTY2IDIuMjMxNTgzIC02LjI1OTAwNwp2IDMuMDk0MjgyIDIuMjMyMDgxIC02LjM4MjEyMwp2IDMuMDE3ODE5IDIuMjMyNTMwIC02LjQ5MzM0Ngp2IDIuOTIzNTYwIDIuMjMyOTE4IC02LjU4OTMxMQp2IDIuODE0NDEzIDIuMjMzMjMyIC02LjY2NzE0Nwp2IDIuNjkzNzE1IDIuMjMzNDYzIC02LjcyNDU0Nwp2IDIuNTY1MTE3IDIuMjMzNjA0IC02Ljc1OTgyOQp2IDIuNDI1MDIxIDIuMjMzNjU1IC02Ljc3MjY1MQp2IDIuMzg1MDU0IDIuMTc4NzU2IDYuNzgzODUxCnYgMi41MjUyMjMgMi4xNzg4MDYgNi43NzE4NTUKdiAyLjY1NDAyNiAyLjE3ODk0NyA2LjczNzMzMgp2IDIuNzc1MDYxIDIuMTc5MTc4IDYuNjgwNjQ0CnYgMi44ODQ2NjUgMi4xNzk0OTIgNi42MDM0NTQKdiAyLjk3OTQ4OCAyLjE3OTg3OSA2LjUwODA0Ngp2IDMuMDU2NjA2IDIuMTgwMzI5IDYuMzk3Mjc2CnYgMy4xMTM2MTUgMi4xODA4MjYgNi4yNzQ0OTMKdiAzLjE0ODcyMiAyLjE4MTM1OCA2LjE0MzQ0Ngp2IDMuMTYxNDcwIDIuMTgxOTM1IDYuMDAwODc3CnYgLTIuNDQ1OTU3IDIuODkyMTAyIDYuOTYxNzk3CnYgLTIuNjA5NTI3IDIuODkxNjkxIDYuOTQ3MzIwCnYgMi40MDQ4NjYgMi44OTIwOTkgNi45NzYwOTgKdiAtMi43NjgyNDUgMi44OTExNTUgNi45MDQ2NTUKdiAtMi45MTcxMTkgMi44OTA3ODcgNi44MzQ4MzkKdiAtMy4wNTE0ODQgMi44OTA3NzEgNi43Mzk4MzMKdiAtMy4xNjcxNTEgMi44OTEyMTIgNi42MjI0NDAKdiAtMy4yNjA1NDIgMi44OTIxMzQgNi40ODYyMDkKdiAtMy4zMjg4MjcgMi44OTM0NzcgNi4zMzUzMzMKdiAtMy4zNzAwNDUgMi44OTUwNTMgNi4xNzQ1MzkKdiAtMy4zODMyMzAgMi44OTY0ODAgNi4wMDg5OTAKdiAtMy4zNDc3NDggMi45NDUyMTggLTYuMDI2MDI4CnYgLTIuNDA0ODc0IDIuOTQ4NTM1IC02Ljk3MzI5NQp2IDIuNDQ1OTUwIDIuOTQ4NTMyIC02Ljk1ODk5NAp2IC0yLjU2ODUyNiAyLjk0ODAxMCAtNi45NTk3ODYKdiAtMi43Mjc0OTIgMi45NDcxMzMgLTYuOTE4MDY1CnYgLTIuODc2Nzc1IDIuOTQ2MjAyIC02Ljg0OTEzMwp2IC0zLjAxMTY5OCAyLjk0NTQyMCAtNi43NTQ5MjQKdiAtMy4xMjgwNTUgMi45NDQ5MTMgLTYuNjM4MjE1CnYgLTMuMjIyMjQ4IDIuOTQ0NzM0IC02LjUwMjUzNAp2IC0zLjI5MTQyMiAyLjk0NDg1NyAtNi4zNTIwNTcKdiAtMy4zMzM1ODcgMi45NDUxMzEgLTYuMTkxNTAyCnYgMy4zODMyMjMgMi45NDUyMTMgLTYuMDA2MTg0CnYgMy4zNDc3NDEgMi44OTY0NzUgNi4wMjg4MzQKdiAzLjM3MDAzNyAyLjk0NTEyNyAtNi4xNzE3MzgKdiAzLjMyODgxOSAyLjk0NDg1MiAtNi4zMzI1NDAKdiAzLjI2MDUzNCAyLjk0NDczMCAtNi40ODM0MjIKdiAzLjE2NzE0MyAyLjk0NDkwOCAtNi42MTk2NTYKdiAzLjA1MTQ3NiAyLjk0NTQxNiAtNi43MzcwNDkKdiAyLjkxNzExMSAyLjk0NjE5OCAtNi44MzIwNTEKdiAyLjc2ODIzNyAyLjk0NzEyOSAtNi45MDE4NjIKdiAyLjYwOTUxOSAyLjk0ODAwNiAtNi45NDQ1MjAKdiAyLjU2ODUxOCAyLjg5MTY4NyA2Ljk2MjU4NQp2IDIuNzI3NDg1IDIuODkxMTUxIDYuOTIwODU4CnYgMi44NzY3NjggMi44OTA3ODIgNi44NTE5MjAKdiAzLjAxMTY5MSAyLjg5MDc2NyA2Ljc1NzcwOQp2IDMuMTI4MDQ4IDIuODkxMjA3IDYuNjQxMDAwCnYgMy4yMjIyNDEgMi44OTIxMzAgNi41MDUzMjIKdiAzLjI5MTQxNCAyLjg5MzQ3MiA2LjM1NDg1MQp2IDMuMzMzNTgwIDIuODk1MDQ4IDYuMTk0MzAzCnYgMi40MDQ2NjUgMi4xOTk2MzQgNi45NzI5NjEKdiAtMi40NDU3MzkgMi4xOTk2MzggNi45NTg2NjEKdiAtMi42MDkyOTAgMi4yMDAxNTUgNi45NDQxODEKdiAtMi43Njc5ODYgMi4yMDEwMjIgNi45MDE1MTUKdiAtMi45MTY4MzkgMi4yMDE5NDIgNi44MzE2OTcKdiAtMy4wNTExODcgMi4yMDI3MTcgNi43MzY2OTQKdiAtMy4xNjY4NDIgMi4yMDMyMjUgNi42MTkzMDcKdiAtMy4yNjAyMjkgMi4yMDM0MDkgNi40ODMwODYKdiAtMy4zMjg1MTcgMi4yMDMyOTkgNi4zMzIyMjEKdiAtMy4zNjk3NDQgMi4yMDMwMzkgNi4xNzE0NDAKdiAtMy4zODI5MzggMi4yMDI5NjUgNi4wMDU5MDQKdiAtMy4zNDc0NTggMi4yNTE3MDAgLTYuMDI4NTU1CnYgLTIuNDA0NjU4IDIuMjU2MDY4IC02Ljk3NTc2Nwp2IDIuNDQ1NzQ3IDIuMjU2MDY0IC02Ljk2MTQ2Nwp2IC0yLjU2ODI5MSAyLjI1NjQ3MiAtNi45NjIyNDgKdiAtMi43MjcyMzYgMi4yNTY5OTYgLTYuOTIwNTEyCnYgLTIuODc2NDk4IDIuMjU3MzU0IC02Ljg1MTU2OQp2IC0zLjAxMTQwMyAyLjI1NzM2NCAtNi43NTczNTYKdiAtMy4xMjc3NDkgMi4yNTY5MjMgLTYuNjQwNjUyCnYgLTMuMjIxOTM3IDIuMjU2MDA2IC02LjUwNDk4Nwp2IC0zLjI5MTExNCAyLjI1NDY3NiAtNi4zNTQ1MzMKdiAtMy4zMzMyODggMi4yNTMxMTUgLTYuMTk0MDA1CnYgMy4zODI5NDUgMi4yNTE2OTYgLTYuMDA4NzEzCnYgMy4zNDc0NjUgMi4yMDI5NjAgNi4wMjU3NDYKdiAzLjM2OTc1MSAyLjI1MzExMCAtNi4xNzQyNDMKdiAzLjMyODUyNSAyLjI1NDY3MSAtNi4zMzUwMTcKdiAzLjI2MDIzNyAyLjI1NjAwMiAtNi40ODU4NzYKdiAzLjE2Njg1MCAyLjI1NjkxOCAtNi42MjIwOTUKdiAzLjA1MTE5NCAyLjI1NzM2MCAtNi43Mzk0ODIKdiAyLjkxNjg0NiAyLjI1NzM1MCAtNi44MzQ0ODgKdiAyLjc2Nzk5MyAyLjI1Njk5MiAtNi45MDQzMTEKdiAyLjYwOTI5NyAyLjI1NjQ2OCAtNi45NDY5ODMKdiAyLjU2ODI5OCAyLjIwMDE1MiA2Ljk1OTQ0Ngp2IDIuNzI3MjQzIDIuMjAxMDE4IDYuOTE3NzE2CnYgMi44NzY1MDUgMi4yMDE5MzggNi44NDg3NzcKdiAzLjAxMTQxMSAyLjIwMjcxMyA2Ljc1NDU2OAp2IDMuMTI3NzU3IDIuMjAzMjIwIDYuNjM3ODY1CnYgMy4yMjE5NDUgMi4yMDM0MDQgNi41MDIxOTYKdiAzLjI5MTEyMSAyLjIwMzI5NCA2LjM1MTczNwp2IDMuMzMzMjk1IDIuMjAzMDM0IDYuMTkxMjAyCnYgLTIuNTkxOTM3IDIuMTc4MjEwIDYuOTA0NjgwCnYgLTIuNDMyMDY4IDIuMTc4MTUzIDYuOTE5MzExCnYgLTIuNzQ2MDUwIDIuMTc4MzgwIDYuODYyMzk4CnYgLTIuODkwNTc4IDIuMTc4NjU3IDYuNzkzNjY0CnYgLTMuMDIxMTMwIDIuMTc5MDMyIDYuNzAwNTY0CnYgLTMuMTMzNzM5IDIuMTc5NDk1IDYuNTg1OTE3CnYgLTMuMjI0OTc3IDIuMTgwMDMyIDYuNDUzMjAyCnYgLTMuMjkyMDY2IDIuMTgwNjI1IDYuMzA2NDUxCnYgLTMuMzMyOTYwIDIuMTgxMjU4IDYuMTUwMTI0CnYgLTMuMzQ2NDgwIDIuMTgxOTE0IDUuOTg4MTQ3CnYgLTIuMzkxMjE4IDIuMjM0MjY0IC02LjkzNjUxMgp2IC0yLjU1MTE3MSAyLjIzNDIwNyAtNi45MjI4MjQKdiAtMi43MDU1MzAgMi4yMzQwMzggLTYuODgxNDUxCnYgLTIuODUwNDYxIDIuMjMzNzYxIC02LjgxMzU3MQp2IC0yLjk4MTU2MCAyLjIzMzM4NiAtNi43MjEyNDIKdiAtMy4wOTQ4NDMgMi4yMzI5MjMgLTYuNjA3MjYyCnYgLTMuMTg2ODYyIDIuMjMyMzg3IC02LjQ3NTA4Nwp2IC0zLjI1NDgxNSAyLjIzMTc5MyAtNi4zMjg3MzQKdiAtMy4yOTY2MzAgMi4yMzExNjEgLTYuMTcyNjUwCnYgLTMuMzExMTA1IDIuMjMwNTA1IC02LjAxMDc1Ngp2IDMuMzQ2NDg4IDIuMjMwNTAwIC01Ljk5MTEyOAp2IDMuMzMyOTY4IDIuMjMxMTU2IC02LjE1MzEwNQp2IDMuMjkyMDc0IDIuMjMxNzg5IC02LjMwOTQzMwp2IDMuMjI0OTg2IDIuMjMyMzgyIC02LjQ1NjE4Mwp2IDMuMTMzNzQ3IDIuMjMyOTE5IC02LjU4ODg5OQp2IDMuMDIxMTM4IDIuMjMzMzgyIC02LjcwMzU0NQp2IDIuODkwNTg2IDIuMjMzNzU3IC02Ljc5NjY0NQp2IDIuNzQ2MDU4IDIuMjM0MDM0IC02Ljg2NTM3OQp2IDIuNTkxOTQ1IDIuMjM0MjAzIC02LjkwNzY2MQp2IDIuNDMyMDc2IDIuMjM0MjYxIC02LjkyMjI5Mgp2IDIuMzkxMjI2IDIuMTc4MTQ5IDYuOTMzNTMxCnYgMi41NTExNzkgMi4xNzgyMDcgNi45MTk4NDMKdiAyLjcwNTUzOCAyLjE3ODM3NiA2Ljg3ODQ3MAp2IDIuODUwNDY5IDIuMTc4NjUzIDYuODEwNTkwCnYgMi45ODE1NjggMi4xNzkwMjggNi43MTgyNjEKdiAzLjA5NDg1MSAyLjE3OTQ5MSA2LjYwNDI4MAp2IDMuMTg2ODcwIDIuMTgwMDI3IDYuNDcyMTA2CnYgMy4yNTQ4MjMgMi4xODA2MjAgNi4zMjU3NTMKdiAzLjI5NjYzOCAyLjE4MTI1MyA2LjE2OTY2OQp2IDMuMzExMTEzIDIuMTgxOTA5IDYuMDA3Nzc1CnYgLTEuNzEwMDAzIDIuMjMzNjU4IC02Ljc4NDg0Mgp2IDEuNjMxNTQxIDIuMjMzNjU1IC02Ljc3NDk5MAp2IC0yLjU2NTExMCAyLjE5NzMwOCA2Ljc1NzE5MAp2IC0yLjQyNTAxNCAyLjE5NzI1OCA2Ljc3MDAxMgp2IC0yLjY5MzcwOCAyLjE5NzQ1MCA2LjcyMTkwOAp2IC0yLjgxNDQwNiAyLjE5NzY4MSA2LjY2NDUwOAp2IC0yLjkyMzU1MyAyLjE5Nzk5NSA2LjU4NjY3Mgp2IC0zLjAxNzgxMiAyLjE5ODM4MiA2LjQ5MDcwNwp2IC0zLjA5NDI3NSAyLjE5ODgzMiA2LjM3OTQ4NAp2IC0zLjE1MDU1OSAyLjE5OTMzMCA2LjI1NjM2OAp2IC0zLjE4NDg5MyAyLjE5OTg2MSA2LjEyNTExNQp2IC0zLjE5NjgwMCAyLjIwMDQzOCA1Ljk4MjQ3NAp2IC0yLjM4NTA0NyAyLjI1MjE1NyAtNi43ODY0ODkKdiAtMi41MjUyMTYgMi4yNTIxMDcgLTYuNzc0NDk0CnYgLTIuNjU0MDE5IDIuMjUxOTY2IC02LjczOTk3MQp2IC0yLjc3NTA1NCAyLjI1MTczNSAtNi42ODMyODMKdiAtMi44ODQ2NTggMi4yNTE0MjEgLTYuNjA2MDkzCnYgLTIuOTc5NDgxIDIuMjUxMDM0IC02LjUxMDY4NQp2IC0zLjA1NjU5OSAyLjI1MDU4NCAtNi4zOTk5MTUKdiAtMy4xMTM2MDggMi4yNTAwODYgLTYuMjc3MTMzCnYgLTMuMTQ4NzE1IDIuMjQ5NTU1IC02LjE0NjA4NQp2IC0zLjE2MTQ2MyAyLjI0ODk3OCAtNi4wMDM1MTYKdiAzLjE5NjgwNiAyLjI0ODk3MyAtNS45ODQ3NzEKdiAzLjE4NDg5OSAyLjI0OTU1MSAtNi4xMjc0MTIKdiAzLjE1MDU2NSAyLjI1MDA4MiAtNi4yNTg2NjUKdiAzLjA5NDI4MSAyLjI1MDU4MCAtNi4zODE3ODEKdiAzLjAxNzgxOCAyLjI1MTAyOSAtNi40OTMwMDQKdiAyLjkyMzU1OCAyLjI1MTQxNyAtNi41ODg5NjkKdiAyLjgxNDQxMiAyLjI1MTczMSAtNi42NjY4MDQKdiAyLjY5MzcxNCAyLjI1MTk2MiAtNi43MjQyMDUKdiAyLjU2NTExNiAyLjI1MjEwMyAtNi43NTk0ODcKdiAyLjQyNTAyMCAyLjI1MjE1NCAtNi43NzIzMDgKdiAyLjM4NTA1MyAyLjE5NzI1NCA2Ljc4NDE5Mwp2IDIuNTI1MjIyIDIuMTk3MzA1IDYuNzcyMTk3CnYgMi42NTQwMjUgMi4xOTc0NDYgNi43Mzc2NzQKdiAyLjc3NTA2MCAyLjE5NzY3NyA2LjY4MDk4Ngp2IDIuODg0NjY0IDIuMTk3OTkxIDYuNjAzNzk2CnYgMi45Nzk0ODcgMi4xOTgzNzggNi41MDgzODkKdiAzLjA1NjYwNSAyLjE5ODgyOCA2LjM5NzYxOAp2IDMuMTEzNjE0IDIuMTk5MzI1IDYuMjc0ODM2CnYgMy4xNDg3MjEgMi4xOTk4NTcgNi4xNDM3ODgKdiAzLjE2MTQ2OSAyLjIwMDQzNCA2LjAwMTIyMAp2IC0xLjcxMDAwNCAyLjI1MjE1NyAtNi43ODQ0OTkKdiAxLjYzMTU0MCAyLjI1MjE1NCAtNi43NzQ2NDgKdiAxLjYwMDY0MCAyLjI1MjEyNCAtNi43NjcyODAKdiAxLjU2OTc0NiAyLjI1MjAyNCAtNi43NDI1NjUKdiAxLjU0MTMyMyAyLjI1MTg1MyAtNi43MDA1NDkKdiAxLjUzNjM3OSAyLjI1MTYxMyAtNi42NDEyMzIKdiAxLjUzNTE0NCAyLjI1MTMzMyAtNi41NzIwMjcKdiAxLjUyNjQ5MyAyLjI1MTE2OCAtNi41MzEyNDgKdiAxLjUwNDI1MCAyLjI1MDk1MiAtNi40NzgxMDgKdiAxLjQ2OTY0NyAyLjI1MDcyNiAtNi40MjI0OTkKdiAxLjQyMjY4OCAyLjI1MDU2MSAtNi4zODE3MTgKdiAxLjM0NzMwNiAyLjI1MDM4MCAtNi4zMzcyMzIKdiAxLjMwNjUyNiAyLjI1MDM0NCAtNi4zMjg1ODAKdiAtMS4zMTk0OTMgMi4yNTAyOTUgLTYuMzIzNjMxCnYgLTEuNDA4NDY4IDIuMjUwNDU5IC02LjM2NDQxMwp2IC0xLjQ2Nzc4NiAyLjI1MDY1NCAtNi40MTI2MDgKdiAtMS41MTU5ODAgMi4yNTA5MTMgLTYuNDc2ODY3CnYgLTEuNTM5NDYwIDIuMjUxMTQ4IC02LjUzNDk0Nwp2IC0xLjU0NTYzOSAyLjI1MTM4MyAtNi41OTMwMjkKdiAtMS41NDY4MTQgMi4yNTE2NTMgLTYuNjU5NzYxCnYgLTEuNTUwMDMwIDIuMjUxODIzIC02LjY5OTE5NAp2IC0xLjU3NTAzMiAyLjI1MTkyOCAtNi43MzE1NTIKdiAtMS42MDM3MjEgMi4yNTIwMzMgLTYuNzUzNjgxCnYgLTEuNjU1NjIzIDIuMjUyMTMzIC02Ljc3ODM5NQp2IC0xLjcxMDAwNCAyLjIzMzI1MSAtNi43ODQ5NzYKdiAxLjYzMTU0MSAyLjIzMzI0OSAtNi43NzUxMjUKdiAxLjYwMDY0MCAyLjIzNDYyMCAtNi43Njc0MzIKdiAxLjU2OTc0NiAyLjIzNDUxOSAtNi43NDI3MTcKdiAxLjU0MTMyMyAyLjIzNDM0OSAtNi43MDA3MDEKdiAxLjUzNjM4MCAyLjIzNDEwOCAtNi42NDEzODUKdiAxLjUzNTE0NCAyLjIzMzgyOCAtNi41NzIxNzkKdiAxLjUyNjQ5NCAyLjIzMzY2MyAtNi41MzE0MDAKdiAxLjUwNDI1MCAyLjIzMzQ0OCAtNi40NzgyNjEKdiAxLjQ2OTY0OCAyLjIzMzIyMiAtNi40MjI2NTEKdiAxLjQyMjY4OSAyLjIzMzA1NiAtNi4zODE4NzAKdiAxLjM0NzMwNyAyLjIzMjg3NSAtNi4zMzczODQKdiAxLjMwNjUyNiAyLjIzMjg0MCAtNi4zMjg3MzIKdiAtMS4zMTk0OTIgMi4yMzI3OTAgLTYuMzIzNzgzCnYgLTEuNDA4NDY4IDIuMjMyOTU1IC02LjM2NDU2NQp2IC0xLjQ2Nzc4NSAyLjIzMzE0OSAtNi40MTI3NjAKdiAtMS41MTU5ODAgMi4yMzM0MDkgLTYuNDc3MDE5CnYgLTEuNTM5NDYwIDIuMjMzNjQ0IC02LjUzNTEwMAp2IC0xLjU0NTYzOCAyLjIzMzg3OSAtNi41OTMxODEKdiAtMS41NDY4MTQgMi4yMzQxNDkgLTYuNjU5OTE0CnYgLTEuNTUwMDMwIDIuMjM0MzE5IC02LjY5OTM0Ngp2IC0xLjU3NTAzMiAyLjIzNDQyNCAtNi43MzE3MDQKdiAtMS42MDM3MjAgMi4yMzQ1MjkgLTYuNzUzODMzCnYgLTEuNjU1NjIyIDIuMjM0NjI4IC02Ljc3ODU0Nwp2IC0yLjQzOTM1NiAyLjE4ODg1NyA2Ljk0ODU4Mgp2IC0yLjYwMjMzNCAyLjE4OTE0NSA2LjkzMzkxMQp2IC0yLjc2MDM3NCAyLjE4OTY2NCA2Ljg5MDk4Nwp2IC0yLjkwODU5MiAyLjE5MDI2NiA2LjgyMDk4NQp2IC0zLjA0MjQxNiAyLjE5MDg0NSA2LjcyNTk1NAp2IC0zLjE1NzcyNCAyLjE5MTMzNSA2LjYwODczOQp2IC0zLjI1MDk4NCAyLjE5MTcwMSA2LjQ3Mjg5Mwp2IC0zLjMxOTM2NiAyLjE5MTk0OSA2LjMyMjU3MAp2IC0zLjM2MDg0NyAyLjE5MjE0MiA2LjE2MjQwNwp2IC0zLjM3NDMwNyAyLjE5MjQzOCA1Ljk5NzQxMQp2IC0zLjMzODg3NyAyLjI0MTEwNCAtNi4wMjAwOTgKdiAyLjQzOTM2NCAyLjI0NTIwMSAtNi45NTE0NzUKdiAzLjMzODg4NSAyLjE5MjQzMyA2LjAxNzIwMwp2IDIuMzk4MzQxIDIuMTg4ODUzIDYuOTYyODQ0CnYgLTIuMzk4MzMzIDIuMjQ1MjA1IC02Ljk2NTczNwp2IC0yLjU2MTM5NSAyLjI0NTM3OCAtNi45NTIwMjYKdiAtMi43MTk2ODYgMi4yNDU1NTQgLTYuOTEwMDMyCnYgLTIuODY4MzE1IDIuMjQ1NTkyIC02Ljg0MDkwMwp2IC0zLjAwMjY5NiAyLjI0NTQwNSAtNi43NDY2NjEKdiAtMy4xMTg2OTQgMi4yNDQ5NDggLTYuNjMwMTI3CnYgLTMuMjEyNzUzIDIuMjQ0MjE2IC02LjQ5NDgzNQp2IC0zLjI4MjAxOSAyLjI0MzI0OCAtNi4zNDQ5MjEKdiAtMy4zMjQ0NDQgMi4yNDIxNDUgLTYuMTg1MDA5CnYgMy4zNzQzMTUgMi4yNDExMDAgLTYuMDAwMzA3CnYgMy4zNjA4NTUgMi4yNDIxNDAgLTYuMTY1MzAwCnYgMy4zMTkzNzQgMi4yNDMyNDMgLTYuMzI1NDU5CnYgMy4yNTA5OTMgMi4yNDQyMTEgLTYuNDc1Nzc5CnYgMy4xNTc3MzIgMi4yNDQ5NDMgLTYuNjExNjIzCnYgMy4wNDI0MjQgMi4yNDU0MDAgLTYuNzI4ODM5CnYgMi45MDg2MDEgMi4yNDU1ODggLTYuODIzODcxCnYgMi43NjAzODIgMi4yNDU1NTAgLTYuODkzODc2CnYgMi42MDIzNDIgMi4yNDUzNzQgLTYuOTM2ODAyCnYgMi41NjE0MDMgMi4xODkxNDEgNi45NDkxMzQKdiAyLjcxOTY5NCAyLjE4OTY2MCA2LjkwNzE0Mwp2IDIuODY4MzIzIDIuMTkwMjYxIDYuODM4MDE3CnYgMy4wMDI3MDQgMi4xOTA4NDEgNi43NDM3NzYKdiAzLjExODcwMiAyLjE5MTMzMCA2LjYyNzI0NAp2IDMuMjEyNzYxIDIuMTkxNjk2IDYuNDkxOTUwCnYgMy4yODIwMjcgMi4xOTE5NDQgNi4zNDIwMzIKdiAzLjMyNDQ1MiAyLjE5MjEzNyA2LjE4MjExNwp2IC0zLjQ3NDA3NyAyLjQ2Nzc2MCAtMy40MzQ3NzkKdiAtMy40NzQ1MzAgMi40NzAwMjkgLTMuNDU3ODI1CnYgLTMuNDc1MTUxIDIuNzA0MDE2IC0zLjQzNDc3OAp2IC0zLjQ3ODY3OCAyLjcwMTc0NyAtMS45MjcxMTAKdiAtMy40ODA1MjUgMi40NzAwMjkgLTEuOTI3MTEwCnYgLTMuNDgwMzMwIDIuNjk1MDI0IC0xLjkwNDk1MAp2IC0zLjQ4MjIyMCAyLjQ3Njc1MiAtMS45MDQ5NTAKdiAtMy40ODI5ODIgMi42ODQxMDggLTEuODg0NTI3CnYgLTMuNDg0OTEyIDIuNDg3NjY4IC0xLjg4NDUyNwp2IC0zLjQ4NTc2MyAyLjY2OTQxNyAtMS44NjY2MjYKdiAtMy40ODUwMDEgMi42NzU3NTEgLTEuODc0MzQ0CnYgLTMuNDg2NzI0IDIuNTAyMzU5IC0xLjg2NjYyNgp2IC0zLjQ4NDk3MiAyLjQ4NzkxNiAtMS44ODQyMjQKdiAtMy40ODc4OTYgMi42NTE1MTcgLTEuODUxOTM1CnYgLTMuNDg4ODcyIDIuNTIwMjU5IC0xLjg1MTkzNQp2IC0zLjQ5MjQzMCAyLjU2Mjg0MiAtMS44MzQyOTcKdiAtMy40OTAzMTUgMi42MzEwOTQgLTEuODQxMDE5CnYgLTMuNDkyNDE5IDIuNTUwMTQxIC0xLjgzODE0OQp2IC0zLjQ5MTMwMSAyLjU0MDY4MiAtMS44NDEwMTkKdiAtMy40OTI0MzcgMi41ODU4ODggLTEuODMyMDI3CnYgLTMuNDkyNDMwIDIuNjA4OTM0IC0xLjgzNDI5Nwp2IC0zLjQ5MjQyNyAyLjYxMzE4MyAtMS44MzU1ODUKdiAtMy40NzU2NDggMi43MDE3NDcgLTMuNDU3ODI0CnYgLTMuNDc3MjEyIDIuNjk1MDI0IC0zLjQ3OTk4NQp2IC0zLjQ3NjA1MSAyLjQ3Njc1MiAtMy40Nzk5ODUKdiAtMy40Nzk3ODQgMi42ODQxMDggLTMuNTAwNDA3CnYgLTMuNDc4NTgyIDIuNDg3NjY4IC0zLjUwMDQwNwp2IC0zLjQ4MDIwMSAyLjY4MjM0NSAtMy41MDI1NTcKdiAtMy40ODE2NzcgMi42Njk0MTcgLTMuNTE4MzA4CnYgLTMuNDgxMDcxIDIuNTAyMzU5IC0zLjUxODMwOAp2IC0zLjQ4MDE4MyAyLjQ5NDQ5NSAtMy41MDg3MjgKdiAtMy40ODMxMTggMi41MjAyNjAgLTMuNTMyOTk5CnYgLTMuNDgzNzM3IDIuNjUxNTE3IC0zLjUzMjk5OQp2IC0zLjQ4NjEwMiAyLjYzMTA5NCAtMy41NDM5MTUKdiAtMy40ODU0NzMgMi41NDA2ODIgLTMuNTQzOTE1CnYgLTMuNDg3MzgwIDIuNjIwMTE1IC0zLjU0NzI0NQp2IC0zLjQ4NzM3MCAyLjYwODkzNCAtMy41NTA2MzcKdiAtMy40ODczNzAgMi41NjI4NDMgLTMuNTUwNjM3CnYgLTMuNDg3Mzc2IDIuNTU3MDY5IC0zLjU0ODg4Ngp2IC0zLjQ4NzM2NCAyLjU4NTg4OCAtMy41NTI5MDcKdiAtMy4zMTcxNjQgMi41ODU4ODggLTMuNTUyOTA3CnYgLTMuMzE3MTY0IDIuNjA4OTM0IC0zLjU1MDYzNwp2IC0zLjMxNzE2NCAyLjYzMTA5NCAtMy41NDM5MTUKdiAtMy4zMTcxNjQgMi42NTE1MTcgLTMuNTMyOTk5CnYgLTMuMzE3MTY0IDIuNjY5NDE3IC0zLjUxODMwOAp2IC0zLjMxNzE2NCAyLjY4NDEwOCAtMy41MDA0MDcKdiAtMy4zMTcxNjQgMi42OTUwMjQgLTMuNDc5OTg1CnYgLTMuMzE3MTYzIDIuNzAxNzQ3IC0zLjQ1NzgyNAp2IC0zLjMxNzE2MyAyLjcwNDAxNiAtMy40MzQ3NzkKdiAtMy4zMTcxNjQgMi43MDE3NDcgLTEuOTI3MTEwCnYgLTMuMzE3MTYzIDIuNjk1MDI0IC0xLjkwNDk1MAp2IC0zLjMxNzE2NCAyLjY4NDEwOCAtMS44ODQ1MjcKdiAtMy4zMTcxNjQgMi42Njk0MTcgLTEuODY2NjI2CnYgLTMuMzE3MTYzIDIuNjUxNTE3IC0xLjg1MTkzNQp2IC0zLjMxNzE2MyAyLjYzMTA5NCAtMS44NDEwMTkKdiAtMy4zMTcxNjMgMi42MDg5MzQgLTEuODM0Mjk3CnYgLTMuMzE3MTY0IDIuNTg1ODg4IC0xLjgzMjAyNwp2IC0zLjMxNzE2NCAyLjU2Mjg0MiAtMS44MzQyOTcKdiAtMy4zMTcxNjQgMi41NDA2ODIgLTEuODQxMDE5CnYgLTMuMzE3MTY0IDIuNTIwMjU5IC0xLjg1MTkzNQp2IC0zLjMxNzE2NCAyLjUwMjM1OCAtMS44NjY2MjYKdiAtMy4zMTcxNjQgMi40ODc2NjggLTEuODg0NTI3CnYgLTMuMzE3MTY0IDIuNDc2NzUyIC0xLjkwNDk1MAp2IC0zLjMxNzE2NCAyLjQ3MDAyOSAtMS45MjcxMTAKdiAtMy4zMTcxNjQgMi40Njc3NjAgLTMuNDM0Nzc5CnYgLTMuMzE3MTY0IDIuNDcwMDI5IC0zLjQ1NzgyNQp2IC0zLjMxNzE2NCAyLjQ3Njc1MiAtMy40Nzk5ODUKdiAtMy4zMTcxNjMgMi40ODc2NjggLTMuNTAwNDA3CnYgLTMuMzE3MTY0IDIuNTAyMzU5IC0zLjUxODMwOAp2IC0zLjMxNzE2NCAyLjUyMDI2MCAtMy41MzI5OTkKdiAtMy4zMTcxNjQgMi41NDA2ODIgLTMuNTQzOTE1CnYgLTMuMzE3MTY0IDIuNTYyODQyIC0zLjU1MDYzNwp2IC0zLjUzMjU5OSAyLjU4NTg4OCAtMy41NDc1NTQKdiAtMy41ODE2NjMgMi41ODU4ODkgLTMuNDk4MjUyCnYgLTMuNTQwMjc0IDIuNTg1ODg4IC0zLjU0Njk0Nwp2IC0zLjU0Nzc2MSAyLjU4NTg4OCAtMy41NDUxNDEKdiAtMy41NTQ4NzQgMi41ODU4ODggLTMuNTQyMTgwCnYgLTMuNTYxNDM4IDIuNTg1ODg4IC0zLjUzODEzOAp2IC0zLjU2NzI5MyAyLjU4NTg4OCAtMy41MzMxMTMKdiAtMy41NzIyOTMgMi41ODU4ODkgLTMuNTI3MjMxCnYgLTMuNTc2MzE1IDIuNTg1ODg5IC0zLjUyMDYzNAp2IC0zLjU3OTI2MSAyLjU4NTg4OSAtMy41MTM0ODcKdiAtMy41ODEwNTggMi41ODU4ODkgLTMuNTA1OTY0CnYgLTMuNTgxNjY1IDIuNTk4MjcxIC0zLjQ5NzAzMgp2IC0zLjUzMjU5OSAyLjYwNzg4OSAtMy41NDUzODcKdiAtMy41ODEwNjEgMi41OTk3NzUgLTMuNTA0NTk3CnYgLTMuNTc5MjYzIDIuNjAxMjQzIC0zLjUxMTk3NQp2IC0zLjU3NjMxNyAyLjYwMjYzOCAtMy41MTg5ODUKdiAtMy41NzIyOTQgMi42MDM5MjUgLTMuNTI1NDU0CnYgLTMuNTY3Mjk0IDIuNjA1MDcyIC0zLjUzMTIyNAp2IC0zLjU2MTQzOSAyLjYwNjA1MiAtMy41MzYxNTIKdiAtMy41NTQ4NzQgMi42MDY4NDEgLTMuNTQwMTE2CnYgLTMuNTQ3NzYxIDIuNjA3NDE5IC0zLjU0MzAyMAp2IC0zLjU0MDI3NSAyLjYwNzc3MSAtMy41NDQ3OTEKdiAtMy41ODE2NjIgMi42MTAxNzggLTMuNDkzNDIwCnYgLTMuNTMyNTk5IDIuNjI5MDQ1IC0zLjUzODk2OQp2IC0zLjU4MTA1OCAyLjYxMzEyOSAtMy41MDA1NDYKdiAtMy41NzkyNjEgMi42MTYwMDggLTMuNTA3NDk1CnYgLTMuNTc2MzE1IDIuNjE4NzQ0IC0zLjUxNDA5OQp2IC0zLjU3MjI5MyAyLjYyMTI2OCAtMy41MjAxOTMKdiAtMy41NjcyOTMgMi42MjM1MTkgLTMuNTI1NjI4CnYgLTMuNTYxNDM5IDIuNjI1NDQyIC0zLjUzMDI3MAp2IC0zLjU1NDg3NCAyLjYyNjk4OSAtMy41MzQwMDQKdiAtMy41NDc3NjEgMi42MjgxMjIgLTMuNTM2NzQwCnYgLTMuNTQwMjc1IDIuNjI4ODEzIC0zLjUzODQwOAp2IC0zLjU4MTY2MiAyLjYyMTE1MiAtMy40ODc1NTQKdiAtMy41MzI1OTkgMi42NDg1NDMgLTMuNTI4NTQ3CnYgLTMuNTgxMDU5IDIuNjI1NDM3IC0zLjQ5Mzk2Nwp2IC0zLjU3OTI2MSAyLjYyOTYxNiAtMy41MDAyMjIKdiAtMy41NzYzMTUgMi42MzM1ODcgLTMuNTA2MTY1CnYgLTMuNTcyMjkyIDIuNjM3MjUyIC0zLjUxMTY0OQp2IC0zLjU2NzI5MiAyLjY0MDUyMCAtMy41MTY1NDEKdiAtMy41NjE0MzggMi42NDMzMTIgLTMuNTIwNzE5CnYgLTMuNTU0ODc0IDIuNjQ1NTU3IC0zLjUyNDA4MAp2IC0zLjU0Nzc2MSAyLjY0NzIwMiAtMy41MjY1NDEKdiAtMy41NDAyNzUgMi42NDgyMDUgLTMuNTI4MDQzCnYgLTMuNTgxNjY2IDIuNjMwNzcxIC0zLjQ3OTY2MQp2IC0zLjUzMjU5OSAyLjY2NTYzMiAtMy41MTQ1MjMKdiAtMy41ODEwNjEgMi42MzYyMjQgLTMuNDg1MTE1CnYgLTMuNTc5MjY0IDIuNjQxNTQ0IC0zLjQ5MDQzNAp2IC0zLjU3NjMxOCAyLjY0NjU5OCAtMy40OTU0ODgKdiAtMy41NzIyOTQgMi42NTEyNjIgLTMuNTAwMTUyCnYgLTMuNTY3Mjk0IDIuNjU1NDIxIC0zLjUwNDMxMgp2IC0zLjU2MTQzOSAyLjY1ODk3NCAtMy41MDc4NjQKdiAtMy41NTQ4NzQgMi42NjE4MzIgLTMuNTEwNzIzCnYgLTMuNTQ3NzYxIDIuNjYzOTI2IC0zLjUxMjgxNgp2IC0zLjU0MDI3NSAyLjY2NTIwMyAtMy41MTQwOTMKdiAtMy41ODE2NjMgMi42Mzg2NjQgLTMuNDcwMDQyCnYgLTMuNTMyNTk5IDIuNjc5NjU3IC0zLjQ5NzQzMwp2IC0zLjU4MTA1OSAyLjY0NTA3NyAtMy40NzQzMjcKdiAtMy41NzkyNjIgMi42NTEzMzIgLTMuNDc4NTA3CnYgLTMuNTc2MzE2IDIuNjU3Mjc1IC0zLjQ4MjQ3OAp2IC0zLjU3MjI5MyAyLjY2Mjc1OSAtMy40ODYxNDMKdiAtMy41NjcyOTMgMi42Njc2NTEgLTMuNDg5NDExCnYgLTMuNTYxNDM5IDIuNjcxODI4IC0zLjQ5MjIwMgp2IC0zLjU1NDg3NCAyLjY3NTE4OSAtMy40OTQ0NDcKdiAtMy41NDc3NjEgMi42Nzc2NTEgLTMuNDk2MDkzCnYgLTMuNTQwMjc1IDIuNjc5MTUyIC0zLjQ5NzA5Ngp2IC0zLjU4MTY2MiAyLjY0NDUzMCAtMy40NTkwNjkKdiAtMy41MzI1OTkgMi42OTAwNzggLTMuNDc3OTM2CnYgLTMuNTgxMDU5IDIuNjUxNjU1IC0zLjQ2MjAyMAp2IC0zLjU3OTI2MSAyLjY1ODYwNSAtMy40NjQ4OTkKdiAtMy41NzYzMTUgMi42NjUyMDggLTMuNDY3NjM0CnYgLTMuNTcyMjkzIDIuNjcxMzAzIC0zLjQ3MDE1OAp2IC0zLjU2NzI5MyAyLjY3NjczOCAtMy40NzI0MTAKdiAtMy41NjE0MzggMi42ODEzODAgLTMuNDc0MzMyCnYgLTMuNTU0ODc0IDIuNjg1MTE0IC0zLjQ3NTg3OQp2IC0zLjU0Nzc2MSAyLjY4Nzg0OSAtMy40NzcwMTIKdiAtMy41NDAyNzUgMi42ODk1MTggLTMuNDc3NzAzCnYgLTMuNTgxNjY1IDIuNjQ4MTQyIC0zLjQ0NzE2Mgp2IC0zLjUzMjU5OSAyLjY5NjQ5NiAtMy40NTY3ODAKdiAtMy41ODEwNjAgMi42NTU3MDYgLTMuNDQ4NjY2CnYgLTMuNTc5MjYzIDIuNjYzMDg0IC0zLjQ1MDEzNAp2IC0zLjU3NjMxNyAyLjY3MDA5NCAtMy40NTE1MjgKdiAtMy41NzIyOTQgMi42NzY1NjQgLTMuNDUyODE1CnYgLTMuNTY3MjkzIDIuNjgyMzMzIC0zLjQ1Mzk2Mwp2IC0zLjU2MTQzOSAyLjY4NzI2MSAtMy40NTQ5NDMKdiAtMy41NTQ4NzQgMi42OTEyMjYgLTMuNDU1NzMxCnYgLTMuNTQ3NzYxIDIuNjk0MTI5IC0zLjQ1NjMwOQp2IC0zLjU0MDI3NCAyLjY5NTkwMSAtMy40NTY2NjEKdiAtMy41ODE2NjQgMi42NDk2MjEgLTMuNDMyMTQ3CnYgLTMuNTMyNTk5IDIuNjk4Njg5IC0zLjQzNDUyMQp2IC0zLjU4MTA1OSAyLjY1NzI5NyAtMy40MzI1MTgKdiAtMy41NzkyNjIgMi42NjQ3ODMgLTMuNDMyODgxCnYgLTMuNTc2MzE2IDIuNjcxODk3IC0zLjQzMzIyNQp2IC0zLjU3MjI5MyAyLjY3ODQ2MiAtMy40MzM1NDIKdiAtMy41NjcyOTMgMi42ODQzMTcgLTMuNDMzODI1CnYgLTMuNTYxNDM5IDIuNjg5MzE3IC0zLjQzNDA2Nwp2IC0zLjU1NDg3NCAyLjY5MzM0MCAtMy40MzQyNjIKdiAtMy41NDc3NjEgMi42OTYyODcgLTMuNDM0NDA0CnYgLTMuNTQwMjc1IDIuNjk4MDg0IC0zLjQzNDQ5MQp2IC0zLjU4MTY2MyAyLjY0NzM2NyAtMS45MzUyMTgKdiAtMy41MzI1OTkgMi42OTY0MjAgLTEuOTI3OTA0CnYgLTMuNTgxMDU5IDIuNjU1MDQxIC0xLjkzNDA3NAp2IC0zLjU3OTI2MiAyLjY2MjUyNSAtMS45MzI5NTgKdiAtMy41NzYzMTYgMi42Njk2MzcgLTEuOTMxODk4CnYgLTMuNTcyMjkzIDIuNjc2MjAwIC0xLjkzMDkxOQp2IC0zLjU2NzI5MyAyLjY4MjA1MyAtMS45MzAwNDYKdiAtMy41NjE0MzkgMi42ODcwNTIgLTEuOTI5MzAxCnYgLTMuNTU0ODc0IDIuNjkxMDc0IC0xLjkyODcwMQp2IC0zLjU0Nzc2MSAyLjY5NDAxOSAtMS45MjgyNjIKdiAtMy41NDAyNzUgMi42OTU4MTYgLTEuOTI3OTk0CnYgLTMuNTgxNjY1IDIuNjQ0NTMwIC0xLjkyNTg2NQp2IC0zLjUzMjU5OSAyLjY5MDA3OCAtMS45MDY5OTkKdiAtMy41ODEwNjEgMi42NTE2NTUgLTEuOTIyOTE0CnYgLTMuNTc5MjYzIDIuNjU4NjA1IC0xLjkyMDAzNQp2IC0zLjU3NjMxNyAyLjY2NTIwOSAtMS45MTczMDAKdiAtMy41NzIyOTMgMi42NzEzMDMgLTEuOTE0Nzc2CnYgLTMuNTY3MjkzIDIuNjc2NzM4IC0xLjkxMjUyNAp2IC0zLjU2MTQzOSAyLjY4MTM4MCAtMS45MTA2MDIKdiAtMy41NTQ4NzQgMi42ODUxMTQgLTEuOTA5MDU1CnYgLTMuNTQ3NzYxIDIuNjg3ODQ5IC0xLjkwNzkyMgp2IC0zLjU0MDI3NSAyLjY4OTUxOCAtMS45MDcyMzEKdiAtMy41ODE2NjUgMi42Mzg2NjQgLTEuOTE0ODkxCnYgLTMuNTMyNTk5IDIuNjc5NjU3IC0xLjg4NzUwMQp2IC0zLjU4MTA2MCAyLjY0NTA3NyAtMS45MTA2MDcKdiAtMy41NzkyNjIgMi42NTEzMzIgLTEuOTA2NDI3CnYgLTMuNTc2MzE2IDIuNjU3Mjc0IC0xLjkwMjQ1Ngp2IC0zLjU3MjI5NCAyLjY2Mjc1OSAtMS44OTg3OTIKdiAtMy41NjcyOTMgMi42Njc2NTAgLTEuODk1NTIzCnYgLTMuNTYxNDM5IDIuNjcxODI4IC0xLjg5MjczMgp2IC0zLjU1NDg3NCAyLjY3NTE4OSAtMS44OTA0ODYKdiAtMy41NDc3NjEgMi42Nzc2NTEgLTEuODg4ODQyCnYgLTMuNTQwMjc0IDIuNjc5MTUyIC0xLjg4NzgzOAp2IC0zLjU4MTY2MSAyLjYzMDc3MSAtMS45MDUyNzMKdiAtMy41MzI1OTkgMi42NjU2MzIgLTEuODcwNDEyCnYgLTMuNTgxMDU4IDIuNjM2MjI0IC0xLjg5OTgxOQp2IC0zLjU3OTI2MSAyLjY0MTU0MyAtMS44OTQ1MDAKdiAtMy41NzYzMTUgMi42NDY1OTcgLTEuODg5NDQ2CnYgLTMuNTcyMjkyIDIuNjUxMjYyIC0xLjg4NDc4Mgp2IC0zLjU2NzI5MiAyLjY1NTQyMSAtMS44ODA2MjIKdiAtMy41NjE0MzggMi42NTg5NzQgLTEuODc3MDY5CnYgLTMuNTU0ODc0IDIuNjYxODMyIC0xLjg3NDIxMQp2IC0zLjU0Nzc2MSAyLjY2MzkyNiAtMS44NzIxMTgKdiAtMy41NDAyNzUgMi42NjUyMDMgLTEuODcwODQxCnYgLTMuNTgxNjY1IDIuNjIxMTUyIC0xLjg5NzM4MAp2IC0zLjUzMjU5OSAyLjY0ODU0MyAtMS44NTYzODcKdiAtMy41ODEwNjAgMi42MjU0MzcgLTEuODkwOTY3CnYgLTMuNTc5MjYzIDIuNjI5NjE2IC0xLjg4NDcxMgp2IC0zLjU3NjMxNiAyLjYzMzU4NyAtMS44Nzg3NjkKdiAtMy41NzIyOTMgMi42MzcyNTIgLTEuODczMjg0CnYgLTMuNTY3MjkzIDIuNjQwNTIwIC0xLjg2ODM5Mwp2IC0zLjU2MTQzOSAyLjY0MzMxMiAtMS44NjQyMTUKdiAtMy41NTQ4NzQgMi42NDU1NTcgLTEuODYwODU1CnYgLTMuNTQ3NzYxIDIuNjQ3MjAyIC0xLjg1ODM5Mwp2IC0zLjU0MDI3NCAyLjY0ODIwNSAtMS44NTY4OTEKdiAtMy41ODE2NjUgMi42MTAxNzggLTEuODkxNTE0CnYgLTMuNTMyNTk5IDIuNjI5MDQ1IC0xLjg0NTk2NQp2IC0zLjU4MTA2MCAyLjYxMzEzMCAtMS44ODQzODgKdiAtMy41NzkyNjMgMi42MTYwMDggLTEuODc3NDM4CnYgLTMuNTc2MzE3IDIuNjE4NzQ0IC0xLjg3MDgzNQp2IC0zLjU3MjI5NCAyLjYyMTI2OCAtMS44NjQ3NDEKdiAtMy41NjcyOTMgMi42MjM1MTkgLTEuODU5MzA2CnYgLTMuNTYxNDM5IDIuNjI1NDQyIC0xLjg1NDY2NAp2IC0zLjU1NDg3NCAyLjYyNjk4OSAtMS44NTA5MzAKdiAtMy41NDc3NjEgMi42MjgxMjIgLTEuODQ4MTk0CnYgLTMuNTQwMjc0IDIuNjI4ODEzIC0xLjg0NjUyNgp2IC0zLjU4MTY2MiAyLjU5ODI3MSAtMS44ODc5MDIKdiAtMy41MzI1OTkgMi42MDc4ODkgLTEuODM5NTQ4CnYgLTMuNTgxMDU4IDIuNTk5Nzc2IC0xLjg4MDMzOAp2IC0zLjU3OTI2MSAyLjYwMTI0MyAtMS44NzI5NjAKdiAtMy41NzYzMTUgMi42MDI2MzggLTEuODY1OTQ5CnYgLTMuNTcyMjkzIDIuNjAzOTI1IC0xLjg1OTQ4MAp2IC0zLjU2NzI5MyAyLjYwNTA3MiAtMS44NTM3MTAKdiAtMy41NjE0MzggMi42MDYwNTMgLTEuODQ4NzgyCnYgLTMuNTU0ODc0IDIuNjA2ODQxIC0xLjg0NDgxOAp2IC0zLjU0Nzc2MSAyLjYwNzQxOSAtMS44NDE5MTQKdiAtMy41NDAyNzUgMi42MDc3NzEgLTEuODQwMTQzCnYgLTMuNTgxNjY1IDIuNTg1ODg4IC0xLjg4NjY4Mgp2IC0zLjUzMjU5OSAyLjU4NTg4OCAtMS44MzczODEKdiAtMy41ODEwNjAgMi41ODU4ODggLTEuODc4OTcwCnYgLTMuNTc5MjYzIDIuNTg1ODg4IC0xLjg3MTQ0Nwp2IC0zLjU3NjMxNiAyLjU4NTg4OCAtMS44NjQzMDAKdiAtMy41NzIyOTMgMi41ODU4ODggLTEuODU3NzAzCnYgLTMuNTY3MjkzIDIuNTg1ODg4IC0xLjg1MTgyMQp2IC0zLjU2MTQzOSAyLjU4NTg4OCAtMS44NDY3OTYKdiAtMy41NTQ4NzQgMi41ODU4ODggLTEuODQyNzU0CnYgLTMuNTQ3NzYxIDIuNTg1ODg4IC0xLjgzOTc5NAp2IC0zLjU0MDI3NCAyLjU4NTg4OCAtMS44Mzc5ODgKdiAtMy41ODE2NjIgMi41NzM1MDUgLTEuODg3OTAyCnYgLTMuNTMyNTk5IDIuNTYzODg3IC0xLjgzOTU0OAp2IC0zLjU4MTA1OSAyLjU3MjAwMSAtMS44ODAzMzgKdiAtMy41NzkyNjEgMi41NzA1MzMgLTEuODcyOTYwCnYgLTMuNTc2MzE1IDIuNTY5MTM5IC0xLjg2NTk0OQp2IC0zLjU3MjI5MiAyLjU2Nzg1MiAtMS44NTk0ODAKdiAtMy41NjcyOTMgMi41NjY3MDQgLTEuODUzNzEwCnYgLTMuNTYxNDM4IDIuNTY1NzI0IC0xLjg0ODc4Mwp2IC0zLjU1NDg3NCAyLjU2NDkzNSAtMS44NDQ4MTgKdiAtMy41NDc3NjEgMi41NjQzNTggLTEuODQxOTE0CnYgLTMuNTQwMjc1IDIuNTY0MDA1IC0xLjg0MDE0Mwp2IC0zLjU4MTY2NSAyLjU2MTU5OCAtMS44OTE1MTQKdiAtMy41MzI1OTkgMi41NDI3MzEgLTEuODQ1OTY1CnYgLTMuNTgxMDYxIDIuNTU4NjQ2IC0xLjg4NDM4OAp2IC0zLjU3OTI2MyAyLjU1NTc2OCAtMS44Nzc0MzkKdiAtMy41NzYzMTcgMi41NTMwMzMgLTEuODcwODM1CnYgLTMuNTcyMjk0IDIuNTUwNTA4IC0xLjg2NDc0MQp2IC0zLjU2NzI5MyAyLjU0ODI1NyAtMS44NTkzMDYKdiAtMy41NjE0MzkgMi41NDYzMzQgLTEuODU0NjY0CnYgLTMuNTU0ODc0IDIuNTQ0Nzg3IC0xLjg1MDkzMAp2IC0zLjU0Nzc2MSAyLjU0MzY1NCAtMS44NDgxOTUKdiAtMy41NDAyNzUgMi41NDI5NjMgLTEuODQ2NTI2CnYgLTMuNTgxNjY1IDIuNTUwNjI0IC0xLjg5NzM4MAp2IC0zLjUzMjU5OSAyLjUyMzIzNCAtMS44NTYzODcKdiAtMy41ODEwNjAgMi41NDYzMzkgLTEuODkwOTY3CnYgLTMuNTc5MjYzIDIuNTQyMTYwIC0xLjg4NDcxMgp2IC0zLjU3NjMxNyAyLjUzODE4OSAtMS44Nzg3NjkKdiAtMy41NzIyOTMgMi41MzQ1MjQgLTEuODczMjg0CnYgLTMuNTY3MjkzIDIuNTMxMjU2IC0xLjg2ODM5Mwp2IC0zLjU2MTQzOCAyLjUyODQ2NSAtMS44NjQyMTYKdiAtMy41NTQ4NzQgMi41MjYyMTkgLTEuODYwODU1CnYgLTMuNTQ3NzYxIDIuNTI0NTc0IC0xLjg1ODM5Mwp2IC0zLjU0MDI3NCAyLjUyMzU3MSAtMS44NTY4OTEKdiAtMy41ODE2NjEgMi41NDEwMDYgLTEuOTA1MjczCnYgLTMuNTMyNTk5IDIuNTA2MTQ0IC0xLjg3MDQxMgp2IC0zLjU4MTA1OCAyLjUzNTU1MyAtMS44OTk4MTkKdiAtMy41NzkyNjEgMi41MzAyMzMgLTEuODk0NTAwCnYgLTMuNTc2MzE1IDIuNTI1MTc5IC0xLjg4OTQ0Ngp2IC0zLjU3MjI5MiAyLjUyMDUxNSAtMS44ODQ3ODIKdiAtMy41NjcyOTIgMi41MTYzNTUgLTEuODgwNjIyCnYgLTMuNTYxNDM4IDIuNTEyODAyIC0xLjg3NzA3MAp2IC0zLjU1NDg3NCAyLjUwOTk0NCAtMS44NzQyMTEKdiAtMy41NDc3NjEgMi41MDc4NTAgLTEuODcyMTE4CnYgLTMuNTQwMjc1IDIuNTA2NTczIC0xLjg3MDg0MQp2IC0zLjU4MTY2NCAyLjUzMzExMiAtMS45MTQ4OTIKdiAtMy41MzI1OTkgMi40OTIxMTkgLTEuODg3NTAxCnYgLTMuNTgxMDYwIDIuNTI2Njk5IC0xLjkxMDYwNwp2IC0zLjU3OTI2MyAyLjUyMDQ0NSAtMS45MDY0MjgKdiAtMy41NzYzMTcgMi41MTQ1MDIgLTEuOTAyNDU3CnYgLTMuNTcyMjk0IDIuNTA5MDE3IC0xLjg5ODc5Mgp2IC0zLjU2NzI5MyAyLjUwNDEyNiAtMS44OTU1MjQKdiAtMy41NjE0MzkgMi40OTk5NDggLTEuODkyNzMyCnYgLTMuNTU0ODc0IDIuNDk2NTg3IC0xLjg5MDQ4Nwp2IC0zLjU0Nzc2MSAyLjQ5NDEyNSAtMS44ODg4NDIKdiAtMy41NDAyNzUgMi40OTI2MjQgLTEuODg3ODM5CnYgLTMuNTgxNjY1IDIuNTI3MjQ2IC0xLjkyNTg2NQp2IC0zLjUzMjU5OSAyLjQ4MTY5OCAtMS45MDY5OTkKdiAtMy41ODEwNjEgMi41MjAxMjEgLTEuOTIyOTE0CnYgLTMuNTc5MjYzIDIuNTEzMTcxIC0xLjkyMDAzNQp2IC0zLjU3NjMxNyAyLjUwNjU2OCAtMS45MTczMDAKdiAtMy41NzIyOTQgMi41MDA0NzMgLTEuOTE0Nzc2CnYgLTMuNTY3MjkzIDIuNDk1MDM5IC0xLjkxMjUyNQp2IC0zLjU2MTQzOSAyLjQ5MDM5NyAtMS45MTA2MDIKdiAtMy41NTQ4NzQgMi40ODY2NjIgLTEuOTA5MDU1CnYgLTMuNTQ3NzYxIDIuNDgzOTI3IC0xLjkwNzkyMgp2IC0zLjU0MDI3NSAyLjQ4MjI1OSAtMS45MDcyMzEKdiAtMy41ODE2NjMgMi41MjQ0MDkgLTEuOTM1MjE4CnYgLTMuNTMyNTk5IDIuNDc1MzU2IC0xLjkyNzkwNAp2IC0zLjU4MTA1OSAyLjUxNjczNiAtMS45MzQwNzQKdiAtMy41NzkyNjIgMi41MDkyNTEgLTEuOTMyOTU4CnYgLTMuNTc2MzE1IDIuNTAyMTQwIC0xLjkzMTg5OAp2IC0zLjU3MjI5MyAyLjQ5NTU3NyAtMS45MzA5MTkKdiAtMy41NjcyOTMgMi40ODk3MjMgLTEuOTMwMDQ2CnYgLTMuNTYxNDM4IDIuNDg0NzI1IC0xLjkyOTMwMQp2IC0zLjU1NDg3NCAyLjQ4MDcwMyAtMS45Mjg3MDEKdiAtMy41NDc3NjEgMi40Nzc3NTcgLTEuOTI4MjYyCnYgLTMuNTQwMjc1IDIuNDc1OTYwIC0xLjkyNzk5NAp2IC0zLjU4MTY2NCAyLjUyMjE1NiAtMy40MzIxNDcKdiAtMy41MzI2MDAgMi40NzMwODggLTMuNDM0NTIxCnYgLTMuNTgxMDYwIDIuNTE0NDgwIC0zLjQzMjUxOQp2IC0zLjU3OTI2MiAyLjUwNjk5MyAtMy40MzI4ODEKdiAtMy41NzYzMTYgMi40OTk4NzkgLTMuNDMzMjI1CnYgLTMuNTcyMjk0IDIuNDkzMzE1IC0zLjQzMzU0Mgp2IC0zLjU2NzI5MyAyLjQ4NzQ2MCAtMy40MzM4MjYKdiAtMy41NjE0MzkgMi40ODI0NTkgLTMuNDM0MDY3CnYgLTMuNTU0ODc0IDIuNDc4NDM2IC0zLjQzNDI2Mgp2IC0zLjU0Nzc2MSAyLjQ3NTQ4OSAtMy40MzQ0MDUKdiAtMy41NDAyNzUgMi40NzM2OTIgLTMuNDM0NDkyCnYgLTMuNTgxNjY2IDIuNTIzNjM0IC0zLjQ0NzE2Mgp2IC0zLjUzMjU5OSAyLjQ3NTI4MCAtMy40NTY3ODAKdiAtMy41ODEwNjEgMi41MTYwNzAgLTMuNDQ4NjY3CnYgLTMuNTc5MjYzIDIuNTA4NjkyIC0zLjQ1MDEzNAp2IC0zLjU3NjMxNyAyLjUwMTY4MiAtMy40NTE1MjkKdiAtMy41NzIyOTQgMi40OTUyMTMgLTMuNDUyODE1CnYgLTMuNTY3Mjk0IDIuNDg5NDQzIC0zLjQ1Mzk2Mwp2IC0zLjU2MTQzOSAyLjQ4NDUxNSAtMy40NTQ5NDMKdiAtMy41NTQ4NzQgMi40ODA1NTEgLTMuNDU1NzMyCnYgLTMuNTQ3NzYxIDIuNDc3NjQ3IC0zLjQ1NjMwOQp2IC0zLjU0MDI3NSAyLjQ3NTg3NiAtMy40NTY2NjIKdiAtMy41ODE2NjAgMi41MjcyNDYgLTMuNDU5MDY5CnYgLTMuNTMyNTk5IDIuNDgxNjk4IC0zLjQ3NzkzNgp2IC0zLjU4MTA1NiAyLjUyMDEyMSAtMy40NjIwMjAKdiAtMy41NzkyNjAgMi41MTMxNzEgLTMuNDY0ODk5CnYgLTMuNTc2MzE0IDIuNTA2NTY4IC0zLjQ2NzYzNQp2IC0zLjU3MjI5MiAyLjUwMDQ3MyAtMy40NzAxNTkKdiAtMy41NjcyOTIgMi40OTUwMzkgLTMuNDcyNDEwCnYgLTMuNTYxNDM4IDIuNDkwMzk3IC0zLjQ3NDMzMwp2IC0zLjU1NDg3NCAyLjQ4NjY2MiAtMy40NzU4NzkKdiAtMy41NDc3NjEgMi40ODM5MjcgLTMuNDc3MDEyCnYgLTMuNTQwMjc1IDIuNDgyMjU5IC0zLjQ3NzcwMwp2IC0zLjU4MTY2OCAyLjUzMzExMiAtMy40NzAwNDIKdiAtMy41MzI1OTkgMi40OTIxMTkgLTMuNDk3NDMzCnYgLTMuNTgxMDY0IDIuNTI2NzAwIC0zLjQ3NDMyNwp2IC0zLjU3OTI2NiAyLjUyMDQ0NSAtMy40Nzg1MDcKdiAtMy41NzYzMTkgMi41MTQ1MDIgLTMuNDgyNDc4CnYgLTMuNTcyMjk1IDIuNTA5MDE3IC0zLjQ4NjE0Mgp2IC0zLjU2NzI5NSAyLjUwNDEyNiAtMy40ODk0MTEKdiAtMy41NjE0NDAgMi40OTk5NDggLTMuNDkyMjAyCnYgLTMuNTU0ODc1IDIuNDk2NTg3IC0zLjQ5NDQ0OAp2IC0zLjU0Nzc2MiAyLjQ5NDEyNiAtMy40OTYwOTMKdiAtMy41NDAyNzUgMi40OTI2MjQgLTMuNDk3MDk2CnYgLTMuNTgxNjYxIDIuNTQxMDA2IC0zLjQ3OTY2MQp2IC0zLjUzMjU5OSAyLjUwNjE0NCAtMy41MTQ1MjMKdiAtMy41ODEwNTcgMi41MzU1NTIgLTMuNDg1MTE1CnYgLTMuNTc5MjYwIDIuNTMwMjMzIC0zLjQ5MDQzMwp2IC0zLjU3NjMxNSAyLjUyNTE3OSAtMy40OTU0ODcKdiAtMy41NzIyOTIgMi41MjA1MTUgLTMuNTAwMTUyCnYgLTMuNTY3MjkzIDIuNTE2MzU1IC0zLjUwNDMxMgp2IC0zLjU2MTQzOCAyLjUxMjgwMiAtMy41MDc4NjQKdiAtMy41NTQ4NzQgMi41MDk5NDQgLTMuNTEwNzIyCnYgLTMuNTQ3NzYxIDIuNTA3ODUxIC0zLjUxMjgxNgp2IC0zLjU0MDI3NSAyLjUwNjU3NCAtMy41MTQwOTMKdiAtMy41ODE2NjUgMi41NTA2MjUgLTMuNDg3NTU1CnYgLTMuNTMyNTk5IDIuNTIzMjM0IC0zLjUyODU0OAp2IC0zLjU4MTA2MSAyLjU0NjM0MCAtMy40OTM5NjcKdiAtMy41NzkyNjMgMi41NDIxNjEgLTMuNTAwMjIyCnYgLTMuNTc2MzE3IDIuNTM4MTkwIC0zLjUwNjE2NQp2IC0zLjU3MjI5NCAyLjUzNDUyNSAtMy41MTE2NDkKdiAtMy41NjcyOTMgMi41MzEyNTcgLTMuNTE2NTQxCnYgLTMuNTYxNDM5IDIuNTI4NDY1IC0zLjUyMDcxOQp2IC0zLjU1NDg3NCAyLjUyNjIxOSAtMy41MjQwODAKdiAtMy41NDc3NjEgMi41MjQ1NzUgLTMuNTI2NTQxCnYgLTMuNTQwMjc1IDIuNTIzNTcxIC0zLjUyODA0Mwp2IC0zLjU4MTY2NSAyLjU2MTU5OCAtMy40OTM0MjAKdiAtMy41MzI1OTkgMi41NDI3MzEgLTMuNTM4OTY5CnYgLTMuNTgxMDYxIDIuNTU4NjQ2IC0zLjUwMDU0Ngp2IC0zLjU3OTI2MyAyLjU1NTc2OCAtMy41MDc0OTUKdiAtMy41NzYzMTcgMi41NTMwMzMgLTMuNTE0MDk5CnYgLTMuNTcyMjk0IDIuNTUwNTA4IC0zLjUyMDE5Mwp2IC0zLjU2NzI5NCAyLjU0ODI1NyAtMy41MjU2MjgKdiAtMy41NjE0MzkgMi41NDYzMzUgLTMuNTMwMjcwCnYgLTMuNTU0ODc0IDIuNTQ0Nzg4IC0zLjUzNDAwNQp2IC0zLjU0Nzc2MSAyLjU0MzY1NSAtMy41MzY3NDAKdiAtMy41NDAyNzUgMi41NDI5NjQgLTMuNTM4NDA4CnYgLTMuNTgxNjYzIDIuNTczNTA1IC0zLjQ5NzAzMgp2IC0zLjUzMjU5OSAyLjU2Mzg4NyAtMy41NDUzODYKdiAtMy41ODEwNTkgMi41NzIwMDAgLTMuNTA0NTk3CnYgLTMuNTc5MjYyIDIuNTcwNTMzIC0zLjUxMTk3NAp2IC0zLjU3NjMxNiAyLjU2OTEzOCAtMy41MTg5ODQKdiAtMy41NzIyOTMgMi41Njc4NTIgLTMuNTI1NDU0CnYgLTMuNTY3MjkzIDIuNTY2NzA0IC0zLjUzMTIyNAp2IC0zLjU2MTQzOSAyLjU2NTcyNCAtMy41MzYxNTIKdiAtMy41NTQ4NzQgMi41NjQ5MzUgLTMuNTQwMTE2CnYgLTMuNTQ3NzYxIDIuNTY0MzU4IC0zLjU0MzAyMAp2IC0zLjU0MDI3NSAyLjU2NDAwNSAtMy41NDQ3OTEKdiAtMC4zNzEyMzYgMi42NjExNjEgNy4xMDM3ODYKdiAtMC4zNTE4NTEgMi42NzcwNzAgNy4wOTk1NzIKdiAtMC4zODcxNDUgMi42NDE3NzYgNy4xMDg5NDIKdiAtMC4zOTg5NjcgMi42MTk2NjAgNy4xMTIxNTgKdiAtMC4zODg2MzMgMi42Mzg5OTIgNy4xMDk2ODUKdiAtMC40MDYyNDYgMi41OTU2NjIgNy4xMTUyNDIKdiAtMC40MDg3MDQgMi41NzA3MDUgNy4xMTc2NTAKdiAtMC40MDgxMDIgMi41NzY4MjIgNy4xMTc2NzYKdiAtMC40MDYyNDYgMi41NDU3NDkgNy4xMTc1NTYKdiAtMC4zOTg5NjcgMi41MjE3NTEgNy4xMTc0ODAKdiAtMC4yODA3ODEgMi40NDI3ODIgNy4xMDY3MDYKdiAtMC4zODcxNDUgMi40OTk2MzUgNy4xMTU0OTkKdiAtMC4zOTQ4NDkgMi41MTQwNDcgNy4xMTc0NjAKdiAtMC4zMDU3MzggMi40NDUyNDAgNy4xMDczMTQKdiAtMC4zNzEyMzYgMi40ODAyNTAgNy4xMTI4NzYKdiAtMC4zMjk3MzUgMi40NTI1MjAgNy4xMDkxODEKdiAtMC4zMjc4MzggMi40NTE5NDQgNy4xMDkxMDcKdiAtMC4zNTE4NTEgMi40NjQzNDEgNy4xMTA3NDMKdiAtMC4zMjk3MzUgMi42ODg4OTEgNy4wOTY0NjUKdiAtMC4zMDU3MzcgMi42OTYxNzEgNy4wOTQ1ODEKdiAwLjM1MjUzMyAyLjQ2NDM0MSA3LjExMjgxOQp2IDAuMzMwNDE3IDIuNDUyNTIwIDcuMTExMTI3CnYgMC4zMjg1MTggMi40NTE5NDQgNy4xMTEwNDIKdiAwLjMwNjQxOSAyLjQ0NTI0MCA3LjEwOTExOAp2IC0wLjI4MDc4MSAyLjY5ODYyOSA3LjA5Mzk5NAp2IDAuMzg3ODI3IDIuNDk5NjM1IDcuMTE3Nzg0CnYgMC4zNzE5MTggMi40ODAyNTAgNy4xMTUwNjcKdiAwLjQwOTM4NiAyLjU3MDcwNSA3LjEyMDA2MQp2IDAuNDA4Nzg0IDIuNTc2ODIyIDcuMTIwMDg0CnYgMC40MDY5MjggMi41NDU3NDkgNy4xMTk5NTMKdiAwLjM5NTUzMSAyLjUxNDA0NiA3LjExOTc5MQp2IDAuMzk5NjQ5IDIuNTIxNzUxIDcuMTE5ODM0CnYgMC4zMDY0MjAgMi42OTYxNzEgNy4wOTYzODUKdiAwLjM5OTY0OSAyLjYxOTY1OSA3LjExNDUxMQp2IDAuNDA2OTI4IDIuNTk1NjYyIDcuMTE3NjQwCnYgMC4zNzE5MTggMi42NjExNjEgNy4xMDU5NzcKdiAwLjMzMDQxNyAyLjY4ODg5MSA3LjA5ODQxMAp2IDAuMzg5MzE1IDIuNjM4OTkyIDcuMTExOTc5CnYgMC4zODc4MjcgMi42NDE3NzYgNy4xMTEyMjcKdiAwLjM1MjUzMyAyLjY3NzA3MCA3LjEwMTY0OAp2IDAuNDIwNDU3IDIuNTc2ODIyIDcuMTIwMTE5CnYgMC40MDUzNTAgMi42Mzg5OTIgNy4xMTIwMjYKdiAwLjM0ODg5NyAyLjQ1MTk0NCA3LjExMTEwMgp2IDAuMzUyMDc3IDIuNjk5MjkxIDcuMDk1NjgyCnYgMC40MTA5MTUgMi41MTQwNDYgNy4xMTk4MzYKdiAtMC4yNDQ0OTggMi43NTY0OTIgNy4wNjk5MjYKdiAwLjI2ODM1MiAyLjc1NjQ5MSA3LjA3MTQzOAp2IC0wLjM1NzQwNCAyLjQ1MTk0NCA3LjEwOTAyMAp2IC0wLjQyMjYwNCAyLjU3NjgyMiA3LjExNzYzMwp2IC0wLjMwMTc0NiAyLjM5MTc3OCA3LjA5MjUwOQp2IDAuMjQzNzAzIDIuMzkxNzc4IDcuMDk0MTE3CnYgLTAuNDA1MTEwIDIuNjM4OTkyIDcuMTA5NjM2CnYgLTAuMzQzMDkyIDIuNjk5MjkxIDcuMDkzNjMzCnYgLTAuNDEzMDYyIDIuNTE0MDQ3IDcuMTE3NDA3CnYgLTIuMDEwNDc5IDIuNTExNjY2IDcuMTEyMzY5CnYgLTIuMDgwNDIxIDIuNTU4NDAwIDcuMTEyNjcxCnYgLTIuMDc3MDM2IDIuNTQ3MjQyIDcuMTEyNjM2CnYgLTIuMDIyMDgzIDIuNTEwNTIzIDcuMTEyMTc4CnYgLTIuMDcxNTQwIDIuNTM2OTU4IDcuMTEyNjEwCnYgLTIuMDMzNjg3IDIuNTExNjY2IDcuMTEyMzAxCnYgLTIuMDY0MTQzIDIuNTI3OTQ1IDcuMTEyNTk2CnYgLTIuMDQxNTQwIDIuNTE0MDQ4IDcuMTEyNjA2CnYgLTIuMDQ0ODQ2IDIuNTE1MDUxIDcuMTEyNjAwCnYgLTIuMDU1MTI5IDIuNTIwNTQ4IDcuMTEyNTkyCnYgLTIuMjE1MDY2IDIuNjE5NDYxIDcuMTA2ODI4CnYgLTIuMjI1MzQ5IDIuNjI0OTU4IDcuMTA2MDg3CnYgLTIuMjA2MDUyIDIuNjEyMDY0IDcuMTA3ODEzCnYgLTIuMjM2NTA4IDIuNjI4MzQzIDcuMTA1NjE2CnYgLTIuMTk4NjU1IDIuNjAzMDUwIDcuMTA5MDAyCnYgLTIuMjQ4MTEyIDIuNjI5NDg2IDcuMTA1NDMzCnYgLTIuMTkzMTU4IDIuNTkyNzY3IDcuMTEwMzQ5CnYgLTIuMjU5NzE2IDIuNjI4MzQzIDcuMTA1NTQ3CnYgLTIuMTg5Nzc0IDIuNTgxNjA5IDcuMTExODA0CnYgLTIuMjcwODc1IDIuNjI0OTU4IDcuMTA1OTUzCnYgLTIuMTg4NjMwIDIuNTcwMDA0IDcuMTEyMzk5CnYgLTIuMTg5MzAyIDIuNTc2ODIzIDcuMTEyNDI1CnYgLTIuMjgxMTU3IDIuNjE5NDYxIDcuMTA2NjM0CnYgLTIuMTg5NzczIDIuNTU4NDAwIDcuMTEyMzQ5CnYgLTIuMjkwMTcxIDIuNjEyMDY0IDcuMTA3NTY1CnYgLTIuMTkzMTU4IDIuNTQ3MjQyIDcuMTEyMjkzCnYgLTIuMjk3NTY5IDIuNjAzMDUwIDcuMTA4NzEwCnYgLTIuMTk4NjU1IDIuNTM2OTU4IDcuMTEyMjM2CnYgLTIuMzAzMDY1IDIuNTkyNzY3IDcuMTEwMDI1CnYgLTIuMjA2MDUyIDIuNTI3OTQ1IDcuMTEyMTc3CnYgLTIuMzA2NDUwIDIuNTgxNjA5IDcuMTExNDU5CnYgLTIuMjE1MDY2IDIuNTIwNTQ4IDcuMTEyMTIxCnYgLTIuMzA2OTIxIDIuNTc2ODIzIDcuMTEyMDc4CnYgLTIuMzA3NTkzIDIuNTcwMDA0IDcuMTEyMDQ4CnYgLTIuMjI1MzQ5IDIuNTE1MDUxIDcuMTEyMDY4CnYgLTIuMzA2NDUwIDIuNTU4NDAwIDcuMTEyMDA0CnYgLTIuMjM2NTA4IDIuNTExNjY2IDcuMTExNzAzCnYgLTIuMjI4NjU1IDIuNTE0MDQ4IDcuMTEyMDU0CnYgLTIuMzAzMDY1IDIuNTQ3MjQyIDcuMTExOTY5CnYgLTIuMjQ4MTEyIDIuNTEwNTIzIDcuMTExNTExCnYgLTIuMjk3NTY5IDIuNTM2OTU4IDcuMTExOTQ0CnYgLTIuMjU5NzE2IDIuNTExNjY2IDcuMTExNjM1CnYgLTIuMjkwMTcxIDIuNTI3OTQ1IDcuMTExOTI5CnYgLTIuMjY3NTY5IDIuNTE0MDQ4IDcuMTExOTM5CnYgLTIuMjcwODc0IDIuNTE1MDUxIDcuMTExOTM0CnYgLTIuMjgxMTU4IDIuNTIwNTQ4IDcuMTExOTI2CnYgLTEuOTgwMDI0IDIuNjEyMDY0IDcuMTA4NDgwCnYgLTIuMDEwNDc5IDIuNjI4MzQzIDcuMTA2MjgyCnYgLTEuOTk5MzIxIDIuNjI0OTU4IDcuMTA2NzUzCnYgLTEuOTcyNjI2IDIuNjAzMDUwIDcuMTA5NjY4CnYgLTIuMDIyMDgzIDIuNjI5NDg2IDcuMTA2MTAwCnYgLTEuOTY3MTMwIDIuNTkyNzY3IDcuMTExMDE1CnYgLTIuMDMzNjg3IDIuNjI4MzQzIDcuMTA2MjE0CnYgLTEuOTYzNzQ1IDIuNTgxNjA5IDcuMTEyNDcwCnYgLTIuMDQ0ODQ2IDIuNjI0OTU4IDcuMTA2NjE5CnYgLTEuOTYyNjAyIDIuNTcwMDA0IDcuMTEzMDY1CnYgLTEuOTYzMjc0IDIuNTc2ODIzIDcuMTEzMDkxCnYgLTIuMDU1MTI5IDIuNjE5NDYxIDcuMTA3MzAwCnYgLTEuOTYzNzQ1IDIuNTU4NDAwIDcuMTEzMDE1CnYgLTIuMDY0MTQzIDIuNjEyMDY0IDcuMTA4MjMxCnYgLTEuOTY3MTMwIDIuNTQ3MjQyIDcuMTEyOTU5CnYgLTIuMDcxNTQwIDIuNjAzMDUwIDcuMTA5Mzc2CnYgLTEuOTcyNjI2IDIuNTM2OTU4IDcuMTEyOTAyCnYgLTIuMDc3MDM3IDIuNTkyNzY3IDcuMTEwNjkyCnYgLTEuOTgwMDI0IDIuNTI3OTQ1IDcuMTEyODQ0CnYgLTIuMDgwNDIyIDIuNTgxNjA5IDcuMTEyMTI2CnYgLTEuOTg5MDM3IDIuNTIwNTQ4IDcuMTEyNzg3CnYgLTIuMDgxNTY0IDIuNTcwMDA0IDcuMTEyNzE1CnYgLTIuMDgwODkzIDIuNTc2ODIzIDcuMTEyNzQ0CnYgLTEuOTk5MzIxIDIuNTE1MDUxIDcuMTEyNzM0CnYgLTIuMDAyNjI3IDIuNTE0MDQ4IDcuMTEyNzIwCnYgLTEuNzM3NzE2IDIuNTU4NDAwIDcuMTEzNjgxCnYgLTEuODI5MTAwIDIuNjE5NDYxIDcuMTA3OTY2CnYgLTEuODM4MTE0IDIuNjEyMDY0IDcuMTA4ODk4CnYgLTEuNzQxMTAxIDIuNTQ3MjQyIDcuMTEzNjI2CnYgLTEuODQ1NTExIDIuNjAzMDUwIDcuMTEwMDQzCnYgLTEuNzQ2NTk4IDIuNTM2OTU4IDcuMTEzNTY4CnYgLTEuODUxMDA4IDIuNTkyNzY3IDcuMTExMzU4CnYgLTEuNzUzOTk1IDIuNTI3OTQ1IDcuMTEzNTEwCnYgLTEuODU0MzkzIDIuNTgxNjA5IDcuMTEyNzkyCnYgLTEuNzYzMDA5IDIuNTIwNTQ4IDcuMTEzNDUzCnYgLTEuODU1NTM2IDIuNTcwMDA0IDcuMTEzMzgxCnYgLTEuODU0ODY0IDIuNTc2ODIzIDcuMTEzNDEwCnYgLTEuNzczMjkyIDIuNTE1MDUxIDcuMTEzNDAxCnYgLTEuODU0MzkzIDIuNTU4NDAwIDcuMTEzMzM3CnYgLTEuNzg0NDUxIDIuNTExNjY2IDcuMTEzMDM2CnYgLTEuNzc2NTk5IDIuNTE0MDQ4IDcuMTEzMzg3CnYgLTEuODUxMDA4IDIuNTQ3MjQyIDcuMTEzMzAyCnYgLTEuNzk2MDU1IDIuNTEwNTIzIDcuMTEyODQ0CnYgLTEuODQ1NTExIDIuNTM2OTU4IDcuMTEzMjc2CnYgLTEuODA3NjU5IDIuNTExNjY2IDcuMTEyOTY3CnYgLTEuODM4MTE0IDIuNTI3OTQ1IDcuMTEzMjYyCnYgLTEuODE4ODE3IDIuNTE1MDUxIDcuMTEzMjY2CnYgLTEuODE1NTEwIDIuNTE0MDQ4IDcuMTEzMjcyCnYgLTEuODI5MTAxIDIuNTIwNTQ4IDcuMTEzMjU5CnYgLTEuOTg5MDM3IDIuNjE5NDYxIDcuMTA3NDk1CnYgLTEuNjM5NTAwIDIuNTcwMDA0IDcuMTE0MDE4CnYgLTEuNjM4MzU3IDIuNTU4NDAwIDcuMTEzOTc0CnYgLTEuNTY4NDE1IDIuNTExNjY2IDcuMTEzNjczCnYgLTEuNTYwNTYzIDIuNTE0MDQ4IDcuMTE0MDI0CnYgLTEuNjM0OTcyIDIuNTQ3MjQyIDcuMTEzOTM5CnYgLTEuNTgwMDE5IDIuNTEwNTIzIDcuMTEzNDgxCnYgLTEuNjI5NDc2IDIuNTM2OTU4IDcuMTEzOTE0CnYgLTEuNTkxNjIzIDIuNTExNjY2IDcuMTEzNjA1CnYgLTEuNjIyMDc4IDIuNTI3OTQ1IDcuMTEzODk4CnYgLTEuNTk5NDc0IDIuNTE0MDQ4IDcuMTEzOTA5CnYgLTEuNjAyNzgxIDIuNTE1MDUxIDcuMTEzOTA0CnYgLTEuNjEzMDY1IDIuNTIwNTQ4IDcuMTEzODk1CnYgLTEuNzczMjkyIDIuNjI0OTU4IDcuMTA3NDIwCnYgLTEuNzYzMDA4IDIuNjE5NDYxIDcuMTA4MTYxCnYgLTEuNzUzOTk1IDIuNjEyMDY0IDcuMTA5MTQ2CnYgLTEuNzg0NDUxIDIuNjI4MzQzIDcuMTA2OTQ5CnYgLTEuNzQ2NTk4IDIuNjAzMDUwIDcuMTEwMzM0CnYgLTEuNzk2MDU1IDIuNjI5NDg2IDcuMTA2NzY3CnYgLTEuNzQxMTAxIDIuNTkyNzY3IDcuMTExNjgyCnYgLTEuODA3NjU5IDIuNjI4MzQzIDcuMTA2ODgwCnYgLTEuNzM3NzE2IDIuNTgxNjA5IDcuMTEzMTM2CnYgLTEuODE4ODE3IDIuNjI0OTU4IDcuMTA3Mjg1CnYgLTEuNzM2NTczIDIuNTcwMDA0IDcuMTEzNzMyCnYgLTEuNzM3MjQ1IDIuNTc2ODIzIDcuMTEzNzU4CnYgLTEuNTU3MjU2IDIuNjI0OTU4IDcuMTA4MDU2CnYgLTEuNTQ2OTczIDIuNjE5NDYxIDcuMTA4Nzk4CnYgLTEuNTM3OTU5IDIuNjEyMDY0IDcuMTA5NzgzCnYgLTEuNTY4NDE1IDIuNjI4MzQzIDcuMTA3NTg1CnYgLTEuNTMwNTYyIDIuNjAzMDUwIDcuMTEwOTcxCnYgLTEuNTgwMDE5IDIuNjI5NDg2IDcuMTA3NDA0CnYgLTEuNTI1MDY1IDIuNTkyNzY3IDcuMTEyMzE5CnYgLTEuNTkxNjIzIDIuNjI4MzQzIDcuMTA3NTE3CnYgLTEuNTIxNjgwIDIuNTgxNjA5IDcuMTEzNzczCnYgLTEuNjAyNzgxIDIuNjI0OTU4IDcuMTA3OTIzCnYgLTEuNTIwNTM4IDIuNTcwMDA0IDcuMTE0MzY5CnYgLTEuNTIxMjA5IDIuNTc2ODIzIDcuMTE0Mzk0CnYgLTEuNjEzMDY1IDIuNjE5NDYxIDcuMTA4NjAzCnYgLTEuNTIxNjgwIDIuNTU4NDAwIDcuMTE0MzE4CnYgLTEuNjIyMDc4IDIuNjEyMDY0IDcuMTA5NTM1CnYgLTEuNTI1MDY1IDIuNTQ3MjQyIDcuMTE0MjYzCnYgLTEuNjI5NDc1IDIuNjAzMDUwIDcuMTEwNjgwCnYgLTEuNTMwNTYyIDIuNTM2OTU4IDcuMTE0MjA1CnYgLTEuNjM0OTcyIDIuNTkyNzY3IDcuMTExOTk1CnYgLTEuNTM3OTU5IDIuNTI3OTQ1IDcuMTE0MTQ3CnYgLTEuNjM4MzU3IDIuNTgxNjA5IDcuMTEzNDI5CnYgLTEuNTQ2OTczIDIuNTIwNTQ3IDcuMTE0MDkwCnYgLTEuNjM4ODI4IDIuNTc2ODIzIDcuMTE0MDQ4CnYgLTEuNTU3MjU2IDIuNTE1MDUxIDcuMTE0MDM4CnYgLTEuMjk0NTA5IDIuNTcwMDA0IDcuMTE1MDM1CnYgLTEuMjk1MTgwIDIuNTc2ODIzIDcuMTE1MDYxCnYgLTEuMzg3MDM2IDIuNjE5NDYxIDcuMTA5MjcwCnYgLTEuMzc2NzUzIDIuNjI0OTU4IDcuMTA4NTg4CnYgLTEuMjk1NjUyIDIuNTU4NDAwIDcuMTE0OTg1CnYgLTEuMzk2MDUwIDIuNjEyMDY0IDcuMTEwMjAxCnYgLTEuMjk5MDM3IDIuNTQ3MjQyIDcuMTE0OTI5CnYgLTEuNDAzNDQ3IDIuNjAzMDUwIDcuMTExMzQ2CnYgLTEuMzA0NTMzIDIuNTM2OTU4IDcuMTE0ODcyCnYgLTEuNDA4OTQ0IDIuNTkyNzY3IDcuMTEyNjYxCnYgLTEuMzExOTMxIDIuNTI3OTQ1IDcuMTE0ODEzCnYgLTEuNDEyMzI4IDIuNTgxNjA5IDcuMTE0MDk2CnYgLTEuMzIwOTQ0IDIuNTIwNTQ3IDcuMTE0NzU3CnYgLTEuNDEyODAwIDIuNTc2ODIzIDcuMTE0NzE0CnYgLTEuNDEzNDcxIDIuNTcwMDA0IDcuMTE0Njg1CnYgLTEuMzMxMjI4IDIuNTE1MDUxIDcuMTE0NzA0CnYgLTEuNDEyMzI4IDIuNTU4NDAwIDcuMTE0NjQxCnYgLTEuMzQyMzg2IDIuNTExNjY2IDcuMTE0MzM5CnYgLTEuMzM0NTM1IDIuNTE0MDQ4IDcuMTE0NjkwCnYgLTEuNDA4OTQ0IDIuNTQ3MjQyIDcuMTE0NjA1CnYgLTEuMzUzOTkwIDIuNTEwNTIzIDcuMTE0MTQ4CnYgLTEuNDAzNDQ3IDIuNTM2OTU4IDcuMTE0NTgwCnYgLTEuMzY1NTk0IDIuNTExNjY2IDcuMTE0MjcxCnYgLTEuMzk2MDUwIDIuNTI3OTQ1IDcuMTE0NTY1CnYgLTEuMzc2NzUzIDIuNTE1MDUxIDcuMTE0NTcwCnYgLTEuMzczNDQ1IDIuNTE0MDQ4IDcuMTE0NTc1CnYgLTEuMzg3MDM2IDIuNTIwNTQ4IDcuMTE0NTYyCnYgLTEuMTg2NzcxIDIuNTc2ODIzIDcuMTE1MzgwCnYgLTEuMTg2MzAwIDIuNTgxNjA5IDcuMTE0NzYyCnYgLTEuMTg3NDQzIDIuNTcwMDA0IDcuMTE1MzUxCnYgLTEuMTA1MTk5IDIuNTE1MDUxIDcuMTE1MzcwCnYgLTEuMTg2MzAwIDIuNTU4NDAwIDcuMTE1MzA2CnYgLTEuMTE2MzU4IDIuNTExNjY2IDcuMTE1MDA1CnYgLTEuMTA4NTA3IDIuNTE0MDQ3IDcuMTE1MzU2CnYgLTEuMTgyOTE1IDIuNTQ3MjQyIDcuMTE1MjcyCnYgLTEuMTI3OTYyIDIuNTEwNTIzIDcuMTE0ODE0CnYgLTEuMTc3NDE4IDIuNTM2OTU4IDcuMTE1MjQ2CnYgLTEuMTM5NTY2IDIuNTExNjY2IDcuMTE0OTM3CnYgLTEuMTcwMDIxIDIuNTI3OTQ1IDcuMTE1MjMyCnYgLTEuMTUwNzI0IDIuNTE1MDUxIDcuMTE1MjM2CnYgLTEuMTQ3NDE2IDIuNTE0MDQ3IDcuMTE1MjQyCnYgLTEuMTYxMDA4IDIuNTIwNTQ3IDcuMTE1MjI4CnYgLTEuMzIwOTQ0IDIuNjE5NDYxIDcuMTA5NDY1CnYgLTEuMzMxMjI4IDIuNjI0OTU4IDcuMTA4NzIzCnYgLTEuMzExOTMxIDIuNjEyMDY0IDcuMTEwNDQ5CnYgLTEuMzQyMzg2IDIuNjI4MzQzIDcuMTA4MjUyCnYgLTEuMzA0NTMzIDIuNjAzMDUwIDcuMTExNjM4CnYgLTEuMzUzOTkwIDIuNjI5NDg2IDcuMTA4MDcwCnYgLTEuMjk5MDM3IDIuNTkyNzY3IDcuMTEyOTg2CnYgLTEuMzY1NTk1IDIuNjI4MzQzIDcuMTA4MTgzCnYgLTEuMjk1NjUyIDIuNTgxNjA5IDcuMTE0NDM5CnYgLTEuMDk0OTE2IDIuNjE5NDYxIDcuMTEwMTMxCnYgLTEuMTA1MTk5IDIuNjI0OTU4IDcuMTA5Mzg5CnYgLTEuMDg1OTAyIDIuNjEyMDY0IDcuMTExMTE2CnYgLTEuMTE2MzU3IDIuNjI4MzQzIDcuMTA4OTE4CnYgLTEuMDc4NTA1IDIuNjAzMDUwIDcuMTEyMzA0CnYgLTEuMTI3OTYyIDIuNjI5NDg2IDcuMTA4NzM3CnYgLTEuMDczMDA4IDIuNTkyNzY3IDcuMTEzNjUxCnYgLTEuMTM5NTY2IDIuNjI4MzQzIDcuMTA4ODUwCnYgLTEuMDY5NjIzIDIuNTgxNjA5IDcuMTE1MTA2CnYgLTEuMTUwNzI0IDIuNjI0OTU4IDcuMTA5MjU1CnYgLTEuMDY4NDgwIDIuNTcwMDA0IDcuMTE1NzAyCnYgLTEuMDY5MTUyIDIuNTc2ODIzIDcuMTE1NzI3CnYgLTEuMTYxMDA4IDIuNjE5NDYxIDcuMTA5OTM2CnYgLTEuMDY5NjIzIDIuNTU4NDAwIDcuMTE1NjUxCnYgLTEuMTcwMDIxIDIuNjEyMDY0IDcuMTEwODY4CnYgLTEuMDczMDA4IDIuNTQ3MjQyIDcuMTE1NTk2CnYgLTEuMTc3NDE4IDIuNjAzMDUwIDcuMTEyMDEyCnYgLTEuMDc4NTA1IDIuNTM2OTU4IDcuMTE1NTM4CnYgLTEuMTgyOTE1IDIuNTkyNzY3IDcuMTEzMzI4CnYgLTEuMDg1OTAyIDIuNTI3OTQ1IDcuMTE1NDc5CnYgLTEuMDk0OTE2IDIuNTIwNTQ3IDcuMTE1NDIzCnYgMS4xNDkwNTggMi41Mjc5NDQgNy4xMjIwNjgKdiAxLjA1MjA0NSAyLjU5Mjc2NyA3LjExOTkxNgp2IDEuMDQ4NjYwIDIuNTgxNjA4IDcuMTIxMzUxCnYgMS4xNDAwNDQgMi41MjA1NDcgNy4xMjIwMTIKdiAxLjA0NzUxNyAyLjU3MDAwNCA3LjEyMTk0MAp2IDEuMDQ4MTg4IDIuNTc2ODIxIDcuMTIxOTcwCnYgMS4xMjk3NjAgMi41MTUwNTAgNy4xMjE5NTkKdiAxLjA0ODY2MCAyLjU1ODQwMCA3LjEyMTg5Ngp2IDEuMTE4NjAyIDIuNTExNjY2IDcuMTIxNTk1CnYgMS4xMjY0NDkgMi41MTQwNDYgNy4xMjE5NDUKdiAxLjA1MjA0NSAyLjU0NzI0MSA3LjEyMTg2MAp2IDEuMTA2OTk4IDIuNTEwNTIzIDcuMTIxNDAzCnYgMS4wNTc1NDEgMi41MzY5NTggNy4xMjE4MzUKdiAxLjA5NTM5NCAyLjUxMTY2NiA3LjEyMTUyNgp2IDEuMDY0OTM4IDIuNTI3OTQ0IDcuMTIxODIwCnYgMS4wODQyMzYgMi41MTUwNTAgNy4xMjE4MjUKdiAxLjA4NzU0NyAyLjUxNDA0NiA3LjEyMTgzMQp2IDEuMDczOTUyIDIuNTIwNTQ3IDcuMTIxODE4CnYgMS4yODM1NzAgMi41MzY5NTggNy4xMjI1MDIKdiAxLjI5MDk2NyAyLjUyNzk0NCA3LjEyMjQ4Nwp2IDEuMzEwMjY0IDIuNTE1MDUwIDcuMTIyNDkxCnYgMS4zMTM1NzYgMi41MTQwNDYgNy4xMjI0OTcKdiAxLjI5OTk4MSAyLjUyMDU0NyA3LjEyMjQ4Mwp2IDEuMTQwMDQ0IDIuNjE5NDYxIDcuMTE2NzIwCnYgMS4xMjk3NjEgMi42MjQ5NTcgNy4xMTU5NzgKdiAxLjE0OTA1OCAyLjYxMjA2MyA3LjExNzcwNQp2IDEuMTE4NjAyIDIuNjI4MzQyIDcuMTE1NTA4CnYgMS4xNTY0NTUgMi42MDMwNTAgNy4xMTg4OTMKdiAxLjEwNjk5OCAyLjYyOTQ4NSA3LjExNTMyNQp2IDEuMTYxOTUyIDIuNTkyNzY2IDcuMTIwMjQxCnYgMS4wOTUzOTQgMi42MjgzNDIgNy4xMTU0MzgKdiAxLjE2NTMzNiAyLjU4MTYwOCA3LjEyMTY5NQp2IDEuMDg0MjM2IDIuNjI0OTU4IDcuMTE1ODQ0CnYgMS4xNjY0NzkgMi41NzAwMDQgNy4xMjIyOTEKdiAxLjE2NTgwNyAyLjU3NjgyMSA3LjEyMjMxNgp2IDEuMDczOTUyIDIuNjE5NDYxIDcuMTE2NTI1CnYgMS4xNjUzMzYgMi41NTg0MDAgNy4xMjIyNDAKdiAxLjA2NDkzOCAyLjYxMjA2NCA3LjExNzQ1Ngp2IDEuMTYxOTUyIDIuNTQ3MjQxIDcuMTIyMTg1CnYgMS4wNTc1NDEgMi42MDMwNTAgNy4xMTg2MDEKdiAxLjE1NjQ1NSAyLjUzNjk1OCA3LjEyMjEyNwp2IDEuMzkxMzY1IDIuNTgxNjA4IDcuMTIyMzYxCnYgMS4zMjE0MjIgMi42MjgzNDIgNy4xMTYxMDUKdiAxLjMxMDI2NCAyLjYyNDk1NyA3LjExNjUxMAp2IDEuMzkxODM2IDIuNTc2ODIxIDcuMTIyOTgzCnYgMS4zOTI1MDggMi41NzAwMDQgNy4xMjI5NTcKdiAxLjI5OTk4MSAyLjYxOTQ2MSA3LjExNzE5MQp2IDEuMzkxMzY1IDIuNTU4NDAwIDcuMTIyOTA2CnYgMS4yOTA5NjcgMi42MTIwNjMgNy4xMTgxMjMKdiAxLjM4Nzk4MCAyLjU0NzI0MSA3LjEyMjg1MQp2IDEuMjgzNTcwIDIuNjAzMDUwIDcuMTE5MjY3CnYgMS4zODI0ODMgMi41MzY5NTggNy4xMjI3OTMKdiAxLjI3ODA3MyAyLjU5Mjc2NyA3LjEyMDU4Mwp2IDEuMzc1MDg2IDIuNTI3OTQ0IDcuMTIyNzM1CnYgMS4yNzQ2ODggMi41ODE2MDggNy4xMjIwMTcKdiAxLjM2NjA3MiAyLjUyMDU0NyA3LjEyMjY3OQp2IDEuMjc0MjE3IDIuNTc2ODIxIDcuMTIyNjM2CnYgMS4yNzM1NDYgMi41NzAwMDQgNy4xMjI2MDYKdiAxLjM1NTc4OSAyLjUxNTA1MCA3LjEyMjYyNQp2IDEuMjc0Njg4IDIuNTU4NDAwIDcuMTIyNTYyCnYgMS4zNDQ2MzEgMi41MTE2NjYgNy4xMjIyNjEKdiAxLjM1MjQ3NyAyLjUxNDA0NiA3LjEyMjYxMgp2IDEuMjc4MDczIDIuNTQ3MjQxIDcuMTIyNTI3CnYgMS4zMzMwMjcgMi41MTA1MjMgNy4xMjIwNjkKdiAxLjMyMTQyMiAyLjUxMTY2NiA3LjEyMjE5Mwp2IDEuNTA5NTk4IDIuNjAzMDUwIDcuMTE5OTM0CnYgMS42MDExMTUgMi41Mjc5NDQgNy4xMjM0MDEKdiAxLjUwMDcxNyAyLjU4MTYwOCA3LjEyMjY4Mwp2IDEuNTA0MTAyIDIuNTkyNzY2IDcuMTIxMjQ5CnYgMS41OTIxMDEgMi41MjA1NDcgNy4xMjMzNDUKdiAxLjQ5OTU3NCAyLjU3MDAwNCA3LjEyMzI3Mgp2IDEuNTAwMjQ1IDIuNTc2ODIxIDcuMTIzMzAyCnYgMS41ODE4MTggMi41MTUwNTAgNy4xMjMyOTIKdiAxLjUwMDcxNyAyLjU1ODQwMCA3LjEyMzIyOQp2IDEuNTcwNjU5IDIuNTExNjY2IDcuMTIyOTI4CnYgMS41Nzg1MDUgMi41MTQwNDUgNy4xMjMyNzgKdiAxLjUwNDEwMiAyLjU0NzI0MSA3LjEyMzE5Mwp2IDEuNTU5MDU1IDIuNTEwNTIzIDcuMTIyNzM2CnYgMS41MDk1OTggMi41MzY5NTggNy4xMjMxNjgKdiAxLjU0NzQ1MSAyLjUxMTY2NiA3LjEyMjg1OQp2IDEuNTE2OTk2IDIuNTI3OTQ0IDcuMTIzMTUzCnYgMS41MzYyOTMgMi41MTUwNTAgNy4xMjMxNTgKdiAxLjUzOTYwNSAyLjUxNDA0NSA3LjEyMzE2NAp2IDEuNTI2MDA5IDIuNTIwNTQ3IDcuMTIzMTUwCnYgMS4zNTU3ODkgMi42MjQ5NTcgNy4xMTY2NDQKdiAxLjM2NjA3MyAyLjYxOTQ2MSA3LjExNzM4Ngp2IDEuMzc1MDg2IDIuNjEyMDYzIDcuMTE4MzcxCnYgMS4zNDQ2MzEgMi42MjgzNDIgNy4xMTYxNzQKdiAxLjM4MjQ4MyAyLjYwMzA1MCA3LjExOTU1OQp2IDEuMzMzMDI3IDIuNjI5NDg1IDcuMTE1OTkyCnYgMS4zODc5ODAgMi41OTI3NjYgNy4xMjA5MDcKdiAxLjU1OTA1NSAyLjYyOTQ4NSA3LjExNjY1OAp2IDEuNjE0MDA5IDIuNTkyNzY2IDcuMTIxNTczCnYgMS41NDc0NTEgMi42MjgzNDIgNy4xMTY3NzEKdiAxLjYxNzM5NCAyLjU4MTYwOCA3LjEyMzAyNwp2IDEuNTM2MjkzIDIuNjI0OTU3IDcuMTE3MTc3CnYgMS42MTc4NjUgMi41NzY4MjEgNy4xMjM2NTAKdiAxLjYxODUzNiAyLjU3MDAwNCA3LjEyMzYyNAp2IDEuNTI2MDA5IDIuNjE5NDYxIDcuMTE3ODU4CnYgMS42MTczOTMgMi41NTg0MDAgNy4xMjM1NzMKdiAxLjUxNjk5NiAyLjYxMjA2MyA3LjExODc4OQp2IDEuNjE0MDA5IDIuNTQ3MjQxIDcuMTIzNTE4CnYgMS42MDg1MTIgMi41MzY5NTggNy4xMjM0NTkKdiAxLjYwMTExNSAyLjYxMjA2MyA3LjExOTAzNwp2IDEuNTgxODE4IDIuNjI0OTU3IDcuMTE3MzExCnYgMS41NzA2NjAgMi42MjgzNDIgNy4xMTY4NDAKdiAxLjYwODUxMiAyLjYwMzA1MCA3LjEyMDIyNQp2IDEuNTkyMTAxIDIuNjE5NDYxIDcuMTE4MDUyCnYgMS42MzI1MjEgMi41NzY4MjEgNy4xMjM2OTMKdiAxLjUyODM2MSAyLjYzODk5MSA3LjExNTMzNgp2IDEuNjAwNzE3IDIuNjM4OTkxIDcuMTE1NTUwCnYgMS41NDk4MjkgMi40NTE5NDMgNy4xMTQ2NDMKdiAxLjQ4ODYwNSAyLjU3NjgyMSA3LjEyMzI2OAp2IDEuNTA2ODkzIDIuNTE0MDQ1IDcuMTIzMDY3CnYgMS42MDMxMDIgMi41MTQwNDUgNy4xMjMzNTEKdiAxLjI2MTk5NyAyLjU3NjgyMSA3LjEyMjYwMAp2IDEuMjgzNDY1IDIuNTE0MDQ2IDcuMTIyNDA4CnYgMS4zNzQxMDggMi41MTQwNDYgNy4xMjI2NzYKdiAxLjI5MDYyMSAyLjYzODk5MSA3LjExNDYzNQp2IDEuMzY0NTY3IDIuNjM4OTkxIDcuMTE0ODU0CnYgMS40MTA2ODQgMi41NzY4MjEgNy4xMjMwMzgKdiAxLjMyNzE5NiAyLjQ1MTk0MyA3LjExMzk4Ngp2IDEuMTAwMDU4IDIuNDUxOTQzIDcuMTEzMzE3CnYgMS4wMzI0NzMgMi41NzY4MjEgNy4xMjE5MjMKdiAxLjA1MDM2NCAyLjUxNDA0NiA3LjEyMTcyMQp2IDEuMTUzNzI4IDIuNTE0MDQ2IDcuMTIyMDI2CnYgMS4xODAyMzMgMi41NzY4MjEgNy4xMjIzNTkKdiAxLjA2MjI5MCAyLjYzODk5MSA3LjExMzk2Mwp2IDEuMTU0MzkxIDIuNjM4OTkxIDcuMTE0MjM0CnYgLTEuMTM2MzgzIDIuNDUxOTQ1IDcuMTA2NzIzCnYgLTEuMTc2MTM5IDIuNTE0MDQ3IDcuMTE1MTU3CnYgLTEuMDg4Njc2IDIuNTE0MDQ3IDcuMTE1NDE1CnYgLTEuMDU1NTQ2IDIuNTc2ODIzIDcuMTE1NzY3CnYgLTEuMTcxNTAwIDIuNjM4OTkzIDcuMTA3Mzc3CnYgLTEuMDgyNzEyIDIuNjM4OTkzIDcuMTA3NjM4CnYgLTEuMjAxMzE3IDIuNTc2ODIzIDcuMTE1MzM3CnYgLTEuNDIzMjg3IDIuNjM4OTkzIDcuMTA2NjM1CnYgLTEuMjk2MDY5IDIuNjM4OTkzIDcuMTA3MDA5CnYgLTEuNDMyNTY0IDIuNTc2ODIzIDcuMTE0NjU1CnYgLTEuMzUxNzI3IDIuNDUxOTQ1IDcuMTA2MDg4CnYgLTEuNDA5MzczIDIuNTE0MDQ4IDcuMTE0NDcwCnYgLTEuMjgyMTU0IDIuNTc2ODIzIDcuMTE1MDk5CnYgLTEuMzA0MDIwIDIuNTE0MDQ4IDcuMTE0NzgwCnYgLTEuNTM1OTI5IDIuNTE0MDQ4IDcuMTE0MDk2CnYgLTEuNjE4MDkxIDIuNjM4OTkzIDcuMTA2MDYwCnYgLTEuNTI5OTY1IDIuNjM4OTkzIDcuMTA2MzIwCnYgLTEuNjUzODcyIDIuNTc2ODIzIDcuMTE0MDAzCnYgLTEuNTg3NjEyIDIuNDUxOTQ1IDcuMTA1MzkzCnYgLTEuNjM3OTY5IDIuNTE0MDQ4IDcuMTEzNzk1CnYgLTEuNTEwMDg3IDIuNTc2ODIzIDcuMTE0NDI3CnYgLTEuODUwNjYzIDIuNTE0MDQ4IDcuMTEzMTY4CnYgLTEuNzkzNjgwIDIuNDUxOTQ1IDcuMTA0Nzg1CnYgLTEuNzQ1OTczIDIuNTE0MDQ4IDcuMTEzNDc3CnYgLTEuNzMxNzA5IDIuNTc2ODIzIDcuMTEzNzc0CnYgLTEuODc1MTc5IDIuNTc2ODIzIDcuMTEzMzUxCnYgLTEuODQ1MzYzIDIuNjM4OTkzIDcuMTA1MzkwCnYgLTEuNzQ4NjIzIDIuNjM4OTkzIDcuMTA1Njc1CnYgLTEuNzMwNzMzIDIuNTczMjM2IDcuMTEzNzYyCnYgLTIuMDk0NDk5IDIuNTc2ODIzIDcuMTEyNzA0CnYgLTEuOTczOTA3IDIuNTE0MDQ4IDcuMTEyODA1CnYgLTIuMDc4NTk3IDIuNTE0MDQ4IDcuMTEyNDk2CnYgLTIuMDY5MzIwIDIuNjM4OTkzIDcuMTA0NzMwCnYgLTEuOTgzMTgzIDIuNjM4OTkzIDcuMTA0OTg0CnYgLTIuMDI0MjY0IDIuNDUxOTQ1IDcuMTA0MTA1CnYgLTEuOTQ4NzI4IDIuNTc2ODIzIDcuMTEzMTM0CnYgLTIuMTkxOTAxIDIuNTE0MDQ4IDcuMTEyMTYzCnYgLTIuMjYwODExIDIuNDUxOTQ2IDcuMTAzNDA4CnYgLTIuMzM1Njg0IDIuNTc2ODI0IDcuMTExOTkzCnYgLTIuMzA5ODQzIDIuNTE0MDQ4IDcuMTExODE0CnYgLTIuMTcwNjk3IDIuNTc2ODIzIDcuMTEyNDgwCnYgLTIuMjkzMjc4IDIuNjM4OTk0IDcuMTA0MDcwCnYgLTIuMjA3MTQwIDIuNjM4OTk0IDcuMTA0MzIzCnYgMy40ODg5ODggMi43MDExNTYgLTEuNjE3Mzg5CnYgMy40OTA1MDQgMi42OTQ0NjkgLTEuNTk1Nzk5CnYgMy40OTMwMjMgMi42ODM2MTAgLTEuNTc1OTAyCnYgMy40OTUxNDIgMi42NzQ1NzcgLTEuNTY1MTIxCnYgMy40OTU3NzMgMi42Njg5OTcgLTEuNTU4NDYxCnYgMy40OTc4MDkgMi42NTExOTEgLTEuNTQ0MTQ5CnYgMy41MDIzNDAgMi42MDg4MzMgLTEuNTI2OTY0CnYgMy41MDIzNDMgMi42MTIwMTYgLTEuNTI3OTEwCnYgMy41MDAxNTMgMi42MzA4NzYgLTEuNTMzNTEzCnYgMy41MDIzNDAgMi41NjI5ODUgLTEuNTI2OTY0CnYgMy41MDIzMzQgMi41ODU5MDkgLTEuNTI0NzUyCnYgMy40OTkwNjQgMi41MjA2MjcgLTEuNTQ0MTQ5CnYgMy41MDE0MTcgMi41NDA5NDIgLTEuNTMzNTEzCnYgMy41MDIzNTIgMi41NDg5NzYgLTEuNTMxMTI2CnYgMy40OTcwMTQgMi41MDI4MjEgLTEuNTU4NDYxCnYgMy40OTA5MTIgMi40Njg0MDQgLTEuNjM5ODQxCnYgMy40OTE0MDggMi40NzA2NjIgLTEuNjE3Mzg5CnYgMy40OTI5NjUgMi40NzczNDkgLTEuNTk1Nzk5CnYgMy40OTUxODEgMi40ODY3NTcgLTEuNTc4NTU5CnYgMy40OTUzNDUgMi40ODgyMDggLTEuNTc1OTAxCnYgMy40OTgxMzkgMi42Nzg2OTQgLTIuNTgxNjkyCnYgMy40OTY5NDAgMi42ODM2MTAgLTIuNTc1ODI1CnYgMy40OTkzMTUgMi42Njg5OTcgLTIuNTkzMjY1CnYgMy40OTk1NzMgMi41MDI4MjEgLTIuNTkzMjY1CnYgMy40OTc1MDIgMi40ODgyMDggLTIuNTc1ODI1CnYgMy40OTgxMzEgMi40OTA4MDggLTIuNTc4OTI5CnYgMy40OTQyNjQgMi42OTQ0NjkgLTIuNTU1OTI4CnYgMy40OTQ4NjUgMi40NzczNDkgLTIuNTU1OTI4CnYgMy40OTMyMjMgMi40NzA2NjIgLTIuNTM0MzM4CnYgMy40OTI1ODAgMi43MDExNTYgLTIuNTM0MzM3CnYgMy40ODg1MzYgMi43MDM0MTMgLTEuNjM5ODQxCnYgMy41MDE0NDkgMi42NTExOTEgLTIuNjA3NTc4CnYgMy41MDE2OTUgMi41MjA2MjcgLTIuNjA3NTc4CnYgMy41MDM4NjUgMi42MzA4NzYgLTIuNjE4MjEzCnYgMy41MDU1NzcgMi42MDg4MzMgLTIuNjI0NzYzCnYgMy41MDU1NzcgMi41NjI5ODUgLTIuNjI0NzYzCnYgMy41MDQxMDEgMi41NDA5NDIgLTIuNjE4MjEzCnYgMy41MDU1NjggMi41NTMzOTMgLTIuNjIxOTEyCnYgMy41MDU1NzAgMi42MTY0NDggLTIuNjIyNDk5CnYgMy41MDU1ODMgMi41ODU5MDkgLTIuNjI2OTc0CnYgMy40OTQxNjEgMi43MDExNTYgLTIuOTM4MDMyCnYgMy40OTU2NzYgMi42OTQ0NjkgLTIuOTE2NDQyCnYgMy40OTgxOTYgMi42ODM2MTAgLTIuODk2NTQ0CnYgMy40OTkwNTQgMi42Nzk5NTEgLTIuODkyMTc5CnYgMy41MDAyOTMgMi42Njg5OTcgLTIuODc5MTA1CnYgMy41MDIzMzAgMi42NTExOTEgLTIuODY0NzkxCnYgMy41MDYyMzQgMi42MDg4MzMgLTIuODQ3NjA3CnYgMy41MDYyNDEgMi42MTczNzAgLTIuODUwMTQ0CnYgMy41MDQ2NzMgMi42MzA4NzYgLTIuODU0MTU2CnYgMy41MDYyMzQgMi41NjI5ODUgLTIuODQ3NjA3CnYgMy41MDYyMjcgMi41ODU5MDkgLTIuODQ1Mzk2CnYgMy41MDIzMzEgMi41MjA2MjcgLTIuODY0NzkyCnYgMy41MDQ2ODQgMi41NDA5NDIgLTIuODU0MTU2CnYgMy41MDYyNDEgMi41NTQzMTggLTIuODUwMTgyCnYgMy41MDAyODEgMi41MDI4MjEgLTIuODc5MTA0CnYgMy40OTM1MjYgMi40Njg0MDQgLTIuOTYwNDg1CnYgMy40OTQwMjIgMi40NzA2NjIgLTIuOTM4MDMyCnYgMy40OTU1NzkgMi40NzczNDkgLTIuOTE2NDQyCnYgMy40OTgxMzcgMi40ODgyMDggLTIuODk2NTQ1CnYgMy40OTkwNTMgMi40OTIwNzYgLTIuODkxOTI4CnYgMy41MDIwNjMgMi42ODM2MTAgLTMuODk2NDY4CnYgMy41MDM4MzQgMi42Njg5OTcgLTMuOTEzOTA4CnYgMy41MDI4NDAgMi41MDI4MjEgLTMuOTEzOTA4CnYgMy41MDAxMTYgMi40ODgyMDggLTMuODk2NDY4CnYgMy41MDIwNDMgMi40OTYxODIgLTMuOTA1OTg2CnYgMy40OTk0MzcgMi42OTQ0NjkgLTMuODc2NTcwCnYgMy41MDIwMTMgMi42ODQwMTYgLTMuODk1NzI1CnYgMy40OTc0NzkgMi40NzczNDkgLTMuODc2NTcxCnYgMy40OTU4MzcgMi40NzA2NjIgLTMuODU0OTgxCnYgMy40OTc3NTMgMi43MDExNTYgLTMuODU0OTgxCnYgMy40OTM3MDkgMi43MDM0MTMgLTIuOTYwNDg1CnYgMy41MDU5NjkgMi42NTExOTEgLTMuOTI4MjIxCnYgMy41MDQ5NjEgMi41MjA2MjcgLTMuOTI4MjIxCnYgMy41MDgzODUgMi42MzA4NzYgLTMuOTM4ODU2CnYgMy41MDk0NzAgMi42MDg4MzMgLTMuOTQ1NDA1CnYgMy41MDk0NzAgMi41NjI5ODUgLTMuOTQ1NDA1CnYgMy41MDk0NjYgMi41NTg3NDggLTMuOTQ0MTQ3CnYgMy41MDczNjggMi41NDA5NDIgLTMuOTM4ODU2CnYgMy41MDk0NTkgMi42MjE3OTAgLTMuOTQxNTU2CnYgMy41MDk0NzcgMi41ODU5MDkgLTMuOTQ3NjE3CnYgMy4zMjkyOTcgMi43MDExNTYgLTIuOTM4MDMyCnYgMy4zMjkyOTcgMi43MDM0MTMgLTIuOTYwNDg1CnYgMy4zMjkyOTcgMi42OTQ0NjkgLTIuOTE2NDQyCnYgMy4zMjkyOTcgMi42ODM2MTAgLTIuODk2NTQ1CnYgMy4zMjkyOTcgMi42Njg5OTcgLTIuODc5MTA0CnYgMy4zMjkyOTcgMi42NTExOTEgLTIuODY0NzkyCnYgMy4zMjkyOTcgMi42MzA4NzYgLTIuODU0MTU2CnYgMy4zMjkyOTcgMi42MDg4MzMgLTIuODQ3NjA3CnYgMy4zMjkyOTcgMi41ODU5MDkgLTIuODQ1Mzk2CnYgMy4zMjkyOTcgMi41NjI5ODUgLTIuODQ3NjA3CnYgMy4zMjkyOTcgMi41NDA5NDIgLTIuODU0MTU2CnYgMy4zMjkyOTcgMi41MjA2MjcgLTIuODY0NzkyCnYgMy4zMjkyOTcgMi41MDI4MjEgLTIuODc5MTA0CnYgMy4zMjkyOTcgMi40ODgyMDggLTIuODk2NTQ0CnYgMy4zMjkyOTcgMi40NzczNDkgLTIuOTE2NDQyCnYgMy4zMjkyOTcgMi40NzA2NjIgLTIuOTM4MDMyCnYgMy4zMjkyOTcgMi40Njg0MDQgLTIuOTYwNDg1CnYgMy4zMjkyOTcgMi40NzA2NjIgLTMuODU0OTgxCnYgMy4zMjkyOTcgMi40NzczNDkgLTMuODc2NTcxCnYgMy4zMjkyOTcgMi40ODgyMDggLTMuODk2NDY4CnYgMy4zMjkyOTcgMi41MDI4MjEgLTMuOTEzOTA4CnYgMy4zMjkyOTcgMi41MjA2MjcgLTMuOTI4MjIxCnYgMy4zMjkyOTcgMi41NDA5NDIgLTMuOTM4ODU3CnYgMy4zMjkyOTcgMi41NjI5ODUgLTMuOTQ1NDA2CnYgMy4zMjkyOTcgMi41ODU5MDkgLTMuOTQ3NjE3CnYgMy4zMjkyOTcgMi42MDg4MzMgLTMuOTQ1NDA1CnYgMy4zMjkyOTcgMi42MzA4NzYgLTMuOTM4ODU2CnYgMy4zMjkyOTcgMi42NTExOTEgLTMuOTI4MjIxCnYgMy4zMjkyOTcgMi42Njg5OTcgLTMuOTEzOTA4CnYgMy4zMjkyOTcgMi42ODM2MTAgLTMuODk2NDY4CnYgMy4zMjkyOTcgMi42OTQ0NjkgLTMuODc2NTcxCnYgMy4zMjkyOTcgMi43MDExNTYgLTMuODU0OTgwCnYgMy4zMjkyOTcgMi43MDExNTYgLTEuNjE3Mzg5CnYgMy4zMjkyOTcgMi43MDM0MTMgLTEuNjM5ODQyCnYgMy4zMjkyOTcgMi42OTQ0NjkgLTEuNTk1Nzk5CnYgMy4zMjkyOTcgMi42ODM2MTAgLTEuNTc1OTAxCnYgMy4zMjkyOTcgMi42Njg5OTcgLTEuNTU4NDYxCnYgMy4zMjkyOTcgMi42NTExOTEgLTEuNTQ0MTQ4CnYgMy4zMjkyOTcgMi42MzA4NzYgLTEuNTMzNTEzCnYgMy4zMjkyOTcgMi42MDg4MzMgLTEuNTI2OTY0CnYgMy4zMjkyOTcgMi41ODU5MDkgLTEuNTI0NzUyCnYgMy4zMjkyOTcgMi41NjI5ODUgLTEuNTI2OTY0CnYgMy4zMjkyOTcgMi41NDA5NDIgLTEuNTMzNTEzCnYgMy4zMjkyOTcgMi41MjA2MjcgLTEuNTQ0MTQ4CnYgMy4zMjkyOTcgMi41MDI4MjEgLTEuNTU4NDYxCnYgMy4zMjkyOTcgMi40ODgyMDggLTEuNTc1OTAyCnYgMy4zMjkyOTcgMi40NzczNDkgLTEuNTk1Nzk5CnYgMy4zMjkyOTcgMi40NzA2NjIgLTEuNjE3Mzg5CnYgMy4zMjkyOTcgMi40Njg0MDQgLTEuNjM5ODQyCnYgMy4zMjkyOTcgMi40NzA2NjIgLTIuNTM0MzM4CnYgMy4zMjkyOTcgMi40NzczNDkgLTIuNTU1OTI4CnYgMy4zMjkyOTcgMi40ODgyMDggLTIuNTc1ODI1CnYgMy4zMjkyOTcgMi41MDI4MjEgLTIuNTkzMjY1CnYgMy4zMjkyOTcgMi41MjA2MjcgLTIuNjA3NTc4CnYgMy4zMjkyOTcgMi41NDA5NDIgLTIuNjE4MjEzCnYgMy4zMjkyOTcgMi41NjI5ODUgLTIuNjI0NzYzCnYgMy4zMjkyOTcgMi41ODU5MDkgLTIuNjI2OTc0CnYgMy4zMjkyOTcgMi42MDg4MzMgLTIuNjI0NzYzCnYgMy4zMjkyOTcgMi42MzA4NzYgLTIuNjE4MjEzCnYgMy4zMjkyOTcgMi42NTExOTEgLTIuNjA3NTc4CnYgMy4zMjkyOTcgMi42Njg5OTcgLTIuNTkzMjY1CnYgMy4zMjkyOTcgMi42ODM2MTAgLTIuNTc1ODI1CnYgMy4zMjkyOTcgMi42OTQ0NjkgLTIuNTU1OTI4CnYgMy4zMjkyOTcgMi43MDExNTYgLTIuNTM0MzM4CnYgMy41NDQ3MDIgMi42OTU5MzAgLTIuOTM5MDkzCnYgMy42MDMxNTggMi42MzgzNTYgLTIuOTUwNzgxCnYgMy41NTM4NDcgMi42OTUyMjEgLTIuOTM5MjM3CnYgMy41NjI3NjYgMi42OTMxMTIgLTIuOTM5NjY1CnYgMy41NzEyNDAgMi42ODk2NTUgLTIuOTQwMzY3CnYgMy41NzkwNjEgMi42ODQ5MzQgLTIuOTQxMzI1CnYgMy41ODYwMzYgMi42NzkwNjcgLTIuOTQyNTE2CnYgMy41OTE5OTQgMi42NzIxOTcgLTIuOTQzOTExCnYgMy41OTY3ODYgMi42NjQ0OTQgLTIuOTQ1NDc0CnYgMy42MDAyOTYgMi42NTYxNDcgLTIuOTQ3MTY5CnYgMy42MDI0MzggMi42NDczNjIgLTIuOTQ4OTUyCnYgMy42MDMxNTcgMi42Mzk2NDUgLTIuOTYzNjAyCnYgMy41NDQ3MDMgMi42OTgxMDcgLTIuOTYwNzQ0CnYgMy42MDI0MzcgMi42NDg3OTEgLTIuOTYzMTU1CnYgMy42MDAyOTYgMi42NTc3MTEgLTIuOTYyNzE5CnYgMy41OTY3ODYgMi42NjYxODYgLTIuOTYyMzA1CnYgMy41OTE5OTMgMi42NzQwMDggLTIuOTYxOTIyCnYgMy41ODYwMzYgMi42ODA5ODQgLTIuOTYxNTgxCnYgMy41NzkwNjIgMi42ODY5NDIgLTIuOTYxMjkwCnYgMy41NzEyNDEgMi42OTE3MzUgLTIuOTYxMDU2CnYgMy41NjI3NjYgMi42OTUyNDYgLTIuOTYwODg0CnYgMy41NTM4NDcgMi42OTczODcgLTIuOTYwNzc5CnYgMy41NDQ3MDIgMi42ODk1NTggLTIuOTE4NTE4CnYgMy42MDMxNjAgMi42MzU0NDggLTIuOTQxMzkyCnYgMy41NTM4NDcgMi42ODg4OTEgLTIuOTE4Nzk5CnYgMy41NjI3NjYgMi42ODY5MDkgLTIuOTE5NjM3CnYgMy41NzEyNDAgMi42ODM2NjAgLTIuOTIxMDExCnYgMy41NzkwNjIgMi42NzkyMjQgLTIuOTIyODg2CnYgMy41ODYwMzcgMi42NzM3MDkgLTIuOTI1MjE4CnYgMy41OTE5OTQgMi42NjcyNTMgLTIuOTI3OTQ3CnYgMy41OTY3ODcgMi42NjAwMTMgLTIuOTMxMDA4CnYgMy42MDAyOTggMi42NTIxNjkgLTIuOTM0MzI0CnYgMy42MDI0MzkgMi42NDM5MTMgLTIuOTM3ODE0CnYgMy41NDQ3MDIgMi42NzkyMDUgLTIuODk5NTQ4CnYgMy42MDMxNTYgMi42MzA2NzMgLTIuOTMyNjQzCnYgMy41NTM4NDcgMi42Nzg2MDggLTIuODk5OTU2CnYgMy41NjI3NjYgMi42NzY4MzAgLTIuOTAxMTY4CnYgMy41NzEyNDAgMi42NzM5MTYgLTIuOTAzMTU1CnYgMy41NzkwNjEgMi42Njk5MzYgLTIuOTA1ODY5CnYgMy41ODYwMzYgMi42NjQ5OTEgLTIuOTA5MjQyCnYgMy41OTE5OTMgMi42NTkyMDAgLTIuOTEzMTkwCnYgMy41OTY3ODYgMi42NTI3MDYgLTIuOTE3NjE4CnYgMy42MDAyOTYgMi42NDU2NzEgLTIuOTIyNDE2CnYgMy42MDI0MzcgMi42MzgyNjYgLTIuOTI3NDY2CnYgMy41NDQ3MDIgMi42NjUyNjYgLTIuODgyOTEyCnYgMy42MDMxNTYgMi42MjQxNTcgLTIuOTI0ODY2CnYgMy41NTM4NDcgMi42NjQ3NjAgLTIuODgzNDI5CnYgMy41NjI3NjYgMi42NjMyNTQgLTIuODg0OTY2CnYgMy41NzEyNDAgMi42NjA3ODUgLTIuODg3NDg1CnYgMy41NzkwNjEgMi42NTc0MTUgLTIuODkwOTI0CnYgMy41ODYwMzYgMi42NTMyMjUgLTIuODk1MjAwCnYgMy41OTE5OTMgMi42NDgzMjAgLTIuOTAwMjA2CnYgMy41OTY3ODYgMi42NDI4MjAgLTIuOTA1ODE5CnYgMy42MDAyOTYgMi42MzY4NjAgLTIuOTExOTAxCnYgMy42MDI0MzcgMi42MzA1ODggLTIuOTE4MzAzCnYgMy41NDQ3MDIgMi42NDgyNzEgLTIuODY5MjUxCnYgMy42MDMxNTggMi42MTYxMDEgLTIuOTE4MzkwCnYgMy41NTM4NDcgMi42NDc4NzUgLTIuODY5ODU3CnYgMy41NjI3NjYgMi42NDY2OTYgLTIuODcxNjU3CnYgMy41NzEyNDAgMi42NDQ3NjQgLTIuODc0NjA3CnYgMy41NzkwNjEgMi42NDIxMjcgLTIuODc4NjM2CnYgMy41ODYwMzYgMi42Mzg4NDggLTIuODgzNjQ0CnYgMy41OTE5OTQgMi42MzUwMTAgLTIuODg5NTA3CnYgMy41OTY3ODYgMi42MzA3MDYgLTIuODk2MDgxCnYgMy42MDAyOTcgMi42MjYwNDIgLTIuOTAzMjA1CnYgMy42MDI0MzggMi42MjExMzMgLTIuOTEwNzAzCnYgMy41NDQ3MDMgMi42Mjg4NzEgLTIuODU5MDk1CnYgMy42MDMxNTQgMi42MDY3ODUgLTIuOTEzNTEzCnYgMy41NTM4NDcgMi42Mjg1OTkgLTIuODU5NzY1CnYgMy41NjI3NjYgMi42Mjc3OTAgLTIuODYxNzU4CnYgMy41NzEyNDAgMi42MjY0NjQgLTIuODY1MDI2CnYgMy41NzkwNjEgMi42MjQ2NTMgLTIuODY5NDg4CnYgMy41ODYwMzUgMi42MjI0MDIgLTIuODc1MDM0CnYgMy41OTE5OTIgMi42MTk3NjcgLTIuODgxNTI3CnYgMy41OTY3ODUgMi42MTY4MTIgLTIuODg4ODA4CnYgMy42MDAyOTQgMi42MTM2MTAgLTIuODk2Njk3CnYgMy42MDI0MzUgMi42MTAyNDAgLTIuOTA1MDAwCnYgMy41NDQ3MDIgMi42MDc4MTMgLTIuODUyODM5CnYgMy42MDMxNTggMi41OTY1NzkgLTIuOTEwNDgxCnYgMy41NTM4NDcgMi42MDc2NzUgLTIuODUzNTQ5CnYgMy41NjI3NjYgMi42MDcyNjMgLTIuODU1NjYxCnYgMy41NzEyNDAgMi42MDY1ODkgLTIuODU5MTIyCnYgMy41NzkwNjIgMi42MDU2NjggLTIuODYzODQ3CnYgMy41ODYwMzYgMi42MDQ1MjMgLTIuODY5NzIyCnYgMy41OTE5OTQgMi42MDMxODIgLTIuODc2NjAwCnYgMy41OTY3ODYgMi42MDE2NzkgLTIuODg0MzEyCnYgMy42MDAyOTYgMi42MDAwNTAgLTIuODkyNjY5CnYgMy42MDI0MzggMi41OTgzMzYgLTIuOTAxNDY0CnYgMy41NDQ3MDIgMi41ODU5MDkgLTIuODUwNzI2CnYgMy42MDMxNTggMi41ODU5MDkgLTIuOTA5NDUyCnYgMy41NTM4NDYgMi41ODU5MDkgLTIuODUxNDQ5CnYgMy41NjI3NjYgMi41ODU5MDkgLTIuODUzNjAwCnYgMy41NzEyNDAgMi41ODU5MDkgLTIuODU3MTI2CnYgMy41NzkwNjEgMi41ODU5MDkgLTIuODYxOTQxCnYgMy41ODYwMzYgMi41ODU5MDkgLTIuODY3OTI2CnYgMy41OTE5OTQgMi41ODU5MDkgLTIuODc0OTM0CnYgMy41OTY3ODYgMi41ODU5MDkgLTIuODgyNzkxCnYgMy42MDAyOTYgMi41ODU5MDkgLTIuODkxMzA0CnYgMy42MDI0MzggMi41ODU5MDkgLTIuOTAwMjY1CnYgMy41NDQ3MDIgMi41NjQwMDUgLTIuODUyODM5CnYgMy42MDMxNTggMi41NzUyMzkgLTIuOTEwNDgxCnYgMy41NTM4NDYgMi41NjQxNDMgLTIuODUzNTQ5CnYgMy41NjI3NjYgMi41NjQ1NTQgLTIuODU1NjYwCnYgMy41NzEyNDAgMi41NjUyMjkgLTIuODU5MTIxCnYgMy41NzkwNjEgMi41NjYxNTAgLTIuODYzODQ3CnYgMy41ODYwMzYgMi41NjcyOTUgLTIuODY5NzIxCnYgMy41OTE5OTMgMi41Njg2MzYgLTIuODc2NTk5CnYgMy41OTY3ODYgMi41NzAxMzkgLTIuODg0MzEyCnYgMy42MDAyOTYgMi41NzE3NjggLTIuODkyNjY4CnYgMy42MDI0MzcgMi41NzM0ODIgLTIuOTAxNDY0CnYgMy41NDQ3MDIgMi41NDI5NDcgLTIuODU5MDk1CnYgMy42MDMxNTggMi41NjUwMzIgLTIuOTEzNTE0CnYgMy41NTM4NDcgMi41NDMyMTggLTIuODU5NzY2CnYgMy41NjI3NjYgMi41NDQwMjcgLTIuODYxNzU5CnYgMy41NzEyNDEgMi41NDUzNTQgLTIuODY1MDI3CnYgMy41NzkwNjEgMi41NDcxNjQgLTIuODY5NDg4CnYgMy41ODYwMzYgMi41NDk0MTUgLTIuODc1MDM0CnYgMy41OTE5OTQgMi41NTIwNTAgLTIuODgxNTI3CnYgMy41OTY3ODYgMi41NTUwMDUgLTIuODg4ODA4CnYgMy42MDAyOTYgMi41NTgyMDcgLTIuODk2Njk4CnYgMy42MDI0MzggMi41NjE1NzcgLTIuOTA1MDAxCnYgMy41NDQ3MDMgMi41MjM1NDcgLTIuODY5MjUxCnYgMy42MDMxNTUgMi41NTU3MTcgLTIuOTE4MzkwCnYgMy41NTM4NDcgMi41MjM5NDMgLTIuODY5ODU2CnYgMy41NjI3NjYgMi41MjUxMjEgLTIuODcxNjU2CnYgMy41NzEyNDAgMi41MjcwNTMgLTIuODc0NjA3CnYgMy41NzkwNjIgMi41Mjk2OTEgLTIuODc4NjM2CnYgMy41ODYwMzYgMi41MzI5NjkgLTIuODgzNjQ0CnYgMy41OTE5OTMgMi41MzY4MDggLTIuODg5NTA3CnYgMy41OTY3ODYgMi41NDExMTIgLTIuODk2MDgxCnYgMy42MDAyOTUgMi41NDU3NzYgLTIuOTAzMjA1CnYgMy42MDI0MzYgMi41NTA2ODQgLTIuOTEwNzAzCnYgMy41NDQ3MDMgMi41MDY1NTIgLTIuODgyOTEyCnYgMy42MDMxNTYgMi41NDc2NjAgLTIuOTI0ODY3CnYgMy41NTM4NDcgMi41MDcwNTggLTIuODgzNDI5CnYgMy41NjI3NjYgMi41MDg1NjQgLTIuODg0OTY2CnYgMy41NzEyNDEgMi41MTEwMzIgLTIuODg3NDg1CnYgMy41NzkwNjEgMi41MTQ0MDMgLTIuODkwOTI1CnYgMy41ODYwMzYgMi41MTg1OTIgLTIuODk1MjAwCnYgMy41OTE5OTQgMi41MjM0OTcgLTIuOTAwMjA2CnYgMy41OTY3ODYgMi41Mjg5OTcgLTIuOTA1ODIwCnYgMy42MDAyOTYgMi41MzQ5NTcgLTIuOTExOTAyCnYgMy42MDI0MzcgMi41NDEyMjkgLTIuOTE4MzAzCnYgMy41NDQ3MDIgMi40OTI2MTIgLTIuODk5NTQ4CnYgMy42MDMxNTcgMi41NDExNDQgLTIuOTMyNjQzCnYgMy41NTM4NDcgMi40OTMyMTAgLTIuODk5OTU2CnYgMy41NjI3NjYgMi40OTQ5ODggLTIuOTAxMTY4CnYgMy41NzEyNDAgMi40OTc5MDIgLTIuOTAzMTU1CnYgMy41NzkwNjEgMi41MDE4ODEgLTIuOTA1ODY5CnYgMy41ODYwMzYgMi41MDY4MjcgLTIuOTA5MjQyCnYgMy41OTE5OTMgMi41MTI2MTggLTIuOTEzMTkxCnYgMy41OTY3ODYgMi41MTkxMTEgLTIuOTE3NjE4CnYgMy42MDAyOTYgMi41MjYxNDcgLTIuOTIyNDE2CnYgMy42MDI0MzcgMi41MzM1NTIgLTIuOTI3NDY2CnYgMy41NDQ3MDIgMi40ODIyNjAgLTIuOTE4NTE4CnYgMy42MDMxNjAgMi41MzYzNzAgLTIuOTQxMzkyCnYgMy41NTM4NDcgMi40ODI5MjYgLTIuOTE4ODAwCnYgMy41NjI3NjYgMi40ODQ5MDkgLTIuOTE5NjM3CnYgMy41NzEyNDEgMi40ODgxNTggLTIuOTIxMDExCnYgMy41NzkwNjIgMi40OTI1OTQgLTIuOTIyODg2CnYgMy41ODYwMzcgMi40OTgxMDggLTIuOTI1MjE3CnYgMy41OTE5OTUgMi41MDQ1NjUgLTIuOTI3OTQ3CnYgMy41OTY3ODggMi41MTE4MDQgLTIuOTMxMDA4CnYgMy42MDAyOTggMi41MTk2NDkgLTIuOTM0MzIzCnYgMy42MDI0NDAgMi41Mjc5MDUgLTIuOTM3ODE0CnYgMy41NDQ3MDIgMi40NzU4ODggLTIuOTM5MDkzCnYgMy42MDMxNTUgMi41MzM0NjIgLTIuOTUwNzgxCnYgMy41NTM4NDYgMi40NzY1OTcgLTIuOTM5MjM3CnYgMy41NjI3NjUgMi40Nzg3MDYgLTIuOTM5NjY1CnYgMy41NzEyNDAgMi40ODIxNjMgLTIuOTQwMzY3CnYgMy41NzkwNjEgMi40ODY4ODMgLTIuOTQxMzI1CnYgMy41ODYwMzUgMi40OTI3NTEgLTIuOTQyNTE2CnYgMy41OTE5OTIgMi40OTk2MjEgLTIuOTQzOTEwCnYgMy41OTY3ODUgMi41MDczMjQgLTIuOTQ1NDc0CnYgMy42MDAyOTQgMi41MTU2NzEgLTIuOTQ3MTY5CnYgMy42MDI0MzUgMi41MjQ0NTUgLTIuOTQ4OTUyCnYgMy41NDQ3MDIgMi40NzM3MTEgLTIuOTYwNzQ0CnYgMy42MDMxNTcgMi41MzIxNzIgLTIuOTYzNjAyCnYgMy41NTM4NDcgMi40NzQ0MzAgLTIuOTYwNzc5CnYgMy41NjI3NjYgMi40NzY1NzIgLTIuOTYwODg0CnYgMy41NzEyNDAgMi40ODAwODMgLTIuOTYxMDU2CnYgMy41NzkwNjEgMi40ODQ4NzYgLTIuOTYxMjkwCnYgMy41ODYwMzYgMi40OTA4MzQgLTIuOTYxNTgxCnYgMy41OTE5OTMgMi40OTc4MDkgLTIuOTYxOTIyCnYgMy41OTY3ODYgMi41MDU2MzEgLTIuOTYyMzA0CnYgMy42MDAyOTYgMi41MTQxMDcgLTIuOTYyNzE5CnYgMy42MDI0MzcgMi41MjMwMjcgLTIuOTYzMTU1CnYgMy41NDQ3MDMgMi40NzU5NjYgLTMuODU0MTcxCnYgMy42MDMxNTggMi41MzQzOTggLTMuODQ1MjU0CnYgMy41NTM4NDYgMi40NzY2ODUgLTMuODU0MDYxCnYgMy41NjI3NjYgMi40Nzg4MjYgLTMuODUzNzM1CnYgMy41NzEyNDAgMi40ODIzMzQgLTMuODUzMTk5CnYgMy41NzkwNjEgMi40ODcxMjUgLTMuODUyNDY4CnYgMy41ODYwMzYgMi40OTMwODAgLTMuODUxNTYwCnYgMy41OTE5OTMgMi41MDAwNTIgLTMuODUwNDk1CnYgMy41OTY3ODYgMi41MDc4NzAgLTMuODQ5MzAzCnYgMy42MDAyOTYgMi41MTYzNDEgLTMuODQ4MDEwCnYgMy42MDI0MzcgMi41MjUyNTcgLTMuODQ2NjQ5CnYgMy41NDQ3MDMgMi40ODIyNjAgLTMuODc0NDk0CnYgMy42MDMxNTQgMi41MzYzNzAgLTMuODUxNjIwCnYgMy41NTM4NDcgMi40ODI5MjYgLTMuODc0MjEzCnYgMy41NjI3NjUgMi40ODQ5MDggLTMuODczMzc1CnYgMy41NzEyNDAgMi40ODgxNTggLTMuODcyMDAxCnYgMy41NzkwNjEgMi40OTI1OTQgLTMuODcwMTI2CnYgMy41ODYwMzUgMi40OTgxMDggLTMuODY3Nzk1CnYgMy41OTE5OTIgMi41MDQ1NjUgLTMuODY1MDY1CnYgMy41OTY3ODQgMi41MTE4MDQgLTMuODYyMDA1CnYgMy42MDAyOTQgMi41MTk2NDkgLTMuODU4Njg5CnYgMy42MDI0MzUgMi41Mjc5MDUgLTMuODU1MTk5CnYgMy41NDQ3MDMgMi40OTI2MTIgLTMuODkzNDY0CnYgMy42MDMxNjEgMi41NDExNDQgLTMuODYwMzY5CnYgMy41NTM4NDcgMi40OTMyMTAgLTMuODkzMDU3CnYgMy41NjI3NjYgMi40OTQ5ODggLTMuODkxODQ0CnYgMy41NzEyNDAgMi40OTc5MDIgLTMuODg5ODU3CnYgMy41NzkwNjIgMi41MDE4ODEgLTMuODg3MTQzCnYgMy41ODYwMzcgMi41MDY4MjcgLTMuODgzNzcxCnYgMy41OTE5OTUgMi41MTI2MTggLTMuODc5ODIyCnYgMy41OTY3ODggMi41MTkxMTEgLTMuODc1Mzk0CnYgMy42MDAyOTkgMi41MjYxNDcgLTMuODcwNTk2CnYgMy42MDI0NDAgMi41MzM1NTIgLTMuODY1NTQ2CnYgMy41NDQ3MDMgMi41MDY1NTIgLTMuOTEwMTAwCnYgMy42MDMxNTQgMi41NDc2NjAgLTMuODY4MTQ2CnYgMy41NTM4NDcgMi41MDcwNTggLTMuOTA5NTg0CnYgMy41NjI3NjYgMi41MDg1NjQgLTMuOTA4MDQ3CnYgMy41NzEyNDAgMi41MTEwMzIgLTMuOTA1NTI3CnYgMy41NzkwNjEgMi41MTQ0MDMgLTMuOTAyMDg4CnYgMy41ODYwMzUgMi41MTg1OTIgLTMuODk3ODEyCnYgMy41OTE5OTIgMi41MjM0OTcgLTMuODkyODA2CnYgMy41OTY3ODQgMi41Mjg5OTcgLTMuODg3MTkzCnYgMy42MDAyOTQgMi41MzQ5NTcgLTMuODgxMTExCnYgMy42MDI0MzUgMi41NDEyMjkgLTMuODc0NzA5CnYgMy41NDQ3MDMgMi41MjM1NDcgLTMuOTIzNzYxCnYgMy42MDMxNTYgMi41NTU3MTcgLTMuODc0NjIyCnYgMy41NTM4NDcgMi41MjM5NDMgLTMuOTIzMTU2CnYgMy41NjI3NjYgMi41MjUxMjEgLTMuOTIxMzU2CnYgMy41NzEyNDAgMi41MjcwNTMgLTMuOTE4NDA1CnYgMy41NzkwNjEgMi41Mjk2OTEgLTMuOTE0Mzc2CnYgMy41ODYwMzYgMi41MzI5NjkgLTMuOTA5MzY5CnYgMy41OTE5OTMgMi41MzY4MDggLTMuOTAzNTA1CnYgMy41OTY3ODUgMi41NDExMTIgLTMuODk2OTMxCnYgMy42MDAyOTYgMi41NDU3NzYgLTMuODg5ODA3CnYgMy42MDI0MzYgMi41NTA2ODUgLTMuODgyMzA5CnYgMy41NDQ3MDMgMi41NDI5NDcgLTMuOTMzOTE3CnYgMy42MDMxNTkgMi41NjUwMzIgLTMuODc5NDk5CnYgMy41NTM4NDcgMi41NDMyMTggLTMuOTMzMjQ3CnYgMy41NjI3NjYgMi41NDQwMjcgLTMuOTMxMjU0CnYgMy41NzEyNDEgMi41NDUzNTQgLTMuOTI3OTg2CnYgMy41NzkwNjIgMi41NDcxNjQgLTMuOTIzNTI0CnYgMy41ODYwMzcgMi41NDk0MTUgLTMuOTE3OTc5CnYgMy41OTE5OTUgMi41NTIwNTAgLTMuOTExNDg1CnYgMy41OTY3ODggMi41NTUwMDUgLTMuOTA0MjA0CnYgMy42MDAyOTggMi41NTgyMDcgLTMuODk2MzE1CnYgMy42MDI0MzkgMi41NjE1NzcgLTMuODg4MDEyCnYgMy41NDQ3MDMgMi41NjQwMDUgLTMuOTQwMTc0CnYgMy42MDMxNTYgMi41NzUyMzkgLTMuODgyNTMxCnYgMy41NTM4NDcgMi41NjQxNDMgLTMuOTM5NDY0CnYgMy41NjI3NjYgMi41NjQ1NTQgLTMuOTM3MzUyCnYgMy41NzEyNDAgMi41NjUyMjkgLTMuOTMzODkxCnYgMy41NzkwNjEgMi41NjYxNTAgLTMuOTI5MTY1CnYgMy41ODYwMzYgMi41NjcyOTUgLTMuOTIzMjkwCnYgMy41OTE5OTMgMi41Njg2MzYgLTMuOTE2NDEzCnYgMy41OTY3ODYgMi41NzAxMzkgLTMuOTA4NzAwCnYgMy42MDAyOTYgMi41NzE3NjcgLTMuOTAwMzQ0CnYgMy42MDI0MzcgMi41NzM0ODIgLTMuODkxNTQ5CnYgMy41NDQ3MDMgMi41ODU5MDkgLTMuOTQyMjg2CnYgMy42MDMxNTYgMi41ODU5MDkgLTMuODgzNTYxCnYgMy41NTM4NDcgMi41ODU5MDkgLTMuOTQxNTYzCnYgMy41NjI3NjYgMi41ODU5MDkgLTMuOTM5NDEyCnYgMy41NzEyNDAgMi41ODU5MDkgLTMuOTM1ODg2CnYgMy41NzkwNjEgMi41ODU5MDkgLTMuOTMxMDcxCnYgMy41ODYwMzYgMi41ODU5MDkgLTMuOTI1MDg2CnYgMy41OTE5OTMgMi41ODU5MDkgLTMuOTE4MDc5CnYgMy41OTY3ODYgMi41ODU5MDkgLTMuOTEwMjIyCnYgMy42MDAyOTYgMi41ODU5MDkgLTMuOTAxNzA4CnYgMy42MDI0MzcgMi41ODU5MDkgLTMuODkyNzQ3CnYgMy41NDQ3MDMgMi42MDc4MTMgLTMuOTQwMTczCnYgMy42MDMxNTYgMi41OTY1NzggLTMuODgyNTMxCnYgMy41NTM4NDcgMi42MDc2NzUgLTMuOTM5NDYzCnYgMy41NjI3NjYgMi42MDcyNjMgLTMuOTM3MzUyCnYgMy41NzEyNDAgMi42MDY1ODkgLTMuOTMzODkxCnYgMy41NzkwNjIgMi42MDU2NjggLTMuOTI5MTY1CnYgMy41ODYwMzYgMi42MDQ1MjIgLTMuOTIzMjkwCnYgMy41OTE5OTMgMi42MDMxODIgLTMuOTE2NDEzCnYgMy41OTY3ODYgMi42MDE2NzkgLTMuOTA4NzAwCnYgMy42MDAyOTYgMi42MDAwNTAgLTMuOTAwMzQ0CnYgMy42MDI0MzcgMi41OTgzMzYgLTMuODkxNTQ4CnYgMy41NDQ3MDMgMi42Mjg4NzEgLTMuOTMzOTE3CnYgMy42MDMxNTYgMi42MDY3ODUgLTMuODc5NDk5CnYgMy41NTM4NDcgMi42Mjg1OTkgLTMuOTMzMjQ3CnYgMy41NjI3NjYgMi42Mjc3OTAgLTMuOTMxMjU0CnYgMy41NzEyNDAgMi42MjY0NjQgLTMuOTI3OTg2CnYgMy41NzkwNjEgMi42MjQ2NTMgLTMuOTIzNTI0CnYgMy41ODYwMzUgMi42MjI0MDMgLTMuOTE3OTc5CnYgMy41OTE5OTMgMi42MTk3NjcgLTMuOTExNDg1CnYgMy41OTY3ODUgMi42MTY4MTIgLTMuOTA0MjA0CnYgMy42MDAyOTYgMi42MTM2MTEgLTMuODk2MzE1CnYgMy42MDI0MzYgMi42MTAyNDAgLTMuODg4MDEyCnYgMy41NDQ3MDMgMi42NDgyNzEgLTMuOTIzNzYxCnYgMy42MDMxNTkgMi42MTYxMDEgLTMuODc0NjIyCnYgMy41NTM4NDcgMi42NDc4NzUgLTMuOTIzMTU2CnYgMy41NjI3NjYgMi42NDY2OTcgLTMuOTIxMzU2CnYgMy41NzEyNDAgMi42NDQ3NjUgLTMuOTE4NDA1CnYgMy41NzkwNjIgMi42NDIxMjcgLTMuOTE0Mzc2CnYgMy41ODYwMzcgMi42Mzg4NDkgLTMuOTA5MzY5CnYgMy41OTE5OTQgMi42MzUwMTAgLTMuOTAzNTA1CnYgMy41OTY3ODcgMi42MzA3MDYgLTMuODk2OTMxCnYgMy42MDAyOTcgMi42MjYwNDIgLTMuODg5ODA3CnYgMy42MDI0MzkgMi42MjExMzMgLTMuODgyMzA5CnYgMy41NDQ3MDMgMi42NjUyNjYgLTMuOTEwMTAwCnYgMy42MDMxNTggMi42MjQxNTcgLTMuODY4MTQ2CnYgMy41NTM4NDYgMi42NjQ3NjAgLTMuOTA5NTgzCnYgMy41NjI3NjYgMi42NjMyNTQgLTMuOTA4MDQ3CnYgMy41NzEyNDAgMi42NjA3ODUgLTMuOTA1NTI3CnYgMy41NzkwNjEgMi42NTc0MTUgLTMuOTAyMDg4CnYgMy41ODYwMzYgMi42NTMyMjUgLTMuODk3ODEyCnYgMy41OTE5OTMgMi42NDgzMjAgLTMuODkyODA2CnYgMy41OTY3ODYgMi42NDI4MjAgLTMuODg3MTkzCnYgMy42MDAyOTYgMi42MzY4NjEgLTMuODgxMTExCnYgMy42MDI0MzcgMi42MzA1ODggLTMuODc0NzA5CnYgMy41NDQ3MDMgMi42NzkyMDUgLTMuODkzNDY0CnYgMy42MDMxNTcgMi42MzA2NzQgLTMuODYwMzY5CnYgMy41NTM4NDcgMi42Nzg2MDggLTMuODkzMDU2CnYgMy41NjI3NjYgMi42NzY4MzAgLTMuODkxODQ0CnYgMy41NzEyNDAgMi42NzM5MTYgLTMuODg5ODU2CnYgMy41NzkwNjEgMi42Njk5MzcgLTMuODg3MTQzCnYgMy41ODYwMzYgMi42NjQ5OTEgLTMuODgzNzcwCnYgMy41OTE5OTQgMi42NTkyMDAgLTMuODc5ODIxCnYgMy41OTY3ODYgMi42NTI3MDcgLTMuODc1MzkzCnYgMy42MDAyOTYgMi42NDU2NzEgLTMuODcwNTk1CnYgMy42MDI0MzcgMi42MzgyNjYgLTMuODY1NTQ2CnYgMy41NDQ3MDMgMi42ODk1NTggLTMuODc0NDk0CnYgMy42MDMxNTUgMi42MzU0NDggLTMuODUxNjIwCnYgMy41NTM4NDcgMi42ODg4OTEgLTMuODc0MjEzCnYgMy41NjI3NjYgMi42ODY5MDkgLTMuODczMzc1CnYgMy41NzEyNDAgMi42ODM2NjAgLTMuODcyMDAxCnYgMy41NzkwNjEgMi42NzkyMjQgLTMuODcwMTI2CnYgMy41ODYwMzUgMi42NzM3MDkgLTMuODY3Nzk1CnYgMy41OTE5OTIgMi42NjcyNTMgLTMuODY1MDY2CnYgMy41OTY3ODUgMi42NjAwMTMgLTMuODYyMDA1CnYgMy42MDAyOTUgMi42NTIxNjkgLTMuODU4Njg5CnYgMy42MDI0MzUgMi42NDM5MTMgLTMuODU1MTk5CnYgMy41NDQ3MDMgMi42OTU4NTIgLTMuODU0MTcxCnYgMy42MDMxNTggMi42Mzc0MjAgLTMuODQ1MjU0CnYgMy41NTM4NDcgMi42OTUxMzIgLTMuODU0MDYxCnYgMy41NjI3NjYgMi42OTI5OTIgLTMuODUzNzM0CnYgMy41NzEyNDAgMi42ODk0ODMgLTMuODUzMTk5CnYgMy41NzkwNjIgMi42ODQ2OTIgLTMuODUyNDY4CnYgMy41ODYwMzYgMi42Nzg3MzcgLTMuODUxNTU5CnYgMy41OTE5OTQgMi42NzE3NjUgLTMuODUwNDk1CnYgMy41OTY3ODYgMi42NjM5NDcgLTMuODQ5MzAyCnYgMy42MDAyOTYgMi42NTU0NzYgLTMuODQ4MDEwCnYgMy42MDI0MzggMi42NDY1NjEgLTMuODQ2NjQ5CnYgMy41NDQ3MDMgMi42OTU5MzAgLTEuNjE4NDUwCnYgMy42MDMxNTggMi42MzgzNTYgLTEuNjMwMTM3CnYgMy41NTM4NDcgMi42OTUyMjEgLTEuNjE4NTkzCnYgMy41NjI3NjYgMi42OTMxMTIgLTEuNjE5MDIyCnYgMy41NzEyNDAgMi42ODk2NTUgLTEuNjE5NzIzCnYgMy41NzkwNjEgMi42ODQ5MzQgLTEuNjIwNjgyCnYgMy41ODYwMzYgMi42NzkwNjcgLTEuNjIxODczCnYgMy41OTE5OTQgMi42NzIxOTcgLTEuNjIzMjY3CnYgMy41OTY3ODYgMi42NjQ0OTQgLTEuNjI0ODMxCnYgMy42MDAyOTYgMi42NTYxNDcgLTEuNjI2NTI2CnYgMy42MDI0MzggMi42NDczNjIgLTEuNjI4MzA5CnYgMy42MDMxNTcgMi42Mzk2NDUgLTEuNjQyOTU5CnYgMy41NDQ3MDMgMi42OTgxMDcgLTEuNjQwMTAxCnYgMy42MDI0MzcgMi42NDg3OTEgLTEuNjQyNTEyCnYgMy42MDAyOTYgMi42NTc3MTEgLTEuNjQyMDc2CnYgMy41OTY3ODYgMi42NjYxODYgLTEuNjQxNjYyCnYgMy41OTE5OTQgMi42NzQwMDggLTEuNjQxMjc5CnYgMy41ODYwMzYgMi42ODA5ODQgLTEuNjQwOTM4CnYgMy41NzkwNjEgMi42ODY5NDIgLTEuNjQwNjQ3CnYgMy41NzEyNDAgMi42OTE3MzUgLTEuNjQwNDEyCnYgMy41NjI3NjYgMi42OTUyNDYgLTEuNjQwMjQxCnYgMy41NTM4NDcgMi42OTczODcgLTEuNjQwMTM2CnYgMy41NDQ3MDIgMi42ODk1NTggLTEuNTk3ODc1CnYgMy42MDMxNjAgMi42MzU0NDggLTEuNjIwNzQ5CnYgMy41NTM4NDcgMi42ODg4OTEgLTEuNTk4MTU3CnYgMy41NjI3NjYgMi42ODY5MDkgLTEuNTk4OTk0CnYgMy41NzEyNDEgMi42ODM2NjAgLTEuNjAwMzY4CnYgMy41NzkwNjIgMi42NzkyMjQgLTEuNjAyMjQ0CnYgMy41ODYwMzcgMi42NzM3MDkgLTEuNjA0NTc1CnYgMy41OTE5OTUgMi42NjcyNTMgLTEuNjA3MzA0CnYgMy41OTY3ODcgMi42NjAwMTMgLTEuNjEwMzY0CnYgMy42MDAyOTggMi42NTIxNjkgLTEuNjEzNjgwCnYgMy42MDI0NDAgMi42NDM5MTMgLTEuNjE3MTcxCnYgMy41NDQ3MDIgMi42NzkyMDUgLTEuNTc4OTA1CnYgMy42MDMxNTcgMi42MzA2NzQgLTEuNjEyMDAwCnYgMy41NTM4NDcgMi42Nzg2MDggLTEuNTc5MzEzCnYgMy41NjI3NjYgMi42NzY4MzAgLTEuNTgwNTI1CnYgMy41NzEyNDEgMi42NzM5MTYgLTEuNTgyNTEzCnYgMy41NzkwNjEgMi42Njk5MzcgLTEuNTg1MjI2CnYgMy41ODYwMzYgMi42NjQ5OTEgLTEuNTg4NTk5CnYgMy41OTE5OTMgMi42NTkyMDAgLTEuNTkyNTQ4CnYgMy41OTY3ODYgMi42NTI3MDcgLTEuNTk2OTc2CnYgMy42MDAyOTYgMi42NDU2NzEgLTEuNjAxNzczCnYgMy42MDI0MzcgMi42MzgyNjYgLTEuNjA2ODIzCnYgMy41NDQ3MDMgMi42NjUyNjYgLTEuNTYyMjY5CnYgMy42MDMxNTcgMi42MjQxNTcgLTEuNjA0MjIzCnYgMy41NTM4NDcgMi42NjQ3NjAgLTEuNTYyNzg2CnYgMy41NjI3NjYgMi42NjMyNTQgLTEuNTY0MzIzCnYgMy41NzEyNDAgMi42NjA3ODUgLTEuNTY2ODQyCnYgMy41NzkwNjEgMi42NTc0MTUgLTEuNTcwMjgyCnYgMy41ODYwMzYgMi42NTMyMjUgLTEuNTc0NTU3CnYgMy41OTE5OTMgMi42NDgzMjAgLTEuNTc5NTYzCnYgMy41OTY3ODYgMi42NDI4MjAgLTEuNTg1MTc3CnYgMy42MDAyOTYgMi42MzY4NjEgLTEuNTkxMjU5CnYgMy42MDI0MzcgMi42MzA1ODggLTEuNTk3NjYwCnYgMy41NDQ3MDMgMi42NDgyNzEgLTEuNTQ4NjA4CnYgMy42MDMxNTggMi42MTYxMDAgLTEuNTk3NzQ3CnYgMy41NTM4NDcgMi42NDc4NzUgLTEuNTQ5MjE0CnYgMy41NjI3NjYgMi42NDY2OTYgLTEuNTUxMDE0CnYgMy41NzEyNDEgMi42NDQ3NjQgLTEuNTUzOTY0CnYgMy41NzkwNjEgMi42NDIxMjcgLTEuNTU3OTkzCnYgMy41ODYwMzYgMi42Mzg4NDggLTEuNTYzMDAxCnYgMy41OTE5OTQgMi42MzUwMTAgLTEuNTY4ODY0CnYgMy41OTY3ODcgMi42MzA3MDUgLTEuNTc1NDM4CnYgMy42MDAyOTcgMi42MjYwNDEgLTEuNTgyNTYyCnYgMy42MDI0MzggMi42MjExMzIgLTEuNTkwMDYwCnYgMy41NDQ3MDMgMi42Mjg4NzEgLTEuNTM4NDUyCnYgMy42MDMxNTQgMi42MDY3ODYgLTEuNTkyODcxCnYgMy41NTM4NDcgMi42Mjg1OTkgLTEuNTM5MTIyCnYgMy41NjI3NjYgMi42Mjc3OTAgLTEuNTQxMTE2CnYgMy41NzEyNDEgMi42MjY0NjQgLTEuNTQ0Mzg0CnYgMy41NzkwNjEgMi42MjQ2NTMgLTEuNTQ4ODQ1CnYgMy41ODYwMzYgMi42MjI0MDIgLTEuNTU0MzkxCnYgMy41OTE5OTMgMi42MTk3NjcgLTEuNTYwODg0CnYgMy41OTY3ODUgMi42MTY4MTIgLTEuNTY4MTY1CnYgMy42MDAyOTQgMi42MTM2MTEgLTEuNTc2MDU0CnYgMy42MDI0MzUgMi42MTAyNDAgLTEuNTg0MzU4CnYgMy41NDQ3MDMgMi42MDc4MTMgLTEuNTMyMTk2CnYgMy42MDMxNTggMi41OTY1NzkgLTEuNTg5ODM4CnYgMy41NTM4NDcgMi42MDc2NzUgLTEuNTMyOTA1CnYgMy41NjI3NjYgMi42MDcyNjMgLTEuNTM1MDE3CnYgMy41NzEyNDAgMi42MDY1ODkgLTEuNTM4NDc4CnYgMy41NzkwNjIgMi42MDU2NjggLTEuNTQzMjA1CnYgMy41ODYwMzYgMi42MDQ1MjMgLTEuNTQ5MDc5CnYgMy41OTE5OTQgMi42MDMxODIgLTEuNTU1OTU3CnYgMy41OTY3ODYgMi42MDE2NzkgLTEuNTYzNjY5CnYgMy42MDAyOTYgMi42MDAwNTAgLTEuNTcyMDI2CnYgMy42MDI0MzggMi41OTgzMzYgLTEuNTgwODIxCnYgMy41NDQ3MDMgMi41ODU5MDkgLTEuNTMwMDgzCnYgMy42MDMxNTggMi41ODU5MDggLTEuNTg4ODA5CnYgMy41NTM4NDcgMi41ODU5MDkgLTEuNTMwODA2CnYgMy41NjI3NjYgMi41ODU5MDkgLTEuNTMyOTU3CnYgMy41NzEyNDAgMi41ODU5MDkgLTEuNTM2NDg0CnYgMy41NzkwNjIgMi41ODU5MDkgLTEuNTQxMjk5CnYgMy41ODYwMzYgMi41ODU5MDkgLTEuNTQ3MjgzCnYgMy41OTE5OTQgMi41ODU5MDkgLTEuNTU0MjkxCnYgMy41OTY3ODYgMi41ODU5MDkgLTEuNTYyMTQ4CnYgMy42MDAyOTcgMi41ODU5MDggLTEuNTcwNjYxCnYgMy42MDI0MzggMi41ODU5MDggLTEuNTc5NjIyCnYgMy41NDQ3MDMgMi41NjQwMDUgLTEuNTMyMTk2CnYgMy42MDMxNTggMi41NzUyMzkgLTEuNTg5ODM4CnYgMy41NTM4NDcgMi41NjQxNDMgLTEuNTMyOTA1CnYgMy41NjI3NjYgMi41NjQ1NTQgLTEuNTM1MDE3CnYgMy41NzEyNDEgMi41NjUyMjkgLTEuNTM4NDc4CnYgMy41NzkwNjIgMi41NjYxNTAgLTEuNTQzMjA0CnYgMy41ODYwMzcgMi41NjcyOTUgLTEuNTQ5MDc5CnYgMy41OTE5OTQgMi41Njg2MzYgLTEuNTU1OTU3CnYgMy41OTY3ODYgMi41NzAxMzkgLTEuNTYzNjY5CnYgMy42MDAyOTYgMi41NzE3NjggLTEuNTcyMDI1CnYgMy42MDI0MzggMi41NzM0ODIgLTEuNTgwODIxCnYgMy41NDQ3MDMgMi41NDI5NDcgLTEuNTM4NDUzCnYgMy42MDMxNTggMi41NjUwMzIgLTEuNTkyODcxCnYgMy41NTM4NDcgMi41NDMyMTggLTEuNTM5MTIyCnYgMy41NjI3NjYgMi41NDQwMjcgLTEuNTQxMTE2CnYgMy41NzEyNDEgMi41NDUzNTQgLTEuNTQ0Mzg0CnYgMy41NzkwNjIgMi41NDcxNjQgLTEuNTQ4ODQ1CnYgMy41ODYwMzYgMi41NDk0MTUgLTEuNTU0MzkxCnYgMy41OTE5OTQgMi41NTIwNTAgLTEuNTYwODg0CnYgMy41OTY3ODYgMi41NTUwMDUgLTEuNTY4MTY1CnYgMy42MDAyOTcgMi41NTgyMDcgLTEuNTc2MDU0CnYgMy42MDI0MzggMi41NjE1NzcgLTEuNTg0MzU4CnYgMy41NDQ3MDMgMi41MjM1NDcgLTEuNTQ4NjA4CnYgMy42MDMxNTUgMi41NTU3MTggLTEuNTk3NzQ3CnYgMy41NTM4NDcgMi41MjM5NDMgLTEuNTQ5MjE0CnYgMy41NjI3NjYgMi41MjUxMjEgLTEuNTUxMDE0CnYgMy41NzEyNDAgMi41MjcwNTMgLTEuNTUzOTY0CnYgMy41NzkwNjEgMi41Mjk2OTEgLTEuNTU3OTkzCnYgMy41ODYwMzUgMi41MzI5NjkgLTEuNTYzMDAxCnYgMy41OTE5OTMgMi41MzY4MDggLTEuNTY4ODY0CnYgMy41OTY3ODUgMi41NDExMTIgLTEuNTc1NDM4CnYgMy42MDAyOTUgMi41NDU3NzYgLTEuNTgyNTYyCnYgMy42MDI0MzYgMi41NTA2ODUgLTEuNTkwMDYwCnYgMy41NDQ3MDMgMi41MDY1NTIgLTEuNTYyMjY5CnYgMy42MDMxNTcgMi41NDc2NjAgLTEuNjA0MjI0CnYgMy41NTM4NDcgMi41MDcwNTggLTEuNTYyNzg2CnYgMy41NjI3NjYgMi41MDg1NjQgLTEuNTY0MzIzCnYgMy41NzEyNDAgMi41MTEwMzIgLTEuNTY2ODQyCnYgMy41NzkwNjEgMi41MTQ0MDMgLTEuNTcwMjgyCnYgMy41ODYwMzYgMi41MTg1OTIgLTEuNTc0NTU3CnYgMy41OTE5OTMgMi41MjM0OTcgLTEuNTc5NTYzCnYgMy41OTY3ODUgMi41Mjg5OTcgLTEuNTg1MTc3CnYgMy42MDAyOTYgMi41MzQ5NTcgLTEuNTkxMjU5CnYgMy42MDI0MzcgMi41NDEyMjkgLTEuNTk3NjYxCnYgMy41NDQ3MDMgMi40OTI2MTIgLTEuNTc4OTA1CnYgMy42MDMxNTcgMi41NDExNDQgLTEuNjEyMDAwCnYgMy41NTM4NDcgMi40OTMyMTAgLTEuNTc5MzEzCnYgMy41NjI3NjYgMi40OTQ5ODggLTEuNTgwNTI1CnYgMy41NzEyNDAgMi40OTc5MDIgLTEuNTgyNTEzCnYgMy41NzkwNjIgMi41MDE4ODEgLTEuNTg1MjI2CnYgMy41ODYwMzYgMi41MDY4MjcgLTEuNTg4NTk5CnYgMy41OTE5OTMgMi41MTI2MTggLTEuNTkyNTQ4CnYgMy41OTY3ODYgMi41MTkxMTEgLTEuNTk2OTc2CnYgMy42MDAyOTYgMi41MjYxNDcgLTEuNjAxNzczCnYgMy42MDI0MzcgMi41MzM1NTIgLTEuNjA2ODIzCnYgMy41NDQ3MDMgMi40ODIyNjAgLTEuNTk3ODc1CnYgMy42MDMxNjAgMi41MzYzNzAgLTEuNjIwNzQ5CnYgMy41NTM4NDcgMi40ODI5MjYgLTEuNTk4MTU3CnYgMy41NjI3NjYgMi40ODQ5MDggLTEuNTk4OTk1CnYgMy41NzEyNDEgMi40ODgxNTggLTEuNjAwMzY4CnYgMy41NzkwNjIgMi40OTI1OTQgLTEuNjAyMjQ0CnYgMy41ODYwMzcgMi40OTgxMDggLTEuNjA0NTc1CnYgMy41OTE5OTUgMi41MDQ1NjUgLTEuNjA3MzA0CnYgMy41OTY3ODcgMi41MTE4MDQgLTEuNjEwMzY1CnYgMy42MDAyOTggMi41MTk2NDkgLTEuNjEzNjgxCnYgMy42MDI0NDAgMi41Mjc5MDUgLTEuNjE3MTcxCnYgMy41NDQ3MDMgMi40NzU4ODggLTEuNjE4NDUwCnYgMy42MDMxNTUgMi41MzM0NjIgLTEuNjMwMTM4CnYgMy41NTM4NDcgMi40NzY1OTcgLTEuNjE4NTkzCnYgMy41NjI3NjYgMi40Nzg3MDYgLTEuNjE5MDIyCnYgMy41NzEyNDAgMi40ODIxNjMgLTEuNjE5NzI0CnYgMy41NzkwNjEgMi40ODY4ODQgLTEuNjIwNjgyCnYgMy41ODYwMzYgMi40OTI3NTEgLTEuNjIxODczCnYgMy41OTE5OTMgMi40OTk2MjEgLTEuNjIzMjY3CnYgMy41OTY3ODUgMi41MDczMjQgLTEuNjI0ODMxCnYgMy42MDAyOTUgMi41MTU2NzEgLTEuNjI2NTI2CnYgMy42MDI0MzYgMi41MjQ0NTUgLTEuNjI4MzA5CnYgMy41NDQ3MDMgMi40NzM3MTEgLTEuNjQwMTAxCnYgMy42MDMxNTcgMi41MzIxNzIgLTEuNjQyOTU5CnYgMy41NTM4NDcgMi40NzQ0MzAgLTEuNjQwMTM2CnYgMy41NjI3NjYgMi40NzY1NzIgLTEuNjQwMjQxCnYgMy41NzEyNDAgMi40ODAwODMgLTEuNjQwNDEyCnYgMy41NzkwNjEgMi40ODQ4NzYgLTEuNjQwNjQ3CnYgMy41ODYwMzYgMi40OTA4MzQgLTEuNjQwOTM4CnYgMy41OTE5OTQgMi40OTc4MDkgLTEuNjQxMjc5CnYgMy41OTY3ODYgMi41MDU2MzEgLTEuNjQxNjYyCnYgMy42MDAyOTYgMi41MTQxMDcgLTEuNjQyMDc2CnYgMy42MDI0MzcgMi41MjMwMjcgLTEuNjQyNTEyCnYgMy41NDQ3MDIgMi40NzU5NjYgLTIuNTMzNTI4CnYgMy42MDMxNTggMi41MzQzOTggLTIuNTI0NjExCnYgMy41NTM4NDcgMi40NzY2ODUgLTIuNTMzNDE4CnYgMy41NjI3NjYgMi40Nzg4MjYgLTIuNTMzMDkyCnYgMy41NzEyNDEgMi40ODIzMzQgLTIuNTMyNTU2CnYgMy41NzkwNjIgMi40ODcxMjUgLTIuNTMxODI1CnYgMy41ODYwMzYgMi40OTMwODAgLTIuNTMwOTE3CnYgMy41OTE5OTQgMi41MDAwNTIgLTIuNTI5ODUyCnYgMy41OTY3ODYgMi41MDc4NzAgLTIuNTI4NjYwCnYgMy42MDAyOTcgMi41MTYzNDEgLTIuNTI3MzY3CnYgMy42MDI0MzggMi41MjUyNTcgLTIuNTI2MDA2CnYgMy41NDQ3MDMgMi40ODIyNjAgLTIuNTUzODUxCnYgMy42MDMxNTQgMi41MzYzNzAgLTIuNTMwOTc3CnYgMy41NTM4NDcgMi40ODI5MjYgLTIuNTUzNTcwCnYgMy41NjI3NjYgMi40ODQ5MDkgLTIuNTUyNzMyCnYgMy41NzEyNDAgMi40ODgxNTggLTIuNTUxMzU4CnYgMy41NzkwNjEgMi40OTI1OTQgLTIuNTQ5NDgzCnYgMy41ODYwMzYgMi40OTgxMDggLTIuNTQ3MTUyCnYgMy41OTE5OTMgMi41MDQ1NjUgLTIuNTQ0NDIyCnYgMy41OTY3ODUgMi41MTE4MDQgLTIuNTQxMzYyCnYgMy42MDAyOTQgMi41MTk2NDkgLTIuNTM4MDQ2CnYgMy42MDI0MzYgMi41Mjc5MDUgLTIuNTM0NTU1CnYgMy41NDQ3MDIgMi40OTI2MTIgLTIuNTcyODIxCnYgMy42MDMxNjEgMi41NDExNDQgLTIuNTM5NzI2CnYgMy41NTM4NDcgMi40OTMyMTAgLTIuNTcyNDEzCnYgMy41NjI3NjYgMi40OTQ5ODggLTIuNTcxMjAxCnYgMy41NzEyNDEgMi40OTc5MDIgLTIuNTY5MjE0CnYgMy41NzkwNjIgMi41MDE4ODEgLTIuNTY2NTAwCnYgMy41ODYwMzcgMi41MDY4MjcgLTIuNTYzMTI4CnYgMy41OTE5OTUgMi41MTI2MTggLTIuNTU5MTc5CnYgMy41OTY3ODggMi41MTkxMTEgLTIuNTU0NzUxCnYgMy42MDAyOTkgMi41MjYxNDcgLTIuNTQ5OTUzCnYgMy42MDI0NDAgMi41MzM1NTIgLTIuNTQ0OTAzCnYgMy41NDQ3MDMgMi41MDY1NTIgLTIuNTg5NDU3CnYgMy42MDMxNTQgMi41NDc2NjAgLTIuNTQ3NTAzCnYgMy41NTM4NDcgMi41MDcwNTggLTIuNTg4OTQxCnYgMy41NjI3NjYgMi41MDg1NjQgLTIuNTg3NDA0CnYgMy41NzEyNDAgMi41MTEwMzIgLTIuNTg0ODg0CnYgMy41NzkwNjEgMi41MTQ0MDMgLTIuNTgxNDQ1CnYgMy41ODYwMzYgMi41MTg1OTIgLTIuNTc3MTY5CnYgMy41OTE5OTIgMi41MjM0OTcgLTIuNTcyMTYzCnYgMy41OTY3ODUgMi41Mjg5OTcgLTIuNTY2NTUwCnYgMy42MDAyOTQgMi41MzQ5NTcgLTIuNTYwNDY3CnYgMy42MDI0MzUgMi41NDEyMjkgLTIuNTU0MDY1CnYgMy41NDQ3MDMgMi41MjM1NDcgLTIuNjAzMTE4CnYgMy42MDMxNTYgMi41NTU3MTggLTIuNTUzOTc5CnYgMy41NTM4NDcgMi41MjM5NDMgLTIuNjAyNTEzCnYgMy41NjI3NjYgMi41MjUxMjEgLTIuNjAwNzEzCnYgMy41NzEyNDAgMi41MjcwNTMgLTIuNTk3NzYyCnYgMy41NzkwNjEgMi41Mjk2OTEgLTIuNTkzNzMzCnYgMy41ODYwMzYgMi41MzI5NjkgLTIuNTg4NzI2CnYgMy41OTE5OTMgMi41MzY4MDggLTIuNTgyODYyCnYgMy41OTY3ODUgMi41NDExMTIgLTIuNTc2Mjg4CnYgMy42MDAyOTUgMi41NDU3NzYgLTIuNTY5MTY0CnYgMy42MDI0MzcgMi41NTA2ODUgLTIuNTYxNjY2CnYgMy41NDQ3MDMgMi41NDI5NDcgLTIuNjEzMjc0CnYgMy42MDMxNjAgMi41NjUwMzMgLTIuNTU4ODU2CnYgMy41NTM4NDcgMi41NDMyMTggLTIuNjEyNjA0CnYgMy41NjI3NjYgMi41NDQwMjcgLTIuNjEwNjExCnYgMy41NzEyNDAgMi41NDUzNTQgLTIuNjA3MzQzCnYgMy41NzkwNjIgMi41NDcxNjUgLTIuNjAyODgxCnYgMy41ODYwMzcgMi41NDk0MTUgLTIuNTk3MzM1CnYgMy41OTE5OTUgMi41NTIwNTEgLTIuNTkwODQyCnYgMy41OTY3ODcgMi41NTUwMDYgLTIuNTgzNTYxCnYgMy42MDAyOTggMi41NTgyMDggLTIuNTc1NjcyCnYgMy42MDI0MzkgMi41NjE1NzggLTIuNTY3MzY5CnYgMy41NDQ3MDMgMi41NjQwMDUgLTIuNjE5NTMwCnYgMy42MDMxNTMgMi41NzUyMzkgLTIuNTYxODg4CnYgMy41NTM4NDcgMi41NjQxNDMgLTIuNjE4ODIwCnYgMy41NjI3NjYgMi41NjQ1NTQgLTIuNjE2NzA5CnYgMy41NzEyNDAgMi41NjUyMjkgLTIuNjEzMjQ4CnYgMy41NzkwNjEgMi41NjYxNTAgLTIuNjA4NTIyCnYgMy41ODYwMzUgMi41NjcyOTUgLTIuNjAyNjQ3CnYgMy41OTE5OTIgMi41Njg2MzYgLTIuNTk1NzY5CnYgMy41OTY3ODQgMi41NzAxMzkgLTIuNTg4MDU3CnYgMy42MDAyOTQgMi41NzE3NjcgLTIuNTc5NzAwCnYgMy42MDI0MzQgMi41NzM0ODIgLTIuNTcwOTA1CnYgMy41NDQ3MDIgMi41ODU5MDkgLTIuNjIxNjQzCnYgMy42MDMxNjMgMi41ODU5MDggLTIuNTYyOTE3CnYgMy41NTM4NDcgMi41ODU5MDkgLTIuNjIwOTIwCnYgMy41NjI3NjcgMi41ODU5MDkgLTIuNjE4NzY5CnYgMy41NzEyNDEgMi41ODU5MDkgLTIuNjE1MjQzCnYgMy41NzkwNjMgMi41ODU5MDkgLTIuNjEwNDI4CnYgMy41ODYwMzggMi41ODU5MDkgLTIuNjA0NDQzCnYgMy41OTE5OTYgMi41ODU5MDkgLTIuNTk3NDM2CnYgMy41OTY3ODkgMi41ODU5MDkgLTIuNTg5NTc4CnYgMy42MDAzMDAgMi41ODU5MDkgLTIuNTgxMDY1CnYgMy42MDI0NDMgMi41ODU5MDkgLTIuNTcyMTA0CnYgMy41NDQ3MDMgMi42MDc4MTMgLTIuNjE5NTMwCnYgMy42MDMxNTMgMi41OTY1NzggLTIuNTYxODg4CnYgMy41NTM4NDcgMi42MDc2NzUgLTIuNjE4ODIxCnYgMy41NjI3NjYgMi42MDcyNjMgLTIuNjE2NzA5CnYgMy41NzEyNDAgMi42MDY1ODkgLTIuNjEzMjQ4CnYgMy41NzkwNjEgMi42MDU2NjggLTIuNjA4NTIyCnYgMy41ODYwMzUgMi42MDQ1MjMgLTIuNjAyNjQ4CnYgMy41OTE5OTIgMi42MDMxODIgLTIuNTk1NzcwCnYgMy41OTY3ODQgMi42MDE2NzkgLTIuNTg4MDU4CnYgMy42MDAyOTMgMi42MDAwNTAgLTIuNTc5NzAxCnYgMy42MDI0MzQgMi41OTgzMzYgLTIuNTcwOTA2CnYgMy41NDQ3MDMgMi42Mjg4NzEgLTIuNjEzMjc0CnYgMy42MDMxNTYgMi42MDY3ODYgLTIuNTU4ODU2CnYgMy41NTM4NDcgMi42Mjg1OTkgLTIuNjEyNjAzCnYgMy41NjI3NjYgMi42Mjc3OTAgLTIuNjEwNjEwCnYgMy41NzEyNDAgMi42MjY0NjQgLTIuNjA3MzQyCnYgMy41NzkwNjEgMi42MjQ2NTMgLTIuNjAyODgxCnYgMy41ODYwMzYgMi42MjI0MDIgLTIuNTk3MzM1CnYgMy41OTE5OTMgMi42MTk3NjcgLTIuNTkwODQxCnYgMy41OTY3ODUgMi42MTY4MTIgLTIuNTgzNTYxCnYgMy42MDAyOTYgMi42MTM2MTEgLTIuNTc1NjcyCnYgMy42MDI0MzcgMi42MTAyNDAgLTIuNTY3MzY4CnYgMy41NDQ3MDIgMi42NDgyNzEgLTIuNjAzMTE4CnYgMy42MDMxNTkgMi42MTYxMDAgLTIuNTUzOTc5CnYgMy41NTM4NDcgMi42NDc4NzUgLTIuNjAyNTEzCnYgMy41NjI3NjYgMi42NDY2OTYgLTIuNjAwNzEzCnYgMy41NzEyNDEgMi42NDQ3NjUgLTIuNTk3NzYyCnYgMy41NzkwNjIgMi42NDIxMjcgLTIuNTkzNzMzCnYgMy41ODYwMzcgMi42Mzg4NDggLTIuNTg4NzI2CnYgMy41OTE5OTQgMi42MzUwMTAgLTIuNTgyODYyCnYgMy41OTY3ODcgMi42MzA3MDUgLTIuNTc2Mjg4CnYgMy42MDAyOTggMi42MjYwNDEgLTIuNTY5MTY0CnYgMy42MDI0MzkgMi42MjExMzMgLTIuNTYxNjY2CnYgMy41NDQ3MDIgMi42NjUyNjYgLTIuNTg5NDU3CnYgMy42MDMxNTggMi42MjQxNTggLTIuNTQ3NTAzCnYgMy41NTM4NDcgMi42NjQ3NjAgLTIuNTg4OTQwCnYgMy41NjI3NjYgMi42NjMyNTQgLTIuNTg3NDA0CnYgMy41NzEyNDEgMi42NjA3ODUgLTIuNTg0ODg0CnYgMy41NzkwNjIgMi42NTc0MTUgLTIuNTgxNDQ0CnYgMy41ODYwMzcgMi42NTMyMjYgLTIuNTc3MTY5CnYgMy41OTE5OTQgMi42NDgzMjEgLTIuNTcyMTYzCnYgMy41OTY3ODYgMi42NDI4MjAgLTIuNTY2NTQ5CnYgMy42MDAyOTcgMi42MzY4NjEgLTIuNTYwNDY3CnYgMy42MDI0MzggMi42MzA1ODkgLTIuNTU0MDY2CnYgMy41NDQ3MDMgMi42NzkyMDUgLTIuNTcyODIxCnYgMy42MDMxNTggMi42MzA2NzQgLTIuNTM5NzI2CnYgMy41NTM4NDcgMi42Nzg2MDggLTIuNTcyNDEzCnYgMy41NjI3NjYgMi42NzY4MzAgLTIuNTcxMjAxCnYgMy41NzEyNDAgMi42NzM5MTYgLTIuNTY5MjE0CnYgMy41NzkwNjIgMi42Njk5MzcgLTIuNTY2NTAwCnYgMy41ODYwMzYgMi42NjQ5OTEgLTIuNTYzMTI4CnYgMy41OTE5OTMgMi42NTkyMDAgLTIuNTU5MTc4CnYgMy41OTY3ODYgMi42NTI3MDcgLTIuNTU0NzUwCnYgMy42MDAyOTYgMi42NDU2NzEgLTIuNTQ5OTUzCnYgMy42MDI0MzcgMi42MzgyNjYgLTIuNTQ0OTAzCnYgMy41NDQ3MDMgMi42ODk1NTggLTIuNTUzODUxCnYgMy42MDMxNTUgMi42MzU0NDggLTIuNTMwOTc3CnYgMy41NTM4NDcgMi42ODg4OTEgLTIuNTUzNTY5CnYgMy41NjI3NjYgMi42ODY5MDkgLTIuNTUyNzMyCnYgMy41NzEyNDAgMi42ODM2NjAgLTIuNTUxMzU4CnYgMy41NzkwNjEgMi42NzkyMjQgLTIuNTQ5NDgzCnYgMy41ODYwMzYgMi42NzM3MDkgLTIuNTQ3MTUyCnYgMy41OTE5OTMgMi42NjcyNTMgLTIuNTQ0NDIyCnYgMy41OTY3ODUgMi42NjAwMTMgLTIuNTQxMzYyCnYgMy42MDAyOTUgMi42NTIxNjkgLTIuNTM4MDQ2CnYgMy42MDI0MzYgMi42NDM5MTMgLTIuNTM0NTU1CnYgMy41NDQ3MDMgMi42OTU4NTIgLTIuNTMzNTI4CnYgMy42MDMxNTggMi42Mzc0MjAgLTIuNTI0NjExCnYgMy41NTM4NDcgMi42OTUxMzIgLTIuNTMzNDE4CnYgMy41NjI3NjYgMi42OTI5OTIgLTIuNTMzMDkxCnYgMy41NzEyNDAgMi42ODk0ODMgLTIuNTMyNTU2CnYgMy41NzkwNjEgMi42ODQ2OTIgLTIuNTMxODI1CnYgMy41ODYwMzYgMi42Nzg3MzggLTIuNTMwOTE2CnYgMy41OTE5OTQgMi42NzE3NjUgLTIuNTI5ODUyCnYgMy41OTY3ODYgMi42NjM5NDcgLTIuNTI4NjU5CnYgMy42MDAyOTYgMi42NTU0NzYgLTIuNTI3MzY2CnYgMy42MDI0MzggMi42NDY1NjEgLTIuNTI2MDA2CnYgMy41MDA2OTQgMi42OTgzNDUgLTQuNDM0MTUxCnYgMy41MDE3MTMgMi42OTM5ODQgLTQuNDI3OTU3CnYgMy41MDI4OTIgMi42ODg5NjEgLTQuNDIyMjk0CnYgMy41MDM1NTggMi42ODYxMzggLTQuNDE5NzUyCnYgMy41MDM4NzUgMi42ODMzNTcgLTQuNDE3MjM0CnYgMy41MDQ1NzYgMi42NzcyNDYgLTQuNDEyODM5CnYgMy41MDUzMzIgMi42NzA2ODggLTQuNDA5MTY1CnYgMy41MDYxMzMgMi42NjM3NjQgLTQuNDA2MjU5CnYgMy41MDY5NjkgMi42NTY1NjQgLTQuNDA0MTU2CnYgMy41MDc4MzAgMi42NDkxNzUgLTQuNDAyODg0CnYgMy41MDg3MDUgMi42NDE2OTMgLTQuNDAyNDU5CnYgMy41MTA4MTggMi42MjM2NTcgLTQuNDAyNDU4CnYgMy41MDg3MzggMi41NDI4NTIgLTQuNDAyNDU4CnYgMy41MTA4MTggMi41NjA2MDQgLTQuNDAyNDU5CnYgMy41MDc4NzMgMi41MzU0NTQgLTQuNDAyODg0CnYgMy41MDcwMjAgMi41MjgxNDkgLTQuNDA0MTU2CnYgMy41MDYxOTEgMi41MjEwMjkgLTQuNDA2MjU5CnYgMy41MDUzOTcgMi41MTQxODMgLTQuNDA5MTY1CnYgMy41MDQ2NDYgMi41MDc2OTcgLTQuNDEyODM4CnYgMy41MDM5NDkgMi41MDE2NTQgLTQuNDE3MjMzCnYgMy41MDMwNTUgMi40OTYxNDEgLTQuNDIyMjk1CnYgMy41MDM1NTkgMi40OTgyNjUgLTQuNDIwMzM3CnYgMy41MDE4OTIgMi40OTEyMzIgLTQuNDI3OTU3CnYgMy41MDA4ODQgMi40ODY5NjkgLTQuNDM0MTUxCnYgMy41MDAwNDUgMi40ODM0MDUgLTQuNDQwNzk4CnYgMy40OTk0ODYgMi40NzcyNjkgLTQuODk5ODkyCnYgMy41MDAxNzYgMi43MDgxMzggLTQuODk5ODkxCnYgMy41MDAwNDUgMi43MDg1NjIgLTQuODkyMzA5CnYgMy40OTkzNzIgMi40NzY4NTcgLTQuODkyMzA5CnYgMy40OTgzNzIgMi43MDg2NDMgLTQuNDcwMTgyCnYgMy40OTg1NDYgMi40NzY4OTcgLTQuNDcwMTgxCnYgMy40OTg0NDMgMi43MDgyMjIgLTQuNDYyNjAwCnYgMy40OTg2MzAgMi40NzczMTAgLTQuNDYyNTk5CnYgMy40OTg3MTUgMi43MDY5NjAgLTQuNDU1MTEyCnYgMy40OTg5MTEgMi40Nzg1NDUgLTQuNDU1MTEyCnYgMy40OTkxODUgMi43MDQ4NzUgLTQuNDQ3ODE0CnYgMy40OTk4NDggMi43MDE5OTEgLTQuNDQwNzk3CnYgMy40OTkzODQgMi40ODA1ODUgLTQuNDQ3ODE0CnYgMy41MDA1MTAgMi43MDY4NjMgLTQuOTA3Mzc5CnYgMy41MDEwMzUgMi43MDQ3ODUgLTQuOTE0Njc3CnYgMy41MDE3NTYgMi43MDE4ODYgLTQuOTIxNjk0CnYgMy41MDI2NTIgMi42OTgyNTEgLTQuOTI4MzM5CnYgMy41MDM3MjEgMi42OTM4ODcgLTQuOTM0NTM0CnYgMy41MDQ5NDUgMi42ODg4NjIgLTQuOTQwMTk3CnYgMy41MDU2OTIgMi42ODMyNjkgLTQuOTQ1MjU3CnYgMy41MDUwOTQgMi42ODgyNDggLTQuOTQwNzUwCnYgMy41MDY0MjMgMi42NzcxNTcgLTQuOTQ5NjUyCnYgMy41MDcyMDQgMi42NzA1OTcgLTQuOTUzMzI2CnYgMy41MDY3MzUgMi41MTQxMTggLTQuOTUzMzI1CnYgMy41MDU5NjYgMi41MDc2MzMgLTQuOTQ5NjUyCnYgMy41MDUyNDcgMi41MDE1OTEgLTQuOTQ1MjU3CnYgMy41MDUxMDQgMi41MDAzODYgLTQuOTQ0MTU0CnYgMy41MDQwNjggMi40OTYwOTIgLTQuOTQwMTk3CnYgMy41MDI4ODMgMi40OTExODQgLTQuOTM0NTM0CnYgMy41MDE4NTEgMi40ODY5MjIgLTQuOTI4MzQwCnYgMy41MDA5ODYgMi40ODMzNTkgLTQuOTIxNjkzCnYgMy41MDAyOTggMi40ODA1NDEgLTQuOTE0Njc3CnYgMy40OTk3OTUgMi40Nzg1MDIgLTQuOTA3Mzc5CnYgMy41MDg4NzcgMi42NTY0NzEgLTQuOTU4MzM0CnYgMy41MDgwMjUgMi42NjM2NzMgLTQuOTU2MjMyCnYgMy41MDgzODMgMi41MjgwODMgLTQuOTU4MzM1CnYgMy41MDc1NDQgMi41MjA5NjMgLTQuOTU2MjMyCnYgMy41MTAxMTAgMi41NDI3ODUgLTQuOTYwMDMyCnYgMy41MTI0NjEgMi41NjI4NjIgLTQuOTYwMDMyCnYgMy41MDkyNDIgMi41MzUzODggLTQuOTU5NjA3CnYgMy41MDk3NDYgMi42NDkwODIgLTQuOTU5NjA2CnYgMy41MTA2MjQgMi42NDE2MDAgLTQuOTYwMDMyCnYgMy41MTI0NjIgMi42MjU5MTUgLTQuOTYwMDMyCnYgMy41MDUxNTggMi42ODgzMzUgLTQuOTYyMzk5CnYgMy41MTA3NzYgMi41NjA1NDYgLTQuMzg4MjE2CnYgMy41MDM1MzMgMi42ODYxMDMgLTQuNDExMjAxCnYgMy41MTA3NzggMi42MjM2MDIgLTQuMzg4ODg5CnYgMy41MDM0ODEgMi40OTgxNTcgLTQuMzkzNjM5CnYgMy41MTI1MTMgMi41NjI5MzMgLTQuOTc3NTM2CnYgMy41MDUxNjIgMi41MDA0NjYgLTQuOTYzNzQ3CnYgMy41MTI1MTEgMi42MjU5ODMgLTQuOTc2ODExCnYgMy41MTI1MTQgMi41NzAzMzEgLTQuOTc3OTU0CnYgMy41MDYwOTkgMi42NjM2NjIgLTQuMzkyOTQ2CnYgMy41MDkxNzcgMi41MzQ0ODcgLTQuOTc1OTI2CnYgMy40OTg4NDcgMi43MTQzODUgLTQuOTQyMTA5CnYgMy40OTU5NjYgMi43MjU4ODIgLTQuOTA4OTcwCnYgMy40OTQ1MzAgMi43MjQ1MjkgLTQuNDU5OTAyCnYgMy41MDc0NjAgMi42NjkwNzIgLTQuOTc1OTI0CnYgMy40OTc1MDAgMi40NzI5NDQgLTQuNDE5MzIyCnYgMy40OTU0NzQgMi40NjQxNTIgLTQuNDU4NTQ5CnYgMy40OTQ5MjkgMi40NjE0NDcgLTQuNTA5OTQ3CnYgMy40OTUyMjggMi40NjIxMjMgLTQuNTc5NjA3CnYgMy40OTczMjggMi40NjgyMDkgLTQuOTA0OTEyCnYgMy41MDA4MTMgMi40ODI0MTEgLTQuOTQ4ODY5CnYgMy40OTg5OTUgMi40OTE5OTUgLTIuODcxOTgxCnYgMy41MDYyMTIgMi41NTQyNzggLTIuODQwMzI3CnYgMy41MDk1MDcgMi41NTg4MDQgLTMuOTU3ODY1CnYgMy41MDYyMTAgMi42MTczMjcgLTIuODM5NTQyCnYgMy41MDIxMDcgMi40OTYyNzEgLTMuOTI3ODQyCnYgMy40OTkwMDYgMi42Nzk4ODQgLTIuODc1NTkxCnYgMy41MDIxMTcgMi42ODQxNTkgLTMuOTMxMDcxCnYgMy41MDk1MDUgMi42MjE4NTMgLTMuOTU3MDY5CnYgMy41MDUyNjggMi42NTc2MTUgLTMuOTQzMjU0CnYgMy40OTM1NDUgMi43MDMwNjIgLTIuODk3MTQyCnYgMy40ODk2OTAgMi43MjAxMDYgLTIuOTUzOTUyCnYgMy40OTMzNTYgMi43MTkyOTQgLTMuODQwMTg3CnYgMy40OTgwOTUgMi43MDA2MjggLTMuOTA5OTgyCnYgMy40OTQ2MTYgMi40NjUyNzMgLTMuODg5NjkzCnYgMy40OTI5NjMgMi40NTg3ODAgLTMuODM5Mzc0CnYgMy40OTAwMDkgMi40NTM5MTAgLTIuOTM1Mjg2CnYgMy40OTU1MzYgMi40Nzc0NDYgLTIuODgzMzQ2CnYgMy41MDIyNzUgMi41MjA0NTkgLTIuODUwMDcyCnYgMy41MDE2MzYgMi42NTY4MDMgLTIuODU0MTI4CnYgMy41MDYyMDAgMi42MDI0MjggLTIuODM2Mjc0CnYgMy41MDIyNzUgMi41NDg4NjkgLTEuNTA0Njk3CnYgMy40ODA5NjIgMi43MzU0NzggLTEuNjY0NDA3CnYgMy40ODM0OTQgMi43Mzg5NTYgLTIuNTIzMzUwCnYgMy40OTgyNzcgMi40OTEwMDkgLTIuNjI4NTU2CnYgMy41MDU2NDMgMi42MTY1NDggLTIuNjQ3MDUyCnYgMy40OTUwNDcgMi42NzQ0NDcgLTEuNTMyOTMxCnYgMy41MDIyNjMgMi42MTE5MDYgLTEuNTAwNzc1CnYgMy40OTgyNDMgMi42Nzg4MzcgLTIuNjE2ODQ3CnYgMy40OTUwNzMgMi40ODY2MDggLTEuNTQxNzE1CnYgMy41MDU2NTYgMi41NTM1MTUgLTIuNjUxODk3CnYgMy40OTQ4ODQgMi42OTI1MjQgLTIuNTk1NDM3CnYgMy40ODg5NjkgMi43MDAzMTYgLTEuNTYxMTc0CnYgMy40ODM2NTYgMi43MjM2ODkgLTEuNjMyMjY1CnYgMy41MDExNTEgMi41MTUyNzcgLTIuNjQxMjA5CnYgMy40OTM1NjMgMi40NzE0NTIgLTIuNjExMDE5CnYgMy40ODczODMgMi40NDYxMzEgLTIuNTQ4Njg5CnYgMy40ODUwNTMgMi40NDQxODQgLTEuNjA2OTQzCnYgMy40ODkzOTcgMi40NjI2ODggLTEuNTY1MDY3CnYgMy40OTg5NTEgMi41MjAxNDcgLTEuNTIxMjQzCnYgMy41MDIyNjYgMi41NzY2MzIgLTEuNTAxNzY1CnYgMy41MDE5NDAgMi42NDc3MjYgLTIuNjMyNDQ0CnYgMy40OTk0NzMgMi42MzYwMzkgLTEuNTExNTA1CnYgMy41MDU2NTcgMi41ODE1MDEgLTIuNjUxOTIyCnYgLTMuNDg1MTE3IDIuNjc1NTkzIC0xLjgzNTE1NAp2IC0zLjQ4NTE0MiAyLjQ4NzY4NCAtMS44MjY3NDUKdiAtMy40ODcyNTMgMi42MjAyODkgLTMuNTkwMzMzCnYgLTMuNDY1NzU3IDIuNzQyODA0IC0zLjQ5Mjc0OAp2IC0zLjQ3MDQ0MSAyLjczNjM3MSAtMS45MDQxMTgKdiAtMy40OTI1MTIgMi41NTAwMTMgLTEuODA2NTAyCnYgLTMuNDc5OTkyIDIuNjgyNjMyIC0zLjU3MzUxOAp2IC0zLjQ3OTk3NyAyLjQ5NDc3OCAtMy41Nzg2MDYKdiAtMy40OTI1MTIgMi42MTMwNjYgLTEuODA2NTQ3CnYgLTMuNDY1Njk4IDIuNDM0MDE0IC0zLjUxMjk2OAp2IC0zLjQ3MDQ5NSAyLjQyNzQyNCAtMS44ODU2NTEKdiAtMy40ODcyNjMgMi41NTcyMjMgLTMuNTg3MDQ2CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTIwOTUzCnZ0IDEuMDAwMDAwIDAuOTIwOTIyCnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTIxMDI4CnZ0IDAuOTQ2Nzc4IDAuOTIxMDI5CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTIxMDI2CnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTIxMDI2CnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTIxMDMwCnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTIxMDM2CnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTIxMDQ1CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTIxMDU2CnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTIwOTA5CnZ0IDAuNzMxNjQyIDAuOTIxMDY0CnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTIwNTUwCnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTIwMjIyCnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE5OTM1CnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE5NzAzCnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE5NTMyCnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE5NDMxCnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE5NDAzCnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE5NDQ4CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE5NTY2CnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE5NzUxCnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE5OTk3CnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTIwMjk0CnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTIwNjMxCnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTIwOTk1CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTIxMTQ0CnZ0IDAuMjY4MzU4IDAuOTIxMTUwCnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTIxMTMxCnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTIxMTE3CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTIxMTAzCnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTIxMDg4CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTIxMDc0CnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTIxMDYxCnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTIwOTcwCnZ0IDAuMDUzMjIzIDAuOTIxMDU4CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTIwOTIyCnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTIwNzg2CnZ0IDEuMDAwMDAwIDAuOTIwNzU2CnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTIwODYxCnZ0IDAuOTQ2Nzc2IDAuOTIwODYyCnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTIwODU5CnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTIwODYwCnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTIwODY0CnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTIwODcwCnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTIwODc5CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTIwODkwCnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTIwNzQyCnZ0IDAuNzMxNjQyIDAuOTIwODk3CnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTIwMzg0CnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTIwMDU1CnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE5NzY5CnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE5NTM2CnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE5MzY2CnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE5MjY0CnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE5MjM2CnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE5MjgyCnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE5Mzk5CnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE5NTg1CnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE5ODMxCnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTIwMTI4CnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTIwNDY1CnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTIwODI4CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTIwOTc3CnZ0IDAuMjY4MzU4IDAuOTIwOTg0CnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTIwOTY1CnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTIwOTUxCnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTIwOTM2CnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTIwOTIyCnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTIwOTA4CnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTIwODk0CnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTIwODAzCnZ0IDAuMDUzMjI0IDAuOTIwODkxCnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTIwNzU2CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTIwNjIwCnZ0IDEuMDAwMDAwIDAuOTIwNTg5CnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTIwNjk0CnZ0IDAuOTQ2Nzc1IDAuOTIwNjk2CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTIwNjkyCnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTIwNjkzCnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTIwNjk3CnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTIwNzAzCnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTIwNzEyCnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTIwNzIzCnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTIwNTc2CnZ0IDAuNzMxNjQxIDAuOTIwNzMwCnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTIwMjE3CnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTE5ODg4CnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE5NjAyCnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE5MzY5CnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE5MTk5CnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE5MDk4CnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE5MDY5CnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE5MTE1CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE5MjMzCnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE5NDE4CnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE5NjY0CnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTE5OTYxCnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTIwMjk4CnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTIwNjYyCnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTIwODExCnZ0IDAuMjY4MzU5IDAuOTIwODE3CnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTIwNzk4CnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTIwNzg0CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTIwNzcwCnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTIwNzU1CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTIwNzQxCnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTIwNzI4CnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTIwNjM3CnZ0IDAuMDUzMjI1IDAuOTIwNzI1CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTIwNTg5CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTE4OTcyCnZ0IDEuMDAwMDAwIDAuOTE4OTQyCnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTE5MDQ3CnZ0IDAuOTQ2NzY0IDAuOTE5MDQ5CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTE5MDQ1CnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTE5MDQ2CnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTE5MDUwCnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTE5MDU2CnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTE5MDY1CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTE5MDc2CnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTE4OTI5CnZ0IDAuNzMxNjM4IDAuOTE5MDgzCnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTE4NTcwCnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTE4MjQxCnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE3OTU1CnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE3NzIyCnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE3NTUyCnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE3NDUxCnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE3NDIyCnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE3NDY4CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE3NTg1CnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE3NzcxCnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE4MDE3CnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTE4MzE0CnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTE4NjUxCnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTE5MDE1CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTE5MTYzCnZ0IDAuMjY4MzYyIDAuOTE5MTcwCnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTE5MTUxCnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTE5MTM3CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTE5MTIzCnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTE5MTA4CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTE5MDk0CnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTE5MDgxCnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTE4OTg5CnZ0IDAuMDUzMjM2IDAuOTE5MDc3CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTE4OTQyCnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTE4ODA2CnZ0IDEuMDAwMDAwIDAuOTE4Nzc1CnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTE4ODgxCnZ0IDAuOTQ2NzYzIDAuOTE4ODgyCnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTE4ODc4CnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTE4ODc5CnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTE4ODgzCnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTE4ODg5CnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTE4ODk4CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTE4OTA5CnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTE4NzYyCnZ0IDAuNzMxNjM4IDAuOTE4OTE3CnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTE4NDAzCnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTE4MDc1CnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE3Nzg4CnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE3NTU2CnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE3Mzg1CnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE3Mjg0CnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE3MjU2CnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE3MzAxCnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE3NDE5CnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE3NjA0CnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE3ODUwCnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTE4MTQ4CnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTE4NDg1CnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTE4ODQ4CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTE4OTk3CnZ0IDAuMjY4MzYyIDAuOTE5MDAzCnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTE4OTg0CnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTE4OTcwCnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTE4OTU2CnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTE4OTQxCnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTE4OTI3CnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTE4OTE0CnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTE4ODIzCnZ0IDAuMDUzMjM3IDAuOTE4OTExCnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTE4Nzc1CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTE4NjM5CnZ0IDEuMDAwMDAwIDAuOTE4NjA4CnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTE4NzE0CnZ0IDAuOTQ2NzYxIDAuOTE4NzE1CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTE4NzEyCnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTE4NzEzCnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTE4NzE2CnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTE4NzIzCnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTE4NzMyCnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTE4NzQzCnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTE4NTk1CnZ0IDAuNzMxNjM3IDAuOTE4NzUwCnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTE4MjM3CnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTE3OTA4CnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE3NjIyCnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE3Mzg5CnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE3MjE5CnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE3MTE3CnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE3MDg5CnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE3MTM0CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE3MjUyCnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE3NDM4CnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE3Njg0CnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTE3OTgxCnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTE4MzE4CnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTE4NjgxCnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTE4ODMwCnZ0IDAuMjY4MzYzIDAuOTE4ODM3CnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTE4ODE4CnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTE4ODA0CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTE4Nzg5CnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTE4Nzc1CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTE4NzYxCnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTE4NzQ4CnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTE4NjU2CnZ0IDAuMDUzMjM4IDAuOTE4NzQ0CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTE4NjA4CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTE4NDgwCnZ0IDEuMDAwMDAwIDAuOTE4NDQ5CnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTE4NTU1CnZ0IDAuOTQ2NzYwIDAuOTE4NTU2CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTE4NTUzCnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTE4NTU0CnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTE4NTU3CnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTE4NTY0CnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTE4NTcyCnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTE4NTgzCnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTE4NDM2CnZ0IDAuNzMxNjM3IDAuOTE4NTkxCnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTE4MDc3CnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTE3NzQ5CnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE3NDYyCnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE3MjMwCnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE3MDYwCnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE2OTU4CnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE2OTMwCnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE2OTc1CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE3MDkzCnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE3Mjc5CnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE3NTI0CnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTE3ODIyCnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTE4MTU5CnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTE4NTIyCnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTE4NjcxCnZ0IDAuMjY4MzYzIDAuOTE4Njc3CnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTE4NjU4CnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTE4NjQ1CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTE4NjMwCnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTE4NjE2CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTE4NjAxCnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTE4NTg4CnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTE4NDk3CnZ0IDAuMDUzMjQwIDAuOTE4NTg1CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTE4NDQ5CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTE4MzEzCnZ0IDEuMDAwMDAwIDAuOTE4MjgzCnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTE4Mzg4CnZ0IDAuOTQ2NzU5IDAuOTE4Mzg5CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTE4Mzg2CnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTE4Mzg3CnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTE4MzkxCnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTE4Mzk3CnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTE4NDA2CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTE4NDE3CnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTE4MjcwCnZ0IDAuNzMxNjM3IDAuOTE4NDI0CnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTE3OTExCnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTE3NTgyCnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE3Mjk2CnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE3MDYzCnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE2ODkzCnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE2NzkyCnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE2NzYzCnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE2ODA5CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE2OTI3CnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE3MTEyCnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE3MzU4CnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTE3NjU1CnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTE3OTkyCnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTE4MzU2CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTE4NTA0CnZ0IDAuMjY4MzYzIDAuOTE4NTExCnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTE4NDkyCnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTE4NDc4CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTE4NDY0CnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTE4NDQ5CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTE4NDM1CnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTE4NDIyCnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTE4MzMwCnZ0IDAuMDUzMjQxIDAuOTE4NDE4CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTE4MjgzCnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuOTE4MTQ3CnZ0IDEuMDAwMDAwIDAuOTE4MTE2CnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuOTE4MjIyCnZ0IDAuOTQ2NzU4IDAuOTE4MjIzCnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuOTE4MjIwCnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuOTE4MjIwCnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuOTE4MjI0CnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuOTE4MjMwCnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuOTE4MjM5CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuOTE4MjUwCnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuOTE4MTAzCnZ0IDAuNzMxNjM2IDAuOTE4MjU4CnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuOTE3NzQ0CnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuOTE3NDE2CnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuOTE3MTI5CnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuOTE2ODk3CnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuOTE2NzI2CnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuOTE2NjI1CnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuOTE2NTk2CnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuOTE2NjQyCnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuOTE2NzYwCnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuOTE2OTQ1CnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuOTE3MTkxCnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuOTE3NDg4CnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuOTE3ODI1CnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuOTE4MTg5CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuOTE4MzM4CnZ0IDAuMjY4MzY0IDAuOTE4MzQ0CnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuOTE4MzI1CnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuOTE4MzExCnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuOTE4Mjk3CnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuOTE4MjgyCnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuOTE4MjY4CnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuOTE4MjU1CnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuOTE4MTY0CnZ0IDAuMDUzMjQyIDAuOTE4MjUyCnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuOTE4MTE2CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNjQxNzQ3CnZ0IDEuMDAwMDAwIDAuNjQxNTk1CnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuNjQyMjEzCnZ0IDAuOTM5OTcwIDAuNjQyMTk1CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuNjQyNjA0CnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuNjQzMTM3CnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuNjQzNzkzCnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuNjQ0Mjg4CnZ0IDAuODIzMzg2IDAuNjQ0MjgzCnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuNjQ0MzA3CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuNjQ0MzMxCnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuNjQzNzI5CnZ0IDAuNzQyMzQxIDAuNjQ0MzM3CnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuNjQyOTU4CnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuNjQyMTU0CnZ0IDAuNjYwMTgzIDAuNjQyMzQwCnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuNjQwODY1CnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuNjM5ODExCnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuNjM5MDM0CnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuNjM4NTYzCnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuNjM4NDE3CnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuNjM5MDE1CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuNjM5NTIxCnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuNjQwMzMwCnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuNjQxNDEyCnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuNjQyNzI1CnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuNjQzNTQ2CnZ0IDAuMzM5ODE2IDAuNjQyOTEzCnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuNjQ0MzI4CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuNjQ0OTM0CnZ0IDAuMjU3NjU5IDAuNjQ0OTM5CnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuNjQ0OTA2CnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuNjQ0ODc3CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuNjQ0MzY0CnZ0IDAuMTc2NjEzIDAuNjQ0ODY2CnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuNjQzNjg1CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuNjQzMTIzCnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuNjQyNzAwCnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuNjQyMTk4CnZ0IDAuMDYwMDI4IDAuNjQyNjc5CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuNjQxNTk1CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTY4NzUwIDAuODYwMjE1CnZ0IDEuMDAwMDAwIDAuODYwMjAxCnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDAuODU3NTMyCnZ0IDAuOTUyOTgyIDAuODYwMjM3CnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDAuODUyNTI2CnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuODQ4MTY2CnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDAuODQ0MTU5CnZ0IDAuODQ3NTAyIDAuODQ1MDQzCnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDAuODM4NzE4CnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDAuODM1NDA3CnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuODM0MzU0CnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDAuODQxODIwCnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDAuODQ1MzE2CnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDAuODUwOTI4CnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuODU2ODEzCnZ0IDAuNjM4NDczIDAuODU1MjAyCnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDAuODYxMzI4CnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDAuODY2NDQ3CnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDAuODcwOTI0CnZ0IDAuNTM3MjQyIDAuODcwOTE2CnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDAuODcwOTM4CnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDAuODcwOTI0CnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDAuODY4NTM0CnZ0IDAuNDUwODM5IDAuODcwOTAwCnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDAuODYzMzkzCnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuODU4ODQ4CnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDAuODU1MDEyCnZ0IDAuMzQ0Mjc5IDAuODU1MTQwCnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDAuODQ5MzE2CnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDAuODQ1NzI5CnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDAuODMyMDgxCnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDAuODMzMDQwCnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDAuODM2MjU5CnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDAuODQxNjE3CnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuODQ2ODg1CnZ0IDAuMTQxNzI2IDAuODQ1MDA1CnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDAuODUxMjE2CnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDAuODU2MjAwCnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDMxMjUwIDAuODYwMjE1CnZ0IDAuMDM5MzkyIDAuODYwMjI2CnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDAuODYwMjAxCnZ0IDAuNzUwMDAwIDAuNDgyOTkyCnZ0IDAuNzk0NzAwIDAuNDc4NjAzCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuODM3NjgyIDAuNDY1NjA1CnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuODc3Mjk0IDAuNDQ0NTAyCnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuOTEyMDE1IDAuNDE2MTE0CnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuOTQwNTA5IDAuMzgxNTQ3CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTYxNjgyIDAuMzQyMTY3CnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTc0NzIxIDAuMjk5NjQ0CnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTc5MTc1IDAuMjU5NDA1CnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTc0NTY3IDAuMTk1MTU1CnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTYxNjgyIDAuMTU2OTIzCnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTQwNTA5IDAuMTE3NzQ2CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTEyMDE1IDAuMDgzMjQ0CnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuODc3Mjk0IDAuMDU0ODg5CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuODM3NjgyIDAuMDMzODA1CnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuNzk0NzAwIDAuMDIwODE3CnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDE2NDMxCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzA1MzAwIDAuMDIwODE3CnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNjYyMzE4IDAuMDMzODA1CnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNjIyNzA2IDAuMDU0ODg5CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNTg3OTg1IDAuMDgzMjQ0CnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNTU5NDkxIDAuMTE3NzQ2CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTM4MzE4IDAuMTU2OTIzCnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTI1NDMzIDAuMTk1MTU2CnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTIwODI1IDAuMjU5NDA1CnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTI1Mjc5IDAuMjk5NjQ1CnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTM4MzE4IDAuMzQyMTY3CnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTU5NDkxIDAuMzgxNTQ3CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTg3OTg2IDAuNDE2MTE0CnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNjIyNzA2IDAuNDQ0NTAzCnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNjYyMzE5IDAuNDY1NjA1CnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNzA1MzAxIDAuNDc4NjAzCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZ0IDAuODgzNjE4IDAuMTM5NjY3CnZ0IDAuODcwMjUzIDAuMTIyMTE1CnZ0IDAuODgyOTYxIDAuMTIxNjA1CnZ0IDAuODk3NzM4IDAuMTQyNDkyCnZ0IDAuMzEyNTAwIDAuNjQwNzU0CnZ0IDAuMzEyNTAwIDEuMDAwMDAwCnZ0IDAuMzQzNzUwIDEuMDAwMDAwCnZ0IDAuMzQzNzUwIDAuNjQ1Njk4CnZ0IDAuMDYyNTAwIDAuNjYwOTY5CnZ0IDAuMDYyNTAwIDEuMDAwMDAwCnZ0IDAuMDkzNzUwIDEuMDAwMDAwCnZ0IDAuMDkzNzUwIDAuNjU1NDcwCnZ0IDAuMDMxMjUwIDAuNjY0NDMwCnZ0IDAuMDMxMjUwIDEuMDAwMDAwCnZ0IDAuMjgxMjUwIDAuNjM3NzIwCnZ0IDAuMjgxMjUwIDEuMDAwMDAwCnZ0IDAuMjk0ODQ4IDAuNjM3NzM4CnZ0IDAuNzgxMjUwIDAuNjQ0MzcyCnZ0IDAuNzgxMjUwIDEuMDAwMDAwCnZ0IDAuODEyNTAwIDEuMDAwMDAwCnZ0IDAuODEyNTAwIDAuNjQ4ODY3CnZ0IDAuNzg1NzYyIDAuNjQ0MzY2CnZ0IDAuODQzNzUwIDAuNjUzNjgzCnZ0IDAuODQzNzUwIDEuMDAwMDAwCnZ0IDAuODc1MDAwIDEuMDAwMDAwCnZ0IDAuODc1MDAwIDAuNjU3ODY4CnZ0IDAuNzE4NzUwIDAuNjQ0MzcyCnZ0IDAuNzE4NzUwIDEuMDAwMDAwCnZ0IDAuNzUwMDAwIDEuMDAwMDAwCnZ0IDAuNzUwMDAwIDAuNjQ0Mzg1CnZ0IDAuNTMxMjUwIDAuNjY2ODM5CnZ0IDAuNTMxMjUwIDEuMDAwMDAwCnZ0IDAuNTYyNTAwIDEuMDAwMDAwCnZ0IDAuNTYyNTAwIDAuNjYzNjM5CnZ0IDAuMTg3NTAwIDAuNjQxMjM3CnZ0IDAuMTg3NTAwIDEuMDAwMDAwCnZ0IDAuMjE4NzUwIDEuMDAwMDAwCnZ0IDAuMjE4NzUwIDAuNjM3NzIwCnZ0IDAuMjA3OTU0IDAuNjM3NzM0CnZ0IDAuNDY4NzUwIDAuNjYzMTA5CnZ0IDAuNDY4NzUwIDEuMDAwMDAwCnZ0IDAuNTAwMDAwIDEuMDAwMDAwCnZ0IDAuNTAwMDAwIDAuNjY3ODU4CnZ0IDAuNjU2MjUwIDAuNjUxMTA1CnZ0IDAuNjU2MjUwIDEuMDAwMDAwCnZ0IDAuNjg3NTAwIDEuMDAwMDAwCnZ0IDAuNjg3NTAwIDAuNjQ2MjY5CnZ0IDAuNjk4ODkwIDAuNjQ0MzQ2CnZ0IDAuOTA2MjUwIDEuMDAwMDAwCnZ0IDAuOTA2MjUwIDAuNjYzNTIwCnZ0IDAuODg2OTMzIDAuNjU5MTY1CnZ0IDAuNTkzNzUwIDEuMDAwMDAwCnZ0IDAuNTkzNzUwIDAuNjU4NzQ4CnZ0IDAuNTg5NTc2IDAuNjU5MDg0CnZ0IDAuNDM3NTAwIDAuNjU5NzMzCnZ0IDAuNDM3NTAwIDEuMDAwMDAwCnZ0IDAuMTI1MDAwIDAuNjUwNTkwCnZ0IDAuMTI1MDAwIDEuMDAwMDAwCnZ0IDAuMTU2MjUwIDEuMDAwMDAwCnZ0IDAuMTU2MjUwIDAuNjQ2MjAzCnZ0IDAuOTM3NTAwIDEuMDAwMDAwCnZ0IDAuOTM3NTAwIDAuNjY4Njk4CnZ0IDAuNjI1MDAwIDEuMDAwMDAwCnZ0IDAuNjI1MDAwIDAuNjU1MzE5CnZ0IDAuMjUwMDAwIDAuNjM3NzA3CnZ0IDAuMjUwMDAwIDEuMDAwMDAwCnZ0IDAuOTY4NzUwIDEuMDAwMDAwCnZ0IDAuOTY4NzUwIDAuNjcxODExCnZ0IDEuMDAwMDAwIDEuMDAwMDAwCnZ0IDEuMDAwMDAwIDAuNjcyNzQxCnZ0IDAuMDAwMDAwIDAuNjcyNzQxCnZ0IDAuMDAwMDAwIDEuMDAwMDAwCnZ0IDAuMzc1MDAwIDEuMDAwMDAwCnZ0IDAuMzc1MDAwIDAuNjUwMDU4CnZ0IDAuMTA0MjY0IDAuNjUzMDA2CnZ0IDAuNDA2MjUwIDEuMDAwMDAwCnZ0IDAuNDA2MjUwIDAuNjU0MzE0CnZ0IDAuNDAwNjg5IDAuNjUzMDIzCnZ0IDAuMzEyNTAwIDAuNjM0MDM5CnZ0IDAuMzEyNTAwIDEuMDAwMDAwCnZ0IDAuMzQzNzUwIDEuMDAwMDAwCnZ0IDAuMzQzNzUwIDAuNjM4OTg0CnZ0IDAuMDYyNTAwIDAuNjUwMzM4CnZ0IDAuMDYyNTAwIDEuMDAwMDAwCnZ0IDAuMDkzNzUwIDEuMDAwMDAwCnZ0IDAuMDkzNzUwIDAuNjQ0OTQxCnZ0IDAuMDkyNTg0IDAuNjQ1MDQ0CnZ0IDAuMDMxMjUwIDAuNjUzNzk5CnZ0IDAuMDMxMjUwIDEuMDAwMDAwCnZ0IDAuMjgxMjUwIDAuNjI5NzE4CnZ0IDAuMjgxMjUwIDEuMDAwMDAwCnZ0IDAuMjg3MjU3IDAuNjI5NzI2CnZ0IDAuNzgxMjUwIDAuNjM2MzcwCnZ0IDAuNzgxMjUwIDEuMDAwMDAwCnZ0IDAuODEyNTAwIDEuMDAwMDAwCnZ0IDAuODEyNTAwIDAuNjM5NTc4CnZ0IDAuNzkzMzUzIDAuNjM2MzU0CnZ0IDAuODQzNzUwIDAuNjQ0MzkzCnZ0IDAuODQzNzUwIDEuMDAwMDAwCnZ0IDAuODc1MDAwIDEuMDAwMDAwCnZ0IDAuODc1MDAwIDAuNjQ4NTc5CnZ0IDAuNzE4NzUwIDAuNjM2MzcwCnZ0IDAuNzE4NzUwIDEuMDAwMDAwCnZ0IDAuNzUwMDAwIDEuMDAwMDAwCnZ0IDAuNzUwMDAwIDAuNjM2MzgzCnZ0IDAuNTMxMjUwIDAuNjYxNDY3CnZ0IDAuNTMxMjUwIDEuMDAwMDAwCnZ0IDAuNTYyNTAwIDEuMDAwMDAwCnZ0IDAuNTYyNTAwIDAuNjU4MjY3CnZ0IDAuMTg3NTAwIDAuNjMxOTQ4CnZ0IDAuMTg3NTAwIDEuMDAwMDAwCnZ0IDAuMjE4NzUwIDEuMDAwMDAwCnZ0IDAuMjE4NzUwIDAuNjI5NzE4CnZ0IDAuMjAwMzgxIDAuNjI5NzQxCnZ0IDAuNDY4NzUwIDAuNjU3NzM2CnZ0IDAuNDY4NzUwIDEuMDAwMDAwCnZ0IDAuNTAwMDAwIDEuMDAwMDAwCnZ0IDAuNTAwMDAwIDAuNjYyNDg1CnZ0IDAuNjU2MjUwIDAuNjQ0MzkxCnZ0IDAuNjU2MjUwIDEuMDAwMDAwCnZ0IDAuNjg3NTAwIDEuMDAwMDAwCnZ0IDAuNjg3NTAwIDAuNjM5NTU0CnZ0IDAuNzA2NDYzIDAuNjM2MzU0CnZ0IDAuOTA2MjUwIDEuMDAwMDAwCnZ0IDAuOTA2MjUwIDAuNjUyODg4CnZ0IDAuODk4NDI2IDAuNjUxMTI1CnZ0IDAuNTkzNzUwIDEuMDAwMDAwCnZ0IDAuNTkzNzUwIDAuNjUzMDA5CnZ0IDAuNDM3NTAwIDAuNjU0MzYxCnZ0IDAuNDM3NTAwIDEuMDAwMDAwCnZ0IDAuMTI1MDAwIDAuNjQxMzAwCnZ0IDAuMTI1MDAwIDEuMDAwMDAwCnZ0IDAuMTU2MjUwIDEuMDAwMDAwCnZ0IDAuMTU2MjUwIDAuNjM2OTEzCnZ0IDAuOTM3NTAwIDEuMDAwMDAwCnZ0IDAuOTM3NTAwIDAuNjU4MDY3CnZ0IDAuNjI1MDAwIDEuMDAwMDAwCnZ0IDAuNjI1MDAwIDAuNjQ4NjA0CnZ0IDAuNjAyMDIyIDAuNjUxMTI3CnZ0IDAuMjUwMDAwIDAuNjI5NzA1CnZ0IDAuMjUwMDAwIDEuMDAwMDAwCnZ0IDAuOTY4NzUwIDEuMDAwMDAwCnZ0IDAuOTY4NzUwIDAuNjYxMTgxCnZ0IDEuMDAwMDAwIDEuMDAwMDAwCnZ0IDEuMDAwMDAwIDAuNjYyMTEwCnZ0IDAuMDAwMDAwIDAuNjYyMTEwCnZ0IDAuMDAwMDAwIDEuMDAwMDAwCnZ0IDAuMzc1MDAwIDEuMDAwMDAwCnZ0IDAuMzc1MDAwIDAuNjQzMzQ0CnZ0IDAuNDA2MjUwIDEuMDAwMDAwCnZ0IDAuNDA2MjUwIDAuNjQ4OTQyCnZ0IDAuMzg5MTk2IDAuNjQ0OTgyCnZ0IDAuMjk5NTcwIDAuNDc0NzE1CnZ0IDAuMjU5NDM1IDAuNDc5MTYyCnZ0IDAuMjUwMDAwIDAuNDkwMDAwCnZ0IDAuMjk2ODIyIDAuNDg1Mzg4CnZ0IDAuMzQyMDE1IDAuNDYxNzAwCnZ0IDAuMzQxODQ0IDAuNDcxNzMxCnZ0IDAuMzgxMzQ2IDAuNDQwNTU2CnZ0IDAuMzgzMzM3IDAuNDQ5NTUzCnZ0IDAuNDE1ODkxIDAuNDEyMDg1CnZ0IDAuNDE5NzA2IDAuNDE5NzA2CnZ0IDAuNDQ0Mjc5IDAuMzc3MzczCnZ0IDAuNDQ5NTUzIDAuMzgzMzM3CnZ0IDAuNDY1MzkyIDAuMzM3NzUwCnZ0IDAuNDcxNzMxIDAuMzQxODQ0CnZ0IDAuNDc4NDAxIDAuMjk0NzM5CnZ0IDAuNDg1Mzg4IDAuMjk2ODIyCnZ0IDAuNDgyNzk1IDAuMjUwMDAwCnZ0IDAuNDkwMDAwIDAuMjUwMDAwCnZ0IDAuNDc4NDAxIDAuMjA1MjYxCnZ0IDAuNDg1Mzg4IDAuMjAzMTc4CnZ0IDAuNDY1MzkyIDAuMTYyMjUwCnZ0IDAuNDcxNzMxIDAuMTU4MTU2CnZ0IDAuNDQ0Mjc5IDAuMTIyNjI3CnZ0IDAuNDQ5NTUzIDAuMTE2NjYzCnZ0IDAuNDE1ODkxIDAuMDg3OTE1CnZ0IDAuNDE5NzA2IDAuMDgwMjk0CnZ0IDAuMzgxMzQ2IDAuMDU5NDQ0CnZ0IDAuMzgzMzM3IDAuMDUwNDQ3CnZ0IDAuMzQyMDE1IDAuMDM4MzAwCnZ0IDAuMzQxODQ0IDAuMDI4MjY5CnZ0IDAuMjk5NTcxIDAuMDI1Mjg1CnZ0IDAuMjk2ODIyIDAuMDE0NjEyCnZ0IDAuMjU5NDM1IDAuMDIwODM4CnZ0IDAuMjUwMDAwIDAuMDEwMDAwCnZ0IDAuMTk1MTgzIDAuMDI1NDQ0CnZ0IDAuMjAzMTc4IDAuMDE0NjEyCnZ0IDAuMTU3MDY1IDAuMDM4MzAwCnZ0IDAuMTU4MTU2IDAuMDI4MjY5CnZ0IDAuMTE3OTQxIDAuMDU5NDQ1CnZ0IDAuMTE2NjYzIDAuMDUwNDQ3CnZ0IDAuMDgzNDYyIDAuMDg3OTE1CnZ0IDAuMDgwMjk0IDAuMDgwMjk0CnZ0IDAuMDU1MTA2IDAuMTIyNjI3CnZ0IDAuMDUwNDQ3IDAuMTE2NjYzCnZ0IDAuMDM0MDExIDAuMTYyMjUxCnZ0IDAuMDI4MjY5IDAuMTU4MTU2CnZ0IDAuMDIxMDExIDAuMjA1MjYxCnZ0IDAuMDE0NjExIDAuMjAzMTc5CnZ0IDAuMDE2NjIxIDAuMjUwMDAwCnZ0IDAuMDEwMDAwIDAuMjUwMDAwCnZ0IDAuMDIxMDEyIDAuMjk0NzM5CnZ0IDAuMDE0NjEyIDAuMjk2ODIyCnZ0IDAuMDM0MDEyIDAuMzM3NzUwCnZ0IDAuMDI4MjY5IDAuMzQxODQ0CnZ0IDAuMDU1MTA2IDAuMzc3MzczCnZ0IDAuMDUwNDQ3IDAuMzgzMzM3CnZ0IDAuMDgzNDYyIDAuNDEyMDg1CnZ0IDAuMDgwMjk1IDAuNDE5NzA2CnZ0IDAuMTE3OTQyIDAuNDQwNTU2CnZ0IDAuMTE2NjYzIDAuNDQ5NTUzCnZ0IDAuMTU3MDY1IDAuNDYxNzAwCnZ0IDAuMTU4MTU2IDAuNDcxNzMxCnZ0IDAuMTk1MTg0IDAuNDc0NTU2CnZ0IDAuMjAzMTc5IDAuNDg1Mzg5CnZ0IDAuMjk5NTcxIDAuNDc0NzE1CnZ0IDAuMjU5NDM1IDAuNDc5MTYyCnZ0IDAuMjUwMDAwIDAuNDkwMDAwCnZ0IDAuMjk2ODIyIDAuNDg1Mzg4CnZ0IDAuMzQyMDE1IDAuNDYxNzAwCnZ0IDAuMzQxODQ0IDAuNDcxNzMxCnZ0IDAuMzgxMzQ2IDAuNDQwNTU2CnZ0IDAuMzgzMzM3IDAuNDQ5NTUzCnZ0IDAuNDE1ODkxIDAuNDEyMDg1CnZ0IDAuNDE5NzA2IDAuNDE5NzA2CnZ0IDAuNDQ0Mjc5IDAuMzc3MzczCnZ0IDAuNDQ5NTUzIDAuMzgzMzM3CnZ0IDAuNDY1MzkyIDAuMzM3NzQ5CnZ0IDAuNDcxNzMxIDAuMzQxODQ0CnZ0IDAuNDc4NDAxIDAuMjk0NzM5CnZ0IDAuNDg1Mzg4IDAuMjk2ODIyCnZ0IDAuNDgyNzk1IDAuMjUwMDAwCnZ0IDAuNDkwMDAwIDAuMjUwMDAwCnZ0IDAuNDc4NDAxIDAuMjA1MjYxCnZ0IDAuNDg1Mzg4IDAuMjAzMTc4CnZ0IDAuNDY1MzkyIDAuMTYyMjUwCnZ0IDAuNDcxNzMxIDAuMTU4MTU2CnZ0IDAuNDQ0Mjc5IDAuMTIyNjI3CnZ0IDAuNDQ5NTUzIDAuMTE2NjYzCnZ0IDAuNDE1ODkxIDAuMDg3OTE1CnZ0IDAuNDE5NzA2IDAuMDgwMjk0CnZ0IDAuMzgxMzQ2IDAuMDU5NDQ0CnZ0IDAuMzgzMzM3IDAuMDUwNDQ3CnZ0IDAuMzQyMDE1IDAuMDM4MzAwCnZ0IDAuMzQxODQ0IDAuMDI4MjY5CnZ0IDAuMjk5NTcxIDAuMDI1Mjg1CnZ0IDAuMjk2ODIyIDAuMDE0NjEyCnZ0IDAuMjU5NDM0IDAuMDIwODM4CnZ0IDAuMjUwMDAwIDAuMDEwMDAwCnZ0IDAuMTk1MTgzIDAuMDI1NDQ0CnZ0IDAuMjAzMTc4IDAuMDE0NjEyCnZ0IDAuMTU3MDY1IDAuMDM4MzAwCnZ0IDAuMTU4MTU2IDAuMDI4MjY5CnZ0IDAuMTE3OTQxIDAuMDU5NDQ1CnZ0IDAuMTE2NjYzIDAuMDUwNDQ3CnZ0IDAuMDgzNDYxIDAuMDg3OTE1CnZ0IDAuMDgwMjk0IDAuMDgwMjk0CnZ0IDAuMDU1MTA2IDAuMTIyNjI3CnZ0IDAuMDUwNDQ3IDAuMTE2NjYzCnZ0IDAuMDM0MDExIDAuMTYyMjUxCnZ0IDAuMDI4MjY5IDAuMTU4MTU2CnZ0IDAuMDIxMDEyIDAuMjA1MjYxCnZ0IDAuMDE0NjExIDAuMjAzMTc5CnZ0IDAuMDE2NjIxIDAuMjUwMDAwCnZ0IDAuMDEwMDAwIDAuMjUwMDAwCnZ0IDAuMDIxMDEyIDAuMjk0NzM5CnZ0IDAuMDE0NjEyIDAuMjk2ODIyCnZ0IDAuMDM0MDEyIDAuMzM3NzUwCnZ0IDAuMDI4MjY5IDAuMzQxODQ0CnZ0IDAuMDU1MTA2IDAuMzc3MzczCnZ0IDAuMDUwNDQ3IDAuMzgzMzM3CnZ0IDAuMDgzNDYxIDAuNDEyMDg1CnZ0IDAuMDgwMjk1IDAuNDE5NzA2CnZ0IDAuMTE3OTQxIDAuNDQwNTU2CnZ0IDAuMTE2NjYzIDAuNDQ5NTUzCnZ0IDAuMTU3MDY2IDAuNDYxNzAwCnZ0IDAuMTU4MTU2IDAuNDcxNzMxCnZ0IDAuMTk1MTgzIDAuNDc0NTU2CnZ0IDAuMjAzMTc5IDAuNDg1Mzg5CnZ0IDAuNDQ2Njg2IDAuMjY4NzM3CnZ0IDAuNDQ2Njg2IDAuMjkzOTgyCnZ0IDAuNDY4NDY3IDAuMjk0ODE3CnZ0IDAuNTM2NDg5IDAuMjkyOTY1CnZ0IDAuNTUzMzE0IDAuMjkxMzkxCnZ0IDAuNTUzMzE0IDAuMjY1OTA5CnZ0IDAuNTEwMzE3IDAuMjY4NzM3CnZ0IDAuNDY3NjMwIDAuNjgwMDA5CnZ0IDAuNDY3Mzk0IDAuNjgwMDEzCnZ0IDAuNDY1NzkzIDAuNjgwMDI0CnZ0IDAuNDY0MjMyIDAuNjgwMDIxCnZ0IDAuNDYyNzMwIDAuNjgwMDAzCnZ0IDAuNDYxMzA2IDAuNjc5OTY5CnZ0IDAuNDU5OTc4IDAuNjc5OTIyCnZ0IDAuNDU4NzY0IDAuNjc5ODYxCnZ0IDAuNDU3Njc3IDAuNjc5Nzg2CnZ0IDAuNDU2NzMzIDAuNjc5NzAwCnZ0IDAuNDU1OTQyIDAuNjc5NjAyCnZ0IDAuNDU1MzE0IDAuNjc5NDk1CnZ0IDAuNDU0ODU5IDAuNjc5MzgwCnZ0IDAuNDU0NTgwIDAuNjc5MjU3CnZ0IDAuNDU0NDgzIDAuNjc5MTMwCnZ0IDAuNDU0MTE4IDAuNjcxOTE2CnZ0IDAuNDU0MjAyIDAuNjcxNzg0CnZ0IDAuNDU0NDY3IDAuNjcxNjUyCnZ0IDAuNDU0OTEwIDAuNjcxNTE5CnZ0IDAuNDU1NTI1IDAuNjcxMzg4CnZ0IDAuNDU2MzA1IDAuNjcxMjYxCnZ0IDAuNDU3MjM5IDAuNjcxMTM5CnZ0IDAuNDU4MzE1IDAuNjcxMDI0CnZ0IDAuNDU5NTIxIDAuNjcwOTE2CnZ0IDAuNDYwODQxIDAuNjcwODE4CnZ0IDAuNDYyMjU5IDAuNjcwNzMxCnZ0IDAuNDYzNzU2IDAuNjcwNjU2CnZ0IDAuNDY1MzEzIDAuNjcwNTkzCnZ0IDAuNDY2OTEzIDAuNjcwNTQ0CnZ0IDAuNDY3NjMwIDAuNjcwNTI4CnZ0IDAuMTM4NTk1IDAuNzE5NjM1CnZ0IDAuMTYzOTEyIDAuNzE5NjM1CnZ0IDAuMTY0NDEzIDAuNTMwMzY1CnZ0IDAuMTM5MjE2IDAuNTMwMzY1CnZ0IDAuNDcxODgwIDAuNjcwNTI0CnZ0IDAuNTMyMzcwIDAuNjcwNTIwCnZ0IDAuNTMyMzcwIDAuNjgwMDExCnZ0IDAuNDc0MTUyIDAuNjgwMDE1CnZ0IDAuNTQ1OTgwIDAuNjcwODE1CnZ0IDAuNTQ3NDcwIDAuNjcwODg2CnZ0IDAuNTQ5MDMzIDAuNjcwOTc1CnZ0IDAuNTUwNDkwIDAuNjcxMDc1CnZ0IDAuNTUxODIzIDAuNjcxMTg0CnZ0IDAuNTUzMDE1IDAuNjcxMzAxCnZ0IDAuNTU0MDUyIDAuNjcxNDI2CnZ0IDAuNTU0OTE3IDAuNjcxNTU1CnZ0IDAuNTU1NjA5IDAuNjcxNjg3CnZ0IDAuNTU2MTA2IDAuNjcxODIxCnZ0IDAuNTU2NDE0IDAuNjcxOTU1CnZ0IDAuNTU2NTIxIDAuNjcyMDg3CnZ0IDAuNTU2OTIyIDAuNjc5MzQ1CnZ0IDAuNTU2ODMwIDAuNjc5NDczCnZ0IDAuNTU2NTM5IDAuNjc5NTk2CnZ0IDAuNTU2MDUyIDAuNjc5NzExCnZ0IDAuNTU1Mzc3IDAuNjc5ODE4CnZ0IDAuNTU0NTIyIDAuNjc5OTE1CnZ0IDAuNTUzNDk3IDAuNjgwMDAwCnZ0IDAuNTUyMzE1IDAuNjgwMDc0CnZ0IDAuNTUwOTkxIDAuNjgwMTMzCnZ0IDAuNTQ5NTQyIDAuNjgwMTc5CnZ0IDAuNTQ3OTg3IDAuNjgwMjExCnZ0IDAuNTQ2MzQ0IDAuNjgwMjI3CnZ0IDAuNTQ1OTgwIDAuNjgwMjI3CnZ0IDAuNTQxMDUxIDAuNjcwNjY0CnZ0IDAuNTQyNjcyIDAuNjcwNjk4CnZ0IDAuNTQ0Mjc0IDAuNjcwNzQ2CnZ0IDAuNTQ1ODM1IDAuNjcwODA4CnZ0IDAuNTQ0NzUzIDAuNjgwMjMxCnZ0IDAuNTQzMTU0IDAuNjgwMjIwCnZ0IDAuNTQxNTM0IDAuNjgwMTk1CnZ0IDAuNjI1MDAwIDAuNTE3MDM2CnZ0IDAuNjI1MTc3IDAuNTE0MDc4CnZ0IDAuNjI1NzAyIDAuNTExMjEwCnZ0IDAuNjI2NTYwIDAuNTA4NTE4CnZ0IDAuNjI3NzI0IDAuNTA2MDg2CnZ0IDAuNjI5MTU5IDAuNDkzMDExCnZ0IDAuNjMwODIxIDAuNDg5MTE4CnZ0IDAuNjMyNjYxIDAuNDg1MDIxCnZ0IDAuNjM0NjIxIDAuNDgwODQ1CnZ0IDAuNjU5OTI3IDAuNTAwMDAwCnZ0IDAuODQwMDczIDAuNTAwMDAwCnZ0IDAuNjk4NzEzIDAuMzUyNjYxCnZ0IDAuNzAwNjczIDAuMzQ4OTk3CnZ0IDAuNzAyNTEyIDAuMzQ1NzM3CnZ0IDAuNzA0MTc1IDAuMzQyOTgwCnZ0IDAuNzA1NjEwIDAuMzMxMzA1CnZ0IDAuNzA2Nzc0IDAuMzMwNDk0CnZ0IDAuNzA3NjMxIDAuMzI5NTk3CnZ0IDAuNzA4MTU2IDAuMzI4NjQxCnZ0IDAuODc1MDAwIDAuNTE3MDM2CnZ0IDAuODc1MDAwIDAuNzMyOTY0CnZ0IDAuODc0NDY5IDAuNzM1OTIyCnZ0IDAuODcyODk0IDAuNzM4NzkxCnZ0IDAuODcwMzIxIDAuNzQxNDgyCnZ0IDAuODY2ODI5IDAuNzQzOTE0CnZ0IDAuODYyNTIzIDAuNzQ2MDE0CnZ0IDAuODU3NTM2IDAuNzQ3NzE4CnZ0IDAuODUyMDE4IDAuNzQ4OTczCnZ0IDAuODQ2MTM4IDAuNzQ5NzQxCnZ0IDAuODQwMDczIDAuNzUwMDAwCnZ0IDAuNjU5OTI3IDAuNzUwMDAwCnZ0IDAuNjM0NjIxIDAuNzY5MTU1CnZ0IDAuNjMyNjYxIDAuNzY0OTc5CnZ0IDAuNjMwODIxIDAuNzYwODgyCnZ0IDAuNjI5MTU5IDAuNzU2OTg5CnZ0IDAuNjI3NzI0IDAuNzQzOTE0CnZ0IDAuNjI2NTYwIDAuNzQxNDgyCnZ0IDAuNjI1NzAyIDAuNzM4NzkwCnZ0IDAuNjI1MTc3IDAuNzM1OTIyCnZ0IDAuNjI1MDAwIDAuNzMyOTY0CnZ0IDAuNjE3NTI4IDAuMjg0OTI3CnZ0IDAuNjI1MDAwIDAuMjg0OTI3CnZ0IDAuNjI1MDAwIDAuNDY1MDczCnZ0IDAuNjE3NTI4IDAuNDY1MDczCnZ0IDAuNjE3NzA4IDAuNTE3MDM2CnZ0IDAuNjE3NzA4IDAuNzMyOTY0CnZ0IDAuNjE3NDUxIDAuMDE0MDc4CnZ0IDAuNjI1MDAwIDAuMDE0MDc4CnZ0IDAuNjI1MDAwIDAuMDE3MDM2CnZ0IDAuNjE3NzA4IDAuMDE3MDM2CnZ0IDAuNjE3MTM2IDAuMDExMjEwCnZ0IDAuNjI1MDAwIDAuMDExMjEwCnZ0IDAuNjE2ODg4IDAuMDA4NTE4CnZ0IDAuNjI1MDAwIDAuMDA4NTE4CnZ0IDAuNjE2NzYxIDAuMDA2MDg2CnZ0IDAuNjI1MDAwIDAuMDA2MDg2CnZ0IDAuNjE2NzczIDAuOTg3NTIzCnZ0IDAuNjI1MDAwIDAuOTg3NTIzCnZ0IDAuNjI1MDAwIDEuMDAwMDAwCnZ0IDAuNjE2NzYxIDEuMDAwMDAwCnZ0IDAuNjE2OTA4IDAuOTgyNTM2CnZ0IDAuNjI1MDAwIDAuOTgyNTM2CnZ0IDAuNjE3MTI5IDAuOTc3MDE4CnZ0IDAuNjI1MDAwIDAuOTc3MDE4CnZ0IDAuNjE3MzY5IDAuOTcxMTM4CnZ0IDAuNjI1MDAwIDAuOTcxMTM4CnZ0IDAuNjE3NTI4IDAuNzg0OTI3CnZ0IDAuNjI1MDAwIDAuNzg0OTI3CnZ0IDAuNjI1MDAwIDAuOTY1MDczCnZ0IDAuNjE3NTI4IDAuOTY1MDczCnZ0IDAuNjI1MDAwIDAuMjMyOTY0CnZ0IDAuNjE3NzA4IDAuMjMyOTY0CnZ0IDAuNjg2NTgxIDAuMzUyNjYxCnZ0IDAuNjg4MDM3IDAuMzQ4OTk3CnZ0IDAuNjE3NjE3IDAuNTE0MDc4CnZ0IDAuNjE3Nzk0IDAuNTExMjEwCnZ0IDAuNjI2NDAyIDAuNzY5MTU1CnZ0IDAuNjI0MzA3IDAuNzY0OTc5CnZ0IDAuNjE3NjE3IDAuNzM1OTIyCnZ0IDAuNjE3Nzk0IDAuNzM4NzkwCnZ0IDAuNjE4MzQ2IDAuNzQxNDgyCnZ0IDAuNjE5MzA2IDAuNzQzOTE0CnZ0IDAuNjIwNjU4IDAuNzU2OTg5CnZ0IDAuNjIyMzUzIDAuNzYwODgyCnZ0IDAuNjI2NDAyIDAuNDgwODQ1CnZ0IDAuNjI0MzA3IDAuNDg1MDIxCnZ0IDAuNjIyMzUzIDAuNDg5MTE4CnZ0IDAuNjIwNjU4IDAuNDkzMDExCnZ0IDAuNjE5MzA2IDAuNTA2MDg2CnZ0IDAuNjE4MzQ2IDAuNTA4NTE4CnZ0IDAuNjk1NTg1IDAuMzI4NjQxCnZ0IDAuNjk0NTY5IDAuMzI5NTk3CnZ0IDAuNjkzMzU0IDAuMzMwNDk0CnZ0IDAuNjkyMDU4IDAuMzMxMzA1CnZ0IDAuNjkwNzM2IDAuMzQyOTgwCnZ0IDAuNjg5NDAzIDAuMzQ1NzM3CnZ0IDAuNDQ2Njg2IDAuOTU2ODUxCnZ0IDAuNDQ2Njg2IDAuOTgyMjQwCnZ0IDAuNTA3OTI3IDAuOTgyMjQwCnZ0IDAuNTUzMzE0IDAuOTg1MjI2CnZ0IDAuNTUzMzE0IDAuOTU5Nzc0CnZ0IDAuNTMzOTY3IDAuOTU3OTY1CnZ0IDAuNDY1OTQ2IDAuOTU2MTEzCnZ0IDAuODQzMDAwIDAuNzE5NjM1CnZ0IDAuODY4MTg4IDAuNzE5NjM1CnZ0IDAuODY3MjA1IDAuNTMwMzY1CnZ0IDAuODQxOTg0IDAuNTMwMzY1CnZ0IDAuNDQ0Mjc5IDAuMTIyNjI3CnZ0IDAuNDY1MzkyIDAuMTYyMjUwCnZ0IDAuOTc0NTY3IDAuMTk1MTU1CnZ0IDAuOTYxNjgyIDAuMTU2OTIzCnZ0IDAuNzA1MzAxIDAuNDc4NjAzCnZ0IDAuNzUwMDAwIDAuNDgyOTkyCnZ0IDAuNTI1NDMzIDAuMTk1MTU2CnZ0IDAuNTIwODI1IDAuMjU5NDA1CnZ0IDAuOTQwNTA5IDAuMTE3NzQ2CnZ0IDAuNTI1Mjc5IDAuMjk5NjQ1CnZ0IDAuOTEyMDE1IDAuMDgzMjQ0CnZ0IDAuNTM4MzE4IDAuMzQyMTY3CnZ0IDAuODc3Mjk0IDAuMDU0ODg5CnZ0IDAuNTU5NDkxIDAuMzgxNTQ3CnZ0IDAuODM3NjgyIDAuMDMzODA1CnZ0IDAuNTg3OTg2IDAuNDE2MTE0CnZ0IDAuNzk0NzAwIDAuMDIwODE3CnZ0IDAuNzUwMDAyIDAuNDE2NDEyCnZ0IDAuNzI0ODQxIDAuNDE0MTY5CnZ0IDAuNzAwNjUwIDAuNDA3NTY0CnZ0IDAuNjc4MzU2IDAuMzk2OTc0CnZ0IDAuNjU4ODEzIDAuMzgzMDQ2CnZ0IDAuNjQyNzc1IDAuMzY2NzQ5CnZ0IDAuNjMwODU5IDAuMzQ5NDUyCnZ0IDAuNjIzNTIwIDAuMzMyOTY2CnZ0IDAuNjIwNTE2IDAuMzE2NjI3CnZ0IDAuNjI1MDk0IDAuMTQ3MjY5CnZ0IDAuNjMwODU4IDAuMTM3MjcxCnZ0IDAuNjQyNzc1IDAuMTIyNzMwCnZ0IDAuNjU4ODEzIDAuMTA4MTQwCnZ0IDAuNjc4MzU0IDAuMDk1MjMwCnZ0IDAuNzAwNjUwIDAuMDg1MjI5CnZ0IDAuNzI0ODQxIDAuMDc4OTMxCnZ0IDAuNzUwMDAwIDAuMDc2NzgzCnZ0IDAuNzc1MTU5IDAuMDc4OTMxCnZ0IDAuNzk5MzQ5IDAuMDg1MjI4CnZ0IDAuODIxNjQ2IDAuMDk1MjMwCnZ0IDAuODQxMTg3IDAuMTA4MTQxCnZ0IDAuODU3MjI0IDAuMTIyNzI5CnZ0IDAuODY5MTQyIDAuMTM3MjcxCnZ0IDAuODc0OTA2IDAuMTQ3MjY5CnZ0IDAuODc5NDg0IDAuMzE2NjI2CnZ0IDAuODc2NDgwIDAuMzMyOTY2CnZ0IDAuODY5MTQyIDAuMzQ5NDUyCnZ0IDAuODU3MjI1IDAuMzY2NzQ5CnZ0IDAuODQxMTg4IDAuMzgzMDQ1CnZ0IDAuODIxNjQ2IDAuMzk2OTczCnZ0IDAuNzk5MzQ5IDAuNDA3NTY0CnZ0IDAuNzc1MTU3IDAuNDE0MTY5CnZ0IDAuNjIyNzA2IDAuNDQ0NTAzCnZ0IDAuNzUwMDAwIDAuMDE2NDMxCnZ0IDAuODM3NjgyIDAuNDY1NjA1CnZ0IDAuODc3Mjk0IDAuNDQ0NTAyCnZ0IDAuNjYyMzE5IDAuNDY1NjA1CnZ0IDAuNzA1MzAwIDAuMDIwODE3CnZ0IDAuOTEyMDE1IDAuNDE2MTE0CnZ0IDAuNjYyMzE4IDAuMDMzODA1CnZ0IDAuOTQwNTA5IDAuMzgxNTQ3CnZ0IDAuNjIyNzA2IDAuMDU0ODg5CnZ0IDAuOTYxNjgyIDAuMzQyMTY3CnZ0IDAuNzk0NzAwIDAuNDc4NjAzCnZ0IDAuNTg3OTg1IDAuMDgzMjQ0CnZ0IDAuOTc0NzIxIDAuMjk5NjQ0CnZ0IDAuNTU5NDkxIDAuMTE3NzQ2CnZ0IDAuOTc5MTc1IDAuMjU5NDA1CnZ0IDAuNTM4MzE4IDAuMTU2OTIzCnZ0IDAuNzc4MjE0IDAuNDI0MTc3CnZ0IDAuNzUwMDAxIDAuNDI2NzY0CnZ0IDAuNzgxMTk2IDAuNDM0MDg1CnZ0IDAuNzUwMDAxIDAuNDM3MDA4CnZ0IDAuNzg0MDI5IDAuNDQzNTc5CnZ0IDAuNzUwMDAxIDAuNDQ2ODE4CnZ0IDAuNzg2NjQ0IDAuNDUyMzQ5CnZ0IDAuNzUwMDAxIDAuNDU1ODc3CnZ0IDAuNzk0NjQ0IDAuNDc4MzI3CnZ0IDAuNzUwMDAwIDAuNDgyNzExCnZ0IDAuNzk0NjY0IDAuNDc4NDIzCnZ0IDAuNzUwMDAwIDAuNDgyODA5CnZ0IDAuNzk0Njc5IDAuNDc4NTAwCnZ0IDAuNzUwMDAwIDAuNDgyODg4CnZ0IDAuNzk0NjkwIDAuNDc4NTU3CnZ0IDAuNzUwMDAwIDAuNDgyOTQ1CnZ0IDAuNzk0Njk3IDAuNDc4NTkxCnZ0IDAuNzUwMDAwIDAuNDgyOTgwCnZ0IDAuODA1MzQ2IDAuNDE2NTQ1CnZ0IDAuODExMTk0IDAuNDI1NDUzCnZ0IDAuODE2NzUyIDAuNDM0MDAyCnZ0IDAuODIxODgwIDAuNDQxOTEzCnZ0IDAuODM3NTc0IDAuNDY1MzQ2CnZ0IDAuODM3NjExIDAuNDY1NDM2CnZ0IDAuODM3NjQyIDAuNDY1NTA4CnZ0IDAuODM3NjY0IDAuNDY1NTYyCnZ0IDAuODM3Njc3IDAuNDY1NTk0CnZ0IDAuODMwMzUxIDAuNDA0MjY3CnZ0IDAuODM4ODQyIDAuNDExNTI1CnZ0IDAuODQ2OTA5IDAuNDE4NTE3CnZ0IDAuODU0MzU1IDAuNDI1MDA5CnZ0IDAuODc3MTM4IDAuNDQ0MjY5CnZ0IDAuODc3MTkyIDAuNDQ0MzUwCnZ0IDAuODc3MjM1IDAuNDQ0NDE2CnZ0IDAuODc3MjY4IDAuNDQ0NDYzCnZ0IDAuODc3Mjg4IDAuNDQ0NDkzCnZ0IDAuODUyMjY3IDAuMzg4MDM0CnZ0IDAuODYzMDc0IDAuMzkzMDE1CnZ0IDAuODczMzQzIDAuMzk3ODQ5CnZ0IDAuODgyODE5IDAuNDAyMzc0CnZ0IDAuOTExODE2IDAuNDE1OTE2CnZ0IDAuOTExODg1IDAuNDE1OTg1CnZ0IDAuOTExOTQxIDAuNDE2MDQwCnZ0IDAuOTExOTgxIDAuNDE2MDgxCnZ0IDAuOTEyMDA2IDAuNDE2MTA2CnZ0IDAuODcwMjUzIDAuMzY4ODgzCnZ0IDAuODgyOTYxIDAuMzcwOTkzCnZ0IDAuODk1MDM1IDAuMzczMDcwCnZ0IDAuOTA2MTc4IDAuMzc1MDcyCnZ0IDAuOTQwMjc1IDAuMzgxMzkzCnZ0IDAuOTQwMzU2IDAuMzgxNDQ2CnZ0IDAuOTQwNDIyIDAuMzgxNDg5CnZ0IDAuOTQwNDcwIDAuMzgxNTIxCnZ0IDAuOTQwNDk5IDAuMzgxNTQwCnZ0IDAuODgzNjE4IDAuMzQ4MzU0CnZ0IDAuODk3NzM4IDAuMzQ3MDg2CnZ0IDAuOTExMTU0IDAuMzQ1ODA0CnZ0IDAuOTIzNTM1IDAuMzQ0NjUyCnZ0IDAuOTYxNDIyIDAuMzQyMDY2CnZ0IDAuOTYxNTEzIDAuMzQyMTAxCnZ0IDAuOTYxNTg2IDAuMzQyMTI5CnZ0IDAuOTYxNjM5IDAuMzQyMTUwCnZ0IDAuOTYxNjcxIDAuMzQyMTYzCnZ0IDAuODkxODQ4IDAuMzI4NzExCnZ0IDAuOTA2ODM4IDAuMzIzOTUyCnZ0IDAuOTIxMDgwIDAuMzE4OTM5CnZ0IDAuOTM0MjI0IDAuMzE0MDAzCnZ0IDAuOTc0NDQ0IDAuMjk5NzMyCnZ0IDAuOTc0NTQwIDAuMjk5NzAyCnZ0IDAuOTc0NjE4IDAuMjk5Njc3CnZ0IDAuOTc0Njc0IDAuMjk5NjU5CnZ0IDAuOTc0NzA5IDAuMjk5NjQ4CnZ0IDAuODk1MDc5IDAuMzEwNDkyCnZ0IDAuOTEwMjkxIDAuMzAzNjM0CnZ0IDAuOTI0NzQzIDAuMjk2MjU1CnZ0IDAuOTM4MDgxIDAuMjg4NjM1CnZ0IDAuOTc5MTAyIDAuMjYwMDM0CnZ0IDAuOTc5MTI4IDAuMjU5ODE1CnZ0IDAuOTc5MTQ4IDAuMjU5NjM5CnZ0IDAuOTc5MTYzIDAuMjU5NTEwCnZ0IDAuOTc5MTcyIDAuMjU5NDMxCnZ0IDAuODkwNDk2IDAuMTUyMjA3CnZ0IDAuOTA1NzAzIDAuMTU3ODI2CnZ0IDAuOTIwMTUxIDAuMTYzOTUyCnZ0IDAuOTMzNDg1IDAuMTcwMzQwCnZ0IDAuOTczOTQ1IDAuMTkzMzQ1CnZ0IDAuOTc0MTYxIDAuMTkzOTc1CnZ0IDAuOTc0MzM1IDAuMTk0NDgyCnZ0IDAuOTc0NDYzIDAuMTk0ODUzCnZ0IDAuOTc0NTQwIDAuMTk1MDc5CnZ0IDAuOTExMTU0IDAuMTQ1NTYyCnZ0IDAuOTIzNTM2IDAuMTQ4NjIwCnZ0IDAuOTYxNDIyIDAuMTU2OTA3CnZ0IDAuOTYxNTEzIDAuMTU2OTEzCnZ0IDAuOTYxNTg2IDAuMTU2OTE3CnZ0IDAuOTYxNjM5IDAuMTU2OTIwCnZ0IDAuOTYxNjcyIDAuMTU2OTIzCnZ0IDAuODk1MDM1IDAuMTIxMTEzCnZ0IDAuOTA2MTc4IDAuMTIwNTcwCnZ0IDAuOTQwMjc1IDAuMTE3ODk2CnZ0IDAuOTQwMzU2IDAuMTE3ODQ0CnZ0IDAuOTQwNDIyIDAuMTE3ODAyCnZ0IDAuOTQwNDcwIDAuMTE3NzcxCnZ0IDAuOTQwNDk5IDAuMTE3NzUyCnZ0IDAuODUyMjY3IDAuMTA0NTk3CnZ0IDAuODYzMDc0IDAuMTAxMDE5CnZ0IDAuODczMzQyIDAuMDk3NDc3CnZ0IDAuODgyODE5IDAuMDk0MDgxCnZ0IDAuOTExODE1IDAuMDgzNDQxCnZ0IDAuOTExODg1IDAuMDgzMzcyCnZ0IDAuOTExOTQwIDAuMDgzMzE3CnZ0IDAuOTExOTgxIDAuMDgzMjc3CnZ0IDAuOTEyMDA2IDAuMDgzMjUyCnZ0IDAuODMwMzUxIDAuMDg5MjU5CnZ0IDAuODM4ODQyIDAuMDgzMjM0CnZ0IDAuODQ2OTEwIDAuMDc3MzQ3CnZ0IDAuODU0MzU1IDAuMDcxODEwCnZ0IDAuODc3MTM4IDAuMDU1MTIyCnZ0IDAuODc3MTkyIDAuMDU1MDQxCnZ0IDAuODc3MjM2IDAuMDU0OTc2CnZ0IDAuODc3MjY4IDAuMDU0OTI4CnZ0IDAuODc3Mjg4IDAuMDU0ODk5CnZ0IDAuODA1MzQ2IDAuMDc3NDc1CnZ0IDAuODExMTk1IDAuMDY5NjkwCnZ0IDAuODE2NzUyIDAuMDYyMTM4CnZ0IDAuODIxODgxIDAuMDU1MDkwCnZ0IDAuODM3NTc0IDAuMDM0MDY0CnZ0IDAuODM3NjEyIDAuMDMzOTc0CnZ0IDAuODM3NjQyIDAuMDMzOTAxCnZ0IDAuODM3NjY0IDAuMDMzODQ4CnZ0IDAuODM3Njc3IDAuMDMzODE2CnZ0IDAuNzc4MjE2IDAuMDcwMDk1CnZ0IDAuNzgxMTk3IDAuMDYxMjUwCnZ0IDAuNzg0MDMwIDAuMDUyNjk5CnZ0IDAuNzg2NjQ1IDAuMDQ0NzQ2CnZ0IDAuNzk0NjQ1IDAuMDIxMDkzCnZ0IDAuNzk0NjY0IDAuMDIwOTk3CnZ0IDAuNzk0Njc5IDAuMDIwOTIwCnZ0IDAuNzk0NjkxIDAuMDIwODYzCnZ0IDAuNzk0Njk4IDAuMDIwODI5CnZ0IDAuNzUwMDAwIDAuMDY3NTg1CnZ0IDAuNzUwMDAwIDAuMDU4Mzg2CnZ0IDAuNzUwMDAwIDAuMDQ5NTAxCnZ0IDAuNzUwMDAxIDAuMDQxMjQ2CnZ0IDAuNzUwMDAwIDAuMDE2NzEyCnZ0IDAuNzUwMDAwIDAuMDE2NjE0CnZ0IDAuNzUwMDAwIDAuMDE2NTM2CnZ0IDAuNzUwMDAwIDAuMDE2NDc4CnZ0IDAuNzUwMDAwIDAuMDE2NDQzCnZ0IDAuNzIxNzg0IDAuMDcwMDk2CnZ0IDAuNzE4ODAzIDAuMDYxMjUwCnZ0IDAuNzE1OTcwIDAuMDUyNjk5CnZ0IDAuNzEzMzU1IDAuMDQ0NzQ2CnZ0IDAuNzA1MzU1IDAuMDIxMDkzCnZ0IDAuNzA1MzM2IDAuMDIwOTk3CnZ0IDAuNzA1MzIxIDAuMDIwOTIwCnZ0IDAuNzA1MzEwIDAuMDIwODYzCnZ0IDAuNzA1MzAzIDAuMDIwODI5CnZ0IDAuNjk0NjUzIDAuMDc3NDc2CnZ0IDAuNjg4ODA1IDAuMDY5NjkxCnZ0IDAuNjgzMjQ4IDAuMDYyMTM4CnZ0IDAuNjc4MTE5IDAuMDU1MDkxCnZ0IDAuNjYyNDI2IDAuMDM0MDY0CnZ0IDAuNjYyMzg4IDAuMDMzOTc0CnZ0IDAuNjYyMzU4IDAuMDMzOTAyCnZ0IDAuNjYyMzM2IDAuMDMzODQ5CnZ0IDAuNjYyMzIzIDAuMDMzODE2CnZ0IDAuNjY5NjQ5IDAuMDg5MjU5CnZ0IDAuNjYxMTU4IDAuMDgzMjM0CnZ0IDAuNjUzMDkwIDAuMDc3MzQ2CnZ0IDAuNjQ1NjQ1IDAuMDcxODEwCnZ0IDAuNjIyODYzIDAuMDU1MTIyCnZ0IDAuNjIyODA4IDAuMDU1MDQxCnZ0IDAuNjIyNzY0IDAuMDU0OTc2CnZ0IDAuNjIyNzMyIDAuMDU0OTI4CnZ0IDAuNjIyNzEyIDAuMDU0ODk5CnZ0IDAuNjQ3NzMzIDAuMTA0NTk3CnZ0IDAuNjM2OTI2IDAuMTAxMDE5CnZ0IDAuNjI2NjU4IDAuMDk3NDc3CnZ0IDAuNjE3MTgyIDAuMDk0MDgyCnZ0IDAuNTg4MTg1IDAuMDgzNDQxCnZ0IDAuNTg4MTE1IDAuMDgzMzczCnZ0IDAuNTg4MDU5IDAuMDgzMzE3CnZ0IDAuNTg4MDE4IDAuMDgzMjc3CnZ0IDAuNTg3OTkzIDAuMDgzMjUzCnZ0IDAuNjI5NzQ3IDAuMTIyMTE2CnZ0IDAuNjE3MDM5IDAuMTIxNjA1CnZ0IDAuNjA0OTY1IDAuMTIxMTEzCnZ0IDAuNTkzODIyIDAuMTIwNTcwCnZ0IDAuNTU5NzI1IDAuMTE3ODk2CnZ0IDAuNTU5NjQ0IDAuMTE3ODQ0CnZ0IDAuNTU5NTc4IDAuMTE3ODAyCnZ0IDAuNTU5NTMwIDAuMTE3NzcxCnZ0IDAuNTU5NTAxIDAuMTE3NzUyCnZ0IDAuNjE2MzgyIDAuMTM5NjY3CnZ0IDAuNjAyMjYxIDAuMTQyNDkzCnZ0IDAuNTg4ODQ2IDAuMTQ1NTYyCnZ0IDAuNTc2NDY1IDAuMTQ4NjIwCnZ0IDAuNTM4NTc4IDAuMTU2OTA3CnZ0IDAuNTM4NDg3IDAuMTU2OTEzCnZ0IDAuNTM4NDE0IDAuMTU2OTE3CnZ0IDAuNTM4MzYxIDAuMTU2OTIwCnZ0IDAuNTM4MzI4IDAuMTU2OTIzCnZ0IDAuNjA5NTA0IDAuMTUyMjA3CnZ0IDAuNTk0Mjk3IDAuMTU3ODI3CnZ0IDAuNTc5ODQ5IDAuMTYzOTUyCnZ0IDAuNTY2NTE1IDAuMTcwMzQwCnZ0IDAuNTI2MDU1IDAuMTkzMzQ1CnZ0IDAuNTI1ODM5IDAuMTkzOTc1CnZ0IDAuNTI1NjY1IDAuMTk0NDgyCnZ0IDAuNTI1NTM3IDAuMTk0ODUzCnZ0IDAuNTI1NDYwIDAuMTk1MDgwCnZ0IDAuNjA0OTIxIDAuMzEwNDkyCnZ0IDAuNTg5NzA5IDAuMzAzNjM0CnZ0IDAuNTc1MjU3IDAuMjk2MjU2CnZ0IDAuNTYxOTE5IDAuMjg4NjM2CnZ0IDAuNTIwODk4IDAuMjYwMDM1CnZ0IDAuNTIwODcyIDAuMjU5ODE1CnZ0IDAuNTIwODUyIDAuMjU5NjM5CnZ0IDAuNTIwODM3IDAuMjU5NTEwCnZ0IDAuNTIwODI4IDAuMjU5NDMyCnZ0IDAuNjA4MTUyIDAuMzI4NzEwCnZ0IDAuNTkzMTYyIDAuMzIzOTUyCnZ0IDAuNTc4OTIwIDAuMzE4OTM5CnZ0IDAuNTY1Nzc2IDAuMzE0MDAzCnZ0IDAuNTI1NTU2IDAuMjk5NzMzCnZ0IDAuNTI1NDYwIDAuMjk5NzAyCnZ0IDAuNTI1MzgyIDAuMjk5Njc3CnZ0IDAuNTI1MzI2IDAuMjk5NjU5CnZ0IDAuNTI1MjkxIDAuMjk5NjQ5CnZ0IDAuNjE2MzgyIDAuMzQ4MzU0CnZ0IDAuNjAyMjYyIDAuMzQ3MDg2CnZ0IDAuNTg4ODQ2IDAuMzQ1ODA0CnZ0IDAuNTc2NDY0IDAuMzQ0NjUzCnZ0IDAuNTM4NTc4IDAuMzQyMDY3CnZ0IDAuNTM4NDg4IDAuMzQyMTAyCnZ0IDAuNTM4NDE1IDAuMzQyMTMwCnZ0IDAuNTM4MzYxIDAuMzQyMTUwCnZ0IDAuNTM4MzI5IDAuMzQyMTYzCnZ0IDAuNjI5NzQ3IDAuMzY4ODgzCnZ0IDAuNjE3MDM5IDAuMzcwOTkzCnZ0IDAuNjA0OTY1IDAuMzczMDcwCnZ0IDAuNTkzODIyIDAuMzc1MDcyCnZ0IDAuNTU5NzI1IDAuMzgxMzkzCnZ0IDAuNTU5NjQ0IDAuMzgxNDQ3CnZ0IDAuNTU5NTc4IDAuMzgxNDkwCnZ0IDAuNTU5NTMwIDAuMzgxNTIxCnZ0IDAuNTU5NTAxIDAuMzgxNTQxCnZ0IDAuNjQ3NzMzIDAuMzg4MDM0CnZ0IDAuNjM2OTI2IDAuMzkzMDE1CnZ0IDAuNjI2NjU4IDAuMzk3ODQ5CnZ0IDAuNjE3MTgyIDAuNDAyMzc0CnZ0IDAuNTg4MTg1IDAuNDE1OTE2CnZ0IDAuNTg4MTE1IDAuNDE1OTg1CnZ0IDAuNTg4MDU5IDAuNDE2MDQwCnZ0IDAuNTg4MDE5IDAuNDE2MDgxCnZ0IDAuNTg3OTk0IDAuNDE2MTA2CnZ0IDAuNjY5NjUwIDAuNDA0MjY4CnZ0IDAuNjYxMTYwIDAuNDExNTI1CnZ0IDAuNjUzMDkxIDAuNDE4NTE4CnZ0IDAuNjQ1NjQ2IDAuNDI1MDA5CnZ0IDAuNjIyODYzIDAuNDQ0MjcwCnZ0IDAuNjIyODA4IDAuNDQ0MzUxCnZ0IDAuNjIyNzY1IDAuNDQ0NDE2CnZ0IDAuNjIyNzMzIDAuNDQ0NDY0CnZ0IDAuNjIyNzEzIDAuNDQ0NDkzCnZ0IDAuNjk0NjUzIDAuNDE2NTQ1CnZ0IDAuNjg4ODA1IDAuNDI1NDUzCnZ0IDAuNjgzMjQ4IDAuNDM0MDAyCnZ0IDAuNjc4MTE5IDAuNDQxOTEzCnZ0IDAuNjYyNDI2IDAuNDY1MzQ2CnZ0IDAuNjYyMzg5IDAuNDY1NDM2CnZ0IDAuNjYyMzU5IDAuNDY1NTA5CnZ0IDAuNjYyMzM3IDAuNDY1NTYyCnZ0IDAuNjYyMzIzIDAuNDY1NTk0CnZ0IDAuNzIxNzg0IDAuNDI0MTc2CnZ0IDAuNzE4ODAyIDAuNDM0MDg1CnZ0IDAuNzE1OTcwIDAuNDQzNTc4CnZ0IDAuNzEzMzU1IDAuNDUyMzQ5CnZ0IDAuNzA1MzU1IDAuNDc4MzI3CnZ0IDAuNzA1MzM2IDAuNDc4NDIzCnZ0IDAuNzA1MzIxIDAuNDc4NTAwCnZ0IDAuNzA1MzEwIDAuNDc4NTU3CnZ0IDAuNzA1MzAzIDAuNDc4NTkxCnZ0IDAuMzQyMDE1IDAuNDYxNzAwCnZ0IDAuMjk5NTcwIDAuNDc0NzE1CnZ0IDAuMzQyMDE1IDAuNDYxNzAwCnZ0IDAuMjk5NTcxIDAuNDc0NzE1CnZ0IDAuNDY1MzkyIDAuMzM3NzQ5CnZ0IDAuNDQ0Mjc5IDAuMzc3MzczCnZ0IDAuNDE1ODkxIDAuMDg3OTE1CnZ0IDAuMzgxMzQ2IDAuNDQwNTU2CnZ0IDAuNDc4NDAxIDAuMjk0NzM5CnZ0IDAuMzgxMzQ2IDAuMDU5NDQ0CnZ0IDAuNDgyNzk1IDAuMjUwMDAwCnZ0IDAuMzQyMDE1IDAuMDM4MzAwCnZ0IDAuNDc4NDAxIDAuMjA1MjYxCnZ0IDAuMjk5NTcxIDAuMDI1Mjg1CnZ0IDAuNDY1MzkyIDAuMTYyMjUwCnZ0IDAuMjU5NDM1IDAuMDIwODM4CnZ0IDAuNDQ0Mjc5IDAuMTIyNjI3CnZ0IDAuMTk1MTgzIDAuMDI1NDQ0CnZ0IDAuNDE1ODkxIDAuMDg3OTE1CnZ0IDAuMTU3MDY1IDAuMDM4MzAwCnZ0IDAuMzgxMzQ2IDAuMDU5NDQ0CnZ0IDAuMTE3OTQxIDAuMDU5NDQ1CnZ0IDAuMzQyMDE1IDAuMDM4MzAwCnZ0IDAuMDgzNDYyIDAuMDg3OTE1CnZ0IDAuMjk5NTcxIDAuMDI1Mjg1CnZ0IDAuMDU1MTA2IDAuMTIyNjI3CnZ0IDAuMjU5NDM0IDAuMDIwODM4CnZ0IDAuMDM0MDExIDAuMTYyMjUxCnZ0IDAuMTk1MTgzIDAuMDI1NDQ0CnZ0IDAuMDIxMDExIDAuMjA1MjYxCnZ0IDAuMTU3MDY1IDAuMDM4MzAwCnZ0IDAuMDE2NjIxIDAuMjUwMDAwCnZ0IDAuMTE3OTQxIDAuMDU5NDQ1CnZ0IDAuMDIxMDEyIDAuMjk0NzM5CnZ0IDAuMDgzNDYxIDAuMDg3OTE1CnZ0IDAuMDM0MDEyIDAuMzM3NzUwCnZ0IDAuMDU1MTA2IDAuMTIyNjI3CnZ0IDAuMDU1MTA2IDAuMzc3MzczCnZ0IDAuMDM0MDExIDAuMTYyMjUxCnZ0IDAuMDgzNDYyIDAuNDEyMDg1CnZ0IDAuMzM2NTYyIDAuMzU3MTIyCnZ0IDAuMzQ4OTg4IDAuMzUxMTgzCnZ0IDAuMzYyMTAyIDAuMzQxNDMxCnZ0IDAuMzc0NzM0IDAuMzI4MTIxCnZ0IDAuMzg1ODAwIDAuMzExNjY2CnZ0IDAuMzk0Mzk4IDAuMjkyNjM4CnZ0IDAuMzk5ODQwIDAuMjcxNzkzCnZ0IDAuNDAxNzAzIDAuMjUwMDAxCnZ0IDAuMzk5ODQwIDAuMjI4MjA4CnZ0IDAuMzk0Mzk2IDAuMjA3MzYwCnZ0IDAuMzg1ODAwIDAuMTg4MzM0CnZ0IDAuMzc0NzMzIDAuMTcxODc4CnZ0IDAuMzYyMTAyIDAuMTU4NTY5CnZ0IDAuMzQ4OTg4IDAuMTQ4ODE3CnZ0IDAuMzM2NTYyIDAuMTQyODc4CnZ0IDAuMzIyNjcxIDAuMTQwMjQ1CnZ0IDAuMTQzMTIwIDAuMTQ0NzkwCnZ0IDAuMTM2NDgyIDAuMTQ4ODE3CnZ0IDAuMTI1NjA1IDAuMTU4NTY5CnZ0IDAuMTE0NTc3IDAuMTcxODc4CnZ0IDAuMTA0NTgyIDAuMTg4MzM1CnZ0IDAuMDk2NjU2IDAuMjA3MzYwCnZ0IDAuMDkxNTc3IDAuMjI4MjA3CnZ0IDAuMDg5ODMwIDAuMjUwMDAxCnZ0IDAuMDkxNTc3IDAuMjcxNzkyCnZ0IDAuMDk2NjU1IDAuMjkyNjQwCnZ0IDAuMTA0NTgzIDAuMzExNjY2CnZ0IDAuMTE0NTc2IDAuMzI4MTIxCnZ0IDAuMTI1NjA1IDAuMzQxNDMyCnZ0IDAuMTM2NDgyIDAuMzUxMTgzCnZ0IDAuMTQzMTIxIDAuMzU1MjEwCnZ0IDAuMzIyNjcxIDAuMzU5NzU1CnZ0IDAuMDIxMDEyIDAuMjA1MjYxCnZ0IDAuMTE3OTQyIDAuNDQwNTU2CnZ0IDAuMjU5NDM1IDAuNDc5MTYyCnZ0IDAuMTk1MTgzIDAuNDc0NTU2CnZ0IDAuMDE2NjIxIDAuMjUwMDAwCnZ0IDAuMTU3MDY1IDAuNDYxNzAwCnZ0IDAuNDE1ODkxIDAuNDEyMDg1CnZ0IDAuMzgxMzQ2IDAuNDQwNTU2CnZ0IDAuMDIxMDEyIDAuMjk0NzM5CnZ0IDAuNDQ0Mjc5IDAuMzc3MzczCnZ0IDAuMDM0MDEyIDAuMzM3NzUwCnZ0IDAuMjU5NDM1IDAuNDc5MTYyCnZ0IDAuNDY1MzkyIDAuMzM3NzUwCnZ0IDAuMDU1MTA2IDAuMzc3MzczCnZ0IDAuNDc4NDAxIDAuMjk0NzM5CnZ0IDAuMDgzNDYxIDAuNDEyMDg1CnZ0IDAuMzM2NTYyIDAuMzU3MTIyCnZ0IDAuMzQ4OTg4IDAuMzUxMTgzCnZ0IDAuMzYyMTAxIDAuMzQxNDMxCnZ0IDAuMzc0NzM0IDAuMzI4MTIyCnZ0IDAuMzg1ODAxIDAuMzExNjY0CnZ0IDAuMzk0Mzk3IDAuMjkyNjQxCnZ0IDAuMzk5ODQwIDAuMjcxNzkzCnZ0IDAuNDAxNzAzIDAuMjQ5OTk5CnZ0IDAuMzk5ODQwIDAuMjI4MjA4CnZ0IDAuMzk0Mzk3IDAuMjA3MzYwCnZ0IDAuMzg1ODAxIDAuMTg4MzM2CnZ0IDAuMzc0NzMzIDAuMTcxODc4CnZ0IDAuMzYyMTAxIDAuMTU4NTY5CnZ0IDAuMzQ4OTg5IDAuMTQ4ODE3CnZ0IDAuMzM2NTYyIDAuMTQyODc4CnZ0IDAuMzIyNjcxIDAuMTQwMjQ1CnZ0IDAuMTQzMTIwIDAuMTQ0NzkwCnZ0IDAuMTM2NDgyIDAuMTQ4ODE3CnZ0IDAuMTI1NjA0IDAuMTU4NTY5CnZ0IDAuMTE0NTc4IDAuMTcxODc3CnZ0IDAuMTA0NTgzIDAuMTg4MzM2CnZ0IDAuMDk2NjU1IDAuMjA3MzYyCnZ0IDAuMDkxNTc2IDAuMjI4MjA3CnZ0IDAuMDg5ODI5IDAuMjQ5OTk5CnZ0IDAuMDkxNTc3IDAuMjcxNzkyCnZ0IDAuMDk2NjU2IDAuMjkyNjQwCnZ0IDAuMTA0NTgzIDAuMzExNjY1CnZ0IDAuMTE0NTc3IDAuMzI4MTIyCnZ0IDAuMTI1NjA1IDAuMzQxNDMxCnZ0IDAuMTM2NDgyIDAuMzUxMTgzCnZ0IDAuMTQzMTIxIDAuMzU1MjEwCnZ0IDAuMzIyNjcxIDAuMzU5NzU1CnZ0IDAuNDgyNzk1IDAuMjUwMDAwCnZ0IDAuMTE3OTQxIDAuNDQwNTU2CnZ0IDAuMTk1MTgzIDAuNDc0NTU2CnZ0IDAuNDc4NDAxIDAuMjA1MjYxCnZ0IDAuMTU3MDY2IDAuNDYxNzAwCnZ0IDAuNDE1ODkxIDAuNDEyMDg1CnZ0IDAuMzE2NTg2IDAuMzc4NDM0CnZ0IDAuMzMyNTE2IDAuMzc1NTE3CnZ0IDAuMzA5NDg3IDAuMzk2NjU0CnZ0IDAuMzI3NjYwIDAuMzkzNDYwCnZ0IDAuMzAxNTg5IDAuNDEzOTY1CnZ0IDAuMzIyMjUzIDAuNDEwNTA4CnZ0IDAuMjkzMjA4IDAuNDI5OTQxCnZ0IDAuMzE2Njc2IDAuNDI2MjQxCnZ0IDAuMjYwMjE1IDAuNDc5MDcwCnZ0IDAuMjk5Njc5IDAuNDc0MzcxCnZ0IDAuMjU5OTQzIDAuNDc5MTAyCnZ0IDAuMjk5NjQyIDAuNDc0NDkxCnZ0IDAuMjU5NzI1IDAuNDc5MTI4CnZ0IDAuMjk5NjExIDAuNDc0NTg3CnZ0IDAuMjU5NTY1IDAuNDc5MTQ3CnZ0IDAuMjk5NTg5IDAuNDc0NjU3CnZ0IDAuMjU5NDY4IDAuNDc5MTU4CnZ0IDAuMjk5NTc1IDAuNDc0NzAxCnZ0IDAuMzQ4MjY0IDAuMzY4NDcyCnZ0IDAuMzQ3MTQ1IDAuMzg1MzM0CnZ0IDAuMzQ1ODQxIDAuNDAxMzU2CnZ0IDAuMzQ0NTg0IDAuNDE2MTQzCnZ0IDAuMzQxODg2IDAuNDYxMzgwCnZ0IDAuMzQxOTMyIDAuNDYxNDkxCnZ0IDAuMzQxOTY3IDAuNDYxNTgxCnZ0IDAuMzQxOTkzIDAuNDYxNjQ2CnZ0IDAuMzQyMDEwIDAuNDYxNjg2CnZ0IDAuMzY0OTEyIDAuMzU2OTM3CnZ0IDAuMzY3NjE4IDAuMzcyMDYyCnZ0IDAuMzcwMjUxIDAuMzg2NDMzCnZ0IDAuMzcyODAzIDAuMzk5Njk1CnZ0IDAuMzgxMTUyIDAuNDQwMjcyCnZ0IDAuMzgxMjIwIDAuNDQwMzcxCnZ0IDAuMzgxMjc0IDAuNDQwNDUwCnZ0IDAuMzgxMzE0IDAuNDQwNTA4CnZ0IDAuMzgxMzM4IDAuNDQwNTQ0CnZ0IDAuMzgwNzkwIDAuMzQxMjU2CnZ0IDAuMzg2ODY2IDAuMzU0MDY4CnZ0IDAuMzkyODE2IDAuMzY2MjQwCnZ0IDAuMzk4NDQ5IDAuMzc3NDc0CnZ0IDAuNDE1NjQ3IDAuNDExODQ4CnZ0IDAuNDE1NzMyIDAuNDExOTMxCnZ0IDAuNDE1ODAwIDAuNDExOTk3CnZ0IDAuNDE1ODUwIDAuNDEyMDQ1CnZ0IDAuNDE1ODgxIDAuNDEyMDc1CnZ0IDAuMzk0NTM1IDAuMzIxOTQ1CnZ0IDAuNDAzMzE2IDAuMzMxOTcwCnZ0IDAuNDExODY3IDAuMzQxNDk2CnZ0IDAuNDE5ODg1IDAuMzUwMjg3CnZ0IDAuNDQzOTk2IDAuMzc3MTkxCnZ0IDAuNDQ0MDk1IDAuMzc3MjU0CnZ0IDAuNDQ0MTc0IDAuMzc3MzA1CnZ0IDAuNDQ0MjMyIDAuMzc3MzQzCnZ0IDAuNDQ0MjY3IDAuMzc3MzY1CnZ0IDAuNDA1MTA3IDAuMjk5Njk1CnZ0IDAuNDE1ODUxIDAuMzA2NTc5CnZ0IDAuNDI2MjY5IDAuMzEzMTE5CnZ0IDAuNDM1OTg5IDAuMzE5MTU0CnZ0IDAuNDY1MDgzIDAuMzM3NjI2CnZ0IDAuNDY1MTkwIDAuMzM3NjY5CnZ0IDAuNDY1Mjc3IDAuMzM3NzAzCnZ0IDAuNDY1MzQwIDAuMzM3NzI5CnZ0IDAuNDY1Mzc4IDAuMzM3NzQ1CnZ0IDAuNDExNzUzIDAuMjc1MzgzCnZ0IDAuNDIzNjg0IDAuMjc4ODg0CnZ0IDAuNDM1MjI1IDAuMjgyMjEwCnZ0IDAuNDQ1OTcwIDAuMjg1MjgwCnZ0IDAuNDc4MDc2IDAuMjk0Njc3CnZ0IDAuNDc4MTg5IDAuMjk0Njk4CnZ0IDAuNDc4MjgwIDAuMjk0NzE2CnZ0IDAuNDc4MzQ2IDAuMjk0NzI5CnZ0IDAuNDc4Mzg3IDAuMjk0NzM2CnZ0IDAuNDE0MDIwIDAuMjUwMDAxCnZ0IDAuNDI2MzQ5IDAuMjUwMDAxCnZ0IDAuNDM4MjY0IDAuMjUwMDAxCnZ0IDAuNDQ5MzUxIDAuMjUwMDAwCnZ0IDAuNDgyNDY2IDAuMjUwMDAwCnZ0IDAuNDgyNTgwIDAuMjUwMDAwCnZ0IDAuNDgyNjczIDAuMjUwMDAwCnZ0IDAuNDgyNzQwIDAuMjUwMDAwCnZ0IDAuNDgyNzgxIDAuMjUwMDAwCnZ0IDAuNDExNzU0IDAuMjI0NjE4CnZ0IDAuNDIzNjg1IDAuMjIxMTE3CnZ0IDAuNDM1MjI2IDAuMjE3NzkwCnZ0IDAuNDQ1OTcxIDAuMjE0NzIwCnZ0IDAuNDc4MDc2IDAuMjA1MzI0CnZ0IDAuNDc4MTg5IDAuMjA1MzAyCnZ0IDAuNDc4MjgwIDAuMjA1Mjg0CnZ0IDAuNDc4MzQ3IDAuMjA1MjcxCnZ0IDAuNDc4Mzg3IDAuMjA1MjY0CnZ0IDAuNDA1MTA2IDAuMjAwMzAzCnZ0IDAuNDE1ODUwIDAuMTkzNDIwCnZ0IDAuNDI2MjY3IDAuMTg2ODgwCnZ0IDAuNDM1OTg4IDAuMTgwODQ1CnZ0IDAuNDY1MDgzIDAuMTYyMzc0CnZ0IDAuNDY1MTkwIDAuMTYyMzMxCnZ0IDAuNDY1Mjc3IDAuMTYyMjk2CnZ0IDAuNDY1MzQwIDAuMTYyMjcxCnZ0IDAuNDY1Mzc5IDAuMTYyMjU1CnZ0IDAuMzk0NTM1IDAuMTc4MDU2CnZ0IDAuNDAzMzE2IDAuMTY4MDI5CnZ0IDAuNDExODY3IDAuMTU4NTA0CnZ0IDAuNDE5ODg1IDAuMTQ5NzEzCnZ0IDAuNDQzOTk2IDAuMTIyODA5CnZ0IDAuNDQ0MDk1IDAuMTIyNzQ2CnZ0IDAuNDQ0MTc0IDAuMTIyNjk1CnZ0IDAuNDQ0MjMyIDAuMTIyNjU4CnZ0IDAuNDQ0MjY3IDAuMTIyNjM1CnZ0IDAuMzgwNzg5IDAuMTU4NzQzCnZ0IDAuMzg2ODY1IDAuMTQ1OTMyCnZ0IDAuMzkyODE0IDAuMTMzNzYwCnZ0IDAuMzk4NDQ4IDAuMTIyNTI2CnZ0IDAuNDE1NjQ3IDAuMDg4MTUyCnZ0IDAuNDE1NzMyIDAuMDg4MDY5CnZ0IDAuNDE1ODAwIDAuMDg4MDAzCnZ0IDAuNDE1ODUwIDAuMDg3OTU1CnZ0IDAuNDE1ODgxIDAuMDg3OTI1CnZ0IDAuMzY0OTEyIDAuMTQzMDYyCnZ0IDAuMzY3NjE3IDAuMTI3OTM4CnZ0IDAuMzcwMjUxIDAuMTEzNTY3CnZ0IDAuMzcyODAzIDAuMTAwMzA1CnZ0IDAuMzgxMTUyIDAuMDU5NzI4CnZ0IDAuMzgxMjIwIDAuMDU5NjI5CnZ0IDAuMzgxMjc0IDAuMDU5NTUwCnZ0IDAuMzgxMzE0IDAuMDU5NDkyCnZ0IDAuMzgxMzM4IDAuMDU5NDU3CnZ0IDAuMzQ4MjY1IDAuMTMxNTI5CnZ0IDAuMzQ3MTQ1IDAuMTE0NjY2CnZ0IDAuMzQ1ODQyIDAuMDk4NjQ0CnZ0IDAuMzQ0NTg1IDAuMDgzODU3CnZ0IDAuMzQxODg3IDAuMDM4NjIwCnZ0IDAuMzQxOTMyIDAuMDM4NTA5CnZ0IDAuMzQxOTY4IDAuMDM4NDE5CnZ0IDAuMzQxOTk0IDAuMDM4MzU0CnZ0IDAuMzQyMDEwIDAuMDM4MzE0CnZ0IDAuMzMyNTE2IDAuMTI0NDgzCnZ0IDAuMzI3NjYwIDAuMTA2NTQwCnZ0IDAuMzIyMjUzIDAuMDg5NDkyCnZ0IDAuMzE2Njc3IDAuMDczNzU5CnZ0IDAuMjk5Njc5IDAuMDI1NjI5CnZ0IDAuMjk5NjQxIDAuMDI1NTA5CnZ0IDAuMjk5NjExIDAuMDI1NDEzCnZ0IDAuMjk5NTg5IDAuMDI1MzQyCnZ0IDAuMjk5NTc1IDAuMDI1Mjk5CnZ0IDAuMzE2NTg2IDAuMTIxNTY2CnZ0IDAuMzA5NDg3IDAuMTAzMzQ2CnZ0IDAuMzAxNTg5IDAuMDg2MDM1CnZ0IDAuMjkzMjA4IDAuMDcwMDU5CnZ0IDAuMjYwMjE1IDAuMDIwOTMwCnZ0IDAuMjU5OTQzIDAuMDIwODk4CnZ0IDAuMjU5NzI1IDAuMDIwODcyCnZ0IDAuMjU5NTY1IDAuMDIwODU0CnZ0IDAuMjU5NDY3IDAuMDIwODQyCnZ0IDAuMTQ3ODEwIDAuMTI2MTIwCnZ0IDAuMTUzNDU0IDAuMTA3OTEwCnZ0IDAuMTU5ODcxIDAuMDkwNjA4CnZ0IDAuMTY2Nzg1IDAuMDc0NjQwCnZ0IDAuMTkyOTc1IDAuMDI2MjE0CnZ0IDAuMTkzNzQzIDAuMDI1OTQ2CnZ0IDAuMTk0MzYxIDAuMDI1NzMwCnZ0IDAuMTk0ODE0IDAuMDI1NTczCnZ0IDAuMTk1MDkwIDAuMDI1NDc2CnZ0IDAuMTM4NDA1IDAuMTMxNTI4CnZ0IDAuMTQxMDE2IDAuMTE0NjY1CnZ0IDAuMTQ0MTI5IDAuMDk4NjQzCnZ0IDAuMTQ3NDQ5IDAuMDgzODU3CnZ0IDAuMTU3MDQ5IDAuMDM4NjIwCnZ0IDAuMTU3MDU1IDAuMDM4NTA5CnZ0IDAuMTU3MDYwIDAuMDM4NDE5CnZ0IDAuMTU3MDYzIDAuMDM4MzUzCnZ0IDAuMTU3MDY1IDAuMDM4MzE0CnZ0IDAuMTI0NDA4IDAuMTQzMDYyCnZ0IDAuMTIzNDc4IDAuMTI3OTM4CnZ0IDAuMTIyNjg3IDAuMTEzNTY3CnZ0IDAuMTIxOTA2IDAuMTAwMzA1CnZ0IDAuMTE4MTMwIDAuMDU5NzI3CnZ0IDAuMTE4MDY0IDAuMDU5NjI5CnZ0IDAuMTE4MDEyIDAuMDU5NTUwCnZ0IDAuMTE3OTczIDAuMDU5NDkyCnZ0IDAuMTE3OTQ5IDAuMDU5NDU2CnZ0IDAuMTEwMjIxIDAuMTU4NzQzCnZ0IDAuMTA1ODQ2IDAuMTQ1OTMyCnZ0IDAuMTAxNTAyIDAuMTMzNzYwCnZ0IDAuMDk3MjkxIDAuMTIyNTI2CnZ0IDAuMDgzNzA1IDAuMDg4MTUxCnZ0IDAuMDgzNjIwIDAuMDg4MDY5CnZ0IDAuMDgzNTUyIDAuMDg4MDAzCnZ0IDAuMDgzNTAyIDAuMDg3OTU1CnZ0IDAuMDgzNDcyIDAuMDg3OTI2CnZ0IDAuMDk3NTAxIDAuMTc4MDU2CnZ0IDAuMDkwMjc5IDAuMTY4MDMwCnZ0IDAuMDgzMTM0IDAuMTU4NTA0CnZ0IDAuMDc2MzI2IDAuMTQ5NzEzCnZ0IDAuMDU1Mzg4IDAuMTIyODA5CnZ0IDAuMDU1MjkwIDAuMTIyNzQ2CnZ0IDAuMDU1MjExIDAuMTIyNjk1CnZ0IDAuMDU1MTUzIDAuMTIyNjU4CnZ0IDAuMDU1MTE4IDAuMTIyNjM1CnZ0IDAuMDg3NTMwIDAuMjAwMzAzCnZ0IDAuMDc4MjMzIDAuMTkzNDIwCnZ0IDAuMDY5MDkxIDAuMTg2ODgxCnZ0IDAuMDYwNDYyIDAuMTgwODQ1CnZ0IDAuMDM0MzIwIDAuMTYyMzc0CnZ0IDAuMDM0MjEzIDAuMTYyMzMxCnZ0IDAuMDM0MTI2IDAuMTYyMjk2CnZ0IDAuMDM0MDYzIDAuMTYyMjcxCnZ0IDAuMDM0MDI0IDAuMTYyMjU2CnZ0IDAuMDgxMTk4IDAuMjI0NjE4CnZ0IDAuMDcwNjQ1IDAuMjIxMTE3CnZ0IDAuMDYwMzEyIDAuMjE3NzkwCnZ0IDAuMDUwNTk4IDAuMjE0NzIwCnZ0IDAuMDIxMzM2IDAuMjA1MzIzCnZ0IDAuMDIxMjIzIDAuMjA1MzAyCnZ0IDAuMDIxMTMyIDAuMjA1Mjg0CnZ0IDAuMDIxMDY2IDAuMjA1MjcyCnZ0IDAuMDIxMDI1IDAuMjA1MjY0CnZ0IDAuMDc5MDI5IDAuMjUwMDAwCnZ0IDAuMDY4MDU4IDAuMjUwMDAwCnZ0IDAuMDU3MzI3IDAuMjUwMDAwCnZ0IDAuMDQ3MjUzIDAuMjUwMDAwCnZ0IDAuMDE2OTUwIDAuMjUwMDAxCnZ0IDAuMDE2ODM1IDAuMjUwMDAwCnZ0IDAuMDE2NzQzIDAuMjUwMDAwCnZ0IDAuMDE2Njc2IDAuMjUwMDAwCnZ0IDAuMDE2NjM0IDAuMjUwMDAwCnZ0IDAuMDgxMTk4IDAuMjc1MzgyCnZ0IDAuMDcwNjQ2IDAuMjc4ODgzCnZ0IDAuMDYwMzEyIDAuMjgyMjEwCnZ0IDAuMDUwNTk5IDAuMjg1MjgwCnZ0IDAuMDIxMzM2IDAuMjk0Njc3CnZ0IDAuMDIxMjIzIDAuMjk0Njk4CnZ0IDAuMDIxMTMyIDAuMjk0NzE2CnZ0IDAuMDIxMDY2IDAuMjk0NzI5CnZ0IDAuMDIxMDI1IDAuMjk0NzM3CnZ0IDAuMDg3NTMwIDAuMjk5Njk3CnZ0IDAuMDc4MjMzIDAuMzA2NTgwCnZ0IDAuMDY5MDkxIDAuMzEzMTIwCnZ0IDAuMDYwNDYyIDAuMzE5MTU1CnZ0IDAuMDM0MzIwIDAuMzM3NjI3CnZ0IDAuMDM0MjEzIDAuMzM3NjY5CnZ0IDAuMDM0MTI2IDAuMzM3NzA0CnZ0IDAuMDM0MDYzIDAuMzM3NzI5CnZ0IDAuMDM0MDI1IDAuMzM3NzQ1CnZ0IDAuMDk3NTAxIDAuMzIxOTQ1CnZ0IDAuMDkwMjgwIDAuMzMxOTcxCnZ0IDAuMDgzMTM0IDAuMzQxNDk3CnZ0IDAuMDc2MzI2IDAuMzUwMjg4CnZ0IDAuMDU1Mzg5IDAuMzc3MTkxCnZ0IDAuMDU1MjkxIDAuMzc3MjU1CnZ0IDAuMDU1MjEyIDAuMzc3MzA2CnZ0IDAuMDU1MTU0IDAuMzc3MzQzCnZ0IDAuMDU1MTE4IDAuMzc3MzY2CnZ0IDAuMTEwMjIwIDAuMzQxMjU2CnZ0IDAuMTA1ODQ1IDAuMzU0MDY4CnZ0IDAuMTAxNTAyIDAuMzY2MjQwCnZ0IDAuMDk3MjkxIDAuMzc3NDc0CnZ0IDAuMDgzNzA0IDAuNDExODQ4CnZ0IDAuMDgzNjIwIDAuNDExOTMwCnZ0IDAuMDgzNTUyIDAuNDExOTk3CnZ0IDAuMDgzNTAyIDAuNDEyMDQ1CnZ0IDAuMDgzNDcyIDAuNDEyMDc1CnZ0IDAuMTI0NDA5IDAuMzU2OTM4CnZ0IDAuMTIzNDc5IDAuMzcyMDYzCnZ0IDAuMTIyNjg4IDAuMzg2NDMzCnZ0IDAuMTIxOTA3IDAuMzk5Njk1CnZ0IDAuMTE4MTMxIDAuNDQwMjczCnZ0IDAuMTE4MDY1IDAuNDQwMzcxCnZ0IDAuMTE4MDEyIDAuNDQwNDUwCnZ0IDAuMTE3OTczIDAuNDQwNTA4CnZ0IDAuMTE3OTUwIDAuNDQwNTQ0CnZ0IDAuMTM4NDA1IDAuMzY4NDcxCnZ0IDAuMTQxMDE2IDAuMzg1MzM1CnZ0IDAuMTQ0MTI4IDAuNDAxMzU2CnZ0IDAuMTQ3NDQ5IDAuNDE2MTQzCnZ0IDAuMTU3MDQ5IDAuNDYxMzgwCnZ0IDAuMTU3MDU1IDAuNDYxNDkxCnZ0IDAuMTU3MDYwIDAuNDYxNTgxCnZ0IDAuMTU3MDYzIDAuNDYxNjQ2CnZ0IDAuMTU3MDY1IDAuNDYxNjg2CnZ0IDAuMTQ3ODEwIDAuMzczODc5CnZ0IDAuMTUzNDU1IDAuMzkyMDkwCnZ0IDAuMTU5ODcyIDAuNDA5MzkyCnZ0IDAuMTY2Nzg1IDAuNDI1MzYwCnZ0IDAuMTkyOTc1IDAuNDczNzg3CnZ0IDAuMTkzNzQzIDAuNDc0MDU0CnZ0IDAuMTk0MzYxIDAuNDc0MjcwCnZ0IDAuMTk0ODE1IDAuNDc0NDI3CnZ0IDAuMTk1MDkxIDAuNDc0NTI0CnZ0IDAuMzE2NTg1IDAuMzc4NDM0CnZ0IDAuMzMyNTE2IDAuMzc1NTE4CnZ0IDAuMzA5NDg3IDAuMzk2NjU0CnZ0IDAuMzI3NjYwIDAuMzkzNDYwCnZ0IDAuMzAxNTg4IDAuNDEzOTY0CnZ0IDAuMzIyMjUzIDAuNDEwNTA4CnZ0IDAuMjkzMjA4IDAuNDI5OTQxCnZ0IDAuMzE2Njc2IDAuNDI2MjQxCnZ0IDAuMjYwMjE1IDAuNDc5MDcwCnZ0IDAuMjk5Njc5IDAuNDc0MzcxCnZ0IDAuMjU5OTQzIDAuNDc5MTAyCnZ0IDAuMjk5NjQxIDAuNDc0NDkxCnZ0IDAuMjU5NzI1IDAuNDc5MTI4CnZ0IDAuMjk5NjExIDAuNDc0NTg3CnZ0IDAuMjU5NTY1IDAuNDc5MTQ2CnZ0IDAuMjk5NTg5IDAuNDc0NjU3CnZ0IDAuMjU5NDY3IDAuNDc5MTU4CnZ0IDAuMjk5NTc1IDAuNDc0NzAwCnZ0IDAuMzQ4MjY0IDAuMzY4NDcyCnZ0IDAuMzQ3MTQ1IDAuMzg1MzM1CnZ0IDAuMzQ1ODQyIDAuNDAxMzU3CnZ0IDAuMzQ0NTg0IDAuNDE2MTQzCnZ0IDAuMzQxODg3IDAuNDYxMzgwCnZ0IDAuMzQxOTMxIDAuNDYxNDkxCnZ0IDAuMzQxOTY3IDAuNDYxNTgxCnZ0IDAuMzQxOTk0IDAuNDYxNjQ2CnZ0IDAuMzQyMDEwIDAuNDYxNjg2CnZ0IDAuMzY0OTEyIDAuMzU2OTM3CnZ0IDAuMzY3NjE3IDAuMzcyMDYyCnZ0IDAuMzcwMjUxIDAuMzg2NDMzCnZ0IDAuMzcyODAzIDAuMzk5Njk1CnZ0IDAuMzgxMTUyIDAuNDQwMjcyCnZ0IDAuMzgxMjE5IDAuNDQwMzcxCnZ0IDAuMzgxMjc0IDAuNDQwNDUwCnZ0IDAuMzgxMzEzIDAuNDQwNTA4CnZ0IDAuMzgxMzM4IDAuNDQwNTQ0CnZ0IDAuMzgwNzg5IDAuMzQxMjU3CnZ0IDAuMzg2ODY1IDAuMzU0MDY4CnZ0IDAuMzkyODE1IDAuMzY2MjQwCnZ0IDAuMzk4NDQ4IDAuMzc3NDc0CnZ0IDAuNDE1NjQ3IDAuNDExODQ5CnZ0IDAuNDE1NzMyIDAuNDExOTMxCnZ0IDAuNDE1ODAwIDAuNDExOTk3CnZ0IDAuNDE1ODUwIDAuNDEyMDQ1CnZ0IDAuNDE1ODgxIDAuNDEyMDc1CnZ0IDAuMzk0NTM2IDAuMzIxOTQzCnZ0IDAuNDAzMzE3IDAuMzMxOTY5CnZ0IDAuNDExODY3IDAuMzQxNDk1CnZ0IDAuNDE5ODg1IDAuMzUwMjg3CnZ0IDAuNDQzOTk2IDAuMzc3MTkxCnZ0IDAuNDQ0MDk0IDAuMzc3MjU0CnZ0IDAuNDQ0MTczIDAuMzc3MzA1CnZ0IDAuNDQ0MjMxIDAuMzc3MzQyCnZ0IDAuNDQ0MjY3IDAuMzc3MzY1CnZ0IDAuNDA1MTA2IDAuMjk5Njk3CnZ0IDAuNDE1ODUxIDAuMzA2NTgwCnZ0IDAuNDI2MjY3IDAuMzEzMTE5CnZ0IDAuNDM1OTg4IDAuMzE5MTU1CnZ0IDAuNDY1MDgzIDAuMzM3NjI2CnZ0IDAuNDY1MTkwIDAuMzM3NjY5CnZ0IDAuNDY1Mjc3IDAuMzM3NzA0CnZ0IDAuNDY1MzQwIDAuMzM3NzI5CnZ0IDAuNDY1Mzc5IDAuMzM3NzQ0CnZ0IDAuNDExNzU0IDAuMjc1MzgzCnZ0IDAuNDIzNjg1IDAuMjc4ODg0CnZ0IDAuNDM1MjI1IDAuMjgyMjEwCnZ0IDAuNDQ1OTcwIDAuMjg1MjgwCnZ0IDAuNDc4MDc3IDAuMjk0Njc3CnZ0IDAuNDc4MTkwIDAuMjk0Njk4CnZ0IDAuNDc4MjgwIDAuMjk0NzE2CnZ0IDAuNDc4MzQ3IDAuMjk0NzI5CnZ0IDAuNDc4Mzg4IDAuMjk0NzM2CnZ0IDAuNDE0MDIwIDAuMjQ5OTk5CnZ0IDAuNDI2MzQ4IDAuMjQ5OTk5CnZ0IDAuNDM4MjY0IDAuMjUwMDAwCnZ0IDAuNDQ5MzUxIDAuMjUwMDAwCnZ0IDAuNDgyNDY1IDAuMjUwMDAwCnZ0IDAuNDgyNTgwIDAuMjUwMDAwCnZ0IDAuNDgyNjczIDAuMjUwMDAwCnZ0IDAuNDgyNzQwIDAuMjUwMDAwCnZ0IDAuNDgyNzgxIDAuMjUwMDAwCnZ0IDAuNDExNzUzIDAuMjI0NjE4CnZ0IDAuNDIzNjg1IDAuMjIxMTE3CnZ0IDAuNDM1MjI1IDAuMjE3NzkwCnZ0IDAuNDQ1OTcwIDAuMjE0NzIwCnZ0IDAuNDc4MDc3IDAuMjA1MzI0CnZ0IDAuNDc4MTg5IDAuMjA1MzAyCnZ0IDAuNDc4MjgwIDAuMjA1Mjg0CnZ0IDAuNDc4MzQ3IDAuMjA1MjcyCnZ0IDAuNDc4Mzg3IDAuMjA1MjY0CnZ0IDAuNDA1MTA2IDAuMjAwMzAzCnZ0IDAuNDE1ODUwIDAuMTkzNDIwCnZ0IDAuNDI2MjY3IDAuMTg2ODgwCnZ0IDAuNDM1OTg4IDAuMTgwODQ1CnZ0IDAuNDY1MDgzIDAuMTYyMzc0CnZ0IDAuNDY1MTkwIDAuMTYyMzMxCnZ0IDAuNDY1Mjc3IDAuMTYyMjk2CnZ0IDAuNDY1MzQwIDAuMTYyMjcxCnZ0IDAuNDY1Mzc5IDAuMTYyMjU2CnZ0IDAuMzk0NTM2IDAuMTc4MDU3CnZ0IDAuNDAzMzE2IDAuMTY4MDMxCnZ0IDAuNDExODY3IDAuMTU4NTA1CnZ0IDAuNDE5ODg1IDAuMTQ5NzEzCnZ0IDAuNDQzOTk2IDAuMTIyODA5CnZ0IDAuNDQ0MDk1IDAuMTIyNzQ2CnZ0IDAuNDQ0MTc0IDAuMTIyNjk1CnZ0IDAuNDQ0MjMxIDAuMTIyNjU4CnZ0IDAuNDQ0MjY3IDAuMTIyNjM1CnZ0IDAuMzgwNzg5IDAuMTU4NzQzCnZ0IDAuMzg2ODY1IDAuMTQ1OTMyCnZ0IDAuMzkyODE0IDAuMTMzNzU5CnZ0IDAuMzk4NDQ4IDAuMTIyNTI2CnZ0IDAuNDE1NjQ3IDAuMDg4MTUyCnZ0IDAuNDE1NzMyIDAuMDg4MDY5CnZ0IDAuNDE1ODAwIDAuMDg4MDAzCnZ0IDAuNDE1ODUxIDAuMDg3OTU1CnZ0IDAuNDE1ODgxIDAuMDg3OTI1CnZ0IDAuMzY0OTEyIDAuMTQzMDYyCnZ0IDAuMzY3NjE3IDAuMTI3OTM4CnZ0IDAuMzcwMjUxIDAuMTEzNTY3CnZ0IDAuMzcyODAzIDAuMTAwMzA1CnZ0IDAuMzgxMTUyIDAuMDU5NzI4CnZ0IDAuMzgxMjIwIDAuMDU5NjI5CnZ0IDAuMzgxMjc0IDAuMDU5NTUwCnZ0IDAuMzgxMzE0IDAuMDU5NDkyCnZ0IDAuMzgxMzM4IDAuMDU5NDU3CnZ0IDAuMzQ4MjY0IDAuMTMxNTI5CnZ0IDAuMzQ3MTQ1IDAuMTE0NjY2CnZ0IDAuMzQ1ODQxIDAuMDk4NjQzCnZ0IDAuMzQ0NTg0IDAuMDgzODU3CnZ0IDAuMzQxODg2IDAuMDM4NjIwCnZ0IDAuMzQxOTMxIDAuMDM4NTA5CnZ0IDAuMzQxOTY3IDAuMDM4NDE5CnZ0IDAuMzQxOTk0IDAuMDM4MzU0CnZ0IDAuMzQyMDEwIDAuMDM4MzE0CnZ0IDAuMzMyNTE2IDAuMTI0NDgzCnZ0IDAuMzI3NjYwIDAuMTA2NTQwCnZ0IDAuMzIyMjUzIDAuMDg5NDkyCnZ0IDAuMzE2Njc2IDAuMDczNzU5CnZ0IDAuMjk5Njc5IDAuMDI1NjI5CnZ0IDAuMjk5NjQxIDAuMDI1NTA5CnZ0IDAuMjk5NjExIDAuMDI1NDEzCnZ0IDAuMjk5NTg5IDAuMDI1MzQzCnZ0IDAuMjk5NTc1IDAuMDI1MzAwCnZ0IDAuMzE2NTg1IDAuMTIxNTY2CnZ0IDAuMzA5NDg2IDAuMTAzMzQ2CnZ0IDAuMzAxNTg5IDAuMDg2MDM1CnZ0IDAuMjkzMjA4IDAuMDcwMDU5CnZ0IDAuMjYwMjE1IDAuMDIwOTMwCnZ0IDAuMjU5OTQzIDAuMDIwODk4CnZ0IDAuMjU5NzI1IDAuMDIwODcyCnZ0IDAuMjU5NTY1IDAuMDIwODU0CnZ0IDAuMjU5NDY3IDAuMDIwODQyCnZ0IDAuMTQ3ODEwIDAuMTI2MTIxCnZ0IDAuMTUzNDU0IDAuMTA3OTEwCnZ0IDAuMTU5ODcxIDAuMDkwNjA4CnZ0IDAuMTY2Nzg1IDAuMDc0NjQwCnZ0IDAuMTkyOTc1IDAuMDI2MjE0CnZ0IDAuMTkzNzQzIDAuMDI1OTQ2CnZ0IDAuMTk0MzYxIDAuMDI1NzMwCnZ0IDAuMTk0ODE0IDAuMDI1NTczCnZ0IDAuMTk1MDkwIDAuMDI1NDc3CnZ0IDAuMTM4NDA2IDAuMTMxNTI5CnZ0IDAuMTQxMDE2IDAuMTE0NjY2CnZ0IDAuMTQ0MTI4IDAuMDk4NjQ0CnZ0IDAuMTQ3NDQ5IDAuMDgzODU3CnZ0IDAuMTU3MDUwIDAuMDM4NjIwCnZ0IDAuMTU3MDU1IDAuMDM4NTA5CnZ0IDAuMTU3MDU5IDAuMDM4NDE5CnZ0IDAuMTU3MDYyIDAuMDM4MzU0CnZ0IDAuMTU3MDY1IDAuMDM4MzE0CnZ0IDAuMTI0NDA4IDAuMTQzMDYzCnZ0IDAuMTIzNDc4IDAuMTI3OTM4CnZ0IDAuMTIyNjg3IDAuMTEzNTY3CnZ0IDAuMTIxOTA2IDAuMTAwMzA1CnZ0IDAuMTE4MTI5IDAuMDU5NzI4CnZ0IDAuMTE4MDY0IDAuMDU5NjI5CnZ0IDAuMTE4MDExIDAuMDU5NTUwCnZ0IDAuMTE3OTczIDAuMDU5NDkyCnZ0IDAuMTE3OTQ5IDAuMDU5NDU2CnZ0IDAuMTEwMjIxIDAuMTU4NzQzCnZ0IDAuMTA1ODQ2IDAuMTQ1OTMyCnZ0IDAuMTAxNTAyIDAuMTMzNzU5CnZ0IDAuMDk3MjkxIDAuMTIyNTI2CnZ0IDAuMDgzNzA0IDAuMDg4MTUxCnZ0IDAuMDgzNjIwIDAuMDg4MDY5CnZ0IDAuMDgzNTUyIDAuMDg4MDAzCnZ0IDAuMDgzNTAyIDAuMDg3OTU1CnZ0IDAuMDgzNDcxIDAuMDg3OTI1CnZ0IDAuMDk3NTAxIDAuMTc4MDU2CnZ0IDAuMDkwMjc5IDAuMTY4MDMxCnZ0IDAuMDgzMTMzIDAuMTU4NTA1CnZ0IDAuMDc2MzI2IDAuMTQ5NzEzCnZ0IDAuMDU1Mzg4IDAuMTIyODA5CnZ0IDAuMDU1MjkwIDAuMTIyNzQ2CnZ0IDAuMDU1MjExIDAuMTIyNjk1CnZ0IDAuMDU1MTUzIDAuMTIyNjU4CnZ0IDAuMDU1MTE4IDAuMTIyNjM1CnZ0IDAuMDg3NTI5IDAuMjAwMzA1CnZ0IDAuMDc4MjMyIDAuMTkzNDIyCnZ0IDAuMDY5MDkxIDAuMTg2ODgxCnZ0IDAuMDYwNDYxIDAuMTgwODQ2CnZ0IDAuMDM0MzIwIDAuMTYyMzc0CnZ0IDAuMDM0MjEzIDAuMTYyMzMxCnZ0IDAuMDM0MTI2IDAuMTYyMjk3CnZ0IDAuMDM0MDYzIDAuMTYyMjcxCnZ0IDAuMDM0MDI0IDAuMTYyMjU2CnZ0IDAuMDgxMTk4IDAuMjI0NjE4CnZ0IDAuMDcwNjQ2IDAuMjIxMTE3CnZ0IDAuMDYwMzEyIDAuMjE3NzkwCnZ0IDAuMDUwNTk5IDAuMjE0NzIwCnZ0IDAuMDIxMzM2IDAuMjA1MzIzCnZ0IDAuMDIxMjIzIDAuMjA1MzAyCnZ0IDAuMDIxMTMyIDAuMjA1Mjg0CnZ0IDAuMDIxMDY2IDAuMjA1MjcyCnZ0IDAuMDIxMDI1IDAuMjA1MjY0CnZ0IDAuMDc5MDI4IDAuMjUwMDAwCnZ0IDAuMDY4MDU3IDAuMjUwMDAwCnZ0IDAuMDU3MzI3IDAuMjUwMDAwCnZ0IDAuMDQ3MjUzIDAuMjUwMDAwCnZ0IDAuMDE2OTUwIDAuMjUwMDAwCnZ0IDAuMDE2ODM1IDAuMjUwMDAwCnZ0IDAuMDE2NzQzIDAuMjUwMDAwCnZ0IDAuMDE2Njc2IDAuMjUwMDAwCnZ0IDAuMDE2NjM0IDAuMjUwMDAwCnZ0IDAuMDgxMTk3IDAuMjc1MzgyCnZ0IDAuMDcwNjQ1IDAuMjc4ODgzCnZ0IDAuMDYwMzExIDAuMjgyMjEwCnZ0IDAuMDUwNTk4IDAuMjg1MjgwCnZ0IDAuMDIxMzM2IDAuMjk0Njc3CnZ0IDAuMDIxMjIzIDAuMjk0Njk5CnZ0IDAuMDIxMTMyIDAuMjk0NzE2CnZ0IDAuMDIxMDY2IDAuMjk0NzI5CnZ0IDAuMDIxMDI1IDAuMjk0NzM3CnZ0IDAuMDg3NTMwIDAuMjk5Njk3CnZ0IDAuMDc4MjMzIDAuMzA2NTgwCnZ0IDAuMDY5MDkyIDAuMzEzMTIwCnZ0IDAuMDYwNDYzIDAuMzE5MTU1CnZ0IDAuMDM0MzIwIDAuMzM3NjI3CnZ0IDAuMDM0MjEzIDAuMzM3NjY5CnZ0IDAuMDM0MTI2IDAuMzM3NzA0CnZ0IDAuMDM0MDYzIDAuMzM3NzI5CnZ0IDAuMDM0MDI1IDAuMzM3NzQ1CnZ0IDAuMDk3NTAxIDAuMzIxOTQ0CnZ0IDAuMDkwMjc5IDAuMzMxOTcwCnZ0IDAuMDgzMTM0IDAuMzQxNDk2CnZ0IDAuMDc2MzI2IDAuMzUwMjg3CnZ0IDAuMDU1Mzg4IDAuMzc3MTkxCnZ0IDAuMDU1MjkwIDAuMzc3MjU1CnZ0IDAuMDU1MjExIDAuMzc3MzA2CnZ0IDAuMDU1MTUzIDAuMzc3MzQzCnZ0IDAuMDU1MTE4IDAuMzc3MzY1CnZ0IDAuMTEwMjIxIDAuMzQxMjU3CnZ0IDAuMTA1ODQ2IDAuMzU0MDY4CnZ0IDAuMTAxNTAzIDAuMzY2MjQwCnZ0IDAuMDk3MjkyIDAuMzc3NDc0CnZ0IDAuMDgzNzA1IDAuNDExODQ5CnZ0IDAuMDgzNjIwIDAuNDExOTMxCnZ0IDAuMDgzNTUyIDAuNDExOTk3CnZ0IDAuMDgzNTAyIDAuNDEyMDQ1CnZ0IDAuMDgzNDcyIDAuNDEyMDc1CnZ0IDAuMTI0NDA4IDAuMzU2OTM4CnZ0IDAuMTIzNDc4IDAuMzcyMDYzCnZ0IDAuMTIyNjg3IDAuMzg2NDMzCnZ0IDAuMTIxOTA3IDAuMzk5Njk1CnZ0IDAuMTE4MTMwIDAuNDQwMjcyCnZ0IDAuMTE4MDY1IDAuNDQwMzcxCnZ0IDAuMTE4MDEyIDAuNDQwNDUwCnZ0IDAuMTE3OTczIDAuNDQwNTA5CnZ0IDAuMTE3OTQ5IDAuNDQwNTQ0CnZ0IDAuMTM4NDA1IDAuMzY4NDcxCnZ0IDAuMTQxMDE2IDAuMzg1MzM0CnZ0IDAuMTQ0MTI4IDAuNDAxMzU2CnZ0IDAuMTQ3NDQ5IDAuNDE2MTQzCnZ0IDAuMTU3MDQ5IDAuNDYxMzgwCnZ0IDAuMTU3MDU1IDAuNDYxNDkxCnZ0IDAuMTU3MDYwIDAuNDYxNTgxCnZ0IDAuMTU3MDYzIDAuNDYxNjQ2CnZ0IDAuMTU3MDY1IDAuNDYxNjg3CnZ0IDAuMTQ3ODEwIDAuMzczODgwCnZ0IDAuMTUzNDU1IDAuMzkyMDkwCnZ0IDAuMTU5ODcxIDAuNDA5MzkyCnZ0IDAuMTY2Nzg1IDAuNDI1MzYwCnZ0IDAuMTkyOTc1IDAuNDczNzg2CnZ0IDAuMTkzNzQ0IDAuNDc0MDU0CnZ0IDAuMTk0MzYyIDAuNDc0MjcwCnZ0IDAuMTk0ODE1IDAuNDc0NDI3CnZ0IDAuMTk1MDkxIDAuNDc0NTI0CnZ0IDAuNTkxNDUzIDAuMjYyNDM1CnZ0IDAuNTkxNDUzIDAuMjg3ODAyCnZ0IDAuNTk4MDEwIDAuMjg3MTgwCnZ0IDAuNTk4MDEwIDAuMjYxNTQ0CnZ0IDAuNTg0NDE4IDAuMjYzMzg4CnZ0IDAuNTg0NDE4IDAuMjg4NDY4CnZ0IDAuMTM4NjE0IDAuNzIzMDM1CnZ0IDAuMTYzOTUwIDAuNzIzMDM1CnZ0IDAuODY1NjQ1IDAuNTE0MjEwCnZ0IDAuODQwMTAyIDAuNTE0MjEwCnZ0IDAuODQwNzUxIDAuNTE3MTkwCnZ0IDAuODY2MTgxIDAuNTE3MTkwCnZ0IDAuMTM5NTYyIDAuNzM4NTY3CnZ0IDAuMTY1NTE4IDAuNzM4NTY3CnZ0IDAuMTY1MDMyIDAuNzM1NzkwCnZ0IDAuMTM5MjY1IDAuNzM1NzkwCnZ0IDAuODY2NjEzIDAuNTIwMzM2CnZ0IDAuODQxMjczIDAuNTIwMzM2CnZ0IDAuODQxNjUzIDAuNTIzNjA4CnZ0IDAuODY2OTI3IDAuNTIzNjA4CnZ0IDAuNTYxMzQxIDAuMjY1MzgwCnZ0IDAuNTYxMzQxIDAuMjkwNjQwCnZ0IDAuNTY5MjY2IDAuMjg5ODk2CnZ0IDAuNTY5MjY2IDAuMjY0ODU2CnZ0IDAuMTM5OTA2IDAuNzUwMDAwCnZ0IDAuMTY2MDc4IDAuNzUwMDAwCnZ0IDAuNDA4NTQ3IDAuOTg0MjgyCnZ0IDAuNDA4NTQ3IDAuOTU4Mjk4CnZ0IDAuNDAxOTkwIDAuOTU4NTQzCnZ0IDAuNDAxOTkwIDAuOTg0NzA3CnZ0IDAuMzg1NDQwIDAuOTU4Njc5CnZ0IDAuMzc1MDAwIDAuOTU4OTIyCnZ0IDAuMzc1MDAwIDAuOTg1MDk0CnZ0IDAuNDM4NjU5IDAuOTgyMzE2CnZ0IDAuNDM4NjU5IDAuOTU3MTU4CnZ0IDAuNDMwNzM0IDAuOTU3NDYwCnZ0IDAuNDMwNzM0IDAuOTgyODM2CnZ0IDAuMTY0NjI4IDAuNzMyODEwCnZ0IDAuMTM5MDE5IDAuNzMyODEwCnZ0IDAuODY3MTI3IDAuNTI2OTY1CnZ0IDAuODQxODkzIDAuNTI2OTY1CnZ0IDAuMTY0MzExIDAuNzI5NjY0CnZ0IDAuMTM4ODI3IDAuNzI5NjY0CnZ0IDAuNDM5ODI3IDAuOTgyMjM5CnZ0IDAuODY0MjczIDAuNTAwMDAwCnZ0IDAuODM4NDM3IDAuNTAwMDAwCnZ0IDAuODM5MzI3IDAuNTExNDMzCnZ0IDAuODY1MDA2IDAuNTExNDMzCnZ0IDAuMTY0MDg0IDAuNzI2MzkyCnZ0IDAuMTM4NjkxIDAuNzI2MzkyCnZ0IDAuNDIzMDA5IDAuOTU3NzUzCnZ0IDAuNDIzMDA5IDAuOTgzMzQxCnZ0IDAuNDE1NTgyIDAuOTU4MDM0CnZ0IDAuNDE1NTgyIDAuOTgzODI1CnZ0IDAuNTc2OTkxIDAuMjg5MTY5CnZ0IDAuNTc2OTkxIDAuMjY0MzQ0CnZ0IDAuNTc3NzA4IDAuMjY0Mjk2CnZ0IDAuNjIyMDUyIDAuMjg2NjcxCnZ0IDAuNjI1MDAwIDAuMjg2NTYzCnZ0IDAuNjI1MDAwIDAuMjYwNzI3CnZ0IDAuMzgyNTA3IDAuOTcxMTM4CnZ0IDAuMzk0NzUxIDAuOTcxMTM4CnZ0IDAuMzk1MzczIDAuOTc3MDE4CnZ0IDAuMzgyNzQzIDAuOTc3MDE4CnZ0IDAuNjA2MTI2IDAuNTE3MDM2CnZ0IDAuNjA1NjEwIDAuNTE0MDc4CnZ0IDAuMzgyMzUxIDAuMjg0OTI3CnZ0IDAuMzk0MzQwIDAuMjg0OTI3CnZ0IDAuMzk0MzQwIDAuNDY1MDczCnZ0IDAuMzgyMzUxIDAuNDY1MDczCnZ0IDAuNjA1NjYwIDAuMjg0OTI3CnZ0IDAuNjY3MzE0IDAuMzUyNjYxCnZ0IDAuMzgyMzUxIDAuNzg0OTI3CnZ0IDAuMzk0MzQwIDAuNzg0OTI3CnZ0IDAuMzk0MzQwIDAuOTY1MDczCnZ0IDAuMzgyMzUxIDAuOTY1MDczCnZ0IDAuMzk1OTQ0IDAuOTgyNTM2CnZ0IDAuMzgyOTYxIDAuOTgyNTM2CnZ0IDAuMzk2Mjk0IDAuOTg3NTIzCnZ0IDAuMzgzMDk0IDAuOTg3NTIzCnZ0IDAuMzk2MzI0IDEuMDAwMDAwCnZ0IDAuMzgzMTA1IDEuMDAwMDAwCnZ0IDAuMzgzMTA1IDAuMDA2MDg2CnZ0IDAuMzk2MzI0IDAuMDA2MDg2CnZ0IDAuMzk1OTk3IDAuMDA4NTE4CnZ0IDAuMzgyOTgxIDAuMDA4NTE4CnZ0IDAuMzk1MzUzIDAuMDExMjEwCnZ0IDAuMzgyNzM2IDAuMDExMjEwCnZ0IDAuMzk0NTM5IDAuMDE0MDc4CnZ0IDAuMzgyNDI3IDAuMDE0MDc4CnZ0IDAuMzkzODc0IDAuMDE3MDM2CnZ0IDAuMzgyMTc0IDAuMDE3MDM2CnZ0IDAuMzkzODc0IDAuMjMyOTY0CnZ0IDAuMzgyMTc0IDAuMjMyOTY0CnZ0IDAuNjY3OTY3IDAuMzQ4OTk3CnZ0IDAuNjY4NTgxIDAuMzQ1NzM3CnZ0IDAuNjY5MzkzIDAuMzQyOTgwCnZ0IDAuNjcwNTM0IDAuMzMxMzA1CnZ0IDAuNjcyMDQxIDAuMzMwNDk0CnZ0IDAuNjczODI0IDAuMzI5NTk3CnZ0IDAuNjc1NjE4IDAuMzI4NjQxCnZ0IDAuNjA2MTI2IDAuMjMyOTY0CnZ0IDAuMzgyMTc0IDAuNTE3MDM2CnZ0IDAuMzkzODc0IDAuNTE3MDM2CnZ0IDAuMzkzODc0IDAuNzMyOTY0CnZ0IDAuMzgyMTc0IDAuNzMyOTY0CnZ0IDAuNjA1MjM1IDAuNTExMjEwCnZ0IDAuNjA1MzAxIDAuNTA4NTE4CnZ0IDAuNjA1OTM1IDAuNTA2MDg2CnZ0IDAuNjA3MTU2IDAuNDkzMDExCnZ0IDAuNjA4OTAyIDAuNDg5MTE4CnZ0IDAuNjExMDQwIDAuNDg1MDIxCnZ0IDAuNjEzMzQ5IDAuNDgwODQ1CnZ0IDAuNjA1NjYwIDAuNDY1MDczCnZ0IDAuNjA1NjYwIDAuNzg0OTI3CnZ0IDAuNjEzMzQ5IDAuNzY5MTU1CnZ0IDAuNjExMDQwIDAuNzY0OTc5CnZ0IDAuNjA4OTAyIDAuNzYwODgyCnZ0IDAuNjA3MTU2IDAuNzU2OTg5CnZ0IDAuNjA1OTM1IDAuNzQzOTE0CnZ0IDAuNjA1MzAxIDAuNzQxNDgyCnZ0IDAuNjA1MjM1IDAuNzM4NzkwCnZ0IDAuNjA1NjEwIDAuNzM1OTIyCnZ0IDAuNjA2MTI2IDAuNzMyOTY0CnZ0IDAuMzk0MzkwIDAuNzM1OTIyCnZ0IDAuNDA5MTU2IDAuNzMyOTE0CnZ0IDAuNDA5NDkzIDAuNzM1ODgzCnZ0IDAuNDI0NDgyIDAuNzMyNzY2CnZ0IDAuNDI0NDMyIDAuNzM1NzY2CnZ0IDAuNDM5NTM5IDAuNzMyNTI0CnZ0IDAuNDM4ODk5IDAuNzM1NTc2CnZ0IDAuNDU0MDIwIDAuNzMyMTkzCnZ0IDAuNDUyNTk3IDAuNzM1MzE3CnZ0IDAuNDY3NjMwIDAuNzMxNzgwCnZ0IDAuNDY1MjQ2IDAuNzM0OTk0CnZ0IDAuNTMyMzcwIDAuNzMxNzgwCnZ0IDAuNTM0NzU0IDAuNzM0OTk0CnZ0IDAuNTQ1OTgwIDAuNzMyMTkzCnZ0IDAuNTQ3NDAzIDAuNzM1MzE3CnZ0IDAuNTYwNDYxIDAuNzMyNTI0CnZ0IDAuNTYxMTAxIDAuNzM1NTc2CnZ0IDAuNTc1NTE4IDAuNzMyNzY2CnZ0IDAuNTc1NTY4IDAuNzM1NzY2CnZ0IDAuNTkwODQ0IDAuNzMyOTE0CnZ0IDAuNTkwNTA3IDAuNzM1ODgzCnZ0IDAuMzk0NzY1IDAuNzM4NzkwCnZ0IDAuNDA5NzA2IDAuNzM4NzY0CnZ0IDAuNDI0MjcwIDAuNzM4Njg3CnZ0IDAuNDM4MTU0IDAuNzM4NTYwCnZ0IDAuNDUxMDcyIDAuNzM4Mzg4CnZ0IDAuNDYyNzU5IDAuNzM4MTczCnZ0IDAuNTM3MjQxIDAuNzM4MTczCnZ0IDAuNTQ4OTI4IDAuNzM4Mzg4CnZ0IDAuNTYxODQ2IDAuNzM4NTYwCnZ0IDAuNTc1NzMwIDAuNzM4Njg3CnZ0IDAuNTkwMjk0IDAuNzM4NzY0CnZ0IDAuMzk0Njk5IDAuNzQxNDgyCnZ0IDAuNDA5NTc5IDAuNzQxNDY2CnZ0IDAuNDIzOTQyIDAuNzQxNDIxCnZ0IDAuNDM3NDkxIDAuNzQxMzQ2CnZ0IDAuNDQ5OTQ2IDAuNzQxMjQ1CnZ0IDAuNDYxMDUzIDAuNzQxMTE5CnZ0IDAuNTM4OTQ3IDAuNzQxMTE5CnZ0IDAuNTUwMDU0IDAuNzQxMjQ1CnZ0IDAuNTYyNTA5IDAuNzQxMzQ2CnZ0IDAuNTc2MDU4IDAuNzQxNDIxCnZ0IDAuNTkwNDIxIDAuNzQxNDY2CnZ0IDAuMzk0MDY1IDAuNzQzOTE0CnZ0IDAuNDA4OTk2IDAuNzQzOTAwCnZ0IDAuNDIzMzMyIDAuNzQzODU5CnZ0IDAuNDM2Nzc3IDAuNzQzNzkxCnZ0IDAuNDQ5MDU2IDAuNzQzNjk5CnZ0IDAuNDU5OTE4IDAuNzQzNTg0CnZ0IDAuNTQwMDgyIDAuNzQzNTg1CnZ0IDAuNTUwOTQ0IDAuNzQzNjk5CnZ0IDAuNTYzMjIzIDAuNzQzNzkxCnZ0IDAuNTc2NjY5IDAuNzQzODU5CnZ0IDAuNTkxMDA0IDAuNzQzOTAwCnZ0IDAuMzkyODQ0IDAuNzU2OTg5CnZ0IDAuNDA3OTM3IDAuNzU2OTgwCnZ0IDAuNDIyNDA4IDAuNzU2OTU0CnZ0IDAuNDM1OTYzIDAuNzU2OTExCnZ0IDAuNDQ4MzI2IDAuNzU2ODUyCnZ0IDAuNDU5MjQ2IDAuNzU2Nzc5CnZ0IDAuNTQwNzU1IDAuNzU2Nzc5CnZ0IDAuNTUxNjc0IDAuNzU2ODUyCnZ0IDAuNTY0MDM3IDAuNzU2OTExCnZ0IDAuNTc3NTkyIDAuNzU2OTU0CnZ0IDAuNTkyMDYzIDAuNzU2OTgwCnZ0IDAuMzkxMDk4IDAuNzYwODgyCnZ0IDAuNDA2NDUzIDAuNzYwODkyCnZ0IDAuNDIxMjExIDAuNzYwOTIyCnZ0IDAuNDM1MDc0IDAuNzYwOTcxCnZ0IDAuNDQ3NzY0IDAuNzYxMDM4CnZ0IDAuNDU5MDIyIDAuNzYxMTIxCnZ0IDAuNTQwOTc5IDAuNzYxMTIxCnZ0IDAuNTUyMjM2IDAuNzYxMDM4CnZ0IDAuNTY0OTI2IDAuNzYwOTcxCnZ0IDAuNTc4Nzg5IDAuNzYwOTIyCnZ0IDAuNTkzNTQ3IDAuNzYwODkyCnZ0IDAuMzg4OTYwIDAuNzY0OTc5CnZ0IDAuNDA0NjYxIDAuNzY1MDAxCnZ0IDAuNDE5ODQxIDAuNzY1MDY2CnZ0IDAuNDM0MjAwIDAuNzY1MTczCnZ0IDAuNDQ3NDQ5IDAuNzY1MzE4CnZ0IDAuNDU5MzIyIDAuNzY1NDk4CnZ0IDAuNTQwNjc4IDAuNzY1NDk4CnZ0IDAuNTUyNTUxIDAuNzY1MzE4CnZ0IDAuNTY1ODAwIDAuNzY1MTczCnZ0IDAuNTgwMTU5IDAuNzY1MDY2CnZ0IDAuNTk1MzM5IDAuNzY1MDAxCnZ0IDAuMzg2NjUxIDAuNzY5MTU1CnZ0IDAuNDAyNzg4IDAuNzY5MjUxCnZ0IDAuNDE4NTg5IDAuNzY5NTMzCnZ0IDAuNDMzNzEwIDAuNzY5OTkxCnZ0IDAuNDQ3ODIxIDAuNzcwNjEyCnZ0IDAuNDYwNjIyIDAuNzcxMzgxCnZ0IDAuNTM5Mzc4IDAuNzcxMzgxCnZ0IDAuNTUyMTc5IDAuNzcwNjEyCnZ0IDAuNTY2MjkwIDAuNzY5OTkxCnZ0IDAuNTgxNDExIDAuNzY5NTMzCnZ0IDAuNTk3MjEyIDAuNzY5MjUxCnZ0IDAuNDA5NDY1IDAuNzg1MDQwCnZ0IDAuNDI0NDQyIDAuNzg1MzczCnZ0IDAuNDM4OTQwIDAuNzg1OTE3CnZ0IDAuNDUyNjQ2IDAuNzg2NjU2CnZ0IDAuNDY1Mjc3IDAuNzg3NTc1CnZ0IDAuNTM0NzIzIDAuNzg3NTc1CnZ0IDAuNTQ3MzU0IDAuNzg2NjU2CnZ0IDAuNTYxMDYwIDAuNzg1OTE3CnZ0IDAuNTc1NTU4IDAuNzg1MzczCnZ0IDAuNTkwNTM1IDAuNzg1MDQwCnZ0IDAuMzg2NjUxIDAuNDgwODQ1CnZ0IDAuNDA5NDY1IDAuNDY0OTYwCnZ0IDAuNDAyNzg4IDAuNDgwNzQ5CnZ0IDAuNDI0NDQyIDAuNDY0NjI3CnZ0IDAuNDE4NTg5IDAuNDgwNDY3CnZ0IDAuNDM4OTQwIDAuNDY0MDgzCnZ0IDAuNDMzNzEwIDAuNDgwMDA5CnZ0IDAuNDUyNjQ2IDAuNDYzMzQ0CnZ0IDAuNDQ3ODIxIDAuNDc5Mzg4CnZ0IDAuNDY1Mjc3IDAuNDYyNDI1CnZ0IDAuNDYwNjIyIDAuNDc4NjE5CnZ0IDAuNTM0NzIzIDAuNDYyNDI1CnZ0IDAuNTM5Mzc4IDAuNDc4NjE5CnZ0IDAuNTQ3MzU0IDAuNDYzMzQ0CnZ0IDAuNTUyMTc5IDAuNDc5Mzg4CnZ0IDAuNTYxMDYwIDAuNDY0MDgzCnZ0IDAuNTY2MjkwIDAuNDgwMDEwCnZ0IDAuNTc1NTU4IDAuNDY0NjI3CnZ0IDAuNTgxNDExIDAuNDgwNDY3CnZ0IDAuNTkwNTM1IDAuNDY0OTYwCnZ0IDAuNTk3MjEyIDAuNDgwNzQ5CnZ0IDAuMzg4OTYxIDAuNDg1MDIxCnZ0IDAuNDA0NjYxIDAuNDg0OTk5CnZ0IDAuNDE5ODQxIDAuNDg0OTM0CnZ0IDAuNDM0MjAwIDAuNDg0ODI3CnZ0IDAuNDQ3NDQ5IDAuNDg0NjgyCnZ0IDAuNDU5MzIyIDAuNDg0NTAzCnZ0IDAuNTQwNjc4IDAuNDg0NTAyCnZ0IDAuNTUyNTUxIDAuNDg0NjgyCnZ0IDAuNTY1ODAwIDAuNDg0ODI3CnZ0IDAuNTgwMTU5IDAuNDg0OTM0CnZ0IDAuNTk1MzM5IDAuNDg0OTk5CnZ0IDAuMzkxMDk4IDAuNDg5MTE4CnZ0IDAuNDA2NDUzIDAuNDg5MTA4CnZ0IDAuNDIxMjExIDAuNDg5MDc4CnZ0IDAuNDM1MDc0IDAuNDg5MDI5CnZ0IDAuNDQ3NzY0IDAuNDg4OTYyCnZ0IDAuNDU5MDIyIDAuNDg4ODc5CnZ0IDAuNTQwOTc4IDAuNDg4ODc5CnZ0IDAuNTUyMjM2IDAuNDg4OTYyCnZ0IDAuNTY0OTI2IDAuNDg5MDI5CnZ0IDAuNTc4Nzg5IDAuNDg5MDc4CnZ0IDAuNTkzNTQ3IDAuNDg5MTA4CnZ0IDAuMzkyODQ0IDAuNDkzMDExCnZ0IDAuNDA3OTM3IDAuNDkzMDIwCnZ0IDAuNDIyNDA4IDAuNDkzMDQ2CnZ0IDAuNDM1OTYzIDAuNDkzMDg5CnZ0IDAuNDQ4MzI2IDAuNDkzMTQ4CnZ0IDAuNDU5MjQ2IDAuNDkzMjIxCnZ0IDAuNTQwNzU1IDAuNDkzMjIxCnZ0IDAuNTUxNjc0IDAuNDkzMTQ4CnZ0IDAuNTY0MDM3IDAuNDkzMDg5CnZ0IDAuNTc3NTkyIDAuNDkzMDQ2CnZ0IDAuNTkyMDYzIDAuNDkzMDIwCnZ0IDAuMzk0MDY1IDAuNTA2MDg2CnZ0IDAuNDA4OTk2IDAuNTA2MTAwCnZ0IDAuNDIzMzMxIDAuNTA2MTQxCnZ0IDAuNDM2Nzc3IDAuNTA2MjA5CnZ0IDAuNDQ5MDU2IDAuNTA2MzAxCnZ0IDAuNDU5OTE5IDAuNTA2NDE2CnZ0IDAuNTQwMDgyIDAuNTA2NDE2CnZ0IDAuNTUwOTQ0IDAuNTA2MzAxCnZ0IDAuNTYzMjIzIDAuNTA2MjA5CnZ0IDAuNTc2NjY5IDAuNTA2MTQxCnZ0IDAuNTkxMDA0IDAuNTA2MTAwCnZ0IDAuMzk0Njk5IDAuNTA4NTE4CnZ0IDAuNDA5NTc5IDAuNTA4NTM0CnZ0IDAuNDIzOTQyIDAuNTA4NTc5CnZ0IDAuNDM3NDkxIDAuNTA4NjU0CnZ0IDAuNDQ5OTQ2IDAuNTA4NzU1CnZ0IDAuNDYxMDUzIDAuNTA4ODgwCnZ0IDAuNTM4OTQ3IDAuNTA4ODgwCnZ0IDAuNTUwMDU0IDAuNTA4NzU1CnZ0IDAuNTYyNTA5IDAuNTA4NjUzCnZ0IDAuNTc2MDU4IDAuNTA4NTc5CnZ0IDAuNTkwNDIxIDAuNTA4NTM0CnZ0IDAuMzk0NzY1IDAuNTExMjEwCnZ0IDAuNDA5NzA2IDAuNTExMjM2CnZ0IDAuNDI0MjcwIDAuNTExMzEzCnZ0IDAuNDM4MTU0IDAuNTExNDQwCnZ0IDAuNDUxMDcyIDAuNTExNjEyCnZ0IDAuNDYyNzU5IDAuNTExODI3CnZ0IDAuNTM3MjQxIDAuNTExODI3CnZ0IDAuNTQ4OTI4IDAuNTExNjEyCnZ0IDAuNTYxODQ2IDAuNTExNDQwCnZ0IDAuNTc1NzMwIDAuNTExMzEzCnZ0IDAuNTkwMjk0IDAuNTExMjM2CnZ0IDAuMzk0MzkwIDAuNTE0MDc4CnZ0IDAuNDA5NDkzIDAuNTE0MTE3CnZ0IDAuNDI0NDMyIDAuNTE0MjM0CnZ0IDAuNDM4ODk5IDAuNTE0NDI0CnZ0IDAuNDUyNTk3IDAuNTE0NjgzCnZ0IDAuNDY1MjQ2IDAuNTE1MDA2CnZ0IDAuNTM0NzU0IDAuNTE1MDA2CnZ0IDAuNTQ3NDAzIDAuNTE0NjgzCnZ0IDAuNTYxMTAxIDAuNTE0NDI0CnZ0IDAuNTc1NTY4IDAuNTE0MjM0CnZ0IDAuNTkwNTA3IDAuNTE0MTE3CnZ0IDAuNDA5MTU2IDAuNTE3MDg2CnZ0IDAuNDI0NDgyIDAuNTE3MjM0CnZ0IDAuNDM5NTM5IDAuNTE3NDc2CnZ0IDAuNDU0MDIwIDAuNTE3ODA3CnZ0IDAuNDY3NjMwIDAuNTE4MjIwCnZ0IDAuNTMyMzcwIDAuNTE4MjIwCnZ0IDAuNTQ1OTgwIDAuNTE3ODA3CnZ0IDAuNTYwNDYxIDAuNTE3NDc2CnZ0IDAuNTc1NTE4IDAuNTE3MjM0CnZ0IDAuNTkwODQ0IDAuNTE3MDg2CnZ0IDAuMzI0MzgyIDAuMzI4NjQxCnZ0IDAuNDA5NjgxIDAuMjMyMTg5CnZ0IDAuMzQ5ODY1IDAuMzI3ODc3CnZ0IDAuNDI2MzMyIDAuMjI5ODkzCnZ0IDAuMzc1NTM2IDAuMzI1NjE5CnZ0IDAuNDQzMTMzIDAuMjI2MTQzCnZ0IDAuNDAwNDk0IDAuMzIxOTMyCnZ0IDAuNDU5NTA2IDAuMjIxMDI5CnZ0IDAuNDIzOTE0IDAuMzE2OTEwCnZ0IDAuNDc1MDg1IDAuMjE0NjU3CnZ0IDAuNDQ1MDg1IDAuMzEwNjY4CnZ0IDAuNTI0OTE1IDAuMjE0NjU3CnZ0IDAuNTU0OTE1IDAuMzEwNjY4CnZ0IDAuNTQwNDk0IDAuMjIxMDI5CnZ0IDAuNTc2MDg2IDAuMzE2OTEwCnZ0IDAuNTU2ODY3IDAuMjI2MTQzCnZ0IDAuNTk5NTA2IDAuMzIxOTMyCnZ0IDAuNTczNjY4IDAuMjI5ODkzCnZ0IDAuNjI0NDY0IDAuMzI1NjE5CnZ0IDAuNTkwMzE5IDAuMjMyMTg5CnZ0IDAuNjUwMTM1IDAuMzI3ODc3CnZ0IDAuMzI2MTc2IDAuMzI5NTk3CnZ0IDAuMzUwODQ0IDAuMzI5NTg4CnZ0IDAuMzc0ODczIDAuMzI5NTYyCnZ0IDAuMzk3Nzc0IDAuMzI5NTIwCnZ0IDAuNDE5MDgxIDAuMzI5NDYzCnZ0IDAuNDM4MzYwIDAuMzI5MzkxCnZ0IDAuNTYxNjQwIDAuMzI5MzkxCnZ0IDAuNTgwOTE5IDAuMzI5NDYzCnZ0IDAuNjAyMjI2IDAuMzI5NTIwCnZ0IDAuNjI1MTI3IDAuMzI5NTYyCnZ0IDAuNjQ5MTU2IDAuMzI5NTg4CnZ0IDAuMzI3OTU5IDAuMzMwNDk0CnZ0IDAuMzUyMjYxIDAuMzMwNDg5CnZ0IDAuMzc1NzAzIDAuMzMwNDc0CnZ0IDAuMzk3ODEwIDAuMzMwNDQ5CnZ0IDAuNDE4MTMyIDAuMzMwNDE1CnZ0IDAuNDM2MjU2IDAuMzMwMzczCnZ0IDAuNTYzNzQ0IDAuMzMwMzczCnZ0IDAuNTgxODY4IDAuMzMwNDE1CnZ0IDAuNjAyMTkwIDAuMzMwNDQ5CnZ0IDAuNjI0Mjk3IDAuMzMwNDc0CnZ0IDAuNjQ3NzQwIDAuMzMwNDg5CnZ0IDAuMzI5NDY2IDAuMzMxMzA1CnZ0IDAuMzUzNDk2IDAuMzMxMjk1CnZ0IDAuMzc2NTU5IDAuMzMxMjY4CnZ0IDAuMzk4MTg1IDAuMzMxMjIyCnZ0IDAuNDE3OTM2IDAuMzMxMTYwCnZ0IDAuNDM1NDA4IDAuMzMxMDgzCnZ0IDAuNTY0NTkyIDAuMzMxMDgzCnZ0IDAuNTgyMDY0IDAuMzMxMTYwCnZ0IDAuNjAxODE1IDAuMzMxMjIyCnZ0IDAuNjIzNDQyIDAuMzMxMjY3CnZ0IDAuNjQ2NTA0IDAuMzMxMjk1CnZ0IDAuMzMwNjA3IDAuMzQyOTgwCnZ0IDAuMzU0NDY2IDAuMzQyOTcxCnZ0IDAuMzc3MzQyIDAuMzQyOTQ2CnZ0IDAuMzk4NzcwIDAuMzQyOTA1CnZ0IDAuNDE4MzEzIDAuMzQyODQ5CnZ0IDAuNDM1NTczIDAuMzQyNzgwCnZ0IDAuNTY0NDI3IDAuMzQyNzgwCnZ0IDAuNTgxNjg3IDAuMzQyODQ5CnZ0IDAuNjAxMjMwIDAuMzQyOTA1CnZ0IDAuNjIyNjU4IDAuMzQyOTQ2CnZ0IDAuNjQ1NTM0IDAuMzQyOTcxCnZ0IDAuMzMxNDE5IDAuMzQ1NzM3CnZ0IDAuMzU1MTk2IDAuMzQ1NzQ1CnZ0IDAuMzc4MDU5IDAuMzQ1NzY4CnZ0IDAuMzk5NTQyIDAuMzQ1ODA3CnZ0IDAuNDE5MjA1IDAuMzQ1ODU5CnZ0IDAuNDM2NjQ4IDAuMzQ1OTIzCnZ0IDAuNTYzMzUyIDAuMzQ1OTIzCnZ0IDAuNTgwNzk1IDAuMzQ1ODU5CnZ0IDAuNjAwNDU4IDAuMzQ1ODA3CnZ0IDAuNjIxOTQxIDAuMzQ1NzY4CnZ0IDAuNjQ0ODA0IDAuMzQ1NzQ1CnZ0IDAuMzMyMDMzIDAuMzQ4OTk3CnZ0IDAuMzU1Nzk5IDAuMzQ5MDE2CnZ0IDAuMzc4ODAyIDAuMzQ5MDcyCnZ0IDAuNDAwNTcwIDAuMzQ5MTYyCnZ0IDAuNDIwNjU3IDAuMzQ5Mjg1CnZ0IDAuNDM4NjUwIDAuMzQ5NDM4CnZ0IDAuNTYxMzUwIDAuMzQ5NDM4CnZ0IDAuNTc5MzQzIDAuMzQ5Mjg1CnZ0IDAuNTk5NDMwIDAuMzQ5MTYyCnZ0IDAuNjIxMTk4IDAuMzQ5MDcyCnZ0IDAuNjQ0MjAxIDAuMzQ5MDE2CnZ0IDAuMzMyNjg2IDAuMzUyNjYxCnZ0IDAuMzU2NzAzIDAuMzUyMzIxCnZ0IDAuMzgwNDgyIDAuMzUxMzIwCnZ0IDAuNDAzMzE5IDAuMzQ5NjkzCnZ0IDAuNDI0NTcxIDAuMzQ3NDg3CnZ0IDAuNDQzNjgxIDAuMzQ0NzU2CnZ0IDAuNTU2MzE5IDAuMzQ0NzU2CnZ0IDAuNTc1NDI5IDAuMzQ3NDg3CnZ0IDAuNTk2NjgxIDAuMzQ5NjkzCnZ0IDAuNjE5NTE4IDAuMzUxMzIwCnZ0IDAuNjQzMjk3IDAuMzUyMzIxCnZ0IDAuNDA5NzA5IDAuMjg0NjMwCnZ0IDAuNDI1MjkxIDAuMjgzNzUzCnZ0IDAuNDQwNTcxIDAuMjgyMzMwCnZ0IDAuNDU1MTAyIDAuMjgwNDAwCnZ0IDAuNDY4NTUzIDAuMjc4MDAyCnZ0IDAuNTMxNDQ3IDAuMjc4MDAyCnZ0IDAuNTQ0ODk4IDAuMjgwNDAwCnZ0IDAuNTU5NDI5IDAuMjgyMzMwCnZ0IDAuNTc0NzA5IDAuMjgzNzUzCnZ0IDAuNTkwMjkxIDAuMjg0NjMwCnZ0IDAuNjA1NDYxIDAuMDE0MDc4CnZ0IDAuNjA2MTI2IDAuMDE3MDM2CnZ0IDAuNTkwODQ1IDAuMDE3MDg2CnZ0IDAuNTkwMzgyIDAuMDE0MTE3CnZ0IDAuNTc1NTIyIDAuMDE3MjM0CnZ0IDAuNTc1NDcyIDAuMDE0MjM0CnZ0IDAuNTYwNDY5IDAuMDE3NDc2CnZ0IDAuNTYxMDM1IDAuMDE0NDI0CnZ0IDAuNTQ1OTkyIDAuMDE3ODA3CnZ0IDAuNTQ3MzY2IDAuMDE0NjgzCnZ0IDAuNTMyMzg2IDAuMDE4MjIwCnZ0IDAuNTM0NzQzIDAuMDE1MDA2CnZ0IDAuNDY3NjE0IDAuMDE4MjIwCnZ0IDAuNDY1MjU3IDAuMDE1MDA2CnZ0IDAuNDU0MDA4IDAuMDE3ODA3CnZ0IDAuNDUyNjM0IDAuMDE0NjgzCnZ0IDAuNDM5NTMxIDAuMDE3NDc2CnZ0IDAuNDM4OTY1IDAuMDE0NDI0CnZ0IDAuNDI0NDc4IDAuMDE3MjM0CnZ0IDAuNDI0NTI4IDAuMDE0MjM0CnZ0IDAuNDA5MTU1IDAuMDE3MDg2CnZ0IDAuNDA5NjE4IDAuMDE0MTE3CnZ0IDAuNjA0NjQ3IDAuMDExMjEwCnZ0IDAuNTg5Nzk0IDAuMDExMjM2CnZ0IDAuNTc1MzIxIDAuMDExMzEzCnZ0IDAuNTYxNTI3IDAuMDExNDQwCnZ0IDAuNTQ4NjkzIDAuMDExNjEyCnZ0IDAuNTM3MDgxIDAuMDExODI3CnZ0IDAuNDYyOTIwIDAuMDExODI3CnZ0IDAuNDUxMzA3IDAuMDExNjEyCnZ0IDAuNDM4NDczIDAuMDExNDQwCnZ0IDAuNDI0Njc5IDAuMDExMzEzCnZ0IDAuNDEwMjA2IDAuMDExMjM2CnZ0IDAuNjA0MDAzIDAuMDA4NTE4CnZ0IDAuNTg5MzEwIDAuMDA4NTM0CnZ0IDAuNTc1MTMzIDAuMDA4NTc5CnZ0IDAuNTYxNzYyIDAuMDA4NjUzCnZ0IDAuNTQ5NDcxIDAuMDA4NzU1CnZ0IDAuNTM4NTA5IDAuMDA4ODgxCnZ0IDAuNDYxNDkxIDAuMDA4ODgxCnZ0IDAuNDUwNTI5IDAuMDA4NzU1CnZ0IDAuNDM4MjM4IDAuMDA4NjUzCnZ0IDAuNDI0ODY3IDAuMDA4NTc5CnZ0IDAuNDEwNjkwIDAuMDA4NTM0CnZ0IDAuNjAzNjc2IDAuMDA2MDg2CnZ0IDAuNTg5MDUzIDAuMDA2MDk3CnZ0IDAuNTc0OTkxIDAuMDA2MTMwCnZ0IDAuNTYxNzc4IDAuMDA2MTgzCnZ0IDAuNTQ5Njg1IDAuMDA2MjU3CnZ0IDAuNTM4OTU2IDAuMDA2MzQ3CnZ0IDAuNDYxMDQ0IDAuMDA2MzQ3CnZ0IDAuNDUwMzE1IDAuMDA2MjU3CnZ0IDAuNDM4MjIyIDAuMDA2MTgzCnZ0IDAuNDI1MDA5IDAuMDA2MTMwCnZ0IDAuNDEwOTQ3IDAuMDA2MDk3CnZ0IDAuNjAzNzA2IDAuOTg3NTIzCnZ0IDAuNjAzNjc2IDEuMDAwMDAwCnZ0IDAuNTg5MDc4IDEuMDAwMDE2CnZ0IDAuNTg5MDk5IDAuOTg3NTMxCnZ0IDAuNTc1MDkxIDEuMDAwMDY0CnZ0IDAuNTc1MDk0IDAuOTg3NTU0CnZ0IDAuNTYyMDAwIDEuMDAwMTQyCnZ0IDAuNTYxOTc1IDAuOTg3NTkwCnZ0IDAuNTUwMDcyIDEuMDAwMjQ4CnZ0IDAuNTUwMDEwIDAuOTg3NjQxCnZ0IDAuNTM5NTQ5IDEuMDAwMzgwCnZ0IDAuNTM5NDQzIDAuOTg3NzAzCnZ0IDAuNDYwNDUxIDEuMDAwMzgwCnZ0IDAuNDYwNTU3IDAuOTg3NzAzCnZ0IDAuNDQ5OTI4IDEuMDAwMjQ4CnZ0IDAuNDQ5OTkwIDAuOTg3NjQxCnZ0IDAuNDM4MDAwIDEuMDAwMTQyCnZ0IDAuNDM4MDI1IDAuOTg3NTkxCnZ0IDAuNDI0OTA5IDEuMDAwMDY0CnZ0IDAuNDI0OTA2IDAuOTg3NTU0CnZ0IDAuNDEwOTIyIDEuMDAwMDE2CnZ0IDAuNDEwOTAxIDAuOTg3NTMxCnZ0IDAuNjA0MDU2IDAuOTgyNTM2CnZ0IDAuNTg5MzgyIDAuOTgyNTIzCnZ0IDAuNTc1Mjc0IDAuOTgyNDgyCnZ0IDAuNTYyMDE5IDAuOTgyNDE3CnZ0IDAuNTQ5ODg3IDAuOTgyMzI3CnZ0IDAuNTM5MTI0IDAuOTgyMjE3CnZ0IDAuNDYwODc2IDAuOTgyMjE3CnZ0IDAuNDUwMTEzIDAuOTgyMzI3CnZ0IDAuNDM3OTgxIDAuOTgyNDE3CnZ0IDAuNDI0NzI2IDAuOTgyNDgyCnZ0IDAuNDEwNjE4IDAuOTgyNTIzCnZ0IDAuNjA0NjI3IDAuOTc3MDE4CnZ0IDAuNTg5ODI4IDAuOTc2OTg3CnZ0IDAuNTc1NTA5IDAuOTc2ODk2CnZ0IDAuNTYxOTYxIDAuOTc2NzQ5CnZ0IDAuNTQ5NDYwIDAuOTc2NTQ4CnZ0IDAuNTM4MjYxIDAuOTc2Mjk5CnZ0IDAuNDYxNzM5IDAuOTc2Mjk4CnZ0IDAuNDUwNTQwIDAuOTc2NTQ4CnZ0IDAuNDM4MDM5IDAuOTc2NzQ5CnZ0IDAuNDI0NDkxIDAuOTc2ODk3CnZ0IDAuNDEwMTcyIDAuOTc2OTg3CnZ0IDAuNjA1MjQ5IDAuOTcxMTM4CnZ0IDAuNTkwMjg4IDAuOTcxMDg3CnZ0IDAuNTc1NjY5IDAuOTcwOTM3CnZ0IDAuNTYxNjg3IDAuOTcwNjk0CnZ0IDAuNTQ4NjI3IDAuOTcwMzY0CnZ0IDAuNTM2NzUzIDAuOTY5OTU1CnZ0IDAuNDYzMjQ3IDAuOTY5OTU1CnZ0IDAuNDUxMzczIDAuOTcwMzY0CnZ0IDAuNDM4MzEzIDAuOTcwNjk0CnZ0IDAuNDI0MzMxIDAuOTcwOTM3CnZ0IDAuNDA5NzEyIDAuOTcxMDg3CnZ0IDAuNjA1NjYwIDAuOTY1MDczCnZ0IDAuNTkwNTcxIDAuOTY1MDA4CnZ0IDAuNTc1Njg1IDAuOTY0ODE1CnZ0IDAuNTYxMzA1IDAuOTY0NTAwCnZ0IDAuNTQ3NzIzIDAuOTY0MDcxCnZ0IDAuNTM1MjE1IDAuOTYzNTM4CnZ0IDAuNDY0Nzg1IDAuOTYzNTM4CnZ0IDAuNDUyMjc3IDAuOTY0MDcxCnZ0IDAuNDM4Njk1IDAuOTY0NTAwCnZ0IDAuNDI0MzE1IDAuOTY0ODE1CnZ0IDAuNDA5NDI5IDAuOTY1MDA4CnZ0IDAuNTU3NjQ0IDAuMTgxMTI4CnZ0IDAuNTU4MTExIDAuMTU0MDczCnZ0IDAuNTQyNDI2IDAuMTQ5NjIxCnZ0IDAuNTI3NTU5IDAuMTQ1MTM3CnZ0IDAuNDcyNDQxIDAuMTQ1MTMyCnZ0IDAuNDU3NTcwIDAuMTQ5NDY5CnZ0IDAuNDQxODgzIDAuMTUzNzM4CnZ0IDAuNDQyMzYyIDAuMTgxNDUxCnZ0IDAuNTYwNDYxIDAuNTk1NTk3CnZ0IDAuNTYwNDYxIDAuNTgwNTIyCnZ0IDAuNTQ5Mjc3IDAuNTc5NDUwCnZ0IDAuNTQ1OTgwIDAuNTc5MTMzCnZ0IDAuNTQ1OTgwIDAuNTc0NjE2CnZ0IDAuNTUxNTA3IDAuNTc0MTM0CnZ0IDAuNTU1NTMyIDAuNTczMDYyCnZ0IDAuNTU0NDc5IDAuNTU3NTYyCnZ0IDAuNTQ5OTQzIDAuNTU2NDU3CnZ0IDAuNTQ1OTgwIDAuNTU2MTkyCnZ0IDAuNTQ1OTgwIDAuNTQ3ODEwCnZ0IDAuNTU1MTMxIDAuNTQ2NjkwCnZ0IDAuNTU1MDE5IDAuNTM4ODI5CnZ0IDAuNTUyMjM1IDAuNTM4MzM5CnZ0IDAuNTQ1OTgwIDAuNTM4MTg4CnZ0IDAuNTQxNzY3IDAuNTM4MDg5CnZ0IDAuNTMyMzcwIDAuNTM4Mzc4CnZ0IDAuNDc1MjI0IDAuNTM4MzYyCnZ0IDAuNDY3NjMwIDAuNTM4MzY5CnZ0IDAuNDYxNDI4IDAuNTM4MjAxCnZ0IDAuNDU0MDIwIDAuNTM4MTc4CnZ0IDAuNDQ5NzEzIDAuNTM4MzAwCnZ0IDAuNDQ2MzU2IDAuNTM4OTYyCnZ0IDAuNDQ1MjE0IDAuNTQ0NjIyCnZ0IDAuNDQ1MTIwIDAuNTQ1ODQwCnZ0IDAuNDQ1ODE3IDAuNTQ2NzYwCnZ0IDAuNDQ3OTYwIDAuNTQ3NTA5CnZ0IDAuNDU0MDIwIDAuNTQ4MTMwCnZ0IDAuNDU0MDIwIDAuNTU2MjYxCnZ0IDAuNDQ2NjM3IDAuNTU2NzQyCnZ0IDAuNDQ1MTMyIDAuNTU3NTg1CnZ0IDAuNDQ0ODQyIDAuNTczNDE0CnZ0IDAuNDUwNTI2IDAuNTc0NDMwCnZ0IDAuNDU0MDIwIDAuNTc0NjkzCnZ0IDAuNDU0MDIwIDAuNTc4OTQyCnZ0IDAuNDQ5MzU2IDAuNTc5MTcwCnZ0IDAuNDQzMzU1IDAuNTgwMTYyCnZ0IDAuNDQzODAyIDAuNTk2NjcxCnZ0IDAuNDQ4MjcyIDAuNTk3NDUwCnZ0IDAuNDU0MDIwIDAuNTk3OTE0CnZ0IDAuNTc1NjI3IDAuODgzMTUzCnZ0IDAuNTc1NjE0IDAuODY0Njc0CnZ0IDAuNTYxMTY0IDAuODYxOTE1CnZ0IDAuNTQ3NTA3IDAuODYwMzMxCnZ0IDAuNTQ3NDU5IDAuODM3MTY2CnZ0IDAuNTQ3NDUyIDAuODMzOTE4CnZ0IDAuNTQ3NDQyIDAuODI5MTE1CnZ0IDAuNTQ3NDM3IDAuODI2NTA3CnZ0IDAuNTQ3NDI1IDAuODIwNzMyCnZ0IDAuNTQ3NDE5IDAuODE4MTgwCnZ0IDAuNTM0ODA4IDAuODE3ODQ4CnZ0IDAuNDY1MTg5IDAuODE4ODc1CnZ0IDAuNDUyNTc3IDAuODE5OTc1CnZ0IDAuNDUyNTYxIDAuODI3ODI1CnZ0IDAuNDUyNTQ0IDAuODM1ODM0CnZ0IDAuNDUyNDg5IDAuODYyMzIyCnZ0IDAuNDM4ODMxIDAuODY1Nzc3CnZ0IDAuNDM4ODA0IDAuODg1MjE4CnZ0IDAuMzgyMjYwIDAuNTE0MDc4CnZ0IDAuMzEzMjIyIDAuMzUyNjYxCnZ0IDAuMzExNzU4IDAuMzQ4OTk3CnZ0IDAuMzEwMzg1IDAuMzQ1NzM3CnZ0IDAuMzA5MDQ2IDAuMzQyOTgwCnZ0IDAuMzA3NzIyIDAuMzMxMzA1CnZ0IDAuMzA2NDI4IDAuMzMwNDk0CnZ0IDAuMzA1MjE5IDAuMzI5NTk3CnZ0IDAuMzA0MjExIDAuMzI4NjQxCnZ0IDAuMzgyMDc3IDAuNTExMjEwCnZ0IDAuMzgxNTIxIDAuNTA4NTE4CnZ0IDAuMzgwNTU4IDAuNTA2MDg2CnZ0IDAuMzc5MjA0IDAuNDkzMDExCnZ0IDAuMzc3NTEwIDAuNDg5MTE4CnZ0IDAuMzc1NTU3IDAuNDg1MDIxCnZ0IDAuMzczNDY0IDAuNDgwODQ1CnZ0IDAuMzczNDY0IDAuNzY5MTU1CnZ0IDAuMzc1NTU4IDAuNzY0OTc5CnZ0IDAuMzc3NTEwIDAuNzYwODgyCnZ0IDAuMzc5MjA0IDAuNzU2OTg5CnZ0IDAuMzgwNTU4IDAuNzQzOTE0CnZ0IDAuMzgxNTIwIDAuNzQxNDgyCnZ0IDAuMzgyMDc3IDAuNzM4NzkxCnZ0IDAuMzgyMjYwIDAuNzM1OTIyCnZ0IDAuNTI2NTAxIDAuMTcyOTQ3CnZ0IDAuNTI5MTczIDAuMTczNzc1CnZ0IDAuNTM0MTQ5IDAuMTc1MjM4CnZ0IDAuNTM4NTE4IDAuMTc2NDM0CnZ0IDAuNTQxNjc5IDAuMTc3MjEyCnZ0IDAuNTQxNjQ4IDAuMTc4Mzg2CnZ0IDAuNTI2NDc1IDAuMTczNjM1CnZ0IDAuNDczNTAwIDAuMTcyOTY5CnZ0IDAuNDc4MzQ4IDAuMTcyOTk3CnZ0IDAuNDk3NzExIDAuMTczMDM1CnZ0IDAuNTE3MDg5IDAuMTczMDAwCnZ0IDAuNDczNTIzIDAuMTczNTc5CnZ0IDAuNDU4MzIzIDAuMTc3MzAyCnZ0IDAuNDYwMjI3IDAuMTc2ODM2CnZ0IDAuNDY0NTY3IDAuMTc1NjUyCnZ0IDAuNDY5NTIyIDAuMTc0MTk5CnZ0IDAuNDU4MzU0IDAuMTc4NDU4CnZ0IDAuNDY0OTk0IDAuODg4NjA0CnZ0IDAuNDczNTg2IDAuODg4NzQ4CnZ0IDAuNTAwMzUwIDAuODg5MDAyCnZ0IDAuNTI4MTg1IDAuODg5MDg4CnZ0IDAuNTM1MDA3IDAuODg5MDY3CnZ0IDAuNTM1MDA4IDAuODg5NTczCnZ0IDAuNDY0OTkyIDAuODg5MjQwCnZ0IDAuNTM4ODEzIDAuODg4OTg2CnZ0IDAuNTQzNjYwIDAuODg4NzEwCnZ0IDAuNTQ3NTY1IDAuODg4MzI4CnZ0IDAuNTQ3NTY2IDAuODg4OTA5CnZ0IDAuNDUyNDM5IDAuODg2MTg1CnZ0IDAuNDUyNTU2IDAuODg2MjUyCnZ0IDAuNDU0OTQ1IDAuODg3MDQ2CnZ0IDAuNDU4MTYxIDAuODg3NzQ1CnZ0IDAuNDYyMDgwIDAuODg4MzIyCnZ0IDAuNDUyNDM3IDAuODg3MjI3CnZ0IDAuNDY1MDczIDAuODYwNDgzCnZ0IDAuNTM0OTI2IDAuODYwMTUwCnZ0IDAuNTM0OTI3IDAuODYwNTU3CnZ0IDAuNTI4MTIxIDAuODYwNTM2CnZ0IDAuNTAwMzUwIDAuODYwNjIyCnZ0IDAuNDczNjQ2IDAuODYwODc2CnZ0IDAuNDY1MDcxIDAuODYxMDIwCnZ0IDAuNDYyMTUxIDAuODYxMjEwCnZ0IDAuNDU4MjI0IDAuODYxNjYyCnZ0IDAuNDU1MDAwIDAuODYyMjU5CnZ0IDAuNDUyNjA0IDAuODYyOTc2CnZ0IDAuNDUyNDg3IDAuODYzMDQwCnZ0IDAuNTYxMTk4IDAuODg2NjkxCnZ0IDAuNTQ4MTk1IDAuODg4Mjc1CnZ0IDAuNTUyNTc3IDAuODg3NzA3CnZ0IDAuNTU2MTczIDAuODg3MDE0CnZ0IDAuNTU4ODQ1IDAuODg2MjIxCnZ0IDAuNTYwNDkwIDAuODg1MzYyCnZ0IDAuNTYxMDQ1IDAuODg0NDcxCnZ0IDAuNTYwNDYwIDAuODYzNTU2CnZ0IDAuNTU4ODExIDAuODYyNzM2CnZ0IDAuNTU2MTMzIDAuODYyMDA3CnZ0IDAuNTUyNTI5IDAuODYxMzk5CnZ0IDAuNTQ4MTM5IDAuODYwOTM1CnZ0IDAuNTQ3NTA4IDAuODYwODk2CnZ0IDAuNTQzNTk2IDAuODYwNjM5CnZ0IDAuNTM4NzQwIDAuODYwNTE3CnZ0IDAuNTM1MDcwIDAuOTExNjYzCnZ0IDAuNDY0OTI3IDAuOTEyODE5CnZ0IDAuNTQ3NjE2IDAuOTEyODAzCnZ0IDAuNTQ3NzA1IDAuOTU1NDkwCnZ0IDAuNTQ3Njk4IDAuOTUyNDUyCnZ0IDAuNTQ3Njg4IDAuOTQ3NTkyCnZ0IDAuNTQ3NjgyIDAuOTQ0NTU1CnZ0IDAuNTQ3NjcyIDAuOTM5Njk1CnZ0IDAuNTQ3NjY1IDAuOTM2Mjg0CnZ0IDAuNTQ3NjU1IDAuOTMxNjgxCnZ0IDAuNTQ3NjQ5IDAuOTI4NTc0CnZ0IDAuNTQ3NjQxIDAuOTI0ODEyCnZ0IDAuNTQ3NjMyIDAuOTIwMzI2CnZ0IDAuNTQ3NjIzIDAuOTE1OTM0CnZ0IDAuNDUyMzgwIDAuOTE0Njk1CnZ0IDAuNDUwOTY1IDAuODYzNzg5CnZ0IDAuNDUwMzY2IDAuODg0NTE3CnZ0IDAuNDUwOTIxIDAuODg1NDAwCnZ0IDAuNDUyMzY0IDAuOTIyMjg5CnZ0IDAuNDUyMzQ3IDAuOTMwNjA2CnZ0IDAuNDUyMzMyIDAuOTM3ODczCnZ0IDAuNDUyMzE1IDAuOTQ2MDA0CnZ0IDAuNDUyMjk4IDAuOTU0MzQ1CnZ0IDAuNDY0OTIxIDAuOTE0ODY5CnZ0IDAuNDY2MDQyIDAuOTE0OTg1CnZ0IDAuNDcyMTg0IDAuOTE1MzQ0CnZ0IDAuNDgwNDUxIDAuOTE1NjU4CnZ0IDAuNDkwNTI2IDAuOTE1OTE2CnZ0IDAuNTAyMDE5IDAuOTE2MTA4CnZ0IDAuNTE0NDkxIDAuOTE2MjI2CnZ0IDAuNTI3NDYyIDAuOTE2MjY2CnZ0IDAuNTM1MDgzIDAuOTE2MjQzCnZ0IDAuNTM1MDg0IDAuOTE2NzUwCnZ0IDAuNDY0OTE4IDAuOTE1ODcyCnZ0IDAuNDY0ODk5IDAuOTIyNzU4CnZ0IDAuNDY2MDIwIDAuOTIyODczCnZ0IDAuNDcyMTY3IDAuOTIzMjMyCnZ0IDAuNDgwNDM5IDAuOTIzNTQ3CnZ0IDAuNDkwNTE5IDAuOTIzODA1CnZ0IDAuNTAyMDIxIDAuOTIzOTk2CnZ0IDAuNTE0NTAwIDAuOTI0MTE1CnZ0IDAuNTI3NDc5IDAuOTI0MTU1CnZ0IDAuNTM1MTA1IDAuOTI0MTMxCnZ0IDAuNTM1MTA3IDAuOTI0ODIxCnZ0IDAuNDY0ODk1IDAuOTI0MDEyCnZ0IDAuNDY0ODc3IDAuOTMwNjQ2CnZ0IDAuNDY1OTk5IDAuOTMwNzYyCnZ0IDAuNDcyMTQ5IDAuOTMxMTIxCnZ0IDAuNDgwNDI2IDAuOTMxNDM1CnZ0IDAuNDkwNTEzIDAuOTMxNjkzCnZ0IDAuNTAyMDIyIDAuOTMxODg1CnZ0IDAuNTE0NTA5IDAuOTMyMDAzCnZ0IDAuNTI3NDk2IDAuOTMyMDQzCnZ0IDAuNTM1MTI3IDAuOTMyMDIwCnZ0IDAuNTM1MTI5IDAuOTMyNTQ1CnZ0IDAuNDY0ODczIDAuOTMxOTkwCnZ0IDAuNDY0ODU2IDAuOTM4MTg2CnZ0IDAuNDY1OTc4IDAuOTM4MzAxCnZ0IDAuNDcyMTMyIDAuOTM4NjYwCnZ0IDAuNDgwNDE1IDAuOTM4OTc1CnZ0IDAuNDkwNTA3IDAuOTM5MjMzCnZ0IDAuNTAyMDIzIDAuOTM5NDI1CnZ0IDAuNTE0NTE4IDAuOTM5NTQzCnZ0IDAuNTI3NTEyIDAuOTM5NTgzCnZ0IDAuNTM1MTQ4IDAuOTM5NTU5CnZ0IDAuNTM1MTUwIDAuOTQwMjY4CnZ0IDAuNDY0ODUyIDAuOTM5NDEzCnZ0IDAuNDY0ODM0IDAuOTQ2MDc1CnZ0IDAuNDY1OTU3IDAuOTQ2MTkwCnZ0IDAuNDcyMTE0IDAuOTQ2NTQ5CnZ0IDAuNDgwNDAyIDAuOTQ2ODY0CnZ0IDAuNDkwNTAxIDAuOTQ3MTIyCnZ0IDAuNTAyMDI0IDAuOTQ3MzEzCnZ0IDAuNTE0NTI3IDAuOTQ3NDMyCnZ0IDAuNTI3NTMwIDAuOTQ3NDcxCnZ0IDAuNTM1MTcwIDAuOTQ3NDQ4CnZ0IDAuNTM1MTcyIDAuOTQ3OTIzCnZ0IDAuNDY0ODMwIDAuOTQ3MzY4CnZ0IDAuNDY0ODEyIDAuOTUzOTYzCnZ0IDAuNDY1OTM1IDAuOTU0MDc4CnZ0IDAuNDcyMDk3IDAuOTU0NDM3CnZ0IDAuNDgwMzkwIDAuOTU0NzUyCnZ0IDAuNDkwNDk1IDAuOTU1MDEwCnZ0IDAuNTAyMDI1IDAuOTU1MjAyCnZ0IDAuNTE0NTM2IDAuOTU1MzIwCnZ0IDAuNTI3NTQ3IDAuOTU1MzYwCnZ0IDAuNTM1MTkyIDAuOTU1MzM2CnZ0IDAuNTM1MTk1IDAuOTU2MzQwCnZ0IDAuNDY0ODA3IDAuOTU1NDM4CnZ0IDAuNDY1MTgzIDAuODIxMDkxCnZ0IDAuNDY2Mjk3IDAuODIxMjA3CnZ0IDAuNDcyMzk0IDAuODIxNTY2CnZ0IDAuNDgwNTk5IDAuODIxODgwCnZ0IDAuNDkwNTk4IDAuODIyMTM4CnZ0IDAuNTAyMDA2IDAuODIyMzMwCnZ0IDAuNTE0Mzg1IDAuODIyNDQ4CnZ0IDAuNTI3MjU4IDAuODIyNDg4CnZ0IDAuNTM0ODIxIDAuODIyNDY1CnZ0IDAuNTM0ODIyIDAuODIyODcxCnZ0IDAuNDY1MTgwIDAuODIyMjMzCnZ0IDAuNDY1MTYxIDAuODI4OTgwCnZ0IDAuNDY2Mjc2IDAuODI5MDk1CnZ0IDAuNDcyMzc2IDAuODI5NDU0CnZ0IDAuNDgwNTg3IDAuODI5NzY5CnZ0IDAuNDkwNTkyIDAuODMwMDI3CnZ0IDAuNTAyMDA3IDAuODMwMjE5CnZ0IDAuNTE0Mzk0IDAuODMwMzM3CnZ0IDAuNTI3Mjc1IDAuODMwMzc3CnZ0IDAuNTM0ODQzIDAuODMwMzUzCnZ0IDAuNTM0ODQ0IDAuODMwNzgwCnZ0IDAuNDY1MTU4IDAuODMwMDMxCnZ0IDAuNDY1MTM5IDAuODM2ODY4CnZ0IDAuNDY2MjU0IDAuODM2OTg0CnZ0IDAuNDcyMzU4IDAuODM3MzQzCnZ0IDAuNDgwNTc0IDAuODM3NjU3CnZ0IDAuNDkwNTg2IDAuODM3OTE1CnZ0IDAuNTAyMDA4IDAuODM4MTA3CnZ0IDAuNTE0NDAzIDAuODM4MjI1CnZ0IDAuNTI3MjkzIDAuODM4MjY1CnZ0IDAuNTM0ODY1IDAuODM4MjQyCnZ0IDAuNTM0ODY3IDAuODM4NzkwCnZ0IDAuNDY1MTM1IDAuODM4MTY2CnZ0IDAuNTM0ODMwIDAuODI1NTkxCnZ0IDAuNDY1MTY3IDAuODI2ODY3CnZ0IDAuNTM1NzkyIDAuODIyMzkxCnZ0IDAuNTM4MDU0IDAuODIyMTQwCnZ0IDAuNTQwMTM4IDAuODIxODI0CnZ0IDAuNTQxOTY1IDAuODIxNDU2CnZ0IDAuNTQzNDY1IDAuODIxMDUwCnZ0IDAuNTQ0NTc4IDAuODIwNjIyCnZ0IDAuNTQ1MjY0IDAuODIwMTg4CnZ0IDAuNTQ1NDk1IDAuODE5NzY2CnZ0IDAuNTQ1MjYyIDAuODE5MzcxCnZ0IDAuNTQ0NTc1IDAuODE5MDIxCnZ0IDAuNTQzNDU5IDAuODE4NzI3CnZ0IDAuNTQxOTU5IDAuODE4NTAzCnZ0IDAuNTQwMTMwIDAuODE4MzU3CnZ0IDAuNTM4MDQ0IDAuODE4Mjk0CnZ0IDAuNTM1NzgwIDAuODE4MzE2CnZ0IDAuNTM0ODA5IDAuODE4MzYwCnZ0IDAuNTI3MjQ5IDAuODE4MzM2CnZ0IDAuNTE0MzgwIDAuODE4Mzc2CnZ0IDAuNTAyMDA1IDAuODE4NDk0CnZ0IDAuNDkwNjAwIDAuODE4Njg2CnZ0IDAuNDgwNjA0IDAuODE4OTQ1CnZ0IDAuNDcyMzk5IDAuODE5MjU5CnZ0IDAuNDY2MzAyIDAuODE5NjE4CnZ0IDAuNDY1MTg3IDAuODE5NzM0CnZ0IDAuNDY0NzAzIDAuODE5OTc4CnZ0IDAuNDY0NDcwIDAuODIwMzY5CnZ0IDAuNDY0NzAxIDAuODIwNzg4CnZ0IDAuNTM0ODMyIDAuODI2MjQ4CnZ0IDAuNTI3MjY2IDAuODI2MjI1CnZ0IDAuNTE0Mzg5IDAuODI2MjY1CnZ0IDAuNTAyMDA2IDAuODI2MzgzCnZ0IDAuNDkwNTk0IDAuODI2NTc1CnZ0IDAuNDgwNTkxIDAuODI2ODMzCnZ0IDAuNDcyMzgxIDAuODI3MTQ4CnZ0IDAuNDY2MjgwIDAuODI3NTA3CnZ0IDAuNDY1MTY1IDAuODI3NjIyCnZ0IDAuNTM0ODUyIDAuODMzNjMzCnZ0IDAuNDY1MTQ1IDAuODM0NTU4CnZ0IDAuNDY0NjgxIDAuODI3ODcwCnZ0IDAuNDY0NDQ4IDAuODI4MjYyCnZ0IDAuNDY0Njc5IDAuODI4NjgwCnZ0IDAuNTM1ODEzIDAuODMwMjg2CnZ0IDAuNTM4MDc0IDAuODMwMDQ5CnZ0IDAuNTQwMTU4IDAuODI5NzQ3CnZ0IDAuNTQxOTg0IDAuODI5MzkxCnZ0IDAuNTQzNDgzIDAuODI4OTk1CnZ0IDAuNTQ0NTk2IDAuODI4NTc0CnZ0IDAuNTQ1MjgyIDAuODI4MTQ1CnZ0IDAuNTQ1NTEyIDAuODI3NzI0CnZ0IDAuNTQ1MjgwIDAuODI3MzI4CnZ0IDAuNTQ0NTkzIDAuODI2OTcyCnZ0IDAuNTQzNDc4IDAuODI2NjcyCnZ0IDAuNTQxOTc3IDAuODI2NDM4CnZ0IDAuNTQwMTUwIDAuODI2MjgwCnZ0IDAuNTM4MDY0IDAuODI2MjAzCnZ0IDAuNTM1ODAyIDAuODI2MjExCnZ0IDAuNTM0ODU0IDAuODM0MTM3CnZ0IDAuNTI3MjgzIDAuODM0MTEzCnZ0IDAuNTE0Mzk4IDAuODM0MTUzCnZ0IDAuNTAyMDA4IDAuODM0MjcxCnZ0IDAuNDkwNTg4IDAuODM0NDYzCnZ0IDAuNDgwNTc5IDAuODM0NzIyCnZ0IDAuNDcyMzY0IDAuODM1MDM2CnZ0IDAuNDY2MjU5IDAuODM1Mzk1CnZ0IDAuNDY1MTQzIDAuODM1NTExCnZ0IDAuNTM1ODM1IDAuODM4MTgxCnZ0IDAuNTM4MDk1IDAuODM3OTU5CnZ0IDAuNTQwMTc4IDAuODM3NjcwCnZ0IDAuNTQyMDAzIDAuODM3MzI2CnZ0IDAuNTQzNTAxIDAuODM2OTQwCnZ0IDAuNTQ0NjE0IDAuODM2NTI2CnZ0IDAuNTQ1Mjk5IDAuODM2MTAxCnZ0IDAuNTQ1NTMwIDAuODM1NjgxCnZ0IDAuNTQ1Mjk3IDAuODM1Mjg0CnZ0IDAuNTQ0NjEwIDAuODM0OTI0CnZ0IDAuNTQzNDk2IDAuODM0NjE2CnZ0IDAuNTQxOTk2IDAuODM0MzczCnZ0IDAuNTQwMTY5IDAuODM0MjAzCnZ0IDAuNTM4MDg1IDAuODM0MTEzCnZ0IDAuNTM1ODI0IDAuODM0MTA1CnZ0IDAuNDY0NjU5IDAuODM1NzYxCnZ0IDAuNDY0NDI2IDAuODM2MTU1CnZ0IDAuNDY0NjU3IDAuODM2NTcyCnZ0IDAuNTM1MDkyIDAuOTE5NTcxCnZ0IDAuNDY0OTA2IDAuOTIwMzM1CnZ0IDAuNDY0OTI1IDAuOTEzNTExCnZ0IDAuNDY0NDQzIDAuOTEzNzkzCnZ0IDAuNDY0MjExIDAuOTE0MjAyCnZ0IDAuNDY0NDQxIDAuOTE0NjAzCnZ0IDAuNTM2MDQ4IDAuOTE2MjQ0CnZ0IDAuNTM4Mjk5IDAuOTE2MTY3CnZ0IDAuNTQwMzczIDAuOTE2MDEyCnZ0IDAuNTQyMTkwIDAuOTE1Nzg1CnZ0IDAuNTQzNjgyIDAuOTE1NDk0CnZ0IDAuNTQ0NzkwIDAuOTE1MTUyCnZ0IDAuNTQ1NDcyIDAuOTE0NzcxCnZ0IDAuNTQ1NzAyIDAuOTE0MzY3CnZ0IDAuNTQ1NDcwIDAuOTEzOTU0CnZ0IDAuNTQ0Nzg2IDAuOTEzNTUwCnZ0IDAuNTQzNjc3IDAuOTEzMTcyCnZ0IDAuNTQyMTgzIDAuOTEyODMyCnZ0IDAuNTQwMzY0IDAuOTEyNTQ0CnZ0IDAuNTM4Mjg5IDAuOTEyMzIwCnZ0IDAuNTM2MDM3IDAuOTEyMTY5CnZ0IDAuNTM1MDcyIDAuOTEyMTM4CnZ0IDAuNTI3NDUzIDAuOTEyMTE0CnZ0IDAuNTE0NDg3IDAuOTEyMTU0CnZ0IDAuNTAyMDE5IDAuOTEyMjcyCnZ0IDAuNDkwNTI4IDAuOTEyNDY0CnZ0IDAuNDgwNDU2IDAuOTEyNzIyCnZ0IDAuNDcyMTg5IDAuOTEzMDM3CnZ0IDAuNDY2MDQ2IDAuOTEzMzk2CnZ0IDAuNTM2MDcwIDAuOTI0MTM4CnZ0IDAuNTM4MzE5IDAuOTI0MDc2CnZ0IDAuNTQwMzkyIDAuOTIzOTM0CnZ0IDAuNTQyMjA5IDAuOTIzNzE5CnZ0IDAuNTQzNzAwIDAuOTIzNDM5CnZ0IDAuNTQ0ODA4IDAuOTIzMTA0CnZ0IDAuNTQ1NDg5IDAuOTIyNzI3CnZ0IDAuNTQ1NzE5IDAuOTIyMzI0CnZ0IDAuNTQ1NDg3IDAuOTIxOTEwCnZ0IDAuNTQ0ODA0IDAuOTIxNTAyCnZ0IDAuNTQzNjk1IDAuOTIxMTE2CnZ0IDAuNTQyMjAyIDAuOTIwNzY2CnZ0IDAuNTQwMzg0IDAuOTIwNDY3CnZ0IDAuNTM4MzEwIDAuOTIwMjMwCnZ0IDAuNTM2MDU5IDAuOTIwMDYzCnZ0IDAuNTM1MDk0IDAuOTIwMDI2CnZ0IDAuNTM1MTE1IDAuOTI3NTI2CnZ0IDAuNDY0ODgzIDAuOTI4NDI5CnZ0IDAuNDY0OTAzIDAuOTIxNDAwCnZ0IDAuNDY0NDIxIDAuOTIxNjg1CnZ0IDAuNDY0MTg5IDAuOTIyMDk1CnZ0IDAuNDY0NDE5IDAuOTIyNDk1CnZ0IDAuNTI3NDcwIDAuOTIwMDAzCnZ0IDAuNTE0NDk2IDAuOTIwMDQzCnZ0IDAuNTAyMDIwIDAuOTIwMTYxCnZ0IDAuNDkwNTIyIDAuOTIwMzUzCnZ0IDAuNDgwNDQ0IDAuOTIwNjExCnZ0IDAuNDcyMTcyIDAuOTIwOTI1CnZ0IDAuNDY2MDI1IDAuOTIxMjg0CnZ0IDAuNTM2MDkyIDAuOTMyMDMzCnZ0IDAuNTM4MzQwIDAuOTMxOTg1CnZ0IDAuNTQwNDEyIDAuOTMxODU4CnZ0IDAuNTQyMjI4IDAuOTMxNjU0CnZ0IDAuNTQzNzE4IDAuOTMxMzg0CnZ0IDAuNTQ0ODI1IDAuOTMxMDU2CnZ0IDAuNTQ1NTA3IDAuOTMwNjg0CnZ0IDAuNTQ1NzM2IDAuOTMwMjgyCnZ0IDAuNTQ1NTA1IDAuOTI5ODY3CnZ0IDAuNTQ0ODIyIDAuOTI5NDU0CnZ0IDAuNTQzNzEzIDAuOTI5MDYxCnZ0IDAuNTQyMjIxIDAuOTI4NzAxCnZ0IDAuNTQwNDA0IDAuOTI4MzkwCnZ0IDAuNTM4MzMwIDAuOTI4MTM5CnZ0IDAuNTM2MDgwIDAuOTI3OTU4CnZ0IDAuNTM1MTE2IDAuOTI3OTE1CnZ0IDAuNDY0ODgxIDAuOTI5Mjg4CnZ0IDAuNDY0Mzk5IDAuOTI5NTc2CnZ0IDAuNDY0MTY4IDAuOTI5OTg4CnZ0IDAuNDY0Mzk3IDAuOTMwMzg3CnZ0IDAuNDY0ODYyIDAuOTM1NzU5CnZ0IDAuNTI3NDg3IDAuOTI3ODkxCnZ0IDAuNTE0NTA1IDAuOTI3OTMxCnZ0IDAuNTAyMDIxIDAuOTI4MDQ5CnZ0IDAuNDkwNTE2IDAuOTI4MjQxCnZ0IDAuNDgwNDMxIDAuOTI4NDk5CnZ0IDAuNDcyMTU0IDAuOTI4ODE0CnZ0IDAuNDY2MDAzIDAuOTI5MTczCnZ0IDAuNTM1MTM2IDAuOTM1MjYxCnZ0IDAuNTMxMTIwIDAuOTM1MjI3CnZ0IDAuNTM1MTU3IDAuOTQyODM1CnZ0IDAuNDY0ODQwIDAuOTQzNzE0CnZ0IDAuNTM2MTEyIDAuOTM5NTc5CnZ0IDAuNTM4MzYwIDAuOTM5NTQ1CnZ0IDAuNTQwNDMxIDAuOTM5NDMwCnZ0IDAuNTQyMjQ2IDAuOTM5MjM4CnZ0IDAuNTQzNzM1IDAuOTM4OTc3CnZ0IDAuNTQ0ODQyIDAuOTM4NjU2CnZ0IDAuNTQ1NTI0IDAuOTM4Mjg4CnZ0IDAuNTQ1NzUzIDAuOTM3ODg4CnZ0IDAuNTQ1NTIyIDAuOTM3NDcxCnZ0IDAuNTQ0ODM5IDAuOTM3MDU0CnZ0IDAuNTQzNzMwIDAuOTM2NjU0CnZ0IDAuNTQyMjM5IDAuOTM2Mjg1CnZ0IDAuNTQwNDIyIDAuOTM1OTYzCnZ0IDAuNTM4MzUwIDAuOTM1Njk5CnZ0IDAuNTM2MTAxIDAuOTM1NTA0CnZ0IDAuNTM1MTM3IDAuOTM1NDU0CnZ0IDAuNTI3NTAzIDAuOTM1NDMxCnZ0IDAuNTE0NTEzIDAuOTM1NDcxCnZ0IDAuNTAyMDIyIDAuOTM1NTg5CnZ0IDAuNDkwNTEwIDAuOTM1NzgxCnZ0IDAuNDgwNDE5IDAuOTM2MDM5CnZ0IDAuNDcyMTM3IDAuOTM2MzU0CnZ0IDAuNDY1OTgzIDAuOTM2NzEzCnZ0IDAuNDY0ODU5IDAuOTM2ODI4CnZ0IDAuNDY0Mzc4IDAuOTM3MTE5CnZ0IDAuNDY0MTQ3IDAuOTM3NTMzCnZ0IDAuNDY0Mzc2IDAuOTM3OTI5CnZ0IDAuNTM1MTc5IDAuOTUwNTgyCnZ0IDAuNDY0ODE5IDAuOTUxMzIyCnZ0IDAuNDY0ODM3IDAuOTQ0NzE2CnZ0IDAuNDY0MzU2IDAuOTQ1MDExCnZ0IDAuNDY0MTI1IDAuOTQ1NDI2CnZ0IDAuNDY0MzU0IDAuOTQ1ODIxCnZ0IDAuNTM2MTM0IDAuOTQ3NDc0CnZ0IDAuNTM4MzgwIDAuOTQ3NDU1CnZ0IDAuNTQwNDUxIDAuOTQ3MzUzCnZ0IDAuNTQyMjY1IDAuOTQ3MTczCnZ0IDAuNTQzNzU0IDAuOTQ2OTIxCnZ0IDAuNTQ0ODYwIDAuOTQ2NjA4CnZ0IDAuNTQ1NTQxIDAuOTQ2MjQ0CnZ0IDAuNTQ1NzcwIDAuOTQ1ODQ2CnZ0IDAuNTQ1NTM5IDAuOTQ1NDI3CnZ0IDAuNTQ0ODU3IDAuOTQ1MDA2CnZ0IDAuNTQzNzQ5IDAuOTQ0NTk4CnZ0IDAuNTQyMjU4IDAuOTQ0MjIwCnZ0IDAuNTQwNDQyIDAuOTQzODg2CnZ0IDAuNTM4MzcwIDAuOTQzNjA5CnZ0IDAuNTM2MTIzIDAuOTQzMzk5CnZ0IDAuNTM1MTU5IDAuOTQzMzQzCnZ0IDAuNTI3NTIwIDAuOTQzMzIwCnZ0IDAuNTE0NTIyIDAuOTQzMzU5CnZ0IDAuNTAyMDIzIDAuOTQzNDc4CnZ0IDAuNDkwNTA0IDAuOTQzNjY5CnZ0IDAuNDgwNDA3IDAuOTQzOTI4CnZ0IDAuNDcyMTIwIDAuOTQ0MjQyCnZ0IDAuNDY1OTYxIDAuOTQ0NjAxCnZ0IDAuNTM2MTU1IDAuOTU1MzY5CnZ0IDAuNTM4NDAxIDAuOTU1MzY0CnZ0IDAuNTQwNDcwIDAuOTU1Mjc2CnZ0IDAuNTQyMjg0IDAuOTU1MTA4CnZ0IDAuNTQzNzcyIDAuOTU0ODY2CnZ0IDAuNTQ0ODc4IDAuOTU0NTU5CnZ0IDAuNTQ1NTU4IDAuOTU0MjAwCnZ0IDAuNTQ1Nzg3IDAuOTUzODAzCnZ0IDAuNTQ1NTU3IDAuOTUzMzg0CnZ0IDAuNTQ0ODc0IDAuOTUyOTU4CnZ0IDAuNTQzNzY3IDAuOTUyNTQzCnZ0IDAuNTQyMjc3IDAuOTUyMTU1CnZ0IDAuNTQwNDYyIDAuOTUxODA5CnZ0IDAuNTM4MzkxIDAuOTUxNTE4CnZ0IDAuNTM2MTQ0IDAuOTUxMjkzCnZ0IDAuNTM1MTgxIDAuOTUxMjMxCnZ0IDAuNTI3NTM4IDAuOTUxMjA4CnZ0IDAuNTE0NTMxIDAuOTUxMjQ4CnZ0IDAuNTAyMDI0IDAuOTUxMzY2CnZ0IDAuNDkwNDk4IDAuOTUxNTU4CnZ0IDAuNDgwMzk0IDAuOTUxODE2CnZ0IDAuNDcyMTAyIDAuOTUyMTMxCnZ0IDAuNDY1OTQwIDAuOTUyNDg5CnZ0IDAuNDY0ODE1IDAuOTUyNjA1CnZ0IDAuNDY0MzM1IDAuOTUyOTAyCnZ0IDAuNDY0MTAzIDAuOTUzMzE5CnZ0IDAuNDY0MzMyIDAuOTUzNzEzCnZ0IDAuNDY3NjMwIDAuNTk4MjI5CnZ0IDAuNDgyMDMxIDAuNTk4MzAxCnZ0IDAuNTA1NTc4IDAuNTk4MzM3CnZ0IDAuNTI5MTA2IDAuNTk4Mjk3CnZ0IDAuNTMyMzcwIDAuNTk4MjgxCnZ0IDAuNTMyMzcwIDAuNTk4NzUyCnZ0IDAuNDk2MTQ4IDAuNTk4NzM3CnZ0IDAuNDY3NjMwIDAuNTk4Njg4CnZ0IDAuNTM2NDc4IDAuNTk4MTQxCnZ0IDAuNTQwODk5IDAuNTk3OTExCnZ0IDAuNTQ0NzY5IDAuNTk3NjIxCnZ0IDAuNTQ1OTgwIDAuNTk3NDkyCnZ0IDAuNTQ1OTgwIDAuNTk4MDU0CnZ0IDAuNTM3NjIzIDAuNTk4NTEzCnZ0IDAuNDU0MDIwIDAuNTk3MjcxCnZ0IDAuNDU0MzM5IDAuNTk3MzIxCnZ0IDAuNDU3NTQxIDAuNTk3NjU2CnZ0IDAuNDYxNDM2IDAuNTk3OTQzCnZ0IDAuNDY1ODc2IDAuNTk4MTcxCnZ0IDAuNDYxMzUyIDAuNTk4MzQxCnZ0IDAuNTMyMzcwIDAuNTc1MzE1CnZ0IDAuNTM1MzEyIDAuNTc1MTkwCnZ0IDAuNTM5NzMyIDAuNTc0OTIyCnZ0IDAuNTQzNjAzIDAuNTc0NjAwCnZ0IDAuNTQ1OTgwIDAuNTc0MzI3CnZ0IDAuNTQwOTY2IDAuNTc1MDg1CnZ0IDAuNTMyMzcwIDAuNTc1NDk5CnZ0IDAuNDU0MDIwIDAuNTc0MzQ1CnZ0IDAuNDU2Mzc0IDAuNTc0NjEyCnZ0IDAuNDYwMjcwIDAuNTc0OTMyCnZ0IDAuNDY0NzEwIDAuNTc1MTk3CnZ0IDAuNDY3NjMwIDAuNTc1MzE5CnZ0IDAuNDY3NjMwIDAuNTc1NDkwCnZ0IDAuNDYwMjQ3IDAuNTc1MTg4CnZ0IDAuNDc2NTQwIDAuNTc1MzYzCnZ0IDAuNTAwMDg2IDAuNTc1NDAwCnZ0IDAuNTIzNjE1IDAuNTc1MzYwCnZ0IDAuNTE3MDg2IDAuNTc1NTU3CnZ0IDAuMTY0ODY2IDAuNTIwMzM2CnZ0IDAuMTM5NTE0IDAuNTIwMzM2CnZ0IDAuMTM5MzU2IDAuNTIzNjA4CnZ0IDAuMTY0NjIxIDAuNTIzNjA4CnZ0IDAuNTY5MjY2IDAuOTYxMjYzCnZ0IDAuNTY5MjY2IDAuOTg2MjcxCnZ0IDAuNTc1MzQ5IDAuOTg2NjY4CnZ0IDAuNTc2OTkxIDAuOTg2ODg4CnZ0IDAuNTc2OTkxIDAuOTYxOTgxCnZ0IDAuNDMwNzM0IDAuMjkzMzY4CnZ0IDAuNDMwNzM0IDAuMjY3OTc5CnZ0IDAuNDIzMDA5IDAuMjY3NDY4CnZ0IDAuNDIzMDA5IDAuMjkzMDY4CnZ0IDAuMTY1NjE5IDAuNTE0MjEwCnZ0IDAuMTM5OTkyIDAuNTE0MjEwCnZ0IDAuMTM5NzI2IDAuNTE3MTkwCnZ0IDAuMTY1MjAwIDAuNTE3MTkwCnZ0IDAuNTg0NDE3IDAuOTg3ODc5CnZ0IDAuNTg0NDE4IDAuOTYyNjY5CnZ0IDAuODQwNTQ2IDAuNzM4NTY3CnZ0IDAuODY2MTg1IDAuNzM4NTY3CnZ0IDAuODY2Nzk2IDAuNzM1NzkwCnZ0IDAuODQxMjkxIDAuNzM1NzkwCnZ0IDAuMTY0NDcwIDAuNTI2OTY1CnZ0IDAuMTM5MjU3IDAuNTI2OTY1CnZ0IDAuNTYxMzQxIDAuOTYwNTI0CnZ0IDAuNTYxMzQxIDAuOTg1NzUzCnZ0IDAuMTY2NjkzIDAuNTAwMDAwCnZ0IDAuMTQwNjY4IDAuNTAwMDAwCnZ0IDAuMTQwMzA3IDAuNTExNDMzCnZ0IDAuMTY2MTE5IDAuNTExNDMzCnZ0IDAuODQyOTQ1IDAuNzIzMDM1CnZ0IDAuODY4MTQ1IDAuNzIzMDM1CnZ0IDAuNDQyMjE0IDAuMjY4NzM3CnZ0IDAuNDM4NjU5IDAuMjY4NTAyCnZ0IDAuNDM4NjU5IDAuMjkzNjc0CnZ0IDAuODQxOTExIDAuNzMyODEwCnZ0IDAuODY3MzAzIDAuNzMyODEwCnZ0IDAuODY3NzAwIDAuNzI5NjY0CnZ0IDAuODQyMzk3IDAuNzI5NjY0CnZ0IDAuODY3OTgyIDAuNzI2MzkyCnZ0IDAuODQyNzQzIDAuNzI2MzkyCnZ0IDAuNDE1NTgyIDAuMjkyNzc5CnZ0IDAuNDE1NTgyIDAuMjY2OTc1CnZ0IDAuNDA4NTQ3IDAuMjY2NTA3CnZ0IDAuNDA4NTQ3IDAuMjkyNTA0CnZ0IDAuNTkxNDUzIDAuOTYzMzIwCnZ0IDAuNTkxNDUzIDAuOTg4ODE1CnZ0IDAuNTk4MDEwIDAuOTg5Njg2CnZ0IDAuNTk4MDEwIDAuOTYzOTI0CnZ0IDAuNDAxOTkwIDAuMjkyMjQ2CnZ0IDAuNDAxOTkwIDAuMjY2MDY5CnZ0IDAuMzc1MDAwIDAuMjY1NjY4CnZ0IDAuMzc1MDAwIDAuMjkxNjkzCnZ0IDAuMzk2MTA3IDAuMjkyMTk0CnZ0IDAuNTMyMzcwIDAuNTQ4MzUzCnZ0IDAuNTM2MzAzIDAuNTQ4MjQwCnZ0IDAuNTM3OTM1IDAuNTQ4MTg2CnZ0IDAuNTM5NTQ0IDAuNTQ4MTE4CnZ0IDAuNTQxMTEzIDAuNTQ4MDM2CnZ0IDAuNTQyNjIwIDAuNTQ3OTQyCnZ0IDAuNTQ0MDQ3IDAuNTQ3ODM3CnZ0IDAuNTQ1Mzc2IDAuNTQ3NzIzCnZ0IDAuNTQ1OTgwIDAuNTQ3NjYxCnZ0IDAuNTQxMTAyIDAuNTQ4MjY4CnZ0IDAuNTMyMzcwIDAuNTQ4NTg5CnZ0IDAuNjI1MDAwIDAuOTkwNDc5CnZ0IDAuNjI1MDAwIDAuOTY0Njg0CnZ0IDAuNjExNDQxIDAuOTY0MTk3CnZ0IDAuNDY3NjMwIDAuNTQ4MzU4CnZ0IDAuNDY3NjMwIDAuNTQ4NjA1CnZ0IDAuODM5Njg0IDAuNzUwMDAwCnZ0IDAuODY1NDc5IDAuNzUwMDAwCnZ0IDAuNDU0MDIwIDAuNTQ3NjY0CnZ0IDAuNDU0NzYyIDAuNTQ3NzM5CnZ0IDAuNDU2MDgzIDAuNTQ3ODUzCnZ0IDAuNDU3NTAxIDAuNTQ3OTU3CnZ0IDAuNDU4OTk2IDAuNTQ4MDUwCnZ0IDAuNDYwNTUxIDAuNTQ4MTMwCnZ0IDAuNDYyMTQ1IDAuNTQ4MTk3CnZ0IDAuNDYzNzU5IDAuNTQ4MjQ5CnZ0IDAuNTMyMzcwIDAuNTM4NjY5CnZ0IDAuNDY3NjMwIDAuNTM4NjczCnZ0IDAuNTQwMTgxIDAuNTU2MTI4CnZ0IDAuNTMyMzcwIDAuNTU2MDg5CnZ0IDAuNDYzMjUyIDAuNTM4NTM1CnZ0IDAuNDYxNjM5IDAuNTM4NDkxCnZ0IDAuNDYwMDQ3IDAuNTM4NDYzCnZ0IDAuNDU4NDk2IDAuNTM4NDUxCnZ0IDAuNDU3MDA2IDAuNTM4NDU1CnZ0IDAuNDU1NTk1IDAuNTM4NDc0CnZ0IDAuNDU0MjgyIDAuNTM4NTA5CnZ0IDAuNDU0MDIwIDAuNTM4NTIwCnZ0IDAuNTQ2NjUzIDAuNTQ3NTk3CnZ0IDAuNTQ3ODUwIDAuNTQ3NDYzCnZ0IDAuNTQ4ODg4IDAuNTQ3MzI0CnZ0IDAuNTQ5NzU0IDAuNTQ3MTgzCnZ0IDAuNTUwNDM4IDAuNTQ3MDQwCnZ0IDAuNTUwOTMwIDAuNTQ2ODk4CnZ0IDAuNTUxMjI1IDAuNTQ2NzU4CnZ0IDAuNTUxMzE4IDAuNTQ2NjIzCnZ0IDAuNTUwODkwIDAuNTM5MjUzCnZ0IDAuNTUwNzgxIDAuNTM5MTI0CnZ0IDAuNTUwNDY4IDAuNTM5MDAzCnZ0IDAuNTQ5OTY0IDAuNTM4ODkyCnZ0IDAuNTQ5MjYzIDAuNTM4NzkyCnZ0IDAuNTQ4Mzg2IDAuNTM4NzA1CnZ0IDAuNTQ3MzM2IDAuNTM4NjMxCnZ0IDAuNTQ2MTI4IDAuNTM4NTcxCnZ0IDAuNTQ1OTgwIDAuNTM4NTY2CnZ0IDAuNDY3NjMwIDAuNTU2MDgwCnZ0IDAuNTQ0ODkwIDAuNTM4NTIzCnZ0IDAuNTQzNTU0IDAuNTM4NDg5CnZ0IDAuNTQyMTIwIDAuNTM4NDcxCnZ0IDAuNTQwNjA3IDAuNTM4NDY5CnZ0IDAuNTM5MDM1IDAuNTM4NDgzCnZ0IDAuNTM3NDIyIDAuNTM4NTEzCnZ0IDAuNTM1NzkwIDAuNTM4NTU5CnZ0IDAuNDUyOTk2IDAuNTM4NTU3CnZ0IDAuNDUxODI2IDAuNTM4NjE4CnZ0IDAuNDUwODEyIDAuNTM4Njk0CnZ0IDAuNDQ5OTY2IDAuNTM4NzgzCnZ0IDAuNDQ5Mjk4IDAuNTM4ODg1CnZ0IDAuNDQ4ODE3IDAuNTM4OTk3CnZ0IDAuNDQ4NTI5IDAuNTM5MTE5CnZ0IDAuNDQ4NDM4IDAuNTM5MjQ3CnZ0IDAuNDQ4ODU3IDAuNTQ2NjQ1CnZ0IDAuNDQ4OTYzIDAuNTQ2NzgwCnZ0IDAuNDQ5MjY2IDAuNTQ2OTIwCnZ0IDAuNDQ5NzYxIDAuNTQ3MDYyCnZ0IDAuNDUwNDQzIDAuNTQ3MjA0CnZ0IDAuNDUxMzAyIDAuNTQ3MzQ1CnZ0IDAuNDUyMzI5IDAuNTQ3NDgzCnZ0IDAuNDUzNTA5IDAuNTQ3NjE1CnZ0IDAuNTMyMzcwIDAuNTU2MzU5CnZ0IDAuNTE5MDUwIDAuNTU2MjkzCnZ0IDAuNDk1NTA0IDAuNTU2MjU2CnZ0IDAuNDcxOTc1IDAuNTU2Mjk2CnZ0IDAuNDY3NjMwIDAuNTU2MzE4CnZ0IDAuNTQ1OTgwIDAuNTU2ODA5CnZ0IDAuNTQ1ODkxIDAuNTU2Nzk4CnZ0IDAuNTQyNjg5IDAuNTU2NTc1CnZ0IDAuNTM4NzkzIDAuNTU2NDI2CnZ0IDAuNTM0MzU0IDAuNTU2MzU1CnZ0IDAuNTQ2ODUyIDAuNTc0MjM0CnZ0IDAuNTQ5NDMyIDAuNTczODM2CnZ0IDAuNTUxMDExIDAuNTczNDI4CnZ0IDAuNTUxNTMwIDAuNTczMDI1CnZ0IDAuNTUwMTIyIDAuNTU3NDE0CnZ0IDAuNTQ4NTAxIDAuNTU3MDc4CnZ0IDAuNDYzNzUyIDAuNTU2MzEzCnZ0IDAuNDU5MzMxIDAuNTU2Mzg3CnZ0IDAuNDU1NDYxIDAuNTU2NTQxCnZ0IDAuNDU0MDIwIDAuNTU2NjQzCnZ0IDAuNDUyMTIwIDAuNTU2NzYxCnZ0IDAuNDQ5NTQwIDAuNTU3MDQ0CnZ0IDAuNDQ3OTYxIDAuNTU3MzgyCnZ0IDAuNDQ4Mjg3IDAuNTczMDM5CnZ0IDAuNDQ4ODUwIDAuNTczNDQyCnZ0IDAuNDUwNDcxIDAuNTczODUwCnZ0IDAuNDUzMDg5IDAuNTc0MjQ3CnZ0IDAuNDY3NjMwIDAuNTc4NzYzCnZ0IDAuNDU5MzAxIDAuNTc4ODEwCnZ0IDAuNTM5MTgyIDAuNTc4OTc5CnZ0IDAuNTMyMzcwIDAuNTc4ODQzCnZ0IDAuNDk2MzY1IDAuNTc4NzYwCnZ0IDAuNTU3NjcwIDAuNTk2MTkyCnZ0IDAuNTUyMTQ1IDAuNTk3NDk2CnZ0IDAuNTQ4MTMyIDAuNTk3MjgxCnZ0IDAuNTUwNzEyIDAuNTk2OTA2CnZ0IDAuNTUyMjkxIDAuNTk2NTExCnZ0IDAuNTUyODEwIDAuNTk2MTEzCnZ0IDAuNTUxNDAzIDAuNTgwNDgyCnZ0IDAuNTQ5NzgxIDAuNTgwMTMyCnZ0IDAuNTQ3MTYzIDAuNTc5ODI5CnZ0IDAuNTQ1OTgwIDAuNTc5NzQ3CnZ0IDAuNDY3NjMwIDAuNTc5Mjg0CnZ0IDAuNDY0OTE4IDAuNTc5MzAzCnZ0IDAuNDYwNDk3IDAuNTc5NDE1CnZ0IDAuNDU2NjI3IDAuNTc5NjAxCnZ0IDAuNDU0MDIwIDAuNTc5ODA4CnZ0IDAuNDUzNDAwIDAuNTc5ODUyCnZ0IDAuNDUwODIxIDAuNTgwMTU3CnZ0IDAuNDQ5MjQxIDAuNTgwNTA5CnZ0IDAuNDQ5NTY4IDAuNTk2MTU1CnZ0IDAuNDUwMTMwIDAuNTk2NTUzCnZ0IDAuNDUxNzUxIDAuNTk2OTQ3CnZ0IDAuNTQzODU1IDAuNTc5NTgxCnZ0IDAuNTM5OTYwIDAuNTc5Mzk4CnZ0IDAuNTM1NTIwIDAuNTc5Mjg5CnZ0IDAuNTMyMzcwIDAuNTc5MjY5CnZ0IDAuNTI0NTQxIDAuNTc5MjMwCnZ0IDAuNTAwOTk1IDAuNTc5MTkzCnZ0IDAuNDc3NDY3IDAuNTc5MjMzCnZ0IDAuNDU3NTk2IDAuMTUwNDIwCnZ0IDAuNDU3NTMxIDAuMTUwNDM5CnZ0IDAuNDU0NjgzIDAuMTUxMzc4CnZ0IDAuNDUyOTIyIDAuMTUyMTE5CnZ0IDAuNDUxMzIwIDAuMTc3ODQ0CnZ0IDAuNDUxOTAyIDAuMTc4MDg1CnZ0IDAuNDUzNjYwIDAuMTc4MDEwCnZ0IDAuNDU2NTI3IDAuMTc3NjIxCnZ0IDAuNTQyNDA4IDAuMTUwMjcwCnZ0IDAuNTQwOTA4IDAuMTQ5NzMzCnZ0IDAuNTM2NjU5IDAuMTQ4MzM3CnZ0IDAuNTMxODA0IDAuMTQ2ODQzCnZ0IDAuNTI3NTQxIDAuMTQ1NjAxCnZ0IDAuNTIzODM0IDAuMTQ1NTgwCnZ0IDAuNTAzNzA5IDAuMTQ1NTQzCnZ0IDAuNDgzNTY4IDAuMTQ1NTc3CnZ0IDAuNDcyNDYwIDAuMTQ1NjM4CnZ0IDAuNDcwMjAzIDAuMTQ2Mjk0CnZ0IDAuNDY1MzI4IDAuMTQ3NzkwCnZ0IDAuNDYxMDUwIDAuMTQ5MTkxCnZ0IDAuNTQyMTQ4IDAuMTc3Mjk2CnZ0IDAuNTQ1MDU4IDAuMTc3Njk4CnZ0IDAuNTQ2ODY0IDAuMTc3Nzg3CnZ0IDAuNTQ3NDk2IDAuMTc3NTYwCnZ0IDAuNTQ5MDg0IDAuMTUyNTU4CnZ0IDAuNTQ3MzY5IDAuMTUxODI0CnZ0IDAuNTQ0NTY0IDAuMTUwODkyCnZ0IDAuMzc4Njc1IDAuNzg0OTI3CnZ0IDAuMzc1MDAwIDAuNzg0OTI3CnZ0IDAuMzY1Mzc5IDAuNzY5MTU1CnZ0IDAuMzY5NDIyIDAuNzY5MTU1CnZ0IDAuMzc4NTQyIDAuNzM1OTIyCnZ0IDAuMzc0ODIzIDAuNzM1OTIyCnZ0IDAuMzc1MDAwIDAuNzMyOTY0CnZ0IDAuMzc4NTg3IDAuNzMyOTY0CnZ0IDAuMzc4MTg4IDAuNzM4NzkxCnZ0IDAuMzc0Mjk4IDAuNzM4NzkxCnZ0IDAuMzc3NDgwIDAuNzQxNDgyCnZ0IDAuMzczNDQwIDAuNzQxNDgyCnZ0IDAuMzc2NDE3IDAuNzQzOTE0CnZ0IDAuMzcyMjc2IDAuNzQzOTE0CnZ0IDAuMzc1MDIzIDAuNzU2OTg5CnZ0IDAuMzcwODQxIDAuNzU2OTg5CnZ0IDAuMzczMzQ0IDAuNzYwODgyCnZ0IDAuMzY5MTc5IDAuNzYwODgyCnZ0IDAuMzcxNDQ5IDAuNzY0OTc5CnZ0IDAuMzY3MzM5IDAuNzY0OTc5CnZ0IDAuMzY5NDIyIDAuNDgwODQ1CnZ0IDAuMzY1Mzc5IDAuNDgwODQ1CnZ0IDAuMzc1MDAwIDAuNDY1MDczCnZ0IDAuMzc4Njc1IDAuNDY1MDcyCnZ0IDAuMzcxNDQ4IDAuNDg1MDIxCnZ0IDAuMzY3MzM5IDAuNDg1MDIxCnZ0IDAuMzczMzQ0IDAuNDg5MTE4CnZ0IDAuMzY5MTc5IDAuNDg5MTE4CnZ0IDAuMzc1MDIzIDAuNDkzMDExCnZ0IDAuMzcwODQxIDAuNDkzMDExCnZ0IDAuMzc2NDE3IDAuNTA2MDg2CnZ0IDAuMzcyMjc2IDAuNTA2MDg2CnZ0IDAuMzc3NDgwIDAuNTA4NTE4CnZ0IDAuMzczNDQwIDAuNTA4NTE4CnZ0IDAuMzc4MTg4IDAuNTExMjEwCnZ0IDAuMzc0Mjk4IDAuNTExMjEwCnZ0IDAuMzc4NTQyIDAuNTE0MDc4CnZ0IDAuMzc0ODIzIDAuNTE0MDc4CnZ0IDAuMjk4MDI3IDAuMzI4NjQxCnZ0IDAuMjkxODQ0IDAuMzI4NjQxCnZ0IDAuMzc1MDAwIDAuMjMyOTY0CnZ0IDAuMzc4NTg3IDAuMjMyOTY0CnZ0IDAuMjk4Nzk0IDAuMzI5NTk3CnZ0IDAuMjkyMzY5IDAuMzI5NTk3CnZ0IDAuMjk5ODI3IDAuMzMwNDk0CnZ0IDAuMjkzMjI2IDAuMzMwNDk0CnZ0IDAuMzAxMDU2IDAuMzMxMzA1CnZ0IDAuMjk0MzkwIDAuMzMxMzA1CnZ0IDAuMzAyNDM2IDAuMzQyOTgwCnZ0IDAuMjk1ODI2IDAuMzQyOTgwCnZ0IDAuMzAzOTM2IDAuMzQ1NzM3CnZ0IDAuMjk3NDg4IDAuMzQ1NzM3CnZ0IDAuMzA1NTQzIDAuMzQ4OTk3CnZ0IDAuMjk5MzI3IDAuMzQ4OTk3CnZ0IDAuMzA3MjU1IDAuMzUyNjYxCnZ0IDAuMzAxMjg3IDAuMzUyNjYxCnZ0IDAuMzc4Njc1IDAuMjg0OTI3CnZ0IDAuMzc1MDAwIDAuMjg0OTI3CnZ0IDAuMzc4NTg3IDAuNTE3MDM2CnZ0IDAuMzc1MDAwIDAuNTE3MDM2CnZ0IDAuMTUzOTk3IDAuNzQ5Mzk0CnZ0IDAuMTU5OTY4IDAuNzQ5NjQ4CnZ0IDAuMTU5OTI4IDAuNzUwMDAwCnZ0IDAuMTUzODYyIDAuNzQ5NzQxCnZ0IDAuMTQ4MjM4IDAuNzQ4NjQxCnZ0IDAuMTQ3OTgyIDAuNzQ4OTczCnZ0IDAuMTQyODM1IDAuNzQ3NDEyCnZ0IDAuMTQyNDY0IDAuNzQ3NzE4CnZ0IDAuMTM3OTUwIDAuNzQ1NzQ0CnZ0IDAuMTM3NDc3IDAuNzQ2MDE0CnZ0IDAuMTMzNzMzIDAuNzQzNjg3CnZ0IDAuMTMzMTcxIDAuNzQzOTE0CnZ0IDAuMTMwMzEyIDAuNzQxMzA0CnZ0IDAuMTI5Njc5IDAuNzQxNDgyCnZ0IDAuMTI3NzkyIDAuNzM4NjY3CnZ0IDAuMTI3MTA2IDAuNzM4NzkwCnZ0IDAuMTI2MjQ4IDAuNzM1ODU2CnZ0IDAuMTI1NTMxIDAuNzM1OTIyCnZ0IDAuMTI1NzI2IDAuNzMyOTQyCnZ0IDAuMTI1MDAwIDAuNzMyOTY0CnZ0IDAuMTY5NzYzIDAuNDkwNDcxCnZ0IDAuMjkyNjE4IDAuMzYxNzEyCnZ0IDAuMTU5OTI4IDAuNTAwMDAwCnZ0IDAuMjk4MTgxIDAuMzUwNjI3CnZ0IDAuMjk2NTg5IDAuMzQ3MTk4CnZ0IDAuMjk1MDE3IDAuMzQzOTI3CnZ0IDAuMjkzNjE1IDAuMzMzNTc2CnZ0IDAuMjkyNDI0IDAuMzMyMjQxCnZ0IDAuMjkxMzYxIDAuMzMxNTkwCnZ0IDAuMjgyMjUxIDAuMzQwNDIwCnZ0IDAuMTM2NDU4IDAuNTA1MTU1CnZ0IDAuMTI1MDAwIDAuNTE3MDM2CnZ0IDAuMzc0Mzk4IDAuNTE2OTY4CnZ0IDAuMzc0MjQ5IDAuNTE0MDQ5CnZ0IDAuMzczNzQ1IDAuNTExMjI0CnZ0IDAuMzcyOTEyIDAuNTA4NTU1CnZ0IDAuMzcxNzc2IDAuNTA1NTY5CnZ0IDAuMzcwMzcyIDAuNDkzODUxCnZ0IDAuMzY4NzM3IDAuNDg5NTMzCnZ0IDAuMzY2OTA1IDAuNDg1NTMyCnZ0IDAuMzYzNzY5IDAuNDgyNjUzCnZ0IDAuMzQxMjQ3IDAuNDk5MTI5CnZ0IDAuMzQwMDcyIDAuNTAwMDAwCnZ0IDAuMzQxMjE1IDAuNzUwODIyCnZ0IDAuMzYzNzQxIDAuNzY3MzAxCnZ0IDAuMzQwMDcyIDAuNzUwMDAwCnZ0IDAuMzY2ODc5IDAuNzY0NDI1CnZ0IDAuMzY4NzEyIDAuNzYwNDI0CnZ0IDAuMzcwMzQ3IDAuNzU2MTA4CnZ0IDAuMzcxNzUyIDAuNzQ0MzkwCnZ0IDAuMzcyODg4IDAuNzQxNDA0CnZ0IDAuMzczNzIxIDAuNzM4NzM1CnZ0IDAuMzc0MjI2IDAuNzM1OTA5CnZ0IDAuMzc0MzczIDAuNzMyOTg4CnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMzc4Njc1IDAuOTY1MDczCnZ0IDAuMzc4NzU0IDAuOTcxMTM4CnZ0IDAuMzc4NTg3IDAuMDE3MDM2CnZ0IDAuMzc4NzEzIDAuMDE0MDc4CnZ0IDAuMzc4ODY4IDAuMDExMjEwCnZ0IDAuMzc4OTkwIDAuMDA4NTE4CnZ0IDAuMzc5MDUyIDAuMDA2MDg2CnZ0IDAuMzc5MDQ3IDAuOTg3NTIzCnZ0IDAuMzc5MDUyIDEuMDAwMDAwCnZ0IDAuMzc4OTgwIDAuOTgyNTM2CnZ0IDAuMzc4ODcyIDAuOTc3MDE4CnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuMDAwMDAwCnZ0IDAuMzc1MDAwIDAuOTcxMTM4CnZ0IDAuMzc1MDAwIDAuOTc3MDE4CnZ0IDAuMzc1MDAwIDAuOTY1MDczCnZ0IDAuMzc1MDAwIDAuOTgyNTM2CnZ0IDAuMzc1MDAwIDAuOTg3NTIzCnZ0IDAuMzc1MDAwIDEuMDAwMDAwCnZ0IDAuMzc1MDAwIDAuMDA2MDg2CnZ0IDAuMzc1MDAwIDAuMDA4NTE4CnZ0IDAuMzc1MDAwIDAuMDExMjEwCnZ0IDAuMzc1MDAwIDAuMDE0MDc4CnZ0IDAuMzc1MDAwIDAuMDE3MDM2CnZ0IDAuMDgwNzY3IDAuMDEwNzI3CnZ0IDAuMTAxMDE1IDAuMDA4MjQzCnZ0IDAuMTIzMDU3IDAuMDA3Mzk4CnZ0IDAuODc5NTYwIDAuMDA5MzQ4CnZ0IDAuOTAxNTk3IDAuMDEwMzA3CnZ0IDAuOTIxODMxIDAuMDEyODk1CnZ0IDAuOTQwODMwIDAuMDE3MDkxCnZ0IDAuOTU4MDE3IDAuMDIyNzY4CnZ0IDAuOTcyODY3IDAuMDI5NzYxCnZ0IDAuOTg0OTIzIDAuMDM3ODU5CnZ0IDAuOTkzODA4IDAuMDQ2ODE4CnZ0IDAuOTk5MjQ0IDAuMDU2MzY0CnZ0IDEuMDAxMTU1IDAuMDY2NzMzCnZ0IDAuOTk4ODQyIDAuOTM3ODY0CnZ0IDAuOTk2ODc1IDAuOTQ4MjI0CnZ0IDAuOTkxMzg5IDAuOTU3NzQxCnZ0IDAuOTgyNDU2IDAuOTY2NjU0CnZ0IDAuOTcwMzU4IDAuOTc0NjkwCnZ0IDAuOTU1NDcwIDAuOTgxNjA2CnZ0IDAuOTM4MjUzIDAuOTg3MTk2CnZ0IDAuOTE5MjMzIDAuOTkxMjkyCnZ0IDAuODk4OTg1IDAuOTkzNzc3CnZ0IDAuODc2OTQzIDAuOTk0NjIyCnZ0IDAuNzUyMTQ5IDAuOTk0MzAwCnZ0IDAuNzQ3Mjk0IDAuOTkzNzQ2CnZ0IDAuNzQyNDUxIDAuOTkxOTMwCnZ0IDAuNzM4MDA5IDAuOTg4ODU5CnZ0IDAuNzM3MjcwIDAuOTg0NTQ1CnZ0IDAuNzM3MTIxIDAuOTc5NTE1CnZ0IDAuNzM1Nzg4IDAuOTc2NTQ2CnZ0IDAuNzMyMzI0IDAuOTcyNjcwCnZ0IDAuNzI2OTE5IDAuOTY4NjA3CnZ0IDAuNzE5NTYwIDAuOTY1NjE0CnZ0IDAuNzA3NzM0IDAuOTYyMzM0CnZ0IDAuNzAxMzI2IDAuOTYxNjgwCnZ0IDAuMjg4MzI3IDAuOTU5NjkzCnZ0IDAuMjc0MzA3IDAuOTYyNjAxCnZ0IDAuMjY0OTQ2IDAuOTY2MDY3CnZ0IDAuMjU3MzI0IDAuOTcwNzA4CnZ0IDAuMjUzNTkzIDAuOTc0OTE0CnZ0IDAuMjUyNTg0IDAuOTc5MTMyCnZ0IDAuMjUyMzU1IDAuOTgzOTgxCnZ0IDAuMjUxODIzIDAuOTg2ODQ1CnZ0IDAuMjQ3ODcwIDAuOTg5MTgxCnZ0IDAuMjQzMzQzIDAuOTkwNzcxCnZ0IDAuMjM1MTY0IDAuOTkyNTM1CnZ0IDAuMjI2NjA4IDAuOTkyOTQ1CnZ0IDAuMTIwNDQwIDAuOTkyNjcyCnZ0IDAuMDk4NDAzIDAuOTkxNzEzCnZ0IDAuMDc4MTY5IDAuOTg5MTI0CnZ0IDAuMDU5MTcwIDAuOTg0OTI5CnZ0IDAuMDQxOTgzIDAuOTc5MjUxCnZ0IDAuMDI3MTMzIDAuOTcyMjU5CnZ0IDAuMDE1MDc3IDAuOTY0MTYwCnZ0IDAuMDA2MTkyIDAuOTU1MjAxCnZ0IDAuMDAwNzU2IDAuOTQ1NjU1CnZ0IC0wLjAwMTE1NSAwLjkzNTI4Ngp2dCAwLjAwMTE1OCAwLjA2NDE1NQp2dCAwLjAwMzEyNSAwLjA1Mzc5Ngp2dCAwLjAwODYxMSAwLjA0NDI3OAp2dCAwLjAxNzU0MyAwLjAzNTM2NQp2dCAwLjAyOTY0MiAwLjAyNzMyOQp2dCAwLjA0NDUzMCAwLjAyMDQxMwp2dCAwLjA2MTc0NyAwLjAxNDgyNAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjAwMDAwMAp2biAwLjA5ODAgMC45OTUyIDAuMDAwMAp2biAwLjI5MDMgMC45NTY5IDAuMDAwMAp2biAwLjQ3MTQgMC44ODE5IDAuMDAwMAp2biAwLjYzNDQgMC43NzMwIC0wLjAwMDAKdm4gMC43NzMwIDAuNjM0NCAwLjAwMDAKdm4gMC44ODE5IDAuNDcxNCAwLjAwMDAKdm4gMC45NTY5IDAuMjkwMyAwLjAwMDAKdm4gMC45OTUyIDAuMDk4MCAtMC4wMDAwCnZuIDAuOTk1MiAtMC4wOTgwIC0wLjAwMDAKdm4gMC45NTY5IC0wLjI5MDMgMC4wMDAwCnZuIDAuODgxOSAtMC40NzE0IC0wLjAwMDAKdm4gMC43NzMwIC0wLjYzNDQgMC4wMDAwCnZuIDAuNjM0NCAtMC43NzMwIDAuMDAwMAp2biAwLjQ3MTQgLTAuODgxOSAwLjAwMDAKdm4gMC4yOTAzIC0wLjk1NjkgMC4wMDAwCnZuIDAuMDk4MCAtMC45OTUyIC0wLjAwMDAKdm4gLTAuMDk4MCAtMC45OTUyIC0wLjAwMDAKdm4gLTAuMjkwMyAtMC45NTY5IDAuMDAwMAp2biAtMC40NzE0IC0wLjg4MTkgMC4wMDAwCnZuIC0wLjYzNDQgLTAuNzczMCAtMC4wMDAwCnZuIC0wLjc3MzAgLTAuNjM0NCAtMC4wMDAwCnZuIC0wLjg4MTkgLTAuNDcxNCAtMC4wMDAwCnZuIC0wLjk1NjkgLTAuMjkwMyAwLjAwMDAKdm4gLTAuOTk1MiAtMC4wOTgwIDAuMDAwMAp2biAtMC45OTUyIDAuMDk4MCAwLjAwMDAKdm4gLTAuOTU2OSAwLjI5MDMgLTAuMDAwMAp2biAtMC44ODE5IDAuNDcxNCAwLjAwMDAKdm4gLTAuNzczMCAwLjYzNDQgMC4wMDAwCnZuIC0wLjYzNDQgMC43NzMwIDAuMDAwMAp2biAtMC40NzE0IDAuODgxOSAwLjAwMDAKdm4gLTAuMjkwMyAwLjk1NjkgMC4wMDAwCnZuIC0wLjA5ODAgMC45OTUyIDAuMDAwMAp2biAwLjAwMDAgLTAuMDAwMCAxLjAwMDAKdm4gLTAuMDA0MiAtMS4wMDAwIC0wLjAwMDAKdm4gLTAuMDA0MiAxLjAwMDAgMC4wMDAwCnZuIDAuMDAwMCAtMC4wOTgwIDAuOTk1Mgp2biAwLjAwMDAgLTAuMjkwMyAwLjk1NjkKdm4gMC4wMDAwIC0wLjQ3MTQgMC44ODE5CnZuIDAuMDAwMCAtMC42MzQ0IDAuNzczMAp2biAwLjAwMDAgLTAuNzczMCAwLjYzNDQKdm4gMC4wMDAwIC0wLjg4MTkgMC40NzE0CnZuIDAuMDAwMCAtMC45NTY5IDAuMjkwMwp2biAwLjAwMDAgLTAuOTk1MiAwLjA5ODAKdm4gLTAuMDAwMCAtMS4wMDAwIC0wLjAwMTUKdm4gMC4wMDAwIC0wLjk1NjkgLTAuMjkwMwp2biAwLjAwMDAgLTAuODgxOSAtMC40NzE0CnZuIDAuMDAwMCAtMC43NzMwIC0wLjYzNDQKdm4gMC4wMDAwIC0wLjYzNDQgLTAuNzczMAp2biAwLjAwMDAgLTAuNDcxNCAtMC44ODE5CnZuIC0wLjAwMDAgLTAuMjkwMyAtMC45NTY5CnZuIDAuMDAwMCAtMC4wOTgwIC0wLjk5NTIKdm4gMC4wMDAwIDAuMDk4MCAtMC45OTUyCnZuIC0wLjAwMDAgMC4yOTAzIC0wLjk1NjkKdm4gMC4wMDAwIDAuNDcxNCAtMC44ODE5CnZuIDAuMDAwMCAwLjYzNDQgLTAuNzczMAp2biAwLjAwMDAgMC43NzMwIC0wLjYzNDQKdm4gMC4wMDAwIDAuODgxOSAtMC40NzE0CnZuIC0wLjAwMDAgMC45NTY5IC0wLjI5MDMKdm4gMC4wMDAwIDEuMDAwMCAtMC4wMDE1CnZuIDAuMDAwMCAwLjk5NTIgMC4wOTgwCnZuIDAuMDAwMCAwLjk1NjkgMC4yOTAzCnZuIDAuMDAwMCAwLjg4MTkgMC40NzE0CnZuIC0wLjAwMDAgMC43NzMwIDAuNjM0NAp2biAtMC4wMDAwIDAuNjM0NCAwLjc3MzAKdm4gMC4wMDAwIDAuNDcxNCAwLjg4MTkKdm4gMC4wMDAwIDAuMjkwMyAwLjk1NjkKdm4gMC4wMDAwIDAuMDk4MCAwLjk5NTIKdm4gLTEuMDAwMCAwLjAwMDAgLTAuMDAwMAp2biAtMS4wMDAwIDAuMDAwMSAtMC4wMDAwCnZuIC0xLjAwMDAgLTAuMDAwMSAwLjAwMDAKdm4gLTAuOTcyNCAwLjIwNTkgMC4xMTAxCnZuIDAuMDAwMCAwLjQ2MzggMC44ODU5CnZuIDAuMDAwMCAtMC44Nzc4IDAuNDc5MQp2biAwLjAwMDAgLTAuOTU1MiAwLjI5NTgKdm4gLTAuMDAwMCAwLjI4NDggMC45NTg2CnZuIC0wLjAwMDAgLTAuMjg0OCAtMC45NTg2CnZuIDAuMDAwMCAtMC42MjY1IC0wLjc3OTQKdm4gMC4wMDAwIDAuMDk2MCAtMC45OTU0CnZuIDAuMDAwMCAwLjk1NTIgLTAuMjk1OQp2biAtMC4wMDAwIC0wLjI4NDggMC45NTg2CnZuIDAuMDAwMCAxLjAwMDAgMC4wMDI1CnZuIDAuMDAwMCAwLjQ2MzggLTAuODg1OQp2biAtMC4wMDAwIDAuMjg0OCAtMC45NTg2CnZuIC0wLjAwMDAgLTAuNzY2NSAtMC42NDIyCnZuIDAuMDAwMCAwLjk5NTAgLTAuMTAwMQp2biAwLjAwMDAgMC44Nzc4IC0wLjQ3OTAKdm4gMC4wMDAwIC0wLjA5NjAgLTAuOTk1NAp2biAwLjAwMDAgMC45NTUyIDAuMjk1OAp2biAwLjAwMDAgLTAuNjI2NSAwLjc3OTQKdm4gLTAuMDAwMCAtMC44Nzc4IC0wLjQ3OTAKdm4gMC4wMDAwIDAuNzY2NSAtMC42NDIyCnZuIDAuMDAwMCAwLjA5NjAgMC45OTU0CnZuIDAuMDAwMCAtMC45NTUyIC0wLjI5NTgKdm4gMC4wMDAwIC0wLjk5NTAgLTAuMTAwMQp2biAtMC4wMDAwIC0xLjAwMDAgMC4wMDI1CnZuIDAuMDAwMCAwLjYyNjUgMC43Nzk0CnZuIDAuMDAwMCAtMC43NjY1IDAuNjQyMwp2biAwLjAwMDAgLTAuMDk2MCAwLjk5NTQKdm4gMC4wMDAwIC0wLjQ2MzggMC44ODU5CnZuIDAuMDAwMCAwLjc2NjUgMC42NDIyCnZuIDAuMDAwMCAwLjYyNjUgLTAuNzc5NAp2biAwLjAwMDAgLTAuNDYzOCAtMC44ODU5CnZuIDAuMDAwMCAwLjg3NzggMC40NzkxCnZuIC0wLjAwMDAgLTAuNzY2NSAtMC42NDIzCnZuIC0wLjAwMDAgMC45OTUwIC0wLjEwMDAKdm4gMC4wMDAwIC0wLjk1NTIgLTAuMjk1OQp2biAwLjAwMDAgLTAuOTk1MCAtMC4xMDAwCnZuIDAuMDAwMCAtMC43NjY1IDAuNjQyMgp2biAwLjAwMDAgMC44Nzc4IDAuNDc5MAp2biAxLjAwMDAgLTAuMDAwMSAwLjAwMDAKdm4gMS4wMDAwIDAuMDAwMCAtMC4wMDAwCnZuIDEuMDAwMCAwLjAwMDEgLTAuMDAwMAp2biAwLjAwMTQgMC4wMjg2IDAuOTk5Ngp2biAwLjAwMTMgMC4wMjczIDAuOTk5Ngp2biAtMC4wMDEyIC0wLjAyNTYgMC45OTk3CnZuIC0wLjAwMTUgLTAuMDMwNyAwLjk5OTUKdm4gMC45OTQ1IC0wLjEwNDYgMC4wMDI3CnZuIDAuOTg2NCAtMC4xNjQzIDAuMDAyNAp2biAwLjk5NDUgLTAuMTA0MyAwLjAwMjcKdm4gMC4wNDg0IDAuOTk4NCAtMC4wMjc1CnZuIDAuMDQ4NCAwLjk5ODQgLTAuMDI3Ngp2biAwLjA0ODQgMC45OTg0IDAuMDI3Ngp2biAwLjA0ODQgMC45OTg1IDAuMDI3NAp2biAwLjk5ODggLTAuMDQ4NCAwLjAwMjkKdm4gMC45OTk5IDAuMDEwMCAwLjAwMzEKdm4gMC45OTk5IDAuMDA5NyAwLjAwMzEKdm4gMC45OTM3IDAuMTEyNCAwLjAwMzUKdm4gMC45ODI3IDAuMTg1MyAwLjAwMzcKdm4gMC45OTMyIDAuMTE2MyAwLjAwMzUKdm4gMC45OTc3IDAuMDY4MSAwLjAwMzMKdm4gLTAuMDAwMCAxLjAwMDAgMC4wMDQwCnZuIC0wLjAyOTQgMC42OTMyIC0wLjcyMDEKdm4gLTAuMDIyMCAwLjY5MTAgLTAuNzIyNQp2biAwLjAyNjIgMC42OTEwIC0wLjcyMjMKdm4gMC4wMzM2IDAuNjkzMiAtMC43MTk5CnZuIDAuNzYyMiAwLjY0NjggLTAuMDI3Ngp2biAwLjc2NjYgMC42NDE5IC0wLjAxNjgKdm4gMC43NjY1IDAuNjQxNyAwLjAyNjUKdm4gMC43NjIwIDAuNjQ2NSAwLjAzNzMKdm4gLTAuNzE4OSAwLjY4MzkgMC4xMjQ0CnZuIC0wLjcyNzUgMC42Nzc2IDAuMTA3OAp2biAtMC43NjY3IDAuNjQxNyAwLjAyMjAKdm4gLTAuNzYyMiAwLjY0NjUgMC4wMzI4CnZuIC0wLjY1MzUgMC43MTk1IDAuMjM1MQp2biAtMC42NjA5IDAuNzE2NCAwLjIyMzcKdm4gLTAuNTgyNCAwLjc0MTYgMC4zMzMxCnZuIC0wLjU4ODAgMC43NDAzIDAuMzI1OQp2biAtMC41MDU5IDAuNzUzMCAwLjQyMDgKdm4gLTAuNTA5MyAwLjc1MjcgMC40MTcyCnZuIC0wLjQyMzIgMC43NTU1IDAuNTAwMQp2biAtMC40MjQwIDAuNzU1NSAwLjQ5OTQKdm4gLTAuMzMzMCAwLjc0OTggMC41NzE4CnZuIC0wLjMzMDcgMC43NDk1IDAuNTczNQp2biAtMC4yMzM2IDAuNzM1NiAwLjYzNTgKdm4gLTAuMjI3NCAwLjczNDUgMC42Mzk0CnZuIC0wLjEyMzMgMC43MTIxIDAuNjkxMgp2biAtMC4xMTI1IDAuNzA5NCAwLjY5NTgKdm4gMC4wMjkzIDAuNjg3NCAwLjcyNTcKdm4gMC4wMjIwIDAuNjg1MiAwLjcyODAKdm4gLTAuMDI2MyAwLjY4NTIgMC43Mjc5CnZuIC0wLjAzMzYgMC42ODc0IDAuNzI1NQp2biAtMC43NjY1IDAuNjQxOSAtMC4wMjEzCnZuIC0wLjc2MjAgMC42NDY4IC0wLjAzMjAKdm4gLTAuMTA4NCAwLjcxNTAgLTAuNjkwNgp2biAtMC4xMTkyIDAuNzE3NyAtMC42ODYxCnZuIC0wLjIyOTkgMC43NDA4IC0wLjYzMTIKdm4gLTAuMjIzNyAwLjczOTcgLTAuNjM0Nwp2biAwLjcyNzUgMC42Nzg1IC0wLjEwMjMKdm4gMC43MTg5IDAuNjg0OSAtMC4xMTg4CnZuIDAuNjUzNSAwLjcyMTQgLTAuMjI5Mwp2biAwLjY2MDkgMC43MTgyIC0wLjIxNzkKdm4gMC4xMDg0IDAuNzA5NCAwLjY5NjQKdm4gMC4xMTkyIDAuNzEyMSAwLjY5MTkKdm4gMC4yMjk4IDAuNzM1NiAwLjYzNzIKdm4gMC4yMjM2IDAuNzM0NSAwLjY0MDcKdm4gMC43MjY4IDAuNjc3NiAwLjExMjEKdm4gMC43MTgyIDAuNjgzOSAwLjEyODYKdm4gMC42NTk2IDAuNzE2NCAwLjIyNzYKdm4gMC42NTIxIDAuNzE5NSAwLjIzODkKdm4gMC41ODYxIDAuNzQwMyAwLjMyOTQKdm4gMC41ODA0IDAuNzQxNiAwLjMzNjUKdm4gMC41MDY5IDAuNzUyNyAwLjQyMDIKdm4gMC41MDM0IDAuNzUzMCAwLjQyMzgKdm4gMC40MjExIDAuNzU1NSAwLjUwMTkKdm4gMC40MjAyIDAuNzU1NSAwLjUwMjYKdm4gMC4zMjczIDAuNzQ5NSAwLjU3NTQKdm4gMC4zMjk2IDAuNzQ5OCAwLjU3MzcKdm4gMC4xMTI1IDAuNzE1MCAtMC42OTAwCnZuIDAuMTIzMyAwLjcxNzcgLTAuNjg1NAp2biAwLjIyNzQgMC43Mzk3IC0wLjYzMzQKdm4gMC4yMzM2IDAuNzQwOCAtMC42Mjk4CnZuIDAuMzMwNiAwLjc1NDIgLTAuNTY3NAp2biAwLjMzMzAgMC43NTQ0IC0wLjU2NTcKdm4gMC40MjQwIDAuNzU5NiAtMC40OTMyCnZuIDAuNDIzMiAwLjc1OTYgLTAuNDk0MAp2biAwLjUwOTMgMC43NTYxIC0wLjQxMTEKdm4gMC41MDU4IDAuNzU2NCAtMC40MTQ3CnZuIDAuNTg4MCAwLjc0MjkgLTAuMzE5OQp2biAwLjU4MjQgMC43NDQyIC0wLjMyNzAKdm4gLTAuNzI2OCAwLjY3ODUgLTAuMTA2Ngp2biAtMC43MTgyIDAuNjg0OSAtMC4xMjMxCnZuIC0wLjY1OTYgMC43MTgyIC0wLjIyMTgKdm4gLTAuNjUyMSAwLjcyMTQgLTAuMjMzMQp2biAtMC41ODYxIDAuNzQyOSAtMC4zMjM0CnZuIC0wLjU4MDQgMC43NDQzIC0wLjMzMDUKdm4gLTAuNTA2OSAwLjc1NjEgLTAuNDE0MQp2biAtMC41MDM0IDAuNzU2NCAtMC40MTc3CnZuIC0wLjQyMTEgMC43NTk2IC0wLjQ5NTcKdm4gLTAuNDIwMyAwLjc1OTYgLTAuNDk2NAp2biAtMC4zMjczIDAuNzU0MiAtMC41NjkzCnZuIC0wLjMyOTYgMC43NTQ0IC0wLjU2NzYKdm4gMC4wMDEzIDAuMDI3MyAtMC45OTk2CnZuIDAuMDAxNCAwLjAyODYgLTAuOTk5Ngp2biAtMC4wMDAwIC0wLjAwMDAgLTEuMDAwMAp2biAtMC4wMDE1IC0wLjAzMDcgLTAuOTk5NQp2biAtMC4wMDEzIC0wLjAyNTYgLTAuOTk5Nwp2biAtMC4wNDg0IC0wLjk5ODQgLTAuMDI3Ngp2biAtMC4wNDg0IC0wLjk5ODUgLTAuMDI3NQp2biAtMC4wNDg0IC0wLjk5ODUgMC4wMjczCnZuIC0wLjA0ODQgLTAuOTk4NCAwLjAyNzcKdm4gLTAuMDAwMCAtMS4wMDAwIDAuMDAxNQp2biAtMC4wMDAwIC0wLjk5NTIgLTAuMDk4MAp2biAwLjAwMDAgMC45OTUyIC0wLjA5ODAKdm4gMC4wMDAwIDEuMDAwMCAwLjAwMTUKdm4gLTAuOTk2OSAwLjAwNzUgLTAuMDc4MQp2biAtMC45NzI0IDAuMDIyNyAtMC4yMzIzCnZuIC0wLjkyMzkgMC4wMzc0IC0wLjM4MDgKdm4gLTAuODUyNiAwLjA1MTIgLTAuNTIwMAp2biAtMC43NjA0IDAuMDYzNiAtMC42NDYzCnZuIC0wLjY0OTQgMC4wNzQ1IC0wLjc1NjgKdm4gLTAuNTIyNSAwLjA4MzYgLTAuODQ4NQp2biAtMC4zODI3IDAuMDkwNiAtMC45MTk0CnZuIC0wLjIzMzQgMC4wOTUzIC0wLjk2NzcKdm4gLTAuMDc4NSAwLjA5NzcgLTAuOTkyMQp2biAtMC45OTY5IDAuMDIzMCAtMC4wNzUwCnZuIC0wLjk3MjQgMC4wNjc5IC0wLjIyMzQKdm4gLTAuOTIzOSAwLjExMTIgLTAuMzY2MQp2biAtMC44NTI3IDAuMTUxNyAtMC41MDAwCnZuIC0wLjc2MDQgMC4xODg2IC0wLjYyMTUKdm4gLTAuNjQ5NCAwLjIyMDggLTAuNzI3Nwp2biAtMC41MjI1IDAuMjQ3NSAtMC44MTU5CnZuIC0wLjM4MjcgMC4yNjgyIC0wLjg4NDEKdm4gLTAuMjMzNCAwLjI4MjMgLTAuOTMwNQp2biAtMC4wNzg0IDAuMjg5NCAtMC45NTQwCnZuIC0wLjk5NjkgMC4wMzcwIC0wLjA2OTIKdm4gLTAuOTcyNCAwLjExMDEgLTAuMjA1OQp2biAtMC45MjM5IDAuMTgwNCAtMC4zMzc1CnZuIC0wLjg1MjcgMC4yNDYzIC0wLjQ2MDgKdm4gLTAuNzYwNCAwLjMwNjIgLTAuNTcyNwp2biAtMC42NDk1IDAuMzU4NCAtMC42NzA2CnZuIC0wLjUyMjUgMC40MDIwIC0wLjc1MTkKdm4gLTAuMzgyNyAwLjQzNTUgLTAuODE0OAp2biAtMC4yMzM0IDAuNDU4NCAtMC44NTc2CnZuIC0wLjA3ODUgMC40Njk5IC0wLjg3OTIKdm4gLTAuOTk2OSAwLjA0OTYgLTAuMDYwOAp2biAtMC45NzI0IDAuMTQ3OSAtMC4xODA2CnZuIC0wLjkyMzkgMC4yNDI2IC0wLjI5NTkKdm4gLTAuODUyNiAwLjMzMTQgLTAuNDA0MAp2biAtMC43NjA0IDAuNDExOSAtMC41MDIxCnZuIC0wLjY0OTQgMC40ODI0IC0wLjU4NzgKdm4gLTAuNTIyNSAwLjU0MDkgLTAuNjU5MQp2biAtMC4zODI3IDAuNTg2MSAtMC43MTQyCnZuIC0wLjIzMzQgMC42MTY5IC0wLjc1MTcKdm4gLTAuMDc4NSAwLjYzMjQgLTAuNzcwNgp2biAtMC45OTY5IDAuMDYwNyAtMC4wNDk2CnZuIC0wLjk3MjQgMC4xODA1IC0wLjE0ODAKdm4gLTAuOTIzOSAwLjI5NTkgLTAuMjQyNwp2biAtMC44NTI2IDAuNDA0MCAtMC4zMzE0CnZuIC0wLjc2MDQgMC41MDIwIC0wLjQxMjAKdm4gLTAuNjQ5NCAwLjU4NzggLTAuNDgyNAp2biAtMC41MjI0IDAuNjU5MSAtMC41NDA5CnZuIC0wLjM4MjcgMC43MTQxIC0wLjU4NjEKdm4gLTAuMjMzNCAwLjc1MTcgLTAuNjE2OQp2biAtMC4wNzg1IDAuNzcwNiAtMC42MzI0CnZuIC0wLjk5NjkgMC4wNjkyIC0wLjAzNjkKdm4gLTAuOTcyNCAwLjIwNTkgLTAuMTEwMAp2biAtMC45MjM5IDAuMzM3NSAtMC4xODA0CnZuIC0wLjg1MjYgMC40NjA4IC0wLjI0NjMKdm4gLTAuNzYwNCAwLjU3MjcgLTAuMzA2MQp2biAtMC42NDk0IDAuNjcwNyAtMC4zNTg0CnZuIC0wLjUyMjUgMC43NTIwIC0wLjQwMTkKdm4gLTAuMzgyNyAwLjgxNDggLTAuNDM1NQp2biAtMC4yMzM0IDAuODU3NiAtMC40NTg0CnZuIC0wLjA3ODUgMC44NzkyIC0wLjQ3MDAKdm4gLTAuOTk2OSAwLjA3NTAgLTAuMDIzMAp2biAtMC45NzI0IDAuMjIzMyAtMC4wNjc5CnZuIC0wLjkyMzkgMC4zNjYyIC0wLjExMTIKdm4gLTAuODUyNyAwLjQ5OTkgLTAuMTUxNwp2biAtMC43NjA0IDAuNjIxNSAtMC4xODg2CnZuIC0wLjY0OTUgMC43Mjc2IC0wLjIyMDgKdm4gLTAuNTIyNSAwLjgxNTkgLTAuMjQ3NQp2biAtMC4zODI3IDAuODg0MSAtMC4yNjgyCnZuIC0wLjIzMzUgMC45MzA1IC0wLjI4MjMKdm4gLTAuMDc4NSAwLjk1NDAgLTAuMjg5NAp2biAtMC45OTY5IDAuMDc4MSAtMC4wMDc2CnZuIC0wLjk3MjQgMC4yMzIzIC0wLjAyMjgKdm4gLTAuOTIzOSAwLjM4MDggLTAuMDM3NQp2biAtMC44NTI2IDAuNTIwMCAtMC4wNTEyCnZuIC0wLjc2MDQgMC42NDYzIC0wLjA2MzcKdm4gLTAuNjQ5NSAwLjc1NjcgLTAuMDc0NQp2biAtMC41MjI1IDAuODQ4NSAtMC4wODM2CnZuIC0wLjM4MjcgMC45MTk0IC0wLjA5MDYKdm4gLTAuMjMzNCAwLjk2NzcgLTAuMDk1Mwp2biAtMC4wNzg1IDAuOTkyMSAtMC4wOTc3CnZuIC0wLjk5NjkgMC4wNzg0IDAuMDAwMQp2biAtMC45NzI0IDAuMjMzNCAwLjAwMDQKdm4gLTAuOTIzOSAwLjM4MjYgMC4wMDA2CnZuIC0wLjg1MjcgMC41MjI1IDAuMDAwOAp2biAtMC43NjA0IDAuNjQ5NSAwLjAwMTAKdm4gLTAuNjQ5NCAwLjc2MDQgMC4wMDExCnZuIC0wLjUyMjUgMC44NTI2IDAuMDAxMwp2biAtMC4zODI3IDAuOTIzOSAwLjAwMTQKdm4gLTAuMjMzNSAwLjk3MjQgMC4wMDE1CnZuIC0wLjA3ODUgMC45OTY5IDAuMDAxNQp2biAtMC45OTY5IDAuMDc1MiAwLjAyMjYKdm4gLTAuOTcyNCAwLjIyMzQgMC4wNjc3CnZuIC0wLjkyMzkgMC4zNjYyIDAuMTExMAp2biAtMC44NTI2IDAuNTAwMCAwLjE1MTYKdm4gLTAuNzYwNCAwLjYyMTUgMC4xODg1CnZuIC0wLjY0OTQgMC43Mjc3IDAuMjIwNwp2biAtMC41MjI1IDAuODE1OSAwLjI0NzUKdm4gLTAuMzgyNyAwLjg4NDEgMC4yNjgyCnZuIC0wLjIzMzQgMC45MzA1IDAuMjgyMwp2biAtMC4wNzg1IDAuOTU0MCAwLjI4OTQKdm4gLTAuOTk2OSAwLjA2OTIgMC4wMzcxCnZuIC0wLjkyMzkgMC4zMzc1IDAuMTgwNAp2biAtMC44NTI2IDAuNDYwOCAwLjI0NjMKdm4gLTAuNzYwNCAwLjU3MjggMC4zMDYyCnZuIC0wLjY0OTQgMC42NzA2IDAuMzU4NAp2biAtMC41MjI1IDAuNzUyMCAwLjQwMTkKdm4gLTAuMzgyNyAwLjgxNDggMC40MzU1CnZuIC0wLjIzMzQgMC44NTc2IDAuNDU4NAp2biAtMC4wNzg0IDAuODc5MiAwLjQ2OTkKdm4gLTAuOTk2OSAwLjA2MDUgMC4wNDk5CnZuIC0wLjk3MjQgMC4xODAzIDAuMTQ4Mgp2biAtMC45MjM5IDAuMjk1NyAwLjI0MjgKdm4gLTAuODUyNiAwLjQwMzkgMC4zMzE1CnZuIC0wLjc2MDQgMC41MDIwIDAuNDEyMAp2biAtMC42NDk1IDAuNTg3OCAwLjQ4MjQKdm4gLTAuNTIyNSAwLjY1OTEgMC41NDA5CnZuIC0wLjM4MjcgMC43MTQyIDAuNTg2MQp2biAtMC4yMzM0IDAuNzUxNyAwLjYxNjkKdm4gLTAuMDc4NSAwLjc3MDYgMC42MzI0CnZuIC0wLjk5NjkgMC4wNTAwIDAuMDYwNQp2biAtMC45NzI0IDAuMTQ4MiAwLjE4MDMKdm4gLTAuOTIzOSAwLjI0MjggMC4yOTU3CnZuIC0wLjg1MjYgMC4zMzE1IDAuNDAzOQp2biAtMC43NjA0IDAuNDEyMCAwLjUwMjAKdm4gLTAuNjQ5NSAwLjQ4MjQgMC41ODc4CnZuIC0wLjUyMjUgMC41NDA5IDAuNjU5MQp2biAtMC4zODI3IDAuNTg2MSAwLjcxNDIKdm4gLTAuMjMzNCAwLjYxNjkgMC43NTE2CnZuIC0wLjA3ODUgMC42MzI0IDAuNzcwNgp2biAtMC45OTY5IDAuMDM3MCAwLjA2OTMKdm4gLTAuOTcyNCAwLjExMDAgMC4yMDU5CnZuIC0wLjkyMzkgMC4xODA0IDAuMzM3NQp2biAtMC44NTI2IDAuMjQ2MyAwLjQ2MDgKdm4gLTAuNzYwNCAwLjMwNjIgMC41NzI3CnZuIC0wLjY0OTUgMC4zNTg1IDAuNjcwNgp2biAtMC41MjI1IDAuNDAyMCAwLjc1MjAKdm4gLTAuMzgyNyAwLjQzNTUgMC44MTQ4CnZuIC0wLjIzMzQgMC40NTg0IDAuODU3Ngp2biAtMC4wNzg0IDAuNDcwMCAwLjg3OTIKdm4gLTAuOTk2OSAwLjAyMjYgMC4wNzUyCnZuIC0wLjk3MjQgMC4wNjc2IDAuMjIzNAp2biAtMC45MjM5IDAuMTExMCAwLjM2NjIKdm4gLTAuODUyNiAwLjE1MTYgMC41MDAwCnZuIC0wLjc2MDQgMC4xODg1IDAuNjIxNQp2biAtMC42NDk0IDAuMjIwNyAwLjcyNzcKdm4gLTAuNTIyNSAwLjI0NzUgMC44MTU5CnZuIC0wLjM4MjcgMC4yNjgyIDAuODg0MQp2biAtMC4yMzM0IDAuMjgyMiAwLjkzMDUKdm4gLTAuMDc4NSAwLjI4OTQgMC45NTQwCnZuIC0wLjk5NjkgMC4wMDc4IDAuMDc4MQp2biAtMC45NzI0IDAuMDIzMCAwLjIzMjMKdm4gLTAuOTIzOSAwLjAzNzYgMC4zODA4CnZuIC0wLjg1MjYgMC4wNTEzIDAuNTIwMAp2biAtMC43NjA0IDAuMDYzNyAwLjY0NjMKdm4gLTAuNjQ5NCAwLjA3NDYgMC43NTY4CnZuIC0wLjUyMjUgMC4wODM2IDAuODQ4NQp2biAtMC4zODI3IDAuMDkwNiAwLjkxOTQKdm4gLTAuMjMzNCAwLjA5NTMgMC45Njc3CnZuIC0wLjA3ODUgMC4wOTc3IDAuOTkyMQp2biAtMC45OTY5IC0wLjAwNzkgMC4wNzgwCnZuIC0wLjk3MjQgLTAuMDIzMCAwLjIzMjMKdm4gLTAuOTIzOSAtMC4wMzc2IDAuMzgwOAp2biAtMC44NTI2IC0wLjA1MTMgMC41MjAwCnZuIC0wLjc2MDQgLTAuMDYzNyAwLjY0NjMKdm4gLTAuNjQ5NCAtMC4wNzQ2IDAuNzU2OAp2biAtMC41MjI1IC0wLjA4MzYgMC44NDg1CnZuIC0wLjM4MjcgLTAuMDkwNSAwLjkxOTQKdm4gLTAuMjMzNCAtMC4wOTUzIDAuOTY3Nwp2biAtMC4wNzg1IC0wLjA5NzcgMC45OTIxCnZuIC0wLjk5NjkgLTAuMDIyNiAwLjA3NTEKdm4gLTAuOTcyNCAtMC4wNjc2IDAuMjIzNAp2biAtMC45MjM5IC0wLjExMTAgMC4zNjYyCnZuIC0wLjg1MjYgLTAuMTUxNiAwLjUwMDAKdm4gLTAuNzYwNCAtMC4xODg1IDAuNjIxNQp2biAtMC42NDk0IC0wLjIyMDcgMC43Mjc3CnZuIC0wLjUyMjUgLTAuMjQ3NSAwLjgxNTkKdm4gLTAuMzgyNyAtMC4yNjgyIDAuODg0MQp2biAtMC4yMzM0IC0wLjI4MjMgMC45MzA1CnZuIC0wLjA3ODUgLTAuMjg5NCAwLjk1NDAKdm4gLTAuOTk2OSAtMC4wMzcwIDAuMDY5Mgp2biAtMC45NzI0IC0wLjExMDEgMC4yMDU5CnZuIC0wLjkyMzkgLTAuMTgwNCAwLjMzNzUKdm4gLTAuODUyNiAtMC4yNDYzIDAuNDYwOAp2biAtMC43NjA0IC0wLjMwNjEgMC41NzI4CnZuIC0wLjY0OTQgLTAuMzU4NCAwLjY3MDYKdm4gLTAuNTIyNSAtMC40MDIwIDAuNzUxOQp2biAtMC4zODI3IC0wLjQzNTUgMC44MTQ4CnZuIC0wLjIzMzQgLTAuNDU4NCAwLjg1NzYKdm4gLTAuMDc4NSAtMC40Njk5IDAuODc5Mgp2biAtMC45OTY5IC0wLjA0OTkgMC4wNjA1CnZuIC0wLjk3MjQgLTAuMTQ4MiAwLjE4MDQKdm4gLTAuOTIzOSAtMC4yNDI4IDAuMjk1Nwp2biAtMC44NTI2IC0wLjMzMTUgMC40MDM5CnZuIC0wLjc2MDQgLTAuNDEyMCAwLjUwMjAKdm4gLTAuNjQ5NCAtMC40ODI0IDAuNTg3OAp2biAtMC41MjI1IC0wLjU0MDkgMC42NTkxCnZuIC0wLjM4MjcgLTAuNTg2MSAwLjcxNDIKdm4gLTAuMjMzNCAtMC42MTY5IDAuNzUxNwp2biAtMC4wNzg1IC0wLjYzMjQgMC43NzA2CnZuIC0wLjk5NjkgLTAuMDYwNSAwLjA0OTkKdm4gLTAuOTcyNCAtMC4xODA0IDAuMTQ4Mgp2biAtMC45MjM5IC0wLjI5NTcgMC4yNDI4CnZuIC0wLjg1MjYgLTAuNDAzOSAwLjMzMTUKdm4gLTAuNzYwNCAtMC41MDIwIDAuNDEyMQp2biAtMC42NDk1IC0wLjU4NzggMC40ODI0CnZuIC0wLjUyMjUgLTAuNjU5MSAwLjU0MDkKdm4gLTAuMzgyNyAtMC43MTQyIDAuNTg2MQp2biAtMC4yMzM0IC0wLjc1MTcgMC42MTY5CnZuIC0wLjA3ODUgLTAuNzcwNiAwLjYzMjUKdm4gLTAuOTk2OSAtMC4wNjkyIDAuMDM3MQp2biAtMC45NzI0IC0wLjIwNTggMC4xMTAxCnZuIC0wLjkyMzggLTAuMzM3NiAwLjE4MDQKdm4gLTAuODUyNiAtMC40NjA4IDAuMjQ2Mwp2biAtMC43NjA0IC0wLjU3MjcgMC4zMDYyCnZuIC0wLjY0OTQgLTAuNjcwNiAwLjM1ODUKdm4gLTAuNTIyNSAtMC43NTIwIDAuNDAxOQp2biAtMC4zODI3IC0wLjgxNDggMC40MzU1CnZuIC0wLjIzMzQgLTAuODU3NiAwLjQ1ODQKdm4gLTAuMDc4NCAtMC44NzkyIDAuNDY5OQp2biAtMC45OTY5IC0wLjA3NTIgMC4wMjI2CnZuIC0wLjk3MjQgLTAuMjIzNCAwLjA2NzYKdm4gLTAuOTIzOSAtMC4zNjYzIDAuMTExMAp2biAtMC44NTI3IC0wLjUwMDAgMC4xNTE2CnZuIC0wLjc2MDQgLTAuNjIxNSAwLjE4ODUKdm4gLTAuNjQ5NCAtMC43Mjc3IDAuMjIwNwp2biAtMC41MjI1IC0wLjgxNTkgMC4yNDc1CnZuIC0wLjM4MjcgLTAuODg0MSAwLjI2ODIKdm4gLTAuMjMzNSAtMC45MzA1IDAuMjgyMwp2biAtMC4wNzg1IC0wLjk1NDAgMC4yODk0CnZuIC0wLjk5NjkgLTAuMDc4NCAwLjAwMDEKdm4gLTAuOTcyNCAtMC4yMzM1IDAuMDAwNAp2biAtMC45MjM5IC0wLjM4MjYgMC4wMDA2CnZuIC0wLjg1MjcgLTAuNTIyNCAwLjAwMDgKdm4gLTAuNzYwNCAtMC42NDk1IDAuMDAxMAp2biAtMC42NDk0IC0wLjc2MDQgMC4wMDExCnZuIC0wLjUyMjUgLTAuODUyNiAwLjAwMTMKdm4gLTAuMzgyNyAtMC45MjM5IDAuMDAxNAp2biAtMC4yMzM1IC0wLjk3MjQgMC4wMDE1CnZuIC0wLjA3ODUgLTAuOTk2OSAwLjAwMTUKdm4gLTAuOTk2OSAtMC4wNzgxIC0wLjAwNzYKdm4gLTAuOTcyNCAtMC4yMzI0IC0wLjAyMjgKdm4gLTAuOTIzOSAtMC4zODA4IC0wLjAzNzUKdm4gLTAuODUyNiAtMC41MjAwIC0wLjA1MTIKdm4gLTAuNzYwNCAtMC42NDYzIC0wLjA2MzYKdm4gLTAuNjQ5NSAtMC43NTY3IC0wLjA3NDUKdm4gLTAuNTIyNSAtMC44NDg1IC0wLjA4MzYKdm4gLTAuMzgyNyAtMC45MTk0IC0wLjA5MDYKdm4gLTAuMjMzNSAtMC45Njc3IC0wLjA5NTMKdm4gLTAuMDc4NSAtMC45OTIxIC0wLjA5NzcKdm4gLTAuOTk2OSAtMC4wNzQ5IC0wLjAyMzIKdm4gLTAuOTcyNCAtMC4yMjMzIC0wLjA2ODAKdm4gLTAuOTIzOSAtMC4zNjYxIC0wLjExMTMKdm4gLTAuODUyNyAtMC40OTk5IC0wLjE1MTgKdm4gLTAuNzYwNCAtMC42MjE1IC0wLjE4ODYKdm4gLTAuNjQ5NCAtMC43Mjc3IC0wLjIyMDgKdm4gLTAuNTIyNSAtMC44MTU5IC0wLjI0NzUKdm4gLTAuMzgyNyAtMC44ODQxIC0wLjI2ODIKdm4gLTAuMjMzNCAtMC45MzA1IC0wLjI4MjMKdm4gLTAuMDc4NSAtMC45NTQwIC0wLjI4OTQKdm4gLTAuOTk2OSAtMC4wNjk1IC0wLjAzNjQKdm4gLTAuOTcyNCAtMC4yMDYxIC0wLjEwOTcKdm4gLTAuOTIzOSAtMC4zMzc2IC0wLjE4MDEKdm4gLTAuODUyNiAtMC40NjA5IC0wLjI0NjEKdm4gLTAuNzYwNCAtMC41NzI4IC0wLjMwNjAKdm4gLTAuNjQ5NSAtMC42NzA2IC0wLjM1ODQKdm4gLTAuNTIyNSAtMC43NTIwIC0wLjQwMTkKdm4gLTAuMzgyNyAtMC44MTQ4IC0wLjQzNTUKdm4gLTAuMjMzNCAtMC44NTc2IC0wLjQ1ODQKdm4gLTAuMDc4NSAtMC44NzkyIC0wLjQ2OTkKdm4gLTAuOTk2OSAtMC4wNjAzIC0wLjA1MDIKdm4gLTAuOTcyNCAtMC4xODAzIC0wLjE0ODQKdm4gLTAuOTIzOSAtMC4yOTU2IC0wLjI0MzAKdm4gLTAuODUyNiAtMC40MDM4IC0wLjMzMTYKdm4gLTAuNzYwNCAtMC41MDIwIC0wLjQxMjEKdm4gLTAuNjQ5NCAtMC41ODc4IC0wLjQ4MjUKdm4gLTAuNTIyNSAtMC42NTkxIC0wLjU0MTAKdm4gLTAuMzgyNyAtMC43MTQxIC0wLjU4NjEKdm4gLTAuMjMzNCAtMC43NTE2IC0wLjYxNjkKdm4gLTAuMDc4NSAtMC43NzA2IC0wLjYzMjUKdm4gLTAuOTk2OSAtMC4wNTAwIC0wLjA2MDUKdm4gLTAuOTcyNCAtMC4xNDgyIC0wLjE4MDMKdm4gLTAuOTIzOSAtMC4yNDI5IC0wLjI5NTcKdm4gLTAuODUyNiAtMC4zMzE2IC0wLjQwMzkKdm4gLTAuNzYwNCAtMC40MTIwIC0wLjUwMjAKdm4gLTAuNjQ5NSAtMC40ODI0IC0wLjU4NzgKdm4gLTAuNTIyNSAtMC41NDA5IC0wLjY1OTEKdm4gLTAuMzgyNyAtMC41ODYxIC0wLjcxNDIKdm4gLTAuMjMzNCAtMC42MTY5IC0wLjc1MTcKdm4gLTAuMDc4NSAtMC42MzI0IC0wLjc3MDYKdm4gLTAuOTk2OSAtMC4wMzcwIC0wLjA2OTIKdm4gLTAuOTcyNCAtMC4xMTAxIC0wLjIwNTkKdm4gLTAuOTIzOSAtMC4xODA0IC0wLjMzNzUKdm4gLTAuODUyNiAtMC4yNDYzIC0wLjQ2MDgKdm4gLTAuNzYwNCAtMC4zMDYxIC0wLjU3MjgKdm4gLTAuNjQ5NCAtMC4zNTg1IC0wLjY3MDYKdm4gLTAuNTIyNSAtMC40MDIwIC0wLjc1MjAKdm4gLTAuMzgyNyAtMC40MzU1IC0wLjgxNDgKdm4gLTAuMjMzNSAtMC40NTg0IC0wLjg1NzUKdm4gLTAuMDc4NSAtMC40NzAwIC0wLjg3OTIKdm4gLTAuOTk2OSAtMC4wMjI2IC0wLjA3NTEKdm4gLTAuOTcyNCAtMC4wNjc3IC0wLjIyMzQKdm4gLTAuOTIzOSAtMC4xMTEwIC0wLjM2NjIKdm4gLTAuODUyNyAtMC4xNTE2IC0wLjUwMDAKdm4gLTAuNzYwNCAtMC4xODg1IC0wLjYyMTUKdm4gLTAuNjQ5NCAtMC4yMjA3IC0wLjcyNzcKdm4gLTAuNTIyNSAtMC4yNDc1IC0wLjgxNTkKdm4gLTAuMzgyNyAtMC4yNjgyIC0wLjg4NDEKdm4gLTAuMjMzNSAtMC4yODIzIC0wLjkzMDUKdm4gLTAuMDc4NCAtMC4yODk0IC0wLjk1NDAKdm4gLTAuOTk2OSAtMC4wMDc3IC0wLjA3ODEKdm4gLTAuOTcyNCAtMC4wMjI5IC0wLjIzMjMKdm4gLTAuOTIzOSAtMC4wMzc1IC0wLjM4MDgKdm4gLTAuODUyNyAtMC4wNTEyIC0wLjUyMDAKdm4gLTAuNzYwNCAtMC4wNjM2IC0wLjY0NjMKdm4gLTAuNjQ5NCAtMC4wNzQ1IC0wLjc1NjgKdm4gLTAuNTIyNSAtMC4wODM2IC0wLjg0ODUKdm4gLTAuMzgyNiAtMC4wOTA2IC0wLjkxOTUKdm4gLTAuMjMzNCAtMC4wOTUzIC0wLjk2NzcKdm4gLTAuMDc4NCAtMC4wOTc3IC0wLjk5MjEKdm4gMC4wMDAwIDAuOTU1MiAwLjI5NTkKdm4gLTAuMDAwMCAtMC44Nzc4IDAuNDc5MAp2biAtMC4wMDAwIC0wLjk1NTIgMC4yOTU5CnZuIC0wLjAwMDAgLTAuOTk1MCAwLjEwMDEKdm4gLTAuMDAwMCAtMS4wMDAwIC0wLjAwMjUKdm4gMC4wMDAwIDEuMDAwMCAtMC4wMDI1CnZuIDAuMDAwMCAwLjk5NTAgMC4xMDAxCnZuIDAuMDAwMCAwLjk1NTIgLTAuMjk1OAp2biAwLjk5NjkgMC4wNzgxIDAuMDA3OAp2biAwLjk3MjQgMC4yMzIyIDAuMDIzMwp2biAwLjkyMzkgMC4zODA4IDAuMDM4Mwp2biAwLjg1MjYgMC41MTk5IDAuMDUyMwp2biAwLjc2MDQgMC42NDYyIDAuMDY1MAp2biAwLjY0OTUgMC43NTY2IDAuMDc2MQp2biAwLjUyMjUgMC44NDg0IDAuMDg1Mwp2biAwLjM4MjcgMC45MTkyIDAuMDkyNAp2biAwLjIzMzQgMC45Njc1IDAuMDk3Mwp2biAwLjA3ODUgMC45OTE5IDAuMDk5OAp2biAwLjk5NjkgMC4wNzUxIDAuMDIzMQp2biAwLjk3MjQgMC4yMjMxIDAuMDY5MAp2biAwLjkyMzkgMC4zNjU1IDAuMTEzMQp2biAwLjg1MjYgMC40OTkxIDAuMTU0Ngp2biAwLjc2MDQgMC42MjA0IDAuMTkyMQp2biAwLjY0OTQgMC43MjY0IDAuMjI1MAp2biAwLjUyMjUgMC44MTQ1IDAuMjUyMwp2biAwLjM4MjcgMC44ODI1IDAuMjczMwp2biAwLjIzMzQgMC45Mjg4IDAuMjg3Nwp2biAwLjA3ODQgMC45NTIzIDAuMjk0OQp2biAwLjk5NjkgMC4wNjg4IDAuMDM3OAp2biAwLjk3MjQgMC4yMDQ5IDAuMTEyMAp2biAwLjkyMzkgMC4zMzU5IDAuMTgzNAp2biAwLjg1MjYgMC40NTg2IDAuMjUwNAp2biAwLjc2MDQgMC41NzAxIDAuMzExMgp2biAwLjY0OTQgMC42Njc1IDAuMzY0Mwp2biAwLjUyMjUgMC43NDg0IDAuNDA4NQp2biAwLjM4MjcgMC44MTEwIDAuNDQyNgp2biAwLjIzMzUgMC44NTM1IDAuNDY1OAp2biAwLjA3ODQgMC44NzUxIDAuNDc3Ngp2biAwLjk5NjkgMC4wNjAxIDAuMDUwNAp2biAwLjk3MjQgMC4xNzg5IDAuMTQ5OQp2biAwLjkyMzkgMC4yOTMzIDAuMjQ1OAp2biAwLjg1MjcgMC40MDA1IDAuMzM1NQp2biAwLjc2MDQgMC40OTc4IDAuNDE3MQp2biAwLjY0OTUgMC41ODI5IDAuNDg4Mwp2biAwLjUyMjUgMC42NTM2IDAuNTQ3Ngp2biAwLjM4MjcgMC43MDgyIDAuNTkzNAp2biAwLjIzMzQgMC43NDUzIDAuNjI0NQp2biAwLjA3ODUgMC43NjQxIDAuNjQwMwp2biAwLjk5NjkgMC4wNDkyIDAuMDYxMQp2biAwLjk3MjQgMC4xNDYzIDAuMTgxOQp2biAwLjkyMzkgMC4yMzk4IDAuMjk4Mgp2biAwLjg1MjYgMC4zMjc0IDAuNDA3Mgp2biAwLjc2MDQgMC40MDY5IDAuNTA2Mgp2biAwLjY0OTQgMC40NzY0IDAuNTkyNwp2biAwLjUyMjUgMC41MzQyIDAuNjY0Ngp2biAwLjM4MjcgMC41Nzg4IDAuNzIwMQp2biAwLjIzMzQgMC42MDkyIDAuNzU3OQp2biAwLjA3ODUgMC42MjQ2IDAuNzc3MAp2biAwLjk5NjkgMC4wMzYxIDAuMDY5Ngp2biAwLjk3MjQgMC4xMDgxIDAuMjA2OQp2biAwLjkyMzkgMC4xNzczIDAuMzM5MQp2biAwLjg1MjYgMC4yNDIyIDAuNDYzMAp2biAwLjc2MDQgMC4zMDEyIDAuNTc1NAp2biAwLjY0OTQgMC4zNTI2IDAuNjczNwp2biAwLjUyMjUgMC4zOTU1IDAuNzU1NAp2biAwLjM4MjcgMC40Mjg1IDAuODE4NQp2biAwLjIzMzQgMC40NTEwIDAuODYxNQp2biAwLjA3ODUgMC40NjI0IDAuODgzMgp2biAwLjk5NjkgMC4wMjI2IDAuMDc1MQp2biAwLjk3MjQgMC4wNjY2IDAuMjIzNwp2biAwLjkyMzkgMC4xMDkxIDAuMzY2OAp2biAwLjg1MjYgMC4xNDg5IDAuNTAwOAp2biAwLjc2MDQgMC4xODUwIDAuNjIyNQp2biAwLjY0OTUgMC4yMTY2IDAuNzI4OQp2biAwLjUyMjUgMC4yNDI4IDAuODE3Mwp2biAwLjM4MjYgMC4yNjMxIDAuODg1Ngp2biAwLjIzMzUgMC4yNzY5IDAuOTMyMQp2biAwLjA3ODUgMC4yODM5IDAuOTU1Ngp2biAwLjk5NjkgMC4wMDc1IDAuMDc4MQp2biAwLjk3MjQgMC4wMjI0IDAuMjMyNAp2biAwLjkyMzkgMC4wMzY4IDAuMzgwOQp2biAwLjg1MjYgMC4wNTAyIDAuNTIwMQp2biAwLjc2MDQgMC4wNjI0IDAuNjQ2NQp2biAwLjY0OTUgMC4wNzMwIDAuNzU2OQp2biAwLjUyMjUgMC4wODE5IDAuODQ4Nwp2biAwLjM4MjcgMC4wODg3IDAuOTE5Ngp2biAwLjIzMzUgMC4wOTM0IDAuOTY3OQp2biAwLjA3ODUgMC4wOTU3IDAuOTkyMwp2biAwLjk5NjkgLTAuMDA3NSAwLjA3ODEKdm4gMC45NzI0IC0wLjAyMjQgMC4yMzI0CnZuIDAuOTIzOSAtMC4wMzY3IDAuMzgwOQp2biAwLjg1MjYgLTAuMDUwMiAwLjUyMDEKdm4gMC43NjA0IC0wLjA2MjMgMC42NDY0CnZuIDAuNjQ5NSAtMC4wNzMwIDAuNzU2OQp2biAwLjUyMjUgLTAuMDgxOSAwLjg0ODcKdm4gMC4zODI3IC0wLjA4ODcgMC45MTk2CnZuIDAuMjMzNCAtMC4wOTM0IDAuOTY3OQp2biAwLjA3ODQgLTAuMDk1NyAwLjk5MjMKdm4gMC45OTY5IC0wLjAyMjMgMC4wNzUzCnZuIDAuOTcyNCAtMC4wNjY0IDAuMjIzOAp2biAwLjkyMzkgLTAuMTA5MCAwLjM2NjgKdm4gMC44NTI2IC0wLjE0ODggMC41MDA5CnZuIDAuNzYwNCAtMC4xODUwIDAuNjIyNgp2biAwLjY0OTQgLTAuMjE2NiAwLjcyODkKdm4gMC41MjI1IC0wLjI0MjggMC44MTczCnZuIDAuMzgyNiAtMC4yNjMxIDAuODg1Ngp2biAwLjIzMzQgLTAuMjc2OSAwLjkzMjEKdm4gMC4wNzg1IC0wLjI4MzkgMC45NTU2CnZuIDAuOTk2OSAtMC4wMzY2IDAuMDY5NAp2biAwLjk3MjQgLTAuMTA4NCAwLjIwNjgKdm4gMC45MjM5IC0wLjE3NzUgMC4zMzkwCnZuIDAuODUyNiAtMC4yNDI0IDAuNDYyOQp2biAwLjc2MDQgLTAuMzAxMiAwLjU3NTQKdm4gMC42NDk1IC0wLjM1MjcgMC42NzM3CnZuIDAuNTIyNSAtMC4zOTU1IDAuNzU1NAp2biAwLjM4MjcgLTAuNDI4NSAwLjgxODUKdm4gMC4yMzM0IC0wLjQ1MTAgMC44NjE1CnZuIDAuMDc4NCAtMC40NjI0IDAuODgzMgp2biAwLjk5NjkgLTAuMDQ5MSAwLjA2MTIKdm4gMC45NzI0IC0wLjE0NjIgMC4xODIwCnZuIDAuOTIzOSAtMC4yMzk3IDAuMjk4Mgp2biAwLjg1MjcgLTAuMzI3MyAwLjQwNzIKdm4gMC43NjA0IC0wLjQwNjkgMC41MDYyCnZuIDAuNjQ5NSAtMC40NzY0IDAuNTkyNwp2biAwLjUyMjUgLTAuNTM0MiAwLjY2NDUKdm4gMC4zODI3IC0wLjU3ODggMC43MjAxCnZuIDAuMjMzNSAtMC42MDkyIDAuNzU3OQp2biAwLjA3ODQgLTAuNjI0NiAwLjc3NzAKdm4gMC45OTY5IC0wLjA2MDEgMC4wNTA0CnZuIDAuOTcyNCAtMC4xNzkwIDAuMTQ5OQp2biAwLjkyMzkgLTAuMjkzMyAwLjI0NTgKdm4gMC44NTI2IC0wLjQwMDUgMC4zMzU2CnZuIDAuNzYwNCAtMC40OTc4IDAuNDE3MQp2biAwLjY0OTQgLTAuNTgyOSAwLjQ4ODQKdm4gMC41MjI2IC0wLjY1MzUgMC41NDc2CnZuIDAuMzgyNiAtMC43MDgyIDAuNTkzNAp2biAwLjIzMzQgLTAuNzQ1MyAwLjYyNDUKdm4gMC4wNzg1IC0wLjc2NDEgMC42NDAzCnZuIDAuOTk2OSAtMC4wNjg3IDAuMDM3OAp2biAwLjk3MjQgLTAuMjA0OCAwLjExMjAKdm4gMC45MjM5IC0wLjMzNTggMC4xODM0CnZuIDAuODUyNiAtMC40NTg2IDAuMjUwNAp2biAwLjc2MDQgLTAuNTcwMCAwLjMxMTIKdm4gMC42NDk0IC0wLjY2NzUgMC4zNjQzCnZuIDAuNTIyNSAtMC43NDg1IDAuNDA4NAp2biAwLjM4MjcgLTAuODExMCAwLjQ0MjYKdm4gMC4yMzM0IC0wLjg1MzYgMC40NjU4CnZuIDAuMDc4NSAtMC44NzUxIDAuNDc3Ngp2biAwLjk5NjkgLTAuMDc1MSAwLjAyMjgKdm4gMC45NzI0IC0wLjIyMzEgMC4wNjg4CnZuIDAuOTIzOSAtMC4zNjU2IDAuMTEzMAp2biAwLjg1MjYgLTAuNDk5MiAwLjE1NDQKdm4gMC43NjA0IC0wLjYyMDQgMC4xOTIxCnZuIDAuNjQ5NCAtMC43MjY0IDAuMjI0OQp2biAwLjUyMjUgLTAuODE0NSAwLjI1MjIKdm4gMC4zODI3IC0wLjg4MjUgMC4yNzMzCnZuIDAuMjMzNSAtMC45Mjg4IDAuMjg3Nwp2biAwLjA3ODUgLTAuOTUyMyAwLjI5NDkKdm4gMC45OTY5IC0wLjA3ODAgMC4wMDgwCnZuIDAuOTcyNCAtMC4yMzIyIDAuMDIzNQp2biAwLjkyMzkgLTAuMzgwNyAwLjAzODQKdm4gMC44NTI2IC0wLjUxOTkgMC4wNTIzCnZuIDAuNzYwNCAtMC42NDYyIDAuMDY1MAp2biAwLjY0OTUgLTAuNzU2NiAwLjA3NjEKdm4gMC41MjI1IC0wLjg0ODQgMC4wODUzCnZuIDAuMzgyNyAtMC45MTkyIDAuMDkyNQp2biAwLjIzMzUgLTAuOTY3NSAwLjA5NzMKdm4gMC4wNzg1IC0wLjk5MTkgMC4wOTk3CnZuIDAuOTk2OSAtMC4wNzg1IC0wLjAwMDIKdm4gMC45NzI0IC0wLjIzMzUgLTAuMDAwNgp2biAwLjkyMzkgLTAuMzgyNiAtMC4wMDEwCnZuIDAuODUyNiAtMC41MjI1IC0wLjAwMTMKdm4gMC43NjA0IC0wLjY0OTQgLTAuMDAxNgp2biAwLjY0OTQgLTAuNzYwNCAtMC4wMDE5CnZuIDAuNTIyNSAtMC44NTI2IC0wLjAwMjIKdm4gMC4zODI3IC0wLjkyMzkgLTAuMDAyMwp2biAwLjIzMzUgLTAuOTcyNCAtMC4wMDI1CnZuIDAuMDc4NSAtMC45OTY5IC0wLjAwMjUKdm4gMC45OTY5IC0wLjA3NDkgLTAuMDIzNgp2biAwLjk3MjQgLTAuMjIyOSAtMC4wNjkzCnZuIDAuOTIzOSAtMC4zNjU1IC0wLjExMzMKdm4gMC44NTI2IC0wLjQ5OTEgLTAuMTU0Nwp2biAwLjc2MDQgLTAuNjIwMyAtMC4xOTIyCnZuIDAuNjQ5NCAtMC43MjY0IC0wLjIyNTAKdm4gMC41MjI1IC0wLjgxNDUgLTAuMjUyMwp2biAwLjM4MjcgLTAuODgyNSAtMC4yNzMzCnZuIDAuMjMzNCAtMC45Mjg4IC0wLjI4NzcKdm4gMC4wNzg0IC0wLjk1MjMgLTAuMjk0OQp2biAwLjk5NjkgLTAuMDY5MSAtMC4wMzcxCnZuIDAuOTcyNCAtMC4yMDUwIC0wLjExMTUKdm4gMC45MjM5IC0wLjMzNjEgLTAuMTgzMQp2biAwLjg1MjYgLTAuNDU4OCAtMC4yNTAyCnZuIDAuNzYwNCAtMC41NzAxIC0wLjMxMTAKdm4gMC42NDk0IC0wLjY2NzUgLTAuMzY0Mgp2biAwLjUyMjUgLTAuNzQ4NCAtMC40MDg0CnZuIDAuMzgyNyAtMC44MTEwIC0wLjQ0MjYKdm4gMC4yMzM1IC0wLjg1MzUgLTAuNDY1OAp2biAwLjA3ODUgLTAuODc1MSAtMC40Nzc2CnZuIDAuOTk2OSAtMC4wNTk4IC0wLjA1MDgKdm4gMC45NzI0IC0wLjE3ODcgLTAuMTUwMgp2biAwLjkyMzkgLTAuMjkzMiAtMC4yNDYwCnZuIDAuODUyNiAtMC40MDA0IC0wLjMzNTcKdm4gMC43NjA0IC0wLjQ5NzcgLTAuNDE3Mgp2biAwLjY0OTQgLTAuNTgyOCAtMC40ODg0CnZuIDAuNTIyNSAtMC42NTM1IC0wLjU0NzYKdm4gMC4zODI3IC0wLjcwODIgLTAuNTkzNAp2biAwLjIzMzUgLTAuNzQ1MyAtMC42MjQ1CnZuIDAuMDc4NCAtMC43NjQxIC0wLjY0MDMKdm4gMC45OTY5IC0wLjA0OTMgLTAuMDYxMQp2biAwLjk3MjQgLTAuMTQ2MyAtMC4xODE4CnZuIDAuOTIzOSAtMC4yMzk4IC0wLjI5ODIKdm4gMC44NTI3IC0wLjMyNzQgLTAuNDA3Mgp2biAwLjc2MDQgLTAuNDA2OSAtMC41MDYyCnZuIDAuNjQ5NSAtMC40NzY0IC0wLjU5MjYKdm4gMC41MjI1IC0wLjUzNDIgLTAuNjY0Ngp2biAwLjM4MjcgLTAuNTc4OCAtMC43MjAxCnZuIDAuMjMzNSAtMC42MDkyIC0wLjc1NzkKdm4gMC4wNzg0IC0wLjYyNDYgLTAuNzc3MAp2biAwLjk5NjkgLTAuMDM2NiAtMC4wNjk0CnZuIDAuOTcyNCAtMC4xMDg1IC0wLjIwNjcKdm4gMC45MjM5IC0wLjE3NzcgLTAuMzM5MAp2biAwLjg1MjYgLTAuMjQyNCAtMC40NjI5CnZuIDAuNzYwNCAtMC4zMDEzIC0wLjU3NTQKdm4gMC42NDk0IC0wLjM1MjcgLTAuNjczNwp2biAwLjUyMjUgLTAuMzk1NSAtMC43NTU0CnZuIDAuMzgyNyAtMC40Mjg1IC0wLjgxODUKdm4gMC4yMzM0IC0wLjQ1MTAgLTAuODYxNQp2biAwLjA3ODQgLTAuNDYyNCAtMC44ODMyCnZuIDAuOTk2OSAtMC4wMjIxIC0wLjA3NTMKdm4gMC45NzI0IC0wLjA2NjMgLTAuMjIzOAp2biAwLjkyMzkgLTAuMTA4OSAtMC4zNjY5CnZuIDAuODUyNyAtMC4xNDg3IC0wLjUwMDkKdm4gMC43NjA0IC0wLjE4NDkgLTAuNjIyNgp2biAwLjY0OTQgLTAuMjE2NSAtMC43Mjg5CnZuIDAuNTIyNSAtMC4yNDI4IC0wLjgxNzMKdm4gMC4zODI3IC0wLjI2MzEgLTAuODg1Ngp2biAwLjIzMzQgLTAuMjc2OSAtMC45MzIxCnZuIDAuMDc4NCAtMC4yODM5IC0wLjk1NTYKdm4gMC45OTY5IC0wLjAwNzUgLTAuMDc4MQp2biAwLjk3MjQgLTAuMDIyNCAtMC4yMzIzCnZuIDAuOTIzOSAtMC4wMzY3IC0wLjM4MDkKdm4gMC44NTI2IC0wLjA1MDIgLTAuNTIwMQp2biAwLjc2MDQgLTAuMDYyNCAtMC42NDY0CnZuIDAuNjQ5NSAtMC4wNzMwIC0wLjc1NjkKdm4gMC41MjI1IC0wLjA4MTkgLTAuODQ4Nwp2biAwLjM4MjcgLTAuMDg4NyAtMC45MTk2CnZuIDAuMjMzNCAtMC4wOTM0IC0wLjk2NzkKdm4gMC4wNzg0IC0wLjA5NTcgLTAuOTkyMwp2biAwLjk5NjkgMC4wMDc1IC0wLjA3ODEKdm4gMC45NzI0IDAuMDIyNCAtMC4yMzIzCnZuIDAuOTIzOSAwLjAzNjcgLTAuMzgwOQp2biAwLjg1MjcgMC4wNTAyIC0wLjUyMDEKdm4gMC43NjA0IDAuMDYyNCAtMC42NDY1CnZuIDAuNjQ5NSAwLjA3MzAgLTAuNzU2OQp2biAwLjUyMjUgMC4wODE5IC0wLjg0ODcKdm4gMC4zODI3IDAuMDg4NyAtMC45MTk2CnZuIDAuMjMzNCAwLjA5MzQgLTAuOTY3OQp2biAwLjA3ODUgMC4wOTU3IC0wLjk5MjMKdm4gMC45OTY5IDAuMDIyNCAtMC4wNzUyCnZuIDAuOTcyNCAwLjA2NjUgLTAuMjIzNwp2biAwLjkyMzkgMC4xMDkwIC0wLjM2NjkKdm4gMC44NTI3IDAuMTQ4OCAtMC41MDA4CnZuIDAuNzYwNCAwLjE4NTAgLTAuNjIyNgp2biAwLjY0OTUgMC4yMTY2IC0wLjcyODkKdm4gMC41MjI1IDAuMjQyOCAtMC44MTczCnZuIDAuMzgyNyAwLjI2MzEgLTAuODg1Ngp2biAwLjIzMzQgMC4yNzY5IC0wLjkzMjEKdm4gMC4wNzg1IDAuMjgzOSAtMC45NTU2CnZuIDAuOTk2OSAwLjAzNjEgLTAuMDY5Ngp2biAwLjk3MjQgMC4xMDgxIC0wLjIwNjkKdm4gMC45MjM5IDAuMTc3NCAtMC4zMzkxCnZuIDAuODUyNiAwLjI0MjMgLTAuNDYyOQp2biAwLjc2MDQgMC4zMDEyIC0wLjU3NTQKdm4gMC42NDk0IDAuMzUyNiAtMC42NzM3CnZuIDAuNTIyNSAwLjM5NTQgLTAuNzU1NAp2biAwLjM4MjcgMC40Mjg1IC0wLjgxODUKdm4gMC4yMzM0IDAuNDUxMCAtMC44NjE1CnZuIDAuMDc4NCAwLjQ2MjQgLTAuODgzMgp2biAwLjk5NjkgMC4wNDkzIC0wLjA2MTEKdm4gMC45NzI0IDAuMTQ2NCAtMC4xODE5CnZuIDAuOTIzOSAwLjIzOTggLTAuMjk4Mwp2biAwLjg1MjYgMC4zMjc0IC0wLjQwNzIKdm4gMC43NjA0IDAuNDA2OSAtMC41MDYyCnZuIDAuNjQ5NCAwLjQ3NjQgLTAuNTkyNwp2biAwLjUyMjUgMC41MzQyIC0wLjY2NDYKdm4gMC4zODI3IDAuNTc4OCAtMC43MjAxCnZuIDAuMjMzNCAwLjYwOTIgLTAuNzU3OQp2biAwLjA3ODUgMC42MjQ2IC0wLjc3NzAKdm4gMC45OTY5IDAuMDYwMiAtMC4wNTA0CnZuIDAuOTcyNCAwLjE3ODkgLTAuMTQ5OQp2biAwLjkyMzkgMC4yOTMzIC0wLjI0NTgKdm4gMC44NTI2IDAuNDAwNSAtMC4zMzU2CnZuIDAuNzYwNCAwLjQ5NzggLTAuNDE3MQp2biAwLjY0OTQgMC41ODI5IC0wLjQ4ODQKdm4gMC41MjI1IDAuNjUzNiAtMC41NDc2CnZuIDAuMzgyNyAwLjcwODIgLTAuNTkzMwp2biAwLjIzMzQgMC43NDUzIC0wLjYyNDUKdm4gMC4wNzg1IDAuNzY0MSAtMC42NDAzCnZuIDAuOTk2OSAwLjA2OTAgLTAuMDM3NAp2biAwLjk3MjQgMC4yMDQ5IC0wLjExMTcKdm4gMC45MjM5IDAuMzM1OSAtMC4xODMyCnZuIDAuODUyNyAwLjQ1ODcgLTAuMjUwMgp2biAwLjc2MDQgMC41NzAxIC0wLjMxMTEKdm4gMC42NDk0IDAuNjY3NSAtMC4zNjQzCnZuIDAuNTIyNSAwLjc0ODQgLTAuNDA4NAp2biAwLjM4MjcgMC44MTEwIC0wLjQ0MjYKdm4gMC4yMzM0IDAuODUzNSAtMC40NjU4CnZuIDAuMDc4NSAwLjg3NTEgLTAuNDc3Ngp2biAwLjk5NjkgMC4wNzQ5IC0wLjAyMzUKdm4gMC45NzI0IDAuMjIyOSAtMC4wNjkzCnZuIDAuOTIzOSAwLjM2NTUgLTAuMTEzMwp2biAwLjg1MjcgMC40OTkxIC0wLjE1NDcKdm4gMC43NjA0IDAuNjIwNCAtMC4xOTIyCnZuIDAuNjQ5NSAwLjcyNjMgLTAuMjI1MAp2biAwLjUyMjUgMC44MTQ1IC0wLjI1MjIKdm4gMC4zODI3IDAuODgyNSAtMC4yNzMzCnZuIDAuMjMzNSAwLjkyODggLTAuMjg3Nwp2biAwLjA3ODUgMC45NTIzIC0wLjI5NDkKdm4gMC45OTY5IDAuMDc4NSAtMC4wMDAyCnZuIDAuOTcyNCAwLjIzMzQgLTAuMDAwNgp2biAwLjkyMzkgMC4zODI3IC0wLjAwMTAKdm4gMC44NTI2IDAuNTIyNSAtMC4wMDEzCnZuIDAuNzYwNCAwLjY0OTUgLTAuMDAxNgp2biAwLjY0OTUgMC43NjA0IC0wLjAwMTkKdm4gMC41MjI1IDAuODUyNiAtMC4wMDIyCnZuIDAuMzgyNyAwLjkyMzkgLTAuMDAyMwp2biAwLjIzMzQgMC45NzI0IC0wLjAwMjUKdm4gMC4wNzg1IDAuOTk2OSAtMC4wMDI1CnZuIDAuOTcyNCAwLjIzMjMgMC4wMjMzCnZuIDAuNjQ5NCAwLjc1NjYgMC4wNzYxCnZuIDAuOTk2OSAwLjA3NTAgMC4wMjMxCnZuIDAuOTIzOSAwLjM2NTYgMC4xMTMyCnZuIDAuODUyNiAwLjQ5OTEgMC4xNTQ1CnZuIDAuNTIyNSAwLjgxNDUgMC4yNTIyCnZuIDAuMDc4NSAwLjk1MjMgMC4yOTQ5CnZuIDAuOTk2OSAwLjA2ODcgMC4wMzc4CnZuIDAuOTcyNCAwLjIwNDggMC4xMTIwCnZuIDAuNTIyNSAwLjc0ODUgMC40MDg0CnZuIDAuMjMzNCAwLjg1MzUgMC40NjU4CnZuIDAuMDc4NSAwLjg3NTEgMC40Nzc2CnZuIDAuOTk2OSAwLjA2MDIgMC4wNTA0CnZuIDAuODUyNyAwLjQwMDUgMC4zMzU2CnZuIDAuNjQ5NSAwLjU4MjggMC40ODg0CnZuIDAuMDc4NCAwLjc2NDEgMC42NDAzCnZuIDAuODUyNyAwLjMyNzQgMC40MDcyCnZuIDAuNjQ5NSAwLjQ3NjQgMC41OTI3CnZuIDAuMjMzNSAwLjYwOTIgMC43NTc5CnZuIDAuMDc4NCAwLjYyNDYgMC43NzcwCnZuIDAuODUyNiAwLjI0MjIgMC40NjI5CnZuIDAuNjQ5NCAwLjM1MjcgMC42NzM3CnZuIDAuODUyNyAwLjE0ODkgMC41MDA4CnZuIDAuNjQ5NCAwLjIxNjYgMC43Mjg5CnZuIDAuMzgyNyAwLjI2MzEgMC44ODU2CnZuIDAuMjMzNCAwLjI3NjkgMC45MzIxCnZuIDAuOTk2OSAwLjAwNzYgMC4wNzgxCnZuIDAuODUyNyAwLjA1MDEgMC41MjAxCnZuIDAuNjQ5NCAwLjA3MzAgMC43NTY5CnZuIDAuMDc4NCAwLjA5NTcgMC45OTIzCnZuIDAuOTIzOSAtMC4wMzY4IDAuMzgwOQp2biAwLjg1MjcgLTAuMDUwMiAwLjUyMDAKdm4gMC43NjA0IC0wLjA2MjMgMC42NDY1CnZuIDAuNjQ5NCAtMC4wNzMwIDAuNzU2OQp2biAwLjIzMzUgLTAuMDkzNCAwLjk2NzkKdm4gMC45OTY5IC0wLjAyMjMgMC4wNzUyCnZuIDAuOTcyNCAtMC4wNjY1IDAuMjIzOAp2biAwLjkyMzkgLTAuMTA5MCAwLjM2NjkKdm4gMC44NTI3IC0wLjE0ODggMC41MDA4CnZuIDAuNjQ5NSAtMC4yMTY2IDAuNzI4OQp2biAwLjM4MjcgLTAuMjYzMSAwLjg4NTYKdm4gMC45NzI0IC0wLjEwODQgMC4yMDY3CnZuIDAuOTIzOSAtMC4xNzc2IDAuMzM5MAp2biAwLjg1MjcgLTAuMjQyNCAwLjQ2MjgKdm4gMC43NjA0IC0wLjMwMTMgMC41NzU0CnZuIDAuMjMzNCAtMC40NTEwIDAuODYxNAp2biAwLjA3ODUgLTAuNDYyNCAwLjg4MzIKdm4gMC45MjM5IC0wLjIzOTcgMC4yOTgzCnZuIDAuNTIyNSAtMC41MzQyIDAuNjY0Ngp2biAwLjA3ODUgLTAuNjI0NiAwLjc3NzAKdm4gMC45NzI0IC0wLjE3ODkgMC4xNDk5CnZuIDAuNjQ5NSAtMC41ODI4IDAuNDg4NAp2biAwLjUyMjUgLTAuNjUzNSAwLjU0NzYKdm4gMC4zODI3IC0wLjcwODEgMC41OTM0CnZuIDAuMjMzNSAtMC43NDUzIDAuNjI0NQp2biAwLjk5NjkgLTAuMDY4OCAwLjAzNzgKdm4gMC45NzI0IC0wLjIwNDkgMC4xMTIwCnZuIDAuOTIzOSAtMC4zMzU5IDAuMTgzNAp2biAwLjc2MDQgLTAuNTcwMSAwLjMxMTIKdm4gMC42NDk1IC0wLjY2NzUgMC4zNjQzCnZuIDAuNTIyNSAtMC43NDg1IDAuNDA4NQp2biAwLjIzMzQgLTAuODUzNSAwLjQ2NTgKdm4gMC4wNzg1IC0wLjg3NTEgMC40Nzc1CnZuIDAuODUyNyAtMC40OTkxIDAuMTU0NQp2biAwLjIzMzQgLTAuOTI4OCAwLjI4NzcKdm4gMC45MjM5IC0wLjM4MDggMC4wMzgzCnZuIDAuODUyNyAtMC41MTk4IDAuMDUyMwp2biAwLjY0OTQgLTAuNzU2NiAwLjA3NjEKdm4gMC41MjI1IC0wLjg0ODMgMC4wODUzCnZuIDAuMzgyNyAtMC45MTkyIDAuMDkyNAp2biAwLjIzMzQgLTAuOTY3NSAwLjA5NzMKdm4gMC45OTY5IC0wLjA3ODQgLTAuMDAwMgp2biAwLjkyMzkgLTAuMzgyNyAtMC4wMDEwCnZuIDAuODUyNyAtMC41MjI1IC0wLjAwMTMKdm4gMC43NjA0IC0wLjY0OTUgLTAuMDAxNgp2biAwLjY0OTUgLTAuNzYwNCAtMC4wMDE5CnZuIDAuOTk2OSAtMC4wNzQ4IC0wLjAyMzYKdm4gMC45MjM5IC0wLjM2NTUgLTAuMTEzNAp2biAwLjg1MjcgLTAuNDk5MCAtMC4xNTQ3CnZuIDAuNzYwNCAtMC42MjA0IC0wLjE5MjIKdm4gMC42NDk1IC0wLjcyNjMgLTAuMjI1MAp2biAwLjM4MjYgLTAuODgyNSAtMC4yNzMzCnZuIDAuMDc4NSAtMC45NTIzIC0wLjI5NTAKdm4gMC45NzI0IC0wLjIwNTEgLTAuMTExNQp2biAwLjkyMzkgLTAuMzM2MCAtMC4xODMxCnZuIDAuODUyNiAtMC40NTg3IC0wLjI1MDIKdm4gMC4yMzM0IC0wLjg1MzYgLTAuNDY1OAp2biAwLjA3ODQgLTAuODc1MSAtMC40Nzc2CnZuIDAuNzYwNCAtMC40OTc4IC0wLjQxNzIKdm4gMC41MjI1IC0wLjY1MzYgLTAuNTQ3Ngp2biAwLjM4MjYgLTAuNzA4MiAtMC41OTM0CnZuIDAuMDc4NSAtMC43NjQxIC0wLjY0MDMKdm4gMC45OTY5IC0wLjA0OTIgLTAuMDYxMAp2biAwLjk3MjQgLTAuMTQ2MyAtMC4xODE5CnZuIDAuODUyNyAtMC4zMjczIC0wLjQwNzIKdm4gMC42NDk1IC0wLjQ3NjQgLTAuNTkyNwp2biAwLjk5NjkgLTAuMDM2NyAtMC4wNjk0CnZuIDAuOTcyNCAtMC4xMDg0IC0wLjIwNjcKdm4gMC45MjM5IC0wLjE3NzYgLTAuMzM5MAp2biAwLjg1MjcgLTAuMjQyNCAtMC40NjI4CnZuIDAuNzYwNCAtMC4zMDEzIC0wLjU3NTMKdm4gMC45OTY5IC0wLjAyMTkgLTAuMDc1Mwp2biAwLjk3MjQgLTAuMDY2MiAtMC4yMjM5CnZuIDAuOTIzOSAtMC4xMDg4IC0wLjM2NjkKdm4gMC44NTI2IC0wLjE0ODcgLTAuNTAwOQp2biAwLjc2MDQgLTAuMTg0OSAtMC42MjI1CnZuIDAuMDc4NSAtMC4yODM5IC0wLjk1NTYKdm4gMC45OTY5IC0wLjAwODMgLTAuMDc4MAp2biAwLjk3MjQgLTAuMDIyOSAtMC4yMzIzCnZuIDAuOTIzOSAtMC4wMzcxIC0wLjM4MDkKdm4gMC44NTI2IC0wLjA1MDQgLTAuNTIwMQp2biAwLjc2MDQgLTAuMDYyNSAtMC42NDY0CnZuIDAuNjQ5NCAtMC4wNzMxIC0wLjc1NjkKdm4gMC4wNzg1IC0wLjA5NTcgLTAuOTkyMwp2biAwLjk5NjkgMC4wMDgzIC0wLjA3ODAKdm4gMC45NzI0IDAuMDIzMCAtMC4yMzIzCnZuIDAuOTIzOSAwLjAzNzEgLTAuMzgwOQp2biAwLjg1MjYgMC4wNTA0IC0wLjUyMDEKdm4gMC43NjA0IDAuMDYyNSAtMC42NDY0CnZuIDAuNjQ5NCAwLjA3MzEgLTAuNzU2OQp2biAwLjIzMzUgMC4wOTM0IC0wLjk2NzkKdm4gMC4wNzg0IDAuMDk1NyAtMC45OTIzCnZuIDAuOTk2OSAwLjAyMjEgLTAuMDc1Mgp2biAwLjk3MjQgMC4wNjYzIC0wLjIyMzgKdm4gMC45MjM5IDAuMTA4OSAtMC4zNjY4CnZuIDAuNzYwNCAwLjE4NDkgLTAuNjIyNQp2biAwLjY0OTQgMC4yMTY2IC0wLjcyODkKdm4gMC4yMzM1IDAuMjc3MCAtMC45MzIxCnZuIDAuMDc4NCAwLjI4MzkgLTAuOTU1Ngp2biAwLjk5NjkgMC4wMzYyIC0wLjA2OTYKdm4gMC44NTI3IDAuMjQyMiAtMC40NjI5CnZuIDAuMjMzNSAwLjQ1MTAgLTAuODYxNQp2biAwLjk3MjQgMC4xNDYzIC0wLjE4MTkKdm4gMC4wNzg0IDAuNjI0NiAtMC43NzcwCnZuIDAuOTk2OSAwLjA2MDEgLTAuMDUwNAp2biAwLjk3MjQgMC4xNzkwIC0wLjE0OTkKdm4gMC42NDk1IDAuNTgyOCAtMC40ODg0CnZuIDAuNTIyNSAwLjY1MzUgLTAuNTQ3Ngp2biAwLjk3MjQgMC4yMDUwIC0wLjExMTcKdm4gMC45MjM5IDAuMzM2MCAtMC4xODMyCnZuIDAuODUyNyAwLjQ1ODYgLTAuMjUwMgp2biAwLjIzMzUgMC44NTM2IC0wLjQ2NTgKdm4gMC45OTY5IDAuMDc0OCAtMC4wMjM1CnZuIDAuODUyNyAwLjQ5OTEgLTAuMTU0Ngp2biAwLjc2MDQgMC42MjAzIC0wLjE5MjIKdm4gMC42NDk0IDAuNzI2NCAtMC4yMjUwCnZuIDAuNTIyNSAwLjgxNDUgLTAuMjUyMwp2biAwLjIzMzQgMC45Mjg4IC0wLjI4NzcKdm4gMC43NjA0IDAuNjQ5NCAtMC4wMDE2CnZuIDAuNjQ5NCAwLjc2MDQgLTAuMDAxOQp2biAtMC4wMjY0IC0wLjU0NTEgMC44Mzc5CnZuIC0wLjAyNTkgLTAuNTM0OCAwLjg0NDYKdm4gLTAuMDMwNCAtMC42MjY4IDAuNzc4Ngp2biAtMC4wMzA4IC0wLjYzNTYgMC43NzE0CnZuIC0wLjAyMTcgLTAuNDQ3NCAwLjg5NDEKdm4gLTAuMDIxMSAtMC40MzU2IDAuODk5OQp2biAwLjA0ODEgMC45OTI4IC0wLjEwOTQKdm4gMC4wNDgxIDAuOTkyNyAtMC4xMTA0CnZuIC0wLjA0MTQgLTAuODUzMyAwLjUxOTgKdm4gLTAuMDQxMSAtMC44NDgwIDAuNTI4NQp2biAtMC4wNDM3IC0wLjkwMTQgMC40MzA4CnZuIC0wLjA0MzkgLTAuOTA0OCAwLjQyMzYKdm4gMC4wMzgyIDAuNzg4NSAtMC42MTM5CnZuIDAuMDM4MCAwLjc4NDUgLTAuNjE5MAp2biAwLjA0MTEgMC44NDg3IC0wLjUyNzMKdm4gMC4wNDEzIDAuODUxNiAtMC41MjI2CnZuIC0wLjA0NTggLTAuOTQ1NyAwLjMyMTcKdm4gLTAuMDQ1NyAtMC45NDM2IDAuMzI3OAp2biAtMC4wNDcyIC0wLjk3NDIgMC4yMjA1CnZuIC0wLjA0NzMgLTAuOTc1MSAwLjIxNjQKdm4gLTAuMDA1NyAtMC4xMTgzIDAuOTkzMAp2biAtMC4wMDUzIC0wLjEwODEgMC45OTQxCnZuIC0wLjAxMDcgLTAuMjIwOCAwLjk3NTMKdm4gLTAuMDExMiAtMC4yMzA1IDAuOTczMAp2biAwLjAzNDcgMC43MTUzIC0wLjY5NzkKdm4gMC4wMzQ0IDAuNzEwMSAtMC43MDMzCnZuIDAuMDI2MyAwLjU0MjAgLTAuODQwMAp2biAwLjAyNjEgMC41Mzc0IC0wLjg0MzAKdm4gMC4wMzA1IDAuNjI5MCAtMC43NzY4CnZuIDAuMDMwNyAwLjYzMjkgLTAuNzczNwp2biAwLjAzMjYgMC42NzMwIC0wLjczODkKdm4gMC4wMDU3IDAuMTE4MiAtMC45OTMwCnZuIDAuMDA1NCAwLjExMTYgLTAuOTkzNwp2biAwLjAxMDkgMC4yMjQyIC0wLjk3NDUKdm4gMC4wMTEyIDAuMjMwNSAtMC45NzMwCnZuIDAuMDQzNyAwLjkwMjEgLTAuNDI5Mwp2biAwLjA0MzggMC45MDQwIC0wLjQyNTMKdm4gLTAuMDQ4MSAtMC45OTI4IDAuMTA5NAp2biAtMC4wNDgxIC0wLjk5MjYgMC4xMTE3CnZuIDAuMDQ1OCAwLjk0NDEgLTAuMzI2NAp2biAwLjA0NTggMC45NDUyIC0wLjMyMzIKdm4gMC4wMDI4IDAuMDU3MSAtMC45OTg0CnZuIC0wLjAzNDggLTAuNzE3NSAwLjY5NTcKdm4gLTAuMDM0MyAtMC43MDgyIDAuNzA1MQp2biAtMC4wMzgwIC0wLjc4MzAgMC42MjA4CnZuIC0wLjAzODMgLTAuNzkwMiAwLjYxMTYKdm4gMC4wNDcyIDAuOTc0NCAtMC4yMTk2CnZuIDAuMDQ3MyAwLjk3NDkgLTAuMjE3NQp2biAwLjAxNjIgMC4zMzM3IC0wLjk0MjUKdm4gMC4wMTY1IDAuMzM5NiAtMC45NDA0CnZuIDAuMDIxMyAwLjQzODUgLTAuODk4NQp2biAwLjAyMTUgMC40NDM4IC0wLjg5NTkKdm4gLTAuMDE2MCAtMC4zMzA1IDAuOTQzNwp2biAtMC4wMTY1IC0wLjMzOTYgMC45NDA0CnZuIC0wLjAxODggLTAuMzg4OSAwLjkyMTEKdm4gLTAuMDMyNiAtMC42NzMwIDAuNzM4OQp2biAtMC4xMjMyIC0wLjcxNzcgMC42ODU0CnZuIC0wLjEyNzEgLTAuNjkxMyAwLjcxMTMKdm4gLTAuMjQxNyAtMC43MTUxIDAuNjU1OQp2biAtMC4yMzM1IC0wLjc0MDggMC42Mjk5CnZuIDAuNzg0MyAwLjYxOTcgLTAuMDI4Ngp2biAwLjc0MjkgMC42NTgwIC0wLjEyMzAKdm4gLTAuMDI5MyAtMC42ODc0IC0wLjcyNTcKdm4gLTAuMDMwMSAtMC42NjA4IC0wLjc1MDAKdm4gMC4wMzQ2IC0wLjY2MDggLTAuNzQ5OAp2biAwLjAzMzYgLTAuNjg3NCAtMC43MjU1CnZuIC0wLjAzMDIgMC42NjY4IC0wLjc0NDYKdm4gLTAuMTIyOSAwLjY5MTMgLTAuNzEyMAp2biAwLjAyOTMgLTAuNjkzMiAwLjcyMDEKdm4gMC4wMzAyIC0wLjY2NjggMC43NDQ2CnZuIC0wLjAzNDUgLTAuNjY2OCAwLjc0NDQKdm4gLTAuMDMzNiAtMC42OTMyIDAuNzE5OQp2biAtMC4zNDU2IC0wLjcyOTQgMC41OTA0CnZuIC0wLjMzMjkgLTAuNzU0NCAwLjU2NTcKdm4gLTAuNDQwMCAtMC43MzQ4IDAuNTE2MQp2biAtMC40MjMxIC0wLjc1OTYgMC40OTQwCnZuIC0wLjUyNjQgLTAuNzMxNiAwLjQzMzIKdm4gLTAuNTA1OCAtMC43NTY0IDAuNDE0OAp2biAtMC42MDU2IC0wLjcxOTAgMC4zNDExCnZuIC0wLjU4MjMgLTAuNzQ0MyAwLjMyNzEKdm4gLTAuNjc4MCAtMC42OTU0IDAuMjM4Mwp2biAtMC42NTM0IC0wLjcyMTQgMC4yMjkzCnZuIC0wLjc0MjkgLTAuNjU4MCAwLjEyMzAKdm4gLTAuNzE4OSAtMC42ODQ5IDAuMTE4OQp2biAtMC43ODQzIC0wLjYxOTcgMC4wMjg2CnZuIC0wLjc2MjIgLTAuNjQ2OCAwLjAyNzYKdm4gLTAuNzg0MSAtMC42MTk1IC0wLjAzODMKdm4gLTAuNzYyMCAtMC42NDY1IC0wLjAzNzMKdm4gLTAuMjM3OCAwLjcxNTEgLTAuNjU3Mwp2biAtMC4zNDIxIDAuNzI5NCAtMC41OTI1CnZuIC0wLjQzNzAgMC43MzQ4IC0wLjUxODcKdm4gLTAuNTIzOCAwLjczMTYgLTAuNDM2Mwp2biAtMC42MDM1IDAuNzE5MCAtMC4zNDQ2CnZuIC0wLjY3NjYgMC42OTU0IC0wLjI0MjMKdm4gLTAuNzQyMiAwLjY1ODAgLTAuMTI3NAp2biAtMC43ODQxIDAuNjE5NyAtMC4wMzMyCnZuIDAuNzYyMiAtMC42NDY1IC0wLjAzMjgKdm4gMC43ODQzIC0wLjYxOTUgLTAuMDMzNgp2biAwLjc4NDEgLTAuNjE5NyAwLjAzMzIKdm4gMC43NjIwIC0wLjY0NjggMC4wMzIxCnZuIDAuNjc4MCAwLjY5NTQgLTAuMjM4Mwp2biAwLjYwNTYgMC43MTkwIC0wLjM0MTEKdm4gMC41MjY0IDAuNzMxNiAtMC40MzMyCnZuIDAuNDQwMCAwLjczNDggLTAuNTE2MQp2biAwLjM0NTYgMC43Mjk0IC0wLjU5MDUKdm4gMC4yNDE3IDAuNzE1MSAtMC42NTU5CnZuIDAuMTI3MSAwLjY5MTMgLTAuNzExMwp2biAwLjAzNDUgMC42NjY4IC0wLjc0NDQKdm4gMC4wMzAxIDAuNjYwOCAwLjc1MDAKdm4gMC4xMjI4IDAuNjg1NiAwLjcxNzYKdm4gMC4yMzc4IDAuNzA5OCAwLjY2MzEKdm4gMC4zNDIxIDAuNzI0NSAwLjU5ODQKdm4gMC40MzcwIDAuNzMwNiAwLjUyNDcKdm4gMC41MjM4IDAuNzI4MSAwLjQ0MjIKdm4gMC42MDM1IDAuNzE2MiAwLjM1MDQKdm4gMC42NzY2IDAuNjkzNCAwLjI0NzkKdm4gMC43NDIyIDAuNjU2OSAwLjEzMjcKdm4gMC43ODQxIDAuNjE5NSAwLjAzODMKdm4gMC43NDIyIC0wLjY1ODAgMC4xMjc0CnZuIDAuODQzMiAtMC41MzY0IDAuMDM2Mwp2biAwLjgwNjUgLTAuNTc0NiAwLjEzOTAKdm4gMC45MDY0IC0wLjQyMDcgMC4wMzk1CnZuIDAuODc2OSAtMC40NTYxIDAuMTUxOQp2biAwLjk1MjQgLTAuMzAyMCAwLjA0MjAKdm4gMC45Mjk3IC0wLjMzMDcgMC4xNjE5CnZuIDAuOTgyNCAtMC4xODE4IDAuMDQzOAp2biAwLjk2NTAgLTAuMjAwNiAwLjE2ODkKdm4gMC45OTcxIC0wLjA2MDggMC4wNDUwCnZuIDAuOTgyNiAtMC4wNjc2IDAuMTcyNwp2biAwLjk5NzEgMC4wNjA0IDAuMDQ1NQp2biAwLjk4MjYgMC4wNjYzIDAuMTczMwp2biAwLjk4MjQgMC4xODE0IDAuMDQ1Mwp2biAwLjk2NTAgMC4xOTkyIDAuMTcwNQp2biAwLjk1MjQgMC4zMDE3IDAuMDQ0NAp2biAwLjkyOTcgMC4zMjk0IDAuMTY0Ngp2biAwLjkwNjMgMC40MjAzIDAuMDQyOQp2biAwLjg3NjkgMC40NTQ5IDAuMTU1Ngp2biAwLjg0MzEgMC41MzYxIDAuMDQwNgp2biAwLjgwNjUgMC41NzM1IDAuMTQzNwp2biAwLjY3NjYgLTAuNjk1NCAwLjI0MjMKdm4gMC43NDM1IC0wLjYxMzIgMC4yNjY5CnZuIDAuODE4NSAtMC40OTMxIDAuMjk0Nwp2biAwLjg3NjkgLTAuMzYxNSAwLjMxNjgKdm4gMC45MTY5IC0wLjIyMTEgMC4zMzIzCnZuIDAuOTM3MiAtMC4wNzUzIDAuMzQwNgp2biAwLjkzNzIgMC4wNzI1IDAuMzQxMgp2biAwLjkxNjkgMC4yMTg0IDAuMzM0MQp2biAwLjg3NjkgMC4zNTg5IDAuMzE5OAp2biAwLjgxODUgMC40OTA3IDAuMjk4Nwp2biAwLjc0MzQgMC42MTExIDAuMjcxOAp2biAwLjYwMzYgLTAuNzE5MCAwLjM0NDYKdm4gMC42Njc5IC0wLjYzODQgMC4zODI2CnZuIDAuNzQxNSAtMC41MTgxIDAuNDI2NAp2biAwLjgwMDIgLTAuMzgyOCAwLjQ2MTcKdm4gMC44NDExIC0wLjIzNTcgMC40ODY4CnZuIDAuODYyMiAtMC4wODA4IDAuNTAwMAp2biAwLjg2MjIgMC4wNzY4IDAuNTAwNwp2biAwLjg0MTEgMC4yMzE4IDAuNDg4Nwp2biAwLjgwMDIgMC4zNzkxIDAuNDY0OAp2biAwLjc0MTUgMC41MTQ2IDAuNDMwNgp2biAwLjY2NzggMC42MzUzIDAuMzg3OAp2biAwLjUyMzggLTAuNzMxNiAwLjQzNjMKdm4gMC41ODE0IC0wLjY1MjAgMC40ODY3CnZuIDAuNjQ4MSAtMC41MzE4IDAuNTQ1MQp2biAwLjcwMjAgLTAuMzk0OCAwLjU5MjcKdm4gMC43NDAxIC0wLjI0NDEgMC42MjY2CnZuIDAuNzU5OCAtMC4wODQyIDAuNjQ0Ngp2biAwLjc1OTggMC4wNzkwIDAuNjQ1Mwp2biAwLjc0MDEgMC4yMzkwIDAuNjI4Ngp2biAwLjcwMjAgMC4zOTAxIDAuNTk1OAp2biAwLjY0ODEgMC41Mjc0IDAuNTQ5Mwp2biAwLjU4MTQgMC42NDgxIDAuNDkxOQp2biAwLjQzNzAgLTAuNzM0OCAwLjUxODcKdm4gMC40ODQ3IC0wLjY1NTUgMC41NzkxCnZuIDAuNTQwMyAtMC41MzUzIDAuNjQ5Mwp2biAwLjU4NTMgLTAuMzk3OSAwLjcwNjUKdm4gMC42MTcyIC0wLjI0NjMgMC43NDcyCnZuIDAuNjMzOCAtMC4wODUzIDAuNzY4OAp2biAwLjYzMzggMC4wNzkxIDAuNzY5NAp2biAwLjYxNzIgMC4yNDAzIDAuNzQ5Mgp2biAwLjU4NTMgMC4zOTIxIDAuNzA5Ngp2biAwLjU0MDMgMC41MzAwIDAuNjUzNgp2biAwLjQ4NDcgMC42NTA4IDAuNTg0NAp2biAwLjM0MjEgLTAuNzI5NCAwLjU5MjUKdm4gMC4zNzgwIC0wLjY0OTQgMC42NTk5CnZuIDAuNDE5NiAtMC41MjkwIDAuNzM3Ngp2biAwLjQ1MzIgLTAuMzkyNCAwLjgwMDQKdm4gMC40NzY4IC0wLjI0MjcgMC44NDQ5CnZuIDAuNDg5MCAtMC4wODQzIDAuODY4Mgp2biAwLjQ4OTAgMC4wNzcyIDAuODY4OQp2biAwLjQ3NjggMC4yMzU4IDAuODQ2OAp2biAwLjQ1MzIgMC4zODU5IDAuODAzNgp2biAwLjQxOTYgMC41MjMwIDAuNzQxOQp2biAwLjM3ODAgMC42NDQwIDAuNjY1MQp2biAwLjIzNzggLTAuNzE1MSAwLjY1NzMKdm4gMC4yNjEwIC0wLjYzMzkgMC43MjgwCnZuIDAuMjg3NiAtMC41MTM1IDAuODA4NQp2biAwLjMwODggLTAuMzc5MCAwLjg3MjMKdm4gMC4zMjM1IC0wLjIzMzcgMC45MTY5CnZuIDAuMzMxMCAtMC4wODEzIDAuOTQwMQp2biAwLjMzMTAgMC4wNzM2IDAuOTQwNwp2biAwLjMyMzUgMC4yMjYyIDAuOTE4OAp2biAwLjMwODggMC4zNzIwIDAuODc1NAp2biAwLjI4NzYgMC41MDY5IDAuODEyNgp2biAwLjI2MTAgMC42MjgwIDAuNzMzMQp2biAwLjEyMjkgLTAuNjkxMyAwLjcxMjAKdm4gMC4xMzM3IC0wLjYwODkgMC43ODE5CnZuIDAuMTQ2MCAtMC40ODkwIDAuODYwMAp2biAwLjE1NTYgLTAuMzU4NCAwLjkyMDUKdm4gMC4xNjIyIC0wLjIxOTkgMC45NjE5CnZuIDAuMTY1NiAtMC4wNzY1IDAuOTgzMgp2biAwLjE2NTYgMC4wNjg2IDAuOTgzOAp2biAwLjE2MjIgMC4yMTIxIDAuOTYzNwp2biAwLjE1NTYgMC4zNTA5IDAuOTIzNAp2biAwLjE0NjAgMC40ODIwIDAuODYzOQp2biAwLjEzMzcgMC42MDI1IDAuNzg2OAp2biAwLjAzMjYgLTAuNTg0MCAwLjgxMTEKdm4gMC4wMzUyIC0wLjQ2NTEgMC44ODQ1CnZuIDAuMDM3MiAtMC4zMzg3IDAuOTQwMgp2biAwLjAzODYgLTAuMjA2OSAwLjk3NzYKdm4gMC4wMzkzIC0wLjA3MjAgMC45OTY2CnZuIDAuMDM5MyAwLjA2NDAgMC45OTcyCnZuIDAuMDM4NiAwLjE5OTAgMC45NzkyCnZuIDAuMDM3MiAwLjMzMTEgMC45NDI5CnZuIDAuMDM1MiAwLjQ1ODAgMC44ODgzCnZuIDAuMDMyNiAwLjU3NzQgMC44MTU4CnZuIDAuMTI3MSAtMC42ODU2IC0wLjcxNjgKdm4gMC4wMzc0IC0wLjU3NzQgLTAuODE1Ngp2biAwLjEzODQgLTAuNjAyNSAtMC43ODYwCnZuIDAuMDQwNCAtMC40NTgwIC0wLjg4ODAKdm4gMC4xNTExIC0wLjQ4MjAgLTAuODYzMAp2biAwLjA0MjggLTAuMzMxMSAtMC45NDI2CnZuIDAuMTYxMSAtMC4zNTA5IC0wLjkyMjQKdm4gMC4wNDQzIC0wLjE5OTAgLTAuOTc5MAp2biAwLjE2NzkgLTAuMjEyMSAtMC45NjI3CnZuIDAuMDQ1MSAtMC4wNjQwIC0wLjk5NjkKdm4gMC4xNzE0IC0wLjA2ODYgLTAuOTgyOAp2biAwLjA0NTEgMC4wNzIwIC0wLjk5NjQKdm4gMC4xNzE0IDAuMDc2NSAtMC45ODIyCnZuIDAuMDQ0MyAwLjIwNjkgLTAuOTc3Mwp2biAwLjE2NzkgMC4yMTk5IC0wLjk2MTAKdm4gMC4wNDI4IDAuMzM4NyAtMC45Mzk5CnZuIDAuMTYxMSAwLjM1ODQgLTAuOTE5Ngp2biAwLjA0MDQgMC40NjUxIC0wLjg4NDMKdm4gMC4xNTExIDAuNDg5MCAtMC44NTkxCnZuIDAuMDM3NCAwLjU4NDAgLTAuODEwOQp2biAwLjEzODMgMC42MDg5IC0wLjc4MTEKdm4gMC4yNDE3IC0wLjcwOTggLTAuNjYxNwp2biAwLjI2NTMgLTAuNjI4MCAtMC43MzE2CnZuIDAuMjkyNCAtMC41MDY5IC0wLjgxMDkKdm4gMC4zMTM5IC0wLjM3MjAgLTAuODczNQp2biAwLjMyODkgLTAuMjI2MyAtMC45MTY5CnZuIDAuMzM2NiAtMC4wNzM2IC0wLjkzODgKdm4gMC4zMzY2IDAuMDgxMyAtMC45MzgxCnZuIDAuMzI4OSAwLjIzMzcgLTAuOTE1MAp2biAwLjMxMzkgMC4zNzkwIC0wLjg3MDUKdm4gMC4yOTI0IDAuNTEzNSAtMC44MDY4CnZuIDAuMjY1MyAwLjYzMzkgLTAuNzI2NQp2biAwLjM0NTYgLTAuNzI0NSAtMC41OTYzCnZuIDAuMzgxOSAtMC42NDQwIC0wLjY2MjkKdm4gMC40MjQwIC0wLjUyMzAgLTAuNzM5NAp2biAwLjQ1NzkgLTAuMzg1OSAtMC44MDA5CnZuIDAuNDgxOCAtMC4yMzU4IC0wLjg0NDAKdm4gMC40OTQxIC0wLjA3NzIgLTAuODY2MAp2biAwLjQ5NDEgMC4wODQzIC0wLjg2NTMKdm4gMC40ODE4IDAuMjQyNyAtMC44NDIwCnZuIDAuNDU3OSAwLjM5MjQgLTAuNzk3Nwp2biAwLjQyNDAgMC41MjkwIC0wLjczNTEKdm4gMC4zODE5IDAuNjQ5NCAtMC42NTc2CnZuIDAuNDQwMCAtMC43MzA2IC0wLjUyMjEKdm4gMC40ODgyIC0wLjY1MDggLTAuNTgxNgp2biAwLjU0NDEgLTAuNTMwMCAtMC42NTA0CnZuIDAuNTg5NSAtMC4zOTIxIC0wLjcwNjIKdm4gMC42MjE2IC0wLjI0MDIgLTAuNzQ1Ngp2biAwLjYzODMgLTAuMDc5MSAtMC43NjU3CnZuIDAuNjM4MyAwLjA4NTMgLTAuNzY1MAp2biAwLjYyMTYgMC4yNDYzIC0wLjc0MzYKdm4gMC41ODk1IDAuMzk3OSAtMC43MDMwCnZuIDAuNTQ0MSAwLjUzNTMgLTAuNjQ2MQp2biAwLjQ4ODEgMC42NTU1IC0wLjU3NjMKdm4gMC41MjY0IC0wLjcyODEgLTAuNDM5MQp2biAwLjU4NDMgLTAuNjQ4MSAtMC40ODg1CnZuIDAuNjUxMyAtMC41Mjc0IC0wLjU0NTUKdm4gMC43MDU1IC0wLjM5MDEgLTAuNTkxNwp2biAwLjc0MzggLTAuMjM5MCAtMC42MjQyCnZuIDAuNzYzNiAtMC4wNzkwIC0wLjY0MDgKdm4gMC43NjM2IDAuMDg0MiAtMC42NDAxCnZuIDAuNzQzOCAwLjI0NDEgLTAuNjIyMwp2biAwLjcwNTUgMC4zOTQ4IC0wLjU4ODUKdm4gMC42NTEzIDAuNTMxOCAtMC41NDEyCnZuIDAuNTg0MiAwLjY1MjAgLTAuNDgzMgp2biAwLjYwNTYgLTAuNzE2MiAtMC4zNDY5CnZuIDAuNjcwMSAtMC42MzUzIC0wLjM4MzkKdm4gMC43NDQwIC0wLjUxNDYgLTAuNDI2Mgp2biAwLjgwMjkgLTAuMzc5MSAtMC40NjAxCnZuIDAuODQ0MCAtMC4yMzE4IC0wLjQ4MzcKdm4gMC44NjUyIC0wLjA3NjggLTAuNDk1Ngp2biAwLjg2NTIgMC4wODA4IC0wLjQ5NDkKdm4gMC44NDQwIDAuMjM1NyAtMC40ODE4CnZuIDAuODAyOSAwLjM4MjggLTAuNDU3MAp2biAwLjc0NDAgMC41MTgxIC0wLjQyMjAKdm4gMC42NzAxIDAuNjM4NCAtMC4zNzg3CnZuIDAuNjc4MCAtMC42OTM0IC0wLjI0MzkKdm4gMC43NDUwIC0wLjYxMTEgLTAuMjY3NAp2biAwLjgyMDMgLTAuNDkwNyAtMC4yOTM5CnZuIDAuODc4OCAtMC4zNTg5IC0wLjMxNDYKdm4gMC45MTg4IC0wLjIxODQgLTAuMzI4Nwp2biAwLjkzOTIgLTAuMDcyNSAtMC4zMzU2CnZuIDAuOTM5MiAwLjA3NTMgLTAuMzM1MAp2biAwLjkxODggMC4yMjExIC0wLjMyNjkKdm4gMC44Nzg3IDAuMzYxNSAtMC4zMTE3CnZuIDAuODIwMyAwLjQ5MzEgLTAuMjg5OQp2biAwLjc0NTAgMC42MTMyIC0wLjI2MjUKdm4gMC43NDI5IC0wLjY1NjkgLTAuMTI4NAp2biAwLjgwNzQgLTAuNTczNSAtMC4xMzg5CnZuIDAuODc3OCAtMC40NTQ5IC0wLjE1MDQKdm4gMC45MzA3IC0wLjMyOTQgLTAuMTU5MQp2biAwLjk2NjAgLTAuMTk5MiAtMC4xNjQ5CnZuIDAuOTgzNiAtMC4wNjYzIC0wLjE2NzUKdm4gMC45ODM2IDAuMDY3NiAtMC4xNjY5CnZuIDAuOTY2MCAwLjIwMDYgLTAuMTYzMgp2biAwLjkzMDcgMC4zMzA3IC0wLjE1NjQKdm4gMC44Nzc3IDAuNDU2MSAtMC4xNDY3CnZuIDAuODA3MyAwLjU3NDYgLTAuMTM0Mwp2biAwLjg0MzQgLTAuNTM2MSAtMC4wMzU2CnZuIDAuOTA2NiAtMC40MjAzIC0wLjAzNzUKdm4gMC45NTI2IC0wLjMwMTcgLTAuMDM4OAp2biAwLjk4MjYgLTAuMTgxNCAtMC4wMzk1CnZuIDAuOTk3NCAtMC4wNjA0IC0wLjAzOTYKdm4gMC45OTc0IDAuMDYwOCAtMC4wMzkxCnZuIDAuOTgyNiAwLjE4MTggLTAuMDM4MAp2biAwLjk1MjYgMC4zMDIwIC0wLjAzNjQKdm4gMC45MDY2IDAuNDIwNyAtMC4wMzQxCnZuIDAuODQzNCAwLjUzNjQgLTAuMDMxMwp2biAtMC43NDIyIC0wLjY1NjkgLTAuMTMyNwp2biAtMC44NDMxIC0wLjUzNjEgLTAuMDQwNgp2biAtMC44MDY1IC0wLjU3MzUgLTAuMTQzNwp2biAtMC45MDYzIC0wLjQyMDMgLTAuMDQyOQp2biAtMC44NzY5IC0wLjQ1NDkgLTAuMTU1Ngp2biAtMC45NTI0IC0wLjMwMTcgLTAuMDQ0NAp2biAtMC45Mjk3IC0wLjMyOTQgLTAuMTY0Ngp2biAtMC45ODI0IC0wLjE4MTQgLTAuMDQ1Mwp2biAtMC45NjUwIC0wLjE5OTIgLTAuMTcwNQp2biAtMC45OTcxIC0wLjA2MDQgLTAuMDQ1NQp2biAtMC45ODI2IC0wLjA2NjMgLTAuMTczMwp2biAtMC45OTcxIDAuMDYwOCAtMC4wNDUwCnZuIC0wLjk4MjYgMC4wNjc2IC0wLjE3MjcKdm4gLTAuOTgyNCAwLjE4MTggLTAuMDQzOAp2biAtMC45NjUwIDAuMjAwNiAtMC4xNjg5CnZuIC0wLjk1MjQgMC4zMDIwIC0wLjA0MjAKdm4gLTAuOTI5NyAwLjMzMDcgLTAuMTYxOQp2biAtMC45MDY0IDAuNDIwNyAtMC4wMzk1CnZuIC0wLjg3NjkgMC40NTYxIC0wLjE1MTkKdm4gLTAuODQzMiAwLjUzNjQgLTAuMDM2Mwp2biAtMC44MDY1IDAuNTc0NiAtMC4xMzkwCnZuIC0wLjY3NjYgLTAuNjkzNCAtMC4yNDc5CnZuIC0wLjc0MzQgLTAuNjExMSAtMC4yNzE4CnZuIC0wLjgxODUgLTAuNDkwNyAtMC4yOTg3CnZuIC0wLjg3NjkgLTAuMzU4OSAtMC4zMTk4CnZuIC0wLjkxNjkgLTAuMjE4NCAtMC4zMzQxCnZuIC0wLjkzNzIgLTAuMDcyNSAtMC4zNDEyCnZuIC0wLjkzNzIgMC4wNzUzIC0wLjM0MDYKdm4gLTAuOTE2OSAwLjIyMTEgLTAuMzMyMwp2biAtMC44NzY5IDAuMzYxNSAtMC4zMTY4CnZuIC0wLjgxODUgMC40OTMxIC0wLjI5NDcKdm4gLTAuNzQzNSAwLjYxMzIgLTAuMjY2OQp2biAtMC42MDM1IC0wLjcxNjIgLTAuMzUwNAp2biAtMC42Njc4IC0wLjYzNTMgLTAuMzg3OAp2biAtMC43NDE1IC0wLjUxNDYgLTAuNDMwNgp2biAtMC44MDAyIC0wLjM3OTEgLTAuNDY0OAp2biAtMC44NDExIC0wLjIzMTggLTAuNDg4Nwp2biAtMC44NjIyIC0wLjA3NjggLTAuNTAwNwp2biAtMC44NjIyIDAuMDgwOCAtMC41MDAwCnZuIC0wLjg0MTEgMC4yMzU3IC0wLjQ4NjgKdm4gLTAuODAwMiAwLjM4MjggLTAuNDYxNwp2biAtMC43NDE1IDAuNTE4MSAtMC40MjY0CnZuIC0wLjY2NzkgMC42Mzg0IC0wLjM4MjYKdm4gLTAuNTIzOCAtMC43MjgxIC0wLjQ0MjIKdm4gLTAuNTgxNCAtMC42NDgxIC0wLjQ5MTkKdm4gLTAuNjQ4MSAtMC41Mjc0IC0wLjU0OTMKdm4gLTAuNzAyMCAtMC4zOTAwIC0wLjU5NTgKdm4gLTAuNzQwMSAtMC4yMzkwIC0wLjYyODYKdm4gLTAuNzU5OCAtMC4wNzkwIC0wLjY0NTMKdm4gLTAuNzU5OCAwLjA4NDIgLTAuNjQ0Ngp2biAtMC43NDAxIDAuMjQ0MSAtMC42MjY2CnZuIC0wLjcwMjAgMC4zOTQ4IC0wLjU5MjcKdm4gLTAuNjQ4MSAwLjUzMTggLTAuNTQ1MQp2biAtMC41ODE0IDAuNjUyMCAtMC40ODY3CnZuIC0wLjQzNzAgLTAuNzMwNiAtMC41MjQ3CnZuIC0wLjQ4NDcgLTAuNjUwOCAtMC41ODQ0CnZuIC0wLjU0MDMgLTAuNTMwMCAtMC42NTM2CnZuIC0wLjU4NTMgLTAuMzkyMSAtMC43MDk2CnZuIC0wLjYxNzIgLTAuMjQwMyAtMC43NDkyCnZuIC0wLjYzMzggLTAuMDc5MSAtMC43Njk0CnZuIC0wLjYzMzggMC4wODUzIC0wLjc2ODgKdm4gLTAuNjE3MiAwLjI0NjMgLTAuNzQ3Mgp2biAtMC41ODUzIDAuMzk3OSAtMC43MDY1CnZuIC0wLjU0MDMgMC41MzUzIC0wLjY0OTMKdm4gLTAuNDg0NyAwLjY1NTUgLTAuNTc5MQp2biAtMC4zNDIxIC0wLjcyNDUgLTAuNTk4NAp2biAtMC4zNzgwIC0wLjY0NDAgLTAuNjY1MQp2biAtMC40MTk2IC0wLjUyMzAgLTAuNzQxOQp2biAtMC40NTMyIC0wLjM4NTkgLTAuODAzNgp2biAtMC40NzY4IC0wLjIzNTggLTAuODQ2OAp2biAtMC40ODkwIC0wLjA3NzIgLTAuODY4OQp2biAtMC40ODkwIDAuMDg0MyAtMC44NjgyCnZuIC0wLjQ3NjggMC4yNDI3IC0wLjg0NDkKdm4gLTAuNDUzMiAwLjM5MjQgLTAuODAwNAp2biAtMC40MTk2IDAuNTI5MCAtMC43Mzc2CnZuIC0wLjM3ODAgMC42NDk0IC0wLjY1OTkKdm4gLTAuMjM3OCAtMC43MDk4IC0wLjY2MzEKdm4gLTAuMjYxMCAtMC42MjgwIC0wLjczMzEKdm4gLTAuMjg3NiAtMC41MDY5IC0wLjgxMjYKdm4gLTAuMzA4OCAtMC4zNzIwIC0wLjg3NTQKdm4gLTAuMzIzNSAtMC4yMjYyIC0wLjkxODgKdm4gLTAuMzMxMCAtMC4wNzM2IC0wLjk0MDcKdm4gLTAuMzMxMCAwLjA4MTMgLTAuOTQwMQp2biAtMC4zMjM1IDAuMjMzNyAtMC45MTY5CnZuIC0wLjMwODggMC4zNzkwIC0wLjg3MjMKdm4gLTAuMjg3NiAwLjUxMzUgLTAuODA4NQp2biAtMC4yNjEwIDAuNjMzOSAtMC43MjgwCnZuIC0wLjEyMjggLTAuNjg1NiAtMC43MTc2CnZuIC0wLjEzMzcgLTAuNjAyNSAtMC43ODY4CnZuIC0wLjE0NjAgLTAuNDgyMCAtMC44NjM5CnZuIC0wLjE1NTYgLTAuMzUwOSAtMC45MjM0CnZuIC0wLjE2MjIgLTAuMjEyMSAtMC45NjM3CnZuIC0wLjE2NTYgLTAuMDY4NiAtMC45ODM4CnZuIC0wLjE2NTYgMC4wNzY1IC0wLjk4MzIKdm4gLTAuMTYyMiAwLjIxOTkgLTAuOTYxOQp2biAtMC4xNTU2IDAuMzU4NCAtMC45MjA1CnZuIC0wLjE0NjAgMC40ODkwIC0wLjg2MDAKdm4gLTAuMTMzNyAwLjYwODkgLTAuNzgxOQp2biAtMC4wMzI2IC0wLjU3NzQgLTAuODE1OAp2biAtMC4wMzUyIC0wLjQ1ODAgLTAuODg4Mwp2biAtMC4wMzcyIC0wLjMzMTEgLTAuOTQyOQp2biAtMC4wMzg2IC0wLjE5OTAgLTAuOTc5Mgp2biAtMC4wMzkzIC0wLjA2NDAgLTAuOTk3Mgp2biAtMC4wMzkzIDAuMDcyMCAtMC45OTY2CnZuIC0wLjAzODYgMC4yMDY5IC0wLjk3NzYKdm4gLTAuMDM3MiAwLjMzODcgLTAuOTQwMgp2biAtMC4wMzUyIDAuNDY1MSAtMC44ODQ1CnZuIC0wLjAzMjYgMC41ODQwIC0wLjgxMTEKdm4gLTAuNzQyOSAwLjY1NjkgMC4xMjg0CnZuIC0wLjc4NDMgMC42MTk1IDAuMDMzNgp2biAtMC44NDM0IDAuNTM2MSAwLjAzNTYKdm4gLTAuODA3NCAwLjU3MzUgMC4xMzg5CnZuIC0wLjkwNjYgMC40MjAzIDAuMDM3NQp2biAtMC44Nzc4IDAuNDU0OSAwLjE1MDQKdm4gLTAuOTUyNiAwLjMwMTcgMC4wMzg4CnZuIC0wLjkzMDcgMC4zMjk0IDAuMTU5MQp2biAtMC45ODI2IDAuMTgxNCAwLjAzOTUKdm4gLTAuOTY2MCAwLjE5OTIgMC4xNjQ5CnZuIC0wLjk5NzQgMC4wNjA0IDAuMDM5Ngp2biAtMC45ODM2IDAuMDY2MyAwLjE2NzUKdm4gLTAuOTk3NCAtMC4wNjA4IDAuMDM5MQp2biAtMC45ODM2IC0wLjA2NzYgMC4xNjY5CnZuIC0wLjk4MjYgLTAuMTgxOCAwLjAzODAKdm4gLTAuOTY2MCAtMC4yMDA2IDAuMTYzMgp2biAtMC45NTI2IC0wLjMwMjAgMC4wMzY0CnZuIC0wLjkzMDcgLTAuMzMwNyAwLjE1NjQKdm4gLTAuOTA2NiAtMC40MjA3IDAuMDM0MQp2biAtMC44Nzc3IC0wLjQ1NjEgMC4xNDY3CnZuIC0wLjg0MzQgLTAuNTM2NCAwLjAzMTMKdm4gLTAuODA3MyAtMC41NzQ2IDAuMTM0Mwp2biAtMC42NzgwIDAuNjkzNCAwLjI0MzkKdm4gLTAuNzQ1MCAwLjYxMTEgMC4yNjc0CnZuIC0wLjgyMDMgMC40OTA3IDAuMjkzOQp2biAtMC44Nzg4IDAuMzU4OSAwLjMxNDYKdm4gLTAuOTE4OCAwLjIxODQgMC4zMjg3CnZuIC0wLjkzOTIgMC4wNzI1IDAuMzM1Ngp2biAtMC45MzkyIC0wLjA3NTMgMC4zMzUwCnZuIC0wLjkxODggLTAuMjIxMSAwLjMyNjkKdm4gLTAuODc4NyAtMC4zNjE1IDAuMzExNwp2biAtMC44MjAzIC0wLjQ5MzEgMC4yODk5CnZuIC0wLjc0NTAgLTAuNjEzMiAwLjI2MjUKdm4gLTAuNjA1NiAwLjcxNjIgMC4zNDY5CnZuIC0wLjY3MDEgMC42MzUzIDAuMzgzOQp2biAtMC43NDQwIDAuNTE0NiAwLjQyNjIKdm4gLTAuODAyOSAwLjM3OTEgMC40NjAxCnZuIC0wLjg0NDAgMC4yMzE4IDAuNDgzNwp2biAtMC44NjUyIDAuMDc2OCAwLjQ5NTYKdm4gLTAuODY1MiAtMC4wODA4IDAuNDk0OQp2biAtMC44NDQwIC0wLjIzNTcgMC40ODE4CnZuIC0wLjgwMjkgLTAuMzgyOCAwLjQ1NzAKdm4gLTAuNzQ0MCAtMC41MTgxIDAuNDIyMAp2biAtMC42NzAxIC0wLjYzODQgMC4zNzg3CnZuIC0wLjUyNjQgMC43MjgxIDAuNDM5MQp2biAtMC41ODQzIDAuNjQ4MSAwLjQ4ODUKdm4gLTAuNjUxMyAwLjUyNzQgMC41NDU1CnZuIC0wLjcwNTUgMC4zOTAxIDAuNTkxNwp2biAtMC43NDM4IDAuMjM5MCAwLjYyNDIKdm4gLTAuNzYzNiAwLjA3OTAgMC42NDA4CnZuIC0wLjc2MzYgLTAuMDg0MiAwLjY0MDEKdm4gLTAuNzQzOCAtMC4yNDQxIDAuNjIyMwp2biAtMC43MDU1IC0wLjM5NDggMC41ODg1CnZuIC0wLjY1MTMgLTAuNTMxOCAwLjU0MTIKdm4gLTAuNTg0MiAtMC42NTIwIDAuNDgzMgp2biAtMC40NDAwIDAuNzMwNiAwLjUyMjEKdm4gLTAuNDg4MiAwLjY1MDggMC41ODE2CnZuIC0wLjU0NDEgMC41MzAwIDAuNjUwNAp2biAtMC41ODk1IDAuMzkyMSAwLjcwNjIKdm4gLTAuNjIxNiAwLjI0MDIgMC43NDU2CnZuIC0wLjYzODMgMC4wNzkxIDAuNzY1Nwp2biAtMC42MzgzIC0wLjA4NTMgMC43NjUwCnZuIC0wLjYyMTYgLTAuMjQ2MyAwLjc0MzYKdm4gLTAuNTg5NSAtMC4zOTc5IDAuNzAzMAp2biAtMC41NDQxIC0wLjUzNTMgMC42NDYxCnZuIC0wLjQ4ODEgLTAuNjU1NSAwLjU3NjMKdm4gLTAuMzQ1NiAwLjcyNDUgMC41OTYzCnZuIC0wLjM4MTkgMC42NDQwIDAuNjYyOQp2biAtMC40MjQwIDAuNTIzMCAwLjczOTQKdm4gLTAuNDU3OSAwLjM4NTkgMC44MDA5CnZuIC0wLjQ4MTggMC4yMzU4IDAuODQ0MAp2biAtMC40OTQxIDAuMDc3MiAwLjg2NjAKdm4gLTAuNDk0MSAtMC4wODQzIDAuODY1Mwp2biAtMC40ODE4IC0wLjI0MjcgMC44NDIwCnZuIC0wLjQ1NzkgLTAuMzkyNCAwLjc5NzcKdm4gLTAuNDI0MCAtMC41MjkwIDAuNzM1MQp2biAtMC4zODE5IC0wLjY0OTQgMC42NTc2CnZuIC0wLjI0MTcgMC43MDk4IDAuNjYxNwp2biAtMC4yNjUzIDAuNjI4MCAwLjczMTYKdm4gLTAuMjkyNCAwLjUwNjkgMC44MTA5CnZuIC0wLjMxMzkgMC4zNzIwIDAuODczNgp2biAtMC4zMjg5IDAuMjI2MiAwLjkxNjkKdm4gLTAuMzM2NiAwLjA3MzYgMC45Mzg4CnZuIC0wLjMzNjYgLTAuMDgxMyAwLjkzODEKdm4gLTAuMzI4OSAtMC4yMzM3IDAuOTE1MAp2biAtMC4zMTM5IC0wLjM3OTAgMC44NzA1CnZuIC0wLjI5MjQgLTAuNTEzNSAwLjgwNjgKdm4gLTAuMjY1MyAtMC42MzM5IDAuNzI2NQp2biAtMC4xMjcxIDAuNjg1NiAwLjcxNjgKdm4gLTAuMTM4NCAwLjYwMjUgMC43ODYwCnZuIC0wLjE1MTEgMC40ODIwIDAuODYzMAp2biAtMC4xNjExIDAuMzUwOSAwLjkyMjQKdm4gLTAuMTY3OSAwLjIxMjEgMC45NjI3CnZuIC0wLjE3MTQgMC4wNjg2IDAuOTgyOAp2biAtMC4xNzE0IC0wLjA3NjUgMC45ODIyCnZuIC0wLjE2NzkgLTAuMjE5OSAwLjk2MTAKdm4gLTAuMTYxMSAtMC4zNTg0IDAuOTE5Ngp2biAtMC4xNTExIC0wLjQ4OTAgMC44NTkxCnZuIC0wLjEzODMgLTAuNjA4OSAwLjc4MTEKdm4gLTAuMDM0NiAwLjY2MDggMC43NDk4CnZuIC0wLjAzNzQgMC41Nzc0IDAuODE1Ngp2biAtMC4wNDA0IDAuNDU4MCAwLjg4ODAKdm4gLTAuMDQyOCAwLjMzMTEgMC45NDI2CnZuIC0wLjA0NDMgMC4xOTkwIDAuOTc5MAp2biAtMC4wNDUxIDAuMDY0MCAwLjk5NjkKdm4gLTAuMDQ1MSAtMC4wNzIwIDAuOTk2NAp2biAtMC4wNDQzIC0wLjIwNjkgMC45NzczCnZuIC0wLjA0MjggLTAuMzM4NyAwLjkzOTkKdm4gLTAuMDQwNCAtMC40NjUxIDAuODg0Mwp2biAtMC4wMzc0IC0wLjU4NDAgMC44MTA5CnZuIC0wLjk1NjcgMC4yOTEyIC0wLjAwMTYKdm4gLTAuOTg0NiAwLjE3NDggLTAuMDAyMgp2biAtMC45OTgzIDAuMDU4MyAtMC4wMDI3CnZuIC0wLjk5ODMgLTAuMDU4MyAtMC4wMDMyCnZuIC0wLjk4NDYgLTAuMTc0OCAtMC4wMDM2CnZuIC0wLjk1NjYgLTAuMjkxMiAtMC4wMDQwCnZuIDAuOTU2NiAwLjI5MTIgMC4wMDQwCnZuIDAuOTcyNiAwLjIzMjcgMC4wMDM4CnZuIDAuOTg0NiAwLjE3NDggMC4wMDM2CnZuIDAuOTcyNSAwLjIzMjcgMC4wMDM4CnZuIDAuOTkzMiAwLjExNjMgMC4wMDM0CnZuIDAuOTk4MyAwLjA1ODMgMC4wMDMyCnZuIDEuMDAwMCAtMC4wMDAwIDAuMDAzMAp2biAwLjk5ODMgLTAuMDU4MyAwLjAwMjcKdm4gMC45OTMyIC0wLjExNjQgMC4wMDI1CnZuIDAuOTg0NiAtMC4xNzQ4IDAuMDAyMgp2biAwLjk3MjYgLTAuMjMyNyAwLjAwMTkKdm4gLTAuMDAyNiAwLjQ0OTEgMC44OTM1CnZuIC0wLjAwMjggMC4zMjM4IDAuOTQ2MQp2biAtMC4wMDI5IDAuMTk0MiAwLjk4MDkKdm4gLTAuMDAyOSAwLjE5NDMgMC45ODA5CnZuIC0wLjAwMzAgMC4wNjIzIDAuOTk4MQp2biAtMC4wMDMwIC0wLjA3MDQgMC45OTc1CnZuIC0wLjAwMjkgLTAuMjAyMiAwLjk3OTMKdm4gLTAuMDAyOCAtMC4zMzE0IDAuOTQzNQp2biAwLjcxODkgLTAuNjgzOSAtMC4xMjQ0CnZuIC0wLjExOTIgLTAuNzEyMSAtMC42OTE5CnZuIC0wLjIyOTggLTAuNzM1NiAtMC42MzcyCnZuIC0wLjMyOTUgLTAuNzQ5OCAtMC41NzM4CnZuIC0wLjQyMDIgLTAuNzU1NSAtMC41MDI2CnZuIC0wLjUwMzMgLTAuNzUzMCAtMC40MjM5CnZuIC0wLjU4MDMgLTAuNzQxNiAtMC4zMzY2CnZuIC0wLjY1MjAgLTAuNzE5NSAtMC4yMzkwCnZuIC0wLjcxODEgLTAuNjgzOSAtMC4xMjg2CnZuIDAuNjUzNCAtMC43MTk1IC0wLjIzNTEKdm4gMC41ODIzIC0wLjc0MTYgLTAuMzMzMQp2biAwLjUwNTggLTAuNzUzMCAtMC40MjA5CnZuIDAuNDIzMSAtMC43NTU1IC0wLjUwMDIKdm4gMC4zMzI5IC0wLjc0OTggLTAuNTcxOAp2biAwLjIzMzUgLTAuNzM1NiAtMC42MzU4CnZuIDAuMTIzMiAtMC43MTIxIC0wLjY5MTIKdm4gMC4xMTkyIC0wLjcxNzcgMC42ODYxCnZuIDAuMjI5OCAtMC43NDA4IDAuNjMxMgp2biAwLjMyOTYgLTAuNzU0NCAwLjU2NzcKdm4gMC40MjAyIC0wLjc1OTYgMC40OTY1CnZuIDAuNTAzMyAtMC43NTY0IDAuNDE3Nwp2biAwLjU4MDQgLTAuNzQ0MyAwLjMzMDUKdm4gMC42NTIxIC0wLjcyMTQgMC4yMzMyCnZuIDAuNzE4MiAtMC42ODQ5IDAuMTIzMQp2biAtMC45OTc2IDAuMDY5MCAtMC4wMDI3CnZuIC0wLjk5MzIgMC4xMTYzIC0wLjAwMjUKdm4gLTAuOTc4MyAwLjIwNzEgLTAuMDAyMAp2biAtMC45OTc2IC0wLjA2OTMgLTAuMDAzMgp2biAtMS4wMDAwIDAuMDAwMCAtMC4wMDI5CnZuIC0wLjk3ODIgLTAuMjA3NCAtMC4wMDM3CnZuIC0wLjk5MzIgLTAuMTE2MyAtMC4wMDM0CnZuIC0wLjAwMjkgLTAuMDkxMCAwLjk5NTgKdm4gLTAuMDAyOSAtMC4wMDQxIDEuMDAwMAp2biAtMC4wMDI5IDAuMDY2NCAwLjk5NzgKdm4gLTAuMDAyOSAwLjA2MjMgMC45OTgxCnZuIC0wLjAwMjkgLTAuMDcwNCAwLjk5NzUKdm4gLTAuMDAyOSAwLjEyODQgMC45OTE3CnZuIC0wLjAwMjkgMC4yMTQ0IDAuOTc2OAp2biAtMC4wMDI4IC0wLjI1NDkgMC45NjcwCnZuIC0wLjAwMjkgLTAuMTM2NCAwLjk5MDcKdm4gLTAuMDAyOSAtMC4yNTQ5IDAuOTY3MAp2biAtMC4wMDI5IDAuMjU5MiAwLjk2NTgKdm4gLTAuMDAyOSAwLjIxNDQgMC45NzY3CnZuIC0wLjAwMjggLTAuMjY3MSAwLjk2MzcKdm4gLTAuMDAyOSAtMC4xMjQxIDAuOTkyMwp2biAtMC4wMDMwIC0wLjAwNDEgMS4wMDAwCnZuIC0wLjAwMzAgMC4wNjY0IDAuOTk3OAp2biAtMC4wMDI5IC0wLjAwNDAgMS4wMDAwCnZuIC0wLjAwMjkgLTAuMTM2NCAwLjk5MDYKdm4gLTAuMDAzMCAwLjA2NjUgMC45OTc4CnZuIC0wLjAwMzAgLTAuMDA0MCAxLjAwMDAKdm4gLTAuMDAzMCAwLjEyODQgMC45OTE3CnZuIDAuOTk3NiAtMC4wNjg4IDAuMDAyNwp2biAxLjAwMDAgLTAuMDAwMCAwLjAwMjkKdm4gMC45OTc2IDAuMDY5MSAwLjAwMzIKdm4gMC45NzgzIDAuMjA3MCAwLjAwMzcKdm4gMC45NzY4IC0wLjIxNDEgMC4wMDIwCnZuIDAuOTkzMiAtMC4xMTYzIDAuMDAyNQp2biAwLjk5MzIgMC4xMTY0IDAuMDAzNAp2biAwLjk3ODQgLTAuMjA2NyAwLjAwMjAKdm4gMC4wNDU4IDAuOTQ0MSAwLjMyNjUKdm4gMC4wNDU4IDAuOTQ1MyAwLjMyMzEKdm4gMC4wNDczIDAuOTc0OSAwLjIxNzMKdm4gMC4wNDcyIDAuOTc0NCAwLjIxOTgKdm4gLTAuMDEwNyAtMC4yMjA5IC0wLjk3NTIKdm4gLTAuMDExMiAtMC4yMzA1IC0wLjk3MzAKdm4gLTAuMDEzNyAtMC4yODE3IC0wLjk1OTQKdm4gLTAuMDE2NyAtMC4zNDMzIC0wLjkzOTEKdm4gLTAuMDE2MCAtMC4zMzA2IC0wLjk0MzYKdm4gMC4wMTA5IDAuMjI0MiAwLjk3NDUKdm4gMC4wMTEyIDAuMjMwNiAwLjk3MzAKdm4gMC4wMTY1IDAuMzM5NiAwLjk0MDQKdm4gMC4wMTYyIDAuMzMzNiAwLjk0MjYKdm4gMC4wNDExIDAuODQ4NiAwLjUyNzQKdm4gMC4wNDEzIDAuODUxNiAwLjUyMjUKdm4gMC4wNDM4IDAuOTA0MCAwLjQyNTIKdm4gMC4wNDM3IDAuOTAyMCAwLjQyOTUKdm4gLTAuMDIxNyAtMC40NDczIC0wLjg5NDEKdm4gLTAuMDIxMSAtMC40MzU3IC0wLjg5OTgKdm4gLTAuMDM4MCAtMC43ODMxIC0wLjYyMDcKdm4gLTAuMDM4MyAtMC43OTAxIC0wLjYxMTgKdm4gLTAuMDQxMyAtMC44NTI4IC0wLjUyMDcKdm4gLTAuMDQxMSAtMC44NDc4IC0wLjUyODgKdm4gMC4wNDgxIDAuOTkyNyAwLjExMDUKdm4gMC4wNDgxIDAuOTkyOSAwLjEwOTIKdm4gLTAuMDA1MyAtMC4xMDgxIC0wLjk5NDEKdm4gLTAuMDA1NyAtMC4xMTgyIC0wLjk5MzAKdm4gMC4wMzQ0IDAuNzEwMCAwLjcwMzMKdm4gMC4wMzQ3IDAuNzE1NCAwLjY5NzgKdm4gMC4wMzgyIDAuNzg4NiAwLjYxMzgKdm4gMC4wMzgwIDAuNzg0NCAwLjYxOTEKdm4gLTAuMDQ4MSAtMC45OTI3IC0wLjExMDcKdm4gLTAuMDQ4MSAtMC45OTI5IC0wLjEwOTAKdm4gMC4wMDI4IDAuMDU3MSAwLjk5ODQKdm4gMC4wMDU3IDAuMTE4MyAwLjk5MzAKdm4gMC4wMDU0IDAuMTExNiAwLjk5MzcKdm4gLTAuMDQzNyAtMC45MDE1IC0wLjQzMDYKdm4gLTAuMDQzOSAtMC45MDQ3IC0wLjQyMzcKdm4gLTAuMDQ1OCAtMC45NDU2IC0wLjMyMjAKdm4gLTAuMDQ1NyAtMC45NDM4IC0wLjMyNzQKdm4gLTAuMDQ3MyAtMC45NzUxIC0wLjIxNjYKdm4gLTAuMDQ3MiAtMC45NzQzIC0wLjIyMDMKdm4gMC4wMjEzIDAuNDM4NCAwLjg5ODUKdm4gMC4wMjE1IDAuNDQzOSAwLjg5NTgKdm4gMC4wMjYzIDAuNTQyMSAwLjgzOTkKdm4gMC4wMjYwIDAuNTM3MyAwLjg0MzAKdm4gLTAuMDI1OSAtMC41MzQ5IC0wLjg0NDUKdm4gLTAuMDI2NCAtMC41NDUxIC0wLjgzODAKdm4gLTAuMDMwOCAtMC42MzU0IC0wLjc3MTUKdm4gLTAuMDMwNCAtMC42MjY5IC0wLjc3ODUKdm4gMC4wMzA1IDAuNjI4OSAwLjc3NjkKdm4gMC4wMzA3IDAuNjMzMCAwLjc3MzYKdm4gMC4wMzI2IDAuNjczMCAwLjczODkKdm4gMC45OTgzIDAuMDU4NCAwLjAwMzIKdm4gMC45Nzk0IDAuMjAxOSAwLjAwMzcKdm4gLTAuMDM0OCAtMC43MTc0IC0wLjY5NTgKdm4gLTAuMDM0MyAtMC43MDg0IC0wLjcwNTAKdm4gLTAuMDMyNiAtMC42NzMwIC0wLjczODkKdm4gMC45OTgzIC0wLjA1ODEgMC4wMDI3CnZuIDAuOTc5NCAtMC4yMDE5IDAuMDAyMQp2biAwLjk5ODMgMC4wNTgxIDAuMDAzMgp2biAwLjk5ODMgLTAuMDU4NCAwLjAwMjcKdm4gMC45NzkzIC0wLjIwMjIgMC4wMDIxCnZuIDAuOTc5NSAwLjIwMTYgMC4wMDM3CnZuIDAuOTk3NiAwLjA2ODggMC4wMDMyCnZuIDAuOTk3NiAtMC4wNjkxIDAuMDAyNwp2biAwLjk3NjggMC4yMTQxIDAuMDAzNwp2biAwLjk3ODMgLTAuMjA3MSAwLjAwMjAKdm4gMC45Nzg0IDAuMjA2NyAwLjAwMzcKdm4gMC45NzgzIC0wLjIwNzAgMC4wMDIwCnZuIC0wLjk3ODMgLTAuMjA3MSAtMC4wMDM3CnZuIC0wLjk3MjUgLTAuMjMyNyAtMC4wMDM4CnZuIC0wLjk3ODMgMC4yMDc0IC0wLjAwMjAKdm4gLTAuOTk3NiAwLjA2OTMgLTAuMDAyNwp2biAtMC45OTc2IC0wLjA2OTAgLTAuMDAzMgp2biAtMC45NzI2IDAuMjMyNyAtMC4wMDE5CnZuIDAuMDI5OSAtMC43MTE0IDAuNzAyMQp2biAwLjAxODEgLTAuNzIzOSAwLjY4OTcKdm4gMC4wOTY0IC0wLjc1NDQgMC42NDk0CnZuIDAuMTE3NCAtMC43Mzk2IDAuNjYyNwp2biAwLjY1OTQgLTAuNzQzOCAwLjEwOTcKdm4gMC41OTA0IC0wLjgwMjIgMC4wODg0CnZuIDAuNjIwMiAtMC43ODQzIDAuMDE3Mwp2biAwLjY5NTYgLTAuNzE3OSAwLjAyNzIKdm4gMC42MDE5IC0wLjc3MDAgMC4yMTE5CnZuIDAuNTQyOCAtMC44MTkyIDAuMTg1MAp2biAwLjUzOTUgLTAuNzg1MiAwLjMwMzkKdm4gMC40OTA4IC0wLjgyNzIgMC4yNzM4CnZuIDAuNDcxNyAtMC43OTE5IDAuMzg3OQp2biAwLjQzMjMgLTAuODI4MSAwLjM1NjkKdm4gMC4zOTczIC0wLjc5MTAgMC40NjU0CnZuIDAuMzY1NyAtMC44MjI0IDAuNDM1Nwp2biAwLjMxNDcgLTAuNzgyNiAwLjUzNzEKdm4gMC4yODkxIC0wLjgwOTYgMC41MTA4CnZuIDAuMjIyMSAtMC43NjYwIDAuNjAzMgp2biAwLjIwMDMgLTAuNzg3OCAwLjU4MjQKdm4gMC4xMjEzIC0wLjczNDcgLTAuNjY3NQp2biAwLjEwMDAgLTAuNzQ5OSAtMC42NTM5CnZuIDAuMDIyMSAtMC43MTg3IC0wLjY5NDkKdm4gMC4wMzQwIC0wLjcwNjAgLTAuNzA3NAp2biAwLjIyNTUgLTAuNzYxNiAtMC42MDc2CnZuIDAuMjAzMyAtMC43ODQwIC0wLjU4NjUKdm4gMC4zMTc2IC0wLjc3ODcgLTAuNTQxMQp2biAwLjI5MTUgLTAuODA2MyAtMC41MTQ2CnZuIDAuMzk5NyAtMC43ODc2IC0wLjQ2ODkKdm4gMC4zNjc0IC0wLjgxOTggLTAuNDM5Mgp2biAwLjQ3MzUgLTAuNzg5MiAtMC4zOTExCnZuIDAuNDMzNCAtMC44MjYxIC0wLjM2MDMKdm4gMC41NDA4IC0wLjc4MzIgLTAuMzA2OAp2biAwLjQ5MTIgLTAuODI1OSAtMC4yNzY5CnZuIDAuNjAyNSAtMC43Njg4IC0wLjIxNDQKdm4gMC41NDI2IC0wLjgxODcgLTAuMTg4MAp2biAwLjY1OTQgLTAuNzQzNSAtMC4xMTE3CnZuIDAuNTg5NSAtMC44MDI2IC0wLjA5MTIKdm4gLTAuNjU5MiAtMC43NDMwIC0wLjExNTcKdm4gLTAuNTkwMiAtMC44MDE3IC0wLjA5NDkKdm4gLTAuNjIwMSAtMC43ODQyIC0wLjAyMzcKdm4gLTAuNjk1NSAtMC43MTc3IC0wLjAzMzAKdm4gLTAuNjAxNyAtMC43NjgzIC0wLjIxODEKdm4gLTAuNTQyNiAtMC44MTc5IC0wLjE5MTUKdm4gLTAuNTM5NCAtMC43ODI4IC0wLjMxMDIKdm4gLTAuNDkwNiAtMC44MjUxIC0wLjI4MDQKdm4gLTAuNDcxNiAtMC43ODg4IC0wLjM5NDIKdm4gLTAuNDMyMSAtMC44MjUzIC0wLjM2MzUKdm4gLTAuMzk3MiAtMC43ODcyIC0wLjQ3MTcKdm4gLTAuMzY1NSAtMC44MTkxIC0wLjQ0MjIKdm4gLTAuMzE0NiAtMC43NzgzIC0wLjU0MzQKdm4gLTAuMjg5MCAtMC44MDU2IC0wLjUxNzIKdm4gLTAuMjIyMSAtMC43NjEyIC0wLjYwOTMKdm4gLTAuMjAwMiAtMC43ODMzIC0wLjU4ODUKdm4gLTAuMTE3NCAtMC43MzQzIC0wLjY2ODYKdm4gLTAuMDk2MyAtMC43NDkzIC0wLjY1NTIKdm4gLTAuMDI5OCAtMC43MDU4IC0wLjcwNzgKdm4gLTAuMDE4MCAtMC43MTg1IC0wLjY5NTMKdm4gMC42OTU0IC0wLjcxODEgLTAuMDI4OQp2biAwLjYxOTggLTAuNzg0NSAtMC4wMjAwCnZuIDAuMDAwMSAtMS4wMDAwIC0wLjAwNDMKdm4gMC4wMDAwIC0xLjAwMDAgLTAuMDA0Mwp2biAwLjAwMDIgLTEuMDAwMCAtMC4wMDQyCnZuIDAuMDAwMiAtMS4wMDAwIC0wLjAwNDEKdm4gMC4wMDAxIC0xLjAwMDAgLTAuMDA0MQp2biAtMC4wMDAxIC0xLjAwMDAgLTAuMDA0Mgp2biAtMC4wMDAyIC0xLjAwMDAgLTAuMDA0Mgp2biAtMC4wMDAyIC0xLjAwMDAgLTAuMDA0MQp2biAtMC4wMDAxIC0xLjAwMDAgLTAuMDA0MQp2biAwLjAwMDEgLTEuMDAwMCAtMC4wMDQyCnZuIC0wLjAwMDAgLTEuMDAwMCAtMC4wMDQyCnZuIC0wLjAwMDEgLTEuMDAwMCAtMC4wMDQzCnZuIC0wLjUwNzMgLTAuMDE2MCAwLjg2MTYKdm4gLTAuMzQ4NiAtMC4wMTc0IDAuOTM3MQp2biAtMC4zNDgxIC0wLjAxNzQgMC45MzczCnZuIC0wLjUwNjYgLTAuMDE2MCAwLjg2MjAKdm4gLTAuMDM0MCAtMC43MTE2IDAuNzAxNwp2biAtMC4xMjEzIC0wLjc0MDAgMC42NjE2CnZuIC0wLjY5NTQgLTAuNzE4MiAwLjAyMzEKdm4gLTAuNjU5NCAtMC43NDQzIDAuMTA1Nwp2biAtMC42MDI2IC0wLjc3MDQgMC4yMDgyCnZuIC0wLjU0MDkgLTAuNzg1NiAwLjMwMDUKdm4gLTAuNDczNiAtMC43OTIyIDAuMzg0OAp2biAtMC4zOTk3IC0wLjc5MTMgMC40NjI2CnZuIC0wLjMxNzYgLTAuNzgzMCAwLjUzNDkKdm4gLTAuMjI1NSAtMC43NjY0IDAuNjAxNQp2biAtMC4wMDAwIDEuMDAwMCAwLjAwNDEKdm4gLTAuODY2NyAwLjAwOTIgLTAuNDk4Nwp2biAtMC45Mzk3IDAuMDA2MyAtMC4zNDE5CnZuIC0wLjk0MDIgMC4wMDYyIC0wLjM0MDUKdm4gLTAuODY3NCAwLjAwOTEgLTAuNDk3NQp2biAwLjM0MzEgLTAuMDE3NCAwLjkzOTEKdm4gMC41MDIyIC0wLjAxNjAgMC44NjQ2CnZuIDAuNTAxNSAtMC4wMTYwIDAuODY1MAp2biAwLjM0MjYgLTAuMDE3NCAwLjkzOTMKdm4gLTAuOTg0NSAwLjAwMzIgLTAuMTc1Mwp2biAtMC45ODQ4IDAuMDAzMiAtMC4xNzM4CnZuIC0wLjY0OTkgLTAuMDE0MSAwLjc1OTkKdm4gLTAuNjQ5MSAtMC4wMTQxIDAuNzYwNgp2biAwLjY0NTQgLTAuMDE0MSAwLjc2MzcKdm4gMC42NDQ2IC0wLjAxNDEgMC43NjQ0CnZuIC0wLjk5ODkgMC4wMDA4IC0wLjA0NjQKdm4gLTAuOTk5MCAwLjAwMDggLTAuMDQ1Ngp2biAtMC43NzIwIC0wLjAxMTggMC42MzU1CnZuIC0wLjc3MTIgLTAuMDExOCAwLjYzNjQKdm4gMC43NjgzIC0wLjAxMTggMC42NDAwCnZuIDAuNzY3NSAtMC4wMTE4IDAuNjQxMAp2biAwLjk5OTIgMC4wMDA4IC0wLjA0MDUKdm4gMC45ODU1IDAuMDAzMiAtMC4xNjk1CnZuIDAuOTg1OCAwLjAwMzIgLTAuMTY4MAp2biAwLjk5OTIgMC4wMDA4IC0wLjAzOTgKdm4gLTAuODcwNCAtMC4wMDkyIDAuNDkyMwp2biAtMC44Njk3IC0wLjAwOTIgMC40OTM2CnZuIDAuODY3NCAtMC4wMDkyIDAuNDk3NQp2biAwLjg2NjcgLTAuMDA5MiAwLjQ5ODcKdm4gMC45NDE3IDAuMDA2MyAtMC4zMzY0CnZuIDAuOTQyMiAwLjAwNjIgLTAuMzM0OQp2biAtMC45NDIyIC0wLjAwNjMgMC4zMzQ5CnZuIC0wLjk0MTcgLTAuMDA2MyAwLjMzNjQKdm4gMC45NDAyIC0wLjAwNjMgMC4zNDA1CnZuIDAuOTM5NyAtMC4wMDYzIDAuMzQxOQp2biAwLjg2OTcgMC4wMDkyIC0wLjQ5MzYKdm4gMC44NzA0IDAuMDA5MiAtMC40OTIzCnZuIC0wLjk4NTggLTAuMDAzMiAwLjE2ODAKdm4gLTAuOTg1NSAtMC4wMDMyIDAuMTY5NQp2biAwLjk4NDggLTAuMDAzMiAwLjE3MzgKdm4gMC45ODQ1IC0wLjAwMzIgMC4xNzUzCnZuIDAuNzcxMiAwLjAxMTggLTAuNjM2NAp2biAwLjc3MjAgMC4wMTE4IC0wLjYzNTUKdm4gLTAuOTk5MiAtMC4wMDA4IDAuMDM5OAp2biAtMC45OTkyIC0wLjAwMDggMC4wNDA1CnZuIDAuOTk5MCAtMC4wMDA4IDAuMDQ1Ngp2biAwLjk5ODkgLTAuMDAwOCAwLjA0NjQKdm4gMC42NDkxIDAuMDE0MSAtMC43NjA2CnZuIDAuNjQ5OSAwLjAxNDEgLTAuNzU5OQp2biAtMC4wNDEyIDAuMDE4NSAtMC45OTkwCnZuIC0wLjE3MjYgMC4wMTgyIC0wLjk4NDgKdm4gLTAuMTcyOSAwLjAxODIgLTAuOTg0OAp2biAwLjUwNjYgMC4wMTYwIC0wLjg2MjAKdm4gMC41MDczIDAuMDE2MCAtMC44NjE2CnZuIC0wLjM0MjYgMC4wMTc0IC0wLjkzOTMKdm4gLTAuMzQzMSAwLjAxNzQgLTAuOTM5MQp2biAwLjA0NzEgMC4wMTg1IC0wLjk5ODcKdm4gMC4wMDI5IDAuMDE4NSAtMC45OTk4CnZuIDAuMzQ4MSAwLjAxNzQgLTAuOTM3Mwp2biAwLjM0ODYgMC4wMTc0IC0wLjkzNzEKdm4gLTAuNTAxNSAwLjAxNjAgLTAuODY1MAp2biAtMC41MDIyIDAuMDE2MCAtMC44NjQ2CnZuIDAuMTc4NCAwLjAxODIgLTAuOTgzOAp2biAwLjE3ODcgMC4wMTgyIC0wLjk4MzcKdm4gLTAuNjQ0NiAwLjAxNDEgLTAuNzY0NAp2biAtMC42NDU0IDAuMDE0MSAtMC43NjM3CnZuIC0wLjA0NzEgLTAuMDE4NSAwLjk5ODcKdm4gMC4wNDEyIC0wLjAxODUgMC45OTkwCnZuIC0wLjc2NzUgMC4wMTE4IC0wLjY0MTAKdm4gLTAuNzY4MyAwLjAxMTggLTAuNjQwMAp2biAtMC4xNzg3IC0wLjAxODIgMC45ODM3CnZuIC0wLjE3ODQgLTAuMDE4MiAwLjk4MzgKdm4gMC4xNzI5IC0wLjAxODIgMC45ODQ4CnZuIDAuMTcyNiAtMC4wMTgyIDAuOTg0OAp2biAtMC4wMDAwIDEuMDAwMCAwLjAwMDcKdm4gLTAuMDAyOSAtMC4wMjUyIDAuOTk5Nwp2biAtMC4xMDAwIC0wLjc1NTAgMC42NDgxCnZuIC0wLjIwMzQgLTAuNzg4NSAwLjU4MDQKdm4gLTAuMDIyMSAtMC43MjQxIDAuNjg5NAp2biAtMC4yOTE2IC0wLjgxMDMgMC41MDgzCnZuIC0wLjM2NzYgLTAuODIzMiAwLjQzMjgKdm4gLTAuNDMzNSAtMC44Mjg4IDAuMzUzNwp2biAtMC40OTE0IC0wLjgyNzkgMC4yNzA0CnZuIC0wLjU0MjggLTAuODIwMSAwLjE4MTQKdm4gLTAuNTg5OCAtMC44MDMxIDAuMDg0Nwp2biAtMC42MTk4IC0wLjc4NDYgMC4wMTM2CnZuIC0wLjU4NDMgMC4wMDcwIC0wLjgxMTUKdm4gLTAuNzYwNiAwLjAwNTYgLTAuNjQ5MQp2biAtMC43NjExIDAuMDA1NiAtMC42NDg2CnZuIC0wLjU4NDUgMC4wMDcwIC0wLjgxMTQKdm4gLTAuNzM1MCAwLjAwNTkgLTAuNjc4MAp2biAtMC40NDEyIDAuMDEyMSAtMC44OTczCnZuIC0wLjQzODAgMC4wMTIxIC0wLjg5ODkKdm4gLTAuNzM0NiAwLjAwNTkgLTAuNjc4NQp2biAwLjk5ODEgMC4wMDA2IC0wLjA2MTkKdm4gMC45NzAwIDAuMDAyMSAtMC4yNDMwCnZuIDAuOTcwMiAwLjAwMjEgLTAuMjQyMgp2biAwLjk5ODEgMC4wMDA2IC0wLjA2MTYKdm4gLTAuMzYyNSAwLjAwODEgLTAuOTMyMAp2biAtMC4zNjI4IDAuMDA4MSAtMC45MzE4CnZuIC0wLjk0MzMgMC4wMDI5IC0wLjMzMTgKdm4gLTAuOTQyOSAwLjAwMjkgLTAuMzMzMgp2biAwLjk5ODggMC4wMDA1IC0wLjA0OTQKdm4gMC45OTg4IDAuMDAwNSAtMC4wNDk2CnZuIC0wLjEwNTIgMC4wMDg2IC0wLjk5NDQKdm4gLTAuMTA1MyAwLjAwODYgLTAuOTk0NAp2biAtMC45OTg3IDAuMDAwNCAtMC4wNTA0CnZuIC0wLjk5ODcgMC4wMDA0IC0wLjA1MDYKdm4gMC45OTY3IDAuMDAwNyAtMC4wODEzCnZuIDAuMjEyMiAwLjAwODUgLTAuOTc3Mgp2biAwLjIxMjQgMC4wMDg1IC0wLjk3NzEKdm4gLTAuOTkzNSAwLjAwMTAgLTAuMTEzNQp2biAtMC45OTM2IDAuMDAxMCAtMC4xMTI5CnZuIDAuNzA3MCAwLjAwNjIgLTAuNzA3Mgp2biAwLjc5MTMgMC4wMDUzIC0wLjYxMTQKdm4gMC43MDY2IDAuMDA2MiAtMC43MDc2CnZuIDAuNTI3NyAwLjAwNzQgLTAuODQ5NAp2biAwLjUyODAgMC4wMDc0IC0wLjg0OTIKdm4gLTAuOTU0NCAwLjAwMjYgLTAuMjk4NAp2biAtMC45NTQ2IDAuMDAyNiAtMC4yOTc5CnZuIDAuNTIzNCAwLjAwNzQgLTAuODUyMAp2biAwLjUyMzIgMC4wMDc0IC0wLjg1MjIKdm4gMC43MjA1IDAuMDA2MCAtMC42OTM0CnZuIDAuNzIwOSAwLjAwNjAgLTAuNjkzMAp2biAtMC44ODg1IDAuMDA0MCAtMC40NTg5CnZuIC0wLjg4ODcgMC4wMDQwIC0wLjQ1ODUKdm4gMC4yNzYwIDAuMDEyNyAtMC45NjExCnZuIDAuMjc0NCAwLjAxMjcgLTAuOTYxNQp2biAwLjg3MDcgMC4wMDQzIC0wLjQ5MTgKdm4gMC44NzEwIDAuMDA0MyAtMC40OTEyCnZuIDAuMTE0MiAwLjAxNzIgLTAuOTkzMwp2biAtMC4yMzY0IDAuMDE2OCAtMC45NzE1CnVzZW10bCBiYWNrX29mX3Bob25lX2NvbG9yCnMgb2ZmCmYgMTMxLzEvMSAxMzIvMi8xIDIxMDYvMy8xIDIxMDQvNC8xCmYgMTMyLzIvMiAxMzMvNS8yIDIxMDgvNi8yIDIxMDkvNy8yIDIxMDYvMy8yCmYgMTMzLzUvMyAxMzQvOC8zIDIxMTAvOS8zIDIxMDgvNi8zCmYgMTM0LzgvNCAxMzUvMTAvNCAyMTA3LzExLzQgMjExMC85LzQKZiAxMzUvMTAvNSAxMzYvMTIvNSAyMTA1LzEzLzUgMjEwNy8xMS81CmYgMTM2LzEyLzYgMTM3LzE0LzYgMjEwMy8xNS82IDIxMDUvMTMvNgpmIDEzNy8xNC83IDEzOC8xNi83IDIxMDAvMTcvNyAyMTAzLzE1LzcKZiAxMzgvMTYvOCAxMzkvMTgvOCAyMDk3LzE5LzggMjEwMC8xNy84CmYgMTM5LzE4LzkgMTQwLzIwLzkgMjA5NC8yMS85IDIwOTgvMjIvOSAyMDk3LzE5LzkKZiAxNDAvMjAvMTAgMTQxLzIzLzEwIDIwOTUvMjQvMTAgMjA5NC8yMS8xMApmIDE0MS8yMy8xMSAxNDIvMjUvMTEgMjA5Mi8yNi8xMSAyMDk1LzI0LzExCmYgMTQyLzI1LzEyIDE0My8yNy8xMiAyMTI3LzI4LzEyIDIwOTIvMjYvMTIKZiAxNDMvMjcvMTMgMTQ0LzI5LzEzIDIxMjUvMzAvMTMgMjEyNy8yOC8xMwpmIDE0NC8yOS8xNCAxNDUvMzEvMTQgMjEyMi8zMi8xNCAyMTI1LzMwLzE0CmYgMTQ1LzMxLzE1IDE0Ni8zMy8xNSAyMTIwLzM0LzE1IDIxMjIvMzIvMTUKZiAxNDYvMzMvMTYgMTQ3LzM1LzE2IDIxMTgvMzYvMTYgMjEyMC8zNC8xNgpmIDE0Ny8zNS8xNyAxNDgvMzcvMTcgMjEzMi8zOC8xNyAyMTE4LzM2LzE3CmYgMTQ4LzM3LzE4IDE0OS8zOS8xOCAyMTMxLzQwLzE4IDIxMzIvMzgvMTgKZiAxNDkvMzkvMTkgMTUwLzQxLzE5IDIxMzQvNDIvMTkgMjEzMS80MC8xOQpmIDE1MC80MS8yMCAxNTEvNDMvMjAgMjEzMC80NC8yMCAyMTM0LzQyLzIwCmYgMTUxLzQzLzIxIDE1Mi80NS8yMSAyMTMzLzQ2LzIxIDIxMzAvNDQvMjEKZiAxNTIvNDUvMjIgMTUzLzQ3LzIyIDIxMTkvNDgvMjIgMjEzMy80Ni8yMgpmIDE1My80Ny8yMyAxNTQvNDkvMjMgMjEyMS81MC8yMyAyMTE5LzQ4LzIzCmYgMTU0LzQ5LzI0IDE1NS81MS8yNCAyMTI0LzUyLzI0IDIxMjMvNTMvMjQgMjEyMS81MC8yNApmIDE1NS81MS8yNSAxNTYvNTQvMjUgMjEyNi81NS8yNSAyMTI0LzUyLzI1CmYgMTU2LzU0LzI2IDE1Ny81Ni8yNiAyMTI4LzU3LzI2IDIxMjYvNTUvMjYKZiAxNTcvNTYvMjcgMTU4LzU4LzI3IDIxMjkvNTkvMjcgMjEyOC81Ny8yNwpmIDE1OC81OC8yOCAxNTkvNjAvMjggMjA5My82MS8yOCAyMTI5LzU5LzI4CmYgMTU5LzYwLzI5IDE2MC82Mi8yOSAyMDk2LzYzLzI5IDIwOTMvNjEvMjkKZiAxNjAvNjIvMzAgMTYxLzY0LzMwIDIwOTkvNjUvMzAgMjA5Ni82My8zMApmIDE2MS82NC8zMSAxNjIvNjYvMzEgMjEwMS82Ny8zMSAyMTAyLzY4LzMxIDIwOTkvNjUvMzEKZiAxNjIvNjYvMzIgMTMxLzY5LzMyIDIxMDQvNzAvMzIgMjEwMS82Ny8zMgpmIDEzMS83MS8zMyAxNjIvNzIvMzMgMTYxLzczLzMzIDE2MC83NC8zMyAxNTkvNzUvMzMgMTU4Lzc2LzMzIDE1Ny83Ny8zMyAxNTYvNzgvMzMgMTU1Lzc5LzMzIDE1NC84MC8zMyAxNTMvODEvMzMgMTUyLzgyLzMzIDE1MS84My8zMyAxNTAvODQvMzMgMTQ5Lzg1LzMzIDE0OC84Ni8zMyAxNDcvODcvMzMgMTQ2Lzg4LzMzIDE0NS84OS8zMyAxNDQvOTAvMzMgMTQzLzkxLzMzIDE0Mi85Mi8zMyAxNDEvOTMvMzMgMTQwLzk0LzMzIDEzOS85NS8zMyAxMzgvOTYvMzMgMTM3Lzk3LzMzIDEzNi85OC8zMyAxMzUvOTkvMzMgMTM0LzEwMC8zMyAxMzMvMTAxLzMzIDEzMi8xMDIvMzMKZiAxNjMvMTAzLzEgMTY0LzEwNC8xIDIwOTEvMTA1LzEgMjA5MC8xMDYvMQpmIDE2NC8xMDQvMiAxNjUvMTA3LzIgMjA0Ny8xMDgvMiAyMDQ4LzEwOS8yIDIwOTEvMTA1LzIKZiAxNjUvMTA3LzMgMTY2LzExMC8zIDIwNDkvMTExLzMgMjA0Ny8xMDgvMwpmIDE2Ni8xMTAvNCAxNjcvMTEyLzQgMjA0Ni8xMTMvNCAyMDQ5LzExMS80CmYgMTY3LzExMi81IDE2OC8xMTQvNSAyMDQ1LzExNS81IDIwNDYvMTEzLzUKZiAxNjgvMTE0LzYgMTY5LzExNi82IDIwODkvMTE3LzYgMjA0NS8xMTUvNgpmIDE2OS8xMTYvNyAxNzAvMTE4LzcgMjA4Ni8xMTkvNyAyMDg5LzExNy83CmYgMTcwLzExOC84IDE3MS8xMjAvOCAyMDg0LzEyMS84IDIwODYvMTE5LzgKZiAxNzEvMTIwLzkgMTcyLzEyMi85IDIwODEvMTIzLzkgMjA4My8xMjQvOSAyMDg0LzEyMS85CmYgMTcyLzEyMi8xMCAxNzMvMTI1LzEwIDIwNzkvMTI2LzEwIDIwODEvMTIzLzEwCmYgMTczLzEyNS8xMSAxNzQvMTI3LzExIDIwNzcvMTI4LzExIDIwNzkvMTI2LzExCmYgMTc0LzEyNy8xMiAxNzUvMTI5LzEyIDIwNzUvMTMwLzEyIDIwNzcvMTI4LzEyCmYgMTc1LzEyOS8xMyAxNzYvMTMxLzEzIDIwNzMvMTMyLzEzIDIwNzUvMTMwLzEzCmYgMTc2LzEzMS8xNCAxNzcvMTMzLzE0IDIwNzAvMTM0LzE0IDIwNzMvMTMyLzE0CmYgMTc3LzEzMy8xNSAxNzgvMTM1LzE1IDIwNjkvMTM2LzE1IDIwNzAvMTM0LzE1CmYgMTc4LzEzNS8xNiAxNzkvMTM3LzE2IDIxMTYvMTM4LzE2IDIwNjkvMTM2LzE2CmYgMTc5LzEzNy8xNyAxODAvMTM5LzE3IDIxMTQvMTQwLzE3IDIxMTYvMTM4LzE3CmYgMTgwLzEzOS8xOCAxODEvMTQxLzE4IDIxMTEvMTQyLzE4IDIxMTQvMTQwLzE4CmYgMTgxLzE0MS8xOSAxODIvMTQzLzE5IDIxMTIvMTQ0LzE5IDIxMTEvMTQyLzE5CmYgMTgyLzE0My8yMCAxODMvMTQ1LzIwIDIxMTMvMTQ2LzIwIDIxMTIvMTQ0LzIwCmYgMTgzLzE0NS8yMSAxODQvMTQ3LzIxIDIxMTUvMTQ4LzIxIDIxMTMvMTQ2LzIxCmYgMTg0LzE0Ny8yMiAxODUvMTQ5LzIyIDIxMTcvMTUwLzIyIDIxMTUvMTQ4LzIyCmYgMTg1LzE0OS8yMyAxODYvMTUxLzIzIDIwNjgvMTUyLzIzIDIxMTcvMTUwLzIzCmYgMTg2LzE1MS8yNCAxODcvMTUzLzI0IDIwNzIvMTU0LzI0IDIwNzEvMTU1LzI0IDIwNjgvMTUyLzI0CmYgMTg3LzE1My8yNSAxODgvMTU2LzI1IDIwNzQvMTU3LzI1IDIwNzIvMTU0LzI1CmYgMTg4LzE1Ni8yNiAxODkvMTU4LzI2IDIwNzYvMTU5LzI2IDIwNzQvMTU3LzI2CmYgMTg5LzE1OC8yNyAxOTAvMTYwLzI3IDIwNzgvMTYxLzI3IDIwNzYvMTU5LzI3CmYgMTkwLzE2MC8yOCAxOTEvMTYyLzI4IDIwODAvMTYzLzI4IDIwNzgvMTYxLzI4CmYgMTkxLzE2Mi8yOSAxOTIvMTY0LzI5IDIwODIvMTY1LzI5IDIwODAvMTYzLzI5CmYgMTkyLzE2NC8zMCAxOTMvMTY2LzMwIDIwODUvMTY3LzMwIDIwODIvMTY1LzMwCmYgMTkzLzE2Ni8zMSAxOTQvMTY4LzMxIDIwODcvMTY5LzMxIDIwODgvMTcwLzMxIDIwODUvMTY3LzMxCmYgMTk0LzE2OC8zMiAxNjMvMTcxLzMyIDIwOTAvMTcyLzMyIDIwODcvMTY5LzMyCmYgMTYzLzE3My8zMyAxOTQvMTc0LzMzIDE5My8xNzUvMzMgMTkyLzE3Ni8zMyAxOTEvMTc3LzMzIDE5MC8xNzgvMzMgMTg5LzE3OS8zMyAxODgvMTgwLzMzIDE4Ny8xODEvMzMgMTg2LzE4Mi8zMyAxODUvMTgzLzMzIDE4NC8xODQvMzMgMTgzLzE4NS8zMyAxODIvMTg2LzMzIDE4MS8xODcvMzMgMTgwLzE4OC8zMyAxNzkvMTg5LzMzIDE3OC8xOTAvMzMgMTc3LzE5MS8zMyAxNzYvMTkyLzMzIDE3NS8xOTMvMzMgMTc0LzE5NC8zMyAxNzMvMTk1LzMzIDE3Mi8xOTYvMzMgMTcxLzE5Ny8zMyAxNzAvMTk4LzMzIDE2OS8xOTkvMzMgMTY4LzIwMC8zMyAxNjcvMjAxLzMzIDE2Ni8yMDIvMzMgMTY1LzIwMy8zMyAxNjQvMjA0LzMzCmYgMTk1LzIwNS8xIDE5Ni8yMDYvMSAyMDQwLzIwNy8xIDIwMzgvMjA4LzEKZiAxOTYvMjA2LzIgMTk3LzIwOS8yIDIwNDIvMjEwLzIgMjA0My8yMTEvMiAyMDQwLzIwNy8yCmYgMTk3LzIwOS8zIDE5OC8yMTIvMyAyMDQ0LzIxMy8zIDIwNDIvMjEwLzMKZiAxOTgvMjEyLzQgMTk5LzIxNC80IDIwNDEvMjE1LzQgMjA0NC8yMTMvNApmIDE5OS8yMTQvNSAyMDAvMjE2LzUgMjAzOS8yMTcvNSAyMDQxLzIxNS81CmYgMjAwLzIxNi82IDIwMS8yMTgvNiAyMDM3LzIxOS82IDIwMzkvMjE3LzYKZiAyMDEvMjE4LzcgMjAyLzIyMC83IDIwMzQvMjIxLzcgMjAzNy8yMTkvNwpmIDIwMi8yMjAvOCAyMDMvMjIyLzggMjAzMS8yMjMvOCAyMDM0LzIyMS84CmYgMjAzLzIyMi85IDIwNC8yMjQvOSAyMDI5LzIyNS85IDIwMzIvMjI2LzkgMjAzMS8yMjMvOQpmIDIwNC8yMjQvMTAgMjA1LzIyNy8xMCAyMDI4LzIyOC8xMCAyMDI5LzIyNS8xMApmIDIwNS8yMjcvMTEgMjA2LzIyOS8xMSAyMDY2LzIzMC8xMSAyMDI4LzIyOC8xMQpmIDIwNi8yMjkvMTIgMjA3LzIzMS8xMiAyMDY0LzIzMi8xMiAyMDY2LzIzMC8xMgpmIDIwNy8yMzEvMTMgMjA4LzIzMy8xMyAyMDYyLzIzNC8xMyAyMDY0LzIzMi8xMwpmIDIwOC8yMzMvMTQgMjA5LzIzNS8xNCAyMDU5LzIzNi8xNCAyMDYyLzIzNC8xNApmIDIwOS8yMzUvMTUgMjEwLzIzNy8xNSAyMDU3LzIzOC8xNSAyMDU5LzIzNi8xNQpmIDIxMC8yMzcvMTYgMjExLzIzOS8xNiAyMDU1LzI0MC8xNiAyMDU3LzIzOC8xNgpmIDIxMS8yMzkvMTcgMjEyLzI0MS8xNyAyMDUzLzI0Mi8xNyAyMDU1LzI0MC8xNwpmIDIxMi8yNDEvMTggMjEzLzI0My8xOCAyMDUxLzI0NC8xOCAyMDUzLzI0Mi8xOApmIDIxMy8yNDMvMTkgMjE0LzI0NS8xOSAyMDUwLzI0Ni8xOSAyMDUxLzI0NC8xOQpmIDIxNC8yNDUvMjAgMjE1LzI0Ny8yMCAyMDUyLzI0OC8yMCAyMDUwLzI0Ni8yMApmIDIxNS8yNDcvMjEgMjE2LzI0OS8yMSAyMDU0LzI1MC8yMSAyMDUyLzI0OC8yMQpmIDIxNi8yNDkvMjIgMjE3LzI1MS8yMiAyMDU2LzI1Mi8yMiAyMDU0LzI1MC8yMgpmIDIxNy8yNTEvMjMgMjE4LzI1My8yMyAyMDU4LzI1NC8yMyAyMDU2LzI1Mi8yMwpmIDIxOC8yNTMvMjQgMjE5LzI1NS8yNCAyMDYwLzI1Ni8yNCAyMDYxLzI1Ny8yNCAyMDU4LzI1NC8yNApmIDIxOS8yNTUvMjUgMjIwLzI1OC8yNSAyMDYzLzI1OS8yNSAyMDYwLzI1Ni8yNQpmIDIyMC8yNTgvMjYgMjIxLzI2MC8yNiAyMDY1LzI2MS8yNiAyMDYzLzI1OS8yNgpmIDIyMS8yNjAvMjcgMjIyLzI2Mi8yNyAyMDY3LzI2My8yNyAyMDY1LzI2MS8yNwpmIDIyMi8yNjIvMjggMjIzLzI2NC8yOCAyMDI3LzI2NS8yOCAyMDY3LzI2My8yOApmIDIyMy8yNjQvMjkgMjI0LzI2Ni8yOSAyMDMwLzI2Ny8yOSAyMDI3LzI2NS8yOQpmIDIyNC8yNjYvMzAgMjI1LzI2OC8zMCAyMDMzLzI2OS8zMCAyMDMwLzI2Ny8zMApmIDIyNS8yNjgvMzEgMjI2LzI3MC8zMSAyMDM1LzI3MS8zMSAyMDM2LzI3Mi8zMSAyMDMzLzI2OS8zMQpmIDIyNi8yNzAvMzIgMTk1LzI3My8zMiAyMDM4LzI3NC8zMiAyMDM1LzI3MS8zMgpmIDE5NS8yNzUvMzMgMjI2LzI3Ni8zMyAyMjUvMjc3LzMzIDIyNC8yNzgvMzMgMjIzLzI3OS8zMyAyMjIvMjgwLzMzIDIyMS8yODEvMzMgMjIwLzI4Mi8zMyAyMTkvMjgzLzMzIDIxOC8yODQvMzMgMjE3LzI4NS8zMyAyMTYvMjg2LzMzIDIxNS8yODcvMzMgMjE0LzI4OC8zMyAyMTMvMjg5LzMzIDIxMi8yOTAvMzMgMjExLzI5MS8zMyAyMTAvMjkyLzMzIDIwOS8yOTMvMzMgMjA4LzI5NC8zMyAyMDcvMjk1LzMzIDIwNi8yOTYvMzMgMjA1LzI5Ny8zMyAyMDQvMjk4LzMzIDIwMy8yOTkvMzMgMjAyLzMwMC8zMyAyMDEvMzAxLzMzIDIwMC8zMDIvMzMgMTk5LzMwMy8zMyAxOTgvMzA0LzMzIDE5Ny8zMDUvMzMgMTk2LzMwNi8zMwpmIDIyNy8zMDcvMSAyMjgvMzA4LzEgMTk5Mi8zMDkvMSAxOTkwLzMxMC8xCmYgMjI4LzMwOC8yIDIyOS8zMTEvMiAxOTk0LzMxMi8yIDE5OTUvMzEzLzIgMTk5Mi8zMDkvMgpmIDIyOS8zMTEvMyAyMzAvMzE0LzMgMTk5Ni8zMTUvMyAxOTk0LzMxMi8zCmYgMjMwLzMxNC80IDIzMS8zMTYvNCAxOTkzLzMxNy80IDE5OTYvMzE1LzQKZiAyMzEvMzE2LzUgMjMyLzMxOC81IDE5OTEvMzE5LzUgMTk5My8zMTcvNQpmIDIzMi8zMTgvNiAyMzMvMzIwLzYgMTk4OS8zMjEvNiAxOTkxLzMxOS82CmYgMjMzLzMyMC83IDIzNC8zMjIvNyAxOTg2LzMyMy83IDE5ODkvMzIxLzcKZiAyMzQvMzIyLzggMjM1LzMyNC84IDE5ODQvMzI1LzggMTk4Ni8zMjMvOApmIDIzNS8zMjQvOSAyMzYvMzI2LzkgMTk4My8zMjcvOSAxOTgyLzMyOC85IDE5ODQvMzI1LzkKZiAyMzYvMzI2LzEwIDIzNy8zMjkvMTAgMjAyNC8zMzAvMTAgMTk4My8zMjcvMTAKZiAyMzcvMzI5LzExIDIzOC8zMzEvMTEgMjAyMi8zMzIvMTEgMjAyNC8zMzAvMTEKZiAyMzgvMzMxLzEyIDIzOS8zMzMvMTIgMjAyMC8zMzQvMTIgMjAyMi8zMzIvMTIKZiAyMzkvMzMzLzEzIDI0MC8zMzUvMTMgMjAxOC8zMzYvMTMgMjAyMC8zMzQvMTMKZiAyNDAvMzM1LzE0IDI0MS8zMzcvMTQgMjAxNS8zMzgvMTQgMjAxOC8zMzYvMTQKZiAyNDEvMzM3LzE1IDI0Mi8zMzkvMTUgMjAxMy8zNDAvMTUgMjAxNS8zMzgvMTUKZiAyNDIvMzM5LzE2IDI0My8zNDEvMTYgMjAxMS8zNDIvMTYgMjAxMy8zNDAvMTYKZiAyNDMvMzQxLzE3IDI0NC8zNDMvMTcgMjAwOS8zNDQvMTcgMjAxMS8zNDIvMTcKZiAyNDQvMzQzLzE4IDI0NS8zNDUvMTggMjAwNy8zNDYvMTggMjAwOS8zNDQvMTgKZiAyNDUvMzQ1LzE5IDI0Ni8zNDcvMTkgMjAwNi8zNDgvMTkgMjAwNy8zNDYvMTkKZiAyNDYvMzQ3LzIwIDI0Ny8zNDkvMjAgMjAwOC8zNTAvMjAgMjAwNi8zNDgvMjAKZiAyNDcvMzQ5LzIxIDI0OC8zNTEvMjEgMjAxMC8zNTIvMjEgMjAwOC8zNTAvMjEKZiAyNDgvMzUxLzIyIDI0OS8zNTMvMjIgMjAxMi8zNTQvMjIgMjAxMC8zNTIvMjIKZiAyNDkvMzUzLzIzIDI1MC8zNTUvMjMgMjAxNC8zNTYvMjMgMjAxMi8zNTQvMjMKZiAyNTAvMzU1LzI0IDI1MS8zNTcvMjQgMjAxNi8zNTgvMjQgMjAxNy8zNTkvMjQgMjAxNC8zNTYvMjQKZiAyNTEvMzU3LzI1IDI1Mi8zNjAvMjUgMjAxOS8zNjEvMjUgMjAxNi8zNTgvMjUKZiAyNTIvMzYwLzI2IDI1My8zNjIvMjYgMjAyMS8zNjMvMjYgMjAxOS8zNjEvMjYKZiAyNTMvMzYyLzI3IDI1NC8zNjQvMjcgMjAyMy8zNjUvMjcgMjAyMS8zNjMvMjcKZiAyNTQvMzY0LzI4IDI1NS8zNjYvMjggMjAyNS8zNjcvMjggMjAyMy8zNjUvMjgKZiAyNTUvMzY2LzI5IDI1Ni8zNjgvMjkgMjAyNi8zNjkvMjkgMjAyNS8zNjcvMjkKZiAyNTYvMzY4LzMwIDI1Ny8zNzAvMzAgMTk4NS8zNzEvMzAgMjAyNi8zNjkvMzAKZiAyNTcvMzcwLzMxIDI1OC8zNzIvMzEgMTk4Ny8zNzMvMzEgMTk4OC8zNzQvMzEgMTk4NS8zNzEvMzEKZiAyNTgvMzcyLzMyIDIyNy8zNzUvMzIgMTk5MC8zNzYvMzIgMTk4Ny8zNzMvMzIKZiAyMjcvMzc3LzMzIDI1OC8zNzgvMzMgMjU3LzM3OS8zMyAyNTYvMzgwLzMzIDI1NS8zODEvMzMgMjU0LzM4Mi8zMyAyNTMvMzgzLzMzIDI1Mi8zODQvMzMgMjUxLzM4NS8zMyAyNTAvMzg2LzMzIDI0OS8zODcvMzMgMjQ4LzM4OC8zMyAyNDcvMzg5LzMzIDI0Ni8zOTAvMzMgMjQ1LzM5MS8zMyAyNDQvMzkyLzMzIDI0My8zOTMvMzMgMjQyLzM5NC8zMyAyNDEvMzk1LzMzIDI0MC8zOTYvMzMgMjM5LzM5Ny8zMyAyMzgvMzk4LzMzIDIzNy8zOTkvMzMgMjM2LzQwMC8zMyAyMzUvNDAxLzMzIDIzNC80MDIvMzMgMjMzLzQwMy8zMyAyMzIvNDA0LzMzIDIzMS80MDUvMzMgMjMwLzQwNi8zMyAyMjkvNDA3LzMzIDIyOC80MDgvMzMKZiAyNTkvNDA5LzEgMjYwLzQxMC8xIDE5NzcvNDExLzEgMTk3NS80MTIvMQpmIDI2MC80MTAvMiAyNjEvNDEzLzIgMTk3OS80MTQvMiAxOTgwLzQxNS8yIDE5NzcvNDExLzIKZiAyNjEvNDEzLzMgMjYyLzQxNi8zIDE5ODEvNDE3LzMgMTk3OS80MTQvMwpmIDI2Mi80MTYvNCAyNjMvNDE4LzQgMTk3OC80MTkvNCAxOTgxLzQxNy80CmYgMjYzLzQxOC81IDI2NC80MjAvNSAxOTc2LzQyMS81IDE5NzgvNDE5LzUKZiAyNjQvNDIwLzYgMjY1LzQyMi82IDE5NzQvNDIzLzYgMTk3Ni80MjEvNgpmIDI2NS80MjIvNyAyNjYvNDI0LzcgMTk3MS80MjUvNyAxOTc0LzQyMy83CmYgMjY2LzQyNC84IDI2Ny80MjYvOCAxOTY5LzQyNy84IDE5NzEvNDI1LzgKZiAyNjcvNDI2LzkgMjY4LzQyOC85IDE5NjYvNDI5LzkgMTk2OC80MzAvOSAxOTY5LzQyNy85CmYgMjY4LzQyOC8xMCAyNjkvNDMxLzEwIDE5NjQvNDMyLzEwIDE5NjYvNDI5LzEwCmYgMjY5LzQzMS8xMSAyNzAvNDMzLzExIDE5NjIvNDM0LzExIDE5NjQvNDMyLzExCmYgMjcwLzQzMy8xMiAyNzEvNDM1LzEyIDE5NjAvNDM2LzEyIDE5NjIvNDM0LzEyCmYgMjcxLzQzNS8xMyAyNzIvNDM3LzEzIDE5NTcvNDM4LzEzIDE5NjAvNDM2LzEzCmYgMjcyLzQzNy8xNCAyNzMvNDM5LzE0IDE5NTgvNDQwLzE0IDE5NTcvNDM4LzE0CmYgMjczLzQzOS8xNSAyNzQvNDQxLzE1IDIwMDQvNDQyLzE1IDE5NTgvNDQwLzE1CmYgMjc0LzQ0MS8xNiAyNzUvNDQzLzE2IDIwMDIvNDQ0LzE2IDIwMDQvNDQyLzE2CmYgMjc1LzQ0My8xNyAyNzYvNDQ1LzE3IDIwMDAvNDQ2LzE3IDIwMDIvNDQ0LzE3CmYgMjc2LzQ0NS8xOCAyNzcvNDQ3LzE4IDE5OTgvNDQ4LzE4IDIwMDAvNDQ2LzE4CmYgMjc3LzQ0Ny8xOSAyNzgvNDQ5LzE5IDE5OTcvNDUwLzE5IDE5OTgvNDQ4LzE5CmYgMjc4LzQ0OS8yMCAyNzkvNDUxLzIwIDE5OTkvNDUyLzIwIDE5OTcvNDUwLzIwCmYgMjc5LzQ1MS8yMSAyODAvNDUzLzIxIDIwMDEvNDU0LzIxIDE5OTkvNDUyLzIxCmYgMjgwLzQ1My8yMiAyODEvNDU1LzIyIDIwMDMvNDU2LzIyIDIwMDEvNDU0LzIyCmYgMjgxLzQ1NS8yMyAyODIvNDU3LzIzIDIwMDUvNDU4LzIzIDIwMDMvNDU2LzIzCmYgMjgyLzQ1Ny8yNCAyODMvNDU5LzI0IDE5NTUvNDYwLzI0IDE5NTYvNDYxLzI0IDIwMDUvNDU4LzI0CmYgMjgzLzQ1OS8yNSAyODQvNDYyLzI1IDE5NTkvNDYzLzI1IDE5NTUvNDYwLzI1CmYgMjg0LzQ2Mi8yNiAyODUvNDY0LzI2IDE5NjEvNDY1LzI2IDE5NTkvNDYzLzI2CmYgMjg1LzQ2NC8yNyAyODYvNDY2LzI3IDE5NjMvNDY3LzI3IDE5NjEvNDY1LzI3CmYgMjg2LzQ2Ni8yOCAyODcvNDY4LzI4IDE5NjUvNDY5LzI4IDE5NjMvNDY3LzI4CmYgMjg3LzQ2OC8yOSAyODgvNDcwLzI5IDE5NjcvNDcxLzI5IDE5NjUvNDY5LzI5CmYgMjg4LzQ3MC8zMCAyODkvNDcyLzMwIDE5NzAvNDczLzMwIDE5NjcvNDcxLzMwCmYgMjg5LzQ3Mi8zMSAyOTAvNDc0LzMxIDE5NzIvNDc1LzMxIDE5NzMvNDc2LzMxIDE5NzAvNDczLzMxCmYgMjkwLzQ3NC8zMiAyNTkvNDc3LzMyIDE5NzUvNDc4LzMyIDE5NzIvNDc1LzMyCmYgMjU5LzQ3OS8zMyAyOTAvNDgwLzMzIDI4OS80ODEvMzMgMjg4LzQ4Mi8zMyAyODcvNDgzLzMzIDI4Ni80ODQvMzMgMjg1LzQ4NS8zMyAyODQvNDg2LzMzIDI4My80ODcvMzMgMjgyLzQ4OC8zMyAyODEvNDg5LzMzIDI4MC80OTAvMzMgMjc5LzQ5MS8zMyAyNzgvNDkyLzMzIDI3Ny80OTMvMzMgMjc2LzQ5NC8zMyAyNzUvNDk1LzMzIDI3NC80OTYvMzMgMjczLzQ5Ny8zMyAyNzIvNDk4LzMzIDI3MS80OTkvMzMgMjcwLzUwMC8zMyAyNjkvNTAxLzMzIDI2OC81MDIvMzMgMjY3LzUwMy8zMyAyNjYvNTA0LzMzIDI2NS81MDUvMzMgMjY0LzUwNi8zMyAyNjMvNTA3LzMzIDI2Mi81MDgvMzMgMjYxLzUwOS8zMyAyNjAvNTEwLzMzCmYgMjkxLzUxMS8xIDI5Mi81MTIvMSAxOTE0LzUxMy8xIDE5MTIvNTE0LzEKZiAyOTIvNTEyLzIgMjkzLzUxNS8yIDE5MTcvNTE2LzIgMTkxNi81MTcvMiAxOTE0LzUxMy8yCmYgMjkzLzUxNS8zIDI5NC81MTgvMyAxOTE4LzUxOS8zIDE5MTcvNTE2LzMKZiAyOTQvNTE4LzQgMjk1LzUyMC80IDE5MTUvNTIxLzQgMTkxOC81MTkvNApmIDI5NS81MjAvNSAyOTYvNTIyLzUgMTkxMy81MjMvNSAxOTE1LzUyMS81CmYgMjk2LzUyMi82IDI5Ny81MjQvNiAxOTExLzUyNS82IDE5MTMvNTIzLzYKZiAyOTcvNTI0LzcgMjk4LzUyNi83IDE5MDgvNTI3LzcgMTkxMS81MjUvNwpmIDI5OC81MjYvOCAyOTkvNTI4LzggMTkwNy81MjkvOCAxOTA4LzUyNy84CmYgMjk5LzUyOC85IDMwMC81MzAvOSAxOTUxLzUzMS85IDE5NTMvNTMyLzkgMTkwNy81MjkvOQpmIDMwMC81MzAvMTAgMzAxLzUzMy8xMCAxOTQ5LzUzNC8xMCAxOTUxLzUzMS8xMApmIDMwMS81MzMvMTEgMzAyLzUzNS8xMSAxOTQ3LzUzNi8xMSAxOTQ5LzUzNC8xMQpmIDMwMi81MzUvMTIgMzAzLzUzNy8xMiAxOTQ1LzUzOC8xMiAxOTQ3LzUzNi8xMgpmIDMwMy81MzcvMTMgMzA0LzUzOS8xMyAxOTQzLzU0MC8xMyAxOTQ1LzUzOC8xMwpmIDMwNC81MzkvMTQgMzA1LzU0MS8xNCAxOTQwLzU0Mi8xNCAxOTQzLzU0MC8xNApmIDMwNS81NDEvMTUgMzA2LzU0My8xNSAxOTM4LzU0NC8xNSAxOTQwLzU0Mi8xNQpmIDMwNi81NDMvMTYgMzA3LzU0NS8xNiAxOTM2LzU0Ni8xNiAxOTM4LzU0NC8xNgpmIDMwNy81NDUvMTcgMzA4LzU0Ny8xNyAxOTM0LzU0OC8xNyAxOTM2LzU0Ni8xNwpmIDMwOC81NDcvMTggMzA5LzU0OS8xOCAxOTMxLzU1MC8xOCAxOTM0LzU0OC8xOApmIDMwOS81NDkvMTkgMzEwLzU1MS8xOSAxOTMyLzU1Mi8xOSAxOTMxLzU1MC8xOQpmIDMxMC81NTEvMjAgMzExLzU1My8yMCAxOTMzLzU1NC8yMCAxOTMyLzU1Mi8yMApmIDMxMS81NTMvMjEgMzEyLzU1NS8yMSAxOTM1LzU1Ni8yMSAxOTMzLzU1NC8yMQpmIDMxMi81NTUvMjIgMzEzLzU1Ny8yMiAxOTM3LzU1OC8yMiAxOTM1LzU1Ni8yMgpmIDMxMy81NTcvMjMgMzE0LzU1OS8yMyAxOTM5LzU2MC8yMyAxOTM3LzU1OC8yMwpmIDMxNC81NTkvMjQgMzE1LzU2MS8yNCAxOTQxLzU2Mi8yNCAxOTQyLzU2My8yNCAxOTM5LzU2MC8yNApmIDMxNS81NjEvMjUgMzE2LzU2NC8yNSAxOTQ0LzU2NS8yNSAxOTQxLzU2Mi8yNQpmIDMxNi81NjQvMjYgMzE3LzU2Ni8yNiAxOTQ2LzU2Ny8yNiAxOTQ0LzU2NS8yNgpmIDMxNy81NjYvMjcgMzE4LzU2OC8yNyAxOTQ4LzU2OS8yNyAxOTQ2LzU2Ny8yNwpmIDMxOC81NjgvMjggMzE5LzU3MC8yOCAxOTUwLzU3MS8yOCAxOTQ4LzU2OS8yOApmIDMxOS81NzAvMjkgMzIwLzU3Mi8yOSAxOTUyLzU3My8yOSAxOTUwLzU3MS8yOQpmIDMyMC81NzIvMzAgMzIxLzU3NC8zMCAxOTU0LzU3NS8zMCAxOTUyLzU3My8zMApmIDMyMS81NzQvMzEgMzIyLzU3Ni8zMSAxOTA5LzU3Ny8zMSAxOTEwLzU3OC8zMSAxOTU0LzU3NS8zMQpmIDMyMi81NzYvMzIgMjkxLzU3OS8zMiAxOTEyLzU4MC8zMiAxOTA5LzU3Ny8zMgpmIDI5MS81ODEvMzMgMzIyLzU4Mi8zMyAzMjEvNTgzLzMzIDMyMC81ODQvMzMgMzE5LzU4NS8zMyAzMTgvNTg2LzMzIDMxNy81ODcvMzMgMzE2LzU4OC8zMyAzMTUvNTg5LzMzIDMxNC81OTAvMzMgMzEzLzU5MS8zMyAzMTIvNTkyLzMzIDMxMS81OTMvMzMgMzEwLzU5NC8zMyAzMDkvNTk1LzMzIDMwOC81OTYvMzMgMzA3LzU5Ny8zMyAzMDYvNTk4LzMzIDMwNS81OTkvMzMgMzA0LzYwMC8zMyAzMDMvNjAxLzMzIDMwMi82MDIvMzMgMzAxLzYwMy8zMyAzMDAvNjA0LzMzIDI5OS82MDUvMzMgMjk4LzYwNi8zMyAyOTcvNjA3LzMzIDI5Ni82MDgvMzMgMjk1LzYwOS8zMyAyOTQvNjEwLzMzIDI5My82MTEvMzMgMjkyLzYxMi8zMwpmIDMyMy82MTMvMSAzMjQvNjE0LzEgMTkwMS82MTUvMSAxODk5LzYxNi8xCmYgMzI0LzYxNC8yIDMyNS82MTcvMiAxOTAzLzYxOC8yIDE5MDQvNjE5LzIgMTkwMS82MTUvMgpmIDMyNS82MTcvMyAzMjYvNjIwLzMgMTkwNS82MjEvMyAxOTAzLzYxOC8zCmYgMzI2LzYyMC80IDMyNy82MjIvNCAxOTAyLzYyMy80IDE5MDUvNjIxLzQKZiAzMjcvNjIyLzUgMzI4LzYyNC81IDE5MDAvNjI1LzUgMTkwMi82MjMvNQpmIDMyOC82MjQvNiAzMjkvNjI2LzYgMTg5OC82MjcvNiAxOTAwLzYyNS82CmYgMzI5LzYyNi83IDMzMC82MjgvNyAxODk1LzYyOS83IDE4OTgvNjI3LzcKZiAzMzAvNjI4LzggMzMxLzYzMC84IDE4OTIvNjMxLzggMTg5NS82MjkvOApmIDMzMS82MzAvOSAzMzIvNjMyLzkgMTg5MC82MzMvOSAxODkzLzYzNC85IDE4OTIvNjMxLzkKZiAzMzIvNjMyLzEwIDMzMy82MzUvMTAgMTg4OC82MzYvMTAgMTg5MC82MzMvMTAKZiAzMzMvNjM1LzExIDMzNC82MzcvMTEgMTg4Ni82MzgvMTEgMTg4OC82MzYvMTEKZiAzMzQvNjM3LzEyIDMzNS82MzkvMTIgMTg4NC82NDAvMTIgMTg4Ni82MzgvMTIKZiAzMzUvNjM5LzEzIDMzNi82NDEvMTMgMTg4My82NDIvMTMgMTg4NC82NDAvMTMKZiAzMzYvNjQxLzE0IDMzNy82NDMvMTQgMTkyOC82NDQvMTQgMTg4My82NDIvMTQKZiAzMzcvNjQzLzE1IDMzOC82NDUvMTUgMTkyNi82NDYvMTUgMTkyOC82NDQvMTUKZiAzMzgvNjQ1LzE2IDMzOS82NDcvMTYgMTkyNC82NDgvMTYgMTkyNi82NDYvMTYKZiAzMzkvNjQ3LzE3IDM0MC82NDkvMTcgMTkyMi82NTAvMTcgMTkyNC82NDgvMTcKZiAzNDAvNjQ5LzE4IDM0MS82NTEvMTggMTkxOS82NTIvMTggMTkyMi82NTAvMTgKZiAzNDEvNjUxLzE5IDM0Mi82NTMvMTkgMTkyMC82NTQvMTkgMTkxOS82NTIvMTkKZiAzNDIvNjUzLzIwIDM0My82NTUvMjAgMTkyMS82NTYvMjAgMTkyMC82NTQvMjAKZiAzNDMvNjU1LzIxIDM0NC82NTcvMjEgMTkyMy82NTgvMjEgMTkyMS82NTYvMjEKZiAzNDQvNjU3LzIyIDM0NS82NTkvMjIgMTkyNS82NjAvMjIgMTkyMy82NTgvMjIKZiAzNDUvNjU5LzIzIDM0Ni82NjEvMjMgMTkyNy82NjIvMjMgMTkyNS82NjAvMjMKZiAzNDYvNjYxLzI0IDM0Ny82NjMvMjQgMTkyOS82NjQvMjQgMTkzMC82NjUvMjQgMTkyNy82NjIvMjQKZiAzNDcvNjYzLzI1IDM0OC82NjYvMjUgMTg4Mi82NjcvMjUgMTkyOS82NjQvMjUKZiAzNDgvNjY2LzI2IDM0OS82NjgvMjYgMTg4NS82NjkvMjYgMTg4Mi82NjcvMjYKZiAzNDkvNjY4LzI3IDM1MC82NzAvMjcgMTg4Ny82NzEvMjcgMTg4NS82NjkvMjcKZiAzNTAvNjcwLzI4IDM1MS82NzIvMjggMTg4OS82NzMvMjggMTg4Ny82NzEvMjgKZiAzNTEvNjcyLzI5IDM1Mi82NzQvMjkgMTg5MS82NzUvMjkgMTg4OS82NzMvMjkKZiAzNTIvNjc0LzMwIDM1My82NzYvMzAgMTg5NC82NzcvMzAgMTg5MS82NzUvMzAKZiAzNTMvNjc2LzMxIDM1NC82NzgvMzEgMTg5Ni82NzkvMzEgMTg5Ny82ODAvMzEgMTg5NC82NzcvMzEKZiAzNTQvNjc4LzMyIDMyMy82ODEvMzIgMTg5OS82ODIvMzIgMTg5Ni82NzkvMzIKZiAzMjMvNjgzLzMzIDM1NC82ODQvMzMgMzUzLzY4NS8zMyAzNTIvNjg2LzMzIDM1MS82ODcvMzMgMzUwLzY4OC8zMyAzNDkvNjg5LzMzIDM0OC82OTAvMzMgMzQ3LzY5MS8zMyAzNDYvNjkyLzMzIDM0NS82OTMvMzMgMzQ0LzY5NC8zMyAzNDMvNjk1LzMzIDM0Mi82OTYvMzMgMzQxLzY5Ny8zMyAzNDAvNjk4LzMzIDMzOS82OTkvMzMgMzM4LzcwMC8zMyAzMzcvNzAxLzMzIDMzNi83MDIvMzMgMzM1LzcwMy8zMyAzMzQvNzA0LzMzIDMzMy83MDUvMzMgMzMyLzcwNi8zMyAzMzEvNzA3LzMzIDMzMC83MDgvMzMgMzI5LzcwOS8zMyAzMjgvNzEwLzMzIDMyNy83MTEvMzMgMzI2LzcxMi8zMyAzMjUvNzEzLzMzIDMyNC83MTQvMzMKZiAzNTUvNzE1LzEgMzU2LzcxNi8xIDE4MTYvNzE3LzEgMTgxNC83MTgvMQpmIDM1Ni83MTYvMiAzNTcvNzE5LzIgMTgxOS83MjAvMiAxODE4LzcyMS8yIDE4MTYvNzE3LzIKZiAzNTcvNzE5LzMgMzU4LzcyMi8zIDE4MjAvNzIzLzMgMTgxOS83MjAvMwpmIDM1OC83MjIvNCAzNTkvNzI0LzQgMTgxNy83MjUvNCAxODIwLzcyMy80CmYgMzU5LzcyNC81IDM2MC83MjYvNSAxODE1LzcyNy81IDE4MTcvNzI1LzUKZiAzNjAvNzI2LzYgMzYxLzcyOC82IDE4MTMvNzI5LzYgMTgxNS83MjcvNgpmIDM2MS83MjgvNyAzNjIvNzMwLzcgMTgxMi83MzEvNyAxODEzLzcyOS83CmYgMzYyLzczMC84IDM2My83MzIvOCAxODc4LzczMy84IDE4MTIvNzMxLzgKZiAzNjMvNzMyLzkgMzY0LzczNC85IDE4NzYvNzM1LzkgMTg3OS83MzYvOSAxODc4LzczMy85CmYgMzY0LzczNC8xMCAzNjUvNzM3LzEwIDE4NzQvNzM4LzEwIDE4NzYvNzM1LzEwCmYgMzY1LzczNy8xMSAzNjYvNzM5LzExIDE4NzIvNzQwLzExIDE4NzQvNzM4LzExCmYgMzY2LzczOS8xMiAzNjcvNzQxLzEyIDE4NzAvNzQyLzEyIDE4NzIvNzQwLzEyCmYgMzY3Lzc0MS8xMyAzNjgvNzQzLzEzIDE4NjgvNzQ0LzEzIDE4NzAvNzQyLzEzCmYgMzY4Lzc0My8xNCAzNjkvNzQ1LzE0IDE4NjUvNzQ2LzE0IDE4NjgvNzQ0LzE0CmYgMzY5Lzc0NS8xNSAzNzAvNzQ3LzE1IDE4NjMvNzQ4LzE1IDE4NjUvNzQ2LzE1CmYgMzcwLzc0Ny8xNiAzNzEvNzQ5LzE2IDE4NjEvNzUwLzE2IDE4NjMvNzQ4LzE2CmYgMzcxLzc0OS8xNyAzNzIvNzUxLzE3IDE4NTgvNzUyLzE3IDE4NjEvNzUwLzE3CmYgMzcyLzc1MS8xOCAzNzMvNzUzLzE4IDE4NTkvNzU0LzE4IDE4NTgvNzUyLzE4CmYgMzczLzc1My8xOSAzNzQvNzU1LzE5IDE5MDYvNzU2LzE5IDE4NTkvNzU0LzE5CmYgMzc0Lzc1NS8yMCAzNzUvNzU3LzIwIDE4NTcvNzU4LzIwIDE5MDYvNzU2LzIwCmYgMzc1Lzc1Ny8yMSAzNzYvNzU5LzIxIDE4NjAvNzYwLzIxIDE4NTcvNzU4LzIxCmYgMzc2Lzc1OS8yMiAzNzcvNzYxLzIyIDE4NjIvNzYyLzIyIDE4NjAvNzYwLzIyCmYgMzc3Lzc2MS8yMyAzNzgvNzYzLzIzIDE4NjQvNzY0LzIzIDE4NjIvNzYyLzIzCmYgMzc4Lzc2My8yNCAzNzkvNzY1LzI0IDE4NjYvNzY2LzI0IDE4NjcvNzY3LzI0IDE4NjQvNzY0LzI0CmYgMzc5Lzc2NS8yNSAzODAvNzY4LzI1IDE4NjkvNzY5LzI1IDE4NjYvNzY2LzI1CmYgMzgwLzc2OC8yNiAzODEvNzcwLzI2IDE4NzEvNzcxLzI2IDE4NjkvNzY5LzI2CmYgMzgxLzc3MC8yNyAzODIvNzcyLzI3IDE4NzMvNzczLzI3IDE4NzEvNzcxLzI3CmYgMzgyLzc3Mi8yOCAzODMvNzc0LzI4IDE4NzUvNzc1LzI4IDE4NzMvNzczLzI4CmYgMzgzLzc3NC8yOSAzODQvNzc2LzI5IDE4NzcvNzc3LzI5IDE4NzUvNzc1LzI5CmYgMzg0Lzc3Ni8zMCAzODUvNzc4LzMwIDE4ODAvNzc5LzMwIDE4NzcvNzc3LzMwCmYgMzg1Lzc3OC8zMSAzODYvNzgwLzMxIDE4MTEvNzgxLzMxIDE4ODEvNzgyLzMxIDE4ODAvNzc5LzMxCmYgMzg2Lzc4MC8zMiAzNTUvNzgzLzMyIDE4MTQvNzg0LzMyIDE4MTEvNzgxLzMyCmYgMzU1Lzc4NS8zMyAzODYvNzg2LzMzIDM4NS83ODcvMzMgMzg0Lzc4OC8zMyAzODMvNzg5LzMzIDM4Mi83OTAvMzMgMzgxLzc5MS8zMyAzODAvNzkyLzMzIDM3OS83OTMvMzMgMzc4Lzc5NC8zMyAzNzcvNzk1LzMzIDM3Ni83OTYvMzMgMzc1Lzc5Ny8zMyAzNzQvNzk4LzMzIDM3My83OTkvMzMgMzcyLzgwMC8zMyAzNzEvODAxLzMzIDM3MC84MDIvMzMgMzY5LzgwMy8zMyAzNjgvODA0LzMzIDM2Ny84MDUvMzMgMzY2LzgwNi8zMyAzNjUvODA3LzMzIDM2NC84MDgvMzMgMzYzLzgwOS8zMyAzNjIvODEwLzMzIDM2MS84MTEvMzMgMzYwLzgxMi8zMyAzNTkvODEzLzMzIDM1OC84MTQvMzMgMzU3LzgxNS8zMyAzNTYvODE2LzMzCmYgMzg3LzgxNy8xIDM4OC84MTgvMSAxODUyLzgxOS8xIDE4NTAvODIwLzEKZiAzODgvODE4LzIgMzg5LzgyMS8yIDE4NTUvODIyLzIgMTg1NC84MjMvMiAxODUyLzgxOS8yCmYgMzg5LzgyMS8zIDM5MC84MjQvMyAxODU2LzgyNS8zIDE4NTUvODIyLzMKZiAzOTAvODI0LzQgMzkxLzgyNi80IDE4NTMvODI3LzQgMTg1Ni84MjUvNApmIDM5MS84MjYvNSAzOTIvODI4LzUgMTg1MS84MjkvNSAxODUzLzgyNy81CmYgMzkyLzgyOC82IDM5My84MzAvNiAxODQ5LzgzMS82IDE4NTEvODI5LzYKZiAzOTMvODMwLzcgMzk0LzgzMi83IDE4NDYvODMzLzcgMTg0OS84MzEvNwpmIDM5NC84MzIvOCAzOTUvODM0LzggMTg0NC84MzUvOCAxODQ2LzgzMy84CmYgMzk1LzgzNC85IDM5Ni84MzYvOSAxODQxLzgzNy85IDE4NDMvODM4LzkgMTg0NC84MzUvOQpmIDM5Ni84MzYvMTAgMzk3LzgzOS8xMCAxODM5Lzg0MC8xMCAxODQxLzgzNy8xMApmIDM5Ny84MzkvMTEgMzk4Lzg0MS8xMSAxODM3Lzg0Mi8xMSAxODM5Lzg0MC8xMQpmIDM5OC84NDEvMTIgMzk5Lzg0My8xMiAxODM1Lzg0NC8xMiAxODM3Lzg0Mi8xMgpmIDM5OS84NDMvMTMgNDAwLzg0NS8xMyAxODMzLzg0Ni8xMyAxODM1Lzg0NC8xMwpmIDQwMC84NDUvMTQgNDAxLzg0Ny8xNCAxODMwLzg0OC8xNCAxODMzLzg0Ni8xNApmIDQwMS84NDcvMTUgNDAyLzg0OS8xNSAxODI4Lzg1MC8xNSAxODMwLzg0OC8xNQpmIDQwMi84NDkvMTYgNDAzLzg1MS8xNiAxODI2Lzg1Mi8xNiAxODI4Lzg1MC8xNgpmIDQwMy84NTEvMTcgNDA0Lzg1My8xNyAxODI0Lzg1NC8xNyAxODI2Lzg1Mi8xNwpmIDQwNC84NTMvMTggNDA1Lzg1NS8xOCAxODIyLzg1Ni8xOCAxODI0Lzg1NC8xOApmIDQwNS84NTUvMTkgNDA2Lzg1Ny8xOSAxODIxLzg1OC8xOSAxODIyLzg1Ni8xOQpmIDQwNi84NTcvMjAgNDA3Lzg1OS8yMCAxODIzLzg2MC8yMCAxODIxLzg1OC8yMApmIDQwNy84NTkvMjEgNDA4Lzg2MS8yMSAxODI1Lzg2Mi8yMSAxODIzLzg2MC8yMQpmIDQwOC84NjEvMjIgNDA5Lzg2My8yMiAxODI3Lzg2NC8yMiAxODI1Lzg2Mi8yMgpmIDQwOS84NjMvMjMgNDEwLzg2NS8yMyAxODI5Lzg2Ni8yMyAxODI3Lzg2NC8yMwpmIDQxMC84NjUvMjQgNDExLzg2Ny8yNCAxODMxLzg2OC8yNCAxODMyLzg2OS8yNCAxODI5Lzg2Ni8yNApmIDQxMS84NjcvMjUgNDEyLzg3MC8yNSAxODM0Lzg3MS8yNSAxODMxLzg2OC8yNQpmIDQxMi84NzAvMjYgNDEzLzg3Mi8yNiAxODM2Lzg3My8yNiAxODM0Lzg3MS8yNgpmIDQxMy84NzIvMjcgNDE0Lzg3NC8yNyAxODM4Lzg3NS8yNyAxODM2Lzg3My8yNwpmIDQxNC84NzQvMjggNDE1Lzg3Ni8yOCAxODQwLzg3Ny8yOCAxODM4Lzg3NS8yOApmIDQxNS84NzYvMjkgNDE2Lzg3OC8yOSAxODQyLzg3OS8yOSAxODQwLzg3Ny8yOQpmIDQxNi84NzgvMzAgNDE3Lzg4MC8zMCAxODQ1Lzg4MS8zMCAxODQyLzg3OS8zMApmIDQxNy84ODAvMzEgNDE4Lzg4Mi8zMSAxODQ3Lzg4My8zMSAxODQ4Lzg4NC8zMSAxODQ1Lzg4MS8zMQpmIDQxOC84ODIvMzIgMzg3Lzg4NS8zMiAxODUwLzg4Ni8zMiAxODQ3Lzg4My8zMgpmIDM4Ny84ODcvMzMgNDE4Lzg4OC8zMyA0MTcvODg5LzMzIDQxNi84OTAvMzMgNDE1Lzg5MS8zMyA0MTQvODkyLzMzIDQxMy84OTMvMzMgNDEyLzg5NC8zMyA0MTEvODk1LzMzIDQxMC84OTYvMzMgNDA5Lzg5Ny8zMyA0MDgvODk4LzMzIDQwNy84OTkvMzMgNDA2LzkwMC8zMyA0MDUvOTAxLzMzIDQwNC85MDIvMzMgNDAzLzkwMy8zMyA0MDIvOTA0LzMzIDQwMS85MDUvMzMgNDAwLzkwNi8zMyAzOTkvOTA3LzMzIDM5OC85MDgvMzMgMzk3LzkwOS8zMyAzOTYvOTEwLzMzIDM5NS85MTEvMzMgMzk0LzkxMi8zMyAzOTMvOTEzLzMzIDM5Mi85MTQvMzMgMzkxLzkxNS8zMyAzOTAvOTE2LzMzIDM4OS85MTcvMzMgMzg4LzkxOC8zMwpmIDQxOS85MTkvMSA0MjAvOTIwLzEgMTc3MC85MjEvMSAxNzY3LzkyMi8xCmYgNDIwLzkyMC8yIDQyMS85MjMvMiAxNzcyLzkyNC8yIDE3NzMvOTI1LzIgMTc3MC85MjEvMgpmIDQyMS85MjMvMyA0MjIvOTI2LzMgMTc3NC85MjcvMyAxNzcyLzkyNC8zCmYgNDIyLzkyNi80IDQyMy85MjgvNCAxNzcxLzkyOS80IDE3NzQvOTI3LzQKZiA0MjMvOTI4LzUgNDI0LzkzMC81IDE3NjgvOTMxLzUgMTc3MS85MjkvNQpmIDQyNC85MzAvNiA0MjUvOTMyLzYgMTc2Ni85MzMvNiAxNzY5LzkzNC82IDE3NjgvOTMxLzYKZiA0MjUvOTMyLzcgNDI2LzkzNS83IDE3NjUvOTM2LzcgMTc2Ni85MzMvNwpmIDQyNi85MzUvOCA0MjcvOTM3LzggMTc2My85MzgvOCAxNzY1LzkzNi84CmYgNDI3LzkzNy85IDQyOC85MzkvOSAxNzYyLzk0MC85IDE3NjQvOTQxLzkgMTc2My85MzgvOQpmIDQyOC85MzkvMTAgNDI5Lzk0Mi8xMCAxNzYwLzk0My8xMCAxNzYyLzk0MC8xMApmIDQyOS85NDIvMTEgNDMwLzk0NC8xMSAxNzU5Lzk0NS8xMSAxNzYxLzk0Ni8xMSAxNzYwLzk0My8xMQpmIDQzMC85NDQvMTIgNDMxLzk0Ny8xMiAxNzU3Lzk0OC8xMiAxNzU5Lzk0NS8xMgpmIDQzMS85NDcvMTMgNDMyLzk0OS8xMyAxNzU4Lzk1MC8xMyAxNzU3Lzk0OC8xMwpmIDQzMi85NDkvMTQgNDMzLzk1MS8xNCAxNzc1Lzk1Mi8xNCAxNzU4Lzk1MC8xNApmIDQzMy85NTEvMTUgNDM0Lzk1My8xNSAxNzc2Lzk1NC8xNSAxNzc1Lzk1Mi8xNQpmIDQzNC85NTMvMTYgNDM1Lzk1NS8xNiAxNzgxLzk1Ni8xNiAxNzc2Lzk1NC8xNgpmIDQzNS85NTUvMzQgNDM2Lzk1Ny8zNCAxNzg5Lzk1OC8zNCAxNzgxLzk1Ni8zNApmIDQzNi85NTcvMTggNDM3Lzk1OS8xOCAxNzkzLzk2MC8xOCAxNzg5Lzk1OC8xOApmIDQzNy85NTkvMTkgNDM4Lzk2MS8xOSAxNzk2Lzk2Mi8xOSAxNzkzLzk2MC8xOQpmIDQzOC85NjEvMjAgNDM5Lzk2My8yMCAxNzkyLzk2NC8yMCAxNzk2Lzk2Mi8yMApmIDQzOS85NjMvMjEgNDQwLzk2NS8yMSAxNzk1Lzk2Ni8yMSAxNzkyLzk2NC8yMQpmIDQ0MC85NjUvMjIgNDQxLzk2Ny8yMiAxNzkwLzk2OC8yMiAxNzk0Lzk2OS8yMiAxNzk1Lzk2Ni8yMgpmIDQ0MS85NjcvMjMgNDQyLzk3MC8yMyAxNzkxLzk3MS8yMyAxNzkwLzk2OC8yMwpmIDQ0Mi85NzAvMjQgNDQzLzk3Mi8yNCAxNzg0Lzk3My8yNCAxNzg1Lzk3NC8yNCAxNzkxLzk3MS8yNApmIDQ0My85NzIvMjUgNDQ0Lzk3NS8yNSAxNzg2Lzk3Ni8yNSAxNzg0Lzk3My8yNQpmIDQ0NC85NzUvMjYgNDQ1Lzk3Ny8yNiAxNzg4Lzk3OC8yNiAxNzg2Lzk3Ni8yNgpmIDQ0NS85NzcvMjcgNDQ2Lzk3OS8yNyAxNzgyLzk4MC8yNyAxNzg3Lzk4MS8yNyAxNzg4Lzk3OC8yNwpmIDQ0Ni85NzkvMjggNDQ3Lzk4Mi8yOCAxNzgzLzk4My8yOCAxNzgyLzk4MC8yOApmIDQ0Ny85ODIvMjkgNDQ4Lzk4NC8yOSAxNzc3Lzk4NS8yOSAxNzgzLzk4My8yOQpmIDQ0OC85ODQvMzAgNDQ5Lzk4Ni8zMCAxNzc4Lzk4Ny8zMCAxNzc3Lzk4NS8zMApmIDQ0OS85ODYvMzEgNDUwLzk4OC8zMSAxNzgwLzk4OS8zMSAxNzc5Lzk5MC8zMSAxNzc4Lzk4Ny8zMQpmIDQ1MC85ODgvMzUgNDE5Lzk5MS8zNSAxNzY3Lzk5Mi8zNSAxNzgwLzk4OS8zNQpmIDQxOS85OTMvMzMgNDUwLzk5NC8zMyA0NDkvOTk1LzMzIDQ0OC85OTYvMzMgNDQ3Lzk5Ny8zMyA0NDYvOTk4LzMzIDQ0NS85OTkvMzMgNDQ0LzEwMDAvMzMgNDQzLzEwMDEvMzMgNDQyLzEwMDIvMzMgNDQxLzEwMDMvMzMgNDQwLzEwMDQvMzMgNDM5LzEwMDUvMzMgNDM4LzEwMDYvMzMgNDM3LzEwMDcvMzMgNDM2LzEwMDgvMzMgNDM1LzEwMDkvMzMgNDM0LzEwMTAvMzMgNDMzLzEwMTEvMzMgNDMyLzEwMTIvMzMgNDMxLzEwMTMvMzMgNDMwLzEwMTQvMzMgNDI5LzEwMTUvMzMgNDI4LzEwMTYvMzMgNDI3LzEwMTcvMzMgNDI2LzEwMTgvMzMgNDI1LzEwMTkvMzMgNDI0LzEwMjAvMzMgNDIzLzEwMjEvMzMgNDIyLzEwMjIvMzMgNDIxLzEwMjMvMzMgNDIwLzEwMjQvMzMKZiAxMzczLzEwMjUvMzYgMTM3NC8xMDI2LzM2IDEzNjkvMTAyNy8zNiAxMzcyLzEwMjgvMzYKZiAxMzc0LzEwMjYvMzcgMTM3NS8xMDI5LzM3IDEzNjYvMTAzMC8zNyAxMzY4LzEwMzEvMzcgMTM2OS8xMDI3LzM3CmYgMTM3NS8xMDI5LzM4IDEzNzYvMTAzMi8zOCAxMzY1LzEwMzMvMzggMTM2Ni8xMDMwLzM4CmYgMTM3Ni8xMDMyLzM5IDEzNzcvMTAzNC8zOSAxMzYxLzEwMzUvMzkgMTM2NS8xMDMzLzM5CmYgMTM3Ny8xMDM0LzQwIDEzNzgvMTAzNi80MCAxMzU4LzEwMzcvNDAgMTM2MC8xMDM4LzQwIDEzNjEvMTAzNS80MApmIDEzNzgvMTAzNi80MSAxMzc5LzEwMzkvNDEgMTM1Ni8xMDQwLzQxIDEzNTgvMTAzNy80MQpmIDEzNzkvMTAzOS80MiAxMzgwLzEwNDEvNDIgMTM1NS8xMDQyLzQyIDEzNTYvMTA0MC80MgpmIDEzODAvMTA0MS80MyAxMzgxLzEwNDMvNDMgMTMzNS8xMDQ0LzQzIDEzNTUvMTA0Mi80MwpmIDEzODEvMTA0My80NCAxMzgyLzEwNDUvNDQgMTMzNi8xMDQ2LzQ0IDEzMzUvMTA0NC80NApmIDEzODIvMTA0NS80NSAxMzgzLzEwNDcvNDUgMTMzOC8xMDQ4LzQ1IDEzMzYvMTA0Ni80NQpmIDEzODMvMTA0Ny80NiAxMzg0LzEwNDkvNDYgMTM0MC8xMDUwLzQ2IDEzMzgvMTA0OC80NgpmIDEzODQvMTA0OS80NyAxMzg1LzEwNTEvNDcgMTM0Mi8xMDUyLzQ3IDEzNDMvMTA1My80NyAxMzQwLzEwNTAvNDcKZiAxMzg1LzEwNTEvNDggMTM4Ni8xMDU0LzQ4IDEzNDYvMTA1NS80OCAxMzQyLzEwNTIvNDgKZiAxMzg2LzEwNTQvNDkgMTM4Ny8xMDU2LzQ5IDEzNDkvMTA1Ny80OSAxMzQ2LzEwNTUvNDkKZiAxMzg3LzEwNTYvNTAgMTM4OC8xMDU4LzUwIDEzNTMvMTA1OS81MCAxMzU0LzEwNjAvNTAgMTM0OS8xMDU3LzUwCmYgMTM4OC8xMDU4LzUxIDEzODkvMTA2MS81MSAxMzUyLzEwNjIvNTEgMTM1My8xMDU5LzUxCmYgMTM4OS8xMDYxLzUyIDEzOTAvMTA2My81MiAxMzQ4LzEwNjQvNTIgMTM1Mi8xMDYyLzUyCmYgMTM5MC8xMDYzLzUzIDEzOTEvMTA2NS81MyAxMzUxLzEwNjYvNTMgMTM1MC8xMDY3LzUzIDEzNDgvMTA2NC81MwpmIDEzOTEvMTA2NS81NCAxMzkyLzEwNjgvNTQgMTM0Ny8xMDY5LzU0IDEzNTEvMTA2Ni81NApmIDEzOTIvMTA2OC81NSAxMzkzLzEwNzAvNTUgMTM0NC8xMDcxLzU1IDEzNDcvMTA2OS81NQpmIDEzOTMvMTA3MC81NiAxMzk0LzEwNzIvNTYgMTM0MS8xMDczLzU2IDEzNDUvMTA3NC81NiAxMzQ0LzEwNzEvNTYKZiAxMzk0LzEwNzIvNTcgMTM5NS8xMDc1LzU3IDEzMzkvMTA3Ni81NyAxMzQxLzEwNzMvNTcKZiAxMzk1LzEwNzUvNTggMTM5Ni8xMDc3LzU4IDEzMzcvMTA3OC81OCAxMzM5LzEwNzYvNTgKZiAxMzk2LzEwNzcvNTkgMTM5Ny8xMDc5LzU5IDEzMzMvMTA4MC81OSAxMzM3LzEwNzgvNTkKZiAxMzk3LzEwNzkvNjAgMTM5OC8xMDgxLzYwIDEzMzQvMTA4Mi82MCAxMzMzLzEwODAvNjAKZiAxMzk4LzEwODEvNjEgMTM5OS8xMDgzLzYxIDEzNTcvMTA4NC82MSAxMzM0LzEwODIvNjEKZiAxMzk5LzEwODMvNjIgMTQwMC8xMDg1LzYyIDEzNTkvMTA4Ni82MiAxMzU3LzEwODQvNjIKZiAxNDAwLzEwODUvNjMgMTQwMS8xMDg3LzYzIDEzNjIvMTA4OC82MyAxMzYzLzEwODkvNjMgMTM1OS8xMDg2LzYzCmYgMTQwMS8xMDg3LzY0IDE0MDIvMTA5MC82NCAxMzY0LzEwOTEvNjQgMTM2Mi8xMDg4LzY0CmYgMTQwMi8xMDkwLzY1IDE0MDMvMTA5Mi82NSAxMzY3LzEwOTMvNjUgMTM2NC8xMDkxLzY1CmYgMTQwMy8xMDkyLzY2IDE0MDQvMTA5NC82NiAxMzcwLzEwOTUvNjYgMTM3MS8xMDk2LzY2IDEzNjcvMTA5My82NgpmIDE0MDQvMTA5NC82NyAxMzczLzEwOTcvNjcgMTM3Mi8xMDk4LzY3IDEzNzAvMTA5NS82NwpmIDQ1MS8xMDk5LzY4IDQ1Mi8xMTAwLzY4IDEzNzQvMTEwMS82OCAxMzczLzExMDIvNjgKZiA0NTIvMTEwMC82OCA0NTMvMTEwMy82OCAxMzc1LzExMDQvNjggMTM3NC8xMTAxLzY4CmYgNDUzLzExMDMvNjkgNDU0LzExMDUvNjkgMTM3Ni8xMTA2LzY5IDEzNzUvMTEwNC82OQpmIDQ1NC8xMTA1LzY4IDQ1NS8xMTA3LzY4IDEzNzcvMTEwOC82OCAxMzc2LzExMDYvNjgKZiA0NTUvMTEwNy82OCA0NTYvMTEwOS82OCAxMzc4LzExMTAvNjggMTM3Ny8xMTA4LzY4CmYgNDU2LzExMDkvNjggNDU3LzExMTEvNjggMTM3OS8xMTEyLzY4IDEzNzgvMTExMC82OApmIDQ1Ny8xMTExLzY5IDQ1OC8xMTEzLzY5IDEzODAvMTExNC82OSAxMzc5LzExMTIvNjkKZiA0NTgvMTExMy82OSA0NTkvMTExNS82OSAxMzgxLzExMTYvNjkgMTM4MC8xMTE0LzY5CmYgNDU5LzExMTUvNjkgNDYwLzExMTcvNjkgMTM4Mi8xMTE4LzY5IDEzODEvMTExNi82OQpmIDQ2MC8xMTE3LzY4IDQ2MS8xMTE5LzY4IDEzODMvMTEyMC82OCAxMzgyLzExMTgvNjgKZiA0NjEvMTExOS82OCA0NjIvMTEyMS82OCAxMzg0LzExMjIvNjggMTM4My8xMTIwLzY4CmYgNDYyLzExMjEvNjggNDYzLzExMjMvNjggMTM4NS8xMTI0LzY4IDEzODQvMTEyMi82OApmIDQ2My8xMTIzLzY4IDQ2NC8xMTI1LzY4IDEzODYvMTEyNi82OCAxMzg1LzExMjQvNjgKZiA0NjQvMTEyNS82OCA0NjUvMTEyNy82OCAxMzg3LzExMjgvNjggMTM4Ni8xMTI2LzY4CmYgNDY1LzExMjcvNjggNDY2LzExMjkvNjggMTM4OC8xMTMwLzY4IDEzODcvMTEyOC82OApmIDQ2Ni8xMTI5LzY4IDQ2Ny8xMTMxLzY4IDEzODkvMTEzMi82OCAxMzg4LzExMzAvNjgKZiA0NjcvMTEzMS82OCA0NjgvMTEzMy82OCAxMzkwLzExMzQvNjggMTM4OS8xMTMyLzY4CmYgNDY4LzExMzMvNjggNDY5LzExMzUvNjggMTM5MS8xMTM2LzY4IDEzOTAvMTEzNC82OApmIDQ2OS8xMTM1LzY4IDQ3MC8xMTM3LzY4IDEzOTIvMTEzOC82OCAxMzkxLzExMzYvNjgKZiA0NzAvMTEzNy82OCA0NzEvMTEzOS82OCAxMzkzLzExNDAvNjggMTM5Mi8xMTM4LzY4CmYgNDcxLzExMzkvNjggNDcyLzExNDEvNjggMTM5NC8xMTQyLzY4IDEzOTMvMTE0MC82OApmIDQ3Mi8xMTQxLzY4IDQ3My8xMTQzLzY4IDEzOTUvMTE0NC82OCAxMzk0LzExNDIvNjgKZiA0NzMvMTE0My83MCA0NzQvMTE0NS83MCAxMzk2LzExNDYvNzAgMTM5NS8xMTQ0LzcwCmYgNDc0LzExNDUvNzAgNDc1LzExNDcvNzAgMTM5Ny8xMTQ4LzcwIDEzOTYvMTE0Ni83MApmIDQ3NS8xMTQ3LzcwIDQ3Ni8xMTQ5LzcwIDEzOTgvMTE1MC83MCAxMzk3LzExNDgvNzAKZiA0NzYvMTE0OS82OCA0NzcvMTE1MS82OCAxMzk5LzExNTIvNjggMTM5OC8xMTUwLzY4CmYgNDc3LzExNTEvNjkgNDc4LzExNTMvNjkgMTQwMC8xMTU0LzY5IDEzOTkvMTE1Mi82OQpmIDQ3OC8xMTUzLzY4IDQ3OS8xMTU1LzY4IDE0MDEvMTE1Ni82OCAxNDAwLzExNTQvNjgKZiA0NzkvMTE1NS82OCA0ODAvMTE1Ny82OCAxNDAyLzExNTgvNjggMTQwMS8xMTU2LzY4CmYgNDgwLzExNTcvNjggNDgxLzExNTkvNjggMTQwMy8xMTYwLzY4IDE0MDIvMTE1OC82OApmIDQ4MS8xMTU5LzY4IDQ4Mi8xMTYxLzY4IDE0MDQvMTE2Mi82OCAxNDAzLzExNjAvNjgKZiA0ODIvMTE2MS82OCA0NTEvMTA5OS82OCAxMzczLzExMDIvNjggMTQwNC8xMTYyLzY4CmYgMTUxNy8xMTYzLzcxIDE1MjgvMTE2NC83MSAxNTI5LzExNjUvNzEgMTUxOC8xMTY2LzcxCmYgMjIzNS8xMTY3LzcyIDIzMzMvMTE2OC83MiAyMzMyLzExNjkvNzIgMjIzMS8xMTcwLzcyCmYgMjIyNS8xMTcxLzczIDIzNDEvMTE3Mi83MyAyMzQwLzExNzMvNzMgMjIyMC8xMTc0LzczCmYgMjIyOC8xMTc1Lzc0IDIzNDIvMTE3Ni83NCAyMzQxLzExNzIvNzQgMjIyNS8xMTcxLzc0CmYgMjIzNC8xMTc3Lzc1IDIzMzQvMTE3OC83NSAyMzMzLzExNjgvNzUgMjIzNS8xMTY3Lzc1IDIyMzYvMTE3OS83NQpmIDIyMDUvMTE4MC83NiAyMzE4LzExODEvNzYgMjMxNy8xMTgyLzc2IDIyMDcvMTE4My83NiAyMjA2LzExODQvNzYKZiAyMjA0LzExODUvNzcgMjMxNi8xMTg2Lzc3IDIzMTUvMTE4Ny83NyAyMjAzLzExODgvNzcKZiAyMjA4LzExODkvNzggMjMyMC8xMTkwLzc4IDIzMTkvMTE5MS83OCAyMjA5LzExOTIvNzgKZiAyMjE1LzExOTMvNzkgMjMyNi8xMTk0Lzc5IDIzMjUvMTE5NS83OSAyMjE2LzExOTYvNzkKZiAyMjMyLzExOTcvODAgMjMzNy8xMTk4LzgwIDIzMzYvMTE5OS84MCAyMjMzLzEyMDAvODAgMjIzNy8xMjAxLzgwCmYgMjIyNy8xMjAyLzgxIDIzMjgvMTIwMy84MSAyMzI3LzEyMDQvODEgMjIxNC8xMjA1LzgxCmYgMjIxMC8xMjA2LzgyIDIzMjIvMTIwNy84MiAyMzIxLzEyMDgvODIgMjIxMS8xMjA5LzgyCmYgMjIxMS8xMjA5LzgzIDIzMjEvMTIwOC84MyAyMzIwLzExOTAvODMgMjIwOC8xMTg5LzgzIDIyMTIvMTIxMC84MwpmIDIyMDMvMTE4OC84NCAyMzE1LzExODcvODQgMjMxNC8xMjExLzg0IDIyMDEvMTIxMi84NCAyMjAyLzEyMTMvODQKZiAyMjE0LzEyMDUvODUgMjMyNy8xMjA0Lzg1IDIzMjYvMTE5NC84NSAyMjE1LzExOTMvODUKZiAyMjE2LzExOTYvODYgMjMyNS8xMTk1Lzg2IDIzMjQvMTIxNC84NiAyMjE4LzEyMTUvODYgMjIxNy8xMjE2Lzg2CmYgMjIwOS8xMTkyLzg3IDIzMTkvMTE5MS84NyAyMzE4LzExODEvODcgMjIwNS8xMTgwLzg3CmYgMjIyNi8xMjE3Lzg4IDIzMjkvMTIxOC84OCAyMzI4LzEyMDMvODggMjIyNy8xMjAyLzg4CmYgMjIyMS8xMjE5Lzg5IDIzMzkvMTIyMC84OSAyMzM4LzEyMjEvODkgMjIzMC8xMjIyLzg5CmYgMjIwMS8xMjEyLzkwIDIzMTQvMTIxMS85MCAyMzEzLzEyMjMvOTAgMjIwMC8xMjI0LzkwCmYgMjIxOC8xMjE1LzkxIDIzMjQvMTIxNC85MSAyMzIzLzEyMjUvOTEgMjIxMy8xMjI2LzkxCmYgMjIzOC8xMjI3LzkyIDIzMzUvMTIyOC85MiAyMzM0LzExNzgvOTIgMjIzNC8xMTc3LzkyCmYgMjIwMC8xMjI0LzkzIDIzMTMvMTIyMy85MyAyMzExLzEyMjkvOTMgMjE5OS8xMjMwLzkzCmYgMjE5OS8xMjMwLzk0IDIzMTEvMTIyOS85NCAyMzEyLzEyMzEvOTQgMjIyOS8xMjMyLzk0CmYgMjIyOS8xMjMzLzk1IDIzMTIvMTIzNC85NSAyMzQyLzExNzYvOTUgMjIyOC8xMTc1Lzk1CmYgMjIzMS8xMTcwLzk2IDIzMzIvMTE2OS85NiAyMzMxLzEyMzUvOTYgMjIyMi8xMjM2Lzk2CmYgMjIyMC8xMTc0Lzk3IDIzNDAvMTE3My85NyAyMzM5LzEyMjAvOTcgMjIyMS8xMjE5Lzk3IDIyMTkvMTIzNy85NwpmIDIyMzMvMTIwMC85OCAyMzM2LzExOTkvOTggMjMzNS8xMjI4Lzk4IDIyMzgvMTIyNy85OApmIDIyMzAvMTIyMi85OSAyMzM4LzEyMjEvOTkgMjMzNy8xMTk4Lzk5IDIyMzIvMTE5Ny85OQpmIDIyMjIvMTIzNi8xMDAgMjMzMS8xMjM1LzEwMCAyMzMwLzEyMzgvMTAwIDIyMjMvMTIzOS8xMDAgMjIyNC8xMjQwLzEwMApmIDIyMTMvMTIyNi8xMDEgMjMyMy8xMjI1LzEwMSAyMzIyLzEyMDcvMTAxIDIyMTAvMTIwNi8xMDEKZiAyMjA3LzExODMvMTAyIDIzMTcvMTE4Mi8xMDIgMjMxNi8xMTg2LzEwMiAyMjA0LzExODUvMTAyCmYgMjIyMy8xMjM5LzEwMyAyMzMwLzEyMzgvMTAzIDIzMjkvMTIxOC8xMDMgMjIyNi8xMjE3LzEwMwpmIDIyNzYvMTI0MS83MiAyMzAxLzEyNDIvNzIgMjMwMC8xMjQzLzcyIDIyNzEvMTI0NC83MgpmIDIyNjQvMTI0NS83MyAyMzA5LzEyNDYvNzMgMjMwOC8xMjQ3LzczIDIyNTkvMTI0OC83MyAyMjY1LzEyNDkvNzMKZiAyMjY4LzEyNTAvNzQgMjMxMC8xMjUxLzc0IDIzMDkvMTI0Ni83NCAyMjY0LzEyNDUvNzQKZiAyMjc0LzEyNTIvNzUgMjMwMi8xMjUzLzc1IDIzMDEvMTI0Mi83NSAyMjc2LzEyNDEvNzUgMjI3NS8xMjU0Lzc1CmYgMjI0NS8xMjU1Lzc2IDIyODYvMTI1Ni83NiAyMjg1LzEyNTcvNzYgMjI0Ny8xMjU4Lzc2IDIyNDYvMTI1OS83NgpmIDIyNDQvMTI2MC83NyAyMjg0LzEyNjEvNzcgMjI4My8xMjYyLzc3IDIyNDMvMTI2My83NwpmIDIyNDgvMTI2NC83OCAyMjg4LzEyNjUvNzggMjI4Ny8xMjY2Lzc4IDIyNDkvMTI2Ny83OApmIDIyNTUvMTI2OC83OSAyMjk0LzEyNjkvNzkgMjI5My8xMjcwLzc5IDIyNTYvMTI3MS83OQpmIDIyNzIvMTI3Mi84MCAyMzA1LzEyNzMvODAgMjMwNC8xMjc0LzgwIDIyNzMvMTI3NS84MCAyMjc3LzEyNzYvODAKZiAyMjY3LzEyNzcvODEgMjI5Ni8xMjc4LzgxIDIyOTUvMTI3OS84MSAyMjU0LzEyODAvODEKZiAyMjUwLzEyODEvODIgMjI5MC8xMjgyLzgyIDIyODkvMTI4My84MiAyMjUxLzEyODQvODIKZiAyMjUxLzEyODQvODMgMjI4OS8xMjgzLzgzIDIyODgvMTI2NS84MyAyMjQ4LzEyNjQvODMgMjI1Mi8xMjg1LzgzCmYgMjI0My8xMjYzLzEwNCAyMjgzLzEyNjIvMTA0IDIyODIvMTI4Ni8xMDQgMjI0MS8xMjg3LzEwNCAyMjQyLzEyODgvMTA0CmYgMjI1NC8xMjgwLzEwNSAyMjk1LzEyNzkvMTA1IDIyOTQvMTI2OS8xMDUgMjI1NS8xMjY4LzEwNQpmIDIyNTYvMTI3MS84NiAyMjkzLzEyNzAvODYgMjI5Mi8xMjg5Lzg2IDIyNTcvMTI5MC84NgpmIDIyNDkvMTI2Ny84NyAyMjg3LzEyNjYvODcgMjI4Ni8xMjU2Lzg3IDIyNDUvMTI1NS84NwpmIDIyNjYvMTI5MS84OCAyMjk3LzEyOTIvODggMjI5Ni8xMjc4Lzg4IDIyNjcvMTI3Ny84OApmIDIyNjAvMTI5My84OSAyMzA3LzEyOTQvODkgMjMwNi8xMjk1Lzg5IDIyNzAvMTI5Ni84OQpmIDIyNDEvMTI4Ny85MCAyMjgyLzEyODYvOTAgMjI4MS8xMjk3LzkwIDIyNDAvMTI5OC85MApmIDIyNTcvMTI5MC85MSAyMjkyLzEyODkvOTEgMjI5MS8xMjk5LzkxIDIyNTMvMTMwMC85MSAyMjU4LzEzMDEvOTEKZiAyMjc4LzEzMDIvOTIgMjMwMy8xMzAzLzkyIDIzMDIvMTI1My85MiAyMjc0LzEyNTIvOTIKZiAyMjQwLzEyOTgvMTA2IDIyODEvMTI5Ny8xMDYgMjI3OS8xMzA0LzEwNiAyMjM5LzEzMDUvMTA2CmYgMjIzOS8xMzA1LzEwNyAyMjc5LzEzMDQvMTA3IDIyODAvMTMwNi8xMDcgMjI2OS8xMzA3LzEwNwpmIDIyNjkvMTMwOC85NSAyMjgwLzEzMDkvOTUgMjMxMC8xMjUxLzk1IDIyNjgvMTI1MC85NQpmIDIyNzEvMTI0NC85NiAyMzAwLzEyNDMvOTYgMjI5OS8xMzEwLzk2IDIyNjEvMTMxMS85NgpmIDIyNTkvMTI0OC8xMDggMjMwOC8xMjQ3LzEwOCAyMzA3LzEyOTQvMTA4IDIyNjAvMTI5My8xMDgKZiAyMjczLzEyNzUvOTggMjMwNC8xMjc0Lzk4IDIzMDMvMTMwMy85OCAyMjc4LzEzMDIvOTgKZiAyMjcwLzEyOTYvOTkgMjMwNi8xMjk1Lzk5IDIzMDUvMTI3My85OSAyMjcyLzEyNzIvOTkKZiAyMjYxLzEzMTEvMTAwIDIyOTkvMTMxMC8xMDAgMjI5OC8xMzEyLzEwMCAyMjYyLzEzMTMvMTAwIDIyNjMvMTMxNC8xMDAKZiAyMjUzLzEzMDAvMTAxIDIyOTEvMTI5OS8xMDEgMjI5MC8xMjgyLzEwMSAyMjUwLzEyODEvMTAxCmYgMjI0Ny8xMjU4LzEwMiAyMjg1LzEyNTcvMTAyIDIyODQvMTI2MS8xMDIgMjI0NC8xMjYwLzEwMgpmIDIyNjIvMTMxMy8xMDkgMjI5OC8xMzEyLzEwOSAyMjk3LzEyOTIvMTA5IDIyNjYvMTI5MS8xMDkKZiA2OC8xMzE1LzExMCA2Ny8xMzE2LzExMCAyMjgwLzEzMTcvMTEwIDIyNzkvMTMxOC8xMTAKZiA2OS8xMzE5LzExMSA2OC8xMzE1LzExMSAyMjc5LzEzMTgvMTExIDIyODEvMTMyMC8xMTEKZiA3MC8xMzIxLzExMSA2OS8xMzE5LzExMSAyMjgxLzEzMjAvMTExIDIyODIvMTMyMi8xMTEKZiA3MS8xMzIzLzExMSA3MC8xMzIxLzExMSAyMjgyLzEzMjIvMTExIDIyODMvMTMyNC8xMTEKZiA3Mi8xMzI1LzExMSA3MS8xMzIzLzExMSAyMjgzLzEzMjQvMTExIDIyODQvMTMyNi8xMTEKZiA3My8xMzI3LzExMSA3Mi8xMzI1LzExMSAyMjg0LzEzMjYvMTExIDIyODUvMTMyOC8xMTEKZiA3NC8xMzI5LzExMSA3My8xMzI3LzExMSAyMjg1LzEzMjgvMTExIDIyODYvMTMzMC8xMTEKZiA3NS8xMzMxLzExMSA3NC8xMzI5LzExMSAyMjg2LzEzMzAvMTExIDIyODcvMTMzMi8xMTEKZiA3Ni8xMzMzLzExMSA3NS8xMzMxLzExMSAyMjg3LzEzMzIvMTExIDIyODgvMTMzNC8xMTEKZiA3Ny8xMzM1LzExMSA3Ni8xMzMzLzExMSAyMjg4LzEzMzQvMTExIDIyODkvMTMzNi8xMTEKZiA3OC8xMzM3LzExMSA3Ny8xMzM1LzExMSAyMjg5LzEzMzYvMTExIDIyOTAvMTMzOC8xMTEKZiA3OS8xMzM5LzExMSA3OC8xMzM3LzExMSAyMjkwLzEzMzgvMTExIDIyOTEvMTM0MC8xMTEKZiA4MC8xMzQxLzExMSA3OS8xMzM5LzExMSAyMjkxLzEzNDAvMTExIDIyOTIvMTM0Mi8xMTEKZiA4MS8xMzQzLzExMiA4MC8xMzQxLzExMiAyMjkyLzEzNDIvMTEyIDIyOTMvMTM0NC8xMTIKZiA4Mi8xMzQ1LzExMSA4MS8xMzQzLzExMSAyMjkzLzEzNDQvMTExIDIyOTQvMTM0Ni8xMTEKZiA4My8xMzQ3LzExMiA4Mi8xMzQ1LzExMiAyMjk0LzEzNDYvMTEyIDIyOTUvMTM0OC8xMTIKZiA4NC8xMzQ5LzExMSA4My8xMzQ3LzExMSAyMjk1LzEzNDgvMTExIDIyOTYvMTM1MC8xMTEKZiA4NS8xMzUxLzExMCA4NC8xMzQ5LzExMCAyMjk2LzEzNTAvMTEwIDIyOTcvMTM1Mi8xMTAKZiA4Ni8xMzUzLzExMSA4NS8xMzUxLzExMSAyMjk3LzEzNTIvMTExIDIyOTgvMTM1NC8xMTEKZiA4Ny8xMzU1LzExMSA4Ni8xMzUzLzExMSAyMjk4LzEzNTQvMTExIDIyOTkvMTM1Ni8xMTEKZiA4OC8xMzU3LzExMSA4Ny8xMzU1LzExMSAyMjk5LzEzNTYvMTExIDIzMDAvMTM1OC8xMTEKZiA4OS8xMzU5LzExMSA4OC8xMzU3LzExMSAyMzAwLzEzNTgvMTExIDIzMDEvMTM2MC8xMTEKZiA5MC8xMzYxLzExMSA4OS8xMzU5LzExMSAyMzAxLzEzNjAvMTExIDIzMDIvMTM2Mi8xMTEKZiA5MS8xMzYzLzExMSA5MC8xMzYxLzExMSAyMzAyLzEzNjIvMTExIDIzMDMvMTM2NC8xMTEKZiA5Mi8xMzY1LzExMSA5MS8xMzYzLzExMSAyMzAzLzEzNjQvMTExIDIzMDQvMTM2Ni8xMTEKZiA5My8xMzY3LzExMSA5Mi8xMzY1LzExMSAyMzA0LzEzNjYvMTExIDIzMDUvMTM2OC8xMTEKZiA5NC8xMzY5LzExMSA5My8xMzY3LzExMSAyMzA1LzEzNjgvMTExIDIzMDYvMTM3MC8xMTEKZiA5NS8xMzcxLzExMSA5NC8xMzY5LzExMSAyMzA2LzEzNzAvMTExIDIzMDcvMTM3Mi8xMTEKZiA5Ni8xMzczLzExMSA5NS8xMzcxLzExMSAyMzA3LzEzNzIvMTExIDIzMDgvMTM3NC8xMTEKZiA5Ny8xMzc1LzExMSA5Ni8xMzczLzExMSAyMzA4LzEzNzQvMTExIDIzMDkvMTM3Ni8xMTEKZiA5OC8xMzc3LzExMSA5Ny8xMzc1LzExMSAyMzA5LzEzNzYvMTExIDIzMTAvMTM3OC8xMTEKZiA2Ny8xMzE2LzExMiA5OC8xMzc3LzExMiAyMzEwLzEzNzgvMTEyIDIyODAvMTMxNy8xMTIKZiAxMDAvMTM3OS8xMTEgOTkvMTM4MC8xMTEgMjMxMi8xMzgxLzExMSAyMzExLzEzODIvMTExCmYgMTAxLzEzODMvMTExIDEwMC8xMzc5LzExMSAyMzExLzEzODIvMTExIDIzMTMvMTM4NC8xMTEKZiAxMDIvMTM4NS8xMTEgMTAxLzEzODMvMTExIDIzMTMvMTM4NC8xMTEgMjMxNC8xMzg2LzExMQpmIDEwMy8xMzg3LzExMSAxMDIvMTM4NS8xMTEgMjMxNC8xMzg2LzExMSAyMzE1LzEzODgvMTExCmYgMTA0LzEzODkvMTExIDEwMy8xMzg3LzExMSAyMzE1LzEzODgvMTExIDIzMTYvMTM5MC8xMTEKZiAxMDUvMTM5MS8xMTEgMTA0LzEzODkvMTExIDIzMTYvMTM5MC8xMTEgMjMxNy8xMzkyLzExMQpmIDEwNi8xMzkzLzExMSAxMDUvMTM5MS8xMTEgMjMxNy8xMzkyLzExMSAyMzE4LzEzOTQvMTExCmYgMTA3LzEzOTUvMTExIDEwNi8xMzkzLzExMSAyMzE4LzEzOTQvMTExIDIzMTkvMTM5Ni8xMTEKZiAxMDgvMTM5Ny8xMTEgMTA3LzEzOTUvMTExIDIzMTkvMTM5Ni8xMTEgMjMyMC8xMzk4LzExMQpmIDEwOS8xMzk5LzExMSAxMDgvMTM5Ny8xMTEgMjMyMC8xMzk4LzExMSAyMzIxLzE0MDAvMTExCmYgMTEwLzE0MDEvMTExIDEwOS8xMzk5LzExMSAyMzIxLzE0MDAvMTExIDIzMjIvMTQwMi8xMTEKZiAxMTEvMTQwMy8xMTEgMTEwLzE0MDEvMTExIDIzMjIvMTQwMi8xMTEgMjMyMy8xNDA0LzExMQpmIDExMi8xNDA1LzExMSAxMTEvMTQwMy8xMTEgMjMyMy8xNDA0LzExMSAyMzI0LzE0MDYvMTExCmYgMTEzLzE0MDcvMTExIDExMi8xNDA1LzExMSAyMzI0LzE0MDYvMTExIDIzMjUvMTQwOC8xMTEKZiAxMTQvMTQwOS8xMTEgMTEzLzE0MDcvMTExIDIzMjUvMTQwOC8xMTEgMjMyNi8xNDEwLzExMQpmIDExNS8xNDExLzExMSAxMTQvMTQwOS8xMTEgMjMyNi8xNDEwLzExMSAyMzI3LzE0MTIvMTExCmYgMTE2LzE0MTMvMTExIDExNS8xNDExLzExMSAyMzI3LzE0MTIvMTExIDIzMjgvMTQxNC8xMTEKZiAxMTcvMTQxNS8xMTAgMTE2LzE0MTMvMTEwIDIzMjgvMTQxNC8xMTAgMjMyOS8xNDE2LzExMApmIDExOC8xNDE3LzExMiAxMTcvMTQxNS8xMTIgMjMyOS8xNDE2LzExMiAyMzMwLzE0MTgvMTEyCmYgMTE5LzE0MTkvMTExIDExOC8xNDE3LzExMSAyMzMwLzE0MTgvMTExIDIzMzEvMTQyMC8xMTEKZiAxMjAvMTQyMS8xMTEgMTE5LzE0MTkvMTExIDIzMzEvMTQyMC8xMTEgMjMzMi8xNDIyLzExMQpmIDEyMS8xNDIzLzExMSAxMjAvMTQyMS8xMTEgMjMzMi8xNDIyLzExMSAyMzMzLzE0MjQvMTExCmYgMTIyLzE0MjUvMTExIDEyMS8xNDIzLzExMSAyMzMzLzE0MjQvMTExIDIzMzQvMTQyNi8xMTEKZiAxMjMvMTQyNy8xMTEgMTIyLzE0MjUvMTExIDIzMzQvMTQyNi8xMTEgMjMzNS8xNDI4LzExMQpmIDEyNC8xNDI5LzExMSAxMjMvMTQyNy8xMTEgMjMzNS8xNDI4LzExMSAyMzM2LzE0MzAvMTExCmYgMTI1LzE0MzEvMTExIDEyNC8xNDI5LzExMSAyMzM2LzE0MzAvMTExIDIzMzcvMTQzMi8xMTEKZiAxMjYvMTQzMy8xMTEgMTI1LzE0MzEvMTExIDIzMzcvMTQzMi8xMTEgMjMzOC8xNDM0LzExMQpmIDEyNy8xNDM1LzExMSAxMjYvMTQzMy8xMTEgMjMzOC8xNDM0LzExMSAyMzM5LzE0MzYvMTExCmYgMTI4LzE0MzcvMTExIDEyNy8xNDM1LzExMSAyMzM5LzE0MzYvMTExIDIzNDAvMTQzOC8xMTEKZiAxMjkvMTQzOS8xMTIgMTI4LzE0MzcvMTEyIDIzNDAvMTQzOC8xMTIgMjM0MS8xNDQwLzExMgpmIDEzMC8xNDQxLzExMCAxMjkvMTQzOS8xMTAgMjM0MS8xNDQwLzExMCAyMzQyLzE0NDIvMTEwCmYgOTkvMTM4MC8xMTAgMTMwLzE0NDEvMTEwIDIzNDIvMTQ0Mi8xMTAgMjMxMi8xMzgxLzExMApzIDEKZiA5LzE0NDMvMTEzIDMxMDkvMTQ0NC8xMTQgMzExMC8xNDQ1LzMzIDMxMTQvMTQ0Ni8zMyAzMTEzLzE0NDcvMTE1IDcvMTQ0OC8xMTYgMjMvMTQ0OS8zMwpmIDExLzE0NTAvMTE3IDIxLzE0NTEvMTE4IDE4LzE0NTIvMTE4IDIyLzE0NTMvMTE4IDE3LzE0NTQvMTE4IDE5LzE0NTUvMTE4IDIwLzE0NTYvMTE4IDYvMTQ1Ny8xMTggNC8xNDU4LzExOCA2Ni8xNDU5LzExOCA2NS8xNDYwLzExOCA0NS8xNDYxLzExOCA0NC8xNDYyLzExOCA0My8xNDYzLzExOCA0Mi8xNDY0LzExOCAzNS8xNDY1LzExOCA0MC8xNDY2LzExOCAzOC8xNDY3LzExOCAzOS8xNDY4LzExOCA0MS8xNDY5LzExOCA2My8xNDcwLzExOCA2NC8xNDcxLzExOCAzLzE0NzIvMTE4IDUvMTQ3My8xMTggMTYvMTQ3NC8xMTggMTUvMTQ3NS8xMTggMTQvMTQ3Ni8xMTggMTMvMTQ3Ny8xMTggMTIvMTQ3OC8xMTggMTAvMTQ3OS8xMTkKZiA0Mi8xNDgwLzEyMCAzMDc3LzE0ODEvMTIxIDMwNzUvMTQ4Mi8xMjIgMzUvMTQ4My8xMjMKZiAxMC8xNDc5LzExOSA5LzE0ODQvMTI0IDIzLzE0ODUvMTI1IDI0LzE0ODYvMTI2IDI1LzE0ODcvMTI0IDExLzE0NTAvMTE3CmYgNTEvMTQ4OC8xMjcgNDYvMTQ4OS8xMjggNTAvMTQ5MC8xMjggNDgvMTQ5MS8xMjggNDkvMTQ5Mi8xMjggNDcvMTQ5My8xMjggMzYvMTQ5NC8xMjggMzEvMTQ5NS8xMjggMzIvMTQ5Ni8xMjggMjYvMTQ5Ny8xMjggMjcvMTQ5OC8xMjggMjgvMTQ5OS8xMjggMjkvMTUwMC8xMjggMzAvMTUwMS8xMjggMzMvMTUwMi8xMjggMzQvMTUwMy8xMjggMzcvMTUwNC8xMjggNTcvMTUwNS8xMjggNTYvMTUwNi8xMjggNTMvMTUwNy8xMjggNTIvMTUwOC8xMjggNTUvMTUwOS8xMjggNTQvMTUxMC8xMjggNTkvMTUxMS8xMjggNTgvMTUxMi8xMjkKZiAyMy8xNDg1LzEyNSA3LzE1MTMvMTMwIDEvMTUxNC8xMzAgNjEvMTUxNS8xMzAgNjAvMTUxNi8xMzAgNTEvMTQ4OC8xMjcgNTgvMTUxMi8xMjkgNjIvMTUxNy8xMzAgMi8xNTE4LzEzMCA4LzE1MTkvMTMwIDI0LzE0ODYvMTI2CmYgNTEzLzE1MjAvMTMxIDUxNS8xNTIxLzEzMSA1MTYvMTUyMi8xMzEgNTE3LzE1MjMvMTMxIDUxOC8xNTI0LzEzMSA1MTkvMTUyNS8xMzEgNTIwLzE1MjYvMTMxIDUyMS8xNTI3LzEzMSA1MjIvMTUyOC8xMzEgNTE0LzE1MjkvMTMxIDQ5My8xNTMwLzEzMSA0OTUvMTUzMS8xMzEgNDk2LzE1MzIvMTMxIDQ5Ny8xNTMzLzEzMSA0OTgvMTUzNC8xMzEgNDk5LzE1MzUvMTMxIDUwMC8xNTM2LzEzMSA1MDEvMTUzNy8xMzEgNTAyLzE1MzgvMTMxIDQ5NC8xNTM5LzEzMSA0ODMvMTU0MC8xMzEgNDg1LzE1NDEvMTMxIDQ4Ni8xNTQyLzEzMSA0ODcvMTU0My8xMzEgNDg4LzE1NDQvMTMxIDQ4OS8xNTQ1LzEzMSA0OTAvMTU0Ni8xMzEgNDkxLzE1NDcvMTMxIDQ5Mi8xNTQ4LzEzMSA0ODQvMTU0OS8xMzEgNTAzLzE1NTAvMTMxIDUwNS8xNTUxLzEzMSA1MDYvMTU1Mi8xMzEgNTA3LzE1NTMvMTMxIDUwOC8xNTU0LzEzMSA1MDkvMTU1NS8xMzEgNTEwLzE1NTYvMTMxIDUxMS8xNTU3LzEzMSA1MTIvMTU1OC8xMzEgNTA0LzE1NTkvMTMxCmYgMTA5NS8xNTYwLzEzMiA0OTMvMTU2MS8xMzMgNTE0LzE1NjIvMTM0IDEwOTYvMTU2My8xMzUKZiAxMTA1LzE1NjQvMTM2IDUxMy8xNTIwLzEzNyA1MDQvMTU1OS8xMzggMTEwNi8xNTY1LzEzOQpmIDEwOTIvMTU2Ni8xNDAgNDg1LzE1NjcvMTQxIDQ4My8xNTY4LzE0MiAxMDkzLzE1NjkvMTQzCmYgMTA5MS8xNTcwLzE0NCA0ODYvMTU3MS8xNDUgNDg1LzE1NjcvMTQxIDEwOTIvMTU2Ni8xNDAKZiAxMDkwLzE1NzIvMTQ2IDQ4Ny8xNTczLzE0NyA0ODYvMTU3MS8xNDUgMTA5MS8xNTcwLzE0NApmIDEwODkvMTU3NC8xNDggNDg4LzE1NzUvMTQ5IDQ4Ny8xNTczLzE0NyAxMDkwLzE1NzIvMTQ2CmYgMTA4OC8xNTc2LzE1MCA0ODkvMTU3Ny8xNTEgNDg4LzE1NzgvMTQ5IDEwODkvMTU3OS8xNDgKZiAxMDg3LzE1ODAvMTUyIDQ5MC8xNTgxLzE1MyA0ODkvMTU3Ny8xNTEgMTA4OC8xNTc2LzE1MApmIDEwODYvMTU4Mi8xNTQgNDkxLzE1ODMvMTU1IDQ5MC8xNTgxLzE1MyAxMDg3LzE1ODAvMTUyCmYgMTA4NC8xNTg0LzE1NiA0OTIvMTU4NS8xNTcgNDkxLzE1ODMvMTU1IDEwODYvMTU4Mi8xNTQKZiAxMDg1LzE1ODYvMTU4IDUwMy8xNTg3LzE1OSA0ODQvMTU4OC8xNjAgMTA4My8xNTg5LzE2MQpmIDEwOTMvMTU2OS8xNDMgNDgzLzE1NjgvMTQyIDQ5NC8xNTkwLzE2MiAxMDk0LzE1OTEvMTYzCmYgMTA4My8xNTg5LzE2MSA0ODQvMTU4OC8xNjAgNDkyLzE1ODUvMTU3IDEwODQvMTU4NC8xNTYKZiA0OTUvMTUzMS8xNjQgMTA5Ny8xNTkyLzE2NSAxMDk4LzE1OTMvMTY2IDQ5Ni8xNTMyLzE2NwpmIDUxNS8xNTIxLzE2OCAxMTA3LzE1OTQvMTY5IDExMDgvMTU5NS8xNzAgNTE2LzE1MjIvMTcxCmYgNTA1LzE1NTEvMTcyIDExMTUvMTU5Ni8xNzMgMTExNi8xNTk3LzE3NCA1MDYvMTU1Mi8xNzUKZiA1MTIvMTU1OC8xNzYgMTEyMi8xNTk4LzE3NyAxMTA2LzE1NjUvMTM5IDUwNC8xNTU5LzEzOApmIDUxMS8xNTU3LzE3OCAxMTIxLzE1OTkvMTc5IDExMjIvMTU5OC8xNzcgNTEyLzE1NTgvMTc2CmYgNTEwLzE1NTYvMTgwIDExMjAvMTYwMC8xODEgMTEyMS8xNTk5LzE3OSA1MTEvMTU1Ny8xNzgKZiA1MDkvMTU1NS8xODIgMTExOS8xNjAxLzE4MyAxMTIwLzE2MDAvMTgxIDUxMC8xNTU2LzE4MApmIDUwOC8xNTU0LzE4NCAxMTE4LzE2MDIvMTg1IDExMTkvMTYwMS8xODMgNTA5LzE1NTUvMTgyCmYgNTA3LzE1NTMvMTg2IDExMTcvMTYwMy8xODcgMTExOC8xNjAyLzE4NSA1MDgvMTU1NC8xODQKZiA1MDYvMTU1Mi8xNzUgMTExNi8xNTk3LzE3NCAxMTE3LzE2MDMvMTg3IDUwNy8xNTUzLzE4NgpmIDUwMy8xNTg3LzE1OSAxMDg1LzE1ODYvMTU4IDExMTUvMTU5Ni8xNzMgNTA1LzE1NTEvMTcyCmYgNTIyLzE1MjgvMTg4IDExMTQvMTYwNC8xODkgMTA5Ni8xNTYzLzEzNSA1MTQvMTU2Mi8xMzQKZiA1MjEvMTUyNy8xOTAgMTExMy8xNjA1LzE5MSAxMTE0LzE2MDQvMTg5IDUyMi8xNTI4LzE4OApmIDUyMC8xNTI2LzE5MiAxMTEyLzE2MDYvMTkzIDExMTMvMTYwNS8xOTEgNTIxLzE1MjcvMTkwCmYgNTE5LzE1MjUvMTk0IDExMTEvMTYwNy8xOTUgMTExMi8xNjA2LzE5MyA1MjAvMTUyNi8xOTIKZiA1MTgvMTUyNC8xOTYgMTExMC8xNjA4LzE5NyAxMTExLzE2MDcvMTk1IDUxOS8xNTI1LzE5NApmIDUxNy8xNTIzLzE5OCAxMTA5LzE2MDkvMTk5IDExMTAvMTYwOC8xOTcgNTE4LzE1MjQvMTk2CmYgNTE2LzE1MjIvMTcxIDExMDgvMTU5NS8xNzAgMTEwOS8xNjA5LzE5OSA1MTcvMTUyMy8xOTgKZiA1MDIvMTUzOC8yMDAgMTEwNC8xNjEwLzIwMSAxMDk0LzE1OTEvMTYzIDQ5NC8xNTkwLzE2MgpmIDUwMS8xNTM3LzIwMiAxMTAzLzE2MTEvMjAzIDExMDQvMTYxMC8yMDEgNTAyLzE1MzgvMjAwCmYgNTAwLzE1MzYvMjA0IDExMDIvMTYxMi8yMDUgMTEwMy8xNjExLzIwMyA1MDEvMTUzNy8yMDIKZiA0OTkvMTUzNS8yMDYgMTEwMS8xNjEzLzIwNyAxMTAyLzE2MTIvMjA1IDUwMC8xNTM2LzIwNApmIDQ5OC8xNTM0LzIwOCAxMTAwLzE2MTQvMjA5IDExMDEvMTYxMy8yMDcgNDk5LzE1MzUvMjA2CmYgNDk3LzE1MzMvMjEwIDEwOTkvMTYxNS8yMTEgMTEwMC8xNjE0LzIwOSA0OTgvMTUzNC8yMDgKZiA0OTYvMTUzMi8xNjcgMTA5OC8xNTkzLzE2NiAxMDk5LzE2MTUvMjExIDQ5Ny8xNTMzLzIxMApmIDQ5My8xNTYxLzEzMyAxMDk1LzE1NjAvMTMyIDEwOTcvMTU5Mi8xNjUgNDk1LzE1MzEvMTY0CmYgNTEzLzE1MjAvMTM3IDExMDUvMTU2NC8xMzYgMTEwNy8xNTk0LzE2OSA1MTUvMTUyMS8xNjgKZiAzMDU5LzE2MTYvMjEyIDI1LzE2MTcvMjEzIDI0LzE2MTgvMjE0IDgvMTYxOS8yMTUgMzA1Ny8xNjIwLzIxNiAzMDU4LzE2MjEvMjE0IDMwNjAvMTYyMi8yMTQKZiAzMDc2LzE2MjMvMjE3IDI5LzE2MjQvMjE4IDI4LzE2MjUvMjE5IDMwNzQvMTYyNi8yMjAKdXNlbXRsIHJpbV9vbl9waG9uZQpzIG9mZgpmIDc3LzEzMzUvOTkgNzgvMTMzNy85OSAyNDY0LzE2MjcvOTkgMjQ1My8xNjI4Lzk5CmYgNDYxLzExMTkvNjEgNDYwLzExMTcvNjEgMTUwNS8xNjI5LzYxIDE1MTYvMTYzMC82MQpmIDQ1MS8xMDk5LzUxIDQ4Mi8xMTYxLzUxIDE3NDcvMTYzMS81MSAxNDA1LzE2MzIvNTEKZiA0NzUvMTE0Ny8yMjEgNDc0LzExNDUvMjIxIDE2NTkvMTYzMy8yMjEgMTY3MC8xNjM0LzIyMQpmIDQ2Mi8xMTIxLzYyIDQ2MS8xMTE5LzYyIDE1MTYvMTYzMC82MiAxNTI3LzE2MzUvNjIKZiA0NzYvMTE0OS8yMjIgNDc1LzExNDcvMjIyIDE2NzAvMTYzNC8yMjIgMTY4MS8xNjM2LzIyMgpmIDQ2My8xMTIzLzYzIDQ2Mi8xMTIxLzYzIDE1MjcvMTYzNS82MyAxNTM4LzE2MzcvNjMKZiA0NzcvMTE1MS80NSA0NzYvMTE0OS80NSAxNjgxLzE2MzYvNDUgMTY5Mi8xNjM4LzQ1CmYgNDY0LzExMjUvNjQgNDYzLzExMjMvNjQgMTUzOC8xNjM3LzY0IDE1NDkvMTYzOS82NApmIDQ3OC8xMTUzLzQ2IDQ3Ny8xMTUxLzQ2IDE2OTIvMTYzOC80NiAxNzAzLzE2NDAvNDYKZiA0NjUvMTEyNy82NSA0NjQvMTEyNS82NSAxNTQ5LzE2MzkvNjUgMTU2MC8xNjQxLzY1CmYgNDc5LzExNTUvNDcgNDc4LzExNTMvNDcgMTcwMy8xNjQwLzQ3IDE3MTQvMTY0Mi80NwpmIDQ2Ni8xMTI5LzY2IDQ2NS8xMTI3LzY2IDE1NjAvMTY0MS82NiAxNTcxLzE2NDMvNjYKZiAxNDA2LzE2NDQvNjggMTc0Ni8xNjQ1LzY4IDE3MzUvMTY0Ni82OCAxNzI0LzE2NDcvNjggMTcxMy8xNjQ4LzY4IDE3MDIvMTY0OS82OCAxNjkxLzE2NTAvNjggMTY4MC8xNjUxLzY4IDE2NjkvMTY1Mi82OCAxNjU4LzE2NTMvNjggMTY0Ny8xNjU0LzY4IDE2MzYvMTY1NS82OCAxNjI1LzE2NTYvNjggMTYxNC8xNjU3LzY4IDE2MDMvMTY1OC82OCAxNTkyLzE2NTkvNjggMTU4MS8xNjYwLzY4IDE1NzAvMTY2MS82OCAxNTU5LzE2NjIvNjggMTU0OC8xNjYzLzY4IDE1MzcvMTY2NC82OCAxNTI2LzE2NjUvNjggMTUxNS8xNjY2LzY4IDE1MDQvMTY2Ny82OCAxNDkzLzE2NjgvNjggMTQ4Mi8xNjY5LzY4IDE0NzEvMTY3MC82OCAxNDYwLzE2NzEvNjggMTQ0OS8xNjcyLzY4IDE0MzgvMTY3My82OCAxNDI3LzE2NzQvNjggMTQxNi8xNjc1LzY4CmYgNDgwLzExNTcvNDggNDc5LzExNTUvNDggMTcxNC8xNjQyLzQ4IDE3MjUvMTY3Ni80OApmIDQ2Ny8xMTMxLzY3IDQ2Ni8xMTI5LzY3IDE1NzEvMTY0My82NyAxNTgyLzE2NzcvNjcKZiA0NTQvMTEwNS81NCA0NTMvMTEwMy81NCAxNDI4LzE2NzgvNTQgMTQzOS8xNjc5LzU0CmYgNDgxLzExNTkvNDkgNDgwLzExNTcvNDkgMTcyNS8xNjc2LzQ5IDE3MzYvMTY4MC80OQpmIDQ2OC8xMTMzLzM2IDQ2Ny8xMTMxLzM2IDE1ODIvMTY3Ny8zNiAxNTkzLzE2ODEvMzYKZiA0NTUvMTEwNy81NSA0NTQvMTEwNS81NSAxNDM5LzE2NzkvNTUgMTQ1MC8xNjgyLzU1CmYgNDgyLzExNjEvNTAgNDgxLzExNTkvNTAgMTczNi8xNjgwLzUwIDE3NDcvMTYzMS81MApmIDQ2OS8xMTM1LzM3IDQ2OC8xMTMzLzM3IDE1OTMvMTY4MS8zNyAxNjA0LzE2ODMvMzcKZiA0NTYvMTEwOS81NiA0NTUvMTEwNy81NiAxNDUwLzE2ODIvNTYgMTQ2MS8xNjg0LzU2CmYgNDcwLzExMzcvMzggNDY5LzExMzUvMzggMTYwNC8xNjgzLzM4IDE2MTUvMTY4NS8zOApmIDQ1Ny8xMTExLzU3IDQ1Ni8xMTA5LzU3IDE0NjEvMTY4NC81NyAxNDcyLzE2ODYvNTcKZiA0NTMvMTEwMy81MyA0NTIvMTEwMC81MyAxNDE3LzE2ODcvNTMgMTQyOC8xNjc4LzUzCmYgNDcxLzExMzkvMzkgNDcwLzExMzcvMzkgMTYxNS8xNjg1LzM5IDE2MjYvMTY4OC8zOQpmIDQ1OC8xMTEzLzU4IDQ1Ny8xMTExLzU4IDE0NzIvMTY4Ni81OCAxNDgzLzE2ODkvNTgKZiA0NzIvMTE0MS80MCA0NzEvMTEzOS80MCAxNjI2LzE2ODgvNDAgMTYzNy8xNjkwLzQwCmYgNDU5LzExMTUvMjIzIDQ1OC8xMTEzLzIyMyAxNDgzLzE2ODkvMjIzIDE0OTQvMTY5MS8yMjMKZiA0NzMvMTE0My80MSA0NzIvMTE0MS80MSAxNjM3LzE2OTAvNDEgMTY0OC8xNjkyLzQxCmYgNDYwLzExMTcvMjI0IDQ1OS8xMTE1LzIyNCAxNDk0LzE2OTEvMjI0IDE1MDUvMTYyOS8yMjQKZiA0NzQvMTE0NS80MiA0NzMvMTE0My80MiAxNjQ4LzE2OTIvNDIgMTY1OS8xNjMzLzQyCmYgMTQwNi8xNjQ0LzIyNSAxNDE2LzE2NzUvMjI1IDE0MTgvMTY5My8yMjUgMTQxNS8xNjk0LzIyNQpmIDE0MTUvMTY5NC8yMjYgMTQxOC8xNjkzLzIyNiAxNDE5LzE2OTUvMjI2IDE0MTQvMTY5Ni8yMjYKZiAxNDE0LzE2OTYvMjI3IDE0MTkvMTY5NS8yMjcgMTQyMC8xNjk3LzIyNyAxNDEzLzE2OTgvMjI3CmYgMTQxMy8xNjk4LzIyOCAxNDIwLzE2OTcvMjI4IDE0MjEvMTY5OS8yMjggMTQxMi8xNzAwLzIyOApmIDE0MTIvMTcwMC8yMjkgMTQyMS8xNjk5LzIyOSAxNDIyLzE3MDEvMjI5IDE0MTEvMTcwMi8yMjkKZiAxNDExLzE3MDIvMjMwIDE0MjIvMTcwMS8yMzAgMTQyMy8xNzAzLzIzMCAxNDEwLzE3MDQvMjMwCmYgMTQxMC8xNzA0LzIzMSAxNDIzLzE3MDMvMjMxIDE0MjQvMTcwNS8yMzEgMTQwOS8xNzA2LzIzMQpmIDE0MDkvMTcwNi8yMzIgMTQyNC8xNzA1LzIzMiAxNDI1LzE3MDcvMjMyIDE0MDgvMTcwOC8yMzIKZiAxNDA4LzE3MDgvMjMzIDE0MjUvMTcwNy8yMzMgMTQyNi8xNzA5LzIzMyAxNDA3LzE3MTAvMjMzCmYgMTQwNy8xNzEwLzIzNCAxNDI2LzE3MDkvMjM0IDE0MTcvMTY4Ny8yMzQgMTQwNS8xNjMyLzIzNApmIDE0MTYvMTY3NS8yMzUgMTQyNy8xNjc0LzIzNSAxNDI5LzE3MTEvMjM1IDE0MTgvMTY5My8yMzUKZiAxNDE4LzE2OTMvMjM2IDE0MjkvMTcxMS8yMzYgMTQzMC8xNzEyLzIzNiAxNDE5LzE2OTUvMjM2CmYgMTQxOS8xNjk1LzIzNyAxNDMwLzE3MTIvMjM3IDE0MzEvMTcxMy8yMzcgMTQyMC8xNjk3LzIzNwpmIDE0MjAvMTY5Ny8yMzggMTQzMS8xNzEzLzIzOCAxNDMyLzE3MTQvMjM4IDE0MjEvMTY5OS8yMzgKZiAxNDIxLzE2OTkvMjM5IDE0MzIvMTcxNC8yMzkgMTQzMy8xNzE1LzIzOSAxNDIyLzE3MDEvMjM5CmYgMTQyMi8xNzAxLzI0MCAxNDMzLzE3MTUvMjQwIDE0MzQvMTcxNi8yNDAgMTQyMy8xNzAzLzI0MApmIDE0MjMvMTcwMy8yNDEgMTQzNC8xNzE2LzI0MSAxNDM1LzE3MTcvMjQxIDE0MjQvMTcwNS8yNDEKZiAxNDI0LzE3MDUvMjQyIDE0MzUvMTcxNy8yNDIgMTQzNi8xNzE4LzI0MiAxNDI1LzE3MDcvMjQyCmYgMTQyNS8xNzA3LzI0MyAxNDM2LzE3MTgvMjQzIDE0MzcvMTcxOS8yNDMgMTQyNi8xNzA5LzI0MwpmIDE0MjYvMTcwOS8yNDQgMTQzNy8xNzE5LzI0NCAxNDI4LzE2NzgvMjQ0IDE0MTcvMTY4Ny8yNDQKZiAxNDI3LzE2NzQvMjQ1IDE0MzgvMTY3My8yNDUgMTQ0MC8xNzIwLzI0NSAxNDI5LzE3MTEvMjQ1CmYgMTQyOS8xNzExLzI0NiAxNDQwLzE3MjAvMjQ2IDE0NDEvMTcyMS8yNDYgMTQzMC8xNzEyLzI0NgpmIDE0MzAvMTcxMi8yNDcgMTQ0MS8xNzIxLzI0NyAxNDQyLzE3MjIvMjQ3IDE0MzEvMTcxMy8yNDcKZiAxNDMxLzE3MTMvMjQ4IDE0NDIvMTcyMi8yNDggMTQ0My8xNzIzLzI0OCAxNDMyLzE3MTQvMjQ4CmYgMTQzMi8xNzE0LzI0OSAxNDQzLzE3MjMvMjQ5IDE0NDQvMTcyNC8yNDkgMTQzMy8xNzE1LzI0OQpmIDE0MzMvMTcxNS8yNTAgMTQ0NC8xNzI0LzI1MCAxNDQ1LzE3MjUvMjUwIDE0MzQvMTcxNi8yNTAKZiAxNDM0LzE3MTYvMjUxIDE0NDUvMTcyNS8yNTEgMTQ0Ni8xNzI2LzI1MSAxNDM1LzE3MTcvMjUxCmYgMTQzNS8xNzE3LzI1MiAxNDQ2LzE3MjYvMjUyIDE0NDcvMTcyNy8yNTIgMTQzNi8xNzE4LzI1MgpmIDE0MzYvMTcxOC8yNTMgMTQ0Ny8xNzI3LzI1MyAxNDQ4LzE3MjgvMjUzIDE0MzcvMTcxOS8yNTMKZiAxNDM3LzE3MTkvMjU0IDE0NDgvMTcyOC8yNTQgMTQzOS8xNjc5LzI1NCAxNDI4LzE2NzgvMjU0CmYgMTQzOC8xNjczLzI1NSAxNDQ5LzE2NzIvMjU1IDE0NTEvMTcyOS8yNTUgMTQ0MC8xNzIwLzI1NQpmIDE0NDAvMTcyMC8yNTYgMTQ1MS8xNzI5LzI1NiAxNDUyLzE3MzAvMjU2IDE0NDEvMTcyMS8yNTYKZiAxNDQxLzE3MjEvMjU3IDE0NTIvMTczMC8yNTcgMTQ1My8xNzMxLzI1NyAxNDQyLzE3MjIvMjU3CmYgMTQ0Mi8xNzIyLzI1OCAxNDUzLzE3MzEvMjU4IDE0NTQvMTczMi8yNTggMTQ0My8xNzIzLzI1OApmIDE0NDMvMTcyMy8yNTkgMTQ1NC8xNzMyLzI1OSAxNDU1LzE3MzMvMjU5IDE0NDQvMTcyNC8yNTkKZiAxNDQ0LzE3MjQvMjYwIDE0NTUvMTczMy8yNjAgMTQ1Ni8xNzM0LzI2MCAxNDQ1LzE3MjUvMjYwCmYgMTQ0NS8xNzI1LzI2MSAxNDU2LzE3MzQvMjYxIDE0NTcvMTczNS8yNjEgMTQ0Ni8xNzI2LzI2MQpmIDE0NDYvMTcyNi8yNjIgMTQ1Ny8xNzM1LzI2MiAxNDU4LzE3MzYvMjYyIDE0NDcvMTcyNy8yNjIKZiAxNDQ3LzE3MjcvMjYzIDE0NTgvMTczNi8yNjMgMTQ1OS8xNzM3LzI2MyAxNDQ4LzE3MjgvMjYzCmYgMTQ0OC8xNzI4LzI2NCAxNDU5LzE3MzcvMjY0IDE0NTAvMTY4Mi8yNjQgMTQzOS8xNjc5LzI2NApmIDE0NDkvMTY3Mi8yNjUgMTQ2MC8xNjcxLzI2NSAxNDYyLzE3MzgvMjY1IDE0NTEvMTcyOS8yNjUKZiAxNDUxLzE3MjkvMjY2IDE0NjIvMTczOC8yNjYgMTQ2My8xNzM5LzI2NiAxNDUyLzE3MzAvMjY2CmYgMTQ1Mi8xNzMwLzI2NyAxNDYzLzE3MzkvMjY3IDE0NjQvMTc0MC8yNjcgMTQ1My8xNzMxLzI2NwpmIDE0NTMvMTczMS8yNjggMTQ2NC8xNzQwLzI2OCAxNDY1LzE3NDEvMjY4IDE0NTQvMTczMi8yNjgKZiAxNDU0LzE3MzIvMjY5IDE0NjUvMTc0MS8yNjkgMTQ2Ni8xNzQyLzI2OSAxNDU1LzE3MzMvMjY5CmYgMTQ1NS8xNzMzLzI3MCAxNDY2LzE3NDIvMjcwIDE0NjcvMTc0My8yNzAgMTQ1Ni8xNzM0LzI3MApmIDE0NTYvMTczNC8yNzEgMTQ2Ny8xNzQzLzI3MSAxNDY4LzE3NDQvMjcxIDE0NTcvMTczNS8yNzEKZiAxNDU3LzE3MzUvMjcyIDE0NjgvMTc0NC8yNzIgMTQ2OS8xNzQ1LzI3MiAxNDU4LzE3MzYvMjcyCmYgMTQ1OC8xNzM2LzI3MyAxNDY5LzE3NDUvMjczIDE0NzAvMTc0Ni8yNzMgMTQ1OS8xNzM3LzI3MwpmIDE0NTkvMTczNy8yNzQgMTQ3MC8xNzQ2LzI3NCAxNDYxLzE2ODQvMjc0IDE0NTAvMTY4Mi8yNzQKZiAxNDYwLzE2NzEvMjc1IDE0NzEvMTY3MC8yNzUgMTQ3My8xNzQ3LzI3NSAxNDYyLzE3MzgvMjc1CmYgMTQ2Mi8xNzM4LzI3NiAxNDczLzE3NDcvMjc2IDE0NzQvMTc0OC8yNzYgMTQ2My8xNzM5LzI3NgpmIDE0NjMvMTczOS8yNzcgMTQ3NC8xNzQ4LzI3NyAxNDc1LzE3NDkvMjc3IDE0NjQvMTc0MC8yNzcKZiAxNDY0LzE3NDAvMjc4IDE0NzUvMTc0OS8yNzggMTQ3Ni8xNzUwLzI3OCAxNDY1LzE3NDEvMjc4CmYgMTQ2NS8xNzQxLzI3OSAxNDc2LzE3NTAvMjc5IDE0NzcvMTc1MS8yNzkgMTQ2Ni8xNzQyLzI3OQpmIDE0NjYvMTc0Mi8yODAgMTQ3Ny8xNzUxLzI4MCAxNDc4LzE3NTIvMjgwIDE0NjcvMTc0My8yODAKZiAxNDY3LzE3NDMvMjgxIDE0NzgvMTc1Mi8yODEgMTQ3OS8xNzUzLzI4MSAxNDY4LzE3NDQvMjgxCmYgMTQ2OC8xNzQ0LzI4MiAxNDc5LzE3NTMvMjgyIDE0ODAvMTc1NC8yODIgMTQ2OS8xNzQ1LzI4MgpmIDE0NjkvMTc0NS8yODMgMTQ4MC8xNzU0LzI4MyAxNDgxLzE3NTUvMjgzIDE0NzAvMTc0Ni8yODMKZiAxNDcwLzE3NDYvMjg0IDE0ODEvMTc1NS8yODQgMTQ3Mi8xNjg2LzI4NCAxNDYxLzE2ODQvMjg0CmYgMTQ3MS8xNjcwLzI4NSAxNDgyLzE2NjkvMjg1IDE0ODQvMTc1Ni8yODUgMTQ3My8xNzQ3LzI4NQpmIDE0NzMvMTc0Ny8yODYgMTQ4NC8xNzU2LzI4NiAxNDg1LzE3NTcvMjg2IDE0NzQvMTc0OC8yODYKZiAxNDc0LzE3NDgvMjg3IDE0ODUvMTc1Ny8yODcgMTQ4Ni8xNzU4LzI4NyAxNDc1LzE3NDkvMjg3CmYgMTQ3NS8xNzQ5LzI4OCAxNDg2LzE3NTgvMjg4IDE0ODcvMTc1OS8yODggMTQ3Ni8xNzUwLzI4OApmIDE0NzYvMTc1MC8yODkgMTQ4Ny8xNzU5LzI4OSAxNDg4LzE3NjAvMjg5IDE0NzcvMTc1MS8yODkKZiAxNDc3LzE3NTEvMjkwIDE0ODgvMTc2MC8yOTAgMTQ4OS8xNzYxLzI5MCAxNDc4LzE3NTIvMjkwCmYgMTQ3OC8xNzUyLzI5MSAxNDg5LzE3NjEvMjkxIDE0OTAvMTc2Mi8yOTEgMTQ3OS8xNzUzLzI5MQpmIDE0NzkvMTc1My8yOTIgMTQ5MC8xNzYyLzI5MiAxNDkxLzE3NjMvMjkyIDE0ODAvMTc1NC8yOTIKZiAxNDgwLzE3NTQvMjkzIDE0OTEvMTc2My8yOTMgMTQ5Mi8xNzY0LzI5MyAxNDgxLzE3NTUvMjkzCmYgMTQ4MS8xNzU1LzI5NCAxNDkyLzE3NjQvMjk0IDE0ODMvMTY4OS8yOTQgMTQ3Mi8xNjg2LzI5NApmIDE0ODIvMTY2OS8yOTUgMTQ5My8xNjY4LzI5NSAxNDk1LzE3NjUvMjk1IDE0ODQvMTc1Ni8yOTUKZiAxNDg0LzE3NTYvMjk2IDE0OTUvMTc2NS8yOTYgMTQ5Ni8xNzY2LzI5NiAxNDg1LzE3NTcvMjk2CmYgMTQ4NS8xNzU3LzI5NyAxNDk2LzE3NjYvMjk3IDE0OTcvMTc2Ny8yOTcgMTQ4Ni8xNzU4LzI5NwpmIDE0ODYvMTc1OC8yOTggMTQ5Ny8xNzY3LzI5OCAxNDk4LzE3NjgvMjk4IDE0ODcvMTc1OS8yOTgKZiAxNDg3LzE3NTkvMjk5IDE0OTgvMTc2OC8yOTkgMTQ5OS8xNzY5LzI5OSAxNDg4LzE3NjAvMjk5CmYgMTQ4OC8xNzYwLzMwMCAxNDk5LzE3NjkvMzAwIDE1MDAvMTc3MC8zMDAgMTQ4OS8xNzYxLzMwMApmIDE0ODkvMTc2MS8zMDEgMTUwMC8xNzcwLzMwMSAxNTAxLzE3NzEvMzAxIDE0OTAvMTc2Mi8zMDEKZiAxNDkwLzE3NjIvMzAyIDE1MDEvMTc3MS8zMDIgMTUwMi8xNzcyLzMwMiAxNDkxLzE3NjMvMzAyCmYgMTQ5MS8xNzYzLzMwMyAxNTAyLzE3NzIvMzAzIDE1MDMvMTc3My8zMDMgMTQ5Mi8xNzY0LzMwMwpmIDE0OTIvMTc2NC8zMDQgMTUwMy8xNzczLzMwNCAxNDk0LzE2OTEvMzA0IDE0ODMvMTY4OS8zMDQKZiAxNDkzLzE2NjgvMzA1IDE1MDQvMTY2Ny8zMDUgMTUwNi8xNzc0LzMwNSAxNDk1LzE3NjUvMzA1CmYgMTQ5NS8xNzY1LzMwNiAxNTA2LzE3NzQvMzA2IDE1MDcvMTc3NS8zMDYgMTQ5Ni8xNzY2LzMwNgpmIDE0OTYvMTc2Ni8zMDcgMTUwNy8xNzc1LzMwNyAxNTA4LzE3NzYvMzA3IDE0OTcvMTc2Ny8zMDcKZiAxNDk3LzE3NjcvMzA4IDE1MDgvMTc3Ni8zMDggMTUwOS8xNzc3LzMwOCAxNDk4LzE3NjgvMzA4CmYgMTQ5OC8xNzY4LzMwOSAxNTA5LzE3NzcvMzA5IDE1MTAvMTc3OC8zMDkgMTQ5OS8xNzY5LzMwOQpmIDE0OTkvMTc2OS8zMTAgMTUxMC8xNzc4LzMxMCAxNTExLzE3NzkvMzEwIDE1MDAvMTc3MC8zMTAKZiAxNTAwLzE3NzAvMzExIDE1MTEvMTc3OS8zMTEgMTUxMi8xNzgwLzMxMSAxNTAxLzE3NzEvMzExCmYgMTUwMS8xNzcxLzMxMiAxNTEyLzE3ODAvMzEyIDE1MTMvMTc4MS8zMTIgMTUwMi8xNzcyLzMxMgpmIDE1MDIvMTc3Mi8zMTMgMTUxMy8xNzgxLzMxMyAxNTE0LzE3ODIvMzEzIDE1MDMvMTc3My8zMTMKZiAxNTAzLzE3NzMvMzE0IDE1MTQvMTc4Mi8zMTQgMTUwNS8xNjI5LzMxNCAxNDk0LzE2OTEvMzE0CmYgMTUwNC8xNjY3LzMxNSAxNTE1LzE2NjYvMzE1IDE1MTcvMTE2My8zMTUgMTUwNi8xNzc0LzMxNQpmIDE1MDYvMTc3NC8zMTYgMTUxNy8xMTYzLzMxNiAxNTE4LzExNjYvMzE2IDE1MDcvMTc3NS8zMTYKZiAxNTA3LzE3NzUvMzE3IDE1MTgvMTE2Ni8zMTcgMTUxOS8xNzgzLzMxNyAxNTA4LzE3NzYvMzE3CmYgMTUwOC8xNzc2LzMxOCAxNTE5LzE3ODMvMzE4IDE1MjAvMTc4NC8zMTggMTUwOS8xNzc3LzMxOApmIDE1MDkvMTc3Ny8zMTkgMTUyMC8xNzg0LzMxOSAxNTIxLzE3ODUvMzE5IDE1MTAvMTc3OC8zMTkKZiAxNTEwLzE3NzgvMzIwIDE1MjEvMTc4NS8zMjAgMTUyMi8xNzg2LzMyMCAxNTExLzE3NzkvMzIwCmYgMTUxMS8xNzc5LzMyMSAxNTIyLzE3ODYvMzIxIDE1MjMvMTc4Ny8zMjEgMTUxMi8xNzgwLzMyMQpmIDE1MTIvMTc4MC8zMjIgMTUyMy8xNzg3LzMyMiAxNTI0LzE3ODgvMzIyIDE1MTMvMTc4MS8zMjIKZiAxNTEzLzE3ODEvMzIzIDE1MjQvMTc4OC8zMjMgMTUyNS8xNzg5LzMyMyAxNTE0LzE3ODIvMzIzCmYgMTUxNC8xNzgyLzMyNCAxNTI1LzE3ODkvMzI0IDE1MTYvMTYzMC8zMjQgMTUwNS8xNjI5LzMyNApmIDE1MTUvMTY2Ni8zMjUgMTUyNi8xNjY1LzMyNSAxNTI4LzExNjQvMzI1IDE1MTcvMTE2My8zMjUKZiAxNTE4LzExNjYvMzI2IDE1MjkvMTE2NS8zMjYgMTUzMC8xNzkwLzMyNiAxNTE5LzE3ODMvMzI2CmYgMTUxOS8xNzgzLzMyNyAxNTMwLzE3OTAvMzI3IDE1MzEvMTc5MS8zMjcgMTUyMC8xNzg0LzMyNwpmIDE1MjAvMTc4NC8zMjggMTUzMS8xNzkxLzMyOCAxNTMyLzE3OTIvMzI4IDE1MjEvMTc4NS8zMjgKZiAxNTIxLzE3ODUvMzI5IDE1MzIvMTc5Mi8zMjkgMTUzMy8xNzkzLzMyOSAxNTIyLzE3ODYvMzI5CmYgMTUyMi8xNzg2LzMzMCAxNTMzLzE3OTMvMzMwIDE1MzQvMTc5NC8zMzAgMTUyMy8xNzg3LzMzMApmIDE1MjMvMTc4Ny8zMzEgMTUzNC8xNzk0LzMzMSAxNTM1LzE3OTUvMzMxIDE1MjQvMTc4OC8zMzEKZiAxNTI0LzE3ODgvMzMyIDE1MzUvMTc5NS8zMzIgMTUzNi8xNzk2LzMzMiAxNTI1LzE3ODkvMzMyCmYgMTUyNS8xNzg5LzMzMyAxNTM2LzE3OTYvMzMzIDE1MjcvMTYzNS8zMzMgMTUxNi8xNjMwLzMzMwpmIDE1MjYvMTY2NS8zMzQgMTUzNy8xNjY0LzMzNCAxNTM5LzE3OTcvMzM0IDE1MjgvMTE2NC8zMzQKZiAxNTI4LzExNjQvMzM1IDE1MzkvMTc5Ny8zMzUgMTU0MC8xNzk4LzMzNSAxNTI5LzExNjUvMzM1CmYgMTUyOS8xMTY1LzMzNiAxNTQwLzE3OTgvMzM2IDE1NDEvMTc5OS8zMzYgMTUzMC8xNzkwLzMzNgpmIDE1MzAvMTc5MC8zMzcgMTU0MS8xNzk5LzMzNyAxNTQyLzE4MDAvMzM3IDE1MzEvMTc5MS8zMzcKZiAxNTMxLzE3OTEvMzM4IDE1NDIvMTgwMC8zMzggMTU0My8xODAxLzMzOCAxNTMyLzE3OTIvMzM4CmYgMTUzMi8xNzkyLzMzOSAxNTQzLzE4MDEvMzM5IDE1NDQvMTgwMi8zMzkgMTUzMy8xNzkzLzMzOQpmIDE1MzMvMTc5My8zNDAgMTU0NC8xODAyLzM0MCAxNTQ1LzE4MDMvMzQwIDE1MzQvMTc5NC8zNDAKZiAxNTM0LzE3OTQvMzQxIDE1NDUvMTgwMy8zNDEgMTU0Ni8xODA0LzM0MSAxNTM1LzE3OTUvMzQxCmYgMTUzNS8xNzk1LzM0MiAxNTQ2LzE4MDQvMzQyIDE1NDcvMTgwNS8zNDIgMTUzNi8xNzk2LzM0MgpmIDE1MzYvMTc5Ni8zNDMgMTU0Ny8xODA1LzM0MyAxNTM4LzE2MzcvMzQzIDE1MjcvMTYzNS8zNDMKZiAxNTM3LzE2NjQvMzQ0IDE1NDgvMTY2My8zNDQgMTU1MC8xODA2LzM0NCAxNTM5LzE3OTcvMzQ0CmYgMTUzOS8xNzk3LzM0NSAxNTUwLzE4MDYvMzQ1IDE1NTEvMTgwNy8zNDUgMTU0MC8xNzk4LzM0NQpmIDE1NDAvMTc5OC8zNDYgMTU1MS8xODA3LzM0NiAxNTUyLzE4MDgvMzQ2IDE1NDEvMTc5OS8zNDYKZiAxNTQxLzE3OTkvMzQ3IDE1NTIvMTgwOC8zNDcgMTU1My8xODA5LzM0NyAxNTQyLzE4MDAvMzQ3CmYgMTU0Mi8xODAwLzM0OCAxNTUzLzE4MDkvMzQ4IDE1NTQvMTgxMC8zNDggMTU0My8xODAxLzM0OApmIDE1NDMvMTgwMS8zNDkgMTU1NC8xODEwLzM0OSAxNTU1LzE4MTEvMzQ5IDE1NDQvMTgwMi8zNDkKZiAxNTQ0LzE4MDIvMzUwIDE1NTUvMTgxMS8zNTAgMTU1Ni8xODEyLzM1MCAxNTQ1LzE4MDMvMzUwCmYgMTU0NS8xODAzLzM1MSAxNTU2LzE4MTIvMzUxIDE1NTcvMTgxMy8zNTEgMTU0Ni8xODA0LzM1MQpmIDE1NDYvMTgwNC8zNTIgMTU1Ny8xODEzLzM1MiAxNTU4LzE4MTQvMzUyIDE1NDcvMTgwNS8zNTIKZiAxNTQ3LzE4MDUvMzUzIDE1NTgvMTgxNC8zNTMgMTU0OS8xNjM5LzM1MyAxNTM4LzE2MzcvMzUzCmYgMTU0OC8xNjYzLzM1NCAxNTU5LzE2NjIvMzU0IDE1NjEvMTgxNS8zNTQgMTU1MC8xODA2LzM1NApmIDE1NTAvMTgwNi8zNTUgMTU2MS8xODE1LzM1NSAxNTYyLzE4MTYvMzU1IDE1NTEvMTgwNy8zNTUKZiAxNTUxLzE4MDcvMzU2IDE1NjIvMTgxNi8zNTYgMTU2My8xODE3LzM1NiAxNTUyLzE4MDgvMzU2CmYgMTU1Mi8xODA4LzM1NyAxNTYzLzE4MTcvMzU3IDE1NjQvMTgxOC8zNTcgMTU1My8xODA5LzM1NwpmIDE1NTMvMTgwOS8zNTggMTU2NC8xODE4LzM1OCAxNTY1LzE4MTkvMzU4IDE1NTQvMTgxMC8zNTgKZiAxNTU0LzE4MTAvMzU5IDE1NjUvMTgxOS8zNTkgMTU2Ni8xODIwLzM1OSAxNTU1LzE4MTEvMzU5CmYgMTU1NS8xODExLzM2MCAxNTY2LzE4MjAvMzYwIDE1NjcvMTgyMS8zNjAgMTU1Ni8xODEyLzM2MApmIDE1NTYvMTgxMi8zNjEgMTU2Ny8xODIxLzM2MSAxNTY4LzE4MjIvMzYxIDE1NTcvMTgxMy8zNjEKZiAxNTU3LzE4MTMvMzYyIDE1NjgvMTgyMi8zNjIgMTU2OS8xODIzLzM2MiAxNTU4LzE4MTQvMzYyCmYgMTU1OC8xODE0LzM2MyAxNTY5LzE4MjMvMzYzIDE1NjAvMTY0MS8zNjMgMTU0OS8xNjM5LzM2MwpmIDE1NTkvMTY2Mi8zNjQgMTU3MC8xNjYxLzM2NCAxNTcyLzE4MjQvMzY0IDE1NjEvMTgxNS8zNjQKZiAxNTYxLzE4MTUvMzY1IDE1NzIvMTgyNC8zNjUgMTU3My8xODI1LzM2NSAxNTYyLzE4MTYvMzY1CmYgMTU2Mi8xODE2LzM2NiAxNTczLzE4MjUvMzY2IDE1NzQvMTgyNi8zNjYgMTU2My8xODE3LzM2NgpmIDE1NjMvMTgxNy8zNjcgMTU3NC8xODI2LzM2NyAxNTc1LzE4MjcvMzY3IDE1NjQvMTgxOC8zNjcKZiAxNTY0LzE4MTgvMzY4IDE1NzUvMTgyNy8zNjggMTU3Ni8xODI4LzM2OCAxNTY1LzE4MTkvMzY4CmYgMTU2NS8xODE5LzM2OSAxNTc2LzE4MjgvMzY5IDE1NzcvMTgyOS8zNjkgMTU2Ni8xODIwLzM2OQpmIDE1NjYvMTgyMC8zNzAgMTU3Ny8xODI5LzM3MCAxNTc4LzE4MzAvMzcwIDE1NjcvMTgyMS8zNzAKZiAxNTY3LzE4MjEvMzcxIDE1NzgvMTgzMC8zNzEgMTU3OS8xODMxLzM3MSAxNTY4LzE4MjIvMzcxCmYgMTU2OC8xODIyLzM3MiAxNTc5LzE4MzEvMzcyIDE1ODAvMTgzMi8zNzIgMTU2OS8xODIzLzM3MgpmIDE1NjkvMTgyMy8zNzMgMTU4MC8xODMyLzM3MyAxNTcxLzE2NDMvMzczIDE1NjAvMTY0MS8zNzMKZiAxNTcwLzE2NjEvMzc0IDE1ODEvMTY2MC8zNzQgMTU4My8xODMzLzM3NCAxNTcyLzE4MjQvMzc0CmYgMTU3Mi8xODI0LzM3NSAxNTgzLzE4MzMvMzc1IDE1ODQvMTgzNC8zNzUgMTU3My8xODI1LzM3NQpmIDE1NzMvMTgyNS8zNzYgMTU4NC8xODM0LzM3NiAxNTg1LzE4MzUvMzc2IDE1NzQvMTgyNi8zNzYKZiAxNTc0LzE4MjYvMzc3IDE1ODUvMTgzNS8zNzcgMTU4Ni8xODM2LzM3NyAxNTc1LzE4MjcvMzc3CmYgMTU3NS8xODI3LzM3OCAxNTg2LzE4MzYvMzc4IDE1ODcvMTgzNy8zNzggMTU3Ni8xODI4LzM3OApmIDE1NzYvMTgyOC8zNzkgMTU4Ny8xODM3LzM3OSAxNTg4LzE4MzgvMzc5IDE1NzcvMTgyOS8zNzkKZiAxNTc3LzE4MjkvMzgwIDE1ODgvMTgzOC8zODAgMTU4OS8xODM5LzM4MCAxNTc4LzE4MzAvMzgwCmYgMTU3OC8xODMwLzM4MSAxNTg5LzE4MzkvMzgxIDE1OTAvMTg0MC8zODEgMTU3OS8xODMxLzM4MQpmIDE1NzkvMTgzMS8zODIgMTU5MC8xODQwLzM4MiAxNTkxLzE4NDEvMzgyIDE1ODAvMTgzMi8zODIKZiAxNTgwLzE4MzIvMzgzIDE1OTEvMTg0MS8zODMgMTU4Mi8xNjc3LzM4MyAxNTcxLzE2NDMvMzgzCmYgMTU4MS8xNjYwLzM4NCAxNTkyLzE2NTkvMzg0IDE1OTQvMTg0Mi8zODQgMTU4My8xODMzLzM4NApmIDE1ODMvMTgzMy8zODUgMTU5NC8xODQyLzM4NSAxNTk1LzE4NDMvMzg1IDE1ODQvMTgzNC8zODUKZiAxNTg0LzE4MzQvMzg2IDE1OTUvMTg0My8zODYgMTU5Ni8xODQ0LzM4NiAxNTg1LzE4MzUvMzg2CmYgMTU4NS8xODM1LzM4NyAxNTk2LzE4NDQvMzg3IDE1OTcvMTg0NS8zODcgMTU4Ni8xODM2LzM4NwpmIDE1ODYvMTgzNi8zODggMTU5Ny8xODQ1LzM4OCAxNTk4LzE4NDYvMzg4IDE1ODcvMTgzNy8zODgKZiAxNTg3LzE4MzcvMzg5IDE1OTgvMTg0Ni8zODkgMTU5OS8xODQ3LzM4OSAxNTg4LzE4MzgvMzg5CmYgMTU4OC8xODM4LzM5MCAxNTk5LzE4NDcvMzkwIDE2MDAvMTg0OC8zOTAgMTU4OS8xODM5LzM5MApmIDE1ODkvMTgzOS8zOTEgMTYwMC8xODQ4LzM5MSAxNjAxLzE4NDkvMzkxIDE1OTAvMTg0MC8zOTEKZiAxNTkwLzE4NDAvMzkyIDE2MDEvMTg0OS8zOTIgMTYwMi8xODUwLzM5MiAxNTkxLzE4NDEvMzkyCmYgMTU5MS8xODQxLzM5MyAxNjAyLzE4NTAvMzkzIDE1OTMvMTY4MS8zOTMgMTU4Mi8xNjc3LzM5MwpmIDE1OTIvMTY1OS8zOTQgMTYwMy8xNjU4LzM5NCAxNjA1LzE4NTEvMzk0IDE1OTQvMTg0Mi8zOTQKZiAxNTk0LzE4NDIvMzk1IDE2MDUvMTg1MS8zOTUgMTYwNi8xODUyLzM5NSAxNTk1LzE4NDMvMzk1CmYgMTU5NS8xODQzLzM5NiAxNjA2LzE4NTIvMzk2IDE2MDcvMTg1My8zOTYgMTU5Ni8xODQ0LzM5NgpmIDE1OTYvMTg0NC8zOTcgMTYwNy8xODUzLzM5NyAxNjA4LzE4NTQvMzk3IDE1OTcvMTg0NS8zOTcKZiAxNTk3LzE4NDUvMzk4IDE2MDgvMTg1NC8zOTggMTYwOS8xODU1LzM5OCAxNTk4LzE4NDYvMzk4CmYgMTU5OC8xODQ2LzM5OSAxNjA5LzE4NTUvMzk5IDE2MTAvMTg1Ni8zOTkgMTU5OS8xODQ3LzM5OQpmIDE1OTkvMTg0Ny80MDAgMTYxMC8xODU2LzQwMCAxNjExLzE4NTcvNDAwIDE2MDAvMTg0OC80MDAKZiAxNjAwLzE4NDgvNDAxIDE2MTEvMTg1Ny80MDEgMTYxMi8xODU4LzQwMSAxNjAxLzE4NDkvNDAxCmYgMTYwMS8xODQ5LzQwMiAxNjEyLzE4NTgvNDAyIDE2MTMvMTg1OS80MDIgMTYwMi8xODUwLzQwMgpmIDE2MDIvMTg1MC80MDMgMTYxMy8xODU5LzQwMyAxNjA0LzE2ODMvNDAzIDE1OTMvMTY4MS80MDMKZiAxNjAzLzE2NTgvNDA0IDE2MTQvMTY1Ny80MDQgMTYxNi8xODYwLzQwNCAxNjA1LzE4NTEvNDA0CmYgMTYwNS8xODUxLzQwNSAxNjE2LzE4NjAvNDA1IDE2MTcvMTg2MS80MDUgMTYwNi8xODUyLzQwNQpmIDE2MDYvMTg1Mi80MDYgMTYxNy8xODYxLzQwNiAxNjE4LzE4NjIvNDA2IDE2MDcvMTg1My80MDYKZiAxNjA3LzE4NTMvNDA3IDE2MTgvMTg2Mi80MDcgMTYxOS8xODYzLzQwNyAxNjA4LzE4NTQvNDA3CmYgMTYwOC8xODU0LzQwOCAxNjE5LzE4NjMvNDA4IDE2MjAvMTg2NC80MDggMTYwOS8xODU1LzQwOApmIDE2MDkvMTg1NS80MDkgMTYyMC8xODY0LzQwOSAxNjIxLzE4NjUvNDA5IDE2MTAvMTg1Ni80MDkKZiAxNjEwLzE4NTYvNDEwIDE2MjEvMTg2NS80MTAgMTYyMi8xODY2LzQxMCAxNjExLzE4NTcvNDEwCmYgMTYxMS8xODU3LzQxMSAxNjIyLzE4NjYvNDExIDE2MjMvMTg2Ny80MTEgMTYxMi8xODU4LzQxMQpmIDE2MTIvMTg1OC80MTIgMTYyMy8xODY3LzQxMiAxNjI0LzE4NjgvNDEyIDE2MTMvMTg1OS80MTIKZiAxNjEzLzE4NTkvNDEzIDE2MjQvMTg2OC80MTMgMTYxNS8xNjg1LzQxMyAxNjA0LzE2ODMvNDEzCmYgMTYxNC8xNjU3LzQxNCAxNjI1LzE2NTYvNDE0IDE2MjcvMTg2OS80MTQgMTYxNi8xODYwLzQxNApmIDE2MTYvMTg2MC80MTUgMTYyNy8xODY5LzQxNSAxNjI4LzE4NzAvNDE1IDE2MTcvMTg2MS80MTUKZiAxNjE3LzE4NjEvNDE2IDE2MjgvMTg3MC80MTYgMTYyOS8xODcxLzQxNiAxNjE4LzE4NjIvNDE2CmYgMTYxOC8xODYyLzQxNyAxNjI5LzE4NzEvNDE3IDE2MzAvMTg3Mi80MTcgMTYxOS8xODYzLzQxNwpmIDE2MTkvMTg2My80MTggMTYzMC8xODcyLzQxOCAxNjMxLzE4NzMvNDE4IDE2MjAvMTg2NC80MTgKZiAxNjIwLzE4NjQvNDE5IDE2MzEvMTg3My80MTkgMTYzMi8xODc0LzQxOSAxNjIxLzE4NjUvNDE5CmYgMTYyMS8xODY1LzQyMCAxNjMyLzE4NzQvNDIwIDE2MzMvMTg3NS80MjAgMTYyMi8xODY2LzQyMApmIDE2MjIvMTg2Ni80MjEgMTYzMy8xODc1LzQyMSAxNjM0LzE4NzYvNDIxIDE2MjMvMTg2Ny80MjEKZiAxNjIzLzE4NjcvNDIyIDE2MzQvMTg3Ni80MjIgMTYzNS8xODc3LzQyMiAxNjI0LzE4NjgvNDIyCmYgMTYyNC8xODY4LzQyMyAxNjM1LzE4NzcvNDIzIDE2MjYvMTY4OC80MjMgMTYxNS8xNjg1LzQyMwpmIDE2MjUvMTY1Ni80MjQgMTYzNi8xNjU1LzQyNCAxNjM4LzE4NzgvNDI0IDE2MjcvMTg2OS80MjQKZiAxNjI3LzE4NjkvNDI1IDE2MzgvMTg3OC80MjUgMTYzOS8xODc5LzQyNSAxNjI4LzE4NzAvNDI1CmYgMTYyOC8xODcwLzQyNiAxNjM5LzE4NzkvNDI2IDE2NDAvMTg4MC80MjYgMTYyOS8xODcxLzQyNgpmIDE2MjkvMTg3MS80MjcgMTY0MC8xODgwLzQyNyAxNjQxLzE4ODEvNDI3IDE2MzAvMTg3Mi80MjcKZiAxNjMwLzE4NzIvNDI4IDE2NDEvMTg4MS80MjggMTY0Mi8xODgyLzQyOCAxNjMxLzE4NzMvNDI4CmYgMTYzMS8xODczLzQyOSAxNjQyLzE4ODIvNDI5IDE2NDMvMTg4My80MjkgMTYzMi8xODc0LzQyOQpmIDE2MzIvMTg3NC80MzAgMTY0My8xODgzLzQzMCAxNjQ0LzE4ODQvNDMwIDE2MzMvMTg3NS80MzAKZiAxNjMzLzE4NzUvNDMxIDE2NDQvMTg4NC80MzEgMTY0NS8xODg1LzQzMSAxNjM0LzE4NzYvNDMxCmYgMTYzNC8xODc2LzQzMiAxNjQ1LzE4ODUvNDMyIDE2NDYvMTg4Ni80MzIgMTYzNS8xODc3LzQzMgpmIDE2MzUvMTg3Ny80MzMgMTY0Ni8xODg2LzQzMyAxNjM3LzE2OTAvNDMzIDE2MjYvMTY4OC80MzMKZiAxNjM2LzE2NTUvNDM0IDE2NDcvMTY1NC80MzQgMTY0OS8xODg3LzQzNCAxNjM4LzE4NzgvNDM0CmYgMTYzOC8xODc4LzQzNSAxNjQ5LzE4ODcvNDM1IDE2NTAvMTg4OC80MzUgMTYzOS8xODc5LzQzNQpmIDE2MzkvMTg3OS80MzYgMTY1MC8xODg4LzQzNiAxNjUxLzE4ODkvNDM2IDE2NDAvMTg4MC80MzYKZiAxNjQwLzE4ODAvNDM3IDE2NTEvMTg4OS80MzcgMTY1Mi8xODkwLzQzNyAxNjQxLzE4ODEvNDM3CmYgMTY0MS8xODgxLzQzOCAxNjUyLzE4OTAvNDM4IDE2NTMvMTg5MS80MzggMTY0Mi8xODgyLzQzOApmIDE2NDIvMTg4Mi80MzkgMTY1My8xODkxLzQzOSAxNjU0LzE4OTIvNDM5IDE2NDMvMTg4My80MzkKZiAxNjQzLzE4ODMvNDQwIDE2NTQvMTg5Mi80NDAgMTY1NS8xODkzLzQ0MCAxNjQ0LzE4ODQvNDQwCmYgMTY0NC8xODg0LzQ0MSAxNjU1LzE4OTMvNDQxIDE2NTYvMTg5NC80NDEgMTY0NS8xODg1LzQ0MQpmIDE2NDUvMTg4NS80NDIgMTY1Ni8xODk0LzQ0MiAxNjU3LzE4OTUvNDQyIDE2NDYvMTg4Ni80NDIKZiAxNjQ2LzE4ODYvNDQzIDE2NTcvMTg5NS80NDMgMTY0OC8xNjkyLzQ0MyAxNjM3LzE2OTAvNDQzCmYgMTY0Ny8xNjU0LzQ0NCAxNjU4LzE2NTMvNDQ0IDE2NjAvMTg5Ni80NDQgMTY0OS8xODg3LzQ0NApmIDE2NDkvMTg4Ny80NDUgMTY2MC8xODk2LzQ0NSAxNjYxLzE4OTcvNDQ1IDE2NTAvMTg4OC80NDUKZiAxNjUwLzE4ODgvNDQ2IDE2NjEvMTg5Ny80NDYgMTY2Mi8xODk4LzQ0NiAxNjUxLzE4ODkvNDQ2CmYgMTY1MS8xODg5LzQ0NyAxNjYyLzE4OTgvNDQ3IDE2NjMvMTg5OS80NDcgMTY1Mi8xODkwLzQ0NwpmIDE2NTIvMTg5MC80NDggMTY2My8xODk5LzQ0OCAxNjY0LzE5MDAvNDQ4IDE2NTMvMTg5MS80NDgKZiAxNjUzLzE4OTEvNDQ5IDE2NjQvMTkwMC80NDkgMTY2NS8xOTAxLzQ0OSAxNjU0LzE4OTIvNDQ5CmYgMTY1NC8xODkyLzQ1MCAxNjY1LzE5MDEvNDUwIDE2NjYvMTkwMi80NTAgMTY1NS8xODkzLzQ1MApmIDE2NTUvMTg5My80NTEgMTY2Ni8xOTAyLzQ1MSAxNjY3LzE5MDMvNDUxIDE2NTYvMTg5NC80NTEKZiAxNjU2LzE4OTQvNDUyIDE2NjcvMTkwMy80NTIgMTY2OC8xOTA0LzQ1MiAxNjU3LzE4OTUvNDUyCmYgMTY1Ny8xODk1LzQ1MyAxNjY4LzE5MDQvNDUzIDE2NTkvMTYzMy80NTMgMTY0OC8xNjkyLzQ1MwpmIDE2NTgvMTY1My80NTQgMTY2OS8xNjUyLzQ1NCAxNjcxLzE5MDUvNDU0IDE2NjAvMTg5Ni80NTQKZiAxNjYwLzE4OTYvNDU1IDE2NzEvMTkwNS80NTUgMTY3Mi8xOTA2LzQ1NSAxNjYxLzE4OTcvNDU1CmYgMTY2MS8xODk3LzQ1NiAxNjcyLzE5MDYvNDU2IDE2NzMvMTkwNy80NTYgMTY2Mi8xODk4LzQ1NgpmIDE2NjIvMTg5OC80NTcgMTY3My8xOTA3LzQ1NyAxNjc0LzE5MDgvNDU3IDE2NjMvMTg5OS80NTcKZiAxNjYzLzE4OTkvNDU4IDE2NzQvMTkwOC80NTggMTY3NS8xOTA5LzQ1OCAxNjY0LzE5MDAvNDU4CmYgMTY2NC8xOTAwLzQ1OSAxNjc1LzE5MDkvNDU5IDE2NzYvMTkxMC80NTkgMTY2NS8xOTAxLzQ1OQpmIDE2NjUvMTkwMS80NjAgMTY3Ni8xOTEwLzQ2MCAxNjc3LzE5MTEvNDYwIDE2NjYvMTkwMi80NjAKZiAxNjY2LzE5MDIvNDYxIDE2NzcvMTkxMS80NjEgMTY3OC8xOTEyLzQ2MSAxNjY3LzE5MDMvNDYxCmYgMTY2Ny8xOTAzLzQ2MiAxNjc4LzE5MTIvNDYyIDE2NzkvMTkxMy80NjIgMTY2OC8xOTA0LzQ2MgpmIDE2NjgvMTkwNC80NjMgMTY3OS8xOTEzLzQ2MyAxNjcwLzE2MzQvNDYzIDE2NTkvMTYzMy80NjMKZiAxNjY5LzE2NTIvNDY0IDE2ODAvMTY1MS80NjQgMTY4Mi8xOTE0LzQ2NCAxNjcxLzE5MDUvNDY0CmYgMTY3MS8xOTA1LzQ2NSAxNjgyLzE5MTQvNDY1IDE2ODMvMTkxNS80NjUgMTY3Mi8xOTA2LzQ2NQpmIDE2NzIvMTkwNi80NjYgMTY4My8xOTE1LzQ2NiAxNjg0LzE5MTYvNDY2IDE2NzMvMTkwNy80NjYKZiAxNjczLzE5MDcvNDY3IDE2ODQvMTkxNi80NjcgMTY4NS8xOTE3LzQ2NyAxNjc0LzE5MDgvNDY3CmYgMTY3NC8xOTA4LzQ2OCAxNjg1LzE5MTcvNDY4IDE2ODYvMTkxOC80NjggMTY3NS8xOTA5LzQ2OApmIDE2NzUvMTkwOS80NjkgMTY4Ni8xOTE4LzQ2OSAxNjg3LzE5MTkvNDY5IDE2NzYvMTkxMC80NjkKZiAxNjc2LzE5MTAvNDcwIDE2ODcvMTkxOS80NzAgMTY4OC8xOTIwLzQ3MCAxNjc3LzE5MTEvNDcwCmYgMTY3Ny8xOTExLzQ3MSAxNjg4LzE5MjAvNDcxIDE2ODkvMTkyMS80NzEgMTY3OC8xOTEyLzQ3MQpmIDE2NzgvMTkxMi80NzIgMTY4OS8xOTIxLzQ3MiAxNjkwLzE5MjIvNDcyIDE2NzkvMTkxMy80NzIKZiAxNjc5LzE5MTMvNDczIDE2OTAvMTkyMi80NzMgMTY4MS8xNjM2LzQ3MyAxNjcwLzE2MzQvNDczCmYgMTY4MC8xNjUxLzQ3NCAxNjkxLzE2NTAvNDc0IDE2OTMvMTkyMy80NzQgMTY4Mi8xOTE0LzQ3NApmIDE2ODIvMTkxNC80NzUgMTY5My8xOTIzLzQ3NSAxNjk0LzE5MjQvNDc1IDE2ODMvMTkxNS80NzUKZiAxNjgzLzE5MTUvNDc2IDE2OTQvMTkyNC80NzYgMTY5NS8xOTI1LzQ3NiAxNjg0LzE5MTYvNDc2CmYgMTY4NC8xOTE2LzQ3NyAxNjk1LzE5MjUvNDc3IDE2OTYvMTkyNi80NzcgMTY4NS8xOTE3LzQ3NwpmIDE2ODUvMTkxNy80NzggMTY5Ni8xOTI2LzQ3OCAxNjk3LzE5MjcvNDc4IDE2ODYvMTkxOC80NzgKZiAxNjg2LzE5MTgvNDc5IDE2OTcvMTkyNy80NzkgMTY5OC8xOTI4LzQ3OSAxNjg3LzE5MTkvNDc5CmYgMTY4Ny8xOTE5LzQ4MCAxNjk4LzE5MjgvNDgwIDE2OTkvMTkyOS80ODAgMTY4OC8xOTIwLzQ4MApmIDE2ODgvMTkyMC80ODEgMTY5OS8xOTI5LzQ4MSAxNzAwLzE5MzAvNDgxIDE2ODkvMTkyMS80ODEKZiAxNjg5LzE5MjEvNDgyIDE3MDAvMTkzMC80ODIgMTcwMS8xOTMxLzQ4MiAxNjkwLzE5MjIvNDgyCmYgMTY5MC8xOTIyLzQ4MyAxNzAxLzE5MzEvNDgzIDE2OTIvMTYzOC80ODMgMTY4MS8xNjM2LzQ4MwpmIDE2OTEvMTY1MC80ODQgMTcwMi8xNjQ5LzQ4NCAxNzA0LzE5MzIvNDg0IDE2OTMvMTkyMy80ODQKZiAxNjkzLzE5MjMvNDg1IDE3MDQvMTkzMi80ODUgMTcwNS8xOTMzLzQ4NSAxNjk0LzE5MjQvNDg1CmYgMTY5NC8xOTI0LzQ4NiAxNzA1LzE5MzMvNDg2IDE3MDYvMTkzNC80ODYgMTY5NS8xOTI1LzQ4NgpmIDE2OTUvMTkyNS80ODcgMTcwNi8xOTM0LzQ4NyAxNzA3LzE5MzUvNDg3IDE2OTYvMTkyNi80ODcKZiAxNjk2LzE5MjYvNDg4IDE3MDcvMTkzNS80ODggMTcwOC8xOTM2LzQ4OCAxNjk3LzE5MjcvNDg4CmYgMTY5Ny8xOTI3LzQ4OSAxNzA4LzE5MzYvNDg5IDE3MDkvMTkzNy80ODkgMTY5OC8xOTI4LzQ4OQpmIDE2OTgvMTkyOC80OTAgMTcwOS8xOTM3LzQ5MCAxNzEwLzE5MzgvNDkwIDE2OTkvMTkyOS80OTAKZiAxNjk5LzE5MjkvNDkxIDE3MTAvMTkzOC80OTEgMTcxMS8xOTM5LzQ5MSAxNzAwLzE5MzAvNDkxCmYgMTcwMC8xOTMwLzQ5MiAxNzExLzE5MzkvNDkyIDE3MTIvMTk0MC80OTIgMTcwMS8xOTMxLzQ5MgpmIDE3MDEvMTkzMS80OTMgMTcxMi8xOTQwLzQ5MyAxNzAzLzE2NDAvNDkzIDE2OTIvMTYzOC80OTMKZiAxNzAyLzE2NDkvNDk0IDE3MTMvMTY0OC80OTQgMTcxNS8xOTQxLzQ5NCAxNzA0LzE5MzIvNDk0CmYgMTcwNC8xOTMyLzQ5NSAxNzE1LzE5NDEvNDk1IDE3MTYvMTk0Mi80OTUgMTcwNS8xOTMzLzQ5NQpmIDE3MDUvMTkzMy80OTYgMTcxNi8xOTQyLzQ5NiAxNzE3LzE5NDMvNDk2IDE3MDYvMTkzNC80OTYKZiAxNzA2LzE5MzQvNDk3IDE3MTcvMTk0My80OTcgMTcxOC8xOTQ0LzQ5NyAxNzA3LzE5MzUvNDk3CmYgMTcwNy8xOTM1LzQ5OCAxNzE4LzE5NDQvNDk4IDE3MTkvMTk0NS80OTggMTcwOC8xOTM2LzQ5OApmIDE3MDgvMTkzNi80OTkgMTcxOS8xOTQ1LzQ5OSAxNzIwLzE5NDYvNDk5IDE3MDkvMTkzNy80OTkKZiAxNzA5LzE5MzcvNTAwIDE3MjAvMTk0Ni81MDAgMTcyMS8xOTQ3LzUwMCAxNzEwLzE5MzgvNTAwCmYgMTcxMC8xOTM4LzUwMSAxNzIxLzE5NDcvNTAxIDE3MjIvMTk0OC81MDEgMTcxMS8xOTM5LzUwMQpmIDE3MTEvMTkzOS81MDIgMTcyMi8xOTQ4LzUwMiAxNzIzLzE5NDkvNTAyIDE3MTIvMTk0MC81MDIKZiAxNzEyLzE5NDAvNTAzIDE3MjMvMTk0OS81MDMgMTcxNC8xNjQyLzUwMyAxNzAzLzE2NDAvNTAzCmYgMTcxMy8xNjQ4LzUwNCAxNzI0LzE2NDcvNTA0IDE3MjYvMTk1MC81MDQgMTcxNS8xOTQxLzUwNApmIDE3MTUvMTk0MS81MDUgMTcyNi8xOTUwLzUwNSAxNzI3LzE5NTEvNTA1IDE3MTYvMTk0Mi81MDUKZiAxNzE2LzE5NDIvNTA2IDE3MjcvMTk1MS81MDYgMTcyOC8xOTUyLzUwNiAxNzE3LzE5NDMvNTA2CmYgMTcxNy8xOTQzLzUwNyAxNzI4LzE5NTIvNTA3IDE3MjkvMTk1My81MDcgMTcxOC8xOTQ0LzUwNwpmIDE3MTgvMTk0NC81MDggMTcyOS8xOTUzLzUwOCAxNzMwLzE5NTQvNTA4IDE3MTkvMTk0NS81MDgKZiAxNzE5LzE5NDUvNTA5IDE3MzAvMTk1NC81MDkgMTczMS8xOTU1LzUwOSAxNzIwLzE5NDYvNTA5CmYgMTcyMC8xOTQ2LzUxMCAxNzMxLzE5NTUvNTEwIDE3MzIvMTk1Ni81MTAgMTcyMS8xOTQ3LzUxMApmIDE3MjEvMTk0Ny81MTEgMTczMi8xOTU2LzUxMSAxNzMzLzE5NTcvNTExIDE3MjIvMTk0OC81MTEKZiAxNzIyLzE5NDgvNTEyIDE3MzMvMTk1Ny81MTIgMTczNC8xOTU4LzUxMiAxNzIzLzE5NDkvNTEyCmYgMTcyMy8xOTQ5LzUxMyAxNzM0LzE5NTgvNTEzIDE3MjUvMTY3Ni81MTMgMTcxNC8xNjQyLzUxMwpmIDE3MjQvMTY0Ny81MTQgMTczNS8xNjQ2LzUxNCAxNzM3LzE5NTkvNTE0IDE3MjYvMTk1MC81MTQKZiAxNzI2LzE5NTAvNTE1IDE3MzcvMTk1OS81MTUgMTczOC8xOTYwLzUxNSAxNzI3LzE5NTEvNTE1CmYgMTcyNy8xOTUxLzUxNiAxNzM4LzE5NjAvNTE2IDE3MzkvMTk2MS81MTYgMTcyOC8xOTUyLzUxNgpmIDE3MjgvMTk1Mi81MTcgMTczOS8xOTYxLzUxNyAxNzQwLzE5NjIvNTE3IDE3MjkvMTk1My81MTcKZiAxNzI5LzE5NTMvNTE4IDE3NDAvMTk2Mi81MTggMTc0MS8xOTYzLzUxOCAxNzMwLzE5NTQvNTE4CmYgMTczMC8xOTU0LzUxOSAxNzQxLzE5NjMvNTE5IDE3NDIvMTk2NC81MTkgMTczMS8xOTU1LzUxOQpmIDE3MzEvMTk1NS81MjAgMTc0Mi8xOTY0LzUyMCAxNzQzLzE5NjUvNTIwIDE3MzIvMTk1Ni81MjAKZiAxNzMyLzE5NTYvNTIxIDE3NDMvMTk2NS81MjEgMTc0NC8xOTY2LzUyMSAxNzMzLzE5NTcvNTIxCmYgMTczMy8xOTU3LzUyMiAxNzQ0LzE5NjYvNTIyIDE3NDUvMTk2Ny81MjIgMTczNC8xOTU4LzUyMgpmIDE3MzQvMTk1OC81MjMgMTc0NS8xOTY3LzUyMyAxNzM2LzE2ODAvNTIzIDE3MjUvMTY3Ni81MjMKZiAxNzM1LzE2NDYvNTI0IDE3NDYvMTY0NS81MjQgMTc0OC8xOTY4LzUyNCAxNzM3LzE5NTkvNTI0CmYgMTczNy8xOTU5LzUyNSAxNzQ4LzE5NjgvNTI1IDE3NDkvMTk2OS81MjUgMTczOC8xOTYwLzUyNQpmIDE3MzgvMTk2MC81MjYgMTc0OS8xOTY5LzUyNiAxNzUwLzE5NzAvNTI2IDE3MzkvMTk2MS81MjYKZiAxNzM5LzE5NjEvNTI3IDE3NTAvMTk3MC81MjcgMTc1MS8xOTcxLzUyNyAxNzQwLzE5NjIvNTI3CmYgMTc0MC8xOTYyLzUyOCAxNzUxLzE5NzEvNTI4IDE3NTIvMTk3Mi81MjggMTc0MS8xOTYzLzUyOApmIDE3NDEvMTk2My81MjkgMTc1Mi8xOTcyLzUyOSAxNzUzLzE5NzMvNTI5IDE3NDIvMTk2NC81MjkKZiAxNzQyLzE5NjQvNTMwIDE3NTMvMTk3My81MzAgMTc1NC8xOTc0LzUzMCAxNzQzLzE5NjUvNTMwCmYgMTc0My8xOTY1LzUzMSAxNzU0LzE5NzQvNTMxIDE3NTUvMTk3NS81MzEgMTc0NC8xOTY2LzUzMQpmIDE3NDQvMTk2Ni81MzIgMTc1NS8xOTc1LzUzMiAxNzU2LzE5NzYvNTMyIDE3NDUvMTk2Ny81MzIKZiAxNzQ1LzE5NjcvNTMzIDE3NTYvMTk3Ni81MzMgMTc0Ny8xNjMxLzUzMyAxNzM2LzE2ODAvNTMzCmYgMTc0Ni8xNjQ1LzUzNCAxNDA2LzE2NDQvNTM0IDE0MTUvMTY5NC81MzQgMTc0OC8xOTY4LzUzNApmIDE3NDgvMTk2OC81MzUgMTQxNS8xNjk0LzUzNSAxNDE0LzE2OTYvNTM1IDE3NDkvMTk2OS81MzUKZiAxNzQ5LzE5NjkvNTM2IDE0MTQvMTY5Ni81MzYgMTQxMy8xNjk4LzUzNiAxNzUwLzE5NzAvNTM2CmYgMTc1MC8xOTcwLzUzNyAxNDEzLzE2OTgvNTM3IDE0MTIvMTcwMC81MzcgMTc1MS8xOTcxLzUzNwpmIDE3NTEvMTk3MS81MzggMTQxMi8xNzAwLzUzOCAxNDExLzE3MDIvNTM4IDE3NTIvMTk3Mi81MzgKZiAxNzUyLzE5NzIvNTM5IDE0MTEvMTcwMi81MzkgMTQxMC8xNzA0LzUzOSAxNzUzLzE5NzMvNTM5CmYgMTc1My8xOTczLzU0MCAxNDEwLzE3MDQvNTQwIDE0MDkvMTcwNi81NDAgMTc1NC8xOTc0LzU0MApmIDE3NTQvMTk3NC81NDEgMTQwOS8xNzA2LzU0MSAxNDA4LzE3MDgvNTQxIDE3NTUvMTk3NS81NDEKZiAxNzU1LzE5NzUvNTQyIDE0MDgvMTcwOC81NDIgMTQwNy8xNzEwLzU0MiAxNzU2LzE5NzYvNTQyCmYgMTc1Ni8xOTc2LzU0MyAxNDA3LzE3MTAvNTQzIDE0MDUvMTYzMi81NDMgMTc0Ny8xNjMxLzU0MwpmIDQ1Mi8xMTAwLzUyIDQ1MS8xMDk5LzUyIDE0MDUvMTYzMi81MiAxNDE3LzE2ODcvNTIKZiA2OC8xMzE1LzU0NCA2OS8xMzE5LzU0NCAyMzY1LzE5NzcvNTQ0IDIzNDMvMTk3OC81NDQKZiAxMDAvMTM3OS81NDQgMTAxLzEzODMvNTQ0IDI3MTcvMTk3OS81NDQgMjY5NS8xOTgwLzU0NApmIDEwNC8xMzg5LzcyIDEwNS8xMzkxLzcyIDI3NjEvMTk4MS83MiAyNzUwLzE5ODIvNzIKZiA3OC8xMzM3Lzg5IDc5LzEzMzkvODkgMjQ3NS8xOTgzLzg5IDI0NjQvMTYyNy84OQpmIDEwMS8xMzgzLzEwOSAxMDIvMTM4NS8xMDkgMjcyOC8xOTg0LzEwOSAyNzE3LzE5NzkvMTA5CmYgMTA1LzEzOTEvNzUgMTA2LzEzOTMvNzUgMjc3Mi8xOTg1Lzc1IDI3NjEvMTk4MS83NQpmIDc5LzEzMzkvMTA4IDgwLzEzNDEvMTA4IDI0ODYvMTk4Ni8xMDggMjQ3NS8xOTgzLzEwOApmIDEwNi8xMzkzLzkyIDEwNy8xMzk1LzkyIDI3ODMvMTk4Ny85MiAyNzcyLzE5ODUvOTIKZiA4MC8xMzQxLzU0NSA4MS8xMzQzLzU0NSAyNDk3LzE5ODgvNTQ1IDI0ODYvMTk4Ni81NDUKZiAxMDcvMTM5NS85OCAxMDgvMTM5Ny85OCAyNzk0LzE5ODkvOTggMjc4My8xOTg3Lzk4CmYgODEvMTM0My81NDYgODIvMTM0NS81NDYgMjUwOC8xOTkwLzU0NiAyNDk3LzE5ODgvNTQ2CmYgMTA4LzEzOTcvODAgMTA5LzEzOTkvODAgMjgwNS8xOTkxLzgwIDI3OTQvMTk4OS84MApmIDgyLzEzNDUvNTQ3IDgzLzEzNDcvNTQ3IDI1MTkvMTk5Mi81NDcgMjUwOC8xOTkwLzU0NwpmIDEwOS8xMzk5Lzk5IDExMC8xNDAxLzk5IDI4MTYvMTk5My85OSAyODA1LzE5OTEvOTkKZiA4My8xMzQ3LzU0OCA4NC8xMzQ5LzU0OCAyNTMwLzE5OTQvNTQ4IDI1MTkvMTk5Mi81NDgKZiAxMTAvMTQwMS84OSAxMTEvMTQwMy84OSAyODI3LzE5OTUvODkgMjgxNi8xOTkzLzg5CmYgODQvMTM0OS85MyA4NS8xMzUxLzkzIDI1NDEvMTk5Ni85MyAyNTMwLzE5OTQvOTMKZiAxMTEvMTQwMy8xMDggMTEyLzE0MDUvMTA4IDI4MzgvMTk5Ny8xMDggMjgyNy8xOTk1LzEwOApmIDg1LzEzNTEvOTAgODYvMTM1My85MCAyNTUyLzE5OTgvOTAgMjU0MS8xOTk2LzkwCmYgMTEyLzE0MDUvNTQ1IDExMy8xNDA3LzU0NSAyODQ5LzE5OTkvNTQ1IDI4MzgvMTk5Ny81NDUKZiA4Ni8xMzUzLzEwNCA4Ny8xMzU1LzEwNCAyNTYzLzIwMDAvMTA0IDI1NTIvMTk5OC8xMDQKZiAxMTMvMTQwNy81NDYgMTE0LzE0MDkvNTQ2IDI4NjAvMjAwMS81NDYgMjg0OS8xOTk5LzU0NgpmIDg3LzEzNTUvNzcgODgvMTM1Ny83NyAyNTc0LzIwMDIvNzcgMjU2My8yMDAwLzc3CmYgMTE0LzE0MDkvNTQ3IDExNS8xNDExLzU0NyAyODcxLzIwMDMvNTQ3IDI4NjAvMjAwMS81NDcKZiA4OC8xMzU3LzEwMiA4OS8xMzU5LzEwMiAyNTg1LzIwMDQvMTAyIDI1NzQvMjAwMi8xMDIKZiAxMTUvMTQxMS81NDggMTE2LzE0MTMvNTQ4IDI4ODIvMjAwNS81NDggMjg3MS8yMDAzLzU0OApmIDg5LzEzNTkvNzYgOTAvMTM2MS83NiAyNTk2LzIwMDYvNzYgMjU4NS8yMDA0Lzc2CmYgMTE2LzE0MTMvOTMgMTE3LzE0MTUvOTMgMjg5My8yMDA3LzkzIDI4ODIvMjAwNS85MwpmIDkwLzEzNjEvODcgOTEvMTM2My84NyAyNjA3LzIwMDgvODcgMjU5Ni8yMDA2Lzg3CmYgMTE3LzE0MTUvOTAgMTE4LzE0MTcvOTAgMjkwNC8yMDA5LzkwIDI4OTMvMjAwNy85MApmIDkxLzEzNjMvNzggOTIvMTM2NS83OCAyNjE4LzIwMTAvNzggMjYwNy8yMDA4Lzc4CmYgMTE4LzE0MTcvODQgMTE5LzE0MTkvODQgMjkxNS8yMDExLzg0IDI5MDQvMjAwOS84NApmIDkyLzEzNjUvODMgOTMvMTM2Ny84MyAyNjI5LzIwMTIvODMgMjYxOC8yMDEwLzgzCmYgMTE5LzE0MTkvNzcgMTIwLzE0MjEvNzcgMjkyNi8yMDEzLzc3IDI5MTUvMjAxMS83NwpmIDkzLzEzNjcvODIgOTQvMTM2OS84MiAyNjQwLzIwMTQvODIgMjYyOS8yMDEyLzgyCmYgMTIwLzE0MjEvMTAyIDEyMS8xNDIzLzEwMiAyOTM3LzIwMTUvMTAyIDI5MjYvMjAxMy8xMDIKZiA5NC8xMzY5LzEwMSA5NS8xMzcxLzEwMSAyNjUxLzIwMTYvMTAxIDI2NDAvMjAxNC8xMDEKZiAyMzQ0LzIwMTcvMTExIDIzNjYvMjAxOC8xMTEgMjM3Ny8yMDE5LzExMSAyMzg4LzIwMjAvMTExIDIzOTkvMjAyMS8xMTEgMjQxMC8yMDIyLzExMSAyNDIxLzIwMjMvMTExIDI0MzIvMjAyNC8xMTEgMjQ0My8yMDI1LzExMSAyNDU0LzIwMjYvMTExIDI0NjUvMjAyNy8xMTEgMjQ3Ni8yMDI4LzExMSAyNDg3LzIwMjkvMTExIDI0OTgvMjAzMC8xMTEgMjUwOS8yMDMxLzExMSAyNTIwLzIwMzIvMTExIDI1MzEvMjAzMy8xMTEgMjU0Mi8yMDM0LzExMSAyNTUzLzIwMzUvMTExIDI1NjQvMjAzNi8xMTEgMjU3NS8yMDM3LzExMSAyNTg2LzIwMzgvMTExIDI1OTcvMjAzOS8xMTEgMjYwOC8yMDQwLzExMSAyNjE5LzIwNDEvMTExIDI2MzAvMjA0Mi8xMTEgMjY0MS8yMDQzLzExMSAyNjUyLzIwNDQvMTExIDI2NjMvMjA0NS8xMTEgMjY3NC8yMDQ2LzExMSAyNjg1LzIwNDcvMTExIDIzNTQvMjA0OC8xMTEKZiAxMjEvMTQyMy83NiAxMjIvMTQyNS83NiAyOTQ4LzIwNDkvNzYgMjkzNy8yMDE1Lzc2CmYgOTUvMTM3MS85MSA5Ni8xMzczLzkxIDI2NjIvMjA1MC85MSAyNjUxLzIwMTYvOTEKZiA5OC8xMzc3LzU0OSA2Ny8xMzE2LzU0OSAyMzU1LzIwNTEvNTQ5IDI2ODQvMjA1Mi81NDkKZiAxMjIvMTQyNS84NyAxMjMvMTQyNy84NyAyOTU5LzIwNTMvODcgMjk0OC8yMDQ5Lzg3CmYgOTYvMTM3My84NiA5Ny8xMzc1Lzg2IDI2NzMvMjA1NC84NiAyNjYyLzIwNTAvODYKZiA3MC8xMzIxLzEwMCA3MS8xMzIzLzEwMCAyMzg3LzIwNTUvMTAwIDIzNzYvMjA1Ni8xMDAKZiAxMjMvMTQyNy83OCAxMjQvMTQyOS83OCAyOTcwLzIwNTcvNzggMjk1OS8yMDUzLzc4CmYgOTcvMTM3NS83OSA5OC8xMzc3Lzc5IDI2ODQvMjA1Mi83OSAyNjczLzIwNTQvNzkKZiA3MS8xMzIzLzk2IDcyLzEzMjUvOTYgMjM5OC8yMDU4Lzk2IDIzODcvMjA1NS85NgpmIDEyNC8xNDI5LzgzIDEyNS8xNDMxLzgzIDI5ODEvMjA1OS84MyAyOTcwLzIwNTcvODMKZiA5OS8xMzgwLzU1MCAxMDAvMTM3OS81NTAgMjY5NS8xOTgwLzU1MCAyNzA3LzIwNjAvNTUwCmYgNzIvMTMyNS83MiA3My8xMzI3LzcyIDI0MDkvMjA2MS83MiAyMzk4LzIwNTgvNzIKZiAxMjUvMTQzMS84MiAxMjYvMTQzMy84MiAyOTkyLzIwNjIvODIgMjk4MS8yMDU5LzgyCmYgNjkvMTMxOS8xMDkgNzAvMTMyMS8xMDkgMjM3Ni8yMDU2LzEwOSAyMzY1LzE5NzcvMTA5CmYgNzMvMTMyNy83NSA3NC8xMzI5Lzc1IDI0MjAvMjA2My83NSAyNDA5LzIwNjEvNzUKZiAxMjYvMTQzMy8xMDEgMTI3LzE0MzUvMTAxIDMwMDMvMjA2NC8xMDEgMjk5Mi8yMDYyLzEwMQpmIDI2OTYvMjA2NS8xMTEgMjcxOC8yMDY2LzExMSAyNzI5LzIwNjcvMTExIDI3NDAvMjA2OC8xMTEgMjc1MS8yMDY5LzExMSAyNzYyLzIwNzAvMTExIDI3NzMvMjA3MS8xMTEgMjc4NC8yMDcyLzExMSAyNzk1LzIwNzMvMTExIDI4MDYvMjA3NC8xMTEgMjgxNy8yMDc1LzExMSAyODI4LzIwNzYvMTExIDI4MzkvMjA3Ny8xMTEgMjg1MC8yMDc4LzExMSAyODYxLzIwNzkvMTExIDI4NzIvMjA4MC8xMTEgMjg4My8yMDgxLzExMSAyODk0LzIwODIvMTExIDI5MDUvMjA4My8xMTEgMjkxNi8yMDg0LzExMSAyOTI3LzIwODUvMTExIDI5MzgvMjA4Ni8xMTEgMjk0OS8yMDg3LzExMSAyOTYwLzIwODgvMTExIDI5NzEvMjA4OS8xMTEgMjk4Mi8yMDkwLzExMSAyOTkzLzIwOTEvMTExIDMwMDQvMjA5Mi8xMTEgMzAxNS8yMDkzLzExMSAzMDI2LzIwOTQvMTExIDMwMzcvMjA5NS8xMTEgMjcwNi8yMDk2LzExMQpmIDc0LzEzMjkvOTIgNzUvMTMzMS85MiAyNDMxLzIwOTcvOTIgMjQyMC8yMDYzLzkyCmYgMTI3LzE0MzUvOTEgMTI4LzE0MzcvOTEgMzAxNC8yMDk4LzkxIDMwMDMvMjA2NC85MQpmIDEzMC8xNDQxLzU0OSA5OS8xMzgwLzU0OSAyNzA3LzIwNjAvNTQ5IDMwMzYvMjA5OS81NDkKZiA3NS8xMzMxLzk4IDc2LzEzMzMvOTggMjQ0Mi8yMTAwLzk4IDI0MzEvMjA5Ny85OApmIDEyOC8xNDM3Lzg2IDEyOS8xNDM5Lzg2IDMwMjUvMjEwMS84NiAzMDE0LzIwOTgvODYKZiAxMDIvMTM4NS8xMDAgMTAzLzEzODcvMTAwIDI3MzkvMjEwMi8xMDAgMjcyOC8xOTg0LzEwMApmIDc2LzEzMzMvODAgNzcvMTMzNS84MCAyNDUzLzE2MjgvODAgMjQ0Mi8yMTAwLzgwCmYgMTI5LzE0MzkvNTUxIDEzMC8xNDQxLzU1MSAzMDM2LzIwOTkvNTUxIDMwMjUvMjEwMS81NTEKZiAxMDMvMTM4Ny85NiAxMDQvMTM4OS85NiAyNzUwLzE5ODIvOTYgMjczOS8yMTAyLzk2CmYgMjM0NC8yMDE3LzU1MiAyMzU0LzIwNDgvNTUyIDIzNTYvMjEwMy81NTIgMjM1My8yMTA0LzU1MgpmIDIzNTMvMjEwNC81NTMgMjM1Ni8yMTAzLzU1MyAyMzU3LzIxMDUvNTUzIDIzNTIvMjEwNi81NTMKZiAyMzUyLzIxMDYvNTU0IDIzNTcvMjEwNS81NTQgMjM1OC8yMTA3LzU1NCAyMzUxLzIxMDgvNTU0CmYgMjM1MS8yMTA4LzU1NSAyMzU4LzIxMDcvNTU1IDIzNTkvMjEwOS81NTUgMjM1MC8yMTEwLzU1NQpmIDIzNTAvMjExMC81NTYgMjM1OS8yMTA5LzU1NiAyMzYwLzIxMTEvNTU2IDIzNDkvMjExMi81NTYKZiAyMzQ5LzIxMTIvNTU3IDIzNjAvMjExMS81NTcgMjM2MS8yMTEzLzU1NyAyMzQ4LzIxMTQvNTU3CmYgMjM0OC8yMTE0LzU1OCAyMzYxLzIxMTMvNTU4IDIzNjIvMjExNS81NTggMjM0Ny8yMTE2LzU1OApmIDIzNDcvMjExNi81NTkgMjM2Mi8yMTE1LzU1OSAyMzYzLzIxMTcvNTU5IDIzNDYvMjExOC81NTkKZiAyMzQ2LzIxMTgvNTYwIDIzNjMvMjExNy81NjAgMjM2NC8yMTE5LzU2MCAyMzQ1LzIxMjAvNTYwCmYgMjM0NS8yMTIwLzU2MSAyMzY0LzIxMTkvNTYxIDIzNTUvMjA1MS81NjEgMjM0My8xOTc4LzU2MQpmIDIzNjYvMjAxOC81NjIgMjM0NC8yMDE3LzU2MiAyMzUzLzIxMDQvNTYyIDIzNzUvMjEyMS81NjIKZiAyMzc1LzIxMjEvNTYzIDIzNTMvMjEwNC81NjMgMjM1Mi8yMTA2LzU2MyAyMzc0LzIxMjIvNTYzCmYgMjM3NC8yMTIyLzU2NCAyMzUyLzIxMDYvNTY0IDIzNTEvMjEwOC81NjQgMjM3My8yMTIzLzU2NApmIDIzNzMvMjEyMy81NjUgMjM1MS8yMTA4LzU2NSAyMzUwLzIxMTAvNTY1IDIzNzIvMjEyNC81NjUKZiAyMzcyLzIxMjQvNTY2IDIzNTAvMjExMC81NjYgMjM0OS8yMTEyLzU2NiAyMzcxLzIxMjUvNTY2CmYgMjM3MS8yMTI1LzU2NyAyMzQ5LzIxMTIvNTY3IDIzNDgvMjExNC81NjcgMjM3MC8yMTI2LzU2NwpmIDIzNzAvMjEyNi81NjggMjM0OC8yMTE0LzU2OCAyMzQ3LzIxMTYvNTY4IDIzNjkvMjEyNy81NjgKZiAyMzY5LzIxMjcvNTY5IDIzNDcvMjExNi81NjkgMjM0Ni8yMTE4LzU2OSAyMzY4LzIxMjgvNTY5CmYgMjM2OC8yMTI4LzU3MCAyMzQ2LzIxMTgvNTcwIDIzNDUvMjEyMC81NzAgMjM2Ny8yMTI5LzU3MApmIDIzNjcvMjEyOS81NzEgMjM0NS8yMTIwLzU3MSAyMzQzLzE5NzgvNTcxIDIzNjUvMTk3Ny81NzEKZiAyMzc3LzIwMTkvNTcyIDIzNjYvMjAxOC81NzIgMjM3NS8yMTIxLzU3MiAyMzg2LzIxMzAvNTcyCmYgMjM4Ni8yMTMwLzU3MyAyMzc1LzIxMjEvNTczIDIzNzQvMjEyMi81NzMgMjM4NS8yMTMxLzU3MwpmIDIzODUvMjEzMS81NzQgMjM3NC8yMTIyLzU3NCAyMzczLzIxMjMvNTc0IDIzODQvMjEzMi81NzQKZiAyMzg0LzIxMzIvNTc1IDIzNzMvMjEyMy81NzUgMjM3Mi8yMTI0LzU3NSAyMzgzLzIxMzMvNTc1CmYgMjM4My8yMTMzLzU3NiAyMzcyLzIxMjQvNTc2IDIzNzEvMjEyNS81NzYgMjM4Mi8yMTM0LzU3NgpmIDIzODIvMjEzNC81NzcgMjM3MS8yMTI1LzU3NyAyMzcwLzIxMjYvNTc3IDIzODEvMjEzNS81NzcKZiAyMzgxLzIxMzUvNTc4IDIzNzAvMjEyNi81NzggMjM2OS8yMTI3LzU3OCAyMzgwLzIxMzYvNTc4CmYgMjM4MC8yMTM2LzU3OSAyMzY5LzIxMjcvNTc5IDIzNjgvMjEyOC81NzkgMjM3OS8yMTM3LzU3OQpmIDIzNzkvMjEzNy81ODAgMjM2OC8yMTI4LzU4MCAyMzY3LzIxMjkvNTgwIDIzNzgvMjEzOC81ODAKZiAyMzc4LzIxMzgvNTgxIDIzNjcvMjEyOS81ODEgMjM2NS8xOTc3LzU4MSAyMzc2LzIwNTYvNTgxCmYgMjM4OC8yMDIwLzU4MiAyMzc3LzIwMTkvNTgyIDIzODYvMjEzMC81ODIgMjM5Ny8yMTM5LzU4MgpmIDIzOTcvMjEzOS81ODMgMjM4Ni8yMTMwLzU4MyAyMzg1LzIxMzEvNTgzIDIzOTYvMjE0MC81ODMKZiAyMzk2LzIxNDAvNTg0IDIzODUvMjEzMS81ODQgMjM4NC8yMTMyLzU4NCAyMzk1LzIxNDEvNTg0CmYgMjM5NS8yMTQxLzU4NSAyMzg0LzIxMzIvNTg1IDIzODMvMjEzMy81ODUgMjM5NC8yMTQyLzU4NQpmIDIzOTQvMjE0Mi81ODYgMjM4My8yMTMzLzU4NiAyMzgyLzIxMzQvNTg2IDIzOTMvMjE0My81ODYKZiAyMzkzLzIxNDMvNTg3IDIzODIvMjEzNC81ODcgMjM4MS8yMTM1LzU4NyAyMzkyLzIxNDQvNTg3CmYgMjM5Mi8yMTQ0LzU4OCAyMzgxLzIxMzUvNTg4IDIzODAvMjEzNi81ODggMjM5MS8yMTQ1LzU4OApmIDIzOTEvMjE0NS81ODkgMjM4MC8yMTM2LzU4OSAyMzc5LzIxMzcvNTg5IDIzOTAvMjE0Ni81ODkKZiAyMzkwLzIxNDYvNTkwIDIzNzkvMjEzNy81OTAgMjM3OC8yMTM4LzU5MCAyMzg5LzIxNDcvNTkwCmYgMjM4OS8yMTQ3LzU5MSAyMzc4LzIxMzgvNTkxIDIzNzYvMjA1Ni81OTEgMjM4Ny8yMDU1LzU5MQpmIDIzOTkvMjAyMS81OTIgMjM4OC8yMDIwLzU5MiAyMzk3LzIxMzkvNTkyIDI0MDgvMjE0OC81OTIKZiAyNDA4LzIxNDgvNTkzIDIzOTcvMjEzOS81OTMgMjM5Ni8yMTQwLzU5MyAyNDA3LzIxNDkvNTkzCmYgMjQwNy8yMTQ5LzU5NCAyMzk2LzIxNDAvNTk0IDIzOTUvMjE0MS81OTQgMjQwNi8yMTUwLzU5NApmIDI0MDYvMjE1MC81OTUgMjM5NS8yMTQxLzU5NSAyMzk0LzIxNDIvNTk1IDI0MDUvMjE1MS81OTUKZiAyNDA1LzIxNTEvNTk2IDIzOTQvMjE0Mi81OTYgMjM5My8yMTQzLzU5NiAyNDA0LzIxNTIvNTk2CmYgMjQwNC8yMTUyLzU5NyAyMzkzLzIxNDMvNTk3IDIzOTIvMjE0NC81OTcgMjQwMy8yMTUzLzU5NwpmIDI0MDMvMjE1My81OTggMjM5Mi8yMTQ0LzU5OCAyMzkxLzIxNDUvNTk4IDI0MDIvMjE1NC81OTgKZiAyNDAyLzIxNTQvNTk5IDIzOTEvMjE0NS81OTkgMjM5MC8yMTQ2LzU5OSAyNDAxLzIxNTUvNTk5CmYgMjQwMS8yMTU1LzYwMCAyMzkwLzIxNDYvNjAwIDIzODkvMjE0Ny82MDAgMjQwMC8yMTU2LzYwMApmIDI0MDAvMjE1Ni82MDEgMjM4OS8yMTQ3LzYwMSAyMzg3LzIwNTUvNjAxIDIzOTgvMjA1OC82MDEKZiAyNDEwLzIwMjIvNjAyIDIzOTkvMjAyMS82MDIgMjQwOC8yMTQ4LzYwMiAyNDE5LzIxNTcvNjAyCmYgMjQxOS8yMTU3LzYwMyAyNDA4LzIxNDgvNjAzIDI0MDcvMjE0OS82MDMgMjQxOC8yMTU4LzYwMwpmIDI0MTgvMjE1OC82MDQgMjQwNy8yMTQ5LzYwNCAyNDA2LzIxNTAvNjA0IDI0MTcvMjE1OS82MDQKZiAyNDE3LzIxNTkvNjA1IDI0MDYvMjE1MC82MDUgMjQwNS8yMTUxLzYwNSAyNDE2LzIxNjAvNjA1CmYgMjQxNi8yMTYwLzYwNiAyNDA1LzIxNTEvNjA2IDI0MDQvMjE1Mi82MDYgMjQxNS8yMTYxLzYwNgpmIDI0MTUvMjE2MS82MDcgMjQwNC8yMTUyLzYwNyAyNDAzLzIxNTMvNjA3IDI0MTQvMjE2Mi82MDcKZiAyNDE0LzIxNjIvNjA4IDI0MDMvMjE1My82MDggMjQwMi8yMTU0LzYwOCAyNDEzLzIxNjMvNjA4CmYgMjQxMy8yMTYzLzYwOSAyNDAyLzIxNTQvNjA5IDI0MDEvMjE1NS82MDkgMjQxMi8yMTY0LzYwOQpmIDI0MTIvMjE2NC82MTAgMjQwMS8yMTU1LzYxMCAyNDAwLzIxNTYvNjEwIDI0MTEvMjE2NS82MTAKZiAyNDExLzIxNjUvNjExIDI0MDAvMjE1Ni82MTEgMjM5OC8yMDU4LzYxMSAyNDA5LzIwNjEvNjExCmYgMjQyMS8yMDIzLzYxMiAyNDEwLzIwMjIvNjEyIDI0MTkvMjE1Ny82MTIgMjQzMC8yMTY2LzYxMgpmIDI0MzAvMjE2Ni82MTMgMjQxOS8yMTU3LzYxMyAyNDE4LzIxNTgvNjEzIDI0MjkvMjE2Ny82MTMKZiAyNDI5LzIxNjcvNjE0IDI0MTgvMjE1OC82MTQgMjQxNy8yMTU5LzYxNCAyNDI4LzIxNjgvNjE0CmYgMjQyOC8yMTY4LzYxNSAyNDE3LzIxNTkvNjE1IDI0MTYvMjE2MC82MTUgMjQyNy8yMTY5LzYxNQpmIDI0MjcvMjE2OS82MTYgMjQxNi8yMTYwLzYxNiAyNDE1LzIxNjEvNjE2IDI0MjYvMjE3MC82MTYKZiAyNDI2LzIxNzAvNjE3IDI0MTUvMjE2MS82MTcgMjQxNC8yMTYyLzYxNyAyNDI1LzIxNzEvNjE3CmYgMjQyNS8yMTcxLzYxOCAyNDE0LzIxNjIvNjE4IDI0MTMvMjE2My82MTggMjQyNC8yMTcyLzYxOApmIDI0MjQvMjE3Mi82MTkgMjQxMy8yMTYzLzYxOSAyNDEyLzIxNjQvNjE5IDI0MjMvMjE3My82MTkKZiAyNDIzLzIxNzMvNjIwIDI0MTIvMjE2NC82MjAgMjQxMS8yMTY1LzYyMCAyNDIyLzIxNzQvNjIwCmYgMjQyMi8yMTc0LzYyMSAyNDExLzIxNjUvNjIxIDI0MDkvMjA2MS82MjEgMjQyMC8yMDYzLzYyMQpmIDI0MzIvMjAyNC82MjIgMjQyMS8yMDIzLzYyMiAyNDMwLzIxNjYvNjIyIDI0NDEvMjE3NS82MjIKZiAyNDQxLzIxNzUvNjIzIDI0MzAvMjE2Ni82MjMgMjQyOS8yMTY3LzYyMyAyNDQwLzIxNzYvNjIzCmYgMjQ0MC8yMTc2LzYyNCAyNDI5LzIxNjcvNjI0IDI0MjgvMjE2OC82MjQgMjQzOS8yMTc3LzYyNApmIDI0MzkvMjE3Ny82MjUgMjQyOC8yMTY4LzYyNSAyNDI3LzIxNjkvNjI1IDI0MzgvMjE3OC82MjUKZiAyNDM4LzIxNzgvNjI2IDI0MjcvMjE2OS82MjYgMjQyNi8yMTcwLzYyNiAyNDM3LzIxNzkvNjI2CmYgMjQzNy8yMTc5LzYyNyAyNDI2LzIxNzAvNjI3IDI0MjUvMjE3MS82MjcgMjQzNi8yMTgwLzYyNwpmIDI0MzYvMjE4MC82MjggMjQyNS8yMTcxLzYyOCAyNDI0LzIxNzIvNjI4IDI0MzUvMjE4MS82MjgKZiAyNDM1LzIxODEvNjI5IDI0MjQvMjE3Mi82MjkgMjQyMy8yMTczLzYyOSAyNDM0LzIxODIvNjI5CmYgMjQzNC8yMTgyLzYzMCAyNDIzLzIxNzMvNjMwIDI0MjIvMjE3NC82MzAgMjQzMy8yMTgzLzYzMApmIDI0MzMvMjE4My82MzEgMjQyMi8yMTc0LzYzMSAyNDIwLzIwNjMvNjMxIDI0MzEvMjA5Ny82MzEKZiAyNDQzLzIwMjUvNjMyIDI0MzIvMjAyNC82MzIgMjQ0MS8yMTc1LzYzMiAyNDUyLzIxODQvNjMyCmYgMjQ1Mi8yMTg0LzYzMyAyNDQxLzIxNzUvNjMzIDI0NDAvMjE3Ni82MzMgMjQ1MS8yMTg1LzYzMwpmIDI0NTEvMjE4NS82MzQgMjQ0MC8yMTc2LzYzNCAyNDM5LzIxNzcvNjM0IDI0NTAvMjE4Ni82MzQKZiAyNDUwLzIxODYvNjM1IDI0MzkvMjE3Ny82MzUgMjQzOC8yMTc4LzYzNSAyNDQ5LzIxODcvNjM1CmYgMjQ0OS8yMTg3LzYzNiAyNDM4LzIxNzgvNjM2IDI0MzcvMjE3OS82MzYgMjQ0OC8yMTg4LzYzNgpmIDI0NDgvMjE4OC82MzcgMjQzNy8yMTc5LzYzNyAyNDM2LzIxODAvNjM3IDI0NDcvMjE4OS82MzcKZiAyNDQ3LzIxODkvNjM4IDI0MzYvMjE4MC82MzggMjQzNS8yMTgxLzYzOCAyNDQ2LzIxOTAvNjM4CmYgMjQ0Ni8yMTkwLzYzOSAyNDM1LzIxODEvNjM5IDI0MzQvMjE4Mi82MzkgMjQ0NS8yMTkxLzYzOQpmIDI0NDUvMjE5MS82NDAgMjQzNC8yMTgyLzY0MCAyNDMzLzIxODMvNjQwIDI0NDQvMjE5Mi82NDAKZiAyNDQ0LzIxOTIvNjQxIDI0MzMvMjE4My82NDEgMjQzMS8yMDk3LzY0MSAyNDQyLzIxMDAvNjQxCmYgMjQ1NC8yMDI2LzY0MiAyNDQzLzIwMjUvNjQyIDI0NTIvMjE4NC82NDIgMjQ2My8yMTkzLzY0MgpmIDI0NjMvMjE5My82NDMgMjQ1Mi8yMTg0LzY0MyAyNDUxLzIxODUvNjQzIDI0NjIvMjE5NC82NDMKZiAyNDYyLzIxOTQvNjQ0IDI0NTEvMjE4NS82NDQgMjQ1MC8yMTg2LzY0NCAyNDYxLzIxOTUvNjQ0CmYgMjQ2MS8yMTk1LzY0NSAyNDUwLzIxODYvNjQ1IDI0NDkvMjE4Ny82NDUgMjQ2MC8yMTk2LzY0NQpmIDI0NjAvMjE5Ni82NDYgMjQ0OS8yMTg3LzY0NiAyNDQ4LzIxODgvNjQ2IDI0NTkvMjE5Ny82NDYKZiAyNDU5LzIxOTcvNjQ3IDI0NDgvMjE4OC82NDcgMjQ0Ny8yMTg5LzY0NyAyNDU4LzIxOTgvNjQ3CmYgMjQ1OC8yMTk4LzY0OCAyNDQ3LzIxODkvNjQ4IDI0NDYvMjE5MC82NDggMjQ1Ny8yMTk5LzY0OApmIDI0NTcvMjE5OS82NDkgMjQ0Ni8yMTkwLzY0OSAyNDQ1LzIxOTEvNjQ5IDI0NTYvMjIwMC82NDkKZiAyNDU2LzIyMDAvNjUwIDI0NDUvMjE5MS82NTAgMjQ0NC8yMTkyLzY1MCAyNDU1LzIyMDEvNjUwCmYgMjQ1NS8yMjAxLzY1MSAyNDQ0LzIxOTIvNjUxIDI0NDIvMjEwMC82NTEgMjQ1My8xNjI4LzY1MQpmIDI0NjUvMjAyNy82NTIgMjQ1NC8yMDI2LzY1MiAyNDYzLzIxOTMvNjUyIDI0NzQvMjIwMi82NTIKZiAyNDc0LzIyMDIvNjUzIDI0NjMvMjE5My82NTMgMjQ2Mi8yMTk0LzY1MyAyNDczLzIyMDMvNjUzCmYgMjQ3My8yMjAzLzY1NCAyNDYyLzIxOTQvNjU0IDI0NjEvMjE5NS82NTQgMjQ3Mi8yMjA0LzY1NApmIDI0NzIvMjIwNC82NTUgMjQ2MS8yMTk1LzY1NSAyNDYwLzIxOTYvNjU1IDI0NzEvMjIwNS82NTUKZiAyNDcxLzIyMDUvNjU2IDI0NjAvMjE5Ni82NTYgMjQ1OS8yMTk3LzY1NiAyNDcwLzIyMDYvNjU2CmYgMjQ3MC8yMjA2LzY1NyAyNDU5LzIxOTcvNjU3IDI0NTgvMjE5OC82NTcgMjQ2OS8yMjA3LzY1NwpmIDI0NjkvMjIwNy82NTggMjQ1OC8yMTk4LzY1OCAyNDU3LzIxOTkvNjU4IDI0NjgvMjIwOC82NTgKZiAyNDY4LzIyMDgvNjU5IDI0NTcvMjE5OS82NTkgMjQ1Ni8yMjAwLzY1OSAyNDY3LzIyMDkvNjU5CmYgMjQ2Ny8yMjA5LzY2MCAyNDU2LzIyMDAvNjYwIDI0NTUvMjIwMS82NjAgMjQ2Ni8yMjEwLzY2MApmIDI0NjYvMjIxMC82NjEgMjQ1NS8yMjAxLzY2MSAyNDUzLzE2MjgvNjYxIDI0NjQvMTYyNy82NjEKZiAyNDc2LzIwMjgvNjYyIDI0NjUvMjAyNy82NjIgMjQ3NC8yMjAyLzY2MiAyNDg1LzIyMTEvNjYyCmYgMjQ4NS8yMjExLzY2MyAyNDc0LzIyMDIvNjYzIDI0NzMvMjIwMy82NjMgMjQ4NC8yMjEyLzY2MwpmIDI0ODQvMjIxMi82NjQgMjQ3My8yMjAzLzY2NCAyNDcyLzIyMDQvNjY0IDI0ODMvMjIxMy82NjQKZiAyNDgzLzIyMTMvNjY1IDI0NzIvMjIwNC82NjUgMjQ3MS8yMjA1LzY2NSAyNDgyLzIyMTQvNjY1CmYgMjQ4Mi8yMjE0LzY2NiAyNDcxLzIyMDUvNjY2IDI0NzAvMjIwNi82NjYgMjQ4MS8yMjE1LzY2NgpmIDI0ODEvMjIxNS82NjcgMjQ3MC8yMjA2LzY2NyAyNDY5LzIyMDcvNjY3IDI0ODAvMjIxNi82NjcKZiAyNDgwLzIyMTYvNjY4IDI0NjkvMjIwNy82NjggMjQ2OC8yMjA4LzY2OCAyNDc5LzIyMTcvNjY4CmYgMjQ3OS8yMjE3LzY2OSAyNDY4LzIyMDgvNjY5IDI0NjcvMjIwOS82NjkgMjQ3OC8yMjE4LzY2OQpmIDI0NzgvMjIxOC82NzAgMjQ2Ny8yMjA5LzY3MCAyNDY2LzIyMTAvNjcwIDI0NzcvMjIxOS82NzAKZiAyNDc3LzIyMTkvNjcxIDI0NjYvMjIxMC82NzEgMjQ2NC8xNjI3LzY3MSAyNDc1LzE5ODMvNjcxCmYgMjQ4Ny8yMDI5LzY3MiAyNDc2LzIwMjgvNjcyIDI0ODUvMjIxMS82NzIgMjQ5Ni8yMjIwLzY3MgpmIDI0OTYvMjIyMC82NzMgMjQ4NS8yMjExLzY3MyAyNDg0LzIyMTIvNjczIDI0OTUvMjIyMS82NzMKZiAyNDk1LzIyMjEvNjc0IDI0ODQvMjIxMi82NzQgMjQ4My8yMjEzLzY3NCAyNDk0LzIyMjIvNjc0CmYgMjQ5NC8yMjIyLzY3NSAyNDgzLzIyMTMvNjc1IDI0ODIvMjIxNC82NzUgMjQ5My8yMjIzLzY3NQpmIDI0OTMvMjIyMy82NzYgMjQ4Mi8yMjE0LzY3NiAyNDgxLzIyMTUvNjc2IDI0OTIvMjIyNC82NzYKZiAyNDkyLzIyMjQvNjc3IDI0ODEvMjIxNS82NzcgMjQ4MC8yMjE2LzY3NyAyNDkxLzIyMjUvNjc3CmYgMjQ5MS8yMjI1LzY3OCAyNDgwLzIyMTYvNjc4IDI0NzkvMjIxNy82NzggMjQ5MC8yMjI2LzY3OApmIDI0OTAvMjIyNi82NzkgMjQ3OS8yMjE3LzY3OSAyNDc4LzIyMTgvNjc5IDI0ODkvMjIyNy82NzkKZiAyNDg5LzIyMjcvNjgwIDI0NzgvMjIxOC82ODAgMjQ3Ny8yMjE5LzY4MCAyNDg4LzIyMjgvNjgwCmYgMjQ4OC8yMjI4LzY4MSAyNDc3LzIyMTkvNjgxIDI0NzUvMTk4My82ODEgMjQ4Ni8xOTg2LzY4MQpmIDI0OTgvMjAzMC82ODIgMjQ4Ny8yMDI5LzY4MiAyNDk2LzIyMjAvNjgyIDI1MDcvMjIyOS82ODIKZiAyNTA3LzIyMjkvNjgzIDI0OTYvMjIyMC82ODMgMjQ5NS8yMjIxLzY4MyAyNTA2LzIyMzAvNjgzCmYgMjUwNi8yMjMwLzY4NCAyNDk1LzIyMjEvNjg0IDI0OTQvMjIyMi82ODQgMjUwNS8yMjMxLzY4NApmIDI1MDUvMjIzMS82ODUgMjQ5NC8yMjIyLzY4NSAyNDkzLzIyMjMvNjg1IDI1MDQvMjIzMi82ODUKZiAyNTA0LzIyMzIvNjg2IDI0OTMvMjIyMy82ODYgMjQ5Mi8yMjI0LzY4NiAyNTAzLzIyMzMvNjg2CmYgMjUwMy8yMjMzLzY4NyAyNDkyLzIyMjQvNjg3IDI0OTEvMjIyNS82ODcgMjUwMi8yMjM0LzY4NwpmIDI1MDIvMjIzNC82ODggMjQ5MS8yMjI1LzY4OCAyNDkwLzIyMjYvNjg4IDI1MDEvMjIzNS82ODgKZiAyNTAxLzIyMzUvNjg5IDI0OTAvMjIyNi82ODkgMjQ4OS8yMjI3LzY4OSAyNTAwLzIyMzYvNjg5CmYgMjUwMC8yMjM2LzY5MCAyNDg5LzIyMjcvNjkwIDI0ODgvMjIyOC82OTAgMjQ5OS8yMjM3LzY5MApmIDI0OTkvMjIzNy82OTEgMjQ4OC8yMjI4LzY5MSAyNDg2LzE5ODYvNjkxIDI0OTcvMTk4OC82OTEKZiAyNTA5LzIwMzEvNjkyIDI0OTgvMjAzMC82OTIgMjUwNy8yMjI5LzY5MiAyNTE4LzIyMzgvNjkyCmYgMjUxOC8yMjM4LzY5MyAyNTA3LzIyMjkvNjkzIDI1MDYvMjIzMC82OTMgMjUxNy8yMjM5LzY5MwpmIDI1MTcvMjIzOS82OTQgMjUwNi8yMjMwLzY5NCAyNTA1LzIyMzEvNjk0IDI1MTYvMjI0MC82OTQKZiAyNTE2LzIyNDAvNjk1IDI1MDUvMjIzMS82OTUgMjUwNC8yMjMyLzY5NSAyNTE1LzIyNDEvNjk1CmYgMjUxNS8yMjQxLzY5NiAyNTA0LzIyMzIvNjk2IDI1MDMvMjIzMy82OTYgMjUxNC8yMjQyLzY5NgpmIDI1MTQvMjI0Mi82OTcgMjUwMy8yMjMzLzY5NyAyNTAyLzIyMzQvNjk3IDI1MTMvMjI0My82OTcKZiAyNTEzLzIyNDMvNjk4IDI1MDIvMjIzNC82OTggMjUwMS8yMjM1LzY5OCAyNTEyLzIyNDQvNjk4CmYgMjUxMi8yMjQ0LzY5OSAyNTAxLzIyMzUvNjk5IDI1MDAvMjIzNi82OTkgMjUxMS8yMjQ1LzY5OQpmIDI1MTEvMjI0NS83MDAgMjUwMC8yMjM2LzcwMCAyNDk5LzIyMzcvNzAwIDI1MTAvMjI0Ni83MDAKZiAyNTEwLzIyNDYvNzAxIDI0OTkvMjIzNy83MDEgMjQ5Ny8xOTg4LzcwMSAyNTA4LzE5OTAvNzAxCmYgMjUyMC8yMDMyLzcwMiAyNTA5LzIwMzEvNzAyIDI1MTgvMjIzOC83MDIgMjUyOS8yMjQ3LzcwMgpmIDI1MjkvMjI0Ny83MDMgMjUxOC8yMjM4LzcwMyAyNTE3LzIyMzkvNzAzIDI1MjgvMjI0OC83MDMKZiAyNTI4LzIyNDgvNzA0IDI1MTcvMjIzOS83MDQgMjUxNi8yMjQwLzcwNCAyNTI3LzIyNDkvNzA0CmYgMjUyNy8yMjQ5LzcwNSAyNTE2LzIyNDAvNzA1IDI1MTUvMjI0MS83MDUgMjUyNi8yMjUwLzcwNQpmIDI1MjYvMjI1MC83MDYgMjUxNS8yMjQxLzcwNiAyNTE0LzIyNDIvNzA2IDI1MjUvMjI1MS83MDYKZiAyNTI1LzIyNTEvNzA3IDI1MTQvMjI0Mi83MDcgMjUxMy8yMjQzLzcwNyAyNTI0LzIyNTIvNzA3CmYgMjUyNC8yMjUyLzcwOCAyNTEzLzIyNDMvNzA4IDI1MTIvMjI0NC83MDggMjUyMy8yMjUzLzcwOApmIDI1MjMvMjI1My83MDkgMjUxMi8yMjQ0LzcwOSAyNTExLzIyNDUvNzA5IDI1MjIvMjI1NC83MDkKZiAyNTIyLzIyNTQvNzEwIDI1MTEvMjI0NS83MTAgMjUxMC8yMjQ2LzcxMCAyNTIxLzIyNTUvNzEwCmYgMjUyMS8yMjU1LzcxMSAyNTEwLzIyNDYvNzExIDI1MDgvMTk5MC83MTEgMjUxOS8xOTkyLzcxMQpmIDI1MzEvMjAzMy83MTIgMjUyMC8yMDMyLzcxMiAyNTI5LzIyNDcvNzEyIDI1NDAvMjI1Ni83MTIKZiAyNTQwLzIyNTYvNzEzIDI1MjkvMjI0Ny83MTMgMjUyOC8yMjQ4LzcxMyAyNTM5LzIyNTcvNzEzCmYgMjUzOS8yMjU3LzcxNCAyNTI4LzIyNDgvNzE0IDI1MjcvMjI0OS83MTQgMjUzOC8yMjU4LzcxNApmIDI1MzgvMjI1OC83MTUgMjUyNy8yMjQ5LzcxNSAyNTI2LzIyNTAvNzE1IDI1MzcvMjI1OS83MTUKZiAyNTM3LzIyNTkvNzE2IDI1MjYvMjI1MC83MTYgMjUyNS8yMjUxLzcxNiAyNTM2LzIyNjAvNzE2CmYgMjUzNi8yMjYwLzcxNyAyNTI1LzIyNTEvNzE3IDI1MjQvMjI1Mi83MTcgMjUzNS8yMjYxLzcxNwpmIDI1MzUvMjI2MS83MTggMjUyNC8yMjUyLzcxOCAyNTIzLzIyNTMvNzE4IDI1MzQvMjI2Mi83MTgKZiAyNTM0LzIyNjIvNzE5IDI1MjMvMjI1My83MTkgMjUyMi8yMjU0LzcxOSAyNTMzLzIyNjMvNzE5CmYgMjUzMy8yMjYzLzcyMCAyNTIyLzIyNTQvNzIwIDI1MjEvMjI1NS83MjAgMjUzMi8yMjY0LzcyMApmIDI1MzIvMjI2NC83MjEgMjUyMS8yMjU1LzcyMSAyNTE5LzE5OTIvNzIxIDI1MzAvMTk5NC83MjEKZiAyNTQyLzIwMzQvNzIyIDI1MzEvMjAzMy83MjIgMjU0MC8yMjU2LzcyMiAyNTUxLzIyNjUvNzIyCmYgMjU1MS8yMjY1LzcyMyAyNTQwLzIyNTYvNzIzIDI1MzkvMjI1Ny83MjMgMjU1MC8yMjY2LzcyMwpmIDI1NTAvMjI2Ni83MjQgMjUzOS8yMjU3LzcyNCAyNTM4LzIyNTgvNzI0IDI1NDkvMjI2Ny83MjQKZiAyNTQ5LzIyNjcvNzI1IDI1MzgvMjI1OC83MjUgMjUzNy8yMjU5LzcyNSAyNTQ4LzIyNjgvNzI1CmYgMjU0OC8yMjY4LzcyNiAyNTM3LzIyNTkvNzI2IDI1MzYvMjI2MC83MjYgMjU0Ny8yMjY5LzcyNgpmIDI1NDcvMjI2OS83MjcgMjUzNi8yMjYwLzcyNyAyNTM1LzIyNjEvNzI3IDI1NDYvMjI3MC83MjcKZiAyNTQ2LzIyNzAvNzI4IDI1MzUvMjI2MS83MjggMjUzNC8yMjYyLzcyOCAyNTQ1LzIyNzEvNzI4CmYgMjU0NS8yMjcxLzcyOSAyNTM0LzIyNjIvNzI5IDI1MzMvMjI2My83MjkgMjU0NC8yMjcyLzcyOQpmIDI1NDQvMjI3Mi83MzAgMjUzMy8yMjYzLzczMCAyNTMyLzIyNjQvNzMwIDI1NDMvMjI3My83MzAKZiAyNTQzLzIyNzMvNzMxIDI1MzIvMjI2NC83MzEgMjUzMC8xOTk0LzczMSAyNTQxLzE5OTYvNzMxCmYgMjU1My8yMDM1LzczMiAyNTQyLzIwMzQvNzMyIDI1NTEvMjI2NS83MzIgMjU2Mi8yMjc0LzczMgpmIDI1NjIvMjI3NC83MzMgMjU1MS8yMjY1LzczMyAyNTUwLzIyNjYvNzMzIDI1NjEvMjI3NS83MzMKZiAyNTYxLzIyNzUvNzM0IDI1NTAvMjI2Ni83MzQgMjU0OS8yMjY3LzczNCAyNTYwLzIyNzYvNzM0CmYgMjU2MC8yMjc2LzczNSAyNTQ5LzIyNjcvNzM1IDI1NDgvMjI2OC83MzUgMjU1OS8yMjc3LzczNQpmIDI1NTkvMjI3Ny83MzYgMjU0OC8yMjY4LzczNiAyNTQ3LzIyNjkvNzM2IDI1NTgvMjI3OC83MzYKZiAyNTU4LzIyNzgvNzM3IDI1NDcvMjI2OS83MzcgMjU0Ni8yMjcwLzczNyAyNTU3LzIyNzkvNzM3CmYgMjU1Ny8yMjc5LzczOCAyNTQ2LzIyNzAvNzM4IDI1NDUvMjI3MS83MzggMjU1Ni8yMjgwLzczOApmIDI1NTYvMjI4MC83MzkgMjU0NS8yMjcxLzczOSAyNTQ0LzIyNzIvNzM5IDI1NTUvMjI4MS83MzkKZiAyNTU1LzIyODEvNzQwIDI1NDQvMjI3Mi83NDAgMjU0My8yMjczLzc0MCAyNTU0LzIyODIvNzQwCmYgMjU1NC8yMjgyLzc0MSAyNTQzLzIyNzMvNzQxIDI1NDEvMTk5Ni83NDEgMjU1Mi8xOTk4Lzc0MQpmIDI1NjQvMjAzNi83NDIgMjU1My8yMDM1Lzc0MiAyNTYyLzIyNzQvNzQyIDI1NzMvMjI4My83NDIKZiAyNTczLzIyODMvNzQzIDI1NjIvMjI3NC83NDMgMjU2MS8yMjc1Lzc0MyAyNTcyLzIyODQvNzQzCmYgMjU3Mi8yMjg0Lzc0NCAyNTYxLzIyNzUvNzQ0IDI1NjAvMjI3Ni83NDQgMjU3MS8yMjg1Lzc0NApmIDI1NzEvMjI4NS83NDUgMjU2MC8yMjc2Lzc0NSAyNTU5LzIyNzcvNzQ1IDI1NzAvMjI4Ni83NDUKZiAyNTcwLzIyODYvNzQ2IDI1NTkvMjI3Ny83NDYgMjU1OC8yMjc4Lzc0NiAyNTY5LzIyODcvNzQ2CmYgMjU2OS8yMjg3Lzc0NyAyNTU4LzIyNzgvNzQ3IDI1NTcvMjI3OS83NDcgMjU2OC8yMjg4Lzc0NwpmIDI1NjgvMjI4OC83NDggMjU1Ny8yMjc5Lzc0OCAyNTU2LzIyODAvNzQ4IDI1NjcvMjI4OS83NDgKZiAyNTY3LzIyODkvNzQ5IDI1NTYvMjI4MC83NDkgMjU1NS8yMjgxLzc0OSAyNTY2LzIyOTAvNzQ5CmYgMjU2Ni8yMjkwLzc1MCAyNTU1LzIyODEvNzUwIDI1NTQvMjI4Mi83NTAgMjU2NS8yMjkxLzc1MApmIDI1NjUvMjI5MS83NTEgMjU1NC8yMjgyLzc1MSAyNTUyLzE5OTgvNzUxIDI1NjMvMjAwMC83NTEKZiAyNTc1LzIwMzcvNzUyIDI1NjQvMjAzNi83NTIgMjU3My8yMjgzLzc1MiAyNTg0LzIyOTIvNzUyCmYgMjU4NC8yMjkyLzc1MyAyNTczLzIyODMvNzUzIDI1NzIvMjI4NC83NTMgMjU4My8yMjkzLzc1MwpmIDI1ODMvMjI5My83NTQgMjU3Mi8yMjg0Lzc1NCAyNTcxLzIyODUvNzU0IDI1ODIvMjI5NC83NTQKZiAyNTgyLzIyOTQvNzU1IDI1NzEvMjI4NS83NTUgMjU3MC8yMjg2Lzc1NSAyNTgxLzIyOTUvNzU1CmYgMjU4MS8yMjk1Lzc1NiAyNTcwLzIyODYvNzU2IDI1NjkvMjI4Ny83NTYgMjU4MC8yMjk2Lzc1NgpmIDI1ODAvMjI5Ni83NTcgMjU2OS8yMjg3Lzc1NyAyNTY4LzIyODgvNzU3IDI1NzkvMjI5Ny83NTcKZiAyNTc5LzIyOTcvNzU4IDI1NjgvMjI4OC83NTggMjU2Ny8yMjg5Lzc1OCAyNTc4LzIyOTgvNzU4CmYgMjU3OC8yMjk4Lzc1OSAyNTY3LzIyODkvNzU5IDI1NjYvMjI5MC83NTkgMjU3Ny8yMjk5Lzc1OQpmIDI1NzcvMjI5OS83NjAgMjU2Ni8yMjkwLzc2MCAyNTY1LzIyOTEvNzYwIDI1NzYvMjMwMC83NjAKZiAyNTc2LzIzMDAvNzYxIDI1NjUvMjI5MS83NjEgMjU2My8yMDAwLzc2MSAyNTc0LzIwMDIvNzYxCmYgMjU4Ni8yMDM4Lzc2MiAyNTc1LzIwMzcvNzYyIDI1ODQvMjI5Mi83NjIgMjU5NS8yMzAxLzc2MgpmIDI1OTUvMjMwMS83NjMgMjU4NC8yMjkyLzc2MyAyNTgzLzIyOTMvNzYzIDI1OTQvMjMwMi83NjMKZiAyNTk0LzIzMDIvNzY0IDI1ODMvMjI5My83NjQgMjU4Mi8yMjk0Lzc2NCAyNTkzLzIzMDMvNzY0CmYgMjU5My8yMzAzLzc2NSAyNTgyLzIyOTQvNzY1IDI1ODEvMjI5NS83NjUgMjU5Mi8yMzA0Lzc2NQpmIDI1OTIvMjMwNC83NjYgMjU4MS8yMjk1Lzc2NiAyNTgwLzIyOTYvNzY2IDI1OTEvMjMwNS83NjYKZiAyNTkxLzIzMDUvNzY3IDI1ODAvMjI5Ni83NjcgMjU3OS8yMjk3Lzc2NyAyNTkwLzIzMDYvNzY3CmYgMjU5MC8yMzA2Lzc2OCAyNTc5LzIyOTcvNzY4IDI1NzgvMjI5OC83NjggMjU4OS8yMzA3Lzc2OApmIDI1ODkvMjMwNy83NjkgMjU3OC8yMjk4Lzc2OSAyNTc3LzIyOTkvNzY5IDI1ODgvMjMwOC83NjkKZiAyNTg4LzIzMDgvNzcwIDI1NzcvMjI5OS83NzAgMjU3Ni8yMzAwLzc3MCAyNTg3LzIzMDkvNzcwCmYgMjU4Ny8yMzA5Lzc3MSAyNTc2LzIzMDAvNzcxIDI1NzQvMjAwMi83NzEgMjU4NS8yMDA0Lzc3MQpmIDI1OTcvMjAzOS83NzIgMjU4Ni8yMDM4Lzc3MiAyNTk1LzIzMDEvNzcyIDI2MDYvMjMxMC83NzIKZiAyNjA2LzIzMTAvNzczIDI1OTUvMjMwMS83NzMgMjU5NC8yMzAyLzc3MyAyNjA1LzIzMTEvNzczCmYgMjYwNS8yMzExLzc3NCAyNTk0LzIzMDIvNzc0IDI1OTMvMjMwMy83NzQgMjYwNC8yMzEyLzc3NApmIDI2MDQvMjMxMi83NzUgMjU5My8yMzAzLzc3NSAyNTkyLzIzMDQvNzc1IDI2MDMvMjMxMy83NzUKZiAyNjAzLzIzMTMvNzc2IDI1OTIvMjMwNC83NzYgMjU5MS8yMzA1Lzc3NiAyNjAyLzIzMTQvNzc2CmYgMjYwMi8yMzE0Lzc3NyAyNTkxLzIzMDUvNzc3IDI1OTAvMjMwNi83NzcgMjYwMS8yMzE1Lzc3NwpmIDI2MDEvMjMxNS83NzggMjU5MC8yMzA2Lzc3OCAyNTg5LzIzMDcvNzc4IDI2MDAvMjMxNi83NzgKZiAyNjAwLzIzMTYvNzc5IDI1ODkvMjMwNy83NzkgMjU4OC8yMzA4Lzc3OSAyNTk5LzIzMTcvNzc5CmYgMjU5OS8yMzE3Lzc4MCAyNTg4LzIzMDgvNzgwIDI1ODcvMjMwOS83ODAgMjU5OC8yMzE4Lzc4MApmIDI1OTgvMjMxOC83ODEgMjU4Ny8yMzA5Lzc4MSAyNTg1LzIwMDQvNzgxIDI1OTYvMjAwNi83ODEKZiAyNjA4LzIwNDAvNzgyIDI1OTcvMjAzOS83ODIgMjYwNi8yMzEwLzc4MiAyNjE3LzIzMTkvNzgyCmYgMjYxNy8yMzE5Lzc4MyAyNjA2LzIzMTAvNzgzIDI2MDUvMjMxMS83ODMgMjYxNi8yMzIwLzc4MwpmIDI2MTYvMjMyMC83ODQgMjYwNS8yMzExLzc4NCAyNjA0LzIzMTIvNzg0IDI2MTUvMjMyMS83ODQKZiAyNjE1LzIzMjEvNzg1IDI2MDQvMjMxMi83ODUgMjYwMy8yMzEzLzc4NSAyNjE0LzIzMjIvNzg1CmYgMjYxNC8yMzIyLzc4NiAyNjAzLzIzMTMvNzg2IDI2MDIvMjMxNC83ODYgMjYxMy8yMzIzLzc4NgpmIDI2MTMvMjMyMy83ODcgMjYwMi8yMzE0Lzc4NyAyNjAxLzIzMTUvNzg3IDI2MTIvMjMyNC83ODcKZiAyNjEyLzIzMjQvNzg4IDI2MDEvMjMxNS83ODggMjYwMC8yMzE2Lzc4OCAyNjExLzIzMjUvNzg4CmYgMjYxMS8yMzI1Lzc4OSAyNjAwLzIzMTYvNzg5IDI1OTkvMjMxNy83ODkgMjYxMC8yMzI2Lzc4OQpmIDI2MTAvMjMyNi83OTAgMjU5OS8yMzE3Lzc5MCAyNTk4LzIzMTgvNzkwIDI2MDkvMjMyNy83OTAKZiAyNjA5LzIzMjcvNzkxIDI1OTgvMjMxOC83OTEgMjU5Ni8yMDA2Lzc5MSAyNjA3LzIwMDgvNzkxCmYgMjYxOS8yMDQxLzc5MiAyNjA4LzIwNDAvNzkyIDI2MTcvMjMxOS83OTIgMjYyOC8yMzI4Lzc5MgpmIDI2MjgvMjMyOC83OTMgMjYxNy8yMzE5Lzc5MyAyNjE2LzIzMjAvNzkzIDI2MjcvMjMyOS83OTMKZiAyNjI3LzIzMjkvNzk0IDI2MTYvMjMyMC83OTQgMjYxNS8yMzIxLzc5NCAyNjI2LzIzMzAvNzk0CmYgMjYyNi8yMzMwLzc5NSAyNjE1LzIzMjEvNzk1IDI2MTQvMjMyMi83OTUgMjYyNS8yMzMxLzc5NQpmIDI2MjUvMjMzMS83OTYgMjYxNC8yMzIyLzc5NiAyNjEzLzIzMjMvNzk2IDI2MjQvMjMzMi83OTYKZiAyNjI0LzIzMzIvNzk3IDI2MTMvMjMyMy83OTcgMjYxMi8yMzI0Lzc5NyAyNjIzLzIzMzMvNzk3CmYgMjYyMy8yMzMzLzc5OCAyNjEyLzIzMjQvNzk4IDI2MTEvMjMyNS83OTggMjYyMi8yMzM0Lzc5OApmIDI2MjIvMjMzNC83OTkgMjYxMS8yMzI1Lzc5OSAyNjEwLzIzMjYvNzk5IDI2MjEvMjMzNS83OTkKZiAyNjIxLzIzMzUvODAwIDI2MTAvMjMyNi84MDAgMjYwOS8yMzI3LzgwMCAyNjIwLzIzMzYvODAwCmYgMjYyMC8yMzM2LzgwMSAyNjA5LzIzMjcvODAxIDI2MDcvMjAwOC84MDEgMjYxOC8yMDEwLzgwMQpmIDI2MzAvMjA0Mi84MDIgMjYxOS8yMDQxLzgwMiAyNjI4LzIzMjgvODAyIDI2MzkvMjMzNy84MDIKZiAyNjM5LzIzMzcvODAzIDI2MjgvMjMyOC84MDMgMjYyNy8yMzI5LzgwMyAyNjM4LzIzMzgvODAzCmYgMjYzOC8yMzM4LzgwNCAyNjI3LzIzMjkvODA0IDI2MjYvMjMzMC84MDQgMjYzNy8yMzM5LzgwNApmIDI2MzcvMjMzOS84MDUgMjYyNi8yMzMwLzgwNSAyNjI1LzIzMzEvODA1IDI2MzYvMjM0MC84MDUKZiAyNjM2LzIzNDAvODA2IDI2MjUvMjMzMS84MDYgMjYyNC8yMzMyLzgwNiAyNjM1LzIzNDEvODA2CmYgMjYzNS8yMzQxLzgwNyAyNjI0LzIzMzIvODA3IDI2MjMvMjMzMy84MDcgMjYzNC8yMzQyLzgwNwpmIDI2MzQvMjM0Mi84MDggMjYyMy8yMzMzLzgwOCAyNjIyLzIzMzQvODA4IDI2MzMvMjM0My84MDgKZiAyNjMzLzIzNDMvODA5IDI2MjIvMjMzNC84MDkgMjYyMS8yMzM1LzgwOSAyNjMyLzIzNDQvODA5CmYgMjYzMi8yMzQ0LzgxMCAyNjIxLzIzMzUvODEwIDI2MjAvMjMzNi84MTAgMjYzMS8yMzQ1LzgxMApmIDI2MzEvMjM0NS84MTEgMjYyMC8yMzM2LzgxMSAyNjE4LzIwMTAvODExIDI2MjkvMjAxMi84MTEKZiAyNjQxLzIwNDMvODEyIDI2MzAvMjA0Mi84MTIgMjYzOS8yMzM3LzgxMiAyNjUwLzIzNDYvODEyCmYgMjY1MC8yMzQ2LzgxMyAyNjM5LzIzMzcvODEzIDI2MzgvMjMzOC84MTMgMjY0OS8yMzQ3LzgxMwpmIDI2NDkvMjM0Ny84MTQgMjYzOC8yMzM4LzgxNCAyNjM3LzIzMzkvODE0IDI2NDgvMjM0OC84MTQKZiAyNjQ4LzIzNDgvODE1IDI2MzcvMjMzOS84MTUgMjYzNi8yMzQwLzgxNSAyNjQ3LzIzNDkvODE1CmYgMjY0Ny8yMzQ5LzgxNiAyNjM2LzIzNDAvODE2IDI2MzUvMjM0MS84MTYgMjY0Ni8yMzUwLzgxNgpmIDI2NDYvMjM1MC84MTcgMjYzNS8yMzQxLzgxNyAyNjM0LzIzNDIvODE3IDI2NDUvMjM1MS84MTcKZiAyNjQ1LzIzNTEvODE4IDI2MzQvMjM0Mi84MTggMjYzMy8yMzQzLzgxOCAyNjQ0LzIzNTIvODE4CmYgMjY0NC8yMzUyLzgxOSAyNjMzLzIzNDMvODE5IDI2MzIvMjM0NC84MTkgMjY0My8yMzUzLzgxOQpmIDI2NDMvMjM1My84MjAgMjYzMi8yMzQ0LzgyMCAyNjMxLzIzNDUvODIwIDI2NDIvMjM1NC84MjAKZiAyNjQyLzIzNTQvODIxIDI2MzEvMjM0NS84MjEgMjYyOS8yMDEyLzgyMSAyNjQwLzIwMTQvODIxCmYgMjY1Mi8yMDQ0LzgyMiAyNjQxLzIwNDMvODIyIDI2NTAvMjM0Ni84MjIgMjY2MS8yMzU1LzgyMgpmIDI2NjEvMjM1NS84MjMgMjY1MC8yMzQ2LzgyMyAyNjQ5LzIzNDcvODIzIDI2NjAvMjM1Ni84MjMKZiAyNjYwLzIzNTYvODI0IDI2NDkvMjM0Ny84MjQgMjY0OC8yMzQ4LzgyNCAyNjU5LzIzNTcvODI0CmYgMjY1OS8yMzU3LzgyNSAyNjQ4LzIzNDgvODI1IDI2NDcvMjM0OS84MjUgMjY1OC8yMzU4LzgyNQpmIDI2NTgvMjM1OC84MjYgMjY0Ny8yMzQ5LzgyNiAyNjQ2LzIzNTAvODI2IDI2NTcvMjM1OS84MjYKZiAyNjU3LzIzNTkvODI3IDI2NDYvMjM1MC84MjcgMjY0NS8yMzUxLzgyNyAyNjU2LzIzNjAvODI3CmYgMjY1Ni8yMzYwLzgyOCAyNjQ1LzIzNTEvODI4IDI2NDQvMjM1Mi84MjggMjY1NS8yMzYxLzgyOApmIDI2NTUvMjM2MS84MjkgMjY0NC8yMzUyLzgyOSAyNjQzLzIzNTMvODI5IDI2NTQvMjM2Mi84MjkKZiAyNjU0LzIzNjIvODMwIDI2NDMvMjM1My84MzAgMjY0Mi8yMzU0LzgzMCAyNjUzLzIzNjMvODMwCmYgMjY1My8yMzYzLzgzMSAyNjQyLzIzNTQvODMxIDI2NDAvMjAxNC84MzEgMjY1MS8yMDE2LzgzMQpmIDI2NjMvMjA0NS84MzIgMjY1Mi8yMDQ0LzgzMiAyNjYxLzIzNTUvODMyIDI2NzIvMjM2NC84MzIKZiAyNjcyLzIzNjQvODMzIDI2NjEvMjM1NS84MzMgMjY2MC8yMzU2LzgzMyAyNjcxLzIzNjUvODMzCmYgMjY3MS8yMzY1LzgzNCAyNjYwLzIzNTYvODM0IDI2NTkvMjM1Ny84MzQgMjY3MC8yMzY2LzgzNApmIDI2NzAvMjM2Ni84MzUgMjY1OS8yMzU3LzgzNSAyNjU4LzIzNTgvODM1IDI2NjkvMjM2Ny84MzUKZiAyNjY5LzIzNjcvODM2IDI2NTgvMjM1OC84MzYgMjY1Ny8yMzU5LzgzNiAyNjY4LzIzNjgvODM2CmYgMjY2OC8yMzY4LzgzNyAyNjU3LzIzNTkvODM3IDI2NTYvMjM2MC84MzcgMjY2Ny8yMzY5LzgzNwpmIDI2NjcvMjM2OS84MzggMjY1Ni8yMzYwLzgzOCAyNjU1LzIzNjEvODM4IDI2NjYvMjM3MC84MzgKZiAyNjY2LzIzNzAvODM5IDI2NTUvMjM2MS84MzkgMjY1NC8yMzYyLzgzOSAyNjY1LzIzNzEvODM5CmYgMjY2NS8yMzcxLzg0MCAyNjU0LzIzNjIvODQwIDI2NTMvMjM2My84NDAgMjY2NC8yMzcyLzg0MApmIDI2NjQvMjM3Mi84NDEgMjY1My8yMzYzLzg0MSAyNjUxLzIwMTYvODQxIDI2NjIvMjA1MC84NDEKZiAyNjc0LzIwNDYvODQyIDI2NjMvMjA0NS84NDIgMjY3Mi8yMzY0Lzg0MiAyNjgzLzIzNzMvODQyCmYgMjY4My8yMzczLzg0MyAyNjcyLzIzNjQvODQzIDI2NzEvMjM2NS84NDMgMjY4Mi8yMzc0Lzg0MwpmIDI2ODIvMjM3NC84NDQgMjY3MS8yMzY1Lzg0NCAyNjcwLzIzNjYvODQ0IDI2ODEvMjM3NS84NDQKZiAyNjgxLzIzNzUvODQ1IDI2NzAvMjM2Ni84NDUgMjY2OS8yMzY3Lzg0NSAyNjgwLzIzNzYvODQ1CmYgMjY4MC8yMzc2Lzg0NiAyNjY5LzIzNjcvODQ2IDI2NjgvMjM2OC84NDYgMjY3OS8yMzc3Lzg0NgpmIDI2NzkvMjM3Ny84NDcgMjY2OC8yMzY4Lzg0NyAyNjY3LzIzNjkvODQ3IDI2NzgvMjM3OC84NDcKZiAyNjc4LzIzNzgvODQ4IDI2NjcvMjM2OS84NDggMjY2Ni8yMzcwLzg0OCAyNjc3LzIzNzkvODQ4CmYgMjY3Ny8yMzc5Lzg0OSAyNjY2LzIzNzAvODQ5IDI2NjUvMjM3MS84NDkgMjY3Ni8yMzgwLzg0OQpmIDI2NzYvMjM4MC84NTAgMjY2NS8yMzcxLzg1MCAyNjY0LzIzNzIvODUwIDI2NzUvMjM4MS84NTAKZiAyNjc1LzIzODEvODUxIDI2NjQvMjM3Mi84NTEgMjY2Mi8yMDUwLzg1MSAyNjczLzIwNTQvODUxCmYgMjY4NS8yMDQ3Lzg1MiAyNjc0LzIwNDYvODUyIDI2ODMvMjM3My84NTIgMjY5NC8yMzgyLzg1MgpmIDI2OTQvMjM4Mi84NTMgMjY4My8yMzczLzg1MyAyNjgyLzIzNzQvODUzIDI2OTMvMjM4My84NTMKZiAyNjkzLzIzODMvODU0IDI2ODIvMjM3NC84NTQgMjY4MS8yMzc1Lzg1NCAyNjkyLzIzODQvODU0CmYgMjY5Mi8yMzg0Lzg1NSAyNjgxLzIzNzUvODU1IDI2ODAvMjM3Ni84NTUgMjY5MS8yMzg1Lzg1NQpmIDI2OTEvMjM4NS84NTYgMjY4MC8yMzc2Lzg1NiAyNjc5LzIzNzcvODU2IDI2OTAvMjM4Ni84NTYKZiAyNjkwLzIzODYvODU3IDI2NzkvMjM3Ny84NTcgMjY3OC8yMzc4Lzg1NyAyNjg5LzIzODcvODU3CmYgMjY4OS8yMzg3Lzg1OCAyNjc4LzIzNzgvODU4IDI2NzcvMjM3OS84NTggMjY4OC8yMzg4Lzg1OApmIDI2ODgvMjM4OC84NTkgMjY3Ny8yMzc5Lzg1OSAyNjc2LzIzODAvODU5IDI2ODcvMjM4OS84NTkKZiAyNjg3LzIzODkvODYwIDI2NzYvMjM4MC84NjAgMjY3NS8yMzgxLzg2MCAyNjg2LzIzOTAvODYwCmYgMjY4Ni8yMzkwLzg2MSAyNjc1LzIzODEvODYxIDI2NzMvMjA1NC84NjEgMjY4NC8yMDUyLzg2MQpmIDIzNTQvMjA0OC84NjIgMjY4NS8yMDQ3Lzg2MiAyNjk0LzIzODIvODYyIDIzNTYvMjEwMy84NjIKZiAyMzU2LzIxMDMvODYzIDI2OTQvMjM4Mi84NjMgMjY5My8yMzgzLzg2MyAyMzU3LzIxMDUvODYzCmYgMjM1Ny8yMTA1Lzg2NCAyNjkzLzIzODMvODY0IDI2OTIvMjM4NC84NjQgMjM1OC8yMTA3Lzg2NApmIDIzNTgvMjEwNy84NjUgMjY5Mi8yMzg0Lzg2NSAyNjkxLzIzODUvODY1IDIzNTkvMjEwOS84NjUKZiAyMzU5LzIxMDkvODY2IDI2OTEvMjM4NS84NjYgMjY5MC8yMzg2Lzg2NiAyMzYwLzIxMTEvODY2CmYgMjM2MC8yMTExLzg2NyAyNjkwLzIzODYvODY3IDI2ODkvMjM4Ny84NjcgMjM2MS8yMTEzLzg2NwpmIDIzNjEvMjExMy84NjggMjY4OS8yMzg3Lzg2OCAyNjg4LzIzODgvODY4IDIzNjIvMjExNS84NjgKZiAyMzYyLzIxMTUvODY5IDI2ODgvMjM4OC84NjkgMjY4Ny8yMzg5Lzg2OSAyMzYzLzIxMTcvODY5CmYgMjM2My8yMTE3Lzg3MCAyNjg3LzIzODkvODcwIDI2ODYvMjM5MC84NzAgMjM2NC8yMTE5Lzg3MApmIDIzNjQvMjExOS84NzEgMjY4Ni8yMzkwLzg3MSAyNjg0LzIwNTIvODcxIDIzNTUvMjA1MS84NzEKZiAyNjk2LzIwNjUvNTUyIDI3MDYvMjA5Ni81NTIgMjcwOC8yMzkxLzU1MiAyNzA1LzIzOTIvNTUyCmYgMjcwNS8yMzkyLzg3MiAyNzA4LzIzOTEvODcyIDI3MDkvMjM5My84NzIgMjcwNC8yMzk0Lzg3MgpmIDI3MDQvMjM5NC81NTQgMjcwOS8yMzkzLzU1NCAyNzEwLzIzOTUvNTU0IDI3MDMvMjM5Ni81NTQKZiAyNzAzLzIzOTYvNTU1IDI3MTAvMjM5NS81NTUgMjcxMS8yMzk3LzU1NSAyNzAyLzIzOTgvNTU1CmYgMjcwMi8yMzk4LzU1NiAyNzExLzIzOTcvNTU2IDI3MTIvMjM5OS81NTYgMjcwMS8yNDAwLzU1NgpmIDI3MDEvMjQwMC84NzMgMjcxMi8yMzk5Lzg3MyAyNzEzLzI0MDEvODczIDI3MDAvMjQwMi84NzMKZiAyNzAwLzI0MDIvNTU4IDI3MTMvMjQwMS81NTggMjcxNC8yNDAzLzU1OCAyNjk5LzI0MDQvNTU4CmYgMjY5OS8yNDA0LzU1OSAyNzE0LzI0MDMvNTU5IDI3MTUvMjQwNS81NTkgMjY5OC8yNDA2LzU1OQpmIDI2OTgvMjQwNi81NjAgMjcxNS8yNDA1LzU2MCAyNzE2LzI0MDcvNTYwIDI2OTcvMjQwOC81NjAKZiAyNjk3LzI0MDgvNTYxIDI3MTYvMjQwNy81NjEgMjcwNy8yMDYwLzU2MSAyNjk1LzE5ODAvNTYxCmYgMjcxOC8yMDY2Lzg3NCAyNjk2LzIwNjUvODc0IDI3MDUvMjM5Mi84NzQgMjcyNy8yNDA5Lzg3NApmIDI3MjcvMjQwOS81NjMgMjcwNS8yMzkyLzU2MyAyNzA0LzIzOTQvNTYzIDI3MjYvMjQxMC81NjMKZiAyNzI2LzI0MTAvODc1IDI3MDQvMjM5NC84NzUgMjcwMy8yMzk2Lzg3NSAyNzI1LzI0MTEvODc1CmYgMjcyNS8yNDExLzg3NiAyNzAzLzIzOTYvODc2IDI3MDIvMjM5OC84NzYgMjcyNC8yNDEyLzg3NgpmIDI3MjQvMjQxMi81NjYgMjcwMi8yMzk4LzU2NiAyNzAxLzI0MDAvNTY2IDI3MjMvMjQxMy81NjYKZiAyNzIzLzI0MTMvNTY3IDI3MDEvMjQwMC81NjcgMjcwMC8yNDAyLzU2NyAyNzIyLzI0MTQvNTY3CmYgMjcyMi8yNDE0Lzg3NyAyNzAwLzI0MDIvODc3IDI2OTkvMjQwNC84NzcgMjcyMS8yNDE1Lzg3NwpmIDI3MjEvMjQxNS81NjkgMjY5OS8yNDA0LzU2OSAyNjk4LzI0MDYvNTY5IDI3MjAvMjQxNi81NjkKZiAyNzIwLzI0MTYvNTcwIDI2OTgvMjQwNi81NzAgMjY5Ny8yNDA4LzU3MCAyNzE5LzI0MTcvNTcwCmYgMjcxOS8yNDE3Lzg3OCAyNjk3LzI0MDgvODc4IDI2OTUvMTk4MC84NzggMjcxNy8xOTc5Lzg3OApmIDI3MjkvMjA2Ny84NzkgMjcxOC8yMDY2Lzg3OSAyNzI3LzI0MDkvODc5IDI3MzgvMjQxOC84NzkKZiAyNzM4LzI0MTgvODgwIDI3MjcvMjQwOS84ODAgMjcyNi8yNDEwLzg4MCAyNzM3LzI0MTkvODgwCmYgMjczNy8yNDE5LzU3NCAyNzI2LzI0MTAvNTc0IDI3MjUvMjQxMS81NzQgMjczNi8yNDIwLzU3NApmIDI3MzYvMjQyMC81NzUgMjcyNS8yNDExLzU3NSAyNzI0LzI0MTIvNTc1IDI3MzUvMjQyMS81NzUKZiAyNzM1LzI0MjEvNTc2IDI3MjQvMjQxMi81NzYgMjcyMy8yNDEzLzU3NiAyNzM0LzI0MjIvNTc2CmYgMjczNC8yNDIyLzU3NyAyNzIzLzI0MTMvNTc3IDI3MjIvMjQxNC81NzcgMjczMy8yNDIzLzU3NwpmIDI3MzMvMjQyMy84ODEgMjcyMi8yNDE0Lzg4MSAyNzIxLzI0MTUvODgxIDI3MzIvMjQyNC84ODEKZiAyNzMyLzI0MjQvNTc5IDI3MjEvMjQxNS81NzkgMjcyMC8yNDE2LzU3OSAyNzMxLzI0MjUvNTc5CmYgMjczMS8yNDI1Lzg4MiAyNzIwLzI0MTYvODgyIDI3MTkvMjQxNy84ODIgMjczMC8yNDI2Lzg4MgpmIDI3MzAvMjQyNi84ODMgMjcxOS8yNDE3Lzg4MyAyNzE3LzE5NzkvODgzIDI3MjgvMTk4NC84ODMKZiAyNzQwLzIwNjgvODg0IDI3MjkvMjA2Ny84ODQgMjczOC8yNDE4Lzg4NCAyNzQ5LzI0MjcvODg0CmYgMjc0OS8yNDI3LzU4MyAyNzM4LzI0MTgvNTgzIDI3MzcvMjQxOS81ODMgMjc0OC8yNDI4LzU4MwpmIDI3NDgvMjQyOC81ODQgMjczNy8yNDE5LzU4NCAyNzM2LzI0MjAvNTg0IDI3NDcvMjQyOS81ODQKZiAyNzQ3LzI0MjkvODg1IDI3MzYvMjQyMC84ODUgMjczNS8yNDIxLzg4NSAyNzQ2LzI0MzAvODg1CmYgMjc0Ni8yNDMwLzU4NiAyNzM1LzI0MjEvNTg2IDI3MzQvMjQyMi81ODYgMjc0NS8yNDMxLzU4NgpmIDI3NDUvMjQzMS84ODYgMjczNC8yNDIyLzg4NiAyNzMzLzI0MjMvODg2IDI3NDQvMjQzMi84ODYKZiAyNzQ0LzI0MzIvNTg4IDI3MzMvMjQyMy81ODggMjczMi8yNDI0LzU4OCAyNzQzLzI0MzMvNTg4CmYgMjc0My8yNDMzLzU4OSAyNzMyLzI0MjQvNTg5IDI3MzEvMjQyNS81ODkgMjc0Mi8yNDM0LzU4OQpmIDI3NDIvMjQzNC81OTAgMjczMS8yNDI1LzU5MCAyNzMwLzI0MjYvNTkwIDI3NDEvMjQzNS81OTAKZiAyNzQxLzI0MzUvODg3IDI3MzAvMjQyNi84ODcgMjcyOC8xOTg0Lzg4NyAyNzM5LzIxMDIvODg3CmYgMjc1MS8yMDY5LzU5MiAyNzQwLzIwNjgvNTkyIDI3NDkvMjQyNy81OTIgMjc2MC8yNDM2LzU5MgpmIDI3NjAvMjQzNi81OTMgMjc0OS8yNDI3LzU5MyAyNzQ4LzI0MjgvNTkzIDI3NTkvMjQzNy81OTMKZiAyNzU5LzI0MzcvNTk0IDI3NDgvMjQyOC81OTQgMjc0Ny8yNDI5LzU5NCAyNzU4LzI0MzgvNTk0CmYgMjc1OC8yNDM4Lzg4OCAyNzQ3LzI0MjkvODg4IDI3NDYvMjQzMC84ODggMjc1Ny8yNDM5Lzg4OApmIDI3NTcvMjQzOS81OTYgMjc0Ni8yNDMwLzU5NiAyNzQ1LzI0MzEvNTk2IDI3NTYvMjQ0MC81OTYKZiAyNzU2LzI0NDAvODg5IDI3NDUvMjQzMS84ODkgMjc0NC8yNDMyLzg4OSAyNzU1LzI0NDEvODg5CmYgMjc1NS8yNDQxLzU5OCAyNzQ0LzI0MzIvNTk4IDI3NDMvMjQzMy81OTggMjc1NC8yNDQyLzU5OApmIDI3NTQvMjQ0Mi81OTkgMjc0My8yNDMzLzU5OSAyNzQyLzI0MzQvNTk5IDI3NTMvMjQ0My81OTkKZiAyNzUzLzI0NDMvODkwIDI3NDIvMjQzNC84OTAgMjc0MS8yNDM1Lzg5MCAyNzUyLzI0NDQvODkwCmYgMjc1Mi8yNDQ0Lzg5MSAyNzQxLzI0MzUvODkxIDI3MzkvMjEwMi84OTEgMjc1MC8xOTgyLzg5MQpmIDI3NjIvMjA3MC82MDIgMjc1MS8yMDY5LzYwMiAyNzYwLzI0MzYvNjAyIDI3NzEvMjQ0NS82MDIKZiAyNzcxLzI0NDUvNjAzIDI3NjAvMjQzNi82MDMgMjc1OS8yNDM3LzYwMyAyNzcwLzI0NDYvNjAzCmYgMjc3MC8yNDQ2LzYwNCAyNzU5LzI0MzcvNjA0IDI3NTgvMjQzOC82MDQgMjc2OS8yNDQ3LzYwNApmIDI3NjkvMjQ0Ny84OTIgMjc1OC8yNDM4Lzg5MiAyNzU3LzI0MzkvODkyIDI3NjgvMjQ0OC84OTIKZiAyNzY4LzI0NDgvNjA2IDI3NTcvMjQzOS82MDYgMjc1Ni8yNDQwLzYwNiAyNzY3LzI0NDkvNjA2CmYgMjc2Ny8yNDQ5Lzg5MyAyNzU2LzI0NDAvODkzIDI3NTUvMjQ0MS84OTMgMjc2Ni8yNDUwLzg5MwpmIDI3NjYvMjQ1MC82MDggMjc1NS8yNDQxLzYwOCAyNzU0LzI0NDIvNjA4IDI3NjUvMjQ1MS82MDgKZiAyNzY1LzI0NTEvNjA5IDI3NTQvMjQ0Mi82MDkgMjc1My8yNDQzLzYwOSAyNzY0LzI0NTIvNjA5CmYgMjc2NC8yNDUyLzYxMCAyNzUzLzI0NDMvNjEwIDI3NTIvMjQ0NC82MTAgMjc2My8yNDUzLzYxMApmIDI3NjMvMjQ1My82MTEgMjc1Mi8yNDQ0LzYxMSAyNzUwLzE5ODIvNjExIDI3NjEvMTk4MS82MTEKZiAyNzczLzIwNzEvNjEyIDI3NjIvMjA3MC82MTIgMjc3MS8yNDQ1LzYxMiAyNzgyLzI0NTQvNjEyCmYgMjc4Mi8yNDU0LzYxMyAyNzcxLzI0NDUvNjEzIDI3NzAvMjQ0Ni82MTMgMjc4MS8yNDU1LzYxMwpmIDI3ODEvMjQ1NS82MTQgMjc3MC8yNDQ2LzYxNCAyNzY5LzI0NDcvNjE0IDI3ODAvMjQ1Ni82MTQKZiAyNzgwLzI0NTYvODk0IDI3NjkvMjQ0Ny84OTQgMjc2OC8yNDQ4Lzg5NCAyNzc5LzI0NTcvODk0CmYgMjc3OS8yNDU3LzYxNiAyNzY4LzI0NDgvNjE2IDI3NjcvMjQ0OS82MTYgMjc3OC8yNDU4LzYxNgpmIDI3NzgvMjQ1OC84OTUgMjc2Ny8yNDQ5Lzg5NSAyNzY2LzI0NTAvODk1IDI3NzcvMjQ1OS84OTUKZiAyNzc3LzI0NTkvNjE4IDI3NjYvMjQ1MC82MTggMjc2NS8yNDUxLzYxOCAyNzc2LzI0NjAvNjE4CmYgMjc3Ni8yNDYwLzg5NiAyNzY1LzI0NTEvODk2IDI3NjQvMjQ1Mi84OTYgMjc3NS8yNDYxLzg5NgpmIDI3NzUvMjQ2MS84OTcgMjc2NC8yNDUyLzg5NyAyNzYzLzI0NTMvODk3IDI3NzQvMjQ2Mi84OTcKZiAyNzc0LzI0NjIvNjIxIDI3NjMvMjQ1My82MjEgMjc2MS8xOTgxLzYyMSAyNzcyLzE5ODUvNjIxCmYgMjc4NC8yMDcyLzg5OCAyNzczLzIwNzEvODk4IDI3ODIvMjQ1NC84OTggMjc5My8yNDYzLzg5OApmIDI3OTMvMjQ2My82MjMgMjc4Mi8yNDU0LzYyMyAyNzgxLzI0NTUvNjIzIDI3OTIvMjQ2NC82MjMKZiAyNzkyLzI0NjQvNjI0IDI3ODEvMjQ1NS82MjQgMjc4MC8yNDU2LzYyNCAyNzkxLzI0NjUvNjI0CmYgMjc5MS8yNDY1Lzg5OSAyNzgwLzI0NTYvODk5IDI3NzkvMjQ1Ny84OTkgMjc5MC8yNDY2Lzg5OQpmIDI3OTAvMjQ2Ni82MjYgMjc3OS8yNDU3LzYyNiAyNzc4LzI0NTgvNjI2IDI3ODkvMjQ2Ny82MjYKZiAyNzg5LzI0NjcvOTAwIDI3NzgvMjQ1OC85MDAgMjc3Ny8yNDU5LzkwMCAyNzg4LzI0NjgvOTAwCmYgMjc4OC8yNDY4LzYyOCAyNzc3LzI0NTkvNjI4IDI3NzYvMjQ2MC82MjggMjc4Ny8yNDY5LzYyOApmIDI3ODcvMjQ2OS82MjkgMjc3Ni8yNDYwLzYyOSAyNzc1LzI0NjEvNjI5IDI3ODYvMjQ3MC82MjkKZiAyNzg2LzI0NzAvNjMwIDI3NzUvMjQ2MS82MzAgMjc3NC8yNDYyLzYzMCAyNzg1LzI0NzEvNjMwCmYgMjc4NS8yNDcxLzkwMSAyNzc0LzI0NjIvOTAxIDI3NzIvMTk4NS85MDEgMjc4My8xOTg3LzkwMQpmIDI3OTUvMjA3My82MzIgMjc4NC8yMDcyLzYzMiAyNzkzLzI0NjMvNjMyIDI4MDQvMjQ3Mi82MzIKZiAyODA0LzI0NzIvNjMzIDI3OTMvMjQ2My82MzMgMjc5Mi8yNDY0LzYzMyAyODAzLzI0NzMvNjMzCmYgMjgwMy8yNDczLzkwMiAyNzkyLzI0NjQvOTAyIDI3OTEvMjQ2NS85MDIgMjgwMi8yNDc0LzkwMgpmIDI4MDIvMjQ3NC85MDMgMjc5MS8yNDY1LzkwMyAyNzkwLzI0NjYvOTAzIDI4MDEvMjQ3NS85MDMKZiAyODAxLzI0NzUvOTA0IDI3OTAvMjQ2Ni85MDQgMjc4OS8yNDY3LzkwNCAyODAwLzI0NzYvOTA0CmYgMjgwMC8yNDc2LzkwNSAyNzg5LzI0NjcvOTA1IDI3ODgvMjQ2OC85MDUgMjc5OS8yNDc3LzkwNQpmIDI3OTkvMjQ3Ny82MzggMjc4OC8yNDY4LzYzOCAyNzg3LzI0NjkvNjM4IDI3OTgvMjQ3OC82MzgKZiAyNzk4LzI0NzgvNjM5IDI3ODcvMjQ2OS82MzkgMjc4Ni8yNDcwLzYzOSAyNzk3LzI0NzkvNjM5CmYgMjc5Ny8yNDc5LzkwNiAyNzg2LzI0NzAvOTA2IDI3ODUvMjQ3MS85MDYgMjc5Ni8yNDgwLzkwNgpmIDI3OTYvMjQ4MC82NDEgMjc4NS8yNDcxLzY0MSAyNzgzLzE5ODcvNjQxIDI3OTQvMTk4OS82NDEKZiAyODA2LzIwNzQvOTA3IDI3OTUvMjA3My85MDcgMjgwNC8yNDcyLzkwNyAyODE1LzI0ODEvOTA3CmYgMjgxNS8yNDgxLzkwOCAyODA0LzI0NzIvOTA4IDI4MDMvMjQ3My85MDggMjgxNC8yNDgyLzkwOApmIDI4MTQvMjQ4Mi85MDkgMjgwMy8yNDczLzkwOSAyODAyLzI0NzQvOTA5IDI4MTMvMjQ4My85MDkKZiAyODEzLzI0ODMvOTEwIDI4MDIvMjQ3NC85MTAgMjgwMS8yNDc1LzkxMCAyODEyLzI0ODQvOTEwCmYgMjgxMi8yNDg0LzY0NiAyODAxLzI0NzUvNjQ2IDI4MDAvMjQ3Ni82NDYgMjgxMS8yNDg1LzY0NgpmIDI4MTEvMjQ4NS85MTEgMjgwMC8yNDc2LzkxMSAyNzk5LzI0NzcvOTExIDI4MTAvMjQ4Ni85MTEKZiAyODEwLzI0ODYvNjQ4IDI3OTkvMjQ3Ny82NDggMjc5OC8yNDc4LzY0OCAyODA5LzI0ODcvNjQ4CmYgMjgwOS8yNDg3LzkxMiAyNzk4LzI0NzgvOTEyIDI3OTcvMjQ3OS85MTIgMjgwOC8yNDg4LzkxMgpmIDI4MDgvMjQ4OC82NTAgMjc5Ny8yNDc5LzY1MCAyNzk2LzI0ODAvNjUwIDI4MDcvMjQ4OS82NTAKZiAyODA3LzI0ODkvNjUxIDI3OTYvMjQ4MC82NTEgMjc5NC8xOTg5LzY1MSAyODA1LzE5OTEvNjUxCmYgMjgxNy8yMDc1LzY1MiAyODA2LzIwNzQvNjUyIDI4MTUvMjQ4MS82NTIgMjgyNi8yNDkwLzY1MgpmIDI4MjYvMjQ5MC85MTMgMjgxNS8yNDgxLzkxMyAyODE0LzI0ODIvOTEzIDI4MjUvMjQ5MS85MTMKZiAyODI1LzI0OTEvOTE0IDI4MTQvMjQ4Mi85MTQgMjgxMy8yNDgzLzkxNCAyODI0LzI0OTIvOTE0CmYgMjgyNC8yNDkyLzkxNSAyODEzLzI0ODMvOTE1IDI4MTIvMjQ4NC85MTUgMjgyMy8yNDkzLzkxNQpmIDI4MjMvMjQ5My85MTYgMjgxMi8yNDg0LzkxNiAyODExLzI0ODUvOTE2IDI4MjIvMjQ5NC85MTYKZiAyODIyLzI0OTQvNjU3IDI4MTEvMjQ4NS82NTcgMjgxMC8yNDg2LzY1NyAyODIxLzI0OTUvNjU3CmYgMjgyMS8yNDk1LzY1OCAyODEwLzI0ODYvNjU4IDI4MDkvMjQ4Ny82NTggMjgyMC8yNDk2LzY1OApmIDI4MjAvMjQ5Ni82NTkgMjgwOS8yNDg3LzY1OSAyODA4LzI0ODgvNjU5IDI4MTkvMjQ5Ny82NTkKZiAyODE5LzI0OTcvOTE3IDI4MDgvMjQ4OC85MTcgMjgwNy8yNDg5LzkxNyAyODE4LzI0OTgvOTE3CmYgMjgxOC8yNDk4LzkxOCAyODA3LzI0ODkvOTE4IDI4MDUvMTk5MS85MTggMjgxNi8xOTkzLzkxOApmIDI4MjgvMjA3Ni82NjIgMjgxNy8yMDc1LzY2MiAyODI2LzI0OTAvNjYyIDI4MzcvMjQ5OS82NjIKZiAyODM3LzI0OTkvNjYzIDI4MjYvMjQ5MC82NjMgMjgyNS8yNDkxLzY2MyAyODM2LzI1MDAvNjYzCmYgMjgzNi8yNTAwLzkxOSAyODI1LzI0OTEvOTE5IDI4MjQvMjQ5Mi85MTkgMjgzNS8yNTAxLzkxOQpmIDI4MzUvMjUwMS82NjUgMjgyNC8yNDkyLzY2NSAyODIzLzI0OTMvNjY1IDI4MzQvMjUwMi82NjUKZiAyODM0LzI1MDIvNjY2IDI4MjMvMjQ5My82NjYgMjgyMi8yNDk0LzY2NiAyODMzLzI1MDMvNjY2CmYgMjgzMy8yNTAzLzY2NyAyODIyLzI0OTQvNjY3IDI4MjEvMjQ5NS82NjcgMjgzMi8yNTA0LzY2NwpmIDI4MzIvMjUwNC85MjAgMjgyMS8yNDk1LzkyMCAyODIwLzI0OTYvOTIwIDI4MzEvMjUwNS85MjAKZiAyODMxLzI1MDUvNjY5IDI4MjAvMjQ5Ni82NjkgMjgxOS8yNDk3LzY2OSAyODMwLzI1MDYvNjY5CmYgMjgzMC8yNTA2LzY3MCAyODE5LzI0OTcvNjcwIDI4MTgvMjQ5OC82NzAgMjgyOS8yNTA3LzY3MApmIDI4MjkvMjUwNy85MjEgMjgxOC8yNDk4LzkyMSAyODE2LzE5OTMvOTIxIDI4MjcvMTk5NS85MjEKZiAyODM5LzIwNzcvNjcyIDI4MjgvMjA3Ni82NzIgMjgzNy8yNDk5LzY3MiAyODQ4LzI1MDgvNjcyCmYgMjg0OC8yNTA4LzkyMiAyODM3LzI0OTkvOTIyIDI4MzYvMjUwMC85MjIgMjg0Ny8yNTA5LzkyMgpmIDI4NDcvMjUwOS82NzQgMjgzNi8yNTAwLzY3NCAyODM1LzI1MDEvNjc0IDI4NDYvMjUxMC82NzQKZiAyODQ2LzI1MTAvNjc1IDI4MzUvMjUwMS82NzUgMjgzNC8yNTAyLzY3NSAyODQ1LzI1MTEvNjc1CmYgMjg0NS8yNTExLzY3NiAyODM0LzI1MDIvNjc2IDI4MzMvMjUwMy82NzYgMjg0NC8yNTEyLzY3NgpmIDI4NDQvMjUxMi85MjMgMjgzMy8yNTAzLzkyMyAyODMyLzI1MDQvOTIzIDI4NDMvMjUxMy85MjMKZiAyODQzLzI1MTMvOTI0IDI4MzIvMjUwNC85MjQgMjgzMS8yNTA1LzkyNCAyODQyLzI1MTQvOTI0CmYgMjg0Mi8yNTE0LzkyNSAyODMxLzI1MDUvOTI1IDI4MzAvMjUwNi85MjUgMjg0MS8yNTE1LzkyNQpmIDI4NDEvMjUxNS85MjYgMjgzMC8yNTA2LzkyNiAyODI5LzI1MDcvOTI2IDI4NDAvMjUxNi85MjYKZiAyODQwLzI1MTYvNjgxIDI4MjkvMjUwNy82ODEgMjgyNy8xOTk1LzY4MSAyODM4LzE5OTcvNjgxCmYgMjg1MC8yMDc4LzkyNyAyODM5LzIwNzcvOTI3IDI4NDgvMjUwOC85MjcgMjg1OS8yNTE3LzkyNwpmIDI4NTkvMjUxNy85MjggMjg0OC8yNTA4LzkyOCAyODQ3LzI1MDkvOTI4IDI4NTgvMjUxOC85MjgKZiAyODU4LzI1MTgvOTI5IDI4NDcvMjUwOS85MjkgMjg0Ni8yNTEwLzkyOSAyODU3LzI1MTkvOTI5CmYgMjg1Ny8yNTE5LzY4NSAyODQ2LzI1MTAvNjg1IDI4NDUvMjUxMS82ODUgMjg1Ni8yNTIwLzY4NQpmIDI4NTYvMjUyMC85MzAgMjg0NS8yNTExLzkzMCAyODQ0LzI1MTIvOTMwIDI4NTUvMjUyMS85MzAKZiAyODU1LzI1MjEvOTMxIDI4NDQvMjUxMi85MzEgMjg0My8yNTEzLzkzMSAyODU0LzI1MjIvOTMxCmYgMjg1NC8yNTIyLzkzMiAyODQzLzI1MTMvOTMyIDI4NDIvMjUxNC85MzIgMjg1My8yNTIzLzkzMgpmIDI4NTMvMjUyMy82ODkgMjg0Mi8yNTE0LzY4OSAyODQxLzI1MTUvNjg5IDI4NTIvMjUyNC82ODkKZiAyODUyLzI1MjQvOTMzIDI4NDEvMjUxNS85MzMgMjg0MC8yNTE2LzkzMyAyODUxLzI1MjUvOTMzCmYgMjg1MS8yNTI1LzkzNCAyODQwLzI1MTYvOTM0IDI4MzgvMTk5Ny85MzQgMjg0OS8xOTk5LzkzNApmIDI4NjEvMjA3OS82OTIgMjg1MC8yMDc4LzY5MiAyODU5LzI1MTcvNjkyIDI4NzAvMjUyNi82OTIKZiAyODcwLzI1MjYvNjkzIDI4NTkvMjUxNy82OTMgMjg1OC8yNTE4LzY5MyAyODY5LzI1MjcvNjkzCmYgMjg2OS8yNTI3LzY5NCAyODU4LzI1MTgvNjk0IDI4NTcvMjUxOS82OTQgMjg2OC8yNTI4LzY5NApmIDI4NjgvMjUyOC85MzUgMjg1Ny8yNTE5LzkzNSAyODU2LzI1MjAvOTM1IDI4NjcvMjUyOS85MzUKZiAyODY3LzI1MjkvNjk2IDI4NTYvMjUyMC82OTYgMjg1NS8yNTIxLzY5NiAyODY2LzI1MzAvNjk2CmYgMjg2Ni8yNTMwLzY5NyAyODU1LzI1MjEvNjk3IDI4NTQvMjUyMi82OTcgMjg2NS8yNTMxLzY5NwpmIDI4NjUvMjUzMS82OTggMjg1NC8yNTIyLzY5OCAyODUzLzI1MjMvNjk4IDI4NjQvMjUzMi82OTgKZiAyODY0LzI1MzIvNjk5IDI4NTMvMjUyMy82OTkgMjg1Mi8yNTI0LzY5OSAyODYzLzI1MzMvNjk5CmYgMjg2My8yNTMzLzkzNiAyODUyLzI1MjQvOTM2IDI4NTEvMjUyNS85MzYgMjg2Mi8yNTM0LzkzNgpmIDI4NjIvMjUzNC83MDEgMjg1MS8yNTI1LzcwMSAyODQ5LzE5OTkvNzAxIDI4NjAvMjAwMS83MDEKZiAyODcyLzIwODAvNzAyIDI4NjEvMjA3OS83MDIgMjg3MC8yNTI2LzcwMiAyODgxLzI1MzUvNzAyCmYgMjg4MS8yNTM1LzcwMyAyODcwLzI1MjYvNzAzIDI4NjkvMjUyNy83MDMgMjg4MC8yNTM2LzcwMwpmIDI4ODAvMjUzNi85MzcgMjg2OS8yNTI3LzkzNyAyODY4LzI1MjgvOTM3IDI4NzkvMjUzNy85MzcKZiAyODc5LzI1MzcvOTM4IDI4NjgvMjUyOC85MzggMjg2Ny8yNTI5LzkzOCAyODc4LzI1MzgvOTM4CmYgMjg3OC8yNTM4LzcwNiAyODY3LzI1MjkvNzA2IDI4NjYvMjUzMC83MDYgMjg3Ny8yNTM5LzcwNgpmIDI4NzcvMjUzOS85MzkgMjg2Ni8yNTMwLzkzOSAyODY1LzI1MzEvOTM5IDI4NzYvMjU0MC85MzkKZiAyODc2LzI1NDAvOTQwIDI4NjUvMjUzMS85NDAgMjg2NC8yNTMyLzk0MCAyODc1LzI1NDEvOTQwCmYgMjg3NS8yNTQxLzk0MSAyODY0LzI1MzIvOTQxIDI4NjMvMjUzMy85NDEgMjg3NC8yNTQyLzk0MQpmIDI4NzQvMjU0Mi85NDIgMjg2My8yNTMzLzk0MiAyODYyLzI1MzQvOTQyIDI4NzMvMjU0My85NDIKZiAyODczLzI1NDMvNzExIDI4NjIvMjUzNC83MTEgMjg2MC8yMDAxLzcxMSAyODcxLzIwMDMvNzExCmYgMjg4My8yMDgxLzk0MyAyODcyLzIwODAvOTQzIDI4ODEvMjUzNS85NDMgMjg5Mi8yNTQ0Lzk0MwpmIDI4OTIvMjU0NC83MTMgMjg4MS8yNTM1LzcxMyAyODgwLzI1MzYvNzEzIDI4OTEvMjU0NS83MTMKZiAyODkxLzI1NDUvOTQ0IDI4ODAvMjUzNi85NDQgMjg3OS8yNTM3Lzk0NCAyODkwLzI1NDYvOTQ0CmYgMjg5MC8yNTQ2Lzk0NSAyODc5LzI1MzcvOTQ1IDI4NzgvMjUzOC85NDUgMjg4OS8yNTQ3Lzk0NQpmIDI4ODkvMjU0Ny85NDYgMjg3OC8yNTM4Lzk0NiAyODc3LzI1MzkvOTQ2IDI4ODgvMjU0OC85NDYKZiAyODg4LzI1NDgvOTQ3IDI4NzcvMjUzOS85NDcgMjg3Ni8yNTQwLzk0NyAyODg3LzI1NDkvOTQ3CmYgMjg4Ny8yNTQ5LzcxOCAyODc2LzI1NDAvNzE4IDI4NzUvMjU0MS83MTggMjg4Ni8yNTUwLzcxOApmIDI4ODYvMjU1MC83MTkgMjg3NS8yNTQxLzcxOSAyODc0LzI1NDIvNzE5IDI4ODUvMjU1MS83MTkKZiAyODg1LzI1NTEvNzIwIDI4NzQvMjU0Mi83MjAgMjg3My8yNTQzLzcyMCAyODg0LzI1NTIvNzIwCmYgMjg4NC8yNTUyLzcyMSAyODczLzI1NDMvNzIxIDI4NzEvMjAwMy83MjEgMjg4Mi8yMDA1LzcyMQpmIDI4OTQvMjA4Mi85NDggMjg4My8yMDgxLzk0OCAyODkyLzI1NDQvOTQ4IDI5MDMvMjU1My85NDgKZiAyOTAzLzI1NTMvNzIzIDI4OTIvMjU0NC83MjMgMjg5MS8yNTQ1LzcyMyAyOTAyLzI1NTQvNzIzCmYgMjkwMi8yNTU0Lzk0OSAyODkxLzI1NDUvOTQ5IDI4OTAvMjU0Ni85NDkgMjkwMS8yNTU1Lzk0OQpmIDI5MDEvMjU1NS85NTAgMjg5MC8yNTQ2Lzk1MCAyODg5LzI1NDcvOTUwIDI5MDAvMjU1Ni85NTAKZiAyOTAwLzI1NTYvOTUxIDI4ODkvMjU0Ny85NTEgMjg4OC8yNTQ4Lzk1MSAyODk5LzI1NTcvOTUxCmYgMjg5OS8yNTU3Lzk1MiAyODg4LzI1NDgvOTUyIDI4ODcvMjU0OS85NTIgMjg5OC8yNTU4Lzk1MgpmIDI4OTgvMjU1OC83MjggMjg4Ny8yNTQ5LzcyOCAyODg2LzI1NTAvNzI4IDI4OTcvMjU1OS83MjgKZiAyODk3LzI1NTkvOTUzIDI4ODYvMjU1MC85NTMgMjg4NS8yNTUxLzk1MyAyODk2LzI1NjAvOTUzCmYgMjg5Ni8yNTYwLzczMCAyODg1LzI1NTEvNzMwIDI4ODQvMjU1Mi83MzAgMjg5NS8yNTYxLzczMApmIDI4OTUvMjU2MS85NTQgMjg4NC8yNTUyLzk1NCAyODgyLzIwMDUvOTU0IDI4OTMvMjAwNy85NTQKZiAyOTA1LzIwODMvNzMyIDI4OTQvMjA4Mi83MzIgMjkwMy8yNTUzLzczMiAyOTE0LzI1NjIvNzMyCmYgMjkxNC8yNTYyLzk1NSAyOTAzLzI1NTMvOTU1IDI5MDIvMjU1NC85NTUgMjkxMy8yNTYzLzk1NQpmIDI5MTMvMjU2My85NTYgMjkwMi8yNTU0Lzk1NiAyOTAxLzI1NTUvOTU2IDI5MTIvMjU2NC85NTYKZiAyOTEyLzI1NjQvOTU3IDI5MDEvMjU1NS85NTcgMjkwMC8yNTU2Lzk1NyAyOTExLzI1NjUvOTU3CmYgMjkxMS8yNTY1LzczNiAyOTAwLzI1NTYvNzM2IDI4OTkvMjU1Ny83MzYgMjkxMC8yNTY2LzczNgpmIDI5MTAvMjU2Ni83MzcgMjg5OS8yNTU3LzczNyAyODk4LzI1NTgvNzM3IDI5MDkvMjU2Ny83MzcKZiAyOTA5LzI1NjcvNzM4IDI4OTgvMjU1OC83MzggMjg5Ny8yNTU5LzczOCAyOTA4LzI1NjgvNzM4CmYgMjkwOC8yNTY4LzczOSAyODk3LzI1NTkvNzM5IDI4OTYvMjU2MC83MzkgMjkwNy8yNTY5LzczOQpmIDI5MDcvMjU2OS85NTggMjg5Ni8yNTYwLzk1OCAyODk1LzI1NjEvOTU4IDI5MDYvMjU3MC85NTgKZiAyOTA2LzI1NzAvOTU5IDI4OTUvMjU2MS85NTkgMjg5My8yMDA3Lzk1OSAyOTA0LzIwMDkvOTU5CmYgMjkxNi8yMDg0Lzc0MiAyOTA1LzIwODMvNzQyIDI5MTQvMjU2Mi83NDIgMjkyNS8yNTcxLzc0MgpmIDI5MjUvMjU3MS83NDMgMjkxNC8yNTYyLzc0MyAyOTEzLzI1NjMvNzQzIDI5MjQvMjU3Mi83NDMKZiAyOTI0LzI1NzIvNzQ0IDI5MTMvMjU2My83NDQgMjkxMi8yNTY0Lzc0NCAyOTIzLzI1NzMvNzQ0CmYgMjkyMy8yNTczLzc0NSAyOTEyLzI1NjQvNzQ1IDI5MTEvMjU2NS83NDUgMjkyMi8yNTc0Lzc0NQpmIDI5MjIvMjU3NC85NjAgMjkxMS8yNTY1Lzk2MCAyOTEwLzI1NjYvOTYwIDI5MjEvMjU3NS85NjAKZiAyOTIxLzI1NzUvNzQ3IDI5MTAvMjU2Ni83NDcgMjkwOS8yNTY3Lzc0NyAyOTIwLzI1NzYvNzQ3CmYgMjkyMC8yNTc2Lzk2MSAyOTA5LzI1NjcvOTYxIDI5MDgvMjU2OC85NjEgMjkxOS8yNTc3Lzk2MQpmIDI5MTkvMjU3Ny85NjIgMjkwOC8yNTY4Lzk2MiAyOTA3LzI1NjkvOTYyIDI5MTgvMjU3OC85NjIKZiAyOTE4LzI1NzgvNzUwIDI5MDcvMjU2OS83NTAgMjkwNi8yNTcwLzc1MCAyOTE3LzI1NzkvNzUwCmYgMjkxNy8yNTc5Lzk2MyAyOTA2LzI1NzAvOTYzIDI5MDQvMjAwOS85NjMgMjkxNS8yMDExLzk2MwpmIDI5MjcvMjA4NS85NjQgMjkxNi8yMDg0Lzk2NCAyOTI1LzI1NzEvOTY0IDI5MzYvMjU4MC85NjQKZiAyOTM2LzI1ODAvOTY1IDI5MjUvMjU3MS85NjUgMjkyNC8yNTcyLzk2NSAyOTM1LzI1ODEvOTY1CmYgMjkzNS8yNTgxLzc1NCAyOTI0LzI1NzIvNzU0IDI5MjMvMjU3My83NTQgMjkzNC8yNTgyLzc1NApmIDI5MzQvMjU4Mi85NjYgMjkyMy8yNTczLzk2NiAyOTIyLzI1NzQvOTY2IDI5MzMvMjU4My85NjYKZiAyOTMzLzI1ODMvNzU2IDI5MjIvMjU3NC83NTYgMjkyMS8yNTc1Lzc1NiAyOTMyLzI1ODQvNzU2CmYgMjkzMi8yNTg0Lzk2NyAyOTIxLzI1NzUvOTY3IDI5MjAvMjU3Ni85NjcgMjkzMS8yNTg1Lzk2NwpmIDI5MzEvMjU4NS83NTggMjkyMC8yNTc2Lzc1OCAyOTE5LzI1NzcvNzU4IDI5MzAvMjU4Ni83NTgKZiAyOTMwLzI1ODYvNzU5IDI5MTkvMjU3Ny83NTkgMjkxOC8yNTc4Lzc1OSAyOTI5LzI1ODcvNzU5CmYgMjkyOS8yNTg3Lzc2MCAyOTE4LzI1NzgvNzYwIDI5MTcvMjU3OS83NjAgMjkyOC8yNTg4Lzc2MApmIDI5MjgvMjU4OC83NjEgMjkxNy8yNTc5Lzc2MSAyOTE1LzIwMTEvNzYxIDI5MjYvMjAxMy83NjEKZiAyOTM4LzIwODYvOTY4IDI5MjcvMjA4NS85NjggMjkzNi8yNTgwLzk2OCAyOTQ3LzI1ODkvOTY4CmYgMjk0Ny8yNTg5Lzk2OSAyOTM2LzI1ODAvOTY5IDI5MzUvMjU4MS85NjkgMjk0Ni8yNTkwLzk2OQpmIDI5NDYvMjU5MC85NzAgMjkzNS8yNTgxLzk3MCAyOTM0LzI1ODIvOTcwIDI5NDUvMjU5MS85NzAKZiAyOTQ1LzI1OTEvOTcxIDI5MzQvMjU4Mi85NzEgMjkzMy8yNTgzLzk3MSAyOTQ0LzI1OTIvOTcxCmYgMjk0NC8yNTkyLzk3MiAyOTMzLzI1ODMvOTcyIDI5MzIvMjU4NC85NzIgMjk0My8yNTkzLzk3MgpmIDI5NDMvMjU5My83NjcgMjkzMi8yNTg0Lzc2NyAyOTMxLzI1ODUvNzY3IDI5NDIvMjU5NC83NjcKZiAyOTQyLzI1OTQvNzY4IDI5MzEvMjU4NS83NjggMjkzMC8yNTg2Lzc2OCAyOTQxLzI1OTUvNzY4CmYgMjk0MS8yNTk1Lzc2OSAyOTMwLzI1ODYvNzY5IDI5MjkvMjU4Ny83NjkgMjk0MC8yNTk2Lzc2OQpmIDI5NDAvMjU5Ni83NzAgMjkyOS8yNTg3Lzc3MCAyOTI4LzI1ODgvNzcwIDI5MzkvMjU5Ny83NzAKZiAyOTM5LzI1OTcvNzcxIDI5MjgvMjU4OC83NzEgMjkyNi8yMDEzLzc3MSAyOTM3LzIwMTUvNzcxCmYgMjk0OS8yMDg3Lzk3MyAyOTM4LzIwODYvOTczIDI5NDcvMjU4OS85NzMgMjk1OC8yNTk4Lzk3MwpmIDI5NTgvMjU5OC85NzQgMjk0Ny8yNTg5Lzk3NCAyOTQ2LzI1OTAvOTc0IDI5NTcvMjU5OS85NzQKZiAyOTU3LzI1OTkvOTc1IDI5NDYvMjU5MC85NzUgMjk0NS8yNTkxLzk3NSAyOTU2LzI2MDAvOTc1CmYgMjk1Ni8yNjAwLzk3NiAyOTQ1LzI1OTEvOTc2IDI5NDQvMjU5Mi85NzYgMjk1NS8yNjAxLzk3NgpmIDI5NTUvMjYwMS85NzcgMjk0NC8yNTkyLzk3NyAyOTQzLzI1OTMvOTc3IDI5NTQvMjYwMi85NzcKZiAyOTU0LzI2MDIvNzc3IDI5NDMvMjU5My83NzcgMjk0Mi8yNTk0Lzc3NyAyOTUzLzI2MDMvNzc3CmYgMjk1My8yNjAzLzc3OCAyOTQyLzI1OTQvNzc4IDI5NDEvMjU5NS83NzggMjk1Mi8yNjA0Lzc3OApmIDI5NTIvMjYwNC83NzkgMjk0MS8yNTk1Lzc3OSAyOTQwLzI1OTYvNzc5IDI5NTEvMjYwNS83NzkKZiAyOTUxLzI2MDUvNzgwIDI5NDAvMjU5Ni83ODAgMjkzOS8yNTk3Lzc4MCAyOTUwLzI2MDYvNzgwCmYgMjk1MC8yNjA2Lzk3OCAyOTM5LzI1OTcvOTc4IDI5MzcvMjAxNS85NzggMjk0OC8yMDQ5Lzk3OApmIDI5NjAvMjA4OC85NzkgMjk0OS8yMDg3Lzk3OSAyOTU4LzI1OTgvOTc5IDI5NjkvMjYwNy85NzkKZiAyOTY5LzI2MDcvOTgwIDI5NTgvMjU5OC85ODAgMjk1Ny8yNTk5Lzk4MCAyOTY4LzI2MDgvOTgwCmYgMjk2OC8yNjA4Lzk4MSAyOTU3LzI1OTkvOTgxIDI5NTYvMjYwMC85ODEgMjk2Ny8yNjA5Lzk4MQpmIDI5NjcvMjYwOS85ODIgMjk1Ni8yNjAwLzk4MiAyOTU1LzI2MDEvOTgyIDI5NjYvMjYxMC85ODIKZiAyOTY2LzI2MTAvOTgzIDI5NTUvMjYwMS85ODMgMjk1NC8yNjAyLzk4MyAyOTY1LzI2MTEvOTgzCmYgMjk2NS8yNjExLzk4NCAyOTU0LzI2MDIvOTg0IDI5NTMvMjYwMy85ODQgMjk2NC8yNjEyLzk4NApmIDI5NjQvMjYxMi83ODggMjk1My8yNjAzLzc4OCAyOTUyLzI2MDQvNzg4IDI5NjMvMjYxMy83ODgKZiAyOTYzLzI2MTMvNzg5IDI5NTIvMjYwNC83ODkgMjk1MS8yNjA1Lzc4OSAyOTYyLzI2MTQvNzg5CmYgMjk2Mi8yNjE0Lzc5MCAyOTUxLzI2MDUvNzkwIDI5NTAvMjYwNi83OTAgMjk2MS8yNjE1Lzc5MApmIDI5NjEvMjYxNS85ODUgMjk1MC8yNjA2Lzk4NSAyOTQ4LzIwNDkvOTg1IDI5NTkvMjA1My85ODUKZiAyOTcxLzIwODkvOTg2IDI5NjAvMjA4OC85ODYgMjk2OS8yNjA3Lzk4NiAyOTgwLzI2MTYvOTg2CmYgMjk4MC8yNjE2Lzk4NyAyOTY5LzI2MDcvOTg3IDI5NjgvMjYwOC85ODcgMjk3OS8yNjE3Lzk4NwpmIDI5NzkvMjYxNy85ODggMjk2OC8yNjA4Lzk4OCAyOTY3LzI2MDkvOTg4IDI5NzgvMjYxOC85ODgKZiAyOTc4LzI2MTgvOTg5IDI5NjcvMjYwOS85ODkgMjk2Ni8yNjEwLzk4OSAyOTc3LzI2MTkvOTg5CmYgMjk3Ny8yNjE5Lzk5MCAyOTY2LzI2MTAvOTkwIDI5NjUvMjYxMS85OTAgMjk3Ni8yNjIwLzk5MApmIDI5NzYvMjYyMC85OTEgMjk2NS8yNjExLzk5MSAyOTY0LzI2MTIvOTkxIDI5NzUvMjYyMS85OTEKZiAyOTc1LzI2MjEvNzk4IDI5NjQvMjYxMi83OTggMjk2My8yNjEzLzc5OCAyOTc0LzI2MjIvNzk4CmYgMjk3NC8yNjIyLzc5OSAyOTYzLzI2MTMvNzk5IDI5NjIvMjYxNC83OTkgMjk3My8yNjIzLzc5OQpmIDI5NzMvMjYyMy85OTIgMjk2Mi8yNjE0Lzk5MiAyOTYxLzI2MTUvOTkyIDI5NzIvMjYyNC85OTIKZiAyOTcyLzI2MjQvOTkzIDI5NjEvMjYxNS85OTMgMjk1OS8yMDUzLzk5MyAyOTcwLzIwNTcvOTkzCmYgMjk4Mi8yMDkwLzk5NCAyOTcxLzIwODkvOTk0IDI5ODAvMjYxNi85OTQgMjk5MS8yNjI1Lzk5NApmIDI5OTEvMjYyNS85OTUgMjk4MC8yNjE2Lzk5NSAyOTc5LzI2MTcvOTk1IDI5OTAvMjYyNi85OTUKZiAyOTkwLzI2MjYvOTk2IDI5NzkvMjYxNy85OTYgMjk3OC8yNjE4Lzk5NiAyOTg5LzI2MjcvOTk2CmYgMjk4OS8yNjI3LzgwNSAyOTc4LzI2MTgvODA1IDI5NzcvMjYxOS84MDUgMjk4OC8yNjI4LzgwNQpmIDI5ODgvMjYyOC85OTcgMjk3Ny8yNjE5Lzk5NyAyOTc2LzI2MjAvOTk3IDI5ODcvMjYyOS85OTcKZiAyOTg3LzI2MjkvOTk4IDI5NzYvMjYyMC85OTggMjk3NS8yNjIxLzk5OCAyOTg2LzI2MzAvOTk4CmYgMjk4Ni8yNjMwLzgwOCAyOTc1LzI2MjEvODA4IDI5NzQvMjYyMi84MDggMjk4NS8yNjMxLzgwOApmIDI5ODUvMjYzMS84MDkgMjk3NC8yNjIyLzgwOSAyOTczLzI2MjMvODA5IDI5ODQvMjYzMi84MDkKZiAyOTg0LzI2MzIvOTk5IDI5NzMvMjYyMy85OTkgMjk3Mi8yNjI0Lzk5OSAyOTgzLzI2MzMvOTk5CmYgMjk4My8yNjMzLzEwMDAgMjk3Mi8yNjI0LzEwMDAgMjk3MC8yMDU3LzEwMDAgMjk4MS8yMDU5LzEwMDAKZiAyOTkzLzIwOTEvMTAwMSAyOTgyLzIwOTAvMTAwMSAyOTkxLzI2MjUvMTAwMSAzMDAyLzI2MzQvMTAwMQpmIDMwMDIvMjYzNC84MTMgMjk5MS8yNjI1LzgxMyAyOTkwLzI2MjYvODEzIDMwMDEvMjYzNS84MTMKZiAzMDAxLzI2MzUvODE0IDI5OTAvMjYyNi84MTQgMjk4OS8yNjI3LzgxNCAzMDAwLzI2MzYvODE0CmYgMzAwMC8yNjM2LzEwMDIgMjk4OS8yNjI3LzEwMDIgMjk4OC8yNjI4LzEwMDIgMjk5OS8yNjM3LzEwMDIKZiAyOTk5LzI2MzcvODE2IDI5ODgvMjYyOC84MTYgMjk4Ny8yNjI5LzgxNiAyOTk4LzI2MzgvODE2CmYgMjk5OC8yNjM4LzgxNyAyOTg3LzI2MjkvODE3IDI5ODYvMjYzMC84MTcgMjk5Ny8yNjM5LzgxNwpmIDI5OTcvMjYzOS84MTggMjk4Ni8yNjMwLzgxOCAyOTg1LzI2MzEvODE4IDI5OTYvMjY0MC84MTgKZiAyOTk2LzI2NDAvODE5IDI5ODUvMjYzMS84MTkgMjk4NC8yNjMyLzgxOSAyOTk1LzI2NDEvODE5CmYgMjk5NS8yNjQxLzEwMDMgMjk4NC8yNjMyLzEwMDMgMjk4My8yNjMzLzEwMDMgMjk5NC8yNjQyLzEwMDMKZiAyOTk0LzI2NDIvODIxIDI5ODMvMjYzMy84MjEgMjk4MS8yMDU5LzgyMSAyOTkyLzIwNjIvODIxCmYgMzAwNC8yMDkyLzgyMiAyOTkzLzIwOTEvODIyIDMwMDIvMjYzNC84MjIgMzAxMy8yNjQzLzgyMgpmIDMwMTMvMjY0My8xMDA0IDMwMDIvMjYzNC8xMDA0IDMwMDEvMjYzNS8xMDA0IDMwMTIvMjY0NC8xMDA0CmYgMzAxMi8yNjQ0LzgyNCAzMDAxLzI2MzUvODI0IDMwMDAvMjYzNi84MjQgMzAxMS8yNjQ1LzgyNApmIDMwMTEvMjY0NS84MjUgMzAwMC8yNjM2LzgyNSAyOTk5LzI2MzcvODI1IDMwMTAvMjY0Ni84MjUKZiAzMDEwLzI2NDYvODI2IDI5OTkvMjYzNy84MjYgMjk5OC8yNjM4LzgyNiAzMDA5LzI2NDcvODI2CmYgMzAwOS8yNjQ3LzgyNyAyOTk4LzI2MzgvODI3IDI5OTcvMjYzOS84MjcgMzAwOC8yNjQ4LzgyNwpmIDMwMDgvMjY0OC84MjggMjk5Ny8yNjM5LzgyOCAyOTk2LzI2NDAvODI4IDMwMDcvMjY0OS84MjgKZiAzMDA3LzI2NDkvODI5IDI5OTYvMjY0MC84MjkgMjk5NS8yNjQxLzgyOSAzMDA2LzI2NTAvODI5CmYgMzAwNi8yNjUwLzgzMCAyOTk1LzI2NDEvODMwIDI5OTQvMjY0Mi84MzAgMzAwNS8yNjUxLzgzMApmIDMwMDUvMjY1MS8xMDA1IDI5OTQvMjY0Mi8xMDA1IDI5OTIvMjA2Mi8xMDA1IDMwMDMvMjA2NC8xMDA1CmYgMzAxNS8yMDkzLzEwMDYgMzAwNC8yMDkyLzEwMDYgMzAxMy8yNjQzLzEwMDYgMzAyNC8yNjUyLzEwMDYKZiAzMDI0LzI2NTIvMTAwNyAzMDEzLzI2NDMvMTAwNyAzMDEyLzI2NDQvMTAwNyAzMDIzLzI2NTMvMTAwNwpmIDMwMjMvMjY1My84MzQgMzAxMi8yNjQ0LzgzNCAzMDExLzI2NDUvODM0IDMwMjIvMjY1NC84MzQKZiAzMDIyLzI2NTQvODM1IDMwMTEvMjY0NS84MzUgMzAxMC8yNjQ2LzgzNSAzMDIxLzI2NTUvODM1CmYgMzAyMS8yNjU1LzgzNiAzMDEwLzI2NDYvODM2IDMwMDkvMjY0Ny84MzYgMzAyMC8yNjU2LzgzNgpmIDMwMjAvMjY1Ni8xMDA4IDMwMDkvMjY0Ny8xMDA4IDMwMDgvMjY0OC8xMDA4IDMwMTkvMjY1Ny8xMDA4CmYgMzAxOS8yNjU3LzEwMDkgMzAwOC8yNjQ4LzEwMDkgMzAwNy8yNjQ5LzEwMDkgMzAxOC8yNjU4LzEwMDkKZiAzMDE4LzI2NTgvODM5IDMwMDcvMjY0OS84MzkgMzAwNi8yNjUwLzgzOSAzMDE3LzI2NTkvODM5CmYgMzAxNy8yNjU5Lzg0MCAzMDA2LzI2NTAvODQwIDMwMDUvMjY1MS84NDAgMzAxNi8yNjYwLzg0MApmIDMwMTYvMjY2MC84NDEgMzAwNS8yNjUxLzg0MSAzMDAzLzIwNjQvODQxIDMwMTQvMjA5OC84NDEKZiAzMDI2LzIwOTQvODQyIDMwMTUvMjA5My84NDIgMzAyNC8yNjUyLzg0MiAzMDM1LzI2NjEvODQyCmYgMzAzNS8yNjYxLzEwMTAgMzAyNC8yNjUyLzEwMTAgMzAyMy8yNjUzLzEwMTAgMzAzNC8yNjYyLzEwMTAKZiAzMDM0LzI2NjIvMTAxMSAzMDIzLzI2NTMvMTAxMSAzMDIyLzI2NTQvMTAxMSAzMDMzLzI2NjMvMTAxMQpmIDMwMzMvMjY2My8xMDEyIDMwMjIvMjY1NC8xMDEyIDMwMjEvMjY1NS8xMDEyIDMwMzIvMjY2NC8xMDEyCmYgMzAzMi8yNjY0Lzg0NiAzMDIxLzI2NTUvODQ2IDMwMjAvMjY1Ni84NDYgMzAzMS8yNjY1Lzg0NgpmIDMwMzEvMjY2NS84NDcgMzAyMC8yNjU2Lzg0NyAzMDE5LzI2NTcvODQ3IDMwMzAvMjY2Ni84NDcKZiAzMDMwLzI2NjYvODQ4IDMwMTkvMjY1Ny84NDggMzAxOC8yNjU4Lzg0OCAzMDI5LzI2NjcvODQ4CmYgMzAyOS8yNjY3Lzg0OSAzMDE4LzI2NTgvODQ5IDMwMTcvMjY1OS84NDkgMzAyOC8yNjY4Lzg0OQpmIDMwMjgvMjY2OC8xMDEzIDMwMTcvMjY1OS8xMDEzIDMwMTYvMjY2MC8xMDEzIDMwMjcvMjY2OS8xMDEzCmYgMzAyNy8yNjY5Lzg1MSAzMDE2LzI2NjAvODUxIDMwMTQvMjA5OC84NTEgMzAyNS8yMTAxLzg1MQpmIDMwMzcvMjA5NS8xMDE0IDMwMjYvMjA5NC8xMDE0IDMwMzUvMjY2MS8xMDE0IDMwNDYvMjY3MC8xMDE0CmYgMzA0Ni8yNjcwLzg1MyAzMDM1LzI2NjEvODUzIDMwMzQvMjY2Mi84NTMgMzA0NS8yNjcxLzg1MwpmIDMwNDUvMjY3MS84NTQgMzAzNC8yNjYyLzg1NCAzMDMzLzI2NjMvODU0IDMwNDQvMjY3Mi84NTQKZiAzMDQ0LzI2NzIvMTAxNSAzMDMzLzI2NjMvMTAxNSAzMDMyLzI2NjQvMTAxNSAzMDQzLzI2NzMvMTAxNQpmIDMwNDMvMjY3My8xMDE2IDMwMzIvMjY2NC8xMDE2IDMwMzEvMjY2NS8xMDE2IDMwNDIvMjY3NC8xMDE2CmYgMzA0Mi8yNjc0LzEwMTcgMzAzMS8yNjY1LzEwMTcgMzAzMC8yNjY2LzEwMTcgMzA0MS8yNjc1LzEwMTcKZiAzMDQxLzI2NzUvMTAxOCAzMDMwLzI2NjYvMTAxOCAzMDI5LzI2NjcvMTAxOCAzMDQwLzI2NzYvMTAxOApmIDMwNDAvMjY3Ni84NTkgMzAyOS8yNjY3Lzg1OSAzMDI4LzI2NjgvODU5IDMwMzkvMjY3Ny84NTkKZiAzMDM5LzI2NzcvMTAxOSAzMDI4LzI2NjgvMTAxOSAzMDI3LzI2NjkvMTAxOSAzMDM4LzI2NzgvMTAxOQpmIDMwMzgvMjY3OC84NjEgMzAyNy8yNjY5Lzg2MSAzMDI1LzIxMDEvODYxIDMwMzYvMjA5OS84NjEKZiAyNzA2LzIwOTYvODYyIDMwMzcvMjA5NS84NjIgMzA0Ni8yNjcwLzg2MiAyNzA4LzIzOTEvODYyCmYgMjcwOC8yMzkxLzg2MyAzMDQ2LzI2NzAvODYzIDMwNDUvMjY3MS84NjMgMjcwOS8yMzkzLzg2MwpmIDI3MDkvMjM5My84NjQgMzA0NS8yNjcxLzg2NCAzMDQ0LzI2NzIvODY0IDI3MTAvMjM5NS84NjQKZiAyNzEwLzIzOTUvODY1IDMwNDQvMjY3Mi84NjUgMzA0My8yNjczLzg2NSAyNzExLzIzOTcvODY1CmYgMjcxMS8yMzk3LzEwMjAgMzA0My8yNjczLzEwMjAgMzA0Mi8yNjc0LzEwMjAgMjcxMi8yMzk5LzEwMjAKZiAyNzEyLzIzOTkvMTAyMSAzMDQyLzI2NzQvMTAyMSAzMDQxLzI2NzUvMTAyMSAyNzEzLzI0MDEvMTAyMQpmIDI3MTMvMjQwMS84NjggMzA0MS8yNjc1Lzg2OCAzMDQwLzI2NzYvODY4IDI3MTQvMjQwMy84NjgKZiAyNzE0LzI0MDMvODY5IDMwNDAvMjY3Ni84NjkgMzAzOS8yNjc3Lzg2OSAyNzE1LzI0MDUvODY5CmYgMjcxNS8yNDA1Lzg3MCAzMDM5LzI2NzcvODcwIDMwMzgvMjY3OC84NzAgMjcxNi8yNDA3Lzg3MApmIDI3MTYvMjQwNy84NzEgMzAzOC8yNjc4Lzg3MSAzMDM2LzIwOTkvODcxIDI3MDcvMjA2MC84NzEKZiA2Ny8xMzE2LzU1MCA2OC8xMzE1LzU1MCAyMzQzLzE5NzgvNTUwIDIzNTUvMjA1MS81NTAKcyAxCmYgNTAvMjY3OS8xMDIyIDMwOTMvMjY4MC8xMDIzIDMwOTEvMjY4MS8xMDI0IDQ4LzI2ODIvMTAyNQpmIDQ2LzI2ODMvMTAyNiAzMDk0LzI2ODQvMTAyNyAzMDkzLzI2ODAvMTAyMyA1MC8yNjc5LzEwMjIKZiA0My8yNjg1LzEwMjggMzA3OS8yNjg2LzEwMjkgMzA3Ny8xNDgxLzEyMSA0Mi8xNDgwLzEyMApmIDM2LzI2ODcvMTAzMCAzMDg4LzI2ODgvMTAzMSAzMDg3LzI2ODkvMTAzMiAzMS8yNjkwLzEwMzMKZiA0LzI2OTEvMTAzNCAzMDY5LzI2OTIvMTAzNSAzMDcwLzI2OTMvMTAzNiA2Ni8yNjk0LzEwMzcKZiAzMi8yNjk1LzEwMzggMzA4Ni8yNjk2LzEwMzkgMzA4NS8yNjk3LzEwNDAgMjYvMjY5OC8xMDQxCmYgMS8yNjk5LzEwNDIgMzExMi8yNzAwLzEwNDMgMzEwNS8yNzAxLzEwNDQgNjEvMjcwMi8xMDQ1CmYgNi8yNzAzLzEwNDYgMzA2Ny8yNzA0LzEwNDcgMzA2OS8yNjkyLzEwMzUgNC8yNjkxLzEwMzQKZiAxOS8yNzA1LzEwNDggMzA2NS8yNzA2LzEwNDkgMzA2Ni8yNzA3LzEwNTAgMjAvMjcwOC8xMDUxCmYgMjAvMjcwOC8xMDUxIDMwNjYvMjcwNy8xMDUwIDMwNjgvMjcwOS8xMDUyIDMwNjcvMjcxMC8xMDQ3IDYvMjcxMS8xMDQ2CmYgMjEvMjcxMi8xMDUzIDMwNjEvMjcxMy8xMDU0IDMwNjIvMjcxNC8xMDU1IDE4LzI3MTUvMTA1NgpmIDY2LzI2OTQvMTAzNyAzMDcwLzI2OTMvMTAzNiAzMDcxLzI3MTYvMTA1NyA2NS8yNzE3LzEwNTgKZiAyNy8yNzE4LzEwNTkgMzA3My8yNzE5LzEwNjAgMzA3NC8xNjI2LzIyMCAyOC8xNjI1LzIxOQpmIDY1LzI3MTcvMTA1OCAzMDcxLzI3MTYvMTA1NyAzMDg0LzI3MjAvMTA2MSA0NS8yNzIxLzEwNjIKZiA3LzE0NDgvMTE2IDMxMTMvMTQ0Ny8xMTUgMzExMi8yNzAwLzEwNDMgMS8yNjk5LzEwNDIKZiAyNS8xNjE3LzIxMyAzMDU5LzE2MTYvMjEyIDMwNjEvMjcxMy8xMDU0IDIxLzI3MTIvMTA1MyAxMS8yNzIyLzEwNjMKZiA0OS8yNzIzLzEwNjQgMzA5MC8yNzI0LzEwNjUgMzA4OS8yNzI1LzEwNjYgNDcvMjcyNi8xMDY3CmYgNDcvMjcyNi8xMDY3IDMwODkvMjcyNS8xMDY2IDMwODgvMjY4OC8xMDMxIDM2LzI2ODcvMTAzMApmIDQ1LzI3MjEvMTA2MiAzMDg0LzI3MjAvMTA2MSAzMDgxLzI3MjcvMTA2OCA0NC8yNzI4LzEwNjkKZiA0NC8yNzI4LzEwNjkgMzA4MS8yNzI3LzEwNjggMzA3OS8yNjg2LzEwMjkgNDMvMjY4NS8xMDI4CmYgMTgvMjcxNS8xMDU2IDMwNjIvMjcxNC8xMDU1IDMwNjMvMjcyOS8xMDcwIDIyLzI3MzAvMTA3MQpmIDMxLzI2OTAvMTAzMyAzMDg3LzI2ODkvMTAzMiAzMDg2LzI2OTYvMTAzOSAzMi8yNjk1LzEwMzgKZiAyNi8yNjk4LzEwNDEgMzA4NS8yNjk3LzEwNDAgMzA3My8yNzE5LzEwNjAgMjcvMjcxOC8xMDU5CmYgMjIvMjczMC8xMDcxIDMwNjMvMjcyOS8xMDcwIDMwNjQvMjczMS8xMDcyIDE3LzI3MzIvMTA3MwpmIDYxLzI3MDIvMTA0NSAzMTA1LzI3MDEvMTA0NCAzMTA2LzI3MzMvMTA3NCA2MC8yNzM0LzEwNzUKZiA2MC8yNzM0LzEwNzUgMzEwNi8yNzMzLzEwNzQgMzA5NC8yNjg0LzEwMjcgNDYvMjY4My8xMDI2IDUxLzI3MzUvMTA3NgpmIDE3LzI3MzIvMTA3MyAzMDY0LzI3MzEvMTA3MiAzMDY1LzI3MDYvMTA0OSAxOS8yNzA1LzEwNDgKZiA0OC8yNjgyLzEwMjUgMzA5MS8yNjgxLzEwMjQgMzA5Mi8yNzM2LzEwNzcgMzA5MC8yNzM3LzEwNjUgNDkvMjczOC8xMDY0CmYgMTEyNS8yNzM5LzEwNzggNTM1LzI3NDAvMTA3OSA1NDcvMjc0MS8xMDgwIDExMjYvMjc0Mi8xMDgxCmYgMTEwNS8xNTY0LzEzNiA3NjMvMjc0My8xMDgyIDc3NS8yNzQ0LzEwODMgMTEwNy8xNTk0LzE2OQpmIDExMzUvMjc0NS8xMDg0IDY0NC8yNzQ2LzEwODUgODcxLzI3NDcvMTA4NiAxMTM2LzI3NDgvMTA4NwpmIDEwOTUvMTU2MC8xMzIgNjQzLzI3NDkvMTA4OCA2NTUvMjc1MC8xMDg5IDEwOTcvMTU5Mi8xNjUKZiAxMTIzLzI3NTEvMTA5MCA4ODQvMjc1Mi8xMDkxIDUyMy8yNzUzLzEwOTIgMTEyNC8yNzU0LzEwOTMKZiAxMTI2LzI3NDIvMTA4MSA1NDcvMjc0MS8xMDgwIDU1OS8yNzU1LzEwOTQgMTEyNy8yNzU2LzEwOTUKZiAxMTI3LzI3NTYvMTA5NSA1NTkvMjc1NS8xMDk0IDU3MS8yNzU3LzEwOTYgMTEyOC8yNzU4LzEwOTcKZiAxMTI4LzI3NTgvMTA5NyA1NzEvMjc1Ny8xMDk2IDU4My8yNzU5LzEwOTggMTEyOS8yNzYwLzEwOTkKZiAxMTI5LzI3NjEvMTA5OSA1ODMvMjc2Mi8xMDk4IDU5NS8yNzYzLzExMDAgMTEzMC8yNzY0LzExMDEKZiAxMTMwLzI3NjQvMTEwMSA1OTUvMjc2My8xMTAwIDYwNy8yNzY1LzExMDIgMTEzMS8yNzY2LzExMDMKZiAxMTMxLzI3NjYvMTEwMyA2MDcvMjc2NS8xMTAyIDYxOS8yNzY3LzExMDQgMTEzMi8yNzY4LzExMDUKZiAxMTMyLzI3NjgvMTEwNSA2MTkvMjc2Ny8xMTA0IDYzMi8yNzY5LzExMDYgMTEzMy8yNzcwLzExMDcKZiAxMTMzLzI3NzAvMTEwNyA2MzIvMjc2OS8xMTA2IDc1MS8yNzcxLzExMDggMTEzNC8yNzcyLzExMDkKZiAxMDk4LzE1OTMvMTY2IDY2Ny8yNzczLzExMTAgNjc5LzI3NzQvMTExMSAxMDk5LzE2MTUvMjExCmYgMTA5OS8xNjE1LzIxMSA2NzkvMjc3NC8xMTExIDY5MS8yNzc1LzExMTIgMTEwMC8xNjE0LzIwOQpmIDExMDAvMTYxNC8yMDkgNjkxLzI3NzUvMTExMiA3MDMvMjc3Ni8xMTEzIDExMDEvMTYxMy8yMDcKZiAxMTAxLzE2MTMvMjA3IDcwMy8yNzc2LzExMTMgNzE1LzI3NzcvMTExNCAxMTAyLzE2MTIvMjA1CmYgMTEwMi8xNjEyLzIwNSA3MTUvMjc3Ny8xMTE0IDcyNy8yNzc4LzExMTUgMTEwMy8xNjExLzIwMwpmIDExMDMvMTYxMS8yMDMgNzI3LzI3NzgvMTExNSA3MzkvMjc3OS8xMTE2IDExMDQvMTYxMC8yMDEKZiAxMTA0LzE2MTAvMjAxIDczOS8yNzc5LzExMTYgNzUyLzI3ODAvMTExNyAxMDk0LzE1OTEvMTYzCmYgMTE0NS8yNzgxLzExMTggNzY0LzI3ODIvMTExOSA5OTEvMjc4My8xMTIwIDExNDYvMjc4NC8xMTIxCmYgMTEwOC8xNTk1LzE3MCA3ODcvMjc4NS8xMTIyIDc5OS8yNzg2LzExMjMgMTEwOS8xNjA5LzE5OQpmIDExMDkvMTYwOS8xOTkgNzk5LzI3ODYvMTEyMyA4MTEvMjc4Ny8xMTI0IDExMTAvMTYwOC8xOTcKZiAxMTEwLzE2MDgvMTk3IDgxMS8yNzg3LzExMjQgODIzLzI3ODgvMTEyNSAxMTExLzE2MDcvMTk1CmYgMTExMS8xNjA3LzE5NSA4MjMvMjc4OC8xMTI1IDgzNS8yNzg5LzExMjYgMTExMi8xNjA2LzE5MwpmIDExMTIvMTYwNi8xOTMgODM1LzI3ODkvMTEyNiA4NDcvMjc5MC8xMTI3IDExMTMvMTYwNS8xOTEKZiAxMTEzLzE2MDUvMTkxIDg0Ny8yNzkwLzExMjcgODU5LzI3OTEvMTEyOCAxMTE0LzE2MDQvMTg5CmYgMTExNC8xNjA0LzE4OSA4NTkvMjc5MS8xMTI4IDg3Mi8yNzkyLzExMjkgMTA5Ni8xNTYzLzEzNQpmIDEwODUvMTU4Ni8xNTggODgzLzI3OTMvMTEzMCA4OTUvMjc5NC8xMTMxIDExMTUvMTU5Ni8xNzMKZiAxMTE2LzE1OTcvMTc0IDkwNy8yNzk1LzExMzIgOTE5LzI3OTYvMTEzMyAxMTE3LzE2MDMvMTg3CmYgMTExNy8xNjAzLzE4NyA5MTkvMjc5Ni8xMTMzIDkzMS8yNzk3LzExMzQgMTExOC8xNjAyLzE4NQpmIDExMTgvMTYwMi8xODUgOTMxLzI3OTcvMTEzNCA5NDMvMjc5OC8xMTM1IDExMTkvMTYwMS8xODMKZiAxMTE5LzE2MDEvMTgzIDk0My8yNzk4LzExMzUgOTU1LzI3OTkvMTEzNiAxMTIwLzE2MDAvMTgxCmYgMTEyMC8xNjAwLzE4MSA5NTUvMjc5OS8xMTM2IDk2Ny8yODAwLzExMzcgMTEyMS8xNTk5LzE3OQpmIDExMjEvMTU5OS8xNzkgOTY3LzI4MDAvMTEzNyA5NzkvMjgwMS8xMTM4IDExMjIvMTU5OC8xNzcKZiAxMTIyLzE1OTgvMTc3IDk3OS8yODAxLzExMzggOTkyLzI4MDIvMTEzOSAxMTA2LzE1NjUvMTM5CmYgMTExNS8xNTk2LzE3MyA4OTUvMjc5NC8xMTMxIDkwNy8yNzk1LzExMzIgMTExNi8xNTk3LzE3NApmIDExMDcvMTU5NC8xNjkgNzc1LzI3NDQvMTA4MyA3ODcvMjc4NS8xMTIyIDExMDgvMTU5NS8xNzAKZiAxMDk3LzE1OTIvMTY1IDY1NS8yNzUwLzEwODkgNjY3LzI3NzMvMTExMCAxMDk4LzE1OTMvMTY2CmYgMTEyNC8yNzU0LzEwOTMgNTIzLzI3NTMvMTA5MiA1MzUvMjc0MC8xMDc5IDExMjUvMjczOS8xMDc4CmYgOTgwLzI4MDMvMTE0MCA5OTEvMjc4My8xMTIwIDk5My8yODA0LzExNDEgOTkwLzI4MDUvMTE0MgpmIDk5MC8yODA1LzExNDIgOTkzLzI4MDQvMTE0MSA5OTQvMjgwNi8xMTQzIDk4OS8yODA3LzExNDQKZiA5ODkvMjgwNy8xMTQ0IDk5NC8yODA2LzExNDMgOTk1LzI4MDgvMTE0NSA5ODgvMjgwOS8xMTQ2CmYgOTg4LzI4MDkvMTE0NiA5OTUvMjgwOC8xMTQ1IDk5Ni8yODEwLzExNDcgOTg3LzI4MTEvMTE0OApmIDk4Ny8yODExLzExNDggOTk2LzI4MTAvMTE0NyA5OTcvMjgxMi8xMTQ5IDk4Ni8yODEzLzExNTAKZiA5ODYvMjgxMy8xMTUwIDk5Ny8yODEyLzExNDkgOTk4LzI4MTQvMTE1MSA5ODUvMjgxNS8xMTUyCmYgOTg1LzI4MTUvMTE1MiA5OTgvMjgxNC8xMTUxIDk5OS8yODE2LzExNTMgOTg0LzI4MTcvMTE1NApmIDk4NC8yODE3LzExNTQgOTk5LzI4MTYvMTE1MyAxMDAwLzI4MTgvMTE1NSA5ODMvMjgxOS8xMTU2CmYgOTgzLzI4MTkvMTE1NiAxMDAwLzI4MTgvMTE1NSAxMDAxLzI4MjAvMTE1NyA5ODIvMjgyMS8xMTU4CmYgOTgyLzI4MjEvMTE1OCAxMDAxLzI4MjAvMTE1NyAxMDAyLzI4MjIvMTE1OSA5ODEvMjgyMy8xMTYwCmYgOTgxLzI4MjMvMTE2MCAxMDAyLzI4MjIvMTE1OSA5OTIvMjgwMi8xMTM5IDk3OS8yODAxLzExMzgKZiA5NjgvMjgyNC8xMTYxIDk4MC8yODAzLzExNDAgOTkwLzI4MDUvMTE0MiA5NzgvMjgyNS8xMTYyCmYgOTc4LzI4MjUvMTE2MiA5OTAvMjgwNS8xMTQyIDk4OS8yODA3LzExNDQgOTc3LzI4MjYvMTE2MwpmIDk3Ny8yODI2LzExNjMgOTg5LzI4MDcvMTE0NCA5ODgvMjgwOS8xMTQ2IDk3Ni8yODI3LzExNjQKZiA5NzYvMjgyNy8xMTY0IDk4OC8yODA5LzExNDYgOTg3LzI4MTEvMTE0OCA5NzUvMjgyOC8xMTY1CmYgOTc1LzI4MjgvMTE2NSA5ODcvMjgxMS8xMTQ4IDk4Ni8yODEzLzExNTAgOTc0LzI4MjkvMTE2NgpmIDk3NC8yODI5LzExNjYgOTg2LzI4MTMvMTE1MCA5ODUvMjgxNS8xMTUyIDk3My8yODMwLzExNjcKZiA5NzMvMjgzMC8xMTY3IDk4NS8yODE1LzExNTIgOTg0LzI4MTcvMTE1NCA5NzIvMjgzMS8xMTY4CmYgOTcyLzI4MzEvMTE2OCA5ODQvMjgxNy8xMTU0IDk4My8yODE5LzExNTYgOTcxLzI4MzIvMTE2OQpmIDk3MS8yODMyLzExNjkgOTgzLzI4MTkvMTE1NiA5ODIvMjgyMS8xMTU4IDk3MC8yODMzLzExNzAKZiA5NzAvMjgzMy8xMTcwIDk4Mi8yODIxLzExNTggOTgxLzI4MjMvMTE2MCA5NjkvMjgzNC8xMTcxCmYgOTY5LzI4MzQvMTE3MSA5ODEvMjgyMy8xMTYwIDk3OS8yODAxLzExMzggOTY3LzI4MDAvMTEzNwpmIDk1Ni8yODM1LzExNzIgOTY4LzI4MjQvMTE2MSA5NzgvMjgyNS8xMTYyIDk2Ni8yODM2LzExNzMKZiA5NjYvMjgzNi8xMTczIDk3OC8yODI1LzExNjIgOTc3LzI4MjYvMTE2MyA5NjUvMjgzNy8xMTc0CmYgOTY1LzI4MzcvMTE3NCA5NzcvMjgyNi8xMTYzIDk3Ni8yODI3LzExNjQgOTY0LzI4MzgvMTE3NQpmIDk2NC8yODM4LzExNzUgOTc2LzI4MjcvMTE2NCA5NzUvMjgyOC8xMTY1IDk2My8yODM5LzExNzYKZiA5NjMvMjgzOS8xMTc2IDk3NS8yODI4LzExNjUgOTc0LzI4MjkvMTE2NiA5NjIvMjg0MC8xMTc3CmYgOTYyLzI4NDAvMTE3NyA5NzQvMjgyOS8xMTY2IDk3My8yODMwLzExNjcgOTYxLzI4NDEvMTE3OApmIDk2MS8yODQxLzExNzggOTczLzI4MzAvMTE2NyA5NzIvMjgzMS8xMTY4IDk2MC8yODQyLzExNzkKZiA5NjAvMjg0Mi8xMTc5IDk3Mi8yODMxLzExNjggOTcxLzI4MzIvMTE2OSA5NTkvMjg0My8xMTgwCmYgOTU5LzI4NDMvMTE4MCA5NzEvMjgzMi8xMTY5IDk3MC8yODMzLzExNzAgOTU4LzI4NDQvMTE4MQpmIDk1OC8yODQ0LzExODEgOTcwLzI4MzMvMTE3MCA5NjkvMjgzNC8xMTcxIDk1Ny8yODQ1LzExODIKZiA5NTcvMjg0NS8xMTgyIDk2OS8yODM0LzExNzEgOTY3LzI4MDAvMTEzNyA5NTUvMjc5OS8xMTM2CmYgOTQ0LzI4NDYvMTE4MyA5NTYvMjgzNS8xMTcyIDk2Ni8yODM2LzExNzMgOTU0LzI4NDcvMTE4NApmIDk1NC8yODQ3LzExODQgOTY2LzI4MzYvMTE3MyA5NjUvMjgzNy8xMTc0IDk1My8yODQ4LzExODUKZiA5NTMvMjg0OC8xMTg1IDk2NS8yODM3LzExNzQgOTY0LzI4MzgvMTE3NSA5NTIvMjg0OS8xMTg2CmYgOTUyLzI4NDkvMTE4NiA5NjQvMjgzOC8xMTc1IDk2My8yODM5LzExNzYgOTUxLzI4NTAvMTE4NwpmIDk1MS8yODUwLzExODcgOTYzLzI4MzkvMTE3NiA5NjIvMjg0MC8xMTc3IDk1MC8yODUxLzExODgKZiA5NTAvMjg1MS8xMTg4IDk2Mi8yODQwLzExNzcgOTYxLzI4NDEvMTE3OCA5NDkvMjg1Mi8xMTg5CmYgOTQ5LzI4NTIvMTE4OSA5NjEvMjg0MS8xMTc4IDk2MC8yODQyLzExNzkgOTQ4LzI4NTMvMTE5MApmIDk0OC8yODUzLzExOTAgOTYwLzI4NDIvMTE3OSA5NTkvMjg0My8xMTgwIDk0Ny8yODU0LzExOTEKZiA5NDcvMjg1NC8xMTkxIDk1OS8yODQzLzExODAgOTU4LzI4NDQvMTE4MSA5NDYvMjg1NS8xMTkyCmYgOTQ2LzI4NTUvMTE5MiA5NTgvMjg0NC8xMTgxIDk1Ny8yODQ1LzExODIgOTQ1LzI4NTYvMTE5MwpmIDk0NS8yODU2LzExOTMgOTU3LzI4NDUvMTE4MiA5NTUvMjc5OS8xMTM2IDk0My8yNzk4LzExMzUKZiA5MzIvMjg1Ny8xMTk0IDk0NC8yODQ2LzExODMgOTU0LzI4NDcvMTE4NCA5NDIvMjg1OC8xMTk1CmYgOTQyLzI4NTgvMTE5NSA5NTQvMjg0Ny8xMTg0IDk1My8yODQ4LzExODUgOTQxLzI4NTkvMTE5NgpmIDk0MS8yODU5LzExOTYgOTUzLzI4NDgvMTE4NSA5NTIvMjg0OS8xMTg2IDk0MC8yODYwLzExOTcKZiA5NDAvMjg2MC8xMTk3IDk1Mi8yODQ5LzExODYgOTUxLzI4NTAvMTE4NyA5MzkvMjg2MS8xMTk4CmYgOTM5LzI4NjEvMTE5OCA5NTEvMjg1MC8xMTg3IDk1MC8yODUxLzExODggOTM4LzI4NjIvMTE5OQpmIDkzOC8yODYyLzExOTkgOTUwLzI4NTEvMTE4OCA5NDkvMjg1Mi8xMTg5IDkzNy8yODYzLzEyMDAKZiA5MzcvMjg2My8xMjAwIDk0OS8yODUyLzExODkgOTQ4LzI4NTMvMTE5MCA5MzYvMjg2NC8xMjAxCmYgOTM2LzI4NjQvMTIwMSA5NDgvMjg1My8xMTkwIDk0Ny8yODU0LzExOTEgOTM1LzI4NjUvMTIwMgpmIDkzNS8yODY1LzEyMDIgOTQ3LzI4NTQvMTE5MSA5NDYvMjg1NS8xMTkyIDkzNC8yODY2LzEyMDMKZiA5MzQvMjg2Ni8xMjAzIDk0Ni8yODU1LzExOTIgOTQ1LzI4NTYvMTE5MyA5MzMvMjg2Ny8xMjA0CmYgOTMzLzI4NjcvMTIwNCA5NDUvMjg1Ni8xMTkzIDk0My8yNzk4LzExMzUgOTMxLzI3OTcvMTEzNApmIDkyMC8yODY4LzEyMDUgOTMyLzI4NTcvMTE5NCA5NDIvMjg1OC8xMTk1IDkzMC8yODY5LzEyMDYKZiA5MzAvMjg2OS8xMjA2IDk0Mi8yODU4LzExOTUgOTQxLzI4NTkvMTE5NiA5MjkvMjg3MC8xMjA3CmYgOTI5LzI4NzAvMTIwNyA5NDEvMjg1OS8xMTk2IDk0MC8yODYwLzExOTcgOTI4LzI4NzEvMTIwOApmIDkyOC8yODcxLzEyMDggOTQwLzI4NjAvMTE5NyA5MzkvMjg2MS8xMTk4IDkyNy8yODcyLzEyMDkKZiA5MjcvMjg3Mi8xMjA5IDkzOS8yODYxLzExOTggOTM4LzI4NjIvMTE5OSA5MjYvMjg3My8xMjEwCmYgOTI2LzI4NzMvMTIxMCA5MzgvMjg2Mi8xMTk5IDkzNy8yODYzLzEyMDAgOTI1LzI4NzQvMTIxMQpmIDkyNS8yODc0LzEyMTEgOTM3LzI4NjMvMTIwMCA5MzYvMjg2NC8xMjAxIDkyNC8yODc1LzEyMTIKZiA5MjQvMjg3NS8xMjEyIDkzNi8yODY0LzEyMDEgOTM1LzI4NjUvMTIwMiA5MjMvMjg3Ni8xMjEzCmYgOTIzLzI4NzYvMTIxMyA5MzUvMjg2NS8xMjAyIDkzNC8yODY2LzEyMDMgOTIyLzI4NzcvMTIxNApmIDkyMi8yODc3LzEyMTQgOTM0LzI4NjYvMTIwMyA5MzMvMjg2Ny8xMjA0IDkyMS8yODc4LzEyMTUKZiA5MjEvMjg3OC8xMjE1IDkzMy8yODY3LzEyMDQgOTMxLzI3OTcvMTEzNCA5MTkvMjc5Ni8xMTMzCmYgOTA4LzI4NzkvMTIxNiA5MjAvMjg2OC8xMjA1IDkzMC8yODY5LzEyMDYgOTE4LzI4ODAvMTIxNwpmIDkxOC8yODgwLzEyMTcgOTMwLzI4NjkvMTIwNiA5MjkvMjg3MC8xMjA3IDkxNy8yODgxLzEyMTgKZiA5MTcvMjg4MS8xMjE4IDkyOS8yODcwLzEyMDcgOTI4LzI4NzEvMTIwOCA5MTYvMjg4Mi8xMjE5CmYgOTE2LzI4ODIvMTIxOSA5MjgvMjg3MS8xMjA4IDkyNy8yODcyLzEyMDkgOTE1LzI4ODMvMTIyMApmIDkxNS8yODgzLzEyMjAgOTI3LzI4NzIvMTIwOSA5MjYvMjg3My8xMjEwIDkxNC8yODg0LzEyMjEKZiA5MTQvMjg4NC8xMjIxIDkyNi8yODczLzEyMTAgOTI1LzI4NzQvMTIxMSA5MTMvMjg4NS8xMjIyCmYgOTEzLzI4ODUvMTIyMiA5MjUvMjg3NC8xMjExIDkyNC8yODc1LzEyMTIgOTEyLzI4ODYvMTIyMwpmIDkxMi8yODg2LzEyMjMgOTI0LzI4NzUvMTIxMiA5MjMvMjg3Ni8xMjEzIDkxMS8yODg3LzEyMjQKZiA5MTEvMjg4Ny8xMjI0IDkyMy8yODc2LzEyMTMgOTIyLzI4NzcvMTIxNCA5MTAvMjg4OC8xMjI1CmYgOTEwLzI4ODgvMTIyNSA5MjIvMjg3Ny8xMjE0IDkyMS8yODc4LzEyMTUgOTA5LzI4ODkvMTIyNgpmIDkwOS8yODg5LzEyMjYgOTIxLzI4NzgvMTIxNSA5MTkvMjc5Ni8xMTMzIDkwNy8yNzk1LzExMzIKZiA4OTYvMjg5MC8xMjI3IDkwOC8yODc5LzEyMTYgOTE4LzI4ODAvMTIxNyA5MDYvMjg5MS8xMjI4CmYgOTA2LzI4OTEvMTIyOCA5MTgvMjg4MC8xMjE3IDkxNy8yODgxLzEyMTggOTA1LzI4OTIvMTIyOQpmIDkwNS8yODkyLzEyMjkgOTE3LzI4ODEvMTIxOCA5MTYvMjg4Mi8xMjE5IDkwNC8yODkzLzEyMzAKZiA5MDQvMjg5My8xMjMwIDkxNi8yODgyLzEyMTkgOTE1LzI4ODMvMTIyMCA5MDMvMjg5NC8xMjMxCmYgOTAzLzI4OTQvMTIzMSA5MTUvMjg4My8xMjIwIDkxNC8yODg0LzEyMjEgOTAyLzI4OTUvMTIzMgpmIDkwMi8yODk1LzEyMzIgOTE0LzI4ODQvMTIyMSA5MTMvMjg4NS8xMjIyIDkwMS8yODk2LzEyMzMKZiA5MDEvMjg5Ni8xMjMzIDkxMy8yODg1LzEyMjIgOTEyLzI4ODYvMTIyMyA5MDAvMjg5Ny8xMjM0CmYgOTAwLzI4OTcvMTIzNCA5MTIvMjg4Ni8xMjIzIDkxMS8yODg3LzEyMjQgODk5LzI4OTgvMTIzNQpmIDg5OS8yODk4LzEyMzUgOTExLzI4ODcvMTIyNCA5MTAvMjg4OC8xMjI1IDg5OC8yODk5LzEyMzYKZiA4OTgvMjg5OS8xMjM2IDkxMC8yODg4LzEyMjUgOTA5LzI4ODkvMTIyNiA4OTcvMjkwMC8xMjM3CmYgODk3LzI5MDAvMTIzNyA5MDkvMjg4OS8xMjI2IDkwNy8yNzk1LzExMzIgODk1LzI3OTQvMTEzMQpmIDg4NC8yNzUyLzEwOTEgODk2LzI4OTAvMTIyNyA5MDYvMjg5MS8xMjI4IDg5NC8yOTAxLzEyMzgKZiA4OTQvMjkwMS8xMjM4IDkwNi8yODkxLzEyMjggOTA1LzI4OTIvMTIyOSA4OTMvMjkwMi8xMjM5CmYgODkzLzI5MDIvMTIzOSA5MDUvMjg5Mi8xMjI5IDkwNC8yODkzLzEyMzAgODkyLzI5MDMvMTI0MApmIDg5Mi8yOTAzLzEyNDAgOTA0LzI4OTMvMTIzMCA5MDMvMjg5NC8xMjMxIDg5MS8yOTA0LzEyNDEKZiA4OTEvMjkwNC8xMjQxIDkwMy8yODk0LzEyMzEgOTAyLzI4OTUvMTIzMiA4OTAvMjkwNS8xMjQyCmYgODkwLzI5MDUvMTI0MiA5MDIvMjg5NS8xMjMyIDkwMS8yODk2LzEyMzMgODg5LzI5MDYvMTI0MwpmIDg4OS8yOTA2LzEyNDMgOTAxLzI4OTYvMTIzMyA5MDAvMjg5Ny8xMjM0IDg4OC8yOTA3LzEyNDQKZiA4ODgvMjkwNy8xMjQ0IDkwMC8yODk3LzEyMzQgODk5LzI4OTgvMTIzNSA4ODcvMjkwOC8xMjQ1CmYgODg3LzI5MDgvMTI0NSA4OTkvMjg5OC8xMjM1IDg5OC8yODk5LzEyMzYgODg2LzI5MDkvMTI0NgpmIDg4Ni8yOTA5LzEyNDYgODk4LzI4OTkvMTIzNiA4OTcvMjkwMC8xMjM3IDg4NS8yOTEwLzEyNDcKZiA4ODUvMjkxMC8xMjQ3IDg5Ny8yOTAwLzEyMzcgODk1LzI3OTQvMTEzMSA4ODMvMjc5My8xMTMwCmYgODYwLzI5MTEvMTI0OCA4NzEvMjc0Ny8xMDg2IDg3My8yOTEyLzEyNDkgODcwLzI5MTMvMTI1MApmIDg3MC8yOTEzLzEyNTAgODczLzI5MTIvMTI0OSA4NzQvMjkxNC8xMjUxIDg2OS8yOTE1LzEyNTIKZiA4NjkvMjkxNS8xMjUyIDg3NC8yOTE0LzEyNTEgODc1LzI5MTYvMTI1MyA4NjgvMjkxNy8xMjU0CmYgODY4LzI5MTcvMTI1NCA4NzUvMjkxNi8xMjUzIDg3Ni8yOTE4LzEyNTUgODY3LzI5MTkvMTI1NgpmIDg2Ny8yOTE5LzEyNTYgODc2LzI5MTgvMTI1NSA4NzcvMjkyMC8xMjU3IDg2Ni8yOTIxLzEyNTgKZiA4NjYvMjkyMS8xMjU4IDg3Ny8yOTIwLzEyNTcgODc4LzI5MjIvMTI1OSA4NjUvMjkyMy8xMjYwCmYgODY1LzI5MjMvMTI2MCA4NzgvMjkyMi8xMjU5IDg3OS8yOTI0LzEyNjEgODY0LzI5MjUvMTI2MgpmIDg2NC8yOTI1LzEyNjIgODc5LzI5MjQvMTI2MSA4ODAvMjkyNi8xMjYzIDg2My8yOTI3LzEyNjQKZiA4NjMvMjkyNy8xMjY0IDg4MC8yOTI2LzEyNjMgODgxLzI5MjgvMTI2NSA4NjIvMjkyOS8xMjY2CmYgODYyLzI5MjkvMTI2NiA4ODEvMjkyOC8xMjY1IDg4Mi8yOTMwLzEyNjcgODYxLzI5MzEvMTI2OApmIDg2MS8yOTMxLzEyNjggODgyLzI5MzAvMTI2NyA4NzIvMjc5Mi8xMTI5IDg1OS8yNzkxLzExMjgKZiA4NDgvMjkzMi8xMjY5IDg2MC8yOTExLzEyNDggODcwLzI5MTMvMTI1MCA4NTgvMjkzMy8xMjcwCmYgODU4LzI5MzMvMTI3MCA4NzAvMjkxMy8xMjUwIDg2OS8yOTE1LzEyNTIgODU3LzI5MzQvMTI3MQpmIDg1Ny8yOTM0LzEyNzEgODY5LzI5MTUvMTI1MiA4NjgvMjkxNy8xMjU0IDg1Ni8yOTM1LzEyNzIKZiA4NTYvMjkzNS8xMjcyIDg2OC8yOTE3LzEyNTQgODY3LzI5MTkvMTI1NiA4NTUvMjkzNi8xMjczCmYgODU1LzI5MzYvMTI3MyA4NjcvMjkxOS8xMjU2IDg2Ni8yOTIxLzEyNTggODU0LzI5MzcvMTI3NApmIDg1NC8yOTM3LzEyNzQgODY2LzI5MjEvMTI1OCA4NjUvMjkyMy8xMjYwIDg1My8yOTM4LzEyNzUKZiA4NTMvMjkzOC8xMjc1IDg2NS8yOTIzLzEyNjAgODY0LzI5MjUvMTI2MiA4NTIvMjkzOS8xMjc2CmYgODUyLzI5MzkvMTI3NiA4NjQvMjkyNS8xMjYyIDg2My8yOTI3LzEyNjQgODUxLzI5NDAvMTI3NwpmIDg1MS8yOTQwLzEyNzcgODYzLzI5MjcvMTI2NCA4NjIvMjkyOS8xMjY2IDg1MC8yOTQxLzEyNzgKZiA4NTAvMjk0MS8xMjc4IDg2Mi8yOTI5LzEyNjYgODYxLzI5MzEvMTI2OCA4NDkvMjk0Mi8xMjc5CmYgODQ5LzI5NDIvMTI3OSA4NjEvMjkzMS8xMjY4IDg1OS8yNzkxLzExMjggODQ3LzI3OTAvMTEyNwpmIDgzNi8yOTQzLzEyODAgODQ4LzI5MzIvMTI2OSA4NTgvMjkzMy8xMjcwIDg0Ni8yOTQ0LzEyODEKZiA4NDYvMjk0NC8xMjgxIDg1OC8yOTMzLzEyNzAgODU3LzI5MzQvMTI3MSA4NDUvMjk0NS8xMjgyCmYgODQ1LzI5NDUvMTI4MiA4NTcvMjkzNC8xMjcxIDg1Ni8yOTM1LzEyNzIgODQ0LzI5NDYvMTI4MwpmIDg0NC8yOTQ2LzEyODMgODU2LzI5MzUvMTI3MiA4NTUvMjkzNi8xMjczIDg0My8yOTQ3LzEyODQKZiA4NDMvMjk0Ny8xMjg0IDg1NS8yOTM2LzEyNzMgODU0LzI5MzcvMTI3NCA4NDIvMjk0OC8xMjg1CmYgODQyLzI5NDgvMTI4NSA4NTQvMjkzNy8xMjc0IDg1My8yOTM4LzEyNzUgODQxLzI5NDkvMTI4NgpmIDg0MS8yOTQ5LzEyODYgODUzLzI5MzgvMTI3NSA4NTIvMjkzOS8xMjc2IDg0MC8yOTUwLzEyODcKZiA4NDAvMjk1MC8xMjg3IDg1Mi8yOTM5LzEyNzYgODUxLzI5NDAvMTI3NyA4MzkvMjk1MS8xMjg4CmYgODM5LzI5NTEvMTI4OCA4NTEvMjk0MC8xMjc3IDg1MC8yOTQxLzEyNzggODM4LzI5NTIvMTI4OQpmIDgzOC8yOTUyLzEyODkgODUwLzI5NDEvMTI3OCA4NDkvMjk0Mi8xMjc5IDgzNy8yOTUzLzEyOTAKZiA4MzcvMjk1My8xMjkwIDg0OS8yOTQyLzEyNzkgODQ3LzI3OTAvMTEyNyA4MzUvMjc4OS8xMTI2CmYgODI0LzI5NTQvMTI5MSA4MzYvMjk0My8xMjgwIDg0Ni8yOTQ0LzEyODEgODM0LzI5NTUvMTI5MgpmIDgzNC8yOTU1LzEyOTIgODQ2LzI5NDQvMTI4MSA4NDUvMjk0NS8xMjgyIDgzMy8yOTU2LzEyOTMKZiA4MzMvMjk1Ni8xMjkzIDg0NS8yOTQ1LzEyODIgODQ0LzI5NDYvMTI4MyA4MzIvMjk1Ny8xMjk0CmYgODMyLzI5NTcvMTI5NCA4NDQvMjk0Ni8xMjgzIDg0My8yOTQ3LzEyODQgODMxLzI5NTgvMTI5NQpmIDgzMS8yOTU4LzEyOTUgODQzLzI5NDcvMTI4NCA4NDIvMjk0OC8xMjg1IDgzMC8yOTU5LzEyOTYKZiA4MzAvMjk1OS8xMjk2IDg0Mi8yOTQ4LzEyODUgODQxLzI5NDkvMTI4NiA4MjkvMjk2MC8xMjk3CmYgODI5LzI5NjAvMTI5NyA4NDEvMjk0OS8xMjg2IDg0MC8yOTUwLzEyODcgODI4LzI5NjEvMTI5OApmIDgyOC8yOTYxLzEyOTggODQwLzI5NTAvMTI4NyA4MzkvMjk1MS8xMjg4IDgyNy8yOTYyLzEyOTkKZiA4MjcvMjk2Mi8xMjk5IDgzOS8yOTUxLzEyODggODM4LzI5NTIvMTI4OSA4MjYvMjk2My8xMzAwCmYgODI2LzI5NjMvMTMwMCA4MzgvMjk1Mi8xMjg5IDgzNy8yOTUzLzEyOTAgODI1LzI5NjQvMTMwMQpmIDgyNS8yOTY0LzEzMDEgODM3LzI5NTMvMTI5MCA4MzUvMjc4OS8xMTI2IDgyMy8yNzg4LzExMjUKZiA4MTIvMjk2NS8xMzAyIDgyNC8yOTU0LzEyOTEgODM0LzI5NTUvMTI5MiA4MjIvMjk2Ni8xMzAzCmYgODIyLzI5NjYvMTMwMyA4MzQvMjk1NS8xMjkyIDgzMy8yOTU2LzEyOTMgODIxLzI5NjcvMTMwNApmIDgyMS8yOTY3LzEzMDQgODMzLzI5NTYvMTI5MyA4MzIvMjk1Ny8xMjk0IDgyMC8yOTY4LzEzMDUKZiA4MjAvMjk2OC8xMzA1IDgzMi8yOTU3LzEyOTQgODMxLzI5NTgvMTI5NSA4MTkvMjk2OS8xMzA2CmYgODE5LzI5NjkvMTMwNiA4MzEvMjk1OC8xMjk1IDgzMC8yOTU5LzEyOTYgODE4LzI5NzAvMTMwNwpmIDgxOC8yOTcwLzEzMDcgODMwLzI5NTkvMTI5NiA4MjkvMjk2MC8xMjk3IDgxNy8yOTcxLzEzMDgKZiA4MTcvMjk3MS8xMzA4IDgyOS8yOTYwLzEyOTcgODI4LzI5NjEvMTI5OCA4MTYvMjk3Mi8xMzA5CmYgODE2LzI5NzIvMTMwOSA4MjgvMjk2MS8xMjk4IDgyNy8yOTYyLzEyOTkgODE1LzI5NzMvMTMxMApmIDgxNS8yOTczLzEzMTAgODI3LzI5NjIvMTI5OSA4MjYvMjk2My8xMzAwIDgxNC8yOTc0LzEzMTEKZiA4MTQvMjk3NC8xMzExIDgyNi8yOTYzLzEzMDAgODI1LzI5NjQvMTMwMSA4MTMvMjk3NS8xMzEyCmYgODEzLzI5NzUvMTMxMiA4MjUvMjk2NC8xMzAxIDgyMy8yNzg4LzExMjUgODExLzI3ODcvMTEyNApmIDgwMC8yOTc2LzEzMTMgODEyLzI5NjUvMTMwMiA4MjIvMjk2Ni8xMzAzIDgxMC8yOTc3LzEzMTQKZiA4MTAvMjk3Ny8xMzE0IDgyMi8yOTY2LzEzMDMgODIxLzI5NjcvMTMwNCA4MDkvMjk3OC8xMzE1CmYgODA5LzI5NzgvMTMxNSA4MjEvMjk2Ny8xMzA0IDgyMC8yOTY4LzEzMDUgODA4LzI5NzkvMTMxNgpmIDgwOC8yOTc5LzEzMTYgODIwLzI5NjgvMTMwNSA4MTkvMjk2OS8xMzA2IDgwNy8yOTgwLzEzMTcKZiA4MDcvMjk4MC8xMzE3IDgxOS8yOTY5LzEzMDYgODE4LzI5NzAvMTMwNyA4MDYvMjk4MS8xMzE4CmYgODA2LzI5ODEvMTMxOCA4MTgvMjk3MC8xMzA3IDgxNy8yOTcxLzEzMDggODA1LzI5ODIvMTMxOQpmIDgwNS8yOTgyLzEzMTkgODE3LzI5NzEvMTMwOCA4MTYvMjk3Mi8xMzA5IDgwNC8yOTgzLzEzMjAKZiA4MDQvMjk4My8xMzIwIDgxNi8yOTcyLzEzMDkgODE1LzI5NzMvMTMxMCA4MDMvMjk4NC8xMzIxCmYgODAzLzI5ODQvMTMyMSA4MTUvMjk3My8xMzEwIDgxNC8yOTc0LzEzMTEgODAyLzI5ODUvMTMyMgpmIDgwMi8yOTg1LzEzMjIgODE0LzI5NzQvMTMxMSA4MTMvMjk3NS8xMzEyIDgwMS8yOTg2LzEzMjMKZiA4MDEvMjk4Ni8xMzIzIDgxMy8yOTc1LzEzMTIgODExLzI3ODcvMTEyNCA3OTkvMjc4Ni8xMTIzCmYgNzg4LzI5ODcvMTMyNCA4MDAvMjk3Ni8xMzEzIDgxMC8yOTc3LzEzMTQgNzk4LzI5ODgvMTMyNQpmIDc5OC8yOTg4LzEzMjUgODEwLzI5NzcvMTMxNCA4MDkvMjk3OC8xMzE1IDc5Ny8yOTg5LzEzMjYKZiA3OTcvMjk4OS8xMzI2IDgwOS8yOTc4LzEzMTUgODA4LzI5NzkvMTMxNiA3OTYvMjk5MC8xMzI3CmYgNzk2LzI5OTAvMTMyNyA4MDgvMjk3OS8xMzE2IDgwNy8yOTgwLzEzMTcgNzk1LzI5OTEvMTMyOApmIDc5NS8yOTkxLzEzMjggODA3LzI5ODAvMTMxNyA4MDYvMjk4MS8xMzE4IDc5NC8yOTkyLzEzMjkKZiA3OTQvMjk5Mi8xMzI5IDgwNi8yOTgxLzEzMTggODA1LzI5ODIvMTMxOSA3OTMvMjk5My8xMzMwCmYgNzkzLzI5OTMvMTMzMCA4MDUvMjk4Mi8xMzE5IDgwNC8yOTgzLzEzMjAgNzkyLzI5OTQvMTMzMQpmIDc5Mi8yOTk0LzEzMzEgODA0LzI5ODMvMTMyMCA4MDMvMjk4NC8xMzIxIDc5MS8yOTk1LzEzMzIKZiA3OTEvMjk5NS8xMzMyIDgwMy8yOTg0LzEzMjEgODAyLzI5ODUvMTMyMiA3OTAvMjk5Ni8xMzMzCmYgNzkwLzI5OTYvMTMzMyA4MDIvMjk4NS8xMzIyIDgwMS8yOTg2LzEzMjMgNzg5LzI5OTcvMTMzNApmIDc4OS8yOTk3LzEzMzQgODAxLzI5ODYvMTMyMyA3OTkvMjc4Ni8xMTIzIDc4Ny8yNzg1LzExMjIKZiA3NzYvMjk5OC8xMzM1IDc4OC8yOTg3LzEzMjQgNzk4LzI5ODgvMTMyNSA3ODYvMjk5OS8xMzM2CmYgNzg2LzI5OTkvMTMzNiA3OTgvMjk4OC8xMzI1IDc5Ny8yOTg5LzEzMjYgNzg1LzMwMDAvMTMzNwpmIDc4NS8zMDAwLzEzMzcgNzk3LzI5ODkvMTMyNiA3OTYvMjk5MC8xMzI3IDc4NC8zMDAxLzEzMzgKZiA3ODQvMzAwMS8xMzM4IDc5Ni8yOTkwLzEzMjcgNzk1LzI5OTEvMTMyOCA3ODMvMzAwMi8xMzM5CmYgNzgzLzMwMDIvMTMzOSA3OTUvMjk5MS8xMzI4IDc5NC8yOTkyLzEzMjkgNzgyLzMwMDMvMTM0MApmIDc4Mi8zMDAzLzEzNDAgNzk0LzI5OTIvMTMyOSA3OTMvMjk5My8xMzMwIDc4MS8zMDA0LzEzNDEKZiA3ODEvMzAwNC8xMzQxIDc5My8yOTkzLzEzMzAgNzkyLzI5OTQvMTMzMSA3ODAvMzAwNS8xMzQyCmYgNzgwLzMwMDUvMTM0MiA3OTIvMjk5NC8xMzMxIDc5MS8yOTk1LzEzMzIgNzc5LzMwMDYvMTM0MwpmIDc3OS8zMDA2LzEzNDMgNzkxLzI5OTUvMTMzMiA3OTAvMjk5Ni8xMzMzIDc3OC8zMDA3LzEzNDQKZiA3NzgvMzAwNy8xMzQ0IDc5MC8yOTk2LzEzMzMgNzg5LzI5OTcvMTMzNCA3NzcvMzAwOC8xMzQ1CmYgNzc3LzMwMDgvMTM0NSA3ODkvMjk5Ny8xMzM0IDc4Ny8yNzg1LzExMjIgNzc1LzI3NDQvMTA4MwpmIDc2NC8yNzgyLzExMTkgNzc2LzI5OTgvMTMzNSA3ODYvMjk5OS8xMzM2IDc3NC8zMDA5LzEzNDYKZiA3NzQvMzAwOS8xMzQ2IDc4Ni8yOTk5LzEzMzYgNzg1LzMwMDAvMTMzNyA3NzMvMzAxMC8xMzQ3CmYgNzczLzMwMTAvMTM0NyA3ODUvMzAwMC8xMzM3IDc4NC8zMDAxLzEzMzggNzcyLzMwMTEvMTM0OApmIDc3Mi8zMDExLzEzNDggNzg0LzMwMDEvMTMzOCA3ODMvMzAwMi8xMzM5IDc3MS8zMDEyLzEzNDkKZiA3NzEvMzAxMi8xMzQ5IDc4My8zMDAyLzEzMzkgNzgyLzMwMDMvMTM0MCA3NzAvMzAxMy8xMzUwCmYgNzcwLzMwMTMvMTM1MCA3ODIvMzAwMy8xMzQwIDc4MS8zMDA0LzEzNDEgNzY5LzMwMTQvMTM1MQpmIDc2OS8zMDE0LzEzNTEgNzgxLzMwMDQvMTM0MSA3ODAvMzAwNS8xMzQyIDc2OC8zMDE1LzEzNTIKZiA3NjgvMzAxNS8xMzUyIDc4MC8zMDA1LzEzNDIgNzc5LzMwMDYvMTM0MyA3NjcvMzAxNi8xMzUzCmYgNzY3LzMwMTYvMTM1MyA3NzkvMzAwNi8xMzQzIDc3OC8zMDA3LzEzNDQgNzY2LzMwMTcvMTM1NApmIDc2Ni8zMDE3LzEzNTQgNzc4LzMwMDcvMTM0NCA3NzcvMzAwOC8xMzQ1IDc2NS8zMDE4LzEzNTUKZiA3NjUvMzAxOC8xMzU1IDc3Ny8zMDA4LzEzNDUgNzc1LzI3NDQvMTA4MyA3NjMvMjc0My8xMDgyCmYgNzQwLzMwMTkvMTM1NiA3NTEvMjc3MS8xMTA4IDc1My8zMDIwLzEzNTcgNzUwLzMwMjEvMTM1OApmIDc1MC8zMDIxLzEzNTggNzUzLzMwMjAvMTM1NyA3NTQvMzAyMi8xMzU5IDc0OS8zMDIzLzEzNjAKZiA3NDkvMzAyMy8xMzYwIDc1NC8zMDIyLzEzNTkgNzU1LzMwMjQvMTM2MSA3NDgvMzAyNS8xMzYyCmYgNzQ4LzMwMjUvMTM2MiA3NTUvMzAyNC8xMzYxIDc1Ni8zMDI2LzEzNjMgNzQ3LzMwMjcvMTM2NApmIDc0Ny8zMDI3LzEzNjQgNzU2LzMwMjYvMTM2MyA3NTcvMzAyOC8xMzY1IDc0Ni8zMDI5LzEzNjYKZiA3NDYvMzAyOS8xMzY2IDc1Ny8zMDI4LzEzNjUgNzU4LzMwMzAvMTM2NyA3NDUvMzAzMS8xMzY4CmYgNzQ1LzMwMzEvMTM2OCA3NTgvMzAzMC8xMzY3IDc1OS8zMDMyLzEzNjkgNzQ0LzMwMzMvMTM3MApmIDc0NC8zMDMzLzEzNzAgNzU5LzMwMzIvMTM2OSA3NjAvMzAzNC8xMzcxIDc0My8zMDM1LzEzNzIKZiA3NDMvMzAzNS8xMzcyIDc2MC8zMDM0LzEzNzEgNzYxLzMwMzYvMTM3MyA3NDIvMzAzNy8xMzc0CmYgNzQyLzMwMzcvMTM3NCA3NjEvMzAzNi8xMzczIDc2Mi8zMDM4LzEzNzUgNzQxLzMwMzkvMTM3NgpmIDc0MS8zMDM5LzEzNzYgNzYyLzMwMzgvMTM3NSA3NTIvMjc4MC8xMTE3IDczOS8yNzc5LzExMTYKZiA3MjgvMzA0MC8xMzc3IDc0MC8zMDE5LzEzNTYgNzUwLzMwMjEvMTM1OCA3MzgvMzA0MS8xMzc4CmYgNzM4LzMwNDEvMTM3OCA3NTAvMzAyMS8xMzU4IDc0OS8zMDIzLzEzNjAgNzM3LzMwNDIvMTM3OQpmIDczNy8zMDQyLzEzNzkgNzQ5LzMwMjMvMTM2MCA3NDgvMzAyNS8xMzYyIDczNi8zMDQzLzEzODAKZiA3MzYvMzA0My8xMzgwIDc0OC8zMDI1LzEzNjIgNzQ3LzMwMjcvMTM2NCA3MzUvMzA0NC8xMzgxCmYgNzM1LzMwNDQvMTM4MSA3NDcvMzAyNy8xMzY0IDc0Ni8zMDI5LzEzNjYgNzM0LzMwNDUvMTM4MgpmIDczNC8zMDQ1LzEzODIgNzQ2LzMwMjkvMTM2NiA3NDUvMzAzMS8xMzY4IDczMy8zMDQ2LzEzODMKZiA3MzMvMzA0Ni8xMzgzIDc0NS8zMDMxLzEzNjggNzQ0LzMwMzMvMTM3MCA3MzIvMzA0Ny8xMzg0CmYgNzMyLzMwNDcvMTM4NCA3NDQvMzAzMy8xMzcwIDc0My8zMDM1LzEzNzIgNzMxLzMwNDgvMTM4NQpmIDczMS8zMDQ4LzEzODUgNzQzLzMwMzUvMTM3MiA3NDIvMzAzNy8xMzc0IDczMC8zMDQ5LzEzODYKZiA3MzAvMzA0OS8xMzg2IDc0Mi8zMDM3LzEzNzQgNzQxLzMwMzkvMTM3NiA3MjkvMzA1MC8xMzg3CmYgNzI5LzMwNTAvMTM4NyA3NDEvMzAzOS8xMzc2IDczOS8yNzc5LzExMTYgNzI3LzI3NzgvMTExNQpmIDcxNi8zMDUxLzEzODggNzI4LzMwNDAvMTM3NyA3MzgvMzA0MS8xMzc4IDcyNi8zMDUyLzEzODkKZiA3MjYvMzA1Mi8xMzg5IDczOC8zMDQxLzEzNzggNzM3LzMwNDIvMTM3OSA3MjUvMzA1My8xMzkwCmYgNzI1LzMwNTMvMTM5MCA3MzcvMzA0Mi8xMzc5IDczNi8zMDQzLzEzODAgNzI0LzMwNTQvMTM5MQpmIDcyNC8zMDU0LzEzOTEgNzM2LzMwNDMvMTM4MCA3MzUvMzA0NC8xMzgxIDcyMy8zMDU1LzEzOTIKZiA3MjMvMzA1NS8xMzkyIDczNS8zMDQ0LzEzODEgNzM0LzMwNDUvMTM4MiA3MjIvMzA1Ni8xMzkzCmYgNzIyLzMwNTYvMTM5MyA3MzQvMzA0NS8xMzgyIDczMy8zMDQ2LzEzODMgNzIxLzMwNTcvMTM5NApmIDcyMS8zMDU3LzEzOTQgNzMzLzMwNDYvMTM4MyA3MzIvMzA0Ny8xMzg0IDcyMC8zMDU4LzEzOTUKZiA3MjAvMzA1OC8xMzk1IDczMi8zMDQ3LzEzODQgNzMxLzMwNDgvMTM4NSA3MTkvMzA1OS8xMzk2CmYgNzE5LzMwNTkvMTM5NiA3MzEvMzA0OC8xMzg1IDczMC8zMDQ5LzEzODYgNzE4LzMwNjAvMTM5NwpmIDcxOC8zMDYwLzEzOTcgNzMwLzMwNDkvMTM4NiA3MjkvMzA1MC8xMzg3IDcxNy8zMDYxLzEzOTgKZiA3MTcvMzA2MS8xMzk4IDcyOS8zMDUwLzEzODcgNzI3LzI3NzgvMTExNSA3MTUvMjc3Ny8xMTE0CmYgNzA0LzMwNjIvMTM5OSA3MTYvMzA1MS8xMzg4IDcyNi8zMDUyLzEzODkgNzE0LzMwNjMvMTQwMApmIDcxNC8zMDYzLzE0MDAgNzI2LzMwNTIvMTM4OSA3MjUvMzA1My8xMzkwIDcxMy8zMDY0LzE0MDEKZiA3MTMvMzA2NC8xNDAxIDcyNS8zMDUzLzEzOTAgNzI0LzMwNTQvMTM5MSA3MTIvMzA2NS8xNDAyCmYgNzEyLzMwNjUvMTQwMiA3MjQvMzA1NC8xMzkxIDcyMy8zMDU1LzEzOTIgNzExLzMwNjYvMTQwMwpmIDcxMS8zMDY2LzE0MDMgNzIzLzMwNTUvMTM5MiA3MjIvMzA1Ni8xMzkzIDcxMC8zMDY3LzE0MDQKZiA3MTAvMzA2Ny8xNDA0IDcyMi8zMDU2LzEzOTMgNzIxLzMwNTcvMTM5NCA3MDkvMzA2OC8xNDA1CmYgNzA5LzMwNjgvMTQwNSA3MjEvMzA1Ny8xMzk0IDcyMC8zMDU4LzEzOTUgNzA4LzMwNjkvMTQwNgpmIDcwOC8zMDY5LzE0MDYgNzIwLzMwNTgvMTM5NSA3MTkvMzA1OS8xMzk2IDcwNy8zMDcwLzE0MDcKZiA3MDcvMzA3MC8xNDA3IDcxOS8zMDU5LzEzOTYgNzE4LzMwNjAvMTM5NyA3MDYvMzA3MS8xNDA4CmYgNzA2LzMwNzEvMTQwOCA3MTgvMzA2MC8xMzk3IDcxNy8zMDYxLzEzOTggNzA1LzMwNzIvMTQwOQpmIDcwNS8zMDcyLzE0MDkgNzE3LzMwNjEvMTM5OCA3MTUvMjc3Ny8xMTE0IDcwMy8yNzc2LzExMTMKZiA2OTIvMzA3My8xNDEwIDcwNC8zMDYyLzEzOTkgNzE0LzMwNjMvMTQwMCA3MDIvMzA3NC8xNDExCmYgNzAyLzMwNzQvMTQxMSA3MTQvMzA2My8xNDAwIDcxMy8zMDY0LzE0MDEgNzAxLzMwNzUvMTQxMgpmIDcwMS8zMDc1LzE0MTIgNzEzLzMwNjQvMTQwMSA3MTIvMzA2NS8xNDAyIDcwMC8zMDc2LzE0MTMKZiA3MDAvMzA3Ni8xNDEzIDcxMi8zMDY1LzE0MDIgNzExLzMwNjYvMTQwMyA2OTkvMzA3Ny8xNDE0CmYgNjk5LzMwNzcvMTQxNCA3MTEvMzA2Ni8xNDAzIDcxMC8zMDY3LzE0MDQgNjk4LzMwNzgvMTQxNQpmIDY5OC8zMDc4LzE0MTUgNzEwLzMwNjcvMTQwNCA3MDkvMzA2OC8xNDA1IDY5Ny8zMDc5LzE0MTYKZiA2OTcvMzA3OS8xNDE2IDcwOS8zMDY4LzE0MDUgNzA4LzMwNjkvMTQwNiA2OTYvMzA4MC8xNDE3CmYgNjk2LzMwODAvMTQxNyA3MDgvMzA2OS8xNDA2IDcwNy8zMDcwLzE0MDcgNjk1LzMwODEvMTQxOApmIDY5NS8zMDgxLzE0MTggNzA3LzMwNzAvMTQwNyA3MDYvMzA3MS8xNDA4IDY5NC8zMDgyLzE0MTkKZiA2OTQvMzA4Mi8xNDE5IDcwNi8zMDcxLzE0MDggNzA1LzMwNzIvMTQwOSA2OTMvMzA4My8xNDIwCmYgNjkzLzMwODMvMTQyMCA3MDUvMzA3Mi8xNDA5IDcwMy8yNzc2LzExMTMgNjkxLzI3NzUvMTExMgpmIDY4MC8zMDg0LzE0MjEgNjkyLzMwNzMvMTQxMCA3MDIvMzA3NC8xNDExIDY5MC8zMDg1LzE0MjIKZiA2OTAvMzA4NS8xNDIyIDcwMi8zMDc0LzE0MTEgNzAxLzMwNzUvMTQxMiA2ODkvMzA4Ni8xNDIzCmYgNjg5LzMwODYvMTQyMyA3MDEvMzA3NS8xNDEyIDcwMC8zMDc2LzE0MTMgNjg4LzMwODcvMTQyNApmIDY4OC8zMDg3LzE0MjQgNzAwLzMwNzYvMTQxMyA2OTkvMzA3Ny8xNDE0IDY4Ny8zMDg4LzE0MjUKZiA2ODcvMzA4OC8xNDI1IDY5OS8zMDc3LzE0MTQgNjk4LzMwNzgvMTQxNSA2ODYvMzA4OS8xNDI2CmYgNjg2LzMwODkvMTQyNiA2OTgvMzA3OC8xNDE1IDY5Ny8zMDc5LzE0MTYgNjg1LzMwOTAvMTQyNwpmIDY4NS8zMDkwLzE0MjcgNjk3LzMwNzkvMTQxNiA2OTYvMzA4MC8xNDE3IDY4NC8zMDkxLzE0MjgKZiA2ODQvMzA5MS8xNDI4IDY5Ni8zMDgwLzE0MTcgNjk1LzMwODEvMTQxOCA2ODMvMzA5Mi8xNDI5CmYgNjgzLzMwOTIvMTQyOSA2OTUvMzA4MS8xNDE4IDY5NC8zMDgyLzE0MTkgNjgyLzMwOTMvMTQzMApmIDY4Mi8zMDkzLzE0MzAgNjk0LzMwODIvMTQxOSA2OTMvMzA4My8xNDIwIDY4MS8zMDk0LzE0MzEKZiA2ODEvMzA5NC8xNDMxIDY5My8zMDgzLzE0MjAgNjkxLzI3NzUvMTExMiA2NzkvMjc3NC8xMTExCmYgNjY4LzMwOTUvMTQzMiA2ODAvMzA4NC8xNDIxIDY5MC8zMDg1LzE0MjIgNjc4LzMwOTYvMTQzMwpmIDY3OC8zMDk2LzE0MzMgNjkwLzMwODUvMTQyMiA2ODkvMzA4Ni8xNDIzIDY3Ny8zMDk3LzE0MzQKZiA2NzcvMzA5Ny8xNDM0IDY4OS8zMDg2LzE0MjMgNjg4LzMwODcvMTQyNCA2NzYvMzA5OC8xNDM1CmYgNjc2LzMwOTgvMTQzNSA2ODgvMzA4Ny8xNDI0IDY4Ny8zMDg4LzE0MjUgNjc1LzMwOTkvMTQzNgpmIDY3NS8zMDk5LzE0MzYgNjg3LzMwODgvMTQyNSA2ODYvMzA4OS8xNDI2IDY3NC8zMTAwLzE0MzcKZiA2NzQvMzEwMC8xNDM3IDY4Ni8zMDg5LzE0MjYgNjg1LzMwOTAvMTQyNyA2NzMvMzEwMS8xNDM4CmYgNjczLzMxMDEvMTQzOCA2ODUvMzA5MC8xNDI3IDY4NC8zMDkxLzE0MjggNjcyLzMxMDIvMTQzOQpmIDY3Mi8zMTAyLzE0MzkgNjg0LzMwOTEvMTQyOCA2ODMvMzA5Mi8xNDI5IDY3MS8zMTAzLzE0NDAKZiA2NzEvMzEwMy8xNDQwIDY4My8zMDkyLzE0MjkgNjgyLzMwOTMvMTQzMCA2NzAvMzEwNC8xNDQxCmYgNjcwLzMxMDQvMTQ0MSA2ODIvMzA5My8xNDMwIDY4MS8zMDk0LzE0MzEgNjY5LzMxMDUvMTQ0MgpmIDY2OS8zMTA1LzE0NDIgNjgxLzMwOTQvMTQzMSA2NzkvMjc3NC8xMTExIDY2Ny8yNzczLzExMTAKZiA2NTYvMzEwNi8xNDQzIDY2OC8zMDk1LzE0MzIgNjc4LzMwOTYvMTQzMyA2NjYvMzEwNy8xNDQ0CmYgNjY2LzMxMDcvMTQ0NCA2NzgvMzA5Ni8xNDMzIDY3Ny8zMDk3LzE0MzQgNjY1LzMxMDgvMTQ0NQpmIDY2NS8zMTA4LzE0NDUgNjc3LzMwOTcvMTQzNCA2NzYvMzA5OC8xNDM1IDY2NC8zMTA5LzE0NDYKZiA2NjQvMzEwOS8xNDQ2IDY3Ni8zMDk4LzE0MzUgNjc1LzMwOTkvMTQzNiA2NjMvMzExMC8xNDQ3CmYgNjYzLzMxMTAvMTQ0NyA2NzUvMzA5OS8xNDM2IDY3NC8zMTAwLzE0MzcgNjYyLzMxMTEvMTQ0OApmIDY2Mi8zMTExLzE0NDggNjc0LzMxMDAvMTQzNyA2NzMvMzEwMS8xNDM4IDY2MS8zMTEyLzE0NDkKZiA2NjEvMzExMi8xNDQ5IDY3My8zMTAxLzE0MzggNjcyLzMxMDIvMTQzOSA2NjAvMzExMy8xNDUwCmYgNjYwLzMxMTMvMTQ1MCA2NzIvMzEwMi8xNDM5IDY3MS8zMTAzLzE0NDAgNjU5LzMxMTQvMTQ1MQpmIDY1OS8zMTE0LzE0NTEgNjcxLzMxMDMvMTQ0MCA2NzAvMzEwNC8xNDQxIDY1OC8zMTE1LzE0NTIKZiA2NTgvMzExNS8xNDUyIDY3MC8zMTA0LzE0NDEgNjY5LzMxMDUvMTQ0MiA2NTcvMzExNi8xNDUzCmYgNjU3LzMxMTYvMTQ1MyA2NjkvMzEwNS8xNDQyIDY2Ny8yNzczLzExMTAgNjU1LzI3NTAvMTA4OQpmIDY0NC8yNzQ2LzEwODUgNjU2LzMxMDYvMTQ0MyA2NjYvMzEwNy8xNDQ0IDY1NC8zMTE3LzE0NTQKZiA2NTQvMzExNy8xNDU0IDY2Ni8zMTA3LzE0NDQgNjY1LzMxMDgvMTQ0NSA2NTMvMzExOC8xNDU1CmYgNjUzLzMxMTgvMTQ1NSA2NjUvMzEwOC8xNDQ1IDY2NC8zMTA5LzE0NDYgNjUyLzMxMTkvMTQ1NgpmIDY1Mi8zMTE5LzE0NTYgNjY0LzMxMDkvMTQ0NiA2NjMvMzExMC8xNDQ3IDY1MS8zMTIwLzE0NTcKZiA2NTEvMzEyMC8xNDU3IDY2My8zMTEwLzE0NDcgNjYyLzMxMTEvMTQ0OCA2NTAvMzEyMS8xNDU4CmYgNjUwLzMxMjEvMTQ1OCA2NjIvMzExMS8xNDQ4IDY2MS8zMTEyLzE0NDkgNjQ5LzMxMjIvMTQ1OQpmIDY0OS8zMTIyLzE0NTkgNjYxLzMxMTIvMTQ0OSA2NjAvMzExMy8xNDUwIDY0OC8zMTIzLzE0NjAKZiA2NDgvMzEyMy8xNDYwIDY2MC8zMTEzLzE0NTAgNjU5LzMxMTQvMTQ1MSA2NDcvMzEyNC8xNDYxCmYgNjQ3LzMxMjQvMTQ2MSA2NTkvMzExNC8xNDUxIDY1OC8zMTE1LzE0NTIgNjQ2LzMxMjUvMTQ2MgpmIDY0Ni8zMTI1LzE0NjIgNjU4LzMxMTUvMTQ1MiA2NTcvMzExNi8xNDUzIDY0NS8zMTI2LzE0NjMKZiA2NDUvMzEyNi8xNDYzIDY1Ny8zMTE2LzE0NTMgNjU1LzI3NTAvMTA4OSA2NDMvMjc0OS8xMDg4CmYgNjIwLzMxMjcvMTQ2NCA2MzEvMzEyOC8xNDY1IDYzMy8zMTI5LzE0NjYgNjMwLzMxMzAvMTQ2NwpmIDYzMC8zMTMwLzE0NjcgNjMzLzMxMjkvMTQ2NiA2MzQvMzEzMS8xNDY4IDYyOS8zMTMyLzE0NjkKZiA2MjkvMzEzMi8xNDY5IDYzNC8zMTMxLzE0NjggNjM1LzMxMzMvMTQ3MCA2MjgvMzEzNC8xNDcxCmYgNjI4LzMxMzQvMTQ3MSA2MzUvMzEzMy8xNDcwIDYzNi8zMTM1LzE0NzIgNjI3LzMxMzYvMTQ3MwpmIDYyNy8zMTM2LzE0NzMgNjM2LzMxMzUvMTQ3MiA2MzcvMzEzNy8xNDc0IDYyNi8zMTM4LzE0NzUKZiA2MjYvMzEzOC8xNDc1IDYzNy8zMTM3LzE0NzQgNjM4LzMxMzkvMTQ3NiA2MjUvMzE0MC8xNDc3CmYgNjI1LzMxNDAvMTQ3NyA2MzgvMzEzOS8xNDc2IDYzOS8zMTQxLzE0NzggNjI0LzMxNDIvMTQ3OQpmIDYyNC8zMTQyLzE0NzkgNjM5LzMxNDEvMTQ3OCA2NDAvMzE0My8xNDgwIDYyMy8zMTQ0LzE0ODEKZiA2MjMvMzE0NC8xNDgxIDY0MC8zMTQzLzE0ODAgNjQxLzMxNDUvMTQ4MiA2MjIvMzE0Ni8xNDgzCmYgNjIyLzMxNDYvMTQ4MyA2NDEvMzE0NS8xNDgyIDY0Mi8zMTQ3LzE0ODQgNjIxLzMxNDgvMTQ4NQpmIDYyMS8zMTQ4LzE0ODUgNjQyLzMxNDcvMTQ4NCA2MzIvMjc2OS8xMTA2IDYxOS8yNzY3LzExMDQKZiA2MDgvMzE0OS8xNDg2IDYyMC8zMTI3LzE0NjQgNjMwLzMxMzAvMTQ2NyA2MTgvMzE1MC8xNDg3CmYgNjE4LzMxNTAvMTQ4NyA2MzAvMzEzMC8xNDY3IDYyOS8zMTMyLzE0NjkgNjE3LzMxNTEvMTQ4OApmIDYxNy8zMTUxLzE0ODggNjI5LzMxMzIvMTQ2OSA2MjgvMzEzNC8xNDcxIDYxNi8zMTUyLzE0ODkKZiA2MTYvMzE1Mi8xNDg5IDYyOC8zMTM0LzE0NzEgNjI3LzMxMzYvMTQ3MyA2MTUvMzE1My8xNDkwCmYgNjE1LzMxNTMvMTQ5MCA2MjcvMzEzNi8xNDczIDYyNi8zMTM4LzE0NzUgNjE0LzMxNTQvMTQ5MQpmIDYxNC8zMTU0LzE0OTEgNjI2LzMxMzgvMTQ3NSA2MjUvMzE0MC8xNDc3IDYxMy8zMTU1LzE0OTIKZiA2MTMvMzE1NS8xNDkyIDYyNS8zMTQwLzE0NzcgNjI0LzMxNDIvMTQ3OSA2MTIvMzE1Ni8xNDkzCmYgNjEyLzMxNTYvMTQ5MyA2MjQvMzE0Mi8xNDc5IDYyMy8zMTQ0LzE0ODEgNjExLzMxNTcvMTQ5NApmIDYxMS8zMTU3LzE0OTQgNjIzLzMxNDQvMTQ4MSA2MjIvMzE0Ni8xNDgzIDYxMC8zMTU4LzE0OTUKZiA2MTAvMzE1OC8xNDk1IDYyMi8zMTQ2LzE0ODMgNjIxLzMxNDgvMTQ4NSA2MDkvMzE1OS8xNDk2CmYgNjA5LzMxNTkvMTQ5NiA2MjEvMzE0OC8xNDg1IDYxOS8yNzY3LzExMDQgNjA3LzI3NjUvMTEwMgpmIDU5Ni8zMTYwLzE0OTcgNjA4LzMxNDkvMTQ4NiA2MTgvMzE1MC8xNDg3IDYwNi8zMTYxLzE0OTgKZiA2MDYvMzE2MS8xNDk4IDYxOC8zMTUwLzE0ODcgNjE3LzMxNTEvMTQ4OCA2MDUvMzE2Mi8xNDk5CmYgNjA1LzMxNjIvMTQ5OSA2MTcvMzE1MS8xNDg4IDYxNi8zMTUyLzE0ODkgNjA0LzMxNjMvMTUwMApmIDYwNC8zMTYzLzE1MDAgNjE2LzMxNTIvMTQ4OSA2MTUvMzE1My8xNDkwIDYwMy8zMTY0LzE1MDEKZiA2MDMvMzE2NC8xNTAxIDYxNS8zMTUzLzE0OTAgNjE0LzMxNTQvMTQ5MSA2MDIvMzE2NS8xNTAyCmYgNjAyLzMxNjUvMTUwMiA2MTQvMzE1NC8xNDkxIDYxMy8zMTU1LzE0OTIgNjAxLzMxNjYvMTUwMwpmIDYwMS8zMTY2LzE1MDMgNjEzLzMxNTUvMTQ5MiA2MTIvMzE1Ni8xNDkzIDYwMC8zMTY3LzE1MDQKZiA2MDAvMzE2Ny8xNTA0IDYxMi8zMTU2LzE0OTMgNjExLzMxNTcvMTQ5NCA1OTkvMzE2OC8xNTA1CmYgNTk5LzMxNjgvMTUwNSA2MTEvMzE1Ny8xNDk0IDYxMC8zMTU4LzE0OTUgNTk4LzMxNjkvMTUwNgpmIDU5OC8zMTY5LzE1MDYgNjEwLzMxNTgvMTQ5NSA2MDkvMzE1OS8xNDk2IDU5Ny8zMTcwLzE1MDcKZiA1OTcvMzE3MC8xNTA3IDYwOS8zMTU5LzE0OTYgNjA3LzI3NjUvMTEwMiA1OTUvMjc2My8xMTAwCmYgNTg0LzMxNzEvMTUwOCA1OTYvMzE2MC8xNDk3IDYwNi8zMTYxLzE0OTggNTk0LzMxNzIvMTUwOQpmIDU5NC8zMTcyLzE1MDkgNjA2LzMxNjEvMTQ5OCA2MDUvMzE2Mi8xNDk5IDU5My8zMTczLzE1MTAKZiA1OTMvMzE3My8xNTEwIDYwNS8zMTYyLzE0OTkgNjA0LzMxNjMvMTUwMCA1OTIvMzE3NC8xNTExCmYgNTkyLzMxNzQvMTUxMSA2MDQvMzE2My8xNTAwIDYwMy8zMTY0LzE1MDEgNTkxLzMxNzUvMTUxMgpmIDU5MS8zMTc1LzE1MTIgNjAzLzMxNjQvMTUwMSA2MDIvMzE2NS8xNTAyIDU5MC8zMTc2LzE1MTMKZiA1OTAvMzE3Ni8xNTEzIDYwMi8zMTY1LzE1MDIgNjAxLzMxNjYvMTUwMyA1ODkvMzE3Ny8xNTE0CmYgNTg5LzMxNzcvMTUxNCA2MDEvMzE2Ni8xNTAzIDYwMC8zMTY3LzE1MDQgNTg4LzMxNzgvMTUxNQpmIDU4OC8zMTc4LzE1MTUgNjAwLzMxNjcvMTUwNCA1OTkvMzE2OC8xNTA1IDU4Ny8zMTc5LzE1MTYKZiA1ODcvMzE3OS8xNTE2IDU5OS8zMTY4LzE1MDUgNTk4LzMxNjkvMTUwNiA1ODYvMzE4MC8xNTE3CmYgNTg2LzMxODAvMTUxNyA1OTgvMzE2OS8xNTA2IDU5Ny8zMTcwLzE1MDcgNTg1LzMxODEvMTUxOApmIDU4NS8zMTgxLzE1MTggNTk3LzMxNzAvMTUwNyA1OTUvMjc2My8xMTAwIDU4My8yNzYyLzEwOTgKZiA1NzIvMzE4Mi8xNTE5IDU4NC8zMTgzLzE1MDggNTk0LzMxODQvMTUwOSA1ODIvMzE4NS8xNTIwCmYgNTgyLzMxODUvMTUyMCA1OTQvMzE4NC8xNTA5IDU5My8zMTg2LzE1MTAgNTgxLzMxODcvMTUyMQpmIDU4MS8zMTg3LzE1MjEgNTkzLzMxODYvMTUxMCA1OTIvMzE4OC8xNTExIDU4MC8zMTg5LzE1MjIKZiA1ODAvMzE4OS8xNTIyIDU5Mi8zMTg4LzE1MTEgNTkxLzMxOTAvMTUxMiA1NzkvMzE5MS8xNTIzCmYgNTc5LzMxOTEvMTUyMyA1OTEvMzE5MC8xNTEyIDU5MC8zMTkyLzE1MTMgNTc4LzMxOTMvMTUyNApmIDU3OC8zMTkzLzE1MjQgNTkwLzMxOTIvMTUxMyA1ODkvMzE5NC8xNTE0IDU3Ny8zMTk1LzE1MjUKZiA1NzcvMzE5NS8xNTI1IDU4OS8zMTk0LzE1MTQgNTg4LzMxOTYvMTUxNSA1NzYvMzE5Ny8xNTI2CmYgNTc2LzMxOTcvMTUyNiA1ODgvMzE5Ni8xNTE1IDU4Ny8zMTk4LzE1MTYgNTc1LzMxOTkvMTUyNwpmIDU3NS8zMTk5LzE1MjcgNTg3LzMxOTgvMTUxNiA1ODYvMzIwMC8xNTE3IDU3NC8zMjAxLzE1MjgKZiA1NzQvMzIwMS8xNTI4IDU4Ni8zMjAwLzE1MTcgNTg1LzMyMDIvMTUxOCA1NzMvMzIwMy8xNTI5CmYgNTczLzMyMDMvMTUyOSA1ODUvMzIwMi8xNTE4IDU4My8yNzU5LzEwOTggNTcxLzI3NTcvMTA5NgpmIDU2MC8zMjA0LzE1MzAgNTcyLzMxODIvMTUxOSA1ODIvMzE4NS8xNTIwIDU3MC8zMjA1LzE1MzEKZiA1NzAvMzIwNS8xNTMxIDU4Mi8zMTg1LzE1MjAgNTgxLzMxODcvMTUyMSA1NjkvMzIwNi8xNTMyCmYgNTY5LzMyMDYvMTUzMiA1ODEvMzE4Ny8xNTIxIDU4MC8zMTg5LzE1MjIgNTY4LzMyMDcvMTUzMwpmIDU2OC8zMjA3LzE1MzMgNTgwLzMxODkvMTUyMiA1NzkvMzE5MS8xNTIzIDU2Ny8zMjA4LzE1MzQKZiA1NjcvMzIwOC8xNTM0IDU3OS8zMTkxLzE1MjMgNTc4LzMxOTMvMTUyNCA1NjYvMzIwOS8xNTM1CmYgNTY2LzMyMDkvMTUzNSA1NzgvMzE5My8xNTI0IDU3Ny8zMTk1LzE1MjUgNTY1LzMyMTAvMTUzNgpmIDU2NS8zMjEwLzE1MzYgNTc3LzMxOTUvMTUyNSA1NzYvMzE5Ny8xNTI2IDU2NC8zMjExLzE1MzcKZiA1NjQvMzIxMS8xNTM3IDU3Ni8zMTk3LzE1MjYgNTc1LzMxOTkvMTUyNyA1NjMvMzIxMi8xNTM4CmYgNTYzLzMyMTIvMTUzOCA1NzUvMzE5OS8xNTI3IDU3NC8zMjAxLzE1MjggNTYyLzMyMTMvMTUzOQpmIDU2Mi8zMjEzLzE1MzkgNTc0LzMyMDEvMTUyOCA1NzMvMzIwMy8xNTI5IDU2MS8zMjE0LzE1NDAKZiA1NjEvMzIxNC8xNTQwIDU3My8zMjAzLzE1MjkgNTcxLzI3NTcvMTA5NiA1NTkvMjc1NS8xMDk0CmYgNTQ4LzMyMTUvMTU0MSA1NjAvMzIwNC8xNTMwIDU3MC8zMjA1LzE1MzEgNTU4LzMyMTYvMTU0MgpmIDU1OC8zMjE2LzE1NDIgNTcwLzMyMDUvMTUzMSA1NjkvMzIwNi8xNTMyIDU1Ny8zMjE3LzE1NDMKZiA1NTcvMzIxNy8xNTQzIDU2OS8zMjA2LzE1MzIgNTY4LzMyMDcvMTUzMyA1NTYvMzIxOC8xNTQ0CmYgNTU2LzMyMTgvMTU0NCA1NjgvMzIwNy8xNTMzIDU2Ny8zMjA4LzE1MzQgNTU1LzMyMTkvMTU0NQpmIDU1NS8zMjE5LzE1NDUgNTY3LzMyMDgvMTUzNCA1NjYvMzIwOS8xNTM1IDU1NC8zMjIwLzE1NDYKZiA1NTQvMzIyMC8xNTQ2IDU2Ni8zMjA5LzE1MzUgNTY1LzMyMTAvMTUzNiA1NTMvMzIyMS8xNTQ3CmYgNTUzLzMyMjEvMTU0NyA1NjUvMzIxMC8xNTM2IDU2NC8zMjExLzE1MzcgNTUyLzMyMjIvMTU0OApmIDU1Mi8zMjIyLzE1NDggNTY0LzMyMTEvMTUzNyA1NjMvMzIxMi8xNTM4IDU1MS8zMjIzLzE1NDkKZiA1NTEvMzIyMy8xNTQ5IDU2My8zMjEyLzE1MzggNTYyLzMyMTMvMTUzOSA1NTAvMzIyNC8xNTUwCmYgNTUwLzMyMjQvMTU1MCA1NjIvMzIxMy8xNTM5IDU2MS8zMjE0LzE1NDAgNTQ5LzMyMjUvMTU1MQpmIDU0OS8zMjI1LzE1NTEgNTYxLzMyMTQvMTU0MCA1NTkvMjc1NS8xMDk0IDU0Ny8yNzQxLzEwODAKZiA1MzYvMzIyNi8xNTUyIDU0OC8zMjE1LzE1NDEgNTU4LzMyMTYvMTU0MiA1NDYvMzIyNy8xNTUzCmYgNTQ2LzMyMjcvMTU1MyA1NTgvMzIxNi8xNTQyIDU1Ny8zMjE3LzE1NDMgNTQ1LzMyMjgvMTU1NApmIDU0NS8zMjI4LzE1NTQgNTU3LzMyMTcvMTU0MyA1NTYvMzIxOC8xNTQ0IDU0NC8zMjI5LzE1NTUKZiA1NDQvMzIyOS8xNTU1IDU1Ni8zMjE4LzE1NDQgNTU1LzMyMTkvMTU0NSA1NDMvMzIzMC8xNTU2CmYgNTQzLzMyMzAvMTU1NiA1NTUvMzIxOS8xNTQ1IDU1NC8zMjIwLzE1NDYgNTQyLzMyMzEvMTU1NwpmIDU0Mi8zMjMxLzE1NTcgNTU0LzMyMjAvMTU0NiA1NTMvMzIyMS8xNTQ3IDU0MS8zMjMyLzE1NTgKZiA1NDEvMzIzMi8xNTU4IDU1My8zMjIxLzE1NDcgNTUyLzMyMjIvMTU0OCA1NDAvMzIzMy8xNTU5CmYgNTQwLzMyMzMvMTU1OSA1NTIvMzIyMi8xNTQ4IDU1MS8zMjIzLzE1NDkgNTM5LzMyMzQvMTU2MApmIDUzOS8zMjM0LzE1NjAgNTUxLzMyMjMvMTU0OSA1NTAvMzIyNC8xNTUwIDUzOC8zMjM1LzE1NjEKZiA1MzgvMzIzNS8xNTYxIDU1MC8zMjI0LzE1NTAgNTQ5LzMyMjUvMTU1MSA1MzcvMzIzNi8xNTYyCmYgNTM3LzMyMzYvMTU2MiA1NDkvMzIyNS8xNTUxIDU0Ny8yNzQxLzEwODAgNTM1LzI3NDAvMTA3OQpmIDUyNC8zMjM3LzE1NjMgNTM2LzMyMjYvMTU1MiA1NDYvMzIyNy8xNTUzIDUzNC8zMjM4LzE1NjQKZiA1MzQvMzIzOC8xNTY0IDU0Ni8zMjI3LzE1NTMgNTQ1LzMyMjgvMTU1NCA1MzMvMzIzOS8xNTY1CmYgNTMzLzMyMzkvMTU2NSA1NDUvMzIyOC8xNTU0IDU0NC8zMjI5LzE1NTUgNTMyLzMyNDAvMTU2NgpmIDUzMi8zMjQwLzE1NjYgNTQ0LzMyMjkvMTU1NSA1NDMvMzIzMC8xNTU2IDUzMS8zMjQxLzE1NjcKZiA1MzEvMzI0MS8xNTY3IDU0My8zMjMwLzE1NTYgNTQyLzMyMzEvMTU1NyA1MzAvMzI0Mi8xNTY4CmYgNTMwLzMyNDIvMTU2OCA1NDIvMzIzMS8xNTU3IDU0MS8zMjMyLzE1NTggNTI5LzMyNDMvMTU2OQpmIDUyOS8zMjQzLzE1NjkgNTQxLzMyMzIvMTU1OCA1NDAvMzIzMy8xNTU5IDUyOC8zMjQ0LzE1NzAKZiA1MjgvMzI0NC8xNTcwIDU0MC8zMjMzLzE1NTkgNTM5LzMyMzQvMTU2MCA1MjcvMzI0NS8xNTcxCmYgNTI3LzMyNDUvMTU3MSA1MzkvMzIzNC8xNTYwIDUzOC8zMjM1LzE1NjEgNTI2LzMyNDYvMTU3MgpmIDUyNi8zMjQ2LzE1NzIgNTM4LzMyMzUvMTU2MSA1MzcvMzIzNi8xNTYyIDUyNS8zMjQ3LzE1NzMKZiA1MjUvMzI0Ny8xNTczIDUzNy8zMjM2LzE1NjIgNTM1LzI3NDAvMTA3OSA1MjMvMjc1My8xMDkyCmYgNjQzLzI3NDkvMTA4OCA4NzIvMjc5Mi8xMTI5IDg4Mi8yOTMwLzEyNjcgNjQ1LzMxMjYvMTQ2MwpmIDY0NS8zMTI2LzE0NjMgODgyLzI5MzAvMTI2NyA4ODEvMjkyOC8xMjY1IDY0Ni8zMTI1LzE0NjIKZiA2NDYvMzEyNS8xNDYyIDg4MS8yOTI4LzEyNjUgODgwLzI5MjYvMTI2MyA2NDcvMzEyNC8xNDYxCmYgNjQ3LzMxMjQvMTQ2MSA4ODAvMjkyNi8xMjYzIDg3OS8yOTI0LzEyNjEgNjQ4LzMxMjMvMTQ2MApmIDY0OC8zMTIzLzE0NjAgODc5LzI5MjQvMTI2MSA4NzgvMjkyMi8xMjU5IDY0OS8zMTIyLzE0NTkKZiA2NDkvMzEyMi8xNDU5IDg3OC8yOTIyLzEyNTkgODc3LzI5MjAvMTI1NyA2NTAvMzEyMS8xNDU4CmYgNjUwLzMxMjEvMTQ1OCA4NzcvMjkyMC8xMjU3IDg3Ni8yOTE4LzEyNTUgNjUxLzMxMjAvMTQ1NwpmIDY1MS8zMTIwLzE0NTcgODc2LzI5MTgvMTI1NSA4NzUvMjkxNi8xMjUzIDY1Mi8zMTE5LzE0NTYKZiA2NTIvMzExOS8xNDU2IDg3NS8yOTE2LzEyNTMgODc0LzI5MTQvMTI1MSA2NTMvMzExOC8xNDU1CmYgNjUzLzMxMTgvMTQ1NSA4NzQvMjkxNC8xMjUxIDg3My8yOTEyLzEyNDkgNjU0LzMxMTcvMTQ1NApmIDY1NC8zMTE3LzE0NTQgODczLzI5MTIvMTI0OSA4NzEvMjc0Ny8xMDg2IDY0NC8yNzQ2LzEwODUKZiA2MzEvMzEyOC8xNDY1IDc1Mi8yNzgwLzExMTcgNzYyLzMwMzgvMTM3NSA2MzMvMzEyOS8xNDY2CmYgNjMzLzMxMjkvMTQ2NiA3NjIvMzAzOC8xMzc1IDc2MS8zMDM2LzEzNzMgNjM0LzMxMzEvMTQ2OApmIDYzNC8zMTMxLzE0NjggNzYxLzMwMzYvMTM3MyA3NjAvMzAzNC8xMzcxIDMxODIvMzI0OC8xNTc0IDMxODMvMzI0OS8xNTc0IDYzNS8zMTMzLzE0NzAKZiA2MzUvMzEzMy8xNDcwIDMxODMvMzI0OS8xNTc0IDMxNzkvMzI1MC8xNTc1IDYzNi8zMTM1LzE0NzIKZiA2MzYvMzEzNS8xNDcyIDMxNzkvMzI1MC8xNTc1IDMxODcvMzI1MS8xNTc2IDYzNy8zMTM3LzE0NzQKZiA2MzcvMzEzNy8xNDc0IDMxODcvMzI1MS8xNTc2IDMxODQvMzI1Mi8xNTc3IDYzOC8zMTM5LzE0NzYKZiA2MzgvMzEzOS8xNDc2IDMxODQvMzI1Mi8xNTc3IDMxODAvMzI1My8xNTc4IDYzOS8zMTQxLzE0NzgKZiA2MzkvMzE0MS8xNDc4IDMxODAvMzI1My8xNTc4IDMxODkvMzI1NC8xNTc5IDY0MC8zMTQzLzE0ODAKZiA2NDAvMzE0My8xNDgwIDMxODkvMzI1NC8xNTc5IDMxODgvMzI1NS8xNTc5IDc1NS8zMDI0LzEzNjEgNzU0LzMwMjIvMTM1OSA2NDEvMzE0NS8xNDgyCmYgNjQxLzMxNDUvMTQ4MiA3NTQvMzAyMi8xMzU5IDc1My8zMDIwLzEzNTcgNjQyLzMxNDcvMTQ4NApmIDY0Mi8zMTQ3LzE0ODQgNzUzLzMwMjAvMTM1NyA3NTEvMjc3MS8xMTA4IDYzMi8yNzY5LzExMDYKZiA3NjMvMjc0My8xMDgyIDk5Mi8yODAyLzExMzkgMTAwMi8yODIyLzExNTkgNzY1LzMwMTgvMTM1NQpmIDc2NS8zMDE4LzEzNTUgMTAwMi8yODIyLzExNTkgMTAwMS8yODIwLzExNTcgNzY2LzMwMTcvMTM1NApmIDc2Ni8zMDE3LzEzNTQgMTAwMS8yODIwLzExNTcgMTAwMC8yODE4LzExNTUgMzE1Ny8zMjU2LzE1ODAgMzE1OC8zMjU3LzE1ODAgNzY3LzMwMTYvMTM1MwpmIDc2Ny8zMDE2LzEzNTMgMzE1OC8zMjU3LzE1ODAgMzE2Ni8zMjU4LzE1ODEgMzE2My8zMjU5LzE1ODIgMzE0MS8zMjYwLzE1ODIgMzE0NS8zMjYxLzE1ODMgMzE0Ni8zMjYyLzE1ODMgMzE0Ny8zMjYzLzE1ODMgMzE0OC8zMjY0LzE1ODMgMzE0Mi8zMjY1LzE1ODIgMzExNy8zMjY2LzE1ODIgMzEyOC8zMjY3LzE1ODMgMzEyNy8zMjY4LzE1ODMgMzEyNi8zMjY5LzE1ODMgMzExNS8zMjcwLzE1ODIgNzY4LzMwMTUvMTM1MgpmIDc2OC8zMDE1LzEzNTIgMzExNS8zMjcwLzE1ODIgMzEyOS8zMjcxLzE1ODQgMzEyMi8zMjcyLzE1ODUgNzY5LzMwMTQvMTM1MQpmIDc2OS8zMDE0LzEzNTEgMzEyMi8zMjcyLzE1ODUgMzEyMy8zMjczLzE1ODYgMzEyMC8zMjc0LzE1ODcgNzcwLzMwMTMvMTM1MApmIDc3MC8zMDEzLzEzNTAgMzEyMC8zMjc0LzE1ODcgMzEyNS8zMjc1LzE1ODggMzEyMS8zMjc2LzE1ODkgNzcxLzMwMTIvMTM0OQpmIDc3MS8zMDEyLzEzNDkgMzEyMS8zMjc2LzE1ODkgMzEzNS8zMjc3LzE1OTAgMzEzNC8zMjc4LzE1OTAgMzEzMy8zMjc5LzE1OTAgMzEzMi8zMjgwLzE1OTAgMzEzMS8zMjgxLzE1OTAgMzEzMC8zMjgyLzE1OTAgMzExOS8zMjgzLzE1ODkgMzE0MC8zMjg0LzE1ODkgMzE0OS8zMjg1LzE1OTAgMzE1MC8zMjg2LzE1OTAgMzE1MS8zMjg3LzE1OTAgMzE1Mi8zMjg4LzE1OTAgMzEzNi8zMjg5LzE1ODkgMzE1OS8zMjkwLzE1ODkgMzE3MC8zMjkxLzE1OTAgMzE3MS8zMjkyLzE1OTAgMzE3Mi8zMjkzLzE1OTAgMzE3My8zMjk0LzE1OTAgMzE2NC8zMjk1LzE1ODkgOTk2LzI4MTAvMTE0NyA5OTUvMjgwOC8xMTQ1IDc3Mi8zMDExLzEzNDgKZiA3NzIvMzAxMS8xMzQ4IDk5NS8yODA4LzExNDUgOTk0LzI4MDYvMTE0MyA3NzMvMzAxMC8xMzQ3CmYgNzczLzMwMTAvMTM0NyA5OTQvMjgwNi8xMTQzIDk5My8yODA0LzExNDEgNzc0LzMwMDkvMTM0NgpmIDc3NC8zMDA5LzEzNDYgOTkzLzI4MDQvMTE0MSA5OTEvMjc4My8xMTIwIDc2NC8yNzgyLzExMTkKZiA4ODMvMjc5My8xMTMwIDUyNC8zMjM3LzE1NjMgNTM0LzMyMzgvMTU2NCA4ODUvMjkxMC8xMjQ3CmYgODg1LzI5MTAvMTI0NyA1MzQvMzIzOC8xNTY0IDUzMy8zMjM5LzE1NjUgMTgwMi8zMjk2LzE1OTEgMTgwMy8zMjk3LzE1OTEgODg2LzI5MDkvMTI0NgpmIDg4Ni8yOTA5LzEyNDYgMTgwMy8zMjk3LzE1OTEgMTgwMC8zMjk4LzE1OTIgODg3LzI5MDgvMTI0NQpmIDg4Ny8yOTA4LzEyNDUgMTgwMC8zMjk4LzE1OTIgMTc5OC8zMjk5LzE1OTMgMjE1NC8zMzAwLzE1OTQgMjE1NS8zMzAxLzE1OTQgMjE0NS8zMzAyLzE1OTQgMjE0Ni8zMzAzLzE1OTQgMjEzNi8zMzA0LzE1OTQgMjEzNy8zMzA1LzE1OTQgODg4LzI5MDcvMTI0NApmIDg4OC8yOTA3LzEyNDQgMjEzNy8zMzA1LzE1OTQgMjEzNS8zMzA2LzE1OTUgODg5LzI5MDYvMTI0MwpmIDg4OS8yOTA2LzEyNDMgMjEzNS8zMzA2LzE1OTUgMjE0MS8zMzA3LzE1OTYgODkwLzI5MDUvMTI0MgpmIDg5MC8yOTA1LzEyNDIgMjE0MS8zMzA3LzE1OTYgMjEzOC8zMzA4LzE1OTcgODkxLzI5MDQvMTI0MQpmIDg5MS8yOTA0LzEyNDEgMjEzOC8zMzA4LzE1OTcgMjE0OC8zMzA5LzE1OTcgMjE0OS8zMzEwLzE1OTcgMTc5OS8zMzExLzE1OTcgMTgwNy8zMzEyLzE1OTggODkyLzI5MDMvMTI0MApmIDg5Mi8yOTAzLzEyNDAgMTgwNy8zMzEyLzE1OTggMTgwNi8zMzEzLzE1OTggNTI3LzMyNDUvMTU3MSA1MjYvMzI0Ni8xNTcyIDg5My8yOTAyLzEyMzkKZiA4OTMvMjkwMi8xMjM5IDUyNi8zMjQ2LzE1NzIgNTI1LzMyNDcvMTU3MyA4OTQvMjkwMS8xMjM4CmYgODk0LzI5MDEvMTIzOCA1MjUvMzI0Ny8xNTczIDUyMy8yNzUzLzEwOTIgODg0LzI3NTIvMTA5MQpmIDUyNC8zMjM3LzE1NjMgMTA4My8xNTg5LzE2MSAxMDg0LzE1ODQvMTU2IDUzNi8zMjI2LzE1NTIKZiA2MzEvMzEyOC8xNDY1IDEwOTMvMTU2OS8xNDMgMTA5NC8xNTkxLzE2MyA3NTIvMjc4MC8xMTE3CmYgODgzLzI3OTMvMTEzMCAxMDg1LzE1ODYvMTU4IDEwODMvMTU4OS8xNjEgNTI0LzMyMzcvMTU2MwpmIDUzNi8zMjI2LzE1NTIgMTA4NC8xNTg0LzE1NiAxMDg2LzE1ODIvMTU0IDU0OC8zMjE1LzE1NDEKZiA1NDgvMzIxNS8xNTQxIDEwODYvMTU4Mi8xNTQgMTA4Ny8xNTgwLzE1MiA1NjAvMzIwNC8xNTMwCmYgNTYwLzMyMDQvMTUzMCAxMDg3LzE1ODAvMTUyIDEwODgvMTU3Ni8xNTAgNTcyLzMxODIvMTUxOQpmIDU3Mi8zMTgyLzE1MTkgMTA4OC8xNTc2LzE1MCAxMDg5LzE1NzkvMTQ4IDU4NC8zMTgzLzE1MDgKZiA1ODQvMzE3MS8xNTA4IDEwODkvMTU3NC8xNDggMTA5MC8xNTcyLzE0NiA1OTYvMzE2MC8xNDk3CmYgNTk2LzMxNjAvMTQ5NyAxMDkwLzE1NzIvMTQ2IDEwOTEvMTU3MC8xNDQgNjA4LzMxNDkvMTQ4NgpmIDYwOC8zMTQ5LzE0ODYgMTA5MS8xNTcwLzE0NCAxMDkyLzE1NjYvMTQwIDYyMC8zMTI3LzE0NjQKZiA2MjAvMzEyNy8xNDY0IDEwOTIvMTU2Ni8xNDAgMTA5My8xNTY5LzE0MyA2MzEvMzEyOC8xNDY1CmYgNzYzLzI3NDMvMTA4MiAxMTA1LzE1NjQvMTM2IDExMDYvMTU2NS8xMzkgOTkyLzI4MDIvMTEzOQpmIDY0My8yNzQ5LzEwODggMTA5NS8xNTYwLzEzMiAxMDk2LzE1NjMvMTM1IDg3Mi8yNzkyLzExMjkKZiA3NjQvMjc4Mi8xMTE5IDExNDUvMjc4MS8xMTE4IDExNDcvMzMxNC8xNTk5IDc3Ni8yOTk4LzEzMzUKZiA2NDQvMjc0Ni8xMDg1IDExMzUvMjc0NS8xMDg0IDExMzcvMzMxNS8xNjAwIDY1Ni8zMTA2LzE0NDMKZiA2NTYvMzEwNi8xNDQzIDExMzcvMzMxNS8xNjAwIDExMzgvMzMxNi8xNjAxIDY2OC8zMDk1LzE0MzIKZiA2NjgvMzA5NS8xNDMyIDExMzgvMzMxNi8xNjAxIDExMzkvMzMxNy8xNjAyIDY4MC8zMDg0LzE0MjEKZiA2ODAvMzA4NC8xNDIxIDExMzkvMzMxNy8xNjAyIDExNDAvMzMxOC8xNjAzIDY5Mi8zMDczLzE0MTAKZiA2OTIvMzA3My8xNDEwIDExNDAvMzMxOC8xNjAzIDExNDEvMzMxOS8xNjA0IDcwNC8zMDYyLzEzOTkKZiA3MDQvMzA2Mi8xMzk5IDExNDEvMzMxOS8xNjA0IDExNDIvMzMyMC8xNjA1IDcxNi8zMDUxLzEzODgKZiA3MTYvMzA1MS8xMzg4IDExNDIvMzMyMC8xNjA1IDExNDMvMzMyMS8xNjA2IDcyOC8zMDQwLzEzNzcKZiA3MjgvMzA0MC8xMzc3IDExNDMvMzMyMS8xNjA2IDExNDQvMzMyMi8xNjA3IDc0MC8zMDE5LzEzNTYKZiA3NDAvMzAxOS8xMzU2IDExNDQvMzMyMi8xNjA3IDExMzQvMjc3Mi8xMTA5IDc1MS8yNzcxLzExMDgKZiA3NzYvMjk5OC8xMzM1IDExNDcvMzMxNC8xNTk5IDExNDgvMzMyMy8xNjA4IDc4OC8yOTg3LzEzMjQKZiA3ODgvMjk4Ny8xMzI0IDExNDgvMzMyMy8xNjA4IDExNDkvMzMyNC8xNjA5IDgwMC8yOTc2LzEzMTMKZiA4MDAvMjk3Ni8xMzEzIDExNDkvMzMyNC8xNjA5IDExNTAvMzMyNS8xNjEwIDgxMi8yOTY1LzEzMDIKZiA4MTIvMjk2NS8xMzAyIDExNTAvMzMyNS8xNjEwIDExNTEvMzMyNi8xNjExIDgyNC8yOTU0LzEyOTEKZiA4MjQvMjk1NC8xMjkxIDExNTEvMzMyNi8xNjExIDExNTIvMzMyNy8xNjEyIDgzNi8yOTQzLzEyODAKZiA4MzYvMjk0My8xMjgwIDExNTIvMzMyNy8xNjEyIDExNTMvMzMyOC8xNjEzIDg0OC8yOTMyLzEyNjkKZiA4NDgvMjkzMi8xMjY5IDExNTMvMzMyOC8xNjEzIDExNTQvMzMyOS8xNjE0IDg2MC8yOTExLzEyNDgKZiA4NjAvMjkxMS8xMjQ4IDExNTQvMzMyOS8xNjE0IDExMzYvMjc0OC8xMDg3IDg3MS8yNzQ3LzEwODYKZiA4OTYvMjg5MC8xMjI3IDExNTUvMzMzMC8xNjE1IDExNTYvMzMzMS8xNjE2IDkwOC8yODc5LzEyMTYKZiA5MDgvMjg3OS8xMjE2IDExNTYvMzMzMS8xNjE2IDExNTcvMzMzMi8xNjE3IDkyMC8yODY4LzEyMDUKZiA5MjAvMjg2OC8xMjA1IDExNTcvMzMzMi8xNjE3IDExNTgvMzMzMy8xNjE4IDkzMi8yODU3LzExOTQKZiA5MzIvMjg1Ny8xMTk0IDExNTgvMzMzMy8xNjE4IDExNTkvMzMzNC8xNjE5IDk0NC8yODQ2LzExODMKZiA5NDQvMjg0Ni8xMTgzIDExNTkvMzMzNC8xNjE5IDExNjAvMzMzNS8xNjIwIDk1Ni8yODM1LzExNzIKZiA5NTYvMjgzNS8xMTcyIDExNjAvMzMzNS8xNjIwIDExNjEvMzMzNi8xNjIxIDk2OC8yODI0LzExNjEKZiA5NjgvMjgyNC8xMTYxIDExNjEvMzMzNi8xNjIxIDExNjIvMzMzNy8xNjIyIDk4MC8yODAzLzExNDAKZiA5ODAvMjgwMy8xMTQwIDExNjIvMzMzNy8xNjIyIDExNDYvMjc4NC8xMTIxIDk5MS8yNzgzLzExMjAKZiA4ODQvMjc1Mi8xMDkxIDExMjMvMjc1MS8xMDkwIDExNTUvMzMzMC8xNjE1IDg5Ni8yODkwLzEyMjcKZiAxMzY4LzMzMzgvMTYyMyAxMzY2LzMzMzkvMTYyNCAxMzY1LzMzNDAvMTYyNCAxMzYxLzMzNDEvMTYyNCAxMzYwLzMzNDIvMTYyNSAzMTg1LzMzNDMvMTU3NSAzMTgxLzMzNDQvMTU3NgpmIDEzNzEvMzM0NS8xNjI2IDEzNzAvMzM0Ni8xNjI3IDEzNzIvMzM0Ny8xNjI3IDEzNjkvMzM0OC8xNjI3IDEzNjgvMzMzOC8xNjIzIDMxODEvMzM0NC8xNTc2IDMxOTAvMzM0OS8xNTc3CmYgMTM2My8zMzUwLzE2MjggMTM2Mi8zMzUxLzE2MjkgMTM2NC8zMzUyLzE2MjkgMTM2Ny8zMzUzLzE2MjkgMTM3MS8zMzQ1LzE2MjYgMzE5MC8zMzQ5LzE1NzcgMzE4Ni8zMzU0LzE1NzgKZiAxNzY5LzMzNTUvMTYzMCAxNzY2LzMzNTYvMTYzMSAxNzY1LzMzNTcvMTYzMSAxNzYzLzMzNTgvMTYzMSAxNzY0LzMzNTkvMTYzMiAxODA1LzMzNjAvMTYzMyAxODEwLzMzNjEvMTYzNApmIDE3NjQvMzM1OS8xNjMyIDE3NjIvMzM2Mi8xNjM1IDE3NjAvMzM2My8xNjM1IDE3NjEvMzM2NC8xNjM2IDE4MDgvMzM2NS8xNTk0IDE4MDUvMzM2MC8xNjMzCmYgMTc3My8zMzY2LzE2MzcgMTc3Mi8zMzY3LzE2MzggMTc3NC8zMzY4LzE2MzggMTc3MS8zMzY5LzE2MzggMTc2OC8zMzcwLzE2MzggMTc2OS8zMzU1LzE2MzAgMTgxMC8zMzYxLzE2MzQgMTgwNC8zMzcxLzE1OTcKZiAxODAxLzMzNzIvMTYzNCAxNzk3LzMzNzMvMTYzMyAxNzg1LzMzNzQvMTYzMiAxNzg0LzMzNzUvMTYzMSAxNzg2LzMzNzYvMTYzMSAxNzg4LzMzNzcvMTYzMSAxNzg3LzMzNzgvMTYzMApmIDE3OTkvMzMxMS8xNTk3IDE4MDEvMzM3Mi8xNjM0IDE3ODcvMzM3OC8xNjMwIDE3ODIvMzM3OS8xNjM4IDE3ODMvMzM4MC8xNjM4IDE3NzcvMzM4MS8xNjM4IDE3NzgvMzM4Mi8xNjM4IDE3NzkvMzM4My8xNjM5CmYgMTc5OC8zMjk5LzE1OTMgMTgwMC8zMjk4LzE1OTIgMTgwOS8zMzg0LzE1OTIgMTgwOC8zMzY1LzE1OTQgMTc2MS8zMzY0LzE2MzYgMTc1OS8zMzg1LzE2NDAgMTc1Ny8zMzg2LzE2NDAgMTc1OC8zMzg3LzE2NDAgMTc3NS8zMzg4LzE2NDAgMTc3Ni8zMzg5LzE2NDAgMTc4MS8zMzkwLzE2NDAgMTc4OS8zMzkxLzE2NDAgMTc5My8zMzkyLzE2NDAgMTc5Ni8zMzkzLzE2NDAgMTc5Mi8zMzk0LzE2NDAgMTc5NS8zMzk1LzE2NDAgMTc5NC8zMzk2LzE2NDEKZiAxNzk3LzMzNzMvMTYzMyAxNzk4LzMyOTkvMTU5MyAxNzk0LzMzOTYvMTY0MSAxNzkwLzMzOTcvMTYzNSAxNzkxLzMzOTgvMTYzNSAxNzg1LzMzNzQvMTYzMgpmIDE4MTAvMzM2MS8xNjM0IDE4MDUvMzM2MC8xNjMzIDIxNTkvMzM5OS8xNTk1IDIxNTgvMzQwMC8xNTk2CmYgMTgwMC8zMjk4LzE1OTIgMTgwMy8zMjk3LzE1OTEgMTgwMi8zMjk2LzE1OTEgMTgwOS8zMzg0LzE1OTIKZiAxODA5LzMzODQvMTU5MiAxODAyLzMyOTYvMTU5MSA1MzMvMzIzOS8xNTY1IDUzMi8zMjQwLzE1NjYKZiAxODA1LzMzNjAvMTYzMyAxODA4LzMzNjUvMTU5NCAyMTYxLzM0MDEvMTU5NCAyMTU5LzMzOTkvMTU5NQpmIDE4MDgvMzM2NS8xNTk0IDE4MDkvMzM4NC8xNTkyIDUzMi8zMjQwLzE1NjYgNTMxLzMyNDEvMTU2NyAyMTk3LzM0MDIvMTU5NCAyMTk4LzM0MDMvMTU5NCAyMTg4LzM0MDQvMTU5NCAyMTg5LzM0MDUvMTU5NCAyMTgyLzM0MDYvMTU5NCAyMTgzLzM0MDcvMTU5NCAyMTcxLzM0MDgvMTU5NCAyMTcyLzM0MDkvMTU5NCAyMTYzLzM0MTAvMTU5NCAyMTY0LzM0MTEvMTU5NCAyMTYwLzM0MTIvMTU5NCAyMTYxLzM0MDEvMTU5NApmIDE4MDQvMzM3MS8xNTk3IDE4MTAvMzM2MS8xNjM0IDIxNTgvMzQwMC8xNTk2IDIxNTYvMzQxMy8xNTk3CmYgMTgwNy8zMzEyLzE1OTggMTc5OS8zMzExLzE1OTcgMTc3OS8zMzgzLzE2MzkgMTc4MC8zNDE0LzE2NDIgMTc2Ny8zNDE1LzE2NDIgMTc3MC8zNDE2LzE2NDIgMTc3My8zMzY2LzE2MzcgMTgwNC8zMzcxLzE1OTcgMTgwNi8zMzEzLzE1OTgKZiAxODA2LzMzMTMvMTU5OCAxODA0LzMzNzEvMTU5NyAyMTU2LzM0MTMvMTU5NyAyMTY2LzM0MTcvMTU5NyAyMTc0LzM0MTgvMTU5NyAyMTc4LzM0MTkvMTU5NyAyMTkwLzM0MjAvMTU5NyAyMTkzLzM0MjEvMTU5NyA1MjgvMzI0NC8xNTcwIDUyNy8zMjQ1LzE1NzEKZiAxOTk1LzM0MjIvMTY0MyAxOTk0LzM0MjMvMTY0NCAxOTk2LzM0MjQvMTY0NCAxOTkzLzM0MjUvMTY0NCAxOTkxLzM0MjYvMTY0NCAxOTg5LzM0MjcvMTY0NCAxOTg2LzM0MjgvMTY0NCAxOTg0LzM0MjkvMTY0NCAxOTgyLzM0MzAvMTY0NSAyMTYyLzM0MzEvMTYzMyAyMTU3LzM0MzIvMTYzNApmIDE5ODAvMzQzMy8xNjQzIDE5NzkvMzQzNC8xNjMxIDE5ODEvMzQzNS8xNjMxIDE5NzgvMzQzNi8xNjMxIDE5NzYvMzQzNy8xNjMxIDE5NzQvMzQzOC8xNjMxIDE5NzEvMzQzOS8xNjMxIDE5NjkvMzQ0MC8xNjMxIDE5NjgvMzQ0MS8xNjMyIDIxNjUvMzQ0Mi8xNjMzIDIxNjcvMzQ0My8xNjM0CmYgMTkxNi8zNDQ0LzE2NDMgMTkxNy8zNDQ1LzE2NDQgMTkxOC8zNDQ2LzE2NDQgMTkxNS8zNDQ3LzE2NDQgMTkxMy8zNDQ4LzE2NDQgMTkxMS8zNDQ5LzE2NDQgMTkwOC8zNDUwLzE2NDQgMTkwNy8zNDUxLzE2NDQgMTk1My8zNDUyLzE2MzIgMjE3My8zNDUzLzE2MzMgMjE3NS8zNDU0LzE2MzQKZiAxOTA0LzM0NTUvMTY0MyAxOTAzLzM0NTYvMTYzMSAxOTA1LzM0NTcvMTYzMSAxOTAyLzM0NTgvMTYzMSAxOTAwLzM0NTkvMTYzMSAxODk4LzM0NjAvMTYzMSAxODk1LzM0NjEvMTYzMSAxODkyLzM0NjIvMTYzMSAxODkzLzM0NjMvMTYzMiAyMTgxLzM0NjQvMTYzMyAyMTc3LzM0NjUvMTYzNApmIDE4MTgvMzQ2Ni8xNjQzIDE4MTkvMzQ2Ny8xNjMxIDE4MjAvMzQ2OC8xNjMxIDE4MTcvMzQ2OS8xNjMxIDE4MTUvMzQ3MC8xNjMxIDE4MTMvMzQ3MS8xNjMxIDE4MTIvMzQ3Mi8xNjMxIDE4NzgvMzQ3My8xNjMxIDE4NzkvMzQ3NC8xNjMyIDIxODUvMzQ3NS8xNjMzIDIxODcvMzQ3Ni8xNjM0CmYgMTg1NC8zNDc3LzE2NDMgMTg1NS8zNDc4LzE2MzEgMTg1Ni8zNDc5LzE2MzEgMTg1My8zNDgwLzE2MzEgMTg1MS8zNDgxLzE2MzEgMTg0OS8zNDgyLzE2MzEgMTg0Ni8zNDgzLzE2MzEgMTg0NC8zNDg0LzE2MzEgMTg0My8zNDg1LzE2MzIgMjE5NC8zNDg2LzE2MzMgMjE5NS8zNDg3LzE2MzQKZiAyMTA5LzM0ODgvMTY0MyAyMTA4LzM0ODkvMTY0NiAyMTEwLzM0OTAvMTY0NiAyMTA3LzM0OTEvMTY0NiAyMTA1LzM0OTIvMTY0NiAyMTAzLzM0OTMvMTY0NiAyMTAwLzM0OTQvMTY0NiAyMDk3LzM0OTUvMTY0NiAyMDk4LzM0OTYvMTYzMiAyMTM5LzM0OTcvMTYzMyAyMTQwLzM0OTgvMTYzNApmIDIwNDgvMzQ5OS8xNjQzIDIwNDcvMzUwMC8xNjMxIDIwNDkvMzUwMS8xNjMxIDIwNDYvMzUwMi8xNjMxIDIwNDUvMzUwMy8xNjMxIDIwODkvMzUwNC8xNjMxIDIwODYvMzUwNS8xNjMxIDIwODQvMzUwNi8xNjMxIDIwODMvMzUwNy8xNjMyIDIxNDIvMzUwOC8xNjMzIDIxNDMvMzUwOS8xNjM0CmYgMjA0My8zNTEwLzE2NDMgMjA0Mi8zNTExLzE2MzEgMjA0NC8zNTEyLzE2MzEgMjA0MS8zNTEzLzE2MzEgMjAzOS8zNTE0LzE2MzEgMjAzNy8zNTE1LzE2MzEgMjAzNC8zNTE2LzE2MzEgMjAzMS8zNTE3LzE2MzEgMjAzMi8zNTE4LzE2MzIgMjE1MC8zNTE5LzE2MzMgMjE1MS8zNTIwLzE2MzQKZiAyMTQwLzM0OTgvMTYzNCAyMTM5LzM0OTcvMTYzMyAyMTQ3LzM1MjEvMTU5NSAyMTQ0LzM1MjIvMTYzNApmIDIxMzUvMzMwNi8xNTk1IDIxMzcvMzMwNS8xNTk0IDIxMzYvMzMwNC8xNTk0IDIxMzkvMzQ5Ny8xNjMzIDIwOTgvMzQ5Ni8xNjMyIDIwOTQvMzUyMy8xNjM1IDIwOTUvMzUyNC8xNjM1IDIwOTIvMzUyNS8xNjM1IDIxMjcvMzUyNi8xNjM1IDIxMjUvMzUyNy8xNjM1IDIxMjIvMzUyOC8xNjM1IDIxMjAvMzUyOS8xNjM1IDIxMTgvMzUzMC8xNjM1IDIxMzIvMzUzMS8xNjM1IDIxMzEvMzUzMi8xNjM1IDIxMzQvMzUzMy8xNjM1IDIxMzAvMzUzNC8xNjM1IDIxMzMvMzUzNS8xNjM1IDIxMTkvMzUzNi8xNjM1IDIxMjEvMzUzNy8xNjM1IDIxMjMvMzUzOC8xNjQ1CmYgMjEzOS8zNDk3LzE2MzMgMjEzNi8zMzA0LzE1OTQgMjE0Ni8zMzAzLzE1OTQKZiAyMTQxLzMzMDcvMTU5NiAyMTM1LzMzMDYvMTU5NSAyMTIzLzM1MzgvMTY0NSAyMTI0LzM1MzkvMTY0NCAyMTI2LzM1NDAvMTY0NCAyMTI4LzM1NDEvMTY0NCAyMTI5LzM1NDIvMTY0NCAyMDkzLzM1NDMvMTY0NCAyMDk2LzM1NDQvMTY0NCAyMDk5LzM1NDUvMTY0NCAyMTAyLzM1NDYvMTY0MwpmIDIxMzgvMzMwOC8xNTk3IDIxNDEvMzMwNy8xNTk2IDIxMDIvMzU0Ni8xNjQzIDIxMDEvMzU0Ny8xNjQ3IDIxMDQvMzU0OC8xNjQ3IDIxMDYvMzU0OS8xNjQ3IDIxMDkvMzQ4OC8xNjQzIDIxNDAvMzQ5OC8xNjM0CmYgMjE0MC8zNDk4LzE2MzQgMjE0NC8zNTIyLzE2MzQgMjE0OC8zMzA5LzE1OTcgMjEzOC8zMzA4LzE1OTcKZiAyMTQ0LzM1MjIvMTYzNCAyMTQ3LzM1MjEvMTU5NSAyMDcxLzM1NTAvMTY0OCAyMDcyLzM1NTEvMTY0OSAyMDc0LzM1NTIvMTY0OSAyMDc2LzM1NTMvMTY0OSAyMDc4LzM1NTQvMTY0OSAyMDgwLzM1NTUvMTY0OSAyMDgyLzM1NTYvMTY0OSAyMDg1LzM1NTcvMTY0OSAyMDg4LzM1NTgvMTY0MwpmIDIxNDMvMzUwOS8xNjM0IDIxNDIvMzUwOC8xNjMzIDIxNTMvMzU1OS8xNjMzIDIxNTIvMzU2MC8xNjM0CmYgMjE0OC8zMzA5LzE1OTcgMjE0NC8zNTIyLzE2MzQgMjA4OC8zNTU4LzE2NDMgMjA4Ny8zNTYxLzE2NDcgMjA5MC8zNTYyLzE2NDcgMjA5MS8zNTYzLzE2NDcgMjA0OC8zNDk5LzE2NDMgMjE0My8zNTA5LzE2MzQKZiAyMTQzLzM1MDkvMTYzNCAyMTUyLzM1NjAvMTYzNCAyMTQ5LzMzMTAvMTU5NyAyMTQ4LzMzMDkvMTU5NwpmIDIxNDYvMzMwMy8xNTk0IDIxNDUvMzMwMi8xNTk0IDIxNDIvMzUwOC8xNjMzIDIwODMvMzUwNy8xNjMyIDIwODEvMzU2NC8xNjUwIDIwNzkvMzU2NS8xNjUwIDIwNzcvMzU2Ni8xNjUwIDIwNzUvMzU2Ny8xNjUwIDIwNzMvMzU2OC8xNjUwIDIwNzAvMzU2OS8xNjUwIDIwNjkvMzU3MC8xNjUwIDIxMTYvMzU3MS8xNjUwIDIxMTQvMzU3Mi8xNjUwIDIxMTEvMzU3My8xNjUwIDIxMTIvMzU3NC8xNjUwIDIxMTMvMzU3NS8xNjUwIDIxMTUvMzU3Ni8xNjUwIDIxMTcvMzU3Ny8xNjUwIDIwNjgvMzU3OC8xNjUwIDIwNzEvMzU1MC8xNjQ4IDIxNDcvMzUyMS8xNTk1CmYgMjE0Ny8zNTIxLzE1OTUgMjEzOS8zNDk3LzE2MzMgMjE0Ni8zMzAzLzE1OTQKZiAyMTQyLzM1MDgvMTYzMyAyMTQ1LzMzMDIvMTU5NCAyMTU1LzMzMDEvMTU5NApmIDIxNTIvMzU2MC8xNjM0IDIxNTMvMzU1OS8xNjMzIDIwNjEvMzU3OS8xNjQ1IDIwNjAvMzU4MC8xNjQ0IDIwNjMvMzU4MS8xNjQ0IDIwNjUvMzU4Mi8xNjQ0IDIwNjcvMzU4My8xNjQ0IDIwMjcvMzU4NC8xNjQ0IDIwMzAvMzU4NS8xNjQ0IDIwMzMvMzU4Ni8xNjQ0IDIwMzYvMzU4Ny8xNjQzCmYgMjE1MS8zNTIwLzE2MzQgMjE1MC8zNTE5LzE2MzMgMTc5Ny8zMzczLzE2MzMgMTgwMS8zMzcyLzE2MzQKZiAyMTU1LzMzMDEvMTU5NCAyMTU0LzMzMDAvMTU5NCAyMTUwLzM1MTkvMTYzMyAyMDMyLzM1MTgvMTYzMiAyMDI5LzM1ODgvMTYzNSAyMDI4LzM1ODkvMTYzNSAyMDY2LzM1OTAvMTYzNSAyMDY0LzM1OTEvMTYzNSAyMDYyLzM1OTIvMTYzNSAyMDU5LzM1OTMvMTYzNSAyMDU3LzM1OTQvMTYzNSAyMDU1LzM1OTUvMTYzNSAyMDUzLzM1OTYvMTYzNSAyMDUxLzM1OTcvMTYzNSAyMDUwLzM1OTgvMTYzNSAyMDUyLzM1OTkvMTYzNSAyMDU0LzM2MDAvMTYzNSAyMDU2LzM2MDEvMTYzNSAyMDU4LzM2MDIvMTYzNSAyMDYxLzM1NzkvMTY0NSAyMTUzLzM1NTkvMTYzMwpmIDIxNTMvMzU1OS8xNjMzIDIxNDIvMzUwOC8xNjMzIDIxNTUvMzMwMS8xNTk0CmYgMjE1MC8zNTE5LzE2MzMgMjE1NC8zMzAwLzE1OTQgMTc5OC8zMjk5LzE1OTMgMTc5Ny8zMzczLzE2MzMKZiAyMTQ5LzMzMTAvMTU5NyAyMTUyLzM1NjAvMTYzNCAyMDM2LzM1ODcvMTY0MyAyMDM1LzM2MDMvMTY0NyAyMDM4LzM2MDQvMTY0NyAyMDQwLzM2MDUvMTY0NyAyMDQzLzM1MTAvMTY0MyAyMTUxLzM1MjAvMTYzNApmIDIxNTEvMzUyMC8xNjM0IDE4MDEvMzM3Mi8xNjM0IDE3OTkvMzMxMS8xNTk3IDIxNDkvMzMxMC8xNTk3CmYgMjE1Ny8zNDMyLzE2MzQgMjE2Mi8zNDMxLzE2MzMgMjE2OC8zNjA2LzE2MzMgMjE2OS8zNjA3LzE2MzQKZiAyMTU2LzM0MTMvMTU5NyAyMTU4LzM0MDAvMTU5NiAxOTg4LzM2MDgvMTY0MyAxOTg3LzM2MDkvMTY0NyAxOTkwLzM2MTAvMTY0NyAxOTkyLzM2MTEvMTY0NyAxOTk1LzM0MjIvMTY0MyAyMTU3LzM0MzIvMTYzNApmIDIxNTcvMzQzMi8xNjM0IDIxNjkvMzYwNy8xNjM0IDIxNjYvMzQxNy8xNTk3IDIxNTYvMzQxMy8xNTk3CmYgMjE1OS8zMzk5LzE1OTUgMjE2MS8zNDAxLzE1OTQgMjE2MC8zNDEyLzE1OTQgMjE2Mi8zNDMxLzE2MzMgMTk4Mi8zNDMwLzE2NDUgMTk4My8zNjEyLzE2MzUgMjAyNC8zNjEzLzE2MzUgMjAyMi8zNjE0LzE2MzUgMjAyMC8zNjE1LzE2MzUgMjAxOC8zNjE2LzE2MzUgMjAxNS8zNjE3LzE2MzUgMjAxMy8zNjE4LzE2MzUgMjAxMS8zNjE5LzE2MzUgMjAwOS8zNjIwLzE2MzUgMjAwNy8zNjIxLzE2MzUgMjAwNi8zNjIyLzE2MzUgMjAwOC8zNjIzLzE2MzUgMjAxMC8zNjI0LzE2MzUgMjAxMi8zNjI1LzE2MzUgMjAxNC8zNjI2LzE2MzUgMjAxNy8zNjI3LzE2NDUKZiAyMTYyLzM0MzEvMTYzMyAyMTY0LzM0MTEvMTU5NCAyMTY4LzM2MDYvMTYzMwpmIDIxNTgvMzQwMC8xNTk2IDIxNTkvMzM5OS8xNTk1IDIwMTcvMzYyNy8xNjQ1IDIwMTYvMzYyOC8xNjQ0IDIwMTkvMzYyOS8xNjQ0IDIwMjEvMzYzMC8xNjQ0IDIwMjMvMzYzMS8xNjQ0IDIwMjUvMzYzMi8xNjQ0IDIwMjYvMzYzMy8xNjQ0IDE5ODUvMzYzNC8xNjQ0IDE5ODgvMzYwOC8xNjQzCmYgMjE2OC8zNjA2LzE2MzMgMjE2NC8zNDExLzE1OTQgMjE2My8zNDEwLzE1OTQgMjE2NS8zNDQyLzE2MzMgMTk2OC8zNDQxLzE2MzIgMTk2Ni8zNjM1LzE2MzUgMTk2NC8zNjM2LzE2MzUgMTk2Mi8zNjM3LzE2MzUgMTk2MC8zNjM4LzE2MzUgMTk1Ny8zNjM5LzE2MzUgMTk1OC8zNjQwLzE2MzUgMjAwNC8zNjQxLzE2MzUgMjAwMi8zNjQyLzE2MzUgMjAwMC8zNjQzLzE2MzUgMTk5OC8zNjQ0LzE2MzUgMTk5Ny8zNjQ1LzE2MzUgMTk5OS8zNjQ2LzE2MzUgMjAwMS8zNjQ3LzE2MzUgMjAwMy8zNjQ4LzE2MzUgMjAwNS8zNjQ5LzE2MzUgMTk1Ni8zNjUwLzE2MzIKZiAyMTY1LzM0NDIvMTYzMyAyMTYzLzM0MTAvMTU5NCAyMTcyLzM0MDkvMTU5NApmIDIxNjQvMzQxMS8xNTk0IDIxNjIvMzQzMS8xNjMzIDIxNjAvMzQxMi8xNTk0CmYgMjE2Ny8zNDQzLzE2MzQgMjE2NS8zNDQyLzE2MzMgMjE3Ni8zNjUxLzE2MzMgMjE3MC8zNjUyLzE2MzQKZiAyMTY2LzM0MTcvMTU5NyAyMTY5LzM2MDcvMTYzNCAxOTczLzM2NTMvMTY0MyAxOTcyLzM2NTQvMTY0NyAxOTc1LzM2NTUvMTY0NyAxOTc3LzM2NTYvMTY0NyAxOTgwLzM0MzMvMTY0MyAyMTY3LzM0NDMvMTYzNApmIDIxNjcvMzQ0My8xNjM0IDIxNzAvMzY1Mi8xNjM0IDIxNzQvMzQxOC8xNTk3IDIxNjYvMzQxNy8xNTk3CmYgMjE2OS8zNjA3LzE2MzQgMjE2OC8zNjA2LzE2MzMgMTk1Ni8zNjUwLzE2MzIgMTk1NS8zNjU3LzE2MzEgMTk1OS8zNjU4LzE2MzEgMTk2MS8zNjU5LzE2MzEgMTk2My8zNjYwLzE2MzEgMTk2NS8zNjYxLzE2MzEgMTk2Ny8zNjYyLzE2MzEgMTk3MC8zNjYzLzE2MzEgMTk3My8zNjUzLzE2NDMKZiAyMTcyLzM0MDkvMTU5NCAyMTcxLzM0MDgvMTU5NCAyMTczLzM0NTMvMTYzMyAxOTUzLzM0NTIvMTYzMiAxOTUxLzM2NjQvMTYzNSAxOTQ5LzM2NjUvMTYzNSAxOTQ3LzM2NjYvMTYzNSAxOTQ1LzM2NjcvMTYzNSAxOTQzLzM2NjgvMTYzNSAxOTQwLzM2NjkvMTYzNSAxOTM4LzM2NzAvMTYzNSAxOTM2LzM2NzEvMTYzNSAxOTM0LzM2NzIvMTYzNSAxOTMxLzM2NzMvMTYzNSAxOTMyLzM2NzQvMTYzNSAxOTMzLzM2NzUvMTYzNSAxOTM1LzM2NzYvMTYzNSAxOTM3LzM2NzcvMTYzNSAxOTM5LzM2NzgvMTYzNSAxOTQyLzM2NzkvMTYzMiAyMTc2LzM2NTEvMTYzMwpmIDIxNzYvMzY1MS8xNjMzIDIxNjUvMzQ0Mi8xNjMzIDIxNzIvMzQwOS8xNTk0CmYgMjE3My8zNDUzLzE2MzMgMjE3MS8zNDA4LzE1OTQgMjE4My8zNDA3LzE1OTQKZiAyMTc0LzM0MTgvMTU5NyAyMTcwLzM2NTIvMTYzNCAxOTEwLzM2ODAvMTY0MyAxOTA5LzM2ODEvMTY0NyAxOTEyLzM2ODIvMTY0NyAxOTE0LzM2ODMvMTY0NyAxOTE2LzM0NDQvMTY0MyAyMTc1LzM0NTQvMTYzNApmIDIxNzUvMzQ1NC8xNjM0IDIxNzkvMzY4NC8xNjM0IDIxNzgvMzQxOS8xNTk3IDIxNzQvMzQxOC8xNTk3CmYgMjE3MC8zNjUyLzE2MzQgMjE3Ni8zNjUxLzE2MzMgMTk0Mi8zNjc5LzE2MzIgMTk0MS8zNjg1LzE2MzEgMTk0NC8zNjg2LzE2MzEgMTk0Ni8zNjg3LzE2MzEgMTk0OC8zNjg4LzE2MzEgMTk1MC8zNjg5LzE2MzEgMTk1Mi8zNjkwLzE2MzEgMTk1NC8zNjkxLzE2MzEgMTkxMC8zNjgwLzE2NDMKZiAyMTc1LzM0NTQvMTYzNCAyMTczLzM0NTMvMTYzMyAyMTgwLzM2OTIvMTU5NSAyMTg0LzM2OTMvMTY0NCAyMTc5LzM2ODQvMTYzNApmIDIxNzcvMzQ2NS8xNjM0IDIxODEvMzQ2NC8xNjMzIDIxOTEvMzY5NC8xNjMzIDIxODYvMzY5NS8xNTk2CmYgMjE4My8zNDA3LzE1OTQgMjE4Mi8zNDA2LzE1OTQgMjE4MS8zNDY0LzE2MzMgMTg5My8zNDYzLzE2MzIgMTg5MC8zNjk2LzE2MzUgMTg4OC8zNjk3LzE2MzUgMTg4Ni8zNjk4LzE2MzUgMTg4NC8zNjk5LzE2MzUgMTg4My8zNzAwLzE2MzUgMTkyOC8zNzAxLzE2MzUgMTkyNi8zNzAyLzE2MzUgMTkyNC8zNzAzLzE2MzUgMTkyMi8zNzA0LzE2MzUgMTkxOS8zNzA1LzE2MzUgMTkyMC8zNzA2LzE2MzUgMTkyMS8zNzA3LzE2MzUgMTkyMy8zNzA4LzE2MzUgMTkyNS8zNzA5LzE2MzUgMTkyNy8zNzEwLzE2MzUgMTkzMC8zNzExLzE2NDUgMjE4MC8zNjkyLzE1OTUKZiAyMTgwLzM2OTIvMTU5NSAyMTczLzM0NTMvMTYzMyAyMTgzLzM0MDcvMTU5NApmIDIxODEvMzQ2NC8xNjMzIDIxODkvMzQwNS8xNTk0IDIxOTEvMzY5NC8xNjMzCmYgMjE3OS8zNjg0LzE2MzQgMjE4NC8zNjkzLzE2NDQgMjE4MC8zNjkyLzE1OTUgMTkzMC8zNzExLzE2NDUgMTkyOS8zNzEyLzE2NDQgMTg4Mi8zNzEzLzE2NDQgMTg4NS8zNzE0LzE2NDQgMTg4Ny8zNzE1LzE2NDQgMTg4OS8zNzE2LzE2NDQgMTg5MS8zNzE3LzE2NDQgMTg5NC8zNzE4LzE2NDQgMTg5Ny8zNzE5LzE2NDMKZiAyMTc4LzM0MTkvMTU5NyAyMTc5LzM2ODQvMTYzNCAxODk3LzM3MTkvMTY0MyAxODk2LzM3MjAvMTY0NyAxODk5LzM3MjEvMTY0NyAxOTAxLzM3MjIvMTY0NyAxOTA0LzM0NTUvMTY0MyAyMTc3LzM0NjUvMTYzNApmIDIxNzcvMzQ2NS8xNjM0IDIxODYvMzY5NS8xNTk2IDIxOTAvMzQyMC8xNTk3IDIxNzgvMzQxOS8xNTk3CmYgMjE4Ny8zNDc2LzE2MzQgMjE4NS8zNDc1LzE2MzMgMjE5Ni8zNzIzLzE2MzMgMjE5Mi8zNzI0LzE2MzQKZiAyMTkwLzM0MjAvMTU5NyAyMTg2LzM2OTUvMTU5NiAxODgxLzM3MjUvMTY0MyAxODExLzM3MjYvMTY0NyAxODE0LzM3MjcvMTY0NyAxODE2LzM3MjgvMTY0NyAxODE4LzM0NjYvMTY0MyAyMTg3LzM0NzYvMTYzNApmIDIxODcvMzQ3Ni8xNjM0IDIxOTIvMzcyNC8xNjM0IDIxOTMvMzQyMS8xNTk3IDIxOTAvMzQyMC8xNTk3CmYgMjE5MS8zNjk0LzE2MzMgMjE4OS8zNDA1LzE1OTQgMjE4OC8zNDA0LzE1OTQgMjE4NS8zNDc1LzE2MzMgMTg3OS8zNDc0LzE2MzIgMTg3Ni8zNzI5LzE2MzUgMTg3NC8zNzMwLzE2MzUgMTg3Mi8zNzMxLzE2MzUgMTg3MC8zNzMyLzE2MzUgMTg2OC8zNzMzLzE2MzUgMTg2NS8zNzM0LzE2MzUgMTg2My8zNzM1LzE2MzUgMTg2MS8zNzM2LzE2MzUgMTg1OC8zNzM3LzE2MzUgMTg1OS8zNzM4LzE2MzUgMTkwNi8zNzM5LzE2MzUgMTg1Ny8zNzQwLzE2MzUgMTg2MC8zNzQxLzE2MzUgMTg2Mi8zNzQyLzE2MzUgMTg2NC8zNzQzLzE2MzUgMTg2Ny8zNzQ0LzE2NDUKZiAyMTg1LzM0NzUvMTYzMyAyMTg4LzM0MDQvMTU5NCAyMTk4LzM0MDMvMTU5NApmIDIxODkvMzQwNS8xNTk0IDIxODEvMzQ2NC8xNjMzIDIxODIvMzQwNi8xNTk0CmYgMjE4Ni8zNjk1LzE1OTYgMjE5MS8zNjk0LzE2MzMgMTg2Ny8zNzQ0LzE2NDUgMTg2Ni8zNzQ1LzE2NDQgMTg2OS8zNzQ2LzE2NDQgMTg3MS8zNzQ3LzE2NDQgMTg3My8zNzQ4LzE2NDQgMTg3NS8zNzQ5LzE2NDQgMTg3Ny8zNzUwLzE2NDQgMTg4MC8zNzUxLzE2NDQgMTg4MS8zNzI1LzE2NDMKZiAyMTk1LzM0ODcvMTYzNCAyMTk0LzM0ODYvMTYzMyA1MzAvMzI0Mi8xNTY4IDUyOS8zMjQzLzE1NjkKZiAyMTk4LzM0MDMvMTU5NCAyMTk3LzM0MDIvMTU5NCAyMTk0LzM0ODYvMTYzMyAxODQzLzM0ODUvMTYzMiAxODQxLzM3NTIvMTYzNSAxODM5LzM3NTMvMTYzNSAxODM3LzM3NTQvMTYzNSAxODM1LzM3NTUvMTYzNSAxODMzLzM3NTYvMTYzNSAxODMwLzM3NTcvMTYzNSAxODI4LzM3NTgvMTYzNSAxODI2LzM3NTkvMTYzNSAxODI0LzM3NjAvMTYzNSAxODIyLzM3NjEvMTYzNSAxODIxLzM3NjIvMTYzNSAxODIzLzM3NjMvMTYzNSAxODI1LzM3NjQvMTYzNSAxODI3LzM3NjUvMTYzNSAxODI5LzM3NjYvMTYzNSAxODMyLzM3NjcvMTYzMiAyMTk2LzM3MjMvMTYzMwpmIDIxOTYvMzcyMy8xNjMzIDIxODUvMzQ3NS8xNjMzIDIxOTgvMzQwMy8xNTk0CmYgMjE5NC8zNDg2LzE2MzMgMjE5Ny8zNDAyLzE1OTQgNTMxLzMyNDEvMTU2NyA1MzAvMzI0Mi8xNTY4CmYgMjE5Mi8zNzI0LzE2MzQgMjE5Ni8zNzIzLzE2MzMgMTgzMi8zNzY3LzE2MzIgMTgzMS8zNzY4LzE2MzEgMTgzNC8zNzY5LzE2MzEgMTgzNi8zNzcwLzE2MzEgMTgzOC8zNzcxLzE2MzEgMTg0MC8zNzcyLzE2MzEgMTg0Mi8zNzczLzE2MzEgMTg0NS8zNzc0LzE2MzEgMTg0OC8zNzc1LzE2NDMKZiAyMTkzLzM0MjEvMTU5NyAyMTkyLzM3MjQvMTYzNCAxODQ4LzM3NzUvMTY0MyAxODQ3LzM3NzYvMTY0NyAxODUwLzM3NzcvMTY0NyAxODUyLzM3NzgvMTY0NyAxODU0LzM0NzcvMTY0MyAyMTk1LzM0ODcvMTYzNApmIDIxOTUvMzQ4Ny8xNjM0IDUyOS8zMjQzLzE1NjkgNTI4LzMyNDQvMTU3MCAyMTkzLzM0MjEvMTU5NwpmIDIyMTIvMzc3OS8xNjUxIDIyMDgvMzc4MC8xNjUyIDIyMDkvMzc4MS8xNjUyIDIyMDUvMzc4Mi8xNjUyIDIyMDYvMzc4My8xNjUzIDMxNjIvMzc4NC8xNTg1IDMxNzUvMzc4NS8xNjUyIDMxNTYvMzc4Ni8xNTg3CmYgMjIwNi8zNzgzLzE2NTMgMjIwNy8zNzg3LzE1ODQgMjIwNC8zNzg4LzE1ODQgMjIwMy8zNzg5LzE1ODQgMjIwMi8zNzkwLzE2NTQgMzE2MS8zNzkxLzE1ODIgMzE3Ny8zNzkyLzE1ODQgMzE2Mi8zNzg0LzE1ODUKZiAyMjE3LzM3OTMvMTY1NSAyMjE4LzM3OTQvMTY1NiAyMjEzLzM3OTUvMTY1NiAyMjEwLzM3OTYvMTY1NiAyMjExLzM3OTcvMTY1NiAyMjEyLzM3NzkvMTY1MSAzMTU2LzM3ODYvMTU4NyAzMTc0LzM3OTgvMTY1NiAzMTY0LzMyOTUvMTU4OQpmIDIyNDYvMzc5OS8xNjUzIDIyNDcvMzgwMC8xNjU3IDIyNDQvMzgwMS8xNjU3IDIyNDMvMzgwMi8xNjU3IDIyNDIvMzgwMy8xNjU0IDMxNDEvMzI2MC8xNTgyIDMxNTQvMzgwNC8xNTg0IDMxMzkvMzgwNS8xNTg1CmYgMjI1OC8zODA2LzE2NTggMjI1My8zODA3LzE1ODggMjI1MC8zODA4LzE1ODggMjI1MS8zODA5LzE1ODggMjI1Mi8zODEwLzE2NTEgMzEzNy8zODExLzE1ODcgMzE1My8zODEyLzE2NTYgMzEzNi8zMjg5LzE1ODkKZiAyMjUyLzM4MTAvMTY1MSAyMjQ4LzM4MTMvMTY1MiAyMjQ5LzM4MTQvMTY1MiAyMjQ1LzM4MTUvMTY1MiAyMjQ2LzM3OTkvMTY1MyAzMTM5LzM4MDUvMTU4NSAzMTU1LzM4MTYvMTY1MiAzMTM3LzM4MTEvMTU4NwpmIDMxMDMvMzgxNy8xNjU5IDM5LzM4MTgvMTY2MCAzOC8zODE5LzE2NjEgMzEwNC8zODIwLzE2NjIKZiAzMDU1LzM4MjEvMTY2MyA2Mi8zODIyLzE2NjQgNTgvMzgyMy8xNjY1IDU5LzM4MjQvMTY2NiAzMDU0LzM4MjUvMTY2NwpmIDMxMDcvMzgyNi8xNjY4IDEzLzM4MjcvMTY2OSAxNC8zODI4LzE2NzAgMzEwOC8zODI5LzE2NzEKZiAzMTAxLzM4MzAvMTY3MiA2My8zODMxLzE2NzMgNDEvMzgzMi8xNjc0IDMxMDIvMzgzMy8xNjc1CmYgMzA1NC8zODI1LzE2NjcgNTkvMzgyNC8xNjY2IDU0LzM4MzQvMTY3NiAzMDUzLzM4MzUvMTY3NwpmIDMwNDgvMzgzNi8xNjc4IDU2LzM4MzcvMTY3OSA1Ny8zODM4LzE2ODAgMzA0Ny8zODM5LzE2ODEKZiAzMDcyLzM4NDAvMTY4MiA0MC8zODQxLzE2ODMgMzUvMTQ4My8xMjMgMzA3NS8xNDgyLzEyMgpmIDMwNTYvMzg0Mi8xNjg0IDIvMzg0My8xNjg1IDYyLzM4MjIvMTY2NCAzMDU1LzM4MjEvMTY2MwpmIDMwOTkvMzg0NC8xNjg2IDMvMzg0NS8xNjg3IDY0LzM4NDYvMTY4OCAzMTAwLzM4NDcvMTY4OQpmIDMwNzgvMzg0OC8xNjkwIDMwLzM4NDkvMTY5MSAyOS8xNjI0LzIxOCAzMDc2LzE2MjMvMjE3CmYgMzEwOS8xNDQ0LzExNCA5LzE0NDMvMTEzIDEwLzM4NTAvMTY5MiAxMi8zODUxLzE2OTMgMzExMS8zODUyLzE2OTQKZiAzMTExLzM4NTIvMTY5NCAxMi8zODUxLzE2OTMgMTMvMzgyNy8xNjY5IDMxMDcvMzgyNi8xNjY4CmYgMzA4My8zODUzLzE2OTUgMzcvMzg1NC8xNjk2IDM0LzM4NTUvMTY5NyAzMDgyLzM4NTYvMTY5OApmIDMwODIvMzg1Ni8xNjk4IDM0LzM4NTUvMTY5NyAzMy8zODU3LzE2OTkgMzA4MC8zODU4LzE3MDAKZiAzMDk1LzM4NTkvMTcwMSAxNS8zODYwLzE3MDIgMTYvMzg2MS8xNzAzIDMwOTYvMzg2Mi8xNzA0CmYgMzA1Mi8zODYzLzE3MDUgNTUvMzg2NC8xNzA2IDUyLzM4NjUvMTcwNyAzMDUxLzM4NjYvMTcwOApmIDMxMDIvMzgzMy8xNjc1IDQxLzM4MzIvMTY3NCAzOS8zODE4LzE2NjAgMzEwMy8zODE3LzE2NTkKZiAzMDQ3LzM4MzkvMTY4MSA1Ny8zODM4LzE2ODAgMzcvMzg1NC8xNjk2IDMwODMvMzg1My8xNjk1CmYgMzA5Ny8zODY3LzE3MDkgNS8zODY4LzE3MTAgMy8zODY5LzE2ODcgMzA5OS8zODcwLzE2ODYgMzA5OC8zODcxLzE3MTEKZiAzMDU4LzM4NzIvMTcxMiAzMDU3LzM4NzMvMTY1NyAzMDU2LzM4NzQvMTY1NyAzMDU1LzM4NzUvMTY1NyAzMDU0LzM4NzYvMTY1NyAzMDUzLzM4NzcvMTY1NyAzMDUyLzM4NzgvMTY1NyAzMDUxLzM4NzkvMTY1NyAzMDUwLzM4ODAvMTcxMyAzMTE3LzMyNjYvMTU4MiAzMTI0LzM4ODEvMTY1NyAzMTE4LzM4ODIvMTU4NQpmIDMxMDQvMzgyMC8xNjYyIDM4LzM4MTkvMTY2MSA0MC8zODQxLzE2ODMgMzA3Mi8zODQwLzE2ODIKZiAzMDk2LzM4NjIvMTcwNCAxNi8zODYxLzE3MDMgNS8zODY4LzE3MTAgMzA5Ny8zODY3LzE3MDkKZiAzMDUxLzM4NjYvMTcwOCA1Mi8zODY1LzE3MDcgNTMvMzg4My8xNzE0IDMwNDkvMzg4NC8xNzE1IDMwNTAvMzg4NS8xNzE2CmYgMzEwMC8zODQ3LzE2ODkgNjQvMzg0Ni8xNjg4IDYzLzM4MzEvMTY3MyAzMTAxLzM4MzAvMTY3MgpmIDMxMDgvMzgyOS8xNjcxIDE0LzM4MjgvMTY3MCAxNS8zODYwLzE3MDIgMzA5NS8zODU5LzE3MDEKZiAzMDUzLzM4MzUvMTY3NyA1NC8zODM0LzE2NzYgNTUvMzg2NC8xNzA2IDMwNTIvMzg2My8xNzA1CmYgMzA2MC8zODg2LzE3MTcgMzA1OC8zODcyLzE3MTIgMzExOC8zODgyLzE1ODUgMzExNi8zODg3LzE1ODcKZiAzMDgwLzM4NTgvMTcwMCAzMy8zODU3LzE2OTkgMzAvMzg0OS8xNjkxIDMwNzgvMzg0OC8xNjkwCmYgMzA0OS8zODg4LzE3MTUgNTMvMzg4OS8xNzE0IDU2LzM4MzcvMTY3OSAzMDQ4LzM4MzYvMTY3OApmIDMwNjgvMzg5MC8xNzE4IDMwNjYvMzg5MS8xNTg4IDMwNjUvMzg5Mi8xNTg4IDMwNjQvMzg5My8xNTg4IDMwNjMvMzg5NC8xNTg4IDMwNjIvMzg5NS8xNTg4IDMwNjEvMzg5Ni8xNTg4IDMwNTkvMzg5Ny8xNTg4IDMwNjAvMzg4Ni8xNzE3IDMxMTYvMzg4Ny8xNTg3IDMxMTkvMzI4My8xNTg5CmYgMzA1Ny8xNjIwLzIxNiA4LzE2MTkvMjE1IDIvMzg0My8xNjg1IDMwNTYvMzg0Mi8xNjg0CmYgMzEyMC8zMjc0LzE1ODcgMzEyMy8zMjczLzE1ODYgMzEyMi8zMjcyLzE1ODUgMzExNC8zODk4LzE3MTkgMzExMC8zODk5LzE3MjAKZiAzMTE4LzM4ODIvMTU4NSAzMTI0LzM4ODEvMTY1NyAzMTE3LzMyNjYvMTU4MiAzMTQyLzMyNjUvMTU4MiAzMTQ0LzM5MDAvMTU4NCAzMTQzLzM5MDEvMTU4NQpmIDMxMjEvMzI3Ni8xNTg5IDMxMjUvMzI3NS8xNTg4IDMxMjAvMzI3NC8xNTg3IDMxMTAvMzg5OS8xNzIwIDMxMDkvMzkwMi8xNTg4IDMxMTEvMzkwMy8xNTg4IDMxMDcvMzkwNC8xNTg4IDMxMDgvMzkwNS8xNTg4IDMwOTUvMzkwNi8xNTg4IDMwOTYvMzkwNy8xNTg4IDMwOTcvMzkwOC8xNTg4IDMwOTgvMzkwOS8xNzIxCmYgMzExNS8zMjcwLzE1ODIgMzEyNi8zMjY5LzE1ODMgMzEyNy8zMjY4LzE1ODMgMzEyOC8zMjY3LzE1ODMgMzExNy8zMjY2LzE1ODIgMzA1MC8zODgwLzE3MTMgMzA0OS8zOTEwLzE1ODMgMzA0OC8zOTExLzE1ODMgMzA0Ny8zOTEyLzE1ODMgMzA4My8zOTEzLzE1ODMgMzA4Mi8zOTE0LzE1ODMgMzA4MC8zOTE1LzE1ODMgMzA3OC8zOTE2LzE1ODMgMzA3Ni8zOTE3LzE1ODMgMzA3NC8zOTE4LzE1ODMgMzA3My8zOTE5LzE1ODMgMzA4NS8zOTIwLzE1ODMgMzA4Ni8zOTIxLzE1ODMgMzA4Ny8zOTIyLzE1ODMgMzA4OC8zOTIzLzE1ODMgMzA4OS8zOTI0LzE1ODMgMzA5MC8zOTI1LzE1ODMgMzA5Mi8zOTI2LzE3MjIKZiAzMTE5LzMyODMvMTU4OSAzMTE2LzM4ODcvMTU4NyAzMTM4LzM5MjcvMTU4NyAzMTQwLzMyODQvMTU4OQpmIDMxMTYvMzg4Ny8xNTg3IDMxMTgvMzg4Mi8xNTg1IDMxNDMvMzkwMS8xNTg1IDMxMzgvMzkyNy8xNTg3CmYgMzEyMi8zMjcyLzE1ODUgMzEyOS8zMjcxLzE1ODQgMzExNS8zMjcwLzE1ODIgMzA5Mi8zOTI2LzE3MjIgMzA5MS8zOTI4LzE1ODQgMzA5My8zOTI5LzE1ODQgMzA5NC8zOTMwLzE1ODQgMzEwNi8zOTMxLzE1ODQgMzEwNS8zOTMyLzE1ODQgMzExMi8zOTMzLzE1ODQgMzExMy8zOTM0LzE1ODQgMzExNC8zODk4LzE3MTkKZiAzMTE5LzMyODMvMTU4OSAzMTMwLzMyODIvMTU5MCAzMTMxLzMyODEvMTU5MCAzMTMyLzMyODAvMTU5MCAzMTMzLzMyNzkvMTU5MCAzMTM0LzMyNzgvMTU5MCAzMTM1LzMyNzcvMTU5MCAzMTIxLzMyNzYvMTU4OSAzMDk4LzM5MDkvMTcyMSAzMDk5LzM5MzUvMTU5MCAzMTAwLzM5MzYvMTU5MCAzMTAxLzM5MzcvMTU5MCAzMTAyLzM5MzgvMTU5MCAzMTAzLzM5MzkvMTU5MCAzMTA0LzM5NDAvMTU5MCAzMDcyLzM5NDEvMTU5MCAzMDc1LzM5NDIvMTU5MCAzMDc3LzM5NDMvMTU5MCAzMDc5LzM5NDQvMTU5MCAzMDgxLzM5NDUvMTU5MCAzMDg0LzM5NDYvMTU5MCAzMDcxLzM5NDcvMTU5MCAzMDcwLzM5NDgvMTU5MCAzMDY5LzM5NDkvMTU5MCAzMDY3LzM5NTAvMTU5MCAzMDY4LzM4OTAvMTcxOApmIDMxMzgvMzkyNy8xNTg3IDMxNDMvMzkwMS8xNTg1IDIyNzcvMzk1MS8xNzIzIDIyNzMvMzk1Mi8xNTg2IDIyNzgvMzk1My8xNTg2IDIyNzQvMzk1NC8xNTg2IDIyNzUvMzk1NS8xNzI0CmYgMzE0My8zOTAxLzE1ODUgMzE0NC8zOTAwLzE1ODQgMzE0Mi8zMjY1LzE1ODIgMjI2NS8zOTU2LzE3MjUgMjI1OS8zOTU3LzE1ODQgMjI2MC8zOTU4LzE1ODQgMjI3MC8zOTU5LzE1ODQgMjI3Mi8zOTYwLzE1ODQgMjI3Ny8zOTUxLzE3MjMKZiAzMTQyLzMyNjUvMTU4MiAzMTQ4LzMyNjQvMTU4MyAzMTQ3LzMyNjMvMTU4MyAzMTQ2LzMyNjIvMTU4MyAzMTQ1LzMyNjEvMTU4MyAzMTQxLzMyNjAvMTU4MiAyMjQyLzM4MDMvMTY1NCAyMjQxLzM5NjEvMTU4MyAyMjQwLzM5NjIvMTU4MyAyMjM5LzM5NjMvMTU4MyAyMjY5LzM5NjQvMTU4MyAyMjY4LzM5NjUvMTU4MyAyMjY0LzM5NjYvMTU4MyAyMjY1LzM5NTYvMTcyNQpmIDMxNDAvMzI4NC8xNTg5IDMxMzgvMzkyNy8xNTg3IDIyNzUvMzk1NS8xNzI0IDIyNzYvMzk2Ny8xNTg4IDIyNzEvMzk2OC8xNTg4IDIyNjEvMzk2OS8xNTg4IDIyNjMvMzk3MC8xNzI2CmYgMzEzNi8zMjg5LzE1ODkgMzE1Mi8zMjg4LzE1OTAgMzE1MS8zMjg3LzE1OTAgMzE1MC8zMjg2LzE1OTAgMzE0OS8zMjg1LzE1OTAgMzE0MC8zMjg0LzE1ODkgMjI2My8zOTcwLzE3MjYgMjI2Mi8zOTcxLzE1OTAgMjI2Ni8zOTcyLzE1OTAgMjI2Ny8zOTczLzE1OTAgMjI1NC8zOTc0LzE1OTAgMjI1NS8zOTc1LzE1OTAgMjI1Ni8zOTc2LzE1OTAgMjI1Ny8zOTc3LzE1OTAgMjI1OC8zODA2LzE2NTgKZiAzMTM2LzMyODkvMTU4OSAzMTUzLzM4MTIvMTY1NiAzMTM3LzM4MTEvMTU4NyAzMTY1LzM5NzgvMTU4NyAzMTY5LzM5NzkvMTY1NiAzMTU5LzMyOTAvMTU4OQpmIDMxMzkvMzgwNS8xNTg1IDMxNTQvMzgwNC8xNTg0IDMxNDEvMzI2MC8xNTgyIDMxNjMvMzI1OS8xNTgyIDMxNzYvMzk4MC8xNTg0IDMxNjAvMzk4MS8xNTg1CmYgMzEzNy8zODExLzE1ODcgMzE1NS8zODE2LzE2NTIgMzEzOS8zODA1LzE1ODUgMzE2MC8zOTgxLzE1ODUgMzE3OC8zOTgyLzE2NTIgMzE2NS8zOTc4LzE1ODcKZiAzMTYzLzMyNTkvMTU4MiAzMTY2LzMyNTgvMTU4MSAzMTU4LzMyNTcvMTU4MCAzMTU3LzMyNTYvMTU4MCAzMTY4LzM5ODMvMTU4MSAzMTY3LzM5ODQvMTU4MSAzMTYxLzM3OTEvMTU4MiAyMjAyLzM3OTAvMTY1NCAyMjAxLzM5ODUvMTU4MSAyMjAwLzM5ODYvMTU4MSAyMTk5LzM5ODcvMTU4MSAyMjI5LzM5ODgvMTU4MSAyMjI4LzM5ODkvMTU4MSAyMjI1LzM5OTAvMTU4MSAyMjIwLzM5OTEvMTU4MSAyMjE5LzM5OTIvMTcyNwpmIDMxNjEvMzc5MS8xNTgyIDMxNjcvMzk4NC8xNTgxIDMxNjgvMzk4My8xNTgxIDMxNTcvMzI1Ni8xNTgwIDEwMDAvMjgxOC8xMTU1IDk5OS8yODE2LzExNTMKZiAzMTU5LzMyOTAvMTU4OSAzMTY5LzM5NzkvMTY1NiAzMTY1LzM5NzgvMTU4NyAyMjM2LzM5OTMvMTcyNCAyMjM1LzM5OTQvMTU4OCAyMjMxLzM5OTUvMTU4OCAyMjIyLzM5OTYvMTU4OCAyMjI0LzM5OTcvMTcyOApmIDMxNjQvMzI5NS8xNTg5IDMxNzMvMzI5NC8xNTkwIDMxNzIvMzI5My8xNTkwIDMxNzEvMzI5Mi8xNTkwIDMxNzAvMzI5MS8xNTkwIDMxNTkvMzI5MC8xNTg5IDIyMjQvMzk5Ny8xNzI4IDIyMjMvMzk5OC8xNTkwIDIyMjYvMzk5OS8xNTkwIDIyMjcvNDAwMC8xNTkwIDIyMTQvNDAwMS8xNTkwIDIyMTUvNDAwMi8xNTkwIDIyMTYvNDAwMy8xNTkwIDIyMTcvMzc5My8xNjU1CmYgMzE2NC8zMjk1LzE1ODkgMzE3NC8zNzk4LzE2NTYgMzE1Ni8zNzg2LzE1ODcgOTk3LzI4MTIvMTE0OSA5OTYvMjgxMC8xMTQ3CmYgMzE1Ni8zNzg2LzE1ODcgMzE3NS8zNzg1LzE2NTIgMzE2Mi8zNzg0LzE1ODUgOTk4LzI4MTQvMTE1MSA5OTcvMjgxMi8xMTQ5CmYgMzE2MC8zOTgxLzE1ODUgMzE3Ni8zOTgwLzE1ODQgMzE2My8zMjU5LzE1ODIgMjIxOS8zOTkyLzE3MjcgMjIyMS80MDA0LzE1ODQgMjIzMC80MDA1LzE1ODQgMjIzMi80MDA2LzE1ODQgMjIzNy80MDA3LzE3MjMKZiAzMTYyLzM3ODQvMTU4NSAzMTc3LzM3OTIvMTU4NCAzMTYxLzM3OTEvMTU4MiA5OTkvMjgxNi8xMTUzIDk5OC8yODE0LzExNTEKZiAzMTY1LzM5NzgvMTU4NyAzMTc4LzM5ODIvMTY1MiAzMTYwLzM5ODEvMTU4NSAyMjM3LzQwMDcvMTcyMyAyMjMzLzQwMDgvMTY1MiAyMjM4LzQwMDkvMTY1MiAyMjM0LzQwMTAvMTY1MiAyMjM2LzM5OTMvMTcyNApmIDMxODkvMzI1NC8xNTc5IDMxODAvMzI1My8xNTc4IDEzNDUvNDAxMS8xNzI5IDEzNDEvNDAxMi8xNzMwIDEzMzkvNDAxMy8xNzMwIDEzMzcvNDAxNC8xNzMwIDEzMzMvNDAxNS8xNzMwIDEzMzQvNDAxNi8xNzMwIDEzNTcvNDAxNy8xNzMwIDEzNTkvNDAxOC8xNzMwIDEzNjMvMzM1MC8xNjI4IDMxODYvMzM1NC8xNTc4IDMxODgvMzI1NS8xNTc5CmYgMzE4OC8zMjU1LzE1NzkgMzE4Ni8zMzU0LzE1NzggNzU2LzMwMjYvMTM2MyA3NTUvMzAyNC8xMzYxCmYgMzE4Ny8zMjUxLzE1NzYgMzE3OS8zMjUwLzE1NzUgMTM0My80MDE5LzE3MzEgMTM0Mi80MDIwLzE2MjQgMTM0Ni80MDIxLzE2MjQgMTM0OS80MDIyLzE2MjQgMTM1NC80MDIzLzE3MzIKZiAzMTkwLzMzNDkvMTU3NyAzMTgxLzMzNDQvMTU3NiA3NTgvMzAzMC8xMzY3IDc1Ny8zMDI4LzEzNjUKZiAzMTg2LzMzNTQvMTU3OCAzMTkwLzMzNDkvMTU3NyA3NTcvMzAyOC8xMzY1IDc1Ni8zMDI2LzEzNjMKZiAzMTg0LzMyNTIvMTU3NyAzMTg3LzMyNTEvMTU3NiAxMzU0LzQwMjMvMTczMiAxMzUzLzQwMjQvMTYyNyAxMzUyLzQwMjUvMTYyNyAxMzQ4LzQwMjYvMTYyNyAxMzUwLzQwMjcvMTczMwpmIDMxODAvMzI1My8xNTc4IDMxODQvMzI1Mi8xNTc3IDEzNTAvNDAyNy8xNzMzIDEzNTEvNDAyOC8xNjI5IDEzNDcvNDAyOS8xNjI5IDEzNDQvNDAzMC8xNjI5IDEzNDUvNDAxMS8xNzI5CmYgMzE3OS8zMjUwLzE1NzUgMzE4My8zMjQ5LzE1NzQgMzE4Mi8zMjQ4LzE1NzQgMzE4NS8zMzQzLzE1NzUgMTM2MC8zMzQyLzE2MjUgMTM1OC80MDMxLzE3MzQgMTM1Ni80MDMyLzE3MzQgMTM1NS80MDMzLzE3MzQgMTMzNS80MDM0LzE3MzQgMTMzNi80MDM1LzE3MzQgMTMzOC80MDM2LzE3MzQgMTM0MC80MDM3LzE3MzQgMTM0My80MDE5LzE3MzEKZiAzMTg1LzMzNDMvMTU3NSAzMTgyLzMyNDgvMTU3NCA3NjAvMzAzNC8xMzcxIDc1OS8zMDMyLzEzNjkKZiAzMTgxLzMzNDQvMTU3NiAzMTg1LzMzNDMvMTU3NSA3NTkvMzAzMi8xMzY5IDc1OC8zMDMwLzEzNjcKdXNlbXRsIGVkZ2Vfb2Zfc2NyZWVuCmYgMTMwNi80MDM4LzE3MzUgMTAzMy80MDM5LzE3MzYgMTAzNC80MDQwLzE3MzcgMTMyNS80MDQxLzE3MzgKZiAxMzMyLzQwNDIvMTczOSAxMDQxLzQwNDMvMTc0MCAxMDQyLzQwNDQvMTc0MSAxMzA1LzQwNDUvMTc0MgpmIDEzMzEvNDA0Ni8xNzQzIDEwNDAvNDA0Ny8xNzQ0IDEwNDEvNDA0My8xNzQwIDEzMzIvNDA0Mi8xNzM5CmYgMTMzMC80MDQ4LzE3NDUgMTAzOS80MDQ5LzE3NDYgMTA0MC80MDQ3LzE3NDQgMTMzMS80MDQ2LzE3NDMKZiAxMzI5LzQwNTAvMTc0NyAxMDM4LzQwNTEvMTc0OCAxMDM5LzQwNDkvMTc0NiAxMzMwLzQwNDgvMTc0NQpmIDEzMjgvNDA1Mi8xNzQ5IDEwMzcvNDA1My8xNzUwIDEwMzgvNDA1MS8xNzQ4IDEzMjkvNDA1MC8xNzQ3CmYgMTMyNy80MDU0LzE3NTEgMTAzNi80MDU1LzE3NTIgMTAzNy80MDUzLzE3NTAgMTMyOC80MDUyLzE3NDkKZiAxMzI2LzQwNTYvMTc1MyAxMDM1LzQwNTcvMTc1NCAxMDM2LzQwNTUvMTc1MiAxMzI3LzQwNTQvMTc1MQpmIDEzMjUvNDA0MS8xNzM4IDEwMzQvNDA0MC8xNzM3IDEwMzUvNDA1Ny8xNzU0IDEzMjYvNDA1Ni8xNzUzCmYgMTMyNC80MDU4LzE3NTUgMTAzMS80MDU5LzE3NTYgMTAzMi80MDYwLzE3NTcgMTMwNC80MDYxLzE3NTgKZiAxMzIzLzQwNjIvMTc1OSAxMDMwLzQwNjMvMTc2MCAxMDMxLzQwNTkvMTc1NiAxMzI0LzQwNTgvMTc1NQpmIDEzMjIvNDA2NC8xNzYxIDEwMjkvNDA2NS8xNzYyIDEwMzAvNDA2My8xNzYwIDEzMjMvNDA2Mi8xNzU5CmYgMTMyMS80MDY2LzE3NjMgMTAyOC80MDY3LzE3NjQgMTAyOS80MDY1LzE3NjIgMTMyMi80MDY0LzE3NjEKZiAxMzIwLzQwNjgvMTc2NSAxMDI3LzQwNjkvMTc2NiAxMDI4LzQwNjcvMTc2NCAxMzIxLzQwNjYvMTc2MwpmIDEzMTkvNDA3MC8xNzY3IDEwMjYvNDA3MS8xNzY4IDEwMjcvNDA2OS8xNzY2IDEzMjAvNDA2OC8xNzY1CmYgMTMxOC80MDcyLzE3NjkgMTAyNS80MDczLzE3NzAgMTAyNi80MDcxLzE3NjggMTMxOS80MDcwLzE3NjcKZiAxMzE3LzQwNzQvMTc3MSAxMDI0LzQwNzUvMTc3MiAxMDI1LzQwNzMvMTc3MCAxMzE4LzQwNzIvMTc2OQpmIDEzMTUvNDA3Ni8xNzczIDEwMjEvNDA3Ny8xNzc0IDEwMjIvNDA3OC8xNzc1IDEzMDMvNDA3OS8xNzc2CmYgMTMxNC80MDgwLzE3NzcgMTAyMC80MDgxLzE3NzggMTAyMS80MDc3LzE3NzQgMTMxNS80MDc2LzE3NzMKZiAxMzEzLzQwODIvMTc3OSAxMDE5LzQwODMvMTc4MCAxMDIwLzQwODEvMTc3OCAxMzE0LzQwODAvMTc3NwpmIDEzMTIvNDA4NC8xNzgxIDEwMTgvNDA4NS8xNzgyIDEwMTkvNDA4My8xNzgwIDEzMTMvNDA4Mi8xNzc5CmYgMTMxMS80MDg2LzE3ODMgMTAxNy80MDg3LzE3ODQgMTAxOC80MDg1LzE3ODIgMTMxMi80MDg0LzE3ODEKZiAxMzEwLzQwODgvMTc4NSAxMDE2LzQwODkvMTc4NiAxMDE3LzQwODcvMTc4NCAxMzExLzQwODYvMTc4MwpmIDEzMDkvNDA5MC8xNzg3IDEwMTUvNDA5MS8xNzg4IDEwMTYvNDA4OS8xNzg2IDEzMTAvNDA4OC8xNzg1CmYgMTMwOC80MDkyLzE3ODkgMTAxNC80MDkzLzE3OTAgMTAxNS80MDkxLzE3ODggMTMwOS80MDkwLzE3ODcKZiAxMzA3LzQwOTQvMTc5MSAxMDEzLzQwOTUvMTc5MiAxMDE0LzQwOTMvMTc5MCAxMzA4LzQwOTIvMTc4OQpmIDEzMTYvNDA5Ni8xNzkzIDEwMjMvNDA5Ny8xNzk0IDEwMjQvNDA3NS8xNzcyIDEzMTcvNDA3NC8xNzcxCmYgMTE2My80MDk4LzE3OTUgMTE2NC80MDk5LzE3OTYgMTAwNC80MTAwLzE3OTYgMTAwMy80MTAxLzE3OTYKZiAxMTY1LzQxMDIvMTc5NSAxMTYzLzQwOTgvMTc5NSAxMDAzLzQxMDEvMTc5NiAxMDA1LzQxMDMvMTc5NQpmIDExNjYvNDEwNC8xNzk1IDExNjUvNDEwMi8xNzk1IDEwMDUvNDEwMy8xNzk1IDEwMDYvNDEwNS8xNzk1CmYgMTE2Ny80MTA2LzE3OTcgMTE2Ni80MTA0LzE3OTUgMTAwNi80MTA1LzE3OTUgMTAwNy80MTA3LzE3OTcKZiAxMTY4LzQxMDgvMTc5NyAxMTY3LzQxMDYvMTc5NyAxMDA3LzQxMDcvMTc5NyAxMDA4LzQxMDkvMTc5NwpmIDExNjkvNDExMC8xNzk3IDExNjgvNDEwOC8xNzk3IDEwMDgvNDEwOS8xNzk3IDEwMDkvNDExMS8xNzk3CmYgMTE3MC80MTEyLzE3OTggMTE2OS80MTEwLzE3OTcgMTAwOS80MTExLzE3OTcgMTAxMC80MTEzLzE3OTgKZiAxMTcxLzQxMTQvMTc5OCAxMTcwLzQxMTIvMTc5OCAxMDEwLzQxMTMvMTc5OCAxMDExLzQxMTUvMTc5OApmIDExNzIvNDExNi8xNzk5IDExNzEvNDExNC8xNzk4IDEwMTEvNDExNS8xNzk4IDEwMTIvNDExNy8xNzk5CmYgMTE3My80MTE4LzE3OTYgMTE3NC80MTE5LzE3OTYgMTAxNC80MDkzLzE3OTYgMTAxMy80MTIwLzE3OTYKZiAxMTc0LzQxMTkvMTc5NiAxMTc1LzQxMjEvMTgwMCAxMDE1LzQwOTEvMTgwMCAxMDE0LzQwOTMvMTc5NgpmIDExNzUvNDEyMS8xODAwIDExNzYvNDEyMi8xODAwIDEwMTYvNDA4OS8xODAwIDEwMTUvNDA5MS8xODAwCmYgMTE3Ni80MTIyLzE4MDAgMTE3Ny80MTIzLzE4MDAgMTAxNy80MDg3LzE4MDAgMTAxNi80MDg5LzE4MDAKZiAxMTc3LzQxMjMvMTgwMCAxMTc4LzQxMjQvMTgwMSAxMDE4LzQwODUvMTgwMSAxMDE3LzQwODcvMTgwMApmIDExNzgvNDEyNC8xODAxIDExNzkvNDEyNS8xODAxIDEwMTkvNDA4My8xODAxIDEwMTgvNDA4NS8xODAxCmYgMTE3OS80MTI1LzE4MDEgMTE4MC80MTI2LzE4MDIgMTAyMC80MDgxLzE4MDIgMTAxOS80MDgzLzE4MDEKZiAxMTgwLzQxMjYvMTgwMiAxMTgxLzQxMjcvMTgwMiAxMDIxLzQwNzcvMTgwMiAxMDIwLzQwODEvMTgwMgpmIDExODEvNDEyNy8xODAyIDExODIvNDEyOC8xODAzIDEwMjIvNDEyOS8xODAzIDEwMjEvNDA3Ny8xODAyCmYgMTE4My80MTMwLzE3OTkgMTE4NC80MTMxLzE3OTggMTAyNC80MDc1LzE3OTggMTAyMy80MDk3LzE3OTkKZiAxMTg0LzQxMzEvMTc5OCAxMTg1LzQxMzIvMTc5OCAxMDI1LzQwNzMvMTc5OCAxMDI0LzQwNzUvMTc5OApmIDExODUvNDEzMi8xNzk4IDExODYvNDEzMy8xNzk3IDEwMjYvNDA3MS8xNzk3IDEwMjUvNDA3My8xNzk4CmYgMTE4Ni80MTMzLzE3OTcgMTE4Ny80MTM0LzE3OTcgMTAyNy80MDY5LzE3OTcgMTAyNi80MDcxLzE3OTcKZiAxMTg3LzQxMzQvMTc5NyAxMTg4LzQxMzUvMTc5NyAxMDI4LzQwNjcvMTc5NyAxMDI3LzQwNjkvMTc5NwpmIDExODgvNDEzNS8xNzk3IDExODkvNDEzNi8xODA0IDEwMjkvNDA2NS8xODA0IDEwMjgvNDA2Ny8xNzk3CmYgMTE4OS80MTM2LzE4MDQgMTE5MC80MTM3LzE3OTUgMTAzMC80MDYzLzE3OTUgMTAyOS80MDY1LzE4MDQKZiAxMTkwLzQxMzcvMTc5NSAxMTkxLzQxMzgvMTc5NSAxMDMxLzQwNTkvMTc5NiAxMDMwLzQwNjMvMTc5NQpmIDExOTEvNDEzOC8xNzk1IDExOTIvNDEzOS8xNzk2IDEwMzIvNDE0MC8xNzk2IDEwMzEvNDA1OS8xNzk2CmYgMTE5My80MTQxLzE3OTYgMTE5NC80MTQyLzE4MDUgMTAzNC80MDQwLzE4MDUgMTAzMy80MTQzLzE3OTYKZiAxMTk0LzQxNDIvMTgwNSAxMTk1LzQxNDQvMTgwNiAxMDM1LzQwNTcvMTgwNiAxMDM0LzQwNDAvMTgwNQpmIDExOTUvNDE0NC8xODA2IDExOTYvNDE0NS8xODAwIDEwMzYvNDA1NS8xODA2IDEwMzUvNDA1Ny8xODA2CmYgMTE5Ni80MTQ1LzE4MDAgMTE5Ny80MTQ2LzE4MDAgMTAzNy80MDUzLzE4MDAgMTAzNi80MDU1LzE4MDYKZiAxMTk3LzQxNDYvMTgwMCAxMTk4LzQxNDcvMTgwMSAxMDM4LzQwNTEvMTgwMSAxMDM3LzQwNTMvMTgwMApmIDExOTgvNDE0Ny8xODAxIDExOTkvNDE0OC8xODAxIDEwMzkvNDA0OS8xODAxIDEwMzgvNDA1MS8xODAxCmYgMTE5OS80MTQ4LzE4MDEgMTIwMC80MTQ5LzE4MDIgMTA0MC80MDQ3LzE4MDIgMTAzOS80MDQ5LzE4MDEKZiAxMjAwLzQxNDkvMTgwMiAxMjAxLzQxNTAvMTgwMiAxMDQxLzQwNDMvMTgwMiAxMDQwLzQwNDcvMTgwMgpmIDEyMDEvNDE1MC8xODAyIDEyMDIvNDE1MS8xODAzIDEwNDIvNDA0NC8xODAzIDEwNDEvNDA0My8xODAyCmYgMTE4Mi80MTI4LzE4MDMgMTE3Mi80MTE2LzE3OTkgMTAxMi80MTE3LzE3OTkgMTAyMi80MTI5LzE4MDMKZiAxMTkyLzQxMzkvMTc5NiAxMTczLzQxMTgvMTc5NiAxMDEzLzQxMjAvMTc5NiAxMDMyLzQxNDAvMTc5NgpmIDEyMDIvNDE1MS8xODAzIDExODMvNDEzMC8xNzk5IDEwMjMvNDA5Ny8xNzk5IDEwNDIvNDA0NC8xODAzCmYgMTE2NC80MDk5LzE3OTYgMTE5My80MTQxLzE3OTYgMTAzMy80MTQzLzE3OTYgMTAwNC80MTAwLzE3OTYKZiAxMDQ2LzQxNTIvMTgwNyAxMDQ1LzQxNTMvMTgwOCAxMjA3LzQxNTQvMTgwOSAxMjA4LzQxNTUvMTgxMApmIDEyOTMvNDE1Ni8xODExIDExMjQvMjc1NC8xMDkzIDExMjUvMjczOS8xMDc4IDEyOTQvNDE1Ny8xODEyCmYgMTMxNi80MDk2LzE3OTMgMTE0NS8yNzgxLzExMTggMTE0Ni8yNzg0LzExMjEgMTMwNS80MDQ1LzE3NDIKZiAxMzAyLzQxNTgvMTgxMyAxMTMzLzI3NzAvMTEwNyAxMTM0LzI3NzIvMTEwOSAxMzAzLzQwNzkvMTc3NgpmIDEzMDEvNDE1OS8xODE0IDExMzIvMjc2OC8xMTA1IDExMzMvMjc3MC8xMTA3IDEzMDIvNDE1OC8xODEzCmYgMTMwMC80MTYwLzE4MTUgMTEzMS8yNzY2LzExMDMgMTEzMi8yNzY4LzExMDUgMTMwMS80MTU5LzE4MTQKZiAxMjk5LzQxNjEvMTgxNiAxMTMwLzI3NjQvMTEwMSAxMTMxLzI3NjYvMTEwMyAxMzAwLzQxNjAvMTgxNQpmIDEyOTgvNDE2Mi8xODE3IDExMjkvMjc2MS8xMDk5IDExMzAvMjc2NC8xMTAxIDEyOTkvNDE2MS8xODE2CmYgMTI5Ny80MTYzLzE4MTggMTEyOC8yNzU4LzEwOTcgMTEyOS8yNzYwLzEwOTkgMTI5OC80MTY0LzE4MTcKZiAxMjk2LzQxNjUvMTgxOSAxMTI3LzI3NTYvMTA5NSAxMTI4LzI3NTgvMTA5NyAxMjk3LzQxNjMvMTgxOApmIDEyOTUvNDE2Ni8xODIwIDExMjYvMjc0Mi8xMDgxIDExMjcvMjc1Ni8xMDk1IDEyOTYvNDE2NS8xODE5CmYgMTMwNi80MDM4LzE3MzUgMTEyMy8yNzUxLzEwOTAgMTEyNC8yNzU0LzEwOTMgMTI5My80MTU2LzE4MTEKZiAxMzA3LzQwOTQvMTc5MSAxMTM1LzI3NDUvMTA4NCAxMTM2LzI3NDgvMTA4NyAxMzA0LzQwNjEvMTc1OApmIDEyOTQvNDE1Ny8xODEyIDExMjUvMjczOS8xMDc4IDExMjYvMjc0Mi8xMDgxIDEyOTUvNDE2Ni8xODIwCmYgMTA0NC80MTY3LzEzMSAxMDQzLzQxNjgvMTMxIDExNjMvNDE2OS8xMzEgMTE2NC80MTcwLzEzMQpmIDEwNDMvNDE2OC8xMzEgMTA0NS80MTUzLzEzMSAxMTY1LzQxNzEvMTMxIDExNjMvNDE2OS8xMzEKZiAxMDQ1LzQxNTMvMTMxIDEwNDYvNDE1Mi8xMzEgMTE2Ni80MTcyLzEzMSAxMTY1LzQxNzEvMTMxCmYgMTA0Ni80MTUyLzEzMSAxMDQ3LzQxNzMvMTgyMSAxMTY3LzQxNzQvMTgyMSAxMTY2LzQxNzIvMTMxCmYgMTA0Ny80MTczLzE4MjEgMTA0OC80MTc1LzEzMSAxMTY4LzQxNzYvMTMxIDExNjcvNDE3NC8xODIxCmYgMTA0OC80MTc1LzEzMSAxMDQ5LzQxNzcvMTMxIDExNjkvNDE3OC8xMzEgMTE2OC80MTc2LzEzMQpmIDEwNDkvNDE3Ny8xMzEgMTA1MC80MTc5LzEzMSAxMTcwLzQxODAvMTMxIDExNjkvNDE3OC8xMzEKZiAxMDUwLzQxNzkvMTMxIDEwNTEvNDE4MS8xODIxIDExNzEvNDE4Mi8xODIxIDExNzAvNDE4MC8xMzEKZiAxMDUxLzQxODEvMTgyMSAxMDUyLzQxODMvMTgyMSAxMTcyLzQxODQvMTgyMSAxMTcxLzQxODIvMTgyMQpmIDEwNTQvNDE4NS8xMzEgMTA1My80MTg2LzE4MjEgMTE3My80MTg3LzE4MjEgMTE3NC80MTg4LzEzMQpmIDEwNTUvNDE4OS8xODIxIDEwNTQvNDE4NS8xMzEgMTE3NC80MTg4LzEzMSAxMTc1LzQxOTAvMTgyMQpmIDEwNTYvNDE5MS8xODIxIDEwNTUvNDE4OS8xODIxIDExNzUvNDE5MC8xODIxIDExNzYvNDE5Mi8xODIxCmYgMTA1Ny80MTkzLzEzMSAxMDU2LzQxOTEvMTgyMSAxMTc2LzQxOTIvMTgyMSAxMTc3LzQxOTQvMTMxCmYgMTA1OC80MTk1LzEzMSAxMDU3LzQxOTMvMTMxIDExNzcvNDE5NC8xMzEgMTE3OC80MTk2LzEzMQpmIDEwNTkvNDE5Ny8xODIxIDEwNTgvNDE5NS8xMzEgMTE3OC80MTk2LzEzMSAxMTc5LzQxOTgvMTgyMQpmIDEwNjAvNDE5OS8xMzEgMTA1OS80MTk3LzE4MjEgMTE3OS80MTk4LzE4MjEgMTE4MC80MjAwLzEzMQpmIDEwNjEvNDIwMS8xODIxIDEwNjAvNDE5OS8xMzEgMTE4MC80MjAwLzEzMSAxMTgxLzQyMDIvMTgyMQpmIDEwNjIvNDIwMy8xODIxIDEwNjEvNDIwMS8xODIxIDExODEvNDIwMi8xODIxIDExODIvNDIwNC8xODIxCmYgMTA2NC80MjA1LzEzMSAxMDYzLzQyMDYvMTMxIDExODMvNDIwNy8xMzEgMTE4NC80MjA4LzEzMQpmIDEwNjUvNDIwOS8xODIxIDEwNjQvNDIwNS8xMzEgMTE4NC80MjA4LzEzMSAxMTg1LzQyMTAvMTgyMQpmIDEwNjYvNDIxMS8xODIxIDEwNjUvNDIwOS8xODIxIDExODUvNDIxMC8xODIxIDExODYvNDIxMi8xODIxCmYgMTA2Ny80MjEzLzE4MjEgMTA2Ni80MjExLzE4MjEgMTE4Ni80MjEyLzE4MjEgMTE4Ny80MjE0LzE4MjEKZiAxMDY4LzQyMTUvMTgyMSAxMDY3LzQyMTMvMTgyMSAxMTg3LzQyMTQvMTgyMSAxMTg4LzQyMTYvMTgyMQpmIDEwNjkvNDIxNy8xODIxIDEwNjgvNDIxNS8xODIxIDExODgvNDIxNi8xODIxIDExODkvNDIxOC8xODIxCmYgMTA3MC80MjE5LzE4MjEgMTA2OS80MjE3LzE4MjEgMTE4OS80MjE4LzE4MjEgMTE5MC80MjIwLzE4MjEKZiAxMDcxLzQyMjEvMTgyMSAxMDcwLzQyMTkvMTgyMSAxMTkwLzQyMjAvMTgyMSAxMTkxLzQyMjIvMTgyMQpmIDEwNzIvNDIyMy8xODIxIDEwNzEvNDIyMS8xODIxIDExOTEvNDIyMi8xODIxIDExOTIvNDIyNC8xODIxCmYgMTA3NC80MjI1LzEzMSAxMDczLzQyMjYvMTMxIDExOTMvNDIyNy8xMzEgMTE5NC80MjI4LzEzMQpmIDEwNzUvNDIyOS8xMzEgMTA3NC80MjI1LzEzMSAxMTk0LzQyMjgvMTMxIDExOTUvNDIzMC8xMzEKZiAxMDc2LzQyMzEvMTMxIDEwNzUvNDIyOS8xMzEgMTE5NS80MjMwLzEzMSAxMTk2LzQyMzIvMTMxCmYgMTA3Ny80MjMzLzEzMSAxMDc2LzQyMzEvMTMxIDExOTYvNDIzMi8xMzEgMTE5Ny80MjM0LzEzMQpmIDEwNzgvNDIzNS8xMzEgMTA3Ny80MjMzLzEzMSAxMTk3LzQyMzQvMTMxIDExOTgvNDIzNi8xMzEKZiAxMDc5LzQyMzcvMTMxIDEwNzgvNDIzNS8xMzEgMTE5OC80MjM2LzEzMSAxMTk5LzQyMzgvMTMxCmYgMTA4MC80MjM5LzE4MjEgMTA3OS80MjM3LzEzMSAxMTk5LzQyMzgvMTMxIDEyMDAvNDI0MC8xODIxCmYgMTA4MS80MjQxLzEzMSAxMDgwLzQyMzkvMTgyMSAxMjAwLzQyNDAvMTgyMSAxMjAxLzQyNDIvMTMxCmYgMTA4Mi80MjQzLzEzMSAxMDgxLzQyNDEvMTMxIDEyMDEvNDI0Mi8xMzEgMTIwMi80MjQ0LzEzMQpmIDEwNTIvNDE4My8xODIxIDEwNjIvNDIwMy8xODIxIDExODIvNDIwNC8xODIxIDExNzIvNDE4NC8xODIxCmYgMTA1My80MTg2LzE4MjEgMTIwMy80MjQ1LzE4MjEgMTIwNC80MjQ2LzE4MjEgMTA3Mi80MjIzLzE4MjEgMTE5Mi80MjI0LzE4MjEgMTE3My80MTg3LzE4MjEKZiAxMDYzLzQyMDYvMTMxIDEwODIvNDI0My8xMzEgMTIwMi80MjQ0LzEzMSAxMTgzLzQyMDcvMTMxCmYgMTA3My80MjI2LzEzMSAxMDQ0LzQxNjcvMTMxIDExNjQvNDE3MC8xMzEgMTE5My80MjI3LzEzMQpmIDEwNTkvNDE5Ny8xODIyIDEwNjAvNDE5OS8xODIzIDEyMjIvNDI0Ny8xODI0IDEyMjEvNDI0OC8xODI1CmYgMTA3NS80MjI5LzE4MjYgMTA3Ni80MjMxLzE4MjcgMTIzOC80MjQ5LzE4MjggMTIzNy80MjUwLzE4MjkKZiAxMDYwLzQxOTkvMTgyMyAxMDYxLzQyMDEvMTgzMCAxMjIzLzQyNTEvMTgzMSAxMjIyLzQyNDcvMTgyNApmIDEwNDcvNDE3My8xODMyIDEwNDYvNDE1Mi8xODA3IDEyMDgvNDE1NS8xODEwIDEyMDkvNDI1Mi8xODMzCmYgMTA3Ni80MjMxLzE4MjcgMTA3Ny80MjMzLzE4MzQgMTIzOS80MjUzLzE4MzUgMTIzOC80MjQ5LzE4MjgKZiAxMDYxLzQyMDEvMTgzMCAxMDYyLzQyMDMvMTgzNiAxMjI0LzQyNTQvMTgzNyAxMjIzLzQyNTEvMTgzMQpmIDEwNDgvNDE3NS8xODM4IDEwNDcvNDE3My8xODMyIDEyMDkvNDI1Mi8xODMzIDEyMTAvNDI1NS8xODM5CmYgMTA3Ny80MjMzLzE4MzQgMTA3OC80MjM1LzE4NDAgMTI0MC80MjU2LzE4NDEgMTIzOS80MjUzLzE4MzUKZiAxMDYzLzQyMDYvMTg0MiAxMDY0LzQyMDUvMTg0MyAxMjI2LzQyNTcvMTg0NCAxMjI1LzQyNTgvMTg0NQpmIDEwNDkvNDE3Ny8xODQ2IDEwNDgvNDE3NS8xODM4IDEyMTAvNDI1NS8xODM5IDEyMTEvNDI1OS8xODQ3CmYgMTA3OC80MjM1LzE4NDAgMTA3OS80MjM3LzE4NDggMTI0MS80MjYwLzE4NDkgMTI0MC80MjU2LzE4NDEKZiAxMDY0LzQyMDUvMTg0MyAxMDY1LzQyMDkvMTg1MCAxMjI3LzQyNjEvMTg1MSAxMjI2LzQyNTcvMTg0NApmIDEwNTAvNDE3OS8xODUyIDEwNDkvNDE3Ny8xODQ2IDEyMTEvNDI1OS8xODQ3IDEyMTIvNDI2Mi8xODUzCmYgMTA3OS80MjM3LzE4NDggMTA4MC80MjM5LzE4NTQgMTI0Mi80MjYzLzE4NTUgMTI0MS80MjYwLzE4NDkKZiAxMDY1LzQyMDkvMTg1MCAxMDY2LzQyMTEvMTg1NiAxMjI4LzQyNjQvMTg1NyAxMjI3LzQyNjEvMTg1MQpmIDEwNTEvNDE4MS8xODU4IDEwNTAvNDE3OS8xODUyIDEyMTIvNDI2Mi8xODUzIDEyMTMvNDI2NS8xODU5CmYgMTA4MC80MjM5LzE4NTQgMTA4MS80MjQxLzE4NjAgMTI0My80MjY2LzE4NjEgMTI0Mi80MjYzLzE4NTUKZiAxMDY2LzQyMTEvMTg1NiAxMDY3LzQyMTMvMTg2MiAxMjI5LzQyNjcvMTg2MyAxMjI4LzQyNjQvMTg1NwpmIDEwNTIvNDE4My8xODY0IDEwNTEvNDE4MS8xODU4IDEyMTMvNDI2NS8xODU5IDEyMTQvNDI2OC8xODY1CmYgMTA4MS80MjQxLzE4NjAgMTA4Mi80MjQzLzE4NjYgMTI0NC80MjY5LzE4NjcgMTI0My80MjY2LzE4NjEKZiAxMDY3LzQyMTMvMTg2MiAxMDY4LzQyMTUvMTg2OCAxMjMwLzQyNzAvMTg2OSAxMjI5LzQyNjcvMTg2MwpmIDEwNTMvNDE4Ni8xODcwIDEwNTQvNDE4NS8xODcxIDEyMTYvNDI3MS8xODcyIDEyMTUvNDI3Mi8xODcwCmYgMTA2Mi80MjAzLzE4MzYgMTA1Mi80MTgzLzE4NjQgMTIxNC80MjY4LzE4NjUgMTIyNC80MjU0LzE4MzcKZiAxMDY4LzQyMTUvMTg2OCAxMDY5LzQyMTcvMTg3MyAxMjMxLzQyNzMvMTg3NCAxMjMwLzQyNzAvMTg2OQpmIDEwNTQvNDE4NS8xODcxIDEwNTUvNDE4OS8xODc1IDEyMTcvNDI3NC8xODc2IDEyMTYvNDI3MS8xODcyCmYgMTA3Mi80MjIzLzE4NzcgMTIwNC80MjQ2LzE4NzggMTI0Ni80Mjc1LzE4NzggMTIzNC80Mjc2LzE4NzcKZiAxMDY5LzQyMTcvMTg3MyAxMDcwLzQyMTkvMTg3OSAxMjMyLzQyNzcvMTg4MCAxMjMxLzQyNzMvMTg3NApmIDEwNTUvNDE4OS8xODc1IDEwNTYvNDE5MS8xODgxIDEyMTgvNDI3OC8xODgyIDEyMTcvNDI3NC8xODc2CmYgMTA4Mi80MjQzLzE4NjYgMTA2My80MjA2LzE4NDIgMTIyNS80MjU4LzE4NDUgMTI0NC80MjY5LzE4NjcKZiAxMDcwLzQyMTkvMTg3OSAxMDcxLzQyMjEvMTg4MyAxMjMzLzQyNzkvMTg4NCAxMjMyLzQyNzcvMTg4MApmIDEwNTYvNDE5MS8xODgxIDEwNTcvNDE5My8xODg1IDEyMTkvNDI4MC8xODg2IDEyMTgvNDI3OC8xODgyCmYgMTA0NC80MTY3LzE4ODcgMTA3My80MjI2LzE4ODggMTIzNS80MjgxLzE4ODggMTIwNi80MjgyLzE4ODcKZiAxMDcxLzQyMjEvMTg4MyAxMDcyLzQyMjMvMTg3NyAxMjM0LzQyNzYvMTg3NyAxMjMzLzQyNzkvMTg4NApmIDEyMDMvNDI0NS8xODc4IDEwNTMvNDE4Ni8xODcwIDEyMTUvNDI3Mi8xODcwIDEyNDUvNDI4My8xODc4CmYgMTA1Ny80MTkzLzE4ODUgMTA1OC80MTk1LzE4ODkgMTIyMC80Mjg0LzE4OTAgMTIxOS80MjgwLzE4ODYKZiAxMDQzLzQxNjgvMTg5MSAxMDQ0LzQxNjcvMTg4NyAxMjA2LzQyODIvMTg4NyAxMjA1LzQyODUvMTg5MgpmIDEwNzMvNDIyNi8xODg4IDEwNzQvNDIyNS8xODkzIDEyMzYvNDI4Ni8xODk0IDEyMzUvNDI4MS8xODg4CmYgMTIwNC80MjQ2LzE4NzggMTIwMy80MjQ1LzE4NzggMTI0NS80MjgzLzE4NzggMTI0Ni80Mjc1LzE4NzgKZiAxMDU4LzQxOTUvMTg4OSAxMDU5LzQxOTcvMTgyMiAxMjIxLzQyNDgvMTgyNSAxMjIwLzQyODQvMTg5MApmIDEwNDUvNDE1My8xODA4IDEwNDMvNDE2OC8xODkxIDEyMDUvNDI4NS8xODkyIDEyMDcvNDE1NC8xODA5CmYgMTA3NC80MjI1LzE4OTMgMTA3NS80MjI5LzE4MjYgMTIzNy80MjUwLzE4MjkgMTIzNi80Mjg2LzE4OTQKZiAxMjY5LzQyODcvMTg5NSAxMjkyLzQyODgvMTg5NSAxMjkxLzQyODkvMTg5NSAxMjkwLzQyOTAvMTg5NSAxMjg5LzQyOTEvMTg5NSAxMjg4LzQyOTIvMTg5NSAxMjg3LzQyOTMvMTg5NSAxMjg2LzQyOTQvMTg5NSAxMjg1LzQyOTUvMTg5NSAxMjg0LzQyOTYvMTg5NSAxMjgzLzQyOTcvMTg5NSAxMjgyLzQyOTgvMTg5NSAxMjgxLzQyOTkvMTg5NSAxMjgwLzQzMDAvMTg5NSAxMjc5LzQzMDEvMTg5NSAxMjc4LzQzMDIvMTg5NSAxMjc3LzQzMDMvMTg5NSAxMjc2LzQzMDQvMTg5NSAxMjc1LzQzMDUvMTg5NSAxMjc0LzQzMDYvMTg5NSAxMjczLzQzMDcvMTg5NSAxMjcyLzQzMDgvMTg5NSAxMjcxLzQzMDkvMTg5NSAxMjcwLzQzMTAvMTg5NQpmIDEyNDYvNDI3NS8xODk2IDEyNDUvNDI4My8xODk2IDEyNjkvNDI4Ny8xODk2IDEyNzAvNDMxMC8xODk2CmYgMTAwMy80MzExLzE4OTcgMTI5NC80MTU3LzE4MTIgMTI5NS80MTY2LzE4MjAgMTAwNS80MzEyLzE4OTgKZiAxMDEzLzQwOTUvMTc5MiAxMzA3LzQwOTQvMTc5MSAxMzA0LzQwNjEvMTc1OCAxMDMyLzQwNjAvMTc1NwpmIDEwMzMvNDAzOS8xNzM2IDEzMDYvNDAzOC8xNzM1IDEyOTMvNDE1Ni8xODExIDEwMDQvNDMxMy8xODk5CmYgMTAwNS80MzEyLzE4OTggMTI5NS80MTY2LzE4MjAgMTI5Ni80MTY1LzE4MTkgMTAwNi80MzE0LzE5MDAKZiAxMDA2LzQzMTQvMTkwMCAxMjk2LzQxNjUvMTgxOSAxMjk3LzQxNjMvMTgxOCAxMDA3LzQzMTUvMTkwMQpmIDEwMDcvNDMxNS8xOTAxIDEyOTcvNDE2My8xODE4IDEyOTgvNDE2NC8xODE3IDEwMDgvNDMxNi8xOTAyCmYgMTAwOC80MzE3LzE5MDIgMTI5OC80MTYyLzE4MTcgMTI5OS80MTYxLzE4MTYgMTAwOS80MzE4LzE5MDMKZiAxMDA5LzQzMTgvMTkwMyAxMjk5LzQxNjEvMTgxNiAxMzAwLzQxNjAvMTgxNSAxMDEwLzQzMTkvMTkwNApmIDEwMTAvNDMxOS8xOTA0IDEzMDAvNDE2MC8xODE1IDEzMDEvNDE1OS8xODE0IDEwMTEvNDMyMC8xOTA1CmYgMTAxMS80MzIwLzE5MDUgMTMwMS80MTU5LzE4MTQgMTMwMi80MTU4LzE4MTMgMTAxMi80MzIxLzE5MDYKZiAxMDEyLzQzMjEvMTkwNiAxMzAyLzQxNTgvMTgxMyAxMzAzLzQwNzkvMTc3NiAxMDIyLzQwNzgvMTc3NQpmIDEwMjMvNDA5Ny8xNzk0IDEzMTYvNDA5Ni8xNzkzIDEzMDUvNDA0NS8xNzQyIDEwNDIvNDA0NC8xNzQxCmYgMTAwNC80MzEzLzE4OTkgMTI5My80MTU2LzE4MTEgMTI5NC80MTU3LzE4MTIgMTAwMy80MzExLzE4OTcKZiAxMTQ1LzI3ODEvMTExOCAxMzE2LzQwOTYvMTc5MyAxMzE3LzQwNzQvMTc3MSAxMTQ3LzMzMTQvMTU5OQpmIDExMzUvMjc0NS8xMDg0IDEzMDcvNDA5NC8xNzkxIDEzMDgvNDA5Mi8xNzg5IDExMzcvMzMxNS8xNjAwCmYgMTEzNy8zMzE1LzE2MDAgMTMwOC80MDkyLzE3ODkgMTMwOS80MDkwLzE3ODcgMTEzOC8zMzE2LzE2MDEKZiAxMTM4LzMzMTYvMTYwMSAxMzA5LzQwOTAvMTc4NyAxMzEwLzQwODgvMTc4NSAxMTM5LzMzMTcvMTYwMgpmIDExMzkvMzMxNy8xNjAyIDEzMTAvNDA4OC8xNzg1IDEzMTEvNDA4Ni8xNzgzIDExNDAvMzMxOC8xNjAzCmYgMTE0MC8zMzE4LzE2MDMgMTMxMS80MDg2LzE3ODMgMTMxMi80MDg0LzE3ODEgMTE0MS8zMzE5LzE2MDQKZiAxMTQxLzMzMTkvMTYwNCAxMzEyLzQwODQvMTc4MSAxMzEzLzQwODIvMTc3OSAxMTQyLzMzMjAvMTYwNQpmIDExNDIvMzMyMC8xNjA1IDEzMTMvNDA4Mi8xNzc5IDEzMTQvNDA4MC8xNzc3IDExNDMvMzMyMS8xNjA2CmYgMTE0My8zMzIxLzE2MDYgMTMxNC80MDgwLzE3NzcgMTMxNS80MDc2LzE3NzMgMTE0NC8zMzIyLzE2MDcKZiAxMTQ0LzMzMjIvMTYwNyAxMzE1LzQwNzYvMTc3MyAxMzAzLzQwNzkvMTc3NiAxMTM0LzI3NzIvMTEwOQpmIDExNDcvMzMxNC8xNTk5IDEzMTcvNDA3NC8xNzcxIDEzMTgvNDA3Mi8xNzY5IDExNDgvMzMyMy8xNjA4CmYgMTE0OC8zMzIzLzE2MDggMTMxOC80MDcyLzE3NjkgMTMxOS80MDcwLzE3NjcgMTE0OS8zMzI0LzE2MDkKZiAxMTQ5LzMzMjQvMTYwOSAxMzE5LzQwNzAvMTc2NyAxMzIwLzQwNjgvMTc2NSAxMTUwLzMzMjUvMTYxMApmIDExNTAvMzMyNS8xNjEwIDEzMjAvNDA2OC8xNzY1IDEzMjEvNDA2Ni8xNzYzIDExNTEvMzMyNi8xNjExCmYgMTE1MS8zMzI2LzE2MTEgMTMyMS80MDY2LzE3NjMgMTMyMi80MDY0LzE3NjEgMTE1Mi8zMzI3LzE2MTIKZiAxMTUyLzMzMjcvMTYxMiAxMzIyLzQwNjQvMTc2MSAxMzIzLzQwNjIvMTc1OSAxMTUzLzMzMjgvMTYxMwpmIDExNTMvMzMyOC8xNjEzIDEzMjMvNDA2Mi8xNzU5IDEzMjQvNDA1OC8xNzU1IDExNTQvMzMyOS8xNjE0CmYgMTE1NC8zMzI5LzE2MTQgMTMyNC80MDU4LzE3NTUgMTMwNC80MDYxLzE3NTggMTEzNi8yNzQ4LzEwODcKZiAxMTU1LzMzMzAvMTYxNSAxMzI1LzQwNDEvMTczOCAxMzI2LzQwNTYvMTc1MyAxMTU2LzMzMzEvMTYxNgpmIDExNTYvMzMzMS8xNjE2IDEzMjYvNDA1Ni8xNzUzIDEzMjcvNDA1NC8xNzUxIDExNTcvMzMzMi8xNjE3CmYgMTE1Ny8zMzMyLzE2MTcgMTMyNy80MDU0LzE3NTEgMTMyOC80MDUyLzE3NDkgMTE1OC8zMzMzLzE2MTgKZiAxMTU4LzMzMzMvMTYxOCAxMzI4LzQwNTIvMTc0OSAxMzI5LzQwNTAvMTc0NyAxMTU5LzMzMzQvMTYxOQpmIDExNTkvMzMzNC8xNjE5IDEzMjkvNDA1MC8xNzQ3IDEzMzAvNDA0OC8xNzQ1IDExNjAvMzMzNS8xNjIwCmYgMTE2MC8zMzM1LzE2MjAgMTMzMC80MDQ4LzE3NDUgMTMzMS80MDQ2LzE3NDMgMTE2MS8zMzM2LzE2MjEKZiAxMTYxLzMzMzYvMTYyMSAxMzMxLzQwNDYvMTc0MyAxMzMyLzQwNDIvMTczOSAxMTYyLzMzMzcvMTYyMgpmIDExNjIvMzMzNy8xNjIyIDEzMzIvNDA0Mi8xNzM5IDEzMDUvNDA0NS8xNzQyIDExNDYvMjc4NC8xMTIxCmYgMTEyMy8yNzUxLzEwOTAgMTMwNi80MDM4LzE3MzUgMTMyNS80MDQxLzE3MzggMTE1NS8zMzMwLzE2MTUKdXNlbXRsIHNjcmVlbgpmIDEyMDcvNDMyMi8xMzEgMTIwNS80MzIzLzEzMSAxMjA2LzQzMjQvMTMxIDEyMzUvNDMyNS8xMzEgMTIzNi80MzI2LzEzMSAxMjM3LzQzMjcvMTMxIDEyMzgvNDMyOC8xMzEgMTIzOS80MzI5LzEzMSAxMjQwLzQzMzAvMTMxIDEyNDEvNDMzMS8xMzEgMTI0Mi80MzMyLzEzMSAxMjQzLzQzMzMvMTMxIDEyNDQvNDMzNC8xMzEgMTIyNS80MzM1LzEzMSAxMjI2LzQzMzYvMTMxIDEyMjcvNDMzNy8xMzEgMTIyOC80MzM4LzEzMSAxMjI5LzQzMzkvMTMxIDEyMzAvNDM0MC8xMzEgMTIzMS80MzQxLzEzMSAxMjMyLzQzNDIvMTMxIDEyMzMvNDM0My8xMzEgMTIzNC80MzQ0LzEzMSAxMjQ2LzQzNDUvMTMxIDEyNDcvNDM0Ni8xMzEgMTI0OC80MzQ3LzEzMSAxMjQ5LzQzNDgvMTMxIDEyNTAvNDM0OS8xMzEgMTI1MS80MzUwLzEzMSAxMjUyLzQzNTEvMTMxIDEyNTMvNDM1Mi8xMzEgMTI1NC80MzUzLzEzMSAxMjU1LzQzNTQvMTMxIDEyNTYvNDM1NS8xMzEgMTI1Ny80MzU2LzEzMSAxMjU4LzQzNTcvMTMxIDEyNTkvNDM1OC8xMzEgMTI2MC80MzU5LzEzMSAxMjYxLzQzNjAvMTMxIDEyNjIvNDM2MS8xMzEgMTI2My80MzYyLzEzMSAxMjY0LzQzNjMvMTMxIDEyNjUvNDM2NC8xMzEgMTI2Ni80MzY1LzEzMSAxMjY3LzQzNjYvMTMxIDEyNjgvNDM2Ny8xMzEgMTI0NS80MzY4LzEzMSAxMjE1LzQzNjkvMTMxIDEyMTYvNDM3MC8xMzEgMTIxNy80MzcxLzEzMSAxMjE4LzQzNzIvMTMxIDEyMTkvNDM3My8xMzEgMTIyMC80Mzc0LzEzMSAxMjIxLzQzNzUvMTMxIDEyMjIvNDM3Ni8xMzEgMTIyMy80Mzc3LzEzMSAxMjI0LzQzNzgvMTMxIDEyMTQvNDM3OS8xMzEgMTIxMy80MzgwLzEzMSAxMjEyLzQzODEvMTMxIDEyMTEvNDM4Mi8xMzEgMTIxMC80MzgzLzEzMSAxMjA5LzQzODQvMTMxIDEyMDgvNDM4NS8xMzEKZiAxMjU1LzQzODYvMTkwNyAxMjU0LzQzODcvMTkwOCAxMjc4LzQzMDIvMTkwOSAxMjc5LzQzMDEvMTkxMApmIDEyNDgvNDM4OC8xOTExIDEyNDcvNDM4OS8xOTEyIDEyNzEvNDMwOS8xOTEzIDEyNzIvNDMwOC8xOTE0CmYgMTI2My80MzkwLzE5MTUgMTI2Mi80MzkxLzE5MTYgMTI4Ni80Mjk0LzE5MTcgMTI4Ny80MjkzLzE5MTgKZiAxMjU2LzQzOTIvMTkxOSAxMjU1LzQzODYvMTkwNyAxMjc5LzQzMDEvMTkxMCAxMjgwLzQzMDAvMTkyMApmIDEyNDkvNDM5My8xOTIxIDEyNDgvNDM4OC8xOTExIDEyNzIvNDMwOC8xOTE0IDEyNzMvNDMwNy8xOTIyCmYgMTI2NC80Mzk0LzE5MjMgMTI2My80MzkwLzE5MTUgMTI4Ny80MjkzLzE5MTggMTI4OC80MjkyLzE5MjQKZiAxMjU3LzQzOTUvMTkyNSAxMjU2LzQzOTIvMTkxOSAxMjgwLzQzMDAvMTkyMCAxMjgxLzQyOTkvMTkyNgpmIDEyNTAvNDM5Ni8xOTI3IDEyNDkvNDM5My8xOTIxIDEyNzMvNDMwNy8xOTIyIDEyNzQvNDMwNi8xOTI4CmYgMTI2NS80Mzk3LzE5MjkgMTI2NC80Mzk0LzE5MjMgMTI4OC80MjkyLzE5MjQgMTI4OS80MjkxLzE5MjkKZiAxMjU4LzQzOTgvMTkzMCAxMjU3LzQzOTUvMTkyNSAxMjgxLzQyOTkvMTkyNiAxMjgyLzQyOTgvMTkzMQpmIDEyNTEvNDM5OS8xOTMyIDEyNTAvNDM5Ni8xOTI3IDEyNzQvNDMwNi8xOTI4IDEyNzUvNDMwNS8xOTMzCmYgMTI2Ni80NDAwLzE5MzQgMTI2NS80Mzk3LzE5MzUgMTI4OS80MjkxLzE5MzUgMTI5MC80MjkwLzE5MzYKZiAxMjU5LzQ0MDEvMTkzNyAxMjU4LzQzOTgvMTkzMCAxMjgyLzQyOTgvMTkzMSAxMjgzLzQyOTcvMTkzOApmIDEyNTIvNDQwMi8xOTM5IDEyNTEvNDM5OS8xOTMyIDEyNzUvNDMwNS8xOTMzIDEyNzYvNDMwNC8xOTQwCmYgMTI2Ny80NDAzLzE5NDEgMTI2Ni80NDAwLzE5MzQgMTI5MC80MjkwLzE5MzYgMTI5MS80Mjg5LzE5NDIKZiAxMjYwLzQ0MDQvMTk0MyAxMjU5LzQ0MDEvMTkzNyAxMjgzLzQyOTcvMTkzOCAxMjg0LzQyOTYvMTk0NApmIDEyNTMvNDQwNS8xOTQ1IDEyNTIvNDQwMi8xOTM5IDEyNzYvNDMwNC8xOTQwIDEyNzcvNDMwMy8xOTQ2CmYgMTI2OC80NDA2LzE5NDcgMTI2Ny80NDAzLzE5NDEgMTI5MS80Mjg5LzE5NDIgMTI5Mi80Mjg4LzE5NDgKZiAxMjYxLzQ0MDcvMTk0OSAxMjYwLzQ0MDQvMTk0MyAxMjg0LzQyOTYvMTk0NCAxMjg1LzQyOTUvMTk1MApmIDEyNTQvNDM4Ny8xOTA4IDEyNTMvNDQwNS8xOTQ1IDEyNzcvNDMwMy8xOTQ2IDEyNzgvNDMwMi8xOTA5CmYgMTI0NS80MjgzLzE5NTEgMTI2OC80NDA2LzE5NDcgMTI5Mi80Mjg4LzE5NDggMTI2OS80Mjg3LzE5NTEKZiAxMjQ3LzQzODkvMTkxMiAxMjQ2LzQyNzUvMTk1MiAxMjcwLzQzMTAvMTk1MiAxMjcxLzQzMDkvMTkxMwpmIDEyNjIvNDM5MS8xOTE2IDEyNjEvNDQwNy8xOTQ5IDEyODUvNDI5NS8xOTUwIDEyODYvNDI5NC8xOTE3Cm8gQ3ViZS4wMDFfQ3ViZQp2IDMuMTA0NDI2IDIuMTk3NTQ2IDYuNTU3MTIyCnYgMy4xMDQ0MjYgMi4xODQzNDggNi41NTcwNzMKdiAzLjA1ODY4NCAyLjI1MDE3NSAtNi42MzI0NzQKdiAzLjA1ODY4NCAyLjIzNjk3NiAtNi42MzI1MjQKdiAtMy4wOTI5MTEgMi4xOTc1NTEgNi41NTcxMjIKdiAtMy4wOTI5MTEgMi4xODQzNTIgNi41NTcwNzMKdiAtMy4wNDcxNjkgMi4yNTAxODAgLTYuNjMyNDc0CnYgLTMuMDQ3MTY5IDIuMjM2OTgxIC02LjYzMjUyNAp2IDMuMjQxMTgyIDIuMjAwNzA0IDYuMDI2MDI3CnYgMy4yNDExODIgMi4xODc1MDUgNi4wMjU5NzcKdiAtMy4yMjk2NjYgMi4yMDA3MDkgNi4wMjYwMjcKdiAtMy4yMjk2NjYgMi4xODc1MTAgNi4wMjU5NzcKdiAtMi42ODE4NzAgMi4yNTAxODAgLTYuODQ3NzA1CnYgLTIuNjgxODcwIDIuMjM2OTgxIC02Ljg0Nzc1NQp2IC0yLjY4MTg3MCAyLjE5NzU1MSA2Ljg0Nzc1NQp2IC0yLjY4MTg3MCAyLjE4NDM1MiA2Ljg0NzcwNQp2IC0yLjY4MTg3MCAyLjE4NzUxMCA2LjAyNTk3Nwp2IC0yLjY4MTg3MCAyLjIwMDcwOCA2LjAyNjAyNwp2IDIuNjU5MTQ4IDIuMjUwMTc1IC02Ljg0NzcwNQp2IDIuNjU5MTQ4IDIuMTg0MzQ4IDYuODQ3NzA1CnYgMi42NTkxNDggMi4yMDA3MDQgNi4wMjYwMjcKdiAyLjY1OTE0OCAyLjIzNjk3NyAtNi44NDc3NTUKdiAyLjY1OTE0OCAyLjE5NzU0NiA2Ljg0Nzc1NQp2IDIuNjU5MTQ4IDIuMTg3NTA1IDYuMDI1OTc3CnYgMy4yNDExODIgMi4yMzQwMTYgLTYuMDc3Mzg1CnYgLTMuMjI5NjY2IDIuMjQ3MjIwIC02LjA3NzMzNgp2IDMuMjQxMTgyIDIuMjQ3MjE1IC02LjA3NzMzNgp2IC0zLjIyOTY2NiAyLjIzNDAyMSAtNi4wNzczODUKdiAtMi42ODE4NzAgMi4yNDcyMTkgLTYuMDc3MzM2CnYgLTIuNjgxODcwIDIuMjM0MDIxIC02LjA3NzM4NQp2IDIuNjU5MTQ4IDIuMjQ3MjE1IC02LjA3NzMzNgp2IDIuNjU5MTQ4IDIuMjM0MDE2IC02LjA3NzM4NQp2dCAwLjM3NTAwMCAwLjIzNTkzOAp2dCAwLjYyNTAwMCAwLjIzNTkzOAp2dCAwLjYyNTAwMCAwLjI1MDAwMAp2dCAwLjM3NTAwMCAwLjI1MDAwMAp2dCAwLjM3NTE3MiAwLjQ3ODk2MAp2dCAwLjYyNDgyOCAwLjQ3ODk2MAp2dCAwLjYyNTAwMCAwLjUwMDAwMAp2dCAwLjM3NTAwMCAwLjUwMDAwMAp2dCAwLjM3NTAwMCAwLjczNTAwMAp2dCAwLjYyNTAwMCAwLjczNTAwMAp2dCAwLjYyNTAwMCAwLjc1MDAwMAp2dCAwLjM3NTAwMCAwLjc1MDAwMAp2dCAwLjM3NTE1OSAwLjk3NzYxNwp2dCAwLjYyMzczMyAwLjk3NzI4Mwp2dCAwLjYyNTAwMCAxLjAwMDAwMAp2dCAwLjM3NTAwMCAxLjAwMDAwMAp2dCAwLjM1MzgzNiAwLjczNTAwMAp2dCAwLjM1MzgzNiAwLjc1MDAwMAp2dCAwLjg1MjUxMyAwLjczNTAwMAp2dCAwLjg3NTAwMCAwLjczNTAwMAp2dCAwLjg3NTAwMCAwLjc1MDAwMAp2dCAwLjg1MjUxMyAwLjc1MDAwMAp2dCAwLjg1MjUxMyAwLjUxNDA2Mwp2dCAwLjg3NTAwMCAwLjUxNDA2Mwp2dCAwLjM1MzgzNiAwLjUxNDA2Mwp2dCAwLjM3NTAwMCAwLjUxNDA2Mwp2dCAwLjYyNTAwMCAwLjUxNDA2Mwp2dCAwLjM3NTAwMCAwLjAwMDAwMAp2dCAwLjYyNTAwMCAwLjAwMDAwMAp2dCAwLjYyNTAwMCAwLjAxNTAwMAp2dCAwLjM3NTAwMCAwLjAxNTAwMAp2dCAwLjE0NzQ4NyAwLjUxNDA2Mwp2dCAwLjE0NzQ4NyAwLjczNTAwMAp2dCAwLjY0NjE2NCAwLjUxNDA2Mwp2dCAwLjY0NjE2NCAwLjczNTAwMAp2dCAwLjY0NjE2NCAwLjc1MDAwMAp2dCAwLjE0NzQ4NyAwLjc1MDAwMAp2dCAwLjYyNTAwMCAwLjc3MTE2NAp2dCAwLjM3NTE3MiAwLjc3MTA0MAp2dCAwLjM3NTAxNyAwLjI3MjQ5OQp2dCAwLjYyNDgxNyAwLjI3MjM2Ngp2dCAwLjEyNTAwMCAwLjczNTAwMAp2dCAwLjEyNTAwMCAwLjc1MDAwMAp2dCAwLjEyNTAwMCAwLjUxNDA2Mwp2dCAwLjY0NjE2NCAwLjUwMDAwMAp2dCAwLjg1MjUxMyAwLjUwMDAwMAp2dCAwLjEyNTAwMCAwLjUwMDAwMAp2dCAwLjE0NzQ4NyAwLjUwMDAwMAp2dCAwLjM1MzgzNiAwLjUwMDAwMAp2dCAwLjg3NTAwMCAwLjUwMDAwMAp2biAwLjk1MDAgMC4wMDEyIC0wLjMxMjMKdm4gLTAuNTA3NiAwLjAwMzMgLTAuODYxNgp2biAtMC45Njg0IC0wLjAwMDkgMC4yNDk0CnZuIDAuNTQ2NiAtMC4wMDMyIDAuODM3NAp2biAtMC4wMDE1IDEuMDAwMCAwLjAwNDgKdm4gLTAuMDAxNCAtMS4wMDAwIC0wLjAwNDgKdm4gLTAuMDAwMCAtMS4wMDAwIC0wLjAwMzgKdm4gMC4wMDAwIDEuMDAwMCAwLjAwMzgKdm4gLTEuMDAwMCAtMC4wMDAwIDAuMDAwMAp2biAwLjk2ODQgLTAuMDAwOSAwLjI0OTQKdm4gMC4wMDE1IC0xLjAwMDAgLTAuMDA0OAp2biAtMC41NzczIC0wLjAwMzEgMC44MTY1CnZuIDAuMDAwMCAwLjAwMzggLTEuMDAwMAp2biAwLjQ3NDMgMC4wMDMzIC0wLjg4MDQKdm4gMC4wMDE0IDEuMDAwMCAwLjAwNDgKdm4gMC4wMDAwIC0wLjAwMzggMS4wMDAwCnZuIC0wLjAwMTAgMS4wMDAwIDAuMDA0Ngp2biAtMC4wMDExIC0xLjAwMDAgLTAuMDA0Ngp2biAtMC45NTAwIDAuMDAxMiAtMC4zMTIzCnZuIDAuMDAxMSAxLjAwMDAgMC4wMDQ2CnZuIDAuMDAxMCAtMS4wMDAwIC0wLjAwNDYKdm4gMS4wMDAwIC0wLjAwMDAgMC4wMDAwCnVzZW10bCBnbGFzc19vbl9zY3JlZW4KcyBvZmYKZiAzMjE3LzQ0MDgvMTk1MyAzMjE1LzQ0MDkvMTk1MyAzMTk0LzQ0MTAvMTk1MyAzMTkzLzQ0MTEvMTk1MwpmIDMyMDMvNDQxMi8xOTU0IDMyMDQvNDQxMy8xOTU0IDMxOTgvNDQxNC8xOTU0IDMxOTcvNDQxNS8xOTU0CmYgMzIwMS80NDE2LzE5NTUgMzIwMi80NDE3LzE5NTUgMzE5Ni80NDE4LzE5NTUgMzE5NS80NDE5LzE5NTUKZiAzMjEzLzQ0MjAvMTk1NiAzMjEwLzQ0MjEvMTk1NiAzMTkyLzQ0MjIvMTk1NiAzMTkxLzQ0MjMvMTk1NgpmIDMyMDgvNDQyNC8xOTU3IDMyMDEvNDQxNi8xOTU3IDMxOTUvNDQxOS8xOTU3IDMyMDUvNDQyNS8xOTU3CmYgMzIxNC80NDI2LzE5NTggMzIwMC80NDI3LzE5NTggMzE5Mi80NDI4LzE5NTggMzIxMC80NDI5LzE5NTgKZiAzMjIyLzQ0MzAvMTk1OSAzMjE1LzQ0MzEvMTk1OSAzMjAwLzQ0MjcvMTk1OSAzMjE0LzQ0MjYvMTk1OQpmIDMyMTkvNDQzMi8xOTYwIDMyMTYvNDQzMy8xOTYwIDMyMDEvNDQxNi8xOTYwIDMyMDgvNDQyNC8xOTYwCmYgMzIxNi80NDMzLzE5NjEgMzIxOC80NDM0LzE5NjEgMzIwMi80NDE3LzE5NjEgMzIwMS80NDE2LzE5NjEKZiAzMTkxLzQ0MzUvMTk2MiAzMTkyLzQ0MzYvMTk2MiAzMjAwLzQ0MzcvMTk2MiAzMTk5LzQ0MzgvMTk2MgpmIDMyMjEvNDQzOS8xOTYwIDMyMTkvNDQzMi8xOTYwIDMyMDgvNDQyNC8xOTYwIDMyMTEvNDQ0MC8xOTYwCmYgMzIxOC80NDM0LzE5NTkgMzIyMC80NDQxLzE5NTkgMzIwNy80NDQyLzE5NTkgMzIwMi80NDE3LzE5NTkKZiAzMjAyLzQ0MTcvMTk2MyAzMjA3LzQ0NDIvMTk2MyAzMjA2LzQ0NDMvMTk2MyAzMTk2LzQ0MTgvMTk2MwpmIDMyMTEvNDQ0MC8xOTYwIDMyMDgvNDQyNC8xOTYwIDMyMDUvNDQyNS8xOTYwIDMyMTMvNDQ0NC8xOTYwCmYgMzE5NS80NDE5LzE5NjQgMzE5Ni80NDE4LzE5NjQgMzIwNi80NDQ1LzE5NjQgMzIwNS80NDQ2LzE5NjQKZiAzMjA5LzQ0NDcvMTk2NSAzMjEyLzQ0NDgvMTk2NSAzMjA0LzQ0MTMvMTk2NSAzMjAzLzQ0MTIvMTk2NQpmIDMxOTMvNDQxMS8xOTY2IDMxOTQvNDQxMC8xOTY2IDMyMTIvNDQ0OC8xOTY2IDMyMDkvNDQ0Ny8xOTY2CmYgMzE5OS80NDQ5LzE5NjcgMzIxMS80NDQwLzE5NjcgMzIxMy80NDQ0LzE5NjcgMzE5MS80NDUwLzE5NjcKZiAzMjE3LzQ0NTEvMTk2MCAzMjIxLzQ0MzkvMTk2MCAzMjExLzQ0NDAvMTk2MCAzMTk5LzQ0NDkvMTk2MApmIDMyMjAvNDQ0MS8xOTU5IDMyMjIvNDQzMC8xOTU5IDMyMTQvNDQyNi8xOTU5IDMyMDcvNDQ0Mi8xOTU5CmYgMzIwNy80NDQyLzE5NTkgMzIxNC80NDI2LzE5NTkgMzIxMC80NDI5LzE5NTkgMzIwNi80NDQzLzE5NTkKZiAzMjA1LzQ0NDYvMTk2OCAzMjA2LzQ0NDUvMTk2OCAzMjEwLzQ0MjEvMTk2OCAzMjEzLzQ0MjAvMTk2OApmIDMyMDQvNDQ1Mi8xOTU5IDMyMTIvNDQ1My8xOTU5IDMyMjIvNDQzMC8xOTU5IDMyMjAvNDQ0MS8xOTU5CmYgMzE5My80NDU0LzE5NjkgMzIwOS80NDU1LzE5NjkgMzIyMS80NDM5LzE5NjkgMzIxNy80NDUxLzE5NjkKZiAzMTk4LzQ0MTQvMTk3MCAzMjA0LzQ0NTIvMTk3MCAzMjIwLzQ0NDEvMTk3MCAzMjE4LzQ0MzQvMTk3MApmIDMyMDkvNDQ1NS8xOTYwIDMyMDMvNDQ1Ni8xOTYwIDMyMTkvNDQzMi8xOTYwIDMyMjEvNDQzOS8xOTYwCmYgMzE5Ny80NDE1LzE5NzEgMzE5OC80NDE0LzE5NzEgMzIxOC80NDM0LzE5NzEgMzIxNi80NDMzLzE5NzEKZiAzMjAzLzQ0NTYvMTk3MiAzMTk3LzQ0MTUvMTk3MiAzMjE2LzQ0MzMvMTk3MiAzMjE5LzQ0MzIvMTk3MgpmIDMyMTIvNDQ1My8xOTczIDMxOTQvNDQ1Ny8xOTczIDMyMTUvNDQzMS8xOTczIDMyMjIvNDQzMC8xOTczCmYgMzE5OS80NDM4LzE5NzQgMzIwMC80NDM3LzE5NzQgMzIxNS80NDA5LzE5NzQgMzIxNy80NDA4LzE5NzQKbyBDeWxpbmRlci4wMDFfQ3lsaW5kZXIuMDA4CnYgMy40MTYyNjAgMi42OTgxNjQgLTQuNDQ0NzY3CnYgMy40MTYyNjAgMi42OTc0NjkgLTQuNDM4NjMyCnYgMy40MTYyNjAgMi42OTU0MTEgLTQuNDMyNzMyCnYgMy40MTYyNjAgMi42OTIwNjkgLTQuNDI3Mjk0CnYgMy40MTYyNjAgMi42ODc1NzAgLTQuNDIyNTI3CnYgMy40MTYyNjAgMi42ODIwODkgLTQuNDE4NjE2CnYgMy40MTYyNjAgMi42NzU4MzYgLTQuNDE1NzA5CnYgMy40MTYyNjAgMi42NjkwNTAgLTQuNDEzOTIwCnYgMy40MTYyNjAgMi42NjE5OTQgLTQuNDEzMzE1CnYgMy40MTYyNjAgMi42NTQ5MzcgLTQuNDEzOTIwCnYgMy40MTYyNjAgMi42NDgxNTIgLTQuNDE1NzA5CnYgMy40MTYyNjAgMi42NDE4OTggLTQuNDE4NjE2CnYgMy40MTYyNjAgMi42MzY0MTcgLTQuNDIyNTI3CnYgMy40MTYyNjAgMi42MzE5MTkgLTQuNDI3Mjk0CnYgMy40MTYyNjAgMi42Mjg1NzYgLTQuNDMyNzMyCnYgMy40MTYyNjAgMi42MjY1MTggLTQuNDM4NjMyCnYgMy40MTYyNjAgMi42MjU4MjMgLTQuNDQ0NzY3CnYgMy40MTYyNjAgMi42MjY1MTggLTQuOTIzMDg4CnYgMy40MTYyNjAgMi42Mjg1NzYgLTQuOTI5MTA5CnYgMy40MTYyNjAgMi42MzE5MTkgLTQuOTM0NjU5CnYgMy40MTYyNjAgMi42MzY0MTcgLTQuOTM5NTIyCnYgMy40MTYyNjAgMi42NDE4OTggLTQuOTQzNTE0CnYgMy40MTYyNjAgMi42NDgxNTIgLTQuOTQ2NDgwCnYgMy40MTYyNjAgMi42NTQ5MzcgLTQuOTQ4MzA3CnYgMy40MTYyNjAgMi42NjE5OTQgLTQuOTQ4OTI0CnYgMy40MTYyNjAgMi42NjkwNTAgLTQuOTQ4MzA3CnYgMy40MTYyNjAgMi42NzU4MzYgLTQuOTQ2NDgwCnYgMy40MTYyNjAgMi42ODIwODkgLTQuOTQzNTE0CnYgMy40MTYyNjAgMi42ODc1NzAgLTQuOTM5NTIyCnYgMy40MTYyNjAgMi42OTIwNjkgLTQuOTM0NjU5CnYgMy40MTYyNjAgMi42OTU0MTEgLTQuOTI5MTA5CnYgMy40MTYyNjAgMi42OTc0NjkgLTQuOTIzMDg4CnYgMy42MTExMTUgMi42NjAyNjQgLTQuNDEzNDY0CnYgMy42MTA4MzcgMi42NjAyNjQgLTQuOTQ4NzcyCnYgMy42MTEzOTUgMi42NTQ5MzcgLTQuNDEzOTIwCnYgMy42MTExMTggMi42NjE5OTQgLTQuNDEzMzE1CnYgMy42MTExMjggMi42NjkwNTAgLTQuNDEzOTIwCnYgMy42MTA4NDAgMi42NjE5OTQgLTQuOTQ4OTI0CnYgMy42MTA4NTIgMi42NjkwNTAgLTQuOTQ4MzA3CnYgMy42MTExMzkgMi42NzgwMTQgLTQuNDE2NzIyCnYgMy42MTEzNjUgMi42ODIwODkgLTQuNDE4NjE2CnYgMy42MTE2NjcgMi42ODc1NzAgLTQuNDIyNTI3CnYgMy42MTA4NzEgMi42NzgwMTQgLTQuOTQ1NDQ3CnYgMy42MTExMzcgMi42NzU4MzYgLTQuNDE1NzA5CnYgMy42MTA4NjYgMi42NzU4MzYgLTQuOTQ2NDgwCnYgMy42MTE0NzkgMi42NDgxNTIgLTQuOTQ2NDgwCnYgMy42MTE3NTAgMi42NDgxNTIgLTQuNDE1NzA5CnYgMy42MTExMTkgMi42NTQ5MzcgLTQuOTQ4MzA3CnYgMy42MTIwMzUgMi42NDI2ODUgLTQuNDE4MjUxCnYgMy42MTIxMjAgMi42NDE4OTggLTQuNDE4NjE2CnYgMy42MTI3MTQgMi42MzY0MTcgLTQuNDIyNTI3CnYgMy42MTE4NTcgMi42NDE4OTggLTQuOTQzNTE0CnYgMy42MTE3NzAgMi42NDI2ODUgLTQuOTQzODg4CnYgMy42MTE2NzQgMi42OTIwNjkgLTQuOTM0NjU5CnYgMy42MTIzMDggMi42OTc0NjkgLTQuNDM4NjMyCnYgMy42MTIzNzcgMi42OTgxNjQgLTQuNDQ0NzY3CnYgMy42MTIxMDEgMi42OTU1NzQgLTQuNDMzMTk3CnYgMy42MTIxMDAgMi42OTc0NjkgLTQuOTIzMDg4CnYgMy42MTE4NzggMi42OTU1NzQgLTQuOTI4NjM0CnYgMy42MTExMDIgMi42ODIwODkgLTQuOTQzNTE0CnYgMy42MTE5MTMgMi42OTIwNjkgLTQuNDI3Mjk0CnYgMy42MTE0MTUgMi42ODc1NzAgLTQuOTM5NTIyCnYgMy42MTIwOTIgMi42OTU0MTEgLTQuNDMyNzMyCnYgMy42MTE4NjggMi42OTU0MTEgLTQuOTI5MTA5CnYgMy42MTMzMzMgMi42Mjg1NzYgLTQuOTI5MTA5CnYgMy42MTM3NzQgMi42MjY1MTggLTQuNDM4NjMyCnYgMy42MTM1NjYgMi42MjY1MTggLTQuOTIzMDg4CnYgMy42MTM4NDEgMi42MjU4MjMgLTQuNDQ0NzY3CnYgMy42MTM1NTcgMi42Mjg1NzYgLTQuNDMyNzMyCnYgMy42MTI5NjAgMi42MzE5MTkgLTQuOTM0NjU5CnYgMy42MTMxOTkgMi42MzE5MTkgLTQuNDI3Mjk0CnYgMy42MTI0NjIgMi42MzY0MTcgLTQuOTM5NTIyCnZ0IDAuMjk2ODIyIDAuNDg1Mzg4CnZ0IDAuMjUwMDAwIDAuNDkwMDAwCnZ0IDAuMjAzMTc5IDAuNDg1Mzg5CnZ0IDAuMTU4MTU2IDAuNDcxNzMxCnZ0IDAuMTE2NjYzIDAuNDQ5NTUzCnZ0IDAuMDgwMjk1IDAuNDE5NzA2CnZ0IDAuMDUwNDQ3IDAuMzgzMzM3CnZ0IDAuMDI4MjY5IDAuMzQxODQ0CnZ0IDAuMDE0NjEyIDAuMjk2ODIyCnZ0IDAuMDEwMDAwIDAuMjUwMDAwCnZ0IDAuMDE0NjExIDAuMjAzMTc5CnZ0IDAuMDI4MjY5IDAuMTU4MTU2CnZ0IDAuMDUwNDQ3IDAuMTE2NjYzCnZ0IDAuMDgwMjk0IDAuMDgwMjk0CnZ0IDAuMTE2NjYzIDAuMDUwNDQ3CnZ0IDAuMTU4MTU2IDAuMDI4MjY5CnZ0IDAuMjAzMTc4IDAuMDE0NjEyCnZ0IDAuMjUwMDAwIDAuMDEwMDAwCnZ0IDAuMjk2ODIyIDAuMDE0NjEyCnZ0IDAuMzQxODQ0IDAuMDI4MjY5CnZ0IDAuMzgzMzM3IDAuMDUwNDQ3CnZ0IDAuNDE5NzA2IDAuMDgwMjk0CnZ0IDAuNDQ5NTUzIDAuMTE2NjYzCnZ0IDAuNDcxNzMxIDAuMTU4MTU2CnZ0IDAuNDg1Mzg4IDAuMjAzMTc4CnZ0IDAuNDkwMDAwIDAuMjUwMDAwCnZ0IDAuNDg1Mzg4IDAuMjk2ODIyCnZ0IDAuNDcxNzMxIDAuMzQxODQ0CnZ0IDAuNDQ5NTUzIDAuMzgzMzM3CnZ0IDAuNDE5NzA2IDAuNDE5NzA2CnZ0IDAuMzgzMzM3IDAuNDQ5NTUzCnZ0IDAuMzQxODQ0IDAuNDcxNzMxCnZ0IDAuMzc1MDAwIDAuNTczOTc5CnZ0IDAuNDA2MjUwIDAuNTcyODk3CnZ0IDAuNDA2MjUwIDEuMDAwMDAwCnZ0IDAuMzc1MDAwIDEuMDAwMDAwCnZ0IDAuNTYyNTAwIDAuNTcxNjAxCnZ0IDAuNTkzNzUwIDAuNTcyMzc4CnZ0IDAuNTkzNzUwIDEuMDAwMDAwCnZ0IDAuNTYyNTAwIDEuMDAwMDAwCnZ0IDAuODc1MDAwIDAuNTc1NzA0CnZ0IDAuOTA2MjUwIDAuNTc1MTcwCnZ0IDAuOTA2MjUwIDEuMDAwMDAwCnZ0IDAuODc1MDAwIDEuMDAwMDAwCnZ0IDAuNzE4NzUwIDAuNTc2Mjk1CnZ0IDAuNzQyMzQwIDAuNTc2OTA0CnZ0IDAuNzUwMDAwIDAuNTc2ODk3CnZ0IDAuNzUwMDAwIDEuMDAwMDAwCnZ0IDAuNzE4NzUwIDEuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuNTc0MTYxCnZ0IDAuMDMxMjUwIDAuNTc0NzY0CnZ0IDAuMDMxMjUwIDEuMDAwMDAwCnZ0IDAuMDAwMDAwIDEuMDAwMDAwCnZ0IDAuNzgxMjUwIDAuNTc2ODczCnZ0IDAuODEyNTAwIDAuNTc2ODU1CnZ0IDAuODEyNTAwIDEuMDAwMDAwCnZ0IDAuNzgxMjUwIDEuMDAwMDAwCnZ0IDAuODQzNzUwIDAuNTc2MzU5CnZ0IDAuODQzNzUwIDEuMDAwMDAwCnZ0IDAuMDYwMDMxIDAuNTc1MjQ1CnZ0IDAuMDYyNTAwIDAuNTc1MjY2CnZ0IDAuMDYyNTAwIDEuMDAwMDAwCnZ0IDAuMjUwMDAwIDAuNTc3NTAwCnZ0IDAuMjU3NjYwIDAuNTc3NTA2CnZ0IDAuMjgxMjUwIDAuNTc2ODk1CnZ0IDAuMjgxMjUwIDEuMDAwMDAwCnZ0IDAuMjUwMDAwIDEuMDAwMDAwCnZ0IDAuNjU2MjUwIDAuNTc0NzIwCnZ0IDAuNjYwMTgyIDAuNTc0OTA2CnZ0IDAuNjg3NTAwIDAuNTc1NTI0CnZ0IDAuNjg3NTAwIDEuMDAwMDAwCnZ0IDAuNjU2MjUwIDEuMDAwMDAwCnZ0IDAuMTg3NTAwIDAuNTc3NDQzCnZ0IDAuMjE4NzUwIDAuNTc3NDczCnZ0IDAuMjE4NzUwIDEuMDAwMDAwCnZ0IDAuMTg3NTAwIDEuMDAwMDAwCnZ0IDAuMDkzNzUwIDAuNTc1Njg5CnZ0IDAuMTI1MDAwIDAuNTc2MjUxCnZ0IDAuMTI1MDAwIDEuMDAwMDAwCnZ0IDAuMDkzNzUwIDEuMDAwMDAwCnZ0IDAuNTAwMDAwIDAuNTcwOTgzCnZ0IDAuNTMxMjUwIDAuNTcxMTMwCnZ0IDAuNTMxMjUwIDEuMDAwMDAwCnZ0IDAuNTAwMDAwIDEuMDAwMDAwCnZ0IDAuOTM3NTAwIDAuNTc0NzgwCnZ0IDAuOTM5OTY4IDAuNTc0NzYxCnZ0IDAuOTY4NzUwIDAuNTc0MzEzCnZ0IDAuOTY4NzUwIDEuMDAwMDAwCnZ0IDAuOTM3NTAwIDEuMDAwMDAwCnZ0IDAuODIzMzg1IDAuNTc2ODUwCnZ0IDEuMDAwMDAwIDAuNTc0MTYxCnZ0IDEuMDAwMDAwIDEuMDAwMDAwCnZ0IDAuMTU2MjUwIDAuNTc2OTMwCnZ0IDAuMTc2NjE0IDAuNTc3NDMyCnZ0IDAuMTU2MjUwIDEuMDAwMDAwCnZ0IDAuMzQzNzUwIDAuNTc1MjkxCnZ0IDAuMzQzNzUwIDEuMDAwMDAwCnZ0IDAuMzEyNTAwIDAuNTc2MTEzCnZ0IDAuMzEyNTAwIDEuMDAwMDAwCnZ0IDAuNDY4NzUwIDAuNTcxNTgxCnZ0IDAuNDY4NzUwIDEuMDAwMDAwCnZ0IDAuNjI1MDAwIDAuNTczNDMxCnZ0IDAuNjI1MDAwIDEuMDAwMDAwCnZ0IDAuNDM3NTAwIDAuNTcyMDg3CnZ0IDAuNDM3NTAwIDEuMDAwMDAwCnZ0IDAuMzM5ODE3IDAuNTc1NDc5CnZ0IDAuNDUyMzk3IDAuOTA2NzM0CnZ0IDAuNDUyMzQ4IDAuOTI5ODc5CnZ0IDAuNDUyNDY0IDAuOTI5OTQyCnZ0IDAuNDU0ODQ4IDAuOTMwNjUxCnZ0IDAuNDU4MDU2IDAuOTMxMjM1CnZ0IDAuNDYxOTY2IDAuOTMxNjcyCnZ0IDAuNDY0ODczIDAuOTMxODUxCnZ0IDAuNDY0OTUwIDAuOTA0MjY2CnZ0IDAuNDYyMDM3IDAuOTA0NTYwCnZ0IDAuNDU4MTE5IDAuOTA1MTUyCnZ0IDAuNDU0OTAzIDAuOTA1ODY0CnZ0IDAuNDUyNTEzIDAuOTA2NjY2CnZ0IDAuNTM1MDQ4IDAuOTAzODA0CnZ0IDAuNTM1MTI4IDAuOTMyMzEzCnZ0IDAuNTM4OTI0IDAuOTMyMzY4CnZ0IDAuNTQzNzYwIDAuOTMyMjY1CnZ0IDAuNTQ3NjU2IDAuOTMyMDIzCnZ0IDAuNTQ3NTk5IDAuOTA0NTkxCnZ0IDAuNTQzNjk2IDAuOTA0MTk0CnZ0IDAuNTM4ODUxIDAuOTAzODk5CnZ0IDAuNDczNDk0IDAuOTMxOTk0CnZ0IDAuNTAwMzUxIDAuOTMyMjQ4CnZ0IDAuNTI4MjgxIDAuOTMyMzM0CnZ0IDAuNTI4MjE4IDAuOTAzNzgzCnZ0IDAuNTAwMzUwIDAuOTAzODY4CnZ0IDAuNDczNTU0IDAuOTA0MTIyCnZ0IDAuNTQ4Mjg0IDAuOTMxOTkxCnZ0IDAuNTUyNjU3IDAuOTMxNTc1CnZ0IDAuNTU2MjQ1IDAuOTMxMDA1CnZ0IDAuNTU4OTExIDAuOTMwMzA1CnZ0IDAuNTYwNTUyIDAuOTI5NTAyCnZ0IDAuNTYxMTA2IDAuOTI4NjMwCnZ0IDAuNTYwNTIyIDAuOTA3Njk2CnZ0IDAuNTU4ODc2IDAuOTA2ODE5CnZ0IDAuNTU2MjA0IDAuOTA1OTk4CnZ0IDAuNTUyNjA5IDAuOTA1MjY2CnZ0IDAuNTQ4MjI4IDAuOTA0NjUwCnZ0IDAuNDUwODc3IDAuOTA3NTM1CnZ0IDAuNDUwMjgwIDAuOTI4MjgzCnZ0IDAuNDUwODM0IDAuOTI5MTQ3CnZuIC0xLjAwMDAgLTAuMDAwMCAwLjAwMDAKdm4gMC4wMDAwIC0wLjczNDEgLTAuNjc5MAp2biAwLjAwMDAgLTAuODUxOSAwLjUyMzcKdm4gMC4wMDAwIDAuNzI3MyAwLjY4NjMKdm4gLTAuMDAwMCAtMC4wODU0IDAuOTk2Mwp2biAwLjAwMDAgMS4wMDAwIC0wLjAwMTUKdm4gMC4wMDAwIDAuMjU1MCAwLjk2NjkKdm4gMC4wMDAwIDAuNTgwOCAwLjgxNDAKdm4gMC4wMDAwIDAuOTQ2MiAtMC4zMjM1CnZuIDAuMDAwMCAwLjA4NTQgMC45OTYzCnZuIDAuMDAwMCAtMC4wODcwIC0wLjk5NjIKdm4gLTAuMDAwMCAtMC40MjE1IDAuOTA2OAp2biAwLjAwMDAgMC4yNjAwIC0wLjk2NTYKdm4gMC4wMDAwIDAuNzM0MSAtMC42NzkwCnZuIDAuMDAwMCAtMC45OTM2IDAuMTEyNgp2biAtMC4wMDAwIDAuOTQ0MiAwLjMyOTQKdm4gMC4wMDAwIDAuNDIxNSAwLjkwNjgKdm4gMC4wMDAwIDAuOTkzNiAwLjExMjUKdm4gLTAuMDAwMCAwLjQyODUgLTAuOTAzNQp2biAwLjAwMDAgLTAuNTg4NyAtMC44MDgzCnZuIDAuMDAwMCAtMC4yNjAwIC0wLjk2NTYKdm4gMC4wMDAwIDAuODUxOSAwLjUyMzcKdm4gMC4wMDAwIC0xLjAwMDAgLTAuMDAxNQp2biAwLjAwMDAgLTAuNTgwOCAwLjgxNDAKdm4gMC4wMDAwIC0wLjk0NjIgLTAuMzIzNQp2biAwLjAwMDAgMC41ODg3IC0wLjgwODMKdm4gMC4wMDAwIC0wLjI1NTAgMC45NjY5CnZuIDAuMDAwMCAtMC45NDQyIDAuMzI5NAp2biAwLjAwMDAgMC44NTY2IC0wLjUxNjAKdm4gMC4wMDAwIC0wLjQyODUgLTAuOTAzNQp2biAwLjAwMDAgLTAuNzI3MyAwLjY4NjMKdm4gMC4wMDAwIC0wLjg1NjYgLTAuNTE2MAp2biAwLjAwMDAgMC4wODcwIC0wLjk5NjIKdm4gMC43Mjk1IDAuNjQyMiAtMC4yMzUzCnZuIDAuNzI5NiAwLjY0MDcgMC4yMzg5CnZuIDAuNzAxOCAwLjYzNjYgMC4zMTk0CnZuIDAuNzAwNiAwLjU1MjggMC40NTEyCnZuIDAuNjk4OCAwLjQ0OTEgMC41NTY4CnZuIDAuNjk2NiAwLjMzMzUgMC42MzUyCnZuIDAuNzE1OCAwLjI4MTggMC42Mzg4CnZuIDAuNzE1NSAwLjI4NjggLTAuNjM3MAp2biAwLjY5NjIgMC4zMzkyIC0wLjYzMjcKdm4gMC42OTg2IDAuNDU0NiAtMC41NTI1CnZuIDAuNzAwNiAwLjU1NjkgLTAuNDQ2MQp2biAwLjcwMjAgMC42Mzg4IC0wLjMxNDcKdm4gMC43MTM0IC0wLjA0MzkgLTAuNjk5Mwp2biAwLjcxMzggLTAuMDQyOCAwLjY5OTAKdm4gMC42OTA4IC0wLjA5MDEgMC43MTc0CnZuIDAuNjkzNiAtMC4yMTQwIDAuNjg3OAp2biAwLjcyMjMgLTAuMjQ3NSAwLjY0NTcKdm4gMC43MjIyIC0wLjI1MjUgLTAuNjQzOQp2biAwLjY5MzAgLTAuMjE4NiAtMC42ODY5CnZuIDAuNjkwMSAtMC4wOTI3IC0wLjcxNzcKdm4gMC42ODgxIDAuMjQ1NSAwLjY4MjgKdm4gMC42ODg1IDAuMTIyOSAwLjcxNDcKdm4gMC42ODg2IC0wLjAwMTEgMC43MjUyCnZuIDAuNjg3OCAtMC4wMDExIC0wLjcyNTkKdm4gMC42ODc4IDAuMTI1MyAtMC43MTUwCnZuIDAuNjg3NCAwLjI0OTkgLTAuNjgxOAp2biAwLjcwMzkgLTAuMzAyNCAwLjY0MjcKdm4gMC43MDk1IC0wLjQyMDggMC41NjUzCnZuIDAuNzE0MyAtMC41Mjc3IDAuNDU5Ngp2biAwLjcxODIgLTAuNjE0NyAwLjMyNjIKdm4gMC43MjA2IC0wLjY3MjIgMC4xNjk2CnZuIDAuNzMyNCAtMC42Nzk2IDAuMDQxOAp2biAwLjcxMTEgLTAuNjkxNSAtMC4xMjcyCnZuIDAuNzE4NCAtMC42MTY5IC0wLjMyMTQKdm4gMC43MTQ0IC0wLjUzMjAgLTAuNDU0NAp2biAwLjcwOTQgLTAuNDI2NSAtMC41NjExCnZuIDAuNzAzNyAtMC4zMDgzIC0wLjY0MDEKdm4gMC43MTIwIDAuNjkwNiAtMC4xMjcyCnZuIDAuNzMzMiAwLjY3ODcgMC4wNDE5CnZuIDAuNzIxNCAwLjY3MTMgMC4xNjk4CnVzZW10bCByaW1fb25fcGhvbmUKcyBvZmYKZiAzMjI0LzQ0NTgvMTk3NSAzMjIzLzQ0NTkvMTk3NSAzMjU0LzQ0NjAvMTk3NSAzMjUzLzQ0NjEvMTk3NSAzMjUyLzQ0NjIvMTk3NSAzMjUxLzQ0NjMvMTk3NSAzMjUwLzQ0NjQvMTk3NSAzMjQ5LzQ0NjUvMTk3NSAzMjQ4LzQ0NjYvMTk3NSAzMjQ3LzQ0NjcvMTk3NSAzMjQ2LzQ0NjgvMTk3NSAzMjQ1LzQ0NjkvMTk3NSAzMjQ0LzQ0NzAvMTk3NSAzMjQzLzQ0NzEvMTk3NSAzMjQyLzQ0NzIvMTk3NSAzMjQxLzQ0NzMvMTk3NSAzMjQwLzQ0NzQvMTk3NSAzMjM5LzQ0NzUvMTk3NSAzMjM4LzQ0NzYvMTk3NSAzMjM3LzQ0NzcvMTk3NSAzMjM2LzQ0NzgvMTk3NSAzMjM1LzQ0NzkvMTk3NSAzMjM0LzQ0ODAvMTk3NSAzMjMzLzQ0ODEvMTk3NSAzMjMyLzQ0ODIvMTk3NSAzMjMxLzQ0ODMvMTk3NSAzMjMwLzQ0ODQvMTk3NSAzMjI5LzQ0ODUvMTk3NSAzMjI4LzQ0ODYvMTk3NSAzMjI3LzQ0ODcvMTk3NSAzMjI2LzQ0ODgvMTk3NSAzMjI1LzQ0ODkvMTk3NQpmIDMyOTQvNDQ5MC8xOTc2IDMyOTIvNDQ5MS8xOTc2IDMyNDIvNDQ5Mi8xOTc2IDMyNDMvNDQ5My8xOTc2CmYgMzI5MS80NDk0LzE5NzcgMzI5My80NDk1LzE5NzcgMzIzNi80NDk2LzE5NzcgMzIzNy80NDk3LzE5NzcKZiAzMjY0LzQ0OTgvMTk3OCAzMjgzLzQ0OTkvMTk3OCAzMjI2LzQ1MDAvMTk3OCAzMjI3LzQ1MDEvMTk3OApmIDMyNTcvNDUwMi8xOTc5IDMyNTUvNDUwMy8xOTc5IDMyNTgvNDUwNC8xOTc5IDMyMzEvNDUwNS8xOTc5IDMyMzIvNDUwNi8xOTc5CmYgMzI3OC80NTA3LzE5ODAgMzI4MC80NTA4LzE5ODAgMzI1NC80NTA5LzE5ODAgMzIyMy80NTEwLzE5ODAKZiAzMjU5LzQ1MTEvMTk4MSAzMjY2LzQ1MTIvMTk4MSAzMjI5LzQ1MTMvMTk4MSAzMjMwLzQ1MTQvMTk4MQpmIDMyNjMvNDUxNS8xOTgyIDMyNjQvNDQ5OC8xOTgyIDMyMjcvNDUwMS8xOTgyIDMyMjgvNDUxNi8xOTgyCmYgMzI4MC80NTA4LzE5ODMgMzI4MS80NTE3LzE5ODMgMzI4Ni80NTE4LzE5ODMgMzI1My80NTE5LzE5ODMgMzI1NC80NTA5LzE5ODMKZiAzMjU4LzQ1MDQvMTk4NCAzMjU5LzQ1MTEvMTk4NCAzMjMwLzQ1MTQvMTk4NCAzMjMxLzQ1MDUvMTk4NApmIDMyNjAvNDUyMC8xOTg1IDMyNTYvNDUyMS8xOTg1IDMyNzAvNDUyMi8xOTg1IDMyNDYvNDUyMy8xOTg1IDMyNDcvNDUyNC8xOTg1CmYgMzI3Mi80NTI1LzE5ODYgMzI3MS80NTI2LzE5ODYgMzI2OS80NTI3LzE5ODYgMzIzMy80NTI4LzE5ODYgMzIzNC80NTI5LzE5ODYKZiAzMjY3LzQ1MzAvMTk4NyAzMjYxLzQ1MzEvMTk4NyAzMjQ4LzQ1MzIvMTk4NyAzMjQ5LzQ1MzMvMTk4NwpmIDMyNzYvNDUzNC8xOTg4IDMyODQvNDUzNS8xOTg4IDMyNTEvNDUzNi8xOTg4IDMyNTIvNDUzNy8xOTg4CmYgMzI5MC80NTM4LzE5ODkgMzI4OC80NTM5LzE5ODkgMzIzOC80NTQwLzE5ODkgMzIzOS80NTQxLzE5ODkKZiAzMjg1LzQ1NDIvMTk5MCAzMjc5LzQ1NDMvMTk5MCAzMjc3LzQ1NDQvMTk5MCAzMjI0LzQ1NDUvMTk5MCAzMjI1LzQ1NDYvMTk5MApmIDMyNjYvNDUxMi8xOTkxIDMyNjIvNDU0Ny8xOTkxIDMyNjMvNDUxNS8xOTkxIDMyMjgvNDUxNi8xOTkxIDMyMjkvNDUxMy8xOTkxCmYgMzI3Ny80NTQ0LzE5OTIgMzI3OC80NTQ4LzE5OTIgMzIyMy80NTQ5LzE5OTIgMzIyNC80NTQ1LzE5OTIKZiAzMjgyLzQ1NTAvMTk5MyAzMjY1LzQ1NTEvMTk5MyAzMjY3LzQ1MzAvMTk5MyAzMjQ5LzQ1MzMvMTk5MyAzMjUwLzQ1NTIvMTk5MwpmIDMyNzQvNDU1My8xOTk0IDMyOTQvNDQ5MC8xOTk0IDMyNDMvNDQ5My8xOTk0IDMyNDQvNDU1NC8xOTk0CmYgMzI3MC80NTIyLzE5OTUgMzI2OC80NTU1LzE5OTUgMzI0NS80NTU2LzE5OTUgMzI0Ni80NTIzLzE5OTUKZiAzMjgzLzQ0OTkvMTk5NiAzMjg1LzQ1NDIvMTk5NiAzMjI1LzQ1NDYvMTk5NiAzMjI2LzQ1MDAvMTk5NgpmIDMyODkvNDU1Ny8xOTk3IDMyOTAvNDUzOC8xOTk3IDMyMzkvNDU0MS8xOTk3IDMyNDAvNDU1OC8xOTk3CmYgMzI3My80NTU5LzE5OTggMzI3Mi80NTI1LzE5OTggMzIzNC80NTI5LzE5OTggMzIzNS80NTYwLzE5OTgKZiAzMjg3LzQ1NjEvMTk5OSAzMjg5LzQ1NTcvMTk5OSAzMjQwLzQ1NTgvMTk5OSAzMjQxLzQ1NjIvMTk5OQpmIDMyODQvNDUzNS8yMDAwIDMyODIvNDU1MC8yMDAwIDMyNTAvNDU1Mi8yMDAwIDMyNTEvNDUzNi8yMDAwCmYgMzI2OS80NTI3LzIwMDEgMzI1Ny80NTAyLzIwMDEgMzIzMi80NTA2LzIwMDEgMzIzMy80NTI4LzIwMDEKZiAzMjg4LzQ1MzkvMjAwMiAzMjkxLzQ0OTQvMjAwMiAzMjM3LzQ0OTcvMjAwMiAzMjM4LzQ1NDAvMjAwMgpmIDMyODYvNDUxOC8yMDAzIDMyNzYvNDUzNC8yMDAzIDMyNTIvNDUzNy8yMDAzIDMyNTMvNDUxOS8yMDAzCmYgMzI2OC80NTU1LzIwMDQgMzI3NS80NTYzLzIwMDQgMzI3NC80NTUzLzIwMDQgMzI0NC80NTU0LzIwMDQgMzI0NS80NTU2LzIwMDQKZiAzMjkzLzQ0OTUvMjAwNSAzMjczLzQ1NTkvMjAwNSAzMjM1LzQ1NjAvMjAwNSAzMjM2LzQ0OTYvMjAwNQpmIDMyOTIvNDQ5MS8yMDA2IDMyODcvNDU2MS8yMDA2IDMyNDEvNDU2Mi8yMDA2IDMyNDIvNDQ5Mi8yMDA2CmYgMzI2MS80NTMxLzIwMDcgMzI2MC80NTIwLzIwMDcgMzI0Ny80NTI0LzIwMDcgMzI0OC80NTMyLzIwMDcKcyAxCmYgMzI4MS80NTY0LzIwMDggMzI3OS80NTY1LzIwMDkgMzI4NS80NTY2LzIwMTAgMzI4My80NTY3LzIwMTEgMzI2NC80NTY4LzIwMTIgMzI2My80NTY5LzIwMTMgMzI2Mi80NTcwLzIwMTQgMzI2NS80NTcxLzIwMTUgMzI4Mi80NTcyLzIwMTYgMzI4NC80NTczLzIwMTcgMzI3Ni80NTc0LzIwMTggMzI4Ni80NTc1LzIwMTkKZiAzMjU2LzQ1NzYvMjAyMCAzMjU1LzQ1NzcvMjAyMSAzMjU3LzQ1NzgvMjAyMiAzMjY5LzQ1NzkvMjAyMyAzMjcxLzQ1ODAvMjAyNCAzMjc1LzQ1ODEvMjAyNSAzMjY4LzQ1ODIvMjAyNiAzMjcwLzQ1ODMvMjAyNwpmIDMyNjUvNDU3MS8yMDE1IDMyNjIvNDU3MC8yMDE0IDMyNjYvNDU4NC8yMDI4IDMyNTkvNDU4NS8yMDI5IDMyNTgvNDU4Ni8yMDMwIDMyNTUvNDU3Ny8yMDIxIDMyNTYvNDU3Ni8yMDIwIDMyNjAvNDU4Ny8yMDMxIDMyNjEvNDU4OC8yMDMyIDMyNjcvNDU4OS8yMDMzCmYgMzI3NS80NTgxLzIwMjUgMzI3MS80NTgwLzIwMjQgMzI3Mi80NTkwLzIwMzQgMzI3My80NTkxLzIwMzUgMzI5My80NTkyLzIwMzYgMzI5MS80NTkzLzIwMzcgMzI4OC80NTk0LzIwMzggMzI5MC80NTk1LzIwMzkgMzI4OS80NTk2LzIwNDAgMzI4Ny80NTk3LzIwNDEgMzI5Mi80NTk4LzIwNDIgMzI5NC80NTk5LzIwNDMgMzI3NC80NjAwLzIwNDQKZiAzMjc5LzQ1NjUvMjAwOSAzMjgxLzQ1NjQvMjAwOCAzMjgwLzQ2MDEvMjA0NSAzMjc4LzQ2MDIvMjA0NiAzMjc3LzQ2MDMvMjA0NwpvIEN5bGluZGVyLjAwNF9DeWxpbmRlci4wMTAKdiAwLjI1Mjc3OSAyLjQ3MTUzNyA2LjQ1MTcyMQp2IDAuMjc1MjMyIDIuNDczNDQyIDYuNDUxNzIxCnYgMC4yOTY4MjIgMi40NzkwODUgNi40NTE3MjEKdiAwLjMxNjcxOSAyLjQ4ODI1MCA2LjQ1MTcyMQp2IDAuMzM0MTU5IDIuNTAwNTgzIDYuNDUxNzIxCnYgMC4zNDg0NzIgMi41MTU2MTAgNi40NTE3MjEKdiAwLjM1OTEwNyAyLjUzMjc1NiA2LjQ1MTcyMQp2IDAuMzY1NjU2IDIuNTUxMzU5IDYuNDUxNzIxCnYgMC4zNjc4NjggMi41NzA3MDYgNi40NTE3MjEKdiAwLjM2NTY1NiAyLjU5MDA1MyA2LjQ1MTcyMQp2IDAuMzU5MTA3IDIuNjA4NjU3IDYuNDUxNzIxCnYgMC4zNDg0NzIgMi42MjU4MDIgNi40NTE3MjEKdiAwLjMzNDE1OSAyLjY0MDgzMCA2LjQ1MTcyMQp2IDAuMzE2NzE5IDIuNjUzMTYyIDYuNDUxNzIxCnYgMC4yOTY4MjIgMi42NjIzMjcgNi40NTE3MjEKdiAwLjI3NTIzMiAyLjY2Nzk3MCA2LjQ1MTcyMQp2IDAuMjUyNzc5IDIuNjY5ODc2IDYuNDUxNzIxCnYgLTAuMjc1NTA5IDIuNjY3OTcwIDYuNDUxNzIxCnYgLTAuMjk3MDk5IDIuNjYyMzI3IDYuNDUxNzIxCnYgLTAuMzE2OTk2IDIuNjUzMTYyIDYuNDUxNzIxCnYgLTAuMzM0NDM3IDIuNjQwODMwIDYuNDUxNzIxCnYgLTAuMzQ4NzQ5IDIuNjI1ODAyIDYuNDUxNzIxCnYgLTAuMzU5Mzg1IDIuNjA4NjU3IDYuNDUxNzIxCnYgLTAuMzY1OTM0IDIuNTkwMDUzIDYuNDUxNzIxCnYgLTAuMzY4MTQ1IDIuNTcwNzA2IDYuNDUxNzIxCnYgLTAuMzY1OTM0IDIuNTUxMzU5IDYuNDUxNzIxCnYgLTAuMzU5Mzg1IDIuNTMyNzU2IDYuNDUxNzIxCnYgLTAuMzQ4NzQ5IDIuNTE1NjEwIDYuNDUxNzIxCnYgLTAuMzM0NDM2IDIuNTAwNTgzIDYuNDUxNzIxCnYgLTAuMzE2OTk2IDIuNDg4MjUwIDYuNDUxNzIxCnYgLTAuMjk3MDk5IDIuNDc5MDg1IDYuNDUxNzIxCnYgLTAuMjc1NTA5IDIuNDczNDQyIDYuNDUxNzIxCnYgLTAuNDAyMDc4IDIuNTc2NTI2IDUuODE1Mzc5CnYgMC40MDE2NTEgMi41NzY1MjUgNS44MTc3ODcKdiAtMC40MDAyNTMgMi41OTQ0NDggNS44MTI5NDUKdiAtMC40MDI2NzEgMi41NzA3MDYgNS44MTUzNTIKdiAtMC40MDAyNTMgMi41NDY5NjQgNS44MTUyNTgKdiAwLjQwMjI0MyAyLjU3MDcwNiA1LjgxNzc2NAp2IDAuMzk5ODI1IDIuNTQ2OTY0IDUuODE3NjU2CnYgLTAuMzg5MDM5IDIuNTE2ODA2IDUuODE1MTYzCnYgLTAuMzgxNDYwIDIuNTAzMDk0IDUuODEzMjAxCnYgLTAuMzY1ODA3IDIuNDg0NjUzIDUuODEwNTc5CnYgMC4zODg2MTEgMi41MTY4MDUgNS44MTc0OTMKdiAtMC4zOTMwOTEgMi41MjQxMzQgNS44MTUxODMKdiAwLjM5MjY2MyAyLjUyNDEzNCA1LjgxNzUzNwp2IDAuMzkyNjYzIDIuNjE3Mjc3IDUuODEyMjE1CnYgLTAuMzkzMDkxIDIuNjE3Mjc3IDUuODA5ODYwCnYgMC4zOTk4MjUgMi41OTQ0NDggNS44MTUzNDMKdiAtMC4zODI5MjMgMi42MzU2NzAgNS44MDczODcKdiAtMC4zODE0NjAgMi42MzgzMTcgNS44MDY2NDUKdiAtMC4zNjU4MDcgMi42NTY3NTkgNS44MDE0ODgKdiAwLjM4MTAzMiAyLjYzODMxNyA1LjgwODkyOQp2IDAuMzgyNDk2IDIuNjM1NjY5IDUuODA5NjgxCnYgMC4zNDYzMDYgMi40Njk1MTggNS44MTA1MjIKdiAtMC4zMDEzNjMgMi40NTEzNDcgNS44MDUwMTcKdiAtMC4yNzY4MDggMi40NDkwMDkgNS44MDQ0MDkKdiAtMC4zMjMxMTAgMi40NTc3MjYgNS44MDY4MDkKdiAwLjMwMDkzNSAyLjQ1MTM0NyA1LjgwNjgyMgp2IDAuMzIyNjgxIDIuNDU3NzI1IDUuODA4NzQ1CnYgMC4zODEwMzIgMi41MDMwOTQgNS44MTU0ODYKdiAtMC4zNDY3MzQgMi40Njk1MTggNS44MDg0NDYKdiAwLjM2NTM3OSAyLjQ4NDY1MyA1LjgxMjc3MAp2IC0wLjMyNDk3NCAyLjQ1ODI3MiA1LjgwNjg4Mwp2IDAuMzI0NTQ2IDIuNDU4MjcyIDUuODA4ODMwCnYgMC4zMjQ1NDYgMi42ODMxMzkgNS43OTYxMTMKdiAtMC4zMDEzNjMgMi42OTAwNjUgNS43OTIyODQKdiAwLjMwMDkzNSAyLjY5MDA2NCA1Ljc5NDA4OAp2IC0wLjI3NjgwOCAyLjY5MjQwMyA1Ljc5MTY5Nwp2IC0wLjMyNDk3NCAyLjY4MzEzOSA1Ljc5NDE2Nwp2IDAuMzQ2MzA2IDIuNjcxODkzIDUuNzk5MzUyCnYgLTAuMzQ2NzM0IDIuNjcxODkzIDUuNzk3Mjc1CnYgMC4zNjUzNzkgMi42NTY3NTkgNS44MDM2NzkKdiAwLjMwMDkzNSAyLjY5MDA2NSA3LjA5NDM1OAp2IDAuMzI0NTQ2IDIuNjgzMTQwIDcuMDk2Mjg3CnYgMC4zNjUzNzkgMi40ODQ2NTMgNy4xMTIwMDMKdiAwLjM0NjMwNiAyLjY3MTg5MyA3LjA5OTM3MAp2IDAuMzY1Mzc5IDIuNjU2NzU5IDcuMTAzNDg4CnYgLTAuMzAzNDA0IDIuNDUxOTQ2IDcuMTA1NTI4CnYgMC4zMDI5NzUgMi40NTE5NDUgNy4xMDczMTYKdiAwLjMyNDU0NiAyLjQ1ODI3MiA3LjEwODI1MQp2IDAuMzQ2MzA2IDIuNDY5NTE4IDcuMTA5ODYzCnYgMC4zODEwMzIgMi41MDMwOTQgNy4xMTQ1ODkKdiAtMC4zMDEzNjMgMi40NTEzNDcgNy4xMDUzNjkKdiAtMC4yNzY4MDggMi40NDkwMDkgNy4xMDQ3OTMKdiAwLjMwMDkzNSAyLjQ1MTM0NyA3LjEwNzE0NAp2IC0wLjM2NTgwNyAyLjY1Njc1OSA3LjEwMTMzMwp2IC0wLjM0NjczNCAyLjY3MTg5NCA3LjA5NzMyNgp2IC0wLjM4NzUxNSAyLjUxNDA0OSA3LjExMzgzMgp2IDAuMzg3MDg3IDIuNTE0MDQ4IDcuMTE2MTE1CnYgMC4zOTI2NjMgMi41MjQxMzQgNy4xMTYxNzIKdiAwLjM5OTgyNSAyLjU0Njk2NCA3LjExNjI4Ngp2IDAuNDAyMjQzIDIuNTcwNzA2IDcuMTE2MzkwCnYgLTAuMzY1ODA3IDIuNDg0NjUzIDcuMTA5ODQ4CnYgLTAuMzgwODg1IDIuNjM4OTk0IDcuMTA2MDU3CnYgLTAuMjc2ODA4IDIuNjkyNDAzIDcuMDkyMDI3CnYgMC4zODA0NTggMi42Mzg5OTMgNy4xMDgzMDIKdiAtMC4zMjQ5NzQgMi42ODMxNDAgNy4wOTQzNzIKdiAtMC4zMDEzNjMgMi42OTAwNjUgNy4wOTI1ODIKdiAtMC4zODE0NjAgMi41MDMwOTUgNy4xMTIzNDEKdiAtMC4zNDY3MzQgMi40Njk1MTkgNy4xMDc4MjAKdiAtMC4zMjQ5NzQgMi40NTgyNzIgNy4xMDYzMzYKdiAtMC40MDIwNDggMi41NzY4MjQgNy4xMTQwNDMKdiAwLjM5MjY2MyAyLjYxNzI3NyA3LjExMTE0OQp2IDAuMzgxMDMyIDIuNjM4MzE3IDcuMTA4MzkxCnYgMC4zOTk4MjUgMi41OTQ0NDggNy4xMTQxMjYKdiAwLjQwMTYyMCAyLjU3NjgyMyA3LjExNjQxMwp2IC0wLjQwMjY3MSAyLjU3MDcwNiA3LjExNDAxNwp2IC0wLjQwMDI1MyAyLjU0Njk2NCA3LjExMzkyNwp2IC0wLjM5MzA5MSAyLjUyNDEzNSA3LjExMzg1Ngp2IC0wLjQwMDI1MyAyLjU5NDQ0OCA3LjExMTc2Nwp2IC0wLjM5MzA5MSAyLjYxNzI3OCA3LjEwODgzMgp2IC0wLjM4MTQ2MCAyLjYzODMxNyA3LjEwNjE0Mwp2IDAuMjc1MjMyIDIuNjY3OTcwIDcuMTAwMjEzCnYgMC4yOTY4MjEgMi42NjIzMjcgNy4xMDE3OTEKdiAwLjMxNjcxOSAyLjY1MzE2MyA3LjEwNDMxMAp2IDAuMzM0MTU5IDIuNjQwODMwIDcuMTA3NjcyCnYgMC4zMzU5MDggMi42Mzg5OTMgNy4xMDgxNzEKdiAwLjI1Mjc3OSAyLjQ3MTUzNyA3LjEwOTg2Ngp2IDAuMjc1MjMyIDIuNDczNDQyIDcuMTEwMTk0CnYgMC4zNDg0NzIgMi42MjU4MDIgNy4xMDk5MTUKdiAwLjI5NjgyMSAyLjQ3OTA4NiA3LjExMTAzNQp2IDAuMzU5MTA3IDIuNjA4NjU3IDcuMTEyMTY2CnYgMC4zMTY3MTkgMi40ODgyNTAgNy4xMTIzNTUKdiAwLjMzNDE1OSAyLjUwMDU4MyA3LjExNDEwNQp2IDAuMzY1NjU2IDIuNTkwMDUzIDcuMTE0NTk0CnYgMC4zNDg0NzIgMi41MTU2MTEgNy4xMTYwMDcKdiAwLjM0Njk4NCAyLjUxNDA0OCA3LjExNTk5Nwp2IDAuMzU5MTA3IDIuNTMyNzU2IDcuMTE2MTA4CnYgMC4zNjU2NTYgMi41NTEzNTkgNy4xMTYyMDMKdiAwLjM2Nzg2OCAyLjU3MDcwNiA3LjExNjI4OAp2IDAuMzY3MTY5IDIuNTc2ODIzIDcuMTE2MzExCnYgLTAuMzE2OTk2IDIuNjUzMTYzIDcuMTAyNDQyCnYgLTAuMzM0NDM3IDIuNjQwODMwIDcuMTA1NzAxCnYgLTAuMzE2OTk2IDIuNDg4MjUwIDcuMTEwNDg3CnYgLTAuMjk3MDk5IDIuNjYyMzI3IDcuMTAwMDQwCnYgLTAuMjk3MDk5IDIuNDc5MDg2IDcuMTA5Mjg0CnYgLTAuMzM0NDM2IDIuNTAwNTgzIDcuMTEyMTM0CnYgLTAuMjc1NTA5IDIuNjY3OTcwIDcuMDk4NTg5CnYgLTAuMjc1NTA5IDIuNDczNDQyIDcuMTA4NTcxCnYgMC4yNTI3NzkgMi42Njk4NzYgNy4wOTk2MzUKdiAtMC4zNDg3NDkgMi42MjU4MDIgNy4xMDc4NjAKdiAtMC4zMzYxODUgMi42Mzg5OTQgNy4xMDYxODkKdiAtMC4zNDg3NDkgMi41MTU2MTEgNy4xMTM5NTIKdiAtMC4zNDcyNjEgMi41MTQwNDkgNy4xMTM5NTAKdiAtMC4zNTkzODUgMi42MDg2NTcgNy4xMTAwNDgKdiAtMC4zNjU5MzQgMi41OTAwNTMgNy4xMTI0MzcKdiAtMC4zNTkzODUgMi41MzI3NTYgNy4xMTM5OTAKdiAtMC4zNjU5MzQgMi41NTEzNTkgNy4xMTQwNDcKdiAtMC4zNjgxNDUgMi41NzA3MDYgNy4xMTQxMTkKdiAtMC4zNjc0NDYgMi41NzY4MjQgNy4xMTQxNDUKdnQgMC4yOTY4MjIgMC40ODUzODgKdnQgMC4zNDE4NDQgMC40NzE3MzEKdnQgMC4zODMzMzcgMC40NDk1NTMKdnQgMC40MTk3MDYgMC40MTk3MDYKdnQgMC40NDk1NTMgMC4zODMzMzcKdnQgMC40NzE3MzEgMC4zNDE4NDQKdnQgMC40ODUzODggMC4yOTY4MjIKdnQgMC40OTAwMDAgMC4yNTAwMDAKdnQgMC40ODUzODggMC4yMDMxNzgKdnQgMC40NzE3MzEgMC4xNTgxNTYKdnQgMC40NDk1NTMgMC4xMTY2NjMKdnQgMC40MTk3MDYgMC4wODAyOTQKdnQgMC4zODMzMzcgMC4wNTA0NDcKdnQgMC4zNDE4NDQgMC4wMjgyNjkKdnQgMC4yOTY4MjIgMC4wMTQ2MTIKdnQgMC4yNTAwMDAgMC4wMTAwMDAKdnQgMC4yMDMxNzggMC4wMTQ2MTIKdnQgMC4xNTgxNTYgMC4wMjgyNjkKdnQgMC4xMTY2NjMgMC4wNTA0NDcKdnQgMC4wODAyOTQgMC4wODAyOTQKdnQgMC4wNTA0NDcgMC4xMTY2NjMKdnQgMC4wMjgyNjkgMC4xNTgxNTYKdnQgMC4wMTQ2MTEgMC4yMDMxNzkKdnQgMC4wMTAwMDAgMC4yNTAwMDAKdnQgMC4wMTQ2MTIgMC4yOTY4MjIKdnQgMC4wMjgyNjkgMC4zNDE4NDQKdnQgMC4wNTA0NDcgMC4zODMzMzcKdnQgMC4wODAyOTUgMC40MTk3MDYKdnQgMC4xMTY2NjMgMC40NDk1NTMKdnQgMC4xNTgxNTYgMC40NzE3MzEKdnQgMC4yMDMxNzkgMC40ODUzODkKdnQgMC4yNTAwMDAgMC40OTAwMDAKdnQgMC4zNzUwMDAgMC41NzM5NzkKdnQgMC40MDYyNTAgMC41NzI4OTcKdnQgMC40MDYyNTAgMC44OTc5MDEKdnQgMC4zNzUwMDAgMC44OTg5MzEKdnQgMC41NjI1MDAgMC41NzE2MDEKdnQgMC41OTM3NTAgMC41NzIzNzgKdnQgMC41OTM3NTAgMC44OTczOTAKdnQgMC41NjI1MDAgMC44OTY2NTIKdnQgMC44NzUwMDAgMC41NzU3MDQKdnQgMC45MDYyNTAgMC41NzUxNzAKdnQgMC45MDYyNTAgMC45MDAwMTQKdnQgMC44NzUwMDAgMC45MDA1MjEKdnQgMC43MTg3NTAgMC41NzYyOTUKdnQgMC43NDIzNDAgMC41NzY5MDQKdnQgMC43NTAwMDAgMC41NzY4OTcKdnQgMC43NTAwMDAgMC45MDE1NjMKdnQgMC43NDE5NDcgMC45MDE1NzAKdnQgMC43MTg3NTAgMC45MDEwMDEKdnQgMC4wMDAwMDAgMC41NzQxNjEKdnQgMC4wMzEyNTAgMC41NzQ3NjQKdnQgMC4wMzEyNTAgMC44OTk4NDUKdnQgMC4wMDAwMDAgMC44OTkyNTcKdnQgMC43ODEyNTAgMC41NzY4NzMKdnQgMC44MTI1MDAgMC41NzY4NTUKdnQgMC44MTI1MDAgMC45MDE1MjMKdnQgMC43ODEyNTAgMC45MDE1NDEKdnQgMC44NDM3NTAgMC41NzYzNTkKdnQgMC44NDM3NTAgMC45MDExNDQKdnQgMC4wNjAwMzEgMC41NzUyNDUKdnQgMC4wNjI1MDAgMC41NzUyNjYKdnQgMC4wNjI1MDAgMC45MDAxMjIKdnQgMC4wMzM5NTAgMC44OTk4ODgKdnQgMC4yNTAwMDAgMC41Nzc1MDAKdnQgMC4yNTc2NjAgMC41Nzc1MDYKdnQgMC4yODEyNTAgMC41NzY4OTUKdnQgMC4yODEyNTAgMC45MDE1OTAKdnQgMC4yNTgwNTIgMC45MDIxNjIKdnQgMC4yNTAwMDAgMC45MDIxNTYKdnQgMC42NTYyNTAgMC41NzQ3MjAKdnQgMC42NjAxODIgMC41NzQ5MDYKdnQgMC42ODc1MDAgMC41NzU1MjQKdnQgMC42ODc1MDAgMC45MDAyNjcKdnQgMC42NTYyNTAgMC44OTk1OTUKdnQgMC4xODc1MDAgMC41Nzc0NDMKdnQgMC4yMTg3NTAgMC41Nzc0NzMKdnQgMC4yMTg3NTAgMC45MDIxMzAKdnQgMC4xODc1MDAgMC45MDIxMDIKdnQgMC4wOTM3NTAgMC41NzU2ODkKdnQgMC4xMjUwMDAgMC41NzYyNTEKdnQgMC4xMjUwMDAgMC45MDEwNjAKdnQgMC4wOTM3NTAgMC45MDA1MjUKdnQgMC41MDAwMDAgMC41NzA5ODMKdnQgMC41MzEyNTAgMC41NzExMzAKdnQgMC41MzEyNTAgMC44OTYyMDQKdnQgMC41MDAwMDAgMC44OTYwNjYKdnQgMC45Mzc1MDAgMC41NzQ3ODAKdnQgMC45Mzk5NjggMC41NzQ3NjEKdnQgMC45Njg3NTAgMC41NzQzMTMKdnQgMC45Njg3NTAgMC44OTk0MDEKdnQgMC45NjYwNDkgMC44OTk0NDEKdnQgMC45Mzc1MDAgMC44OTk2NDMKdnQgMC44MjMzODUgMC41NzY4NTAKdnQgMC44Mjc0ODAgMC45MDE1MTcKdnQgMS4wMDAwMDAgMC41NzQxNjEKdnQgMS4wMDAwMDAgMC44OTkyNTcKdnQgMC4xNTYyNTAgMC41NzY5MzAKdnQgMC4xNzY2MTQgMC41Nzc0MzIKdnQgMC4xNzI1MTkgMC45MDIwODgKdnQgMC4xNTYyNTAgMC45MDE3MDYKdnQgMC4zNDM3NTAgMC41NzUyOTEKdnQgMC4zNDQ4OTYgMC45MDAxMzQKdnQgMC4zNDM3NTAgMC45MDAxNTcKdnQgMC4zMTI1MDAgMC41NzYxMTMKdnQgMC4zMTI1MDAgMC45MDA4NDYKdnQgMC40Njg3NTAgMC41NzE1ODEKdnQgMC40Njg3NTAgMC44OTY2NDgKdnQgMC42MjUwMDAgMC41NzM0MzEKdnQgMC42NTUxMDQgMC44OTk1NzMKdnQgMC42MjUwMDAgMC44OTgzOTIKdnQgMC40Mzc1MDAgMC41NzIwODcKdnQgMC40Mzc1MDAgMC44OTcxMzEKdnQgMC4zMzk4MTcgMC41NzU0NzkKdnQgMC4zMTI1MDAgMC44MzU0MTgKdnQgMC4zMTI1MDAgMS4wMDAwMDAKdnQgMC4zNDM3NTAgMS4wMDAwMDAKdnQgMC4zNDM3NTAgMC44MzU5NjUKdnQgMC4wNjI1MDAgMC44MzU2MDkKdnQgMC4wNjI1MDAgMS4wMDAwMDAKdnQgMC4wOTM3NTAgMS4wMDAwMDAKdnQgMC4wOTM3NTAgMC44MzUzMDgKdnQgMC4wMzEyNTAgMC44MzU3ODgKdnQgMC4wMzEyNTAgMS4wMDAwMDAKdnQgMC4yODEyNTAgMC44MzQ4MjEKdnQgMC4yODEyNTAgMS4wMDAwMDAKdnQgMC43ODEyNTAgMC44MzM4NzkKdnQgMC43ODEyNTAgMS4wMDAwMDAKdnQgMC44MTI1MDAgMS4wMDAwMDAKdnQgMC44MTI1MDAgMC44MzM5MDMKdnQgMC44NDM3NTAgMC44MzM5MjgKdnQgMC44NDM3NTAgMS4wMDAwMDAKdnQgMC44NzUwMDAgMS4wMDAwMDAKdnQgMC44NzUwMDAgMC44MzQ0MDQKdnQgMC44NDcwMDAgMC44MzM5MzEKdnQgMC43MTg3NTAgMC44MzQyODIKdnQgMC43MTg3NTAgMS4wMDAwMDAKdnQgMC43NTAwMDAgMS4wMDAwMDAKdnQgMC43NTAwMDAgMC44MzM4NTgKdnQgMC43NDAxMTkgMC44MzM4NTIKdnQgMC41MzEyNTAgMC44Mzc4NzcKdnQgMC41MzEyNTAgMS4wMDAwMDAKdnQgMC41NjI1MDAgMS4wMDAwMDAKdnQgMC41NjI1MDAgMC44Mzc0ODIKdnQgMC4xODc1MDAgMC44MzQ0MzMKdnQgMC4xODc1MDAgMS4wMDAwMDAKdnQgMC4yMTg3NTAgMS4wMDAwMDAKdnQgMC4yMTg3NTAgMC44MzQ0MTkKdnQgMC40Njg3NTAgMC44MzgyODMKdnQgMC40Njg3NTAgMS4wMDAwMDAKdnQgMC41MDAwMDAgMS4wMDAwMDAKdnQgMC41MDAwMDAgMC44MzgwMjEKdnQgMC42NTYyNTAgMC44MzU0NTEKdnQgMC42NTYyNTAgMS4wMDAwMDAKdnQgMC42ODc1MDAgMS4wMDAwMDAKdnQgMC42ODc1MDAgMC44MzQ4ODkKdnQgMC45MDYyNTAgMS4wMDAwMDAKdnQgMC45MDYyNTAgMC44MzQ4NDEKdnQgMC41OTM3NTAgMS4wMDAwMDAKdnQgMC41OTM3NTAgMC44MzY4NTMKdnQgMC40Mzc1MDAgMC44Mzc5MjAKdnQgMC40Mzc1MDAgMS4wMDAwMDAKdnQgMC4xMjUwMDAgMC44MzQ4OTcKdnQgMC4xMjUwMDAgMS4wMDAwMDAKdnQgMC4xNTYyNTAgMS4wMDAwMDAKdnQgMC4xNTYyNTAgMC44MzQ0NDIKdnQgMC4xNTMwMDIgMC44MzQ0NDMKdnQgMC45Mzc1MDAgMS4wMDAwMDAKdnQgMC45Mzc1MDAgMC44MzUxNzEKdnQgMC42MjUwMDAgMS4wMDAwMDAKdnQgMC42MjUwMDAgMC44MzYwMTIKdnQgMC4yNTAwMDAgMC44MzQ0MDEKdnQgMC4yNTAwMDAgMS4wMDAwMDAKdnQgMC4yNTk4ODEgMC44MzQzOTQKdnQgMC45Njg3NTAgMS4wMDAwMDAKdnQgMC45Njg3NTAgMC44MzUzODIKdnQgMS4wMDAwMDAgMS4wMDAwMDAKdnQgMS4wMDAwMDAgMC44MzU0NjQKdnQgMC4wMDAwMDAgMC44MzU0NjQKdnQgMC4wMDAwMDAgMS4wMDAwMDAKdnQgMC4zNzUwMDAgMS4wMDAwMDAKdnQgMC4zNzUwMDAgMC44MzY1MDUKdnQgMC4zNzExODIgMC44MzYzODMKdnQgMC40MDYyNTAgMS4wMDAwMDAKdnQgMC40MDYyNTAgMC44MzczMjAKdnQgMC42Mjg4MTkgMC44MzU4ODgKdnQgMC40NTIzOTcgMC45MDY3MzQKdnQgMC40NTIzNDggMC45Mjk4NzkKdnQgMC40NTI0NjQgMC45Mjk5NDIKdnQgMC40NTQ4NDggMC45MzA2NTEKdnQgMC40NTgwNTYgMC45MzEyMzUKdnQgMC40NjE5NjYgMC45MzE2NzIKdnQgMC40NjQ4NzMgMC45MzE4NTEKdnQgMC40NjQ5NTAgMC45MDQyNjYKdnQgMC40NjIwMzcgMC45MDQ1NjAKdnQgMC40NTgxMTkgMC45MDUxNTIKdnQgMC40NTQ5MDMgMC45MDU4NjQKdnQgMC40NTI1MTMgMC45MDY2NjYKdnQgMC41MzUwNDggMC45MDM4MDQKdnQgMC41MzUxMjggMC45MzIzMTMKdnQgMC41Mzg5MjQgMC45MzIzNjgKdnQgMC41NDM3NjAgMC45MzIyNjUKdnQgMC41NDc2NTYgMC45MzIwMjMKdnQgMC41NDc1OTkgMC45MDQ1OTEKdnQgMC41NDM2OTYgMC45MDQxOTQKdnQgMC41Mzg4NTEgMC45MDM4OTkKdnQgMC40NzM0OTQgMC45MzE5OTQKdnQgMC41MDAzNTEgMC45MzIyNDgKdnQgMC41MjgyODEgMC45MzIzMzQKdnQgMC41MjgyMTggMC45MDM3ODMKdnQgMC41MDAzNTAgMC45MDM4NjgKdnQgMC40NzM1NTQgMC45MDQxMjIKdnQgMC41NDgyODQgMC45MzE5OTEKdnQgMC41NTI2NTcgMC45MzE1NzUKdnQgMC41NTYyNDUgMC45MzEwMDUKdnQgMC41NTg5MTEgMC45MzAzMDUKdnQgMC41NjA1NTIgMC45Mjk1MDIKdnQgMC41NjExMDYgMC45Mjg2MzAKdnQgMC41NjA1MjIgMC45MDc2OTYKdnQgMC41NTg4NzYgMC45MDY4MTkKdnQgMC41NTYyMDQgMC45MDU5OTgKdnQgMC41NTI2MDkgMC45MDUyNjYKdnQgMC41NDgyMjggMC45MDQ2NTAKdnQgMC40NTA4NzcgMC45MDc1MzUKdnQgMC40NTAyODAgMC45MjgyODMKdnQgMC40NTA4MzQgMC45MjkxNDcKdnQgMC40NjQ5NTAgMC45MDQ1MzcKdnQgMC40NjQ5NDYgMC45MDU5MzYKdnQgMC40NjIyMjQgMC45MDY0MTIKdnQgMC40NTk3MzEgMC45MDcwNDkKdnQgMC40NTc4NzcgMC45MDc3NjYKdnQgMC40NTY3MzYgMC45MDg1MzgKdnQgMC40NTYzNDkgMC45MDkzMzEKdnQgMC40NTY2OTEgMC45Mjc4ODkKdnQgMC40NTc4MjcgMC45Mjg2MTUKdnQgMC40NTk2NzUgMC45MjkyNjAKdnQgMC40NjIxNjIgMC45Mjk3OTcKdnQgMC40NjQ4NzggMC45MzAxNjYKdnQgMC40NjQ4NzQgMC45MzE1NzEKdnQgMC40NjI2NjUgMC45MzE0MjcKdnQgMC40NTg5NDUgMC45MzA5OTMKdnQgMC40NTU4OTMgMC45MzA0MTUKdnQgMC40NTM2MjUgMC45Mjk3MTYKdnQgMC40NTIzNTAgMC45Mjg5OTMKdnQgMC40NTIzOTUgMC45MDc2MTEKdnQgMC40NTM2NzUgMC45MDY4MzcKdnQgMC40NTU5NDkgMC45MDYwNDgKdnQgMC40NTkwMDggMC45MDUzNTAKdnQgMC40NjI3MzYgMC45MDQ3NjgKdnQgMC41MzUwNDkgMC45MDQwMjkKdnQgMC41MzUwNTIgMC45MDUyMzIKdnQgMC41MjgyMjEgMC45MDUyMDcKdnQgMC41MDY2MTUgMC45MDUyODUKdnQgMC40ODU4NDAgMC45MDU1MTMKdnQgMC40NjY2OTEgMC45MDU4ODQKdnQgMC40NzYyMTQgMC45MDQzNDIKdnQgMC41MDE3MDYgMC45MDQwOTIKdnQgMC41MjgyMTcgMC45MDQwMDgKdnQgMC41NDc2MDAgMC45MDQ4NzkKdnQgMC41NDc2MDMgMC45MDY0NDkKdnQgMC41NDQ5MzkgMC45MDU5ODAKdnQgMC41NDE0NzggMC45MDU1NzQKdnQgMC41Mzc3MjMgMC45MDUzMTAKdnQgMC41Mzg2MDYgMC45MDQxMjIKdnQgMC41NDMyMTUgMC45MDQ0MTEKdnQgMC41NDc0NjMgMC45MDQ4NTcKdnQgMC40NTIyMTUgMC45Mjg5MjUKdnQgMC40NTE2ODggMC45MjgwNzUKdnQgMC40NTIyNTkgMC45MDc2ODUKdnQgMC41NDc2NTUgMC45MzE3MjUKdnQgMC41NDc2NTIgMC45MzAxNDkKdnQgMC41NDgwNjYgMC45MzAxMDAKdnQgMC41NTA4NDggMC45Mjk1NzIKdnQgMC41NTI5MTUgMC45Mjg5MzMKdnQgMC41NTQxODcgMC45MjgyMDgKdnQgMC41NTQ1ODUgMC45MDk0OTAKdnQgMC41NTQxNTMgMC45MDg2ODgKdnQgMC41NTI4NzcgMC45MDc5MDQKdnQgMC41NTA4MDUgMC45MDcxNzEKdnQgMC41NDgwMTggMC45MDY1MTcKdnQgMC41NTE2MTQgMC45MDU0NjEKdnQgMC41NTUwMzUgMC45MDYxODAKdnQgMC41NTc1NzcgMC45MDY5ODYKdnQgMC41NTkxNDMgMC45MDc4NDcKdnQgMC41NTk3MDAgMC45Mjg0MjEKdnQgMC41NTkxNzQgMC45MjkyNzkKdnQgMC41NTc2MTMgMC45MzAwNjkKdnQgMC41NTUwNzYgMC45MzA3NjAKdnQgMC41NTE2NjMgMC45MzEzMjQKdnQgMC40NjY2MjYgMC45MzAyMTgKdnQgMC40ODU4MTAgMC45MzA1ODkKdnQgMC41MDY2MjggMC45MzA4MTcKdnQgMC41MjgyNzggMC45MzA4OTQKdnQgMC41MzUxMjQgMC45MzA4NzAKdnQgMC41MzUxMjcgMC45MzIwNzgKdnQgMC41MjgyODEgMC45MzIxMDAKdnQgMC41MDE3MTAgMC45MzIwMTUKdnQgMC40NzYxNjEgMC45MzE3NjUKdnQgMC41Mzc3OTAgMC45MzA4OTgKdnQgMC41NDE1MzkgMC45MzA3ODIKdnQgMC41NDQ5OTQgMC45MzA1MTMKdnQgMC41NDc1MTkgMC45MzE3NDEKdnQgMC41NDMyNzkgMC45MzIwMTkKdnQgMC41Mzg2NzkgMC45MzIxMjYKdm4gLTAuMDAwMCAwLjAwMDAgMS4wMDAwCnZuIDAuNjIxNiAwLjc4MzMgLTAuMDAwMAp2biAtMC40NTkxIDAuODg4NCAtMC4wMDAwCnZuIC0wLjYyMTYgLTAuNzgzMyAwLjAwMDAKdm4gLTAuOTk0OSAwLjEwMTMgMC4wMDAwCnZuIDAuMDA0MCAtMS4wMDAwIDAuMDAwMAp2biAtMC45NTQxIC0wLjI5OTMgMC4wMDAwCnZuIC0wLjc2MjQgLTAuNjQ3MSAwLjAwMDAKdm4gMC4yODE1IC0wLjk1OTYgMC4wMDAwCnZuIC0wLjk5NDkgLTAuMTAxMyAwLjAwMDAKdm4gMC45OTQ5IDAuMTAxMyAtMC4wMDAwCnZuIC0wLjg3NTIgMC40ODM4IC0wLjAwMDAKdm4gMC45NTQxIC0wLjI5OTMgMC4wMDAwCnZuIDAuNjIxNiAtMC43ODMzIDAuMDAwMAp2biAtMC4wOTQ4IDAuOTk1NSAtMC4wMDAwCnZuIC0wLjI4MTQgLTAuOTU5NiAwLjAwMDAKdm4gLTAuODc1MiAtMC40ODM4IDAuMDAwMAp2biAtMC4wOTQ4IC0wLjk5NTUgMC4wMDAwCnZuIDAuODc1MiAtMC40ODM4IDAuMDAwMAp2biAwLjc2MjQgMC42NDcxIC0wLjAwMDAKdm4gMC45NTQxIDAuMjk5MyAtMC4wMDAwCnZuIC0wLjQ1OTEgLTAuODg4NCAwLjAwMDAKdm4gMC4wMDQwIDEuMDAwMCAtMC4wMDAwCnZuIC0wLjc2MjQgMC42NDcxIC0wLjAwMDAKdm4gMC4yODE0IDAuOTU5NiAtMC4wMDAwCnZuIDAuNzYyNCAtMC42NDcxIDAuMDAwMAp2biAtMC45NTQxIDAuMjk5MyAtMC4wMDAwCnZuIC0wLjI4MTUgMC45NTk2IDAuMDAwMAp2biAwLjQ1OTEgLTAuODg4NCAwLjAwMDAKdm4gMC44NzUyIDAuNDgzOCAwLjAwMDAKdm4gLTAuNjIxNiAwLjc4MzMgMC4wMDAwCnZuIDAuNDU5MSAwLjg4ODQgLTAuMDAwMAp2biAwLjk5NDkgLTAuMTAxMyAwLjAwMDAKdm4gMC44NDk4IC0wLjUyNzEgMC4wMDAwCnZuIDAuNDE4MyAwLjkwODMgLTAuMDAwMAp2biAwLjI1MjkgMC45Njc1IC0wLjAwMDAKdm4gMC45NDMzIC0wLjMzMjEgMC4wMDAwCnZuIC0wLjk0MzMgMC4zMzIxIC0wLjAwMDAKdm4gLTAuNzI0MSAwLjY4OTcgLTAuMDAwMAp2biAtMC45OTM1IC0wLjExMzYgLTAuMDAwMAp2biAtMC4yNTI5IC0wLjk2NzUgLTAuMDAwMAp2biAwLjk0MzMgMC4zMzIxIC0wLjAwMDAKdm4gMC4wMDM2IC0xLjAwMDAgMC4wMDAwCnZuIC0wLjg0OTggLTAuNTI3MSAtMC4wMDAwCnZuIC0wLjk0MzMgLTAuMzMyMSAwLjAwMDAKdm4gLTAuNTc3NCAwLjgxNjUgLTAuMDAwMAp2biAtMC4wODQ2IC0wLjk5NjQgLTAuMDAwMAp2biAtMC40MTgzIC0wLjkwODMgMC4wMDAwCnZuIC0wLjk5MzUgMC4xMTM2IC0wLjAwMDAKdm4gMC4yNTI5IC0wLjk2NzUgMC4wMDAwCnZuIDAuNzI0MSAwLjY4OTcgMC4wMDAwCnZuIC0wLjQxODMgMC45MDgzIC0wLjAwMDAKdm4gLTAuNTc3NCAtMC44MTY1IDAuMDAwMAp2biAwLjk5MzUgLTAuMTEzNiAwLjAwMDAKdm4gLTAuMjUyOSAwLjk2NzUgLTAuMDAwMAp2biAtMC4wODQ2IDAuOTk2NCAtMC4wMDAwCnZuIDAuMDAzNiAxLjAwMDAgLTAuMDAwMAp2biAwLjcyNDEgLTAuNjg5NyAwLjAwMDAKdm4gMC41Nzc0IDAuODE2NSAtMC4wMDAwCnZuIDAuOTkzNSAwLjExMzYgMC4wMDAwCnZuIDAuODQ5OCAwLjUyNzEgLTAuMDAwMAp2biAwLjU3NzQgLTAuODE2NSAwLjAwMDAKdm4gLTAuNzI0MSAtMC42ODk3IDAuMDAwMAp2biAtMC44NDk4IDAuNTI3MSAtMC4wMDAwCnZuIDAuNDE4MyAtMC45MDgzIDAuMDAwMAp2biAwLjAwMzAgMC4xNTYyIC0wLjk4NzcKdm4gMC4wMDMwIDAuMTQzMiAtMC45ODk3CnZuIDAuMDAzMCAwLjA1MTcgLTAuOTk4Nwp2biAwLjAwMzAgMC4wNTE2IC0wLjk5ODcKdm4gMC4wMDMwIC0wLjA2MTAgLTAuOTk4MQp2biAwLjAwMzAgLTAuMTM0OCAtMC45OTA5CnZuIDAuMDAyOSAtMC4xODIyIC0wLjk4MzMKdm4gMC4wMDI5IC0wLjE4MjEgLTAuOTgzMwp2biAwLjAwMzAgMC4wMDQzIC0xLjAwMDAKdm4gMC4wMDI5IC0wLjI3MTYgLTAuOTYyNAp2biAwLjAwMjkgMC4yNzk3IC0wLjk2MDEKdm4gLTAuMDAyOSAtMC4wNDkyIDAuOTk4OAp2biAtMC4wMDI5IC0wLjEwMjQgMC45OTQ3CnZuIC0wLjAwMjkgLTAuMTM2NCAwLjk5MDYKdm4gLTAuMDAyOSAtMC4xNDg4IDAuOTg4OQp2biAtMC4wMDI5IDAuMDU4MCAwLjk5ODMKdm4gLTAuMDAyOSAwLjA2NzEgMC45OTc3CnZuIC0wLjAwMzAgLTAuMDA0MSAxLjAwMDAKdm4gLTAuMDAyOSAwLjE2NTMgMC45ODYyCnZuIC0wLjAwMjkgMC4yMjU2IDAuOTc0Mgp2biAtMC4wMDI5IDAuMTI4NCAwLjk5MTcKdm4gLTAuMDAyOCAtMC4yNjcxIDAuOTYzNwp2biAtMC4wMDI5IDAuMTY1NCAwLjk4NjIKdm4gLTAuMDAyOCAwLjI1OTMgMC45NjU4CnZuIC0wLjAwMzAgMC4wNTgwIDAuOTk4Mwp1c2VtdGwgTm9uZQpzIG9mZgpmIDMyOTYvNDYwNC8yMDQ4IDMyOTcvNDYwNS8yMDQ4IDMyOTgvNDYwNi8yMDQ4IDMyOTkvNDYwNy8yMDQ4IDMzMDAvNDYwOC8yMDQ4IDMzMDEvNDYwOS8yMDQ4IDMzMDIvNDYxMC8yMDQ4IDMzMDMvNDYxMS8yMDQ4IDMzMDQvNDYxMi8yMDQ4IDMzMDUvNDYxMy8yMDQ4IDMzMDYvNDYxNC8yMDQ4IDMzMDcvNDYxNS8yMDQ4IDMzMDgvNDYxNi8yMDQ4IDMzMDkvNDYxNy8yMDQ4IDMzMTAvNDYxOC8yMDQ4IDMzMTEvNDYxOS8yMDQ4IDMzMTIvNDYyMC8yMDQ4IDMzMTMvNDYyMS8yMDQ4IDMzMTQvNDYyMi8yMDQ4IDMzMTUvNDYyMy8yMDQ4IDMzMTYvNDYyNC8yMDQ4IDMzMTcvNDYyNS8yMDQ4IDMzMTgvNDYyNi8yMDQ4IDMzMTkvNDYyNy8yMDQ4IDMzMjAvNDYyOC8yMDQ4IDMzMjEvNDYyOS8yMDQ4IDMzMjIvNDYzMC8yMDQ4IDMzMjMvNDYzMS8yMDQ4IDMzMjQvNDYzMi8yMDQ4IDMzMjUvNDYzMy8yMDQ4IDMzMjYvNDYzNC8yMDQ4IDMyOTUvNDYzNS8yMDQ4CmYgMzM2Ni80NjM2LzIwNDkgMzM2NC80NjM3LzIwNDkgMzM3MC80NjM4LzIwNDkgMzM3MS80NjM5LzIwNDkKZiAzMzYzLzQ2NDAvMjA1MCAzMzY1LzQ2NDEvMjA1MCAzMzgxLzQ2NDIvMjA1MCAzMzkxLzQ2NDMvMjA1MApmIDMzMzYvNDY0NC8yMDUxIDMzNTUvNDY0NS8yMDUxIDMzOTQvNDY0Ni8yMDUxIDMzODcvNDY0Ny8yMDUxCmYgMzMyOS80NjQ4LzIwNTIgMzMyNy80NjQ5LzIwNTIgMzMzMC80NjUwLzIwNTIgMzQwMS80NjUxLzIwNTIgMzM5Ni80NjUyLzIwNTIgMzQwNC80NjUzLzIwNTIKZiAzMzUwLzQ2NTQvMjA1MyAzMzUyLzQ2NTUvMjA1MyAzMzc5LzQ2NTYvMjA1MyAzMzc4LzQ2NTcvMjA1MwpmIDMzMzEvNDY1OC8yMDU0IDMzMzgvNDY1OS8yMDU0IDM0MDMvNDY2MC8yMDU0IDM0MDIvNDY2MS8yMDU0CmYgMzMzNS80NjYyLzIwNTUgMzMzNi80NjQ0LzIwNTUgMzM4Ny80NjQ3LzIwNTUgMzM5My80NjYzLzIwNTUKZiAzMzUyLzQ2NTUvMjA1NiAzMzUzLzQ2NjQvMjA1NiAzMzU4LzQ2NjUvMjA1NiAzMzc0LzQ2NjYvMjA1NiAzMzczLzQ2NjcvMjA1NiAzMzc5LzQ2NTYvMjA1NgpmIDMzMzAvNDY1MC8yMDU3IDMzMzEvNDY1OC8yMDU3IDM0MDIvNDY2MS8yMDU3IDM0MDEvNDY1MS8yMDU3CmYgMzMzMi80NjY4LzIwNTggMzMyOC80NjY5LzIwNTggMzM0Mi80NjcwLzIwNTggMzM5OS80NjcxLzIwNTggMzQwMC80NjcyLzIwNTggMzM4Ni80NjczLzIwNTgKZiAzMzQ0LzQ2NzQvMjA1OSAzMzQzLzQ2NzUvMjA1OSAzMzQxLzQ2NzYvMjA1OSAzNDA1LzQ2NzcvMjA1OSAzNDA2LzQ2NzgvMjA1OQpmIDMzMzkvNDY3OS8yMDYwIDMzMzMvNDY4MC8yMDYwIDMzODUvNDY4MS8yMDYwIDMzODQvNDY4Mi8yMDYwCmYgMzM0OC80NjgzLzIwNjEgMzM1Ni80Njg0LzIwNjEgMzM2OS80Njg1LzIwNjEgMzM3NS80Njg2LzIwNjEKZiAzMzYyLzQ2ODcvMjA2MiAzMzYwLzQ2ODgvMjA2MiAzMzkyLzQ2ODkvMjA2MiAzMzg5LzQ2OTAvMjA2MgpmIDMzNTcvNDY5MS8yMDYzIDMzNTEvNDY5Mi8yMDYzIDMzNDkvNDY5My8yMDYzIDMzNzcvNDY5NC8yMDYzIDMzNzIvNDY5NS8yMDYzIDMzOTUvNDY5Ni8yMDYzCmYgMzMzOC80NjU5LzIwNjQgMzMzNC80Njk3LzIwNjQgMzMzNS80NjYyLzIwNjQgMzM5My80NjYzLzIwNjQgMzM4Mi80Njk4LzIwNjQgMzQwMy80NjYwLzIwNjQKZiAzMzQ5LzQ2OTMvMjA2NSAzMzUwLzQ2OTkvMjA2NSAzMzc4LzQ3MDAvMjA2NSAzMzc3LzQ2OTQvMjA2NQpmIDMzNTQvNDcwMS8yMDY2IDMzMzcvNDcwMi8yMDY2IDMzMzkvNDY3OS8yMDY2IDMzODQvNDY4Mi8yMDY2IDMzODMvNDcwMy8yMDY2IDMzNzYvNDcwNC8yMDY2CmYgMzM0Ni80NzA1LzIwNjcgMzM2Ni80NjM2LzIwNjcgMzM3MS80NjM5LzIwNjcgMzM5MC80NzA2LzIwNjcgMzM5OC80NzA3LzIwNjcKZiAzMzQyLzQ2NzAvMjA2OCAzMzQwLzQ3MDgvMjA2OCAzMzk3LzQ3MDkvMjA2OCAzMzk5LzQ2NzEvMjA2OApmIDMzNTUvNDY0NS8yMDY5IDMzNTcvNDY5MS8yMDY5IDMzOTUvNDY5Ni8yMDY5IDMzOTQvNDY0Ni8yMDY5CmYgMzM2MS80NzEwLzIwNzAgMzM2Mi80Njg3LzIwNzAgMzM4OS80NjkwLzIwNzAgMzM2Ny80NzExLzIwNzAKZiAzMzQ1LzQ3MTIvMjA3MSAzMzQ0LzQ2NzQvMjA3MSAzNDA2LzQ2NzgvMjA3MSAzMzg4LzQ3MTMvMjA3MSAzMzgwLzQ3MTQvMjA3MQpmIDMzNTkvNDcxNS8yMDcyIDMzNjEvNDcxMC8yMDcyIDMzNjcvNDcxMS8yMDcyIDMzNjgvNDcxNi8yMDcyCmYgMzM1Ni80Njg0LzIwNzMgMzM1NC80NzAxLzIwNzMgMzM3Ni80NzA0LzIwNzMgMzM2OS80Njg1LzIwNzMKZiAzMzQxLzQ2NzYvMjA3NCAzMzI5LzQ2NDgvMjA3NCAzNDA0LzQ2NTMvMjA3NCAzNDA1LzQ2NzcvMjA3NApmIDMzNjAvNDY4OC8yMDc1IDMzNjMvNDY0MC8yMDc1IDMzOTEvNDY0My8yMDc1IDMzOTIvNDY4OS8yMDc1CmYgMzM1OC80NjY1LzIwNzYgMzM0OC80NjgzLzIwNzYgMzM3NS80Njg2LzIwNzYgMzM3NC80NjY2LzIwNzYKZiAzMzQwLzQ3MDgvMjA3NyAzMzQ3LzQ3MTcvMjA3NyAzMzQ2LzQ3MDUvMjA3NyAzMzk4LzQ3MDcvMjA3NyAzMzk3LzQ3MDkvMjA3NwpmIDMzNjUvNDY0MS8yMDc4IDMzNDUvNDcxMi8yMDc4IDMzODAvNDcxNC8yMDc4IDMzODEvNDY0Mi8yMDc4CmYgMzM2NC80NjM3LzIwNzkgMzM1OS80NzE1LzIwNzkgMzM2OC80NzE2LzIwNzkgMzM3MC80NjM4LzIwNzkKZiAzMzMzLzQ2ODAvMjA4MCAzMzMyLzQ2NjgvMjA4MCAzMzg2LzQ2NzMvMjA4MCAzMzg1LzQ2ODEvMjA4MApmIDM0MzkvNDcxOC8yMDgxIDMzMTcvNDcxOS8yMDgxIDMzMTYvNDcyMC8yMDgxIDM0MzUvNDcyMS8yMDgxCmYgMzQzMC80NzIyLzIwODIgMzMyNS80NzIzLzIwODIgMzMyNC80NzI0LzIwODIgMzQyOC80NzI1LzIwODIKZiAzNDMzLzQ3MjYvMjA4MyAzMzI2LzQ3MjcvMjA4MyAzMzI1LzQ3MjMvMjA4MyAzNDMwLzQ3MjIvMjA4MwpmIDM0NDAvNDcyOC8yMDg0IDMzMTgvNDcyOS8yMDg0IDMzMTcvNDcxOS8yMDg0IDM0MzkvNDcxOC8yMDg0CmYgMzQyMy80NzMwLzIwODUgMzMwMi80NzMxLzIwODUgMzMwMS80NzMyLzIwODUgMzQyMi80NzMzLzIwODUKZiAzNDIwLzQ3MzQvMjA4NiAzMzAwLzQ3MzUvMjA4NiAzMjk5LzQ3MzYvMjA4NiAzNDE4LzQ3MzcvMjA4NiAzNDIxLzQ3MzgvMjA4NgpmIDM0MTkvNDczOS8yMDg3IDMzMDQvNDc0MC8yMDg3IDMzMDMvNDc0MS8yMDg3IDM0MjQvNDc0Mi8yMDg3IDM0MjUvNDc0My8yMDg3CmYgMzQwNy80NzQ0LzIwODggMzMxMC80NzQ1LzIwODggMzMwOS80NzQ2LzIwODggMzQwOC80NzQ3LzIwODgKZiAzNDQxLzQ3NDgvMjA4OSAzMzIxLzQ3NDkvMjA4OSAzMzIwLzQ3NTAvMjA4OSAzNDQyLzQ3NTEvMjA4OQpmIDM0MzIvNDc1Mi8yMDkwIDMzMTIvNDc1My8yMDkwIDMzMTEvNDc1NC8yMDkwIDM0MzQvNDc1NS8yMDkwCmYgMzQxNC80NzU2LzIwOTEgMzMwNi80NzU3LzIwOTEgMzMwNS80NzU4LzIwOTEgMzQxNi80NzU5LzIwOTEKZiAzNDE2LzQ3NTkvMjA5MiAzMzA1LzQ3NTgvMjA5MiAzMzA0LzQ3NDAvMjA5MiAzNDE5LzQ3MzkvMjA5MgpmIDM0MTgvNDczNy8yMDkzIDMyOTkvNDczNi8yMDkzIDMyOTgvNDc2MC8yMDkzIDM0MTcvNDc2MS8yMDkzCmYgMzQzNC80NzU1LzIwOTQgMzMxMS80NzU0LzIwOTQgMzMxMC80NzQ1LzIwOTQgMzQwNy80NzQ0LzIwOTQKZiAzNDA4LzQ3NDcvMjA5NSAzMzA5LzQ3NDYvMjA5NSAzMzA4LzQ3NjIvMjA5NSAzNDA5LzQ3NjMvMjA5NQpmIDM0MjQvNDc0Mi8yMDk2IDMzMDMvNDc0MS8yMDk2IDMzMDIvNDczMS8yMDk2IDM0MjMvNDczMC8yMDk2CmYgMzQyOS80NzY0LzIwOTcgMzMxMy80NzY1LzIwOTcgMzMxMi80NzUzLzIwOTcgMzQzMi80NzUyLzIwOTcKZiAzNDMxLzQ3NjYvMjA5OCAzMzIzLzQ3NjcvMjA5OCAzMzIyLzQ3NjgvMjA5OCAzNDM3LzQ3NjkvMjA5OCAzNDM4LzQ3NzAvMjA5OApmIDM0MTcvNDc2MS8yMDk5IDMyOTgvNDc2MC8yMDk5IDMyOTcvNDc3MS8yMDk5IDM0MTUvNDc3Mi8yMDk5CmYgMzQwOS80NzYzLzIxMDAgMzMwOC80NzYyLzIxMDAgMzMwNy80NzczLzIxMDAgMzQxMC80Nzc0LzIxMDAKZiAzNDQzLzQ3NzUvMjEwMSAzMzE5LzQ3NzYvMjEwMSAzMzE4LzQ3MjkvMjEwMSAzNDQwLzQ3MjgvMjEwMSAzNDQ0LzQ3NzcvMjEwMQpmIDM0MTUvNDc3Mi8yMTAyIDMyOTcvNDc3MS8yMTAyIDMyOTYvNDc3OC8yMTAyIDM0MTMvNDc3OS8yMTAyCmYgMzQxMy80Nzc5LzIxMDMgMzI5Ni80Nzc4LzIxMDMgMzI5NS80NzgwLzIxMDMgMzQxMi80NzgxLzIxMDMKZiAzNDEyLzQ3ODIvMjEwNCAzMjk1LzQ3ODMvMjEwNCAzMzI2LzQ3MjcvMjEwNCAzNDMzLzQ3MjYvMjEwNApmIDM0MzUvNDcyMS8yMTA1IDMzMTYvNDcyMC8yMTA1IDMzMTUvNDc4NC8yMTA1IDM0MjcvNDc4NS8yMTA1IDM0MzYvNDc4Ni8yMTA1CmYgMzQyOC80NzI1LzIxMDYgMzMyNC80NzI0LzIxMDYgMzMyMy80NzY3LzIxMDYgMzQzMS80NzY2LzIxMDYKZiAzNDQyLzQ3NTEvMjEwNyAzMzIwLzQ3NTAvMjEwNyAzMzE5LzQ3NzYvMjEwNyAzNDQzLzQ3NzUvMjEwNwpmIDM0MzcvNDc2OS8yMTA4IDMzMjIvNDc2OC8yMTA4IDMzMjEvNDc0OS8yMTA4IDM0NDEvNDc0OC8yMTA4CmYgMzQyNy80Nzg1LzIxMDkgMzMxNS80Nzg0LzIxMDkgMzMxNC80Nzg3LzIxMDkgMzQyNi80Nzg4LzIxMDkKZiAzNDEwLzQ3NzQvMjExMCAzMzA3LzQ3NzMvMjExMCAzMzA2LzQ3NTcvMjExMCAzNDE0LzQ3NTYvMjExMCAzNDExLzQ3ODkvMjExMApmIDM0MjIvNDczMy8yMTExIDMzMDEvNDczMi8yMTExIDMzMDAvNDczNS8yMTExIDM0MjAvNDczNC8yMTExCmYgMzQyNi80Nzg4LzIxMTIgMzMxNC80Nzg3LzIxMTIgMzMxMy80NzY1LzIxMTIgMzQyOS80NzY0LzIxMTIKcyAxCmYgMzM1My80NzkwLzIxMTMgMzM1MS80NzkxLzIxMTMgMzM1Ny80NzkyLzIxMTQgMzM1NS80NzkzLzIxMTQgMzMzNi80Nzk0LzIxMTQgMzMzNS80Nzk1LzIxMTQgMzMzNC80Nzk2LzIxMTUgMzMzNy80Nzk3LzIxMTYgMzM1NC80Nzk4LzIxMTQgMzM1Ni80Nzk5LzIxMTQgMzM0OC80ODAwLzIxMTQgMzM1OC80ODAxLzIxMTQKZiAzMzI4LzQ4MDIvMjExNyAzMzI3LzQ4MDMvMjExNyAzMzI5LzQ4MDQvMjExOCAzMzQxLzQ4MDUvMjExOCAzMzQzLzQ4MDYvMjExOSAzMzQ3LzQ4MDcvMjEyMCAzMzQwLzQ4MDgvMjExOCAzMzQyLzQ4MDkvMjExOApmIDMzMzcvNDc5Ny8yMTE2IDMzMzQvNDc5Ni8yMTE1IDMzMzgvNDgxMC8yMTIxIDMzMzEvNDgxMS8yMTIxIDMzMzAvNDgxMi8yMTIxIDMzMjcvNDgwMy8yMTE3IDMzMjgvNDgwMi8yMTE3IDMzMzIvNDgxMy8yMTIxIDMzMzMvNDgxNC8yMTIxIDMzMzkvNDgxNS8yMTIxCmYgMzM0Ny80ODA3LzIxMjAgMzM0My80ODA2LzIxMTkgMzM0NC80ODE2LzIxMjIgMzM0NS80ODE3LzIxMjIgMzM2NS80ODE4LzIxMjIgMzM2My80ODE5LzIxMjIgMzM2MC80ODIwLzIxMjIgMzM2Mi80ODIxLzIxMjIgMzM2MS80ODIyLzIxMjIgMzM1OS80ODIzLzIxMjIgMzM2NC80ODI0LzIxMjIgMzM2Ni80ODI1LzIxMjIgMzM0Ni80ODI2LzIxMjIKZiAzMzUxLzQ3OTEvMjExMyAzMzUzLzQ3OTAvMjExMyAzMzUyLzQ4MjcvMjEyMyAzMzUwLzQ4MjgvMjEyMyAzMzQ5LzQ4MjkvMjEyMwpmIDMzODMvNDgzMC8yMTI0IDM0MjEvNDgzMS8yMTI1IDM0MTgvNDgzMi8yMTI2IDM0MTcvNDgzMy8yMTI2IDM0MTUvNDgzNC8yMTI2IDM0MTMvNDgzNS8yMTI2IDM0MTIvNDgzNi8yMTI2IDM0MzMvNDgzNy8yMTI2IDM0MzAvNDgzOC8yMTI2IDM0MjgvNDgzOS8yMTI2IDM0MzEvNDg0MC8yMTI2IDM0MzgvNDg0MS8yMTI1IDMzODIvNDg0Mi8yMTI0IDMzOTMvNDg0My8yMTI2IDMzODcvNDg0NC8yMTI2IDMzOTQvNDg0NS8yMTI2IDMzOTUvNDg0Ni8yMTI2IDMzNzIvNDg0Ny8yMTI3IDMzNzMvNDg0OC8yMTI3IDMzNzQvNDg0OS8yMTI2IDMzNzUvNDg1MC8yMTI2IDMzNjkvNDg1MS8yMTI2IDMzNzYvNDg1Mi8yMTI2CmYgMzQwMC80ODUzLzIxMjggMzQyNS80ODU0LzIxMjkgMzQyNC80ODU1LzIxMzAgMzQyMy80ODU2LzIxMzAgMzQyMi80ODU3LzIxMzAgMzQyMC80ODU4LzIxMzAgMzQyMS80ODMxLzIxMjUgMzM4My80ODMwLzIxMjQgMzM4NC80ODU5LzIxMzAgMzM4NS80ODYwLzIxMzAgMzM4Ni80ODYxLzIxMzAKZiAzMzkwLzQ4NjIvMjEzMSAzNDExLzQ4NjMvMjEzMiAzNDE0LzQ4NjQvMjEzMyAzNDE2LzQ4NjUvMjEzMyAzNDE5LzQ4NjYvMjEzMyAzNDI1LzQ4NTQvMjEyOSAzNDAwLzQ4NTMvMjEyOCAzMzk5LzQ4NjcvMjEzMyAzMzk3LzQ4NjgvMjEzMyAzMzk4LzQ4NjkvMjEzMwpmIDMzNzMvNDg0OC8yMTI3IDMzNzIvNDg0Ny8yMTI3IDMzNzcvNDg3MC8yMTM0IDMzNzgvNDg3MS8yMTM0IDMzNzkvNDg3Mi8yMTM0CmYgMzM4OC80ODczLzIxMzUgMzQzNi80ODc0LzIxMzIgMzQyNy80ODc1LzIxMzYgMzQyNi80ODc2LzIxMzYgMzQyOS80ODc3LzIxMzYgMzQzMi80ODc4LzIxMzYgMzQzNC80ODc5LzIxMzYgMzQwNy80ODgwLzIxMzYgMzQwOC80ODgxLzIxMzYgMzQwOS80ODgyLzIxMzYgMzQxMC80ODgzLzIxMzYgMzQxMS80ODYzLzIxMzIgMzM5MC80ODYyLzIxMzEgMzM3MS80ODg0LzIxMzYgMzM3MC80ODg1LzIxMzYgMzM2OC80ODg2LzIxMzYgMzM2Ny80ODg3LzIxMzYgMzM4OS80ODg4LzIxMzYgMzM5Mi80ODg5LzIxMzYgMzM5MS80ODkwLzIxMzYgMzM4MS80ODkxLzIxMzYgMzM4MC80ODkyLzIxMzYKZiAzNDM4LzQ4NDEvMjEyNSAzNDM3LzQ4OTMvMjEzMCAzNDQxLzQ4OTQvMjEzMCAzNDQyLzQ4OTUvMjEzMCAzNDQzLzQ4OTYvMjEzMCAzNDQ0LzQ4OTcvMjEyOSAzMzk2LzQ4OTgvMjEzNyAzNDAxLzQ4OTkvMjEzMCAzNDAyLzQ5MDAvMjEzMCAzNDAzLzQ5MDEvMjEzMCAzMzgyLzQ4NDIvMjEyNApmIDM0NDQvNDg5Ny8yMTI5IDM0NDAvNDkwMi8yMTMzIDM0MzkvNDkwMy8yMTMzIDM0MzUvNDkwNC8yMTMzIDM0MzYvNDg3NC8yMTMyIDMzODgvNDg3My8yMTM1IDM0MDYvNDkwNS8yMTMzIDM0MDUvNDkwNi8yMTMzIDM0MDQvNDkwNy8yMTMzIDMzOTYvNDg5OC8yMTM3Cm8gQ3lsaW5kZXIuMDEyX0N5bGluZGVyLjAxMwp2IDAuNjIyNzExIDIuNTE5NDYwIDcuMDU4ODUzCnYgMC42MjI3MTEgMi41MjA5NTIgNy4xMjU4MDkKdiAwLjYxMzE3NiAyLjUyMDM5OSA3LjA1ODgzMgp2IDAuNjEzMTc2IDIuNTIxODkxIDcuMTI1Nzg4CnYgMC42MDQwMDcgMi41MjMxODAgNy4wNTg3NzAKdiAwLjYwNDAwNyAyLjUyNDY3MiA3LjEyNTcyNgp2IDAuNTk1NTU3IDIuNTI3Njk2IDcuMDU4NjcwCnYgMC41OTU1NTcgMi41MjkxODcgNy4xMjU2MjYKdiAwLjU4ODE1MCAyLjUzMzc3MiA3LjA1ODUzNAp2IDAuNTg4MTUwIDIuNTM1MjY0IDcuMTI1NDkwCnYgMC41ODIwNzIgMi41NDExNzcgNy4wNTgzNjkKdiAwLjU4MjA3MiAyLjU0MjY2OSA3LjEyNTMyNQp2IDAuNTc3NTU1IDIuNTQ5NjI1IDcuMDU4MTgxCnYgMC41Nzc1NTUgMi41NTExMTcgNy4xMjUxMzcKdiAwLjU3NDc3NCAyLjU1ODc5MiA3LjA1Nzk3Nwp2IDAuNTc0Nzc0IDIuNTYwMjg0IDcuMTI0OTMzCnYgMC41NzM4MzUgMi41NjgzMjUgNy4wNTc3NjQKdiAwLjU3MzgzNSAyLjU2OTgxNyA3LjEyNDcyMQp2IDAuNTc0Nzc0IDIuNTc3ODU4IDcuMDU3NTUyCnYgMC41NzQ3NzQgMi41NzkzNTAgNy4xMjQ1MDgKdiAwLjU3NzU1NSAyLjU4NzAyNCA3LjA1NzM0OAp2IDAuNTc3NTU1IDIuNTg4NTE2IDcuMTI0MzA0CnYgMC41ODIwNzIgMi41OTU0NzMgNy4wNTcxNTkKdiAwLjU4MjA3MiAyLjU5Njk2NCA3LjEyNDExNQp2IDAuNTg4MTUwIDIuNjAyODc3IDcuMDU2OTk0CnYgMC41ODgxNTAgMi42MDQzNjkgNy4xMjM5NTAKdiAwLjU5NTU1NyAyLjYwODk1NCA3LjA1Njg1OQp2IDAuNTk1NTU3IDIuNjEwNDQ2IDcuMTIzODE1CnYgMC42MDQwMDcgMi42MTM0NzAgNy4wNTY3NTgKdiAwLjYwNDAwNyAyLjYxNDk2MiA3LjEyMzcxNAp2IDAuNjEzMTc2IDIuNjE2MjUxIDcuMDU2Njk2CnYgMC42MTMxNzYgMi42MTc3NDIgNy4xMjM2NTIKdiAwLjYyMjcxMSAyLjYxNzE4OSA3LjA1NjY3NQp2IDAuNjIyNzExIDIuNjE4NjgxIDcuMTIzNjMxCnYgMC42MzIyNDcgMi42MTYyNTEgNy4wNTY2OTYKdiAwLjYzMjI0NyAyLjYxNzc0MiA3LjEyMzY1Mgp2IDAuNjQxNDE1IDIuNjEzNDcwIDcuMDU2NzU4CnYgMC42NDE0MTUgMi42MTQ5NjIgNy4xMjM3MTQKdiAwLjY0OTg2NiAyLjYwODk1NCA3LjA1Njg1OQp2IDAuNjQ5ODY2IDIuNjEwNDQ2IDcuMTIzODE1CnYgMC42NTcyNzIgMi42MDI4NzcgNy4wNTY5OTQKdiAwLjY1NzI3MiAyLjYwNDM2OSA3LjEyMzk1MAp2IDAuNjYzMzUxIDIuNTk1NDczIDcuMDU3MTU5CnYgMC42NjMzNTEgMi41OTY5NjQgNy4xMjQxMTUKdiAwLjY2Nzg2NyAyLjU4NzAyNCA3LjA1NzM0OAp2IDAuNjY3ODY3IDIuNTg4NTE2IDcuMTI0MzA0CnYgMC42NzA2NDkgMi41Nzc4NTggNy4wNTc1NTIKdiAwLjY3MDY0OSAyLjU3OTM1MCA3LjEyNDUwOAp2IDAuNjcxNTg4IDIuNTY4MzI1IDcuMDU3NzY0CnYgMC42NzE1ODggMi41Njk4MTcgNy4xMjQ3MjEKdiAwLjY3MDY0OSAyLjU1ODc5MiA3LjA1Nzk3Nwp2IDAuNjcwNjQ5IDIuNTYwMjg0IDcuMTI0OTMzCnYgMC42Njc4NjcgMi41NDk2MjUgNy4wNTgxODEKdiAwLjY2Nzg2NyAyLjU1MTExNyA3LjEyNTEzNwp2IDAuNjYzMzUxIDIuNTQxMTc3IDcuMDU4MzY5CnYgMC42NjMzNTEgMi41NDI2NjkgNy4xMjUzMjUKdiAwLjY1NzI3MiAyLjUzMzc3MiA3LjA1ODUzNAp2IDAuNjU3MjcyIDIuNTM1MjY0IDcuMTI1NDkwCnYgMC42NDk4NjYgMi41Mjc2OTYgNy4wNTg2NzAKdiAwLjY0OTg2NiAyLjUyOTE4NyA3LjEyNTYyNgp2IDAuNjQxNDE1IDIuNTIzMTgwIDcuMDU4NzcwCnYgMC42NDE0MTUgMi41MjQ2NzIgNy4xMjU3MjYKdiAwLjYzMjI0NiAyLjUyMDM5OSA3LjA1ODgzMgp2IDAuNjMyMjQ2IDIuNTIxODkxIDcuMTI1Nzg4CnZ0IDEuMDAwMDAwIDAuNTAwMDAwCnZ0IDEuMDAwMDAwIDEuMDAwMDAwCnZ0IDAuOTY4NzUwIDEuMDAwMDAwCnZ0IDAuOTY4NzUwIDAuNTAwMDAwCnZ0IDAuOTM3NTAwIDEuMDAwMDAwCnZ0IDAuOTM3NTAwIDAuNTAwMDAwCnZ0IDAuOTA2MjUwIDEuMDAwMDAwCnZ0IDAuOTA2MjUwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDEuMDAwMDAwCnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODQzNzUwIDEuMDAwMDAwCnZ0IDAuODQzNzUwIDAuNTAwMDAwCnZ0IDAuODEyNTAwIDEuMDAwMDAwCnZ0IDAuODEyNTAwIDAuNTAwMDAwCnZ0IDAuNzgxMjUwIDEuMDAwMDAwCnZ0IDAuNzgxMjUwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDEuMDAwMDAwCnZ0IDAuNzUwMDAwIDAuNTAwMDAwCnZ0IDAuNzE4NzUwIDEuMDAwMDAwCnZ0IDAuNzE4NzUwIDAuNTAwMDAwCnZ0IDAuNjg3NTAwIDEuMDAwMDAwCnZ0IDAuNjg3NTAwIDAuNTAwMDAwCnZ0IDAuNjU2MjUwIDEuMDAwMDAwCnZ0IDAuNjU2MjUwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDEuMDAwMDAwCnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuNTkzNzUwIDEuMDAwMDAwCnZ0IDAuNTkzNzUwIDAuNTAwMDAwCnZ0IDAuNTYyNTAwIDEuMDAwMDAwCnZ0IDAuNTYyNTAwIDAuNTAwMDAwCnZ0IDAuNTMxMjUwIDEuMDAwMDAwCnZ0IDAuNTMxMjUwIDAuNTAwMDAwCnZ0IDAuNTAwMDAwIDEuMDAwMDAwCnZ0IDAuNTAwMDAwIDAuNTAwMDAwCnZ0IDAuNDY4NzUwIDEuMDAwMDAwCnZ0IDAuNDY4NzUwIDAuNTAwMDAwCnZ0IDAuNDM3NTAwIDEuMDAwMDAwCnZ0IDAuNDM3NTAwIDAuNTAwMDAwCnZ0IDAuNDA2MjUwIDEuMDAwMDAwCnZ0IDAuNDA2MjUwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDEuMDAwMDAwCnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuMzQzNzUwIDEuMDAwMDAwCnZ0IDAuMzQzNzUwIDAuNTAwMDAwCnZ0IDAuMzEyNTAwIDEuMDAwMDAwCnZ0IDAuMzEyNTAwIDAuNTAwMDAwCnZ0IDAuMjgxMjUwIDEuMDAwMDAwCnZ0IDAuMjgxMjUwIDAuNTAwMDAwCnZ0IDAuMjUwMDAwIDEuMDAwMDAwCnZ0IDAuMjUwMDAwIDAuNTAwMDAwCnZ0IDAuMjE4NzUwIDEuMDAwMDAwCnZ0IDAuMjE4NzUwIDAuNTAwMDAwCnZ0IDAuMTg3NTAwIDEuMDAwMDAwCnZ0IDAuMTg3NTAwIDAuNTAwMDAwCnZ0IDAuMTU2MjUwIDEuMDAwMDAwCnZ0IDAuMTU2MjUwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDEuMDAwMDAwCnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMDkzNzUwIDEuMDAwMDAwCnZ0IDAuMDkzNzUwIDAuNTAwMDAwCnZ0IDAuMDYyNTAwIDEuMDAwMDAwCnZ0IDAuMDYyNTAwIDAuNTAwMDAwCnZ0IDAuMjk2ODIyIDAuNDg1Mzg4CnZ0IDAuMjUwMDAwIDAuNDkwMDAwCnZ0IDAuMjAzMTc5IDAuNDg1Mzg5CnZ0IDAuMTU4MTU2IDAuNDcxNzMxCnZ0IDAuMTE2NjYzIDAuNDQ5NTUzCnZ0IDAuMDgwMjk1IDAuNDE5NzA2CnZ0IDAuMDUwNDQ3IDAuMzgzMzM3CnZ0IDAuMDI4MjY5IDAuMzQxODQ0CnZ0IDAuMDE0NjEyIDAuMjk2ODIyCnZ0IDAuMDEwMDAwIDAuMjUwMDAwCnZ0IDAuMDE0NjExIDAuMjAzMTc5CnZ0IDAuMDI4MjY5IDAuMTU4MTU2CnZ0IDAuMDUwNDQ3IDAuMTE2NjYzCnZ0IDAuMDgwMjk0IDAuMDgwMjk0CnZ0IDAuMTE2NjYzIDAuMDUwNDQ3CnZ0IDAuMTU4MTU2IDAuMDI4MjY5CnZ0IDAuMjAzMTc4IDAuMDE0NjEyCnZ0IDAuMjUwMDAwIDAuMDEwMDAwCnZ0IDAuMjk2ODIyIDAuMDE0NjEyCnZ0IDAuMzQxODQ0IDAuMDI4MjY5CnZ0IDAuMzgzMzM3IDAuMDUwNDQ3CnZ0IDAuNDE5NzA2IDAuMDgwMjk0CnZ0IDAuNDQ5NTUzIDAuMTE2NjYzCnZ0IDAuNDcxNzMxIDAuMTU4MTU2CnZ0IDAuNDg1Mzg4IDAuMjAzMTc4CnZ0IDAuNDkwMDAwIDAuMjUwMDAwCnZ0IDAuNDg1Mzg4IDAuMjk2ODIyCnZ0IDAuNDcxNzMxIDAuMzQxODQ0CnZ0IDAuNDQ5NTUzIDAuMzgzMzM3CnZ0IDAuNDE5NzA2IDAuNDE5NzA2CnZ0IDAuMzgzMzM3IDAuNDQ5NTUzCnZ0IDAuMzQxODQ0IDAuNDcxNzMxCnZ0IDAuMDMxMjUwIDEuMDAwMDAwCnZ0IDAuMDMxMjUwIDAuNTAwMDAwCnZ0IDAuMDAwMDAwIDEuMDAwMDAwCnZ0IDAuMDAwMDAwIDAuNTAwMDAwCnZ0IDAuNzUwMDAwIDAuNDkwMDAwCnZ0IDAuNzk2ODIyIDAuNDg1Mzg4CnZ0IDAuODQxODQ0IDAuNDcxNzMxCnZ0IDAuODgzMzM3IDAuNDQ5NTUzCnZ0IDAuOTE5NzA2IDAuNDE5NzA2CnZ0IDAuOTQ5NTUzIDAuMzgzMzM3CnZ0IDAuOTcxNzMxIDAuMzQxODQ0CnZ0IDAuOTg1Mzg4IDAuMjk2ODIyCnZ0IDAuOTkwMDAwIDAuMjUwMDAwCnZ0IDAuOTg1Mzg4IDAuMjAzMTc4CnZ0IDAuOTcxNzMxIDAuMTU4MTU2CnZ0IDAuOTQ5NTUzIDAuMTE2NjYzCnZ0IDAuOTE5NzA2IDAuMDgwMjk0CnZ0IDAuODgzMzM3IDAuMDUwNDQ3CnZ0IDAuODQxODQ0IDAuMDI4MjY5CnZ0IDAuNzk2ODIyIDAuMDE0NjEyCnZ0IDAuNzUwMDAwIDAuMDEwMDAwCnZ0IDAuNzAzMTc4IDAuMDE0NjEyCnZ0IDAuNjU4MTU2IDAuMDI4MjY5CnZ0IDAuNjE2NjYzIDAuMDUwNDQ3CnZ0IDAuNTgwMjk0IDAuMDgwMjk0CnZ0IDAuNTUwNDQ3IDAuMTE2NjYzCnZ0IDAuNTI4MjY5IDAuMTU4MTU2CnZ0IDAuNTE0NjExIDAuMjAzMTc5CnZ0IDAuNTEwMDAwIDAuMjUwMDAwCnZ0IDAuNTE0NjEyIDAuMjk2ODIyCnZ0IDAuNTI4MjY5IDAuMzQxODQ0CnZ0IDAuNTUwNDQ3IDAuMzgzMzM3CnZ0IDAuNTgwMjk1IDAuNDE5NzA2CnZ0IDAuNjE2NjYzIDAuNDQ5NTUzCnZ0IDAuNjU4MTU2IDAuNDcxNzMxCnZ0IDAuNzAzMTc5IDAuNDg1Mzg5CnZuIC0wLjA5ODAgLTAuOTk0OSAwLjAyMjIKdm4gLTAuMjkwMyAtMC45NTY3IDAuMDIxMwp2biAtMC40NzE0IC0wLjg4MTcgMC4wMTk2CnZuIC0wLjYzNDQgLTAuNzcyOCAwLjAxNzIKdm4gLTAuNzczMCAtMC42MzQyIDAuMDE0MQp2biAtMC44ODE5IC0wLjQ3MTMgMC4wMTA1CnZuIC0wLjk1NjkgLTAuMjkwMiAwLjAwNjUKdm4gLTAuOTk1MiAtMC4wOTgwIDAuMDAyMgp2biAtMC45OTUyIDAuMDk4MCAtMC4wMDIyCnZuIC0wLjk1NjkgMC4yOTAyIC0wLjAwNjUKdm4gLTAuODgxOSAwLjQ3MTMgLTAuMDEwNQp2biAtMC43NzMwIDAuNjM0MiAtMC4wMTQxCnZuIC0wLjYzNDQgMC43NzI4IC0wLjAxNzIKdm4gLTAuNDcxNCAwLjg4MTcgLTAuMDE5Ngp2biAtMC4yOTAzIDAuOTU2NyAtMC4wMjEzCnZuIC0wLjA5ODAgMC45OTQ5IC0wLjAyMjIKdm4gMC4wOTgwIDAuOTk0OSAtMC4wMjIyCnZuIDAuMjkwMyAwLjk1NjcgLTAuMDIxMwp2biAwLjQ3MTQgMC44ODE3IC0wLjAxOTYKdm4gMC42MzQ0IDAuNzcyOCAtMC4wMTcyCnZuIDAuNzczMCAwLjYzNDIgLTAuMDE0MQp2biAwLjg4MTkgMC40NzEzIC0wLjAxMDUKdm4gMC45NTY5IDAuMjkwMiAtMC4wMDY1CnZuIDAuOTk1MiAwLjA5ODAgLTAuMDAyMgp2biAwLjk5NTIgLTAuMDk4MCAwLjAwMjIKdm4gMC45NTY5IC0wLjI5MDIgMC4wMDY1CnZuIDAuODgxOSAtMC40NzEzIDAuMDEwNQp2biAwLjc3MzAgLTAuNjM0MiAwLjAxNDEKdm4gMC42MzQ0IC0wLjc3MjggMC4wMTcyCnZuIDAuNDcxNCAtMC44ODE3IDAuMDE5Ngp2biAtMC4wMDAwIDAuMDIyMyAwLjk5OTgKdm4gMC4yOTAzIC0wLjk1NjcgMC4wMjEzCnZuIDAuMDk4MCAtMC45OTQ5IDAuMDIyMgp2biAtMC4wMDAwIC0wLjAyMjMgLTAuOTk5OAp1c2VtdGwgTm9uZQpzIG9mZgpmIDM0NDUvNDkwOC8yMTM4IDM0NDYvNDkwOS8yMTM4IDM0NDgvNDkxMC8yMTM4IDM0NDcvNDkxMS8yMTM4CmYgMzQ0Ny80OTExLzIxMzkgMzQ0OC80OTEwLzIxMzkgMzQ1MC80OTEyLzIxMzkgMzQ0OS80OTEzLzIxMzkKZiAzNDQ5LzQ5MTMvMjE0MCAzNDUwLzQ5MTIvMjE0MCAzNDUyLzQ5MTQvMjE0MCAzNDUxLzQ5MTUvMjE0MApmIDM0NTEvNDkxNS8yMTQxIDM0NTIvNDkxNC8yMTQxIDM0NTQvNDkxNi8yMTQxIDM0NTMvNDkxNy8yMTQxCmYgMzQ1My80OTE3LzIxNDIgMzQ1NC80OTE2LzIxNDIgMzQ1Ni80OTE4LzIxNDIgMzQ1NS80OTE5LzIxNDIKZiAzNDU1LzQ5MTkvMjE0MyAzNDU2LzQ5MTgvMjE0MyAzNDU4LzQ5MjAvMjE0MyAzNDU3LzQ5MjEvMjE0MwpmIDM0NTcvNDkyMS8yMTQ0IDM0NTgvNDkyMC8yMTQ0IDM0NjAvNDkyMi8yMTQ0IDM0NTkvNDkyMy8yMTQ0CmYgMzQ1OS80OTIzLzIxNDUgMzQ2MC80OTIyLzIxNDUgMzQ2Mi80OTI0LzIxNDUgMzQ2MS80OTI1LzIxNDUKZiAzNDYxLzQ5MjUvMjE0NiAzNDYyLzQ5MjQvMjE0NiAzNDY0LzQ5MjYvMjE0NiAzNDYzLzQ5MjcvMjE0NgpmIDM0NjMvNDkyNy8yMTQ3IDM0NjQvNDkyNi8yMTQ3IDM0NjYvNDkyOC8yMTQ3IDM0NjUvNDkyOS8yMTQ3CmYgMzQ2NS80OTI5LzIxNDggMzQ2Ni80OTI4LzIxNDggMzQ2OC80OTMwLzIxNDggMzQ2Ny80OTMxLzIxNDgKZiAzNDY3LzQ5MzEvMjE0OSAzNDY4LzQ5MzAvMjE0OSAzNDcwLzQ5MzIvMjE0OSAzNDY5LzQ5MzMvMjE0OQpmIDM0NjkvNDkzMy8yMTUwIDM0NzAvNDkzMi8yMTUwIDM0NzIvNDkzNC8yMTUwIDM0NzEvNDkzNS8yMTUwCmYgMzQ3MS80OTM1LzIxNTEgMzQ3Mi80OTM0LzIxNTEgMzQ3NC80OTM2LzIxNTEgMzQ3My80OTM3LzIxNTEKZiAzNDczLzQ5MzcvMjE1MiAzNDc0LzQ5MzYvMjE1MiAzNDc2LzQ5MzgvMjE1MiAzNDc1LzQ5MzkvMjE1MgpmIDM0NzUvNDkzOS8yMTUzIDM0NzYvNDkzOC8yMTUzIDM0NzgvNDk0MC8yMTUzIDM0NzcvNDk0MS8yMTUzCmYgMzQ3Ny80OTQxLzIxNTQgMzQ3OC80OTQwLzIxNTQgMzQ4MC80OTQyLzIxNTQgMzQ3OS80OTQzLzIxNTQKZiAzNDc5LzQ5NDMvMjE1NSAzNDgwLzQ5NDIvMjE1NSAzNDgyLzQ5NDQvMjE1NSAzNDgxLzQ5NDUvMjE1NQpmIDM0ODEvNDk0NS8yMTU2IDM0ODIvNDk0NC8yMTU2IDM0ODQvNDk0Ni8yMTU2IDM0ODMvNDk0Ny8yMTU2CmYgMzQ4My80OTQ3LzIxNTcgMzQ4NC80OTQ2LzIxNTcgMzQ4Ni80OTQ4LzIxNTcgMzQ4NS80OTQ5LzIxNTcKZiAzNDg1LzQ5NDkvMjE1OCAzNDg2LzQ5NDgvMjE1OCAzNDg4LzQ5NTAvMjE1OCAzNDg3LzQ5NTEvMjE1OApmIDM0ODcvNDk1MS8yMTU5IDM0ODgvNDk1MC8yMTU5IDM0OTAvNDk1Mi8yMTU5IDM0ODkvNDk1My8yMTU5CmYgMzQ4OS80OTUzLzIxNjAgMzQ5MC80OTUyLzIxNjAgMzQ5Mi80OTU0LzIxNjAgMzQ5MS80OTU1LzIxNjAKZiAzNDkxLzQ5NTUvMjE2MSAzNDkyLzQ5NTQvMjE2MSAzNDk0LzQ5NTYvMjE2MSAzNDkzLzQ5NTcvMjE2MQpmIDM0OTMvNDk1Ny8yMTYyIDM0OTQvNDk1Ni8yMTYyIDM0OTYvNDk1OC8yMTYyIDM0OTUvNDk1OS8yMTYyCmYgMzQ5NS80OTU5LzIxNjMgMzQ5Ni80OTU4LzIxNjMgMzQ5OC80OTYwLzIxNjMgMzQ5Ny80OTYxLzIxNjMKZiAzNDk3LzQ5NjEvMjE2NCAzNDk4LzQ5NjAvMjE2NCAzNTAwLzQ5NjIvMjE2NCAzNDk5LzQ5NjMvMjE2NApmIDM0OTkvNDk2My8yMTY1IDM1MDAvNDk2Mi8yMTY1IDM1MDIvNDk2NC8yMTY1IDM1MDEvNDk2NS8yMTY1CmYgMzUwMS80OTY1LzIxNjYgMzUwMi80OTY0LzIxNjYgMzUwNC80OTY2LzIxNjYgMzUwMy80OTY3LzIxNjYKZiAzNTAzLzQ5NjcvMjE2NyAzNTA0LzQ5NjYvMjE2NyAzNTA2LzQ5NjgvMjE2NyAzNTA1LzQ5NjkvMjE2NwpmIDM0NDgvNDk3MC8yMTY4IDM0NDYvNDk3MS8yMTY4IDM1MDgvNDk3Mi8yMTY4IDM1MDYvNDk3My8yMTY4IDM1MDQvNDk3NC8yMTY4IDM1MDIvNDk3NS8yMTY4IDM1MDAvNDk3Ni8yMTY4IDM0OTgvNDk3Ny8yMTY4IDM0OTYvNDk3OC8yMTY4IDM0OTQvNDk3OS8yMTY4IDM0OTIvNDk4MC8yMTY4IDM0OTAvNDk4MS8yMTY4IDM0ODgvNDk4Mi8yMTY4IDM0ODYvNDk4My8yMTY4IDM0ODQvNDk4NC8yMTY4IDM0ODIvNDk4NS8yMTY4IDM0ODAvNDk4Ni8yMTY4IDM0NzgvNDk4Ny8yMTY4IDM0NzYvNDk4OC8yMTY4IDM0NzQvNDk4OS8yMTY4IDM0NzIvNDk5MC8yMTY4IDM0NzAvNDk5MS8yMTY4IDM0NjgvNDk5Mi8yMTY4IDM0NjYvNDk5My8yMTY4IDM0NjQvNDk5NC8yMTY4IDM0NjIvNDk5NS8yMTY4IDM0NjAvNDk5Ni8yMTY4IDM0NTgvNDk5Ny8yMTY4IDM0NTYvNDk5OC8yMTY4IDM0NTQvNDk5OS8yMTY4IDM0NTIvNTAwMC8yMTY4IDM0NTAvNTAwMS8yMTY4CmYgMzUwNS80OTY5LzIxNjkgMzUwNi80OTY4LzIxNjkgMzUwOC81MDAyLzIxNjkgMzUwNy81MDAzLzIxNjkKZiAzNTA3LzUwMDMvMjE3MCAzNTA4LzUwMDIvMjE3MCAzNDQ2LzUwMDQvMjE3MCAzNDQ1LzUwMDUvMjE3MApmIDM0NDUvNTAwNi8yMTcxIDM0NDcvNTAwNy8yMTcxIDM0NDkvNTAwOC8yMTcxIDM0NTEvNTAwOS8yMTcxIDM0NTMvNTAxMC8yMTcxIDM0NTUvNTAxMS8yMTcxIDM0NTcvNTAxMi8yMTcxIDM0NTkvNTAxMy8yMTcxIDM0NjEvNTAxNC8yMTcxIDM0NjMvNTAxNS8yMTcxIDM0NjUvNTAxNi8yMTcxIDM0NjcvNTAxNy8yMTcxIDM0NjkvNTAxOC8yMTcxIDM0NzEvNTAxOS8yMTcxIDM0NzMvNTAyMC8yMTcxIDM0NzUvNTAyMS8yMTcxIDM0NzcvNTAyMi8yMTcxIDM0NzkvNTAyMy8yMTcxIDM0ODEvNTAyNC8yMTcxIDM0ODMvNTAyNS8yMTcxIDM0ODUvNTAyNi8yMTcxIDM0ODcvNTAyNy8yMTcxIDM0ODkvNTAyOC8yMTcxIDM0OTEvNTAyOS8yMTcxIDM0OTMvNTAzMC8yMTcxIDM0OTUvNTAzMS8yMTcxIDM0OTcvNTAzMi8yMTcxIDM0OTkvNTAzMy8yMTcxIDM1MDEvNTAzNC8yMTcxIDM1MDMvNTAzNS8yMTcxIDM1MDUvNTAzNi8yMTcxIDM1MDcvNTAzNy8yMTcxCm8gQ3lsaW5kZXIuMDEzX0N5bGluZGVyLjAxNAp2IC0wLjYzOTg5MSAyLjUxOTQ2MCA3LjA1ODg1Mwp2IC0wLjYzOTg5MSAyLjUyMDk1MiA3LjEyNTgwOQp2IC0wLjY0OTQyNyAyLjUyMDM5OSA3LjA1ODgzMgp2IC0wLjY0OTQyNyAyLjUyMTg5MSA3LjEyNTc4OAp2IC0wLjY1ODU5NSAyLjUyMzE4MCA3LjA1ODc3MAp2IC0wLjY1ODU5NSAyLjUyNDY3MiA3LjEyNTcyNgp2IC0wLjY2NzA0NiAyLjUyNzY5NiA3LjA1ODY3MAp2IC0wLjY2NzA0NiAyLjUyOTE4NyA3LjEyNTYyNgp2IC0wLjY3NDQ1MiAyLjUzMzc3MiA3LjA1ODUzNAp2IC0wLjY3NDQ1MiAyLjUzNTI2NCA3LjEyNTQ5MAp2IC0wLjY4MDUzMSAyLjU0MTE3NyA3LjA1ODM2OQp2IC0wLjY4MDUzMSAyLjU0MjY2OSA3LjEyNTMyNQp2IC0wLjY4NTA0NyAyLjU0OTYyNSA3LjA1ODE4MQp2IC0wLjY4NTA0NyAyLjU1MTExNyA3LjEyNTEzNwp2IC0wLjY4NzgyOSAyLjU1ODc5MiA3LjA1Nzk3Nwp2IC0wLjY4NzgyOSAyLjU2MDI4NCA3LjEyNDkzMwp2IC0wLjY4ODc2OCAyLjU2ODMyNSA3LjA1Nzc2NAp2IC0wLjY4ODc2OCAyLjU2OTgxNyA3LjEyNDcyMQp2IC0wLjY4NzgyOSAyLjU3Nzg1OCA3LjA1NzU1Mgp2IC0wLjY4NzgyOSAyLjU3OTM1MCA3LjEyNDUwOAp2IC0wLjY4NTA0NyAyLjU4NzAyNCA3LjA1NzM0OAp2IC0wLjY4NTA0NyAyLjU4ODUxNiA3LjEyNDMwNAp2IC0wLjY4MDUzMCAyLjU5NTQ3MyA3LjA1NzE1OQp2IC0wLjY4MDUzMCAyLjU5Njk2NCA3LjEyNDExNQp2IC0wLjY3NDQ1MiAyLjYwMjg3NyA3LjA1Njk5NAp2IC0wLjY3NDQ1MiAyLjYwNDM2OSA3LjEyMzk1MAp2IC0wLjY2NzA0NSAyLjYwODk1NCA3LjA1Njg1OQp2IC0wLjY2NzA0NSAyLjYxMDQ0NiA3LjEyMzgxNQp2IC0wLjY1ODU5NSAyLjYxMzQ3MCA3LjA1Njc1OAp2IC0wLjY1ODU5NSAyLjYxNDk2MiA3LjEyMzcxNAp2IC0wLjY0OTQyNiAyLjYxNjI1MSA3LjA1NjY5Ngp2IC0wLjY0OTQyNiAyLjYxNzc0MiA3LjEyMzY1Mgp2IC0wLjYzOTg5MSAyLjYxNzE4OSA3LjA1NjY3NQp2IC0wLjYzOTg5MSAyLjYxODY4MSA3LjEyMzYzMQp2IC0wLjYzMDM1NiAyLjYxNjI1MSA3LjA1NjY5Ngp2IC0wLjYzMDM1NiAyLjYxNzc0MiA3LjEyMzY1Mgp2IC0wLjYyMTE4NyAyLjYxMzQ3MCA3LjA1Njc1OAp2IC0wLjYyMTE4NyAyLjYxNDk2MiA3LjEyMzcxNAp2IC0wLjYxMjczNyAyLjYwODk1NCA3LjA1Njg1OQp2IC0wLjYxMjczNyAyLjYxMDQ0NiA3LjEyMzgxNQp2IC0wLjYwNTMzMCAyLjYwMjg3NyA3LjA1Njk5NAp2IC0wLjYwNTMzMCAyLjYwNDM2OSA3LjEyMzk1MAp2IC0wLjU5OTI1MiAyLjU5NTQ3MyA3LjA1NzE1OQp2IC0wLjU5OTI1MiAyLjU5Njk2NCA3LjEyNDExNQp2IC0wLjU5NDczNSAyLjU4NzAyNCA3LjA1NzM0OAp2IC0wLjU5NDczNSAyLjU4ODUxNiA3LjEyNDMwNAp2IC0wLjU5MTk1NCAyLjU3Nzg1OCA3LjA1NzU1Mgp2IC0wLjU5MTk1NCAyLjU3OTM1MCA3LjEyNDUwOAp2IC0wLjU5MTAxNSAyLjU2ODMyNSA3LjA1Nzc2NAp2IC0wLjU5MTAxNSAyLjU2OTgxNyA3LjEyNDcyMQp2IC0wLjU5MTk1NCAyLjU1ODc5MiA3LjA1Nzk3Nwp2IC0wLjU5MTk1NCAyLjU2MDI4NCA3LjEyNDkzMwp2IC0wLjU5NDczNSAyLjU0OTYyNSA3LjA1ODE4MQp2IC0wLjU5NDczNSAyLjU1MTExNyA3LjEyNTEzNwp2IC0wLjU5OTI1MiAyLjU0MTE3NyA3LjA1ODM2OQp2IC0wLjU5OTI1MiAyLjU0MjY2OSA3LjEyNTMyNQp2IC0wLjYwNTMzMCAyLjUzMzc3MiA3LjA1ODUzNAp2IC0wLjYwNTMzMCAyLjUzNTI2NCA3LjEyNTQ5MAp2IC0wLjYxMjczNyAyLjUyNzY5NiA3LjA1ODY3MAp2IC0wLjYxMjczNyAyLjUyOTE4NyA3LjEyNTYyNgp2IC0wLjYyMTE4NyAyLjUyMzE4MCA3LjA1ODc3MAp2IC0wLjYyMTE4NyAyLjUyNDY3MiA3LjEyNTcyNgp2IC0wLjYzMDM1NiAyLjUyMDM5OSA3LjA1ODgzMgp2IC0wLjYzMDM1NiAyLjUyMTg5MSA3LjEyNTc4OAp2dCAxLjAwMDAwMCAwLjUwMDAwMAp2dCAxLjAwMDAwMCAxLjAwMDAwMAp2dCAwLjk2ODc1MCAxLjAwMDAwMAp2dCAwLjk2ODc1MCAwLjUwMDAwMAp2dCAwLjkzNzUwMCAxLjAwMDAwMAp2dCAwLjkzNzUwMCAwLjUwMDAwMAp2dCAwLjkwNjI1MCAxLjAwMDAwMAp2dCAwLjkwNjI1MCAwLjUwMDAwMAp2dCAwLjg3NTAwMCAxLjAwMDAwMAp2dCAwLjg3NTAwMCAwLjUwMDAwMAp2dCAwLjg0Mzc1MCAxLjAwMDAwMAp2dCAwLjg0Mzc1MCAwLjUwMDAwMAp2dCAwLjgxMjUwMCAxLjAwMDAwMAp2dCAwLjgxMjUwMCAwLjUwMDAwMAp2dCAwLjc4MTI1MCAxLjAwMDAwMAp2dCAwLjc4MTI1MCAwLjUwMDAwMAp2dCAwLjc1MDAwMCAxLjAwMDAwMAp2dCAwLjc1MDAwMCAwLjUwMDAwMAp2dCAwLjcxODc1MCAxLjAwMDAwMAp2dCAwLjcxODc1MCAwLjUwMDAwMAp2dCAwLjY4NzUwMCAxLjAwMDAwMAp2dCAwLjY4NzUwMCAwLjUwMDAwMAp2dCAwLjY1NjI1MCAxLjAwMDAwMAp2dCAwLjY1NjI1MCAwLjUwMDAwMAp2dCAwLjYyNTAwMCAxLjAwMDAwMAp2dCAwLjYyNTAwMCAwLjUwMDAwMAp2dCAwLjU5Mzc1MCAxLjAwMDAwMAp2dCAwLjU5Mzc1MCAwLjUwMDAwMAp2dCAwLjU2MjUwMCAxLjAwMDAwMAp2dCAwLjU2MjUwMCAwLjUwMDAwMAp2dCAwLjUzMTI1MCAxLjAwMDAwMAp2dCAwLjUzMTI1MCAwLjUwMDAwMAp2dCAwLjUwMDAwMCAxLjAwMDAwMAp2dCAwLjUwMDAwMCAwLjUwMDAwMAp2dCAwLjQ2ODc1MCAxLjAwMDAwMAp2dCAwLjQ2ODc1MCAwLjUwMDAwMAp2dCAwLjQzNzUwMCAxLjAwMDAwMAp2dCAwLjQzNzUwMCAwLjUwMDAwMAp2dCAwLjQwNjI1MCAxLjAwMDAwMAp2dCAwLjQwNjI1MCAwLjUwMDAwMAp2dCAwLjM3NTAwMCAxLjAwMDAwMAp2dCAwLjM3NTAwMCAwLjUwMDAwMAp2dCAwLjM0Mzc1MCAxLjAwMDAwMAp2dCAwLjM0Mzc1MCAwLjUwMDAwMAp2dCAwLjMxMjUwMCAxLjAwMDAwMAp2dCAwLjMxMjUwMCAwLjUwMDAwMAp2dCAwLjI4MTI1MCAxLjAwMDAwMAp2dCAwLjI4MTI1MCAwLjUwMDAwMAp2dCAwLjI1MDAwMCAxLjAwMDAwMAp2dCAwLjI1MDAwMCAwLjUwMDAwMAp2dCAwLjIxODc1MCAxLjAwMDAwMAp2dCAwLjIxODc1MCAwLjUwMDAwMAp2dCAwLjE4NzUwMCAxLjAwMDAwMAp2dCAwLjE4NzUwMCAwLjUwMDAwMAp2dCAwLjE1NjI1MCAxLjAwMDAwMAp2dCAwLjE1NjI1MCAwLjUwMDAwMAp2dCAwLjEyNTAwMCAxLjAwMDAwMAp2dCAwLjEyNTAwMCAwLjUwMDAwMAp2dCAwLjA5Mzc1MCAxLjAwMDAwMAp2dCAwLjA5Mzc1MCAwLjUwMDAwMAp2dCAwLjA2MjUwMCAxLjAwMDAwMAp2dCAwLjA2MjUwMCAwLjUwMDAwMAp2dCAwLjI5NjgyMiAwLjQ4NTM4OAp2dCAwLjI1MDAwMCAwLjQ5MDAwMAp2dCAwLjIwMzE3OSAwLjQ4NTM4OQp2dCAwLjE1ODE1NiAwLjQ3MTczMQp2dCAwLjExNjY2MyAwLjQ0OTU1Mwp2dCAwLjA4MDI5NSAwLjQxOTcwNgp2dCAwLjA1MDQ0NyAwLjM4MzMzNwp2dCAwLjAyODI2OSAwLjM0MTg0NAp2dCAwLjAxNDYxMiAwLjI5NjgyMgp2dCAwLjAxMDAwMCAwLjI1MDAwMAp2dCAwLjAxNDYxMSAwLjIwMzE3OQp2dCAwLjAyODI2OSAwLjE1ODE1Ngp2dCAwLjA1MDQ0NyAwLjExNjY2Mwp2dCAwLjA4MDI5NCAwLjA4MDI5NAp2dCAwLjExNjY2MyAwLjA1MDQ0Nwp2dCAwLjE1ODE1NiAwLjAyODI2OQp2dCAwLjIwMzE3OCAwLjAxNDYxMgp2dCAwLjI1MDAwMCAwLjAxMDAwMAp2dCAwLjI5NjgyMiAwLjAxNDYxMgp2dCAwLjM0MTg0NCAwLjAyODI2OQp2dCAwLjM4MzMzNyAwLjA1MDQ0Nwp2dCAwLjQxOTcwNiAwLjA4MDI5NAp2dCAwLjQ0OTU1MyAwLjExNjY2Mwp2dCAwLjQ3MTczMSAwLjE1ODE1Ngp2dCAwLjQ4NTM4OCAwLjIwMzE3OAp2dCAwLjQ5MDAwMCAwLjI1MDAwMAp2dCAwLjQ4NTM4OCAwLjI5NjgyMgp2dCAwLjQ3MTczMSAwLjM0MTg0NAp2dCAwLjQ0OTU1MyAwLjM4MzMzNwp2dCAwLjQxOTcwNiAwLjQxOTcwNgp2dCAwLjM4MzMzNyAwLjQ0OTU1Mwp2dCAwLjM0MTg0NCAwLjQ3MTczMQp2dCAwLjAzMTI1MCAxLjAwMDAwMAp2dCAwLjAzMTI1MCAwLjUwMDAwMAp2dCAwLjAwMDAwMCAxLjAwMDAwMAp2dCAwLjAwMDAwMCAwLjUwMDAwMAp2dCAwLjc1MDAwMCAwLjQ5MDAwMAp2dCAwLjc5NjgyMiAwLjQ4NTM4OAp2dCAwLjg0MTg0NCAwLjQ3MTczMQp2dCAwLjg4MzMzNyAwLjQ0OTU1Mwp2dCAwLjkxOTcwNiAwLjQxOTcwNgp2dCAwLjk0OTU1MyAwLjM4MzMzNwp2dCAwLjk3MTczMSAwLjM0MTg0NAp2dCAwLjk4NTM4OCAwLjI5NjgyMgp2dCAwLjk5MDAwMCAwLjI1MDAwMAp2dCAwLjk4NTM4OCAwLjIwMzE3OAp2dCAwLjk3MTczMSAwLjE1ODE1Ngp2dCAwLjk0OTU1MyAwLjExNjY2Mwp2dCAwLjkxOTcwNiAwLjA4MDI5NAp2dCAwLjg4MzMzNyAwLjA1MDQ0Nwp2dCAwLjg0MTg0NCAwLjAyODI2OQp2dCAwLjc5NjgyMiAwLjAxNDYxMgp2dCAwLjc1MDAwMCAwLjAxMDAwMAp2dCAwLjcwMzE3OCAwLjAxNDYxMgp2dCAwLjY1ODE1NiAwLjAyODI2OQp2dCAwLjYxNjY2MyAwLjA1MDQ0Nwp2dCAwLjU4MDI5NCAwLjA4MDI5NAp2dCAwLjU1MDQ0NyAwLjExNjY2Mwp2dCAwLjUyODI2OSAwLjE1ODE1Ngp2dCAwLjUxNDYxMSAwLjIwMzE3OQp2dCAwLjUxMDAwMCAwLjI1MDAwMAp2dCAwLjUxNDYxMiAwLjI5NjgyMgp2dCAwLjUyODI2OSAwLjM0MTg0NAp2dCAwLjU1MDQ0NyAwLjM4MzMzNwp2dCAwLjU4MDI5NSAwLjQxOTcwNgp2dCAwLjYxNjY2MyAwLjQ0OTU1Mwp2dCAwLjY1ODE1NiAwLjQ3MTczMQp2dCAwLjcwMzE3OSAwLjQ4NTM4OQp2biAtMC4wOTgwIC0wLjk5NDkgMC4wMjIyCnZuIC0wLjI5MDMgLTAuOTU2NyAwLjAyMTMKdm4gLTAuNDcxNCAtMC44ODE3IDAuMDE5Ngp2biAtMC42MzQ0IC0wLjc3MjggMC4wMTcyCnZuIC0wLjc3MzAgLTAuNjM0MiAwLjAxNDEKdm4gLTAuODgxOSAtMC40NzEzIDAuMDEwNQp2biAtMC45NTY5IC0wLjI5MDIgMC4wMDY1CnZuIC0wLjk5NTIgLTAuMDk4MCAwLjAwMjIKdm4gLTAuOTk1MiAwLjA5ODAgLTAuMDAyMgp2biAtMC45NTY5IDAuMjkwMiAtMC4wMDY1CnZuIC0wLjg4MTkgMC40NzEzIC0wLjAxMDUKdm4gLTAuNzczMCAwLjYzNDIgLTAuMDE0MQp2biAtMC42MzQ0IDAuNzcyOCAtMC4wMTcyCnZuIC0wLjQ3MTQgMC44ODE3IC0wLjAxOTYKdm4gLTAuMjkwMyAwLjk1NjcgLTAuMDIxMwp2biAtMC4wOTgwIDAuOTk0OSAtMC4wMjIyCnZuIDAuMDk4MCAwLjk5NDkgLTAuMDIyMgp2biAwLjI5MDMgMC45NTY3IC0wLjAyMTMKdm4gMC40NzE0IDAuODgxNyAtMC4wMTk2CnZuIDAuNjM0NCAwLjc3MjggLTAuMDE3Mgp2biAwLjc3MzAgMC42MzQyIC0wLjAxNDEKdm4gMC44ODE5IDAuNDcxMyAtMC4wMTA1CnZuIDAuOTU2OSAwLjI5MDIgLTAuMDA2NQp2biAwLjk5NTIgMC4wOTgwIC0wLjAwMjIKdm4gMC45OTUyIC0wLjA5ODAgMC4wMDIyCnZuIDAuOTU2OSAtMC4yOTAyIDAuMDA2NQp2biAwLjg4MTkgLTAuNDcxMyAwLjAxMDUKdm4gMC43NzMwIC0wLjYzNDIgMC4wMTQxCnZuIDAuNjM0NCAtMC43NzI4IDAuMDE3Mgp2biAwLjQ3MTQgLTAuODgxNyAwLjAxOTYKdm4gLTAuMDAwMCAwLjAyMjMgMC45OTk4CnZuIDAuMjkwMyAtMC45NTY3IDAuMDIxMwp2biAwLjA5ODAgLTAuOTk0OSAwLjAyMjIKdm4gLTAuMDAwMCAtMC4wMjIzIC0wLjk5OTgKdXNlbXRsIE5vbmUKcyBvZmYKZiAzNTA5LzUwMzgvMjE3MiAzNTEwLzUwMzkvMjE3MiAzNTEyLzUwNDAvMjE3MiAzNTExLzUwNDEvMjE3MgpmIDM1MTEvNTA0MS8yMTczIDM1MTIvNTA0MC8yMTczIDM1MTQvNTA0Mi8yMTczIDM1MTMvNTA0My8yMTczCmYgMzUxMy81MDQzLzIxNzQgMzUxNC81MDQyLzIxNzQgMzUxNi81MDQ0LzIxNzQgMzUxNS81MDQ1LzIxNzQKZiAzNTE1LzUwNDUvMjE3NSAzNTE2LzUwNDQvMjE3NSAzNTE4LzUwNDYvMjE3NSAzNTE3LzUwNDcvMjE3NQpmIDM1MTcvNTA0Ny8yMTc2IDM1MTgvNTA0Ni8yMTc2IDM1MjAvNTA0OC8yMTc2IDM1MTkvNTA0OS8yMTc2CmYgMzUxOS81MDQ5LzIxNzcgMzUyMC81MDQ4LzIxNzcgMzUyMi81MDUwLzIxNzcgMzUyMS81MDUxLzIxNzcKZiAzNTIxLzUwNTEvMjE3OCAzNTIyLzUwNTAvMjE3OCAzNTI0LzUwNTIvMjE3OCAzNTIzLzUwNTMvMjE3OApmIDM1MjMvNTA1My8yMTc5IDM1MjQvNTA1Mi8yMTc5IDM1MjYvNTA1NC8yMTc5IDM1MjUvNTA1NS8yMTc5CmYgMzUyNS81MDU1LzIxODAgMzUyNi81MDU0LzIxODAgMzUyOC81MDU2LzIxODAgMzUyNy81MDU3LzIxODAKZiAzNTI3LzUwNTcvMjE4MSAzNTI4LzUwNTYvMjE4MSAzNTMwLzUwNTgvMjE4MSAzNTI5LzUwNTkvMjE4MQpmIDM1MjkvNTA1OS8yMTgyIDM1MzAvNTA1OC8yMTgyIDM1MzIvNTA2MC8yMTgyIDM1MzEvNTA2MS8yMTgyCmYgMzUzMS81MDYxLzIxODMgMzUzMi81MDYwLzIxODMgMzUzNC81MDYyLzIxODMgMzUzMy81MDYzLzIxODMKZiAzNTMzLzUwNjMvMjE4NCAzNTM0LzUwNjIvMjE4NCAzNTM2LzUwNjQvMjE4NCAzNTM1LzUwNjUvMjE4NApmIDM1MzUvNTA2NS8yMTg1IDM1MzYvNTA2NC8yMTg1IDM1MzgvNTA2Ni8yMTg1IDM1MzcvNTA2Ny8yMTg1CmYgMzUzNy81MDY3LzIxODYgMzUzOC81MDY2LzIxODYgMzU0MC81MDY4LzIxODYgMzUzOS81MDY5LzIxODYKZiAzNTM5LzUwNjkvMjE4NyAzNTQwLzUwNjgvMjE4NyAzNTQyLzUwNzAvMjE4NyAzNTQxLzUwNzEvMjE4NwpmIDM1NDEvNTA3MS8yMTg4IDM1NDIvNTA3MC8yMTg4IDM1NDQvNTA3Mi8yMTg4IDM1NDMvNTA3My8yMTg4CmYgMzU0My81MDczLzIxODkgMzU0NC81MDcyLzIxODkgMzU0Ni81MDc0LzIxODkgMzU0NS81MDc1LzIxODkKZiAzNTQ1LzUwNzUvMjE5MCAzNTQ2LzUwNzQvMjE5MCAzNTQ4LzUwNzYvMjE5MCAzNTQ3LzUwNzcvMjE5MApmIDM1NDcvNTA3Ny8yMTkxIDM1NDgvNTA3Ni8yMTkxIDM1NTAvNTA3OC8yMTkxIDM1NDkvNTA3OS8yMTkxCmYgMzU0OS81MDc5LzIxOTIgMzU1MC81MDc4LzIxOTIgMzU1Mi81MDgwLzIxOTIgMzU1MS81MDgxLzIxOTIKZiAzNTUxLzUwODEvMjE5MyAzNTUyLzUwODAvMjE5MyAzNTU0LzUwODIvMjE5MyAzNTUzLzUwODMvMjE5MwpmIDM1NTMvNTA4My8yMTk0IDM1NTQvNTA4Mi8yMTk0IDM1NTYvNTA4NC8yMTk0IDM1NTUvNTA4NS8yMTk0CmYgMzU1NS81MDg1LzIxOTUgMzU1Ni81MDg0LzIxOTUgMzU1OC81MDg2LzIxOTUgMzU1Ny81MDg3LzIxOTUKZiAzNTU3LzUwODcvMjE5NiAzNTU4LzUwODYvMjE5NiAzNTYwLzUwODgvMjE5NiAzNTU5LzUwODkvMjE5NgpmIDM1NTkvNTA4OS8yMTk3IDM1NjAvNTA4OC8yMTk3IDM1NjIvNTA5MC8yMTk3IDM1NjEvNTA5MS8yMTk3CmYgMzU2MS81MDkxLzIxOTggMzU2Mi81MDkwLzIxOTggMzU2NC81MDkyLzIxOTggMzU2My81MDkzLzIxOTgKZiAzNTYzLzUwOTMvMjE5OSAzNTY0LzUwOTIvMjE5OSAzNTY2LzUwOTQvMjE5OSAzNTY1LzUwOTUvMjE5OQpmIDM1NjUvNTA5NS8yMjAwIDM1NjYvNTA5NC8yMjAwIDM1NjgvNTA5Ni8yMjAwIDM1NjcvNTA5Ny8yMjAwCmYgMzU2Ny81MDk3LzIyMDEgMzU2OC81MDk2LzIyMDEgMzU3MC81MDk4LzIyMDEgMzU2OS81MDk5LzIyMDEKZiAzNTEyLzUxMDAvMjIwMiAzNTEwLzUxMDEvMjIwMiAzNTcyLzUxMDIvMjIwMiAzNTcwLzUxMDMvMjIwMiAzNTY4LzUxMDQvMjIwMiAzNTY2LzUxMDUvMjIwMiAzNTY0LzUxMDYvMjIwMiAzNTYyLzUxMDcvMjIwMiAzNTYwLzUxMDgvMjIwMiAzNTU4LzUxMDkvMjIwMiAzNTU2LzUxMTAvMjIwMiAzNTU0LzUxMTEvMjIwMiAzNTUyLzUxMTIvMjIwMiAzNTUwLzUxMTMvMjIwMiAzNTQ4LzUxMTQvMjIwMiAzNTQ2LzUxMTUvMjIwMiAzNTQ0LzUxMTYvMjIwMiAzNTQyLzUxMTcvMjIwMiAzNTQwLzUxMTgvMjIwMiAzNTM4LzUxMTkvMjIwMiAzNTM2LzUxMjAvMjIwMiAzNTM0LzUxMjEvMjIwMiAzNTMyLzUxMjIvMjIwMiAzNTMwLzUxMjMvMjIwMiAzNTI4LzUxMjQvMjIwMiAzNTI2LzUxMjUvMjIwMiAzNTI0LzUxMjYvMjIwMiAzNTIyLzUxMjcvMjIwMiAzNTIwLzUxMjgvMjIwMiAzNTE4LzUxMjkvMjIwMiAzNTE2LzUxMzAvMjIwMiAzNTE0LzUxMzEvMjIwMgpmIDM1NjkvNTA5OS8yMjAzIDM1NzAvNTA5OC8yMjAzIDM1NzIvNTEzMi8yMjAzIDM1NzEvNTEzMy8yMjAzCmYgMzU3MS81MTMzLzIyMDQgMzU3Mi81MTMyLzIyMDQgMzUxMC81MTM0LzIyMDQgMzUwOS81MTM1LzIyMDQKZiAzNTA5LzUxMzYvMjIwNSAzNTExLzUxMzcvMjIwNSAzNTEzLzUxMzgvMjIwNSAzNTE1LzUxMzkvMjIwNSAzNTE3LzUxNDAvMjIwNSAzNTE5LzUxNDEvMjIwNSAzNTIxLzUxNDIvMjIwNSAzNTIzLzUxNDMvMjIwNSAzNTI1LzUxNDQvMjIwNSAzNTI3LzUxNDUvMjIwNSAzNTI5LzUxNDYvMjIwNSAzNTMxLzUxNDcvMjIwNSAzNTMzLzUxNDgvMjIwNSAzNTM1LzUxNDkvMjIwNSAzNTM3LzUxNTAvMjIwNSAzNTM5LzUxNTEvMjIwNSAzNTQxLzUxNTIvMjIwNSAzNTQzLzUxNTMvMjIwNSAzNTQ1LzUxNTQvMjIwNSAzNTQ3LzUxNTUvMjIwNSAzNTQ5LzUxNTYvMjIwNSAzNTUxLzUxNTcvMjIwNSAzNTUzLzUxNTgvMjIwNSAzNTU1LzUxNTkvMjIwNSAzNTU3LzUxNjAvMjIwNSAzNTU5LzUxNjEvMjIwNSAzNTYxLzUxNjIvMjIwNSAzNTYzLzUxNjMvMjIwNSAzNTY1LzUxNjQvMjIwNSAzNTY3LzUxNjUvMjIwNSAzNTY5LzUxNjYvMjIwNSAzNTcxLzUxNjcvMjIwNQpvIEN1YmVfQ3ViZS4wMDMKdiAxLjg3NDc1NyAyLjcwODM1OCA3LjA4NzIxOQp2IDEuODc0NzU3IDIuNDM4MTMyIDcuMDg3MjE5CnYgMS44NzQ3NTcgMi43MDgzNTggNi44NzkxODEKdiAxLjg3NDc1NyAyLjQzODEzMiA2Ljg3OTE4MQp2IDAuODYyODY1IDIuNzA4MzU5IDcuMDg3MjE5CnYgMC44NjI4NjUgMi40MzgxMzIgNy4wODcyMTkKdiAwLjg2Mjg2NSAyLjcwODM1OSA2Ljg3OTE4MQp2IDAuODYyODY1IDIuNDM4MTMyIDYuODc5MTgxCnZ0IDAuMzc1MDAwIDAuMDAwMDAwCnZ0IDAuNjI1MDAwIDAuMDAwMDAwCnZ0IDAuNjI1MDAwIDAuMjUwMDAwCnZ0IDAuMzc1MDAwIDAuMjUwMDAwCnZ0IDAuNjI1MDAwIDAuNTAwMDAwCnZ0IDAuMzc1MDAwIDAuNTAwMDAwCnZ0IDAuNjI1MDAwIDAuNzUwMDAwCnZ0IDAuMzc1MDAwIDAuNzUwMDAwCnZ0IDAuMjg4OTA5IDAuMzU4NzcyCnZ0IDAuNzMwNzc4IDAuMzU4NzcyCnZ0IDAuNzMwNzc4IDAuODAwNjQwCnZ0IDAuMjg4OTA5IDAuODAwNjQwCnZ0IDAuMTI1MDAwIDAuNTAwMDAwCnZ0IDAuMTI1MDAwIDAuNzUwMDAwCnZ0IDAuODc1MDAwIDAuNTAwMDAwCnZ0IDAuODc1MDAwIDAuNzUwMDAwCnZuIDEuMDAwMCAwLjAwMDAgMC4wMDAwCnZuIDAuMDAwMCAwLjAwMDAgLTEuMDAwMAp2biAtMS4wMDAwIDAuMDAwMCAwLjAwMDAKdm4gMC4wMDAwIDAuMDAwMCAxLjAwMDAKdm4gMC4wMDAwIDEuMDAwMCAwLjAwMDAKdm4gLTAuMDAwMCAtMS4wMDAwIDAuMDAwMAp1c2VtdGwgTWF0ZXJpYWwuMDQ1CnMgb2ZmCmYgMzU3My81MTY4LzIyMDYgMzU3NC81MTY5LzIyMDYgMzU3Ni81MTcwLzIyMDYgMzU3NS81MTcxLzIyMDYKZiAzNTc1LzUxNzEvMjIwNyAzNTc2LzUxNzAvMjIwNyAzNTgwLzUxNzIvMjIwNyAzNTc5LzUxNzMvMjIwNwpmIDM1NzkvNTE3My8yMjA4IDM1ODAvNTE3Mi8yMjA4IDM1NzgvNTE3NC8yMjA4IDM1NzcvNTE3NS8yMjA4CmYgMzU3Ny81MTc2LzIyMDkgMzU3OC81MTc3LzIyMDkgMzU3NC81MTc4LzIyMDkgMzU3My81MTc5LzIyMDkKZiAzNTc1LzUxODAvMjIxMCAzNTc5LzUxNzMvMjIxMCAzNTc3LzUxNzUvMjIxMCAzNTczLzUxODEvMjIxMApmIDM1ODAvNTE3Mi8yMjExIDM1NzYvNTE4Mi8yMjExIDM1NzQvNTE4My8yMjExIDM1NzgvNTE3NC8yMjExCm8gQ3ViZS4wMDJfQ3ViZS4wMDQKdiAtMS4wMTg2ODMgMi42NDk5MDQgNy4wODcyMTkKdiAtMS4wMTg2ODMgMi40NDExODAgNy4wODcyMTkKdiAtMS4wMTg2ODMgMi42NDk5MDQgNi44NzkxODEKdiAtMS4wMTg2ODMgMi40NDExODAgNi44NzkxODEKdiAtMi4zNTgzMTMgMi42NDk5MDQgNy4wODcyMTkKdiAtMi4zNTgzMTMgMi40NDExODAgNy4wODcyMTkKdiAtMi4zNTgzMTMgMi42NDk5MDQgNi44NzkxODEKdiAtMi4zNTgzMTMgMi40NDExODAgNi44NzkxODEKdnQgMC4zNzUwMDAgMC4wMDAwMDAKdnQgMC42MjUwMDAgMC4wMDAwMDAKdnQgMC42MjUwMDAgMC4yNTAwMDAKdnQgMC4zNzUwMDAgMC4yNTAwMDAKdnQgMC42MjUwMDAgMC41MDAwMDAKdnQgMC4zNzUwMDAgMC41MDAwMDAKdnQgMC42MjUwMDAgMC43NTAwMDAKdnQgMC4zNzUwMDAgMC43NTAwMDAKdnQgMC4zMTYyMzUgMC4zMTcxOTYKdnQgMC42ODM3NjUgMC4zMTcxOTYKdnQgMC42ODM3NjUgMC42ODQ3MjYKdnQgMC4zMTYyMzUgMC42ODQ3MjYKdnQgMC4xMjUwMDAgMC41MDAwMDAKdnQgMC4xMjUwMDAgMC43NTAwMDAKdnQgMC44NzUwMDAgMC41MDAwMDAKdnQgMC44NzUwMDAgMC43NTAwMDAKdm4gMS4wMDAwIDAuMDAwMCAwLjAwMDAKdm4gMC4wMDAwIDAuMDAwMCAtMS4wMDAwCnZuIC0xLjAwMDAgMC4wMDAwIDAuMDAwMAp2biAwLjAwMDAgMC4wMDAwIDEuMDAwMAp2biAwLjAwMDAgMS4wMDAwIDAuMDAwMAp2biAtMC4wMDAwIC0xLjAwMDAgMC4wMDAwCnVzZW10bCBNYXRlcmlhbC4wMjQKcyBvZmYKZiAzNTgxLzUxODQvMjIxMiAzNTgyLzUxODUvMjIxMiAzNTg0LzUxODYvMjIxMiAzNTgzLzUxODcvMjIxMgpmIDM1ODMvNTE4Ny8yMjEzIDM1ODQvNTE4Ni8yMjEzIDM1ODgvNTE4OC8yMjEzIDM1ODcvNTE4OS8yMjEzCmYgMzU4Ny81MTg5LzIyMTQgMzU4OC81MTg4LzIyMTQgMzU4Ni81MTkwLzIyMTQgMzU4NS81MTkxLzIyMTQKZiAzNTg1LzUxOTIvMjIxNSAzNTg2LzUxOTMvMjIxNSAzNTgyLzUxOTQvMjIxNSAzNTgxLzUxOTUvMjIxNQpmIDM1ODMvNTE5Ni8yMjE2IDM1ODcvNTE4OS8yMjE2IDM1ODUvNTE5MS8yMjE2IDM1ODEvNTE5Ny8yMjE2CmYgMzU4OC81MTg4LzIyMTcgMzU4NC81MTk4LzIyMTcgMzU4Mi81MTk5LzIyMTcgMzU4Ni81MTkwLzIyMTcK", self.location).href, pj = {
|
|
name: "Mockup",
|
|
props: {
|
|
screen: {
|
|
type: null
|
|
},
|
|
lightClr: {
|
|
type: String,
|
|
default: "white"
|
|
},
|
|
phoneClr: {
|
|
type: String,
|
|
default: "white"
|
|
},
|
|
position: {
|
|
type: Object,
|
|
default: () => ({})
|
|
},
|
|
rotation: {
|
|
type: Object,
|
|
default: () => ({})
|
|
},
|
|
linearFilter: {
|
|
type: Boolean
|
|
}
|
|
},
|
|
setup(n) {
|
|
const M = NI(null);
|
|
let D, t;
|
|
const e = [];
|
|
let N, A = 0, z = 0;
|
|
function I() {
|
|
const y = () => {
|
|
D = new jD(45, M.value.clientWidth / M.value.clientHeight, 0.1, 1e4), t = new AA();
|
|
const c = new Xi(n.lightClr);
|
|
t.add(c), c.position.set(0, 0, 300), D.position.set(0, 0, 200);
|
|
}, a = (c, r) => {
|
|
const l = new Ej({
|
|
position: {
|
|
x: 0,
|
|
y: 0,
|
|
z: 0,
|
|
...r.position
|
|
},
|
|
rotation: {
|
|
x: -0.2,
|
|
y: 0.3,
|
|
z: 0.06,
|
|
...r.rotation
|
|
}
|
|
}), C = () => {
|
|
const G = lj(54, 115.80000000000001, 8);
|
|
let o;
|
|
typeof c == "string" ? o = new Hi().load(c) : o = new Ui(c), o.anisotropy = N.capabilities.getMaxAnisotropy();
|
|
const h = new Gn({ map: o });
|
|
n.linearFilter && (h.map.minFilter = uD);
|
|
const Y = new nD(G, h);
|
|
(() => {
|
|
const f = new pD().setFromObject(Y), Q = new O();
|
|
f.getSize(Q);
|
|
const b = new O(), W = Y.geometry.attributes.position, IM = Y.geometry.attributes.uv;
|
|
for (let Z = 0; Z < W.count; Z += 1)
|
|
b.fromBufferAttribute(W, Z), IM.setXY(Z, (b.x - f.min.x) / Q.x, (b.y - f.min.y) / Q.y);
|
|
})(), Y.translateZ(3.6), Y.geometry.center(), l.add(Y);
|
|
}, E = () => {
|
|
new xj().load(vj, (p) => {
|
|
const H = new ZM();
|
|
p.traverse((DM) => {
|
|
if (DM instanceof nD) {
|
|
DM.material = new Gn({ color: n.phoneClr }), DM.geometry.center();
|
|
const G = new nD(DM.geometry, DM.material), o = 8.6;
|
|
G.rotateX(Math.PI / 2), G.scale.set(-o, o, o), H.add(G);
|
|
}
|
|
}), l.add(H);
|
|
});
|
|
};
|
|
return l.startFloat(), t.add(l), C(), E(), l;
|
|
};
|
|
if (N = new KM({ antialias: !0, alpha: !0 }), N.setSize(M.value.clientWidth, M.value.clientHeight), y(), Array.isArray(n.screen))
|
|
for (let c = 0; c <= n.screen.length - 1; c += 1)
|
|
e.push(a(n.screen[c], {
|
|
position: n.position[c],
|
|
rotation: n.rotation[c]
|
|
}));
|
|
else
|
|
e.push(a(n.screen, {
|
|
position: n.position,
|
|
rotation: n.rotation
|
|
}));
|
|
M.value.appendChild(N.domElement);
|
|
}
|
|
let i = 0;
|
|
function T(y) {
|
|
y *= 1e-3;
|
|
const a = y - i;
|
|
i = y, requestAnimationFrame(T), e.length && e.forEach((c) => {
|
|
c.animation(a, { x: A / 2, y: z / 2, z: D.position.z });
|
|
}), N.render(t, D);
|
|
}
|
|
function u() {
|
|
e.length && e.forEach((y) => {
|
|
y.animation = y.lookAtAnim, y.goingHome = !1, clearTimeout(y.homeTimeout);
|
|
});
|
|
}
|
|
function g() {
|
|
e.length && e.forEach((y) => {
|
|
y.animation = y.homeAnim;
|
|
});
|
|
}
|
|
function s(y) {
|
|
const a = M.value.getBoundingClientRect();
|
|
A = y.clientX - a.left - a.width / 2, z = -(y.clientY - a.top - a.height / 2);
|
|
}
|
|
function j(y) {
|
|
y.preventDefault();
|
|
const a = M.value.getBoundingClientRect();
|
|
A = y.touches[0].clientX - a.left - a.width / 2, z = -(y.touches[0].clientY - a.top - a.height / 2);
|
|
}
|
|
return nI(() => {
|
|
I(), T(0);
|
|
}), {
|
|
container: M,
|
|
handleMouseEnter: u,
|
|
handleMouseLeave: g,
|
|
handleMouseMove: s,
|
|
handleTouchMove: j
|
|
};
|
|
}
|
|
};
|
|
function hj(n, M, D, t, e, N) {
|
|
return AI(), zI("div", {
|
|
ref: "container",
|
|
onMouseenter: M[0] || (M[0] = (...A) => t.handleMouseEnter && t.handleMouseEnter(...A)),
|
|
onMouseleave: M[1] || (M[1] = (...A) => t.handleMouseLeave && t.handleMouseLeave(...A)),
|
|
onMousemove: M[2] || (M[2] = (...A) => t.handleMouseMove && t.handleMouseMove(...A)),
|
|
onTouchstart: M[3] || (M[3] = (...A) => t.handleMouseEnter && t.handleMouseEnter(...A)),
|
|
onTouchend: M[4] || (M[4] = (...A) => t.handleMouseLeave && t.handleMouseLeave(...A)),
|
|
onTouchmove: M[5] || (M[5] = (...A) => t.handleTouchMove && t.handleTouchMove(...A))
|
|
}, null, 544);
|
|
}
|
|
const Uj = /* @__PURE__ */ dj(pj, [["render", hj]]);
|
|
export {
|
|
Uj as default
|
|
};
|