@idm-plugin/meteo2 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +680 -782
- package/dist/index.umd.cjs +2 -2
- package/dist/tropicals/src/index.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var F = (
|
|
4
|
-
import
|
|
1
|
+
var N0 = Object.defineProperty;
|
|
2
|
+
var S0 = (e, M, b) => M in e ? N0(e, M, { enumerable: !0, configurable: !0, writable: !0, value: b }) : e[M] = b;
|
|
3
|
+
var F = (e, M, b) => (S0(e, typeof M != "symbol" ? M + "" : M, b), b);
|
|
4
|
+
import b0 from "@log4js-node/log4js-api";
|
|
5
5
|
import L from "moment";
|
|
6
|
-
import
|
|
7
|
-
import { fetchWeatherApi as
|
|
6
|
+
import k from "got";
|
|
7
|
+
import { fetchWeatherApi as M0 } from "openmeteo";
|
|
8
8
|
import { Meteo2Assist as $ } from "@idm-plugin/meteo";
|
|
9
|
-
import
|
|
10
|
-
import { LaneHelper as
|
|
11
|
-
let
|
|
9
|
+
import U0 from "xml2js";
|
|
10
|
+
import { LaneHelper as Y0 } from "@idm-plugin/geo2";
|
|
11
|
+
let V;
|
|
12
12
|
try {
|
|
13
|
-
|
|
13
|
+
V = b0.getLogger("meteo");
|
|
14
14
|
} catch {
|
|
15
15
|
} finally {
|
|
16
16
|
}
|
|
17
|
-
var
|
|
18
|
-
class
|
|
17
|
+
var B0 = /* @__PURE__ */ ((e) => (e.Arome = "arome", e.IconEU = "iconEu", e.GFS = "gfs", e.GFSWave = "gfsWave", e.NamConus = "namConus", e.NamHawaii = "namHawaii", e.NamAlaska = "namAlaska", e.Geos5 = "geos5", e))(B0 || {});
|
|
18
|
+
class y0 {
|
|
19
19
|
/**
|
|
20
20
|
* 点查海洋气象要素(全量)
|
|
21
21
|
* @param lng
|
|
@@ -25,26 +25,26 @@ class Q0 {
|
|
|
25
25
|
* @param source
|
|
26
26
|
* @param options
|
|
27
27
|
*/
|
|
28
|
-
static async queryPointMeteo(M,
|
|
29
|
-
typeof
|
|
30
|
-
const
|
|
28
|
+
static async queryPointMeteo(M, b, z, p = !1, c = "", W = {}) {
|
|
29
|
+
typeof z == "number" && (z = z < 1e12 ? z * 1e3 : z);
|
|
30
|
+
const A = L(z), o = {
|
|
31
31
|
searchParams: {
|
|
32
32
|
lng: M,
|
|
33
|
-
lat:
|
|
34
|
-
ts:
|
|
33
|
+
lat: b,
|
|
34
|
+
ts: A.valueOf(),
|
|
35
35
|
params: p ? "watertemp" : void 0,
|
|
36
36
|
source: c == null ? void 0 : c.toLowerCase()
|
|
37
37
|
},
|
|
38
38
|
timeout: 3e4
|
|
39
|
-
}, q = L(),
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
if (
|
|
39
|
+
}, q = L(), R = q.valueOf();
|
|
40
|
+
A.isBefore(q.subtract(1, "month")) && (V == null || V.warn("[%s] get history meteo on %s: %j", W.requestId, A.format(), o));
|
|
41
|
+
const n = "https://aod4idm.idmwx.com/api/ocean/point", Y = await k.get(n, o).json(), r = L().valueOf();
|
|
42
|
+
if (V == null || V.info("[%s] get meteo(cost: %d ms) from %s with options: %j", W.requestId, r - R, n, o), (Y == null ? void 0 : Y.code) === 0)
|
|
43
43
|
return {
|
|
44
44
|
...Y.data,
|
|
45
45
|
source: c
|
|
46
46
|
};
|
|
47
|
-
|
|
47
|
+
V == null || V.warn("[%s] get meteo failed: %j", W.requestId, Y);
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* 点查海洋气象要素(指定要素组合)
|
|
@@ -60,43 +60,43 @@ class Q0 {
|
|
|
60
60
|
* @param source
|
|
61
61
|
* @param options
|
|
62
62
|
*/
|
|
63
|
-
static async queryPointFactor(M,
|
|
64
|
-
typeof
|
|
65
|
-
const
|
|
63
|
+
static async queryPointFactor(M, b, z, p = "wind,wave,current,watertemp,visibility", c = "", W = {}) {
|
|
64
|
+
typeof z == "number" && (z = z < 1e12 ? z * 1e3 : z);
|
|
65
|
+
const A = L(z), o = {
|
|
66
66
|
searchParams: {
|
|
67
67
|
lng: M,
|
|
68
|
-
lat:
|
|
69
|
-
ts:
|
|
68
|
+
lat: b,
|
|
69
|
+
ts: A.valueOf(),
|
|
70
70
|
params: p,
|
|
71
71
|
source: c == null ? void 0 : c.toLowerCase()
|
|
72
72
|
},
|
|
73
73
|
timeout: 3e4
|
|
74
|
-
}, q = L(),
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
if (
|
|
74
|
+
}, q = L(), R = q.valueOf();
|
|
75
|
+
A.isBefore(q.subtract(1, "month")) && (V == null || V.warn("[%s] get history factors on %s: %j", W.requestId, A.format(), o));
|
|
76
|
+
const n = "https://aod4idm.idmwx.com/api/ocean/factor", Y = await k.get(n, o).json(), r = L().valueOf();
|
|
77
|
+
if (V == null || V.info("[%s] get factors(cost: %d ms) from %s with options: %j", W.requestId, r - R, n, o), (Y == null ? void 0 : Y.code) === 0)
|
|
78
78
|
return {
|
|
79
79
|
...Y.data,
|
|
80
80
|
source: c
|
|
81
81
|
};
|
|
82
|
-
|
|
82
|
+
V == null || V.warn("[%s] get factors failed: %j", W.requestId, Y);
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
85
|
* @see https://api.windy.com/point-forecast/docs
|
|
86
86
|
* @param key
|
|
87
87
|
*/
|
|
88
|
-
static async queryWindyPointForecast(M,
|
|
88
|
+
static async queryWindyPointForecast(M, b, z, p = {}) {
|
|
89
89
|
const c = "https://api.windy.com/api/point-forecast/v2", W = [];
|
|
90
90
|
try {
|
|
91
|
-
let
|
|
92
|
-
const o = await
|
|
91
|
+
let A = L().valueOf();
|
|
92
|
+
const o = await k.post(c, {
|
|
93
93
|
headers: {
|
|
94
94
|
"Content-Type": "application/json"
|
|
95
95
|
},
|
|
96
96
|
json: {
|
|
97
97
|
lat: M,
|
|
98
|
-
lon:
|
|
99
|
-
key:
|
|
98
|
+
lon: b,
|
|
99
|
+
key: z,
|
|
100
100
|
model: "gfs",
|
|
101
101
|
parameters: [
|
|
102
102
|
"temp",
|
|
@@ -119,24 +119,24 @@ class Q0 {
|
|
|
119
119
|
}
|
|
120
120
|
}).json();
|
|
121
121
|
let q = L().valueOf();
|
|
122
|
-
|
|
123
|
-
const
|
|
122
|
+
V == null || V.info("[%s] get gfs-factors(cost: %d ms) from %s", p.requestId, q - A, c), A = q;
|
|
123
|
+
const R = await k.post(c, {
|
|
124
124
|
headers: {
|
|
125
125
|
"Content-Type": "application/json"
|
|
126
126
|
},
|
|
127
127
|
json: {
|
|
128
128
|
lat: M,
|
|
129
|
-
lon:
|
|
130
|
-
key:
|
|
129
|
+
lon: b,
|
|
130
|
+
key: z,
|
|
131
131
|
model: "gfsWave",
|
|
132
132
|
parameters: ["waves", "windWaves", "swell1", "swell2"],
|
|
133
133
|
levels: ["surface"]
|
|
134
134
|
}
|
|
135
135
|
}).json();
|
|
136
|
-
q = L().valueOf(),
|
|
136
|
+
q = L().valueOf(), V == null || V.info("[%s] get gfs-wave-factors(cost: %d ms) from %s", p.requestId, q - A, c);
|
|
137
137
|
for (let Y = 0; Y < o.ts.length; Y++) {
|
|
138
|
-
const
|
|
139
|
-
|
|
138
|
+
const r = this.populateUVFactor(o["wind_u-surface"][Y], o["wind_v-surface"][Y], !1, p);
|
|
139
|
+
r.scale = this.calculateBeaufortWindForceScale(r.speed), W.push({
|
|
140
140
|
utc: L(o.ts[Y]).utc().format(),
|
|
141
141
|
temp: o["temp-surface"][Y] ? Math.round((o["temp-surface"][Y] - 273.15) * 100) / 100 : void 0,
|
|
142
142
|
dp_temp: o["dewpoint-surface"][Y] ? Math.round((o["dewpoint-surface"][Y] - 273.15) * 100) / 100 : void 0,
|
|
@@ -145,7 +145,7 @@ class Q0 {
|
|
|
145
145
|
inter3hSnow: o["past3hsnowprecip-surface"][Y] ? Math.round(o["past3hsnowprecip-surface"][Y] * 1e3 * 1e3) / 1e3 : 0,
|
|
146
146
|
inter3hConv: o["past3hconvprecip-surface"][Y] ? Math.round(o["past3hconvprecip-surface"][Y] * 1e3 * 1e3) / 1e3 : 0
|
|
147
147
|
},
|
|
148
|
-
wind:
|
|
148
|
+
wind: r,
|
|
149
149
|
gusts: {
|
|
150
150
|
speed: Math.round((o["gust-surface"][Y] || 0) * 100) / 100,
|
|
151
151
|
kts: this.convertMs2Kts(o["gust-surface"][Y])
|
|
@@ -158,25 +158,25 @@ class Q0 {
|
|
|
158
158
|
pressure: Math.round(o["pressure-surface"][Y] / 100 * 100) / 100
|
|
159
159
|
});
|
|
160
160
|
}
|
|
161
|
-
const
|
|
162
|
-
for (let Y = 0; Y <
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
utc: L(
|
|
161
|
+
const n = [];
|
|
162
|
+
for (let Y = 0; Y < R.ts.length; Y++) {
|
|
163
|
+
const r = this.calculateDouglasScale(R["waves_height-surface"][Y], R["waves_direction-surface"][Y], R["waves_period-surface"][Y]), T = this.calculateDouglasScale(R["wwaves_height-surface"][Y], R["wwaves_direction-surface"][Y], R["wwaves_period-surface"][Y]), B = this.calculateDouglasScale(R["swell1_height-surface"][Y], R["swell1_direction-surface"][Y], R["swell1_period-surface"][Y]), t = this.calculateDouglasScale(R["swell2_height-surface"][Y], R["swell2_direction-surface"][Y], R["swell2_period-surface"][Y]);
|
|
164
|
+
n.push({
|
|
165
|
+
utc: L(R.ts[Y]).utc().format(),
|
|
166
166
|
wave: {
|
|
167
|
-
sig:
|
|
168
|
-
wd:
|
|
169
|
-
swell:
|
|
170
|
-
swell2:
|
|
167
|
+
sig: r,
|
|
168
|
+
wd: T,
|
|
169
|
+
swell: B,
|
|
170
|
+
swell2: t
|
|
171
171
|
}
|
|
172
172
|
});
|
|
173
173
|
}
|
|
174
174
|
for (const Y of W) {
|
|
175
|
-
const
|
|
176
|
-
Y.wave =
|
|
175
|
+
const r = n.find((T) => T.utc === Y.utc);
|
|
176
|
+
Y.wave = r == null ? void 0 : r.wave;
|
|
177
177
|
}
|
|
178
|
-
} catch (
|
|
179
|
-
|
|
178
|
+
} catch (A) {
|
|
179
|
+
V.warn("[%s] get-gfs-factor failed: %s", p.requestId, A);
|
|
180
180
|
}
|
|
181
181
|
return W;
|
|
182
182
|
}
|
|
@@ -187,15 +187,15 @@ class Q0 {
|
|
|
187
187
|
* @param reverse 反转, 如计算洋流方向时,风来流去
|
|
188
188
|
* @param options
|
|
189
189
|
*/
|
|
190
|
-
static populateUVFactor(M,
|
|
191
|
-
const c = Math.round(Math.sqrt(Math.pow(M, 2) + Math.pow(
|
|
190
|
+
static populateUVFactor(M, b, z = !1, p = {}) {
|
|
191
|
+
const c = Math.round(Math.sqrt(Math.pow(M, 2) + Math.pow(b, 2)) * 1e4) / 1e4, { degree: W, direction: A } = this.calculateUVDirection(M, b, z, p), o = this.convertMs2Kts(c);
|
|
192
192
|
return {
|
|
193
193
|
speed: c,
|
|
194
194
|
kts: o,
|
|
195
195
|
degree: W,
|
|
196
|
-
direction:
|
|
196
|
+
direction: A,
|
|
197
197
|
eastward: Math.round(M * 1e4) / 1e4,
|
|
198
|
-
northward: Math.round(
|
|
198
|
+
northward: Math.round(b * 1e4) / 1e4
|
|
199
199
|
};
|
|
200
200
|
}
|
|
201
201
|
static convertMs2Kts(M) {
|
|
@@ -208,9 +208,9 @@ class Q0 {
|
|
|
208
208
|
* @param reverse 反转, 如计算洋流方向时,风来流去
|
|
209
209
|
* @param options
|
|
210
210
|
*/
|
|
211
|
-
static calculateUVDirection(M,
|
|
212
|
-
let c = Math.atan2(M,
|
|
213
|
-
|
|
211
|
+
static calculateUVDirection(M, b, z = !1, p = {}) {
|
|
212
|
+
let c = Math.atan2(M, b) + Math.PI;
|
|
213
|
+
z && (c = Math.atan2(M, b));
|
|
214
214
|
const W = this.convert2Direction(c);
|
|
215
215
|
return c = Math.round(c / (2 * Math.PI) * 360 * 1e4) / 1e4, {
|
|
216
216
|
angle: c,
|
|
@@ -224,13 +224,13 @@ class Q0 {
|
|
|
224
224
|
* @return {string}
|
|
225
225
|
*/
|
|
226
226
|
static convert2Direction(M) {
|
|
227
|
-
let
|
|
227
|
+
let b = "N/A";
|
|
228
228
|
if (!isNaN(M)) {
|
|
229
229
|
M < 0 && (M += 2 * Math.PI);
|
|
230
|
-
const
|
|
231
|
-
M <
|
|
230
|
+
const z = Math.PI / 16;
|
|
231
|
+
M < z ? b = "N" : M >= z && M < 3 * z ? b = "NNE" : M >= 3 * z && M < 5 * z ? b = "NE" : M >= 5 * z && M < 7 * z ? b = "ENE" : M >= 7 * z && M < 9 * z ? b = "E" : M >= 9 * z && M < 11 * z ? b = "ESE" : M >= 11 * z && M < 13 * z ? b = "SE" : M >= 13 * z && M < 15 * z ? b = "SSE" : M >= 15 * z && M < 17 * z ? b = "S" : M >= 17 * z && M < 19 * z ? b = "SSW" : M >= 19 * z && M < 21 * z ? b = "SW" : M >= 21 * z && M < 23 * z ? b = "WSW" : M >= 23 * z && M < 25 * z ? b = "W" : M >= 25 * z && M < 27 * z ? b = "WNW" : M >= 27 * z && M < 29 * z ? b = "NW" : M >= 29 * z && M < 31 * z ? b = "NNW" : M >= 31 * z && M < 32 * z && (b = "N");
|
|
232
232
|
}
|
|
233
|
-
return
|
|
233
|
+
return b;
|
|
234
234
|
}
|
|
235
235
|
/**
|
|
236
236
|
* 计算风力蒲福等级
|
|
@@ -238,8 +238,8 @@ class Q0 {
|
|
|
238
238
|
* @returns {number}
|
|
239
239
|
*/
|
|
240
240
|
static calculateBeaufortWindForceScale(M) {
|
|
241
|
-
let
|
|
242
|
-
return isNaN(M) || (M = Math.round(M * 10) / 10, M <= 0.2 ?
|
|
241
|
+
let b = 0;
|
|
242
|
+
return isNaN(M) || (M = Math.round(M * 10) / 10, M <= 0.2 ? b = 0 : M <= 1.5 ? b = 1 : M <= 3.3 ? b = 2 : M <= 5.4 ? b = 3 : M <= 7.9 ? b = 4 : M <= 10.7 ? b = 5 : M <= 13.8 ? b = 6 : M <= 17.1 ? b = 7 : M <= 20.7 ? b = 8 : M <= 22.4 ? b = 9 : M <= 28.4 ? b = 10 : M <= 32.6 ? b = 11 : M > 32.6 && (b = 12)), b;
|
|
243
243
|
}
|
|
244
244
|
/**
|
|
245
245
|
* 计算海浪等级
|
|
@@ -247,317 +247,317 @@ class Q0 {
|
|
|
247
247
|
* @param degree 度
|
|
248
248
|
* @param period 周期 s
|
|
249
249
|
*/
|
|
250
|
-
static calculateDouglasScale(M,
|
|
250
|
+
static calculateDouglasScale(M, b, z) {
|
|
251
251
|
let p = "Calm";
|
|
252
|
-
const c = this.convert2Direction(
|
|
252
|
+
const c = this.convert2Direction(b / 360 * 2 * Math.PI);
|
|
253
253
|
return isNaN(M) || M <= 0.1 ? p = "Calm" : M <= 0.5 ? p = "Smooth" : M <= 1.25 ? p = "Slight" : M <= 2.5 ? p = "Moderate" : M <= 4 ? p = "Rough" : M <= 6 ? p = "VeryRough" : M <= 9 ? p = "High" : M <= 14 ? p = "VeryHigh" : p = "Precipitous", {
|
|
254
|
-
degree: Math.round(
|
|
254
|
+
degree: Math.round(b * 100) / 100,
|
|
255
255
|
scale: p,
|
|
256
256
|
direction: c,
|
|
257
257
|
height: Math.round(M * 1e3) / 1e3,
|
|
258
|
-
period: Math.round(
|
|
258
|
+
period: Math.round(z * 100) / 100
|
|
259
259
|
};
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
|
-
var
|
|
263
|
-
function
|
|
264
|
-
return
|
|
262
|
+
var t0 = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
263
|
+
function u0(e) {
|
|
264
|
+
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
265
265
|
}
|
|
266
|
-
var
|
|
267
|
-
(function(
|
|
268
|
-
function M(
|
|
266
|
+
var d0 = { exports: {} };
|
|
267
|
+
(function(e) {
|
|
268
|
+
function M(b, z) {
|
|
269
269
|
var p = "XIXHXHXGXGXQXQXPXPXOXOXN##U6U6UW#$U%U%U%U%U%XFXEXEXRXRXVXVXWXWXXXXXYXYXZXZY#Y#Y$Y$Y%Y%XSXSXTXTXUXIXHXHXGXGXQXQVAVA#%#&V'#'U6#(#)U%U%U%U%U%#*U%XEXEVLVLVLVLYGYGYGYG#+W=W=W=W=W=W=Y$X+X+X+X+X+XTXUVPUQ#,T*T*#-VAVA#.#/#0#1#2U6U6UWU%U%U%U%U%#3VLVLXEYH#4#5#6YGYGYG#7X.#8W=W=W=#9X,X,#:#;#<#=#>VPVP#?#@#AT*T*#B#C#D#E#F#GV'#H#I#JUWU%U%U%U%X6X6#K#LYH#M#N#O#PYG#Q#R#SX.#T#UW=W=#V#WX,#X#Y#Z$#$$$%$&T)$'$(T*T*$)$*$+TW$,$-$.$/$0$1$2$3U%U%XJXJXF$4$5$6$7$8$9$:YG$;$<$=$>$?$@$A$BW3$C$D$E$F$G$HW8$IT)T)T)XHXGXGXQV=$J$K$L$M$N$O$P$Q$R$SV2XKXJXJXFY4$T$U$V$W$X$Y$Z%#%$%%VN%&%'%(%)%*%+%,%-%.%/%0W8XTT)XIXHXHXGXGXQXQU>%1%2%3TL%4%5%6%7U-XKXKX0X0XF%8%9%:%;%<%=%>%?%@%A%B%C%DX(%E%F%GWU%H%I%J%KXSXTXTXUXIXHXHXGXGXQXQU>%L%M%NTL%OUPXMX1XLXKXKXJX0X5%P%QS0%R%S%T%U%V%W%X%Y%Z&#WUWUWUWUWU&$&%X%XSXSXTXTXU&&ZDZDXGXGXQXQXP&'&(&)&*&+&,UOXLXLXKXKXJXJ&-&.&/S0&0T&&1&2WQ&3&4&5&6&7&8&9&:&;&<&=X%X%XSX%XTXTXUXIZDZDZDXGXQXQXPUI&>&?&@&A&B&C&DXLXKXKXJX3&E&F&G&H&I&J&K&L&M&N&OWEW<W<&P&Q&R&S&T&UY%X%ZUXSXTZYXUXIXHXHXGXGXQXQXPXPXOXO&V&W&X&Y&Z'#XKXKXJX3'$'%'&'''(')'*'+','-VMXXW<'.XZ'/'0'1'2WDZPZ9'3'4ZH'5XUXIXHZEZEXGXQXQXPXPXOXOZ@'6'7'8'9':';XKXJXJXF'<'='>'?'@'A'B'C'DXXXXZ1W'XZ'E'F'G'H'I'JW5Z9'K'L'MZWZ<Z<XHZEXGXQXQXPXPXOXOZ@'N'O'PUB'Q'R'S'TXJXFXFXESQ'U'V'W'X'YXWZ0XX'ZXYXZXZW4(#($(%W5(&ZS('ZB((()(*(+ZTZE(,(-XQXPXPXOXOXNU=U=(.(/(0(1(2(3XJXFX8XEXESN(4(5(6(7(8Z2XXZ+XYXZZ-Y#(9(:(;(<(=(>(?ZB(@(A(BZLZT(CZV(DXQXPXPXOXOXNXNU=(E(F(G(H(IXJXJXFXFX8XE(J(K(L(M(NZ*(OZ2XYXYXZXZY#Y#XCXC(P(QX;X;ZN(RZ>(SXHXHZVZVZA(TZQXPZ:XOXNXNV,(U(V(WV.V.XJXJXFXFXEXET((X(Y(ZZ*Z*XXXXXYXYXZXZY#Y#XCXC)#)$)%)&XT)'XUZ6XHXHXGXGXQXQXPXPXOXOXNXNV,)()))*V.XKXJXJXFX8XEXEXRSE)+SEXWXWXXXXXYXYXZXZY#Y#XC),)-).)/XDXAZ6Z6Z8XHXHXGXGXQXQXPXPXOXOXNXNV,)0)1T.XKXKXJXJXFX8XEXEXRXRXVXVXWXWXXXXXYZ/XZXZY#Y#Y$Y$Y%)2)3XDXTZ6Z6XIXHXHXGXGXQXQXPXPXOXOXNXN)4)5)6X9XKXKXJXJXFXFXEXEXRXRXVSESEZ/Z/XXZ/XYXZXZY#Y#Y$Y$Y%Y%XSXSXTZ6Z6XIXHXHXGXGXQXQXPXPXOXOXNXNV&)7)8X9XKX7X7X7XFXFXEXEXRXRXVXVXWXWXXXXXYXYXZXZY#Y#Y$Y$Y%Y%XSXSVEZ6XUXIXHXHXGXGXQXQXPXPXOXOXNXNVHVH)9):T9T9XJXJXFXFXEXEXRXRVIVIVIVI);VFVFVC)<VKVBVBVBVDVDVDVDVD)=VGXUXIXHXHXGXGXQXQXPXPXOXOXNXNVHVHT9T9T9T9)>VH)?Y&)@VJVJVJ)AVIVIVI)BVFVF)C)DVK)E)F)G)H)I)J)K)L)MVGVGVGVGVGVGXGXQXQXPXPXOXOXNXNVHVHT9T9T9T9)NVH)OY&)PVJVJVJ)QVIVIVI)RVFVF)S)TVKVKVK)UXCXCXCXCXC)VVGVGVGVGVGVGVGVGVGVGVGVGVGVGVG)W)X)Y)Z*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?VGVGXNXNV'*?XLXLUWU%*>TF*?TFTFV'TFV'V'*>V'*?U6*?V8V8*?U%V8*@U%U%U%*@XYW=YGXYXHT*UQT*XQXQ*>*?VAVA*?*@*@TF*ATFTF*ATFTF*AV'TFTFV'*A*B*C*CTRV/XFVLVLYH*CYHYH*C*DXVXV*DYGYGX.YG*D*DW=X.*EW=*E*F*GX,X+X,*GX+X+X+*G*G*HWWWW*HWWWWWWXTXTWW*HVPVPVPUQ*GUQUQUQUQT*UQT**FV>*GV>*GVAV>*HVAVA*HVAVA*HVAVA*H*IVAVATFV'VAV'V'*HV'*IU6U6U6*IU6U6*IU6X6XFXFX4XEXEX4Y@YH*GYH*HYUYUYU*H*HY7Y7*I*IYGYGYGYGYG*IYGYGYG*I*J*J*KX.X.X.X.*K*L*LW=*MW=*MX,*N*OX,X,*OX,X,*OX,*P*P*QW;*R*RWW*SWB*S*TWBWB*T*UWB*VVPVPW8*VVPVP*VVPUQUQT)UQ*UT*UQT**U*VXQV0*VV=*WV=*W*XV=*Y*YV)*ZV)V)V?*ZV?V?*ZV?V?V'*ZV;+#U6+#U6V;V;+#V;V;+#U&+$U&XLXLU&V2Y@Y@XF+#Y@Y@+#Y@XEYHY@+#+#+$+%+&YU+&+'+(+(+)+*++YGYG++YG+++,+-+.+.X.+/X.X.X.+/+0X.+0+1+2+2+3+4+5+5+6+7+8W=W=W=+8+8+9W3W3W3+9+:W%X,X,+:+;X,+;X,X+X+X+X++;X+WBWRXSWB+:XSW8W8W8W8T)V=+9+:+;+;+<+=+>+>V)TTTTV)V?+>+?V?V?TL+?V;V;+?+@+@V;V;V;V;V;V;+@V;+@+A+B+BV2+CV2+C+DYIYI+D+EYI+F+F+G+H+I+I+J+K+L+L+M+N+O+O+P+Q+R+R+S+T+U+U+V+W+X+X+Y+ZVR+Z,#,$,%VN,%VNVN,%,&,'X(,',(,)W2X',),*X',*,+X'X',+,,W&,-,-,.WUWU,.,/,0,1X+,1X+,2WRXSWRX)WW,1,2WW,2,3U>,4,4TTTTTTTT,4TTTL,4,5,6,7,7,8UPUP,8UPUPUP,8U-XLXLXF,8XFY>,8,9,:YB,:,;YBYB,;,<YMYM,<,=YM,>,>,?,@,A,A,BY9Y9,B,CY9,D,D,E,F,G,G,HVS,I,I,J,K,L,L,M,N,O,O,P,QX(X(,QWUWU,Q,RWUWU,R,SWUWUWU,SWU,T,TX+,UY%X+X%X%X%,TX)XSXSU>,T,U,V,VTT,W,X,XTL,YTLTL,YTL,ZXF,ZXFS:,Z-#S:-$-$-%-&-'YMY*T&T&Y*-&-'S9-'-(S9-)-)-*-+-,-,X#--X#---.X#X#-.-/-0-1-1-2-3-4-4-5-6-7WUWTWUWT-6X%X%X%ZJZDXIZDV:-5XPUF-5-6UF-7-7-8-9-:TLTL-:UHTL-:UH-;-;UO-<UOXFX2XFSA-;-<-=SZS0S0-=->->T&-?-@-@S9-AS9S9-AS9-B-B-CWQ-DX#-D-E-F-FW9-GW9-G-H-IW<W<-IW<W<-I-JW<-K-K-L-M-N-NWU-O-PWUWU-PWUWUWU-P-QWUX%-QX%UI-QUIXO-Q-RUIUIUIUHUI-R-RU.-SV7-S-T-U-V-VV--W-XV<T+-X-YXF-YX3-Z-ZSZ.#SZ.#S2.$S2.$.%S2SY.%SYSYSYSX.%SXSX.%SH.&SH.&SHSH.'.'WQ.(.)WQWQ.)VM.)WE.*WEW<.*W<XZ.*X-X-X-.*.+.,.-.-WU..././WXWU.0.0Y$WDY$XN.0XNXN.0UAXNTNTDTDUV.0TD.0.1TITI.1TI.2T?XLU,XLXF.1XFS5.1.2.3.4.4.5.6.7.7.8.9SK.9.:SK.;.;SX.<.=SHSH.=.>SH.>.?S/.?.@S/.A.A.BSUSUW<W<W<.BW<.BW<.C.C.D.E.F.FW0W0W0W0WD.FWDZCXSZ9Z9XSXSZ9ZRZHZH.DZHTNXNZ@XN.CTD.DTDTD.DTD.ETI.E.F.G.G.H.I.J.JXKT@T@SB.JXFXFS-.JXEXE.JSKXET%.JS@.K.L.L.M.NSJ.N.O.P.QSF.Q.R.SS/.SSWSU.SSUSUXWW<.SXZW4.S.TW4.UW4W4W4.U.U.V.WWCWD.WWC.XY%ZP.X.YZ9ZRXSZRZRZFXTXTZHZHXTZWZ@U=XNU=.U.V.WU=.W.X.Y.Z.ZV+/#V+T@/#T@/$U#U#U#/$XJURU#URSL/#SL/$/$/%/&/'/'/(SO/)/)/*S>S>/*/+/,XWXYZ1Z+Z+W4/+W4/,/,WC/-WCWCW5WC/-W5/-W5/.ZSZ7ZS/.ZKZWXTXTZWZWZ?Z?Z?Z=ZZ/,/,ZT/-ZTZEXGZVZVZIZIZVZV/+/,U=/-/-/.U</////0TPTP/0/1/2/3/3/4T=/5/5XJT=XJSN/5SNSNSO/5/6/7/7S>/8/9S>Z.SR/9Z0Z0/9Z*/9W4Y#Y#/9WCY$Y$WC/9XCXC/9/:/;X>/;/<X>X;/<ZSX;XSZS/<ZSZSZBXT/<ZBXUZ?XUZ>Z>ZX/;ZXZVZV/;ZVZVZVZV/;U=/;U=/<U<U</</=/=/>/?/@/@V./AV.V./AV.V.XR/AXRT(/ASNT(/B/B/CSC/D/D/E/FSRSRZ*XWZ*XXZ2Z4Z2/DX>/EX>X>X;/EX;Z;Z;ZN/EZXZXZ6XIZAZQXQXQXMV,V,/C/C/D/ET0/E/F/G/HT(/H/I/J/J/KSE/L/LSR/MXV/MX>/NX:X>X;X:/NX;X;/N/OX;XS/OXSZNZNZMXTV,/NV,/O/O/P/Q/R/R/S/T/USE/USESEXC/UXCXC/UX:Y%X:X:/UX:/VXDXD/V/W/W/X/YT/T5/Y/ZT5Y%/ZY%Y%/Z0#X@X@XMV,XMV&/Z0#0$0%0%XLT4X9V&0%XMV&T90%XLXLV&V&T9T90$T9T9T9XXXX0$VFXZXZVCVKXTXT0#VGXJXJ0#VHXF0#VH0$0$SE0%SE0%VI0&VI0&VF0'VF0'VC0(VCVCVKVCVK0'0(VKVK0(0)VKVK0)0*0+XC0+0,XCXC0,0-XCXC0-0.XCXC0.0/XCXC0/00XCXC00VG01VG01VH02VHVH02VH0303SE04SE04VI05VI05VF06VF06VC07VCVCVKVCVK06XC07XC07VG08VG08VHVGVGVHVHVGVGT9T9VGVGT9T9VGVGT9T9VGVGT9T9VGVG03VHVGVGVHVHVGVGVH02VGVGY&Y&VGVG01SEVGVGVJVJVGVGVJVJVGVGVJVJVGVG0.VIVGVGVIVIVGVGVIVIVGVGVIVIVGVG0+VFVGVGVFVFVGVGVFVFVGVG0)VCVGVGVCVKVGVGVKVKVGVGVKVKVGVGVKVKVGVG0%XCVGVGXCXCVGVGXCXCVGVGXCXCVGVGXCXCVGVGXCXCVGVG/XVGVGVGXNXNV'U6XOXOVATFVATFVATFV'U6V'U6V'U6V'U6U6U6U6V8UWUWU%U%V8U%V8U%U%U%U%TRT*V>T*V>V>VAV>VAVAVATFTFVAVATFTFVATFVATFVATFTFTFV'V'TFTFV'V'TFTFV'U6V'U6V'V'TFV'V'U6V'U6TRTRU%TRYHYHYUYUYHYH/BY7YHYHY7YG/AYGYGYGYGX./AX.X.W=X.X.X.W=X.X.W=X,W=X,W=W=W=X,W=X,X,X,X,X+X,X+X+X+X+WWX+X+X+WWX+X+WWWWX+XSWWWWWWVPVPVPVPVPVPUQT*V>T*V>T*V>T*V>V>VAV>V>V>VAV>V>VAVAV>VATFTFVAVATFTFVAVATFTFVATFV'U6T<T<V'U6V'U6U6U6U6V;U6U6V;V;YHYH/)YUYUYU/)YUYU/)/*/+YUY7/+Y7Y7Y7/+/,YGYG/,YGYGYGYG/,YGYGYGX.YGYGX.X.YGYGX.X./)X.X.X.X.X.X./)X.X./)X.W=W=X.W=X.W=X.W=W=X,W=X,W=W3W3W3X,X,W3X,X,X,X,/$X+X+X,W;X,/#X,W;X+X+W;W;WWWWW;X)W;X)X+X+WWWWX)WWX)WBX+X+WWWWWWWBWWWWWBWBWWVPWBWBVPVPWBW8WBW8W8W8W8VPW8W8VPVPW8VPUQT*XHXHT*V@XQXQV=U8U8V0.LV=V0V=V0V0V=V=TZTZV=V=TZTZTSTSV=TSV=V=TWV)TWV)TWV)TW.GV).GV).HV'V'V?V'V'U6V'U6V;U6V;V;V;V;U6V;V;U6V;V;UWV;V;V;V;V;U&U&Y4.AY4Y4.AY@.B.CXEXEY'.CYH.C.D.E.EYU.FYU.F.GY,Y,.G.HY,.I.I.JYU.K.K.LZ&Z&.L.MZ&Z&.MYV.N.O.O.P.QYG.Q.R.S.T.T.UYEYE.UYG.V.WYGY=YG.W.W.X.Y.Z.Z/#/$/%YG/%/&/'/'X./(/)/)X./*X.X.X./*WOX.X.WOVNX.X.WIWI/(/)VNVNWIWIVNVN/(X&/)/*X&X&/*X&/*WHVN/+WHWHVY/+X&X&X&/+X&W=X&W=/*/+/,/-WG/-/.//W=//W=W=W=W=//W3W=W=W3W3W3X,W%W%W3W3W3W%W%X,W%/,X,X,/,X,X,X+X+X+X+WRX+WRWBWBW8W8V=V=/)V=V=U>XPU>/(U>U>U>V=/(/)/*TWTW/*/+U>U>U>/+TTTTU>TTTWV)TWV)TT/)TTTTTLTL/)TL/)TLTL/*/*TU/+/,V;V;/,/-V;U6V;V;V;/,/-/.V;TBV;TB/-UKUK/.U-U-U-/.TB/.V2V2V2V2U$UJ/-Y@Y@/.Y@Y@/./////0YI/1/1/2/3/4YI/4YI/5Y,Y,/5Y,Y,/5/6/7/7/8/9/:/:/;/</=/=Z&/>/?Z&Z&/?/@/@/A/B/C/C/D/E/F/F/G/HY</H/IY<Y</I/JY/Y//J/KY//L/L/MY<Y</MYG/N/OY<Y<Y</O/O/P/Q/RYGYG/R/S/S/T/UZ%/U/VYGYG/V/WYGYG/WYQZ%/X/X/YWJWJ/Y/ZYG0#VTVTVT0#0#X.WJVR0#0$VRVRVTVR0$0%X.WOVRWOWOVNWOWOVRVRWPWPVNVNWPWPVY/YVNVNVYVYVNVNVYW=VYVYVNVN/WX(W=W=W2W2W=W=W2W2W2W2X(W2W3W3X'X'W2X'X'X'W3W3/RX'/RW%W%W%W%W%W&W&W%W%/Q/RW&WUWUWU/QWUWUWUWUWUWU/QX,X,/QX,/QX+X+X+WU/QWUWU/QWU/R/SX+WRX+WRX+WRX+/RWWW8WWWWX)WWX)X)U>/PU>U>TETE/P/QU>/QU>TT/QTT/RTT/RTLTLTLTL/RTL/STUTU/S/TTL/TTL/U/UUP/VUPV;/V/W/X/X/YUPUP/YUPUPUP/YU-XLXLYBYBYB/YYBYB/YYBYB/YYB/Z/ZYB0#YBYIYI0#0$YI0$YIYI0$YM0%0&0&0'YMYM0'0(0)0*0*0+0,0-0-0.Y*Y*0.0/000101020304Y*04Y*05Y9Y905Y9XVYRY9Y9YR04Y9Y9YG04Y905YGYG0506Y906Y907YGYG0708VQVQVWVQ0708090:VWVW0:XWVQVQVSVQWSWSWS09VSVS090:WSWP0:WSWPWPWSVNVS09VS0:WS0:0;0<0<VN0=0>VNVN0>0?0?0@0A0B0B0CW,W,VNVN0C0DVNX(X(X(0CX(X(X(X(W2WUWUX'X'WUWUX'X'WUX'X'X'X'0@X'WU0@WUWUWUWU0@0@0AWM0BWU0B0C0DWMWM0DWTX%0DX%X%0D0E0F0GU>0GXPV:0GUYV:U/0GTT0H0IUY0I0J0KTTTTUU0KTT0KTTTLTT0KTLTL0KUP0LUP0LUP0MUPXFY>XFS:0L0MS:S:YB0M0N0OS:0OS0S00OT'0PT'YM0PT'YC0PT'S0T&0PT&T&T&0P0QY*XVT&T&T&S9Y9Y9XV0P0P0Q0R0S0S0T0UVO0U0VW(0W0W0XVUVUVOVUWQ0XVUVUWQVU0WX#0XX#0X0YVU0Z0ZX#X#X#X#0ZX#X#0ZVS1#1$1$1%W7W7W7W71%W7W7W7W71%1%1&W71'1'1(1)1*1*1+W9W9W91+W91,X(X(W9W<X(WUWUWU1*W<W<W<WUWUW<WUWTWT1)1*V:1*UFUFU/U/1*U/TM1*TM1+UFULUF1+1+UE1,1-1-TL1.1/ULUL1/UI1/1011UL11XNULXN11UPXNUPXNUPU.U.UPUPUP10UP1011UOX2S:1112S:S:SA12SASASASZSZS0SZS2S0S0S2S0S0T&S0T&S0T&S0S0T&T&SYT&T&1,T&S9T&S9T&S91+1,1-WQS91-S9S91-1.WQWQ1.X#1/X#1/10WQWQX#X#10X#1011W+1212X#WEWE12W9X#13X#W9WEXXW9W9W9121213W<W<W913W<W<13W:W<1414WU1516WUWU16171718W<19WUWU19W<W<WU19X-191:1;W<1;X-X-X-WUWUX-WU1:WU1;WUWUWUWU1;WUWU1;WUWUWU1;1<WU1<WU1=1=1>WXX%UF1>XOUI1>UIUIUIUI1>UIUIUI1>UIU*UH1>1?TH1?TAU*V7U.U.TKTKU.UOU.U.XMXMV7TDU71<U7XMUOU'U.UZUZ1;XMXMV-1;XMXMV%1;XLTI1;T,UN1<1<SASASZXFSZS=1<SASZSZSZSZSZS=SZSZS2SZS2SZS2SZS2S0S0S2S2S0S0S017S0SYSYSYSXT&SXSXT&SHSXSHSXSHSXSH13SHSHSHSHSHSH1313WQSHWQ13WQS1S1WQ1314VMWQWQVMVMWQWQWQWEWEWEVMWEW<11W<XZW)11XZX-X-111213X*VXX*X*12VX13VX1314VX15VX15VX1616W0X*17WUWUW0WU16WUY$Y$Y$WDWUWD15WDWDWD15U*XNXN1516TYUAUVTDUVTDXMXM1516TD16TD17XL17TIU(TI17TITIS=17S=18S=18S5S<S2S2S218S<S<18SBS<1819S<S2S2S21919T#T#T#191:S-S-T#1:1;S.1;SYT#SY1;SY1<SK1<T$1=1>SYSYSK1>SYSXSK1>SK1>1?S@SXSX1?SX1?SXSX1@SXSXS3S3SHSHS3SFSH1>SFSFSH1>SHS/SHSFSFSF1=1>S/S/1>VM1?1@S/SUS/S/VMVMVMSUVMVMSUSU1=W'1>W'W<XZW<X-XZX-W<VXX-VXX-1<1<1=1>WK1>VXVXVXWKWKVXW0WK1=WK1>WDWDW0Y$ZHZGZHZGUVUVTDXMXMTDU+U+TD1:TDTDTDTDTDUBTIU,TITCTITIUBUBTCTCUBTCU,16U,UXUXUXUXTJU,U,TCV+UXTJV+T@XKXK13XKSV13SVSV13S.14S.1415S.XESK1516S@SQS@SL16S@S@SLS7S3S3S315S3S3SJS3S@S7S714S3S314SOSFSFSO1414SOSOSOSOSOSO14S/S/SFS/13SG14SGSGSW14SWS/S/S/SUS/SUSUSUW<W4W4W4VX11W4W>11W>W>W>11W>1213W4W?13WLY$W?1314W?WD14W?W?WCWLWCWD13WCWCWCWCWCW5W5ZPW5W5ZPY%W5W5U+U+1011U+U+11U=U=11U=U=TDTDU=U=TDUBTDUBU=U=U=TXTXUBTXUBUBV+UBUBUBV+UBV+T@U#T@U#1*U#1+U#U#U#1+U#SL1+S7S71+1,1-1.S71.S7SJSJSJSJSO1-SJSNSJ1-SOSJSOSJSOSOSOSO1,SO1-SO1-SOSO1-SG1.S>1.SWS>1/SWSW1/SWSUSUSWXW1.1/S>S>1/WLWLWLW4WLW4W4WLWLWL1.WLWCW4W4WCW5WCW5W5Y%W5ZSW5ZSW5ZSZ7Z7Z7ZBZZXIZZZ5Z=XHZOXHZOXHZ5ZO1&V*U=U=V*TXV*1&U=U<U=U<UB1%U<V$V$UBV$TPV$1$U<U<UBV+TPTPV+V+TPTPT@T@TPT-T-U#T-U#TPT-TPV.T-0W0XT=U#U#T=T=0W0X0Y0ZT=0ZT=T=0Z1#U@U@SNSNSN1#SOSOSOSPSNSPSPSP0Y0ZSPSP0Z1#SPSPSP1#SP1$1$SR1%SRZ.Z.XWZ3Z3Z*Z3Z*W4W4Z,Y#W40ZY$Y$WCW*WCW*W5W5Y%X>W5Y%X>Y%Y%X>XCX>Y%W5X>Y%W5ZSY%X;ZSZSX;XSZBZBZSXSZBZBZ;Z;Z>Z>Z>ZXZTXGXGZVZVZVZVZAU=U<0NU<V,0NV,0OU<U<U<0OU<T;0OT;TPTPU<TGTPTPTGTGT;0MT;TGTGTG0MTG0MV.V.V.0MV.0NV.0NT=0OT=SNSNT(T(SNSN0NT(T(SCT(SCSPSPSC0MSP0M0NSDSDSD0N0OSDSRSDSD0NSRSRSRSD0N0OSRXCX>XCX>XCX>XCX>X>0MX>X>Z;XTZNZNV,T/0L0MT10MT50N0NT;T0T00N0O0P0QT;T;0Q0R0R0S0TV.T0T;T00T0T0U0VV.T(SCT(SCT(T(T(SET(SESESESCSCSC0S0SSESESESESE0S0TSESR0TSR0TSESESEXCX>XCX>XCX:XCX:X:X;X:XDX;X;XDXDX;X;XD0PX;X;0P0Q0QT60R0S0ST30T0UT2T0T70UT0T0T00UT70UT5T50U0V0WT.T00W0X0Y0YV.UM0Z0Z1#T.T.UMUMT.XL0ZSESESEXCXCXCX?0YX:X?Y%X:XDX:0YX:0YX:0ZXDXDXB0ZXDXD0ZXDV,V,V,0Z0ZT5T5T5V,0ZV,V,T.T.0ZT.T/0ZT/T/X:0ZY%Y%XBXBX=0ZXBXBX@X@V,0YV,T40Y0ZT4T4V&T4V&V&T4T40YT40YT/T4T4V&T9V&V&XLX9T9XLT9T9V&T9VIVFVIVFVDVGVDVGXJXJT9VHXFXFVHY&VHY&VHY&Y&SEY&SEY&SEY&SEVJVIVJVIVJVIVJVIVIVFVIVFVIVFVIVFVFVCVFVCVFVCVFVCVBVBVKVKVBVBVKVKVBVBVKVKVBVBVKVKVBVBVKXCVBVBXCXCVKXCVKXCVDVDXCXCVDVDXCXCVDVDXCXCVDVDXCXCVDVDXCXCVDVDXCXCVDVDXCXCVDVDXCXCVDVDXCXCVDVDXCXCVDVGXCVGXCVGXCVGT9VHT9VHT9VHT9VHVHY&VHY&VHY&VHY&Y&SEY&SEY&SEY&SEVJVIVJVIVJVIVJVIVIVFVIVFVIVFVIVFVFVCVFVCVFVCVFVCVKXCVKXCVKXCVKXCXCVGXCVGXCVGXCVGXMVHVGVHT9VHT9VHVHY&VHY&Y&SEY&SEVJVIVJVIVIVFVIVFVFVCVFVCVKXCVKXCXCVGXCVGYHYH/U/VYHYH/VYGYGX.YGYGYHYHYH/UYH/UYHYU/UY7Y7Y7XRY7/UYDY7Y7/UY7YU/UY7Y7Y7Y7/U/VY7/VYGYGYGYG/VYGYGYG/VY=YGX.X.X.X.X./U/VX.X.X&X&X,X,/UW3X,W;X,X,V=V=U8V=TWV)TWV)V)V?V)V?V)/QV)V)Y4Y4Y4/QY@Y@/QY@/Q/RY4Y4Y8/RY@Y@Y'Y,Y'/RYHYHYH/RYHY3Y3Y3Y3/QY3Y3/QYUYUYUYUYUY3YUY3Y3/P/QY3Y3/Q/RY3/RY3Y3YUYU/R/SY,/SY,/TYUYDYUYUYDY7YVYV/R/SYL/T/TYUY3Z&YUXRZ&Z&XRY;/SY;/SZ$Y;/TY7/TYVYVYLYLYL/TYL/TYLYL/T/UYVYG/UYGYGYG/UYGYL/VZ$Z$/VZ$Z$Z$Z$/V/V/WZ&/X/X/YYEYE/YYEYEYE/YYEYEYEYGYGYEYGYE/XYEYEYGYG/XYG/XY=/YYG/YY=Y=Y=Y=Y=Y=/YY=Y=YGY=Y=YN/XYNYGYGYG/XYGYGYG/XYG/XYGYGYXYXYX/X/X/Y/Z0#0#0$YNYNYN0$YN0%Y=X.0%X.YN0%0&0'X.X.0'X.0'0(0)0*0*X.X.X.X.0*X.WOX.X.VNVNX.WIVN0)0)0*0+X&WIX&WIWHX&X&WHWHX&X&WHX&WHWHWIWHWH0'VN0(0(WHVYVYX&X&X&0(WH0(WHWH0(WG0)WGWH0)VYVYVY0)VYVY0)0*W=W=0*WGVYWGWGW=WGW=W=0)W=W30)W3W3W3X,X,WUWUX,X,WUWUV=V=0'0(0(U>U>U>TWTWV=TWV=V=0'0(V=V=0(TOTWTW0(TWTWTWTW0(U>U>U>0(TLTL0(US0(TLTTTL0(TLTLTLTL0(TLTL0(V;TUTU0(TUTLTL0(TU0)0*TU0*TUTU0*V;TU0+V;V;UP0+V;UPV;UPUP0*UP0+V;V;UKUKUKU-UKU-U-0)U-U-U&V20)V2Y4Y4XEY@Y@Y@YIYIY@0'YI0(Y@Y@YIYIY@Y@Y@0'Y@Y'0'0(YI0(YIYIY'Y'0(0)0)0*0+Y,0+0,YIYI0,Y,0-0.YIYIYI0.0.0/YI00Y,Y,00Y,Y,000102Y,02Y,0303YK04YK04Y,0506Y,Y,06070708YM09090:YMYMY,0:0;0<0<0=Z#Z#YM0=YMYM0=0>0?0@Z&Z&0@Z&YK0@0A0B0B0C0D0EZ&Z&0E0FZ&Z&0F0GZ#0GZ#0H0HY-0I0J0J0K0L0M0MY00N0O0O0PY0Y00P0QY00R0R0S0TY+0TY/0UY/0U0VZ&0W0W0XY<Y<0X0YY<Y<0YYEY<Y<YEYEY<Y<0X0YY/Y/Y<0YY/Y/0Y0ZY/1#1#Y<Y21$1$1%1&1'1'1(1)Y<1)Y<Y<Y<YGYGY<1)Y<1)Y<Y<1)1*Y<Y<Y<1*YRYRY<1*1+1,1,Y<Z(1-1-1.YRYRZ(1.YRYG1.1/Y<Y<YGYG1/YGYG1/101111121314Z%Z%YGZ%Y<Y<131414YGYGYGYG14YG15Z%1516YG16YQ171818YQWJWJYQ18YQWJ18X.WJWJ1819YGYGWJWJY)19Y)Y)YGY)VTVTVQVQX.X.17WJX.X.X.17X.X.17X.1718VQVQ18VQVQVQVYVY18VYX(X(18X(X'18X'X'W3W318W%18W%WU1919WUWUWUW%WUWUWUWU18WUWU18X,WUWUX,X+X+X+WUX+WUWUX+X+WUWUWUWU15WU15X+16X+WRWRX%16U>TETETETETEU>U>TETETTTT13TTTTTTTETTTETETETE12TT12TLTLTLTL12TLTUTLTUTL12TUTU12TUTU121314141516U016171819U019U01:U01:1;UPV;V;V;1;1;V;1<UP1<1=UPUPV;V;1=1>V;1>UPUP1>UPUPUP1>U-XLU-YBYB1>1?YBYB1?1@YIYI1@YI1@1AYBYB1AYB1BYB1BYBYBYB1B1CYBYB1C1DYBYBYI1DYI1E1EYM1FYMYIYIYI1F1FYM1GYMYMYMYM1GZ'Z'YMZ'1F1GZ'Z'YPYP1GYPZ'Z'YMYM1F1GYMYJ1GY+YPY+Y+1GY+1H1H1I1J1KY+1K1LYSYWYWY*Y*1K1LY*Y*1LY/1M1NY/Y/1N1OYTYT1O1PYTYT1PYT1P1Q1R1SY/Y/1SXVYTYT1SY9YTXVY9Y9Y*1RY*Y*Y*Y*Y*1R1RY91SY9YRYGXVXVYGYG1RYGWZWZY9Y9WZWZWZ1QWZ1QWZWZ1QX/1R1SY91SY91T1TYG1UWZYGYG1U1V1VVW1W1XVWVWVW1X1X1YX#X#1Y1ZX#X#1ZXW2#X#2#2$VSVSVSVSX#2$VSVS2$2%WSWS2%WSWSWS2%2&VS2&VSVSWSWYWS2&2&2'VSVSWSWSVSWS2&VN2'VNVNVNVN2'VNVN2'2(2(2)2*W#2*2+W#W#WY2+2,2-2-2.2/2020W,21W,W,W,21W7212223W#W#W#W#X(22W#W#W#W#22W#W#W#W#X(X(X'X'WUWUX'WUWUWUWUWUWU2/WU2/20WM20WMWMWMWMWM2021WU21WUWUWUWU21WM2122WMWM22WT23WTX%X)X%X)U>U>U>2222TTUYUYU>22U>U>UYUY22UYU>U>2223U>U>2324TT24UYTTUY24UYUYUY24UY25UY25UYUYU/25U/U/2526U/U/26TTTMUUTTTLTLTLTLTL25TL2526TL272728TLUPTL28TL29TL29TL2:2:YBYB2;YBYB2;YBYBYBS0S02:2;S:S:2;S02<S0S0S0S:S0S0T'2;T'2;T'2<T'YMYMYCYCT'T'S0T'2:T&T&T&Y*2:Y*2;Y9Y92;2<2<2=WFWFY9Y92=Y9Y92=2>2?2?W(WFVZW(W(2?W(XV2?W62@2@W(2A2B2B2CS9W62CY9W(W(2C2DW(W(W(2DW(2E2E2F2GVU2GVUVUVUWQ2GWQWQ2GX#2H2IVU2I2JX#VU2JVUVUX#X#2JX#2JX#VU2KX#2KX#X#X#2KX#X#2K2LX#2MX#W72MW72MW7W7W7VS2MW7W7W72MW7W7X#2MX#X#W7W7W7W9W72LW7W72LW7W7W7W7W72L2MW,W,2MW9W7W9W9W92LW9W9W9W9W9W9W<W7W7W72K2KW92LW92L2MW92NW92N2O2PW<W<2PW<WT2PWTX%2PX%X%X%V:U/V:V:UFU/UFUFTMUUTMTMTMTMTM2MUFULUFUF2LTLTMUETM2L2M2NUEULULULTLTL2MTLUL2MULULTLTL2MTLULUIULUIULUL2LULUL2LULUL2LULUIUL2LXNUEXN2LUPXNXNUPUOUPUOUPUOUPUOUPU.U.U.X2SASASAS:S:SASASAS0SASZ2FS9T&S9S9VO2F2GVOWQWQWQS9WQS9S9WQWQS9WQVUVUWQWQW@2CWQ2DX#X#WQX#WQWQWQ2CWQ2CWQWQ2CWN2D2EX#X#2EX#WNX#W+W+X#2DW+2EW+2EW+WE2EX#2FXXX#2FX#2GX#W9X#W92FW<W<W<W92FW92G2GW<W<W<W9W<W9W9W<2FW<2GW<2GW<W<W:WUW:W:W:W:W<W<W:W:2EW:2EW:W:2FW<X$2F2GW<W<W<2G2G2H2IW)2IW)W<W)X$X$2IW<W<W<W<2IW<W<W)2IW<W<2IW<W)2IW)2JW<X-W<X-X-WU2IWU2IWUX-X-WUWUWU2IWUWUVXWUWUWUWU2HWUWU2HWUWUWU2HWUWUWXY$WXWUWX2GWXWXY$2GX%UFUFUF2GUFUI2GUIUI2GUIUIUHUHUIU*UHTH2FTHUH2FUHTHUH2FU*TAU7UZU7U7UZV-XMV-V-V%XMXM2CV<V5V52CV1U;2DU)U)TVUDXFSAXF2C2CS=S=S=S0SYSYSYS92BSHSHSHS1SHS1XWWQSHWQSHSHS1S1WQWQVM2?WQ2?VMVMW<W)W<W)W)X-2>X-WUWUX-X*X-X-VXVX2<X*VXVXVXVXX-VXX-2;X-VXX*2;VXVXVXX*VX2;VX2;VXVXWUWUVXVXVXVXY#WU29VXX*VX29W0X*W0WU29WUWUWXWXWXWDUI28XNXNU*V7TYTYV7V72728TI28TITITQU;28TITDTITITITITI27TIUDUDV6V4V#V#26TIS=S=262727S=S5S5S=S2S=S2S2S2S<S2XF25XFSBS<S2S<S-SBS<24SVS2T#S2T#S2S2S2T#S2S2S-S-T#T#21T#S.21S.S.S-S.S-21SYSY21SYSYSYSY2121SKSKSK21T$SMT$S.21S.SMT$SKT$SK20SKSKSKSKS@SK2020S@21SXSK21SKS@SXSX21SX21SX22SXSXSXSXS3SHSHSHSFSHS1SHS/S/2/S/S/2/S1S/S/S1VMS1S1S/2.S/S?VMVM2.XWW<W<2.W'W<W'W'W'VXVX2-Y#VXVXVXWK2,VXWKWKVX2,VXVXX-2,X-VXX*W0WKW0WKW0W0W0TITITD2*U,XLU,UXTJXKTJT@SV2(SVSV2(S.S-S.2(S.XES.2(2)2*2+2+SK2,SKSKSKS@S@SKS@2+2,SQSQSLSLS3S3S32+S7SJS7SJ2*S3SOSOSFSF2*SOSOSOSJSOSOSOSO2)SOSGSO2)2)SGSGSGSG2)2*SWVXVXW>2*VXVXVXW>W>W>2)W>W42)W4W42)W4W4W4WL2)WLWLY$W$W?2)2)W?W?W?W?W?WC2)WDWDWDWCXMU+U=U+U+U+2'U+U+U+2'U=U=U+U=U=T@U#T@2&T-U#T-U#U#U#U#2%SLS7SLS7S72$2%2&S7S7SJ2&SN2&XRSN2&SNSNSNS7SJSJSJ2%SJSJSJSJSJSJSOSO2$SO2%2%2&SO2'SOS8SO2'SGSG2'S>2'S>S8S>2'SW2(2)S>SWS>S>SWSW2(SWS>SWS>S>SWXW2'XWWLWLW4WLWLWC2&WCU=V*U=U=V*V*V*U<UBUBUB2$V$V$V$2$T-T=T-T=2#V.V.V.U#V(2#T=V(V(T=2#2#T=T=T=T=2#T=U@T=2#T=T=2#2$2%2&V(V(2&XJSNSNSN2&SO2&SP2'SPSP2'SOSOS>SPSPS>S>2&S>SPSPSP2&2&2'SR2(S6SRS6SRS6SR2'S6WCWC2'WCU=U=2'2(2(U<V,U<V,U<V,U<U<U<2'U<U<U<2'T;2'TGTGTGTGTG2'TG2'V.V.V.TGV.TG2'2'V.V.V.T=T=V.2'V.T=V.V.2&SNT(T(SPSPSC2&SPSPSPSDSPSDSDSDSC2$SCSCSDSDSC2$SRS6SR2$2$SRSDSRSDSD2$SDX>X;X>X;V,V,V,T6T2T2T6T2T1T5T1T51XT5T5T5T51XT5T5T/T/T/1XT8T01XT0T21XT2T21XT0T/T0T0T0T01X1XT;1YT;1YTGT;TGTGV.V.V.T;T;T;1XT0T0T01XT;T01X1YT0V.V.V.1XV.V.V.SC1XSE1YSC1YSCSESE1YSE1Z1ZSESSSESESESE1ZSESTSESEX;X;XDXDX;X;XDXD1W1XXDXDV,T6V,T6V,T6V,T31VT3T3T3V,T3V,T3V,T3T51UT3T31UT51UT01VT0T0T0T01VT7T0T71VT01V1WT.1WT.T.T.1WT.T.T.1W1X1YUMT01Y1Z2#2#UMUMUM2#V.UM2$2$2%UMV.T.2%T.T.2%UMT.2&SE2&SESEXCXCX?2&2&XDXDXDXB2&XBXBXBXB2&XB2&2'XBXB2'XBXBXBV,2'V,2(2(T5T5T5V,T5V,T/T.T.2'T.T5T5T/T/2&XBXBXBX=XSX@X@V,2%V,T4T/T/T42%T/T/2%2&T4T4V&T4T/T/T4T4YU2$YUYU2$Y72%Y7YHYH2%2&YHYHYHYUYUYUYH2%YUY7Y7Y7YUYDYUYDYDY7YDY7YUY7Y7Y7Y7Y7Y71YY7Y7YGYGY7Y7YGYGYGYGY7YG1VY=Y=Y=1V1WX&X&X&1WX&X&X,X,X,W3V?V?V)V?Y4Y4Y41U1UY@Y@1V1V1WY4Y4Y@Y@Y4Y4Y8Y8Y@Y@1U1V1W1XYH1XYUYUY3YUY3Y3YHYU1WYUY,1WY,Y,1WY3Y,1XY3Y31XY,Y3Y3Y31X1XYUY31YYUYUY,Y,Y3Y3Y,Y3Z&Z&1WZ&1WZ&1X1YXRYVYLYLYVYVYLYLYLYLYL1WYUYUY3YUZ&Y;Z&Z&Z$1UZ$Z$Y;Z$Y;Y;Y7Y7YVYVYLYL1SYLYL1SYLYLYVYGYVYVYGYGYV1RYGYG1RYGYVYVYLYLYLYGYLYLZ$Z$Y;Z$Z$Z$Z$YEZ&1NZ&Z&Z$Z$1NYE1NYEZ&YEZ$1NYEYE1NYEYEYEYLYLZ$YEYEYGYEYEYEYGYE1LYEYGYGYG1KY=Y=Y=Y=Y=YGYGYGYGY=1JY=Y=Y=1JY=Y=Y=1JYGYGYG1JYGYGYX1JYGYX1JYX1J1KYQYN1K1LYGYGYN1LYGYGYGYGYG1LYGYGYG1LYXYX1LYNYXYN1LYNYNYNYN1LYNX.X.X.Y=Y=1KYNYNX.YNYNYNYN1J1KYN1KYN1LX.X.1LX.1LYGYGYGYN1LYG1MYGYGYG1MX.X.1MX.X.1MX.X.X.1MX.WOVN1MVNVNX.X.X.1MX.X.X&X&X.1LX&X&WHWH1LWHVYVYVN1LVYWHVYVYX&X&X&WGX&WHWHWHWGWG1IWGWHWGWHWGWHVYVYVYVY1GVYVYWGWGWGW=W=W=1FW=WGWG1FWGW=1FW=W3W=W=1FW3V=V=V=1FV=V=1F1GV=1GU>U>V=V=U>U>V=V=U>1FV=V=1FU>TWTWTTTTTWTWTTTTU>TEU>1DTT1DTTTT1D1ETLTL1ETLTLTLTL1ETLTLV;1EV;V;1ETU1F1GTUTUUGTU1FUG1G1HTUTUTLTLTU1GTUTU1GV;TUV;V;V;TUTU1FUKUPUKUP1FUPUKUP1FUPUPU-U-U-1FTBTBTBV2Y@Y@Y61E1EY6YI1FY@Y@1FYIYI1FYI1G1G1H1IY.YI1IYIYI1I1JY.Y.1J1KY.Y.Y'Y'1K1L1L1M1NY,1N1O1P1Q1QY.YI1RY.Y.1RY.Y.Y,1R1S1S1TYIYI1TY,1U1V1V1WZ)Z)YI1W1X1Y1YZ)1ZZ)1Z2#2$2%Y,Y,2%2&Y,2&Y,2'Y,Y,Y,2'Y,2'2(2)2)2*2+YKY,YKY,Y,2*YKYKYKYKYKY,YK2)Y,2*Y,2*2+Z)Z)2+2,Z)Z)2,2-2.Z#2.Y,Z#2/Z)Z)Z)2/Z)Z)2/20YM20YMYMZ)20212222YMYMYMY,Y,Y,2222232425Z#25Z#Z#25Z#Z#Z#2526Z#Z#2627YMYM2728292:2:2;Y?Y?2;2<Z'Z'Y?Y?Z'Z'Z&Z&2;2<YKZ&YKYKYKYKYK2;YKYK2;2<2<Z&YKYKZ&Z&2<2=YKYK2=2>YK2>2?Y-2?2@Y-Y-Z&Z&Y-Y-2?2@Y-Y-2@Z&Y-Y-Z#2@Z#Z#Z#2@2A2B2BY-2C2DY02DY0Y02D2EY0Y0Y?2EY?Y?2E2FZ'Z'2F2GZ'Z'Z'Z'2G2HY0Y0Y02HZ'Z'Z'2HZ'2H2I2JY-Y-2J2KY-2K2L2M2M2NY0Y02N2OY0Y0Y0Y/2OY/Y0Y02O2PY0Y02P2Q2QY+2RY+Y02RY/2SY/Y/Y+2SZ&2SZ&Z&2SYEYEYE2SY<Z&2TYEYE2TY<YEYEY<Y<Z&Z&2SY<2SY<Y<Y<YEYEY<YEYYYY2RYYYYY<2R2SY<Y<Y<2SY<Y<Y/Y/Y<2RY2Y2Y2Y2Y/2RY<Y<2R2S2SY<Y22TY2Y2Y22TY22TY<Y<2TY<2U2VY<Y<2VY/YEYEYE2VYEYEY<Y<2U2VY<Y<YGY<Y<Y<YGYGY<Y<Y<2TY<Y<2T2UY<Y<2UY<Y<Y<Y<Y<Y<2UY<Y<2U2VY<2VY<Y<2VZ(Z(Z(Y<Y<Z(Y<Z(Y<Z(Y<Y<Y<2TY<Z(Z(Y<Z(Z(Y<XVXVYGYGY<2RYGYGY<YGY<2QY<YGYGYGYGYQYGYG2PZ%2P2QZ%Z%YQ2QYQYQ2QYQYQYQYQYQZ%2QYQYQZ%Z%Y<2PY<Y<2PYGYGYGY<2P2Q2R2RZ%Z%Z%YG2RYGYGZ%Z%Z%YG2QYGYGYG2QYQYQYQYQYQ2Q2RYQYQ2RYQZ%WJ2RWJYNYNYQYQYNYNYN2Q2Q2RYGY)Y)WJY)Y)Y)VTY)Y)WJ2PWJWJX.X.VRVR2OX.VRX.VTVTVT2OVTVT2O2PVTVT2PVQVYVYVNVNX(X(2OX(2O2PX'X'2PW%W%W%W%W%W&W%2O2PWUWUW%W%2PWUWU2PWUWU2PX,X,X,WUWUWUX+WUWUWUX+2NX+X+X+WRWRX%X%2MTT2NTTTT2NTTTTTTTTTT2NTLTUTLTU2M2NTL2O2OTUU0U0TUTU2O2PTU2PUPUP2PV;UPUPTLTLTLU0TLU0U0U0TL2NTL2OTLU0TL2OU0U0U5U0TL2NTLTL2NU22OTLU0UPU0UPU02NU02OU0UPUPUP2N2OUPUPV;V;V;2O2OV;V;V;V;UPUPUPV;V;V;UPV;2MUPUPV;V;UPUPV;V;UPUP2KUPUPUP2KUPUPUPUPUKUPUKYB2JY>Y>Y>2JY>Y>2J2KY>Y>YBYB2KYBYIYI2KYIYB2KYBYBYIYIYBYBY>2JY>2KY>2KY>YBY>2KY>YBYIYIYBYBYIYIYB2JYIYI2J2KYIYI2K2L2LYM2M2NYI2NYIYIYMYM2NYM2NYMYIXRYIYIYI2N2NYMYIYMYIYMYIXR2MYMYMYMZ'2MZ'Z'YPYP2MYPYPYPZ'2MZ'2MZ'Z'2M2N2O2P2P2Q2R2SY/Y/Y+Y+Y+2RY+Y+YJYJYJ2RYJ2RYW2SYJ2SXRYWYWYWYW2SY+Y+2SY+2S2TYSYS2T2UYWY*2UY*Y*Y*2UY/Y/Y/2U2V2WYTY/Y/YTYTY/2VYTYT2V2WYTYTYSYTYSYTYTYTYTY*YTYT2UYTY/Y/2UY/Y/Y/2UY/2UYTYTYTYT2UYTYT2U2VYTYT2VY92WY9Y*Y*Y*Y9Y*2VY*Y*Y*Y9Y9Y92UY9Y*Y*YGYGYG2UWZWZY9WZYGYGWZWZY92SY92TY92TY9Y92T2U2VX#2VX#X#X#Y9X#Y9X#YGYGWZYGWZWZ2TWZYGYG2TYGYG2TYGVWX/VWX/VWX/X/2SX/VWVWX/VWVWVW2RVW2R2SX#X#2S2TX#X#2TX#X#X#X#VWX#2TVWVW2TVWX#VWX#X#WSWSVSVSWSWS2R2SVSVSX#X#VSVS2RVSVSVS2RVS2RWS2SWSVS2SVSVSWSWSVSWSVS2RVSVSWSWYWS2R2R2SVS2TWSWS2TWSVNVN2TVNWP2TWPVNVNVNVN2TVNVN2TWYWYW#W#W#2SVNW#W#VNVNW#W#W#W#2R2SVNW#W#W#W#2RW#W#2R2S2TWYWYWY2T2U2U2V2WW,WY2W2X2Y2Y2Z3#3$3$3%W#3&3&3'W#W#W,3'WS3(WS3(WSW,W,W,3(W,3(3)3*3+3+3,3-3.3.3/W#W#3/30W#W#VNVNW#W#3/WUWMWMWUWU3/WMWU3/30WMWU30WMWMWMWMWM30303132WTWUWUWU32WUWUWU32WU32WMWM32X+WMX+WMWMWM323233WTWTU>U>U>33U>TTU>UYU>32U>3333UYUYUYU>33XPV:3334V:V:V:34V:V:V:34V:U/TTTT34TT34TTUYUYTTTTUYTTUYTTUY33UYTTUYTTUYUYU/32UYUYU/U/UYTT31U/3132UUUU32TLTLTLTL32TLTLUPUP3233TLUPTLUPTLTLTL3232UPUPUPUPUP32UP32UP33UP33UPTLUPTLUPUPUP32YBYBYBYBYBS:3232YB33S:S:33S:S:S:S0S:33S0S033S033S0S0S0S033S034S0S0S034S034T'T'T'T&34T&Y9Y93435Y*35Y*Y*35Y9Y*XV35Y9Y*Y9WFW-WFWFW-34WF35Y9Y9W-W-Y9Y93435Y935363737W(W(W(W-W-37WF3738393:VZVZ3:3;3;3<3=W/3=W(3>W(3>3?VOVOW(W(VOVOW.3>S93?3?3@W63AY9Y93A3BY9Y9Y9W(Y93AW(W(W(W(W(3AW(3AVUVU3AY9W(W(3A3BVUVU3BVUVUVU3B3CVUVUWQVUWQWQX#X#3BX#3BX#VU3CX#X#3CX#3CX#X#X#VU3C3D3E3EX#3FX#3FX#VU3GVUVUVU3G3GX#3H3IVSX#X#X#3HVSX#X#VSVSVS3HVSVS3HVS3HVSX#VSX#X#X#W7VSVSW7W73F3GW7W7W73GW7W7W7W7X#3GW,3GW7W73GW7W7W7W7W7W73GW7W73G3HW7W93HW9W7W9W9W9W73GW7W7W73G3H3I3IW9W9W9W93IW93J3JW<3KW<W93KW9W9W93K3L3MW93MW93N3NW<W<W<W<W<3NW<WTWTWT3NWTY%X%Y%TMTMULULUU3LUUUUULUEUL3LTM3LTMUL3LULULULUE3LULUEUETLUE3LTLTLUE3LULUL3LUL3L3MUEUEUIULUI3M3MTLUEUETL3MXNUPT&S9T&3MS9S9S93M3MWQWQWQW@3MW@W@W@W@WQ3MWQWQWQ3MWQ3MWQWQVVWN3MWNWNWNWQWNWNWNW+W+X#X#WEX#X#3JW+3KW+W+W+WE3J3KWEWEWEX#3KX#3KXXWEWE3KW7X#3LX#3LX#X#W9W9W9W<W9W9W93KW9W<W<W<3JW<W<W<W<W<3JW:3JW:W<W<W<W:W<W<3I3JW<W<W:3JW:W:W:W:3JW:W<W<3JW<X$X$W<W<W<W<W<3IW)W)3I3J3JW<W)W)3J3K3LW)3L3MW<W)X$X$W<W<W<W<W<X-W)3KW)W)3KW<W)W<W)W)3KW<W)W<W)W)X-WUWUWU3IWUX-X-WUWUVXVXWUWUWU3HWUWU3HWUWUWU3HWUWUWXWXWXWXY$WXX%UFUFT>3FUFUFUIUIUI3EUIUIUH3EUH3FUHUH3FTHTH3FTHTAV%3FV%V5T+T+T+3FV3T,3FT,XFSASA3FSZSZ3FS=S9S9SHSH3EWQVMVMWQWQVMVM3DX-W)X-X-3DVXVXVXVXX-VXX*X*3C3DVX3DVXVXVX3DVXVXVXVXX*VXW0W0X*W03B3CWUWUUI3CUIU*TYV7TYV7V7V7V7UAT:T:3AT:3ATQTITITDTDTD3A3AV#TITIS=S=3AS4S=3A3B3CS=S=S=3CS<S<XFSBSBSBSBSVS-T#S-S-T#3@S.S.3@S.S.S.T#SYT#T#SYSYSKSKSYSKSKSKSMT#SM3=SMT$SMT$SYSKSKSKSK3;SKS@SKS@SKS@3:S@S@S@SKS@SKS@39SXSXSXSXSX39SX39SXSXSXS1S1S/S/S1S1S/S/S1S1S?S?S?S?36SUW<W<W<W'35VXVXVXVXVXWKWKVXWKVXWKX-VXX-VXTITITD3232S-S-S-S-S-S-S.S-S-S-S.S.30S.31SMSMSM31S.31S.S.313233SMT$T$T$33T$33T$XESKSKXRSQS@S@SQS@S331S3S3S3S331S331SOSOSOSOSOSO3131SG32SGSOSO32SGSGSWSWSW3132SGSWW>VXW>W>W>W>W431W431W4W4W>31W432W?W?WLW?W?31W?W?Y$W?W$31W?W?WCWCU+U+U=U+U+U+U+U=U#U#3.U#U#U#U#3.S7S7S73.S73.XRSNSNSJ3.SJ3.SJSJSJ3.SJSNSN3.SJSNSNS7S73.SJSOSGSO3.SO3.3/SISOSOSO3/SISISI3/S8S83/S8SOS>SOS>3.S>SISISI3.3/3030SWSWSWS>30S>S>30SWS>SWSWSW30SW30S>S>S>30WCWCWCUB30V$V$V$V$V$30V.30V.V.V(V(T=30V(V(30U@T=30T=T=30U@T=U@T=U@T=T=V(U#3/V(3/U#V(V(V(V(3/V(V(V(V(U@3.V(U@U@SN3.SNSOSOSO3.SOSP3.SPSP3.SO3/30S>S>SP30SPS6S6S6SPSPSP3/S6S6S63/SR3/SR30S630SRSRW4WCW4WCU=U=U=3/U=V,V,V,V,U<V,V,U<U<3-T5U<U<T5T53,TGTGTGTGTGTG3,TPTP3,V.TGV.3,V.TG3,TGV.V.T=T=T=SNSNT(T(SD3*SCSDSCSDSCSDSDSDSE3)S6S63)SRSD3)SDSDSDSD3)SDT53)T5T5T5T;T53)T/3)T/T/T83)T8T0T/T/T2T/T/T03(3)T0T0T03)T;T;3)T;3)3*T;T;T;3*T;TGT;3*T;T0T03*3+V.3+T0T0T0T0T0V.V.T0V.3*V.SC3*3+SESCSESESESCSCSC3*SESESE3*3*SSSSSSSESESSSSSESE3)ST3)XDXDXDXD3)XDXDT3T6T3T3T53(T53)T3T33)3*3*3+T73,T7T0T7T0T0T0T03+T0T0T5T5T0T03*T.T0T.T5T.T03)T.T.T5T.T5T.T03(3)UMUM3)UMUM3)UM3*UMT03*T03+T0T03+T0T03+T0UM3+UMUMUMV.V.V.3+V.V.UMUMUMV.UMUMV.V.3)V.3)UMT.T.UMUM3)UMUMUMT.T.3(SSSESEXCX:X?X:X:3'X:XDXD3'XBXBX:XB3'XBXDXD3'XBXDXDXBXBXD3&XB3'V,T5V,T5V,T5V,T5T5T5V,T5T5T.T53$3$XBX:XBV,V,V,T/T43#T4T43#T4T4T4T43#T4T4Y7Y73#3$Y7Y73$Y73$Y7Y7Y7YHYH3$YGYHYH3$3%YHYUYUYUY7Y7YGYGYGY=Y=Y=2Z3#X.X&3#3$X&X&3$X.X&X&Y43$3%Y@Y4Y43%Y@Y@Y@3%Y@Y@Y43%Y4Y43%Y4Y4Y'3%Y'Y'3%Y,3&Y,Y'Y'Y'3&3&Y,3'Y,YH3'YUYUYHYH3'YHY3Y3Y,Y,Y3Y3Y,3&Y,3&Y,Y,3&Y,Y,Y,Y3Y3Y,Y,Y33%Y3Y33%YUYUYUY,Z&Y,Z&Y,3$3%3&3&Z&Y,Y,Z&Z&3&Z&YLYL3&3'YLZ$Z$Z$YLYL3&YLYVYV3&3'YV3'YVYG3'YGYGYGZ&Z$Z&Z&Z&YEZ&YEZ&YEZ&Z&Z$Z$YEYEYEZ$YEYEYE2ZYEYE2Z3#YGYGY=YGY=Y=Y=Y=YNYNYNYN2YYN2YYGYXYXYGYGYXYXYG2XYGYGYXYNYX2XYNYN2XYNYG2XYGYG2XYNYGYGYNYN2XYGYGYGYNYNYGYGYG2WYXYNYNYNYN2VYNYNYN2V2WX.Y=Y=YNYNYN2VYNYG2VYNYNYNYNYN2VX.2VX.YNYNX.X.2VX.YNYGYGYGYN2UX.X.2UX.X.X.YGYGYG2U2UX.2VX.2VYGX.2WX.X.2WX.WIWIVNWIX.X.2V2WX.X&X&X&WHWHWHVYVYVYVNVYWHWGWHWHWGWGVYWG2RW=W=W=WGWGVYWG2QW=W3W3W=W32QW3V=2QV=U>2Q2RU>U>2RV=U>U>U>U>2RU>2RV=U>U>V=V=U>U>2QTETETETLTLTTTTUT2PUTUTTLTLUTTLV?2OTLTLTLTUTL2OV;V;2O2PTUTUUGTUTL2OTLTLUG2OTLTL2OUGTLUGTLTLTL2OUGTU2OTLV;V;TU2OV;V;2OV;UKUK2OUKUPUK2OUKUPUKUP2O2OU$U$U$Y6YIY6YIY6Y6Y62NY:Y:YIYIY@2MY@YIY.Y.2MY.2MY.YI2NY.2NY.Y.2NY'2O2PY.Y.2P2Q2Q2RYI2SY'Y'2S2T2T2UY.Y.2U2VY.Y.Y'Y'2V2WY'2WY'2X2X2Y2ZY,2Z3#Y'3$3$Y,3%Y,3%Y,Y,Y,Y'Y'3%3&3&Y,3'Y,3'3(3)3*Y,Y,3*Y,Y.Y.3*3+Y.Y.YIYI3*Y.YI3+Y.YA3+3,Y,Y,YAY,3+3,YIYI3,3-YIYIY,Y,3-Y,3-3.YIYI3.YIYIYIYIYIYI3.YIYIZ)YIYIZ)Z)3-YI3-YI3.3.YI3/YIZ)Z)3/Z)YIZ)YI3/YI3/YI3030YM31YMYIYI3132YMYM32YM3233YIYI33Y,343535Z&36Z&36Z&37Z&Y,Y,3738Y,Y,Y,38Y,3839YK393:YKYKY,Y,Y,YKY,39YKYK39YKY,YK39YKYKYKYI39YI3:3:Y,3;Y,3;3<3=3>3>3?3@Z)3@3AZ)Z)3A3BZ)Z)3BY,3C3DY,Y,Z#Y,3CZ#Z)Z)Y,Y,Y,Z#Z#Z#Z#3B3BYM3CYMZ)Z)YM3CZ)YM3CYM3CYMYMYMZ)Z)3C3D3DYMYMYM3D3EYMYMZ)YM3EYM3E3FY,3GY,Y,Y,3GY,Y,Z#Z#Z#Z#Z#YMZ#Z#YMYMY,3DZ#Z#Y,3D3EZ#YKYKZ#Z#YKZ#Z#Z#YMZ#YMYMZ#Z#YMYMZ#Z#YMYMZ#Z#3@3AYMY?YM3AY?Y?3AY?Z#Z#3AZ#Z#Z#Z#Y?YM3@3A3B3BY?3C3DYKZ&YKYKZ&Z&3CZ&YKYKZ#YKYKYK3BYKYKYK3B3CZ&Z&YKYK3B3CYKYK3CZ&3D3EYKYK3E3FYKYK3FY-YKYKY-Y-YK3EY-Y-Z&Z&Y-Y-3DZ&Y-Y-Z&Z&Y-Y-Z&Z&Y-Y-Z&Z&Y-Y-Z#3AZ#Z#3A3BZ#Y0Z#Z#Z#3B3BY03CY03CY-Y-Y-3CY-3D3EY-Y-3EY-Y03EY0Y03E3FY0Y03F3GY0Y03GZ#Y?Y?3G3HY?3I3IY03JY0Y?Y?Y?Z'3IZ'Z'Z'Z'Z'YPZ'Z'Z'YPYPY0Y03GY0Z'Z'YPZ'Y0Z'Z'Z'Z'Z'3E3FZ'Z'Z'3FY-Y-3FY03FY0Y0Y0Y-Y-Y-3F3FY0Y0Y03FY0Y0Y0Y-Y-Y0Y0Y-Y-Y0Y0Y-Y-3D3E3E3F3G3HY03H3IY/Y0Y0Y03IY03IY03J3JY0Y+Y+Y03J3K3LZ'Y+Z'Y+Z'Y+Z'3KY0Y03KY/3KY/Y/Y/Y/Y/Y+3KZ&YEZ&3KYEYE3KYEZ&Y<Z&Y<Y<Y<Z&Y<YE3IY<Y<Z&Z&Z&3IZ&Z&Z&Y<YYYYY03HYYYYY/3HYYYY3HYYY<Y<Y/Y/Y<Y<3GY<3GY2Y/Y/3GY<Y2Y2Y<Y<Y23G3GY<3HY<Y<Y<3HY<Y23HY2Y2Y23HY23IY2Y23IY23IY<Y/Y/3I3J3KY/3KY/Y/Y/YEY<Y<Y<3JYEY<Y<YEY<Y<Y<Y<YGY<Y<YGYGY<Y<3GYG3HY<YGYGYG3HY<Y<Y<3HY<Y<Y<Z(Y<Y<Z(Z(Y<Y<3F3GY<Z(3GZ(Y<Y<YRYRYGY<Y<Y<Y<YGY<3EYG3EZ%Z%YGYG3EYGYQYQZ%YQ3D3EYQYQ3EYQYQYQ3EZ%Z%Z%Y<Y<Y<YG3D3EYGYGYGYG3EYGY<Y<Y<3E3EYGYGYGYG3EZ%Z%YGZ%YGYGZ%Z%YGYGYG3CYQYQZ%YQZ%YQYQYQYQZ%YQYQ3AYQZ%Z%WJWJ3@X.X.X.Z%Z%Y)Y)3?3@Y)Y)WJ3@WJWJX.X.3@X.VTVTVT3@VTVT3@VQVT3@VQVQ3@VQVQVQ3@X(3AX(W3W33AX'W3W33AX'W3W%W%W%3@3AWUWU3AWUWUWUW%W%W%WUWUX,WU3@X,X,3@X,WUWUWU3@U>TTU>3@U>3@U>TTTETETTTTTTTLTLTLTUTUTU3>TUTUTU3>3>U0U1U0TUTU3>3?TUTUTU3?TUV;3?V;TUTU3?3@TU3@3AUP3AU0TLU03AU03BU03BU53CU5TLU3TLTLU5U5TL3BTL3BTLTLUPUP3BUP3BUPUPUPU9U9U93B3B3C3D3EV;UP3EUP3EV;3FV;3F3G3H3IV;V;3I3J3JUPUPUPYB3J3KY>YBYBY>3KYBYB3KY>YBYBY>Y>Y>3JY>3K3KYI3LYBYBYIYBYBY>YBY>YBY>YBY>YBYBYBY>YBYBYB3HYB3H3IYBYB3IYI3JYBYIYI3JYB3J3KYBYBYIYBYBYB3J3KYIYIYIYMYIYIYMYM3JYMYIYIYI3JYMYM3JYM3JYM3KYMYIYIYI3KYIYMYIYI3J3KYMYMZ'YPZ'Z'Z'YPZ'3JYPYP3JYPZ'3JZ'Z'YPYP3J3KYPYJYPYJZ'3JZ'Z'3JYJZ'YJZ'3JYP3K3KY+3LY+YP3LYPYPY+Y+YPY+Y+3KY+3LYJYJ3LYWY+Y+3LY+Y+Y+3L3M3MYW3NYWYW3NYWYWY+Y+3NYSY+3NYSYS3NYSYSYSYSYSYWYSYSYS3M3NYSYSY*Y*Y/Y/3MY/YT3MYTYT3MY/YTYTYTYTY+Y+Y/Y/YT3LY/Y/3LY/3L3M3NYTYTYTY*Y*Y/Y/Y/3MY/Y/3MY/YT3MYTYTYTY/YTYTY/Y/YT3LY/Y/3LY/YTYTYT3LY*3LY*3MY*3MY*Y*Y9Y9Y*Y93LWZWZWZWZX/3LX/Y9X/X/X/X/X/Y93KX/X/3K3LX/X/3LX/Y9Y9Y93LX#X#Y9X#WZWZWZVWVWYGVW3JYGYGYGVWX/X/3IVW3IVWX#X#3IVWX#X#VWVW3IVWX/X/VWX/3HVWX/X#VWX#X#X#VWVW3GVWVWVW3GVWWSWSVS3GWSWS3GWSVSVSX#X#VSVS3FVSWSWS3FWSVSWSVS3F3FWSVSWSVS3FVSVSWS3FWS3GWSWSVS3GWSWS3GWSVS3GVSVS3GWSVSVSVNVNWP3G3GVNVNVNVNVN3G3H3HWY3IWYVNVN3I3JW#W#3J3KW#W#3KW#3K3LW#W#VNVN3L3M3MWYWYWYVNWYWYWY3L3MW,W,WYWY3M3N3N3OWYWY3O3PW,W,WYW,3PW,WYWYWY3PW,3PW,W,3PW,W,W,WYWY3P3QWY3QWYWYW,3Q3R3S3SWYWY3T3T3UW#W#3UW,W#W#W#W#W,W,W,3T3U3V3V3WW#3XW,W,3XW,WSW,3XW,3XW,WSWSW,W,3XW,3XWYWYWY3X3YWYWYWYWY3YWYWYWYWY3Y3YW#WY3ZW#W#3Z4#4#4$4%W#4%4&W#W#W#4&W#W#4&4'W#W#VNVN4'4(VNVN4(4)WUWUWU4)WUWUWUWM4(4)4*WMWU4*WUWM4*WMWMWMWM4*WTWTWMWMWM4*4*4+WTWT4+WTWTWTWU4+WUWUWUWM4+WM4+WUWMWMWUWU4+X+WMWMWM4+WT4+WTWT4+WTWTWT4+UYU>UYU>UYU>4+4+4,U>UYUYUYU>UYU>U>V:V:U>U>4*4+U>U>V:V:4*4+V:V:4+4,4-UY4-TTTTTTUYTTUYTT4,TTUYTT4,U/U/U/4,U/U/U/UU4,UUUU4,TT4-TT4-TLTLTLTL4-TLTLTL4-TLU:4-UPU:UPTL4-TLUPTLUP4-UPUPUP4-UPUPUP4-4.TLUP4.UP4.UPTLUPYBYB4.YBYBYBS:S:YBYBYB4-YB4-S:S:S:S:S:4-4-4.S:4/S0S04/S04/S0S:S0S0T'S0S0S0T'S0T'S0S0S0T'S0T'T'T'T'T&T'T&4*Y9Y9Y9Y9Y94*Y9Y*4*Y*Y*Y*Y9Y*XVY9Y9Y94)W-W-4)W-4)4*WFWFY9Y9W(W(Y9Y94)Y9Y9Y9Y94)W(4)W(W(Y9W(W(W(W(W(4(W(4(WFWFWFVZ4(VZVZ4(4)VZVZVZVZVZ4)VZVZ4)W(W6VZW6W6VZ4(W6W6W6W6W64(W6W64(4)W64)W64*VZ4*4+W(4+W(W6W(4+4,VO4-W(W(4-W(W6W6W.4-4-W6W6W6W6W6W6W/4,W/W/VOW6VOW64,Y9Y9W(W(4+Y9W(W(Y9Y9Y94+W(4+W(W(W(VU4+VUY9Y94+Y9Y9Y9W(4+Y9Y9VUVU4*VUVUVUY9Y9VU4*Y9Y94*VUX#X#4*X#VUX#VU4*X#X#VUVUX#X#VUX#4(X#VUX#4(X#X#X#VU4(VU4)4)X#4*X#X#X#VUX#4)X#VUVUX#X#VU4)VUX#VUVUVUX#VUVUVUX#VUX#VU4&4'VU4'X#4(X#X#VSX#X#VSVS4'4(VSVS4(4)4)4*X#VSVSVSVSW7VSVSW7W74(WS4)4*X#W7X#X#4)W,4*4+4+W7W7W7W7W74+W9W7W7W9W9W74*W9W9W9W9W7W9W7W7W74)4)4*W7W74*4+4,W9W7W9W9W94+W9W9W9W94+W9W9W94+W9W9W<W<4+W<W<W<W9W<4*W<4+W9W<W<4+W<W9W9W94+W<W<4+W<W9W9W94+W94+W9W<W9W<W<W<W9W<W<W<WTWTWTX%TLTL4(TLUEUEULUETMTMTM4'TM4'TM4(UETLUE4(UE4(UEUETLTL4(TLULUL4(UI4(4)UEUETLTLUE4)UIULUIULTLTL4(UETL4(UPUPS9S9T&S9S94'S9WQ4'WQWQWQ4'4(W@VU4(WQWQWQWQVV4(VV4(VVWQVVVVWNWNWNW+WEW+4'W+4'W+W+W+4'W+WE4'WEWEWE4'W+W+W+4'W+4(WEW7W74(W9W9W94(W94(W9X#W9W9W9W94(W9W<4(W<W<W<W<4(W<4(W<W<W<4(W<W<4(W:W<W:4(WUW:W:W:W:4(W<W<4(W<W)W<4(W<W<W<4(W<W<W)W)W<W)W)W<W)W)W<W<4&W)4&4'W)W)W)W)4'W)W<4'W<W<4'W)W<W)W<W<W)W)W<W<W)W)4%4&4'4(X-WUX-4(WUWU4(4)WUWU4)WUWUWU4)4*UFUF4*UIULUL4*UIUHTH4*TH4*THTHTHUHTHTHTHTHTHTA4)V5V<V54)4)4*4+4,V3V3V3T,SA4+SASZSZSZS=4+WQWQ4+WQW)W)W)X-4*X*VXVXX*X*VX4*X*X*4*VXX*X*4*4+VXX*4+X*WU4+4,WU4,W14-4.4.U*UIU*T:T:TI4.TQTQTITI4-TITDTIV#V#TITIS4S4S44,S=S=4,S4S44,S=S=S4S=S=S=S=S=S5S54*4+S.S.S-S.4+S.SMT$SMT$S@4*S@S@SKS@SKS@4)SXSXSXS@SX4)SXS@4)SXS@4)SUSUSUX-VXX-VXTDTDTD4(S-S-SVS-S.SM4'SM4'SM4(SMSMT$SMT$S.SMS.S.SMSM4&4'SM4'4(4)S.SMS.S.T$T$T$4(T$4(T$T$S3S3S34(S3S3S34(SFSFSOSFSO4'SOSGSGSG4'SG4'SGSOSGSOSOSOSGSGSGSG4&4&SW4'SWW>W>W4W4W>W>W4W>W>W>4%4&4&4'W4W4W?W$W?W?W$W?4&W$U#U#T-4&U#U#V(U#S7S7SNS7S7S7S7SNSNSJSNSJSJ3ZSJSJ3ZSJ4#4$SJSJSNSN4#4$4%SJ4%SG4&SGSGSGSG4&SO4&4'SISO4'SO4(SI4(SISI4(S8SOS8SGSG4(SISISISI4(4(S8S84)S>4)S>S>SGSWSGSWSWSWS>4(SWSW4(SW4(SWS>SWSWS>S>S>WLWC4'WCUBV$V$V$V$4&V$TPV.T-V.V.V(V(4%4&V(V(4&4'4'4(T=T=T=4(T=T=V(U#V(V(U#U#U#4'V(V(U@4'V(V(4'V(SNSOSNSO4&SOSPSO4&SOSPSPSOSOSPSOSPSPSP4%SOSOSPSOS>S>SP4$SP4$SPSPS6S64$S64$S6SR4%SR4%SRSRS6S64%S6U=4%V,V,4%T1T1T5U<U<U<4%TGTG4%TGTPTPTP4%TGTGV.V.TG4$TGV.4$SPSDSDSESDSESES64#SRS6SD4#SDSDSDSD4#SE4#T1T5T5T04#T0T0T8T8T/T8T8T0T8T0T/3YT/T/3YT0T/T0T0T0T03YT;T;T03YT03YT0T03YT;T;T;3YTGT;TG3Y3ZT;4#4#V.V.V.4#V.V.V.T;4#T0T04#V.V.V.SCSC4#SESCSCSC4#SCSESESESESE3Z4#SE4#SE4$SESTSTSTX;X;X;XD3Z4#XDXDT3T34#T34#4$T5T54$T3T54%T3T34%T3T74%T7T7T0T04%T0T7T0T7T04$4%T.T.4%T0T.T.T04%T.T.4%V.4&UMT0UMT0UMV.V.4%4&T0UM4&UM4&UMUMUMT0T0T04&T04&T0T04&T0T.4'T0T0T0UMUMUM4&UMV.V.4&4'V.V.4'V.T0T0T.T.4&UMT.UM4&SSSESSX<X<XDX<XDXD4%XDX:XBX:XBXB4$XBXBXDXD4$4%4%XBXBXBT54%T5T5X:XBX:XB4$4%T4T44%4&T4T4T44&T4T4YU4&YUYU4&4'YU4(Y7Y74(Y74(4)Y7Y7YHYGYGYGYHYHYGYGYHYHYGYGX.4&X.X.4&X.X&X&X.X.4&4'X.X.X&X&X.X.X&4&Y44&Y@Y@Y44&Y@Y@Y44&Y@Y@Y@Y@4&Y@Y44&Y4Y4Y@Y@4&Y@Y'4&Y'Y'Y,Y,Y'Y,Y'Y,Y'Y,4$Y'Y,Y,Y'Y,4$Y,4$Y,Y,Y,YHYUYUYUYHYH4#4$Y3Y3Y34$Y,4$Y,Y,4$Y,Y,Y,4$YUY34%Y3YUY3Y3Y,Z&Y,Z&Y,Y,Y,4#4#Z&4$Z&4$Z&Y,Y,Z&Z&4$Z&4$4%Z$Z$YLYLZ$Z$YLYLZ$Z$YL4#YLYL4#YV4$YVYVYGYVYVYGYG4#YGYEYGYEYEY=Y=YGYGY=Y=YGYGY=YNY=Y=YGYGYGYXYXYXYGYXYXYNYXYXYNYN3TYNYGY=YGYGY=Y=YGYGYNYGYGYGYGYGYGYNYXYNYNYNYNX.3OX.YN3OYNX.YNYNYN3OYNYN3O3PYNYN3P3Q3QX.YNYNX.X.3QX.3QX.X.X.YG3QYGYGYG3QYG3RYGYG3RX.3RX.X.X.3R3SYGYG3SYGX.X.3SX.WOWOX.3SX.X.3S3TX&X&3T3UW=W=W=W=W=3U3UW3W3W3V=V=V=3UV=V=3UV=V=V=V=3UV=V=3UV=V=U>V=U>V=V=3T3UU>TETETEUT3TUTUTV?V?3T3UUGUG3UUGV;V9V;3UV93U3VV;UGUGTLTLTUTUUGUG3TUG3UTLTL3UTLTL3UTU3VTLV;V;TUTUV;V;3UTUUKUK3U3VUPUPUP3VUK3VUPUPU-U$U$U$Y6Y6Y6Y:Y@Y@Y@YIYIY.YI3SYI3SYIYIYIY.YIYIY.Y'Y.Y.Y'Y'3QY'Y.Y'Y.Y.3PY.Y.Y.Y.3P3Q3R3R3SYI3TY.3TYIYIY.Y.3T3UYI3UYIYI3UY'Y.Y.3U3VY.Y.Y'Y'3V3W3WY'Y.Y.3WY'Y.3XY'Y'3X3Y3Y3ZY.Y.3Z4#Y.Y.Y'Y'Y'4#4#4$Y'4%Y'Y'4%4&Y'Y'4&Y,Y,Y,4&Y,Y'4&Y'Y'Y'4&Y'Y'4&4'4(Y,4(Y,Y,Y,4(Y,Y,Y,Y'4(4)4*Y'Y'4*4+Y'4+Y'4,4,4-4.4/4/Y,40Y,Y.40414242Y,Y'434344Y.Y.Y'44Y.Y.Y,Y,44Y,YI44YIYI4445YIYI4546YIY.Y.Y.YIYIY.YAY.45YAYA45YAY.45464747YA4849YAYA49YA49Y,4:Y,Y,Y,4:4;YI4;YIYI4;4<YIYI4<Y,YIYIYIYIYIZ)Z)Z)Z)4;YIYIYI4;YI4;YIYI4;4<4=4>4>YIYIYIZ)Z)4>4?Z)Z)YIYIYI4>YMYMYIYMYI4>4>YMYMYMYMYM4>YMYI4>4?YMYIYMYMYM4>YMYMYMY,Y,YIYIY,Y,YI4=Y,Y,4=Y,YI4=4>4?4?Y,Y,Y,4?Z&4@Z&Y,4@Y,4AY,4A4BZ&Y,4BY,Y,Y,Y,YKYKY,YK4AYKY,Y,Y,4A4A4BYKYK4BYKYKYK4BY,4CY,Y,4C4D4EY,Y,Y,YKYKYKY,Y,Y,YKYKYK4B4C4DY,4DY,Y,Y,YIY,4DY,4DY,4EY,4EY,4F4GY,Y,4GY,4G4HZ)Z)4H4IZ)Z)Y,Y,Y,4IY,Y,4IY,4IZ)Z)Z)Z)4IZ)4J4J4KZ)4LY,Y,4LZ)Y,Y,4LZ)Y,Y,4LY,Z)4LZ)Z)4LZ#4MZ#Z)4MZ)4NZ#Z#4NYMZ)Z)Z)YM4MYMYMYM4M4NYMZ)Z)4N4OYM4O4PYMYMZ)4PZ)Z)4PYMYMYM4PZ)YMYMYMZ)YMYMYMYM4OYM4O4PYMYMY,4PY,4Q4Q4RZ#Z#Z#Z#4RZ#Y,Z#Z#Z#4QZ#Y,Y,Y,Y,4Q4RY,Y,Y,4RZ#Z#YMY?Z#Z#Y?4QYM4QYM4RY?Y?4RY?Z#Z#4RZ#YM4RYMYMYMYMYMZ'YMYMZ'4Q4QY?4R4SYM4SY?Y?4SY?Y?Y?Z&Z&YKYKYKYK4RYKYKYK4R4SYKYK4SYKZ&Z&4S4TZ&Z&YK4TZ&Z&4T4UYK4UYKYK4UZ&4V4WYKYKYK4W4WYK4X4YYKYKY-Y-YKY-4XY-Z&Z&Y-Y-Z#4WZ#Z#4W4X4Y4Z4ZZ#Y0Y0Z#4Z5#Y0Z#Y0Y0Y0Z#Y0Y0Y04YY-Z#Y-4YY-Z#4ZZ#4ZZ#5#5#5$Y0Y0Y-Y-Y05$5$5%Y0Y0Y-5%Y0Y05%5&Y0Y05&5'Y0Y05'5(Y0Y0Z#Z#Z#5(Z#Y?5(Y?Y?Y0Y?Y?Y?Y?Y?Z'Y0Y05&Y05&Y0Z'Z'Y?5&Z'Z'Y0Y05&Y0Z'5&Z'YP5&Z'YPYPZ'Z'YP5&Y0Y05&Y0Y-Y-5&Y-Y-Y0Y0Y0Y-Y-5%Y05%5&Y0Y0Y0Y-Y0Y0Y-Y-Y0Y0Y-5$Y-5%5%YYYYYY5%5&5'Y0YYYY5'YYY0Y/5'Y/Y05'Y0Y/Y0Y0Y0Y+Y0Y0Y05&5&Y+Y+Y+Y0Y05&Y0Y0Y05&Y0Y+Y/Y+5&Y/Y/5&Y/Z'Z'Z'Y+Y05%Y0Y0Y0Y/Y/Y/Y+Y/5$Y/Z&YEZ&Z&YEYEZ&5#YEYE5#5$Z&Z&Z&Y<Y0YY5#Y/Y/5#Y/Y/5#YYY/Y/5#5$Y2Y2Y2Y2Y/5$Y25$Y25%Y2Y<Y2Y2Y2Y<Y2Y<Y2Y<Y2Y2Y2Y<4Z5#Y25#Y2Y2Y25#Y25$Y25$Y2Y2Y2Y2Y25$Y/5$Y/Y/Y<Y<Y<5$Y<Y<5$Y/Y/5$Y/Y/Y<5$Y/Y/YEYEY<Y<YGYG5#YGY<5#Y<Y<5#5$Y<Y<Y<YRYRYR5#5$Z(Z(5$5%Z(Z(5%Z(Z(Z(5%YGY<YGYGYGZ%Z%YGYG5$YGYGYGYQYQYGYGYQYQYGYGYQYG4YZ%Z%Z%Y<Y<YGYGY<YGYGYG4WYG4X4YY<Y<Y<4YY<YG4YYGYGYG4YYGYGYGYQYQYQYQ4XYQYNX.X.X.Z%Z%Y)Y)4VY)Y)Y)X.4VWJWJX.X.X.4VVTVT4V4WVTVTVQVQVTVTVQ4VVTVT4VVQX(X(4VX(4VX(X(X(X'4VX'X'4VX'X'X'WU4VWUWU4V4WWUWUW%W%4W4XWUX,WU4XX,X,4XX,WUX+X+X+U>TT4WTT4WTTU>TTTUTU4WTUTUTUTU4WTL4WTLTLTUTU4WTUTUTU4WTUTU4W4XV;4X4YV;V;TUTUTU4YTUTU4Y4Z4ZV;TUV;TUTU4ZUPTLU0TLU0TLU0TLU0TLU0TLU0TLU5TL4W4WU5U5TLTLU4TL4WTL4WTLTLUPUP4WUP4WUPUPUPU9U9U9UPU94VU9U9UPUP4VUPU9U9UPUPU9UPUPUPV;UPV;4T4TV;4UV;4UV;4VV;V;4VV;V;UPUP4VUPV;V;UPUP4UUPUPUPV;V;V;4UV;V;4UUP4UUPUPUPYBYB4UY>4UY>Y>Y>YBYBY>Y>YBYBY>Y>YBYB4SYB4SYBYBYBYBYI4SYI4S4TYBYBYBYB4TYBY(4TY(Y(4TYIYBYBYIYI4T4U4UYIYBYBYBYIYBYBYIYI4T4UYIYI4U4VYI4VYIYIYMYMYIYIYM4UYIYIYI4UYIYIYMYMYIYIYIYM4TYM4TYMYIYMYIYIYIYMYM4SYM4T4TYM4UYMYPYPZ'YPYPYPZ'YP4SYPZ'YPZ'YPZ'Z'YPYP4RYPZ'4RZ'Z'Z'YPZ'4RZ'Y+YPYPYPYPYP4QY+Y+YPY+4PY+Y+Y+YP4PYPY+Y+Y+Y+YTY+YTY+Y+YJYJYJYWYJY+Y+Y+YWY+YWYWY+Y+YWY+YJYWYJYWYJYWYJYWYWYS4H4IY+Y+YS4IY+YSYSYSYSY+YSYSYSYSY*Y*YSYSY*Y*4EY/4F4GYT4GYTY/4GY/Y/Y/Y/Y/YT4GY/Y/4GY/Y/Y/Y/4GY/Y/4GYTY/4GYTYTY/Y/Y/4GY/Y/4GY/YT4GYTYTY/Y/YTYTY/Y/YTYTYTY9Y9Y94DY94EY9Y*Y9Y9Y9Y*4DY*4EYGYGYG4EX/X/Y9X/Y94DY9Y94DY9Y9Y9Y9X/Y9Y9X/X/4CX/Y9X#4C4DVWYGVWVWVWVW4CVWVWVW4C4D4DVWX#X#VWVW4D4EX/VW4EVWVWVWX#X#VWVW4DVW4DWSVSVSWSWSVSVSVSVS4CVS4CWS4DWSWSWSVSWS4CWSVSWSVSWSVS4CWSWSWSWYWS4BWSWSWSWSVSVSWSWSVS4AVS4AVS4BWSWS4BWSVNVN4B4CWPVNVNVNVN4BVN4C4C4DWYWYVNVNVN4D4DWYWYWYVNVNW#W#VNVNW#W#W#W#W#4BW#W#4B4CW#W#WY4CW#4CW#W#VNVN4C4DVNWYVNWY4CWYWYWY4CWYWYWYWYWYWY4CWYWY4CWY4C4DW,W,4D4EW,W,WYWY4E4FWY4FW,W,4F4GW,W,4G4HW,W,WYW,W,W,WYWYWYW,WY4FW,W,4FW,W,W,WYW,W,W,WYWYW,WY4D4EWYWYW,4E4F4GW,WY4G4HWYWY4HWY4HWYWYWYWYWY4H4IW,W,W,4IW,W,4I4JW,W,W#W#WYWY4I4JW#4JW#W#4JW#W#W#4JWY4KW#4KW#4LW#4L4M4N4OW,W,WSWSWSW,WSW,4M4NWSWSW,W,W,4NW#4NWYWYWY4NWYWYW#4N4O4PWYWY4PWYWY4P4QW#W#W#W#4Q4Q4RWYWYW#W#4R4SW#W#4S4TWYWYWY4TWYWY4TWY4TWYW#W#4T4U4V4W4W4XW#W#4X4YW#4ZWY4Z5#W#5#W#W#W#W#5#W#W#5#W#W#W#W#5#W#W#5#W#W#W#WUWU5#5$WUWUWU5$WUWM5$WMWU5$WMWMWU5$WUWMWUWU5$WMWMWMWT5$WM5$WTWTWM5$5%5&WMWMWTWTWMWT5%5&WUX+WU5&WU5&WMWMWUWU5&WMWUWUWUX+WMWT5%WTWM5%WTWTWM5%5&WTU>UYU>UYUYUY5%UYU>5%U>U>5%UYUYUY5%5&V:V:5&V:V:V:U>U>V:5&U>U>5&5'U>5'V:UY5'UYUYUY5'UYU/U/5'5(5)5*UYTTUYTT5)5*U/U/5*5+U/U/5+5,UU5-TTTT5-TT5-TTUUUU5-TLTTTLUPUPTLUPTLTLU:U:U:UPU:U:TL5*UPUPTLUPUPUPTLUP5)UPTLUPTLTLUPUP5(UPTLTLTL5(TL5(TLTL5(YBY>YBYBYB5(YBYBS:5(S:5(S:S:S:S:S0S:5(S0S05(S0S:S0S:S:S0S05'S05'S0S:S0Y9Y9Y*Y*Y9Y9Y*Y*Y*Y9Y*Y*Y9Y9Y9Y*W-W-5#5$WF5$WFWFW-W-WFWFY9Y95#W(Y95#W(W(Y9Y9W(Y94ZW(W(W(W-4ZWFWF4Z5#VZVZ5#5$VZVZ5$5%VZW(VZVZVZ5%VZVZ5%W(VZ5%VZW6W6W6W6W/5$5%W/W/W6W6W6VOW6W/5$W/W6W/W6W6VZW(VZW(VZVZ4Z5#W65#W6W6W6W(VOVOW(W(VO4ZVO4ZVOVO4Z5#VOVO5#W65$W6W.5$S9W6W6W/5$W/5$VO5%VOY9Y9Y9W(Y9Y9W(5$W(W(W(5$W(5$VUVUY9Y95$Y9Y95$VUVUW(VUW(VUVU5#VUVU5#VUVUVU5#X#5$X#X#X#VUX#VUX#VUX#VUVU4Z5#VUVUVU5#VU5#VUVUVUX#5#X#5#X#VUX#VUVUVU5#5#5$VUVU5$5%VU5&VUVU5&VUX#X#5&X#VUX#VU5&VSVSX#5&VSVS5&X#VSVSX#5&VSVS5&VSX#5&X#X#5&VSVSVSWSWSW7WSW75%W7W75%W7W7W7W,W,5%W,W75%W7W75%W,5&W7W7W75&W75&W95'W95'W95(W9W7W9W7W9W75'W7W75'W9W7W9W7W7W75'W7W7W75'W75'5(5)5)W95*W9W9W<W95*W95*W9W9W9W<5*W<W9W<W9W<W9W<W9W95(W<W9W<W95(W95)W<W<5)W<W9W95)5*5*W<W9W<TLTL5*5+TMTMULTMULUL5*UL5*ULTMUL5*TL5+TL5+TL5,5-TLTLUETLUI5,UIUI5,TLUE5-TLTL5-TLUE5-UE5.TLTL5.UETL5.UPUPS9S9S9WQ5-WQWQWQVU5-W@VU5-X#VUVUW@5-WQWQWQWQWQVVWQVVWQVVW+WEW+WEW+WEW+5*W+5*W+5+5+WE5,WEWEWE5,W+5,W+W+W+W+W+W+WEX#W9X#W9W9W95*W95*W9X#X#W9W9W9W<W9W9W9W<W<W<W<5(W<5(W<W:W<W:W<5(W:W:5(W:WUWUW:5(5(5)W<W<W<W<W)W<W<W<W<W)W)W)W<W)W<W<W)W<W<W<W)W)W<W)W)W)W)W)W<W<W<4ZW<W<4ZW)W<W)W)W)W)4Z4ZW<5#W<W)5#W)W)5#W<5$W<WUWU5$5%WUWU5%5&WUWU5&5'WUWU5'WUWUWU5'WX5'WUWXWUT>T>T>5'5'5(UIUIUHTHUHTHUHTHUHTH5&THTATAV<V<V5V5T+T+T+5%T+T+5%UCUCU?U?U?5$V1V1V1SASZ5$SZSZSZS=S=WQWQWQVMX-X-4ZX-X*4ZVX5#X*5#5$VXVX5$VX5%X*X*5%X*VX5%VXVXWU5%WUWU5%5&5'5(5(W1W1W1W1W1WUWUW1W1WUWUUIUIUIU*T:T:TITITD5$TD5%S4S45%S4S=S4S4S4S45$S4S4T#T#S.S.T#T#S.S.S-S-S-S.S@4YS@S@4YSX4ZSXS@4ZS@S@4Z5#S@S@S?S?S?SUTDTI4ZTIS.SMS.SMS.SMS.SMS.SMS.S.4WSMS.4XSMSM4XSM4XT$SMT$SM4XSMSM4XT$T$T$T$4XT$4YT$4YT$4Z4Z5#SJSJS3S35#5$SO5$SOSGSGSG5$SGSO5$SOSOSG5$SGSWSGSGSGSW5#SWSWSWW>W>5#5$W>W>5$5%5%WVWVWVWVWV5%5&W$5&W?W?5&U#5'U#SJS75'S7SNSNSJSJSJSJSNSJSJSJSJSNS75$S75%5%5&SJSJS7SJSJSJSOSG5%5&5&SGSOSGSGSGSISGSOSO5%SISO5%SOSISOSI5%SI5%SISOSOSISISIS8SO5$SOS8SGSGSG5$SIS>SIS>5#5$S8S8S85$S8S85$S>S>S>SWSWS>5$SWSW5$SWS>S>5$SWWLWCWCWCV$5#V$TPT=V(V(V(V(V(4ZV(T=V(T=4ZV(U@U@U@V(4YT=T=4YT=T=T=4YU@T=T=U#V(V(V(V(V(U@U@V(V(U@U@4VSOSPSPSOSPSPSPSP4USPSPS>S>SP4U4US6SPSPS6S64US64US6SRS6S6S6SR4USR4USRSR4US64V4WU=V,V,V,4VT1T1T1U<4VTGTGTGTG4VTGTPTP4VTPTGTGTG4V4VSPSDSPS6S6S64VSDSDSD4V4VSESESET1T1T5T1T0T;T0T0T/4TT/T/4TT0T/T0T0T0T04TT0T;T04TT04TT0T04TT;4UT;4UTGT;TGT;T;T;4UV.V.4UV.4UV.T0T0T04UT0V.T0T04U4VT;T;4V4WT04WV.V.SCSCSCSESCSCSC4VSE4VSSSS4VSSSSSSSESE4VSS4VSSSSSSX;4VXDXD4VXDXDXDT3T3T5T3T54UT5T5T3T34UT5T3T3T54U4U4VT5T5T3T34VT5T0T0T7T0T0T04U4VT04VT0T.4V4WT.4XT0T0T.T.4WT.T.T.T0T04WV.4WUMUMUMUMV.UM4WV.V.4WV.T0T0T04W4WUMT0UMT04WT0T0T04WT04XT0T04XT0T0T0T.4XUMUM4XUMV.V.V.4XV.V.4XV.4XUMUMUMUMUMT.4XSESSSE4XXDXD4X4YXB4YXBXBXDXD4Y4ZXDXD4ZXBXB4ZXBXB4ZT.T5T54Z5#T4T4T/T/T4T4T/4ZT4T44ZT/T4T4T/4ZT4T4YUY7YU4ZY7Y7YUYUY7Y74YY7YU4YYUYU4YY7YUYUYUYUYUY7YU4XY7Y7X.X.X.4XX.X.4X4YX&4YX&X&4YX&X&X&4Y4ZX&X&Y4Y44Z5#5#5$5%Y@5%5&Y@Y@Y@Y@5&5'5'Y4Y4Y4Y@Y@5'5(Y,Y,5(Y,Y'Y'Y,Y,5'Y,5(Y,5(Y,5)Y,YHYH5)5*YHYH5*YHY3Y3Y,Y,Y35)Y,Y,5)Y,Y,Y,YUYUY3YUY3YUY35(Y,Y,Y,Z&Y,Z&Y,Z&5&Z&Z&Z&Y,Z&Y,5&Y,5&Y,Z&YLYLZ$Z$YLYLZ$5%YV5%YLYLYVYV5%YV5%YLYLYL5%5&5'YG5'5(YXYNYNX.X.X.YN5'YNX.YNYNYN5'YNYN5'5(YNYN5(YNYNYN5(5)5)X.5*X.X.X.YNYNX.X.5)X.YNYN5)X.5)5*YGYGYGYGYG5*YG5*YGX.YGYGYG5*5*X.X.X.YG5*X.X.YGYGX.YGYGYGX.5)X.X.WO5)X.X.X.X&5(5)X&X&5)X&X&X&WGWGW=5)5)WGW=W=W35)W3W3W=W=W=W3V=V=V=5(V=V=5(V=V=V=V=5(V=V=5(5)V=V=V=5)V=V=5)V=5)TLUT5*5*5+V?TL5+TLTLTL5+UG5,5-5-V9V;5.5.V;V;V;5.5/V;V;UGUG5/UG5/50TLTLTLUGTL50UGUG50TU50TLTLTL5051TUTUUKUKUK51UKUK51UKUPUKUPUKUKUK50UKY.Y.YI50YI50YIYIY.Y'Y.50Y'Y'Y.Y.Y.Y.5/505051YIYI51YIYIYIY.Y.5152Y.Y.52Y.5253YI54Y.Y.Y.545455YIYI55Y.56Y.56Y.YIYIY'Y'56Y'Y'Y'56575758Y.Y.Y'Y'5859Y'Y.595:Y'Y'Y.Y'Y'Y'Y'Y.Y.Y'Y.Y.57Y.Y.Y.Y.Y'Y.57Y.57Y.Y.Y'Y'57Y.Y'57Y.Y.57Y'5859Y'Y'Y,Y,Y'58Y'Y'Y,Y,Y'Y,Y'57Y'Y'Y'57Y,Y,5758Y,Y,Y'Y'Y,Y,Y,Y,57Y,Y'Y,Y'Y'Y,56Y'57Y'Y'Y'57Y'5758Y,Y'Y,Y,Y,Y,Y,57Y,57Y,Y,Y,Y'57Y'Y'5758Y,Y,58Y,Y,Y,58Y.Y.Y.Y'58Y.59Y'Y'Y'59Y'59Y'5:Y'5:Y'Y'Y,Y,5:Y,Y'Y'Y'5:Y,Y,5:Y,5:5;Y,Y,5;Y,5<Y,5<Y'5=Y'Y.5=5>5?5?Y'Y'Y'5?Y'5@5A5A5BY'5C5C5DY.5EY'Y'5EY'5E5FY'Y,Y,Y,Y.Y,Y.Y.YIYIY.Y.YI5DY.Y.5DY.Y.5DYIYIYIY.YIY.Y.YAY.5CYAYA5CYAY.Y.Y.5CYI5CYIYI5C5DYIYI5DYAYAYAYAYA5D5EYAYAYA5EYAYA5EYIYAYA5E5F5FY,YAY,YI5FYI5GY,Y,5GY,5GY,YIYI5G5H5IYI5I5JYIYIY,Y,5J5KZ)Z)YIYIYI5JZ)Z)Z)5JYIYI5J5K5LZ)5L5MYIYI5MZ)Z)5NZ)YI5N5O5O5PYIYIZ)Z)YIYIZ)Z)YIYIYIYIYMYMYIYMYI5MZ)Z)YMYMYMYM5LYMYIYI5L5MYIYMYIYI5LYMYMYMY,5LYIYIY,Y,5LY,YI5L5M5NYIYI5NY,5NY,Y,Y,5NY,Y,Y,Y,Z&5NZ&5NZ&5OZ&Y,Z&5OZ&5OZ&Y,Y,Y,5OY,5PY,Y,Y,Z&5OZ&5PZ&5PYKYKYKY,Y,Y,5PY,Y,YKYKY,Y,YKYKY,YKYKYKY,Y,5MY,YKY,YKYKY,5L5MZ&Y,5MY,5N5NZ&Z&Z&YIYIYI5NYI5N5OY,YI5OYI5P5P5Q5RY,YIYIYI5RYI5RYIYIYIY,5RY,5RY,YIY,5RY,YI5SY,Y,5SY,Y,Y,Y,5S5SZ)Z)Z)5S5TZ)Z)5T5UZ)Z)Z)5UZ)Z)Y,Y,Y,5UY,Y,5UY,5U5VZ)Z)Z)Y,Z)Z)5UZ)Z)Z)Y,Y,5UY,Y,Y,5UY,Z)Y,Z)Z)Y,Z)Z)Z)5S5TZ)Z)Y,Y,Z)Y,Y,Y,Z)5SY,Y,Z#Z#5RZ#5SZ#Z)Z#Z)5S5SZ#5TYZZ#Z#Z#YMZ)Z)Z)YMZ)Z)YMYMZ)Z)YMZ)Z)Z)Z)YMZ)Z)Z)5O5OZ)5P5QZ)YM5QYMZ)Z)Z)5Q5QYM5RYMYM5RYMYMZ)5RYMYMZ)Z)Z)5RZ)YM5RYMY,Y,Y,5R5RZ#Z#Z#Y,Y,Z#Z#5QZ#Z#Z#Y,Z#Y,5QY,5QY,Z#Y,Y,Y,5QY,Y,5QZ#Y,Y,Y,Z#Y?Z#Y?Y?YMYMYMY?5NY?5O5PY?Y?5PY?Z#Z#Y?Y?YMYMYM5OY?Y?Z'5O5OY?Y?Y?5O5PYMYMY?Y?5P5QYMYM5QYM5QY?5R5SYKYKZ#YKYKYKYKZ#YKYKZ#5QYKYK5QYKZ&Z&YKYKZ&YKYKYKZ&Z&YK5OZ&Z&5O5PZ&Z&5PZ&YK5PYKYK5PZ&YK5QYK5QYKYKZ&Z&5QZ&YKYKYKY-YKYKYK5P5PY-Y-Y-5PY-Y-Y-YKY-Y-Y-YK5OZ#Z#Z#Z#Z#5OZ#Z#5OY0Z#Y0Z#Z#Y0Y0Z#Z#Z#Z#5MZ#Z#Z#5MZ#Z#5MY0Y05MYKZ#YKZ#5MZ#5N5N5OZ#5PZ#5PZ#5QZ#5QZ#Y05QY-Y0Y0Y-Y-Y0Y0Y-Y-Y05PY05PY0Y0Y-Y-Y0Y0Y-Y-Y0Y0Y-Y-Y05NY-Y-5N5OY-Y-5O5PY-5PY0Y05PY-Y0Y05P5QY0Y0Z#5QY?Y?Z#5Q5R5SY0Y05SY05SY0Y?Y?Y?Y?Y?5SY0Y05SY0Z'Z'5S5TZ'Z'5TZ'5TZ'YP5UY0Y05UY0Y-Y-5U5VY05VY0Y0Y-Y0Y0Y05UY0Y0Y0Y-Y-Y-5UY-YYYYYYY-YY5TYYY-Y-Y-5TYYYY5T5U5U5VY0Y0YYYYY0YYY0Y/Y/Y/Y0Y/Y/Y/Y0Y0Y05SY05SY+Y+Y0Y05SY0Y0Y0Y05SY+Y/Y+Y+Y/Y/5R5SY05SY0Y/Y+Y+Y+Y/5RYEZ&5SY<5SY<Y<5SY<Y<Y<Y0Y/Y/Y/YYYYY/5RYYYY5RY/Y<Y<Y2Y2Y<Y<5QY<5QY2Y/Y2Y<Y<Y2Y2Y25PY2Y2Y2Y<Y2Y2Y<Y<Y2Y<5NY<5OY<Y<Y<Y25OY25OY25PY25PY2Y<Y2Y2Y<Y<5OY<5PY<Y<5PY<Y/5PY<Y/Y/5PY/Y/Y/Y<5PY/Y/YGYGY<5P5PYGY<YGYGYGY<Y<YGYGY<Y<Y<Y<Z(Z(Y<5MZ(Z(5MZ(Z(Z(5M5NZ(Z(Y<Y<Z(Z(YGYG5M5NYGYGZ%Z%YQZ%Z%Z%YGYGY<YGY<5K5L5MYGYG5MYGY<YGYGYGY<YG5LYGYGYGYG5LYQYQZ%Z%Z%Z%5KY)X.X.WJWJX.X.VRVRVTVTVQVQVTVTVQVQVT5GVQVQ5GVQVQVQVNX(VN5G5G5HX(X(5HW3X'X'W35H5I5JW%W%WUWUW%W%WU5IW%W%5IW%WUW%WUWUW%W%WUWUWU5GWUWU5G5HWUWUU>U>U>5H5H5IU>U>TUTU5I5JTUTU5J5KTL5KTL5LTUTU5L5MTUTU5M5NTUTU5N5OTU5OTU5PTUTU5PV;TUV;V;V;TUTUTU5OTUTU5O5PTUTU5P5QTU5QTU5RTUTU5RUPTLU55RU5TLU5U5U5TLU4TLU4TL5PTLTLU0UP5PUP5PUPU0UPU9UPU95P5PUPU9U95PUP5QUPTUTUTU5QTU5Q5RV;5RV;5SV;5SV;V;V;5SUPV;V;5SUPV;5TV;UPUPUPV;V;V;5SV;UP5SUPUP5SUPUP5S5TY>Y>YB5T5UY>Y>Y>Y>5U5UYBYBYBYBYBYB5UYB5UYBYB5UYIYBYBY>YB5UYBY(5UY(Y(YIYIY(Y(YI5T5U5VYIYI5VYIYB5VYBYBYIYI5V5WYIYIYBYBYIYI5V5WYIYI5WYIYIYMYIYMYMYM5VYMYIYI5V5WYIYM5WYM5WYMYIYMYMYMYM5WYM5WYMYMYMYM5W5X5X5YYMYM5Y5ZZ'6#6#YPZ'6$6$YPZ'Z'6$YJZ'6%YPYPYP6%YPYPYPY+YPY+YPY+YW6#YW6$6$YSYSYSY+Y+YSYSY/Y/6#Y/Y+6#Y+Y+6#6$Y+Y+YTYT6$Y/YTY/Y/Y/YTY/YTYTY/Y/5Z6#Y/Y/6#6$6$YTYTYT6$YTYTYTY/Y/Y/6$Y/Y/YT6$6$YTYTYT6$Y96%Y9Y*6%Y*6&Y*Y*Y*Y9Y*Y9Y*Y9YGWZYGWZX/X/Y9Y9X/X/Y9Y9X/X/Y9X/Y9Y95X5YX#X#5YX#VWVW5YVWVWVWX#X#5XVWX#X#X#5XX#X#VWVWX#X#VWVW5W5XX/X/5XVWVWVW5X5YWSWSVSVSX#VSX#X#5WWSVSVSVSVSVSWS5VWS5WWSVSWSVSVSWSWS5VW,5VWSVS5WWSWS5WWSVS5WVSVS5WWSVSVSWP5WWPWPVNVNWP5WVNVNVN5WWY5WWYWY5W5X5YWY5Y5ZWYWYVNWYWYWY5Y5ZWYWYW#W#W#5ZW#W#5Z6#6#WYWYWY6#W#WYW#VNVN6#6$W#6$W#W#VNVNW#W#6#6$WYWYVNVNWYWYWYWYWY6#WYWY6#W,W,6#W,W,WYWYW,W,WYWYW,W,WYWYW,W,WY5XWY5Y5YW,W,W,WYWYWY5YWYWY5YWYWYWYW,5YWY5Y5Z6#6#W,6$W,WYWYWY6$WYWYW,W,W#W#WY6#W#W#6#WYW,W,W,6#W,6#W,WY6#6$WYWYW,WYW,W,WYWY6#6$WYWY6$WY6$WYWYWYWYWYWY6$WYWYWY6$W,W,W,W#W,W,W#W#5Z6#W#W#W,6#W,W,6#6$6%W#W#W,W#6%W,W,6%6&WYWY6&W,6&W#W#W#6&W#6'W#6'W#WYW#WYWYW#6'W#W#6'W#W#6'W#W#6'W#W#W#WS6'WSWS6'W,WSWSW,6'W7W7W#6'W#WY6'W#WYW#W#W#6'6(WY6(WYWY6(6)WYWYWYWY6)WYWYWYWYW#WYWY6(6)W#W#6)6*WY6*WYWYW#W#6*W#W#6*WYWY6*W#WYWYW#W#6*6+W#W#WYWYWYWYWYW#WYWYW#WYWYWYW#6(WYWYWY6(WYWY6(6)WY6)6*6+6+W#W#W#6+6,W#W#6,W#W#W#6,WYW#6-6-WY6.W#W#6.W#W#WYWYW#W#6-W#W#W#6-6.W#W#W#6.W#W#6.6/W#W#VNVN6/60VNW#60W#WU60WUWM60WUWMWMWU6061WM61WMWMWM61WM62WMWUWMWUWMWU61WMWM61WMWT6262WT63WTWMWMWM63WM63WTWT63WTWTWTWM63646565WTWTWTWUX+WUX+WUWUWU6464WMWMWMWM64WMWMWMWM64WMWMWM64WTWT64WTWT64UY65UYU>65U>6666UYUYUYU>66V:V:6667V:V:6768V:V:U>68V:V:6869V:V:696:V:V:U>U>6:6;U>UY6;UY6;UY6<6=TTTTUYUYTTTT6<TTUY6<TTTT6<TTTTTTUYUYU/6<UYUY6<6=UYUYU/6=UYUY6=U/TTTT6=6>TTTT6>TT6>6?UUUU6?TTUU6@UU6@UUUUTTTLTTTLTLUPTLUPTLUPTLUPUPUPUP6=TLTLTL6=TLUPTLUPY>6<Y>6=YBYBY5Y5S:S:6<6=S:S:S:6=S:6=S:S:S0S06=S0S:S0S:S:S:S0S:S0W-W-6;6<W-W-6<W-6<W-WFWF6<6=W(W(Y9Y9Y96=Y9Y96=Y96=W-WF6>W(W(VZVZ6=W(VZVZ6=W(VZVZW(W(VZVZVZW(VZ6<W(W(6<W(VZ6<6=W(VZW(W(W(VZW66<W6W6W6W/W/W6W6W/W66:W6W6W6VZVZVZW6VZW(W6W(6869W66:W(W(6:6;VO6;VOVOW(W(VOVOW(W(VOW(69W6W.W.69W6W6W669W6W.W6696:W/W/W6VO6:VO6:VOVOVOY9Y9W(6:W(W(W(6:W(6:VUVUY9Y96:W(Y9Y96:VUVU6:VUVU6:Y9VUVUX#X#VUX#VUX#VUX#VU68VUX#68X#X#X#VUVUVU68VU68VUVU68X#X#X#68X#VUX#VU68VU69X#X#69X#X#X#696:VU6:VUVUX#X#6:X#6:6;VUVUVUVUW@6;6;X#VU6<X#X#6<X#VSVSX#X#VSVSX#X#VS6:X#6;VSVS6;VSX#6;X#X#6;VSVSVS6;6<W76=WSWS6=W7W,W,W76=6=6>W76?W,W,6?W,6?6@W7W76@W76AW76AW96B6CW76CW7W7W7W7W76CW7W9W9W9W76BW7W76B6CW76DW7W7W7W96CW7W9W96CW9W9W9W7W7W76CW9W96CW9W9W96CW9W7W9W7W9W9W<W9W9W96AW9W9W9W96A6B6BW<W9W<W96BW9W9W9W96B6C6CW<W<W<W9W9W96CW9W96CW<W96CW9W<UUTLUUUUTLTL6BTLTMUL6BULULUL6BULTLTL6BTL6BTLUEUETL6BUE6CUE6CUEUE6CTL6DTLUIULUIUITLTLUE6C6CTLUEUETLTLUEUETLTL6B6CUE6CUEUE6CTLUEUE6CTL6DUPS9WQS9WQVU6CVUVU6CX#VUVUW@WQWQWQW+WEW+W+W+W+W+6AW+6AW+W+W+WE6AWE6A6BW+W+6B6CW+W+WE6CW+W+W9W9X#6CX#6CX#X#W<W<W<6CW<6CW<W:W:W:W<W<W:W:6BW:W:6BW:W:W:W:W<W:W:W:W:W<W)W)W<W<W)W)W<W<W)W)W)6>W)6>W)6?W)W<6?W<W)6?W)W)6?W<W<W<W)W<W)W<WUWUWUX-6=X-X-X-WUWUWU6=WUWU6=6>WUWU6>W1WUWUW1W1WUWUW1WUWU6<6=WXWUWUWXWXT>T>T>6<UI6<UIUI6<UIUIUI6<6=TATAT+6=UC6>UCUC6>UCU?UCU?V1SASZ6=SZX-6=6>VXX*X*6>6?VX6?VXX*X*X*6?VX6?6@6AVXX*X*VX6AVX6AVXVX6AX*6BX*VXVXVX6BWUWUWU6BWU6BWU6CWUWUWAWUWU6BWUWU6BWUWUWU6B6CW1W1TD6CTD6DTDTITDTIS4S4S=S=S46BS4S4SXSXS@6BSXSX6BSXS@SXS@SX6ASXS@S@S@6AS@S@6ASX6BSXTDTDTD6BS.SMS.6B6B6CS.S.6CSM6DSM6DT$SMSMSMSMSM6DSMSM6DT$T$SKT$6D6DSK6ESK6ESK6FSKSKSK6FSKS3S3S36FS3S36FSJS3S36F6G6GSO6HSO6HSGSGSGSGSGSO6H6HSG6I6JSGSGSG6JSGSWSWSWW>W>W>6IW>6I6J6K6KW>6L6MW>W>6MWVW>WV6MWVWVWVWVW4WVW4W4W46KW$6LW$U#U#T-U#T-6KT-T-SJ6KSJ6LS7S7S76LS7SJSJSJS7S76KSJS7S7SJSJSOSOSO6J6JSGSGSGSO6JSOSOSOSISISISO6ISOSISOSISO6ISO6ISOSI6IS86JS86JSISISIS8SIS8S8SI6ISIS8S86IS8S>6I6JS>S>S>SWS>6JSWSW6JSWS>6JS>S>6JTP6KTPV(V(V(6KT=V(T=6KV(V(V(6K6K6LT=T=6LU@T=T=6LSO6M6NSP6NSPSP6N6OSP6PSP6PSPSPS6S66PS6SRS6S6S6S6S6S66OS66O6PSRS6S6S66P6PSRSRSRSRS6SRSR6O6PT1T1U<6PTGTGT;TG6PTGTPTP6PV.TGV.TGV.SPSP6O6PS66PS6S6SRSR6PSRSE6PSESET/6PT/T/6PT06QT0T06QT06R6RT;6S6TT06TT0T0T;T;6T6UT06UT0T;6UTGT;6VT;6VT;T;V.V.6VV.6V6W6XT0T06X6YV.T0T0T06Y6YV.6ZV.T;6ZT0T06ZT;7#T;T07#V.V.SCSESCSESESESS6Z6ZSESSSSSESESE6Z6ZSSSSSSX;6ZXDXD6ZXDXDXDT3T36Z7#T57#T5T5T5T3T5T5T56ZT57#T3T3T37#7#T5T5T5T0T0T07#T0T07#T0T07#T.T.7#T0T.7$T0T07$T0T.T0T.7$T0T0T0T.T0T07#7$7$7%UMUMUM7%UMUM7%V.7&7'7'UM7(UMT07(T0UMT0UMT07(T0UM7(UM7(UMT0UMT0T07(T07(T.T.T.7(UM7)UMV.7)UMUMV.V.7)V.UM7)UMUMUMUMT.UMSE7(SE7)XDXDXB7)7)XD7*7+7+7,XBXBXDXDXB7,XDXD7,XDXDXD7,XDXB7,XBXB7,7-T5T5T/T/T4T4T/T/T4T4T/T/T4T4T/T/T4T4T/T/T4T47(YUYUYUY7Y77(Y7Y7Y7YU7(Y7Y77(Y7YUY7YUY7X.X.X.X&7&7'X&X&X.X.X&X&7&7'X&X&7'X&X&X&X.X.7'7(X.X.X.7(Y4Y4Y@7(7(Y@7)Y@Y4Y4Y47)Y47)Y@Y@7)Y@Y@Y@Y4Y47)Y@Y4Y4Y@Y@Y@Y@Y4Y4Y@Y@7'Y@7'7(Y4Y4Y47(Y4Y47(Y4Y4Y4Y'Y,Y'Y'Y'Y'Y'7'Y'7'Y'Y,Y'Y,Y'Y,Y'Y,Y,Y,YH7%YUYU7%YUYUYUYHYHYUYHY3Y37$Y,Y,7$Y,Y,Y3YUY3Y3Y,Y,7#Z&Y,7#7$Z&7$Z&Y,7%7%YLZ$Z$YVYVYLYLYLYV7$YVYL7$YLYLYV7$YVYV7$YG7%YGYV7%YVYG7%7&YXYXYNYN7&YNYN7&7'X.YN7'YNYG7'7(YGYG7(7)YGYG7)YNYNYNX.7)X.X.YNYNX.X.YNYNYN7(7(X.X.X.YNX.7(X.YNX.X.X.X.YGYGYGYGX.YGYGYG7%YG7&YG7&YGX.YGYGYGX.YG7%X.X.YGYGX.7%X.YGX.YGX.X.WOX.X.X.X.7#X.X.7#X&X.X&X&X&WGW=W=W=WGWG6Y6ZW=W=W3W=V=V=U>U>V=V=U>U>V=V=U>U>V=V=U>U>V=V=U>U>V=V=U>U>V=V=U>U>6RTLUT6S6STLTLTLV?V?V?6SV?V?6STLV?V?TLTLUGUGTL6RTL6RTLTLUGUGTLUGV;V9V;V9V96PV;V;V;V;6PV;V9V96P6QV9V9V9V;TL6P6QUG6QUGTLTLUGUGTLTLUGUGTL6PUGUGUG6P6P6QTLTLV;6QTUTUV;V;TUTUUKUK6P6QUKUK6QUKUKUKUPUKY.Y.6PY.YI6PYIYI6PY'Y.Y'Y.Y.Y.6PY.Y.6PYIY.Y.YIYIY.Y.6O6P6PYIYIYI6P6QYIYI6Q6RYIYIY.Y.6RY.YI6RYIYIY.Y.YIY.6QY.YIY.Y.Y.YIYIYI6PYIYI6P6QYIYIY.Y.6QY.YI6QYI6RYIY.YIY.Y.6QY.6RY'Y'Y.Y.Y'6QY.Y.Y'Y'Y'6QY'6QY.Y.Y.6Q6RY.6R6SY.Y.Y'Y'Y.Y.Y'Y.Y.Y.Y'Y'Y.Y.6PY'Y.Y'Y'Y'6PY'6PY.Y.Y.Y'Y'6PY.Y'Y'6PY'Y.6PY.6QY'Y'6QY'Y'Y'Y'6QY'Y,Y'Y'Y,Y'Y,6PY'Y'6P6QY'Y'6QY'Y,Y,Y'6QY,Y,Y'Y,Y'6PY'Y'Y'Y'Y'Y,Y'Y'Y,6OY'6OY,Y,Y,Y,6OY,6OY,6PY,Y'Y,Y'Y'Y'6OY,Y,6OY,Y,Y,Y,Y'Y,Y,Y.Y'Y.Y.Y'Y'6MY'Y.6M6NY'Y'Y'Y'Y,Y'Y,Y'6MY'Y'6MY,Y'Y,Y'6M6MY,6NY,Y'Y'Y'6N6NY,Y,Y,Y'Y'Y'6N6NY,Y,Y,Y,Y,6NY'6N6OY,Y,Y.Y.Y.Y'Y.Y'6NY'Y.6NY.6OY.Y.6O6P6P6QY'Y'6QY'Y'Y'Y'Y'6Q6R6RY,Y'6SY,Y,6SY,Y'6SY'6TY,Y,6TY,Y'6TY'6U6UY'Y.6VY'Y'6VY'6VY'6W6X6XY'Y.Y.Y'6XY'Y,6X6YY,Y,YI6YYIYIY.Y.6YY.Y.6YYIYIY.YAY.Y.YAYA6XYAY.Y.Y.6XY.Y.YIYI6W6XYIYI6X6YYI6Z6Z7#Y.7$7$7%YIYI7%7&YIYIYAYA7&7'YAYA7'YIYAYAYA7'YAY,Y,Y,YA7&YAY,Y,Y,7&Y,YI7&YIYIY,Y,7&Y,YI7&YI7'Y,7'Y,7(YI7(YIYIYI7(YIYIYI7(YIYI7(Y,YIYI7(Y,7)7*7*7+YIYIYIYI7+7,7,7-YIYIYIZ)YIYIZ)Z)7,Z)YI7,YIZ)Z)Z)Z)7,Z)YIYIYI7+Z)7,Z)Z)Z)Z)7,Z)7,YIYI7,YIYIYIZ)Z)YIYI7+YIYIYIYIYMYIYIYMYM7*YMYIYIYM7*YIYIYMYMYMYIYMYMY,Y,Y,7(7(Y,YIYIYI7(YIY,YIYIYI7(7(Y,Y,Y,YIYI7(YIYIY,YIY,7'Y,Y,Y,Y,Z&7'Z&7'Z&Y,Z&Y,7'Y,Y,Y,7'Y,7(Y,Z&Y,Y,7'Z&7(Z&7(Z&Z&Z&Z&Z&7(Z&7(Z&Y,Y,Y,YKYKYKY,Y,Y,7'Y,Y,YK7'Y,7'Y,Z&Y,Y,Y,7'Y,Y,Y,7'7'Z&7(7)7)Z&7*Z&YIYIYI7*YIYIYIY,YIYI7)Y,YI7)7*Y,7*Y,7+Y,YI7+YIY,7+Y,Y,Y,YIY,Y,Y,7*Y,7+Y,7+Y,YIYIYIYIYI7+YI7+YIY,7+Y,YI7,7,Y,YI7-Y,Y,7-7.Y,Y,Y,7.YI7.Z)Z)Z)7.Z)7/Y,Y,7/70Y,Y,Z)Z)7/Z)Z)Z)Y,7/Z)Z)Y,7/Z)Z)7/Y,Z)Z)Y,Y,Z)Z)7.7/Z)Z)Z)Z)Y,Y,Z)Z)7.Z)Y,Y,Z)Z)Y,Y,Z)7-Y,Y,7-Z)7-Z#Z)7.Z)7.Z)7/Z)Z)7/Z#Z#Z#7/Z#7/YZYZYZ7/YZ70YZ70YMZ)Z)Z)Z)70Z)YMZ)7071Z)Z)71Z)Z)YM71YMZ)Z)Z)YMZ)Z)70YM70YMYMYMYMZ)YM70Z)YM70YMZ)Z)YMYMZ)Z)7/70Y,7071Z#Y,71Z#Z#7172Z#Z#Y,72Y,7373Z#Z#Z#7374Y,Z#74Z#Z#Z#YMY?74Y?74Y?YMYMY?74YMYM7475YM76YM76YM77Y?Y?Z'77YM7778Y?78Y?YMYMY?Y?YM78YM78YMYM78Y?YM79YMYM797:7:Y?YM7;YMYMYM7;7;Y?Y?Y?YKYKZ#Z#YKYKZ#YKYKZ&YKYKZ&Z&78Z&Z&Z&7879Z&Z&797:7:7;YKYK7;YKYKYK7;Z&7<Z&7<Z&YK7=Z&Z&YK7=YKYKYK7=YK7=Y-Y-Y-7=Y-Y-YKYKZ#Z#Z#Z#Z#7<7<Y07=Y07=7>Y0Y0Z#Z#7>Z#Z#7>7?Y0YKYKZ#YKY-Y-7>Y-Z#Y-Z#Z#7=Y-Z#Z#Y-Y-7=Y-Z#7=Z#Y-Z#Y-Z#Z#Z#Z#Z#7<Z#7<Z#Y0Y-Y-Z#Y07;Y-Y0Y-Y-Y-Y07;Y07;Y0Y07;7<Y0Y07<7=Y0Y07=Y-Y0Y07=Y0Y0Y0Y-Y-7=Y-Y-Y-7=Y-Y-Y-Y-7=Y-7=Y0Y0Z#Z#7=Z#Y?Y?7=Y?7=7>Y?Y?Z#7>Y?Y?Y?Y07>Y07>Y0Y?Y?Y?Y?Z'7>7>Y07?7@Z'Z'Z'7@Z'Z'YP7@Z'Z'YPZ'Z'Z'Z'7?7?Z'YPZ'Y-Y-Y-7?Y-Y-Y-Y07>7?Y0Y0Y07?Y0Y07?7@Y0Y0Y-Y-Y-7@Y-7@YYYYY-7@Y-7AYYYY7A7BYYYY7BYYY-Y-Y0Y07A7BY0Y0Y0Y07B7CY07CY+Y+Y0Y07CY0Y0Y0Y07CY/Y/Y+Y+Y/Y/7BY/Y07BY0Y/YEYEZ&Z&Z&7AZ&YEYE7AY<Y<YEYEY<Y<YYYYYY7@YYYY7@7A7AY<Y2Y27AY2Y/Y2Y<Y<Y2Y2Y<Y<Y2Y<Y27?Y2Y<Y<Y<Y2Y<Y2Y<Y2Y<Y2Y<7=Y<7=Y<Y2Y<7=Y<Y/7>Y/7>Y/Y/7>7?Y<Y/Y<Y<Y/Y/7>Y/Y/Y/Y<Y<Y/Y/YGYG7=7>YGYGY<Y<Y<Y<7=Y<Y<Y<Y<Z(Y<Y<Z(Z(Y<Y<Z(Z(Y<7:Y<Y<7:YGY<Y<7:YG7;YGYGYGY<Y<YGYG7:7;YGYGY<YGY<YG7:YGYGYGYG7:Z%Y)Y)Y)VT79VQVQ797:VQVQVNX(VNX(VNVN797:7:X(X(X(X'W3X'W3W3W3W379W379X'X'79X'X'X'797:WUWUW%W%WUW%797:WUWU7:X,WUWUX,X,WU7:U>TTU>7:U>U>U>TTU>79TTTTTUTUTLTLTUTUTLTLTUTUU0U07677U0U0TLU077U07778TLTL78TUU0U0TUTUU0U07778U0U0TUTUU0U0TUTU7778TUTUV;V;TU77TU7878V;79V;797:V;V;TUTUTU7:TUTU7:7;TUTU7;7<TUTU7<7=TUTU7=7>7>V;7?V;7?V;V;V;TUTUUPUP7>U57?U5U4U4TLU4U0UPU0UPU0UPU0UPUPUPU97<U97<U9U9V;7<V;7=V;7=V;7>TUTUTU7>7>V;7?V;TU7?TU7@TUV;TUV;7?V;TUV;TUV;TUV;V;7>V;7?UPUP7?7@7@UP7AUPV;V;V;UP7@UPUPUPV;UPUPUPYB7?YBY>7?YBY>Y>YBYB7?Y>YB7?Y>Y>Y>YB7?YBY>7?Y>YBYBYBYBYIYB7>YBYBYIYIYBYIY>YBYBYBYIYIY(Y(YIYIYI7;YIYIYBYBYIYB7:YI7:YIYIYIYBYIYBYIYIYIYBYBYIYIYBYBYIYIYBYIYIYI7677YIYI77YIYMYMYI77YI77YI78YIYIYFYIYMYM77YM77YMYIYMYMYMYM77YM77YMYMYMYM77YO77YMYOYMYOYO777878YMYMYM78YPZ'Z'YPYP78YP78YPZ'YPYPYPZ'YPYPYPZ'77Z'YPZ'Z'Z'YJZ'7676YJZ'YJYP76YPY+YWYWYW76YSYSYWYSYW7576YS76Y/Y+7777Y/Y+Y+Y/Y/Y+Y+Y/Y/Y+Y/YT7576Y/76Y/YTYTY/Y/YTYTY/Y/Y/7575YTYTYTY/Y/757676YTYTYTY/Y/76Y/YTY/YTYT75YTYTYTY9Y975Y9Y*Y9Y*Y*Y*Y*Y*74Y*74Y*Y*Y9Y9Y9X#Y973X#X#73X#X#X#VWVWX#73VW7374X#74VWX#VWX#74X#X#7475X#X#X/VWX/X/VWVWVW74VWVW7475VSWSVS75VSVSVS75VS75VSVS75WSWSW,WSWS75WSWSWSVSWSWSWS74757576VSVSWSWSVSWSWPVNWPWP74VNWP75VNVN75WY75WYWYWYVNVN7576VN76WYWY76WYWYWYVNVN7677VN77WYWY7778WYWYVNWYWYWYW#77W#WYWY77WYWY7778WYWYW#WYWYWYW#WYWYWYVNVNW#W#VNVN75VNW#VNW#W#VNVNVN7474WY75WYWY75W,W,75WYW,W,WYWYW,W,WYWYWY74WY74WYWYWYWYW,W,WYWY7374WYWY74W,WYWYW,W,WYWYWY73WYWY7374WYWY747575WYW,W,WY75WY76WYWYW,W,W#W#WY75W#W#75WYW,W,7576W,W,W,7676WYWYWY76WYWYWYW,76W,W,76WYW,W,WYWYW,WYWYWY75WYWYWYWY75WYWYW#W#W,W,W#W#73W#W#W#7374W,W,7475W,W,75W,W,W,W,W,W#W#W#W#W#74W#W,74W,W,W,W,W#WYWY73WYW,W,W,W#WYWYW#W#71W#W#W#7172WYWYW#727374WYWYWYW#W#WYWYWY72WYWYWYWS72WS73W,W,73WSW,W,7374W#WYW#WYWY73WYW#W#W#W#73W#W#WYW#WY72WYWY72WYWYWYWYW#WYWYWYWY7172WYWY72W#72W#W#W#W#W#WYWYW#W#71W#W#W#717272W#WYWYW#W#W#72W#W#727373W#WY747475WYWYWYWYW#WYWYWYWY74WYWYWY74WY7475W#WYWYWY757576W#W#7677W#W#77W#W#W#WYWYWY77WY7778W#78W#W#W#WYWYW#WYWYWYW#W#WYWY767777W#W#W#W#77W#W#WY7778W#WY78WY7979W#7:W#VNVNW#W#VNVNW#W#VNVNW#78W#78W#W#78VNW#W#VNW#W#W#WUWUWU77WUWU77WUWUWUWU77WUWU77WM77WMWMWMWMWM77WMWUWMWMWMWU76WMWMWMWMWT76WT76WTWTWMWMWM767677WTWTWMWMWM77WM7778WT78WTWTWTWMWMWM78WM78WTWT78WTWTWT78WTWTWTWU78WMWMWUWM7879WM79WM7:WMWMWM7:WMWM7:7;WT7;WTWTU>UYU>UYU>7:U>7;U>U>U>7;U>7;U>U>U>UYUYUYU>U>7:7;U>U>7;V:U>U>V:V:U>U>V:V:U>79V:V:U>U>79V:U>U>V:V:U>U>V:V:U>77V:V:77U>V:V:U>77UYUY77U>UYUY7778UYUYV:UYV:78V:UY78U/UYUY7879UYUYUYTTUYUYTTTT77TTTTTTUY77U/U/7778U/U/78U/U/U/U/78U/U/7879U/U/TTTTUUUUTTTTUUUUTTTT77TTUU77UUUUUU77UUUU77TTUU78TTTT78TTUUTTUUUUUPUP77UPTLUP77UP77YBY>YBY>YBY>777778S:79797:S:S:S:7:7;S;S0S07;7<7<S0S:S:W-W-7<7=W-7=7>WFW-W-7>W-WFW-WFWFY9Y9W(7=7=W(W(W(Y9Y9W(7=Y9Y97=Y9W-W-WFW-W-W-WFWFW(W(7;7<W(W(7<7=VZ7=VZW(7=W(W(W(VZVZVZW(VZVZVZW(VZW6VZW6W6W6W6W/W679W6W6W(W(79W(79W(W6W(VO79VOVOW(W(79W(VOW(VOW(W6W6W.78W.W.78W6W.W.W.W6W6W6W/W/W6W/W/W/W6W6W675W6VOW6VO7475W(W(W(VUW(VUW(74W(VU74W(W(W(Y9Y9Y974VU74VUVUY9Y9VUY9X#73X#X#7374X#X#VUVU747575X#VUVU75X#76X#X#X#VUX#VU7576X#X#X#VUX#X#X#7576X#X#X#76X#X#VUVUX#X#VU7575X#VUX#VUX#VUVU7475VUVUVUVUW@W@X#X#74X#X#X#VUX#VU73VU74VSVSX#VSX#73X#X#VSVS73VSX#X#X#7373VSVSVSW773W7W773WSW7WSW773W7W77374W7W77475W77676W,W777W,W,77W,77W,W778W,W,78W,W778W7W778W,W7W,W7W7W,W7W,W7W,W,W7W9W7W9W775W7W7W9W975W975W9W7W7W775W9W97576W7W7W9W9W7W7W9W975W975W9W7W9W7W775W975W9W9W9W7W9W7W974W9W9W9W7W9W7W773W<W<W<W9W9W97373W<W<W<73W<W9W9W9W<W9W9W9W9W972W972W<W<W9W<W<W<W9W9W971W9W9W9W<W970W9W970TLUU71TM7172UL72UL737474TLUE75UE75UEUETLTL75TL75TLUE76UETLUE76TLTL76TL76TLTLTLTLTLUE767677UE78UE78UEUE78TL79TLUE79UEUE797:UEUETLUPTL7:TL7:UPUP7:X#VUVUX#X#7:7;W+W+W+7;W+WEW+W+7:WE7;WEWEWE7;7<WEWE7<7=WEWE7=W+WEW+W+W+WE7<WEW+W9W97<W9X#7<X#W9W<7<W<7=W<W:W<W:7<W:W<W<7<WUW:7=W)W<W)7=W<W<7=W<7=W<W<W<W<W<7=W<W)7=W)7>7>W<W<W<WU7>7?7@WUWUWU7@WUWUWU7@WU7@W1W17@W1W1W1WUWUWUWXWUWXWXWX7>UIUIUIULUL7>7?UL7?7@UITHTHTATATHTHTATHT+T+UCUCUCUCUC7=UCUC7=UCSA7=SASZX-X-X-7=7=VXVXVX7=X*VXVXX*X*7=X*7=X*X*X*X*X*7=X*X*X*X*7=X*X*7=7>X*VXX*VXX*X*VXX*VX7<VXVXX*X*7<X*VX7<VX7=VXX*VXX*WUW1WUW1WUWUWU7;WU7;WU7<WU7<WUWUWAWA7<WAWU7<W1W17<W1W1W17<TI7=TI7=TITDTI7=S4S4S4SX7=S@7>7>SXS@7?S@7?S@S@S@7?S@S@SXSX7?SXS@7?S@S@TD7?TD7@S.SMS.S.S.SMS.S.SMSM7>7?SMSM7?SMS.SMS.SMSM7>SMSMSMSMSM7>7>7?T$T$T$SK7?SKT$7?T$7@T$7@T$7AT$7A7BSKT$SKSKSK7ASKT$SKS3S37A7BS3S3SJSJS3S3S37A7AS3SO7BS3SOS3SO7ASOSOSOSO7A7BSG7BSGSOSOSOSGSOSGSO7ASOSO7ASOSOSOSGSGSWSWW>W>W>WVW>W>W>7?WV7?WVWV7?WVWVWVW>W>7?W>WV7?WVWVW>W>7?7@W>W>WVWVW>WVW>WVW$W$W$W?W$W?W?W?7<U#T-U#SJSJSJ7<SJ7<SJSJS7S77<7=S77=7>SJSOSOSO7>SGSG7>SGSO7>SOSG7>SISISISISI7>SISISISOSISOS8SOS8SOS8SOS8SG7;SG7<SISISIS8S8S8S8S>SISIS>S>SISIS>S>S>78S>S>78SWS>79S>S>S>SWV$TPV$78V$TPV$TPV(V(V(7777U@T=78V(V(T=T=V(V(77T=V(7778T=U@U@78U@SPSOSP78SP78SPSP78SOSPSPSP78SPSPS>S>SPSPS>S>77S>SP77SPSPSPS6SPSPS6S6SRS6S6S6S6SRSRSR74SR7475SRSRS6S67576S676SRSRU<U<U<76U<U<76U<U<TGTGTGT;TGT;TG747576V.SD76SDSDSPSP76SPS6S6S676SRSR76SRSESDSESET/75T/7676T077T077T0T/T0T0T0T077T077T0T0T0T;T077T077T0T0T;T;77T;T0T;T0T07677T0T0T;T;77T;T077T0T;T;77T;78T;TGT;T;T;T;T;7777V.78V.78V.797:V.V.7:V.T0T0T;T0T0T079V.79V.V.V.T0T079V.T0T0T0V.78V.V.V.T;T;7879T;T;79T;T079T0T0T0T079V.SESESSSSSESESESSSESE7778SE78SESSX;X;7879X;X;797:T57:T5T5T3T37:7;7;7<T5T5T5T3T5T3T5T3T5T5T3T37:T3T57:T5T5T0T0T7T7T0T0T7T7T0T.T.T.T.T0T.T.7677T.T.T0T077T0T.77T.T.UMUMT0UMV.V.UMV.T075T0UMUMV.UMUMUMV.UM74V.V.74V.UM74UMUMV.V.UMV.T0UMT0UM72UM73UM7374UMUM74UMT075T0T0T0UMT0UMT0T073T.T.T.T0T073T073UMT0UMT0UM73UMV.V.UM7373V.UM747475UMUMSSSSSE75SESSSSSS74XBXBXBXDXD74XD7475XBXB75XD76XD76XDXBXBXDXBXBXBXDXDXB75XDXD7576XDXD76XD7677XBXB7778T5T5T.T.T5T.YUY7YUYUYUY7YUYUY7Y7YUYUY7Y7YUY7X.X.X&X&X.X.X&X&X&X.X&X&X.X.X&X&X.X&X&X&X.X.X&X&X.X.X&X&X.X.X.X&Y4Y4Y@Y@Y4Y@Y4Y@Y4Y@Y@Y@Y4Y4Y@Y@Y4Y4Y@Y@Y4Y@Y@Y@Y4Y@Y@Y@Y4Y@Y4Y4Y@Y@Y4Y4Y@Y@Y4Y4Y4Y@Y4Y4Y@Y@Y4Y4Y'Y,Y'Y,Y'Y,Y'Y,YHYHYUYUYHYHYUYUY3Y3Y,Y,Y,Y3Y,Y,Y,Y,Y,Z&Z&Z&Y,Z&Y,Y,Y,Z&Z&Z&Y,Z&Z&Z&Y,Z&YLYLZ$Z$YLYVYLYVYVYVYLYLYVYGYVYVYGYGYVYGYVYVYVYGYVYVYVYGYNYNYXYXYNYNYXYNYXYXYXYNYNYNX.X.YNYNYNX.YNYGYNYNYGYNYGYGYNYNYGYGYGYNYGYGYNYNYGYGYNYNYNYGYNYNX.X.YNX.X.X.YNYNX.X.YNX.YNX.YGYGYGX.YGX.YGX.YGYGYGX.YGYGX.X.X.YGX.YGX.X.X.X&X.X&X&X&WGWGW=W=WGWGW=W=UTTLUTUTUTTLUTUTUTTLUTTLV?V?V?TLV?V?TLTLUGUGTLUGTLUGTLTLV9V;V9V;V9V9V9V;V9V9V;V;V9V9V;V;TLUGUGUGTLUGUGUGUGUGTLUGUGUGTLUGUGUGUGTUUGUGTLTLUGTUTLTLV;V;TUV;UKUKUKUPUKUKUPUPUKUKUPUPY.Y.YIY.Y.Y.YIY.Y.Y'Y.Y.Y.Y.YIYIY.YIYIYIY.Y.YIYIY.Y.YIYIY.YIYIYIY.Y.YIY.Y.Y.Y.YIY.Y.YIYIY.Y.YIY.Y.Y.YIY.Y.Y.YIY.YIYIYIY.Y.Y.YIYIY.Y.YIYIY.Y.YIY.Y.Y.YIYIY.Y.YIY.YIY.YIY.Y'Y'Y.Y'Y.Y'Y.Y'Y'Y'Y.Y.Y'Y'Y.Y.Y'Y.Y.Y.Y'Y'Y.Y.Y'Y.Y.Y.Y'Y'Y.Y.Y'Y'Y.Y.Y'Y'Y.Y'Y.Y'Y.Y'Y.Y'Y.Y.Y'Y'Y.Y.Y.Y'Y.Y.Y.Y'Y.Y'Y.Y'Y.Y.Y'Y'Y.Y'Y'Y'Y,Y,Y,Y'Y,Y,Y'Y'Y,Y,Y'Y'Y,Y,Y'Y'Y,Y,Y,Y,Y'Y'Y'Y,Y'Y,Y'Y'Y,Y,Y'Y'Y'Y,Y,Y,Y'Y'Y'Y,Y'Y'Y'Y,Y,Y,Y'Y'Y,Y,Y'Y'Y,Y,Y'Y'Y.Y.Y.Y'Y'Y'Y.Y'Y.Y.Y'Y,Y'Y'Y'Y'Y'Y,Y'Y,Y'Y'Y,Y,Y'Y,Y'Y,Y'Y,Y'Y'Y,Y,Y'Y,Y'Y,Y'Y,Y,Y,Y'Y,Y,Y,Y,Y'Y'Y'Y'Y'Y,Y,Y'Y,Y,Y,Y.Y.Y.Y'Y.Y'Y.Y.Y.Y.Y.Y'Y.Y.Y.Y'Y.Y'Y'Y'Y.Y'Y.Y'Y.Y'Y'Y'Y'Y'Y.Y'Y'Y'Y'Y,Y'Y,Y,Y,Y'Y,Y'Y'Y'Y,Y'Y,Y,Y,Y,Y'Y'Y,Y,Y,Y'Y,Y'Y'Y,Y,Y'Y,Y'Y,Y'Y,Y'Y,Y'Y,Y.Y'Y.Y'Y'Y'Y.Y.Y'Y'Y.Y'Y.Y'Y.Y'Y'Y'Y.Y.Y'Y'Y.Y.Y'Y'Y'Y.Y'Y'Y'Y,Y'Y,Y,Y,Y'Y,Y,Y,Y.Y.YIYIYIY.YIYIY.Y.YIYIY.Y.Y.YAY.YAY.Y.Y.Y.Y.YIY.Y.YIYIY.Y.YIYAY.YAYAYAYIYAYIYAYAYAY.Y.YAYAY.YAY.YAY.YAYAYAYIYIYAYAYIYIYAYAYIYIYAYAYIYAYAYAYAYIYAYAYIYAYAYAYIYIYAY,YAY,YAY,YAY,Y,Y,YIYIYIY,YIYIYIY,YIY,YIY,YIY,Y,Y,YIYIY,YIY,Y,Y,Y,Y,YIY,YIYIYIY,YIYIYIY,Y,YIYIY,Y,YIYIY,Y,YIY,YIY,YIYIY,YIYIYIYIY,YIYIY,Y,YIY,YIYIYIZ)YIYIZ)Z)Z)Z)Z)YIZ)Z)Z)YIYIZ)Z)Z)YIZ)YIZ)Z)Z)Z)YIYIZ)YIZ)YIYIZ)Z)Z)Z)Z)YIZ)Z)Z)YIZ)YIYIYIZ)Z)YIYIYIYMYIYMYMYIYMYMY,Y,YIY,Y,Y,YIYIYIY,YIYIYIY,YIY,YIY,Y,Y,YIYIY,Y,Y,Y,YIY,Y,Z&Z&Z&Y,Z&Y,Z&Y,Z&Y,Z&Y,Z&Y,Z&Y,Y,Y,Z&Y,Y,Y,Z&Y,Z&Z&Z&Z&Z&Y,Z&Y,Z&Y,Z&Y,Z&Y,Y,Y,Z&Y,Z&YKY,YKYKY,Z&Z&Z&Y,Z&Z&Z&Y,Y,Y,Z&Y,Y,Y,Z&Z&Z&YKYKZ&Z&YKYKY,Y,Y,Z&Y,Z&Z&Z&YIYIYIY,YIY,Y,Y,YIY,Y,Y,YIY,YIY,YIY,YIY,YIY,YIY,YIYIYIY,YIY,Y,Y,YIY,YIY,YIY,YIY,YIY,YIY,YIYIYIY,YIY,Y,Y,YIY,YIY,Y,Y,YIY,YIY,YIY,Y,Y,Z)Y,Y,Y,Y,Z)Y,Y,Z)Z)Y,Y,Z)Y,YIYIZ)Z)Z)Z)Y,Y,Z)Y,Z)Z)Y,Y,Z)Z)Y,Z)Z)Z)Y,Z)Z)Z)Y,Y,Y,Z)Y,Y,Y,Z)Y,Y,Z)Y,Y,Y,Y,Z)Y,Y,Z)Z)Z)Z)Y1Y1Y,Y,Z)Z)Y,Y,Z)Z)Z)Z#Z)Z#Z#Z#Z)Z#Z)Z#Z)Z#Z)Z#Z)Z#Z)Z#Z#Z#YZZ#YZZ#Z)YZYZYZYZYZZ)YZZ)YZZ)Z)Z)Z)YMZ)YMZ)YMYMYMZ)YMYMZ)Z)YMYMZ)Z)YMYMZ)YMZ)YMZ)Z)Z)YMZ)YMYMYMYMZ)YMYMZ)Z)Z)YMZ)Z)YMYMZ)YMYMYMY,Y,Y,Z#Y,Y,Y,Z#Y,Y,Z#Z#Y,Y,Y,Z#Y,Y,Z#Z#Y,Z#Y,Y,Y,Z#Z#Z#Y,Z#Z#Z#Y,Y,Y,Z#Y,Y,Z#Z#Y,Z#Z#Z#YMY?Y?Y?YMY?YMYMY?Y?Y?YMY?Y?YMYMY?Y?YMY?YMY?YMY?YMYMYMY?YMY?YMYMZ'Y?Z'Z'YMY?Y?Y?YMY?Y?Y?Y?Y?YMYMYMY?YMYMYMY?YMYMY?Y?YMYMYMY?YMYMYMYMY?Y?YMYMY?YMY?Y?YMY?Y?Y?YMYMYMY?Y?Y?YMYMYMY?Z&Z&YKZ&Z&Z&YKYKZ&Z&YKYKZ&Z&YKYKZ&Z&YKZ&YKZ&YKYKZ&Z&YKYKZ&Z&YKYKYKYKYKZ&Z&Z&YKZ&YKZ&YKYKZ&Z&YKZ&Z&Z&YKYKYKYKY-YKYKYKYKY-Y-YKY-Y-Z#Z#Y0Y0Z#Z#Z#Y0Z#Y0Y0Y0Z#Z#Y0Y0Z#Z#Y0Y0Z#Z#Y0Y0Z#Y0Z#Y0Z#Y0Y0Y0Z#Y-Z#Y-Z#Y-Z#Z#Z#Y-Z#Z#Z#Y-Y-Y-Z#Z#Z#Y0Z#Z#Z#Y0Y0Y-Y0Y0Y0Y-Y0Y0Y0Y-Y0Y0Y-Y-Y0Y0Y-Y-Y0Y0Y-Y-Y0Y0Y-Y-Y0Y0Y-Y-Y-Y0Y-Y-Y0Y0Y-Y-Y0Y-Y-Y-Y-Y0Y-Y-Y0Y0Y-Y0Y0Y0Z#Z#Z#Y?Y?Y?Z#Z#Z#Z#Y?Y?Z#Z#Y?Y?Z#Y?Z#Y?Y?Y0Y0Y0Y0Y0Y?Y0Y?Z'Z'Z'Y0Z'Z'Z'Z'Y0Y0Y0Y0Y0Z'Y0Z'Z'Z'YPYPZ'YPYPYPYPYPZ'Z'Z'YPYPY-Y-Y0Y0Y-Y-Y-Y0Y-Y-Y0Y0Y0Y-Y0Y0Y-Y-Y0Y0Y-Y0Y0Y0Y-Y-Y-YYY-Y-YYYYY-YYY-YYY-YYY-Y-YYYYY0Y0YYY0Y0Y0Y0YYY0Y0Y-Y-Y0Y0Y-Y0Y0Y0Y0Y0Y0Y+Y0Y0Y+Y+Y0Y+Y+Y+Y0Y0Y+Y+Y0Y0Y0Y/Y+Y/Y+Y+Y0Y0Y0Y/YEYEZ&YEYEYEY<Y<YYYYY/Y/YYYYY/Y/YYY/Y/Y/Y<Y<Y2Y2Y2Y2Y/Y2Y2Y<Y2Y2Y2Y<Y<Y<Y2Y<Y2Y<Y<Y<Y/Y/Y/Y<Y/Y<Y/Y<Y/Y/Y<Y<Y<Y/Y<Y<Y/Y/Y<Y/Y/Y/Y<YGY<Y<YGYGY<YGY<Y<Z(Z(YGYGY<Y<YGYGY<YGY<YGY<YGY<Y<Y<YGYGYGY<YGYGYGY<Y<YGYGY<YGYGYGZ%Z%VTVTVTVQVTVTVQVQVTVQVQVQVNVNX(X(VNX(X(X(VNVNVNX(W3W3W3X'W3W3X'X'W3W3X'X'W%W%WUWUW%W%WUW%WUX,WUWUX,X,WUWUX,X,WUWUWUX,WUX,U>TTU>TTU>TTTTTTTUTUU0U0TUTUU0U0TLU0TLU0TLU0TLTLU0U0TLTLTUTUU0U0TUTUU0U0TUTUU0U0TUTUTUV;TUTUV;V;TUTUTUV;TUV;V;V;TUV;TUV;TUV;TUV;TUTUTUV;TUTUV;V;TUTUTUUPTUTUUPUPTUTUUPUPTUTUUPUPTUTUUPUPTUTUUPUPTUTUUPUPTUTUUPUPTUTUUPUPTUV;TUV;TUV;TUV;TUTUTUV;TLTLTLU5TLU5U5U5UPUPU9U9UPUPU9U9V;UPV;UPV;UPV;UPV;UPV;V;V;V;V;UPTUV;V;V;TUV;TUV;TUTUTUV;TUTUTUV;TUV;V;V;TUTUTUV;V;UPV;UPUPUPV;V;UPUPV;V;UPUPV;UPV;UPV;UPV;UPV;UPV;V;UPUPYBYBYBY>YBYBY>Y>YBYBYBY>YBYBYBY>Y>YBYBYBY>YBYBYBYIYIYBYBYIYIYIYBYBYIYBYIYIYIYBYIYIYIYBYBYIYIYBYBYIYIYBYBYMYMYIYMYIYIYIYFYFYFYIYFYMYMYIYMYIYMYIYMYMYMYMYOYMYOYMYOYMYMYOYOYMYMYOYOYOYOYMYMYOYOYMYMYOYOYOYMYPYPZ'Z'YPYPZ'YPZ'YPZ'Z'YPYPZ'YPZ'YJZ'YJYJYJZ'YJYPY+Y+Y+YWYWYSYSYWYSYWYSYWYSYSYSY/Y/Y+Y/Y/Y/Y+Y/Y+Y/Y+Y+YTYTY/Y/YTYTYTY/Y/Y/YTYTY/YTYTYTY/Y/YTYTY/Y/Y/YTY/YTYTYTY/YTYTYTY/Y/Y/YTY/YTYTYTY9Y9Y*Y9Y*Y9Y*Y*Y*Y*Y*Y9Y9Y9X#X#Y9X#X#X#VWVWX#VWVWVWVWX#VWVWX#X#VWVWX#X#VWVWX#X#VWVWX#X#VWVWX#X#VWVWX#X#VWVWX#X#VWVWX#X#WSWSVSVSVSWSVSWSVSWSVSWSWSWSWSW,WSWSVSVSVSWSVSVSWSWSVSWSVSWSVSVSWSWSVSWSVNVNWPVNVNVNWPWPVNVNVNWYVNWYWYWYVNVNVNWYVNWYWYWYVNVNVNWYVNWYVNVNWYVNWYWYVNVNWYWYVNVNWYWYVNVNWYWYVNVNWYWYW#WYWYWYWYW#WYWYW#W#WYWYW#WYWYWYVNVNW#VNVNVNWYWYVNWYVNWYVNWYWYWYWYWYW,W,WYWYW,WYWYWYWYW,W,W,WYW,WYWYW,W,WYWYW,W,WYW,W,W,WYW,WYWYWYWYW,W,WYWYW,W,WYWYW,W,WYWYW,W,WYWYW,W,W,W,WYW,W,W,WYW,W#W#WYWYW#WYWYWYW,W,W,WYW,WYWYWYW,WYWYWYW,W,W,WYW,WYWYWYWYWYW,W,WYWYW,W,WYWYW,WYWYWYW#W#W,W,W#W#W,WYW,W,WYWYW,W,WYWYW,W,WYW,W,W,W,WYW,W,W#W#W#W,W#W,W,W,WYWYWYW,W#WYW#WYW#W#WYWYW#W#WYW#W#WYW#WYW#WYW#W#WYWYW#WYWYW#WYWYWSWSWSW,W,W,WSWSW,W,WSWSW,W,W7W7W,W,W7W7WYW#WYW#W#W#WYWYWYW#WYWYW#WYWYWYWYW#W#W#W#WYW#WYWYWYWYW#WYWYW#W#WYW#WYWYWYW#WYWYW#W#WYW#WYW#WYWYW#W#WYWYW#W#WYWYW#W#WYWYW#W#WYW#WYW#WYWYW#W#W#WYW#WYWYWYWYWYWYW#WYWYW#W#WYWYW#W#WYWYW#W#WYW#WYW#WYWYWYW#WYWYW#W#WYWYW#WYW#W#WYW#WYW#W#W#WYWYWYW#WYWYW#W#WYW#W#W#WYWYW#W#WYWYWYW#WYWYW#W#WYW#WYW#WYWYW#W#WYW#W#W#WYW#W#W#W#W#WYWYWYWYW#W#W#W#WYWYWYWYW#W#W#VNW#W#VNVNW#W#VNVNW#VNWUWUWMWMWMWMWMWUWUWUWUWMWUWUWUWMWUWUWUWMWUWMWUWUWUWUWMWMWMWMWTWTWMWMWTWTWMWTWMWTWMWMWMWTWMWTWTWTWMWMWTWMWMWMWTWTWMWTWTWTWMWMWTWTWMWTWTWTWMWMWMWTWMWMWTWTWMWTWTWTWUWUWMWMWUWMWMWMWMWUWMWMWMWTWMWMWMWTWMWTWMWMWTWMWMWMWMWTWMWMWTWTWMWTWTWTUYUYU>UYU>UYU>UYU>UYUYUYU>UYU>U>U>U>V:V:U>U>V:V:U>U>V:V:U>U>V:V:U>U>V:V:U>U>U>V:U>U>V:V:U>U>UYUYU>U>UYUYU>U>UYUYU>UYUYUYV:UYV:UYV:V:U/U/U/UYU/U/UYUYU/U/UYUYUYTTUYUYU/U/UYUYU/U/UYUYU/U/UYUYU/U/UYUYU/U/UYUYU/U/UYUYU/U/TTTTUUTTTTUUUUUUUUTTUUUUTTTTUUTTTTTTUUTTUUTTUUUUUPUPTLUPTLTLUPUPY>YBY>YBY>YBY>YBS:S;S:S;S:S:S;S;S;S;S:S:S:S:S;S:S:S:S;S:S:S:S;S:S:S;S:S:S:S0S:S:S0S0S:S0S0S0S:S0W-W-WFWFW-WFWFWFW-W-W-WFWFW-WFWFWFW-WFW-Y9Y9W(W(Y9Y9Y9W(W(Y9W(W(W(Y9W(W(W(W(VZVZW(W(VZW(W(W(W(VZW(W(VZW(VZVZW(VZVZW(VZW(W6W(W6W6W6W(W6W(W6W(W6W6VOW(VOW(W(W(VOW(W6W6W.W6W.W.W.W6W6W6W6VOY9Y9W(Y9Y9Y9W(W(W(W(W(VUY9Y9W(W(Y9VUY9VUY9Y9VUY9X#VUX#X#VUVUX#X#VUVUX#X#VUVUVUX#VUX#X#X#X#X#VUX#VUVUVUX#X#X#VUX#VUVUVUX#VUVUX#X#VUX#VUVUX#X#VUX#X#VUVUVUVUX#VUVUVUX#VUX#X#X#X#VUX#X#VUVUVUX#VUVUVUX#VUX#VUX#VUX#X#VSX#X#VSVSX#VSX#X#X#VSX#VSVSVSW7WSW7W7WSWSW7WSWSWSW7WSWSWSWSW7WSWSW7W7W7W,W7W7W,W,W7W,W7W,W7W7W,W,W7W,W7W,W7W7W,W,W7W,W7W,W7W7W7W,W7W7W,W,W7W,W7W,W7W7W,W,W7W,W7W9W7W7W7W9W7W9W7W9W7W7W7W9W9W9W9W9W7W7W9W9W7W9W9W9W7W9W7W9W7W9W7W7W7W9W7W7W7W9W7W9W9W9W9W9W9W<W9W9W<W<W9W9W9W<W9W<W9W<W9W<W<W<W9W9W9W<W9W9W9W<W9W<W9W<TLTLUUTLTLTLUUTLTMULTMULTMTMTMULULULTMULTMULTMTMULULTMULUETLUEUEUETLUETLTLTLUETLTLTLUETLUETLUEUEUETLTLTLTLTLUEUETLTLUETLUETLTLTLUETLUETLTLTLUEUETLTLUETLUETLUEUETLTLUETLTLTLUETLUETLUEUEUETLUEUETLTLUEUETLTLUETLTLUPTLUPTLUPUPUPX#X#VUVUX#X#VUVUX#X#VUX#W+W+W+WEW+W+W+WEW+WEWEWEW+WEW+W+WEWEW+WEWEWEW+W+WEWEW+W+WEW+WEW+W+W+WEW+X#W9X#X#X#W9W9W9W<W<W<W:W<W:W:W:W<W:W<W:WUWUW:W:W:WUW:W:W)W<W)W)W)W<W)W<W)W)W)W<W<W<W)W)W)W)W)W<W)W<W)W<W)W)W<W)WUX-X-X-WUWUX-X-WUX-X-X-WUWUW1WUWUW1W1W1WUWUWUW1WUW1W1W1T>UIUIUIUIULUIUIULULUIULULULUIUIULUIULUIUCUCU?U?UCUCU?U?SASZSASZX-X-X-VXX-VXX-VXX*X*VXVXVXX*VXX*VXX*VXX*X*X*X*VXX*X*X*VXX*X*VXVXX*VXVXVXVXX*VXVXVXX*VXVXX*X*VXX*VXX*VXX*WUWUWUWAWUWAWAWAWUWAWUWAWUWUWUWAWAWAWUWAWUWUWUW1WUW1W1W1TDTITITITITITDTITDTITDTDS4S=S4S4SXSXSXS@SXSXS@S@SXSXS@S@SXSXS@SXSXSXS@SXSXSXS@S@S@SXS@S@S@SXS@SXTDTITDTITDTITDTISMSMS.S.SMSMS.S.SMSMS.S.SMT$SMSMSMT$SMSMSMSMSMT$SMSMT$T$T$T$T$SKT$T$T$SKT$SKT$SKT$SKT$SKT$SKT$T$T$SKSKSKT$SKT$SKT$SKT$SKS3SJSJSJSJS3SJSJS3SOS3SOS3S3SOSOSOS3SOSOS3SOS3SOSOSGSGSGSOSOSOSGSOSGSOSOSOSGSOSOSGSGSOSOW>W>WVWVW>W>WVWVW>WVWVWVW>W>WVW>WVW>WVWVWVW>WVWVW>WVWVWVT-U#T-U#SJS7SJS7SJS7SJSJS7S7S7SJS7S7SJSJS7S7S7SJS7S7SJSJSOSGSOSGSOSGSGSGSOSGSOSGSOSOSOSISISISOSISGSGSGSISGSISGSIS>SWS>S>SWSWS>SWSWSWS>S>V$TPTPTPV(V(V(T=T=V(T=T=T=U@T=T=V(V(T=T=V(T=T=T=V(V(T=T=U@U@T=T=SOSOSPSOSPSOSPSPSOSOSOSPSOSPSPSPS>S>SPS>SPS>SPSPS6S6S6SRSRS6SRSRS6S6S6SRS6S6S6SRS6S6SRSRS6S6SRSRU<U<U<T1U<U<T1U<TPTPTPV.TPTPV.V.TPV.V.V.SPSPSDSPSDSPSDSPS6SRS6S6SDSRSDSRT/T/T0T0T/T0T/T/T/T/T0T0T0T0T/T0T/T0T/T0T0T0T;T;T0T;T0T0T;T;T0T;T0T;T0T0T0T;T0T;T0T;T0T0T;T;T0T;T;T;T0T;T;T;T0T;TGTGT;TGT;TGT;T;T;V.T;T;V.V.T;V.T;V.T;V.T;V.T;V.T;V.T;T0V.V.T0T0V.V.T0V.T0T0V.V.T0V.V.V.T0T0T0V.T0V.V.V.T;T;T0T0T;T;T0T0T;T;T0T;T;T;T0T;T0V.V.V.SESESESSSESSSSSSSESSSESSX;XDXDXDXDX;XDXDX;X;XDXDX;XDXDXDT3T3T5T3T5T3T5T5T3T3T5T3T3T3T5T3T3T3T5T5T3T3T5T5T3T3T5T5T.T0T.T.T0T0T.T0T.T0T.T.T.T0T.T.UMUMT0UMUMV.UMUMV.UMUMUMV.V.UMV.T0UMT0UMT0T0T0UMT0T0T0UMT0UMUMUMT0UMT0T0T0UMT0T0T0T0T.T.T.T0T.T.T0UMT0UMT0UMUMUMUMV.UMV.V.V.UMUMUMV.UMUMUMV.UMUMV.V.UMUMSESSSSSSXDXDXBXBXDXDXBXDXBXDXBXDXDXDXBXDXDXDXBXDXBXDXBXBXDXDXBXDXBXDXBXBXDXDXBXBXDXDXBXDXDXDXBXDXBXDXBXBXDXDXBXBT5T.T5T5T.T.T5T5", c = ["Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Cayenne", "America/Cayman", "America/Chicago", "America/Chihuahua", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Fort_Nelson", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vincennes", "America/Iqaluit", "America/Jamaica", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Lower_Princes", "America/Maceio", "America/Managua", "America/Manaus", "America/Marigot", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Menominee", "America/Merida", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/New_Salem", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Rio_Branco", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Sitka", "America/St_Barthelemy", "America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Rothera", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Arctic/Longyearbyen", "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Atyrau", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Chita", "Asia/Choibalsan", "Asia/Colombo", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kathmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Riyadh", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ulaanbaatar", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Currie", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/Perth", "Australia/Sydney", "Etc/GMT", "Etc/GMT+1", "Etc/GMT+10", "Etc/GMT+11", "Etc/GMT+12", "Etc/GMT+2", "Etc/GMT+3", "Etc/GMT+4", "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", "Etc/GMT+8", "Etc/GMT+9", "Etc/GMT-1", "Etc/GMT-10", "Etc/GMT-11", "Etc/GMT-12", "Etc/GMT-2", "Etc/GMT-3", "Etc/GMT-4", "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", "Etc/GMT-8", "Etc/GMT-9", "Etc/UTC", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Guernsey", "Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Saratov", "Europe/Simferopol", "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zaporozhye", "Europe/Zurich", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Wake", "Pacific/Wallis"];
|
|
270
|
-
if (
|
|
270
|
+
if (z = +z, !(-90 <= (b = +b) && b <= 90 && -180 <= z && z <= 180))
|
|
271
271
|
throw new RangeError("invalid coordinates");
|
|
272
|
-
if (90 <=
|
|
272
|
+
if (90 <= b)
|
|
273
273
|
return "Etc/GMT";
|
|
274
|
-
var W = -1,
|
|
275
|
-
for (
|
|
276
|
-
|
|
277
|
-
return c[
|
|
274
|
+
var W = -1, A = 48 * (180 + z) / 360.00000000000006, o = 24 * (90 - b) / 180.00000000000003, q = 0 | A, R = 0 | o, n = 96 * R + 2 * q;
|
|
275
|
+
for (n = 56 * p.charCodeAt(n) + p.charCodeAt(n + 1) - 1995; n + c.length < 3136; )
|
|
276
|
+
n = 56 * p.charCodeAt(n = 8 * (W = W + n + 1) + 4 * (R = 0 | (o = 2 * (o - R) % 2)) + 2 * (q = 0 | (A = 2 * (A - q) % 2)) + 2304) + p.charCodeAt(n + 1) - 1995;
|
|
277
|
+
return c[n + c.length - 3136];
|
|
278
278
|
}
|
|
279
|
-
|
|
280
|
-
})(
|
|
281
|
-
var
|
|
282
|
-
const
|
|
283
|
-
var
|
|
284
|
-
(function(
|
|
279
|
+
e.exports = M;
|
|
280
|
+
})(d0);
|
|
281
|
+
var V0 = d0.exports;
|
|
282
|
+
const s0 = /* @__PURE__ */ u0(V0);
|
|
283
|
+
var a0 = { exports: {} };
|
|
284
|
+
(function(e) {
|
|
285
285
|
//! moment-timezone.js
|
|
286
286
|
//! version : 0.5.48
|
|
287
287
|
//! Copyright (c) JS Foundation and other contributors
|
|
288
288
|
//! license : MIT
|
|
289
289
|
//! github.com/moment/moment-timezone
|
|
290
|
-
(function(M,
|
|
291
|
-
|
|
292
|
-
})(
|
|
290
|
+
(function(M, b) {
|
|
291
|
+
e.exports ? e.exports = b(L) : b(M.moment);
|
|
292
|
+
})(t0, function(M) {
|
|
293
293
|
M.version === void 0 && M.default && (M = M.default);
|
|
294
|
-
var
|
|
294
|
+
var b = "0.5.48", z = {}, p = {}, c = {}, W = {}, A = {}, o;
|
|
295
295
|
(!M || typeof M.version != "string") && v("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/");
|
|
296
|
-
var q = M.version.split("."),
|
|
297
|
-
(
|
|
298
|
-
function Y(
|
|
299
|
-
return
|
|
296
|
+
var q = M.version.split("."), R = +q[0], n = +q[1];
|
|
297
|
+
(R < 2 || R === 2 && n < 6) && v("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js " + M.version + ". See momentjs.com");
|
|
298
|
+
function Y(O) {
|
|
299
|
+
return O > 96 ? O - 87 : O > 64 ? O - 29 : O - 48;
|
|
300
300
|
}
|
|
301
|
-
function
|
|
302
|
-
var
|
|
303
|
-
for (
|
|
304
|
-
|
|
305
|
-
for (
|
|
306
|
-
|
|
307
|
-
return
|
|
301
|
+
function r(O) {
|
|
302
|
+
var d = 0, a = O.split("."), X = a[0], i = a[1] || "", S = 1, P, U = 0, E = 1;
|
|
303
|
+
for (O.charCodeAt(0) === 45 && (d = 1, E = -1), d; d < X.length; d++)
|
|
304
|
+
P = Y(X.charCodeAt(d)), U = 60 * U + P;
|
|
305
|
+
for (d = 0; d < i.length; d++)
|
|
306
|
+
S = S / 60, P = Y(i.charCodeAt(d)), U += P * S;
|
|
307
|
+
return U * E;
|
|
308
308
|
}
|
|
309
|
-
function
|
|
310
|
-
for (var
|
|
311
|
-
|
|
309
|
+
function T(O) {
|
|
310
|
+
for (var d = 0; d < O.length; d++)
|
|
311
|
+
O[d] = r(O[d]);
|
|
312
312
|
}
|
|
313
|
-
function
|
|
314
|
-
for (var
|
|
315
|
-
|
|
316
|
-
|
|
313
|
+
function B(O, d) {
|
|
314
|
+
for (var a = 0; a < d; a++)
|
|
315
|
+
O[a] = Math.round((O[a - 1] || 0) + O[a] * 6e4);
|
|
316
|
+
O[d - 1] = 1 / 0;
|
|
317
317
|
}
|
|
318
|
-
function
|
|
319
|
-
var
|
|
320
|
-
for (
|
|
321
|
-
|
|
322
|
-
return
|
|
318
|
+
function t(O, d) {
|
|
319
|
+
var a = [], X;
|
|
320
|
+
for (X = 0; X < d.length; X++)
|
|
321
|
+
a[X] = O[d[X]];
|
|
322
|
+
return a;
|
|
323
323
|
}
|
|
324
|
-
function u(
|
|
325
|
-
var
|
|
326
|
-
return
|
|
327
|
-
name:
|
|
328
|
-
abbrs:
|
|
329
|
-
offsets:
|
|
330
|
-
untils:
|
|
331
|
-
population:
|
|
324
|
+
function u(O) {
|
|
325
|
+
var d = O.split("|"), a = d[2].split(" "), X = d[3].split(""), i = d[4].split(" ");
|
|
326
|
+
return T(a), T(X), T(i), B(i, X.length), {
|
|
327
|
+
name: d[0],
|
|
328
|
+
abbrs: t(d[1].split(" "), X),
|
|
329
|
+
offsets: t(a, X),
|
|
330
|
+
untils: i,
|
|
331
|
+
population: d[5] | 0
|
|
332
332
|
};
|
|
333
333
|
}
|
|
334
|
-
function
|
|
335
|
-
|
|
334
|
+
function l(O) {
|
|
335
|
+
O && this._set(u(O));
|
|
336
336
|
}
|
|
337
|
-
function
|
|
338
|
-
var
|
|
339
|
-
if (
|
|
337
|
+
function f(O, d) {
|
|
338
|
+
var a = d.length;
|
|
339
|
+
if (O < d[0])
|
|
340
340
|
return 0;
|
|
341
|
-
if (
|
|
342
|
-
return
|
|
343
|
-
if (
|
|
341
|
+
if (a > 1 && d[a - 1] === 1 / 0 && O >= d[a - 2])
|
|
342
|
+
return a - 1;
|
|
343
|
+
if (O >= d[a - 1])
|
|
344
344
|
return -1;
|
|
345
|
-
for (var
|
|
346
|
-
|
|
347
|
-
return
|
|
345
|
+
for (var X, i = 0, S = a - 1; S - i > 1; )
|
|
346
|
+
X = Math.floor((i + S) / 2), d[X] <= O ? i = X : S = X;
|
|
347
|
+
return S;
|
|
348
348
|
}
|
|
349
|
-
|
|
350
|
-
_set: function(
|
|
351
|
-
this.name =
|
|
349
|
+
l.prototype = {
|
|
350
|
+
_set: function(O) {
|
|
351
|
+
this.name = O.name, this.abbrs = O.abbrs, this.untils = O.untils, this.offsets = O.offsets, this.population = O.population;
|
|
352
352
|
},
|
|
353
|
-
_index: function(
|
|
354
|
-
var
|
|
355
|
-
if (
|
|
356
|
-
return
|
|
353
|
+
_index: function(O) {
|
|
354
|
+
var d = +O, a = this.untils, X;
|
|
355
|
+
if (X = f(d, a), X >= 0)
|
|
356
|
+
return X;
|
|
357
357
|
},
|
|
358
358
|
countries: function() {
|
|
359
|
-
var
|
|
360
|
-
return Object.keys(c).filter(function(
|
|
361
|
-
return c[
|
|
359
|
+
var O = this.name;
|
|
360
|
+
return Object.keys(c).filter(function(d) {
|
|
361
|
+
return c[d].zones.indexOf(O) !== -1;
|
|
362
362
|
});
|
|
363
363
|
},
|
|
364
|
-
parse: function(
|
|
365
|
-
var
|
|
366
|
-
for (
|
|
367
|
-
if (
|
|
368
|
-
return
|
|
369
|
-
return
|
|
364
|
+
parse: function(O) {
|
|
365
|
+
var d = +O, a = this.offsets, X = this.untils, i = X.length - 1, S, P, U, E;
|
|
366
|
+
for (E = 0; E < i; E++)
|
|
367
|
+
if (S = a[E], P = a[E + 1], U = a[E && E - 1], S < P && s.moveAmbiguousForward ? S = P : S > U && s.moveInvalidForward && (S = U), d < X[E] - S * 6e4)
|
|
368
|
+
return a[E];
|
|
369
|
+
return a[i];
|
|
370
370
|
},
|
|
371
|
-
abbr: function(
|
|
372
|
-
return this.abbrs[this._index(
|
|
371
|
+
abbr: function(O) {
|
|
372
|
+
return this.abbrs[this._index(O)];
|
|
373
373
|
},
|
|
374
|
-
offset: function(
|
|
375
|
-
return v("zone.offset has been deprecated in favor of zone.utcOffset"), this.offsets[this._index(
|
|
374
|
+
offset: function(O) {
|
|
375
|
+
return v("zone.offset has been deprecated in favor of zone.utcOffset"), this.offsets[this._index(O)];
|
|
376
376
|
},
|
|
377
|
-
utcOffset: function(
|
|
378
|
-
return this.offsets[this._index(
|
|
377
|
+
utcOffset: function(O) {
|
|
378
|
+
return this.offsets[this._index(O)];
|
|
379
379
|
}
|
|
380
380
|
};
|
|
381
|
-
function
|
|
382
|
-
this.name =
|
|
381
|
+
function C(O, d) {
|
|
382
|
+
this.name = O, this.zones = d;
|
|
383
383
|
}
|
|
384
|
-
function
|
|
385
|
-
var
|
|
386
|
-
|
|
384
|
+
function I(O) {
|
|
385
|
+
var d = O.toTimeString(), a = d.match(/\([a-z ]+\)/i);
|
|
386
|
+
a && a[0] ? (a = a[0].match(/[A-Z]/g), a = a ? a.join("") : void 0) : (a = d.match(/[A-Z]{3,5}/g), a = a ? a[0] : void 0), a === "GMT" && (a = void 0), this.at = +O, this.abbr = a, this.offset = O.getTimezoneOffset();
|
|
387
387
|
}
|
|
388
|
-
function
|
|
389
|
-
this.zone =
|
|
388
|
+
function m(O) {
|
|
389
|
+
this.zone = O, this.offsetScore = 0, this.abbrScore = 0;
|
|
390
390
|
}
|
|
391
|
-
|
|
392
|
-
this.offsetScore += Math.abs(this.zone.utcOffset(
|
|
391
|
+
m.prototype.scoreOffsetAt = function(O) {
|
|
392
|
+
this.offsetScore += Math.abs(this.zone.utcOffset(O.at) - O.offset), this.zone.abbr(O.at).replace(/[^A-Z]/g, "") !== O.abbr && this.abbrScore++;
|
|
393
393
|
};
|
|
394
|
-
function K(
|
|
395
|
-
for (var
|
|
396
|
-
|
|
397
|
-
return
|
|
394
|
+
function K(O, d) {
|
|
395
|
+
for (var a, X; X = ((d.at - O.at) / 12e4 | 0) * 6e4; )
|
|
396
|
+
a = new I(new Date(O.at + X)), a.offset === O.offset ? O = a : d = a;
|
|
397
|
+
return O;
|
|
398
398
|
}
|
|
399
399
|
function h() {
|
|
400
|
-
var
|
|
401
|
-
for (
|
|
402
|
-
|
|
403
|
-
for (
|
|
404
|
-
|
|
405
|
-
return
|
|
400
|
+
var O = (/* @__PURE__ */ new Date()).getFullYear() - 2, d = new I(new Date(O, 0, 1)), a = d.offset, X = [d], i, S, P, U;
|
|
401
|
+
for (U = 1; U < 48; U++)
|
|
402
|
+
P = new Date(O, U, 1).getTimezoneOffset(), P !== a && (S = new I(new Date(O, U, 1)), i = K(d, S), X.push(i), X.push(new I(new Date(i.at + 6e4))), d = S, a = P);
|
|
403
|
+
for (U = 0; U < 4; U++)
|
|
404
|
+
X.push(new I(new Date(O + U, 0, 1))), X.push(new I(new Date(O + U, 6, 1)));
|
|
405
|
+
return X;
|
|
406
406
|
}
|
|
407
|
-
function H(
|
|
408
|
-
return
|
|
407
|
+
function H(O, d) {
|
|
408
|
+
return O.offsetScore !== d.offsetScore ? O.offsetScore - d.offsetScore : O.abbrScore !== d.abbrScore ? O.abbrScore - d.abbrScore : O.zone.population !== d.zone.population ? d.zone.population - O.zone.population : d.zone.name.localeCompare(O.zone.name);
|
|
409
409
|
}
|
|
410
|
-
function g(
|
|
411
|
-
var
|
|
412
|
-
for (
|
|
413
|
-
|
|
410
|
+
function g(O, d) {
|
|
411
|
+
var a, X;
|
|
412
|
+
for (T(d), a = 0; a < d.length; a++)
|
|
413
|
+
X = d[a], A[X] = A[X] || {}, A[X][O] = !0;
|
|
414
414
|
}
|
|
415
|
-
function
|
|
416
|
-
var
|
|
417
|
-
for (
|
|
418
|
-
if (
|
|
419
|
-
|
|
420
|
-
for (
|
|
421
|
-
|
|
422
|
-
|
|
415
|
+
function G(O) {
|
|
416
|
+
var d = O.length, a = {}, X = [], i = {}, S, P, U, E;
|
|
417
|
+
for (S = 0; S < d; S++)
|
|
418
|
+
if (U = O[S].offset, !i.hasOwnProperty(U)) {
|
|
419
|
+
E = A[U] || {};
|
|
420
|
+
for (P in E)
|
|
421
|
+
E.hasOwnProperty(P) && (a[P] = !0);
|
|
422
|
+
i[U] = !0;
|
|
423
423
|
}
|
|
424
|
-
for (
|
|
425
|
-
|
|
426
|
-
return
|
|
424
|
+
for (S in a)
|
|
425
|
+
a.hasOwnProperty(S) && X.push(W[S]);
|
|
426
|
+
return X;
|
|
427
427
|
}
|
|
428
|
-
function
|
|
428
|
+
function Z() {
|
|
429
429
|
try {
|
|
430
|
-
var
|
|
431
|
-
if (
|
|
432
|
-
var
|
|
433
|
-
if (
|
|
434
|
-
return
|
|
435
|
-
v("Moment Timezone found " +
|
|
430
|
+
var O = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
431
|
+
if (O && O.length > 3) {
|
|
432
|
+
var d = W[_(O)];
|
|
433
|
+
if (d)
|
|
434
|
+
return d;
|
|
435
|
+
v("Moment Timezone found " + O + " from the Intl api, but did not have that data loaded.");
|
|
436
436
|
}
|
|
437
437
|
} catch {
|
|
438
438
|
}
|
|
439
|
-
var
|
|
440
|
-
for (
|
|
441
|
-
for (
|
|
442
|
-
|
|
443
|
-
|
|
439
|
+
var a = h(), X = a.length, i = G(a), S = [], P, U, E;
|
|
440
|
+
for (U = 0; U < i.length; U++) {
|
|
441
|
+
for (P = new m(y(i[U])), E = 0; E < X; E++)
|
|
442
|
+
P.scoreOffsetAt(a[E]);
|
|
443
|
+
S.push(P);
|
|
444
444
|
}
|
|
445
|
-
return
|
|
445
|
+
return S.sort(H), S.length > 0 ? S[0].zone.name : void 0;
|
|
446
446
|
}
|
|
447
|
-
function J(
|
|
448
|
-
return (!o ||
|
|
447
|
+
function J(O) {
|
|
448
|
+
return (!o || O) && (o = Z()), o;
|
|
449
449
|
}
|
|
450
|
-
function _(
|
|
451
|
-
return (
|
|
450
|
+
function _(O) {
|
|
451
|
+
return (O || "").toLowerCase().replace(/\//g, "_");
|
|
452
452
|
}
|
|
453
|
-
function
|
|
454
|
-
var
|
|
455
|
-
for (typeof
|
|
456
|
-
|
|
453
|
+
function c0(O) {
|
|
454
|
+
var d, a, X, i;
|
|
455
|
+
for (typeof O == "string" && (O = [O]), d = 0; d < O.length; d++)
|
|
456
|
+
X = O[d].split("|"), a = X[0], i = _(a), z[i] = O[d], W[i] = a, g(i, X[2].split(" "));
|
|
457
457
|
}
|
|
458
|
-
function y(
|
|
459
|
-
|
|
460
|
-
var
|
|
461
|
-
return
|
|
458
|
+
function y(O, d) {
|
|
459
|
+
O = _(O);
|
|
460
|
+
var a = z[O], X;
|
|
461
|
+
return a instanceof l ? a : typeof a == "string" ? (a = new l(a), z[O] = a, a) : p[O] && d !== y && (X = y(p[O], y)) ? (a = z[O] = new l(), a._set(X), a.name = W[O], a) : null;
|
|
462
462
|
}
|
|
463
|
-
function
|
|
464
|
-
var
|
|
465
|
-
for (
|
|
466
|
-
W.hasOwnProperty(
|
|
467
|
-
return
|
|
463
|
+
function n0() {
|
|
464
|
+
var O, d = [];
|
|
465
|
+
for (O in W)
|
|
466
|
+
W.hasOwnProperty(O) && (z[O] || z[p[O]]) && W[O] && d.push(W[O]);
|
|
467
|
+
return d.sort();
|
|
468
468
|
}
|
|
469
|
-
function
|
|
469
|
+
function L0() {
|
|
470
470
|
return Object.keys(c);
|
|
471
471
|
}
|
|
472
|
-
function
|
|
473
|
-
var
|
|
474
|
-
for (typeof
|
|
475
|
-
|
|
472
|
+
function W0(O) {
|
|
473
|
+
var d, a, X, i;
|
|
474
|
+
for (typeof O == "string" && (O = [O]), d = 0; d < O.length; d++)
|
|
475
|
+
a = O[d].split("|"), X = _(a[0]), i = _(a[1]), p[X] = i, W[X] = a[0], p[i] = X, W[i] = a[1];
|
|
476
476
|
}
|
|
477
|
-
function
|
|
478
|
-
var
|
|
479
|
-
if (!(!
|
|
480
|
-
for (
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
477
|
+
function e0(O) {
|
|
478
|
+
var d, a, X, i;
|
|
479
|
+
if (!(!O || !O.length))
|
|
480
|
+
for (d = 0; d < O.length; d++)
|
|
481
|
+
i = O[d].split("|"), a = i[0].toUpperCase(), X = i[1].split(" "), c[a] = new C(
|
|
482
|
+
a,
|
|
483
|
+
X
|
|
484
484
|
);
|
|
485
485
|
}
|
|
486
|
-
function
|
|
487
|
-
return
|
|
486
|
+
function T0(O) {
|
|
487
|
+
return O = O.toUpperCase(), c[O] || null;
|
|
488
488
|
}
|
|
489
|
-
function
|
|
490
|
-
if (
|
|
489
|
+
function i0(O, d) {
|
|
490
|
+
if (O = T0(O), !O)
|
|
491
491
|
return null;
|
|
492
|
-
var
|
|
493
|
-
return
|
|
494
|
-
var
|
|
492
|
+
var a = O.zones.sort();
|
|
493
|
+
return d ? a.map(function(X) {
|
|
494
|
+
var i = y(X);
|
|
495
495
|
return {
|
|
496
|
-
name:
|
|
497
|
-
offset:
|
|
496
|
+
name: X,
|
|
497
|
+
offset: i.utcOffset(/* @__PURE__ */ new Date())
|
|
498
498
|
};
|
|
499
|
-
}) :
|
|
499
|
+
}) : a;
|
|
500
500
|
}
|
|
501
|
-
function
|
|
502
|
-
|
|
501
|
+
function r0(O) {
|
|
502
|
+
c0(O.zones), W0(O.links), e0(O.countries), s.dataVersion = O.version;
|
|
503
503
|
}
|
|
504
|
-
function
|
|
505
|
-
return
|
|
504
|
+
function p0(O) {
|
|
505
|
+
return p0.didShowError || (p0.didShowError = !0, v("moment.tz.zoneExists('" + O + "') has been deprecated in favor of !moment.tz.zone('" + O + "')")), !!y(O);
|
|
506
506
|
}
|
|
507
|
-
function
|
|
508
|
-
var
|
|
509
|
-
return !!(
|
|
507
|
+
function O0(O) {
|
|
508
|
+
var d = O._f === "X" || O._f === "x";
|
|
509
|
+
return !!(O._a && O._tzm === void 0 && !d);
|
|
510
510
|
}
|
|
511
|
-
function v(
|
|
512
|
-
typeof console < "u" && typeof console.error == "function" && console.error(
|
|
511
|
+
function v(O) {
|
|
512
|
+
typeof console < "u" && typeof console.error == "function" && console.error(O);
|
|
513
513
|
}
|
|
514
|
-
function
|
|
515
|
-
var
|
|
516
|
-
return !M.isMoment(
|
|
514
|
+
function s(O) {
|
|
515
|
+
var d = Array.prototype.slice.call(arguments, 0, -1), a = arguments[arguments.length - 1], X = M.utc.apply(null, d), i;
|
|
516
|
+
return !M.isMoment(O) && O0(X) && (i = y(a)) && X.add(i.parse(X), "minutes"), X.tz(a), X;
|
|
517
517
|
}
|
|
518
|
-
|
|
518
|
+
s.version = b, s.dataVersion = "", s._zones = z, s._links = p, s._names = W, s._countries = c, s.add = c0, s.link = W0, s.load = r0, s.zone = y, s.zoneExists = p0, s.guess = J, s.names = n0, s.Zone = l, s.unpack = u, s.unpackBase60 = r, s.needsOffset = O0, s.moveInvalidForward = !0, s.moveAmbiguousForward = !1, s.countries = L0, s.zonesForCountry = i0;
|
|
519
519
|
var w = M.fn;
|
|
520
|
-
M.tz =
|
|
521
|
-
var
|
|
522
|
-
if (
|
|
523
|
-
if (
|
|
524
|
-
var
|
|
525
|
-
|
|
520
|
+
M.tz = s, M.defaultZone = null, M.updateOffset = function(O, d) {
|
|
521
|
+
var a = M.defaultZone, X;
|
|
522
|
+
if (O._z === void 0 && (a && O0(O) && !O._isUTC && O.isValid() && (O._d = M.utc(O._a)._d, O.utc().add(a.parse(O), "minutes")), O._z = a), O._z)
|
|
523
|
+
if (X = O._z.utcOffset(O), Math.abs(X) < 16 && (X = X / 60), O.utcOffset !== void 0) {
|
|
524
|
+
var i = O._z;
|
|
525
|
+
O.utcOffset(-X, d), O._z = i;
|
|
526
526
|
} else
|
|
527
|
-
|
|
528
|
-
}, w.tz = function(
|
|
529
|
-
if (
|
|
530
|
-
if (typeof
|
|
531
|
-
throw new Error("Time zone name must be a string, got " +
|
|
532
|
-
return this._z = y(
|
|
527
|
+
O.zone(X, d);
|
|
528
|
+
}, w.tz = function(O, d) {
|
|
529
|
+
if (O) {
|
|
530
|
+
if (typeof O != "string")
|
|
531
|
+
throw new Error("Time zone name must be a string, got " + O + " [" + typeof O + "]");
|
|
532
|
+
return this._z = y(O), this._z ? M.updateOffset(this, d) : v("Moment Timezone has no data for " + O + ". See http://momentjs.com/timezone/docs/#/data-loading/."), this;
|
|
533
533
|
}
|
|
534
534
|
if (this._z)
|
|
535
535
|
return this._z.name;
|
|
536
536
|
};
|
|
537
|
-
function
|
|
537
|
+
function o0(O) {
|
|
538
538
|
return function() {
|
|
539
|
-
return this._z ? this._z.abbr(this) :
|
|
539
|
+
return this._z ? this._z.abbr(this) : O.call(this);
|
|
540
540
|
};
|
|
541
541
|
}
|
|
542
|
-
function
|
|
542
|
+
function q0(O) {
|
|
543
543
|
return function() {
|
|
544
|
-
return this._z = null,
|
|
544
|
+
return this._z = null, O.apply(this, arguments);
|
|
545
545
|
};
|
|
546
546
|
}
|
|
547
|
-
function
|
|
547
|
+
function f0(O) {
|
|
548
548
|
return function() {
|
|
549
|
-
return arguments.length > 0 && (this._z = null),
|
|
549
|
+
return arguments.length > 0 && (this._z = null), O.apply(this, arguments);
|
|
550
550
|
};
|
|
551
551
|
}
|
|
552
|
-
w.zoneName =
|
|
553
|
-
return (
|
|
552
|
+
w.zoneName = o0(w.zoneName), w.zoneAbbr = o0(w.zoneAbbr), w.utc = q0(w.utc), w.local = q0(w.local), w.utcOffset = f0(w.utcOffset), M.tz.setDefault = function(O) {
|
|
553
|
+
return (R < 2 || R === 2 && n < 9) && v("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js " + M.version + "."), M.defaultZone = O ? y(O) : null, M;
|
|
554
554
|
};
|
|
555
|
-
var
|
|
556
|
-
return Object.prototype.toString.call(
|
|
555
|
+
var x = M.momentProperties;
|
|
556
|
+
return Object.prototype.toString.call(x) === "[object Array]" ? (x.push("_z"), x.push("_a")) : x && (x._z = null), M;
|
|
557
557
|
});
|
|
558
|
-
})(
|
|
559
|
-
var
|
|
560
|
-
const
|
|
558
|
+
})(a0);
|
|
559
|
+
var l0 = a0.exports;
|
|
560
|
+
const Z0 = "2025b", E0 = [
|
|
561
561
|
"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5",
|
|
562
562
|
"Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5",
|
|
563
563
|
"Africa/Algiers|LMT PMT WET WEST CET CEST|-c.c -9.l 0 -10 -10 -20|01232323232323232454542423234542324|-3bQ0c.c MDA2.P cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5",
|
|
@@ -898,7 +898,7 @@ const E0 = "2025b", I0 = [
|
|
|
898
898
|
"Pacific/Rarotonga|LMT LMT -1030 -0930 -10|-dk.U aD.4 au 9u a0|01234343434343434343434343434|-2Otpk.U 28zc0 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3",
|
|
899
899
|
"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4",
|
|
900
900
|
"Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3"
|
|
901
|
-
],
|
|
901
|
+
], I0 = [
|
|
902
902
|
"Africa/Abidjan|Africa/Accra",
|
|
903
903
|
"Africa/Abidjan|Africa/Bamako",
|
|
904
904
|
"Africa/Abidjan|Africa/Banjul",
|
|
@@ -1404,22 +1404,22 @@ const E0 = "2025b", I0 = [
|
|
|
1404
1404
|
"ZA|Africa/Johannesburg",
|
|
1405
1405
|
"ZM|Africa/Maputo Africa/Lusaka",
|
|
1406
1406
|
"ZW|Africa/Maputo Africa/Harare"
|
|
1407
|
-
],
|
|
1408
|
-
version:
|
|
1409
|
-
zones:
|
|
1410
|
-
links:
|
|
1407
|
+
], m0 = {
|
|
1408
|
+
version: Z0,
|
|
1409
|
+
zones: E0,
|
|
1410
|
+
links: I0,
|
|
1411
1411
|
countries: P0
|
|
1412
1412
|
};
|
|
1413
|
-
var
|
|
1414
|
-
|
|
1413
|
+
var G0 = l0;
|
|
1414
|
+
G0.tz.load(m0);
|
|
1415
1415
|
let D;
|
|
1416
1416
|
try {
|
|
1417
|
-
D =
|
|
1417
|
+
D = b0.getLogger("meteo2");
|
|
1418
1418
|
} catch {
|
|
1419
1419
|
} finally {
|
|
1420
1420
|
}
|
|
1421
|
-
class
|
|
1422
|
-
constructor(M,
|
|
1421
|
+
class Q0 {
|
|
1422
|
+
constructor(M, b) {
|
|
1423
1423
|
F(this, "apikey");
|
|
1424
1424
|
F(this, "debug");
|
|
1425
1425
|
F(this, "FORECAST", {
|
|
@@ -1465,7 +1465,7 @@ class k0 {
|
|
|
1465
1465
|
etime: L().unix(),
|
|
1466
1466
|
version: 0
|
|
1467
1467
|
});
|
|
1468
|
-
this.apikey = M || "smE3JnDLHy3TizVv", this.debug =
|
|
1468
|
+
this.apikey = M || "smE3JnDLHy3TizVv", this.debug = b;
|
|
1469
1469
|
}
|
|
1470
1470
|
async standardWeatherModels() {
|
|
1471
1471
|
return $.standardWeatherModels();
|
|
@@ -1476,40 +1476,40 @@ class k0 {
|
|
|
1476
1476
|
async autoPickMeteoModel(M = "best_match") {
|
|
1477
1477
|
return $.autoPickMeteoModel(M);
|
|
1478
1478
|
}
|
|
1479
|
-
range(M,
|
|
1480
|
-
return Array.from({ length: (
|
|
1479
|
+
range(M, b, z) {
|
|
1480
|
+
return Array.from({ length: (b - M) / z }, (p, c) => M + c * z);
|
|
1481
1481
|
}
|
|
1482
1482
|
/**
|
|
1483
1483
|
* 大气数据
|
|
1484
1484
|
* @param params
|
|
1485
1485
|
* @param options
|
|
1486
1486
|
*/
|
|
1487
|
-
async weatherForecast(M,
|
|
1487
|
+
async weatherForecast(M, b = {}) {
|
|
1488
1488
|
try {
|
|
1489
|
-
const
|
|
1489
|
+
const z = L();
|
|
1490
1490
|
let p;
|
|
1491
1491
|
if (M.start_dates instanceof Array)
|
|
1492
1492
|
for (let W = 0; W < M.start_dates.length; W++) {
|
|
1493
1493
|
M.start_date = M.start_dates[W], M.end_date = M.end_dates[W], M.fake = M.fakes[W];
|
|
1494
|
-
const
|
|
1495
|
-
this.debug && D.debug("[%s] fetch weather via %s with %j",
|
|
1494
|
+
const A = M.url[W];
|
|
1495
|
+
this.debug && D.debug("[%s] fetch weather via %s with %j", b.requestId, A, {
|
|
1496
1496
|
start_date: M.start_date,
|
|
1497
1497
|
end_date: M.end_date,
|
|
1498
1498
|
fake: M.fake,
|
|
1499
1499
|
step: W
|
|
1500
1500
|
});
|
|
1501
|
-
const o = await
|
|
1501
|
+
const o = await M0(A, M), q = await this.parseWeatherData(o, M, b);
|
|
1502
1502
|
p ? await this.mergeSegments(p, q) : p = q;
|
|
1503
1503
|
}
|
|
1504
1504
|
else {
|
|
1505
|
-
const W = await
|
|
1506
|
-
p = await this.parseWeatherData(W, M,
|
|
1505
|
+
const W = await M0(M.url, M);
|
|
1506
|
+
p = await this.parseWeatherData(W, M, b);
|
|
1507
1507
|
}
|
|
1508
1508
|
delete M.apikey;
|
|
1509
1509
|
const c = L();
|
|
1510
|
-
return this.debug && D.info("[%s] fetch weather api (%j) cost: %d ms",
|
|
1511
|
-
} catch (
|
|
1512
|
-
return D.warn("[%s] weather forecast failed: %s, with %j",
|
|
1510
|
+
return this.debug && D.info("[%s] fetch weather api (%j) cost: %d ms", b.requestId, M.url, c.diff(z, "ms")), p;
|
|
1511
|
+
} catch (z) {
|
|
1512
|
+
return D.warn("[%s] weather forecast failed: %s, with %j", b.requestId, z, M), [];
|
|
1513
1513
|
}
|
|
1514
1514
|
}
|
|
1515
1515
|
/**
|
|
@@ -1528,35 +1528,35 @@ class k0 {
|
|
|
1528
1528
|
* @param params
|
|
1529
1529
|
* @param options
|
|
1530
1530
|
*/
|
|
1531
|
-
async marineForecast(M,
|
|
1532
|
-
var
|
|
1531
|
+
async marineForecast(M, b = {}) {
|
|
1532
|
+
var z, p, c, W, A, o, q, R;
|
|
1533
1533
|
try {
|
|
1534
|
-
const
|
|
1534
|
+
const n = L();
|
|
1535
1535
|
let Y;
|
|
1536
1536
|
if (M.start_dates instanceof Array)
|
|
1537
|
-
for (let
|
|
1538
|
-
M.start_date = M.start_dates[
|
|
1539
|
-
const
|
|
1540
|
-
this.debug && D.debug("[%s] fetch marine via %s with %j",
|
|
1537
|
+
for (let f = 0; f < M.start_dates.length; f++) {
|
|
1538
|
+
M.start_date = M.start_dates[f], M.end_date = M.end_dates[f], M.fake = M.fakes[f];
|
|
1539
|
+
const C = M.url[f];
|
|
1540
|
+
this.debug && D.debug("[%s] fetch marine via %s with %j", b.requestId, C, {
|
|
1541
1541
|
start_date: M.start_date,
|
|
1542
1542
|
end_date: M.end_date,
|
|
1543
1543
|
fake: M.fake,
|
|
1544
|
-
step:
|
|
1544
|
+
step: f
|
|
1545
1545
|
});
|
|
1546
|
-
const
|
|
1547
|
-
Y ? await this.mergeSegments(Y,
|
|
1546
|
+
const I = await M0(C, M), m = await this.parseWeatherData(I, M, b);
|
|
1547
|
+
Y ? await this.mergeSegments(Y, m) : Y = m;
|
|
1548
1548
|
}
|
|
1549
1549
|
else {
|
|
1550
|
-
const
|
|
1551
|
-
Y = await this.parseWeatherData(
|
|
1550
|
+
const f = await M0(M.url, M);
|
|
1551
|
+
Y = await this.parseWeatherData(f, M, b);
|
|
1552
1552
|
}
|
|
1553
1553
|
delete M.apikey;
|
|
1554
|
-
const
|
|
1555
|
-
this.debug && D.info("[%s] fetch marine api (%j) cost: %d ms",
|
|
1556
|
-
const
|
|
1557
|
-
return (p = (
|
|
1558
|
-
} catch (
|
|
1559
|
-
return D.warn("[%s] marine forecast failed: %s, with %j",
|
|
1554
|
+
const r = L();
|
|
1555
|
+
this.debug && D.info("[%s] fetch marine api (%j) cost: %d ms", b.requestId, M.url, r.diff(n, "ms"));
|
|
1556
|
+
const T = await this.mergeMarineData(Y), B = T.find((f) => f.model === "ncep_gfswave016"), t = T.find((f) => f.model === "ncep_gfswave025"), u = T.find((f) => f.model === "meteofrance_wave"), l = T.find((f) => f.model === "best_match");
|
|
1557
|
+
return (p = (z = l == null ? void 0 : l.hourly) == null ? void 0 : z.wave_height) != null && p.every((f) => f !== null) ? [l] : (W = (c = u == null ? void 0 : u.hourly) == null ? void 0 : c.wave_height) != null && W.every((f) => f !== null) ? [u] : (o = (A = B == null ? void 0 : B.hourly) == null ? void 0 : A.wave_height) != null && o.every((f) => f !== null) ? [B] : (R = (q = t == null ? void 0 : t.hourly) == null ? void 0 : q.wave_height) != null && R.every((f) => f !== null) ? [t] : T != null && T.length ? [T[0]] : [];
|
|
1558
|
+
} catch (n) {
|
|
1559
|
+
return D.warn("[%s] marine forecast failed: %s, with %j", b.requestId, n, M), [];
|
|
1560
1560
|
}
|
|
1561
1561
|
}
|
|
1562
1562
|
/**
|
|
@@ -1566,125 +1566,125 @@ class k0 {
|
|
|
1566
1566
|
* @param options
|
|
1567
1567
|
* @private
|
|
1568
1568
|
*/
|
|
1569
|
-
async parseWeatherData(M,
|
|
1570
|
-
var W,
|
|
1571
|
-
const p = [], c = Math.pow(10,
|
|
1572
|
-
for (let
|
|
1573
|
-
const u = M[
|
|
1574
|
-
if (h.timezone =
|
|
1569
|
+
async parseWeatherData(M, b, z = {}) {
|
|
1570
|
+
var W, A, o, q, R, n, Y, r, T, B;
|
|
1571
|
+
const p = [], c = Math.pow(10, z.precision || 6);
|
|
1572
|
+
for (let t = 0; t < M.length; t++) {
|
|
1573
|
+
const u = M[t], l = u.utcOffsetSeconds(), f = u.timezone(), C = u.current(), I = u.hourly(), m = u.sixHourly(), K = u.daily(), h = {};
|
|
1574
|
+
if (h.timezone = f || void 0, h.offset = this.prettyTimezoneOffset(l), h.model = b.models instanceof Array ? (W = b.models) == null ? void 0 : W[t] : b.models || "best_match", C) {
|
|
1575
1575
|
const H = L();
|
|
1576
1576
|
h.current = {
|
|
1577
|
-
time: L.unix(Number(
|
|
1577
|
+
time: L.unix(Number(C.time())).utc().format()
|
|
1578
1578
|
};
|
|
1579
|
-
for (let
|
|
1580
|
-
const
|
|
1581
|
-
h.current[
|
|
1579
|
+
for (let G = 0; G < C.variablesLength(); G++) {
|
|
1580
|
+
const Z = C.variables(G).value();
|
|
1581
|
+
h.current[b.current[G]] = isNaN(Z) ? null : Math.round(Z * c) / c;
|
|
1582
1582
|
}
|
|
1583
1583
|
const g = L();
|
|
1584
|
-
this.debug && D.debug("[%s] fetch current variables cost: %d ms",
|
|
1584
|
+
this.debug && D.debug("[%s] fetch current variables cost: %d ms", z.requestId, g.diff(H, "ms"));
|
|
1585
1585
|
}
|
|
1586
|
-
if (
|
|
1587
|
-
const H = L(), g = L.unix(Number(
|
|
1586
|
+
if (I) {
|
|
1587
|
+
const H = L(), g = L.unix(Number(I.time())).add(b.fake ? 1 : 0, "year");
|
|
1588
1588
|
h.hourly = {
|
|
1589
1589
|
date: g.utc().format(),
|
|
1590
|
-
time: this.range(Number(
|
|
1591
|
-
(
|
|
1590
|
+
time: this.range(Number(I.time()), Number(I.timeEnd()), I.interval()).map(
|
|
1591
|
+
(Z) => L.unix(Z).add(b.fake ? 1 : 0, "year").diff(g, "h")
|
|
1592
1592
|
)
|
|
1593
1593
|
};
|
|
1594
|
-
for (let
|
|
1595
|
-
const J = (q = (o = (
|
|
1596
|
-
h.hourly[
|
|
1594
|
+
for (let Z = 0; Z < I.variablesLength(); Z++) {
|
|
1595
|
+
const J = (q = (o = (A = I.variables(Z).valuesArray()) == null ? void 0 : A.toString()) == null ? void 0 : o.split(",")) == null ? void 0 : q.map((_) => isNaN(_) ? null : Math.round(Number(_) * c) / c);
|
|
1596
|
+
h.hourly[b.hourly[Z]] = J;
|
|
1597
1597
|
}
|
|
1598
|
-
const
|
|
1599
|
-
this.debug && D.debug("[%s] fetch hourly variables cost: %d ms",
|
|
1598
|
+
const G = L();
|
|
1599
|
+
this.debug && D.debug("[%s] fetch hourly variables cost: %d ms", z.requestId, G.diff(H, "ms"));
|
|
1600
1600
|
}
|
|
1601
|
-
if (
|
|
1602
|
-
const H = L(), g = L.unix(Number(
|
|
1601
|
+
if (m) {
|
|
1602
|
+
const H = L(), g = L.unix(Number(m.time())).add(b.fake ? 1 : 0, "year");
|
|
1603
1603
|
h.sixHourly = {
|
|
1604
1604
|
date: g.utc().format(),
|
|
1605
|
-
time: this.range(Number(
|
|
1606
|
-
(
|
|
1605
|
+
time: this.range(Number(m.time()), Number(m.timeEnd()), m.interval()).map(
|
|
1606
|
+
(Z) => L.unix(Z).add(b.fake ? 1 : 0, "year").diff(g, "h")
|
|
1607
1607
|
)
|
|
1608
1608
|
};
|
|
1609
|
-
for (let
|
|
1610
|
-
const J = (Y = (
|
|
1611
|
-
|
|
1609
|
+
for (let Z = 0; Z < m.variablesLength(); Z += z.memberLength ?? 1) {
|
|
1610
|
+
const J = (Y = (n = (R = m.variables(Z).valuesArray()) == null ? void 0 : R.toString()) == null ? void 0 : n.split(",")) == null ? void 0 : Y.map((_) => isNaN(_) ? null : Math.round(Number(_) * c) / c);
|
|
1611
|
+
m.variables(Z), h.sixHourly[b.six_hourly[Z / (z.memberLength ?? 1)]] = J;
|
|
1612
1612
|
}
|
|
1613
|
-
const
|
|
1614
|
-
this.debug && D.debug("[%s] fetch 6-hourly variables cost: %d ms",
|
|
1613
|
+
const G = L();
|
|
1614
|
+
this.debug && D.debug("[%s] fetch 6-hourly variables cost: %d ms", z.requestId, G.diff(H, "ms"));
|
|
1615
1615
|
}
|
|
1616
1616
|
if (K) {
|
|
1617
1617
|
const H = L();
|
|
1618
1618
|
h.daily = {
|
|
1619
1619
|
time: this.range(Number(K.time()), Number(K.timeEnd()), K.interval()).map(
|
|
1620
|
-
(
|
|
1620
|
+
(G) => L.unix(G).add(b.fake ? 1 : 0, "year").utc().format()
|
|
1621
1621
|
)
|
|
1622
1622
|
};
|
|
1623
|
-
for (let
|
|
1624
|
-
const
|
|
1625
|
-
h.daily[
|
|
1623
|
+
for (let G = 0; G < K.variablesLength(); G += z.memberLength ?? 1) {
|
|
1624
|
+
const Z = (B = (T = (r = K.variables(G).valuesArray()) == null ? void 0 : r.toString()) == null ? void 0 : T.split(",")) == null ? void 0 : B.map((J) => isNaN(J) ? null : Math.round(Number(J) * c) / c);
|
|
1625
|
+
h.daily[b.daily[G / (z.memberLength ?? 1)]] = Z;
|
|
1626
1626
|
}
|
|
1627
1627
|
const g = L();
|
|
1628
|
-
this.debug && D.debug("[%s] fetch daily variables cost: %d ms",
|
|
1628
|
+
this.debug && D.debug("[%s] fetch daily variables cost: %d ms", z.requestId, g.diff(H, "ms"));
|
|
1629
1629
|
}
|
|
1630
1630
|
p.push(h);
|
|
1631
1631
|
}
|
|
1632
1632
|
return p;
|
|
1633
1633
|
}
|
|
1634
|
-
async mergeSegments(M,
|
|
1635
|
-
for (let
|
|
1636
|
-
for (const p in M[
|
|
1634
|
+
async mergeSegments(M, b) {
|
|
1635
|
+
for (let z = 0; z < M.length; z++)
|
|
1636
|
+
for (const p in M[z])
|
|
1637
1637
|
if (p === "hourly") {
|
|
1638
|
-
for (const c in z
|
|
1639
|
-
if (M[
|
|
1640
|
-
if (M[
|
|
1641
|
-
for (let W = 0; W < M[
|
|
1642
|
-
M[
|
|
1643
|
-
for (let W = M[
|
|
1644
|
-
M[
|
|
1638
|
+
for (const c in b[z][p])
|
|
1639
|
+
if (M[z][p][c] instanceof Array)
|
|
1640
|
+
if (M[z][p].date === b[z][p].date) {
|
|
1641
|
+
for (let W = 0; W < M[z][p][c].length; W++)
|
|
1642
|
+
M[z][p][c][W] === null && (M[z][p][c][W] = b[z][p][c][W]);
|
|
1643
|
+
for (let W = M[z][p][c].length; W < b[z][p][c].length; W++)
|
|
1644
|
+
M[z][p][c].push(b[z][p][c][W]);
|
|
1645
1645
|
} else {
|
|
1646
|
-
const W = L(z
|
|
1647
|
-
for (let o = 0; o < z
|
|
1648
|
-
const q = W.clone().add(o, "h").diff(
|
|
1649
|
-
q < M[
|
|
1646
|
+
const W = L(b[z][p].date), A = L(M[z][p].date);
|
|
1647
|
+
for (let o = 0; o < b[z][p][c].length; o++) {
|
|
1648
|
+
const q = W.clone().add(o, "h").diff(A, "h");
|
|
1649
|
+
q < M[z][p][c].length ? M[z][p][c][q] === null && (M[z][p][c][q] = b[z][p][c][o]) : c === "time" ? M[z][p][c].push(q) : M[z][p][c].push(b[z][p][c][o]);
|
|
1650
1650
|
}
|
|
1651
1651
|
}
|
|
1652
1652
|
} else if (p === "daily") {
|
|
1653
|
-
for (const c in z
|
|
1654
|
-
if (M[
|
|
1655
|
-
for (let W = 0; W < z
|
|
1656
|
-
M[
|
|
1657
|
-
for (let c = 0; c < z
|
|
1658
|
-
M[
|
|
1653
|
+
for (const c in b[z][p])
|
|
1654
|
+
if (M[z][p][c] instanceof Array && c !== "time")
|
|
1655
|
+
for (let W = 0; W < b[z][p][c].length; W++)
|
|
1656
|
+
M[z][p].time.includes(b[z][p].time[W]) || M[z][p][c].push(b[z][p][c][W]);
|
|
1657
|
+
for (let c = 0; c < b[z][p].time.length; c++)
|
|
1658
|
+
M[z][p].time.includes(b[z][p].time[c]) || M[z][p].time.push(b[z][p].time[c]);
|
|
1659
1659
|
}
|
|
1660
1660
|
return M;
|
|
1661
1661
|
}
|
|
1662
1662
|
async mergeMarineData(M) {
|
|
1663
|
-
var c, W,
|
|
1664
|
-
const
|
|
1665
|
-
|
|
1663
|
+
var c, W, A, o;
|
|
1664
|
+
const b = [], z = M.find((q) => q.model === "best_match");
|
|
1665
|
+
z && b.push(z);
|
|
1666
1666
|
const p = M.find((q) => q.model === "meteofrance_currents");
|
|
1667
1667
|
for (const q of M)
|
|
1668
|
-
["best_match", "meteofrance_currents"].includes(q.model) || (q.hourly.ocean_current_velocity = (c = p == null ? void 0 : p.hourly) == null ? void 0 : c.ocean_current_velocity, q.hourly.ocean_current_direction = (W = p == null ? void 0 : p.hourly) == null ? void 0 : W.ocean_current_direction, q.hourly.sea_level_height_msl = (
|
|
1669
|
-
return
|
|
1668
|
+
["best_match", "meteofrance_currents"].includes(q.model) || (q.hourly.ocean_current_velocity = (c = p == null ? void 0 : p.hourly) == null ? void 0 : c.ocean_current_velocity, q.hourly.ocean_current_direction = (W = p == null ? void 0 : p.hourly) == null ? void 0 : W.ocean_current_direction, q.hourly.sea_level_height_msl = (A = p == null ? void 0 : p.hourly) == null ? void 0 : A.sea_level_height_msl, q.hourly.sea_surface_temperature = (o = p == null ? void 0 : p.hourly) == null ? void 0 : o.sea_surface_temperature, b.push(q));
|
|
1669
|
+
return b;
|
|
1670
1670
|
}
|
|
1671
|
-
pickForecastUrl(M,
|
|
1672
|
-
return M ?
|
|
1671
|
+
pickForecastUrl(M, b, z, p = {}) {
|
|
1672
|
+
return M ? z && !p.noFake ? p.selfHistory ? this.FORECAST.ORM_HISTORY_MARINE_URL : this.FORECAST.OM_MARINE_URL : b ? p.marineUrl || this.FORECAST.ORM_MARINE_URL : this.FORECAST.OM_MARINE_URL : z && !p.noFake ? p.selfHistory ? this.FORECAST.ORM_HISTORY_URL : this.FORECAST.OM_HISTORY_URL : b ? p.weatherUrl || this.FORECAST.ORM_URL : this.FORECAST.OM_URL;
|
|
1673
1673
|
}
|
|
1674
1674
|
pickMarineModels(M) {
|
|
1675
1675
|
var W;
|
|
1676
|
-
const
|
|
1677
|
-
if (!(
|
|
1676
|
+
const b = (W = M == null ? void 0 : M.trim()) == null ? void 0 : W.split(",");
|
|
1677
|
+
if (!(b != null && b.length))
|
|
1678
1678
|
return ["best_match"];
|
|
1679
|
-
const
|
|
1680
|
-
for (let
|
|
1681
|
-
const o =
|
|
1682
|
-
["ecmwf_wam025", "meteofrance_wave", "ewam", "gwam", "era5_ocean"].includes(o) ?
|
|
1679
|
+
const z = [];
|
|
1680
|
+
for (let A = 0; A < b.length; A++) {
|
|
1681
|
+
const o = b[A];
|
|
1682
|
+
["ecmwf_wam025", "meteofrance_wave", "ewam", "gwam", "era5_ocean"].includes(o) ? z.push("meteofrance_currents", o) : ["gfswave", "ncep_gfswave025", "ncep_gfswave016"].includes(o) ? z.push("meteofrance_currents", "ncep_gfswave025", "ncep_gfswave016") : z.push("best_match");
|
|
1683
1683
|
}
|
|
1684
|
-
const p =
|
|
1685
|
-
return p.sort((
|
|
1686
|
-
const q = c.indexOf(
|
|
1687
|
-
return q -
|
|
1684
|
+
const p = z.reduce((A, o) => (A.includes(o) || A.push(o), A), []), c = ["best_match", "meteofrance_currents", "meteofrance_wave", "ecmwf_wam025", "ncep_gfswave025", "gwam", "era5_ocean", "ewam", "ncep_gfswave016"];
|
|
1685
|
+
return p.sort((A, o) => {
|
|
1686
|
+
const q = c.indexOf(A), R = c.indexOf(o);
|
|
1687
|
+
return q - R;
|
|
1688
1688
|
}), p;
|
|
1689
1689
|
}
|
|
1690
1690
|
/**
|
|
@@ -1695,33 +1695,33 @@ class k0 {
|
|
|
1695
1695
|
* @param options 请求参数
|
|
1696
1696
|
* @private
|
|
1697
1697
|
*/
|
|
1698
|
-
async prepare(M,
|
|
1699
|
-
var q,
|
|
1700
|
-
const c = L.utc(), W = M ? L.utc(M) : void 0,
|
|
1698
|
+
async prepare(M, b, z, p = {}) {
|
|
1699
|
+
var q, R;
|
|
1700
|
+
const c = L.utc(), W = M ? L.utc(M) : void 0, A = b ? await this.pickUpdateMeta(z.models) : [], o = (R = (q = A[0]) == null ? void 0 : q.meta) != null && R.endTime ? L(A[0].meta.endTime) : c.clone().add(14, "day");
|
|
1701
1701
|
if (M) {
|
|
1702
|
-
const
|
|
1703
|
-
|
|
1702
|
+
const n = W.clone().utc().add(p.forecastDays ?? 1, "day");
|
|
1703
|
+
n.isAfter(o) ? (n.subtract(1, "year"), W.isAfter(o) ? (W.subtract(1, "year"), z.start_dates = [
|
|
1704
1704
|
W.clone().subtract(p.pastDays || 0, "day").utc().format("YYYY-MM-DD")
|
|
1705
|
-
],
|
|
1705
|
+
], z.end_dates = [n.utc().format("YYYY-MM-DD")], z.fakes = [!0], z.url = [this.pickForecastUrl(b, p.selfHosted ?? !0, !0, p)]) : (z.start_dates = [
|
|
1706
1706
|
W.clone().subtract(p.pastDays || 0, "day").utc().format("YYYY-MM-DD"),
|
|
1707
1707
|
o.clone().subtract(1, "year").subtract(1, "day").utc().format("YYYY-MM-DD")
|
|
1708
|
-
],
|
|
1709
|
-
this.pickForecastUrl(
|
|
1710
|
-
this.pickForecastUrl(
|
|
1711
|
-
])) : (
|
|
1708
|
+
], z.end_dates = [o.clone().subtract(1, "day").utc().format("YYYY-MM-DD"), n.utc().format("YYYY-MM-DD")], z.fakes = [!1, !0], z.url = [
|
|
1709
|
+
this.pickForecastUrl(b, p.selfHosted ?? !0, !1, p),
|
|
1710
|
+
this.pickForecastUrl(b, p.selfHosted ?? !0, !0, p)
|
|
1711
|
+
])) : (z.start_dates = [
|
|
1712
1712
|
W.clone().subtract(p.pastDays || 0, "day").utc().format("YYYY-MM-DD")
|
|
1713
|
-
],
|
|
1713
|
+
], z.end_dates = [n.utc().format("YYYY-MM-DD")], z.fakes = [!1], z.url = [this.pickForecastUrl(b, p.selfHosted ?? !0, W.isBefore(c.clone().subtract(30, "day")), p)]);
|
|
1714
1714
|
} else
|
|
1715
|
-
|
|
1716
|
-
return
|
|
1715
|
+
z.forecast_days = p.forecastDays, z.past_days = p.pastDays, z.fake = !1, z.url = this.pickForecastUrl(b, p.selfHosted ?? !0, !1, p);
|
|
1716
|
+
return z;
|
|
1717
1717
|
}
|
|
1718
|
-
toStdLng(M,
|
|
1718
|
+
toStdLng(M, b = 6) {
|
|
1719
1719
|
M > 180 ? (M = M % 360, M = M > 180 ? M - 360 : M) : M < -180 && (M = M % 360, M = M < -180 ? M + 360 : M);
|
|
1720
|
-
const
|
|
1721
|
-
return Math.round(M *
|
|
1720
|
+
const z = Math.pow(10, b);
|
|
1721
|
+
return Math.round(M * z) / z;
|
|
1722
1722
|
}
|
|
1723
|
-
timezoneOffset(M,
|
|
1724
|
-
const
|
|
1723
|
+
timezoneOffset(M, b) {
|
|
1724
|
+
const z = s0(M, b), p = L().tz(z).utcOffset();
|
|
1725
1725
|
return Math.round(p / 60 * 10) / 10;
|
|
1726
1726
|
}
|
|
1727
1727
|
/**
|
|
@@ -1731,8 +1731,8 @@ class k0 {
|
|
|
1731
1731
|
*/
|
|
1732
1732
|
prettyTimezoneOffset(M) {
|
|
1733
1733
|
M = Math.round(M / 3600 * 10) / 10;
|
|
1734
|
-
let
|
|
1735
|
-
return
|
|
1734
|
+
let b = Math.floor(Math.abs(M)), z = Math.round((Math.abs(M) - b) * 60);
|
|
1735
|
+
return z = z > 9 ? z : `0${z}`, b = b > 9 ? b : `0${b}`, M > 0 ? `+${b}:${z}` : `-${b}:${z}`;
|
|
1736
1736
|
}
|
|
1737
1737
|
/**
|
|
1738
1738
|
* 预报数据
|
|
@@ -1760,38 +1760,38 @@ class k0 {
|
|
|
1760
1760
|
* @param withHourly
|
|
1761
1761
|
* @param options
|
|
1762
1762
|
*/
|
|
1763
|
-
async spotForecast(M,
|
|
1763
|
+
async spotForecast(M, b, z, p = !0, c = !0, W = !1, A = {
|
|
1764
1764
|
forecastDays: 1,
|
|
1765
1765
|
pastDays: 0,
|
|
1766
1766
|
precision: 6,
|
|
1767
1767
|
selfHosted: !0
|
|
1768
1768
|
}) {
|
|
1769
|
-
var
|
|
1770
|
-
|
|
1769
|
+
var T, B, t, u, l, f;
|
|
1770
|
+
b = this.toStdLng(b), this.debug && D.info("[%s] spot forecast params: %j", A.requestId, { lat: M, lng: b, datetime: z, simplify: p, withDaily: c, withHourly: W, options: A });
|
|
1771
1771
|
const o = {
|
|
1772
1772
|
apikey: this.apikey,
|
|
1773
1773
|
latitude: M,
|
|
1774
|
-
longitude:
|
|
1774
|
+
longitude: b,
|
|
1775
1775
|
cell_selection: "sea",
|
|
1776
1776
|
wind_speed_unit: "kn",
|
|
1777
|
-
models: ((
|
|
1777
|
+
models: ((T = A.weatherModels) == null ? void 0 : T.split(",")) || ["best_match"],
|
|
1778
1778
|
timezone: "auto"
|
|
1779
1779
|
};
|
|
1780
1780
|
let q;
|
|
1781
|
-
const
|
|
1782
|
-
|
|
1783
|
-
const
|
|
1781
|
+
const R = this.timezoneOffset(M, b);
|
|
1782
|
+
z && (q = L.utc(z).utcOffset(R), q.subtract(R > 0 ? R : -R, "h"), A.selfHistory = !(q != null && q.isBefore(L.utc().subtract(120, "days")))), c && (o.daily = ((B = this.FORECAST.WEATHER_VARIABLES.NORMAL.DAILY) == null ? void 0 : B.split(",")) || []), q || (A.forecastDays = A.forecastDays || 1, A.pastDays = 0, W = !0), W && (o.hourly = ((t = this.FORECAST.WEATHER_VARIABLES.NORMAL.HOURLY) == null ? void 0 : t.split(",")) || []), A.pastDays = A.pastDays || 0, A.pastDays = A.pastDays > 7 ? 7 : A.pastDays < 0 ? 0 : A.pastDays, A.forecastDays = A.forecastDays ?? 1, A.forecastDays = A.forecastDays > 14 ? 14 : A.forecastDays < 0 ? 1 : A.forecastDays, await this.prepare(q == null ? void 0 : q.utc().format(), !1, o, A);
|
|
1783
|
+
const n = await this.weatherForecast(o, A), Y = {
|
|
1784
1784
|
apikey: this.apikey,
|
|
1785
1785
|
latitude: M,
|
|
1786
|
-
longitude:
|
|
1786
|
+
longitude: b,
|
|
1787
1787
|
cell_selection: "sea",
|
|
1788
1788
|
timezone: "auto",
|
|
1789
1789
|
wind_speed_unit: "kn",
|
|
1790
|
-
models: this.pickMarineModels(
|
|
1790
|
+
models: this.pickMarineModels(A.marineModels)
|
|
1791
1791
|
};
|
|
1792
|
-
c && (Y.daily = this.FORECAST.MARINE_VARIABLES.DAILY.split(",")), q || (
|
|
1793
|
-
let
|
|
1794
|
-
return (
|
|
1792
|
+
c && (Y.daily = this.FORECAST.MARINE_VARIABLES.DAILY.split(",")), q || (A.forecastDays = A.forecastDays || 1, W = !0), W && (Y.hourly = this.FORECAST.MARINE_VARIABLES.HOURLY.split(",")), await this.prepare(q == null ? void 0 : q.utc().format(), !0, Y, A);
|
|
1793
|
+
let r = await this.marineForecast(Y, A);
|
|
1794
|
+
return (f = (l = (u = r[0]) == null ? void 0 : u.hourly) == null ? void 0 : l.wave_height) != null && f.every((C) => C === null || C === 0) && (Y.models = this.pickMarineModels("best_match,ncep_gfswave025,meteofrance_wave"), r = await this.marineForecast(Y, A)), { weather: n, marine: r };
|
|
1795
1795
|
}
|
|
1796
1796
|
/**
|
|
1797
1797
|
* 历史再分析数据
|
|
@@ -1814,46 +1814,46 @@ class k0 {
|
|
|
1814
1814
|
* @param withMarine
|
|
1815
1815
|
* @param options
|
|
1816
1816
|
*/
|
|
1817
|
-
async spotHistorical(M,
|
|
1817
|
+
async spotHistorical(M, b, z, p, c = !0, W = !0, A = !1, o = {
|
|
1818
1818
|
precision: 6
|
|
1819
1819
|
}) {
|
|
1820
|
-
var
|
|
1821
|
-
|
|
1822
|
-
const q = this.timezoneOffset(M,
|
|
1823
|
-
|
|
1820
|
+
var B, t;
|
|
1821
|
+
b = this.toStdLng(b), this.debug && D.info("[%s] spot historical params: %j", o.requestId, { lat: M, lng: b, startDate: z, endDate: p, withMarine: A, options: o });
|
|
1822
|
+
const q = this.timezoneOffset(M, b), R = L.utc(z).utcOffset(q), n = L.utc(p).utcOffset(q);
|
|
1823
|
+
R.subtract(q > 0 ? q : -q, "h"), n.subtract(q > 0 ? q : -q, "h");
|
|
1824
1824
|
const Y = {
|
|
1825
1825
|
apikey: this.apikey,
|
|
1826
1826
|
latitude: M,
|
|
1827
|
-
longitude:
|
|
1827
|
+
longitude: b,
|
|
1828
1828
|
cell_selection: "sea",
|
|
1829
1829
|
wind_speed_unit: "kn",
|
|
1830
|
-
models: ((
|
|
1830
|
+
models: ((B = o.weatherModels) == null ? void 0 : B.split(",")) || ["best_match"],
|
|
1831
1831
|
timezone: "auto",
|
|
1832
1832
|
url: this.HISTORICAL.OM_URL,
|
|
1833
|
-
start_date:
|
|
1834
|
-
end_date:
|
|
1833
|
+
start_date: R.format("YYYY-MM-DD"),
|
|
1834
|
+
end_date: n.format("YYYY-MM-DD")
|
|
1835
1835
|
};
|
|
1836
1836
|
c && (Y.daily = this.HISTORICAL.WEATHER_VARIABLES.DAILY.split(",")), W && (Y.hourly = this.HISTORICAL.WEATHER_VARIABLES.HOURLY.split(","));
|
|
1837
|
-
const
|
|
1838
|
-
let
|
|
1839
|
-
if (
|
|
1837
|
+
const r = await this.weatherForecast(Y, o);
|
|
1838
|
+
let T;
|
|
1839
|
+
if (A) {
|
|
1840
1840
|
const u = {
|
|
1841
1841
|
apikey: this.apikey,
|
|
1842
1842
|
latitude: M,
|
|
1843
|
-
longitude:
|
|
1843
|
+
longitude: b,
|
|
1844
1844
|
cell_selection: "sea",
|
|
1845
1845
|
timezone: "auto",
|
|
1846
1846
|
wind_speed_unit: "kn",
|
|
1847
|
-
models: ((
|
|
1847
|
+
models: ((t = o.marineModels) == null ? void 0 : t.split(",")) || ["best_match"],
|
|
1848
1848
|
daily: this.FORECAST.MARINE_VARIABLES.DAILY.split(","),
|
|
1849
1849
|
hourly: this.FORECAST.MARINE_VARIABLES.HOURLY.split(","),
|
|
1850
1850
|
url: this.FORECAST.OM_MARINE_URL,
|
|
1851
|
-
start_date:
|
|
1852
|
-
end_date:
|
|
1851
|
+
start_date: R.format("YYYY-MM-DD"),
|
|
1852
|
+
end_date: n.format("YYYY-MM-DD")
|
|
1853
1853
|
};
|
|
1854
|
-
|
|
1854
|
+
T = await this.marineForecast(u, o);
|
|
1855
1855
|
}
|
|
1856
|
-
return { weather:
|
|
1856
|
+
return { weather: r, marine: T };
|
|
1857
1857
|
}
|
|
1858
1858
|
/**
|
|
1859
1859
|
* 季节预报数据
|
|
@@ -1866,16 +1866,16 @@ class k0 {
|
|
|
1866
1866
|
* @param endDate
|
|
1867
1867
|
* @param options
|
|
1868
1868
|
*/
|
|
1869
|
-
async spotSeasonal(M,
|
|
1869
|
+
async spotSeasonal(M, b, z, p, c = !1, W = {
|
|
1870
1870
|
precision: 6
|
|
1871
1871
|
}) {
|
|
1872
|
-
|
|
1873
|
-
const
|
|
1874
|
-
o.subtract(
|
|
1875
|
-
const
|
|
1872
|
+
b = this.toStdLng(b), this.debug && D.info("[%s] spot seasonal params: %j", W.requestId, { lat: M, lng: b, startDate: z, endDate: p, options: W });
|
|
1873
|
+
const A = this.timezoneOffset(M, b), o = L.utc(z).utcOffset(A), q = p ? L.utc(p).utcOffset(A) : o.clone().add(1, "month");
|
|
1874
|
+
o.subtract(A > 0 ? A : -A, "h"), q.subtract(A > 0 ? A : -A, "h");
|
|
1875
|
+
const R = {
|
|
1876
1876
|
apikey: this.apikey,
|
|
1877
1877
|
latitude: M,
|
|
1878
|
-
longitude:
|
|
1878
|
+
longitude: b,
|
|
1879
1879
|
cell_selection: "sea",
|
|
1880
1880
|
wind_speed_unit: "kn",
|
|
1881
1881
|
timezone: "auto",
|
|
@@ -1884,7 +1884,7 @@ class k0 {
|
|
|
1884
1884
|
end_date: q.format("YYYY-MM-DD"),
|
|
1885
1885
|
daily: this.SEASONAL.WEATHER_VARIABLES.DAILY.split(",")
|
|
1886
1886
|
};
|
|
1887
|
-
return c && (
|
|
1887
|
+
return c && (R.six_hourly = this.SEASONAL.WEATHER_VARIABLES.SIX_HOURLY.split(",")), W.memberLength = 4, { weather: await this.weatherForecast(R, W) };
|
|
1888
1888
|
}
|
|
1889
1889
|
/**
|
|
1890
1890
|
* 气候态数据
|
|
@@ -1906,31 +1906,31 @@ class k0 {
|
|
|
1906
1906
|
* @param endDate
|
|
1907
1907
|
* @param options
|
|
1908
1908
|
*/
|
|
1909
|
-
async spotClimate(M,
|
|
1909
|
+
async spotClimate(M, b, z, p, c = {
|
|
1910
1910
|
precision: 6
|
|
1911
1911
|
}) {
|
|
1912
|
-
var
|
|
1913
|
-
|
|
1914
|
-
const W = this.timezoneOffset(M,
|
|
1915
|
-
o.subtract(W > 0 ? W : -W, "h"),
|
|
1912
|
+
var n;
|
|
1913
|
+
b = this.toStdLng(b), this.debug && D.info("[%s] spot climate params: %j", c.requestId, { lat: M, lng: b, startDate: z, endDate: p, options: c });
|
|
1914
|
+
const W = this.timezoneOffset(M, b), A = L.utc(z).utcOffset(W), o = p ? L.utc(p).utcOffset(W) : A.clone().add(1, "day");
|
|
1915
|
+
o.subtract(W > 0 ? W : -W, "h"), A.subtract(W > 0 ? W : -W, "h");
|
|
1916
1916
|
const q = {
|
|
1917
1917
|
apikey: this.apikey,
|
|
1918
1918
|
latitude: M,
|
|
1919
|
-
longitude:
|
|
1919
|
+
longitude: b,
|
|
1920
1920
|
cell_selection: "sea",
|
|
1921
1921
|
wind_speed_unit: "kn",
|
|
1922
|
-
models: ((
|
|
1922
|
+
models: ((n = c.weatherModels) == null ? void 0 : n.split(",")) || "EC_Earth3P_HR",
|
|
1923
1923
|
timezone: "auto",
|
|
1924
1924
|
url: this.CLIMATE.OM_URL,
|
|
1925
|
-
start_date:
|
|
1925
|
+
start_date: A.format("YYYY-MM-DD"),
|
|
1926
1926
|
end_date: o.format("YYYY-MM-DD"),
|
|
1927
1927
|
daily: this.CLIMATE.WEATHER_VARIABLES.DAILY.split(",")
|
|
1928
1928
|
};
|
|
1929
1929
|
return { weather: await this.weatherForecast(q, c) };
|
|
1930
1930
|
}
|
|
1931
1931
|
async update(M = {}) {
|
|
1932
|
-
const
|
|
1933
|
-
if (!
|
|
1932
|
+
const b = L.unix(this.METEO2_UPDATE.etime), z = this.METEO2_UPDATE.version, p = L();
|
|
1933
|
+
if (!z || b.clone().add(10, "minute").isBefore(p)) {
|
|
1934
1934
|
const c = M.url || "https://meteo3agent.idmwx.com/api/agents/update", W = await fetch(c, {
|
|
1935
1935
|
headers: {
|
|
1936
1936
|
"Content-Type": "application/json",
|
|
@@ -1938,63 +1938,63 @@ class k0 {
|
|
|
1938
1938
|
}
|
|
1939
1939
|
});
|
|
1940
1940
|
try {
|
|
1941
|
-
const
|
|
1942
|
-
if (
|
|
1943
|
-
const o =
|
|
1944
|
-
for (const
|
|
1945
|
-
const
|
|
1946
|
-
var
|
|
1947
|
-
const
|
|
1941
|
+
const A = await W.json();
|
|
1942
|
+
if (A.code === 0) {
|
|
1943
|
+
const o = A.data, q = $.standardWeatherModels();
|
|
1944
|
+
for (const R of q) {
|
|
1945
|
+
const n = $.autoPickSubCategories(R.alias), r = o.filter((T) => n.includes(T.category)).map((T) => {
|
|
1946
|
+
var l, f, C, I, m, K;
|
|
1947
|
+
const B = L.unix((l = T.meta) == null ? void 0 : l.data_end_time).utc(), t = L.unix((f = T.meta) == null ? void 0 : f.last_run_availability_time).utc(), u = B.diff(t, "days");
|
|
1948
1948
|
return {
|
|
1949
|
-
category:
|
|
1949
|
+
category: T.category,
|
|
1950
1950
|
meta: {
|
|
1951
|
-
endTime:
|
|
1952
|
-
availabilityTime:
|
|
1951
|
+
endTime: B.format(),
|
|
1952
|
+
availabilityTime: t.format(),
|
|
1953
1953
|
days: u,
|
|
1954
|
-
initialisationTime: L.unix((
|
|
1955
|
-
modificationTime: L.unix((
|
|
1956
|
-
temporalResolution: Math.round(((
|
|
1957
|
-
frequency: Math.round(((K =
|
|
1954
|
+
initialisationTime: L.unix((C = T.meta) == null ? void 0 : C.last_run_initialisation_time).utc().format(),
|
|
1955
|
+
modificationTime: L.unix((I = T.meta) == null ? void 0 : I.last_run_modification_time).utc().format(),
|
|
1956
|
+
temporalResolution: Math.round(((m = T.meta) == null ? void 0 : m.temporal_resolution_seconds) / 3600),
|
|
1957
|
+
frequency: Math.round(((K = T.meta) == null ? void 0 : K.update_interval_seconds) / 3600)
|
|
1958
1958
|
}
|
|
1959
1959
|
};
|
|
1960
1960
|
});
|
|
1961
|
-
|
|
1961
|
+
r.length && (this.METEO2_UPDATE[R.alias] = r);
|
|
1962
1962
|
}
|
|
1963
|
-
this.METEO2_UPDATE.version =
|
|
1963
|
+
this.METEO2_UPDATE.version = z + 1, this.METEO2_UPDATE.etime = p.unix();
|
|
1964
1964
|
}
|
|
1965
|
-
} catch (
|
|
1966
|
-
D.error("[%s] update meteo2 error: %s", M.requestId,
|
|
1965
|
+
} catch (A) {
|
|
1966
|
+
D.error("[%s] update meteo2 error: %s", M.requestId, A);
|
|
1967
1967
|
}
|
|
1968
1968
|
}
|
|
1969
1969
|
return this.METEO2_UPDATE;
|
|
1970
1970
|
}
|
|
1971
|
-
async pickUpdateMeta(M,
|
|
1972
|
-
const
|
|
1971
|
+
async pickUpdateMeta(M, b = {}) {
|
|
1972
|
+
const z = await this.update(b);
|
|
1973
1973
|
M = M instanceof Array ? M : [M];
|
|
1974
1974
|
const p = [];
|
|
1975
|
-
for (const c in
|
|
1976
|
-
if (
|
|
1977
|
-
for (const W of
|
|
1975
|
+
for (const c in z)
|
|
1976
|
+
if (z[c] instanceof Array)
|
|
1977
|
+
for (const W of z[c])
|
|
1978
1978
|
M != null && M.includes(W.category) && W.category !== "meteofrance_currents" && p.push(W);
|
|
1979
1979
|
return p.sort((c, W) => L(c.meta.endTime).unix() - L(W.meta.endTime).unix()), p;
|
|
1980
1980
|
}
|
|
1981
1981
|
}
|
|
1982
1982
|
let R0;
|
|
1983
1983
|
try {
|
|
1984
|
-
R0 =
|
|
1984
|
+
R0 = b0.getLogger("tides");
|
|
1985
1985
|
} catch {
|
|
1986
1986
|
} finally {
|
|
1987
1987
|
}
|
|
1988
|
-
class
|
|
1989
|
-
constructor(M,
|
|
1988
|
+
class k0 {
|
|
1989
|
+
constructor(M, b) {
|
|
1990
1990
|
F(this, "apikey");
|
|
1991
1991
|
F(this, "debug");
|
|
1992
|
-
this.apikey = M || "aaf294e6-be27-40b8-82cb-0d7844d2dd74", this.debug =
|
|
1992
|
+
this.apikey = M || "aaf294e6-be27-40b8-82cb-0d7844d2dd74", this.debug = b;
|
|
1993
1993
|
}
|
|
1994
|
-
toStdLng(M,
|
|
1994
|
+
toStdLng(M, b = 6) {
|
|
1995
1995
|
M > 180 ? (M = M % 360, M = M > 180 ? M - 360 : M) : M < -180 && (M = M % 360, M = M < -180 ? M + 360 : M);
|
|
1996
|
-
const
|
|
1997
|
-
return Math.round(M *
|
|
1996
|
+
const z = Math.pow(10, b);
|
|
1997
|
+
return Math.round(M * z) / z;
|
|
1998
1998
|
}
|
|
1999
1999
|
/**
|
|
2000
2000
|
* 潮汐预报数据
|
|
@@ -2024,15 +2024,15 @@ class J0 {
|
|
|
2024
2024
|
* @param datum
|
|
2025
2025
|
* @param options
|
|
2026
2026
|
*/
|
|
2027
|
-
async tidesForecast(M,
|
|
2028
|
-
p = p || "today",
|
|
2029
|
-
let
|
|
2030
|
-
c && (
|
|
2031
|
-
const Y = await (await fetch(
|
|
2027
|
+
async tidesForecast(M, b, z = 7, p = "today", c = !0, W = !1, A = !1, o = "CD", q = {}) {
|
|
2028
|
+
p = p || "today", z = z || 7, b = this.toStdLng(b), this.debug && R0.info("[%s] spot tides forecast params: %j", q.requestId, { lat: M, lng: b, date: p, extremes: c, heights: W, datums: A, datum: o });
|
|
2029
|
+
let R = `https://www.worldtides.info/api/v3?lat=${M}&lon=${b}&days=${z}&date=${p}&datum=${o}&key=${this.apikey}&localtime`;
|
|
2030
|
+
c && (R = `${R}&extremes`), W && (R = `${R}&heights`), A && (R = `${R}&datums`);
|
|
2031
|
+
const Y = await (await fetch(R)).json();
|
|
2032
2032
|
return Y.status === 200 ? {
|
|
2033
2033
|
rqt: {
|
|
2034
2034
|
lat: M,
|
|
2035
|
-
lng:
|
|
2035
|
+
lng: b
|
|
2036
2036
|
},
|
|
2037
2037
|
rsp: {
|
|
2038
2038
|
lat: Y.responseLat,
|
|
@@ -2049,21 +2049,21 @@ class J0 {
|
|
|
2049
2049
|
}
|
|
2050
2050
|
let X0;
|
|
2051
2051
|
try {
|
|
2052
|
-
X0 =
|
|
2052
|
+
X0 = b0.getLogger("meteo2");
|
|
2053
2053
|
} catch {
|
|
2054
2054
|
} finally {
|
|
2055
2055
|
}
|
|
2056
2056
|
class j {
|
|
2057
2057
|
static async parseHistory(M) {
|
|
2058
|
-
return M == null ? void 0 : M.map((
|
|
2059
|
-
const
|
|
2058
|
+
return M == null ? void 0 : M.map((b) => {
|
|
2059
|
+
const z = Number(b.pressure / 100), p = Number(b.lat), c = Number(b.lon), W = Number(b.windSpeed * 3600 / 1852);
|
|
2060
2060
|
return {
|
|
2061
|
-
updated: L.utc(
|
|
2061
|
+
updated: L.utc(b.time).format(),
|
|
2062
2062
|
lat: isNaN(p) ? null : p,
|
|
2063
2063
|
lng: isNaN(c) ? null : c,
|
|
2064
|
-
pressure: isNaN(
|
|
2064
|
+
pressure: isNaN(z) ? null : Math.round(z) || null,
|
|
2065
2065
|
kts: isNaN(W) ? null : Math.round(W) || null,
|
|
2066
|
-
type:
|
|
2066
|
+
type: N.parseTropicalType(W),
|
|
2067
2067
|
wind: {
|
|
2068
2068
|
r7: null,
|
|
2069
2069
|
r7ne: null,
|
|
@@ -2085,20 +2085,20 @@ class j {
|
|
|
2085
2085
|
});
|
|
2086
2086
|
}
|
|
2087
2087
|
static async parseForecast(M) {
|
|
2088
|
-
return M.map((
|
|
2088
|
+
return M.map((b) => {
|
|
2089
2089
|
var c;
|
|
2090
|
-
const
|
|
2091
|
-
return (c =
|
|
2092
|
-
const
|
|
2090
|
+
const z = L.utc(b.reftime).format(), p = {};
|
|
2091
|
+
return (c = b.records) == null || c.forEach((W) => {
|
|
2092
|
+
const A = L.utc(W.time), o = A.diff(z, "hour"), q = Number(W.pressure / 100), R = Number(W.lat), n = Number(W.lon), Y = Number(W.windSpeed * 3600 / 1852);
|
|
2093
2093
|
p[o] = {
|
|
2094
|
-
lat: isNaN(
|
|
2095
|
-
lng: isNaN(
|
|
2094
|
+
lat: isNaN(R) ? null : R,
|
|
2095
|
+
lng: isNaN(n) ? null : n,
|
|
2096
2096
|
pressure: isNaN(q) ? null : Math.round(q) || null,
|
|
2097
|
-
utc:
|
|
2097
|
+
utc: A.format(),
|
|
2098
2098
|
wind: {
|
|
2099
|
-
datetime:
|
|
2099
|
+
datetime: A.format(),
|
|
2100
2100
|
kts: isNaN(Y) ? null : Math.round(Y) || null,
|
|
2101
|
-
type:
|
|
2101
|
+
type: N.parseTropicalType(Y),
|
|
2102
2102
|
r7: null,
|
|
2103
2103
|
r7ne: null,
|
|
2104
2104
|
r7nw: null,
|
|
@@ -2120,87 +2120,87 @@ class j {
|
|
|
2120
2120
|
}
|
|
2121
2121
|
};
|
|
2122
2122
|
}), {
|
|
2123
|
-
date:
|
|
2123
|
+
date: z,
|
|
2124
2124
|
//@ts-ignore
|
|
2125
|
-
model: (
|
|
2125
|
+
model: (A0[((b == null ? void 0 : b.modelIdentifier) || "").toUpperCase()] || "OTHER").toLowerCase(),
|
|
2126
2126
|
hours: p
|
|
2127
2127
|
};
|
|
2128
2128
|
});
|
|
2129
2129
|
}
|
|
2130
2130
|
static async parseTropical(M) {
|
|
2131
2131
|
var W;
|
|
2132
|
-
const { id:
|
|
2133
|
-
id:
|
|
2134
|
-
name: (W =
|
|
2132
|
+
const { id: b, name: z, strength: p } = M, c = {
|
|
2133
|
+
id: b == null ? void 0 : b.toLowerCase(),
|
|
2134
|
+
name: (W = z == null ? void 0 : z.toLowerCase()) == null ? void 0 : W.replaceAll(/\s/g, "-"),
|
|
2135
2135
|
strength: p,
|
|
2136
2136
|
history: await j.parseHistory(M.history),
|
|
2137
2137
|
forecasts: await j.parseForecast(M.forecast)
|
|
2138
2138
|
};
|
|
2139
|
-
return await
|
|
2139
|
+
return await N.tropicalMovement(c), c;
|
|
2140
2140
|
}
|
|
2141
2141
|
static async realtimeForecast() {
|
|
2142
|
-
const M = "https://node.windy.com/tc/v2/storms",
|
|
2143
|
-
for (const p of
|
|
2144
|
-
const c = `https://node.windy.com/tc/v2/storms/${p.id}`, W = await
|
|
2145
|
-
|
|
2142
|
+
const M = "https://node.windy.com/tc/v2/storms", b = await k.get(M).json(), z = [];
|
|
2143
|
+
for (const p of b.storms) {
|
|
2144
|
+
const c = `https://node.windy.com/tc/v2/storms/${p.id}`, W = await k.get(c).json(), A = await j.parseTropical(W);
|
|
2145
|
+
z.push(A);
|
|
2146
2146
|
}
|
|
2147
|
-
return
|
|
2147
|
+
return z;
|
|
2148
2148
|
}
|
|
2149
2149
|
}
|
|
2150
|
-
const
|
|
2150
|
+
const Q = class Q {
|
|
2151
2151
|
static async parseHistory(M) {
|
|
2152
|
-
const
|
|
2153
|
-
for (const
|
|
2154
|
-
const o = L(
|
|
2152
|
+
const b = `https://hifleet.com/hifleetapi/gettyphooninfo2.do?xuhao=${M}`, z = await k.post(b).text(), p = await Q.parser.parseStringPromise(z), c = p.typhoon.position instanceof Array ? p.typhoon.position : [p.typhoon.position], W = [];
|
|
2153
|
+
for (const A of c) {
|
|
2154
|
+
const o = L(A.updatetime).utcOffset(8).utc().format(), q = Number(A.lat), R = Number(A.lon), n = Number(A.pressure), Y = Number(A.windspeed * 3600 / 1852), r = N.parseWindCircle(A.c7quad1 / 1.852), T = N.parseWindCircle(A.c7quad2 / 1.852), B = N.parseWindCircle(A.c7quad3 / 1.852), t = N.parseWindCircle(A.c7quad4 / 1.852), u = N.parseWindCircle(A.c10quad1 / 1.852), l = N.parseWindCircle(A.c10quad2 / 1.852), f = N.parseWindCircle(A.c10quad3 / 1.852), C = N.parseWindCircle(A.c10quad4 / 1.852), I = N.parseWindCircle(A.c12quad1 / 1.852), m = N.parseWindCircle(A.c12quad2 / 1.852), K = N.parseWindCircle(A.c12quad3 / 1.852), h = N.parseWindCircle(A.c12quad4 / 1.852), { r7: H, r10: g, r12: G } = N.estimateWindRadii(Y, q), Z = {
|
|
2155
2155
|
updated: o,
|
|
2156
2156
|
lat: isNaN(q) ? null : q,
|
|
2157
|
-
lng: isNaN(
|
|
2158
|
-
pressure: isNaN(
|
|
2157
|
+
lng: isNaN(R) ? null : R,
|
|
2158
|
+
pressure: isNaN(n) ? null : Math.round(n),
|
|
2159
2159
|
kts: isNaN(Y) ? null : Math.round(Y) || null,
|
|
2160
|
-
type:
|
|
2160
|
+
type: N.parseTropicalType(Y),
|
|
2161
2161
|
wind: {
|
|
2162
2162
|
r7: H,
|
|
2163
|
-
r7ne:
|
|
2164
|
-
r7nw:
|
|
2165
|
-
r7sw:
|
|
2166
|
-
r7se:
|
|
2163
|
+
r7ne: r,
|
|
2164
|
+
r7nw: T,
|
|
2165
|
+
r7sw: B,
|
|
2166
|
+
r7se: t,
|
|
2167
2167
|
r10: g,
|
|
2168
2168
|
r10ne: u,
|
|
2169
|
-
r10nw:
|
|
2170
|
-
r10sw:
|
|
2171
|
-
r10se:
|
|
2172
|
-
r12:
|
|
2173
|
-
r12ne:
|
|
2174
|
-
r12nw:
|
|
2169
|
+
r10nw: l,
|
|
2170
|
+
r10sw: f,
|
|
2171
|
+
r10se: C,
|
|
2172
|
+
r12: G,
|
|
2173
|
+
r12ne: I,
|
|
2174
|
+
r12nw: m,
|
|
2175
2175
|
r12sw: K,
|
|
2176
2176
|
r12se: h
|
|
2177
2177
|
}
|
|
2178
2178
|
};
|
|
2179
|
-
W.push(
|
|
2179
|
+
W.push(Z);
|
|
2180
2180
|
}
|
|
2181
|
-
return W.sort((
|
|
2181
|
+
return W.sort((A, o) => L(o.updated).unix() - L(A.updated).unix()), W;
|
|
2182
2182
|
}
|
|
2183
|
-
static async parseForecast(M,
|
|
2184
|
-
const
|
|
2183
|
+
static async parseForecast(M, b) {
|
|
2184
|
+
const z = `https://hifleet.com/hifleetapi/gettyphooforecast.do?xuhao=${M}`, p = await k.post(z).text(), c = await Q.parser.parseStringPromise(p), W = c.list.forecast instanceof Array ? c.list.forecast : [c.list.forecast], A = [];
|
|
2185
2185
|
for (const o of W)
|
|
2186
2186
|
if (o.xuhao === M) {
|
|
2187
2187
|
const q = o.positions.forecastposition instanceof Array ? o.positions.forecastposition : [o.positions.forecastposition];
|
|
2188
2188
|
if (q.length) {
|
|
2189
|
-
|
|
2190
|
-
const
|
|
2189
|
+
b = b || L(q.at(0).forecasttime).utcOffset(8).utc();
|
|
2190
|
+
const R = {};
|
|
2191
2191
|
for (const Y of q) {
|
|
2192
|
-
const
|
|
2193
|
-
if (
|
|
2194
|
-
const
|
|
2195
|
-
|
|
2196
|
-
lat: isNaN(
|
|
2197
|
-
lng: isNaN(
|
|
2192
|
+
const r = L(Y.forecasttime).utcOffset(8).utc(), T = r.diff(b, "hours");
|
|
2193
|
+
if (T) {
|
|
2194
|
+
const B = Number(Y.forelat), t = Number(Y.forelon), u = Number(Y.forepressure), l = Number(Y.forespeed * 3600 / 1852);
|
|
2195
|
+
R[T] = {
|
|
2196
|
+
lat: isNaN(B) ? null : B,
|
|
2197
|
+
lng: isNaN(t) ? null : t,
|
|
2198
2198
|
pressure: u ? Math.round(u) : null,
|
|
2199
|
-
utc:
|
|
2199
|
+
utc: r.format(),
|
|
2200
2200
|
wind: {
|
|
2201
|
-
datetime:
|
|
2202
|
-
kts: isNaN(
|
|
2203
|
-
type:
|
|
2201
|
+
datetime: r.format(),
|
|
2202
|
+
kts: isNaN(l) ? null : Math.round(l),
|
|
2203
|
+
type: N.parseTropicalType(l),
|
|
2204
2204
|
r7: null,
|
|
2205
2205
|
r7ne: null,
|
|
2206
2206
|
r7nw: null,
|
|
@@ -2223,229 +2223,127 @@ const k = class k {
|
|
|
2223
2223
|
};
|
|
2224
2224
|
}
|
|
2225
2225
|
}
|
|
2226
|
-
const
|
|
2227
|
-
date:
|
|
2228
|
-
model:
|
|
2229
|
-
hours:
|
|
2226
|
+
const n = {
|
|
2227
|
+
date: b.utc().format(),
|
|
2228
|
+
model: N.parseTropicalModel(o.country).toLowerCase(),
|
|
2229
|
+
hours: R
|
|
2230
2230
|
};
|
|
2231
|
-
|
|
2231
|
+
A.push(n);
|
|
2232
2232
|
}
|
|
2233
2233
|
}
|
|
2234
|
-
return
|
|
2234
|
+
return A;
|
|
2235
2235
|
}
|
|
2236
2236
|
static async parseTropical(M) {
|
|
2237
|
-
var W,
|
|
2238
|
-
const
|
|
2239
|
-
id: (
|
|
2237
|
+
var W, A, o;
|
|
2238
|
+
const b = await Q.parseHistory(M.xuhao), z = (W = b.at(0)) == null ? void 0 : W.updated, p = await Q.parseForecast(M.xuhao, z ? L(z) : void 0), c = {
|
|
2239
|
+
id: (A = M.enname) == null ? void 0 : A.toLowerCase(),
|
|
2240
2240
|
name: (o = M.enname) == null ? void 0 : o.toLowerCase(),
|
|
2241
2241
|
cnName: M.name,
|
|
2242
|
-
history:
|
|
2242
|
+
history: b,
|
|
2243
2243
|
forecasts: p
|
|
2244
2244
|
};
|
|
2245
|
-
return await
|
|
2245
|
+
return await N.tropicalMovement(c), c;
|
|
2246
2246
|
}
|
|
2247
2247
|
static async realtimeForecast() {
|
|
2248
|
-
const M = "https://hifleet.com/hifleetapi/getCurrentTyphoon2.do",
|
|
2248
|
+
const M = "https://hifleet.com/hifleetapi/getCurrentTyphoon2.do", b = await k.post(M).text(), z = await Q.parser.parseStringPromise(b), p = [], c = z.typhoon.position instanceof Array ? z.typhoon.position : [z.typhoon.position];
|
|
2249
2249
|
for (const W of c)
|
|
2250
2250
|
if (W) {
|
|
2251
|
-
const
|
|
2252
|
-
p.push(
|
|
2251
|
+
const A = await Q.parseTropical(W);
|
|
2252
|
+
p.push(A);
|
|
2253
2253
|
}
|
|
2254
2254
|
return p;
|
|
2255
2255
|
}
|
|
2256
2256
|
};
|
|
2257
|
-
F(
|
|
2258
|
-
let
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
return M.map((z) => {
|
|
2262
|
-
const b = Number(z.lat), p = Number(z.lon), c = Number(z.maxSP * 3600 / 1852), W = T.parseWindCircle(z.r7Ne / 1.852), O = T.parseWindCircle(z.r7Nw / 1.852), o = T.parseWindCircle(z.r7Se / 1.852), q = T.parseWindCircle(z.r7Sw / 1.852), d = T.parseWindCircle(z.r10Ne / 1.852), X = T.parseWindCircle(z.r10Nw / 1.852), Y = T.parseWindCircle(z.r10Se / 1.852), f = T.parseWindCircle(z.r10Sw / 1.852), e = T.parseWindCircle(z.r12Ne / 1.852), r = T.parseWindCircle(z.r12Nw / 1.852), N = T.parseWindCircle(z.r12Se / 1.852), u = T.parseWindCircle(z.r12Sw / 1.852), { r7: B, r10: S, r12: m } = T.estimateWindRadii(c, b);
|
|
2263
|
-
return {
|
|
2264
|
-
updated: L.utc(z.realTime).format(),
|
|
2265
|
-
lat: isNaN(b) ? null : b || null,
|
|
2266
|
-
lng: isNaN(p) ? null : p || null,
|
|
2267
|
-
kts: isNaN(c) ? null : Math.round(c) || null,
|
|
2268
|
-
type: T.parseTropicalType(c),
|
|
2269
|
-
wind: {
|
|
2270
|
-
r7: B,
|
|
2271
|
-
r7ne: W,
|
|
2272
|
-
r7nw: O,
|
|
2273
|
-
r7se: o,
|
|
2274
|
-
r7sw: q,
|
|
2275
|
-
r10: S,
|
|
2276
|
-
r10ne: d,
|
|
2277
|
-
r10nw: X,
|
|
2278
|
-
r10se: Y,
|
|
2279
|
-
r10sw: f,
|
|
2280
|
-
r12: m,
|
|
2281
|
-
r12ne: e,
|
|
2282
|
-
r12nw: r,
|
|
2283
|
-
r12se: N,
|
|
2284
|
-
r12sw: u
|
|
2285
|
-
}
|
|
2286
|
-
};
|
|
2287
|
-
});
|
|
2288
|
-
}
|
|
2289
|
-
static async parseForecast(M) {
|
|
2290
|
-
return M.map((z) => {
|
|
2291
|
-
const b = z.currentPosition, p = z.forecastPoints, c = L.utc(b.realTime).format(), W = {};
|
|
2292
|
-
return p.forEach((O) => {
|
|
2293
|
-
const o = L.utc(O.forecastTime), q = o.diff(c, "hour"), d = Math.round(O.maxSP * 3600 / 1852), X = Math.round(O.maxSP * 3600 / 1852), Y = T.parseWindCircle(O.r7Ne / 1.852), f = T.parseWindCircle(O.r7Nw / 1.852), e = T.parseWindCircle(O.r7Sw / 1.852), r = T.parseWindCircle(O.r7Se / 1.852), N = T.parseWindCircle(O.r10Ne / 1.852), u = T.parseWindCircle(O.r10Nw / 1.852), B = T.parseWindCircle(O.r10Sw / 1.852), S = T.parseWindCircle(O.r10Se / 1.852), m = T.parseWindCircle(O.r12Ne / 1.852), Z = T.parseWindCircle(O.r12Nw / 1.852), P = T.parseWindCircle(O.r12Sw / 1.852), K = T.parseWindCircle(O.r12Se / 1.852), { r7: h, r10: H, r12: g } = T.estimateWindRadii(d, O.lat);
|
|
2294
|
-
W[q] = {
|
|
2295
|
-
lat: O.lat,
|
|
2296
|
-
lng: O.lon,
|
|
2297
|
-
pressure: O.pressure,
|
|
2298
|
-
utc: o.format(),
|
|
2299
|
-
wind: {
|
|
2300
|
-
kts: isNaN(d) ? null : d || null,
|
|
2301
|
-
type: T.parseTropicalType(d),
|
|
2302
|
-
datetime: o.format(),
|
|
2303
|
-
r7: h,
|
|
2304
|
-
r7ne: Y,
|
|
2305
|
-
r7nw: f,
|
|
2306
|
-
r7sw: e,
|
|
2307
|
-
r7se: r,
|
|
2308
|
-
r10: H,
|
|
2309
|
-
r10ne: N,
|
|
2310
|
-
r10nw: u,
|
|
2311
|
-
r10sw: B,
|
|
2312
|
-
r10se: S,
|
|
2313
|
-
r12: g,
|
|
2314
|
-
r12ne: m,
|
|
2315
|
-
r12nw: Z,
|
|
2316
|
-
r12sw: P,
|
|
2317
|
-
r12se: K
|
|
2318
|
-
},
|
|
2319
|
-
gusts: {
|
|
2320
|
-
kts: isNaN(X) ? null : X || null
|
|
2321
|
-
}
|
|
2322
|
-
};
|
|
2323
|
-
}), {
|
|
2324
|
-
date: c,
|
|
2325
|
-
model: T.parseTropicalModel(z.source).toLowerCase(),
|
|
2326
|
-
hours: W
|
|
2327
|
-
};
|
|
2328
|
-
});
|
|
2329
|
-
}
|
|
2330
|
-
static async parseTropical(M) {
|
|
2331
|
-
var W;
|
|
2332
|
-
const z = M.baseInfo, b = M.currentPosition, p = (W = z == null ? void 0 : z.eName) == null ? void 0 : W.toLowerCase(), c = {
|
|
2333
|
-
id: z == null ? void 0 : z.stormID,
|
|
2334
|
-
name: p,
|
|
2335
|
-
cName: z == null ? void 0 : z.cName,
|
|
2336
|
-
lat: b == null ? void 0 : b.lat,
|
|
2337
|
-
lng: b == null ? void 0 : b.lon,
|
|
2338
|
-
history: await x.parseHistory(M.historyPoint),
|
|
2339
|
-
forecasts: await x.parseForecast(M.forecastSets)
|
|
2340
|
-
};
|
|
2341
|
-
return await T.tropicalMovement(c), c;
|
|
2342
|
-
}
|
|
2343
|
-
static async realtimeForecast() {
|
|
2344
|
-
const M = "http://weather.ninecosmos.cn/jiufang/meteo/typhoon", z = await Q.get(M).json(), b = [];
|
|
2345
|
-
for (const p in z.data)
|
|
2346
|
-
b.push(await x.parseTropical(z.data[p]));
|
|
2347
|
-
return b;
|
|
2348
|
-
}
|
|
2349
|
-
}
|
|
2350
|
-
var c0 = /* @__PURE__ */ ((i) => (i.CMA = "CMA", i.CNTW = "CNTW", i.CNHK = "CNHK", i.JMA = "JMA", i.KMA = "KMA", i.ECMWF = "ECMWF", i.NOAA_AT = "NOAA-AT", i.NOAA_CP = "NOAA-CP", i.NOAA_EP = "NOAA-EP", i.UKM = "UKM", i.IMD = "IMD", i.GFS = "GFS", i.BOM_ACCESS = "BOM-ACCESS", i.BOM_BULLETIN_EAST = "BOM-BULLETIN-EAST", i.BOM_BULLETIN_NORTH = "BOM-BULLETIN-NORTH", i.BOM_BULLETIN_WEST = "BOM-BULLETIN-WEST", i.OTHER = "OTHER", i))(c0 || {});
|
|
2351
|
-
class T {
|
|
2257
|
+
F(Q, "parser", U0.Parser({ explicitArray: !1, mergeAttrs: !0, trim: !0 }));
|
|
2258
|
+
let z0 = Q;
|
|
2259
|
+
var A0 = /* @__PURE__ */ ((e) => (e.CMA = "CMA", e.CNTW = "CNTW", e.CNHK = "CNHK", e.JMA = "JMA", e.KMA = "KMA", e.ECMWF = "ECMWF", e.NOAA_AT = "NOAA-AT", e.NOAA_CP = "NOAA-CP", e.NOAA_EP = "NOAA-EP", e.UKM = "UKM", e.IMD = "IMD", e.GFS = "GFS", e.BOM_ACCESS = "BOM-ACCESS", e.BOM_BULLETIN_EAST = "BOM-BULLETIN-EAST", e.BOM_BULLETIN_NORTH = "BOM-BULLETIN-NORTH", e.BOM_BULLETIN_WEST = "BOM-BULLETIN-WEST", e.OTHER = "OTHER", e))(A0 || {});
|
|
2260
|
+
class N {
|
|
2352
2261
|
/**
|
|
2353
2262
|
* 台风数据
|
|
2354
2263
|
* @param vendor
|
|
2355
2264
|
* @param options
|
|
2356
2265
|
*/
|
|
2357
|
-
static async realtimeForecast(M = "",
|
|
2358
|
-
return X0.info("[%s] try to fetch realtime tropicals forecast from %s",
|
|
2266
|
+
static async realtimeForecast(M = "", b = {}) {
|
|
2267
|
+
return X0.info("[%s] try to fetch realtime tropicals forecast from %s", b.requestId, M), M === "windy" ? j.realtimeForecast() : M === "hifleet" ? z0.realtimeForecast() : N.mergeTropicals(!0, b);
|
|
2359
2268
|
}
|
|
2360
2269
|
static async sortTropical(M) {
|
|
2361
|
-
var
|
|
2362
|
-
const
|
|
2363
|
-
return (
|
|
2270
|
+
var z;
|
|
2271
|
+
const b = Object.values(A0);
|
|
2272
|
+
return (z = M.forecasts) == null || z.sort((p, c) => {
|
|
2364
2273
|
var o, q;
|
|
2365
|
-
const W =
|
|
2366
|
-
return (W === -1 ? 999 : W) - (
|
|
2274
|
+
const W = b.indexOf((o = p.model) == null ? void 0 : o.toUpperCase()), A = b.indexOf((q = c.model) == null ? void 0 : q.toUpperCase());
|
|
2275
|
+
return (W === -1 ? 999 : W) - (A === -1 ? 999 : A);
|
|
2367
2276
|
}), M;
|
|
2368
2277
|
}
|
|
2369
|
-
static async mergeTropicals(M = !0,
|
|
2370
|
-
var
|
|
2371
|
-
const
|
|
2372
|
-
for (const
|
|
2373
|
-
const
|
|
2374
|
-
var
|
|
2375
|
-
return ((
|
|
2376
|
-
}), Y = W.find((e) => {
|
|
2377
|
-
var r, N;
|
|
2378
|
-
return ((r = e.name) == null ? void 0 : r.toLowerCase()) === ((N = d.name) == null ? void 0 : N.toLowerCase());
|
|
2278
|
+
static async mergeTropicals(M = !0, b = {}) {
|
|
2279
|
+
var c, W;
|
|
2280
|
+
const z = await j.realtimeForecast(), p = M ? await z0.realtimeForecast() : [];
|
|
2281
|
+
for (const A of z) {
|
|
2282
|
+
const o = p.find((R) => {
|
|
2283
|
+
var n, Y;
|
|
2284
|
+
return ((n = R.name) == null ? void 0 : n.toLowerCase()) === ((Y = A.name) == null ? void 0 : Y.toLowerCase());
|
|
2379
2285
|
});
|
|
2380
|
-
if (
|
|
2381
|
-
|
|
2382
|
-
for (const
|
|
2383
|
-
["CMA", "JMA", "CNTW", "CNHK", "KMA"].includes((
|
|
2384
|
-
var N, u;
|
|
2385
|
-
return ((N = r.model) == null ? void 0 : N.toLowerCase()) === ((u = e.model) == null ? void 0 : u.toLowerCase());
|
|
2386
|
-
}) && d.forecasts.push(e);
|
|
2387
|
-
}
|
|
2388
|
-
if (X) {
|
|
2389
|
-
(o = X.history) != null && o.length && (d.history = X.history), d.history.sort((e, r) => L(r.updated).valueOf() - L(e.updated).valueOf());
|
|
2390
|
-
for (const e of X.forecasts)
|
|
2391
|
-
["CMA", "JMA", "CNTW", "CNHK", "KMA"].includes((q = e.model) == null ? void 0 : q.toUpperCase()) && !d.forecasts.find((r) => r.model.toLowerCase() === e.model.toLowerCase()) && d.forecasts.push(e);
|
|
2286
|
+
if (o) {
|
|
2287
|
+
A.cnName = o.cnName, (c = o.history) != null && c.length && (A.history = o.history), A.history.sort((R, n) => L(n.updated).valueOf() - L(R.updated).valueOf());
|
|
2288
|
+
for (const R of o.forecasts)
|
|
2289
|
+
["CMA", "JMA", "CNTW", "CNHK", "KMA"].includes((W = R.model) == null ? void 0 : W.toUpperCase()) && !A.forecasts.find((n) => n.model.toLowerCase() === R.model.toLowerCase()) && A.forecasts.push(R);
|
|
2392
2290
|
}
|
|
2393
|
-
|
|
2394
|
-
const
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
const
|
|
2398
|
-
for (const
|
|
2399
|
-
const
|
|
2400
|
-
|
|
2291
|
+
A.history = A.history.reduce((R, n) => (R.find((Y) => Y.updated === n.updated) || R.push(n), R), []);
|
|
2292
|
+
const q = A.history[0];
|
|
2293
|
+
q && A.forecasts.forEach((R) => {
|
|
2294
|
+
R.date = q.updated;
|
|
2295
|
+
const n = L(q.updated), Y = {};
|
|
2296
|
+
for (const r in R.hours) {
|
|
2297
|
+
const T = R.hours[r], B = L(T.utc).diff(n, "h");
|
|
2298
|
+
B > 0 && (Y[B] = T);
|
|
2401
2299
|
}
|
|
2402
|
-
|
|
2403
|
-
}), await
|
|
2300
|
+
R.hours = Y;
|
|
2301
|
+
}), await N.tropicalMovement(A);
|
|
2404
2302
|
}
|
|
2405
|
-
for (const
|
|
2406
|
-
|
|
2407
|
-
var
|
|
2408
|
-
return ((
|
|
2409
|
-
}) &&
|
|
2410
|
-
return
|
|
2303
|
+
for (const A of p)
|
|
2304
|
+
z.every((o) => {
|
|
2305
|
+
var q, R;
|
|
2306
|
+
return ((q = o.name) == null ? void 0 : q.toLowerCase()) !== ((R = A.name) == null ? void 0 : R.toLowerCase());
|
|
2307
|
+
}) && z.push(A);
|
|
2308
|
+
return z;
|
|
2411
2309
|
}
|
|
2412
2310
|
/**
|
|
2413
2311
|
* 获取热带气旋的移动信息
|
|
2414
2312
|
* @param tropical
|
|
2415
2313
|
*/
|
|
2416
2314
|
static async tropicalMovement(M) {
|
|
2417
|
-
await
|
|
2418
|
-
let
|
|
2315
|
+
await N.sortTropical(M);
|
|
2316
|
+
let b = null;
|
|
2419
2317
|
M.forecasts.forEach((p) => {
|
|
2420
2318
|
const c = p.hours, W = Object.keys(c);
|
|
2421
|
-
for (let
|
|
2422
|
-
const o = c[W[
|
|
2423
|
-
|
|
2424
|
-
const q = c[W[
|
|
2425
|
-
o.movement =
|
|
2426
|
-
const
|
|
2427
|
-
o.wind = { ...o.wind || {}, ...
|
|
2319
|
+
for (let A = 0; A < W.length - 1; A++) {
|
|
2320
|
+
const o = c[W[A]];
|
|
2321
|
+
b = b || o;
|
|
2322
|
+
const q = c[W[A + 1]];
|
|
2323
|
+
o.movement = N.calculateMovement(o, q);
|
|
2324
|
+
const R = N.supplementWindRadii(o);
|
|
2325
|
+
o.wind = { ...o.wind || {}, ...R };
|
|
2428
2326
|
}
|
|
2429
2327
|
});
|
|
2430
|
-
let
|
|
2328
|
+
let z = null;
|
|
2431
2329
|
for (let p = 0; p < M.history.length - 1; p++) {
|
|
2432
2330
|
const c = M.history[p + 1], W = M.history[p];
|
|
2433
|
-
|
|
2434
|
-
const
|
|
2435
|
-
c.wind = { ...c.wind || {}, ...
|
|
2331
|
+
z = z || W, c.movement = N.calculateMovement(c, W);
|
|
2332
|
+
const A = N.supplementWindRadii(c);
|
|
2333
|
+
c.wind = { ...c.wind || {}, ...A };
|
|
2436
2334
|
}
|
|
2437
|
-
if (
|
|
2438
|
-
|
|
2439
|
-
const p =
|
|
2440
|
-
|
|
2335
|
+
if (z && b) {
|
|
2336
|
+
z.movement = N.calculateMovement(z, b);
|
|
2337
|
+
const p = N.supplementWindRadii(z);
|
|
2338
|
+
z.wind = { ...z.wind || {}, ...p };
|
|
2441
2339
|
}
|
|
2442
2340
|
return M;
|
|
2443
2341
|
}
|
|
2444
|
-
static calculateMovement(M,
|
|
2445
|
-
const
|
|
2342
|
+
static calculateMovement(M, b) {
|
|
2343
|
+
const z = Y0.calculateDistance(M, b), p = L(b.utc || b.updated).diff(M.utc || M.updated, "h", !0);
|
|
2446
2344
|
return {
|
|
2447
|
-
kts: Math.round(
|
|
2448
|
-
deg:
|
|
2345
|
+
kts: Math.round(z / p * 100) / 100,
|
|
2346
|
+
deg: Y0.calculateBearing(M, b, !0, 0)
|
|
2449
2347
|
};
|
|
2450
2348
|
}
|
|
2451
2349
|
/**
|
|
@@ -2453,8 +2351,8 @@ class T {
|
|
|
2453
2351
|
* @param ms 最大风速(m/s)
|
|
2454
2352
|
* @param lat 纬度
|
|
2455
2353
|
*/
|
|
2456
|
-
static estimateRMW(M,
|
|
2457
|
-
const
|
|
2354
|
+
static estimateRMW(M, b) {
|
|
2355
|
+
const z = Math.abs(b || 25), p = 51.6 * Math.exp(-0.0223 * M + 0.0281 * z);
|
|
2458
2356
|
return Math.max(10, Math.min(150, p));
|
|
2459
2357
|
}
|
|
2460
2358
|
/**
|
|
@@ -2463,8 +2361,8 @@ class T {
|
|
|
2463
2361
|
* @param rmw 最大风速半径(km)
|
|
2464
2362
|
* @param lat 中心纬度
|
|
2465
2363
|
*/
|
|
2466
|
-
static estimateHollandB(M,
|
|
2467
|
-
return 1.0036 + 0.0173 * M - 0.0312 * Math.log(
|
|
2364
|
+
static estimateHollandB(M, b, z) {
|
|
2365
|
+
return 1.0036 + 0.0173 * M - 0.0312 * Math.log(b) + 87e-4 * z;
|
|
2468
2366
|
}
|
|
2469
2367
|
/**
|
|
2470
2368
|
* 推算风圈半径
|
|
@@ -2473,13 +2371,13 @@ class T {
|
|
|
2473
2371
|
* @param rmw 最大风速半径(km)
|
|
2474
2372
|
* @param b Holland形状参数B
|
|
2475
2373
|
*/
|
|
2476
|
-
static findWindRadius(M,
|
|
2477
|
-
if (M >=
|
|
2374
|
+
static findWindRadius(M, b, z, p) {
|
|
2375
|
+
if (M >= b)
|
|
2478
2376
|
return 0;
|
|
2479
|
-
let c =
|
|
2377
|
+
let c = z, W = z * 10;
|
|
2480
2378
|
for (; W - c > 0.1; ) {
|
|
2481
|
-
const
|
|
2482
|
-
|
|
2379
|
+
const A = (c + W) / 2, o = z / A, q = Math.pow(o, p) * Math.exp(1 - Math.pow(o, p));
|
|
2380
|
+
b * Math.sqrt(q) > M ? c = A : W = A;
|
|
2483
2381
|
}
|
|
2484
2382
|
return $.kmh2kts(c + W);
|
|
2485
2383
|
}
|
|
@@ -2489,11 +2387,11 @@ class T {
|
|
|
2489
2387
|
* @param lat 纬度
|
|
2490
2388
|
* @returns 风圈半径对象
|
|
2491
2389
|
*/
|
|
2492
|
-
static estimateWindRadii(M,
|
|
2493
|
-
const
|
|
2390
|
+
static estimateWindRadii(M, b) {
|
|
2391
|
+
const z = $.kts2ms(M), p = N.estimateRMW(z, b), c = N.estimateHollandB(z, p, b), W = N.findWindRadius(17.2, z, p, c), A = N.findWindRadius(28.5, z, p, c), o = N.findWindRadius(37, z, p, c);
|
|
2494
2392
|
return {
|
|
2495
2393
|
r7: W ? Math.round(W) : null,
|
|
2496
|
-
r10:
|
|
2394
|
+
r10: A ? Math.round(A) : null,
|
|
2497
2395
|
r12: o ? Math.round(o) : null
|
|
2498
2396
|
};
|
|
2499
2397
|
}
|
|
@@ -2505,25 +2403,25 @@ class T {
|
|
|
2505
2403
|
* @param hemisphere N 北半球, N 南半球
|
|
2506
2404
|
* @returns 四象限风圈半径
|
|
2507
2405
|
*/
|
|
2508
|
-
static estimateAsymmetricRadii(M,
|
|
2406
|
+
static estimateAsymmetricRadii(M, b = 0, z = 0, p = "N") {
|
|
2509
2407
|
if (!M)
|
|
2510
2408
|
return { ne: null, nw: null, se: null, sw: null };
|
|
2511
|
-
if (
|
|
2409
|
+
if (b < 9)
|
|
2512
2410
|
return { ne: M, nw: M, se: M, sw: M };
|
|
2513
|
-
const W = 0.15 * Math.min(
|
|
2514
|
-
ne: (45 -
|
|
2515
|
-
nw: (315 -
|
|
2516
|
-
se: (135 -
|
|
2517
|
-
sw: (225 -
|
|
2411
|
+
const W = 0.15 * Math.min(b / (20 / 1.852), 1), A = {
|
|
2412
|
+
ne: (45 - z + 360) % 360,
|
|
2413
|
+
nw: (315 - z + 360) % 360,
|
|
2414
|
+
se: (135 - z + 360) % 360,
|
|
2415
|
+
sw: (225 - z + 360) % 360
|
|
2518
2416
|
}, o = (q) => {
|
|
2519
|
-
const
|
|
2520
|
-
return 1 - W *
|
|
2417
|
+
const R = q > 180 ? q - 360 : q, n = Math.cos(R * Math.PI / 180);
|
|
2418
|
+
return 1 - W * n;
|
|
2521
2419
|
};
|
|
2522
2420
|
return {
|
|
2523
|
-
ne: Math.round(M * o(
|
|
2524
|
-
nw: Math.round(M * o(
|
|
2525
|
-
se: Math.round(M * o(
|
|
2526
|
-
sw: Math.round(M * o(
|
|
2421
|
+
ne: Math.round(M * o(A.ne)),
|
|
2422
|
+
nw: Math.round(M * o(A.nw)),
|
|
2423
|
+
se: Math.round(M * o(A.se)),
|
|
2424
|
+
sw: Math.round(M * o(A.sw))
|
|
2527
2425
|
};
|
|
2528
2426
|
}
|
|
2529
2427
|
/**
|
|
@@ -2531,13 +2429,13 @@ class T {
|
|
|
2531
2429
|
* @param position 预报点数据
|
|
2532
2430
|
*/
|
|
2533
2431
|
static supplementWindRadii(M) {
|
|
2534
|
-
const { wind:
|
|
2535
|
-
if (
|
|
2536
|
-
for (const q of Object.keys(
|
|
2537
|
-
/^r[7,10,12]/.test(q) && (isNaN(Number(
|
|
2538
|
-
return
|
|
2432
|
+
const { wind: b, lat: z, movement: p } = M;
|
|
2433
|
+
if (b.r7) {
|
|
2434
|
+
for (const q of Object.keys(b))
|
|
2435
|
+
/^r[7,10,12]/.test(q) && (isNaN(Number(b[q])) || b[q] < 0) && (b[q] = null);
|
|
2436
|
+
return b;
|
|
2539
2437
|
}
|
|
2540
|
-
const c =
|
|
2438
|
+
const c = b.kts;
|
|
2541
2439
|
if (!c || c < 17)
|
|
2542
2440
|
return {
|
|
2543
2441
|
r7: null,
|
|
@@ -2556,16 +2454,16 @@ class T {
|
|
|
2556
2454
|
r12se: null,
|
|
2557
2455
|
r12sw: null
|
|
2558
2456
|
};
|
|
2559
|
-
const W =
|
|
2457
|
+
const W = N.estimateWindRadii(c, z), A = {};
|
|
2560
2458
|
return ["r7", "r10", "r12"].forEach((q) => {
|
|
2561
|
-
const
|
|
2562
|
-
if (
|
|
2563
|
-
|
|
2564
|
-
const
|
|
2565
|
-
|
|
2459
|
+
const R = W[q];
|
|
2460
|
+
if (R) {
|
|
2461
|
+
A[q] = R;
|
|
2462
|
+
const n = N.estimateAsymmetricRadii(R, (p == null ? void 0 : p.kts) || 0, (p == null ? void 0 : p.deg) || 0, z > 0 ? "N" : "S");
|
|
2463
|
+
A[`${q}ne`] = n.ne, A[`${q}nw`] = n.nw, A[`${q}se`] = n.se, A[`${q}sw`] = n.sw;
|
|
2566
2464
|
} else
|
|
2567
|
-
|
|
2568
|
-
}),
|
|
2465
|
+
A[q] = null, A[`${q}ne`] = null, A[`${q}nw`] = null, A[`${q}se`] = null, A[`${q}sw`] = null;
|
|
2466
|
+
}), A;
|
|
2569
2467
|
}
|
|
2570
2468
|
/**
|
|
2571
2469
|
* 台风类型
|
|
@@ -2588,10 +2486,10 @@ class T {
|
|
|
2588
2486
|
}
|
|
2589
2487
|
}
|
|
2590
2488
|
export {
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2489
|
+
y0 as MeteoHelper,
|
|
2490
|
+
Q0 as MeteoHelper2,
|
|
2491
|
+
k0 as TidesHelper,
|
|
2492
|
+
N as TropicalHelper,
|
|
2493
|
+
A0 as TropicalModel,
|
|
2494
|
+
B0 as WindyModel
|
|
2597
2495
|
};
|