From 72ed4dd12254e66529f3ecc76f582b0c59d75807 Mon Sep 17 00:00:00 2001 From: Tag Date: Thu, 9 Feb 2023 18:22:35 -0800 Subject: [PATCH 01/36] Bigcty update --- package.nw/data/mh-root-prefixed.json | 1469 ++++++++++++++++++++++--- package.nw/lib/callsigns.js | 1 + package.nw/lib/gtws.js | 10 +- 3 files changed, 1319 insertions(+), 161 deletions(-) diff --git a/package.nw/data/mh-root-prefixed.json b/package.nw/data/mh-root-prefixed.json index 8f777c98..7fc8f28e 100644 --- a/package.nw/data/mh-root-prefixed.json +++ b/package.nw/data/mh-root-prefixed.json @@ -1385,7 +1385,9 @@ "VA2KCE", "VA2MCJ/VE2", "VA2RAG", + "VA2RC", "VA2VFT", + "VA2VT", "VA2VVV", "VA3ELE/2", "VA3MPM/2", @@ -1508,10 +1510,13 @@ "VE8DX/2", "VE8FS", "VE8HI/3", + "VE9DXR", + "VE9DXR/7", + "VE9IDX", "VE9TEN/5", "VE9XX/6", "VE9ZP/4", - "VER20221114", + "VER20230204", "VF0X", "VF0X/M", "VO/DL2GF", @@ -1814,6 +1819,9 @@ "VE6LK/7": "02", "VE6SH/7": "02", "VE6ZC/7": "02", + "VE9DXR": "02", + "VE9DXR/7": "02", + "VE9IDX": "02", "VX9GJD": "02", "VY0M": "03", "CG2NNX/P": "04", @@ -1836,7 +1844,9 @@ "VA2KCE": "04", "VA2MCJ/VE2": "04", "VA2RAG": "04", + "VA2RC": "04", "VA2VFT": "04", + "VA2VT": "04", "VA2VVV": "04", "VA3ELE/2": "04", "VA3NA/2": "04", @@ -1968,6 +1978,9 @@ "VE6LK/7": "03", "VE6SH/7": "03", "VE6ZC/7": "03", + "VE9DXR": "03", + "VE9DXR/7": "03", + "VE9IDX": "03", "VX9GJD": "03", "VY0M": "01", "VO/DL2GF": "02", @@ -1992,7 +2005,9 @@ "VA2KCE": "02", "VA2MCJ/VE2": "02", "VA2RAG": "02", + "VA2RC": "02", "VA2VFT": "02", + "VA2VT": "02", "VA2VVV": "02", "VA3ELE/2": "02", "VA3NA/2": "02", @@ -2543,6 +2558,7 @@ "AC2UJ", "AC3DF", "AC5ZY", + "AC7EV", "AC9QX", "AD0DK", "AD0FQ", @@ -2601,6 +2617,7 @@ "K5VOR", "K6ANE", "K6GKW", + "K6NYB", "K6SAS", "K6VH", "K7BUF", @@ -2609,6 +2626,7 @@ "K7LOP", "K7MVX", "K7OCL", + "K7TWN", "K7UNX", "K7VRK", "K8IEL", @@ -2622,6 +2640,7 @@ "KA0YPV", "KA1NCN", "KA2TJZ", + "KA2ZSD", "KA3FZH", "KA6DBB", "KA6PJV", @@ -2829,6 +2848,7 @@ "KD7IMT", "KD7KRK", "KD7MGO", + "KD7OTW", "KD7PXM", "KD7QAR", "KD7RYC", @@ -2852,6 +2872,7 @@ "KE0DYM", "KE0KKI", "KE0PRX", + "KE0RWP", "KE4DGR", "KE4LJD", "KE4MQD", @@ -2873,6 +2894,7 @@ "KE6DLM", "KE6DUJ", "KE6DXH", + "KE6FNQ", "KE6IPM", "KE6SYD", "KE6TCE", @@ -2938,6 +2960,7 @@ "KF7PUQ", "KF7UFY", "KF7VBO", + "KF7WUC", "KF7WVE", "KF8ZB", "KG2IA", @@ -2960,6 +2983,8 @@ "KG6MBC", "KG6RJE", "KG6TAL", + "KG7AUD", + "KG7BFK", "KG7CUR", "KG7DVI", "KG7GJL", @@ -2988,6 +3013,7 @@ "KI4SET", "KI4SOM", "KI4YRQ", + "KI5HPI", "KI5KBN", "KI6BGR", "KI6DES", @@ -3007,6 +3033,7 @@ "KJ4YOY", "KJ4ZWI", "KJ6DCH", + "KJ6EHV", "KJ6GDW", "KJ6KRG", "KJ6NPJ", @@ -3096,6 +3123,7 @@ "N1ROR", "N1TX", "N2CXH", + "N2KJU", "N2SHO", "N2TJY", "N3QEH", @@ -3107,6 +3135,7 @@ "N4NAV", "N5AAR", "N5CSO", + "N5UC", "N5UKX", "N5WPR", "N5ZDI", @@ -3122,7 +3151,6 @@ "N7CGC", "N7DBN", "N7DKL", - "N7DUD", "N7ELD", "N7FCT", "N7GLP", @@ -3206,7 +3234,6 @@ "W7JMR", "W7ORR", "W7PWA", - "W7RAZ", "W7ROS", "W7SGT", "W7WEZ", @@ -3218,6 +3245,7 @@ "W9JMC", "W9WLN", "WA0JS", + "WA0LKT", "WA1FVJ", "WA1OUS", "WA2BGL", @@ -6814,6 +6842,8 @@ "9V0A", "AB0KG/KC4", "AT10BP", + "AT42I", + "AT42IND", "CE9/K2ARB", "CE9/R3CA", "CE9/R3RRC", @@ -6956,6 +6986,7 @@ "RI1ANW", "RI1ANX", "RI1ANZ", + "RI30ANT", "RI60ANT", "RI63ANT", "SM/OH2FFP", @@ -6966,6 +6997,7 @@ "VP8/G0VZM/P", "VP8/MM0TJR/P", "VP8/SQ1SGB", + "VP8/SQ1SGB/P", "VP8/UT1KY", "VP8ADE", "VP8ADE/B", @@ -7091,10 +7123,11 @@ "VP8DPJ": "73", "VP8CPG": "73", "AT10BP": "67", + "AT42I": "67", + "AT42IND": "67", "R1AND/A": "67", "VU/R1AND": "67", "VU2JBK/AT10": "67", - "FT4YM/P": "71", "I0HCJ/KC4": "71", "I0QHM/IA0PS": "71", "I0QHM/KC4": "71", @@ -7142,6 +7175,7 @@ "RI1ANC": "70", "RI1ANC/P": "70", "RI1ANV": "70", + "RI30ANT": "70", "SM/OH2FFP": "67", "EM1HO": "73", "EM1KCC": "73", @@ -7182,6 +7216,7 @@ "ZS6KX/7": "67", "KC4/KL7RL": "72", "KL7RL/KC4": "72", + "FT4YM/P": "70", "IA/IZ2QEJ": "70", "IA/IZ3SUS": "70", "IA0/DK5SQX": "70", @@ -7221,6 +7256,7 @@ "FT5YK/P": "73", "RI1ANX": "67", "RI60ANT": "67", + "VP8/SQ1SGB/P": "67", "IA0/IZ1KHY": "70" }, "directCQ": { @@ -7231,10 +7267,11 @@ "OR3AX": "30", "OR4AX": "30", "AT10BP": "38", + "AT42I": "38", + "AT42IND": "38", "R1AND/A": "38", "VU/R1AND": "38", "VU2JBK/AT10": "38", - "FT4YM/P": "30", "I0HCJ/KC4": "30", "I0QHM/IA0PS": "30", "I0QHM/KC4": "30", @@ -7282,6 +7319,7 @@ "RI1ANC": "29", "RI1ANC/P": "29", "RI1ANV": "29", + "RI30ANT": "29", "SM/OH2FFP": "38", "KC4/VE0HSS": "32", "VE0HSS/KC4": "32", @@ -7332,6 +7370,7 @@ "R3CA/ANT/M": "12", "R3RRC/ANT": "12", "VP8DKF": "12", + "FT4YM/P": "29", "IA/IZ2QEJ": "29", "IA/IZ3SUS": "29", "IA0/DK5SQX": "29", @@ -7370,6 +7409,7 @@ "DP0GVN/P": "38", "RI1ANX": "38", "RI60ANT": "38", + "VP8/SQ1SGB/P": "38", "IA0/IZ1KHY": "29" } }, @@ -10434,6 +10474,7 @@ "direct": [ "R0/UR8LV", "R00BVB", + "R01DTV/0", "R01DTV/8", "R01DTV/9", "R05SOTA", @@ -10465,6 +10506,7 @@ "R100YA", "R103PS", "R104FSB", + "R105FSB", "R105WWS", "R10NRC", "R10RLHA/0", @@ -10506,6 +10548,7 @@ "R150LA", "R150LB", "R150RP", + "R150SU", "R150WS", "R155AP", "R155C", @@ -10545,6 +10588,7 @@ "R18SWE", "R18UGRA", "R18URU", + "R195JV", "R19UGRA", "R1BDD/0", "R1BDD/0/P", @@ -10774,6 +10818,7 @@ "R9OOO/9/M", "R9OOO/9/P", "R9OY/9/P", + "R9PS/0", "R9PS/9", "R9PU/P", "R9SAO/P", @@ -10817,6 +10862,7 @@ "RA/UY7IQ", "RA/VE7MID", "RA0/UR5HVR", + "RA0A", "RA0AJ/0/P", "RA0AM/0", "RA0AM/P", @@ -10827,7 +10873,9 @@ "RA0CGI/0", "RA0LH/9", "RA0LMC/9", + "RA0Q", "RA0QK/8", + "RA0R", "RA0R/4", "RA0SP/RP", "RA0SR/RP", @@ -10835,6 +10883,7 @@ "RA0STT/0/M", "RA0UAC/8", "RA0UF/8", + "RA0W", "RA0WA/0/P", "RA110RAEM", "RA1AIP/9/P", @@ -10919,8 +10968,13 @@ "RA6XPL/0", "RA75AA", "RA77VV", + "RA8J", "RA8JA/4", "RA8JA/4/P", + "RA8O", + "RA8T", + "RA8W", + "RA8Y", "RA9CMO/P", "RA9CS/P", "RA9DA/0", @@ -10928,6 +10982,8 @@ "RA9DF/P", "RA9FTM/0", "RA9FW/9", + "RA9H", + "RA9J", "RA9JG/0", "RA9JG/0/P", "RA9JG/9", @@ -10940,17 +10996,26 @@ "RA9MX/0", "RA9MX/9", "RA9MX/P", + "RA9O", "RA9OBG/0", "RA9ODR/9/M", + "RA9P", "RA9SC/9", + "RA9U", "RA9USU/8", "RA9UT/0", + "RA9V", + "RA9W", "RA9WJV/8/P", "RA9WN/9", "RA9WU/9", + "RA9Y", "RA9YME/0", "RAEM", "RB110RAEM", + "RC0C", + "RC0F", + "RC0L", "RC110RAEM", "RC18EK", "RC1M/8/M", @@ -10967,16 +11032,25 @@ "RC20TT", "RC4W/9", "RC5A/0", + "RC7LE/9", "RC85AO", + "RC8I", "RC8SC/M", "RC8X/9", "RC90FA", + "RC9O", + "RC9W", "RC9XM/8", "RC9YA/9/M", + "RD0A", + "RD0B", "RD0B/8", "RD0C", + "RD0F", + "RD0L", "RD0L/0", "RD0L/9", + "RD0W", "RD110RAEM", "RD16CW", "RD17CW", @@ -10990,27 +11064,56 @@ "RD3QA/0", "RD4CAQ/9", "RD4HM/9", + "RD8O", + "RD8U", + "RD8W", "RD90FA", + "RD9I", + "RD9U", + "RD9W", "RF1A/9", "RF3A/0", + "RF8O", + "RF9T", "RF9W", + "RG0A", + "RG0S", "RG110RAEM", "RG5A/8", "RG78ML", + "RG8K", + "RG8U", "RG9O", + "RG9U", + "RG9Y", "RI0B", "RI0BDI", "RI0BV/0", + "RI0C", + "RI0F", + "RI0K", + "RI0L", + "RI0Q", + "RI0X", + "RI0Z", "RI18POL", + "RI41POL", "RI9K", "RI9K/MM", "RJ17CW", "RJ17WG", "RJ2T/P", "RJ30KR", + "RJ9I", "RJ9J", + "RJ9U", + "RK0A", "RK0AXC/0", "RK0AXC/0/M", + "RK0C", + "RK0L", + "RK0S", + "RK0W", "RK17CW", "RK1B/0", "RK1B/9", @@ -11037,12 +11140,19 @@ "RK6YYA/9", "RK6YYA/9/M", "RK80KEDR", + "RK8I", + "RK8W", "RK9AD/9/M", "RK9DR/N", "RK9KWI/9", "RK9KWI/9/P", "RK9MZZ/0", + "RK9O", + "RK9S", "RK9SZZ/9", + "RK9T", + "RK9W", + "RL0L", "RL19WF", "RL1I/8", "RL20LH", @@ -11063,13 +11173,21 @@ "RL60YG", "RL8C/0", "RL9AA/P", + "RL9I", + "RL9O", + "RL9U", + "RL9W", + "RL9Y", "RM0A", + "RM0B", "RM0B/9", "RM0F", "RM0I", + "RM0L", "RM0L/9", "RM0M", "RM0M/LH", + "RM0W", "RM17NY", "RM19NY", "RM19WF", @@ -11085,21 +11203,32 @@ "RM60YG", "RM7C/0", "RM8A/0", + "RM8K", + "RM8T", + "RM8W", + "RM8Y", "RM90WF", "RM9H", + "RM9I", "RM9RZ/0", "RM9RZ/9/P", "RM9RZ/A", "RM9RZ/P", "RM9T/P", + "RM9U", + "RM9W", + "RM9Y", "RN0A", + "RN0C", "RN0CF/9", "RN0F", + "RN0L", "RN0SZ/9", "RN110RAEM", "RN110RAEM/P", "RN16CW", "RN17CW", + "RN1B/0", "RN1CR/0", "RN1NS/0", "RN20NY", @@ -11123,28 +11252,41 @@ "RN6HI/0", "RN6LFF/0", "RN7G/0", + "RN8U", + "RN8W", "RN9A/0", "RN9HM/A", "RN9HM/P", + "RN9J", "RN9N/9", "RN9N/9/M", "RN9N/M", + "RN9O", "RN9O/8", "RN9S", "RN9S/M", "RN9SM/P", + "RN9T", + "RN9W", "RN9WWW/9", "RN9WWW/9/M", "RN9WWW/P", + "RO0F", "RO17CW", "RO19WF", "RO25TN", "RO30KR", "RO6C/8", "RO6C/8/P", + "RO8U", + "RO8W", "RO9L/4", "RO9O", "RO9S", + "RO9T", + "RO9U", + "RO9W", + "RO9Y", "RP0CZA", "RP0L", "RP0LPK", @@ -11523,6 +11665,7 @@ "RP9Y", "RP9YAF", "RP9YTZ", + "RQ0C", "RQ0C/8", "RQ0C/9", "RQ0J/QRP", @@ -11540,13 +11683,23 @@ "RQ4D/9", "RQ60YG", "RQ9I", + "RQ9O", + "RQ9Y", "RR110RAEM", "RR9O", "RS0B", "RS0B/P", "RS0F", "RS9O", + "RT0B", + "RT0C", + "RT0F", + "RT0L", + "RT0O", "RT0Q", + "RT0R", + "RT0T", + "RT0W", "RT22CT", "RT22MC", "RT22MD", @@ -11579,15 +11732,28 @@ "RT73SK", "RT77VV", "RT8A/4", + "RT8I", + "RT8O", "RT8T", + "RT8U", "RT92KA", + "RT9I", + "RT9J", + "RT9K", "RT9K/0", "RT9K/9", + "RT9O", "RT9S", "RT9T", + "RT9U", "RT9W", "RT9W/P", + "RT9Y", + "RU0A", + "RU0L", + "RU0S", "RU0UA/0", + "RU0W", "RU0ZM/9", "RU110RAEM", "RU17NY", @@ -11623,11 +11789,15 @@ "RU9AZ/9", "RU9CK/4/M", "RU9CK/M", + "RU9I", "RU9KC/4/M", "RU9MV/0", + "RU9S", "RU9SO/4", "RU9SO/4/P", "RU9SO/M", + "RU9W", + "RU9Y", "RV0AE/0/FF", "RV0CJ/9", "RV0SR/9", @@ -11667,6 +11837,8 @@ "RV9CHB/4", "RV9CX/4/M", "RV9JD/0", + "RV9U", + "RV9V", "RV9WB/8", "RV9WB/9/M", "RV9WB/M", @@ -11676,6 +11848,8 @@ "RV9WMZ/P", "RV9WP/0", "RV9WP/9", + "RV9Z", + "RW0A", "RW0BB/9", "RW0BB/9/LH", "RW0BG/9", @@ -11723,7 +11897,10 @@ "RW55YG", "RW6AHV/9", "RW6BA/9", + "RW6MD/9", "RW80KEDR", + "RW8T", + "RW8W", "RW90WC", "RW95WJ", "RW9C", @@ -11736,8 +11913,11 @@ "RW9WA/9/M", "RW9WX/9", "RW9XU/9", + "RW9Y", "RX0AE/0", "RX0AT/0/P", + "RX0F", + "RX0L", "RX0SD/9", "RX15RX", "RX17WG", @@ -11769,8 +11949,12 @@ "RX6LMQ/0", "RX80SP", "RX95WN", + "RX9J", + "RX9O", "RX9SN/8", "RX9SN/P", + "RX9T", + "RX9U", "RX9UL/9", "RX9WN/0", "RX9WN/0/M", @@ -11778,6 +11962,7 @@ "RX9WN/9/M", "RX9WT/8", "RX9WT/P", + "RY0A", "RY1AAB/0/M", "RY1AAB/9", "RY1AAB/9/M", @@ -11789,7 +11974,11 @@ "RY60YG", "RY80SP", "RY9C/P", + "RY9W", + "RZ0A", "RZ0AM/0", + "RZ0L", + "RZ0O", "RZ0OO/9", "RZ0SO/P", "RZ16WF", @@ -11819,6 +12008,8 @@ "RZ6DR/9/M", "RZ6LL/0", "RZ6MZ/0", + "RZ8U", + "RZ8Y", "RZ90WU", "RZ9DX/0", "RZ9DX/0/A", @@ -11827,8 +12018,10 @@ "RZ9DX/9/P", "RZ9HK/FF", "RZ9HX/FF", + "RZ9J", "RZ9MXM/9", "RZ9MXM/9/M", + "RZ9O", "RZ9O/0", "RZ9ODD/0", "RZ9ON/0", @@ -11836,18 +12029,23 @@ "RZ9OO/0", "RZ9OO/9/M", "RZ9OWE/0", + "RZ9P", + "RZ9U", "RZ9WF/8", "RZ9WF/9", "RZ9WM/9/M", "RZ9WU/P", + "RZ9Y", "RZ9YI/9", "U0H/UA0AGQ", + "UA0A", "UA0ACG/0", "UA0ADU/0", "UA0AGA/9/P", "UA0AOZ/0", "UA0AZA/9", "UA0BA/8", + "UA0C", "UA0FCB/0", "UA0FCB/0/P", "UA0FCB/P", @@ -11857,13 +12055,17 @@ "UA0KBG/9/P", "UA0KDR/9", "UA0KY/9", + "UA0L", "UA0LLW/9", "UA0MF/9", "UA0QMU/0", "UA0QQO/9/P", + "UA0R", + "UA0S", "UA0SDX/0", "UA0SIK/0", "UA0SVD/0", + "UA0W", "UA0WG/0", "UA0WG/P", "UA0WGD/0", @@ -11936,6 +12138,10 @@ "UA6YGY/8", "UA6YGY/9", "UA7R/0", + "UA8H", + "UA8K", + "UA8U", + "UA8W", "UA8WAA/8", "UA8WAA/9", "UA8WAA/9/P", @@ -11946,7 +12152,6 @@ "UA9CDC/P", "UA9CTT/0", "UA9CTT/M", - "UA9CTT/P", "UA9FL/0", "UA9JFE/9/P", "UA9JFN/9/M", @@ -11967,10 +12172,12 @@ "UA9MUY/9", "UA9MW/9", "UA9OAP/9/P", + "UA9P", "UA9SG/9", "UA9SIV/9", "UA9SUV/8", "UA9TO/9/M", + "UA9U", "UA9UAX/0", "UA9UAX/0/M", "UA9UAX/8", @@ -11979,12 +12186,17 @@ "UA9UAX/9/M", "UA9UAX/9/P", "UA9UAX/M", + "UA9W", "UA9WDK/0", "UA9WMN/9/P", "UA9WOB/0", "UA9WOB/0/P", + "UA9Y", "UA9ZZ/0/P", + "UB0A", + "UB0L", "UB0LAP/P", + "UB0Y", "UB1AJQ/0", "UB2FCO/8", "UB2FCO/8/P", @@ -11994,15 +12206,34 @@ "UB5O/8", "UB5O/8/P", "UB5O/9", + "UB8J", "UB8JDH/0", "UB8M/M", + "UB8O", + "UB8S", "UB8S/P", + "UB8Y", "UB9JBN/9/M", "UB9WLJ/P", + "UC0A", + "UC0B", + "UC0C", + "UC0L", "UC0LAF/P", + "UC0W", "UC7T/9", + "UC8S", + "UC8U", + "UC8Y", + "UC9V", + "UD0L", + "UD0W", "UD6AOP/0", "UD6D/9", + "UD8S", + "UD8V", + "UD9P", + "UD9U", "UE0ARD/0", "UE0BFF", "UE0OFF/0", @@ -12080,7 +12311,24 @@ "UE9MDA/9", "UE9OFF/9", "UE9WDA/9", - "UE9WDA/9/M" + "UE9WDA/9/M", + "UF0A", + "UF0B", + "UF0W", + "UF8S", + "UF8T", + "UF9U", + "UG0B", + "UG9U", + "UI0A", + "UI0L", + "UI8J", + "UI8U", + "UI8W", + "UI8Y", + "UI9I", + "UI9O", + "UI9U" ], "prefixITU": { "R0": "33", @@ -14857,10 +15105,18 @@ "R9HAF/M": "31", "R9MJ/9": "31", "RA0LH/9": "31", + "RA9H": "31", "RA9JG/9/P": "31", "RA9ODR/9/M": "31", + "RAEM": "31", + "RC8I": "31", + "RD9I": "31", + "RJ9I": "31", + "RK8I": "31", + "RL9I": "31", "RM0L/9": "31", "RM9H": "31", + "RM9I": "31", "RN9HM/A": "31", "RN9HM/P": "31", "RP73TP": "31", @@ -14869,16 +15125,21 @@ "RP9H": "31", "RQ110RAEM": "31", "RQ9I": "31", + "RT8I": "31", + "RT9I": "31", "RU9AZ/9": "31", + "RU9I": "31", "RV3LO/9": "31", "RZ9HK/FF": "31", "RZ9HX/FF": "31", + "UA8H": "31", "UA9JFN/9/M": "31", "UA9MUY/9": "31", "UA9OAP/9/P": "31", "UA9UAX/9/M": "31", "UE14TS": "31", "UE9FDA/9": "31", + "UI9I": "31", "R11UND": "20", "R120RJ": "20", "R123JDR": "20", @@ -14904,6 +15165,8 @@ "RA4FCJ/9": "20", "RA4HRM/9": "20", "RA60PD": "20", + "RA8J": "20", + "RA9J": "20", "RA9WN/9": "20", "RD4HM/9": "20", "RJ9J": "20", @@ -14911,6 +15174,7 @@ "RK6ANP/9": "20", "RK6YM/8": "20", "RK6YM/9": "20", + "RN9J": "20", "RP67GS": "20", "RP68GS": "20", "RP68J": "20", @@ -14943,6 +15207,7 @@ "RP77GS": "20", "RP77J": "20", "RQ0C/8": "20", + "RT9J": "20", "RU6YD/9": "20", "RV6YM/9": "20", "RW4HOH/9": "20", @@ -14951,14 +15216,19 @@ "RW9WX/9": "20", "RX3BP/9": "20", "RX3BP/9/MM": "20", + "RX9J": "20", "RZ5D/8": "20", + "RZ9J": "20", "RZ9WF/8": "20", "RZ9WF/9": "20", "UA3ZAF/9": "20", "UA6WIO/9": "20", "UA9JFN/M": "20", + "UA9JLL/M": "20", "UB2FCO/8": "20", "UB2FCO/8/P": "20", + "UB8J": "20", + "UI8J": "20", "R120RU": "20", "R16LEV": "20", "R1DA/8/M": "20", @@ -14982,13 +15252,16 @@ "RA4RU/9/P": "20", "RC8X/9": "20", "RC9XM/8": "20", + "RG8K": "20", "RI9K": "20", "RI9K/MM": "20", "RK6CT/9": "20", "RL1I/8": "20", + "RM8K": "20", "RN0CF/9": "20", "RN3OF/9": "20", "RP77ZAM": "20", + "RT9K": "20", "RU6UR/9": "20", "RV1CC/8/M": "20", "RV6ARQ/9": "20", @@ -15001,6 +15274,7 @@ "RW4HIF/9": "20", "RW4HIH/9": "20", "RW6BA/9": "20", + "RW6MD/9": "20", "RW9XU/9": "20", "RX6CP/8": "20", "RX6LMA/9": "20", @@ -15015,6 +15289,7 @@ "UA3DFM/9": "20", "UA3MGA/9": "20", "UA6BTN/9": "20", + "UA8K": "20", "UA9SUV/8": "20", "UC7T/9": "20", "R0LY/9": "31", @@ -15054,14 +15329,24 @@ "RA3DH/9": "31", "RA3ET/9": "31", "RA4FRH/0/P": "31", + "RA8O": "31", "RA9JJ/9/M": "31", "RA9MX/9": "31", + "RA9O": "31", + "RA9P": "31", "RC1M/9": "31", "RC1M/9/M": "31", + "RC7LE/9": "31", + "RC9O": "31", "RD0L/9": "31", + "RD8O": "31", + "RF8O": "31", "RG9O": "31", + "RK9O": "31", "RL3T/9": "31", + "RL9O": "31", "RN9N/9/M": "31", + "RN9O": "31", "RO9O": "31", "RP67MP": "31", "RP68MP": "31", @@ -15076,8 +15361,11 @@ "RP9OMP": "31", "RP9OW": "31", "RQ16CW": "31", + "RQ9O": "31", "RR9O": "31", "RS9O": "31", + "RT8O": "31", + "RT9O": "31", "RU0ZM/9": "31", "RU27OZ": "31", "RU6LA/9": "31", @@ -15085,7 +15373,10 @@ "RW1AC/9": "31", "RW30KR": "31", "RW9MD/9/M": "31", + "RX9O": "31", "RZ9MXM/9": "31", + "RZ9O": "31", + "RZ9P": "31", "UA0KDR/9": "31", "UA0ZAY/9": "31", "UA6WFO/9": "31", @@ -15094,7 +15385,11 @@ "UA9MA/9/M": "31", "UA9MA/M": "31", "UA9MRA/9": "31", + "UA9P": "31", + "UB8O": "31", + "UD9P": "31", "UE80NSO": "31", + "UI9O": "31", "R10NRC": "31", "R22ULM": "31", "R2SD/9": "31", @@ -15104,9 +15399,21 @@ "R9UAG/N": "31", "RA30KR": "31", "RA4CQ/9": "31", + "RA9U": "31", + "RA9V": "31", "RC4W/9": "31", + "RD8U": "31", + "RD9U": "31", + "RG8U": "31", + "RG9U": "31", + "RJ9U": "31", "RK6CG/9": "31", + "RL9U": "31", + "RM9U": "31", "RN30KR": "31", + "RN8U": "31", + "RO8U": "31", + "RO9U": "31", "RP65UMF": "31", "RP67KM": "31", "RP68KM": "31", @@ -15132,11 +15439,27 @@ "RP77UK": "31", "RT22UA": "31", "RT77VV": "31", + "RT8U": "31", + "RT9U": "31", + "RV9U": "31", + "RV9V": "31", "RW4CG/9": "31", - "UA4FMQ/P": "31", + "RX9U": "31", + "RZ8U": "31", + "RZ9U": "31", + "UA8U": "31", "UA9JFE/9/P": "31", + "UA9U": "31", + "UC8U": "31", + "UC9V": "31", + "UD8V": "31", + "UD9U": "31", "UE3ATV/9": "31", "UE90AS": "31", + "UF9U": "31", + "UG9U": "31", + "UI8U": "31", + "UI9U": "31", "R0FBA/9": "31", "R100KM": "31", "R2015RR": "31", @@ -15145,14 +15468,20 @@ "R6XBA/9": "31", "R9/UN7JHC": "31", "R9/UN7JMO": "31", - "R9YU/M": "31", "RA/IK5MIC": "31", "RA/IK5MIC/M": "31", "RA0CCJ/9": "31", "RA50VT": "31", + "RA8Y": "31", + "RA9Y": "31", + "RG9Y": "31", "RJ30KR": "31", "RK1B/9": "31", "RL30KR": "31", + "RL9Y": "31", + "RM8Y": "31", + "RM9Y": "31", + "RO9Y": "31", "RP68BP": "31", "RP68TZ": "31", "RP70AF": "31", @@ -15166,26 +15495,39 @@ "RP9YTZ": "31", "RQ1A": "31", "RQ1A/9": "31", + "RQ9Y": "31", "RT73GM": "31", + "RT9Y": "31", + "RU9Y": "31", "RW0CE/9": "31", "RW22WG": "31", + "RW9Y": "31", "RX6AY/9": "31", + "RZ8Y": "31", + "RZ9Y": "31", "UA0LLW/9": "31", "UA0ZDY/9": "31", "UA9UAX/9/P": "31", + "UA9Y": "31", + "UB8Y": "31", + "UC8Y": "31", "UE0ZOO/9": "31", "UE44R/9": "31", "UE80AL": "31", + "UI8Y": "31", "R2BZ/9": "31", + "R9YU/M": "31", "RA/IK5MIC/P": "31", "RA3DS/P": "31", "RA4FRH/9/M": "31", "RC9YA/9/M": "31", + "RV9Z": "31", "RW9MD/9/P": "31", "UA0KBG/9/P": "31", "UA9MAC/9": "31", "R00BVB": "32", "R100RW": "32", + "R105FSB": "32", "R120RB": "32", "R150WS": "32", "R170GS": "32", @@ -15199,6 +15541,7 @@ "R7LZ/9": "32", "RA/UR5HVR": "32", "RA0/UR5HVR": "32", + "RA0A": "32", "RA0AM/P": "32", "RA1AMW/0": "32", "RA3AUU/0": "32", @@ -15209,15 +15552,19 @@ "RA4CSX/0": "32", "RA4RU/0": "32", "RA9UT/0": "32", - "RAEM": "32", + "RD0A": "32", + "RD0B": "32", "RD110RAEM": "32", + "RG0A": "32", "RI0BV/0": "32", + "RK0A": "32", "RK3DZJ/9": "32", "RK56GC": "32", "RK6BBM/9": "32", "RK80KEDR": "32", "RL5G/9": "32", "RM0A": "32", + "RM0B": "32", "RM2D/9": "32", "RM9RZ/0": "32", "RN0A": "32", @@ -15232,22 +15579,28 @@ "RQ22NY": "32", "RQ30DX": "32", "RQ60YG": "32", + "RT0B": "32", "RT22SA": "32", "RT9K/9": "32", + "RU0A": "32", "RU19NY": "32", "RU3FF/0": "32", "RU4CO/0": "32", "RV3DHC/0": "32", "RV3DHC/0/P": "32", "RV9WP/9": "32", + "RW0A": "32", "RW3XN/0": "32", "RW3YC/0": "32", "RW3YC/9": "32", + "RY0A": "32", "RY1AAB/9": "32", "RY1AAB/9/M": "32", + "RZ0A": "32", "RZ3DSA/0": "32", "RZ3DZS/0": "32", "RZ9ON/9": "32", + "UA0A": "32", "UA0ACG/0": "32", "UA0FCB/0": "32", "UA0FCB/0/P": "32", @@ -15261,8 +15614,15 @@ "UA6BTN/0": "32", "UA9UAX/9": "32", "UA9WDK/0": "32", + "UB0A": "32", "UB1AJQ/0": "32", + "UC0A": "32", + "UC0B": "32", "UE1WFF/0": "32", + "UF0A": "32", + "UF0B": "32", + "UG0B": "32", + "UI0A": "32", "R100D": "22", "R100DI": "22", "R3CA/9": "22", @@ -15317,17 +15677,21 @@ "RA1ZZ/0/M": "34", "RA6GW/0": "34", "RA6XPL/0": "34", + "RC0C": "34", "RC110RAEM": "34", "RC20CD": "34", "RC90FA": "34", "RD0C": "34", "RD16CW": "34", "RD30KR": "34", + "RI0C": "34", + "RK0C": "34", "RL3AA/0": "34", "RL5G/0": "34", "RL60ANT": "34", "RM2D/0": "34", "RM30KR": "34", + "RN0C": "34", "RP0CZA": "34", "RP68H": "34", "RP70H": "34", @@ -15335,6 +15699,8 @@ "RP72H": "34", "RP76H": "34", "RP77H": "34", + "RQ0C": "34", + "RT0C": "34", "RT22CT": "34", "RU3DX/0": "34", "RV30KR": "34", @@ -15346,8 +15712,10 @@ "RZ5D/0": "34", "RZ60YG": "34", "UA0AOZ/0": "34", + "UA0C": "34", "UA3DX/0": "34", "UA6CW/0": "34", + "UC0C": "34", "UE150C": "34", "UE70VSV": "34", "UE80C": "34", @@ -15368,14 +15736,21 @@ "RA4HKM/0": "34", "RA4HKM/0/P": "34", "RA6ABC/0": "34", + "RC0F": "34", + "RD0F": "34", + "RI0F": "34", "RM0F": "34", "RN0F": "34", + "RN1B/0": "34", "RN1CR/0": "34", "RN3BL/0": "34", + "RO0F": "34", "RS0F": "34", + "RT0F": "34", "RT6A/0": "34", "RV1CC/0": "34", "RW20LH": "34", + "RX0F": "34", "RX3AMI/0": "34", "RX3F/0": "34", "RZ3DW/0": "34", @@ -15414,6 +15789,7 @@ "RA3AV/0": "25", "RA3XV/0": "25", "RC85AO": "25", + "RI0K": "25", "RP70AS": "25", "RT65KI": "25", "RT92KA": "25", @@ -15423,10 +15799,12 @@ "RZ6MZ/0": "25", "UA1ORT/0": "25", "UA6LP/0": "25", + "R01DTV/0": "34", "R0HQ": "34", "R150AV": "34", "R150L": "34", "R17CWH": "34", + "R195JV": "34", "R20RRC/0": "34", "R325F": "34", "R325TF": "34", @@ -15443,16 +15821,23 @@ "RA/OK1DWF": "34", "RA4AR/0": "34", "RA6KE/0": "34", + "RC0L": "34", "RC5A/0": "34", + "RD0L": "34", "RD3ARD/0": "34", "RD3BN/0": "34", + "RI0L": "34", + "RK0L": "34", "RK3Q/0": "34", + "RL0L": "34", "RL20LH": "34", "RL5G/0/P": "34", "RL8C/0": "34", + "RM0L": "34", "RM0M": "34", "RM0M/LH": "34", "RM5M/0": "34", + "RN0L": "34", "RN1NS/0": "34", "RP0L": "34", "RP0LPK": "34", @@ -15487,39 +15872,50 @@ "RP77DG": "34", "RP77SD": "34", "RP77V": "34", + "RT0L": "34", + "RU0L": "34", "RU3BY/0": "34", "RU5D/0": "34", "RV1AW/0": "34", "RV3DSA/0": "34", "RW22GO": "34", "RW3LG/0": "34", + "RX0L": "34", "RX15RX": "34", "RX20NY": "34", "RX21NY": "34", "RX22NY": "34", "RX30DX": "34", "RX60YG": "34", + "RZ0L": "34", + "UA0L": "34", "UA0SDX/0": "34", "UA0SIK/0": "34", "UA3AHA/0": "34", "UA4SBZ/0": "34", "UA6MF/0": "34", "UA7R/0": "34", + "UB0L": "34", "UB0LAP/P": "34", + "UC0L": "34", "UC0LAF/P": "34", + "UD0L": "34", "UE1RFF/0": "34", "UE70MA": "34", "UE75L": "34", + "UI0L": "34", "R100FNR": "32", "RA0CGI/0": "32", "RA9FTM/0": "32", "RA9JJ/0": "32", "RK3RB/0": "32", "RK4HM/0": "32", + "RT0O": "32", "RU0UA/0": "32", "RV3ACA/0": "32", "RW4CG/0": "32", "RW4CG/0/P": "32", + "RZ0O": "32", "R0/UR8LV": "23", "R0SDG/P": "23", "R100Q": "23", @@ -15536,12 +15932,14 @@ "RA/DK2AI/0": "23", "RA/DK2AI/M": "23", "RA/UT5IA": "23", + "RA0Q": "23", "RA0STT/0/M": "23", "RA6AEW/0": "23", "RA6UAH/0": "23", "RA9DA/0": "23", "RD3QA/0": "23", "RF3A/0": "23", + "RI0Q": "23", "RK6YYA/0/P": "23", "RN6LFF/0": "23", "RP0Q": "23", @@ -15553,6 +15951,7 @@ "RZ3BY/0": "23", "UA0SVD/0": "23", "UA1PBA/0": "23", + "UA4FMQ/P": "23", "UA9CTT/0": "23", "UA9KW/0": "23", "UB5O/0": "23", @@ -15573,6 +15972,7 @@ "R700SSR": "32", "R800SAN": "32", "R9PS/9": "32", + "RA0R": "32", "RA0SP/RP": "32", "RA0SR/RP": "32", "RA110RAEM": "32", @@ -15583,6 +15983,8 @@ "RA9OBG/0": "32", "RA9USU/8": "32", "RD0L/0": "32", + "RG0S": "32", + "RK0S": "32", "RK17CW": "32", "RK60ANT": "32", "RK9MZZ/0": "32", @@ -15599,6 +16001,9 @@ "RP76AB": "32", "RP77AB": "32", "RQ0C/9": "32", + "RT0R": "32", + "RT0T": "32", + "RU0S": "32", "RU1TA/0": "32", "RV3ACA/0/M": "32", "RV6AJ/0": "32", @@ -15614,6 +16019,8 @@ "RZ0SO/P": "32", "UA0KBG/0": "32", "UA0KBG/9": "32", + "UA0R": "32", + "UA0S": "32", "UA3EDQ/0": "32", "UA3EDQ/0/MM": "32", "UA3EDQ/0/P": "32", @@ -15631,22 +16038,32 @@ "R0WA/P": "31", "R10RTRS/0": "31", "RA0AM/0": "31", + "RA0W": "31", + "RD0W": "31", + "RK0W": "31", + "RM0W": "31", "RP0W": "31", "RP0W/P": "31", "RP0WWS": "31", "RP70SL": "31", "RP72SL": "31", + "RT0W": "31", + "RU0W": "31", "RV0AE/0/FF": "31", "RZ0AM/0": "31", "RZ22WW": "31", "UA0FCB/P": "31", + "UA0W": "31", "UA0WG/P": "31", "UA9UAX/0/M": "31", + "UC0W": "31", + "UD0W": "31", "UE0ARD/0": "31", "UE10RFF/9": "31", "UE1RFF/0/P": "31", "UE9FDA/0": "31", "UE9FDA/0/M": "31", + "UF0W": "31", "R205NEW": "25", "R23RRC": "25", "UA6HMC/0": "25", @@ -15667,6 +16084,7 @@ "UA0ADU/0": "32", "UA0WGD/0": "32", "UA9ZZ/0/P": "32", + "UB0Y": "32", "UE0OFF/0": "32", "UE44Y/9": "32", "UE70Y": "32", @@ -15674,6 +16092,8 @@ "R1FW/0": "35", "R6MG/0": "35", "R750X": "35", + "RI0X": "35", + "RI0Z": "35", "RK1B/0": "35", "RM7C/0": "35", "RN6HI/0": "35", @@ -15701,6 +16121,7 @@ "R30ARCK": "32", "R70BP/0": "32", "R7AB/0": "32", + "R9PS/0": "32", "RA/UR5WT": "32", "RA77VV": "32", "RA9MX/0": "32", @@ -15744,6 +16165,7 @@ "RD3ARX/0/P": "19", "RF1A/9": "18", "RI18POL": "40", + "RI41POL": "19", "RM19WF": "18", "RO19WF": "19", "RQ17CW": "18", @@ -15768,10 +16190,18 @@ "R9HAF/M": "18", "R9MJ/9": "18", "RA0LH/9": "18", + "RA9H": "18", "RA9JG/9/P": "18", "RA9ODR/9/M": "18", + "RAEM": "18", + "RC8I": "18", + "RD9I": "18", + "RJ9I": "18", + "RK8I": "18", + "RL9I": "18", "RM0L/9": "18", "RM9H": "18", + "RM9I": "18", "RN9HM/A": "18", "RN9HM/P": "18", "RP73TP": "18", @@ -15780,16 +16210,21 @@ "RP9H": "18", "RQ110RAEM": "18", "RQ9I": "18", + "RT8I": "18", + "RT9I": "18", "RU9AZ/9": "18", + "RU9I": "18", "RV3LO/9": "18", "RZ9HK/FF": "18", "RZ9HX/FF": "18", + "UA8H": "18", "UA9JFN/9/M": "18", "UA9MUY/9": "18", "UA9OAP/9/P": "18", "UA9UAX/9/M": "18", "UE14TS": "18", "UE9FDA/9": "18", + "UI9I": "18", "R0LY/9": "18", "R0QA/9": "18", "R100MP": "18", @@ -15827,14 +16262,24 @@ "RA3DH/9": "18", "RA3ET/9": "18", "RA4FRH/0/P": "18", + "RA8O": "18", "RA9JJ/9/M": "18", "RA9MX/9": "18", + "RA9O": "18", + "RA9P": "18", "RC1M/9": "18", "RC1M/9/M": "18", + "RC7LE/9": "18", + "RC9O": "18", "RD0L/9": "18", + "RD8O": "18", + "RF8O": "18", "RG9O": "18", + "RK9O": "18", "RL3T/9": "18", + "RL9O": "18", "RN9N/9/M": "18", + "RN9O": "18", "RO9O": "18", "RP67MP": "18", "RP68MP": "18", @@ -15849,8 +16294,11 @@ "RP9OMP": "18", "RP9OW": "18", "RQ16CW": "18", + "RQ9O": "18", "RR9O": "18", "RS9O": "18", + "RT8O": "18", + "RT9O": "18", "RU0ZM/9": "18", "RU27OZ": "18", "RU6LA/9": "18", @@ -15858,7 +16306,10 @@ "RW1AC/9": "18", "RW30KR": "18", "RW9MD/9/M": "18", + "RX9O": "18", "RZ9MXM/9": "18", + "RZ9O": "18", + "RZ9P": "18", "UA0KDR/9": "18", "UA0ZAY/9": "18", "UA6WFO/9": "18", @@ -15867,7 +16318,11 @@ "UA9MA/9/M": "18", "UA9MA/M": "18", "UA9MRA/9": "18", + "UA9P": "18", + "UB8O": "18", + "UD9P": "18", "UE80NSO": "18", + "UI9O": "18", "R2014FX": "16", "R2015DM": "16", "R270A": "16", @@ -15882,12 +16337,17 @@ "RA4HMT/9/M": "16", "RA4HT/9": "16", "RA4PKR/9": "16", + "RA8T": "16", "RA9CMO/P": "16", "RA9CS/P": "16", "RC20OB": "16", "RC20TT": "16", "RC8SC/M": "16", + "RF9T": "16", "RJ2T/P": "16", + "RK9S": "16", + "RK9T": "16", + "RM8T": "16", "RM9T/P": "16", "RN3DHB/9": "16", "RN3DHB/9/P": "16", @@ -15899,8 +16359,10 @@ "RN3QOP/9": "16", "RN9S": "16", "RN9SM/P": "16", + "RN9T": "16", "RN9WWW/9": "16", "RO9S": "16", + "RO9T": "16", "RP65TT": "16", "RP68GR": "16", "RP69NB": "16", @@ -15916,6 +16378,7 @@ "RT9S": "16", "RT9T": "16", "RU22TU": "16", + "RU9S": "16", "RU9SO/M": "16", "RV1CC/4/M": "16", "RV9WGF/4/M": "16", @@ -15923,9 +16386,11 @@ "RW4PJZ/9": "16", "RW4PJZ/9/M": "16", "RW4PP/9": "16", + "RW8T": "16", "RW9WA/9": "16", "RW9WA/9/M": "16", "RX9SN/P": "16", + "RX9T": "16", "RY4W/9": "16", "RZ4HZW/9/M": "16", "UA0AGA/9/P": "16", @@ -15935,16 +16400,20 @@ "UA9CDC/M": "16", "UA9CDC/P": "16", "UA9CTT/M": "16", - "UA9CTT/P": "16", "UA9SIV/9": "16", + "UB8S": "16", "UB8S/P": "16", "UB9JBN/9/M": "16", + "UC8S": "16", + "UD8S": "16", "UE1RFF/9": "16", "UE25ST": "16", "UE55OB": "16", "UE60TDP": "16", "UE60TDP/P": "16", "UE9WDA/9/M": "16", + "UF8S": "16", + "UF8T": "16", "R10NRC": "18", "R22ULM": "18", "R2SD/9": "18", @@ -15954,9 +16423,21 @@ "R9UAG/N": "18", "RA30KR": "18", "RA4CQ/9": "18", + "RA9U": "18", + "RA9V": "18", "RC4W/9": "18", + "RD8U": "18", + "RD9U": "18", + "RG8U": "18", + "RG9U": "18", + "RJ9U": "18", "RK6CG/9": "18", + "RL9U": "18", + "RM9U": "18", "RN30KR": "18", + "RN8U": "18", + "RO8U": "18", + "RO9U": "18", "RP65UMF": "18", "RP67KM": "18", "RP68KM": "18", @@ -15982,14 +16463,31 @@ "RP77UK": "18", "RT22UA": "18", "RT77VV": "18", + "RT8U": "18", + "RT9U": "18", + "RV9U": "18", + "RV9V": "18", "RW4CG/9": "18", - "UA4FMQ/P": "18", + "RX9U": "18", + "RZ8U": "18", + "RZ9U": "18", + "UA8U": "18", "UA9JFE/9/P": "18", + "UA9U": "18", + "UC8U": "18", + "UC9V": "18", + "UD8V": "18", + "UD9U": "18", "UE3ATV/9": "18", "UE90AS": "18", + "UF9U": "18", + "UG9U": "18", + "UI8U": "18", + "UI9U": "18", "R05SOTA": "16", "R100W": "16", "R10RTRS/9": "16", + "R150SU": "16", "R18KDR/4": "16", "R1BIP/9": "16", "R2013CG": "16", @@ -16032,24 +16530,38 @@ "RA4POX/9": "16", "RA8JA/4": "16", "RA8JA/4/P": "16", + "RA8W": "16", "RA9DF/4/M": "16", "RA9KDX/8/M": "16", + "RA9W": "16", "RA9WU/9": "16", + "RC9W": "16", + "RD8W": "16", + "RD9W": "16", "RF9W": "16", "RG5A/8": "16", "RK3PWJ/9": "16", "RK6YYA/9/M": "16", + "RK8W": "16", "RK9KWI/9": "16", "RK9KWI/9/P": "16", + "RK9W": "16", "RL3DX/9": "16", + "RL9W": "16", + "RM8W": "16", "RM90WF": "16", "RM9RZ/9/P": "16", + "RM9W": "16", + "RN8W": "16", "RN9S/M": "16", + "RN9W": "16", "RN9WWW/9/M": "16", "RN9WWW/P": "16", "RO17CW": "16", "RO30KR": "16", + "RO8W": "16", "RO9L/4": "16", + "RO9W": "16", "RP67GI": "16", "RP67MG": "16", "RP67NG": "16", @@ -16119,6 +16631,7 @@ "RU9KC/4/M": "16", "RU9SO/4": "16", "RU9SO/4/P": "16", + "RU9W": "16", "RV22WB": "16", "RV2FZ/9": "16", "RV90WB": "16", @@ -16128,6 +16641,7 @@ "RW3SN/9": "16", "RW3XX/9": "16", "RW4WA/9/P": "16", + "RW8W": "16", "RW90WC": "16", "RW95WJ": "16", "RW9FWR/9/M": "16", @@ -16135,6 +16649,8 @@ "RW9JZ/9": "16", "RX22WN": "16", "RX95WN": "16", + "RX9WT/P": "16", + "RY9W": "16", "RZ16WF": "16", "RZ90WU": "16", "RZ9WU/P": "16", @@ -16149,11 +16665,14 @@ "UA4PJM/9/M": "16", "UA4PJM/9/P": "16", "UA4PXR/9/M": "16", + "UA8W": "16", "UA9KAA/4": "16", "UA9KAA/9": "16", + "UA9W": "16", "UB5O/4/M": "16", "UE10RFF/4": "16", "UE90W": "16", + "UI8W": "16", "R0FBA/9": "18", "R100KM": "18", "R2015RR": "18", @@ -16162,14 +16681,20 @@ "R6XBA/9": "18", "R9/UN7JHC": "18", "R9/UN7JMO": "18", - "R9YU/M": "18", "RA/IK5MIC": "18", "RA/IK5MIC/M": "18", "RA0CCJ/9": "18", "RA50VT": "18", + "RA8Y": "18", + "RA9Y": "18", + "RG9Y": "18", "RJ30KR": "18", "RK1B/9": "18", "RL30KR": "18", + "RL9Y": "18", + "RM8Y": "18", + "RM9Y": "18", + "RO9Y": "18", "RP68BP": "18", "RP68TZ": "18", "RP70AF": "18", @@ -16183,26 +16708,39 @@ "RP9YTZ": "18", "RQ1A": "18", "RQ1A/9": "18", + "RQ9Y": "18", "RT73GM": "18", + "RT9Y": "18", + "RU9Y": "18", "RW0CE/9": "18", "RW22WG": "18", + "RW9Y": "18", "RX6AY/9": "18", + "RZ8Y": "18", + "RZ9Y": "18", "UA0LLW/9": "18", "UA0ZDY/9": "18", "UA9UAX/9/P": "18", + "UA9Y": "18", + "UB8Y": "18", + "UC8Y": "18", "UE0ZOO/9": "18", "UE44R/9": "18", "UE80AL": "18", + "UI8Y": "18", "R2BZ/9": "18", + "R9YU/M": "18", "RA/IK5MIC/P": "18", "RA3DS/P": "18", "RA4FRH/9/M": "18", "RC9YA/9/M": "18", + "RV9Z": "18", "RW9MD/9/P": "18", "UA0KBG/9/P": "18", "UA9MAC/9": "18", "R00BVB": "18", "R100RW": "18", + "R105FSB": "18", "R120RB": "18", "R150WS": "18", "R170GS": "18", @@ -16216,6 +16754,7 @@ "R7LZ/9": "18", "RA/UR5HVR": "18", "RA0/UR5HVR": "18", + "RA0A": "18", "RA0AM/P": "18", "RA1AMW/0": "18", "RA3AUU/0": "18", @@ -16226,15 +16765,19 @@ "RA4CSX/0": "18", "RA4RU/0": "18", "RA9UT/0": "18", - "RAEM": "18", + "RD0A": "18", + "RD0B": "18", "RD110RAEM": "18", + "RG0A": "18", "RI0BV/0": "18", + "RK0A": "18", "RK3DZJ/9": "18", "RK56GC": "18", "RK6BBM/9": "18", "RK80KEDR": "18", "RL5G/9": "18", "RM0A": "18", + "RM0B": "18", "RM2D/9": "18", "RM9RZ/0": "18", "RN0A": "18", @@ -16249,22 +16792,28 @@ "RQ22NY": "18", "RQ30DX": "18", "RQ60YG": "18", + "RT0B": "18", "RT22SA": "18", "RT9K/9": "18", + "RU0A": "18", "RU19NY": "18", "RU3FF/0": "18", "RU4CO/0": "18", "RV3DHC/0": "18", "RV3DHC/0/P": "18", "RV9WP/9": "18", + "RW0A": "18", "RW3XN/0": "18", "RW3YC/0": "18", "RW3YC/9": "18", + "RY0A": "18", "RY1AAB/9": "18", "RY1AAB/9/M": "18", + "RZ0A": "18", "RZ3DSA/0": "18", "RZ3DZS/0": "18", "RZ9ON/9": "18", + "UA0A": "18", "UA0ACG/0": "18", "UA0FCB/0": "18", "UA0FCB/0/P": "18", @@ -16278,8 +16827,15 @@ "UA6BTN/0": "18", "UA9UAX/9": "18", "UA9WDK/0": "18", + "UB0A": "18", "UB1AJQ/0": "18", + "UC0A": "18", + "UC0B": "18", "UE1WFF/0": "18", + "UF0A": "18", + "UF0B": "18", + "UG0B": "18", + "UI0A": "18", "R100D": "18", "R100DI": "18", "R3CA/9": "18", @@ -16334,17 +16890,21 @@ "RA1ZZ/0/M": "19", "RA6GW/0": "19", "RA6XPL/0": "19", + "RC0C": "19", "RC110RAEM": "19", "RC20CD": "19", "RC90FA": "19", "RD0C": "19", "RD16CW": "19", "RD30KR": "19", + "RI0C": "19", + "RK0C": "19", "RL3AA/0": "19", "RL5G/0": "19", "RL60ANT": "19", "RM2D/0": "19", "RM30KR": "19", + "RN0C": "19", "RP0CZA": "19", "RP68H": "19", "RP70H": "19", @@ -16352,6 +16912,8 @@ "RP72H": "19", "RP76H": "19", "RP77H": "19", + "RQ0C": "19", + "RT0C": "19", "RT22CT": "19", "RU3DX/0": "19", "RV30KR": "19", @@ -16363,8 +16925,10 @@ "RZ5D/0": "19", "RZ60YG": "19", "UA0AOZ/0": "19", + "UA0C": "19", "UA3DX/0": "19", "UA6CW/0": "19", + "UC0C": "19", "UE150C": "19", "UE70VSV": "19", "UE80C": "19", @@ -16385,14 +16949,21 @@ "RA4HKM/0": "19", "RA4HKM/0/P": "19", "RA6ABC/0": "19", + "RC0F": "19", + "RD0F": "19", + "RI0F": "19", "RM0F": "19", "RN0F": "19", + "RN1B/0": "19", "RN1CR/0": "19", "RN3BL/0": "19", + "RO0F": "19", "RS0F": "19", + "RT0F": "19", "RT6A/0": "19", "RV1CC/0": "19", "RW20LH": "19", + "RX0F": "19", "RX3AMI/0": "19", "RX3F/0": "19", "RZ3DW/0": "19", @@ -16431,6 +17002,7 @@ "RA3AV/0": "19", "RA3XV/0": "19", "RC85AO": "19", + "RI0K": "19", "RP70AS": "19", "RT65KI": "19", "RT92KA": "19", @@ -16440,10 +17012,12 @@ "RZ6MZ/0": "19", "UA1ORT/0": "19", "UA6LP/0": "19", + "R01DTV/0": "19", "R0HQ": "19", "R150AV": "19", "R150L": "19", "R17CWH": "19", + "R195JV": "19", "R20RRC/0": "19", "R325F": "19", "R325TF": "19", @@ -16460,16 +17034,23 @@ "RA/OK1DWF": "19", "RA4AR/0": "19", "RA6KE/0": "19", + "RC0L": "19", "RC5A/0": "19", + "RD0L": "19", "RD3ARD/0": "19", "RD3BN/0": "19", + "RI0L": "19", + "RK0L": "19", "RK3Q/0": "19", + "RL0L": "19", "RL20LH": "19", "RL5G/0/P": "19", "RL8C/0": "19", + "RM0L": "19", "RM0M": "19", "RM0M/LH": "19", "RM5M/0": "19", + "RN0L": "19", "RN1NS/0": "19", "RP0L": "19", "RP0LPK": "19", @@ -16504,39 +17085,50 @@ "RP77DG": "19", "RP77SD": "19", "RP77V": "19", + "RT0L": "19", + "RU0L": "19", "RU3BY/0": "19", "RU5D/0": "19", "RV1AW/0": "19", "RV3DSA/0": "19", "RW22GO": "19", "RW3LG/0": "19", + "RX0L": "19", "RX15RX": "19", "RX20NY": "19", "RX21NY": "19", "RX22NY": "19", "RX30DX": "19", "RX60YG": "19", + "RZ0L": "19", + "UA0L": "19", "UA0SDX/0": "19", "UA0SIK/0": "19", "UA3AHA/0": "19", "UA4SBZ/0": "19", "UA6MF/0": "19", "UA7R/0": "19", + "UB0L": "19", "UB0LAP/P": "19", + "UC0L": "19", "UC0LAF/P": "19", + "UD0L": "19", "UE1RFF/0": "19", "UE70MA": "19", "UE75L": "19", + "UI0L": "19", "R100FNR": "18", "RA0CGI/0": "18", "RA9FTM/0": "18", "RA9JJ/0": "18", "RK3RB/0": "18", "RK4HM/0": "18", + "RT0O": "18", "RU0UA/0": "18", "RV3ACA/0": "18", "RW4CG/0": "18", "RW4CG/0/P": "18", + "RZ0O": "18", "R0/UR8LV": "19", "R0SDG/P": "19", "R100Q": "19", @@ -16553,12 +17145,14 @@ "RA/DK2AI/0": "19", "RA/DK2AI/M": "19", "RA/UT5IA": "19", + "RA0Q": "19", "RA0STT/0/M": "19", "RA6AEW/0": "19", "RA6UAH/0": "19", "RA9DA/0": "19", "RD3QA/0": "19", "RF3A/0": "19", + "RI0Q": "19", "RK6YYA/0/P": "19", "RN6LFF/0": "19", "RP0Q": "19", @@ -16570,6 +17164,7 @@ "RZ3BY/0": "19", "UA0SVD/0": "19", "UA1PBA/0": "19", + "UA4FMQ/P": "19", "UA9CTT/0": "19", "UA9KW/0": "19", "UB5O/0": "19", @@ -16590,6 +17185,7 @@ "R700SSR": "18", "R800SAN": "18", "R9PS/9": "18", + "RA0R": "18", "RA0SP/RP": "18", "RA0SR/RP": "18", "RA110RAEM": "18", @@ -16600,6 +17196,8 @@ "RA9OBG/0": "18", "RA9USU/8": "18", "RD0L/0": "18", + "RG0S": "18", + "RK0S": "18", "RK17CW": "18", "RK60ANT": "18", "RK9MZZ/0": "18", @@ -16616,6 +17214,9 @@ "RP76AB": "18", "RP77AB": "18", "RQ0C/9": "18", + "RT0R": "18", + "RT0T": "18", + "RU0S": "18", "RU1TA/0": "18", "RV3ACA/0/M": "18", "RV6AJ/0": "18", @@ -16631,6 +17232,8 @@ "RZ0SO/P": "18", "UA0KBG/0": "18", "UA0KBG/9": "18", + "UA0R": "18", + "UA0S": "18", "UA3EDQ/0": "18", "UA3EDQ/0/MM": "18", "UA3EDQ/0/P": "18", @@ -16648,22 +17251,32 @@ "R0WA/P": "18", "R10RTRS/0": "18", "RA0AM/0": "18", + "RA0W": "18", + "RD0W": "18", + "RK0W": "18", + "RM0W": "18", "RP0W": "18", "RP0W/P": "18", "RP0WWS": "18", "RP70SL": "18", "RP72SL": "18", + "RT0W": "18", + "RU0W": "18", "RV0AE/0/FF": "18", "RZ0AM/0": "18", "RZ22WW": "18", "UA0FCB/P": "18", + "UA0W": "18", "UA0WG/P": "18", "UA9UAX/0/M": "18", + "UC0W": "18", + "UD0W": "18", "UE0ARD/0": "18", "UE10RFF/9": "18", "UE1RFF/0/P": "18", "UE9FDA/0": "18", "UE9FDA/0/M": "18", + "UF0W": "18", "R205NEW": "19", "R23RRC": "19", "UA6HMC/0": "19", @@ -16684,6 +17297,7 @@ "UA0ADU/0": "23", "UA0WGD/0": "23", "UA9ZZ/0/P": "23", + "UB0Y": "23", "UE0OFF/0": "23", "UE44Y/9": "23", "UE70Y": "23", @@ -16691,6 +17305,8 @@ "R1FW/0": "19", "R6MG/0": "19", "R750X": "19", + "RI0X": "19", + "RI0Z": "19", "RK1B/0": "19", "RM7C/0": "19", "RN6HI/0": "19", @@ -16718,6 +17334,7 @@ "R30ARCK": "18", "R70BP/0": "18", "R7AB/0": "18", + "R9PS/0": "18", "RA/UR5WT": "18", "RA77VV": "18", "RA9MX/0": "18", @@ -17012,6 +17629,7 @@ "EA6LU/P", "EA6URI/PAZ", "EA6URL/IF", + "EA6XQ/P", "EA7DUT/6", "EA9CI/6", "EA9CP/6", @@ -17097,9 +17715,14 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ + "3Y/LB1QI", + "3Y/LB5GI", "3Y/ZS6GCM", "3Y0C", - "3Y0E" + "3Y0E", + "3Y0J", + "3Y7GIA", + "3Y7THA" ], "prefixITU": {}, "prefixCQ": {}, @@ -17248,7 +17871,6 @@ "EA5KA/8", "EA5RKB/8", "EA5RKL/8", - "EA6XQ/P", "EA7JR/8", "EA8/DJ5AA/LH", "EA8AKG/F", @@ -17268,6 +17890,7 @@ "EB7A/8", "EC1KR/8", "EC2DX/8", + "EC7AKV/8", "EC8AFM/LH", "ED4R/8", "ED5RKL/8", @@ -17463,7 +18086,9 @@ "confirmed_bands": {}, "worked_modes": {}, "confirmed_modes": {}, - "direct": [], + "direct": [ + "VERSION" + ], "prefixITU": {}, "prefixCQ": {}, "directITU": {}, @@ -19528,6 +20153,7 @@ "R0CM/4", "R0IA/3", "R0IT/6", + "R0QAW/3", "R0SBC/6", "R0UAR/6", "R0WAS/1/P", @@ -19550,11 +20176,9 @@ "R18ISL", "R18PER", "R1CF/M", - "R2011UFO", - "R2011UFO/M", - "R2011UFO/P", "R2014I", "R2014WOG", + "R2023EN", "R20ARRS", "R20PRM", "R20RTP", @@ -19574,13 +20198,11 @@ "R325SF", "R325SSF", "R325Z", - "R34CZF", "R350AR", "R35MWC", "R3ARS/4", "R3CG/1", "R3GO/FF", - "R3RRC/9", "R3TT/FF", "R3ZK/FF", "R41WCMB", @@ -19637,6 +20259,7 @@ "R80RTL", "R80TV", "R80UPOL", + "R80URAN", "R850G", "R850PN", "R85AAL", @@ -19810,6 +20433,7 @@ "RA0ZD/1", "RA0ZG/6", "RA0ZZ/3", + "RA1N", "RA1QQ/LH", "RA1WS/1", "RA20NY", @@ -19825,21 +20449,20 @@ "RA2FN/1", "RA2FW/1", "RA3AL/M", - "RA3AMG/9/M", "RA3CQ/9/M", - "RA3OM/9", "RA3X/1", "RA3YV/ANT", "RA3ZZ/ANT", "RA4HL", + "RA4I", "RA4M/P", "RA4NCC", - "RA4NH/9", - "RA4NV/9", + "RA4W", "RA60ANT", "RA6ACI/9", "RA6EE/FF", "RA80KEDR", + "RA80OW", "RA80SP", "RA90FA", "RA95FL", @@ -19864,6 +20487,7 @@ "RA9FNV/1", "RA9FR/4/M", "RA9FR/4/P", + "RA9G", "RA9J/1", "RA9J/M", "RA9JG/1", @@ -19904,6 +20528,7 @@ "RA9WU/4/P", "RA9WU/6", "RA9WW/6", + "RA9X", "RA9XA/1", "RA9XA/1/P", "RA9XAF/4", @@ -19914,36 +20539,47 @@ "RA9XY/3", "RA9YA/6", "RC18SA", + "RC1O", + "RC1Z", "RC20FM", "RC20HZ", "RC4AF/FF", + "RC4H", "RC4HT", "RC4I", + "RC4W", "RC80KEDR", "RC80SP", "RC85MP", "RC8C/6", + "RC8X", + "RC9F", + "RC9X", "RC9XM/1", "RC9YA/3/P", "RC9YA/4/M", "RD0L/3", "RD1A/M", "RD4CBQ/9", - "RD4M/9", + "RD4I", "RD80KF", "RD8O/P", + "RD8X", "RD9CX/4", "RD9CX/4/P", "RD9CX/6", "RD9CX/6/P", "RD9M/3", + "RF1P", + "RF8F", "RG0F/5", + "RG4H", "RG50P", "RG50P/9", - "RG50P/M", "RG80KEDR", "RG9A/3/P", - "RI41POL", + "RJ1O", + "RJ1Z", "RJ30FO", "RJ4I", "RJ4P", @@ -19952,8 +20588,9 @@ "RK0HWW/1", "RK0SE/1", "RK0UT/3", - "RK1OWZ/9", - "RK1OWZ/9/M", + "RK1I", + "RK1N", + "RK1O", "RK1PWA/ANT", "RK21Z", "RK30DR", @@ -19963,9 +20600,11 @@ "RK3DWA/3/N", "RK3DZJ/1/LH", "RK3MXT/FF", + "RK4H", "RK4HM", "RK4P", "RK4PK", + "RK4W", "RK6AH/LH", "RK6K/9", "RK75OP", @@ -19974,29 +20613,39 @@ "RK8O/4", "RK90DR", "RK90FA", + "RK9F", "RK9JA/6", "RK9XWV/1", + "RL1I", "RL1I/P", "RL1O", "RL1P", "RL3AB/FF", + "RL4H", "RL80KEDR", "RL90FA", "RL96WS", "RL97WS", "RL9AA/6", + "RL9F", + "RL9X", "RM0F/3", "RM0L/1", "RM0L/3", "RM0L/7", + "RM1O", "RM1O/M", + "RM1Z", "RM4I", "RM4P", "RM4R", + "RM4W", "RM80DZ", "RM80SP", "RM8A/4/M", "RM8A/6/M", + "RM8G", + "RM8W/3", "RM8W/4/M", "RM8W/6", "RM8X/3", @@ -20004,12 +20653,14 @@ "RM94AE", "RM9T/4/P", "RM9WN/1", + "RM9X", "RM9X/1", "RN0CF/3", "RN0CF/6", "RN0CT/4", "RN0JT/6", "RN1M/P", + "RN1N", "RN1NA/ANT", "RN20LH", "RN22OG", @@ -20025,9 +20676,12 @@ "RN4ACZ/9", "RN4HFJ", "RN4HIF", + "RN4I", + "RN4W", "RN60ANT", "RN7G/FF", "RN80KEDR", + "RN80OW", "RN85AM", "RN85KN", "RN90FA", @@ -20043,8 +20697,11 @@ "RO20LH", "RO25KL", "RO25KO", + "RO4I", + "RO4W", "RO75RK", "RO80KEDR", + "RO80OW", "RO80RO", "RP61XX", "RP62X", @@ -20132,16 +20789,18 @@ "RP77RK", "RP77X", "RP8X", - "RP9FKU", - "RP9FTK", "RP9X/1", "RP9XWM/1", "RQ0C/4", "RQ0C/6", + "RQ4I", "RQ80SP", "RQ90FA", + "RQ9F", "RQ9F/M", "RT05RO", + "RT1I", + "RT1Z", "RT20NY", "RT21NY", "RT21RU", @@ -20151,12 +20810,15 @@ "RT2F/P", "RT30DX", "RT36MS", + "RT4I", + "RT4W", "RT5G/P/FF", "RT60YG", "RT73LF", "RT78ML", "RT80KEDR", "RT80NT", + "RT8X", "RT90FA", "RT90PK", "RT9K/3", @@ -20175,6 +20837,7 @@ "RT9T/4", "RT9T/6", "RT9T/6/M", + "RT9X", "RU0BW/3", "RU0LM/3", "RU0LM/4", @@ -20192,15 +20855,20 @@ "RU2FB/6/P", "RU3HD/ANT", "RU3ZK/FF", + "RU4H", "RU4HD", "RU4HP", "RU4I", "RU4SS/9", + "RU4W", "RU4W/9", "RU4WA/9", "RU80KEDR", "RU80KEDR/P", + "RU80OW", + "RU80SB", "RU80TO", + "RU8X", "RU8X/1", "RU90FA", "RU95FL", @@ -20210,6 +20878,7 @@ "RU9CK/7", "RU9CK/7/M", "RU9CK/7/P", + "RU9F", "RU9LA/4", "RU9MU/1", "RU9MU/3", @@ -20234,7 +20903,6 @@ "RV22PM", "RV2FW/1", "RV2FW/1/M", - "RV3UI/9", "RV4CC/FF", "RV80KEDR", "RV9AB/6", @@ -20279,18 +20947,14 @@ "RW0UZ/4", "RW1AI/ANT", "RW1AI/LH", - "RW1QN/9", - "RW1QN/9/M", - "RW1QN/9/P", "RW1ZQ/LH", "RW2F/6", "RW3DU/N", - "RW3TN/9", "RW4HM", "RW4HTK", "RW4HW", "RW4HZ", - "RW4NJ/9/M", + "RW4W", "RW6AWW/LH", "RW6MD/1", "RW8W/1", @@ -20301,6 +20965,7 @@ "RW9FWB/4", "RW9FWR/4", "RW9FWR/4/M", + "RW9G", "RW9JV/3", "RW9JZ/6", "RW9KW/3", @@ -20326,6 +20991,7 @@ "RX3AMI/1/LH", "RX3AMI/7/LH", "RX3XX/N", + "RX4W", "RX6AA/ANT", "RX6AAP/ANT", "RX9FW/4", @@ -20335,7 +21001,6 @@ "RX9TL/3", "RX9TN/1", "RX9TX/6", - "RX9TX/9", "RX9UL/1", "RX9UL/3", "RX9WN/3", @@ -20346,9 +21011,12 @@ "RZ0IWW/1", "RZ0SB/4", "RZ16FM", + "RZ1O", + "RZ1Z", "RZ20LH", "RZ4HWF/LH", "RZ4HZW/FF", + "RZ4I", "RZ5D/4", "RZ7G/6/FF", "RZ7G/FF", @@ -20369,7 +21037,6 @@ "RZ9UZV/6", "RZ9W/3", "RZ9WM/4", - "RZ9WM/9", "RZ9WU/4/M", "UA0AD/3", "UA0ADX/3", @@ -20425,10 +21092,8 @@ "UA1CDA/LH", "UA1CIO/LH", "UA1JJ/ANT", - "UA1OOX/9", "UA1PAC/1/ANT", "UA1PAC/ANT", - "UA1QV/9", "UA1QV/ANT", "UA1ZQO/9", "UA2FFX/1", @@ -20461,8 +21126,7 @@ "UA4PN", "UA4RF", "UA4RW", - "UA4WA/9", - "UA4WP/9/M", + "UA4W", "UA5B/4", "UA6ADC/N", "UA6HBO/N", @@ -20470,7 +21134,6 @@ "UA6IC/6/FF", "UA6IC/FF", "UA6LP/P/LH", - "UA6LTO/9", "UA6LV/ANT", "UA6MM/LH", "UA8AA/3", @@ -20500,6 +21163,7 @@ "UA9CTT/3", "UA9CTT/4", "UA9CTT/6", + "UA9CTT/P", "UA9CUA/4/M", "UA9DD/3", "UA9FAR/3", @@ -20582,8 +21246,10 @@ "UB0IBA/7", "UB1OAD/1/P", "UB1OAD/9/P", + "UB1Z", "UB1ZBD/N", "UB2FCS/6", + "UB4W", "UB5O/1", "UB5O/1/M", "UB5O/4", @@ -20593,7 +21259,12 @@ "UB8JAF/3", "UB9YUW/1", "UC0LAF/3", + "UC1I", "UC4I", + "UC8F", + "UD4I", + "UD4W", + "UD8F", "UE00S", "UE00S/P", "UE02SRM", @@ -20603,7 +21274,6 @@ "UE10SK", "UE16SA", "UE16ST", - "UE1RDA/9", "UE200TARS", "UE20DS", "UE21A", @@ -20613,13 +21283,18 @@ "UE23DKA", "UE23DSA", "UE23DZO", + "UE23NY", "UE24SU", "UE25AC", "UE25AFG", "UE25AQ", + "UE25DD", "UE25FO", "UE25IK", + "UE25KDR", + "UE25KK", "UE25R", + "UE25RR", "UE25TF", "UE25WDW", "UE27AFG", @@ -20641,11 +21316,14 @@ "UE80GS", "UE80HS", "UE80KFD", + "UE80M", + "UE80ML", "UE80O", "UE80OL", "UE80PQ", "UE80RWW", "UE80S", + "UE80SK", "UE80SKR", "UE80SKR/P", "UE80V", @@ -20696,10 +21374,16 @@ "UF0B/3", "UF0W/3", "UF0W/6", + "UF1I", "UF2F/1/M", "UF2F/3/M", + "UF4H", + "UF8F", + "UG4I", "UG4I/P", + "UI4H", "UI4I", + "UI8F", "UI8W/3/P" ], "prefixITU": { @@ -21381,9 +22065,12 @@ "R85KFF": "19", "R90K": "19", "R90KFF": "19", + "RA1N": "19", "RA9J/1": "19", "RA9J/M": "19", + "RK1N": "19", "RK75OP": "19", + "RN1N": "19", "RN1NA/ANT": "19", "RN20LH": "19", "RN60ANT": "19", @@ -21421,7 +22108,11 @@ "RA60ANT": "19", "RA9XA/1": "19", "RA9XA/1/P": "19", + "RC1O": "19", + "RJ1O": "19", "RK0SE/1": "19", + "RK1O": "19", + "RM1O": "19", "RM1O/M": "19", "RM9X/1": "19", "RO20LH": "19", @@ -21440,6 +22131,7 @@ "RP76AU": "19", "RP77A": "19", "RP77AU": "19", + "RZ1O": "19", "UA1PAC/ANT": "19", "UA9UAX/1": "19", "UA9UAX/1/M": "19", @@ -21461,6 +22153,7 @@ "RA9JG/1": "20", "RA9LI/1": "20", "RC9XM/1": "20", + "RF1P": "20", "RK1PWA/ANT": "20", "RL1P": "20", "UA1PAC/1/ANT": "20", @@ -21475,8 +22168,11 @@ "R325Z": "19", "RA9CFH/1": "19", "RA9CFH/1/P": "19", + "RC1Z": "19", + "RJ1Z": "19", "RK21Z": "19", "RK3DZJ/1/LH": "19", + "RM1Z": "19", "RM9WN/1": "19", "RP72MU": "19", "RP73MU": "19", @@ -21492,12 +22188,16 @@ "RP77KSF": "19", "RP77MU": "19", "RP77PL": "19", + "RT1Z": "19", "RU1ZC/ANT": "19", "RW1ZQ/LH": "19", "RY83HN": "19", + "RZ1Z": "19", "RZ20LH": "19", + "UB1Z": "19", "UB1ZBD/N": "19", "R170SG": "30", + "R2023EN": "30", "R20SAM": "30", "R280TLT": "30", "R3ARS/4": "30", @@ -21520,20 +22220,28 @@ "R50VAZ": "30", "R9DA/4": "30", "RA4HL": "29", + "RA4I": "30", "RA9FAA/4/M": "30", "RA9SC/4": "30", "RA9SC/4/P": "30", "RC18SA": "30", "RC20HZ": "30", + "RC4H": "30", "RC4HT": "29", "RC4I": "29", "RC9YA/4/M": "30", + "RD4I": "30", + "RG4H": "30", "RJ30FO": "30", "RJ4I": "29", + "RK4H": "30", "RK4HM": "29", + "RL4H": "30", "RM4I": "29", "RN4HFJ": "29", "RN4HIF": "29", + "RN4I": "30", + "RO4I": "30", "RP72AG": "30", "RP72I": "30", "RP72MF": "30", @@ -21553,7 +22261,10 @@ "RP76VN": "30", "RP76ZS": "30", "RP77I": "30", + "RQ4I": "30", + "RT4I": "30", "RT9K/4": "30", + "RU4H": "30", "RU4HD": "29", "RU4HP": "29", "RU4I": "29", @@ -21569,6 +22280,7 @@ "RW9WJ/P": "30", "RZ4HWF/LH": "30", "RZ4HZW/FF": "30", + "RZ4I": "30", "RZ9WU/4/M": "30", "UA0KAO/4": "30", "UA0QJA/4": "30", @@ -21585,9 +22297,13 @@ "UA9SY/4": "30", "UB5O/4": "30", "UC4I": "29", + "UD4I": "30", "UE77MR": "30", "UE77WT": "30", + "UF4H": "30", + "UG4I": "30", "UG4I/P": "30", + "UI4H": "30", "UI4I": "29", "RA4NCC": "30", "UA4NF": "30", @@ -21604,12 +22320,18 @@ "R100UD": "30", "R9GM/4": "30", "R9UT/4": "30", + "RA4W": "30", "RA9FDR/4/P": "30", "RA9FDR/M": "30", "RA9KV/4/M": "30", "RA9WU/4": "30", "RA9WU/4/M": "30", "RA9WU/4/P": "30", + "RC4W": "30", + "RK4W": "30", + "RM4W": "30", + "RN4W": "30", + "RO4W": "30", "RP72IZ": "30", "RP73IZ": "30", "RP74IZ": "30", @@ -21621,25 +22343,28 @@ "RT22NY": "30", "RT30DX": "30", "RT36MS": "30", + "RT4W": "30", "RT60YG": "30", "RT78ML": "30", + "RU4W": "30", + "RW4W": "30", "RW9FWB/4": "30", "RW9FWR/4": "30", "RW9FWR/4/M": "30", + "RX4W": "30", "RX9FW/4": "30", + "UA4W": "30", "UA9UAX/4/M": "30", + "UB4W": "30", + "UD4W": "30", "R120RP": "30", "R155PM": "30", "R160PM": "30", "R18PER": "30", - "R2011UFO": "30", - "R2011UFO/M": "30", - "R2011UFO/P": "30", "R2014WOG": "30", "R20PRM": "30", "R290PM": "30", "R2AG/9": "30", - "R34CZF": "30", "R4WAN/P": "30", "R6DAB/9": "30", "R8CZ/4": "30", @@ -21656,40 +22381,46 @@ "R9KC/8/M": "30", "RA27FM": "30", "RA9FEU/M": "30", + "RA9G": "30", "RA9XAI/4": "30", "RC20FM": "30", - "RD4M/9": "30", - "RG50P/M": "30", + "RC9F": "30", + "RF8F": "30", "RK3AW/4": "30", + "RK9F": "30", + "RL9F": "30", + "RM8G": "30", "RN9N/4": "30", "RP70PK": "30", "RP77PM": "30", - "RP9FKU": "30", - "RP9FTK": "30", + "RQ9F": "30", + "RQ9F/M": "30", "RU27FQ": "30", "RU27FW": "30", "RU4W/9": "30", "RU90FA": "30", + "RU9F": "30", "RV22PM": "30", - "RX9TX/9": "30", + "RW9G": "30", "RZ16FM": "30", - "RZ9WM/9": "30", "UA1ZQO/9": "30", "UA3FQ/4": "30", "UA3FQ/4/P": "30", "UA3FQ/P": "30", "UA4NF/4/M": "30", - "UA4WA/9": "30", "UA9CGL/4/M": "30", "UA9CGL/9/M": "30", "UA9CGL/M": "30", "UA9CUA/4/M": "30", "UA9UAX/4": "30", + "UC8F": "30", + "UD8F": "30", "UE16SA": "30", "UE55PM": "30", + "UF8F": "30", + "UI8F": "30", "RP75TK": "30", "RP76TK": "30", - "RW3TN/9": "30", "UE10SK": "30", "R100AP": "20", "R100KOMI": "20", @@ -21703,7 +22434,6 @@ "R2DXU/9": "20", "R35MWC": "20", "R3CG/1": "20", - "R3RRC/9": "20", "R41WCMB": "20", "R5QQ/1": "20", "R6DGL/9/M": "20", @@ -21714,6 +22444,7 @@ "R7BA/9/M": "20", "R8MB/1": "20", "R8MB/1/P": "20", + "R8XF/M": "20", "R9/UR7IMG": "20", "R95KOMI": "20", "R9KD/9": "20", @@ -21726,19 +22457,21 @@ "RA22XA": "20", "RA22XF": "20", "RA22XU": "20", - "RA3AMG/9/M": "20", - "RA3OM/9": "20", "RA3X/1": "20", - "RA4NH/9": "20", - "RA4NV/9": "20", "RA6ACI/9": "20", + "RA9X": "20", + "RC8X": "20", + "RC9X": "20", "RD4CBQ/9": "20", - "RK1OWZ/9": "20", - "RK1OWZ/9/M": "20", + "RD8X": "20", + "RK1I": "20", "RK30DR": "20", "RK6K/9": "20", "RK90DR": "20", + "RL1I": "20", "RL1I/P": "20", + "RL9X": "20", + "RM9X": "20", "RN22OG": "20", "RN22OV": "20", "RN4ACZ/9": "20", @@ -21753,32 +22486,27 @@ "RP75X": "20", "RP76X": "20", "RP77X": "20", + "RT1I": "20", "RT73LF": "20", + "RT8X": "20", + "RT9X": "20", + "RU8X": "20", "RV1CC/1": "20", - "RV3UI/9": "20", - "RW1QN/9": "20", - "RW1QN/9/M": "20", - "RW1QN/9/P": "20", - "RW4NJ/9/M": "20", "RW6MD/1": "20", "RY110RAEM": "20", - "UA1OOX/9": "20", - "UA1QV/9": "20", - "UA4WP/9/M": "20", - "UA6LTO/9": "20", "UB1OAD/1/P": "20", "UB1OAD/9/P": "20", + "UC1I": "20", "UE16ST": "20", - "UE1RDA/9": "20", "UE85DRK": "20", - "UE90K": "20" + "UE90K": "20", + "UF1I": "20" }, "directCQ": { "R25EMW": "17", "RA3CQ/9/M": "17", "RG50P": "17", "RG50P/9": "17", - "RI41POL": "40", "RK80X": "17", "RP61XX": "17", "RP62X": "17", @@ -21794,14 +22522,10 @@ "R155PM": "17", "R160PM": "17", "R18PER": "17", - "R2011UFO": "17", - "R2011UFO/M": "17", - "R2011UFO/P": "17", "R2014WOG": "17", "R20PRM": "17", "R290PM": "17", "R2AG/9": "17", - "R34CZF": "17", "R4WAN/P": "17", "R6DAB/9": "17", "R8CZ/4": "17", @@ -21818,40 +22542,46 @@ "R9KC/8/M": "17", "RA27FM": "17", "RA9FEU/M": "17", + "RA9G": "17", "RA9XAI/4": "17", "RC20FM": "17", - "RD4M/9": "17", - "RG50P/M": "17", + "RC9F": "17", + "RF8F": "17", "RK3AW/4": "17", + "RK9F": "17", + "RL9F": "17", + "RM8G": "17", "RN9N/4": "17", "RP70PK": "17", "RP77PM": "17", - "RP9FKU": "17", - "RP9FTK": "17", + "RQ9F": "17", + "RQ9F/M": "17", "RU27FQ": "17", "RU27FW": "17", "RU4W/9": "17", "RU90FA": "17", + "RU9F": "17", "RV22PM": "17", - "RX9TX/9": "17", + "RW9G": "17", "RZ16FM": "17", - "RZ9WM/9": "17", "UA1ZQO/9": "17", "UA3FQ/4": "17", "UA3FQ/4/P": "17", "UA3FQ/P": "17", "UA4NF/4/M": "17", - "UA4WA/9": "17", "UA9CGL/4/M": "17", "UA9CGL/9/M": "17", "UA9CGL/M": "17", "UA9CUA/4/M": "17", "UA9UAX/4": "17", + "UC8F": "17", + "UD8F": "17", "UE16SA": "17", "UE55PM": "17", + "UF8F": "17", + "UI8F": "17", "RP75TK": "17", "RP76TK": "17", - "RW3TN/9": "17", "UE10SK": "17", "R100AP": "17", "R100KOMI": "17", @@ -21865,7 +22595,6 @@ "R2DXU/9": "17", "R35MWC": "17", "R3CG/1": "17", - "R3RRC/9": "17", "R41WCMB": "17", "R5QQ/1": "17", "R6DGL/9/M": "17", @@ -21876,6 +22605,7 @@ "R7BA/9/M": "17", "R8MB/1": "17", "R8MB/1/P": "17", + "R8XF/M": "17", "R9/UR7IMG": "17", "R95KOMI": "17", "R9KD/9": "17", @@ -21888,19 +22618,21 @@ "RA22XA": "17", "RA22XF": "17", "RA22XU": "17", - "RA3AMG/9/M": "17", - "RA3OM/9": "17", "RA3X/1": "17", - "RA4NH/9": "17", - "RA4NV/9": "17", "RA6ACI/9": "17", + "RA9X": "17", + "RC8X": "17", + "RC9X": "17", "RD4CBQ/9": "17", - "RK1OWZ/9": "17", - "RK1OWZ/9/M": "17", + "RD8X": "17", + "RK1I": "17", "RK30DR": "17", "RK6K/9": "17", "RK90DR": "17", + "RL1I": "17", "RL1I/P": "17", + "RL9X": "17", + "RM9X": "17", "RN22OG": "17", "RN22OV": "17", "RN4ACZ/9": "17", @@ -21915,25 +22647,21 @@ "RP75X": "17", "RP76X": "17", "RP77X": "17", + "RT1I": "17", "RT73LF": "17", + "RT8X": "17", + "RT9X": "17", + "RU8X": "17", "RV1CC/1": "17", - "RV3UI/9": "17", - "RW1QN/9": "17", - "RW1QN/9/M": "17", - "RW1QN/9/P": "17", - "RW4NJ/9/M": "17", "RW6MD/1": "17", "RY110RAEM": "17", - "UA1OOX/9": "17", - "UA1QV/9": "17", - "UA4WP/9/M": "17", - "UA6LTO/9": "17", "UB1OAD/1/P": "17", "UB1OAD/9/P": "17", + "UC1I": "17", "UE16ST": "17", - "UE1RDA/9": "17", "UE85DRK": "17", - "UE90K": "17" + "UE90K": "17", + "UF1I": "17" } }, "56": { @@ -22132,6 +22860,7 @@ "direct": [ "R1FJL", "R1FJM", + "RI1F", "UA1PBN/1", "UA4RX/1" ], @@ -22954,7 +23683,6 @@ "TO5J", "TO5K", "TO5PX", - "TO5T", "TO5U", "TO5W", "TO5X", @@ -24494,6 +25222,7 @@ "LS4AA/H", "LT2F/D", "LT2F/F", + "LT2F/XP", "LT5D/LH", "LT5V/V", "LT5X/XP", @@ -24586,6 +25315,7 @@ "LU1ELP/D", "LU1ELY/D", "LU1EPC/D", + "LU1EPC/E", "LU1EPF/D", "LU1EQ/D", "LU1EQU/D", @@ -24632,6 +25362,7 @@ "LU1LAA/L", "LU1LT/L", "LU1LTL/L", + "LU1MAW/D", "LU1MAW/Y", "LU1QAC/H", "LU1QR/V", @@ -24660,6 +25391,7 @@ "LU1VYL/D", "LU1VYL/V", "LU1VYL/W", + "LU1VYL/XO", "LU1VYL/Y", "LU1VZ/V", "LU1WBM/W", @@ -24686,9 +25418,11 @@ "LU1XAW/X", "LU1XB/X", "LU1XB/XA", + "LU1XBK/XA", "LU1XBR/XA", "LU1XMO/W", "LU1XMO/XA", + "LU1XOP/W", "LU1XP/XP", "LU1XPD/XP", "LU1XS/O", @@ -24929,6 +25663,7 @@ "LU3ES/V", "LU3ES/W", "LU3ESY/D", + "LU3EU/E", "LU3EZA/D", "LU3FCA/F", "LU3FCI/D", @@ -25052,6 +25787,7 @@ "LU4DRH/E", "LU4DRW/H", "LU4DVD/D", + "LU4DX/D", "LU4DXG/D", "LU4EAE/D", "LU4EDA/H", @@ -25330,6 +26066,7 @@ "LU6DRN/D", "LU6DSA/D", "LU6DTB/D", + "LU6DTJ/D", "LU6DTT/D", "LU6DXJ/D", "LU6EAG/D", @@ -25480,6 +26217,7 @@ "LU7EON/D", "LU7EPC/D", "LU7EPC/W", + "LU7EPT/H", "LU7ETR/D", "LU7EUI/XP", "LU7EUZ/W", @@ -25674,6 +26412,7 @@ "LU8VER/V", "LU8VLW/V", "LU8WDG/W", + "LU8WVA/W", "LU8XBC/XA", "LU8XBS/XA", "LU8XC/X", @@ -27010,6 +27749,7 @@ "LU1WRF/W": "16", "LU1WRV/W": "16", "LU1XMO/W": "16", + "LU1XOP/W": "16", "LU2AOP/W": "16", "LU2VJ/W": "16", "LU2WA/LGT": "16", @@ -27077,6 +27817,7 @@ "LU8EKB/W": "16", "LU8VCC/W": "16", "LU8WDG/W": "16", + "LU8WVA/W": "16", "LU8YD/W": "16", "LU9DLM/W": "16", "LU9ESD/W": "16", @@ -27094,11 +27835,13 @@ "L20X/LH": "16", "LP0B/XP": "16", "LR1AW/X": "16", + "LT2F/XP": "16", "LT5X/XP": "16", "LU/UA4WHX/X": "16", "LU1AW/X": "16", "LU1DNC/X": "16", "LU1DZ/X": "16", + "LU1VYL/XO": "16", "LU1WCL/XA": "16", "LU1WFU/XA": "16", "LU1WUD/XA": "16", @@ -27107,6 +27850,7 @@ "LU1XAW/X": "16", "LU1XB/X": "16", "LU1XB/XA": "16", + "LU1XBK/XA": "16", "LU1XBR/XA": "16", "LU1XMO/XA": "16", "LU1XP/XP": "16", @@ -27335,6 +28079,7 @@ "N1GU", "N2MI", "N6MSK", + "N6WBN", "N9PLT", "NH0A", "NH0B", @@ -29083,6 +29828,7 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ + "AA2TT", "AA3CM", "AA7DI", "AA7FL", @@ -29153,6 +29899,7 @@ "K6BHG", "K6BU", "K6CEE", + "K6DCA", "K6GJS", "K6GUY", "K6HI", @@ -29196,10 +29943,8 @@ "KB0ZKZ", "KB1EUJ", "KB1HGW", - "KB1KAC", "KB1PCX", "KB1UHL", - "KB2MRY", "KB3FDP", "KB3IOC", "KB3OXU", @@ -29240,6 +29985,7 @@ "KB7WDC", "KB7WUP", "KB8SKX", + "KB9EHR", "KB9YGQ", "KC0HFI", "KC0WQU", @@ -29295,7 +30041,9 @@ "KC9KEX", "KC9NJG", "KC9SBG", + "KC9WIB", "KD0JNO", + "KD0OLJ", "KD0OXU", "KD0QLQ", "KD0QLR", @@ -29335,6 +30083,7 @@ "KD8GVO", "KD8LYB", "KD9IAH", + "KD9ISN", "KD9TEZ", "KE0JSB", "KE0KIE", @@ -29380,6 +30129,7 @@ "KE7UV", "KE7UW", "KE8QB", + "KF0FMQ", "KF4DWA", "KF4FQR", "KF4IBW", @@ -29439,6 +30189,7 @@ "KG6IER", "KG6IGY", "KG6JJP", + "KG6JSH", "KG6LFX", "KG6MLA", "KG6MZJ", @@ -29559,11 +30310,11 @@ "KL7TN/P", "KL7UB", "KL7XT", - "KM4FPS", "KM4IP", "KM6AW", "KM6HPE", "KM6IK", + "KM6NFS", "KM6RWE", "KM6UVP", "KN4KYO", @@ -29575,6 +30326,7 @@ "KO4BNK", "KO4LCM", "KO4LNN", + "KO4ZYO", "KO6KW", "KO6QT", "KQ6CD", @@ -29583,6 +30335,7 @@ "KU4OY", "KW4JC", "KW6CR", + "KX4ES", "KX6RTG", "KY1I", "KZ6T", @@ -29594,11 +30347,9 @@ "N1CBF", "N1CFD", "N1IDP", - "N1SHV", "N1TLE", "N1VOP", "N1YLH", - "N2KJU", "N2LTL", "N2RWX", "N3BQY", @@ -29614,6 +30365,7 @@ "N4ZIW", "N5IWF", "N5JKJ", + "N6ABW", "N6EQZ", "N6GOZ", "N6IKX", @@ -30687,15 +31439,21 @@ "RA4LW/2", "RC18KA", "RD22FU", + "RD2F", "RD3FG/2", + "RG2F", "RJ22DX", + "RK2F", "RK30FO", "RK3QS/2", + "RL2F", "RL8C/2", "RM9I/2", "RM9IX/2", "RN1B/2", + "RN2F", "RN3GM/2", + "RO2F", "RP2F", "RP2K", "RP70KB", @@ -30710,7 +31468,10 @@ "RP76GC", "RP76IGS", "RP76KB", + "RQ2K", + "RT2F", "RT9T/2", + "RU2F", "RU3FS/2", "RU5A/2", "RU5D/2", @@ -30721,6 +31482,7 @@ "RV3UK/2", "RV60YG", "RV9WZ/2", + "RW2F", "RW9QA/2", "RY1AAA/2", "RZ3FA/2", @@ -32942,6 +33704,7 @@ "VI103WIA", "VI5RAS/6", "VI5RAS/8", + "VI75G", "VI90ANZAC", "VI90IARU", "VK100WIA", @@ -33862,6 +34625,7 @@ "AK1JA", "K0FRI", "K3AVS", + "K3WO", "K8RN", "KB5UAB", "KB9LQG", @@ -33987,9 +34751,7 @@ "confirmed_bands": {}, "worked_modes": {}, "confirmed_modes": {}, - "direct": [ - "VERSION" - ], + "direct": [], "prefixITU": {}, "prefixCQ": {}, "directITU": {}, @@ -34482,6 +35244,7 @@ "JD1/JD1BNA", "JD1/JD1YAB", "JD1/JE6XPF", + "JD1/JE7IZM", "JD1/JF3CTR", "JD1/JF7MTO", "JD1/JF8HIQ", @@ -34501,6 +35264,7 @@ "JD1YAA", "JD1YAB/JD1", "JD1YBJ", + "JE7IZM/JD1", "JF3CTR/JD1", "JF7MTO/JD1", "JF8HIQ/JD1", @@ -34964,6 +35728,7 @@ "VK2CA/9", "VK2FBBB/9", "VK2HQ/9", + "VK2NOW/9", "VK2XSE/9", "VK3CBV/9", "VK3GK/9", @@ -35369,6 +36134,8 @@ "K4C/LH", "K4LCR", "K4PFH", + "K4VIC", + "K4W", "K5YJR", "K6BOT", "KA2ABJ", @@ -35399,6 +36166,7 @@ "KB2ALR", "KB2BVX", "KB2CIE", + "KB2FJY", "KB2KWB", "KB2MMX", "KB2NMT", @@ -35464,6 +36232,7 @@ "KD5PKH", "KD9GIZ", "KD9MRY", + "KD9PLJ", "KD9TWW", "KE0AYJ", "KE0GFK", @@ -35608,6 +36377,7 @@ "W6WAW", "W9NKE", "WA2RVA", + "WA6RIV", "WB2HMY", "WB5YOF", "WB7ADC", @@ -35784,6 +36554,7 @@ "confirmed_modes": {}, "direct": [ "4U0R", + "4U100QO", "4U10NPT", "4U18FIFA", "4U1A", @@ -36073,6 +36844,7 @@ "TO5M", "TO5SM", "TO5SM/P", + "TO5T", "TO9PL", "TO9W" ], @@ -36708,6 +37480,7 @@ "OH1MLZ/SA", "OH1NR/S", "OH1OD/S", + "OH1OD/SA", "OH1PP/S", "OH1PV/S", "OH1S/S", @@ -36834,6 +37607,7 @@ "OH6NR/LH", "OH6NZ/SA", "OH6OG/SA", + "OH6OS/S", "OH6OT/S", "OH6P/SA", "OH6PA/S", @@ -36858,6 +37632,7 @@ "OH8FCK/SA", "OH8KN/S", "OH8KN/SA", + "OH8UV/SA", "OH9AR/S", "OH9TM/S", "OH9TO/S", @@ -36879,6 +37654,7 @@ "OI5AY/SA", "OI5PRM/SA", "OI6AY/LH", + "OI6MPK/SA", "OI6SP/S", "OI6SP/SA", "OI7AX/S", @@ -36908,7 +37684,7 @@ ], "prefix": [ "IM0", - "IS", + "IS0", "IW0U", "IW0V", "IW0W", @@ -36951,6 +37727,7 @@ "II3EUDX", "IO0MMI", "IO0WRTC", + "IQ0AAI", "IQ0AG", "IQ0AG/P", "IQ0AH", @@ -36983,6 +37760,7 @@ "IQ0US", "IQ0UT", "IQ0XP", + "IR0A", "IR0EO", "IR0FOC", "IR0IDP", @@ -37767,6 +38545,7 @@ "SW8SW/LH", "SX100TSL/J", "SX2IMA/J", + "SX50AHH", "SX8DI/LH", "SX90IARU", "SX94MIKIS", @@ -38878,6 +39657,7 @@ "IQ8XS/CEU", "IQ8YZ/SH", "IR0BP/J", + "IS0CZG/1", "IS0FLV/8", "IT9AAK/0", "IT9AAK/1", @@ -38887,6 +39667,7 @@ "IT9AAK/7", "IT9AAK/8", "IT9ELM/0", + "IT9HJH/0", "IT9PQJ/0", "IT9RGY/4", "IU0FSC/LH", @@ -39913,6 +40694,7 @@ "GB8BRM", "GB8DS", "GB8EGT", + "GB8ELF", "GB8ERN", "GB8GLM", "GB8HRH", @@ -40946,7 +41728,6 @@ "2O0IMP", "2O0IOB", "2O0IVG", - "2O0LIM", "2O0LJM", "2O0TOK", "2O1MIC", @@ -41079,6 +41860,7 @@ "GB0SFM", "GB0SHP", "GB0SI", + "GB0SIM", "GB0SJR", "GB0SK", "GB0SKG", @@ -41340,7 +42122,6 @@ "GB8CSL", "GB8DX", "GB8FSG", - "GB8KW", "GB8ROC", "GB8RU", "GB8RUM", @@ -42161,12 +42942,14 @@ "EA8BFH/4", "EA8BFH/5", "EA8BY/4", + "EA8CHC/7", "EA8CWF/5", "EA8CZT/1", "EA8FC/1", "EA8RV/P", "EA8TL/3", "EA9AA/7", + "EA9AZ/5", "EA9BLJ/5", "EA9CD/1", "EA9CI/1", @@ -42214,6 +42997,7 @@ "EG1LWN/LH", "EG1TDH/LH", "EG5FOM/LH", + "EG80NT", "EG8AOP/4", "EG90IARU", "EG90IARU/1", @@ -42533,6 +43317,8 @@ "KD4CDL", "KD4SGB", "KD5QJN", + "KD6SAE", + "KD6SIY", "KD6VXI", "KE3QL", "KF2HC", @@ -42564,9 +43350,12 @@ "KV4IH", "KV4JC", "KV4KW", + "KW2G", "N1TKK", "N1VKI", + "N2JVO", "N4QXL", + "NN0Y", "W0AIH/KV4", "W0YNY", "W2AZK", @@ -44237,6 +45026,7 @@ "AL5A", "AL5B", "AL5ET", + "AL5IN", "AL5J", "AL5M", "AL5O", @@ -44322,7 +45112,6 @@ "AL7HW/4", "AL7HY", "AL7IC", - "AL7IG", "AL7IH", "AL7II/5", "AL7II/9", @@ -44353,6 +45142,7 @@ "AL7L/5", "AL7L/6", "AL7L/7", + "AL7LB", "AL7LH", "AL7LI", "AL7LJ", @@ -44375,6 +45165,7 @@ "AL7NY", "AL7NZ", "AL7O/0", + "AL7OA", "AL7OE", "AL7OG", "AL7OK", @@ -44414,6 +45205,7 @@ "AL7RS", "AL7RT", "AL7RT/7", + "AL7T", "AL7V", "AL7W", "AL7Z", @@ -44610,7 +45402,6 @@ "KA1S", "KA1UIK", "KA2USF", - "KA2ZSD", "KA3JFE", "KA3JJY", "KA3PSY", @@ -44641,6 +45432,7 @@ "KB1GDR", "KB1IEV", "KB1IVD", + "KB1KAC", "KB1KYH", "KB1NDE", "KB1NFC", @@ -44652,6 +45444,7 @@ "KB1UBP", "KB2AVB/LH", "KB2LCQ", + "KB2MRY", "KB2RUZ", "KB2YPX", "KB3CQ", @@ -44660,6 +45453,7 @@ "KB3HXI", "KB3NHB", "KB3QBF", + "KB3WAV", "KB4DX", "KB5DNY", "KB5WPI", @@ -44728,9 +45522,12 @@ "KC5YOB", "KC5ZN", "KC6AA", + "KC6CBB", "KC6GPY", "KC6PBK", "KC6TNI", + "KC6WNW", + "KC6WOB", "KC6YKD", "KC7AFA", "KC7AFC", @@ -44844,7 +45641,6 @@ "KE6CQE", "KE6CVL", "KE6DUG", - "KE6FNQ", "KE6MKW", "KE6VNI", "KE7DFK", @@ -44975,6 +45771,7 @@ "KH0X", "KH0XD", "KH0XO", + "KH0YT", "KH0ZZ", "KH2AB", "KH2AI", @@ -45016,6 +45813,7 @@ "KH2G", "KH2GG", "KH2GM", + "KH2GN", "KH2GUM/P", "KH2H", "KH2HB", @@ -45164,6 +45962,7 @@ "KH6IA", "KH6ICQ", "KH6IDF", + "KH6IHB", "KH6II", "KH6IK", "KH6IKC", @@ -45245,8 +46044,9 @@ "KH6M/4", "KH6M/M", "KH6MB/5", - "KH6ME", "KH6MF", + "KH6MI", + "KH6MJ", "KH6MT", "KH6MT/4", "KH6MV", @@ -45354,6 +46154,7 @@ "KH7CU", "KH7CZ", "KH7DA", + "KH7DA/4", "KH7DK", "KH7DM", "KH7DR", @@ -45434,6 +46235,7 @@ "KH7WW", "KH7WW/7", "KH7WX", + "KH7X", "KH7X/7", "KH7XS/4", "KH7XT", @@ -45469,6 +46271,7 @@ "KI0HZ", "KI4ASQ", "KI4FHG", + "KI4IGB", "KI4IPI", "KI4MGS", "KI4VAK", @@ -45561,6 +46364,7 @@ "KL0PM", "KL0PP", "KL0QD", + "KL0QS", "KL0RA", "KL0RN", "KL0S", @@ -45637,6 +46441,7 @@ "KL1JF", "KL1JS", "KL1K", + "KL1KJ", "KL1KM", "KL1KP", "KL1KU", @@ -45827,6 +46632,7 @@ "KL3HZ", "KL3IA", "KL3IC", + "KL3IG", "KL3II", "KL3IM", "KL3IO", @@ -45864,6 +46670,7 @@ "KL3OQ", "KL3PD", "KL3PG", + "KL3PP", "KL3PV", "KL3QS", "KL3RA", @@ -45903,6 +46710,7 @@ "KL4JQ", "KL4KA", "KL4KF", + "KL4LJ", "KL4LS", "KL4LV", "KL4NE", @@ -45910,6 +46718,7 @@ "KL4NQ", "KL4NX", "KL4NZ", + "KL4OG", "KL4PQ", "KL4QG", "KL4QJ", @@ -45927,6 +46736,7 @@ "KL4XR", "KL4YFD", "KL5A", + "KL5AY", "KL5BF", "KL5CD", "KL5CS", @@ -45978,6 +46788,7 @@ "KL7CPO", "KL7CR", "KL7CT", + "KL7CVW", "KL7CW/6", "KL7CX", "KL7CY", @@ -46007,6 +46818,7 @@ "KL7EFL", "KL7EH", "KL7EIN", + "KL7ELD", "KL7EMH", "KL7EMH/M", "KL7EP", @@ -46145,6 +46957,7 @@ "KL7JIE", "KL7JIJ", "KL7JIM", + "KL7JIQ", "KL7JIU", "KL7JJE", "KL7JJN", @@ -46181,6 +46994,7 @@ "KL7MF", "KL7MF/6", "KL7MF/M", + "KL7MG", "KL7MH", "KL7MJ", "KL7ML", @@ -46239,6 +47053,7 @@ "KL7RF", "KL7RF/8", "KL7RH", + "KL7RI", "KL7RK", "KL7RM", "KL7RN", @@ -46276,11 +47091,13 @@ "KL7VL", "KL7VN", "KL7VO", + "KL7VP", "KL7VQ", "KL7VU", "KL7VU/6", "KL7WA", "KL7WC", + "KL7WI", "KL7WM", "KL7WN", "KL7WP", @@ -46321,6 +47138,7 @@ "KL9PC", "KM1CC/IMD", "KM4AKA", + "KM4FPS", "KM6BI", "KM6BOQ", "KM6EPQ", @@ -46384,6 +47202,7 @@ "KP4AK/2", "KP4AKB", "KP4AMC", + "KP4AMG", "KP4AMZ", "KP4AOD", "KP4AOD/4", @@ -46446,6 +47265,7 @@ "KP4FFO", "KP4FFW", "KP4FGI", + "KP4FHA", "KP4FIR", "KP4FJE", "KP4FLP", @@ -46540,6 +47360,7 @@ "KP4TR", "KP4UB", "KP4UFO", + "KP4UK", "KP4USA", "KP4UV", "KP4UZ", @@ -46645,6 +47466,7 @@ "N1KNK", "N1MIG", "N1MXB", + "N1SHV", "N1TEE", "N1TTX", "N1TV", @@ -46751,6 +47573,7 @@ "N7CLW", "N7DF", "N7DQ", + "N7DUD", "N7EDQ", "N7EG", "N7HRO", @@ -46778,6 +47601,7 @@ "N8KIE/M", "N8MR/LH", "N8S", + "N8V", "N8Z", "N8ZPO", "N9CDQ", @@ -46965,9 +47789,11 @@ "NH7NW", "NH7OC", "NH7OI", + "NH7OL", "NH7P", "NH7PL", "NH7PM", + "NH7PT", "NH7PZ", "NH7Q", "NH7QV", @@ -47227,6 +48053,7 @@ "NP2JS", "NP2JV", "NP2KL", + "NP2KM", "NP2KS", "NP2KY", "NP2L", @@ -47341,7 +48168,6 @@ "NP4JQ", "NP4JU", "NP4JV/7", - "NP4KV", "NP4M", "NP4MV", "NP4ND", @@ -47354,6 +48180,7 @@ "NP4RZ", "NP4SY", "NP4TR", + "NP4WB", "NP4WT", "NP4XB", "NP4XE", @@ -47471,6 +48298,7 @@ "W6TUS", "W6UG", "W6UZC", + "W6W", "W6YM", "W7AJD", "W7APM", @@ -47492,6 +48320,7 @@ "W7OO", "W7PEA", "W7QB", + "W7RAZ", "W7RXZ", "W7TFS", "W7UC", @@ -47757,6 +48586,7 @@ "WH6EAA", "WH6EAE", "WH6EBA", + "WH6EBH", "WH6ECJ", "WH6ECO", "WH6ECQ", @@ -47806,6 +48636,7 @@ "WH6EUH", "WH6EVP", "WH6EWB", + "WH6EWC", "WH6EWE", "WH6EXQ", "WH6EZW", @@ -47853,6 +48684,7 @@ "WH6GHO", "WH6GID", "WH6GJD", + "WH6GJI", "WH6GKR", "WH6GL", "WH6GMZ", @@ -47862,6 +48694,7 @@ "WH6GSX", "WH6GSY", "WH6GTV", + "WH6GV", "WH6HA", "WH6HQ", "WH6IF", @@ -47919,6 +48752,7 @@ "WH6U", "WH6UO", "WH6USA", + "WH6UU", "WH6VM", "WH6VN", "WH6VR", @@ -47929,7 +48763,6 @@ "WH6XX", "WH6YH", "WH6YH/4", - "WH6YJ", "WH6YM", "WH6YT", "WH6YX", @@ -48081,6 +48914,7 @@ "WL7CAZ", "WL7CBF", "WL7CC", + "WL7CD", "WL7CEG", "WL7CES", "WL7CFM", @@ -48130,7 +48964,6 @@ "WL7E/4", "WL7EA", "WL7EKK", - "WL7FA", "WL7FC", "WL7FE", "WL7FI", @@ -48148,6 +48981,7 @@ "WL7HL", "WL7HP/7", "WL7I", + "WL7IM", "WL7IO", "WL7IP", "WL7IQ", @@ -48162,11 +48996,13 @@ "WL7K/5", "WL7K/7", "WL7K/M", + "WL7KM", "WL7L", "WL7LB", "WL7LK", "WL7LZ", "WL7LZ/M", + "WL7MA", "WL7ME", "WL7MQ/5", "WL7NP", @@ -48427,6 +49263,7 @@ "WP4KGI", "WP4KHN", "WP4KI", + "WP4KJR", "WP4KJV", "WP4KKX", "WP4KPK", @@ -49647,6 +50484,7 @@ "AL7OX": "07", "AL7QQ": "07", "AL7QQ/P": "07", + "AL7T": "07", "AL8P": "07", "AL8Q": "07", "AL9DB": "07", @@ -49660,6 +50498,7 @@ "K0Z": "07", "K7CMK": "07", "K7DXT": "07", + "K7ZAR": "07", "K9AGI": "07", "KA0DIZ": "07", "KA3YIK": "07", @@ -49921,6 +50760,7 @@ "WL7RV": "07", "WL7S": "07", "WL7YM": "07", + "WL7YQ": "07", "WP2B/0": "07", "WP3QH": "07", "WP4BTQ": "07", @@ -49970,6 +50810,7 @@ "KB1CUU": "08", "KB1DUY": "08", "KB1NFC": "08", + "KB9ZUS": "08", "KC4AAG": "08", "KF5PWC": "08", "KF5UBP": "08", @@ -49978,7 +50819,6 @@ "KH2AK": "08", "KH2BA": "08", "KH2EH": "08", - "KH2MV": "08", "KH6GR": "08", "KH6HZ": "08", "KH6IKI": "08", @@ -50120,6 +50960,7 @@ "WL1R": "08", "WL7B": "08", "WL7CC": "08", + "WL7CD": "08", "WL7CUP": "08", "WL7CVD": "08", "WL7WO": "08", @@ -50187,6 +51028,7 @@ "KC2GVS": "08", "KC2UFO/LH": "08", "KC9FJE": "08", + "KD0MSD": "08", "KE2KL": "08", "KG6VCU": "08", "KH0XO": "08", @@ -50237,6 +51079,7 @@ "KP4I": "08", "KP4JDR": "08", "KP4JMP": "08", + "KP4UK": "08", "N0EK": "08", "N2A": "08", "N2AIR": "08", @@ -50360,13 +51203,13 @@ "K3TW/LH": "08", "K3UOC": "08", "KA1AFK": "08", - "KA2ZSD": "08", "KA3UNQ/LH": "08", "KB2RUZ": "08", "KB3DOV": "08", "KB3HXI": "08", "KB3NHB": "08", "KB3QBF": "08", + "KB3WAV": "08", "KB7ARS": "08", "KC4TIE/YL": "08", "KC7NHH": "08", @@ -50382,6 +51225,8 @@ "KH6ILR/3": "08", "KH6JGA": "08", "KH6LDO": "08", + "KH6MI": "08", + "KH6MJ": "08", "KH6PX": "08", "KH6RE": "08", "KH8CN": "08", @@ -50392,6 +51237,7 @@ "KL2BV": "08", "KL2UR": "08", "KL2XF": "08", + "KL3PP": "08", "KL4QG": "08", "KL7FD": "08", "KL7GLK/3": "08", @@ -50531,6 +51377,7 @@ "AC7N": "08", "AD4MM": "08", "AE4RM": "08", + "AG4WR": "08", "AH0AJ": "08", "AH0BV": "08", "AH0BZ": "08", @@ -50586,6 +51433,7 @@ "AL4U": "08", "AL4X": "08", "AL5A": "08", + "AL5IN": "08", "AL5O": "08", "AL7AL": "08", "AL7AM": "08", @@ -50655,6 +51503,7 @@ "KB1QCD": "08", "KB1QCE": "08", "KB1SHE": "08", + "KB2MRY": "08", "KB2YPX": "08", "KB3CQ": "08", "KB4DX": "08", @@ -50698,7 +51547,6 @@ "KE5WHU": "08", "KE5ZFH": "08", "KE6ATM": "08", - "KE6FNQ": "08", "KE6MKW": "08", "KF1O": "08", "KF4IZE": "08", @@ -50727,6 +51575,7 @@ "KH0G": "08", "KH0HR": "08", "KH0NI": "08", + "KH0YT": "08", "KH0ZZ": "08", "KH2D": "08", "KH2D/4": "08", @@ -50786,6 +51635,7 @@ "KH6WY": "08", "KH6XH": "08", "KH7DA": "08", + "KH7DA/4": "08", "KH7DM": "08", "KH7DY": "08", "KH7FC": "08", @@ -50838,6 +51688,7 @@ "KL1OK": "08", "KL1PA": "08", "KL1SS": "08", + "KL1XK": "08", "KL2A/4": "08", "KL2AK": "08", "KL2AP": "08", @@ -50875,6 +51726,7 @@ "KL4J": "08", "KL4NE": "08", "KL4T": "08", + "KL4WV": "08", "KL4XR": "08", "KL5X": "08", "KL5YJ": "08", @@ -50944,6 +51796,7 @@ "KP3SW": "08", "KP3U": "08", "KP4AD": "08", + "KP4AMG": "08", "KP4AOD": "08", "KP4AOD/4": "08", "KP4AWS": "08", @@ -51064,7 +51917,9 @@ "N0PQB": "08", "N0TJU": "08", "N0WGG": "08", + "N1CNQ": "08", "N1MXB": "08", + "N1SHV": "08", "N1TV": "08", "N1VCW": "08", "N3JUW": "08", @@ -51119,6 +51974,7 @@ "NH7FV": "08", "NH7OI": "08", "NH7P": "08", + "NH7PT": "08", "NH7T/4": "08", "NH7UN": "08", "NH7XJ": "08", @@ -51177,6 +52033,7 @@ "NP2JA": "08", "NP2JS": "08", "NP2JV": "08", + "NP2KM": "08", "NP2L": "08", "NP2LC": "08", "NP2MM": "08", @@ -51233,13 +52090,13 @@ "NP4J": "08", "NP4JL": "08", "NP4JU": "08", - "NP4KV": "08", "NP4M": "08", "NP4ND": "08", "NP4PF": "08", "NP4RJ": "08", "NP4SY": "08", "NP4TR": "08", + "NP4WB": "08", "NP4WT": "08", "NP4XB": "08", "NP4ZC": "08", @@ -51322,6 +52179,7 @@ "WH6GMZ": "08", "WH6GSX": "08", "WH6GSY": "08", + "WH6GV": "08", "WH6HA": "08", "WH6IF": "08", "WH6IZ": "08", @@ -51470,6 +52328,7 @@ "WP4KGI": "08", "WP4KHN": "08", "WP4KI": "08", + "WP4KJR": "08", "WP4KJV": "08", "WP4KPK": "08", "WP4KRZ": "08", @@ -51641,6 +52500,8 @@ "KC5SPG": "07", "KC5ZN": "07", "KC6PBK": "07", + "KC6WNW": "07", + "KC6WOB": "07", "KC7AFA": "07", "KC7AFC": "07", "KC7IFU": "07", @@ -51742,7 +52603,6 @@ "KL1UR": "07", "KL1WG": "07", "KL1WO": "07", - "KL1XK": "07", "KL1Y": "07", "KL1ZW": "07", "KL2A/5": "07", @@ -51774,6 +52634,7 @@ "KL3KI": "07", "KL3TB": "07", "KL4JQ": "07", + "KL4LJ": "07", "KL4LS": "07", "KL4QZ": "07", "KL4RA": "07", @@ -51818,6 +52679,7 @@ "KL7LY": "07", "KL7MA": "07", "KL7ME": "07", + "KL7MG": "07", "KL7ML": "07", "KL7NE": "07", "KL7NI": "07", @@ -51842,6 +52704,7 @@ "KP4CV": "07", "KP4DJT": "07", "KP4FF": "07", + "KP4FHA": "07", "KP4GMC": "07", "KP4JE": "07", "KP4JG": "07", @@ -52039,7 +52902,9 @@ "WL7FI": "07", "WL7FT": "07", "WL7FT/5": "07", + "WL7IM": "07", "WL7K/5": "07", + "WL7KM": "07", "WL7ME": "07", "WL7MQ/5": "07", "WL7OP": "07", @@ -52137,6 +53002,7 @@ "AL7GS": "06", "AL7HO/6": "06", "AL7L/6": "06", + "AL7OA": "06", "AL7OG": "06", "AL7PS": "06", "K1TF": "06", @@ -52167,6 +53033,7 @@ "K9JOS": "06", "KA6RUZ": "06", "KB1IVD": "06", + "KB1KAC": "06", "KB1NDE": "06", "KB1UAG": "06", "KB1UBP": "06", @@ -52177,6 +53044,7 @@ "KC5JNZ": "06", "KC5RDQ": "06", "KC6AA": "06", + "KC6CBB": "06", "KC7NRY": "06", "KC8MGM": "06", "KD3V": "06", @@ -52516,6 +53384,7 @@ "W6TFD": "06", "W6TN": "06", "W6UG": "06", + "W6W": "06", "W6YM": "06", "W7IV": "06", "W7IV/M": "06", @@ -52591,11 +53460,11 @@ "WH6TK": "06", "WH6TT": "06", "WH6USA": "06", + "WH6UU": "06", "WH6VM": "06", "WH6VN": "06", "WH6XI": "06", "WH6XX": "06", - "WH6YJ": "06", "WH7DG": "06", "WH7DH": "06", "WH7HQ": "06", @@ -52630,7 +53499,6 @@ "WL7SE": "06", "WL7TG": "06", "WL7WL": "06", - "WL7YQ": "06", "WL7YQ/6": "06", "WP2AAT": "06", "WP2Q": "06", @@ -52658,7 +53526,6 @@ "AC7LR": "06", "AE7AE": "06", "AF7DX": "06", - "AG4WR": "06", "AH0AB": "06", "AH0CC": "06", "AH0CH": "06", @@ -52767,7 +53634,6 @@ "AL7HJ": "06", "AL7HS": "06", "AL7HY": "06", - "AL7IG": "06", "AL7IT": "06", "AL7JF": "06", "AL7JR/7": "06", @@ -52783,6 +53649,7 @@ "AL7KL": "06", "AL7KV": "06", "AL7L/7": "06", + "AL7LB": "06", "AL7LI": "06", "AL7LL": "06", "AL7MH": "06", @@ -52839,7 +53706,6 @@ "K7TAB": "06", "K7V": "06", "K7Y": "06", - "K7ZAR": "06", "K7ZOA": "06", "K9WUV": "06", "KA3JJY": "06", @@ -52919,7 +53785,9 @@ "KH2DX": "06", "KH2G": "06", "KH2GG": "06", + "KH2GN": "06", "KH2JA": "06", + "KH2MV": "06", "KH2QH": "06", "KH2RK": "06", "KH2SK": "06", @@ -52958,6 +53826,7 @@ "KH6HWK": "06", "KH6IA": "06", "KH6ICQ": "06", + "KH6IHB": "06", "KH6IKC": "06", "KH6IMN": "06", "KH6IQX": "06", @@ -52976,7 +53845,6 @@ "KH6JUQ": "06", "KH6KS": "06", "KH6LEM": "06", - "KH6ME": "06", "KH6MF": "06", "KH6NA": "06", "KH6ND": "06", @@ -53035,6 +53903,7 @@ "KH7WW": "06", "KH7WW/7": "06", "KH7WX": "06", + "KH7X": "06", "KH7X/7": "06", "KH7YD": "06", "KH7YD/7": "06", @@ -53078,6 +53947,7 @@ "KL0PC": "06", "KL0PP": "06", "KL0QD": "06", + "KL0QS": "06", "KL0RA": "06", "KL0SA": "06", "KL0SZ": "06", @@ -53190,6 +54060,7 @@ "KL4KF": "06", "KL4NG": "06", "KL4NX": "06", + "KL4OG": "06", "KL4QJ": "06", "KL4RKH": "06", "KL4RY": "06", @@ -53214,6 +54085,7 @@ "KL7CPO": "06", "KL7CR": "06", "KL7CT": "06", + "KL7CVW": "06", "KL7CY": "06", "KL7DC": "06", "KL7DF": "06", @@ -53228,6 +54100,7 @@ "KL7EFL": "06", "KL7EH": "06", "KL7EIN": "06", + "KL7ELD": "06", "KL7EU": "06", "KL7FDQ": "06", "KL7FDQ/7": "06", @@ -53276,6 +54149,7 @@ "KL7JEA": "06", "KL7JES": "06", "KL7JIJ": "06", + "KL7JIQ": "06", "KL7JJE": "06", "KL7JKS": "06", "KL7JKV": "06", @@ -53312,6 +54186,7 @@ "KL7QX": "06", "KL7R": "06", "KL7RC": "06", + "KL7RI": "06", "KL7RK": "06", "KL7RM": "06", "KL7RN": "06", @@ -53359,7 +54234,6 @@ "N0WIX": "06", "N0WIZ": "06", "N1ABQ": "06", - "N1CNQ": "06", "N1CVP": "06", "N1TEE": "06", "N2OW": "06", @@ -53439,6 +54313,7 @@ "NH7ND": "06", "NH7NJ/7": "06", "NH7OC": "06", + "NH7OL": "06", "NH7PL": "06", "NH7Q": "06", "NH7RS": "06", @@ -53539,6 +54414,7 @@ "W7KWS": "06", "W7OO": "06", "W7PEA": "06", + "W7RAZ": "06", "W7RXZ": "06", "W7TFS": "06", "W7UC": "06", @@ -53606,6 +54482,7 @@ "WH6DTH": "06", "WH6DXJ": "06", "WH6DXK": "06", + "WH6EBH": "06", "WH6EDP": "06", "WH6EEC": "06", "WH6EEG": "06", @@ -53617,6 +54494,7 @@ "WH6EQH": "06", "WH6ESS": "06", "WH6ETO": "06", + "WH6EWC": "06", "WH6EWE": "06", "WH6FCT": "06", "WH6FEU": "06", @@ -53635,6 +54513,7 @@ "WH6GDA": "06", "WH6GEV": "06", "WH6GID": "06", + "WH6GJI": "06", "WH6GQ": "06", "WH6HQ": "06", "WH6OL": "06", @@ -53715,7 +54594,6 @@ "WL7CTC": "06", "WL7CTE": "06", "WL7DD": "06", - "WL7FA": "06", "WL7FR": "06", "WL7FU": "06", "WL7H": "06", @@ -53731,6 +54609,7 @@ "WL7K/M": "06", "WL7LB": "06", "WL7LK": "06", + "WL7MA": "06", "WL7OA": "06", "WL7P": "06", "WL7PJ": "06", @@ -53840,6 +54719,8 @@ "KL7RF": "08", "KL7RF/8": "08", "KL7SW": "08", + "KL7VP": "08", + "KL7WI": "08", "KL8X": "08", "KL9A/8": "08", "KP2RF": "08", @@ -53858,6 +54739,7 @@ "N8KIE/M": "08", "N8MR/LH": "08", "N8S": "08", + "N8V": "08", "N8Z": "08", "NH6CN": "08", "NH6CN/8": "08", @@ -53973,6 +54855,7 @@ "KL2UY": "08", "KL2YD": "08", "KL2ZL": "08", + "KL3IG": "08", "KL3LP": "08", "KL4CX": "08", "KL7AL": "08", @@ -54108,14 +54991,12 @@ "K8KH": "08", "KA3PSY": "08", "KA5QZS": "08", - "KB9ZUS": "08", "KC0BPX": "08", "KC4AB": "08", "KC4AF": "08", "KC4KOT": "08", "KC4NVL": "08", "KC5SLA": "08", - "KD0MSD": "08", "KD4ZXT": "08", "KE4ITP": "08", "KF6FAY": "08", @@ -54140,6 +55021,7 @@ "KH6SKY/4": "08", "KH7JM": "08", "KH7UB": "08", + "KI4IGB": "08", "KI6PS": "08", "KJ6HF": "08", "KK9W": "08", @@ -54172,7 +55054,7 @@ "KL3SA": "08", "KL4EJ": "08", "KL4KA": "08", - "KL4WV": "08", + "KL5AY": "08", "KL5CD": "08", "KL5R": "08", "KL7DT/4": "08", @@ -54185,6 +55067,7 @@ "KL7WW": "08", "KL7YT": "08", "KL9MEK": "08", + "KM4FPS": "08", "KN4CCY": "08", "KP2CO": "08", "KP4TOM": "08", @@ -54200,6 +55083,7 @@ "N4CM": "08", "N4EO": "08", "N6DXW": "08", + "N7DUD": "08", "NH2E": "08", "NH2MS": "08", "NH6BD": "08", @@ -54273,6 +55157,7 @@ "KL0RN": "07", "KL0TF": "07", "KL1HE": "07", + "KL1KJ": "07", "KL1MW": "07", "KL1TV": "07", "KL2NZ": "07", @@ -54354,6 +55239,7 @@ "AL7OX": "04", "AL7QQ": "04", "AL7QQ/P": "04", + "AL7T": "04", "AL8P": "04", "AL8Q": "04", "AL9DB": "04", @@ -54367,6 +55253,7 @@ "K0Z": "04", "K7CMK": "04", "K7DXT": "04", + "K7ZAR": "04", "K9AGI": "04", "KA0DIZ": "04", "KA3YIK": "04", @@ -54628,6 +55515,7 @@ "WL7RV": "04", "WL7S": "04", "WL7YM": "04", + "WL7YQ": "04", "WP2B/0": "04", "WP3QH": "04", "WP4BTQ": "04", @@ -54677,6 +55565,7 @@ "KB1CUU": "05", "KB1DUY": "05", "KB1NFC": "05", + "KB9ZUS": "05", "KC4AAG": "05", "KF5PWC": "05", "KF5UBP": "05", @@ -54685,7 +55574,6 @@ "KH2AK": "05", "KH2BA": "05", "KH2EH": "05", - "KH2MV": "05", "KH6GR": "05", "KH6HZ": "05", "KH6IKI": "05", @@ -54827,6 +55715,7 @@ "WL1R": "05", "WL7B": "05", "WL7CC": "05", + "WL7CD": "05", "WL7CUP": "05", "WL7CVD": "05", "WL7WO": "05", @@ -54894,6 +55783,7 @@ "KC2GVS": "05", "KC2UFO/LH": "05", "KC9FJE": "05", + "KD0MSD": "05", "KE2KL": "05", "KG6VCU": "05", "KH0XO": "05", @@ -54944,6 +55834,7 @@ "KP4I": "05", "KP4JDR": "05", "KP4JMP": "05", + "KP4UK": "05", "N0EK": "05", "N2A": "05", "N2AIR": "05", @@ -55067,13 +55958,13 @@ "K3TW/LH": "05", "K3UOC": "05", "KA1AFK": "05", - "KA2ZSD": "05", "KA3UNQ/LH": "05", "KB2RUZ": "05", "KB3DOV": "05", "KB3HXI": "05", "KB3NHB": "05", "KB3QBF": "05", + "KB3WAV": "05", "KB7ARS": "05", "KC4TIE/YL": "05", "KC7NHH": "05", @@ -55089,6 +55980,8 @@ "KH6ILR/3": "05", "KH6JGA": "05", "KH6LDO": "05", + "KH6MI": "05", + "KH6MJ": "05", "KH6PX": "05", "KH6RE": "05", "KH8CN": "05", @@ -55099,6 +55992,7 @@ "KL2BV": "05", "KL2UR": "05", "KL2XF": "05", + "KL3PP": "05", "KL4QG": "05", "KL7FD": "05", "KL7GLK/3": "05", @@ -55238,6 +56132,7 @@ "AC7N": "05", "AD4MM": "05", "AE4RM": "05", + "AG4WR": "05", "AH0AJ": "05", "AH0BV": "05", "AH0BZ": "05", @@ -55293,6 +56188,7 @@ "AL4U": "05", "AL4X": "05", "AL5A": "05", + "AL5IN": "05", "AL5O": "05", "AL7AL": "05", "AL7AM": "05", @@ -55362,6 +56258,7 @@ "KB1QCD": "05", "KB1QCE": "05", "KB1SHE": "05", + "KB2MRY": "05", "KB2YPX": "05", "KB3CQ": "05", "KB4DX": "05", @@ -55405,7 +56302,6 @@ "KE5WHU": "05", "KE5ZFH": "05", "KE6ATM": "05", - "KE6FNQ": "05", "KE6MKW": "05", "KF1O": "05", "KF4IZE": "05", @@ -55434,6 +56330,7 @@ "KH0G": "05", "KH0HR": "05", "KH0NI": "05", + "KH0YT": "05", "KH0ZZ": "05", "KH2D": "05", "KH2D/4": "05", @@ -55493,6 +56390,7 @@ "KH6WY": "05", "KH6XH": "05", "KH7DA": "05", + "KH7DA/4": "05", "KH7DM": "05", "KH7DY": "05", "KH7FC": "05", @@ -55545,6 +56443,7 @@ "KL1OK": "05", "KL1PA": "05", "KL1SS": "05", + "KL1XK": "05", "KL2A/4": "05", "KL2AK": "05", "KL2AP": "05", @@ -55582,6 +56481,7 @@ "KL4J": "05", "KL4NE": "05", "KL4T": "05", + "KL4WV": "05", "KL4XR": "05", "KL5X": "05", "KL5YJ": "05", @@ -55651,6 +56551,7 @@ "KP3SW": "05", "KP3U": "05", "KP4AD": "05", + "KP4AMG": "05", "KP4AOD": "05", "KP4AOD/4": "05", "KP4AWS": "05", @@ -55771,7 +56672,9 @@ "N0PQB": "05", "N0TJU": "05", "N0WGG": "05", + "N1CNQ": "05", "N1MXB": "05", + "N1SHV": "05", "N1TV": "05", "N1VCW": "05", "N3JUW": "05", @@ -55826,6 +56729,7 @@ "NH7FV": "05", "NH7OI": "05", "NH7P": "05", + "NH7PT": "05", "NH7T/4": "05", "NH7UN": "05", "NH7XJ": "05", @@ -55884,6 +56788,7 @@ "NP2JA": "05", "NP2JS": "05", "NP2JV": "05", + "NP2KM": "05", "NP2L": "05", "NP2LC": "05", "NP2MM": "05", @@ -55940,13 +56845,13 @@ "NP4J": "05", "NP4JL": "05", "NP4JU": "05", - "NP4KV": "05", "NP4M": "05", "NP4ND": "05", "NP4PF": "05", "NP4RJ": "05", "NP4SY": "05", "NP4TR": "05", + "NP4WB": "05", "NP4WT": "05", "NP4XB": "05", "NP4ZC": "05", @@ -56029,6 +56934,7 @@ "WH6GMZ": "05", "WH6GSX": "05", "WH6GSY": "05", + "WH6GV": "05", "WH6HA": "05", "WH6IF": "05", "WH6IZ": "05", @@ -56177,6 +57083,7 @@ "WP4KGI": "05", "WP4KHN": "05", "WP4KI": "05", + "WP4KJR": "05", "WP4KJV": "05", "WP4KPK": "05", "WP4KRZ": "05", @@ -56348,6 +57255,8 @@ "KC5SPG": "04", "KC5ZN": "04", "KC6PBK": "04", + "KC6WNW": "04", + "KC6WOB": "04", "KC7AFA": "04", "KC7AFC": "04", "KC7IFU": "04", @@ -56449,7 +57358,6 @@ "KL1UR": "04", "KL1WG": "04", "KL1WO": "04", - "KL1XK": "04", "KL1Y": "04", "KL1ZW": "04", "KL2A/5": "04", @@ -56481,6 +57389,7 @@ "KL3KI": "04", "KL3TB": "04", "KL4JQ": "04", + "KL4LJ": "04", "KL4LS": "04", "KL4QZ": "04", "KL4RA": "04", @@ -56525,6 +57434,7 @@ "KL7LY": "04", "KL7MA": "04", "KL7ME": "04", + "KL7MG": "04", "KL7ML": "04", "KL7NE": "04", "KL7NI": "04", @@ -56549,6 +57459,7 @@ "KP4CV": "04", "KP4DJT": "04", "KP4FF": "04", + "KP4FHA": "04", "KP4GMC": "04", "KP4JE": "04", "KP4JG": "04", @@ -56746,7 +57657,9 @@ "WL7FI": "04", "WL7FT": "04", "WL7FT/5": "04", + "WL7IM": "04", "WL7K/5": "04", + "WL7KM": "04", "WL7ME": "04", "WL7MQ/5": "04", "WL7OP": "04", @@ -56844,6 +57757,7 @@ "AL7GS": "03", "AL7HO/6": "03", "AL7L/6": "03", + "AL7OA": "03", "AL7OG": "03", "AL7PS": "03", "K1TF": "03", @@ -56874,6 +57788,7 @@ "K9JOS": "03", "KA6RUZ": "03", "KB1IVD": "03", + "KB1KAC": "03", "KB1NDE": "03", "KB1UAG": "03", "KB1UBP": "03", @@ -56884,6 +57799,7 @@ "KC5JNZ": "03", "KC5RDQ": "03", "KC6AA": "03", + "KC6CBB": "03", "KC7NRY": "03", "KC8MGM": "03", "KD3V": "03", @@ -57223,6 +58139,7 @@ "W6TFD": "03", "W6TN": "03", "W6UG": "03", + "W6W": "03", "W6YM": "03", "W7IV": "03", "W7IV/M": "03", @@ -57298,11 +58215,11 @@ "WH6TK": "03", "WH6TT": "03", "WH6USA": "03", + "WH6UU": "03", "WH6VM": "03", "WH6VN": "03", "WH6XI": "03", "WH6XX": "03", - "WH6YJ": "03", "WH7DG": "03", "WH7DH": "03", "WH7HQ": "03", @@ -57337,7 +58254,6 @@ "WL7SE": "03", "WL7TG": "03", "WL7WL": "03", - "WL7YQ": "03", "WL7YQ/6": "03", "WP2AAT": "03", "WP2Q": "03", @@ -57365,7 +58281,6 @@ "AC7LR": "03", "AE7AE": "03", "AF7DX": "03", - "AG4WR": "03", "AH0AB": "03", "AH0CC": "03", "AH0CH": "03", @@ -57474,7 +58389,6 @@ "AL7HJ": "03", "AL7HS": "03", "AL7HY": "03", - "AL7IG": "03", "AL7IT": "03", "AL7JF": "03", "AL7JR/7": "03", @@ -57490,6 +58404,7 @@ "AL7KL": "03", "AL7KV": "03", "AL7L/7": "03", + "AL7LB": "03", "AL7LI": "03", "AL7LL": "03", "AL7MH": "03", @@ -57546,7 +58461,6 @@ "K7TAB": "03", "K7V": "03", "K7Y": "03", - "K7ZAR": "03", "K7ZOA": "03", "K9WUV": "03", "KA3JJY": "03", @@ -57626,7 +58540,9 @@ "KH2DX": "03", "KH2G": "03", "KH2GG": "03", + "KH2GN": "03", "KH2JA": "03", + "KH2MV": "03", "KH2QH": "03", "KH2RK": "03", "KH2SK": "03", @@ -57665,6 +58581,7 @@ "KH6HWK": "03", "KH6IA": "03", "KH6ICQ": "03", + "KH6IHB": "03", "KH6IKC": "03", "KH6IMN": "03", "KH6IQX": "03", @@ -57683,7 +58600,6 @@ "KH6JUQ": "03", "KH6KS": "03", "KH6LEM": "03", - "KH6ME": "03", "KH6MF": "03", "KH6NA": "03", "KH6ND": "03", @@ -57742,6 +58658,7 @@ "KH7WW": "03", "KH7WW/7": "03", "KH7WX": "03", + "KH7X": "03", "KH7X/7": "03", "KH7YD": "03", "KH7YD/7": "03", @@ -57785,6 +58702,7 @@ "KL0PC": "03", "KL0PP": "03", "KL0QD": "03", + "KL0QS": "03", "KL0RA": "03", "KL0SA": "03", "KL0SZ": "03", @@ -57897,6 +58815,7 @@ "KL4KF": "03", "KL4NG": "03", "KL4NX": "03", + "KL4OG": "03", "KL4QJ": "03", "KL4RKH": "03", "KL4RY": "03", @@ -57921,6 +58840,7 @@ "KL7CPO": "03", "KL7CR": "03", "KL7CT": "03", + "KL7CVW": "03", "KL7CY": "03", "KL7DC": "03", "KL7DF": "03", @@ -57935,6 +58855,7 @@ "KL7EFL": "03", "KL7EH": "03", "KL7EIN": "03", + "KL7ELD": "03", "KL7EU": "03", "KL7FDQ": "03", "KL7FDQ/7": "03", @@ -57983,6 +58904,7 @@ "KL7JEA": "03", "KL7JES": "03", "KL7JIJ": "03", + "KL7JIQ": "03", "KL7JJE": "03", "KL7JKS": "03", "KL7JKV": "03", @@ -58019,6 +58941,7 @@ "KL7QX": "03", "KL7R": "03", "KL7RC": "03", + "KL7RI": "03", "KL7RK": "03", "KL7RM": "03", "KL7RN": "03", @@ -58066,7 +58989,6 @@ "N0WIX": "03", "N0WIZ": "03", "N1ABQ": "03", - "N1CNQ": "03", "N1CVP": "03", "N1TEE": "03", "N2OW": "03", @@ -58146,6 +59068,7 @@ "NH7ND": "03", "NH7NJ/7": "03", "NH7OC": "03", + "NH7OL": "03", "NH7PL": "03", "NH7Q": "03", "NH7RS": "03", @@ -58246,6 +59169,7 @@ "W7KWS": "03", "W7OO": "03", "W7PEA": "03", + "W7RAZ": "03", "W7RXZ": "03", "W7TFS": "03", "W7UC": "03", @@ -58313,6 +59237,7 @@ "WH6DTH": "03", "WH6DXJ": "03", "WH6DXK": "03", + "WH6EBH": "03", "WH6EDP": "03", "WH6EEC": "03", "WH6EEG": "03", @@ -58324,6 +59249,7 @@ "WH6EQH": "03", "WH6ESS": "03", "WH6ETO": "03", + "WH6EWC": "03", "WH6EWE": "03", "WH6FCT": "03", "WH6FEU": "03", @@ -58342,6 +59268,7 @@ "WH6GDA": "03", "WH6GEV": "03", "WH6GID": "03", + "WH6GJI": "03", "WH6GQ": "03", "WH6HQ": "03", "WH6OL": "03", @@ -58422,7 +59349,6 @@ "WL7CTC": "03", "WL7CTE": "03", "WL7DD": "03", - "WL7FA": "03", "WL7FR": "03", "WL7FU": "03", "WL7H": "03", @@ -58438,6 +59364,7 @@ "WL7K/M": "03", "WL7LB": "03", "WL7LK": "03", + "WL7MA": "03", "WL7OA": "03", "WL7P": "03", "WL7PJ": "03", @@ -58547,6 +59474,8 @@ "KL7RF": "04", "KL7RF/8": "04", "KL7SW": "04", + "KL7VP": "04", + "KL7WI": "04", "KL8X": "04", "KL9A/8": "04", "KP2RF": "04", @@ -58565,6 +59494,7 @@ "N8KIE/M": "04", "N8MR/LH": "04", "N8S": "04", + "N8V": "04", "N8Z": "04", "NH6CN": "04", "NH6CN/8": "04", @@ -58680,6 +59610,7 @@ "KL2UY": "04", "KL2YD": "04", "KL2ZL": "04", + "KL3IG": "04", "KL3LP": "04", "KL4CX": "04", "KL7AL": "04", @@ -58815,14 +59746,12 @@ "K8KH": "04", "KA3PSY": "04", "KA5QZS": "04", - "KB9ZUS": "04", "KC0BPX": "04", "KC4AB": "04", "KC4AF": "04", "KC4KOT": "04", "KC4NVL": "04", "KC5SLA": "04", - "KD0MSD": "04", "KD4ZXT": "04", "KE4ITP": "04", "KF6FAY": "04", @@ -58847,6 +59776,7 @@ "KH6SKY/4": "04", "KH7JM": "04", "KH7UB": "04", + "KI4IGB": "04", "KI6PS": "04", "KJ6HF": "04", "KK9W": "04", @@ -58879,7 +59809,7 @@ "KL3SA": "04", "KL4EJ": "04", "KL4KA": "04", - "KL4WV": "04", + "KL5AY": "04", "KL5CD": "04", "KL5R": "04", "KL7DT/4": "04", @@ -58892,6 +59822,7 @@ "KL7WW": "04", "KL7YT": "04", "KL9MEK": "04", + "KM4FPS": "04", "KN4CCY": "04", "KP2CO": "04", "KP4TOM": "04", @@ -58907,6 +59838,7 @@ "N4CM": "04", "N4EO": "04", "N6DXW": "04", + "N7DUD": "04", "NH2E": "04", "NH2MS": "04", "NH6BD": "04", @@ -58980,6 +59912,7 @@ "KL0RN": "04", "KL0TF": "04", "KL1HE": "04", + "KL1KJ": "04", "KL1MW": "04", "KL1TV": "04", "KL2NZ": "04", @@ -59511,6 +60444,7 @@ "GB2TTA", "GB2VK", "GB2WAA", + "GB2WFC", "GB2WHO", "GB2WIW", "GB2WNA", @@ -63968,6 +64902,7 @@ "BD7LPD/UT3GF", "BD7MQ/9", "BD9BI/0", + "BG0DKM/8", "BG0GE/9", "BG1KIY/0", "BG1LLB/0", @@ -63985,6 +64920,7 @@ "BT1OY/YL", "BY1BJ/1DX", "BY1CRA/WO22", + "BY1CRA/WRTC", "BY1PK/I1ZB", "BY1TTY/OD5LN", "BY1WXD/0", @@ -67422,6 +68358,7 @@ "B3CRA": "33", "BY7STC/F4CYZ": "43", "BA0AA/8": "43", + "BG0DKM/8": "43", "ON5TN/BY8AC": "43", "VK5GG/BA8MM": "43", "DL2JRM/BY8SKM": "43", @@ -70418,6 +71355,14 @@ "TA7KB/LH", "TA9J/LH", "TC0SV/LH", + "TC100AGE", + "TC100HQ", + "TC100OLD", + "TC100TA", + "TC100TC", + "TC100TR", + "TC100YEAR", + "TC10O", "TC2ELH/LH", "TC50TRAC/01A", "TC50TRAC/01K", @@ -70492,6 +71437,132 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ + "A6050Y/1", + "A6050Y/2", + "A6050Y/3", + "A6050Y/4", + "A6050Y/5", + "A6050Y/6", + "A6050Y/7", + "A6050Y/8", + "A6050Y/9", + "A60AAP/1", + "A60AAP/2", + "A60AAP/3", + "A60AAP/4", + "A60AAP/5", + "A60AAP/6", + "A60AAP/7", + "A60AAP/8", + "A60AAP/9", + "A60ARS/1", + "A60ARS/2", + "A60ARS/3", + "A60ARS/4", + "A60ARS/5", + "A60ARS/6", + "A60ARS/7", + "A60ARS/8", + "A60ARS/9", + "A60BHR/0", + "A60BHR/1", + "A60BHR/2", + "A60BHR/3", + "A60BHR/4", + "A60BHR/5", + "A60BHR/6", + "A60BHR/7", + "A60BHR/8", + "A60BHR/9", + "A60CH/0", + "A60CH/1", + "A60CH/2", + "A60CH/3", + "A60CH/4", + "A60CH/5", + "A60CH/6", + "A60CH/7", + "A60CH/8", + "A60CH/9", + "A60EMM/0", + "A60EMM/1", + "A60EMM/2", + "A60EMM/3", + "A60EMM/4", + "A60EMM/5", + "A60EMM/6", + "A60EMM/7", + "A60EMM/8", + "A60EMM/9", + "A60EXPO/0", + "A60EXPO/1", + "A60EXPO/2", + "A60EXPO/3", + "A60EXPO/4", + "A60EXPO/5", + "A60EXPO/6", + "A60EXPO/7", + "A60EXPO/8", + "A60EXPO/9", + "A60FD/0", + "A60FD/1", + "A60FD/2", + "A60FD/3", + "A60FD/4", + "A60FD/5", + "A60FD/6", + "A60FD/7", + "A60FD/8", + "A60FD/9", + "A60FIFA/0", + "A60FIFA/1", + "A60FIFA/2", + "A60FIFA/3", + "A60FIFA/4", + "A60FIFA/5", + "A60FIFA/6", + "A60FIFA/7", + "A60FIFA/8", + "A60FIFA/9", + "A60HF/0", + "A60HF/1", + "A60HF/2", + "A60HF/3", + "A60HF/4", + "A60HF/5", + "A60HF/6", + "A60HF/7", + "A60HF/8", + "A60HF/9", + "A60KWT/0", + "A60KWT/1", + "A60KWT/2", + "A60KWT/3", + "A60KWT/4", + "A60KWT/5", + "A60KWT/6", + "A60KWT/7", + "A60KWT/8", + "A60KWT/9", + "A60MD/0", + "A60MD/1", + "A60MD/2", + "A60MD/3", + "A60MD/4", + "A60MD/5", + "A60MD/6", + "A60MD/7", + "A60MD/8", + "A60MD/9", + "A60NMT/1", + "A60NMT/2", + "A60NMT/3", + "A60NMT/4", + "A60NMT/5", + "A60NMT/6", + "A60NMT/7", + "A60NMT/8", + "A60NMT/9", "A60OMA/0", "A60OMA/1", "A60OMA/2", @@ -70502,6 +71573,82 @@ "A60OMA/7", "A60OMA/8", "A60OMA/9", + "A60QATAR/0", + "A60QATAR/1", + "A60QATAR/2", + "A60QATAR/3", + "A60QATAR/4", + "A60QATAR/5", + "A60QATAR/6", + "A60QATAR/7", + "A60QATAR/8", + "A60QATAR/9", + "A60SFD/1", + "A60SFD/2", + "A60SFD/3", + "A60SFD/4", + "A60SFD/5", + "A60SFD/6", + "A60SFD/7", + "A60SFD/8", + "A60SFD/9", + "A60SH/1", + "A60SH/2", + "A60SH/3", + "A60SH/4", + "A60SH/5", + "A60SH/6", + "A60SH/7", + "A60SH/8", + "A60SH/9", + "A60STAYHOME/1", + "A60STAYHOME/2", + "A60STAYHOME/3", + "A60STAYHOME/4", + "A60STAYHOME/5", + "A60STAYHOME/6", + "A60STAYHOME/7", + "A60STAYHOME/8", + "A60STAYHOME/9", + "A60WARD/0", + "A60WARD/1", + "A60WARD/2", + "A60WARD/3", + "A60WARD/4", + "A60WARD/5", + "A60WARD/6", + "A60WARD/7", + "A60WARD/8", + "A60WARD/9", + "A60WSW/1", + "A60WSW/2", + "A60WSW/3", + "A60WSW/4", + "A60WSW/5", + "A60WSW/6", + "A60WSW/7", + "A60WSW/8", + "A60WSW/9", + "A60WTIS/0", + "A60WTIS/1", + "A60WTIS/2", + "A60WTIS/3", + "A60WTIS/4", + "A60WTIS/5", + "A60WTIS/6", + "A60WTIS/7", + "A60WTIS/8", + "A60WTIS/9", + "A60ZHD/0", + "A60ZHD/1", + "A60ZHD/2", + "A60ZHD/3", + "A60ZHD/4", + "A60ZHD/5", + "A60ZHD/6", + "A60ZHD/7", + "A60ZHD/8", + "A60ZHD/9", "A61B/ND", "A61BK/DM", "A61BK/JJ", @@ -72679,7 +73826,8 @@ "TO5R", "TO7CC", "TO7DL", - "TO90R" + "TO90R", + "TO974QO" ], "prefixITU": {}, "prefixCQ": {}, @@ -74347,6 +75495,7 @@ "TX5SPA", "TX5T", "TX5W", + "TX5XG", "TX5Z", "TX6G" ], diff --git a/package.nw/lib/callsigns.js b/package.nw/lib/callsigns.js index 9991a9ee..538fc1a2 100644 --- a/package.nw/lib/callsigns.js +++ b/package.nw/lib/callsigns.js @@ -624,6 +624,7 @@ function getChunkedBuffer(file_url, callback, flag, mode, port, cookie, errorHan .on("end", function () {}) .on("error", function (e) { + ulsUpdatedTd.innerHTML = "Error downloading"; console.error("Got error: " + e.message); }); }); diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index db2ae827..1c17cf94 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -622,7 +622,15 @@ function gtChatSendUUID() { var msg = Object(); msg.type = "uuid"; - if (g_appSettings.chatUUID != "") msg.uuid = g_appSettings.chatUUID; + if (g_appSettings.chatUUID != "") + { + msg.uuid = g_appSettings.chatUUID; + } + else + { + msg.uuid = null; + } + msg.call = myDEcall; msg.ver = gtShortVersion; From 9323e5a7672ca72af62a74a2efe3633cc997cacd Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 11 Feb 2023 16:59:46 -0800 Subject: [PATCH 02/36] Don't keep sending UUID to OAMS, wait for response --- package.nw/lib/gtws.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index 1c17cf94..7dbd3614 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -19,6 +19,7 @@ ChatState.idle = 0; ChatState.connect = 1; ChatState.connecting = 2; ChatState.connected = 3; +ChatState.waitUUID = 7; ChatState.status = 4; ChatState.closed = 5; ChatState.error = 6; @@ -31,7 +32,8 @@ var g_gtStateToFunction = { 3: gtChatSendUUID, 4: gtStatusCheck, 5: gtInError, - 6: gtClosedSocket + 6: gtClosedSocket, + 7: gtWaitUUID }; var g_gtChatSocket = null; @@ -635,6 +637,12 @@ function gtChatSendUUID() msg.ver = gtShortVersion; sendGtJson(JSON.stringify(msg), true); + g_gtState = ChatState.waitUUID; +} + +function gtWaitUUID() +{ + console.log("waiting for UUID from OAMS"); } function gtChatSetUUID(jsmesg) From 2d6d2ed3b97e3d35b5ea940ddf9ea9483592675e Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 11 Feb 2023 22:36:22 -0800 Subject: [PATCH 03/36] OAMS score sum from each grid --- package.nw/lib/gt.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index eb8ed91c..45a88243 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -10712,20 +10712,22 @@ function renderBandActivity() if (band in bandData) { var place = bandData[band]; + var data = g_oamsBandActivityData[grid][band]; - place.oamsDecodes += g_oamsBandActivityData[grid][band].d; - place.oamsRxSpots += g_oamsBandActivityData[grid][band].rS; - place.oamsTxSpots += g_oamsBandActivityData[grid][band].tS; - place.oamsTx += g_oamsBandActivityData[grid][band].t; - place.oamsRx += g_oamsBandActivityData[grid][band].r + place.oamsScore ??= 0; + place.oamsDecodes += data.d; + place.oamsRxSpots += data.rS; + place.oamsTxSpots += data.tS; + place.oamsTx += data.t; + place.oamsRx += data.r; - if (place.oamsRx > 0) + if (data.r > 0) { - place.oamsScore = parseInt((place.oamsDecodes > place.oamsRxSpots) ? (place.oamsDecodes / place.oamsRx) + (place.oamsTx > 0 ? place.oamsTxSpots / place.oamsTx : 0) : (place.oamsRxSpots / place.oamsRx) + (place.oamsTx > 0 ? place.oamsTxSpots / place.oamsTx : 0)); + place.oamsScore += parseInt((data.d > data.rS) ? (data.d / data.r) + (data.t > 0 ? data.tS / data.t : 0) : (data.rS / data.r) + (data.t > 0 ? data.tS / data.t : 0)); } else { - place.oamsScore = parseInt(place.oamsTx > 0 ? place.oamsTxSpots / place.oamsTx : 0); + place.oamsScore += parseInt(data.t > 0 ? data.tS / data.t : 0); } if (maxValue < place.oamsScore) maxValue = place.oamsScore; } From a3f14a2e2f68999d53413772dd20b41f55e00ac0 Mon Sep 17 00:00:00 2001 From: Tag Date: Thu, 16 Feb 2023 12:40:12 -0800 Subject: [PATCH 04/36] user-agent on http POST requests --- package.nw/lib/adif.js | 4 ++- package.nw/lib/gt.js | 37 ++++++++------------ package.nw/lib/roster/renderCompactRoster.js | 3 +- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js index 63896b49..0bffbb32 100644 --- a/package.nw/lib/adif.js +++ b/package.nw/lib/adif.js @@ -2913,7 +2913,9 @@ function getPostJSONBuffer( method: "post", headers: { "Content-Type": "application/json", - "Content-Length": postData.length + "Content-Length": postData.length, + "User-Agent": gtUserAgent, + "x-user-agent": gtUserAgent } }; var req = http.request(options, function (res) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 45a88243..ca97b3a5 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -5100,6 +5100,8 @@ function createGlobalHeatmapLayer(name, radius, blur) g_layerSources[name] = new ol.source.Vector({}); g_layerVectors[name] = new ol.layer.Heatmap({ source: g_layerSources[name], + blur: 20, + radius: 15, zIndex: Object.keys(g_layerVectors).length + 1 }); g_layerVectors[name].set("name", name); @@ -6580,7 +6582,6 @@ var g_decodeCollector = {}; function handleWsjtxDecode(newMessage) { - if (g_ignoreMessages == 1 || g_map == null) return; var didAlert = false; var didCustomAlert = false; var validQTH = false; @@ -6601,13 +6602,15 @@ function handleWsjtxDecode(newMessage) } var theTimeStamp = timeNowSec() - (timeNowSec() % 86400) + parseInt(newMessage.TM / 1000); + var theMessage = newMessage.Msg; + // Break up the decoded message - var decodeWords = newMessage.Msg.split(" ").slice(0, 5); + var decodeWords = theMessage.split(" ").slice(0, 5); while (decodeWords[decodeWords.length - 1] == "") decodeWords.pop(); if (decodeWords.length > 1) { - if (newMessage.Msg.indexOf("<") != -1) + if (theMessage.indexOf("<") != -1) { for (const i in decodeWords) { @@ -6875,29 +6878,15 @@ function handleWsjtxDecode(newMessage) if (newMessage.NW) { - didCustomAlert = processAlertMessage( - decodeWords, - newMessage.Msg.substr(0, 30).trim(), - callsign.band, - callsign.mode - ); + didCustomAlert = processAlertMessage(decodeWords, theMessage.substr(0, 30).trim(), callsign.band, callsign.mode); didAlert = checkClassicAlerts(CQ, callsign, newMessage, msgDXcallsign); - insertMessageInRoster( - newMessage, - msgDEcallsign, - msgDXcallsign, - callsign, - hash - ); + insertMessageInRoster(newMessage, msgDEcallsign, msgDXcallsign, callsign, hash); - if ( - g_mapSettings.trafficDecode && - (didAlert == true || didCustomAlert == true) - ) + if (g_mapSettings.trafficDecode && (didAlert == true || didCustomAlert == true)) { - var traffic = htmlEntities(newMessage.Msg); + var traffic = htmlEntities(theMessage); if (didAlert == true) { traffic = "⚠️ " + traffic; @@ -7161,7 +7150,7 @@ function handleWsjtxDecode(newMessage) "" + - htmlEntities(newMessage.Msg) + + htmlEntities(theMessage) + "" + countryName + "" @@ -12249,7 +12238,9 @@ function getPostBuffer( method: "post", headers: { "Content-Type": "application/x-www-form-urlencoded", - "Content-Length": postData.length + "Content-Length": postData.length, + "User-Agent": gtUserAgent, + "x-user-agent": gtUserAgent } }; var req = http.request(options, function (res) diff --git a/package.nw/lib/roster/renderCompactRoster.js b/package.nw/lib/roster/renderCompactRoster.js index e3dfe2bb..acdb94b9 100644 --- a/package.nw/lib/roster/renderCompactRoster.js +++ b/package.nw/lib/roster/renderCompactRoster.js @@ -9,14 +9,13 @@ function renderCompactRosterHeaders() function renderCompactRosterRow(callObj, showBand) { - var ID = callObj.DEcall + callObj.band + callObj.mode; var title = callObj.RSTsent + "㏈, " + parseInt(callObj.dt * 100) + "ms, " + callObj.delta + "hz" + (callObj.grid.length ? ", " + callObj.grid : "") + ", " + (timeNowSec() - callObj.age).toDHMS(); var bandView = showBand ? "
" + callObj.band + "
" : ""; if (g_rosterSettings.compactEntity == "Band") { bandView = ""; } - var onClick = " onClick='initiateQso(\"" + ID + "\")' id='" + ID + "' title='" + title + "' "; + var onClick = " onClick='initiateQso(\"" + callObj.hash + "\")' id='" + callObj.hash + "' title='" + title + "' "; var wholeClick = (g_isCompactCounty ? "" : onClick); var callsignClick = (g_isCompactCounty ? onClick : ""); var worker = "
"; From f989f099fddbb7657e5e2a8c6e004850a3d89ace Mon Sep 17 00:00:00 2001 From: Tag Date: Thu, 16 Feb 2023 16:35:44 -0800 Subject: [PATCH 05/36] Many globals vars removed Removed Number and String prototypes --- package.nw/GridTracker.html | 10 +- package.nw/gt_bandactivity.html | 2 +- package.nw/gt_chat.html | 94 +- package.nw/gt_lookup.html | 10 +- package.nw/gt_roster.html | 18 +- package.nw/gt_stats.html | 2 +- package.nw/lib/adif.js | 533 +- package.nw/lib/alerts.js | 572 +- package.nw/lib/callsigns.js | 356 +- package.nw/lib/gt.js | 6137 +++++++++-------- package.nw/lib/gtws.js | 466 +- package.nw/lib/i18n.js | 12 +- package.nw/lib/pota.js | 264 +- package.nw/lib/protos.js | 134 +- package.nw/lib/roster.js | 1342 ++-- .../lib/roster/prepareRosterSettings.js | 32 +- .../lib/roster/processRosterFiltering.js | 137 +- package.nw/lib/roster/processRosterHunting.js | 48 +- package.nw/lib/roster/renderCompactRoster.js | 22 +- package.nw/lib/roster/renderRoster.js | 30 +- .../lib/roster/rosterColumnFunctions.js | 18 +- package.nw/lib/roster/rosterColumns.js | 48 +- package.nw/lib/roster/sendAlerts.js | 62 +- package.nw/lib/screens.js | 17 +- package.nw/lib/services/pstrotator.js | 24 +- package.nw/lib/shadow.js | 10 +- package.nw/lib/stats.js | 4 +- package.nw/lib/third-party.js | 10 +- 28 files changed, 5165 insertions(+), 5249 deletions(-) diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index d8aa395d..20ccfc73 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -244,8 +244,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ onclick="startLookup(GT.localDXcall,localDXGrid.innerHTML);" + oncontextmenu="showWorkedByCall(GT.localDXcall, event);"> -
@@ -352,12 +352,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0
QSL
0
@@ -949,7 +949,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- +
diff --git a/package.nw/gt_bandactivity.html b/package.nw/gt_bandactivity.html index 6e63626c..69b3071b 100644 --- a/package.nw/gt_bandactivity.html +++ b/package.nw/gt_bandactivity.html @@ -40,7 +40,7 @@ 0 && g_currentId != 0 && g_currentId in window.opener.g_gtFlagPins && window.opener.g_gtFlagPins[g_currentId].canmsg == true) + if (msg.length > 0 && g_currentId != 0 && g_currentId in window.opener.GT.gtFlagPins && window.opener.GT.gtFlagPins[g_currentId].canmsg == true) { var worker = ""; // No message history, so lets clear the div - if (!(g_currentId in window.opener.g_gtMessages)) messageTextDiv.innerHTML = ""; + if (!(g_currentId in window.opener.GT.gtMessages)) messageTextDiv.innerHTML = ""; - if (g_currentId in window.opener.g_gtSentAwayToCid) + if (g_currentId in window.opener.GT.gtSentAwayToCid) { var thisMsg = "Returned from away."; window.opener.gtSendMessage(thisMsg, g_currentId); worker = makeViewMessage("self", window.opener.myDEcall, thisMsg); messageTextDiv.innerHTML += worker; - delete window.opener.g_gtSentAwayToCid[g_currentId]; + delete window.opener.GT.gtSentAwayToCid[g_currentId]; } - if (window.opener.g_msgSettings.msgAwaySelect == 1) + if (window.opener.GT.msgSettings.msgAwaySelect == 1) { window.opener.msgAwaySelect.value = 0; window.opener.newMessageSetting(window.opener.msgAwaySelect); @@ -116,7 +116,7 @@ { lockNewWindows(); - if (window.opener.g_appSettings.gtAgree != "user agrees to messaging") + if (window.opener.GT.appSettings.gtAgree != "user agrees to messaging") { noticeDiv.style.display = "block"; wrapperDiv.style.display = "none"; @@ -148,7 +148,7 @@ function openIdCid(from) { - if (from.currentTarget.id in window.opener.g_gtFlagPins) + if (from.currentTarget.id in window.opener.GT.gtFlagPins) { openId(from.currentTarget.id); } @@ -166,9 +166,9 @@ { from.preventDefault(); - if (from.currentTarget.id in window.opener.g_gtFlagPins) + if (from.currentTarget.id in window.opener.GT.gtFlagPins) { - doLookup(window.opener.g_gtFlagPins[from.currentTarget.id].call); + doLookup(window.opener.GT.gtFlagPins[from.currentTarget.id].call); } else { @@ -183,9 +183,9 @@ function onHoverCid(from) { var cid = from.currentTarget.id; - if (cid in window.opener.g_gtFlagPins) + if (cid in window.opener.GT.gtFlagPins) { - from.currentTarget.title = window.opener.g_gtFlagPins[cid].band + " , " + window.opener.g_gtFlagPins[cid].mode + " , " + window.opener.g_dxccToAltName[window.opener.g_gtFlagPins[cid].dxcc]; + from.currentTarget.title = window.opener.GT.gtFlagPins[cid].band + " , " + window.opener.GT.gtFlagPins[cid].mode + " , " + window.opener.GT.dxccToAltName[window.opener.GT.gtFlagPins[cid].dxcc]; } else { @@ -230,9 +230,9 @@ newDiv.oncontextmenu = openLookupCid; var worker = "
" + callObj.fCall; - if (callObj.dxcc > 0 && callObj.dxcc in window.opener.g_dxccInfo) + if (callObj.dxcc > 0 && callObj.dxcc in window.opener.GT.dxccInfo) { - worker += ""; + worker += ""; } worker += "
"; newDiv.innerHTML = worker; @@ -267,9 +267,9 @@ function updateCallsign(id) { - if (id in window.opener.g_gtFlagPins) + if (id in window.opener.GT.gtFlagPins) { - var obj = window.opener.g_gtFlagPins[id]; + var obj = window.opener.GT.gtFlagPins[id]; if (obj.call != "" && obj.call != "NOCALL") { var show = true; @@ -346,9 +346,9 @@ removeAllChildNodes(allCallDiv); } - for (const x in window.opener.g_gtFlagPins) + for (const x in window.opener.GT.gtFlagPins) { - var obj = window.opener.g_gtFlagPins[x]; + var obj = window.opener.GT.gtFlagPins[x]; if (obj.call != "" && obj.call != "NOCALL") { var show = true; @@ -413,15 +413,15 @@ function showAllMessages() { activeCallsignsDiv.innerHTML = "no message history"; - if (Object.keys(window.opener.g_gtMessages).length > 0) + if (Object.keys(window.opener.GT.gtMessages).length > 0) { var worker = ""; - for (const key in window.opener.g_gtMessages) + for (const key in window.opener.GT.gtMessages) { - if (key in window.opener.g_gtFlagPins) + if (key in window.opener.GT.gtFlagPins) { worker += ""; - if (key in window.opener.g_gtUnread) + if (key in window.opener.GT.gtUnread) { worker += "🔥"; } @@ -430,7 +430,7 @@ worker += "💬"; } - worker += "" + window.opener.g_gtFlagPins[key].call.formatCallsign() + ""; + worker += "" + formatCallsign(window.opener.GT.gtFlagPins[key].call) + ""; worker += "❌"; } } @@ -445,8 +445,8 @@ { try { - if (what in window.opener.g_gtMessages) delete window.opener.g_gtMessages[what]; - if (what in window.opener.g_gtUnread) delete window.opener.g_gtUnread[what]; + if (what in window.opener.GT.gtMessages) delete window.opener.GT.gtMessages[what]; + if (what in window.opener.GT.gtUnread) delete window.opener.GT.gtUnread[what]; } catch (e) {} @@ -475,7 +475,7 @@ function makeViewMessage(className, who, msg, when) { - var who = "" + who.formatCallsign() + ""; + var who = "" + formatCallsign(who) + ""; var time = "" + window.opener.userTimeString(when) + ""; var worker = who + " " + time + "
"; var msgTextClass = containsDoubleByte(msg) ? "msgTextUnicode" : "msgText"; @@ -486,8 +486,8 @@ function newChatMessage(id, jsmesg) { if (id == g_currentId) { - var worker = makeViewMessage("them", window.opener.g_gtFlagPins[id].call, jsmesg.msg, jsmesg.when); - if (id in window.opener.g_gtUnread) delete window.opener.g_gtUnread[id]; + var worker = makeViewMessage("them", window.opener.GT.gtFlagPins[id].call, jsmesg.msg, jsmesg.when); + if (id in window.opener.GT.gtUnread) delete window.opener.GT.gtUnread[id]; messageTextDiv.innerHTML += worker; scrollDown(messageTextDiv); return document.hasFocus(); @@ -516,14 +516,14 @@ { if (id == 0) return; - if (id in window.opener.g_gtFlagPins) + if (id in window.opener.GT.gtFlagPins) { - callsign.innerHTML = window.opener.g_gtFlagPins[id].call.formatCallsign(); - country.innerHTML = window.opener.g_dxccToAltName[window.opener.g_gtFlagPins[id].dxcc]; - grid.innerHTML = window.opener.g_gtFlagPins[id].grid; - band.innerHTML = window.opener.g_gtFlagPins[id].band; - mode.innerHTML = window.opener.g_gtFlagPins[id].mode; - appSource.innerHTML = window.opener.g_gtFlagPins[id].src in g_knownSources ? g_knownSources[window.opener.g_gtFlagPins[id].src] : window.opener.g_gtFlagPins[id].src; + callsign.innerHTML = formatCallsign(window.opener.GT.gtFlagPins[id].call); + country.innerHTML = window.opener.GT.dxccToAltName[window.opener.GT.gtFlagPins[id].dxcc]; + grid.innerHTML = window.opener.GT.gtFlagPins[id].grid; + band.innerHTML = window.opener.GT.gtFlagPins[id].band; + mode.innerHTML = window.opener.GT.gtFlagPins[id].mode; + appSource.innerHTML = window.opener.GT.gtFlagPins[id].src in g_knownSources ? g_knownSources[window.opener.GT.gtFlagPins[id].src] : window.opener.GT.gtFlagPins[id].src; } } @@ -533,31 +533,31 @@ // already displayed? if (id == g_currentId && messageAreaDiv.style.display == "inline-block") return; - if (!(id in window.opener.g_gtFlagPins)) return; + if (!(id in window.opener.GT.gtFlagPins)) return; var worker = ""; - if (id in window.opener.g_gtMessages && window.opener.g_gtMessages[id].history.length > 0) + if (id in window.opener.GT.gtMessages && window.opener.GT.gtMessages[id].history.length > 0) { - for (msg in window.opener.g_gtMessages[id].history) + for (msg in window.opener.GT.gtMessages[id].history) { - if (window.opener.g_gtMessages[id].history[msg].id != 0) + if (window.opener.GT.gtMessages[id].history[msg].id != 0) worker += makeViewMessage( "them", - window.opener.g_gtFlagPins[id].call, - window.opener.g_gtMessages[id].history[msg].msg, - window.opener.g_gtMessages[id].history[msg].when + window.opener.GT.gtFlagPins[id].call, + window.opener.GT.gtMessages[id].history[msg].msg, + window.opener.GT.gtMessages[id].history[msg].when ); else worker += makeViewMessage( "self", window.opener.myDEcall, - window.opener.g_gtMessages[id].history[msg].msg, - window.opener.g_gtMessages[id].history[msg].when + window.opener.GT.gtMessages[id].history[msg].msg, + window.opener.GT.gtMessages[id].history[msg].when ); } - if (id in window.opener.g_gtUnread) + if (id in window.opener.GT.gtUnread) { - delete window.opener.g_gtUnread[id]; + delete window.opener.GT.gtUnread[id]; updateCallsign(id); showAllMessages(); } @@ -566,7 +566,7 @@ g_currentId = id; messageAreaDiv.style.display = "inline-block"; - if (window.opener.g_gtFlagPins[id].live == false) + if (window.opener.GT.gtFlagPins[id].live == false) { notifyNoChat(id); } else { diff --git a/package.nw/gt_lookup.html b/package.nw/gt_lookup.html index 6d0593e0..2d8d00f4 100644 --- a/package.nw/gt_lookup.html +++ b/package.nw/gt_lookup.html @@ -39,7 +39,7 @@ } function statsFocus(selection) { - var which = document.getElementById(selection); + let which = document.getElementById(selection); if (which != null) { which.focus(); which.selectionStart = which.selectionEnd = which.value.length; @@ -48,7 +48,7 @@ function ValidateCallsign(inputText, validDiv) { if (inputText.value.length > 0) { - var passed = false; + let passed = false; inputText.value = inputText.value.toUpperCase(); if (/\d/.test(inputText.value) || /[A-Z]/.test(inputText.value)) { passed = true; @@ -78,7 +78,7 @@ function init() { ValidateCallsign(lookupCallsignInput, null); - window.opener.g_lookupWindowInitialized = true; + window.opener.GT.lookupWindowInitialized = true; } function addTextToClipboard(data) { @@ -86,8 +86,8 @@ } function setClipboardFromLookup() { - if (window.opener.g_lastLookupAddress) { - addTextToClipboard(window.opener.g_lastLookupAddress); + if (window.opener.GT.lastLookupAddress) { + addTextToClipboard(window.opener.GT.lastLookupAddress); } } diff --git a/package.nw/gt_roster.html b/package.nw/gt_roster.html index d80242a9..aa4c2fd8 100644 --- a/package.nw/gt_roster.html +++ b/package.nw/gt_roster.html @@ -21,6 +21,7 @@ + @@ -41,7 +42,6 @@ -
@@ -215,8 +215,8 @@ class="inputTextValue" size="12" id="huntRegexValue" - onfocus="g_typingInRoster=true;" - onblur="g_typingInRoster=false;" + onfocus="CR.typingInRoster=true;" + onblur="CR.typingInRoster=false;" oninput="valuesChanged();" onkeydown="blurOnEnter(this);" /> @@ -365,8 +365,8 @@ class="inputTextValue" size="8" id="noMsgValue" - onfocus="g_typingInRoster=true;" - onblur="g_typingInRoster=false;" + onfocus="CR.typingInRoster=true;" + onblur="CR.typingInRoster=false;" oninput="valuesChanged();" onkeydown="blurOnEnter(this);" /> @@ -382,8 +382,8 @@ class="inputTextValue" size="8" id="onlyMsgValue" - onfocus="g_typingInRoster=true;" - onblur="g_typingInRoster=false;" + onfocus="CR.typingInRoster=true;" + onblur="CR.typingInRoster=false;" oninput="valuesChanged();" onkeydown="blurOnEnter(this);" /> @@ -400,8 +400,8 @@ class="inputTextValue" size="12" id="callsignRegex" - onfocus="g_typingInRoster=true;" - onblur="g_typingInRoster=false;" + onfocus="CR.typingInRoster=true;" + onblur="CR.typingInRoster=false;" oninput="valuesChanged();" onkeydown="blurOnEnter(this);" /> diff --git a/package.nw/gt_stats.html b/package.nw/gt_stats.html index 08da0ff4..3b750a9a 100644 --- a/package.nw/gt_stats.html +++ b/package.nw/gt_stats.html @@ -20,6 +20,7 @@ Statistics + @@ -29,7 +30,6 @@ - diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js index 0bffbb32..b87b1a8a 100644 --- a/package.nw/lib/adif.js +++ b/package.nw/lib/adif.js @@ -1,8 +1,8 @@ // GridTracker Copyright © 2023 GridTracker.org // All rights reserved. // See LICENSE for more information. -var g_fromDirectCallNoFileDialog = false; -var selectStartupLink = null; +GT.fromDirectCallNoFileDialog = false; +GT.selectStartupLink = null; function dragOverHandler(ev) { @@ -99,7 +99,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) if (rawAdiBuffer.length > 1) { var regex = new RegExp("", "ig"); - rawAdiBuffer = rawAdiBuffer.replaceAll(regex, ""); + rawAdiBuffer = replaceAll(rawAdiBuffer, regex, ""); } if (rawAdiBuffer.length > 1) @@ -118,14 +118,14 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) if (appLoTW_RXQSO != "") { var dRXQSO = Date.parse(appLoTW_RXQSO); - var dLastLOTW_QSO = Date.parse(g_adifLogSettings.lastFetch.lotw_qso); + var dLastLOTW_QSO = Date.parse(GT.adifLogSettings.lastFetch.lotw_qso); if ((isNaN(dRXQSO) == false) && (isNaN(dLastLOTW_QSO) == false) && (dRXQSO > dLastLOTW_QSO)) { // add a second dRXQSO += 1000; var date = new Date(dRXQSO); // create Date object var timestring = date.toISOString(); - g_adifLogSettings.lastFetch.lotw_qso = timestring.slice(0, 10) + " " + timestring.slice(11, 19); + GT.adifLogSettings.lastFetch.lotw_qso = timestring.slice(0, 10) + " " + timestring.slice(11, 19); lotwTimestampUpdated = true; } } @@ -134,14 +134,14 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) if (appLoTW_RXQSL != "") { var dRXQSL = Date.parse(appLoTW_RXQSL); - var dLastLOTW_QSL = Date.parse(g_adifLogSettings.lastFetch.lotw_qsl); + var dLastLOTW_QSL = Date.parse(GT.adifLogSettings.lastFetch.lotw_qsl); if ((isNaN(dRXQSL) == false) && (isNaN(dLastLOTW_QSL) == false) && (dRXQSL > dLastLOTW_QSL)) { // add a second dRXQSL += 1000; var date = new Date(dRXQSL); // create Date object var timestring = date.toISOString(); - g_adifLogSettings.lastFetch.lotw_qsl = timestring.slice(0, 10) + " " + timestring.slice(11, 19); + GT.adifLogSettings.lastFetch.lotw_qsl = timestring.slice(0, 10) + " " + timestring.slice(11, 19); lotwTimestampUpdated = true; } } @@ -152,7 +152,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) finalDEcall = myDEcall; } - if (g_appSettings.workingCallsignEnable && !(finalDEcall in g_appSettings.workingCallsigns)) + if (GT.appSettings.workingCallsignEnable && !(finalDEcall in GT.appSettings.workingCallsigns)) { // not in the working callsigns, move to next continue; @@ -173,7 +173,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) var finalTime = parseInt(dateTime.getTime() / 1000); - if (g_appSettings.workingDateEnable && finalTime < g_appSettings.workingDate) + if (GT.appSettings.workingDateEnable && finalTime < GT.appSettings.workingDate) { // Not after our working date continue; @@ -189,7 +189,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) var finalBand = findAdiField(activeAdifArray[x], "BAND").toLowerCase(); if (finalBand == "" || finalBand == "oob") { - finalBand = Number(findAdiField(activeAdifArray[x], "FREQ")).formatBand(); + finalBand = formatBand(Number(findAdiField(activeAdifArray[x], "FREQ"))); } var finalState = findAdiField(activeAdifArray[x], "STATE").toUpperCase(); if (finalState.length == 0) finalState = null; @@ -208,7 +208,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) else { // GT references internally with NO spaces, this is important - finalCnty = finalCnty.replaceAll(" ", ""); + finalCnty = replaceAll(finalCnty, " ", ""); } var finalMode = findAdiField(activeAdifArray[x], "MODE").toUpperCase(); var subMode = findAdiField(activeAdifArray[x], "SUBMODE"); @@ -241,7 +241,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) finalDxcc = Number(callsignToDxcc(finalDXcall)); } - if (!(finalDxcc in g_dxccInfo)) + if (!(finalDxcc in GT.dxccInfo)) { finalDxcc = Number(callsignToDxcc(finalDXcall)); } @@ -288,13 +288,13 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) } var isDigital = false; var isPhone = false; - if (finalMode in g_modes) + if (finalMode in GT.modes) { - isDigital = g_modes[finalMode]; + isDigital = GT.modes[finalMode]; } - if (finalMode in g_modes_phone) + if (finalMode in GT.modes_phone) { - isPhone = g_modes_phone[finalMode]; + isPhone = GT.modes_phone[finalMode]; } // TODO: Revisit when we support more than one park ID var finalPOTA = findAdiField(activeAdifArray[x], "POTA").toUpperCase(); @@ -459,14 +459,14 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) updateCountStats(); updateLogbook(); - if (g_fromDirectCallNoFileDialog == false) + if (GT.fromDirectCallNoFileDialog == false) { - fileSelector.setAttribute("type", ""); - fileSelector.setAttribute("type", "file"); - fileSelector.setAttribute("accept", ".adi,"); - fileSelector.value = null; + GT.fileSelector.setAttribute("type", ""); + GT.fileSelector.setAttribute("type", "file"); + GT.fileSelector.setAttribute("accept", ".adi,"); + GT.fileSelector.value = null; } - g_fromDirectCallNoFileDialog = false; + GT.fromDirectCallNoFileDialog = false; updateRosterWorked(); goProcessRoster(); @@ -488,7 +488,7 @@ function clubLogCallback(buffer, flag, cookie) if (flag) clubTestResult.innerHTML = "Passed"; else { - g_fromDirectCallNoFileDialog = true; + GT.fromDirectCallNoFileDialog = true; rawAdiBuffer = cleanAndPrepADIF("clublog.adif", rawAdiBuffer); @@ -499,10 +499,10 @@ function clubLogCallback(buffer, flag, cookie) } } -var g_isGettingClub = false; +GT.isGettingClub = false; function grabClubLog(test) { - if (g_isGettingClub == false) + if (GT.isGettingClub == false) { if (test) clubTestResult.innerHTML = "Testing"; @@ -519,14 +519,14 @@ function grabClubLog(test) 443, postData, ClubLogImg, - "g_isGettingClub" + "GT.isGettingClub" ); } } function tryToWriteAdifToDocFolder(filename, buffer, append = false) { - var finalFile = g_appData + g_dirSeperator + filename; + var finalFile = GT.appData + GT.dirSeperator + filename; try { if (append == false) @@ -625,7 +625,7 @@ function lotwCallback(buffer, flag, cookies, url) { var shouldAppend = true; var adiFileName = "LogbookOfTheWorld.adif"; - g_fromDirectCallNoFileDialog = true; + GT.fromDirectCallNoFileDialog = true; // Extract header showing type of call // var lotwQSHeader = rawAdiBuffer.match(/^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})/m); @@ -656,7 +656,7 @@ function lotwCallback(buffer, flag, cookies, url) function shouldWeAppendInsteadOfCreate(filename) { - var finalFile = g_appData + g_dirSeperator + filename; + var finalFile = GT.appData + GT.dirSeperator + filename; try { if (fs.existsSync(finalFile)) return true; @@ -670,7 +670,7 @@ function shouldWeAppendInsteadOfCreate(filename) function tryToDeleteLog(filename) { - var finalFile = g_appData + g_dirSeperator + filename; + var finalFile = GT.appData + GT.dirSeperator + filename; try { if (fs.existsSync(finalFile)) @@ -681,16 +681,16 @@ function tryToDeleteLog(filename) catch (e) {} } -var g_lotwCount = 0; +GT.lotwCount = 0; -var g_isGettingLOTW = false; -var g_lotwTest = false; +GT.isGettingLOTW = false; +GT.lotwTest = false; function grabLOtWLog(test) { var lastQSLDateString = ""; - if (test == true && g_isGettingLOTW == false) + if (test == true && GT.isGettingLOTW == false) { lotwTestResult.innerHTML = "Testing"; lastQSLDateString = "&qso_qsosince=2100-01-01"; @@ -708,7 +708,7 @@ function grabLOtWLog(test) "https", 443, lotwLogImg, - "g_isGettingLOTW", + "GT.isGettingLOTW", 150000 ); } @@ -722,12 +722,12 @@ function grabLOtWLog(test) function grabLoTWQSO() { - var dLoTWQSO = Date.parse(dateToISO8601(g_adifLogSettings.lastFetch.lotw_qso, "Z")); + var dLoTWQSO = Date.parse(dateToISO8601(GT.adifLogSettings.lastFetch.lotw_qso, "Z")); - if (g_isGettingLOTW == false && isNaN(dLoTWQSO) == false) + if (GT.isGettingLOTW == false && isNaN(dLoTWQSO) == false) { // Fetch QSOs - lastQSLDateString = "&qso_qsorxsince=" + g_adifLogSettings.lastFetch.lotw_qso; + lastQSLDateString = "&qso_qsorxsince=" + GT.adifLogSettings.lastFetch.lotw_qso; getABuffer( "https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" + lotwLogin.value + @@ -740,7 +740,7 @@ function grabLoTWQSO() "https", 443, lotwLogImg, - "g_isGettingLOTW", + "GT.isGettingLOTW", 120000 ); } @@ -748,12 +748,12 @@ function grabLoTWQSO() function grabLoTWQSL() { - var dLoTWQSL = Date.parse(dateToISO8601(g_adifLogSettings.lastFetch.lotw_qsl, "Z")); + var dLoTWQSL = Date.parse(dateToISO8601(GT.adifLogSettings.lastFetch.lotw_qsl, "Z")); // Don't grab if the last QSL was less than 5 minutes ago - if (g_isGettingLOTW == false && isNaN(dLoTWQSL) == false) + if (GT.isGettingLOTW == false && isNaN(dLoTWQSL) == false) { - lastQSLDateString = "&qso_qslsince=" + g_adifLogSettings.lastFetch.lotw_qsl; + lastQSLDateString = "&qso_qslsince=" + GT.adifLogSettings.lastFetch.lotw_qsl; getABuffer( "https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" + lotwLogin.value + @@ -766,7 +766,7 @@ function grabLoTWQSL() "https", 443, lotwLogImg, - "g_isGettingLOTW", + "GT.isGettingLOTW", 120000 ); } @@ -786,7 +786,7 @@ function qrzCallback(buffer, flag) } else { - g_fromDirectCallNoFileDialog = true; + GT.fromDirectCallNoFileDialog = true; var htmlString = String(buffer).replace(/</g, "<"); htmlString = htmlString.replace(/>/g, ">"); htmlString = htmlString.replace("ADIF=", "QRZ\r\n"); @@ -800,10 +800,10 @@ function qrzCallback(buffer, flag) } } -var g_isGettingQRZCom = false; +GT.isGettingQRZCom = false; function grabQrzComLog(test) { - if (g_isGettingQRZCom == false) + if (GT.isGettingQRZCom == false) { var action = "FETCH"; if (test) @@ -822,7 +822,7 @@ function grabQrzComLog(test) "https", 443, qrzLogImg, - "g_isGettingQRZCom", + "GT.isGettingQRZCom", null ); } @@ -884,15 +884,15 @@ function ValidateText(inputText) function pskCallback(buffer, flag) { - g_fromDirectCallNoFileDialog = true; + GT.fromDirectCallNoFileDialog = true; onAdiLoadComplete(buffer, false); } -var g_isGettingPsk = false; +GT.isGettingPsk = false; function grabPsk24() { - if (g_isGettingPsk == true) return; + if (GT.isGettingPsk == true) return; if (myDEcall.length > 0 && myDEcall != "NOCALL") { @@ -908,14 +908,14 @@ function grabPsk24() "https", 443, pskImg, - "g_isGettingPsk" + "GT.isGettingPsk" ); } } function adifMenuCheckBoxChanged(what) { - g_adifLogSettings.menu[what.id] = what.checked; + GT.adifLogSettings.menu[what.id] = what.checked; var menuItem = what.id + "Div"; if (what.checked == true) { @@ -926,22 +926,22 @@ function adifMenuCheckBoxChanged(what) document.getElementById(menuItem).style.display = "none"; } - localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings); + localStorage.adifLogSettings = JSON.stringify(GT.adifLogSettings); if (what == buttonAdifCheckBox) setAdifStartup(loadAdifCheckBox); } function adifStartupCheckBoxChanged(what) { - g_adifLogSettings.startup[what.id] = what.checked; - localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings); + GT.adifLogSettings.startup[what.id] = what.checked; + localStorage.adifLogSettings = JSON.stringify(GT.adifLogSettings); if (what == loadAdifCheckBox) setAdifStartup(loadAdifCheckBox); } function adifLogQsoCheckBoxChanged(what) { - g_adifLogSettings.qsolog[what.id] = what.checked; + GT.adifLogSettings.qsolog[what.id] = what.checked; if (what.id == "logLOTWqsoCheckBox") { if (what.checked == true) @@ -955,12 +955,12 @@ function adifLogQsoCheckBoxChanged(what) trustedTestButton.style.display = "none"; } } - localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings); + localStorage.adifLogSettings = JSON.stringify(GT.adifLogSettings); } function adifNicknameCheckBoxChanged(what) { - g_adifLogSettings.nickname[what.id] = what.checked; + GT.adifLogSettings.nickname[what.id] = what.checked; if (what.id == "nicknameeQSLCheckBox") { if (what.checked == true) @@ -972,25 +972,25 @@ function adifNicknameCheckBoxChanged(what) eQSLNickname.style.display = "none"; } } - localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings); + localStorage.adifLogSettings = JSON.stringify(GT.adifLogSettings); } function adifTextValueChange(what) { what.value = what.value.trim(); - g_adifLogSettings.text[what.id] = what.value; - localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings); + GT.adifLogSettings.text[what.id] = what.value; + localStorage.adifLogSettings = JSON.stringify(GT.adifLogSettings); } -var fileSelector = document.createElement("input"); -fileSelector.setAttribute("type", "file"); -fileSelector.setAttribute("accept", ".adi,.adif"); -fileSelector.onchange = function () +GT.fileSelector = document.createElement("input"); +GT.fileSelector.setAttribute("type", "file"); +GT.fileSelector.setAttribute("accept", ".adi,.adif"); +GT.fileSelector.onchange = function () { if (this.files && this.files[0]) { var path = this.value.replace(this.files[0].name, ""); - fileSelector.setAttribute("nwworkingdir", path); + GT.fileSelector.setAttribute("nwworkingdir", path); var reader = new FileReader(); reader.onload = function (e) @@ -1007,34 +1007,31 @@ fileSelector.onchange = function () function adifLoadDialog() { - var exists = fileSelector.getAttribute("nwworkingdir"); - - fileSelector.setAttribute("nwworkingdir", g_appData); - - fileSelector.click(); - + var exists = GT.fileSelector.getAttribute("nwworkingdir"); + GT.fileSelector.setAttribute("nwworkingdir", GT.appData); + GT.fileSelector.click(); return false; } -var startupFileSelector = document.createElement("input"); -startupFileSelector.setAttribute("type", "file"); -startupFileSelector.setAttribute("accept", ".adi,.adif"); -startupFileSelector.onchange = function () +GT.startupFileSelector = document.createElement("input"); +GT.startupFileSelector.setAttribute("type", "file"); +GT.startupFileSelector.setAttribute("accept", ".adi,.adif"); +GT.startupFileSelector.onchange = function () { if (this.files && this.files[0]) { - for (var i in g_startupLogs) + for (var i in GT.startupLogs) { - if (this.value == g_startupLogs[i].file) return; + if (this.value == GT.startupLogs[i].file) return; } var newObject = Object(); newObject.name = this.files[0].name; newObject.file = this.value; - g_startupLogs.push(newObject); - localStorage.startupLogs = JSON.stringify(g_startupLogs); + GT.startupLogs.push(newObject); + localStorage.startupLogs = JSON.stringify(GT.startupLogs); var path = this.value.replace(this.files[0].name, ""); - startupFileSelector.setAttribute("nwworkingdir", path); + GT.startupFileSelector.setAttribute("nwworkingdir", path); setAdifStartup(loadAdifCheckBox); } @@ -1053,50 +1050,50 @@ function start_and_end(str) function setFileSelectors() { - selectStartupLink = document.getElementById("selectAdifButton"); - selectStartupLink.onclick = function () + GT.selectStartupLink = document.getElementById("selectAdifButton"); + GT.selectStartupLink.onclick = function () { - var exists = startupFileSelector.getAttribute("nwworkingdir"); + let exists = GT.startupFileSelector.getAttribute("nwworkingdir"); if (exists == null) { - if (g_workingIniPath.length > 1) - { startupFileSelector.setAttribute("nwworkingdir", g_appData); } + if (GT.workingIniPath.length > 1) + { GT.startupFileSelector.setAttribute("nwworkingdir", GT.appData); } } - startupFileSelector.click(); + GT.startupFileSelector.click(); return false; }; selectTqsl = document.getElementById("selectTQSLButton"); selectTqsl.onclick = function () { - tqslFileSelector.click(); + GT.tqslFileSelector.click(); return false; }; lotwUpload.prepend(selectTqsl); } -var tqslFileSelector = document.createElement("input"); -tqslFileSelector.setAttribute("type", "file"); -tqslFileSelector.setAttribute("accept", "*"); -tqslFileSelector.onchange = function () +GT.tqslFileSelector = document.createElement("input"); +GT.tqslFileSelector.setAttribute("type", "file"); +GT.tqslFileSelector.setAttribute("accept", "*"); +GT.tqslFileSelector.onchange = function () { if (this.files && this.files[0]) { - g_trustedQslSettings.binaryFile = this.files[0].path; + GT.trustedQslSettings.binaryFile = this.files[0].path; var fs = require("fs"); if ( - fs.existsSync(g_trustedQslSettings.binaryFile) && - (g_trustedQslSettings.binaryFile.endsWith("tqsl.exe") || - g_trustedQslSettings.binaryFile.endsWith("tqsl")) + fs.existsSync(GT.trustedQslSettings.binaryFile) && + (GT.trustedQslSettings.binaryFile.endsWith("tqsl.exe") || + GT.trustedQslSettings.binaryFile.endsWith("tqsl")) ) { - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFileValid = true; } - else g_trustedQslSettings.binaryFileValid = false; + else GT.trustedQslSettings.binaryFileValid = false; - if (g_trustedQslSettings.binaryFileValid == true) + if (GT.trustedQslSettings.binaryFileValid == true) { tqslFileDiv.style.backgroundColor = "blue"; } @@ -1106,7 +1103,7 @@ tqslFileSelector.onchange = function () } tqslFileDiv.innerHTML = "" + start_and_end(this.files[0].path) + ""; - localStorage.trustedQslSettings = JSON.stringify(g_trustedQslSettings); + localStorage.trustedQslSettings = JSON.stringify(GT.trustedQslSettings); } }; @@ -1114,10 +1111,10 @@ function loadGtQSOLogFile() { var fs = require("fs"); - if (fs.existsSync(g_qsoLogFile)) + if (fs.existsSync(GT.qsoLogFile)) { - g_fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(g_qsoLogFile), false); + GT.fromDirectCallNoFileDialog = true; + onAdiLoadComplete(fs.readFileSync(GT.qsoLogFile), false); } } @@ -1133,26 +1130,26 @@ function loadLoTWLogFile() { var fs = require("fs"); - if (fs.existsSync(g_LoTWLogFile) && getFilesizeInBytes(g_LoTWLogFile) > 0) + if (fs.existsSync(GT.LoTWLogFile) && getFilesizeInBytes(GT.LoTWLogFile) > 0) { - g_fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(g_LoTWLogFile), false); + GT.fromDirectCallNoFileDialog = true; + onAdiLoadComplete(fs.readFileSync(GT.LoTWLogFile), false); } else { // We have no history, so our dates are not valid any more - g_adifLogSettings.lastFetch.lotw_qso = "1970-01-01"; - g_adifLogSettings.lastFetch.lotw_qsl = "1970-01-01"; + GT.adifLogSettings.lastFetch.lotw_qso = "1970-01-01"; + GT.adifLogSettings.lastFetch.lotw_qsl = "1970-01-01"; } } function loadWsjtLogFile() { var fs = require("fs"); - if (fs.existsSync(g_workingIniPath + "wsjtx_log.adi")) + if (fs.existsSync(GT.workingIniPath + "wsjtx_log.adi")) { - g_fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(g_workingIniPath + "wsjtx_log.adi"), false); + GT.fromDirectCallNoFileDialog = true; + onAdiLoadComplete(fs.readFileSync(GT.workingIniPath + "wsjtx_log.adi"), false); } } @@ -1161,31 +1158,31 @@ function findTrustedQSLPaths() var process = require("process"); var base = null; - if (g_trustedQslSettings.stationFileValid == true) + if (GT.trustedQslSettings.stationFileValid == true) { // double check the presence of the station_data; - if (!fs.existsSync(g_trustedQslSettings.stationFile)) + if (!fs.existsSync(GT.trustedQslSettings.stationFile)) { - g_trustedQslSettings.stationFileValid = false; + GT.trustedQslSettings.stationFileValid = false; } } - if (g_trustedQslSettings.stationFileValid == false) + if (GT.trustedQslSettings.stationFileValid == false) { - if (g_platform == "windows") + if (GT.platform == "windows") { base = process.env.APPDATA + "\\TrustedQSL\\station_data"; if (fs.existsSync(base)) { - g_trustedQslSettings.stationFile = base; - g_trustedQslSettings.stationFileValid = true; + GT.trustedQslSettings.stationFile = base; + GT.trustedQslSettings.stationFileValid = true; } else { base = process.env.LOCALAPPDATA + "\\TrustedQSL\\station_data"; if (fs.existsSync(base)) { - g_trustedQslSettings.stationFile = base; - g_trustedQslSettings.stationFileValid = true; + GT.trustedQslSettings.stationFile = base; + GT.trustedQslSettings.stationFileValid = true; } } } @@ -1194,12 +1191,12 @@ function findTrustedQSLPaths() base = process.env.HOME + "/.tqsl/station_data"; if (fs.existsSync(base)) { - g_trustedQslSettings.stationFile = base; - g_trustedQslSettings.stationFileValid = true; + GT.trustedQslSettings.stationFile = base; + GT.trustedQslSettings.stationFileValid = true; } } } - if (g_trustedQslSettings.stationFileValid == true) + if (GT.trustedQslSettings.stationFileValid == true) { var validate = false; var option = document.createElement("option"); @@ -1207,7 +1204,7 @@ function findTrustedQSLPaths() option.text = "Select a Station"; lotwStation.appendChild(option); - var buffer = fs.readFileSync(g_trustedQslSettings.stationFile, "UTF-8"); + var buffer = fs.readFileSync(GT.trustedQslSettings.stationFile, "UTF-8"); parser = new DOMParser(); xmlDoc = parser.parseFromString(buffer, "text/xml"); var x = xmlDoc.getElementsByTagName("StationData"); @@ -1216,7 +1213,7 @@ function findTrustedQSLPaths() option = document.createElement("option"); option.value = x[i].getAttribute("name"); option.text = x[i].getAttribute("name"); - if (option.value == g_adifLogSettings.text.lotwStation) + if (option.value == GT.adifLogSettings.text.lotwStation) { option.selected = true; validate = true; @@ -1229,32 +1226,32 @@ function findTrustedQSLPaths() } } - if (g_trustedQslSettings.binaryFileValid == true) + if (GT.trustedQslSettings.binaryFileValid == true) { // double check the presence of the TrustedQSL binary; - if (!fs.existsSync(g_trustedQslSettings.binaryFile)) + if (!fs.existsSync(GT.trustedQslSettings.binaryFile)) { - g_trustedQslSettings.binaryFileValid = false; + GT.trustedQslSettings.binaryFileValid = false; } } - if (g_trustedQslSettings.binaryFileValid == false || g_platform == "mac") + if (GT.trustedQslSettings.binaryFileValid == false || GT.platform == "mac") { - if (g_platform == "windows") + if (GT.platform == "windows") { base = process.env["ProgramFiles(x86)"] + "\\TrustedQSL\\tqsl.exe"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } } - else if (g_platform == "mac") + else if (GT.platform == "mac") { base = "/Applications/TrustedQSL/tqsl.app/Contents/MacOS/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } else { @@ -1263,8 +1260,8 @@ function findTrustedQSLPaths() "/Applications/TrustedQSL/tqsl.app/Contents/MacOS/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } else { @@ -1272,16 +1269,16 @@ function findTrustedQSLPaths() process.env.HOME + "/Applications/tqsl.app/Contents/MacOS/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } else { base = "/Applications/tqsl.app/Contents/MacOS/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } else { @@ -1290,8 +1287,8 @@ function findTrustedQSLPaths() "/Desktop/TrustedQSL/tqsl.app/Contents/MacOS/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } else { @@ -1300,8 +1297,8 @@ function findTrustedQSLPaths() "/Applications/Ham Radio/tqsl.app/Contents/MacOS/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } } } @@ -1309,40 +1306,40 @@ function findTrustedQSLPaths() } } } - else if (g_platform == "linux") + else if (GT.platform == "linux") { base = "/usr/bin/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } else { base = "/usr/local/bin/tqsl"; if (fs.existsSync(base)) { - g_trustedQslSettings.binaryFile = base; - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFile = base; + GT.trustedQslSettings.binaryFileValid = true; } } } } - localStorage.trustedQslSettings = JSON.stringify(g_trustedQslSettings); + localStorage.trustedQslSettings = JSON.stringify(GT.trustedQslSettings); } function startupAdifLoadFunction() { var fs = require("fs"); - for (var i in g_startupLogs) + for (var i in GT.startupLogs) { try { - if (fs.existsSync(g_startupLogs[i].file)) + if (fs.existsSync(GT.startupLogs[i].file)) { - g_fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(g_startupLogs[i].file), false); + GT.fromDirectCallNoFileDialog = true; + onAdiLoadComplete(fs.readFileSync(GT.startupLogs[i].file), false); } } catch (e) {} @@ -1351,19 +1348,19 @@ function startupAdifLoadFunction() function setAdifStartup(checkbox) { - if (g_trustedQslSettings.binaryFile == null) - { g_trustedQslSettings.binaryFile = ""; } + if (GT.trustedQslSettings.binaryFile == null) + { GT.trustedQslSettings.binaryFile = ""; } if ( - g_trustedQslSettings.binaryFile.endsWith("tqsl.exe") || - g_trustedQslSettings.binaryFile.endsWith("tqsl") + GT.trustedQslSettings.binaryFile.endsWith("tqsl.exe") || + GT.trustedQslSettings.binaryFile.endsWith("tqsl") ) { - g_trustedQslSettings.binaryFileValid = true; + GT.trustedQslSettings.binaryFileValid = true; } - else g_trustedQslSettings.binaryFileValid = false; + else GT.trustedQslSettings.binaryFileValid = false; - if (g_trustedQslSettings.binaryFileValid == true) + if (GT.trustedQslSettings.binaryFileValid == true) { tqslFileDiv.style.backgroundColor = "blue"; } @@ -1372,20 +1369,20 @@ function setAdifStartup(checkbox) tqslFileDiv.style.backgroundColor = "red"; } tqslFileDiv.innerHTML = - "" + start_and_end(g_trustedQslSettings.binaryFile) + ""; + "" + start_and_end(GT.trustedQslSettings.binaryFile) + ""; if (buttonAdifCheckBox.checked || loadAdifCheckBox.checked) { var worker = ""; - if (g_startupLogs.length > 0) + if (GT.startupLogs.length > 0) { worker += ""; - for (var i in g_startupLogs) + for (var i in GT.startupLogs) { worker += ""; @@ -1402,38 +1399,38 @@ function setAdifStartup(checkbox) else { startupLogFileDiv.innerHTML = "No file(s) selected"; - startupFileSelector.setAttribute("type", ""); - startupFileSelector.setAttribute("type", "file"); - startupFileSelector.setAttribute("accept", ".adi*"); - startupFileSelector.value = null; + GT.startupFileSelector.setAttribute("type", ""); + GT.startupFileSelector.setAttribute("type", "file"); + GT.startupFileSelector.setAttribute("accept", ".adi*"); + GT.startupFileSelector.value = null; selectFileOnStartupDiv.style.display = "none"; } } function removeStartupLog(i) { - if (i in g_startupLogs) + if (i in GT.startupLogs) { - g_startupLogs.splice(i, 1); - localStorage.startupLogs = JSON.stringify(g_startupLogs); + GT.startupLogs.splice(i, 1); + localStorage.startupLogs = JSON.stringify(GT.startupLogs); setAdifStartup(loadAdifCheckBox); } } function startupAdifLoadCheck() { - logEventMedia.value = g_alertSettings.logEventMedia; + logEventMedia.value = GT.alertSettings.logEventMedia; loadWsjtLogFile(); if (loadGTCheckBox.checked == true) loadGtQSOLogFile(); - if (loadAdifCheckBox.checked == true && g_startupLogs.length > 0) + if (loadAdifCheckBox.checked == true && GT.startupLogs.length > 0) { startupAdifLoadFunction(); } - if (g_mapSettings.offlineMode == false) + if (GT.mapSettings.offlineMode == false) { - if (g_appSettings.gtFlagImgSrc == 1) showGtFlags(); + if (GT.appSettings.gtFlagImgSrc == 1) showGtFlags(); if (loadLOTWCheckBox.checked == true) { @@ -1765,24 +1762,24 @@ function convertToDate(julian) return new Date((Number(julian) - UNIX_EPOCH_JULIAN_DATE) * DAY); } -var CLk = "25bc718451a71954cb6d0d1b50541dd45d4ba148"; +const CLk = "25bc718451a71954cb6d0d1b50541dd45d4ba148"; -var g_lastReport = ""; +GT.lastReport = ""; -var g_oldStyleLogMessage = null; +GT.oldStyleLogMessage = null; function oldSendToLogger() { - var newMessage = Object.assign({}, g_oldStyleLogMessage); + var newMessage = Object.assign({}, GT.oldStyleLogMessage); - var band = Number(newMessage.Frequency / 1000000).formatBand(); + var band = formatBand(Number(newMessage.Frequency / 1000000)); if ( newMessage.DXGrid.length == 0 && - newMessage.DXCall + band + newMessage.MO in g_liveCallsigns + newMessage.DXCall + band + newMessage.MO in GT.liveCallsigns ) { - newMessage.DXGrid = g_liveCallsigns[ + newMessage.DXGrid = GT.liveCallsigns[ newMessage.DXCall + band + newMessage.MO ].grid.substr(0, 4); } @@ -1791,7 +1788,7 @@ function oldSendToLogger() report += valueToAdiField( "BAND", - Number(newMessage.Frequency / 1000000).formatBand() + formatBand(Number(newMessage.Frequency / 1000000)) ); report += valueToAdiField("CALL", newMessage.DXCall.toUpperCase()); report += valueToAdiField( @@ -1850,7 +1847,7 @@ function oldSendToLogger() sendToLogger(report); } -var g_adifLookupMap = { +GT.adifLookupMap = { name: "NAME", iota: "IOTA", sota: "SOTA_REF", @@ -1875,17 +1872,17 @@ function sendToLogger(ADIF) var localHash = record.CALL + record.BAND + localMode; if ( (!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) && - localHash in g_liveCallsigns + localHash in GT.liveCallsigns ) { - record.GRIDSQUARE = g_liveCallsigns[localHash].grid.substr(0, 4); + record.GRIDSQUARE = GT.liveCallsigns[localHash].grid.substr(0, 4); } - if (g_appSettings.potaEnabled == 1 && localHash in g_liveCallsigns && g_liveCallsigns[localHash].pota) + if (GT.appSettings.potaEnabled == 1 && localHash in GT.liveCallsigns && GT.liveCallsigns[localHash].pota) { - if (g_liveCallsigns[localHash].pota != "?-????") + if (GT.liveCallsigns[localHash].pota != "?-????") { - record.POTA = g_liveCallsigns[localHash].pota; + record.POTA = GT.liveCallsigns[localHash].pota; } } @@ -1922,12 +1919,12 @@ function sendToLogger(ADIF) // Tag: This is going to bite us in the butt later, but leaving it alone. if (!("COUNTRY" in record) && Number(record.DXCC) > 0) { - record.COUNTRY = g_dxccToADIFName[Number(record.DXCC)]; + record.COUNTRY = GT.dxccToADIFName[Number(record.DXCC)]; } - if (g_appSettings.lookupMerge == true) + if (GT.appSettings.lookupMerge == true) { - var request = g_Idb + var request = GT.Idb .transaction(["lookups"], "readwrite") .objectStore("lookups") .get(record.CALL); @@ -1939,9 +1936,9 @@ function sendToLogger(ADIF) var lookup = request.result; for (var key in lookup) { - if (key in g_adifLookupMap) + if (key in GT.adifLookupMap) { - record[g_adifLookupMap[key]] = lookup[key]; + record[GT.adifLookupMap[key]] = lookup[key]; } } if ("GRIDSQUARE" in record && "grid" in lookup) @@ -1954,7 +1951,7 @@ function sendToLogger(ADIF) } } if ( - g_appSettings.lookupMissingGrid && + GT.appSettings.lookupMissingGrid && "grid" in lookup && (!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) ) @@ -1997,42 +1994,42 @@ function finishSendingReport(record, localMode) reportWithPota += ""; // Full record dupe check - if (report != g_lastReport) + if (report != GT.lastReport) { - g_lastReport = report; + GT.lastReport = report; - if (g_appSettings.potaEnabled == 1 && "POTA" in record) + if (GT.appSettings.potaEnabled == 1 && "POTA" in record) { reportPotaQSO(record); addLastTraffic("Spotted to POTA"); } if ( - g_N1MMSettings.enable == true && - g_N1MMSettings.port > 1024 && - g_N1MMSettings.ip.length > 4 + GT.N1MMSettings.enable == true && + GT.N1MMSettings.port > 1024 && + GT.N1MMSettings.ip.length > 4 ) { sendUdpMessage( report, report.length, - parseInt(g_N1MMSettings.port), - g_N1MMSettings.ip + parseInt(GT.N1MMSettings.port), + GT.N1MMSettings.ip ); addLastTraffic("Logged to N1MM"); } if ( - g_log4OMSettings.enable == true && - g_log4OMSettings.port > 1024 && - g_log4OMSettings.ip.length > 4 + GT.log4OMSettings.enable == true && + GT.log4OMSettings.port > 1024 && + GT.log4OMSettings.ip.length > 4 ) { sendUdpMessage( "ADD " + report, report.length + 4, - parseInt(g_log4OMSettings.port), - g_log4OMSettings.ip + parseInt(GT.log4OMSettings.port), + GT.log4OMSettings.ip ); addLastTraffic("Logged to Log4OM"); } @@ -2051,7 +2048,7 @@ function finishSendingReport(record, localMode) if (logGTqsoCheckBox.checked == true) { var fs = require("fs"); - fs.appendFileSync(g_qsoLogFile, reportWithPota + "\r\n"); + fs.appendFileSync(GT.qsoLogFile, reportWithPota + "\r\n"); addLastTraffic( "Logged to GridTracker backup" ); @@ -2101,14 +2098,14 @@ function finishSendingReport(record, localMode) } if ( - g_acLogSettings.enable == true && - g_acLogSettings.port > 0 && - g_acLogSettings.ip.length > 4 + GT.acLogSettings.enable == true && + GT.acLogSettings.port > 0 && + GT.acLogSettings.ip.length > 4 ) { try { - sendACLogMessage(record, g_acLogSettings.port, g_acLogSettings.ip); + sendACLogMessage(record, GT.acLogSettings.port, GT.acLogSettings.ip); addLastTraffic("Logged to N3FJP"); } catch (e) @@ -2118,17 +2115,17 @@ function finishSendingReport(record, localMode) } if ( - g_dxkLogSettings.enable == true && - g_dxkLogSettings.port > 0 && - g_dxkLogSettings.ip.length > 4 + GT.dxkLogSettings.enable == true && + GT.dxkLogSettings.port > 0 && + GT.dxkLogSettings.ip.length > 4 ) { try { sendDXKeeperLogMessage( report, - g_dxkLogSettings.port, - g_dxkLogSettings.ip + GT.dxkLogSettings.port, + GT.dxkLogSettings.ip ); addLastTraffic("Logged to DXKeeper"); } @@ -2139,17 +2136,17 @@ function finishSendingReport(record, localMode) } if ( - g_HRDLogbookLogSettings.enable == true && - g_HRDLogbookLogSettings.port > 0 && - g_HRDLogbookLogSettings.ip.length > 4 + GT.HRDLogbookLogSettings.enable == true && + GT.HRDLogbookLogSettings.port > 0 && + GT.HRDLogbookLogSettings.ip.length > 4 ) { try { sendHRDLogbookEntry( record, - g_HRDLogbookLogSettings.port, - g_HRDLogbookLogSettings.ip + GT.HRDLogbookLogSettings.port, + GT.HRDLogbookLogSettings.ip ); addLastTraffic( "Logged to HRD Logbook" @@ -2302,7 +2299,7 @@ function eqslCallback(buffer, flag) function eQSLTest(test) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; eQSLTestResult.innerHTML = "Testing"; @@ -2320,7 +2317,7 @@ function eQSLTest(test) function sendeQSLEntry(report) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (logeQSLQSOCheckBox.checked == true) { @@ -2343,7 +2340,7 @@ function sendeQSLEntry(report) function testTrustedQSL(test) { - if (g_mapSettings.offlineMode == true) + if (GT.mapSettings.offlineMode == true) { lotwTestResult.innerHTML = "Currently
offline"; return; @@ -2351,8 +2348,8 @@ function testTrustedQSL(test) if ( logLOTWqsoCheckBox.checked == true && - g_trustedQslSettings.binaryFileValid == true && - g_trustedQslSettings.stationFileValid == true && + GT.trustedQslSettings.binaryFileValid == true && + GT.trustedQslSettings.stationFileValid == true && lotwStation.value.length > 0 ) { @@ -2364,7 +2361,7 @@ function testTrustedQSL(test) options.push("-v"); child_process.execFile( - g_trustedQslSettings.binaryFile, + GT.trustedQslSettings.binaryFile, options, (error, stdout, stderr) => { @@ -2379,25 +2376,25 @@ function testTrustedQSL(test) else { var worker = ""; - if (g_trustedQslSettings.binaryFileValid == false) + if (GT.trustedQslSettings.binaryFileValid == false) { worker += "Invalid tqsl executable
"; } - if (g_trustedQslSettings.stationFileValid == false) + if (GT.trustedQslSettings.stationFileValid == false) { worker += "TrustQSL not installed
"; } if (!ValidateText(lotwTrusted)) worker += "TQSL Password missing
"; if (!ValidateText(lotwStation)) worker += "Select Station
"; lotwTestResult.innerHTML = worker; } } -var g_trustTempPath = ""; +GT.trustTempPath = ""; function sendLotwLogEntry(report) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if ( logLOTWqsoCheckBox.checked == true && - g_trustedQslSettings.binaryFileValid == true && - g_trustedQslSettings.stationFileValid == true && + GT.trustedQslSettings.binaryFileValid == true && + GT.trustedQslSettings.stationFileValid == true && lotwStation.value.length > 0 ) { @@ -2409,8 +2406,8 @@ function sendLotwLogEntry(report) header += "\r\n"; var finalLog = header + report + "\r\n"; - g_trustTempPath = os.tmpdir() + g_dirSeperator + unique(report) + ".adif"; - fs.writeFileSync(g_trustTempPath, finalLog); + GT.trustTempPath = os.tmpdir() + GT.dirSeperator + unique(report) + ".adif"; + fs.writeFileSync(GT.trustTempPath, finalLog); var child_process = require("child_process"); var options = Array(); @@ -2427,10 +2424,10 @@ function sendLotwLogEntry(report) options.push("-x"); options.push("-d"); options.push("-u"); - options.push(g_trustTempPath); + options.push(GT.trustTempPath); child_process.execFile( - g_trustedQslSettings.binaryFile, + GT.trustedQslSettings.binaryFile, options, (error, stdout, stderr) => // eslint-disable-line node/handle-callback-err { @@ -2442,7 +2439,7 @@ function sendLotwLogEntry(report) { addLastTraffic("Logged to TQSL"); } - fs.unlinkSync(g_trustTempPath); + fs.unlinkSync(GT.trustTempPath); } ); } @@ -2450,47 +2447,47 @@ function sendLotwLogEntry(report) function n1mmLoggerChanged() { - g_N1MMSettings.enable = buttonN1MMCheckBox.checked; - g_N1MMSettings.ip = N1MMIpInput.value; - g_N1MMSettings.port = N1MMPortInput.value; + GT.N1MMSettings.enable = buttonN1MMCheckBox.checked; + GT.N1MMSettings.ip = N1MMIpInput.value; + GT.N1MMSettings.port = N1MMPortInput.value; - localStorage.N1MMSettings = JSON.stringify(g_N1MMSettings); + localStorage.N1MMSettings = JSON.stringify(GT.N1MMSettings); } function log4OMLoggerChanged() { - g_log4OMSettings.enable = buttonLog4OMCheckBox.checked; - g_log4OMSettings.ip = log4OMIpInput.value; - g_log4OMSettings.port = log4OMPortInput.value; + GT.log4OMSettings.enable = buttonLog4OMCheckBox.checked; + GT.log4OMSettings.ip = log4OMIpInput.value; + GT.log4OMSettings.port = log4OMPortInput.value; - localStorage.log4OMSettings = JSON.stringify(g_log4OMSettings); + localStorage.log4OMSettings = JSON.stringify(GT.log4OMSettings); } function acLogLoggerChanged() { - g_acLogSettings.enable = buttonacLogCheckBox.checked; - g_acLogSettings.ip = acLogIpInput.value; - g_acLogSettings.port = acLogPortInput.value; + GT.acLogSettings.enable = buttonacLogCheckBox.checked; + GT.acLogSettings.ip = acLogIpInput.value; + GT.acLogSettings.port = acLogPortInput.value; - localStorage.acLogSettings = JSON.stringify(g_acLogSettings); + localStorage.acLogSettings = JSON.stringify(GT.acLogSettings); } function dxkLogLoggerChanged() { - g_dxkLogSettings.enable = buttondxkLogCheckBox.checked; - g_dxkLogSettings.ip = dxkLogIpInput.value; - g_dxkLogSettings.port = dxkLogPortInput.value; + GT.dxkLogSettings.enable = buttondxkLogCheckBox.checked; + GT.dxkLogSettings.ip = dxkLogIpInput.value; + GT.dxkLogSettings.port = dxkLogPortInput.value; - localStorage.dxkLogSettings = JSON.stringify(g_dxkLogSettings); + localStorage.dxkLogSettings = JSON.stringify(GT.dxkLogSettings); } function hrdLogbookLoggerChanged() { - g_HRDLogbookLogSettings.enable = buttonHrdLogbookCheckBox.checked; - g_HRDLogbookLogSettings.ip = hrdLogbookIpInput.value; - g_HRDLogbookLogSettings.port = hrdLogbookPortInput.value; + GT.HRDLogbookLogSettings.enable = buttonHrdLogbookCheckBox.checked; + GT.HRDLogbookLogSettings.ip = hrdLogbookIpInput.value; + GT.HRDLogbookLogSettings.port = hrdLogbookPortInput.value; - localStorage.HRDLogbookLogSettings = JSON.stringify(g_HRDLogbookLogSettings); + localStorage.HRDLogbookLogSettings = JSON.stringify(GT.HRDLogbookLogSettings); } function CloudUrlErrorCallback( @@ -2625,7 +2622,7 @@ function postRetryErrorCallaback( function sendQrzLogEntry(report) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (logQRZqsoCheckBox.checked == true && ValidateQrzApi(qrzApiKey)) { @@ -2655,7 +2652,7 @@ function clubLogQsoResult(buffer, flag) function sendClubLogEntry(report) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (logClubqsoCheckBox.checked == true) { @@ -2686,7 +2683,7 @@ function sendClubLogEntry(report) function sendCloudlogEntry(report) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (logCloudlogQSOCheckBox.checked == true) { @@ -2728,7 +2725,7 @@ function hrdSendLogResult(buffer, flag) function sendHrdLogEntry(report) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (logHRDLOGqsoCheckBox.checked == true) { @@ -3096,7 +3093,7 @@ function sendACLogMessage(record, port, address) report += aclUpdateControlValue("TXTENTRYCQZONE", adifField(record, "CQZ")); report += aclUpdateControlValue( "TXTENTRYCOUNTYR", - adifField(record, "CNTY").replaceAll(", ", ",") + replaceAll(adifField(record, "CNTY"), ", ", ",") ); var sentSpcNum = false; diff --git a/package.nw/lib/alerts.js b/package.nw/lib/alerts.js index fe60e444..75a444cf 100644 --- a/package.nw/lib/alerts.js +++ b/package.nw/lib/alerts.js @@ -2,20 +2,20 @@ // All rights reserved. // See LICENSE for more information. -var g_alerts = Object(); -var g_classicAlerts = Object(); -var g_phonetics = Object(); -var g_enums = Object(); -var g_speechSettings = Object(); -var g_audioSettings = Object(); -var g_speechAvailable = false; -var g_alertSettings = Object(); +GT.alerts = Object(); +GT.classicAlerts = Object(); +GT.phonetics = Object(); +GT.enums = Object(); +GT.speechSettings = Object(); +GT.audioSettings = Object(); +GT.speechAvailable = false; +GT.alertSettings = Object(); function loadAlerts() { if (typeof localStorage.classicAlertsVersion == "undefined") { - g_classicAlerts = { + GT.classicAlerts = { huntCallsign: false, huntGrid: false, huntDXCC: false, @@ -47,65 +47,65 @@ function loadAlerts() huntITUzNotifyMedia: "none", huntStatesNotifyMedia: "none" }; - localStorage.classicAlerts = JSON.stringify(g_classicAlerts); + localStorage.classicAlerts = JSON.stringify(GT.classicAlerts); - g_alertSettings = Object(); - g_alertSettings.requireGrid = true; - g_alertSettings.wantMaxDT = false; - g_alertSettings.wantMinDB = false; - g_alertSettings.wantMinFreq = false; - g_alertSettings.wantMaxFreq = false; - g_alertSettings.maxDT = 0.5; - g_alertSettings.minDb = -24; - g_alertSettings.minFreq = 400; - g_alertSettings.maxFreq = 3500; - g_alertSettings.noMyDxcc = false; - g_alertSettings.onlyMyDxcc = false; - g_alertSettings.noRoundUp = false; - g_alertSettings.onlyRoundUp = false; - g_alertSettings.cqOnly = true; - g_alertSettings.usesLoTW = false; - g_alertSettings.useseQSL = false; - g_alertSettings.reference = 0; - g_alertSettings.logEventMedia = "Ping-coin.mp3"; + GT.alertSettings = Object(); + GT.alertSettings.requireGrid = true; + GT.alertSettings.wantMaxDT = false; + GT.alertSettings.wantMinDB = false; + GT.alertSettings.wantMinFreq = false; + GT.alertSettings.wantMaxFreq = false; + GT.alertSettings.maxDT = 0.5; + GT.alertSettings.minDb = -24; + GT.alertSettings.minFreq = 400; + GT.alertSettings.maxFreq = 3500; + GT.alertSettings.noMyDxcc = false; + GT.alertSettings.onlyMyDxcc = false; + GT.alertSettings.noRoundUp = false; + GT.alertSettings.onlyRoundUp = false; + GT.alertSettings.cqOnly = true; + GT.alertSettings.usesLoTW = false; + GT.alertSettings.useseQSL = false; + GT.alertSettings.reference = 0; + GT.alertSettings.logEventMedia = "Ping-coin.mp3"; - localStorage.alertSettings = JSON.stringify(g_alertSettings); + localStorage.alertSettings = JSON.stringify(GT.alertSettings); localStorage.classicAlertsVersion = gtVersion; } else { - g_classicAlerts = JSON.parse(localStorage.classicAlerts); - g_alertSettings = JSON.parse(localStorage.alertSettings); + GT.classicAlerts = JSON.parse(localStorage.classicAlerts); + GT.alertSettings = JSON.parse(localStorage.alertSettings); } - if (typeof g_alertSettings.reference == "undefined") + if (typeof GT.alertSettings.reference == "undefined") { - g_alertSettings.reference = 0; + GT.alertSettings.reference = 0; - localStorage.alertSettings = JSON.stringify(g_alertSettings); + localStorage.alertSettings = JSON.stringify(GT.alertSettings); } - if (typeof g_alertSettings.logEventMedia == "undefined") + if (typeof GT.alertSettings.logEventMedia == "undefined") { - g_alertSettings.logEventMedia = "Ping-coin.mp3"; - localStorage.alertSettings = JSON.stringify(g_alertSettings); + GT.alertSettings.logEventMedia = "Ping-coin.mp3"; + localStorage.alertSettings = JSON.stringify(GT.alertSettings); } - if (typeof g_classicAlerts.huntRoster == "undefined") + if (typeof GT.classicAlerts.huntRoster == "undefined") { - g_classicAlerts.huntRoster = false; - g_classicAlerts.huntRosterNotify = 1; - g_classicAlerts.huntRosterNotifyWord = "New hit"; - g_classicAlerts.huntRosterNotifyMedia = "none"; + GT.classicAlerts.huntRoster = false; + GT.classicAlerts.huntRosterNotify = 1; + GT.classicAlerts.huntRosterNotifyWord = "New hit"; + GT.classicAlerts.huntRosterNotifyMedia = "none"; - localStorage.classicAlerts = JSON.stringify(g_classicAlerts); + localStorage.classicAlerts = JSON.stringify(GT.classicAlerts); } loadClassicAlertView(); if (typeof localStorage.savedAlerts == "undefined") { - g_alerts = { + GT.alerts = { popup: { value: "QRZ", type: "4", @@ -120,131 +120,131 @@ function loadAlerts() } }; - g_speechSettings = Object(); - g_audioSettings = Object(); - g_speechSettings.rate = 1; - g_speechSettings.pitch = 1; - g_speechSettings.volume = 1; - g_speechSettings.voice = 0; - g_speechSettings.phonetics = true; - g_audioSettings.volume = 1; + GT.speechSettings = Object(); + GT.audioSettings = Object(); + GT.speechSettings.rate = 1; + GT.speechSettings.pitch = 1; + GT.speechSettings.volume = 1; + GT.speechSettings.voice = 0; + GT.speechSettings.phonetics = true; + GT.audioSettings.volume = 1; saveAlerts(); } else { - g_alerts = JSON.parse(localStorage.savedAlerts); - for (var key in g_alerts) + GT.alerts = JSON.parse(localStorage.savedAlerts); + for (var key in GT.alerts) { if ( - g_alerts[key].type != 0 && - g_alerts[key].type != 2 && - g_alerts[key].type != 4 && - g_alerts[key].type != 5 && - g_alerts[key].type != 6 + GT.alerts[key].type != 0 && + GT.alerts[key].type != 2 && + GT.alerts[key].type != 4 && + GT.alerts[key].type != 5 && + GT.alerts[key].type != 6 ) - { delete g_alerts[key]; } - if (g_alerts[key].repeat == 3) delete g_alerts[key]; + { delete GT.alerts[key]; } + if (GT.alerts[key].repeat == 3) delete GT.alerts[key]; } - g_speechSettings = JSON.parse(localStorage.speechSettings); - g_audioSettings = JSON.parse(localStorage.audioSettings); + GT.speechSettings = JSON.parse(localStorage.speechSettings); + GT.audioSettings = JSON.parse(localStorage.audioSettings); } - if (g_speechSettings.voice > 0) + if (GT.speechSettings.voice > 0) { - alertVoiceInput.value = g_speechSettings.voice - 1; + alertVoiceInput.value = GT.speechSettings.voice - 1; } - speechVolume.value = g_speechSettings.volume; - speechPitch.value = g_speechSettings.pitch; - speechRate.value = g_speechSettings.rate; - speechPhonetics.checked = g_speechSettings.phonetics; + speechVolume.value = GT.speechSettings.volume; + speechPitch.value = GT.speechSettings.pitch; + speechRate.value = GT.speechSettings.rate; + speechPhonetics.checked = GT.speechSettings.phonetics; speechVolumeTd.innerText = speechVolume.value; speechPitchTd.innerText = speechPitch.value; speechRateTd.innerText = speechRate.value; - audioVolume.value = g_audioSettings.volume; + audioVolume.value = GT.audioSettings.volume; audioVolumeTd.innerText = parseInt(audioVolume.value * 100) + "%"; - wantGrid.checked = g_alertSettings.requireGrid; + wantGrid.checked = GT.alertSettings.requireGrid; - wantMaxDT.checked = g_alertSettings.wantMaxDT; - wantMinDB.checked = g_alertSettings.wantMinDB; - wantMinFreq.checked = g_alertSettings.wantMinFreq; - wantMaxFreq.checked = g_alertSettings.wantMaxFreq; + wantMaxDT.checked = GT.alertSettings.wantMaxDT; + wantMinDB.checked = GT.alertSettings.wantMinDB; + wantMinFreq.checked = GT.alertSettings.wantMinFreq; + wantMaxFreq.checked = GT.alertSettings.wantMaxFreq; - maxDTView.innerHTML = maxDT.value = g_alertSettings.maxDT; - minDbView.innerHTML = minDb.value = g_alertSettings.minDb; - minFreqView.innerHTML = minFreq.value = g_alertSettings.minFreq; - maxFreqView.innerHTML = maxFreq.value = g_alertSettings.maxFreq; + maxDTView.innerHTML = maxDT.value = GT.alertSettings.maxDT; + minDbView.innerHTML = minDb.value = GT.alertSettings.minDb; + minFreqView.innerHTML = minFreq.value = GT.alertSettings.minFreq; + maxFreqView.innerHTML = maxFreq.value = GT.alertSettings.maxFreq; - cqOnly.checked = g_alertSettings.cqOnly; - noMyDxcc.checked = g_alertSettings.noMyDxcc; - onlyMyDxcc.checked = g_alertSettings.onlyMyDxcc; - noRoundUp.checked = g_alertSettings.noRoundUp; - onlyRoundUp.checked = g_alertSettings.onlyRoundUp; - usesLoTW.checked = g_alertSettings.usesLoTW; - useseQSL.checked = g_alertSettings.useseQSL; + cqOnly.checked = GT.alertSettings.cqOnly; + noMyDxcc.checked = GT.alertSettings.noMyDxcc; + onlyMyDxcc.checked = GT.alertSettings.onlyMyDxcc; + noRoundUp.checked = GT.alertSettings.noRoundUp; + onlyRoundUp.checked = GT.alertSettings.onlyRoundUp; + usesLoTW.checked = GT.alertSettings.usesLoTW; + useseQSL.checked = GT.alertSettings.useseQSL; - referenceNeed.value = g_alertSettings.reference; - logEventMedia.value = g_alertSettings.logEventMedia; + referenceNeed.value = GT.alertSettings.reference; + logEventMedia.value = GT.alertSettings.logEventMedia; setAlertVisual(); } function newLogEventSetting(obj) { - g_alertSettings.logEventMedia = obj.value; - localStorage.alertSettings = JSON.stringify(g_alertSettings); + GT.alertSettings.logEventMedia = obj.value; + localStorage.alertSettings = JSON.stringify(GT.alertSettings); } function exceptionValuesChanged() { setAlertVisual(); - g_alertSettings.requireGrid = wantGrid.checked; + GT.alertSettings.requireGrid = wantGrid.checked; - g_alertSettings.wantMaxDT = wantMaxDT.checked; - g_alertSettings.wantMinDB = wantMinDB.checked; - g_alertSettings.wantMinFreq = wantMinFreq.checked; - g_alertSettings.wantMaxFreq = wantMaxFreq.checked; + GT.alertSettings.wantMaxDT = wantMaxDT.checked; + GT.alertSettings.wantMinDB = wantMinDB.checked; + GT.alertSettings.wantMinFreq = wantMinFreq.checked; + GT.alertSettings.wantMaxFreq = wantMaxFreq.checked; - maxDTView.innerHTML = g_alertSettings.maxDT = maxDT.value; - minDbView.innerHTML = g_alertSettings.minDb = minDb.value; - minFreqView.innerHTML = g_alertSettings.minFreq = minFreq.value; - maxFreqView.innerHTML = g_alertSettings.maxFreq = maxFreq.value; + maxDTView.innerHTML = GT.alertSettings.maxDT = maxDT.value; + minDbView.innerHTML = GT.alertSettings.minDb = minDb.value; + minFreqView.innerHTML = GT.alertSettings.minFreq = minFreq.value; + maxFreqView.innerHTML = GT.alertSettings.maxFreq = maxFreq.value; - g_alertSettings.cqOnly = cqOnly.checked; - g_alertSettings.noMyDxcc = noMyDxcc.checked; - g_alertSettings.onlyMyDxcc = onlyMyDxcc.checked; - g_alertSettings.noRoundUp = noRoundUp.checked; - g_alertSettings.onlyRoundUp = onlyRoundUp.checked; - g_alertSettings.usesLoTW = usesLoTW.checked; - g_alertSettings.useseQSL = useseQSL.checked; + GT.alertSettings.cqOnly = cqOnly.checked; + GT.alertSettings.noMyDxcc = noMyDxcc.checked; + GT.alertSettings.onlyMyDxcc = onlyMyDxcc.checked; + GT.alertSettings.noRoundUp = noRoundUp.checked; + GT.alertSettings.onlyRoundUp = onlyRoundUp.checked; + GT.alertSettings.usesLoTW = usesLoTW.checked; + GT.alertSettings.useseQSL = useseQSL.checked; - g_alertSettings.reference = referenceNeed.value; + GT.alertSettings.reference = referenceNeed.value; - localStorage.alertSettings = JSON.stringify(g_alertSettings); + localStorage.alertSettings = JSON.stringify(GT.alertSettings); } function hashMaker(band, mode) { // "Current Band & Mode" - if (g_alertSettings.reference == 0) return band + mode; + if (GT.alertSettings.reference == 0) return band + mode; // "Current Band, Any Mode" - if (g_alertSettings.reference == 1) return band; + if (GT.alertSettings.reference == 1) return band; // "Current Band, Any Digi Mode" - if (g_alertSettings.reference == 2) return band + "dg"; + if (GT.alertSettings.reference == 2) return band + "dg"; // "Current Mode, Any Band" - if (g_alertSettings.reference == 3) return mode; + if (GT.alertSettings.reference == 3) return mode; // "Any Band, Any Mode" - if (g_alertSettings.reference == 4) return ""; + if (GT.alertSettings.reference == 4) return ""; // "Any Band, Any Digit Mode" - if (g_alertSettings.reference == 5) return "dg"; + if (GT.alertSettings.reference == 5) return "dg"; } function setAlertVisual() @@ -290,38 +290,38 @@ function setAlertVisual() maxFreqView.style.display = "none"; } - if (g_callsignLookups.lotwUseEnable == true) + if (GT.callsignLookups.lotwUseEnable == true) { usesLoTWDiv.style.display = "block"; } else usesLoTWDiv.style.display = "none"; - if (g_callsignLookups.eqslUseEnable == true) + if (GT.callsignLookups.eqslUseEnable == true) { useseQSLDiv.style.display = "block"; } else useseQSLDiv.style.display = "none"; } function saveAlertSettings() { - localStorage.speechSettings = JSON.stringify(g_speechSettings); - localStorage.audioSettings = JSON.stringify(g_audioSettings); + localStorage.speechSettings = JSON.stringify(GT.speechSettings); + localStorage.audioSettings = JSON.stringify(GT.audioSettings); } function saveAlerts() { - localStorage.savedAlerts = JSON.stringify(g_alerts); + localStorage.savedAlerts = JSON.stringify(GT.alerts); saveAlertSettings(); } -var g_testAudioTimer = null; +GT.testAudioTimer = null; function changeAudioValues() { - if (g_testAudioTimer) nodeTimers.clearTimeout(g_testAudioTimer); + if (GT.testAudioTimer) nodeTimers.clearTimeout(GT.testAudioTimer); - g_audioSettings.volume = audioVolume.value; + GT.audioSettings.volume = audioVolume.value; audioVolumeTd.innerText = parseInt(audioVolume.value * 100) + "%"; - g_testAudioTimer = nodeTimers.setTimeout(playTestFile, 200); + GT.testAudioTimer = nodeTimers.setTimeout(playTestFile, 200); saveAlertSettings(); } @@ -334,10 +334,10 @@ function changeSpeechValues() { chrome.tts.stop(); - g_speechSettings.volume = speechVolume.value; - g_speechSettings.pitch = speechPitch.value; - g_speechSettings.rate = speechRate.value; - g_speechSettings.phonetics = speechPhonetics.checked; + GT.speechSettings.volume = speechVolume.value; + GT.speechSettings.pitch = speechPitch.value; + GT.speechSettings.rate = speechRate.value; + GT.speechSettings.phonetics = speechPhonetics.checked; speechVolumeTd.innerText = speechVolume.value; speechPitchTd.innerText = speechPitch.value; @@ -399,7 +399,7 @@ function addAlert(value, type, notify, repeat, filename, shortname) { var newKey = unique(value + type + notify + repeat + filename); - if (!g_alerts.hasOwnProperty(newKey)) + if (!GT.alerts.hasOwnProperty(newKey)) { var alertItem = Object(); alertItem.value = value; @@ -412,7 +412,7 @@ function addAlert(value, type, notify, repeat, filename, shortname) alertItem.lastTime = 0; alertItem.fired = 0; alertItem.needAck = 0; - g_alerts[newKey] = alertItem; + GT.alerts[newKey] = alertItem; saveAlerts(); return true; @@ -422,23 +422,23 @@ function addAlert(value, type, notify, repeat, filename, shortname) function deleteAlert(key) { - delete g_alerts[key]; + delete GT.alerts[key]; saveAlerts(); displayAlerts(); } function resetAlert(key) { - g_alerts[key].lastMessage = ""; - g_alerts[key].lastTime = 0; - g_alerts[key].fired = 0; - g_alerts[key].needAck = 0; + GT.alerts[key].lastMessage = ""; + GT.alerts[key].lastTime = 0; + GT.alerts[key].fired = 0; + GT.alerts[key].needAck = 0; displayAlerts(); } function processAlertMessage(decodeWords, message, band, mode) { - if (Object.keys(g_alerts).length == 0) + if (Object.keys(GT.alerts).length == 0) { // no alerts, don't bother return false; @@ -498,8 +498,8 @@ function processAlertMessage(decodeWords, message, band, mode) var okayToAlert = true; - if (msgDEcallsign + band + mode in g_liveCallsigns) - { found_callsign = g_liveCallsigns[msgDEcallsign + band + mode]; } + if (msgDEcallsign + band + mode in GT.liveCallsigns) + { found_callsign = GT.liveCallsigns[msgDEcallsign + band + mode]; } if (okayToAlert == true) { return checkAlerts(msgDEcallsign, theirGrid, message, found_callsign); } @@ -517,9 +517,9 @@ function checkAlerts( ) { var hadAlert = false; - for (var key in g_alerts) + for (var key in GT.alerts) { - var nalert = g_alerts[key]; + var nalert = GT.alerts[key]; if (nalert.type == 0) { // callsign exatch match @@ -533,7 +533,7 @@ function checkAlerts( { // gridsquare if ( - !(DEcallsign + band + mode in g_tracker.worked.call) && + !(DEcallsign + band + mode in GT.tracker.worked.call) && grid.indexOf(nalert.value) == 0 ) { @@ -554,7 +554,7 @@ function checkAlerts( { // callsign partial if ( - !(DEcallsign + band + mode in g_tracker.worked.call) && + !(DEcallsign + band + mode in GT.tracker.worked.call) && DEcallsign.indexOf(nalert.value) == 0 ) { @@ -568,7 +568,7 @@ function checkAlerts( try { if ( - !(DEcallsign + band + mode in g_tracker.worked.call) && + !(DEcallsign + band + mode in GT.tracker.worked.call) && DEcallsign.match(nalert.value) ) { @@ -605,7 +605,7 @@ function handleAlert(nAlert, target, lastMessage, callsignRecord, grid) ) { // Fix me - g_map + GT.map .getView() .setCenter( ol.extent.getCenter(callsignRecord.rect.getGeometry().getExtent()) @@ -640,7 +640,7 @@ function handleAlert(nAlert, target, lastMessage, callsignRecord, grid) function playAlertMediaFile(filename, overrideMute) { - if (g_appSettings.alertMute && !overrideMute) return; + if (GT.appSettings.alertMute && !overrideMute) return; // check if this is an alert stored with an older version of GT // which has a full file path given. @@ -653,13 +653,13 @@ function playAlertMediaFile(filename, overrideMute) } // construct the path from the user media dir or // fall back on the global media dir - var fpath = path.join(g_userMediaDir, filename); - if (!fs.existsSync(fpath)) fpath = path.join(g_gtMediaDir, filename); + var fpath = path.join(GT.userMediaDir, filename); + if (!fs.existsSync(fpath)) fpath = path.join(GT.gtMediaDir, filename); var audio = document.createElement("audio"); audio.src = "file://" + fpath; - audio.setSinkId(g_soundCard); - audio.volume = g_audioSettings.volume; + audio.setSinkId(GT.soundCard); + audio.volume = GT.audioSettings.volume; audio.play(); } @@ -668,8 +668,8 @@ function stringToPhonetics(string) var newMsg = ""; for (var x = 0; x < string.length; x++) { - if (g_speechSettings.phonetics == true) - { newMsg += g_phonetics[string.substr(x, 1)]; } + if (GT.speechSettings.phonetics == true) + { newMsg += GT.phonetics[string.substr(x, 1)]; } else { if (string.substr(x, 1) == " ") newMsg += ", "; @@ -683,23 +683,23 @@ function stringToPhonetics(string) function speakQRZString(caller, words, you) { - if (g_appSettings.alertMute == 0) + if (GT.appSettings.alertMute == 0) { var sCaller = ""; var sYou = ""; if (caller) sCaller = stringToPhonetics(caller); if (you) sYou = stringToPhonetics(you); - if (g_speechAvailable) + if (GT.speechAvailable) { var speak = sCaller.trim() + ", " + words.trim() + ", " + sYou.trim(); var msg = new SpeechSynthesisUtterance(speak); - msg.lang = g_localeString; - if (g_speechSettings.voice > 0) - { msg.voice = g_voices[g_speechSettings.voice - 1]; } - msg.rate = g_speechSettings.rate; - msg.pitch = g_speechSettings.pitch; - msg.volume = g_speechSettings.volume; + msg.lang = GT.localeString; + if (GT.speechSettings.voice > 0) + { msg.voice = GT.voices[GT.speechSettings.voice - 1]; } + msg.rate = GT.speechSettings.rate; + msg.pitch = GT.speechSettings.pitch; + msg.volume = GT.speechSettings.volume; window.speechSynthesis.speak(msg); } } @@ -707,29 +707,29 @@ function speakQRZString(caller, words, you) function speakAlertString(what, message, target) { - if (g_appSettings.alertMute == 0) + if (GT.appSettings.alertMute == 0) { var sMsg = ""; var sTarget = ""; if (message) sMsg = stringToPhonetics(message); if (target) sTarget = stringToPhonetics(target); - if (g_speechAvailable) + if (GT.speechAvailable) { var speak = what.trim() + ", " + sMsg.trim() + ", " + sTarget.trim(); var msg = new SpeechSynthesisUtterance(speak); - msg.lang = g_localeString; - if (g_speechSettings.voice > 0) - { msg.voice = g_voices[g_speechSettings.voice - 1]; } - msg.rate = g_speechSettings.rate; - msg.pitch = g_speechSettings.pitch; - msg.volume = g_speechSettings.volume; + msg.lang = GT.localeString; + if (GT.speechSettings.voice > 0) + { msg.voice = GT.voices[GT.speechSettings.voice - 1]; } + msg.rate = GT.speechSettings.rate; + msg.pitch = GT.speechSettings.pitch; + msg.volume = GT.speechSettings.volume; window.speechSynthesis.speak(msg); } } } -var g_alertFlasher = null; +GT.alertFlasher = null; function unflashAlertPopUp() { @@ -737,11 +737,11 @@ function unflashAlertPopUp() var acount = 0; alertsPopDiv.style.backgroundColor = "#000"; - if (Object.keys(g_alerts).length > 0) + if (Object.keys(GT.alerts).length > 0) { - for (var key in g_alerts) + for (var key in GT.alerts) { - if (g_alerts[key].needAck) acount++; + if (GT.alerts[key].needAck) acount++; } worker += @@ -762,42 +762,42 @@ function unflashAlertPopUp() worker += "
"; worker += ""; - for (var key in g_alerts) + for (var key in GT.alerts) { - if (g_alerts[key].needAck) + if (GT.alerts[key].needAck) { worker += ""; - worker += ""; - if (g_alerts[key].type == 0) - { worker += ""; } - if (g_alerts[key].type == 2) - { worker += ""; } - if (g_alerts[key].type == 4) + worker += ""; + if (GT.alerts[key].type == 0) + { worker += ""; } + if (GT.alerts[key].type == 2) + { worker += ""; } + if (GT.alerts[key].type == 4) { worker += ""; } - if (g_alerts[key].type == 5) + if (GT.alerts[key].type == 5) { worker += - ""; + ""; } - if (g_alerts[key].type == 6) - { worker += ""; } + if (GT.alerts[key].type == 6) + { worker += ""; } - worker += ""; - worker += ""; + worker += ""; + worker += ""; worker += ""; - worker += ""; + worker += ""; worker += ""; - ageString = userTimeString(g_alerts[key].lastTime * 1000); + ageString = userTimeString(GT.alerts[key].lastTime * 1000); worker += - ""; + ""; worker += ""; } } @@ -806,26 +806,26 @@ function unflashAlertPopUp() } alertPopListDiv.style.height = "auto"; alertPopListDiv.innerHTML = worker; - g_alertFlasher = null; + GT.alertFlasher = null; } function displayAlertPopUp(what, message, target) { - if (g_alertFlasher) nodeTimers.clearTimeout(g_alertFlasher); + if (GT.alertFlasher) nodeTimers.clearTimeout(GT.alertFlasher); alertPopListDiv.innerHTML = "

Gathering Alerts

"; alertsPopDiv.style.backgroundColor = "#FFF"; alertsPopDiv.style.display = "inline-block"; - g_alertFlasher = nodeTimers.setTimeout(unflashAlertPopUp, 100); + GT.alertFlasher = nodeTimers.setTimeout(unflashAlertPopUp, 100); } function ackAlerts() { alertsPopDiv.style.display = "none"; - for (var key in g_alerts) + for (var key in GT.alerts) { - g_alerts[key].needAck = 0; + GT.alerts[key].needAck = 0; } } @@ -881,39 +881,39 @@ function alertNotifyChanged(who = "") } } -g_alertTypeOptions = Array(); +GT.alertTypeOptions = Array(); -g_alertTypeOptions["0"] = "Call (exact)"; -g_alertTypeOptions["1"] = "Deprecated"; -g_alertTypeOptions["2"] = "Grid"; -g_alertTypeOptions["3"] = "Deprecated"; -g_alertTypeOptions["4"] = "QRZ"; -g_alertTypeOptions["5"] = "Call (partial)"; -g_alertTypeOptions["6"] = "Call (regex)"; +GT.alertTypeOptions["0"] = "Call (exact)"; +GT.alertTypeOptions["1"] = "Deprecated"; +GT.alertTypeOptions["2"] = "Grid"; +GT.alertTypeOptions["3"] = "Deprecated"; +GT.alertTypeOptions["4"] = "QRZ"; +GT.alertTypeOptions["5"] = "Call (partial)"; +GT.alertTypeOptions["6"] = "Call (regex)"; -g_alertValueOptions = Array(); -g_alertValueOptions["0"] = +GT.alertValueOptions = Array(); +GT.alertValueOptions["0"] = ""; -g_alertValueOptions["1"] = "TTS"; -g_alertValueOptions["2"] = "PopUp"; -g_alertValueOptions["3"] = "MapCenter"; +GT.alertValueOptions["1"] = "TTS"; +GT.alertValueOptions["2"] = "PopUp"; +GT.alertValueOptions["3"] = "MapCenter"; -g_alertRepeatOptions = Array(); +GT.alertRepeatOptions = Array(); -g_alertRepeatOptions["0"] = "No"; -g_alertRepeatOptions["1"] = "Once"; -g_alertRepeatOptions["2"] = "Inf"; -g_alertRepeatOptions["3"] = "Inf(Session)"; +GT.alertRepeatOptions["0"] = "No"; +GT.alertRepeatOptions["1"] = "Once"; +GT.alertRepeatOptions["2"] = "Inf"; +GT.alertRepeatOptions["3"] = "Inf(Session)"; function displayAlerts() { var worker = ""; - if (Object.keys(g_alerts).length > 0) + if (Object.keys(GT.alerts).length > 0) { worker += "
"; worker += "

" + - g_startupLogs[i].name + + GT.startupLogs[i].name + "
When
" + g_alertTypeOptions[g_alerts[key].type] + "" + g_alerts[key].value + "" + g_alerts[key].value + "" + GT.alertTypeOptions[GT.alerts[key].type] + "" + GT.alerts[key].value + "" + GT.alerts[key].value + "" + myDEcall + "" + g_alerts[key].value + "*" + GT.alerts[key].value + "*" + g_alerts[key].value + "" + GT.alerts[key].value + "" + g_alertValueOptions[g_alerts[key].notify] + "" + g_alertRepeatOptions[g_alerts[key].repeat] + "" + GT.alertValueOptions[GT.alerts[key].notify] + "" + GT.alertRepeatOptions[GT.alerts[key].repeat] + "" + - (g_alerts[key].shortname.length > 0 ? g_alerts[key].shortname : "-") + + (GT.alerts[key].shortname.length > 0 ? GT.alerts[key].shortname : "-") + "" + (g_alerts[key].fired > 0 ? "Yes" : "No") + "" + (GT.alerts[key].fired > 0 ? "Yes" : "No") + "" + - (g_alerts[key].lastMessage.length > 0 - ? g_alerts[key].lastMessage + (GT.alerts[key].lastMessage.length > 0 + ? GT.alerts[key].lastMessage : "-") + "" + (g_alerts[key].lastTime > 0 ? ageString : "-") + "" + (GT.alerts[key].lastTime > 0 ? ageString : "-") + "
"; @@ -931,40 +931,40 @@ function displayAlerts() worker += ""; worker += ""; - for (var key in g_alerts) + for (var key in GT.alerts) { worker += ""; - worker += ""; - if (g_alerts[key].type == 0) - { worker += ""; } - if (g_alerts[key].type == 2) - { worker += ""; } - if (g_alerts[key].type == 4) + worker += ""; + if (GT.alerts[key].type == 0) + { worker += ""; } + if (GT.alerts[key].type == 2) + { worker += ""; } + if (GT.alerts[key].type == 4) { worker += ""; } - if (g_alerts[key].type == 5) + if (GT.alerts[key].type == 5) { worker += - ""; + ""; } - if (g_alerts[key].type == 6) - { worker += ""; } + if (GT.alerts[key].type == 6) + { worker += ""; } - worker += ""; - worker += ""; + worker += ""; + worker += ""; worker += ""; - worker += ""; + worker += ""; worker += ""; - ageString = userTimeString(g_alerts[key].lastTime * 1000); + ageString = userTimeString(GT.alerts[key].lastTime * 1000); worker += - ""; + ""; worker += ""; - if (toolElement.qth in g_gridToDXCC) + if (toolElement.qth in GT.gridToDXCC) { worker += ""; } @@ -2067,27 +2068,27 @@ function createTooltTipTable(toolElement) worker += ""; - if (g_callsignLookups.lotwUseEnable == true) worker += ""; - if (g_callsignLookups.eqslUseEnable == true) worker += ""; - if (g_callsignLookups.oqrsUseEnable == true) worker += ""; + if (GT.callsignLookups.lotwUseEnable == true) worker += ""; + if (GT.callsignLookups.eqslUseEnable == true) worker += ""; + if (GT.callsignLookups.oqrsUseEnable == true) worker += ""; worker += ""; } for (var KeyIsHash in toolElement.hashes) { - if (KeyIsHash in g_QSOhash) + if (KeyIsHash in GT.QSOhash) { - newCallList.push(g_QSOhash[KeyIsHash]); + newCallList.push(GT.QSOhash[KeyIsHash]); } } if ( - toolElement.qth in g_liveGrids && - g_liveGrids[toolElement.qth].rectangle != null && - g_liveGrids[toolElement.qth].isTriangle == false + toolElement.qth in GT.liveGrids && + GT.liveGrids[toolElement.qth].rectangle != null && + GT.liveGrids[toolElement.qth].isTriangle == false ) { - for (var KeyIsCall in g_liveGrids[toolElement.qth].rectangle.liveHash) + for (var KeyIsCall in GT.liveGrids[toolElement.qth].rectangle.liveHash) { - if (KeyIsCall in g_liveCallsigns && g_appSettings.gridViewMode == 3) { newCallList.push(g_liveCallsigns[KeyIsCall]); } + if (KeyIsCall in GT.liveCallsigns && GT.appSettings.gridViewMode == 3) { newCallList.push(GT.liveCallsigns[KeyIsCall]); } } } } @@ -2098,14 +2099,14 @@ function createTooltTipTable(toolElement) worker += ""; - if (g_callsignLookups.lotwUseEnable == true) worker += ""; - if (g_callsignLookups.eqslUseEnable == true) worker += ""; - if (g_callsignLookups.oqrsUseEnable == true) worker += ""; + if (GT.callsignLookups.lotwUseEnable == true) worker += ""; + if (GT.callsignLookups.eqslUseEnable == true) worker += ""; + if (GT.callsignLookups.oqrsUseEnable == true) worker += ""; worker += ""; } for (var KeyIsCall in toolElement.liveHash) { - if (KeyIsCall in g_liveCallsigns) { newCallList.push(g_liveCallsigns[KeyIsCall]); } + if (KeyIsCall in GT.liveCallsigns) { newCallList.push(GT.liveCallsigns[KeyIsCall]); } } } newCallList.sort(compareCallsignTime).reverse(); @@ -2118,7 +2119,7 @@ function createTooltTipTable(toolElement) if (callsign.DEcall == myDEcall) { bgDE = " style='background-color:#FFFF00;color:#000;font-weight:bold' "; } if (typeof callsign.msg == "undefined" || callsign.msg == "") { callsign.msg = "-"; } var ageString = ""; - if (timeNowSec() - callsign.time < 3601) { ageString = (timeNowSec() - callsign.time).toDHMS(); } + if (timeNowSec() - callsign.time < 3601) { ageString = toDHMS(timeNowSec() - callsign.time); } else { ageString = userTimeString(callsign.time * 1000); @@ -2130,20 +2131,20 @@ function createTooltTipTable(toolElement) "\",\"" + toolElement.qth + "\");' >" + - callsign.DEcall.formatCallsign() + + formatCallsign(callsign.DEcall) + ""; worker += ""; worker += ""; worker += ""; worker += "" + ""; - if (callsign.DXcall.indexOf("CQ") == 0 || callsign.DXcall == "-") { worker += callsign.DXcall.formatCallsign(); } + if (callsign.DXcall.indexOf("CQ") == 0 || callsign.DXcall == "-") { worker += formatCallsign(callsign.DXcall); } else { worker += "
" + - callsign.DXcall.formatCallsign() + + formatCallsign(callsign.DXcall) + "
"; } worker += @@ -2165,39 +2166,39 @@ function createTooltTipTable(toolElement) "
" + ""; - if (g_callsignLookups.lotwUseEnable == true) + if (GT.callsignLookups.lotwUseEnable == true) { worker += ""; } - if (g_callsignLookups.eqslUseEnable == true) + if (GT.callsignLookups.eqslUseEnable == true) { worker += ""; } - if (g_callsignLookups.oqrsUseEnable == true) + if (GT.callsignLookups.oqrsUseEnable == true) { worker += ""; } worker += ""; } worker += "
Delete
" + g_alertTypeOptions[g_alerts[key].type] + "" + g_alerts[key].value + "" + g_alerts[key].value + "" + GT.alertTypeOptions[GT.alerts[key].type] + "" + GT.alerts[key].value + "" + GT.alerts[key].value + "" + myDEcall + "" + g_alerts[key].value + "*" + GT.alerts[key].value + "*" + g_alerts[key].value + "" + GT.alerts[key].value + "" + g_alertValueOptions[g_alerts[key].notify] + "" + g_alertRepeatOptions[g_alerts[key].repeat] + "" + GT.alertValueOptions[GT.alerts[key].notify] + "" + GT.alertRepeatOptions[GT.alerts[key].repeat] + "" + - (g_alerts[key].shortname.length > 0 ? g_alerts[key].shortname : "-") + + (GT.alerts[key].shortname.length > 0 ? GT.alerts[key].shortname : "-") + "" + (g_alerts[key].fired > 0 ? "Yes" : "No") + "" + (GT.alerts[key].fired > 0 ? "Yes" : "No") + "" + - (g_alerts[key].lastMessage.length > 0 - ? g_alerts[key].lastMessage + (GT.alerts[key].lastMessage.length > 0 + ? GT.alerts[key].lastMessage : "-") + "" + (g_alerts[key].lastTime > 0 ? ageString : "-") + "" + (GT.alerts[key].lastTime > 0 ? ageString : "-") + " 0 ) { - if (fourGrid in g_gridToState && g_gridToState[fourGrid].length == 1) + if (fourGrid in GT.gridToState && GT.gridToState[fourGrid].length == 1) { - details.state = g_gridToState[fourGrid][0]; + details.state = GT.gridToState[fourGrid][0]; } lookupCall = true; } @@ -1196,7 +1197,7 @@ function addDeDx( details.cont = finalCont; if (finalDxcc > 0) { - details.cont = g_dxccInfo[finalDxcc].continent; + details.cont = GT.dxccInfo[finalDxcc].continent; if (details.dxcc == 390 && details.zone == 1) details.cont = "EU"; } @@ -1214,7 +1215,7 @@ function addDeDx( } else { - if (!(details.cnty in g_cntyToCounty)) + if (!(details.cnty in GT.cntyToCounty)) { lookupCall = true; } @@ -1227,27 +1228,27 @@ function addDeDx( details.wspr = wspr; if (finalMsg.length > 0) details.msg = finalMsg; - g_tracker.worked.call[finalDXcall + band + mode] = true; - g_tracker.worked.call[finalDXcall] = true; - g_tracker.worked.call[finalDXcall + mode] = true; - g_tracker.worked.call[finalDXcall + band] = true; + GT.tracker.worked.call[finalDXcall + band + mode] = true; + GT.tracker.worked.call[finalDXcall] = true; + GT.tracker.worked.call[finalDXcall + mode] = true; + GT.tracker.worked.call[finalDXcall + band] = true; if (isDigi == true) { - g_tracker.worked.call[finalDXcall + "dg"] = true; - g_tracker.worked.call[finalDXcall + band + "dg"] = true; + GT.tracker.worked.call[finalDXcall + "dg"] = true; + GT.tracker.worked.call[finalDXcall + band + "dg"] = true; } if (fourGrid != "") { - g_tracker.worked.grid[fourGrid + band + mode] = true; - g_tracker.worked.grid[fourGrid] = true; - g_tracker.worked.grid[fourGrid + mode] = true; - g_tracker.worked.grid[fourGrid + band] = true; + GT.tracker.worked.grid[fourGrid + band + mode] = true; + GT.tracker.worked.grid[fourGrid] = true; + GT.tracker.worked.grid[fourGrid + mode] = true; + GT.tracker.worked.grid[fourGrid + band] = true; if (isDigi == true) { - g_tracker.worked.grid[fourGrid + "dg"] = true; - g_tracker.worked.grid[fourGrid + band + "dg"] = true; + GT.tracker.worked.grid[fourGrid + "dg"] = true; + GT.tracker.worked.grid[fourGrid + band + "dg"] = true; } } if (!details.ituz || details.ituz.length == 0) @@ -1256,14 +1257,14 @@ function addDeDx( } if (details.ituz) { - g_tracker.worked.ituz[details.ituz + "|" + band + mode] = true; - g_tracker.worked.ituz[details.ituz + "|"] = true; - g_tracker.worked.ituz[details.ituz + "|" + mode] = true; - g_tracker.worked.ituz[details.ituz + "|" + band] = true; + GT.tracker.worked.ituz[details.ituz + "|" + band + mode] = true; + GT.tracker.worked.ituz[details.ituz + "|"] = true; + GT.tracker.worked.ituz[details.ituz + "|" + mode] = true; + GT.tracker.worked.ituz[details.ituz + "|" + band] = true; if (isDigi == true) { - g_tracker.worked.ituz[details.ituz + "|dg"] = true; - g_tracker.worked.ituz[details.ituz + "|" + band + "dg"] = true; + GT.tracker.worked.ituz[details.ituz + "|dg"] = true; + GT.tracker.worked.ituz[details.ituz + "|" + band + "dg"] = true; } } @@ -1274,92 +1275,92 @@ function addDeDx( if (details.cqz) { - g_tracker.worked.cqz[details.cqz + "|" + band + mode] = true; - g_tracker.worked.cqz[details.cqz + "|"] = true; - g_tracker.worked.cqz[details.cqz + "|" + mode] = true; - g_tracker.worked.cqz[details.cqz + "|" + band] = true; + GT.tracker.worked.cqz[details.cqz + "|" + band + mode] = true; + GT.tracker.worked.cqz[details.cqz + "|"] = true; + GT.tracker.worked.cqz[details.cqz + "|" + mode] = true; + GT.tracker.worked.cqz[details.cqz + "|" + band] = true; if (isDigi == true) { - g_tracker.worked.cqz[details.cqz + "|dg"] = true; - g_tracker.worked.cqz[details.cqz + "|" + band + "dg"] = true; + GT.tracker.worked.cqz[details.cqz + "|dg"] = true; + GT.tracker.worked.cqz[details.cqz + "|" + band + "dg"] = true; } if (isCurrentYear) { - g_tracker.worked.cqz[`${details.cqz}-${currentYear}`] = true; + GT.tracker.worked.cqz[`${details.cqz}-${currentYear}`] = true; } } if (details.dxcc > 0) { var sDXCC = String(details.dxcc); - g_tracker.worked.dxcc[sDXCC + "|" + band + mode] = true; - g_tracker.worked.dxcc[sDXCC + "|"] = true; - g_tracker.worked.dxcc[sDXCC + "|" + mode] = true; - g_tracker.worked.dxcc[sDXCC + "|" + band] = true; + GT.tracker.worked.dxcc[sDXCC + "|" + band + mode] = true; + GT.tracker.worked.dxcc[sDXCC + "|"] = true; + GT.tracker.worked.dxcc[sDXCC + "|" + mode] = true; + GT.tracker.worked.dxcc[sDXCC + "|" + band] = true; if (isDigi == true) { - g_tracker.worked.dxcc[sDXCC + "|dg"] = true; - g_tracker.worked.dxcc[sDXCC + "|" + band + "dg"] = true; + GT.tracker.worked.dxcc[sDXCC + "|dg"] = true; + GT.tracker.worked.dxcc[sDXCC + "|" + band + "dg"] = true; } if (isCurrentYear) { - g_tracker.worked.dxcc[`${sDXCC}-${currentYear}`] = true; + GT.tracker.worked.dxcc[`${sDXCC}-${currentYear}`] = true; } } if (details.px) { - g_tracker.worked.px[details.px + band + mode] = true; + GT.tracker.worked.px[details.px + band + mode] = true; // store the last one - g_tracker.worked.px[details.px] = hash; - g_tracker.worked.px[details.px + mode] = true; - g_tracker.worked.px[details.px + band] = true; + GT.tracker.worked.px[details.px] = hash; + GT.tracker.worked.px[details.px + mode] = true; + GT.tracker.worked.px[details.px + band] = true; if (isDigi == true) { - g_tracker.worked.px[details.px + "dg"] = true; - g_tracker.worked.px[details.px + band + "dg"] = true; + GT.tracker.worked.px[details.px + "dg"] = true; + GT.tracker.worked.px[details.px + band + "dg"] = true; } if (isPhone == true) { - g_tracker.worked.px[details.px + "ph"] = true; - g_tracker.worked.px[details.px + band + "ph"] = true; + GT.tracker.worked.px[details.px + "ph"] = true; + GT.tracker.worked.px[details.px + band + "ph"] = true; } } if (details.cont) { - g_tracker.worked.cont[details.cont + band + mode] = true; + GT.tracker.worked.cont[details.cont + band + mode] = true; // store the last one - g_tracker.worked.cont[details.cont] = hash; - g_tracker.worked.cont[details.cont + mode] = true; - g_tracker.worked.cont[details.cont + band] = true; + GT.tracker.worked.cont[details.cont] = hash; + GT.tracker.worked.cont[details.cont + mode] = true; + GT.tracker.worked.cont[details.cont + band] = true; if (isDigi == true) { - g_tracker.worked.cont[details.cont + "dg"] = true; - g_tracker.worked.cont[details.cont + band + "dg"] = true; + GT.tracker.worked.cont[details.cont + "dg"] = true; + GT.tracker.worked.cont[details.cont + band + "dg"] = true; } if (isPhone == true) { - g_tracker.worked.cont[details.cont + "ph"] = true; - g_tracker.worked.cont[details.cont + band + "ph"] = true; + GT.tracker.worked.cont[details.cont + "ph"] = true; + GT.tracker.worked.cont[details.cont + band + "ph"] = true; } } if (finalPOTA) { - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA] = true; - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + mode] = true; - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band] = true; - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + mode] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + mode] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + mode] = true; if (isDigi == true) { - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + "dg"] = true; - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + "dg"] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + "dg"] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + "dg"] = true; } if (isPhone == true) { - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + "ph"] = true; - g_tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + "ph"] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + "ph"] = true; + GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + "ph"] = true; } } @@ -1371,13 +1372,13 @@ function addDeDx( details.confirmed = confirmed; } - g_QSOhash[hash] = details; + GT.QSOhash[hash] = details; setState(details); if (lookupCall) { - if (g_callsignLookups.ulsUseEnable) + if (GT.callsignLookups.ulsUseEnable) { lookupUsCallsign(details, true); } @@ -1387,105 +1388,105 @@ function addDeDx( { if (fourGrid != "") { - g_tracker.confirmed.grid[fourGrid + band + mode] = true; - g_tracker.confirmed.grid[fourGrid] = true; - g_tracker.confirmed.grid[fourGrid + mode] = true; - g_tracker.confirmed.grid[fourGrid + band] = true; + GT.tracker.confirmed.grid[fourGrid + band + mode] = true; + GT.tracker.confirmed.grid[fourGrid] = true; + GT.tracker.confirmed.grid[fourGrid + mode] = true; + GT.tracker.confirmed.grid[fourGrid + band] = true; if (isDigi == true) { - g_tracker.confirmed.grid[fourGrid + "dg"] = true; - g_tracker.confirmed.grid[fourGrid + band + "dg"] = true; + GT.tracker.confirmed.grid[fourGrid + "dg"] = true; + GT.tracker.confirmed.grid[fourGrid + band + "dg"] = true; } } if (details.ituz && details.ituz.length > 0) { - g_tracker.confirmed.ituz[details.ituz + "|" + band + mode] = true; - g_tracker.confirmed.ituz[details.ituz + "|"] = true; - g_tracker.confirmed.ituz[details.ituz + "|" + mode] = true; - g_tracker.confirmed.ituz[details.ituz + "|" + band] = true; + GT.tracker.confirmed.ituz[details.ituz + "|" + band + mode] = true; + GT.tracker.confirmed.ituz[details.ituz + "|"] = true; + GT.tracker.confirmed.ituz[details.ituz + "|" + mode] = true; + GT.tracker.confirmed.ituz[details.ituz + "|" + band] = true; if (isDigi == true) { - g_tracker.confirmed.ituz[details.ituz + "|dg"] = true; - g_tracker.confirmed.ituz[details.ituz + "|" + band + "dg"] = true; + GT.tracker.confirmed.ituz[details.ituz + "|dg"] = true; + GT.tracker.confirmed.ituz[details.ituz + "|" + band + "dg"] = true; } } if (details.cqz && details.cqz.length > 0) { - g_tracker.confirmed.cqz[details.cqz + "|" + band + mode] = true; - g_tracker.confirmed.cqz[details.cqz + "|"] = true; - g_tracker.confirmed.cqz[details.cqz + "|" + mode] = true; - g_tracker.confirmed.cqz[details.cqz + "|" + band] = true; + GT.tracker.confirmed.cqz[details.cqz + "|" + band + mode] = true; + GT.tracker.confirmed.cqz[details.cqz + "|"] = true; + GT.tracker.confirmed.cqz[details.cqz + "|" + mode] = true; + GT.tracker.confirmed.cqz[details.cqz + "|" + band] = true; if (isDigi == true) { - g_tracker.confirmed.cqz[details.cqz + "|dg"] = true; - g_tracker.confirmed.cqz[details.cqz + "|" + band + "dg"] = true; + GT.tracker.confirmed.cqz[details.cqz + "|dg"] = true; + GT.tracker.confirmed.cqz[details.cqz + "|" + band + "dg"] = true; } } if (details.dxcc > 0) { var sDXCC = String(details.dxcc); - g_tracker.confirmed.dxcc[sDXCC + "|" + band + mode] = true; - g_tracker.confirmed.dxcc[sDXCC + "|"] = true; - g_tracker.confirmed.dxcc[sDXCC + "|" + mode] = true; - g_tracker.confirmed.dxcc[sDXCC + "|" + band] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|" + band + mode] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|"] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|" + mode] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|" + band] = true; if (isDigi == true) { - g_tracker.confirmed.dxcc[sDXCC + "|dg"] = true; - g_tracker.confirmed.dxcc[sDXCC + "|" + band + "dg"] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|dg"] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|" + band + "dg"] = true; } } if (details.px) { - g_tracker.confirmed.px[details.px + band + mode] = true; + GT.tracker.confirmed.px[details.px + band + mode] = true; // store the last one - g_tracker.confirmed.px[details.px] = hash; - g_tracker.confirmed.px[details.px + mode] = true; - g_tracker.confirmed.px[details.px + band] = true; + GT.tracker.confirmed.px[details.px] = hash; + GT.tracker.confirmed.px[details.px + mode] = true; + GT.tracker.confirmed.px[details.px + band] = true; if (isDigi == true) { - g_tracker.confirmed.px[details.px + "dg"] = true; - g_tracker.confirmed.px[details.px + band + "dg"] = true; + GT.tracker.confirmed.px[details.px + "dg"] = true; + GT.tracker.confirmed.px[details.px + band + "dg"] = true; } } if (details.cont) { - g_tracker.confirmed.cont[details.cont + band + mode] = true; + GT.tracker.confirmed.cont[details.cont + band + mode] = true; // store the last one - g_tracker.confirmed.cont[details.cont] = hash; - g_tracker.confirmed.cont[details.cont + mode] = true; - g_tracker.confirmed.cont[details.cont + band] = true; + GT.tracker.confirmed.cont[details.cont] = hash; + GT.tracker.confirmed.cont[details.cont + mode] = true; + GT.tracker.confirmed.cont[details.cont + band] = true; if (isDigi == true) { - g_tracker.confirmed.cont[details.cont + "dg"] = true; - g_tracker.confirmed.cont[details.cont + band + "dg"] = true; + GT.tracker.confirmed.cont[details.cont + "dg"] = true; + GT.tracker.confirmed.cont[details.cont + band + "dg"] = true; } } // we don't need confirmations, worked is enough /* if (finalPOTA) { - g_tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA] = true; - g_tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + mode] = true; - g_tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band] = true; - g_tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band + mode] = true; + GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA] = true; + GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + mode] = true; + GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band] = true; + GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band + mode] = true; if (isDigi == true) { - g_tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + "dg"] = true; - g_tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band + "dg"] = true; + GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + "dg"] = true; + GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band + "dg"] = true; } } */ - g_tracker.confirmed.call[finalDXcall + band + mode] = true; - g_tracker.confirmed.call[finalDXcall] = true; - g_tracker.confirmed.call[finalDXcall + mode] = true; - g_tracker.confirmed.call[finalDXcall + band] = true; + GT.tracker.confirmed.call[finalDXcall + band + mode] = true; + GT.tracker.confirmed.call[finalDXcall] = true; + GT.tracker.confirmed.call[finalDXcall + mode] = true; + GT.tracker.confirmed.call[finalDXcall + band] = true; if (isDigi == true) { - g_tracker.confirmed.call[finalDXcall + "dg"] = true; - g_tracker.confirmed.call[finalDXcall + band + "dg"] = true; + GT.tracker.confirmed.call[finalDXcall + "dg"] = true; + GT.tracker.confirmed.call[finalDXcall + band + "dg"] = true; } didConfirm = true; } @@ -1496,7 +1497,7 @@ function addDeDx( hash = finalDXcall + band + mode; if (!isQSO) { - if (hash in g_liveCallsigns) callsign = g_liveCallsigns[hash]; + if (hash in GT.liveCallsigns) callsign = GT.liveCallsigns[hash]; } if (isQSO) @@ -1518,8 +1519,8 @@ function addDeDx( } else { - if (finalDxcc in g_dxccCount) g_dxccCount[finalDxcc]++; - else g_dxccCount[finalDxcc] = 1; + if (finalDxcc in GT.dxccCount) GT.dxccCount[finalDxcc]++; + else GT.dxccCount[finalDxcc] = 1; if (validateMapBandAndMode(band, mode)) { @@ -1569,7 +1570,7 @@ function addDeDx( if (newCallsign.cont == null) { - newCallsign.cont = g_dxccInfo[finalDxcc].continent; + newCallsign.cont = GT.dxccInfo[finalDxcc].continent; if (newCallsign.dxcc == 390 && newCallsign.zone == 1) { newCallsign.cont = "EU"; } } } @@ -1603,7 +1604,7 @@ function addDeDx( if (newCallsign.state == null && isKnownCallsignDXCC(finalDxcc) && finalGrid.length > 0) { - if (g_callsignLookups.ulsUseEnable) + if (GT.callsignLookups.ulsUseEnable) { lookupUsCallsign(newCallsign); } @@ -1612,15 +1613,15 @@ function addDeDx( { var fourGrid = finalGrid.substr(0, 4); if ( - fourGrid in g_gridToState && - g_gridToState[finalGrid.substr(0, 4)].length == 1 + fourGrid in GT.gridToState && + GT.gridToState[finalGrid.substr(0, 4)].length == 1 ) { - newCallsign.state = g_gridToState[finalGrid.substr(0, 4)][0]; + newCallsign.state = GT.gridToState[finalGrid.substr(0, 4)][0]; } } } - g_liveCallsigns[hash] = newCallsign; + GT.liveCallsigns[hash] = newCallsign; } else { @@ -1655,117 +1656,117 @@ function addDeDx( function timeoutSetUdpPort() { - g_appSettings.wsjtUdpPort = udpPortInput.value; + GT.appSettings.wsjtUdpPort = udpPortInput.value; lastMsgTimeDiv.innerHTML = "Waiting for msg..."; - g_setNewUdpPortTimeoutHandle = null; + GT.setNewUdpPortTimeoutHandle = null; } function setUdpPort() { - if (g_setNewUdpPortTimeoutHandle != null) { nodeTimers.clearTimeout(g_setNewUdpPortTimeoutHandle); } + if (GT.setNewUdpPortTimeoutHandle != null) { nodeTimers.clearTimeout(GT.setNewUdpPortTimeoutHandle); } lastMsgTimeDiv.innerHTML = "..setting.."; - g_setNewUdpPortTimeoutHandle = nodeTimers.setTimeout(timeoutSetUdpPort, 1000); + GT.setNewUdpPortTimeoutHandle = nodeTimers.setTimeout(timeoutSetUdpPort, 1000); } function changeGridDecay() { - g_appSettings.gridsquareDecayTime = parseInt(gridDecay.value); + GT.appSettings.gridsquareDecayTime = parseInt(gridDecay.value); decayRateTd.innerHTML = - Number(g_appSettings.gridsquareDecayTime) == 0 + Number(GT.appSettings.gridsquareDecayTime) == 0 ? "No Decay" - : Number(g_appSettings.gridsquareDecayTime).toDHMS(); + : toDHMS(Number(GT.appSettings.gridsquareDecayTime)); } function changeMouseOverValue() { - g_mapSettings.mouseOver = mouseOverValue.checked; + GT.mapSettings.mouseOver = mouseOverValue.checked; saveMapSettings(); } function changeMergeOverlayValue() { - g_mapSettings.mergeOverlay = mergeOverlayValue.checked; + GT.mapSettings.mergeOverlay = mergeOverlayValue.checked; saveMapSettings(); - setTrophyOverlay(g_currentOverlay); + setTrophyOverlay(GT.currentOverlay); } function getPathColor() { - if (g_mapSettings.nightMapEnable && g_nightTime) + if (GT.mapSettings.nightMapEnable && GT.nightTime) { - if (g_mapSettings.nightPathColor == 0) return "#000"; - if (g_mapSettings.nightPathColor == 361) return "#FFF"; - return "hsl(" + g_mapSettings.nightPathColor + ", 100%, 50%)"; + if (GT.mapSettings.nightPathColor == 0) return "#000"; + if (GT.mapSettings.nightPathColor == 361) return "#FFF"; + return "hsl(" + GT.mapSettings.nightPathColor + ", 100%, 50%)"; } else { - if (g_mapSettings.pathColor == 0) return "#000"; - if (g_mapSettings.pathColor == 361) return "#FFF"; - return "hsl(" + g_mapSettings.pathColor + ", 100%, 50%)"; + if (GT.mapSettings.pathColor == 0) return "#000"; + if (GT.mapSettings.pathColor == 361) return "#FFF"; + return "hsl(" + GT.mapSettings.pathColor + ", 100%, 50%)"; } } function getQrzPathColor() { - if (g_mapSettings.nightMapEnable && g_nightTime) + if (GT.mapSettings.nightMapEnable && GT.nightTime) { - if (g_mapSettings.nightQrzPathColor == 0) return "#000"; - if (g_mapSettings.nightQrzPathColor == 361) return "#FFF"; - return "hsl(" + g_mapSettings.nightQrzPathColor + ", 100%, 50%)"; + if (GT.mapSettings.nightQrzPathColor == 0) return "#000"; + if (GT.mapSettings.nightQrzPathColor == 361) return "#FFF"; + return "hsl(" + GT.mapSettings.nightQrzPathColor + ", 100%, 50%)"; } else { - if (g_mapSettings.qrzPathColor == 0) return "#000"; - if (g_mapSettings.qrzPathColor == 361) return "#FFF"; - return "hsl(" + g_mapSettings.qrzPathColor + ", 100%, 50%)"; + if (GT.mapSettings.qrzPathColor == 0) return "#000"; + if (GT.mapSettings.qrzPathColor == 361) return "#FFF"; + return "hsl(" + GT.mapSettings.qrzPathColor + ", 100%, 50%)"; } } function changeShadow() { - g_mapSettings.shadow = shadowValue.value; + GT.mapSettings.shadow = shadowValue.value; showDarknessTd.innerHTML = parseInt(shadowValue.value * 100) + "%"; saveMapSettings(); - g_nightTime = dayNight.refresh(); + GT.nightTime = dayNight.refresh(); } function changePathWidth() { - g_appSettings.pathWidthWeight = pathWidthValue.value; - g_appSettings.qrzPathWidthWeight = qrzPathWidthValue.value; + GT.appSettings.pathWidthWeight = pathWidthValue.value; + GT.appSettings.qrzPathWidthWeight = qrzPathWidthValue.value; pathWidthTd.innerHTML = pathWidthValue.value; qrzPathWidthTd.innerHTML = qrzPathWidthValue.value; - for (var i = g_flightPaths.length - 1; i >= 0; i--) + for (var i = GT.flightPaths.length - 1; i >= 0; i--) { - var featureStyle = g_flightPaths[i].getStyle(); + var featureStyle = GT.flightPaths[i].getStyle(); var featureStroke = featureStyle.getStroke(); - var color = g_flightPaths[i].isQRZ ? getQrzPathColor() : getPathColor(); - var width = g_flightPaths[i].isQRZ + var color = GT.flightPaths[i].isQRZ ? getQrzPathColor() : getPathColor(); + var width = GT.flightPaths[i].isQRZ ? qrzPathWidthValue.value : pathWidthValue.value; if (width == 0) { - if ("Arrow" in g_flightPaths[i]) { g_layerSources.flight.removeFeature(g_flightPaths[i].Arrow); } - g_layerSources.flight.removeFeature(g_flightPaths[i]); - delete g_flightPaths[i]; - g_flightPaths[i] = null; + if ("Arrow" in GT.flightPaths[i]) { GT.layerSources.flight.removeFeature(GT.flightPaths[i].Arrow); } + GT.layerSources.flight.removeFeature(GT.flightPaths[i]); + delete GT.flightPaths[i]; + GT.flightPaths[i] = null; - g_flightPaths.splice(i, 1); + GT.flightPaths.splice(i, 1); continue; } featureStroke.setWidth(width); - if (g_flightPaths[i].isShapeFlight == 0) featureStroke.setColor(color); + if (GT.flightPaths[i].isShapeFlight == 0) featureStroke.setColor(color); featureStyle.setStroke(featureStroke); - g_flightPaths[i].setStyle(featureStyle); + GT.flightPaths[i].setStyle(featureStyle); - if ("Arrow" in g_flightPaths[i]) + if ("Arrow" in GT.flightPaths[i]) { var stroke = new ol.style.Stroke({ color: color, @@ -1777,27 +1778,27 @@ function changePathWidth() radius: 3 }) }); - g_flightPaths[i].Arrow.setStyle(thisStle); + GT.flightPaths[i].Arrow.setStyle(thisStle); } } - if (g_transmitFlightPath != null) + if (GT.transmitFlightPath != null) { - var featureStyle = g_transmitFlightPath.getStyle(); + var featureStyle = GT.transmitFlightPath.getStyle(); var featureStroke = featureStyle.getStroke(); if (qrzPathWidthValue.value == 0) { - g_layerSources.transmit.clear(); - g_transmitFlightPath = null; + GT.layerSources.transmit.clear(); + GT.transmitFlightPath = null; } else { featureStroke.setWidth(qrzPathWidthValue.value); featureStroke.setColor(getQrzPathColor()); featureStyle.setStroke(featureStroke); - g_transmitFlightPath.setStyle(featureStyle); + GT.transmitFlightPath.setStyle(featureStyle); - if ("Arrow" in g_transmitFlightPath) + if ("Arrow" in GT.transmitFlightPath) { var stroke = new ol.style.Stroke({ color: getQrzPathColor(), @@ -1809,7 +1810,7 @@ function changePathWidth() radius: 3 }) }); - g_transmitFlightPath.Arrow.setStyle(thisStle); + GT.transmitFlightPath.Arrow.setStyle(thisStle); } } } @@ -1828,31 +1829,31 @@ function createFlagTipTable(toolElement) if (toolElement.size == 1) { var key = toolElement.key; - var dxcc = callsignToDxcc(g_gtFlagPins[key].call); - var dxccName = g_dxccToAltName[dxcc]; + var dxcc = callsignToDxcc(GT.gtFlagPins[key].call); + var dxccName = GT.dxccToAltName[dxcc]; var workColor = "cyan"; - if (g_gtFlagPins[key].call + myBand + myMode in g_tracker.worked.call) + if (GT.gtFlagPins[key].call + myBand + myMode in GT.tracker.worked.call) { workColor = "yellow"; } - if (g_gtFlagPins[key].call + myBand + myMode in g_tracker.confirmed.call) + if (GT.gtFlagPins[key].call + myBand + myMode in GT.tracker.confirmed.call) { workColor = "#00FF00"; } - worker += "
" + g_gtFlagPins[key].call.formatCallsign() + "
"; + worker += "
" + formatCallsign(GT.gtFlagPins[key].call) + "
"; worker += ""; - worker += ""; - worker += ""; - worker += ""; - worker += ""; + worker += ""; + worker += ""; + worker += ""; + worker += ""; - var LL = squareToCenter(g_gtFlagPins[key].grid); - var bearing = parseInt(MyCircle.bearing(g_myLat, g_myLon, LL.a, LL.o)); + var LL = squareToCenter(GT.gtFlagPins[key].grid); + var bearing = parseInt(MyCircle.bearing(GT.myLat, GT.myLon, LL.a, LL.o)); - worker += ""; + worker += ""; worker += ""; worker += "
DXCC" + dxccName + " (" + g_dxccInfo[dxcc].pp + ")
Grid" + g_gtFlagPins[key].grid + "
Freq" + Number(g_gtFlagPins[key].freq / 1000).formatMhz(3, 3) + " (" + Number(g_gtFlagPins[key].freq / 1000000).formatBand() + ")
Mode" + g_gtFlagPins[key].mode + "
DXCC" + dxccName + " (" + GT.dxccInfo[dxcc].pp + ")
Grid" + GT.gtFlagPins[key].grid + "
Freq" + formatMhz(Number(GT.gtFlagPins[key].freq / 1000), 3, 3) + " (" + formatBand(Number(GT.gtFlagPins[key].freq / 1000000)) + ")
Mode" + GT.gtFlagPins[key].mode + "
Dist" + parseInt(MyCircle.distance(g_myLat, g_myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)) + distanceUnit.value.toLowerCase() + "
Dist" + parseInt(MyCircle.distance(GT.myLat, GT.myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)) + distanceUnit.value.toLowerCase() + "
Azim" + bearing + "°
"; } @@ -1957,32 +1958,32 @@ function createSpotTipTable(toolElement) var now = timeNowSec(); var myTooltip = document.getElementById("myTooltip"); var worker = ""; - if (toolElement.spot in g_receptionReports.spots) + if (toolElement.spot in GT.receptionReports.spots) { - g_layerSources["psk-hop"].clear(); - var report = g_receptionReports.spots[toolElement.spot]; + GT.layerSources["psk-hop"].clear(); + var report = GT.receptionReports.spots[toolElement.spot]; var LL = squareToCenter(myRawGrid); var fromPoint = ol.proj.fromLonLat([LL.o, LL.a]); worker = ""; - worker += ""; - worker += ""; - worker += ""; + worker += ""; + worker += ""; + worker += ""; if (report.dxcc > 0) { - worker += ""; + worker += ""; } worker += ""; - worker += ""; + worker += ""; worker += ""; LL = squareToCenter(report.grid); - report.bearing = parseInt(MyCircle.bearing(g_myLat, g_myLon, LL.a, LL.o)); - worker += ""; + report.bearing = parseInt(MyCircle.bearing(GT.myLat, GT.myLon, LL.a, LL.o)); + worker += ""; worker += ""; worker += ""; worker += "
Rx Spot
Age" + Number(now - report.when).toDHMS() + "
dB" + Number(report.snr).formatSignalReport() + "
Call" + report.call.formatCallsign() + "
Age" + toDHMS(Number(now - report.when)) + "
dB" + formatSignalReport(Number(report.snr)) + "
Call" + formatCallsign(report.call) + "
DXCC" + g_dxccToAltName[report.dxcc] + " (" + g_dxccInfo[report.dxcc].pp + ")
DXCC" + GT.dxccToAltName[report.dxcc] + " (" + GT.dxccInfo[report.dxcc].pp + ")
Grid" + report.grid + "
Freq" + report.freq.formatMhz() + " (" + report.band + ")
Freq" + formatMhz(report.freq) + " (" + report.band + ")
Mode" + report.mode + "
Dist" + parseInt(MyCircle.distance(g_myLat, g_myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)) + distanceUnit.value.toLowerCase() + "
Dist" + parseInt(MyCircle.distance(GT.myLat, GT.myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)) + distanceUnit.value.toLowerCase() + "
Azim" + report.bearing + "°
Time" + userTimeString(report.when * 1000) + "
"; @@ -2002,7 +2003,7 @@ function createSpotTipTable(toolElement) ); } myTooltip.innerHTML = worker; - g_passingToolTipTableString = worker; + GT.passingToolTipTableString = worker; return 10; } catch (err) @@ -2019,9 +2020,9 @@ function createTooltTipTable(toolElement) } var myTooltip = document.getElementById("myTooltip"); var colspan = 10; - if (g_callsignLookups.lotwUseEnable == true) colspan++; - if (g_callsignLookups.eqslUseEnable == true) colspan++; - if (g_callsignLookups.oqrsUseEnable == true) colspan++; + if (GT.callsignLookups.lotwUseEnable == true) colspan++; + if (GT.callsignLookups.eqslUseEnable == true) colspan++; + if (GT.callsignLookups.oqrsUseEnable == true) colspan++; if (toolElement.qso == true) colspan += 2; var worker = @@ -2030,32 +2031,32 @@ function createTooltTipTable(toolElement) " style='color:cyan'>" + toolElement.qth + "
"; - for (var x = 0; x < g_gridToDXCC[toolElement.qth].length; x++) + for (var x = 0; x < GT.gridToDXCC[toolElement.qth].length; x++) { - worker += g_dxccToAltName[g_gridToDXCC[toolElement.qth][x]]; - if (toolElement.qth in g_gridToState) + worker += GT.dxccToAltName[GT.gridToDXCC[toolElement.qth][x]]; + if (toolElement.qth in GT.gridToState) { worker += " ("; var added = false; - for (var y = 0; y < g_gridToState[toolElement.qth].length; y++) + for (var y = 0; y < GT.gridToState[toolElement.qth].length; y++) { if ( - g_gridToDXCC[toolElement.qth][x] == - g_StateData[g_gridToState[toolElement.qth][y]].dxcc + GT.gridToDXCC[toolElement.qth][x] == + GT.StateData[GT.gridToState[toolElement.qth][y]].dxcc ) { worker += - g_StateData[g_gridToState[toolElement.qth][y]].name + " / "; + GT.StateData[GT.gridToState[toolElement.qth][y]].name + " / "; added = true; } } if (added == true) { worker = worker.substr(0, worker.length - " / ".length); } worker += ")"; } - if (x + 1 < g_gridToDXCC[toolElement.qth].length) worker += ", "; + if (x + 1 < GT.gridToDXCC[toolElement.qth].length) worker += ", "; } worker += "
CallFreqSentRcvdStationModeBandQSLLast MsgDXCCTimeLoTWeQSLOQRSLoTWeQSLOQRS
CallFreqSentRcvdStationModeBandLast MsgDXCCTimeLoTWeQSLOQRSLoTWeQSLOQRS
" + (callsign.delta > -1 ? callsign.delta : "-") + "" + callsign.RSTsent + "" + callsign.RSTrecv + "" + callsign.msg + "" + - g_dxccToAltName[callsign.dxcc] + + GT.dxccToAltName[callsign.dxcc] + " (" + - g_dxccInfo[callsign.dxcc].pp + + GT.dxccInfo[callsign.dxcc].pp + ")" + ageString + "" + - (callsign.DEcall in g_lotwCallsigns ? "✔" : "") + + (callsign.DEcall in GT.lotwCallsigns ? "✔" : "") + "" + - (callsign.DEcall in g_eqslCallsigns ? "✔" : "") + + (callsign.DEcall in GT.eqslCallsigns ? "✔" : "") + "" + - (callsign.DEcall in g_oqrsCallsigns ? "✔" : "") + + (callsign.DEcall in GT.oqrsCallsigns ? "✔" : "") + "
"; myTooltip.innerHTML = worker; - g_passingToolTipTableString = worker; + GT.passingToolTipTableString = worker; return newCallList.length; } @@ -2206,9 +2207,9 @@ function createTooltTipTableLogbook(toolElement) { var myTooltip = document.getElementById("myTooltip"); var colspan = 10; - if (g_callsignLookups.lotwUseEnable == true) colspan++; - if (g_callsignLookups.eqslUseEnable == true) colspan++; - if (g_callsignLookups.oqrsUseEnable == true) colspan++; + if (GT.callsignLookups.lotwUseEnable == true) colspan++; + if (GT.callsignLookups.eqslUseEnable == true) colspan++; + if (GT.callsignLookups.oqrsUseEnable == true) colspan++; if (toolElement.qso == true) colspan += 2; var worker = @@ -2221,9 +2222,9 @@ function createTooltTipTableLogbook(toolElement) worker += "CallFreqSentRcvdStationModeBandDXCCTime"; - if (g_callsignLookups.lotwUseEnable == true) worker += "LoTW"; - if (g_callsignLookups.eqslUseEnable == true) worker += "eQSL"; - if (g_callsignLookups.oqrsUseEnable == true) worker += "OQRS"; + if (GT.callsignLookups.lotwUseEnable == true) worker += "LoTW"; + if (GT.callsignLookups.eqslUseEnable == true) worker += "eQSL"; + if (GT.callsignLookups.oqrsUseEnable == true) worker += "OQRS"; worker += ""; var newCallList = Array(); @@ -2241,7 +2242,7 @@ function createTooltTipTableLogbook(toolElement) if (callsign.DXcall == myDEcall) { bgDX = " style='background-color:cyan;color:#000;font-weight:bold' "; } if (callsign.DEcall == myDEcall) { bgDE = " style='background-color:#FFFF00;color:#000;font-weight:bold' "; } var ageString = ""; - if (timeNowSec() - callsign.time < 3601) { ageString = (timeNowSec() - callsign.time).toDHMS(); } + if (timeNowSec() - callsign.time < 3601) { ageString = toDHMS(timeNowSec() - callsign.time); } else { ageString = userTimeString(callsign.time * 1000); @@ -2253,20 +2254,20 @@ function createTooltTipTableLogbook(toolElement) "\",\"" + toolElement.qth + "\");' >" + - callsign.DEcall.formatCallsign() + + formatCallsign(callsign.DEcall) + "
"; worker += ""; worker += "" + (callsign.delta > -1 ? callsign.delta : "-") + ""; worker += "" + callsign.RSTsent + ""; worker += "" + callsign.RSTrecv + "" + ""; - if (callsign.DXcall.indexOf("CQ") == 0 || callsign.DXcall == "-") { worker += callsign.DXcall.formatCallsign(); } + if (callsign.DXcall.indexOf("CQ") == 0 || callsign.DXcall == "-") { worker += formatCallsign(callsign.DXcall); } else { worker += "
" + - callsign.DXcall.formatCallsign() + + formatCallsign(callsign.DXcall) + "
"; } worker += @@ -2279,30 +2280,30 @@ function createTooltTipTableLogbook(toolElement) ""; worker += "" + - g_dxccToAltName[callsign.dxcc] + + GT.dxccToAltName[callsign.dxcc] + " (" + - g_dxccInfo[callsign.dxcc].pp + + GT.dxccInfo[callsign.dxcc].pp + ")" + "" + ageString + ""; - if (g_callsignLookups.lotwUseEnable == true) + if (GT.callsignLookups.lotwUseEnable == true) { worker += "" + - (callsign.DEcall in g_lotwCallsigns ? "✔" : "") + + (callsign.DEcall in GT.lotwCallsigns ? "✔" : "") + ""; } - if (g_callsignLookups.eqslUseEnable == true) + if (GT.callsignLookups.eqslUseEnable == true) { worker += "" + - (callsign.DEcall in g_eqslCallsigns ? "✔" : "") + + (callsign.DEcall in GT.eqslCallsigns ? "✔" : "") + ""; } - if (g_callsignLookups.oqrsUseEnable == true) + if (GT.callsignLookups.oqrsUseEnable == true) { - if (callsign.DEcall in g_oqrsCallsigns) + if (callsign.DEcall in GT.oqrsCallsigns) { worker += " 0 + GT.viewInfo[GT.currentOverlay][2] <= GT.viewInfo[GT.currentOverlay][4] && + GT.viewInfo[GT.currentOverlay][4] > 0 ) { - end = ` Needed ${(g_viewInfo[g_currentOverlay][4] - g_viewInfo[g_currentOverlay][2])}]`; + end = ` Needed ${(GT.viewInfo[GT.currentOverlay][4] - GT.viewInfo[GT.currentOverlay][2])}]`; } return news + workline + end; } function setTrophyOverlay(which) { - g_currentOverlay = which; + GT.currentOverlay = which; window.document.title = makeTitleInfo(true); - trophyImg.src = g_trophyImageArray[which]; + trophyImg.src = GT.trophyImageArray[which]; myTrophyTooltip.style.zIndex = -1; clearCurrentShapes(); // set the scope of key @@ -3116,256 +3117,256 @@ function setTrophyOverlay(which) if (which == 0) { - for (key in g_layerVectors) + for (key in GT.layerVectors) { - g_layerVectors[key].setVisible(true); + GT.layerVectors[key].setVisible(true); } if ( - g_appSettings.gtFlagImgSrc > 0 && - g_appSettings.gtShareEnable == true && - g_mapSettings.offlineMode == false + GT.appSettings.gtFlagImgSrc > 0 && + GT.appSettings.gtShareEnable == true && + GT.mapSettings.offlineMode == false ) { - g_layerVectors.gtflags.setVisible(true); + GT.layerVectors.gtflags.setVisible(true); } else { - g_layerVectors.gtflags.setVisible(false); + GT.layerVectors.gtflags.setVisible(false); } - g_layerVectors.award.setVisible(false); - if (g_showAllGrids == false) + GT.layerVectors.award.setVisible(false); + if (GT.showAllGrids == false) { - g_layerVectors["line-grids"].setVisible(false); - g_layerVectors["big-grids"].setVisible(false); - g_layerVectors["long-grids"].setVisible(false); + GT.layerVectors["line-grids"].setVisible(false); + GT.layerVectors["big-grids"].setVisible(false); + GT.layerVectors["long-grids"].setVisible(false); } - if (g_timezoneLayer) + if (GT.timezoneLayer) { - if (g_timezonesEnable == 1) + if (GT.timezonesEnable == 1) { - g_timezoneLayer.setVisible(true); + GT.timezoneLayer.setVisible(true); } else { - g_timezoneLayer.setVisible(false); + GT.timezoneLayer.setVisible(false); } } } else { - if (g_mapSettings.mergeOverlay == false) + if (GT.mapSettings.mergeOverlay == false) { - for (key in g_layerVectors) + for (key in GT.layerVectors) { - g_layerVectors[key].setVisible(false); + GT.layerVectors[key].setVisible(false); } } else { - for (key in g_layerVectors) + for (key in GT.layerVectors) { - g_layerVectors[key].setVisible(true); + GT.layerVectors[key].setVisible(true); } if ( - g_appSettings.gtFlagImgSrc > 0 && - g_appSettings.gtShareEnable == true && - g_mapSettings.offlineMode == false + GT.appSettings.gtFlagImgSrc > 0 && + GT.appSettings.gtShareEnable == true && + GT.mapSettings.offlineMode == false ) { - g_layerVectors.gtflags.setVisible(true); + GT.layerVectors.gtflags.setVisible(true); } else { - g_layerVectors.gtflags.setVisible(false); + GT.layerVectors.gtflags.setVisible(false); } - if (g_showAllGrids == false) + if (GT.showAllGrids == false) { - g_layerVectors["line-grids"].setVisible(false); - g_layerVectors["big-grids"].setVisible(false); - g_layerVectors["long-grids"].setVisible(false); + GT.layerVectors["line-grids"].setVisible(false); + GT.layerVectors["big-grids"].setVisible(false); + GT.layerVectors["long-grids"].setVisible(false); } } - g_layerVectors.award.setVisible(true); - if (g_timezoneLayer) + GT.layerVectors.award.setVisible(true); + if (GT.timezoneLayer) { - g_timezoneLayer.setVisible(false); + GT.timezoneLayer.setVisible(false); } mapLoseFocus(); } if (which == 1) { - for (key in g_cqZones) + for (key in GT.cqZones) { var boxColor = "#FF000015"; var borderColor = "#005500FF"; var borderWeight = 1; - if (didConfirm(g_cqZones[key])) + if (didConfirm(GT.cqZones[key])) { boxColor = "#00FF0066"; } - else if (didWork(g_cqZones[key])) + else if (didWork(GT.cqZones[key])) { boxColor = "#FFFF0066"; } - g_currentShapes[key] = shapeFeature( + GT.currentShapes[key] = shapeFeature( key, - g_cqZones[key].geo, + GT.cqZones[key].geo, "cqzone", boxColor, borderColor, borderWeight ); - g_layerSources.award.addFeature(g_currentShapes[key]); + GT.layerSources.award.addFeature(GT.currentShapes[key]); } } if (which == 2) { - for (key in g_ituZones) + for (key in GT.ituZones) { var boxColor = "#FF000015"; var borderColor = "#800080FF"; var borderWeight = 1; - if (didConfirm(g_ituZones[key])) + if (didConfirm(GT.ituZones[key])) { boxColor = "#00FF0066"; borderWeight = 1; } - else if (didWork(g_ituZones[key])) + else if (didWork(GT.ituZones[key])) { boxColor = "#FFFF0066"; borderWeight = 1; } - g_currentShapes[key] = shapeFeature( + GT.currentShapes[key] = shapeFeature( key, - g_ituZones[key].geo, + GT.ituZones[key].geo, "ituzone", boxColor, borderColor, borderWeight ); - g_layerSources.award.addFeature(g_currentShapes[key]); + GT.layerSources.award.addFeature(GT.currentShapes[key]); } } if (which == 3) { - for (key in g_wacZones) + for (key in GT.wacZones) { var boxColor = "#FF000015"; var borderColor = "#006666FF"; var borderWeight = 1; var originalKey = key; - if (didConfirm(g_wacZones[key])) + if (didConfirm(GT.wacZones[key])) { boxColor = "#00FF0066"; } - else if (didWork(g_wacZones[key])) + else if (didWork(GT.wacZones[key])) { boxColor = "#FFFF0066"; } - g_currentShapes[originalKey] = shapeFeature( + GT.currentShapes[originalKey] = shapeFeature( originalKey, - g_wacZones[originalKey].geo, + GT.wacZones[originalKey].geo, "wac", boxColor, borderColor, borderWeight ); - g_layerSources.award.addFeature(g_currentShapes[originalKey]); + GT.layerSources.award.addFeature(GT.currentShapes[originalKey]); } } if (which == 4) { - for (key in g_wasZones) + for (key in GT.wasZones) { var boxColor = "#FF000020"; var borderColor = "#0000FFFF"; var borderWeight = 1; - if (didConfirm(g_wasZones[key])) + if (didConfirm(GT.wasZones[key])) { boxColor = "#00FF0066"; } - else if (didWork(g_wasZones[key])) + else if (didWork(GT.wasZones[key])) { boxColor = "#FFFF0066"; } - g_currentShapes[key] = shapeFeature( + GT.currentShapes[key] = shapeFeature( key, - g_wasZones[key].geo, + GT.wasZones[key].geo, "was", boxColor, borderColor, borderWeight ); - g_layerSources.award.addFeature(g_currentShapes[key]); + GT.layerSources.award.addFeature(GT.currentShapes[key]); } } if (which == 5) { - for (key in g_dxccInfo) + for (key in GT.dxccInfo) { var boxColor = "#FF000015"; var borderColor = "#0000FFFF"; var borderWeight = 1; - if (didConfirm(g_dxccInfo[key])) + if (didConfirm(GT.dxccInfo[key])) { boxColor = "#00FF0066"; } - else if (didWork(g_dxccInfo[key])) + else if (didWork(GT.dxccInfo[key])) { boxColor = "#FFFF0066"; } - if (g_dxccInfo[key].geo != "deleted") + if (GT.dxccInfo[key].geo != "deleted") { - g_currentShapes[key] = shapeFeature( + GT.currentShapes[key] = shapeFeature( key, - g_dxccInfo[key].geo, + GT.dxccInfo[key].geo, "dxcc", boxColor, borderColor, borderWeight ); - g_layerSources.award.addFeature(g_currentShapes[key]); + GT.layerSources.award.addFeature(GT.currentShapes[key]); } } } if (which == 6) { - for (key in g_countyData) + for (key in GT.countyData) { var boxColor = "#00000000"; var borderColor = "#0000FFFF"; var borderWeight = 0.1; - if (didConfirm(g_countyData[key])) + if (didConfirm(GT.countyData[key])) { boxColor = "#00FF0066"; borderWeight = 1; } - else if (didWork(g_countyData[key])) + else if (didWork(GT.countyData[key])) { boxColor = "#FFFF0066"; borderWeight = 1; } - g_currentShapes[key] = shapeFeature( + GT.currentShapes[key] = shapeFeature( key, - g_countyData[key].geo, + GT.countyData[key].geo, "usc", boxColor, borderColor, borderWeight ); - g_layerSources.award.addFeature(g_currentShapes[key]); + GT.layerSources.award.addFeature(GT.currentShapes[key]); } } if (which == 7) { - for (key in g_us48Data) + for (key in GT.us48Data) { var LL = squareToLatLong(key); var bounds = [ @@ -3376,18 +3377,18 @@ function setTrophyOverlay(which) var boxColor = "#FF000015"; var borderColor = "#0000FFFF"; var borderWeight = 0.1; - if (g_us48Data[key].confirmed) + if (GT.us48Data[key].confirmed) { boxColor = "#00FF0066"; borderWeight = 0.2; } - else if (g_us48Data[key].worked) + else if (GT.us48Data[key].worked) { boxColor = "#FFFF0066"; borderWeight = 0.2; } - g_currentShapes[key] = gridFeature( + GT.currentShapes[key] = gridFeature( key, rectangle(bounds), "us48", @@ -3395,7 +3396,7 @@ function setTrophyOverlay(which) borderColor, borderWeight ); - g_layerSources.award.addFeature(g_currentShapes[key]); + GT.layerSources.award.addFeature(GT.currentShapes[key]); } } @@ -3428,13 +3429,13 @@ function gridFeature( return objectData; } -var g_lastMoon = null; +GT.lastMoon = null; function moonOver(feature) { var data = subLunar(timeNowSec()); - var object = doRAconvert(g_myLon, g_myLat, data.RA, data.Dec); + var object = doRAconvert(GT.myLon, GT.myLat, data.RA, data.Dec); var elevation = object.elevation.toFixed(1); var elColor = "yellow"; if (elevation <= 0) elColor = "red"; @@ -3456,12 +3457,12 @@ function moonOver(feature) myMoonTooltip.innerHTML = worker; - if (g_lastMoon) + if (GT.lastMoon) { moonMove(); return; } - g_lastMoon = feature; + GT.lastMoon = feature; moonMove(); myMoonTooltip.style.zIndex = 499; @@ -3470,7 +3471,7 @@ function moonOver(feature) function moonOut() { - g_lastMoon = null; + GT.lastMoon = null; myMoonTooltip.style.zIndex = -1; } @@ -3481,16 +3482,16 @@ function moonMove() myMoonTooltip.style.top = getMouseY() + 22 + "px"; } -var g_lastTrophy = null; +GT.lastTrophy = null; function trophyOver(feature) { - if (g_lastTrophy && g_lastTrophy == feature) + if (GT.lastTrophy && GT.lastTrophy == feature) { trophyMove(); return; } - g_lastTrophy = feature; + GT.lastTrophy = feature; var name = feature.getGeometryName(); @@ -3502,61 +3503,61 @@ function trophyOver(feature) if (key == "cqzone") { trophy = "CQ Zone"; - infoObject = g_cqZones[name]; + infoObject = GT.cqZones[name]; zone = name; - name = g_cqZones[name].name; + name = GT.cqZones[name].name; } if (key == "ituzone") { trophy = "ITU Zone"; - infoObject = g_ituZones[name]; + infoObject = GT.ituZones[name]; } - if (key == "wac" && name in g_wacZones) + if (key == "wac" && name in GT.wacZones) { trophy = "Continent"; - infoObject = g_wacZones[name]; + infoObject = GT.wacZones[name]; } - if (key == "was" && name in g_wasZones) + if (key == "was" && name in GT.wasZones) { trophy = "US State"; - infoObject = g_wasZones[name]; + infoObject = GT.wasZones[name]; } - if (key == "dxcc" && name in g_dxccInfo) + if (key == "dxcc" && name in GT.dxccInfo) { trophy = "DXCC"; var ref = name; - infoObject = g_dxccInfo[ref]; + infoObject = GT.dxccInfo[ref]; name = - g_dxccInfo[ref].name + + GT.dxccInfo[ref].name + " (" + - g_dxccInfo[ref].pp + + GT.dxccInfo[ref].pp + ")"; } if (key == "usc") { trophy = "US County"; - infoObject = g_countyData[name]; + infoObject = GT.countyData[name]; name = infoObject.geo.properties.n + ", " + infoObject.geo.properties.st; } if (key == "us48") { trophy = "US Continental Grids"; - infoObject = g_us48Data[feature.get("grid")]; + infoObject = GT.us48Data[feature.get("grid")]; name = feature.get("grid"); - if (name in g_gridToState) + if (name in GT.gridToState) { zone = ""; - for (var x = 0; x < g_gridToDXCC[name].length; x++) + for (var x = 0; x < GT.gridToDXCC[name].length; x++) { - if (name in g_gridToState) + if (name in GT.gridToState) { - for (var y = 0; y < g_gridToState[name].length; y++) + for (var y = 0; y < GT.gridToState[name].length; y++) { - if (g_gridToDXCC[name][x] == g_StateData[g_gridToState[name][y]].dxcc && g_gridToDXCC[name][x] == 291) + if (GT.gridToDXCC[name][x] == GT.StateData[GT.gridToState[name][y]].dxcc && GT.gridToDXCC[name][x] == 291) { - zone += g_StateData[g_gridToState[name][y]].name + ", "; + zone += GT.StateData[GT.gridToState[name][y]].name + ", "; } } } @@ -3684,7 +3685,7 @@ function trophyOver(feature) function trophyOut() { - g_lastTrophy = null; + GT.lastTrophy = null; myTrophyTooltip.style.zIndex = -1; } @@ -3695,25 +3696,25 @@ function trophyMove() myTrophyTooltip.style.top = getMouseY() - positionInfo.height - 22 + "px"; } -var g_MyCurrentGrid = ""; -var g_MyGridIsUp = false; +GT.MyCurrentGrid = ""; +GT.MyGridIsUp = false; function mouseDownGrid(longlat, event) { var grid = ""; grid = latLonToGridSquare(longlat[1], longlat[0]); - g_MyCurrentGrid = grid.substr(0, 4); + GT.MyCurrentGrid = grid.substr(0, 4); var worker = ""; worker += ""; var bearing = parseInt( - MyCircle.bearing(g_myLat, g_myLon, longlat[1], longlat[0]) + MyCircle.bearing(GT.myLat, GT.myLon, longlat[1], longlat[0]) ); worker += "
Dist" + parseInt( MyCircle.distance( - g_myLat, - g_myLon, + GT.myLat, + GT.myLon, longlat[1], longlat[0], distanceUnit.value @@ -3731,35 +3732,35 @@ function mouseDownGrid(longlat, event) "
Long" + longlat[0].toFixed(3) + "
"; - if (grid in g_gridToDXCC) + if (grid in GT.gridToDXCC) { worker += ""; worker += ""; - for (var x = 0; x < g_gridToDXCC[grid].length; x++) + for (var x = 0; x < GT.gridToDXCC[grid].length; x++) { worker += ""; } - if (grid in g_gridToState) + if (grid in GT.gridToState) { worker += ""; - for (var x = 0; x < g_gridToDXCC[grid].length; x++) + for (var x = 0; x < GT.gridToDXCC[grid].length; x++) { worker += "
" + - g_dxccToAltName[g_gridToDXCC[grid][x]] + + GT.dxccToAltName[GT.gridToDXCC[grid][x]] + " (" + - g_dxccInfo[g_gridToDXCC[grid][x]].pp + + GT.dxccInfo[GT.gridToDXCC[grid][x]].pp + ")
"; - if (grid in g_gridToState) + if (grid in GT.gridToState) { - for (var y = 0; y < g_gridToState[grid].length; y++) + for (var y = 0; y < GT.gridToState[grid].length; y++) { if ( - g_gridToDXCC[grid][x] == g_StateData[g_gridToState[grid][y]].dxcc + GT.gridToDXCC[grid][x] == GT.StateData[GT.gridToState[grid][y]].dxcc ) { - worker += g_StateData[g_gridToState[grid][y]].name + "
"; + worker += GT.StateData[GT.gridToState[grid][y]].name + "
"; } } } @@ -3769,13 +3770,13 @@ function mouseDownGrid(longlat, event) worker += "
"; } - g_tempGridBox = tempGridToBox(grid, g_tempGridBox, "#000000FF", "#00000000"); + GT.tempGridBox = tempGridToBox(grid, GT.tempGridBox, "#000000FF", "#00000000"); myGridTooltip.innerHTML = "
" + grid + "
" + worker; - g_MyGridIsUp = true; + GT.MyGridIsUp = true; mouseMoveGrid(); myGridTooltip.style.zIndex = 499; @@ -3784,7 +3785,7 @@ function mouseDownGrid(longlat, event) function mouseMoveGrid() { - if (g_MyGridIsUp == true) + if (GT.MyGridIsUp == true) { var positionInfo = myGridTooltip.getBoundingClientRect(); myGridTooltip.style.left = getMouseX() - positionInfo.width / 2 + "px"; @@ -3794,26 +3795,26 @@ function mouseMoveGrid() function mouseUpGrid() { - g_MyGridIsUp = false; + GT.MyGridIsUp = false; myGridTooltip.style.zIndex = -1; - if (g_tempGridBox) + if (GT.tempGridBox) { - if (g_layerSources.temp.hasFeature(g_tempGridBox)) { g_layerSources.temp.removeFeature(g_tempGridBox); } + if (GT.layerSources.temp.hasFeature(GT.tempGridBox)) { GT.layerSources.temp.removeFeature(GT.tempGridBox); } } - g_tempGridBox = null; + GT.tempGridBox = null; } -var g_lastGtFlag = null; +GT.lastGtFlag = null; function mouseOverGtFlag(feature) { - if (g_lastGtFlag && g_lastGtFlag == feature) + if (GT.lastGtFlag && GT.lastGtFlag == feature) { gtFlagMove(); return; } - g_lastGtFlag = feature; + GT.lastGtFlag = feature; createFlagTipTable(feature); @@ -3822,11 +3823,11 @@ function mouseOverGtFlag(feature) myFlagtip.style.zIndex = 499; myFlagtip.style.display = "block"; - if (feature.size == 73 && feature != g_lasttimezone) + if (feature.size == 73 && feature != GT.lasttimezone) { - if (g_lasttimezone != null) + if (GT.lasttimezone != null) { - g_lasttimezone.setStyle(null); + GT.lasttimezone.setStyle(null); } var style = new ol.style.Style({ @@ -3836,19 +3837,19 @@ function mouseOverGtFlag(feature) }); feature.setStyle(style); - g_lasttimezone = feature; + GT.lasttimezone = feature; } } function mouseOutGtFlag(mouseEvent) { - g_lastGtFlag = null; + GT.lastGtFlag = null; myFlagtip.style.zIndex = -1; - if (g_lasttimezone != null) + if (GT.lasttimezone != null) { - g_lasttimezone.setStyle(null); - g_lasttimezone = null; + GT.lasttimezone.setStyle(null); + GT.lasttimezone = null; } } @@ -3859,21 +3860,21 @@ function gtFlagMove() myFlagtip.style.top = getMouseY() - positionInfo.height - 5 + "px"; } -var g_lastDataGridUp = null; +GT.lastDataGridUp = null; function mouseOverDataItem(mouseEvent, fromHover) { - if (g_MyGridIsUp) return; - if (g_lastDataGridUp && g_lastDataGridUp == mouseEvent) + if (GT.MyGridIsUp) return; + if (GT.lastDataGridUp && GT.lastDataGridUp == mouseEvent) { mouseMoveDataItem(mouseEvent); return; } - if (g_mapSettings.mouseOver == true && fromHover == false) return; + if (GT.mapSettings.mouseOver == true && fromHover == false) return; - if (g_mapSettings.mouseOver == false && fromHover == true) return; + if (GT.mapSettings.mouseOver == false && fromHover == true) return; - g_lastDataGridUp = mouseEvent; + GT.lastDataGridUp = mouseEvent; var isFlag = false; var callListLength = createTooltTipTable(mouseEvent); @@ -3884,7 +3885,7 @@ function mouseOverDataItem(mouseEvent, fromHover) var noRoomRight = false; if ( typeof mouseEvent.spot != "undefined" && - g_receptionReports.spots[mouseEvent.spot].bearing > 180 + GT.receptionReports.spots[mouseEvent.spot].bearing > 180 ) { noRoomRight = true; } myTooltip.style.left = getMouseX() + 15 + "px"; top = parseInt(getMouseY() - 20 - (callListLength / 2) * 25); @@ -3918,7 +3919,7 @@ function mouseMoveDataItem(mouseEvent) var noRoomRight = false; if ( typeof mouseEvent.spot != "undefined" && - g_receptionReports.spots[mouseEvent.spot].bearing > 180 + GT.receptionReports.spots[mouseEvent.spot].bearing > 180 ) { noRoomRight = true; } myTooltip.style.left = getMouseX() + 15 + "px"; top = Number(myTooltip.style.top); @@ -3946,18 +3947,18 @@ function mouseOutOfDataItem(mouseEvent) { var myTooltip = document.getElementById("myTooltip"); myTooltip.style.zIndex = -1; - g_lastDataGridUp = null; + GT.lastDataGridUp = null; - if (g_spotView == 1) g_layerSources["psk-hop"].clear(); + if (GT.spotView == 1) GT.layerSources["psk-hop"].clear(); } function reloadInfo(bandOrMode) { - if (g_statsWindowHandle != null) + if (GT.statsWindowHandle != null) { try { - g_statsWindowHandle.window.reloadInfo(); + GT.statsWindowHandle.window.reloadInfo(); } catch (e) { @@ -4056,7 +4057,7 @@ function squareToLatLong(qth) var la2; var lo2; var LatLong = []; - if (qth.length == 4 || g_appSettings.sixWideMode == 0) + if (qth.length == 4 || GT.appSettings.sixWideMode == 0) { la2 = la1 + 1; lo2 = lo1 + 2; @@ -4116,21 +4117,21 @@ function qthToQsoBox( wspr ) { - if (g_appSettings.gridViewMode == 1) return null; + if (GT.appSettings.gridViewMode == 1) return null; - var borderColor = g_mainBorderColor; - var boxColor = g_legendColors.QSX + g_gridAlpha; + var borderColor = GT.mainBorderColor; + var boxColor = GT.legendColors.QSX + GT.gridAlpha; var borderWeight = 0.5; var myDEzOffset = 10; var myDEbox = false; if (worked) { - boxColor = g_legendColors.QSO + g_gridAlpha; + boxColor = GT.legendColors.QSO + GT.gridAlpha; } if (confirmed) { - boxColor = g_legendColors.QSL + g_gridAlpha; + boxColor = GT.legendColors.QSL + GT.gridAlpha; } if (wspr != null) { @@ -4139,27 +4140,27 @@ function qthToQsoBox( } var zIndex = 2; - var entityVisibility = g_appSettings.gridViewMode > 1; + var entityVisibility = GT.appSettings.gridViewMode > 1; var returnRectangle = null; - if (g_appSettings.sixWideMode == 0) iQTH = iQTH.substr(0, 4); + if (GT.appSettings.sixWideMode == 0) iQTH = iQTH.substr(0, 4); else iQTH = iQTH.substr(0, 6); var rect = null; if (iQTH == "") { - for (var key in g_qsoGrids) + for (var key in GT.qsoGrids) { - if (iHash in g_qsoGrids[key].rectangle.hashes) + if (iHash in GT.qsoGrids[key].rectangle.hashes) { - rect = g_qsoGrids[key]; + rect = GT.qsoGrids[key]; break; } } } else { - if (iQTH in g_qsoGrids) + if (iQTH in GT.qsoGrids) { - rect = g_qsoGrids[iQTH]; + rect = GT.qsoGrids[iQTH]; } } if (rect == null) @@ -4169,10 +4170,10 @@ function qthToQsoBox( // Valid QTH var triangleView = false; if ( - g_appSettings.gridViewMode == 3 && - iQTH in g_liveGrids && + GT.appSettings.gridViewMode == 3 && + iQTH in GT.liveGrids && entityVisibility == true && - g_pushPinMode == false + GT.pushPinMode == false ) { if (confirmed) @@ -4219,14 +4220,14 @@ function qthToQsoBox( newRect.rectangle.qth = iQTH; - if (g_pushPinMode == false && entityVisibility == true) { g_layerSources.qso.addFeature(newRect.rectangle); } + if (GT.pushPinMode == false && entityVisibility == true) { GT.layerSources.qso.addFeature(newRect.rectangle); } - var newPin = g_colorLeafletQPins.worked[band]; - if (confirmed) newPin = g_colorLeafletQPins.confirmed[band]; + var newPin = GT.colorLeafletQPins.worked[band]; + if (confirmed) newPin = GT.colorLeafletQPins.confirmed[band]; newRect.rectangle.pin = iconFeature( ol.extent.getCenter(newRect.rectangle.getGeometry().getExtent()), - g_appSettings.sixWideMode == 1 ? newPin : g_pushPinIconOff, + GT.appSettings.sixWideMode == 1 ? newPin : GT.pushPinIconOff, zIndex ); newRect.rectangle.pin.qth = iQTH; @@ -4234,7 +4235,7 @@ function qthToQsoBox( newRect.rectangle.pin.hashes[iHash] = 1; newRect.rectangle.pin.size = LL.size; - if (g_pushPinMode && entityVisibility == true) { g_layerSources["qso-pins"].addFeature(newRect.rectangle.pin); } + if (GT.pushPinMode && entityVisibility == true) { GT.layerSources["qso-pins"].addFeature(newRect.rectangle.pin); } newRect.rectangle.locked = locked; newRect.rectangle.worked = worked; @@ -4245,7 +4246,7 @@ function qthToQsoBox( newRect.rectangle.qso = true; newRect.rectangle.pin.qso = true; - g_qsoGrids[iQTH] = newRect; + GT.qsoGrids[iQTH] = newRect; returnRectangle = newRect.rectangle; } } @@ -4263,7 +4264,7 @@ function qthToQsoBox( } if (worked && !rect.rectangle.worked) rect.rectangle.worked = worked; if (confirmed && !rect.rectangle.confirmed) { rect.rectangle.confirmed = confirmed; } - borderColor = g_mainBorderColor; + borderColor = GT.mainBorderColor; if (myDEbox) borderWeight = 1; zIndex = 2; if (rect.rectangle.size == 6) @@ -4292,34 +4293,34 @@ function qthToQsoBox( function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) { - if (g_appSettings.gridViewMode == 2) return null; + if (GT.appSettings.gridViewMode == 2) return null; - var borderColor = g_mainBorderColor; - var boxColor = g_legendColors.QSX + g_gridAlpha; + var borderColor = GT.mainBorderColor; + var boxColor = GT.legendColors.QSX + GT.gridAlpha; var borderWeight = 0.5; var myDEzOffset = 0; var myDEbox = false; if (DE == "CQ" || iCQ) { - boxColor = g_legendColors.CQ + g_gridAlpha; + boxColor = GT.legendColors.CQ + GT.gridAlpha; } if (DE == myDEcall) { borderColor = "#FF0000FF"; - boxColor = g_legendColors.QRZ + g_gridAlpha; + boxColor = GT.legendColors.QRZ + GT.gridAlpha; borderWeight = 1.0; myDEzOffset = 20; myDEbox = true; } if (DE.indexOf("CQ DX") > -1) { - boxColor = g_legendColors.CQDX + g_gridAlpha; + boxColor = GT.legendColors.CQDX + GT.gridAlpha; } if (locked) { - boxColor = g_legendColors.QTH + g_gridAlpha; + boxColor = GT.legendColors.QTH + GT.gridAlpha; borderColor = "#000000FF"; borderOpacity = 1; } @@ -4330,25 +4331,25 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) } var zIndex = 2; var returnRectangle = null; - if (g_appSettings.sixWideMode == 0) iQTH = iQTH.substr(0, 4); + if (GT.appSettings.sixWideMode == 0) iQTH = iQTH.substr(0, 4); else iQTH = iQTH.substr(0, 6); var rect = null; if (iQTH == "") { - for (var key in g_liveGrids) + for (var key in GT.liveGrids) { - if (hash in g_liveGrids[key].rectangle.liveHash) + if (hash in GT.liveGrids[key].rectangle.liveHash) { - rect = g_liveGrids[key]; + rect = GT.liveGrids[key]; break; } } } else { - if (iQTH in g_liveGrids) + if (iQTH in GT.liveGrids) { - rect = g_liveGrids[iQTH]; + rect = GT.liveGrids[iQTH]; } } if (rect == null) @@ -4359,14 +4360,14 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) var entityVisibility = true; var triangleView = false; if ( - Number(g_appSettings.gridViewMode) == 3 && - iQTH in g_qsoGrids && - g_pushPinMode == false + Number(GT.appSettings.gridViewMode) == 3 && + iQTH in GT.qsoGrids && + GT.pushPinMode == false ) { if ( - g_mapSettings.splitQSL || - g_qsoGrids[iQTH].rectangle.confirmed == false + GT.mapSettings.splitQSL || + GT.qsoGrids[iQTH].rectangle.confirmed == false ) { qsoTriangleGrid(iQTH); @@ -4383,7 +4384,7 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) zIndex = 50; } newRect = {}; - newRect.age = g_timeNow; + newRect.age = GT.timeNow; newRect.shouldDim = false; newRect.qth = iQTH; @@ -4412,14 +4413,14 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) newRect.rectangle.qth = iQTH; - if (g_pushPinMode == false && entityVisibility) + if (GT.pushPinMode == false && entityVisibility) { - g_layerSources.live.addFeature(newRect.rectangle); + GT.layerSources.live.addFeature(newRect.rectangle); } newRect.rectangle.pin = iconFeature( ol.extent.getCenter(newRect.rectangle.getGeometry().getExtent()), - g_colorLeafletPins[band], + GT.colorLeafletPins[band], zIndex ); newRect.rectangle.pin.qth = iQTH; @@ -4427,7 +4428,7 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) newRect.rectangle.pin.liveHash[hash] = 1; newRect.rectangle.pin.size = LL.size; - if (g_pushPinMode && entityVisibility == true) { g_layerSources["live-pins"].addFeature(newRect.rectangle.pin); } + if (GT.pushPinMode && entityVisibility == true) { GT.layerSources["live-pins"].addFeature(newRect.rectangle.pin); } newRect.rectangle.locked = locked; newRect.rectangle.size = LL.size; @@ -4436,7 +4437,7 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) newRect.rectangle.qso = false; newRect.rectangle.pin.qso = false; - g_liveGrids[iQTH] = newRect; + GT.liveGrids[iQTH] = newRect; returnRectangle = newRect.rectangle; } } @@ -4460,7 +4461,7 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) // borderWeight = 1.0; zIndex = 50; } - newRect.age = g_timeNow; + newRect.age = GT.timeNow; newRect.shouldDim = false; const featureHoverStyle = new ol.style.Style({ @@ -4518,8 +4519,8 @@ function dimFunction(qthObj) var fillColor = featureFill.getColor(); var featureStroke = featureStyle.getStroke(); var strokeColor = featureStroke.getColor(); - var percent = 1.0 - (g_timeNow - qthObj.age) / gridDecay.value; - var alpha = Math.max(0.06, (g_mapSettings.gridAlpha / 255) * percent); + var percent = 1.0 - (GT.timeNow - qthObj.age) / gridDecay.value; + var alpha = Math.max(0.06, (GT.mapSettings.gridAlpha / 255) * percent); fillColor = alphaTo(fillColor, alpha); featureFill.setColor(fillColor); @@ -4541,54 +4542,54 @@ function toggleTrafficDecode() function changeTrafficDecode() { - g_mapSettings.trafficDecode = trafficDecode.checked; + GT.mapSettings.trafficDecode = trafficDecode.checked; trafficDecodeView(); saveMapSettings(); } function trafficDecodeView() { - if (g_mapSettings.trafficDecode == false) + if (GT.mapSettings.trafficDecode == false) { trafficDiv.innerHTML = ""; - g_lastTraffic = Array(); + GT.lastTraffic = Array(); } } function changeFitQRZvalue() { - g_mapSettings.fitQRZ = fitQRZvalue.checked; + GT.mapSettings.fitQRZ = fitQRZvalue.checked; saveMapSettings(); } function changeQrzDxccFallbackValue() { - g_mapSettings.qrzDxccFallback = qrzDxccFallbackValue.checked; + GT.mapSettings.qrzDxccFallback = qrzDxccFallbackValue.checked; saveMapSettings(); } function changeCqHiliteValue(check) { - g_mapSettings.CQhilite = check.checked; + GT.mapSettings.CQhilite = check.checked; saveMapSettings(); if (check.checked == false) removePaths(); } function changeFocusRigValue(check) { - g_mapSettings.focusRig = check.checked; + GT.mapSettings.focusRig = check.checked; saveMapSettings(); } function changeHaltOntTxValue(check) { - g_mapSettings.haltAllOnTx = check.checked; + GT.mapSettings.haltAllOnTx = check.checked; saveMapSettings(); } function changeSplitQSL() { - g_mapSettings.splitQSL = splitQSLValue.checked; + GT.mapSettings.splitQSL = splitQSLValue.checked; saveMapSettings(); redrawGrids(); } @@ -4613,78 +4614,78 @@ function toggleAnimate() function toggleAllGrids() { - g_showAllGrids = !g_showAllGrids; - setTrophyOverlay(g_currentOverlay); - gridOverlayImg.style.filter = g_showAllGrids ? "" : "grayscale(1)"; + GT.showAllGrids = !GT.showAllGrids; + setTrophyOverlay(GT.currentOverlay); + gridOverlayImg.style.filter = GT.showAllGrids ? "" : "grayscale(1)"; } function changeAnimate() { - g_mapSettings.animate = animateValue.checked; + GT.mapSettings.animate = animateValue.checked; saveMapSettings(); var dash = []; var dashOff = 0; - if (g_mapSettings.animate == true) + if (GT.mapSettings.animate == true) { - dash = g_flightPathLineDash; - dashOff = g_flightPathTotal - g_flightPathOffset; + dash = GT.flightPathLineDash; + dashOff = GT.flightPathTotal - GT.flightPathOffset; } - for (var i = g_flightPaths.length - 1; i >= 0; i--) + for (var i = GT.flightPaths.length - 1; i >= 0; i--) { - if (g_flightPaths[i].isShapeFlight == 0) + if (GT.flightPaths[i].isShapeFlight == 0) { - var featureStyle = g_flightPaths[i].getStyle(); + var featureStyle = GT.flightPaths[i].getStyle(); var featureStroke = featureStyle.getStroke(); featureStroke.setLineDash(dash); featureStroke.setLineDashOffset(dashOff); featureStyle.setStroke(featureStroke); - g_flightPaths[i].setStyle(featureStyle); + GT.flightPaths[i].setStyle(featureStyle); } } - if (g_transmitFlightPath != null) + if (GT.transmitFlightPath != null) { - var featureStyle = g_transmitFlightPath.getStyle(); + var featureStyle = GT.transmitFlightPath.getStyle(); var featureStroke = featureStyle.getStroke(); featureStroke.setLineDash(dash); featureStroke.setLineDashOffset(dashOff); featureStyle.setStroke(featureStroke); - g_transmitFlightPath.setStyle(featureStyle); + GT.transmitFlightPath.setStyle(featureStyle); } setAnimateView(); } function changeAnimateSpeedValue() { - g_mapSettings.animateSpeed = 21 - animateSpeedValue.value; + GT.mapSettings.animateSpeed = 21 - animateSpeedValue.value; saveMapSettings(); } -var g_animateFrame = 0; -var g_nextDimTime = 0; -var g_last = 0; +GT.animateFrame = 0; +GT.nextDimTime = 0; +GT.last = 0; function removeFlightPathsAndDimSquares() { - for (var i = g_flightPaths.length - 1; i >= 0; i--) + for (var i = GT.flightPaths.length - 1; i >= 0; i--) { - if (g_flightPaths[i].age < g_timeNow) + if (GT.flightPaths[i].age < GT.timeNow) { - if (typeof g_flightPaths[i].Arrow != "undefined") { g_layerSources.flight.removeFeature(g_flightPaths[i].Arrow); } - g_layerSources.flight.removeFeature(g_flightPaths[i]); - delete g_flightPaths[i]; - g_flightPaths[i] = null; + if (typeof GT.flightPaths[i].Arrow != "undefined") { GT.layerSources.flight.removeFeature(GT.flightPaths[i].Arrow); } + GT.layerSources.flight.removeFeature(GT.flightPaths[i]); + delete GT.flightPaths[i]; + GT.flightPaths[i] = null; - g_flightPaths.splice(i, 1); + GT.flightPaths.splice(i, 1); } } - if (g_timeNow > g_nextDimTime) + if (GT.timeNow > GT.nextDimTime) { dimGridsquare(); } @@ -4694,49 +4695,49 @@ function animatePaths() { requestAnimationFrame(animatePaths); - g_last ^= g_last; - if (g_last == 1) return; + GT.last ^= GT.last; + if (GT.last == 1) return; - g_animateFrame++; - g_animateFrame %= g_mapSettings.animateSpeed; + GT.animateFrame++; + GT.animateFrame %= GT.mapSettings.animateSpeed; - if (g_animateFrame > 0) return; + if (GT.animateFrame > 0) return; - if (g_mapSettings.animate == false) return; + if (GT.mapSettings.animate == false) return; - g_flightPathOffset += 1; - g_flightPathOffset %= g_flightPathTotal; + GT.flightPathOffset += 1; + GT.flightPathOffset %= GT.flightPathTotal; - var targetOffset = g_flightPathTotal - g_flightPathOffset; + var targetOffset = GT.flightPathTotal - GT.flightPathOffset; var featureStyle = null; var featureStroke = null; - for (var i = 0; i < g_flightPaths.length; i++) + for (var i = 0; i < GT.flightPaths.length; i++) { - if (g_flightPaths[i].isShapeFlight == 0) + if (GT.flightPaths[i].isShapeFlight == 0) { - featureStyle = g_flightPaths[i].getStyle(); + featureStyle = GT.flightPaths[i].getStyle(); featureStroke = featureStyle.getStroke(); featureStroke.setLineDashOffset(targetOffset); - g_flightPaths[i].setStyle(featureStyle); + GT.flightPaths[i].setStyle(featureStyle); } } - if (g_transmitFlightPath != null) + if (GT.transmitFlightPath != null) { - var featureStyle = g_transmitFlightPath.getStyle(); + var featureStyle = GT.transmitFlightPath.getStyle(); var featureStroke = featureStyle.getStroke(); featureStroke.setLineDashOffset(targetOffset); featureStyle.setStroke(featureStroke); - g_transmitFlightPath.setStyle(featureStyle); + GT.transmitFlightPath.setStyle(featureStyle); } } function removePaths() { - g_layerSources.flight.clear(); - g_flightPaths = Array(); + GT.layerSources.flight.clear(); + GT.flightPaths = Array(); } function fadePaths() @@ -4750,201 +4751,201 @@ function fadePaths() function dimGridsquare() { if (gridDecay.value == 0) return; - for (var i in g_liveGrids) + for (var i in GT.liveGrids) { - dimFunction(g_liveGrids[i]); + dimFunction(GT.liveGrids[i]); if ( - g_timeNow - g_liveGrids[i].age >= gridDecay.value && - g_liveGrids[i].rectangle.locked == false + GT.timeNow - GT.liveGrids[i].age >= gridDecay.value && + GT.liveGrids[i].rectangle.locked == false ) { - // Walk the rectangles DEcall's and remove them from g_liveCallsigns - for (var CallIsKey in g_liveGrids[i].rectangle.liveHash) + // Walk the rectangles DEcall's and remove them from GT.liveCallsigns + for (var CallIsKey in GT.liveGrids[i].rectangle.liveHash) { - if (CallIsKey in g_liveCallsigns) + if (CallIsKey in GT.liveCallsigns) { - g_liveCallsigns[CallIsKey].rect = null; + GT.liveCallsigns[CallIsKey].rect = null; - delete g_liveCallsigns[CallIsKey]; + delete GT.liveCallsigns[CallIsKey]; } } - if (g_liveGrids[i].rectangle.pin != null) + if (GT.liveGrids[i].rectangle.pin != null) { if ( - g_layerSources["live-pins"].hasFeature(g_liveGrids[i].rectangle.pin) + GT.layerSources["live-pins"].hasFeature(GT.liveGrids[i].rectangle.pin) ) { - g_layerSources["live-pins"].removeFeature( - g_liveGrids[i].rectangle.pin + GT.layerSources["live-pins"].removeFeature( + GT.liveGrids[i].rectangle.pin ); } } - if (g_layerSources.live.hasFeature(g_liveGrids[i].rectangle)) + if (GT.layerSources.live.hasFeature(GT.liveGrids[i].rectangle)) { - g_layerSources.live.removeFeature(g_liveGrids[i].rectangle); + GT.layerSources.live.removeFeature(GT.liveGrids[i].rectangle); - if (g_appSettings.gridViewMode == 3 && i in g_qsoGrids) + if (GT.appSettings.gridViewMode == 3 && i in GT.qsoGrids) { - if (g_qsoGrids[i].isTriangle) + if (GT.qsoGrids[i].isTriangle) { - triangleToGrid(i, g_qsoGrids[i].rectangle); - g_qsoGrids[i].isTriangle = false; + triangleToGrid(i, GT.qsoGrids[i].rectangle); + GT.qsoGrids[i].isTriangle = false; } } } - g_liveGrids[i] = null; - delete g_liveGrids[i]; + GT.liveGrids[i] = null; + delete GT.liveGrids[i]; } } - g_nextDimTime = g_timeNow + 7; + GT.nextDimTime = GT.timeNow + 7; } function updateCountStats() { - var count = Object.keys(g_liveCallsigns).length; + var count = Object.keys(GT.liveCallsigns).length; - if (myDEcall in g_liveCallsigns) count--; + if (myDEcall in GT.liveCallsigns) count--; callsignCount.innerHTML = count; - qsoCount.innerHTML = g_QSOcount; - qslCount.innerHTML = g_QSLcount; + qsoCount.innerHTML = GT.QSOcount; + qslCount.innerHTML = GT.QSLcount; - countryCount.innerHTML = Object.keys(g_dxccCount).length; + countryCount.innerHTML = Object.keys(GT.dxccCount).length; - if (Object.keys(g_QSOhash).length > 0) + if (Object.keys(GT.QSOhash).length > 0) { clearOrLoadButton.innerHTML = "Clear Log"; - g_loadQSOs = false; + GT.loadQSOs = false; } else { clearOrLoadButton.innerHTML = "Load Logs"; - g_loadQSOs = true; + GT.loadQSOs = true; } } function clearGrids() { - g_layerSources.live.clear(); - g_layerSources["live-pins"].clear(); + GT.layerSources.live.clear(); + GT.layerSources["live-pins"].clear(); - for (var i in g_liveGrids) + for (var i in GT.liveGrids) { - // Walk the rectangles DEcall's and remove the rect from the g_liveCallsigns - for (var CallIsKey in g_liveGrids[i].rectangle.liveHash) + // Walk the rectangles DEcall's and remove the rect from the GT.liveCallsigns + for (var CallIsKey in GT.liveGrids[i].rectangle.liveHash) { - if (CallIsKey in g_liveCallsigns) g_liveCallsigns[CallIsKey].rect = null; + if (CallIsKey in GT.liveCallsigns) GT.liveCallsigns[CallIsKey].rect = null; } } - g_liveGrids = {}; + GT.liveGrids = {}; } function clearQsoGrids() { - g_layerSources.qso.clear(); - g_layerSources["qso-pins"].clear(); + GT.layerSources.qso.clear(); + GT.layerSources["qso-pins"].clear(); - g_qsoGrids = {}; + GT.qsoGrids = {}; - for (var key in g_dxccInfo) + for (var key in GT.dxccInfo) { - g_dxccInfo[key].worked = false; - g_dxccInfo[key].confirmed = false; - g_dxccInfo[key].worked_bands = {}; - g_dxccInfo[key].confirmed_bands = {}; - g_dxccInfo[key].worked_modes = {}; - g_dxccInfo[key].confirmed_modes = {}; + GT.dxccInfo[key].worked = false; + GT.dxccInfo[key].confirmed = false; + GT.dxccInfo[key].worked_bands = {}; + GT.dxccInfo[key].confirmed_bands = {}; + GT.dxccInfo[key].worked_modes = {}; + GT.dxccInfo[key].confirmed_modes = {}; } - for (var key in g_cqZones) + for (var key in GT.cqZones) { - g_cqZones[key].worked = false; - g_cqZones[key].confirmed = false; + GT.cqZones[key].worked = false; + GT.cqZones[key].confirmed = false; - g_cqZones[key].worked_bands = {}; - g_cqZones[key].confirmed_bands = {}; - g_cqZones[key].worked_modes = {}; - g_cqZones[key].confirmed_modes = {}; + GT.cqZones[key].worked_bands = {}; + GT.cqZones[key].confirmed_bands = {}; + GT.cqZones[key].worked_modes = {}; + GT.cqZones[key].confirmed_modes = {}; } - for (var key in g_ituZones) + for (var key in GT.ituZones) { - g_ituZones[key].worked = false; - g_ituZones[key].confirmed = false; + GT.ituZones[key].worked = false; + GT.ituZones[key].confirmed = false; - g_ituZones[key].worked_bands = {}; - g_ituZones[key].confirmed_bands = {}; - g_ituZones[key].worked_modes = {}; - g_ituZones[key].confirmed_modes = {}; + GT.ituZones[key].worked_bands = {}; + GT.ituZones[key].confirmed_bands = {}; + GT.ituZones[key].worked_modes = {}; + GT.ituZones[key].confirmed_modes = {}; } - for (var key in g_wasZones) + for (var key in GT.wasZones) { - g_wasZones[key].worked = false; - g_wasZones[key].confirmed = false; + GT.wasZones[key].worked = false; + GT.wasZones[key].confirmed = false; - g_wasZones[key].worked_bands = {}; - g_wasZones[key].confirmed_bands = {}; - g_wasZones[key].worked_modes = {}; - g_wasZones[key].confirmed_modes = {}; + GT.wasZones[key].worked_bands = {}; + GT.wasZones[key].confirmed_bands = {}; + GT.wasZones[key].worked_modes = {}; + GT.wasZones[key].confirmed_modes = {}; } - for (var key in g_wacZones) + for (var key in GT.wacZones) { - g_wacZones[key].worked = false; - g_wacZones[key].confirmed = false; - g_wacZones[key].worked_bands = {}; - g_wacZones[key].confirmed_bands = {}; - g_wacZones[key].worked_modes = {}; - g_wacZones[key].confirmed_modes = {}; + GT.wacZones[key].worked = false; + GT.wacZones[key].confirmed = false; + GT.wacZones[key].worked_bands = {}; + GT.wacZones[key].confirmed_bands = {}; + GT.wacZones[key].worked_modes = {}; + GT.wacZones[key].confirmed_modes = {}; } - for (var key in g_countyData) + for (var key in GT.countyData) { - g_countyData[key].worked = false; - g_countyData[key].confirmed = false; - g_countyData[key].worked_bands = {}; - g_countyData[key].confirmed_bands = {}; - g_countyData[key].worked_modes = {}; - g_countyData[key].confirmed_modes = {}; + GT.countyData[key].worked = false; + GT.countyData[key].confirmed = false; + GT.countyData[key].worked_bands = {}; + GT.countyData[key].confirmed_bands = {}; + GT.countyData[key].worked_modes = {}; + GT.countyData[key].confirmed_modes = {}; } - for (var key in g_us48Data) + for (var key in GT.us48Data) { - g_us48Data[key].worked = false; - g_us48Data[key].confirmed = false; - g_us48Data[key].worked_bands = {}; - g_us48Data[key].confirmed_bands = {}; - g_us48Data[key].worked_modes = {}; - g_us48Data[key].confirmed_modes = {}; + GT.us48Data[key].worked = false; + GT.us48Data[key].confirmed = false; + GT.us48Data[key].worked_bands = {}; + GT.us48Data[key].confirmed_bands = {}; + GT.us48Data[key].worked_modes = {}; + GT.us48Data[key].confirmed_modes = {}; } } function clearCalls() { removePaths(); - for (var i in g_liveCallsigns) + for (var i in GT.liveCallsigns) { if ( - typeof g_liveCallsigns[i].rect != "undefined" && - g_liveCallsigns[i].rect != null + typeof GT.liveCallsigns[i].rect != "undefined" && + GT.liveCallsigns[i].rect != null ) { - if (i in g_liveCallsigns[i].rect.liveHash) { delete g_liveCallsigns[i].rect.liveHash[i]; } + if (i in GT.liveCallsigns[i].rect.liveHash) { delete GT.liveCallsigns[i].rect.liveHash[i]; } } } - g_liveCallsigns = {}; - g_dxccCount = {}; + GT.liveCallsigns = {}; + GT.dxccCount = {}; redrawGrids(); } function clearLive() { - g_Decodes = 0; + GT.Decodes = 0; - g_lastMessages = Array(); - g_lastTraffic = Array(); - g_callRoster = {}; - g_dxccCount = {}; + GT.lastMessages = Array(); + GT.lastTraffic = Array(); + GT.callRoster = {}; + GT.dxccCount = {}; removePaths(); removePaths(); @@ -4964,21 +4965,21 @@ function clearAll() clearCalls(); clearQSOs(); - g_lastMessages = Array(); - g_lastTraffic = Array(); + GT.lastMessages = Array(); + GT.lastTraffic = Array(); - g_dxccCount = {}; + GT.dxccCount = {}; redrawGrids(); - g_callRoster = {}; + GT.callRoster = {}; updateRosterWorked(); goProcessRoster(); } function clearOrLoadQSOs() { - if (g_loadQSOs == true) + if (GT.loadQSOs == true) { startupAdifLoadCheck(); } @@ -4997,10 +4998,10 @@ function clearAndLoadQSOs() function clearQSOs() { initQSOdata(); - g_QSOhash = {}; - g_QSLcount = 0; - g_QSOcount = 0; - setTrophyOverlay(g_currentOverlay); + GT.QSOhash = {}; + GT.QSLcount = 0; + GT.QSOcount = 0; + setTrophyOverlay(GT.currentOverlay); redrawGrids(); updateLogbook(); @@ -5014,16 +5015,16 @@ function clearLogFilesAndCounts() tryToDeleteLog("LogbookOfTheWorld.adif"); tryToDeleteLog("qrz.adif"); tryToDeleteLog("clublog.adif"); - g_adifLogSettings.downloads = {}; - g_adifLogSettings.lastFetch.lotw_qso = "1970-01-01"; - g_adifLogSettings.lastFetch.lotw_qsl = "1970-01-01"; + GT.adifLogSettings.downloads = {}; + GT.adifLogSettings.lastFetch.lotw_qso = "1970-01-01"; + GT.adifLogSettings.lastFetch.lotw_qsl = "1970-01-01"; saveAdifSettings(); } function getCurrentBandModeHTML() { - var band = g_appSettings.gtBandFilter == "auto" ? myBand + " (Auto)" : g_appSettings.gtBandFilter.length == 0 ? "Mixed Bands" : g_appSettings.gtBandFilter; - var mode = g_appSettings.gtModeFilter == "auto" ? myMode + " (Auto)" : g_appSettings.gtModeFilter.length == 0 ? "Mixed Modes" : g_appSettings.gtModeFilter; + var band = GT.appSettings.gtBandFilter == "auto" ? myBand + " (Auto)" : GT.appSettings.gtBandFilter.length == 0 ? "Mixed Bands" : GT.appSettings.gtBandFilter; + var mode = GT.appSettings.gtModeFilter == "auto" ? myMode + " (Auto)" : GT.appSettings.gtModeFilter.length == 0 ? "Mixed Modes" : GT.appSettings.gtModeFilter; return ( "
Viewing: " + band + @@ -5033,28 +5034,28 @@ function getCurrentBandModeHTML() ); } -var g_currentDay = 0; -var g_nightTime = false; -var g_currentNightState = false; -var g_timeNow = timeNowSec(); +GT.currentDay = 0; +GT.nightTime = false; +GT.currentNightState = false; +GT.timeNow = timeNowSec(); function displayTime() { - g_timeNow = timeNowSec(); - if (menuDiv.className == "menuDivStart" && g_menuShowing == true) + GT.timeNow = timeNowSec(); + if (menuDiv.className == "menuDivStart" && GT.menuShowing == true) { menuDiv.className = "menuDivEnd"; mapDiv.className = "mapDivEnd"; LegendDiv.className = "legendDivEnd"; - g_map.updateSize(); + GT.map.updateSize(); } currentTime.innerHTML = "" + userTimeString(null) + ""; - if (g_lastTimeSinceMessageInSeconds > 0) + if (GT.lastTimeSinceMessageInSeconds > 0) { - var since = g_timeNow - g_lastTimeSinceMessageInSeconds; - secondsAgoMsg.innerHTML = since.toDHMS(); + var since = GT.timeNow - GT.lastTimeSinceMessageInSeconds; + secondsAgoMsg.innerHTML = toDHMS(since); if (since > 17 && since < 122) { secondsAgoMsg.style.backgroundColor = "yellow"; @@ -5075,18 +5076,18 @@ function displayTime() checkWsjtxListener(); - if (g_timeNow % 22 == 0) + if (GT.timeNow % 22 == 0) { - g_nightTime = dayNight.refresh(); + GT.nightTime = dayNight.refresh(); moonLayer.refresh(); } - pskSpotCheck(g_timeNow); + pskSpotCheck(GT.timeNow); - if (g_currentNightState != g_nightTime) + if (GT.currentNightState != GT.nightTime) { changeMapLayer(); - g_currentNightState = g_nightTime; + GT.currentNightState = GT.nightTime; } } @@ -5097,49 +5098,49 @@ function timeNowSec() function createGlobalHeatmapLayer(name, radius, blur) { - g_layerSources[name] = new ol.source.Vector({}); - g_layerVectors[name] = new ol.layer.Heatmap({ - source: g_layerSources[name], + GT.layerSources[name] = new ol.source.Vector({}); + GT.layerVectors[name] = new ol.layer.Heatmap({ + source: GT.layerSources[name], blur: 20, radius: 15, - zIndex: Object.keys(g_layerVectors).length + 1 + zIndex: Object.keys(GT.layerVectors).length + 1 }); - g_layerVectors[name].set("name", name); + GT.layerVectors[name].set("name", name); } function createGlobalMapLayer(name, maxResolution, minResolution) { - g_layerSources[name] = new ol.source.Vector({}); + GT.layerSources[name] = new ol.source.Vector({}); if ( typeof maxResolution == "undefined" && typeof minResolution == "undefined" ) { - var zIndex = Object.keys(g_layerVectors).length + 1; + var zIndex = Object.keys(GT.layerVectors).length + 1; - g_layerVectors[name] = new ol.layer.Vector({ - source: g_layerSources[name], + GT.layerVectors[name] = new ol.layer.Vector({ + source: GT.layerSources[name], zIndex: zIndex }); } else if (typeof minResolution == "undefined") { - g_layerVectors[name] = new ol.layer.Vector({ - source: g_layerSources[name], + GT.layerVectors[name] = new ol.layer.Vector({ + source: GT.layerSources[name], maxResolution: maxResolution, - zIndex: Object.keys(g_layerVectors).length + 1 + zIndex: Object.keys(GT.layerVectors).length + 1 }); } else { - g_layerVectors[name] = new ol.layer.Vector({ - source: g_layerSources[name], + GT.layerVectors[name] = new ol.layer.Vector({ + source: GT.layerSources[name], maxResolution: maxResolution, minResolution: minResolution, - zIndex: Object.keys(g_layerVectors).length + 1 + zIndex: Object.keys(GT.layerVectors).length + 1 }); } - g_layerVectors[name].set("name", name); + GT.layerVectors[name].set("name", name); } function createGeoJsonLayer(name, url, color, stroke) @@ -5170,14 +5171,14 @@ function createGeoJsonLayer(name, url, color, stroke) return layerVector; } -var g_gtFlagIcon = new ol.style.Icon({ - src: "./img/flag_gt_user.png", +GT.gtFlagIcon = new ol.style.Icon({ + src: "./img/flaGT.gt_user.png", anchorYUnits: "pixels", anchorXUnits: "pixels", anchor: [12, 17] }); -var g_pushPinIconOff = new ol.style.Icon({ +GT.pushPinIconOff = new ol.style.Icon({ src: "./img/red-circle.png", anchorYUnits: "pixels", anchorXUnits: "pixels", @@ -5188,7 +5189,7 @@ function panTo(location) { var duration = 1000; - g_mapView.animate({ + GT.mapView.animate({ center: location, duration: duration }); @@ -5196,45 +5197,45 @@ function panTo(location) function toggleMouseTrack() { - g_appSettings.mouseTrack ^= 1; - if (g_appSettings.mouseTrack == 0) mouseTrackDiv.style.display = "none"; + GT.appSettings.mouseTrack ^= 1; + if (GT.appSettings.mouseTrack == 0) mouseTrackDiv.style.display = "none"; } function myGmapNameCompare(a, b) { - return g_maps[a].name.localeCompare(g_maps[b].name); + return GT.maps[a].name.localeCompare(GT.maps[b].name); } -var g_Nexrad = null; +GT.Nexrad = null; function initMap() { document.getElementById("mapDiv").innerHTML = ""; - g_maps = JSON.parse(fs.readFileSync(g_mapsFile)); + GT.maps = JSON.parse(fs.readFileSync(GT.mapsFile)); - if (g_maps) + if (GT.maps) { var saveSettings = false; - g_maps = Object.keys(g_maps).sort().reduce((obj, key) => { obj[key] = g_maps[key]; return obj; }, {}); + GT.maps = Object.keys(GT.maps).sort().reduce((obj, key) => { obj[key] = GT.maps[key]; return obj; }, {}); - if (!(g_mapSettings.mapIndex in g_maps)) + if (!(GT.mapSettings.mapIndex in GT.maps)) { - g_mapSettings.mapIndex = def_mapSettings.mapIndex; + GT.mapSettings.mapIndex = def_mapSettings.mapIndex; saveSettings = true; } - if (!(g_mapSettings.nightMapIndex in g_maps)) + if (!(GT.mapSettings.nightMapIndex in GT.maps)) { - g_mapSettings.nightMapIndex = def_mapSettings.nightMapIndex; + GT.mapSettings.nightMapIndex = def_mapSettings.nightMapIndex; saveSettings = true; } if (saveSettings) { saveMapSettings(); } - for (const key in g_maps) + for (const key in GT.maps) { - g_mapsLayer[key] = new ol.source.XYZ(g_maps[key]); + GT.mapsLayer[key] = new ol.source.XYZ(GT.maps[key]); var option = document.createElement("option"); option.value = key; option.text = key; @@ -5245,38 +5246,38 @@ function initMap() option.text = key; mapNightSelect.appendChild(option); } - mapSelect.value = g_mapSettings.mapIndex; - mapNightSelect.value = g_mapSettings.nightMapIndex; + mapSelect.value = GT.mapSettings.mapIndex; + mapNightSelect.value = GT.mapSettings.nightMapIndex; } - else g_mapsLayer[0] = new ol.source.OSM(); + else GT.mapsLayer[0] = new ol.source.OSM(); - g_offlineLayer = new ol.source.XYZ({ + GT.offlineLayer = new ol.source.XYZ({ url: "/map/sat/{z}/{x}/{y}.png" }); - if (g_mapSettings.offlineMode) + if (GT.mapSettings.offlineMode) { - g_tileLayer = new ol.layer.Tile({ - source: g_offlineLayer, + GT.tileLayer = new ol.layer.Tile({ + source: GT.offlineLayer, loadTilesWhileInteracting: true, loadTilesWhileAnimating: true }); } else { - g_tileLayer = new ol.layer.Tile({ - source: g_mapsLayer[mapSelect.value], + GT.tileLayer = new ol.layer.Tile({ + source: GT.mapsLayer[mapSelect.value], loadTilesWhileInteracting: true, loadTilesWhileAnimating: true }); } - g_scaleLine = new ol.control.ScaleLine({ - units: g_scaleUnits[g_appSettings.distanceUnit] + GT.scaleLine = new ol.control.ScaleLine({ + units: GT.scaleUnits[GT.appSettings.distanceUnit] }); - var g_mapControl = [ - g_scaleLine, + GT.mapControl = [ + GT.scaleLine, new ol.control.Zoom(), new ol.control.FullScreen({ source: "mainBody" }) ]; @@ -5301,36 +5302,36 @@ function initMap() createGlobalMapLayer("tz"); createGlobalMapLayer("radar"); - g_mapView = new ol.View({ - center: [g_myLon, g_myLat], + GT.mapView = new ol.View({ + center: [GT.myLon, GT.myLat], zoomFactor: 1.25, - zoom: g_mapSettings.zoom, + zoom: GT.mapSettings.zoom, showFullExtent: true }); - g_map = new ol.Map({ + GT.map = new ol.Map({ target: "mapDiv", layers: [ - g_tileLayer, - g_layerVectors.award, - g_layerVectors["psk-heat"], - g_layerVectors.qso, - g_layerVectors["qso-pins"], - g_layerVectors.live, - g_layerVectors["live-pins"], - g_layerVectors["line-grids"], - g_layerVectors["long-grids"], - g_layerVectors["big-grids"], - g_layerVectors.pota, - g_layerVectors["psk-flights"], - g_layerVectors["psk-spots"], - g_layerVectors["psk-hop"], - g_layerVectors.flight, - g_layerVectors.transmit, - g_layerVectors.gtflags, - g_layerVectors.temp, - g_layerVectors.tz, - g_layerVectors.radar + GT.tileLayer, + GT.layerVectors.award, + GT.layerVectors["psk-heat"], + GT.layerVectors.qso, + GT.layerVectors["qso-pins"], + GT.layerVectors.live, + GT.layerVectors["live-pins"], + GT.layerVectors["line-grids"], + GT.layerVectors["long-grids"], + GT.layerVectors["big-grids"], + GT.layerVectors.pota, + GT.layerVectors["psk-flights"], + GT.layerVectors["psk-spots"], + GT.layerVectors["psk-hop"], + GT.layerVectors.flight, + GT.layerVectors.transmit, + GT.layerVectors.gtflags, + GT.layerVectors.temp, + GT.layerVectors.tz, + GT.layerVectors.radar ], interactions: ol.interaction.defaults({ dragPan: false, @@ -5339,36 +5340,36 @@ function initMap() new ol.interaction.DragPan({ kinetic: false }), new ol.interaction.MouseWheelZoom({ duration: 0 }) ]), - controls: g_mapControl, + controls: GT.mapControl, loadTilesWhileInteracting: false, loadTilesWhileAnimating: false, - view: g_mapView + view: GT.mapView }); mapDiv.addEventListener("mousemove", function (event) { onMouseUpdate(event); - var mousePosition = g_map.getEventPixel(event); - if (g_appSettings.mouseTrack == 1) + var mousePosition = GT.map.getEventPixel(event); + if (GT.appSettings.mouseTrack == 1) { - var mouseLngLat = g_map.getEventCoordinate(event); + var mouseLngLat = GT.map.getEventCoordinate(event); if (mouseLngLat) { var LL = ol.proj.toLonLat(mouseLngLat); var dist = parseInt( MyCircle.distance( - g_myLat, - g_myLon, + GT.myLat, + GT.myLon, LL[1], LL[0], distanceUnit.value ) * MyCircle.validateRadius(distanceUnit.value) ) + distanceUnit.value.toLowerCase(); var azim = - parseInt(MyCircle.bearing(g_myLat, g_myLon, LL[1], LL[0])) + "°"; - var gg = latLonToGridSquare(LL[1], LL[0], (g_appSettings.sixWideMode == 1 ? 6 : 4)); + parseInt(MyCircle.bearing(GT.myLat, GT.myLon, LL[1], LL[0])) + "°"; + var gg = latLonToGridSquare(LL[1], LL[0], (GT.appSettings.sixWideMode == 1 ? 6 : 4)); mouseTrackDiv.innerHTML = LL[1].toFixed(3) + ", " + @@ -5389,9 +5390,9 @@ function initMap() var noTimeZone = true; var noPark = true; - if (g_map.hasFeatureAtPixel(mousePosition)) + if (GT.map.hasFeatureAtPixel(mousePosition)) { - var features = g_map.getFeaturesAtPixel(mousePosition); + var features = GT.map.getFeaturesAtPixel(mousePosition); if (features != null) { @@ -5410,7 +5411,7 @@ function initMap() noMoon = false; break; } - if (features[index].size == 2 && g_currentOverlay != 0) + if (features[index].size == 2 && GT.currentOverlay != 0) { trophyOver(features[index]); noAward = false; @@ -5471,11 +5472,11 @@ function initMap() event.preventDefault(); }); - g_map.on("pointerdown", function (event) + GT.map.on("pointerdown", function (event) { var shouldReturn = false; - var features = g_map.getFeaturesAtPixel(event.pixel); + var features = GT.map.getFeaturesAtPixel(event.pixel); if (features != null) { features = features.reverse(); @@ -5514,37 +5515,37 @@ function initMap() var info = {}; info.callObj = {}; info.callObj.distance = 1; // We just need the heading, but distance makes it valid - info.callObj.heading = parseInt(MyCircle.bearing(g_myLat, g_myLon, LL[1], LL[0])); + info.callObj.heading = parseInt(MyCircle.bearing(GT.myLat, GT.myLon, LL[1], LL[0])); aimRotator(info); } - if (event.pointerEvent.buttons == 2 && g_currentOverlay == 0) + if (event.pointerEvent.buttons == 2 && GT.currentOverlay == 0) { mouseDownGrid(ol.proj.toLonLat(event.coordinate), event); return true; } }); - g_map.on("pointerup", function (event) + GT.map.on("pointerup", function (event) { mouseUpGrid(); - if (g_mapSettings.mouseOver == false) mouseOutOfDataItem(); + if (GT.mapSettings.mouseOver == false) mouseOutOfDataItem(); }); document.getElementById("menuDiv").style.display = "block"; - dayNight.init(g_map); - if (g_appSettings.earthImgSrc == 1) + dayNight.init(GT.map); + if (GT.appSettings.earthImgSrc == 1) { dayNight.hide(); } else { - g_nightTime = dayNight.show(); + GT.nightTime = dayNight.show(); } - moonLayer.init(g_map); - if (g_appSettings.moonTrack == 1) + moonLayer.init(GT.map); + if (GT.appSettings.moonTrack == 1) { moonLayer.show(); } @@ -5553,11 +5554,11 @@ function initMap() moonLayer.hide(); } - g_tileLayer.setOpacity(Number(g_mapSettings.loudness)); + GT.tileLayer.setOpacity(Number(GT.mapSettings.loudness)); requestAnimationFrame(animatePaths); - nightMapEnable.checked = g_mapSettings.nightMapEnable; + nightMapEnable.checked = GT.mapSettings.nightMapEnable; changeNightMapEnable(nightMapEnable); } @@ -5567,25 +5568,25 @@ function changeNightMapEnable(check) { nightMapTd.style.display = "inline-table"; spotNightPathColorDiv.style.display = "inline-block"; - g_mapSettings.nightMapEnable = true; - g_nightTime = dayNight.refresh(); + GT.mapSettings.nightMapEnable = true; + GT.nightTime = dayNight.refresh(); } else { nightMapTd.style.display = "none"; spotNightPathColorDiv.style.display = "none"; - g_mapSettings.nightMapEnable = false; + GT.mapSettings.nightMapEnable = false; } changeMapLayer(); redrawSpots(); saveMapSettings(); } -var g_lasttimezone = null; +GT.lasttimezone = null; -var g_nexradInterval = null; +GT.nexradInterval = null; -var g_nexradEnable = 0; +GT.nexradEnable = 0; function createNexRad() { @@ -5607,44 +5608,44 @@ function createNexRad() function toggleNexrad() { - g_nexradEnable ^= 1; - if (g_nexradEnable == 1) + GT.nexradEnable ^= 1; + if (GT.nexradEnable == 1) { - if (g_Nexrad != null) + if (GT.Nexrad != null) { - g_map.removeLayer(g_Nexrad); + GT.map.removeLayer(GT.Nexrad); } - g_Nexrad = createNexRad(); - g_map.addLayer(g_Nexrad); + GT.Nexrad = createNexRad(); + GT.map.addLayer(GT.Nexrad); - if (g_nexradInterval == null) { g_nexradInterval = nodeTimers.setInterval(nexradRefresh, 600000); } + if (GT.nexradInterval == null) { GT.nexradInterval = nodeTimers.setInterval(nexradRefresh, 600000); } } else { - if (g_nexradInterval != null) + if (GT.nexradInterval != null) { - nodeTimers.clearInterval(g_nexradInterval); - g_nexradInterval = null; + nodeTimers.clearInterval(GT.nexradInterval); + GT.nexradInterval = null; } - if (g_Nexrad) + if (GT.Nexrad) { - g_map.removeLayer(g_Nexrad); - g_Nexrad = null; + GT.map.removeLayer(GT.Nexrad); + GT.Nexrad = null; } } - g_mapSettings.usNexrad = g_nexradEnable == 1; - radarImg.style.filter = g_mapSettings.usNexrad ? "" : "grayscale(1)"; + GT.mapSettings.usNexrad = GT.nexradEnable == 1; + radarImg.style.filter = GT.mapSettings.usNexrad ? "" : "grayscale(1)"; saveMapSettings(); } function nexradRefresh() { - if (g_Nexrad != null) + if (GT.Nexrad != null) { - g_Nexrad.getSource().updateParams({ ol3_salt: Math.random() }); - g_Nexrad.getSource().refresh(); + GT.Nexrad.getSource().updateParams({ ol3_salt: Math.random() }); + GT.Nexrad.getSource().refresh(); } } @@ -5652,7 +5653,7 @@ function collapseMenu(shouldCollapse) { if (shouldCollapse == true) { - g_menuShowing = false; + GT.menuShowing = false; mapDiv.className = "mapDivStart"; menuDiv.className = "menuDivStart"; LegendDiv.className = "legendDivStart"; @@ -5660,11 +5661,11 @@ function collapseMenu(shouldCollapse) } else { - g_menuShowing = true; + GT.menuShowing = true; chevronDiv.className = "chevronDivStart"; displayTime(); } - g_map.updateSize(); + GT.map.updateSize(); } function mapLoseFocus() @@ -5800,10 +5801,10 @@ function liveHash(call, band, mode) function setHomeGridsquare() { - g_appSettings.centerGridsquare = myDEGrid; - if (g_appSettings.centerGridsquare.length > 0) + GT.appSettings.centerGridsquare = myDEGrid; + if (GT.appSettings.centerGridsquare.length > 0) { - homeQTHInput.value = g_appSettings.centerGridsquare; + homeQTHInput.value = GT.appSettings.centerGridsquare; } var hash = myDEcall; @@ -5821,12 +5822,12 @@ function setHomeGridsquare() { var push = false; - if (!(hash in g_liveCallsigns)) + if (!(hash in GT.liveCallsigns)) { newCallsign = {}; push = true; } - else newCallsign = g_liveCallsigns[hash]; + else newCallsign = GT.liveCallsigns[hash]; newCallsign.DEcall = myDEcall; newCallsign.grid = myDEGrid; newCallsign.wspr = null; @@ -5848,26 +5849,26 @@ function setHomeGridsquare() newCallsign.instance = null; newCallsign.alerted = false; newCallsign.shouldAlert = false; - g_myDXCC = newCallsign.dxcc = callsignToDxcc(myDEcall); + GT.myDXCC = newCallsign.dxcc = callsignToDxcc(myDEcall); newCallsign.locked = true; - if (push) g_liveCallsigns[hash] = newCallsign; + if (push) GT.liveCallsigns[hash] = newCallsign; } } -var g_transmitFlightPath = null; +GT.transmitFlightPath = null; function haltAllTx(allTx = false) { - for (var instance in g_instances) + for (var instance in GT.instances) { - if (instance != g_activeInstance || allTx == true) + if (instance != GT.activeInstance || allTx == true) { var responseArray = Buffer.alloc(1024); var length = 0; - var port = g_instances[instance].remote.port; - var address = g_instances[instance].remote.address; + var port = GT.instances[instance].remote.port; + var address = GT.instances[instance].remote.address; length = encodeQUINT32(responseArray, length, 0xadbccbda); length = encodeQUINT32(responseArray, length, 2); @@ -5883,23 +5884,23 @@ function haltAllTx(allTx = false) function initiateQso(thisCall) { - if (thisCall in g_callRoster && g_callRoster[thisCall].message.instance in g_instances) + if (thisCall in GT.callRoster && GT.callRoster[thisCall].message.instance in GT.instances) { - if (g_mapSettings.focusRig && g_activeInstance != g_callRoster[thisCall].message.instance) + if (GT.mapSettings.focusRig && GT.activeInstance != GT.callRoster[thisCall].message.instance) { - activeRig(g_callRoster[thisCall].message.instance); + activeRig(GT.callRoster[thisCall].message.instance); } - if (g_mapSettings.haltAllOnTx) + if (GT.mapSettings.haltAllOnTx) { haltAllTx(); } - var newMessage = g_callRoster[thisCall].message; + var newMessage = GT.callRoster[thisCall].message; var responseArray = Buffer.alloc(1024); var length = 0; - var instance = g_callRoster[thisCall].message.instance; - var port = g_instances[instance].remote.port; - var address = g_instances[instance].remote.address; + var instance = GT.callRoster[thisCall].message.instance; + var port = GT.instances[instance].remote.port; + var address = GT.instances[instance].remote.address; length = encodeQUINT32(responseArray, length, newMessage.magic_key); length = encodeQUINT32(responseArray, length, newMessage.schema_number); length = encodeQUINT32(responseArray, length, 4); @@ -5920,13 +5921,13 @@ function initiateQso(thisCall) function spotLookupAndSetCall(spot) { - var call = g_receptionReports.spots[spot].call; - var grid = g_receptionReports.spots[spot].grid; - var band = g_receptionReports.spots[spot].band; - var mode = g_receptionReports.spots[spot].mode; - for (var instance in g_instances) + var call = GT.receptionReports.spots[spot].call; + var grid = GT.receptionReports.spots[spot].grid; + var band = GT.receptionReports.spots[spot].band; + var mode = GT.receptionReports.spots[spot].mode; + for (var instance in GT.instances) { - if (g_instances[instance].valid && g_instances[instance].status.Band == band && g_instances[instance].status.MO == mode) + if (GT.instances[instance].valid && GT.instances[instance].status.Band == band && GT.instances[instance].status.MO == mode) { setCallAndGrid(call, grid, instance); return; @@ -5942,11 +5943,11 @@ function setCallAndGrid(callsign, grid, instance = null, genMessages = true) var address; if (instance != null) { - if (instance in g_instances) + if (instance in GT.instances) { - thisInstance = g_instances[instance].status; - port = g_instances[instance].remote.port; - address = g_instances[instance].remote.address; + thisInstance = GT.instances[instance].status; + port = GT.instances[instance].remote.port; + address = GT.instances[instance].remote.address; } else { @@ -5955,11 +5956,11 @@ function setCallAndGrid(callsign, grid, instance = null, genMessages = true) } else { - if (g_instances[g_activeInstance].valid) + if (GT.instances[GT.activeInstance].valid) { - thisInstance = g_instances[g_activeInstance].status; - port = g_instances[g_activeInstance].remote.port; - address = g_instances[g_activeInstance].remote.address; + thisInstance = GT.instances[GT.activeInstance].status; + port = GT.instances[GT.activeInstance].remote.port; + address = GT.instances[GT.activeInstance].remote.address; } } if (thisInstance && (thisInstance.TxEnabled == 0 || genMessages == false)) @@ -5982,7 +5983,7 @@ function setCallAndGrid(callsign, grid, instance = null, genMessages = true) length = encodeQUTF8(responseArray, length, callsign); var hash = liveHash(callsign, thisInstance.Band, thisInstance.MO); - if (hash in g_liveCallsigns && g_liveCallsigns[hash].grid.length > 1) { grid = g_liveCallsigns[hash].grid; } + if (hash in GT.liveCallsigns && GT.liveCallsigns[hash].grid.length > 1) { grid = GT.liveCallsigns[hash].grid; } if (grid.length == 0) grid = " "; @@ -6023,7 +6024,7 @@ function setCallAndGrid(callsign, grid, instance = null, genMessages = true) } } -var g_wsjtHandlers = { +GT.wsjtHandlers = { 0: handleWsjtxNotSupported, 1: handleWsjtxStatus, 2: handleWsjtxDecode, @@ -6039,14 +6040,14 @@ var g_wsjtHandlers = { 12: handleWsjtxADIF }; -var g_oldQSOTimer = null; +GT.oldQSOTimer = null; function handleWsjtxADIF(newMessage) { - if (g_oldQSOTimer) + if (GT.oldQSOTimer) { - nodeTimers.clearTimeout(g_oldQSOTimer); - g_oldQSOTimer = null; + nodeTimers.clearTimeout(GT.oldQSOTimer); + GT.oldQSOTimer = null; } sendToLogger(newMessage.ADIF); @@ -6054,99 +6055,99 @@ function handleWsjtxADIF(newMessage) function handleWsjtxQSO(newMessage) { - if (g_oldQSOTimer) + if (GT.oldQSOTimer) { - nodeTimers.clearTimeout(g_oldQSOTimer); - g_oldQSOTimer = null; + nodeTimers.clearTimeout(GT.oldQSOTimer); + GT.oldQSOTimer = null; } - g_oldStyleLogMessage = Object.assign({}, newMessage); + GT.oldStyleLogMessage = Object.assign({}, newMessage); - g_oldQSOTimer = nodeTimers.setTimeout(oldSendToLogger, 3000); + GT.oldQSOTimer = nodeTimers.setTimeout(oldSendToLogger, 3000); } function handleWsjtxNotSupported(newMessage) { } -var g_lastBand = ""; -var g_lastMode = ""; +GT.lastBand = ""; +GT.lastMode = ""; -var g_lastRawGrid = "AA00AA"; +GT.lastRawGrid = "AA00AA"; -var g_weAreDecoding = false; -var g_localDXcall = ""; +GT.weAreDecoding = false; +GT.localDXcall = ""; -var g_countIndex = 0; -var g_lastCountIndex = 0; +GT.countIndex = 0; +GT.lastCountIndex = 0; function rigChange(up) { - if (g_activeInstance == "") return; + if (GT.activeInstance == "") return; var targetInstance = 0; if (up) { - targetInstance = g_instances[g_activeInstance].intId + 1; + targetInstance = GT.instances[GT.activeInstance].intId + 1; } else { - targetInstance = g_instances[g_activeInstance].intId - 1; - if (targetInstance < 0) targetInstance = g_instancesIndex.length - 1; + targetInstance = GT.instances[GT.activeInstance].intId - 1; + if (targetInstance < 0) targetInstance = GT.instancesIndex.length - 1; } - targetInstance %= g_instancesIndex.length; + targetInstance %= GT.instancesIndex.length; setRig(targetInstance); } function setRig(instanceId) { - if (g_instances[g_instancesIndex[instanceId]].valid) + if (GT.instances[GT.instancesIndex[instanceId]].valid) { - if (g_lastMapView != null) + if (GT.lastMapView != null) { - g_mapView.animate({ zoom: g_lastMapView.zoom, duration: 100 }); - g_mapView.animate({ center: g_lastMapView.LoLa, duration: 100 }); - g_lastMapView = null; + GT.mapView.animate({ zoom: GT.lastMapView.zoom, duration: 100 }); + GT.mapView.animate({ center: GT.lastMapView.LoLa, duration: 100 }); + GT.lastMapView = null; } - g_activeInstance = g_instancesIndex[instanceId]; + GT.activeInstance = GT.instancesIndex[instanceId]; - handleWsjtxStatus(g_instances[g_activeInstance].status); - handleClosed(g_instances[g_activeInstance].status); + handleWsjtxStatus(GT.instances[GT.activeInstance].status); + handleClosed(GT.instances[GT.activeInstance].status); } } function activeRig(instance) { - if (g_instances[instance].valid) + if (GT.instances[instance].valid) { - if (g_lastMapView != null) + if (GT.lastMapView != null) { - g_mapView.animate({ zoom: g_lastMapView.zoom, duration: 100 }); - g_mapView.animate({ center: g_lastMapView.LoLa, duration: 100 }); - g_lastMapView = null; + GT.mapView.animate({ zoom: GT.lastMapView.zoom, duration: 100 }); + GT.mapView.animate({ center: GT.lastMapView.LoLa, duration: 100 }); + GT.lastMapView = null; } - g_activeInstance = instance; + GT.activeInstance = instance; - handleWsjtxStatus(g_instances[g_activeInstance].status); - handleClosed(g_instances[g_activeInstance].status); + handleWsjtxStatus(GT.instances[GT.activeInstance].status); + handleClosed(GT.instances[GT.activeInstance].status); } } -var g_lastTransmitCallsign = {}; -var g_lastStatusCallsign = {}; -var g_lastTxMessage = null; +GT.lastTransmitCallsign = {}; +GT.lastStatusCallsign = {}; +GT.lastTxMessage = null; function handleWsjtxStatus(newMessage) { - if (g_ignoreMessages == 1) return; + if (GT.ignoreMessages == 1) return; - if (g_rosterInitialized) + if (GT.rosterInitialized) { try { - g_callRosterWindowHandle.window.processStatus(newMessage); + GT.callRosterWindowHandle.window.processStatus(newMessage); } catch (e) { @@ -6154,12 +6155,12 @@ function handleWsjtxStatus(newMessage) } } - if (g_activeInstance == "") + if (GT.activeInstance == "") { - g_activeInstance = newMessage.instance; + GT.activeInstance = newMessage.instance; } - if (Object.keys(g_instances).length > 1) + if (Object.keys(GT.instances).length > 1) { rigWrap.style.display = "block"; } @@ -6172,39 +6173,39 @@ function handleWsjtxStatus(newMessage) if (DXcall.length > 1) { - if (!(newMessage.instance in g_lastTransmitCallsign)) { g_lastTransmitCallsign[newMessage.instance] = ""; } + if (!(newMessage.instance in GT.lastTransmitCallsign)) { GT.lastTransmitCallsign[newMessage.instance] = ""; } - if (!(newMessage.instance in g_lastStatusCallsign)) { g_lastStatusCallsign[newMessage.instance] = ""; } + if (!(newMessage.instance in GT.lastStatusCallsign)) { GT.lastStatusCallsign[newMessage.instance] = ""; } - if (lookupOnTx.checked == true && newMessage.Transmitting == 1 && g_lastTransmitCallsign[newMessage.instance] != DXcall) + if (lookupOnTx.checked == true && newMessage.Transmitting == 1 && GT.lastTransmitCallsign[newMessage.instance] != DXcall) { openLookupWindow(true); - g_lastTransmitCallsign[newMessage.instance] = DXcall; + GT.lastTransmitCallsign[newMessage.instance] = DXcall; } - if (g_lastStatusCallsign[newMessage.instance] != DXcall) + if (GT.lastStatusCallsign[newMessage.instance] != DXcall) { - g_lastStatusCallsign[newMessage.instance] = DXcall; + GT.lastStatusCallsign[newMessage.instance] = DXcall; lookupCallsign(DXcall, newMessage.DXgrid.trim()); } } - if (g_rosterInitialized && g_callRosterWindowHandle.window.g_rosterSettings.clearRosterOnBandChange && g_instances[newMessage.instance].oldStatus) + if (GT.rosterInitialized && GT.callRosterWindowHandle.window.CR.rosterSettings.clearRosterOnBandChange && GT.instances[newMessage.instance].oldStatus) { - if (g_instances[newMessage.instance].oldStatus.Band != newMessage.Band || g_instances[newMessage.instance].oldStatus.MO != newMessage.MO) + if (GT.instances[newMessage.instance].oldStatus.Band != newMessage.Band || GT.instances[newMessage.instance].oldStatus.MO != newMessage.MO) { - for (const call in g_callRoster) + for (const call in GT.callRoster) { - if (g_callRoster[call].callObj.instance == newMessage.instance) { delete g_callRoster[call]; } + if (GT.callRoster[call].callObj.instance == newMessage.instance) { delete GT.callRoster[call]; } } - if (g_activeInstance == newMessage.instance) + if (GT.activeInstance == newMessage.instance) { goProcessRoster(); } } } - if (g_activeInstance == newMessage.instance) + if (GT.activeInstance == newMessage.instance) { var sp = newMessage.Id.split(" - "); rigDiv.innerHTML = sp[sp.length - 1].substring(0, 18); @@ -6215,27 +6216,27 @@ function handleWsjtxStatus(newMessage) wsjtxMode.innerHTML = "" + newMessage.MO + ""; myMode = newMessage.MO; myBand = newMessage.Band; - if (g_lastBand != myBand) + if (GT.lastBand != myBand) { - g_lastBand = myBand; + GT.lastBand = myBand; bandChange = true; - if (g_pskBandActivityTimerHandle != null) + if (GT.pskBandActivityTimerHandle != null) { - nodeTimers.clearInterval(g_pskBandActivityTimerHandle); - g_pskBandActivityTimerHandle = null; + nodeTimers.clearInterval(GT.pskBandActivityTimerHandle); + GT.pskBandActivityTimerHandle = null; } } - if (g_lastMode != myMode) + if (GT.lastMode != myMode) { - g_lastMode = myMode; + GT.lastMode = myMode; modeChange = true; - if (g_pskBandActivityTimerHandle != null) + if (GT.pskBandActivityTimerHandle != null) { - nodeTimers.clearInterval(g_pskBandActivityTimerHandle); - g_pskBandActivityTimerHandle = null; + nodeTimers.clearInterval(GT.pskBandActivityTimerHandle); + GT.pskBandActivityTimerHandle = null; } } - if (g_pskBandActivityTimerHandle == null) pskGetBandActivity(); + if (GT.pskBandActivityTimerHandle == null) pskGetBandActivity(); if (bandChange || modeChange) { removePaths(); @@ -6250,38 +6251,38 @@ function handleWsjtxStatus(newMessage) ackAlerts(); updateChatWindow(); oamsBandActivityCheck(); - g_gtLiveStatusUpdate = true; + GT.gtLiveStatusUpdate = true; } myRawFreq = newMessage.Frequency; - frequency.innerHTML = "" + Number(newMessage.Frequency / 1000).formatMhz(3, 3) + " Hz (" + myBand + ")"; + frequency.innerHTML = "" + formatMhz(Number(newMessage.Frequency / 1000), 3, 3) + " Hz (" + myBand + ")"; myRawCall = newMessage.DEcall.trim(); myRawGrid = newMessage.DEgrid.trim().substr(0, 6); var LL = squareToCenter(myRawGrid); - g_mapSettings.latitude = g_myLat = LL.a; - g_mapSettings.longitude = g_myLon = LL.o; - if (myRawGrid != g_lastRawGrid) + GT.mapSettings.latitude = GT.myLat = LL.a; + GT.mapSettings.longitude = GT.myLon = LL.o; + if (myRawGrid != GT.lastRawGrid) { - g_lastRawGrid = myRawGrid; + GT.lastRawGrid = myRawGrid; } dxCallBoxDiv.className = "DXCallBox"; var hash = DXcall + myBand + myMode; - if (hash in g_tracker.worked.call) + if (hash in GT.tracker.worked.call) { dxCallBoxDiv.className = "DXCallBoxWorked"; } - if (hash in g_tracker.confirmed.call) + if (hash in GT.tracker.confirmed.call) { dxCallBoxDiv.className = "DXCallBoxConfirmed"; } - if (g_appSettings.clearOnCQ && newMessage.Transmitting == 1 && newMessage.TxMessage && g_lastTxMessage != newMessage.TxMessage) + if (GT.appSettings.clearOnCQ && newMessage.Transmitting == 1 && newMessage.TxMessage && GT.lastTxMessage != newMessage.TxMessage) { - g_lastTxMessage = newMessage.TxMessage; + GT.lastTxMessage = newMessage.TxMessage; if (newMessage.TxMessage.substring(0, 2) == "CQ" && DXcall.length > 0) { setCallAndGrid("", "", newMessage.instance, false); @@ -6290,18 +6291,18 @@ function handleWsjtxStatus(newMessage) } } - g_localDXcall = DXcall; - localDXcall.innerHTML = DXcall.formatCallsign(); + GT.localDXcall = DXcall; + localDXcall.innerHTML = formatCallsign(DXcall); if (localDXcall.innerHTML.length == 0) { localDXcall.innerHTML = "-"; - g_localDXcall = ""; + GT.localDXcall = ""; } localDXGrid.innerHTML = myDXGrid = newMessage.DXgrid.trim(); - if (myDXGrid.length == 0 && hash in g_liveCallsigns) + if (myDXGrid.length == 0 && hash in GT.liveCallsigns) { - localDXGrid.innerHTML = myDXGrid = g_liveCallsigns[hash].grid.substr(0, 4); + localDXGrid.innerHTML = myDXGrid = GT.liveCallsigns[hash].grid.substr(0, 4); } if (localDXGrid.innerHTML.length == 0) @@ -6313,16 +6314,16 @@ function handleWsjtxStatus(newMessage) else { var LL = squareToCenter(myDXGrid); - localDXDistance.innerHTML = parseInt(MyCircle.distance(g_myLat, g_myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)) + distanceUnit.value.toLowerCase(); - localDXAzimuth.innerHTML = parseInt(MyCircle.bearing(g_myLat, g_myLon, LL.a, LL.o)) + "°"; + localDXDistance.innerHTML = parseInt(MyCircle.distance(GT.myLat, GT.myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)) + distanceUnit.value.toLowerCase(); + localDXAzimuth.innerHTML = parseInt(MyCircle.bearing(GT.myLat, GT.myLon, LL.a, LL.o)) + "°"; } if (localDXcall.innerHTML != "-") { - localDXReport.innerHTML = Number(newMessage.Report.trim()).formatSignalReport(); + localDXReport.innerHTML = formatSignalReport(Number(newMessage.Report.trim())); if (DXcall.length > 0) { - localDXCountry.innerHTML = g_dxccToAltName[callsignToDxcc(DXcall)]; + localDXCountry.innerHTML = GT.dxccToAltName[callsignToDxcc(DXcall)]; } else { @@ -6337,7 +6338,7 @@ function handleWsjtxStatus(newMessage) myDEcall = newMessage.DEcall; myDEGrid = newMessage.DEgrid.trim().substr(0, 6); if (myDEGrid.length > 0) setHomeGridsquare(); - if (myDEGrid.length > 0) g_appSettings.centerGridsquare = myDEGrid; + if (myDEGrid.length > 0) GT.appSettings.centerGridsquare = myDEGrid; if (newMessage.Decoding == 1) { @@ -6347,16 +6348,16 @@ function handleWsjtxStatus(newMessage) txrxdec.style.backgroundColor = "Blue"; txrxdec.style.borderColor = "Cyan"; txrxdec.innerHTML = "DECODE"; - g_countIndex++; - g_weAreDecoding = true; + GT.countIndex++; + GT.weAreDecoding = true; } else { - g_weAreDecoding = false; + GT.weAreDecoding = false; - if (g_countIndex != g_lastCountIndex) + if (GT.countIndex != GT.lastCountIndex) { - g_lastCountIndex = g_countIndex; + GT.lastCountIndex = GT.countIndex; updateCountStats(); @@ -6365,21 +6366,21 @@ function handleWsjtxStatus(newMessage) worker += "
"; worker += ""; - worker += ""; + worker += ""; worker += ""; - worker += g_lastMessages.join(""); + worker += GT.lastMessages.join(""); worker += "
Last " + g_lastMessages.length + " Decoded Messages
Last " + GT.lastMessages.length + " Decoded Messages
TimedBDTFreqModeMessageDXCC
"; setStatsDiv("decodeLastListDiv", worker); setStatsDivHeight("decodeLastListDiv", getStatsWindowHeight() + 26 + "px"); - if (g_appSettings.gtShareEnable === true && Object.keys(g_spotCollector).length > 0) + if (GT.appSettings.gtShareEnable === true && Object.keys(GT.spotCollector).length > 0) { - gtChatSendSpots(g_spotCollector, g_spotDetailsCollector); - g_spotCollector = {}; - g_spotDetailsCollector = {}; + gtChatSendSpots(GT.spotCollector, GT.spotDetailsCollector); + GT.spotCollector = {}; + GT.spotDetailsCollector = {}; } } @@ -6390,55 +6391,55 @@ function handleWsjtxStatus(newMessage) if (newMessage.TxEnabled) { - if (g_mapSettings.fitQRZ && (g_spotView == 0 || g_receptionSettings.mergeSpots)) + if (GT.mapSettings.fitQRZ && (GT.spotView == 0 || GT.receptionSettings.mergeSpots)) { - if (g_lastMapView == null) + if (GT.lastMapView == null) { - g_lastMapView = {}; - g_lastMapView.LoLa = g_mapView.getCenter(); - g_lastMapView.zoom = g_mapView.getZoom(); + GT.lastMapView = {}; + GT.lastMapView.LoLa = GT.mapView.getCenter(); + GT.lastMapView.zoom = GT.mapView.getZoom(); } if (myDXGrid.length > 0) { fitViewBetweenPoints([getPoint(myRawGrid), getPoint(myDXGrid)]); } - else if (g_mapSettings.qrzDxccFallback && DXcall.length > 0 && callsignToDxcc(DXcall) > 0) + else if (GT.mapSettings.qrzDxccFallback && DXcall.length > 0 && callsignToDxcc(DXcall) > 0) { var dxcc = callsignToDxcc(DXcall); - var Lat = g_dxccInfo[dxcc].lat; - var Lon = g_dxccInfo[dxcc].lon; + var Lat = GT.dxccInfo[dxcc].lat; + var Lon = GT.dxccInfo[dxcc].lon; fitViewBetweenPoints([getPoint(myRawGrid), ol.proj.fromLonLat([Lon, Lat])], 15); } } } else { - if (g_lastMapView != null) + if (GT.lastMapView != null) { - g_mapView.animate({ zoom: g_lastMapView.zoom, duration: 1200 }); - g_mapView.animate({ center: g_lastMapView.LoLa, duration: 1200 }); - g_lastMapView = null; + GT.mapView.animate({ zoom: GT.lastMapView.zoom, duration: 1200 }); + GT.mapView.animate({ center: GT.lastMapView.LoLa, duration: 1200 }); + GT.lastMapView = null; } } if (newMessage.Transmitting == 0) { // Not Transmitting - g_lastTxMessage = null; - g_layerSources.transmit.clear(); - g_transmitFlightPath = null; + GT.lastTxMessage = null; + GT.layerSources.transmit.clear(); + GT.transmitFlightPath = null; } else { - g_lastTrasmissionTimeSec = g_timeNow; + GT.lastTrasmissionTimeSec = GT.timeNow; txrxdec.style.backgroundColor = "Red"; txrxdec.style.borderColor = "Orange"; txrxdec.innerHTML = "TRANSMIT"; - g_layerSources.transmit.clear(); - g_transmitFlightPath = null; + GT.layerSources.transmit.clear(); + GT.transmitFlightPath = null; - if (qrzPathWidthValue.value != 0 && g_appSettings.gridViewMode != 2 && validateGridFromString(myRawGrid)) + if (qrzPathWidthValue.value != 0 && GT.appSettings.gridViewMode != 2 && validateGridFromString(myRawGrid)) { var strokeColor = getQrzPathColor(); var strokeWeight = qrzPathWidthValue.value; @@ -6451,18 +6452,18 @@ function handleWsjtxStatus(newMessage) LL = squareToCenter(myDXGrid); toPoint = ol.proj.fromLonLat([LL.o, LL.a]); } - else if (g_mapSettings.qrzDxccFallback && DXcall.length > 0 && callsignToDxcc(DXcall) > 0) + else if (GT.mapSettings.qrzDxccFallback && DXcall.length > 0 && callsignToDxcc(DXcall) > 0) { var dxcc = callsignToDxcc(DXcall); - toPoint = ol.proj.fromLonLat([g_dxccInfo[dxcc].lon, g_dxccInfo[dxcc].lat]); + toPoint = ol.proj.fromLonLat([GT.dxccInfo[dxcc].lon, GT.dxccInfo[dxcc].lat]); - var locality = g_dxccInfo[dxcc].geo; + var locality = GT.dxccInfo[dxcc].geo; if (locality == "deleted") locality = null; if (locality != null) { var feature = shapeFeature("qrz", locality, "qrz", "#FFFF0010", "#FF0000FF", 1.0); - g_layerSources.transmit.addFeature(feature); + GT.layerSources.transmit.addFeature(feature); } } @@ -6470,7 +6471,7 @@ function handleWsjtxStatus(newMessage) { try { - g_transmitFlightPath = flightFeature( + GT.transmitFlightPath = flightFeature( [fromPoint, toPoint], { weight: strokeWeight, @@ -6488,16 +6489,16 @@ function handleWsjtxStatus(newMessage) } } } - g_weAreDecoding = false; + GT.weAreDecoding = false; } - g_appSettings.myDEcall = myDEcall; - g_appSettings.myDEGrid = myDEGrid; - g_appSettings.myMode = myMode; - g_appSettings.myBand = myBand; - g_appSettings.myRawFreq = myRawFreq; - g_appSettings.myRawCall = myRawCall; - g_appSettings.myRawGrid = myRawGrid; + GT.appSettings.myDEcall = myDEcall; + GT.appSettings.myDEGrid = myDEGrid; + GT.appSettings.myMode = myMode; + GT.appSettings.myBand = myBand; + GT.appSettings.myRawFreq = myRawFreq; + GT.appSettings.myRawCall = myRawCall; + GT.appSettings.myRawGrid = myRawGrid; } if (newMessage.Decoding == 0) @@ -6509,26 +6510,26 @@ function handleWsjtxStatus(newMessage) function reportDecodes() { - if (Object.keys(g_decodeCollector).length > 0) + if (Object.keys(GT.decodeCollector).length > 0) { - gtChatSendDecodes(g_decodeCollector); - g_decodeCollector = {}; + gtChatSendDecodes(GT.decodeCollector); + GT.decodeCollector = {}; } } -var g_lastMapView = null; +GT.lastMapView = null; function drawTraffic() { - while (g_lastTraffic.length > 60) g_lastTraffic.pop(); + while (GT.lastTraffic.length > 60) GT.lastTraffic.pop(); - var worker = g_lastTraffic.join("
"); + var worker = GT.lastTraffic.join("
"); worker = worker.split("80%'>
").join("80%'>"); - if (g_localDXcall.length > 1) + if (GT.localDXcall.length > 1) { worker = worker - .split(g_localDXcall) - .join("" + g_localDXcall + ""); + .split(GT.localDXcall) + .join("" + GT.localDXcall + ""); } if (myRawCall.length > 1) { @@ -6569,16 +6570,16 @@ function fitViewBetweenPoints(points, maxZoom = 20) var feature = new ol.Feature({ geometry: line }); var extent = feature.getGeometry().getExtent(); - g_mapView.fit(extent, { + GT.mapView.fit(extent, { duration: 500, maxZoom: maxZoom, padding: [75, 75, 75, 75] }); } -var g_spotCollector = {}; -var g_spotDetailsCollector = {}; -var g_decodeCollector = {}; +GT.spotCollector = {}; +GT.spotDetailsCollector = {}; +GT.decodeCollector = {}; function handleWsjtxDecode(newMessage) { @@ -6594,7 +6595,7 @@ function handleWsjtxDecode(newMessage) var newF; if (newMessage.OF > 0) { - newF = Number((newMessage.OF + newMessage.DF) / 1000).formatMhz(3, 3); + newF = formatMhz(Number((newMessage.OF + newMessage.DF) / 1000), 3, 3); } else { @@ -6681,17 +6682,17 @@ function handleWsjtxDecode(newMessage) var callsign = null; var hash = msgDEcallsign + newMessage.OB + newMessage.OM; - if (hash in g_liveCallsigns) callsign = g_liveCallsigns[hash]; + if (hash in GT.liveCallsigns) callsign = GT.liveCallsigns[hash]; var canPath = false; if ( - (g_appSettings.gtBandFilter.length == 0 || - (g_appSettings.gtBandFilter == "auto" && newMessage.OB == myBand) || - newMessage.OB == g_appSettings.gtBandFilter) && - (g_appSettings.gtModeFilter.length == 0 || - (g_appSettings.gtModeFilter == "auto" && newMessage.OM == myMode) || - newMessage.OM == g_appSettings.gtModeFilter || - g_appSettings.gtModeFilter == "Digital") + (GT.appSettings.gtBandFilter.length == 0 || + (GT.appSettings.gtBandFilter == "auto" && newMessage.OB == myBand) || + newMessage.OB == GT.appSettings.gtBandFilter) && + (GT.appSettings.gtModeFilter.length == 0 || + (GT.appSettings.gtModeFilter == "auto" && newMessage.OM == myMode) || + newMessage.OM == GT.appSettings.gtModeFilter || + GT.appSettings.gtModeFilter == "Digital") ) { rect = qthToBox(theirQTH, msgDEcallsign, CQ, false, msgDXcallsign, newMessage.OB, null, hash); @@ -6705,7 +6706,7 @@ function handleWsjtxDecode(newMessage) if (rect) { - g_liveGrids[theirQTH].age = g_timeNow; + GT.liveGrids[theirQTH].age = GT.timeNow; } if (callsign == null) @@ -6749,7 +6750,7 @@ function handleWsjtxDecode(newMessage) ); } - newCallsign.cont = g_dxccInfo[newCallsign.dxcc].continent; + newCallsign.cont = GT.dxccInfo[newCallsign.dxcc].continent; if (newCallsign.dxcc == 390 && newCallsign.zone == 1) { newCallsign.cont = "EU"; } } @@ -6763,17 +6764,17 @@ function handleWsjtxDecode(newMessage) getLookupCachedObject(msgDEcallsign, null, null, null, newCallsign); - if (g_callsignLookups.ulsUseEnable == true && isKnownCallsignDXCC(newCallsign.dxcc)) + if (GT.callsignLookups.ulsUseEnable == true && isKnownCallsignDXCC(newCallsign.dxcc)) { lookupUsCallsign(newCallsign, false); } - if (newCallsign.dxcc in g_dxccCount) g_dxccCount[newCallsign.dxcc]++; - else g_dxccCount[newCallsign.dxcc] = 1; + if (newCallsign.dxcc in GT.dxccCount) GT.dxccCount[newCallsign.dxcc]++; + else GT.dxccCount[newCallsign.dxcc] = 1; newCallsign.alerted = false; newCallsign.shouldAlert = false; - g_liveCallsigns[hash] = newCallsign; + GT.liveCallsigns[hash] = newCallsign; callsign = newCallsign; } else @@ -6785,15 +6786,15 @@ function handleWsjtxDecode(newMessage) if (rect != null && callsign.grid != rect.qth) { if ( - (g_appSettings.gtBandFilter.length == 0 || - (g_appSettings.gtBandFilter == "auto" && + (GT.appSettings.gtBandFilter.length == 0 || + (GT.appSettings.gtBandFilter == "auto" && newMessage.OB == myBand) || - newMessage.OB == g_appSettings.gtBandFilter) && - (g_appSettings.gtModeFilter.length == 0 || - (g_appSettings.gtModeFilter == "auto" && + newMessage.OB == GT.appSettings.gtBandFilter) && + (GT.appSettings.gtModeFilter.length == 0 || + (GT.appSettings.gtModeFilter == "auto" && newMessage.OM == myMode) || - newMessage.OM == g_appSettings.gtModeFilter || - g_appSettings.gtModeFilter == "Digital") + newMessage.OM == GT.appSettings.gtModeFilter || + GT.appSettings.gtModeFilter == "Digital") ) { rect = qthToBox( @@ -6833,30 +6834,30 @@ function handleWsjtxDecode(newMessage) if (callsign.grid.length > 0 && callsign.distance == 0) { var LL = squareToCenter(callsign.grid); - callsign.distance = MyCircle.distance(g_myLat, g_myLon, LL.a, LL.o, distanceUnit.value); - callsign.heading = MyCircle.bearing(g_myLat, g_myLon, LL.a, LL.o); + callsign.distance = MyCircle.distance(GT.myLat, GT.myLon, LL.a, LL.o, distanceUnit.value); + callsign.heading = MyCircle.bearing(GT.myLat, GT.myLon, LL.a, LL.o); } - if (g_appSettings.potaEnabled == 1) + if (GT.appSettings.potaEnabled == 1) { callsign.pota = null; - if (callsign.DEcall in g_pota.callSpots || callsign.DEcall in g_pota.callSchedule) + if (callsign.DEcall in GT.pota.callSpots || callsign.DEcall in GT.pota.callSchedule) { var now = Date.now(); - if (callsign.DEcall in g_pota.callSpots) + if (callsign.DEcall in GT.pota.callSpots) { - if (g_pota.callSpots[callsign.DEcall] in g_pota.parkSpots && g_pota.parkSpots[g_pota.callSpots[callsign.DEcall]][callsign.DEcall].expire > now) + if (GT.pota.callSpots[callsign.DEcall] in GT.pota.parkSpots && GT.pota.parkSpots[GT.pota.callSpots[callsign.DEcall]][callsign.DEcall].expire > now) { - callsign.pota = g_pota.callSpots[callsign.DEcall]; + callsign.pota = GT.pota.callSpots[callsign.DEcall]; } } - else if (callsign.DEcall in g_pota.callSchedule) + else if (callsign.DEcall in GT.pota.callSchedule) { - for (var i in g_pota.callSchedule[callsign.DEcall]) + for (var i in GT.pota.callSchedule[callsign.DEcall]) { - if (now < g_pota.callSchedule[callsign.DEcall][i].end && now >= g_pota.callSchedule[callsign.DEcall][i].start) + if (now < GT.pota.callSchedule[callsign.DEcall][i].end && now >= GT.pota.callSchedule[callsign.DEcall][i].start) { - callsign.pota = g_pota.callSchedule[callsign.DEcall][i].id; + callsign.pota = GT.pota.callSchedule[callsign.DEcall][i].id; break; } } @@ -6884,7 +6885,7 @@ function handleWsjtxDecode(newMessage) insertMessageInRoster(newMessage, msgDEcallsign, msgDXcallsign, callsign, hash); - if (g_mapSettings.trafficDecode && (didAlert == true || didCustomAlert == true)) + if (GT.mapSettings.trafficDecode && (didAlert == true || didCustomAlert == true)) { var traffic = htmlEntities(theMessage); if (didAlert == true) @@ -6896,37 +6897,37 @@ function handleWsjtxDecode(newMessage) traffic = traffic + " 🚩"; } - g_lastTraffic.unshift(traffic); - g_lastTraffic.unshift(userTimeString(null)); - g_lastTraffic.unshift("
"); + GT.lastTraffic.unshift(traffic); + GT.lastTraffic.unshift(userTimeString(null)); + GT.lastTraffic.unshift("
"); drawTraffic(); lastMessageWasInfo = true; } - if (g_appSettings.gtSpotEnable == true && newMessage.OF > 0) + if (GT.appSettings.gtSpotEnable == true && newMessage.OF > 0) { let freq = callsign.delta + newMessage.OF; - if (callsign.DEcall in g_gtCallsigns) + if (callsign.DEcall in GT.gtCallsigns) { - for (const cid in g_gtCallsigns[callsign.DEcall]) + for (const cid in GT.gtCallsigns[callsign.DEcall]) { - if (cid in g_gtFlagPins && g_gtFlagPins[cid].o == 1) + if (cid in GT.gtFlagPins && GT.gtFlagPins[cid].o == 1) { - g_spotCollector[cid] = callsign.RSTsent; - g_spotDetailsCollector[cid] = [freq, callsign.mode]; + GT.spotCollector[cid] = callsign.RSTsent; + GT.spotDetailsCollector[cid] = [freq, callsign.mode]; } } } freq = freq - (freq % k_frequencyBucket); - g_decodeCollector[freq] ??= 0; - g_decodeCollector[freq]++; + GT.decodeCollector[freq] ??= 0; + GT.decodeCollector[freq]++; } } - if (callsign.dxcc != -1) countryName = g_dxccToAltName[callsign.dxcc]; + if (callsign.dxcc != -1) countryName = GT.dxccToAltName[callsign.dxcc]; if (canPath == true) { - if (callsign.DXcall.indexOf("CQ") < 0 && g_appSettings.gridViewMode != 2) + if (callsign.DXcall.indexOf("CQ") < 0 && GT.appSettings.gridViewMode != 2) { // Nothing special, we know the callers grid if (callsign.grid != "") @@ -6934,13 +6935,13 @@ function handleWsjtxDecode(newMessage) // Our msgDEcallsign is not sending a CQ. // Let's see if we can locate who he's talking to in our known list var DEcallsign = null; - if (callsign.DXcall + newMessage.OB + newMessage.OM in g_liveCallsigns) + if (callsign.DXcall + newMessage.OB + newMessage.OM in GT.liveCallsigns) { - DEcallsign = g_liveCallsigns[callsign.DXcall + newMessage.OB + newMessage.OM]; + DEcallsign = GT.liveCallsigns[callsign.DXcall + newMessage.OB + newMessage.OM]; } - else if (callsign.DXcall in g_liveCallsigns) + else if (callsign.DXcall in GT.liveCallsigns) { - DEcallsign = g_liveCallsigns[callsign.DXcall]; + DEcallsign = GT.liveCallsigns[callsign.DXcall]; } if (DEcallsign != null && DEcallsign.grid != "") @@ -6975,11 +6976,11 @@ function handleWsjtxDecode(newMessage) true ); - flightPath.age = g_timeNow + g_flightDuration; + flightPath.age = GT.timeNow + GT.flightDuration; flightPath.isShapeFlight = 0; flightPath.isQRZ = isQRZ; - g_flightPaths.push(flightPath); + GT.flightPaths.push(flightPath); } catch (err) { @@ -6988,21 +6989,21 @@ function handleWsjtxDecode(newMessage) } } } - else if (g_mapSettings.qrzDxccFallback && msgDXcallsign == myDEcall && callsign.dxcc > 0) + else if (GT.mapSettings.qrzDxccFallback && msgDXcallsign == myDEcall && callsign.dxcc > 0) { // the caller is calling us, but they don't have a grid, so lookup the DXCC and show it var strokeColor = getQrzPathColor(); var strokeWeight = qrzPathWidthValue.value; var flightPath = null; var isQRZ = true; - var DEcallsign = g_liveCallsigns[myDEcall]; + var DEcallsign = GT.liveCallsigns[myDEcall]; if (strokeWeight != 0) { var toPoint = getPoint(DEcallsign.grid); - var Lat = g_dxccInfo[callsign.dxcc].lat; - var Lon = g_dxccInfo[callsign.dxcc].lon; + var Lat = GT.dxccInfo[callsign.dxcc].lat; + var Lon = GT.dxccInfo[callsign.dxcc].lon; var fromPoint = ol.proj.fromLonLat([Lon, Lat]); try @@ -7019,11 +7020,11 @@ function handleWsjtxDecode(newMessage) true ); - flightPath.age = g_timeNow + g_flightDuration; + flightPath.age = GT.timeNow + GT.flightDuration; flightPath.isShapeFlight = 0; flightPath.isQRZ = isQRZ; - g_flightPaths.push(flightPath); + GT.flightPaths.push(flightPath); } catch (err) { @@ -7032,45 +7033,45 @@ function handleWsjtxDecode(newMessage) var feature = shapeFeature( "qrz", - g_dxccInfo[callsign.dxcc].geo, + GT.dxccInfo[callsign.dxcc].geo, "qrz", "#FFFF0010", "#FF0000FF", 1.0 ); - feature.age = g_timeNow + g_flightDuration; + feature.age = GT.timeNow + GT.flightDuration; feature.isShapeFlight = 1; feature.isQRZ = isQRZ; - g_layerSources.flight.addFeature(feature); - g_flightPaths.push(feature); + GT.layerSources.flight.addFeature(feature); + GT.flightPaths.push(feature); } } } - else if (g_mapSettings.CQhilite && msgDXcallsign.indexOf("CQ ") == 0 && callsign.grid != "" && g_appSettings.gridViewMode != 2 && pathWidthValue.value != 0) + else if (GT.mapSettings.CQhilite && msgDXcallsign.indexOf("CQ ") == 0 && callsign.grid != "" && GT.appSettings.gridViewMode != 2 && pathWidthValue.value != 0) { var CCd = msgDXcallsign.replace("CQ ", "").split(" ")[0]; - if (CCd.length < 5 && !(CCd in g_pathIgnore)) + if (CCd.length < 5 && !(CCd in GT.pathIgnore)) { var locality = null; // Direct lookup US states, Continents, possibly - if (CCd in g_replaceCQ) CCd = g_replaceCQ[CCd]; + if (CCd in GT.replaceCQ) CCd = GT.replaceCQ[CCd]; - if (CCd.length == 2 && CCd in g_shapeData) + if (CCd.length == 2 && CCd in GT.shapeData) { - locality = g_shapeData[CCd]; + locality = GT.shapeData[CCd]; } else if (CCd.length == 3) { // maybe it's DEL, or WYO. check the first two letters - if (CCd.substr(0, 2) in g_shapeData) { locality = g_shapeData[CCd.substr(0, 2)]; } + if (CCd.substr(0, 2) in GT.shapeData) { locality = GT.shapeData[CCd.substr(0, 2)]; } } if (locality == null) { // Check the prefix for dxcc direct - if (CCd in g_prefixToMap) + if (CCd in GT.prefixToMap) { - locality = g_dxccInfo[g_prefixToMap[CCd]].geo; + locality = GT.dxccInfo[GT.prefixToMap[CCd]].geo; if (locality == "deleted") { locality = null; @@ -7093,11 +7094,11 @@ function handleWsjtxDecode(newMessage) strokeWeight ); - feature.age = g_timeNow + g_flightDuration; + feature.age = GT.timeNow + GT.flightDuration; feature.isShapeFlight = 1; feature.isQRZ = false; - g_layerSources.flight.addFeature(feature); - g_flightPaths.push(feature); + GT.layerSources.flight.addFeature(feature); + GT.flightPaths.push(feature); var fromPoint = getPoint(callsign.grid); var toPoint = ol.proj.fromLonLat(locality.properties.center); @@ -7116,10 +7117,10 @@ function handleWsjtxDecode(newMessage) true ); - flightPath.age = g_timeNow + g_flightDuration; + flightPath.age = GT.timeNow + GT.flightDuration; flightPath.isShapeFlight = 0; flightPath.isQRZ = false; - g_flightPaths.push(flightPath); + GT.flightPaths.push(flightPath); } catch (err) { @@ -7134,7 +7135,7 @@ function handleWsjtxDecode(newMessage) var bgColor = "black"; if (newMessage.LC > 0) bgColor = "#880000"; - g_lastMessages.unshift( + GT.lastMessages.unshift( "" + @@ -7156,13 +7157,13 @@ function handleWsjtxDecode(newMessage) "" ); - while (g_lastMessages.length > 100) g_lastMessages.pop(); + while (GT.lastMessages.length > 100) GT.lastMessages.pop(); } function addLastTraffic(traffic) { - g_lastTraffic.unshift(traffic); - g_lastTraffic.unshift( + GT.lastTraffic.unshift(traffic); + GT.lastTraffic.unshift( "
" ); drawTraffic(); @@ -7210,16 +7211,16 @@ function shapeFeature( function handleWsjtxClear(newMessage) { - for (var hash in g_liveCallsigns) + for (var hash in GT.liveCallsigns) { - if (g_liveCallsigns[hash].instance == newMessage.instance || g_liveCallsigns[hash].mode == g_instances[newMessage.instance].status.MO) + if (GT.liveCallsigns[hash].instance == newMessage.instance || GT.liveCallsigns[hash].mode == GT.instances[newMessage.instance].status.MO) { - delete g_liveCallsigns[hash]; + delete GT.liveCallsigns[hash]; } } - for (var call in g_callRoster) + for (var call in GT.callRoster) { - if (g_callRoster[call].callObj.instance == newMessage.instance) { delete g_callRoster[call]; } + if (GT.callRoster[call].callObj.instance == newMessage.instance) { delete GT.callRoster[call]; } } redrawGrids(); @@ -7232,21 +7233,21 @@ function handleWsjtxClear(newMessage) function goProcessRoster() { var now = timeNowSec(); - for (const call in g_callRoster) + for (const call in GT.callRoster) { - if (now - g_callRoster[call].callObj.age > 300) + if (now - GT.callRoster[call].callObj.age > 300) { - g_callRoster[call].callObj.alerted = false; - g_callRoster[call].callObj.shouldAlert = false; - delete g_callRoster[call]; + GT.callRoster[call].callObj.alerted = false; + GT.callRoster[call].callObj.shouldAlert = false; + delete GT.callRoster[call]; continue; } } - if (g_rosterInitialized) + if (GT.rosterInitialized) { try { - g_callRosterWindowHandle.window.processRoster(g_callRoster); + GT.callRosterWindowHandle.window.processRoster(GT.callRoster); } catch (e) { @@ -7258,7 +7259,7 @@ function goProcessRoster() function handleClosed(newMessage) { - if (g_activeInstance == newMessage.Id && g_instances[newMessage.Id].open == false) + if (GT.activeInstance == newMessage.Id && GT.instances[newMessage.Id].open == false) { txrxdec.style.backgroundColor = "Purple"; txrxdec.style.borderColor = "Purple"; @@ -7271,14 +7272,14 @@ function handleClosed(newMessage) function handleWsjtxClose(newMessage) { updateCountStats(); - g_instances[newMessage.Id].open = false; + GT.instances[newMessage.Id].open = false; handleClosed(newMessage); updateRosterInstances(); } function handleWsjtxWSPR(newMessage) { - if (g_ignoreMessages == 1) return; + if (GT.ignoreMessages == 1) return; addDeDx( newMessage.Grid, @@ -7286,7 +7287,7 @@ function handleWsjtxWSPR(newMessage) "-", Number(newMessage.SR), timeNowSec(), - "Pwr:" + newMessage.Power + " Freq:" + Number(newMessage.Frequency / 1000).formatMhz(3, 3) + " Delta:" + Number(newMessage.DT).toFixed(2) + " Drift:" + + "Pwr:" + newMessage.Power + " Freq:" + formatMhz(Number(newMessage.Frequency / 1000), 3, 3) + " Delta:" + Number(newMessage.DT).toFixed(2) + " Drift:" + newMessage.Drift, "WSPR", Number(newMessage.Frequency / 1000000).formatBand(), @@ -7311,7 +7312,7 @@ function centerOn(grid) if (grid.length >= 4) { var LL = squareToLatLong(grid); - g_map + GT.map .getView() .setCenter( ol.proj.fromLonLat([ @@ -7326,11 +7327,11 @@ function setCenterQTH() { if (homeQTHInput.value.length >= 4) { - g_appSettings.centerGridsquare = homeQTHInput.value; + GT.appSettings.centerGridsquare = homeQTHInput.value; // Grab home QTH Gridsquare from Center QTH var LL = squareToLatLong(homeQTHInput.value); - g_map + GT.map .getView() .setCenter( ol.proj.fromLonLat([ @@ -7346,7 +7347,7 @@ function setCenterQTH() } function setCenterGridsquare() { - if (g_mapMemory[6].zoom != -1) + if (GT.mapMemory[6].zoom != -1) { mapMemory(6, false); return; @@ -7357,9 +7358,9 @@ function setCenterGridsquare() function changeLookupMerge() { - g_appSettings.lookupMerge = lookupMerge.checked; - g_appSettings.lookupMissingGrid = lookupMissingGrid.checked; - if (g_appSettings.lookupMerge == true) + GT.appSettings.lookupMerge = lookupMerge.checked; + GT.appSettings.lookupMissingGrid = lookupMissingGrid.checked; + if (GT.appSettings.lookupMerge == true) { lookupMissingGridDiv.style.display = "inline-block"; } @@ -7371,13 +7372,13 @@ function changeLookupMerge() function changelookupOnTx() { - g_appSettings.lookupOnTx = lookupOnTx.checked; - g_appSettings.lookupCloseLog = lookupCloseLog.checked; + GT.appSettings.lookupOnTx = lookupOnTx.checked; + GT.appSettings.lookupCloseLog = lookupCloseLog.checked; } function exportSettings() { - var filename = g_appData + g_dirSeperator + "gt_settings.json"; + var filename = GT.appData + GT.dirSeperator + "gt_settings.json"; var toWrite = JSON.stringify(localStorage); fs.writeFileSync(filename, toWrite); @@ -7387,7 +7388,7 @@ function exportSettings() function checkForSettings() { - var filename = g_appData + g_dirSeperator + "gt_settings.json"; + var filename = GT.appData + GT.dirSeperator + "gt_settings.json"; if (fs.existsSync(filename)) { importSettingsButton.style.display = "inline-block"; @@ -7405,7 +7406,7 @@ function importSettings() { checkForSettings(); - var filename = g_appData + g_dirSeperator + "gt_settings.json"; + var filename = GT.appData + GT.dirSeperator + "gt_settings.json"; if (fs.existsSync(filename)) { var data = fs.readFileSync(filename); @@ -7444,23 +7445,23 @@ function showCallsignBox(redraw) var worker = "
Callsigns and DXCC Heard

"; - g_newCallsignCount = Object.keys(g_liveCallsigns).length; - if (g_newCallsignCount > 0) + GT.newCallsignCount = Object.keys(GT.liveCallsigns).length; + if (GT.newCallsignCount > 0) { var newCallList = Array(); worker += "
"; // "; - if (g_callsignLookups.lotwUseEnable == true) worker += ""; - if (g_callsignLookups.eqslUseEnable == true) worker += ""; - if (g_callsignLookups.oqrsUseEnable == true) worker += ""; - for (var x in g_liveCallsigns) + if (GT.callsignLookups.lotwUseEnable == true) worker += ""; + if (GT.callsignLookups.eqslUseEnable == true) worker += ""; + if (GT.callsignLookups.oqrsUseEnable == true) worker += ""; + for (var x in GT.liveCallsigns) { - if (g_liveCallsigns[x].dxcc != -1) + if (GT.liveCallsigns[x].dxcc != -1) { - newCallList.push(g_liveCallsigns[x]); + newCallList.push(GT.liveCallsigns[x]); } } newCallList.sort(compareCallsignTime).reverse(); @@ -7470,8 +7471,8 @@ function showCallsignBox(redraw) var grid = newCallList[x].rect ? newCallList[x].rect.qth : "-"; var cqzone = newCallList[x].cqz ? newCallList[x].cqz : "-"; var ituzone = newCallList[x].ituz ? newCallList[x].ituz : "-"; - var geo = g_dxccInfo[newCallList[x].dxcc]; - var thisCall = newCallList[x].DEcall.formatCallsign(); + var geo = GT.dxccInfo[newCallList[x].dxcc]; + var thisCall = formatCallsign(newCallList[x].DEcall); worker += ""; worker += ""; var ageString = ""; - if (timeNowSec() - newCallList[x].time < 3601) { ageString = (timeNowSec() - newCallList[x].time).toDHMS(); } + if (timeNowSec() - newCallList[x].time < 3601) { ageString = toDHMS(timeNowSec() - newCallList[x].time); } else { ageString = userTimeString(newCallList[x].time * 1000); } worker += ""; - if (g_callsignLookups.lotwUseEnable == true) + if (GT.callsignLookups.lotwUseEnable == true) { worker += ""; } - if (g_callsignLookups.eqslUseEnable == true) + if (GT.callsignLookups.eqslUseEnable == true) { worker += ""; } - if (g_callsignLookups.oqrsUseEnable == true) + if (GT.callsignLookups.oqrsUseEnable == true) { worker += ""; } worker += ""; @@ -7532,26 +7533,26 @@ function showCallsignBox(redraw) var heard = 0; var List = {}; - if (Object.keys(g_dxccCount).length > 0) + if (Object.keys(GT.dxccCount).length > 0) { - for (var key in g_dxccCount) + for (var key in GT.dxccCount) { if (key != -1) { var item = {}; - item.total = g_dxccCount[key]; - item.confirmed = g_dxccInfo[key].confirmed; - item.worked = g_dxccInfo[key].worked; + item.total = GT.dxccCount[key]; + item.confirmed = GT.dxccInfo[key].confirmed; + item.worked = GT.dxccInfo[key].worked; item.dxcc = key; - item.flag = g_dxccInfo[key].flag; - List[g_dxccToAltName[key]] = item; + item.flag = GT.dxccInfo[key].flag; + List[GT.dxccToAltName[key]] = item; heard++; } } worker += "
CallsignGridDXCCCQITUFlagQSOQSLWhenITUzCQzISOLoTWeQSLOQRSLoTWeQSLOQRS
" + - (thisCall in g_tracker.worked.call ? "✔" : "") + + (thisCall in GT.tracker.worked.call ? "✔" : "") + "" + - (thisCall in g_tracker.confirmed.call ? "✔" : "") + + (thisCall in GT.tracker.confirmed.call ? "✔" : "") + "" + ageString + "" + - (thisCall in g_lotwCallsigns ? "✔" : "") + + (thisCall in GT.lotwCallsigns ? "✔" : "") + "" + - (thisCall in g_eqslCallsigns ? "✔" : "") + + (thisCall in GT.eqslCallsigns ? "✔" : "") + "" + - (thisCall in g_oqrsCallsigns ? "✔" : "") + + (thisCall in GT.oqrsCallsigns ? "✔" : "") + "
"; - if (Object.keys(g_blockedDxcc).length > 0) + if (Object.keys(CR.blockedDxcc).length > 0) { clearString = ""; @@ -1556,22 +1554,22 @@ function openIgnoreEdit() "px;'>
DXCC (" + @@ -7581,32 +7582,32 @@ function showCallsignBox(redraw) function setStatsDiv(div, worker) { if ( - g_statsWindowHandle != null && - typeof g_statsWindowHandle.window[div] !== "undefined" + GT.statsWindowHandle != null && + typeof GT.statsWindowHandle.window[div] !== "undefined" ) { - g_statsWindowHandle.window[div].innerHTML = worker; + GT.statsWindowHandle.window[div].innerHTML = worker; } } function setStatsDivHeight(div, heightWithPx) { if ( - g_statsWindowHandle != null && - typeof g_statsWindowHandle.window[div] !== "undefined" + GT.statsWindowHandle != null && + typeof GT.statsWindowHandle.window[div] !== "undefined" ) { - g_statsWindowHandle.window[div].style.height = heightWithPx; + GT.statsWindowHandle.window[div].style.height = heightWithPx; } } function getStatsWindowHeight() { if ( - g_statsWindowHandle != null && - typeof g_statsWindowHandle.window.window !== "undefined" + GT.statsWindowHandle != null && + typeof GT.statsWindowHandle.window.window !== "undefined" ) { - return g_statsWindowHandle.window.window.innerHeight - 63; + return GT.statsWindowHandle.window.window.innerHeight - 63; } return 300; } @@ -7614,39 +7615,39 @@ function getStatsWindowHeight() function setLookupDiv(div, worker) { if ( - g_lookupWindowHandle && g_lookupWindowInitialized && - typeof g_lookupWindowHandle.window[div].innerHTML !== "undefined" + GT.lookupWindowHandle && GT.lookupWindowInitialized && + typeof GT.lookupWindowHandle.window[div].innerHTML !== "undefined" ) { - g_lookupWindowHandle.window[div].innerHTML = worker; + GT.lookupWindowHandle.window[div].innerHTML = worker; } } function setLookupDivHeight(div, heightWithPx) { if ( - g_lookupWindowHandle && g_lookupWindowInitialized && - typeof g_lookupWindowHandle.window[div].style !== "undefined" + GT.lookupWindowHandle && GT.lookupWindowInitialized && + typeof GT.lookupWindowHandle.window[div].style !== "undefined" ) { - g_lookupWindowHandle.window[div].style.height = heightWithPx; + GT.lookupWindowHandle.window[div].style.height = heightWithPx; } } function getLookupWindowHeight() { if ( - g_lookupWindowHandle && g_lookupWindowInitialized && - typeof g_lookupWindowHandle.window.window !== "undefined" + GT.lookupWindowHandle && GT.lookupWindowInitialized && + typeof GT.lookupWindowHandle.window.window !== "undefined" ) { - return g_lookupWindowHandle.window.window.innerHeight; + return GT.lookupWindowHandle.window.window.innerHeight; } return 300; } function showConditionsBox() { - if (g_mapSettings.offlineMode == false) + if (GT.mapSettings.offlineMode == false) { openConditionsWindow(); } @@ -7669,13 +7670,13 @@ function myModeCompare(a, b) function myDxccCompare(a, b) { - return g_dxccToAltName[a.dxcc].localeCompare(g_dxccToAltName[b.dxcc]); + return GT.dxccToAltName[a.dxcc].localeCompare(GT.dxccToAltName[b.dxcc]); } function myDxccIntCompare(a, b) { - if (!(a in g_dxccToAltName)) return 0; - if (!(b in g_dxccToAltName)) { return g_dxccToAltName[a].localeCompare(g_dxccToAltName[b]); } + if (!(a in GT.dxccToAltName)) return 0; + if (!(b in GT.dxccToAltName)) { return GT.dxccToAltName[a].localeCompare(GT.dxccToAltName[b]); } } function myTimeCompare(a, b) @@ -7697,7 +7698,7 @@ function myConfirmedCompare(a, b) return 0; } -var g_sortFunction = [ +GT.sortFunction = [ myCallCompare, myGridCompare, myModeCompare, @@ -7707,37 +7708,37 @@ var g_sortFunction = [ myConfirmedCompare ]; -var g_lastSortIndex = 4; +GT.lastSortIndex = 4; -var g_qsoPages = 1; -var g_qsoPage = 0; -var g_qsoItemsPerPage = 100; -var g_lastSortType = 0; -var g_searchWB = ""; -var g_gridSearch = ""; -var g_filterBand = "Mixed"; -var g_filterMode = "Mixed"; -var g_filterDxcc = 0; -var g_filterQSL = "All"; +GT.qsoPages = 1; +GT.qsoPage = 0; +GT.qsoItemsPerPage = 100; +GT.lastSortType = 0; +GT.searchWB = ""; +GT.gridSearch = ""; +GT.filterBand = "Mixed"; +GT.filterMode = "Mixed"; +GT.filterDxcc = 0; +GT.filterQSL = "All"; -var g_lastSearchSelection = null; +GT.lastSearchSelection = null; function resetSearch() { - g_lastSortIndex = 4; - g_qsoPages = 1; - g_qsoPage = 0; - g_qsoItemsPerPage = 100; - g_lastSortType = 2; - g_searchWB = ""; - g_gridSearch = ""; + GT.lastSortIndex = 4; + GT.qsoPages = 1; + GT.qsoPage = 0; + GT.qsoItemsPerPage = 100; + GT.lastSortType = 2; + GT.searchWB = ""; + GT.gridSearch = ""; - g_filterBand = "Mixed"; - g_filterMode = "Mixed"; - g_filterDxcc = 0; - g_filterQSL = "All"; + GT.filterBand = "Mixed"; + GT.filterMode = "Mixed"; + GT.filterDxcc = 0; + GT.filterQSL = "All"; - g_lastSearchSelection = null; + GT.lastSearchSelection = null; } function showWorkedByCall(callsign, evt) @@ -7745,52 +7746,52 @@ function showWorkedByCall(callsign, evt) evt.preventDefault(); resetSearch(); - g_searchWB = callsign; - if (event.shiftKey == true) g_filterQSL = "true"; + GT.searchWB = callsign; + if (event.shiftKey == true) GT.filterQSL = "true"; openInfoTab("qsobox", "workedBoxDiv", showWorkedBox); } function showWorkedSearchChanged(object, index) { ValidateCallsign(object, null); - g_searchWB = object.value.toUpperCase(); - g_lastSearchSelection = object.id; + GT.searchWB = object.value.toUpperCase(); + GT.lastSearchSelection = object.id; showWorkedBox(index, 0); } function showWorkedSearchGrid(object, index) { ValidateCallsign(object, null); - g_gridSearch = object.value.toUpperCase(); - g_lastSearchSelection = object.id; + GT.gridSearch = object.value.toUpperCase(); + GT.lastSearchSelection = object.id; showWorkedBox(index, 0); } function filterBandFunction(event, index) { - g_filterBand = this.value; - g_lastSearchSelection = this.id; + GT.filterBand = this.value; + GT.lastSearchSelection = this.id; showWorkedBox(index, 0); } function filterModeFunction(event, index) { - g_filterMode = this.value; - g_lastSearchSelection = this.id; + GT.filterMode = this.value; + GT.lastSearchSelection = this.id; showWorkedBox(index, 0); } function filterDxccFunction(event, index) { - g_filterDxcc = this.value; - g_lastSearchSelection = this.id; + GT.filterDxcc = this.value; + GT.lastSearchSelection = this.id; showWorkedBox(index, 0); } function filterQSLFunction(event, index) { - g_filterQSL = this.value; - g_lastSearchSelection = this.id; + GT.filterQSL = this.value; + GT.lastSearchSelection = this.id; showWorkedBox(index, 0); } @@ -7809,31 +7810,31 @@ function showWorkedBox(sortIndex, nextPage, redraw) var ObjectCount = 0; - myObjects = g_QSOhash; + myObjects = GT.QSOhash; if (sortIndex == null || typeof sortIndex == "undefined") { mySort = 4; - g_lastSortIndex = 4; - g_lastSortType = 2; + GT.lastSortIndex = 4; + GT.lastSortType = 2; } var list = Object.values(myObjects); - if (g_searchWB.length > 0) + if (GT.searchWB.length > 0) { list = list.filter(function (value) { - return value.DEcall.indexOf(g_searchWB) > -1; + return value.DEcall.indexOf(GT.searchWB) > -1; }); } - if (g_gridSearch.length > 0) + if (GT.gridSearch.length > 0) { list = list.filter(function (value) { - var x = value.grid.indexOf(g_gridSearch); - var y = value.vucc_grids.indexOf(g_gridSearch); + var x = value.grid.indexOf(GT.gridSearch); + var y = value.vucc_grids.indexOf(GT.gridSearch); return x == 0 || y == 0; }); } @@ -7844,25 +7845,25 @@ function showWorkedBox(sortIndex, nextPage, redraw) modes[list[key].mode] = list[key].mode; var unconfirmedCallsKey = new UnconfirmedCallsKey(list[key].dxcc, list[key].band); if ( - g_unconfirmedCalls.has(unconfirmedCallsKey.key) && + GT.unconfirmedCalls.has(unconfirmedCallsKey.key) && list[key].confirmed ) { - g_unconfirmedCalls.set(unconfirmedCallsKey.key, unconfirmedCallsSentinel); + GT.unconfirmedCalls.set(unconfirmedCallsKey.key, GT.unconfirmedCallsSentinel); } else if ( !list[key].confirmed && // check for sentinel object -- confirmed country. key needs to be kept in here so that // an recent unconfirmed qso doesn't mark the key as unconfirmed - g_unconfirmedCalls.get(unconfirmedCallsKey.key) != unconfirmedCallsSentinel + GT.unconfirmedCalls.get(unconfirmedCallsKey.key) != GT.unconfirmedCallsSentinel ) { - var logs = g_unconfirmedCalls.get(unconfirmedCallsKey.key); + var logs = GT.unconfirmedCalls.get(unconfirmedCallsKey.key); if (logs == undefined) { logs = new Set(); logs.add(list[key]); - g_unconfirmedCalls.set(unconfirmedCallsKey.key, logs); + GT.unconfirmedCalls.set(unconfirmedCallsKey.key, logs); } else if (!logs.has(list[key])) { @@ -7870,50 +7871,50 @@ function showWorkedBox(sortIndex, nextPage, redraw) } } - var pp = list[key].dxcc in g_dxccInfo ? g_dxccInfo[list[key].dxcc].pp : "?"; + var pp = list[key].dxcc in GT.dxccInfo ? GT.dxccInfo[list[key].dxcc].pp : "?"; - dxccs[g_dxccToAltName[list[key].dxcc] + " (" + pp + ")"] = list[key].dxcc; + dxccs[GT.dxccToAltName[list[key].dxcc] + " (" + pp + ")"] = list[key].dxcc; } - if (g_filterBand != "Mixed") + if (GT.filterBand != "Mixed") { list = list.filter(function (value) { - return value.band == g_filterBand; + return value.band == GT.filterBand; }); } - if (g_filterMode != "Mixed") + if (GT.filterMode != "Mixed") { list = list.filter(function (value) { if ( - g_filterMode == "Phone" && - value.mode in g_modes_phone && - g_modes_phone[value.mode] + GT.filterMode == "Phone" && + value.mode in GT.modes_phone && + GT.modes_phone[value.mode] ) { return true; } if ( - g_filterMode == "Digital" && - value.mode in g_modes && - g_modes[value.mode] + GT.filterMode == "Digital" && + value.mode in GT.modes && + GT.modes[value.mode] ) { return true; } - return value.mode == g_filterMode; + return value.mode == GT.filterMode; }); } - if (g_filterDxcc != 0) + if (GT.filterDxcc != 0) { list = list.filter(function (value) { - return value.dxcc == g_filterDxcc; + return value.dxcc == GT.filterDxcc; }); } - if (g_filterQSL != "All") + if (GT.filterQSL != "All") { list = list.filter(function (value) { - return value.confirmed == (g_filterQSL == "true"); + return value.confirmed == (GT.filterQSL == "true"); }); } @@ -7922,63 +7923,63 @@ function showWorkedBox(sortIndex, nextPage, redraw) if (typeof nextPage == "undefined") { nextPage = 0; - if (g_lastSortIndex != mySort) + if (GT.lastSortIndex != mySort) { - list = list.sort(g_sortFunction[mySort]); - g_lastSortIndex = mySort; - g_lastSortType = 1; - g_qsoPage = 0; + list = list.sort(GT.sortFunction[mySort]); + GT.lastSortIndex = mySort; + GT.lastSortType = 1; + GT.qsoPage = 0; } else { - list = list.sort(g_sortFunction[mySort]).reverse(); - g_lastSortIndex = -1; - g_lastSortType = 2; - g_qsoPage = 0; + list = list.sort(GT.sortFunction[mySort]).reverse(); + GT.lastSortIndex = -1; + GT.lastSortType = 2; + GT.qsoPage = 0; } } else { - if (g_lastSortType == 1) + if (GT.lastSortType == 1) { - list = list.sort(g_sortFunction[mySort]); + list = list.sort(GT.sortFunction[mySort]); } else { - list = list.sort(g_sortFunction[mySort]).reverse(); + list = list.sort(GT.sortFunction[mySort]).reverse(); } } } else { - mySort = g_lastSortIndex; + mySort = GT.lastSortIndex; if (mySort == -1) mySort = 4; - if (g_lastSortType == 1) + if (GT.lastSortType == 1) { - list = list.sort(g_sortFunction[mySort]); + list = list.sort(GT.sortFunction[mySort]); } else { - list = list.sort(g_sortFunction[mySort]).reverse(); + list = list.sort(GT.sortFunction[mySort]).reverse(); } } ObjectCount = list.length; - var g_qsoPages = parseInt(ObjectCount / g_qsoItemsPerPage) + 1; + GT.qsoPages = parseInt(ObjectCount / GT.qsoItemsPerPage) + 1; - g_qsoPage += nextPage; - g_qsoPage %= g_qsoPages; - if (g_qsoPage < 0) g_qsoPage = g_qsoPages - 1; + GT.qsoPage += nextPage; + GT.qsoPage %= GT.qsoPages; + if (GT.qsoPage < 0) GT.qsoPage = GT.qsoPages - 1; - var startIndex = g_qsoPage * g_qsoItemsPerPage; - var endIndex = startIndex + g_qsoItemsPerPage; + var startIndex = GT.qsoPage * GT.qsoItemsPerPage; + var endIndex = startIndex + GT.qsoItemsPerPage; if (endIndex > ObjectCount) endIndex = ObjectCount; var workHead = " Entries (" + ObjectCount + ")"; - if (g_qsoPages > 1) + if (GT.qsoPages > 1) { workHead += "
⇦ "; workHead += " Page " + - (g_qsoPage + 1) + + (GT.qsoPage + 1) + " of " + - g_qsoPages + + GT.qsoPages + " (" + (endIndex - startIndex) + ") "; @@ -8004,14 +8005,14 @@ function showWorkedBox(sortIndex, nextPage, redraw) var worker = ""; worker += ""; - worker += ""; - worker += ""; worker += ""; worker += ""; - if (g_callsignLookups.lotwUseEnable == true) worker += ""; - if (g_callsignLookups.eqslUseEnable == true) worker += ""; - if (g_callsignLookups.oqrsUseEnable == true) worker += ""; + if (GT.callsignLookups.lotwUseEnable == true) worker += ""; + if (GT.callsignLookups.eqslUseEnable == true) worker += ""; + if (GT.callsignLookups.oqrsUseEnable == true) worker += ""; worker += ""; var key = null; @@ -8048,7 +8049,7 @@ function showWorkedBox(sortIndex, nextPage, redraw) "\",\"" + key.grid + "\");' >" + - key.DEcall.formatCallsign() + + formatCallsign(key.DEcall) + ""; worker += ""; worker += ""; worker += ""; worker += ""; - if (g_callsignLookups.lotwUseEnable == true) + if (GT.callsignLookups.lotwUseEnable == true) { worker += ""; } - if (g_callsignLookups.eqslUseEnable == true) + if (GT.callsignLookups.eqslUseEnable == true) { worker += ""; } - if (g_callsignLookups.oqrsUseEnable == true) + if (GT.callsignLookups.oqrsUseEnable == true) { worker += ""; } worker += ""; @@ -8133,7 +8134,7 @@ function showWorkedBox(sortIndex, nextPage, redraw) "bandFilterDiv", newSelect, "filterBandFunction", - g_filterBand, + GT.filterBand, true ); @@ -8169,7 +8170,7 @@ function showWorkedBox(sortIndex, nextPage, redraw) "modeFilterDiv", newSelect, "filterModeFunction", - g_filterMode, + GT.filterMode, true ); @@ -8195,7 +8196,7 @@ function showWorkedBox(sortIndex, nextPage, redraw) "dxccFilterDiv", newSelect, "filterDxccFunction", - g_filterDxcc, + GT.filterDxcc, true ); @@ -8221,11 +8222,11 @@ function showWorkedBox(sortIndex, nextPage, redraw) "qslFilterDiv", newSelect, "filterQSLFunction", - g_filterQSL, + GT.filterQSL, true ); - statsFocus(g_lastSearchSelection); + statsFocus(GT.lastSearchSelection); setStatsDivHeight("workedListDiv", getStatsWindowHeight() - 6 + "px"); } @@ -8242,54 +8243,54 @@ function showWorkedBox(sortIndex, nextPage, redraw) function statsValidateCallByElement(elementString) { if ( - g_statsWindowHandle != null && - typeof g_statsWindowHandle.window.validateCallByElement !== "undefined" + GT.statsWindowHandle != null && + typeof GT.statsWindowHandle.window.validateCallByElement !== "undefined" ) { - g_statsWindowHandle.window.validateCallByElement(elementString); + GT.statsWindowHandle.window.validateCallByElement(elementString); } } function statsFocus(selection) { if ( - g_statsWindowHandle != null && - typeof g_statsWindowHandle.window.statsFocus !== "undefined" + GT.statsWindowHandle != null && + typeof GT.statsWindowHandle.window.statsFocus !== "undefined" ) { - g_statsWindowHandle.window.statsFocus(selection); + GT.statsWindowHandle.window.statsFocus(selection); } } function lookupValidateCallByElement(elementString) { if ( - g_lookupWindowHandle != null && g_lookupWindowInitialized && - typeof g_lookupWindowHandle.window.validateCallByElement !== "undefined" + GT.lookupWindowHandle != null && GT.lookupWindowInitialized && + typeof GT.lookupWindowHandle.window.validateCallByElement !== "undefined" ) { - g_lookupWindowHandle.window.validateCallByElement(elementString); + GT.lookupWindowHandle.window.validateCallByElement(elementString); } } function lookupFocus(selection) { if ( - g_lookupWindowHandle != null && g_lookupWindowInitialized && - typeof g_lookupWindowHandle.window.statsFocus !== "undefined" + GT.lookupWindowHandle != null && GT.lookupWindowInitialized && + typeof GT.lookupWindowHandle.window.statsFocus !== "undefined" ) { - g_lookupWindowHandle.window.statsFocus(selection); + GT.lookupWindowHandle.window.statsFocus(selection); } } function statsAppendChild(elementString, object, onInputString, defaultValue) { if ( - g_statsWindowHandle != null && - typeof g_statsWindowHandle.window.appendToChild !== "undefined" + GT.statsWindowHandle != null && + typeof GT.statsWindowHandle.window.appendToChild !== "undefined" ) { - g_statsWindowHandle.window.appendToChild( + GT.statsWindowHandle.window.appendToChild( elementString, object, onInputString, @@ -8306,42 +8307,42 @@ function showDXCCsBox() var List = {}; var ListConfirmed = {}; var ListNotWorked = {}; - for (var key in g_dxccInfo) + for (var key in GT.dxccInfo) { - if (key != -1 && Number(g_dxccInfo[key].dxcc) > 0) + if (key != -1 && Number(GT.dxccInfo[key].dxcc) > 0) { - if (g_dxccInfo[key].worked == true) + if (GT.dxccInfo[key].worked == true) { var item = {}; - item.dxcc = g_dxccInfo[key].dxcc; + item.dxcc = GT.dxccInfo[key].dxcc; - item.flag = g_dxccInfo[key].flag; - item.confirmed = g_dxccInfo[key].confirmed; - List[g_dxccInfo[key].name] = item; + item.flag = GT.dxccInfo[key].flag; + item.confirmed = GT.dxccInfo[key].confirmed; + List[GT.dxccInfo[key].name] = item; worked++; } - if (g_dxccInfo[key].confirmed == true) + if (GT.dxccInfo[key].confirmed == true) { var item = {}; - item.dxcc = g_dxccInfo[key].dxcc; + item.dxcc = GT.dxccInfo[key].dxcc; - item.flag = g_dxccInfo[key].flag; - item.confirmed = g_dxccInfo[key].confirmed; - ListConfirmed[g_dxccInfo[key].name] = item; + item.flag = GT.dxccInfo[key].flag; + item.confirmed = GT.dxccInfo[key].confirmed; + ListConfirmed[GT.dxccInfo[key].name] = item; confirmed++; } if ( - g_dxccInfo[key].worked == false && - g_dxccInfo[key].confirmed == false && - g_dxccInfo[key].pp != "" && - g_dxccInfo[key].geo != "deleted" + GT.dxccInfo[key].worked == false && + GT.dxccInfo[key].confirmed == false && + GT.dxccInfo[key].pp != "" && + GT.dxccInfo[key].geo != "deleted" ) { var item = {}; - item.dxcc = g_dxccInfo[key].dxcc; - item.flag = g_dxccInfo[key].flag; - item.confirmed = g_dxccInfo[key].confirmed; - ListNotWorked[g_dxccInfo[key].name] = item; + item.dxcc = GT.dxccInfo[key].dxcc; + item.flag = GT.dxccInfo[key].flag; + item.confirmed = GT.dxccInfo[key].confirmed; + ListNotWorked[GT.dxccInfo[key].name] = item; needed++; } } @@ -8436,15 +8437,15 @@ function showDXCCsBox() Object.keys(List).forEach(function (key, i) { - var band = g_appSettings.gtBandFilter == "auto" ? myBand : g_appSettings.gtBandFilter.length == 0 ? "" : g_appSettings.gtBandFilter; + var band = GT.appSettings.gtBandFilter == "auto" ? myBand : GT.appSettings.gtBandFilter.length == 0 ? "" : GT.appSettings.gtBandFilter; var unconfirmedCallsKey = new UnconfirmedCallsKey(List[key].dxcc, band); - if (g_unconfirmedCalls.has(unconfirmedCallsKey.key) && g_unconfirmedCalls.get(unconfirmedCallsKey.key) != unconfirmedCallsSentinel) + if (GT.unconfirmedCalls.has(unconfirmedCallsKey.key) && GT.unconfirmedCalls.get(unconfirmedCallsKey.key) != GT.unconfirmedCallsSentinel) { var onMousedown = function (e) { if (e.which === 1) { - if (g_popupWindowHandle == null) + if (GT.popupWindowHandle == null) { popupNewWindows(); var gui = require("nw.gui"); @@ -8456,15 +8457,15 @@ function showDXCCsBox() }, function (new_win) { - g_popupWindowHandle = new_win; + GT.popupWindowHandle = new_win; new_win.on("loaded", function () { - g_popupWindowHandle.show(); - renderTooltipWindowLogbook(g_unconfirmedCalls.get(unconfirmedCallsKey.key)); + GT.popupWindowHandle.show(); + renderTooltipWindowLogbook(GT.unconfirmedCalls.get(unconfirmedCallsKey.key)); }); new_win.on("close", function () { - g_popupWindowHandle.hide(); + GT.popupWindowHandle.hide(); }); } ); @@ -8472,11 +8473,11 @@ function showDXCCsBox() } else { - renderTooltipWindowLogbook(g_unconfirmedCalls.get(unconfirmedCallsKey.key)); + renderTooltipWindowLogbook(GT.unconfirmedCalls.get(unconfirmedCallsKey.key)); } } }; - var unconfirmedTd = g_statsWindowHandle.window.document.getElementById("unconfirmed" + List[key].dxcc + "Id"); + var unconfirmedTd = GT.statsWindowHandle.window.document.getElementById("unconfirmed" + List[key].dxcc + "Id"); if (unconfirmedTd != null) { unconfirmedTd.addEventListener("mousedown", onMousedown); } } }); @@ -8488,7 +8489,7 @@ function showCQzoneBox() worker += "
Worked CQ Zones
"; - worker += displayItemList(g_cqZones, "#FFFFFF"); + worker += displayItemList(GT.cqZones, "#FFFFFF"); worker += "
"; setStatsDiv("cqzoneListDiv", worker); @@ -8500,7 +8501,7 @@ function showITUzoneBox() worker += "
Worked ITU Zones
"; - worker += displayItemList(g_ituZones, "#FFFFFF"); + worker += displayItemList(GT.ituZones, "#FFFFFF"); worker += "
"; setStatsDiv("ituzoneListDiv", worker); @@ -8512,12 +8513,12 @@ function showWASWACzoneBox() worker += "
Worked All Continents
"; - worker += displayItemList(g_wacZones, "#90EE90"); + worker += displayItemList(GT.wacZones, "#90EE90"); worker += "
"; worker += "
Worked All States
"; - worker += displayItemList(g_wasZones, "#00DDDD"); + worker += displayItemList(GT.wasZones, "#00DDDD"); worker += "
"; setStatsDiv("waswacListDiv", worker); @@ -8593,8 +8594,8 @@ function displayItemList(table, color) function showWPXBox() { var worker = getCurrentBandModeHTML(); - var band = g_appSettings.gtBandFilter == "auto" ? myBand : g_appSettings.gtBandFilter.length == 0 ? "" : g_appSettings.gtBandFilter; - var mode = g_appSettings.gtModeFilter == "auto" ? myMode : g_appSettings.gtModeFilter.length == 0 ? "" : g_appSettings.gtModeFilter; + var band = GT.appSettings.gtBandFilter == "auto" ? myBand : GT.appSettings.gtBandFilter.length == 0 ? "" : GT.appSettings.gtBandFilter; + var mode = GT.appSettings.gtModeFilter == "auto" ? myMode : GT.appSettings.gtModeFilter.length == 0 ? "" : GT.appSettings.gtModeFilter; if (mode == "Digital") { mode = "dg"; } if (mode == "Phone") { mode = "ph"; } @@ -8605,17 +8606,17 @@ function showWPXBox() var List = {}; var ListConfirmed = {}; - for (var key in g_tracker.worked.px) + for (var key in GT.tracker.worked.px) { - if (typeof g_tracker.worked.px[key] == "string" && key + modifier in g_tracker.worked.px) + if (typeof GT.tracker.worked.px[key] == "string" && key + modifier in GT.tracker.worked.px) { List[key] = key; } } - for (var key in g_tracker.confirmed.px) + for (var key in GT.tracker.confirmed.px) { - if (typeof g_tracker.confirmed.px[key] == "string" && key + modifier in g_tracker.confirmed.px) + if (typeof GT.tracker.confirmed.px[key] == "string" && key + modifier in GT.tracker.confirmed.px) { ListConfirmed[key] = key; } @@ -8640,9 +8641,9 @@ function showWPXBox() { worker += ""; }); @@ -8668,7 +8669,7 @@ function showWPXBox() ""; }); @@ -8695,7 +8696,7 @@ function showSettingsBox() { updateRunningProcesses(); helpDiv.style.display = "none"; - g_helpShow = false; + GT.helpShow = false; rootSettingsDiv.style.display = "inline-block"; } } @@ -8704,13 +8705,13 @@ function toggleBaWindow(event) { event.preventDefault(); - if (g_baWindowHandle == null) + if (GT.baWindowHandle == null) { openBaWindow(true); } else { - if (g_baWindowHandle.window.g_isShowing == true) + if (GT.baWindowHandle.window.isShowing == true) { openBaWindow(false); } @@ -8723,7 +8724,7 @@ function toggleBaWindow(event) function openBaWindow(show = true) { - if (g_baWindowHandle == null) + if (GT.baWindowHandle == null) { popupNewWindows(); var gui = require("nw.gui"); @@ -8738,16 +8739,16 @@ function openBaWindow(show = true) }, function (new_win) { - g_baWindowHandle = new_win; + GT.baWindowHandle = new_win; new_win.on("loaded", function () { - g_baWindowHandle.setMinimumSize(198, 52); + GT.baWindowHandle.setMinimumSize(198, 52); }); new_win.on("close", function () { - g_baWindowHandle.window.g_isShowing = false; - g_baWindowHandle.window.saveScreenSettings(); - g_baWindowHandle.hide(); + GT.baWindowHandle.window.isShowing = false; + GT.baWindowHandle.window.saveScreenSettings(); + GT.baWindowHandle.hide(); }); } ); @@ -8759,15 +8760,15 @@ function openBaWindow(show = true) { if (show == true) { - g_baWindowHandle.show(); - g_baWindowHandle.window.g_isShowing = true; - g_baWindowHandle.window.saveScreenSettings(); + GT.baWindowHandle.show(); + GT.baWindowHandle.window.isShowing = true; + GT.baWindowHandle.window.saveScreenSettings(); } else { - g_baWindowHandle.window.g_isShowing = false; - g_baWindowHandle.window.saveScreenSettings(); - g_baWindowHandle.hide(); + GT.baWindowHandle.window.isShowing = false; + GT.baWindowHandle.window.saveScreenSettings(); + GT.baWindowHandle.hide(); } } catch (e) @@ -8779,7 +8780,7 @@ function openBaWindow(show = true) function openLookupWindow(show = false) { - if (g_lookupWindowHandle == null) + if (GT.lookupWindowHandle == null) { popupNewWindows(); var gui = require("nw.gui"); @@ -8792,17 +8793,17 @@ function openLookupWindow(show = false) }, function (new_win) { - g_lookupWindowHandle = new_win; + GT.lookupWindowHandle = new_win; new_win.on("loaded", function () { - g_lookupWindowHandle.setMinimumSize(680, 200); - g_lookupWindowHandle.setResizable(true); + GT.lookupWindowHandle.setMinimumSize(680, 200); + GT.lookupWindowHandle.setResizable(true); }); new_win.on("close", function () { - g_lookupWindowHandle.window.g_isShowing = false; - g_lookupWindowHandle.window.saveScreenSettings(); - g_lookupWindowHandle.hide(); + GT.lookupWindowHandle.window.isShowing = false; + GT.lookupWindowHandle.window.saveScreenSettings(); + GT.lookupWindowHandle.hide(); }); } ); @@ -8814,15 +8815,15 @@ function openLookupWindow(show = false) { if (show) { - g_lookupWindowHandle.show(); - g_lookupWindowHandle.window.g_isShowing = true; - g_lookupWindowHandle.window.saveScreenSettings(); + GT.lookupWindowHandle.show(); + GT.lookupWindowHandle.window.isShowing = true; + GT.lookupWindowHandle.window.saveScreenSettings(); } else { - g_lookupWindowHandle.hide(); - g_lookupWindowHandle.window.g_isShowing = false; - g_lookupWindowHandle.window.saveScreenSettings(); + GT.lookupWindowHandle.hide(); + GT.lookupWindowHandle.window.isShowing = false; + GT.lookupWindowHandle.window.saveScreenSettings(); } } catch (e) @@ -8836,12 +8837,12 @@ function openInfoTab(evt, tabName, callFunc, callObj) { openStatsWindow(); - if (g_statsWindowHandle != null) + if (GT.statsWindowHandle != null) { // Declare all variables var i, infoTabcontent, infoTablinks; // Get all elements with class="infoTabcontent" and hide them - infoTabcontent = g_statsWindowHandle.window.document.getElementsByClassName( + infoTabcontent = GT.statsWindowHandle.window.document.getElementsByClassName( "infoTabcontent" ); for (i = 0; i < infoTabcontent.length; i++) @@ -8849,7 +8850,7 @@ function openInfoTab(evt, tabName, callFunc, callObj) infoTabcontent[i].style.display = "none"; } // Get all elements with class="infoTablinks" and remove the class "active" - infoTablinks = g_statsWindowHandle.window.document.getElementsByClassName( + infoTablinks = GT.statsWindowHandle.window.document.getElementsByClassName( "infoTablinks" ); for (i = 0; i < infoTablinks.length; i++) @@ -8861,12 +8862,12 @@ function openInfoTab(evt, tabName, callFunc, callObj) } // Show the current tab, and add an "active" class to the button that opened the tab - g_statsWindowHandle.window.document.getElementById(tabName).style.display = + GT.statsWindowHandle.window.document.getElementById(tabName).style.display = "block"; if (evt) { - evt = g_statsWindowHandle.window.document.getElementById(evt); + evt = GT.statsWindowHandle.window.document.getElementById(evt); } if (evt) { @@ -8910,16 +8911,16 @@ function openSettingsTab(evt, tabName) function setGridMode(mode) { - g_appSettings.sixWideMode = mode; - modeImg.src = g_maidenheadModeImageArray[g_appSettings.sixWideMode]; + GT.appSettings.sixWideMode = mode; + modeImg.src = GT.maidenheadModeImageArray[GT.appSettings.sixWideMode]; clearTempGrids(); redrawGrids(); } function toggleGridMode() { - g_appSettings.sixWideMode ^= 1; - modeImg.src = g_maidenheadModeImageArray[g_appSettings.sixWideMode]; + GT.appSettings.sixWideMode ^= 1; + modeImg.src = GT.maidenheadModeImageArray[GT.appSettings.sixWideMode]; clearTempGrids(); redrawGrids(); } @@ -8978,11 +8979,11 @@ function newModeType() return modeType; } -var g_statBoxTimer = null; +GT.statBoxTimer = null; function showStatBox(resize) { - var count = Object.keys(g_QSOhash).length; + var count = Object.keys(GT.QSOhash).length; if (typeof resize != "undefined" && resize) { @@ -8990,7 +8991,7 @@ function showStatBox(resize) return; } - if (g_statBoxTimer) nodeTimers.clearTimeout(g_statBoxTimer); + if (GT.statBoxTimer) nodeTimers.clearTimeout(GT.statBoxTimer); if (count > 0) { @@ -8999,7 +9000,7 @@ function showStatBox(resize) " 
...Parsing Log Entries...
 " ); setStatsDivHeight("statViewDiv", "auto"); - g_statBoxTimer = nodeTimers.setTimeout(renderStatsBox, 250); + GT.statBoxTimer = nodeTimers.setTimeout(renderStatsBox, 250); } else { @@ -9013,10 +9014,10 @@ function showStatBox(resize) function getTypeFromMode(mode) { - if (mode in g_modes) + if (mode in GT.modes) { - if (g_modes[mode] == true) return "Digital"; - else if (g_modes_phone[mode] == true) return "Phone"; + if (GT.modes[mode] == true) return "Digital"; + else if (GT.modes_phone[mode] == true) return "Phone"; else if (mode == "CW") return "CW"; } return "Other"; @@ -9090,21 +9091,21 @@ function renderStatsBox() scoreSection = "QSO"; - for (var i in g_QSOhash) + for (var i in GT.QSOhash) { - var finalGrid = g_QSOhash[i].grid; - var didConfirm = g_QSOhash[i].confirmed; - var band = g_QSOhash[i].band; - var mode = g_QSOhash[i].mode; - var state = g_QSOhash[i].state; - var cont = g_QSOhash[i].cont; - var finalDxcc = g_QSOhash[i].dxcc; - var cnty = g_QSOhash[i].cnty; - var ituz = g_QSOhash[i].ituz; - var cqz = g_QSOhash[i].cqz; - var wpx = g_QSOhash[i].px; - var call = g_QSOhash[i].DXcall; - var who = g_QSOhash[i].DEcall; + var finalGrid = GT.QSOhash[i].grid; + var didConfirm = GT.QSOhash[i].confirmed; + var band = GT.QSOhash[i].band; + var mode = GT.QSOhash[i].mode; + var state = GT.QSOhash[i].state; + var cont = GT.QSOhash[i].cont; + var finalDxcc = GT.QSOhash[i].dxcc; + var cnty = GT.QSOhash[i].cnty; + var ituz = GT.QSOhash[i].ituz; + var cqz = GT.QSOhash[i].cqz; + var wpx = GT.QSOhash[i].px; + var call = GT.QSOhash[i].DXcall; + var who = GT.QSOhash[i].DEcall; var type = getTypeFromMode(mode); if (!(who in callData)) callData[who] = newStatObject(); @@ -9113,18 +9114,18 @@ function renderStatsBox() details.callsigns[call] = ~~details.callsigns[call] + 1; - if (g_QSOhash[i].time < details.oldest) { details.oldest = g_QSOhash[i].time; } - if (g_QSOhash[i].time > details.newest) { details.newest = g_QSOhash[i].time; } + if (GT.QSOhash[i].time < details.oldest) { details.oldest = GT.QSOhash[i].time; } + if (GT.QSOhash[i].time > details.newest) { details.newest = GT.QSOhash[i].time; } workObject(modet.Mixed, true, band, mode, type, didConfirm); - if (mode in g_modes) + if (mode in GT.modes) { - if (g_modes[mode] == true) + if (GT.modes[mode] == true) { workObject(modet.Digital, true, band, mode, type, didConfirm); } - else if (g_modes_phone[mode] == true) + else if (GT.modes_phone[mode] == true) { workObject(modet.Phone, true, band, mode, type, didConfirm); } @@ -9140,11 +9141,11 @@ function renderStatsBox() { if (state.substr(0, 2) != "US") state = "US-" + state; - if (state in g_StateData) + if (state in GT.StateData) { - var name = g_StateData[state].name; + var name = GT.StateData[state].name; - if (name in g_wasZones) + if (name in GT.wasZones) { if (!(name in wasZones)) wasZones[name] = newStatObject(); @@ -9162,7 +9163,7 @@ function renderStatsBox() if (cnty != null) { - if (cnty in g_cntyToCounty) + if (cnty in GT.cntyToCounty) { if (!(cnty in countyData)) countyData[cnty] = newStatObject(); @@ -9171,10 +9172,10 @@ function renderStatsBox() } if (cont != null) { - if (cont in g_shapeData) + if (cont in GT.shapeData) { - var name = g_shapeData[cont].properties.name; - if (name in g_wacZones) + var name = GT.shapeData[cont].properties.name; + if (name in GT.wacZones) { if (!(name in wacZones)) wacZones[name] = newStatObject(); @@ -9186,7 +9187,7 @@ function renderStatsBox() if (finalGrid.length > 0) { LL = squareToCenter(finalGrid); - unit = parseInt(MyCircle.distance(g_myLat, g_myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)); + unit = parseInt(MyCircle.distance(GT.myLat, GT.myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)); if (unit > long_distance.worked_unit) { @@ -9295,10 +9296,10 @@ function renderStatsBox() if (finalDxcc > 0) { - if (!(g_dxccToAltName[finalDxcc] in dxccInfo)) { dxccInfo[g_dxccToAltName[finalDxcc]] = newStatObject(); } + if (!(GT.dxccToAltName[finalDxcc] in dxccInfo)) { dxccInfo[GT.dxccToAltName[finalDxcc]] = newStatObject(); } workObject( - dxccInfo[g_dxccToAltName[finalDxcc]], + dxccInfo[GT.dxccToAltName[finalDxcc]], false, band, mode, @@ -9309,7 +9310,7 @@ function renderStatsBox() if (cqz && cqz.length > 0) { - var name = g_cqZones[cqz].name; + var name = GT.cqZones[cqz].name; if (!(name in cqZones)) cqZones[name] = newStatObject(); workObject(cqZones[name], false, band, mode, type, didConfirm); @@ -9525,11 +9526,11 @@ function renderStatsBox() distanceUnit.value.toLowerCase(); worker += " " + - g_QSOhash[long_distance.worked_hash].DEcall + + GT.QSOhash[long_distance.worked_hash].DEcall + ""; worker += " " + - g_QSOhash[long_distance.worked_hash].grid + + GT.QSOhash[long_distance.worked_hash].grid + ""; if (long_distance.confirmed_hash && long_distance.confirmed_unit > 0) @@ -9541,11 +9542,11 @@ function renderStatsBox() distanceUnit.value.toLowerCase(); worker += " " + - g_QSOhash[long_distance.confirmed_hash].DEcall + + GT.QSOhash[long_distance.confirmed_hash].DEcall + ""; worker += " " + - g_QSOhash[long_distance.confirmed_hash].grid + + GT.QSOhash[long_distance.confirmed_hash].grid + ""; } else worker += ""; @@ -9560,11 +9561,11 @@ function renderStatsBox() distanceUnit.value.toLowerCase(); worker += " " + - g_QSOhash[short_distance.worked_hash].DEcall + + GT.QSOhash[short_distance.worked_hash].DEcall + ""; worker += " " + - g_QSOhash[short_distance.worked_hash].grid + + GT.QSOhash[short_distance.worked_hash].grid + ""; if (short_distance.confirmed_hash && short_distance.confirmed_unit > 0) @@ -9576,11 +9577,11 @@ function renderStatsBox() distanceUnit.value.toLowerCase(); worker += " " + - g_QSOhash[short_distance.confirmed_hash].DEcall + + GT.QSOhash[short_distance.confirmed_hash].DEcall + ""; worker += " " + - g_QSOhash[short_distance.confirmed_hash].grid + + GT.QSOhash[short_distance.confirmed_hash].grid + ""; } else worker += ""; @@ -9636,8 +9637,8 @@ function renderStatsBox() function hashNameSort(a, b) { - if (g_QSOhash[a].DEcall > g_QSOhash[b].DEcall) return 1; - if (g_QSOhash[b].DEcall > g_QSOhash[a].DEcall) return -1; + if (GT.QSOhash[a].DEcall > GT.QSOhash[b].DEcall) return 1; + if (GT.QSOhash[b].DEcall > GT.QSOhash[a].DEcall) return -1; return 0; } @@ -9656,8 +9657,8 @@ function createDistanceTable(obj, name) var keys = Object.keys(obj.band).sort(numberSort); for (var key in keys) { - var grid = g_QSOhash[obj.band[keys[key]].worked_hash].grid; - var call = g_QSOhash[obj.band[keys[key]].worked_hash].DEcall; + var grid = GT.QSOhash[obj.band[keys[key]].worked_hash].grid; + var call = GT.QSOhash[obj.band[keys[key]].worked_hash].DEcall; worker += ""; worker += ""; worker += ""; @@ -14696,26 +14697,26 @@ function displayLookupObject(lookup, gridPass, fromCache = false) worker += ""; worker += ""; - g_lastLookupAddress = ""; + GT.lastLookupAddress = ""; if (getLookProp(lookup, "addrAttn").length > 0) { worker += ""; worker += ""; worker += ""; } worker += ""; worker += ""; worker += ""; worker += ""; worker += ""; worker += ""; worker += ""; @@ -14724,7 +14725,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false) getLookProp(lookup, "addr2"), joinSpaceIf(getLookProp(lookup, "state"), getLookProp(lookup, "zip")) ); - g_lastLookupAddress += + GT.lastLookupAddress += joinCommaIf( getLookProp(lookup, "addr2"), joinSpaceIf(getLookProp(lookup, "state"), getLookProp(lookup, "zip")) @@ -14735,7 +14736,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false) worker += ""; worker += ""; @@ -14750,7 +14751,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false) "\");'>" + email + ""; - g_lastLookupAddress += email + "\n"; + GT.lastLookupAddress += email + "\n"; } worker += ""; @@ -14818,7 +14819,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false) // worker += makeRow("DXCC", lookup, "dxcc"); worker += ""; worker += makeRow("CQ zone", lookup, "cqzone"); worker += makeRow("ITU zone", lookup, "ituzone"); @@ -14835,13 +14836,13 @@ function displayLookupObject(lookup, gridPass, fromCache = false) worker += ""; - var bearing = parseInt(MyCircle.bearing(g_myLat, g_myLon, Number(lookup.lat), Number(lookup.lon))); + var bearing = parseInt(MyCircle.bearing(GT.myLat, GT.myLon, Number(lookup.lat), Number(lookup.lon))); worker += ""; } worker += makeRow("Grid", lookup, "grid", true); @@ -14864,20 +14865,20 @@ function displayLookupObject(lookup, gridPass, fromCache = false) worker += makeRow("Prefix", lookup, "prefix"); worker += lookup.source; - if (g_callsignLookups.lotwUseEnable == true && thisCall in g_lotwCallsigns) + if (GT.callsignLookups.lotwUseEnable == true && thisCall in GT.lotwCallsigns) { lookup.ulotw = "✔ (" + - userDayString(g_lotwCallsigns[thisCall] * 86400 * 1000) + + userDayString(GT.lotwCallsigns[thisCall] * 86400 * 1000) + ")"; worker += makeRow("LoTW Member", lookup, "ulotw"); } - if (g_callsignLookups.eqslUseEnable == true && thisCall in g_eqslCallsigns) + if (GT.callsignLookups.eqslUseEnable == true && thisCall in GT.eqslCallsigns) { lookup.ueqsl = "✔"; worker += makeRow("eQSL Member", lookup, "ueqsl"); } - if (g_callsignLookups.oqrsUseEnable == true && thisCall in g_oqrsCallsigns) + if (GT.callsignLookups.oqrsUseEnable == true && thisCall in GT.oqrsCallsigns) { lookup.uoqrs = "✔"; worker += makeRow("ClubLog OQRS", lookup, "uoqrs"); @@ -14919,9 +14920,9 @@ function displayLookupObject(lookup, gridPass, fromCache = false) function clearLookup() { - if (g_lookupWindowHandle && g_lookupWindowInitialized) + if (GT.lookupWindowHandle && GT.lookupWindowInitialized) { - g_lookupWindowHandle.window.lookupCallsignInput.value = ""; + GT.lookupWindowHandle.window.lookupCallsignInput.value = ""; lookupValidateCallByElement("lookupCallsignInput"); setLookupDiv("lookupLocalDiv", ""); setLookupDiv("lookupInfoDiv", ""); @@ -15058,7 +15059,7 @@ function startLookup(call, grid) function searchLogForCallsign(call) { setLookupDiv("lookupLocalDiv", ""); - var list = Object.values(g_QSOhash) + var list = Object.values(GT.QSOhash) .filter(function (value) { return value.DEcall == call; @@ -15067,10 +15068,10 @@ function searchLogForCallsign(call) var worker = "" - if (call in g_acknowledgedCalls) + if (call in GT.acknowledgedCalls) { worker = `

GridTracker would like to acknowledge ${call}: ` + - ` ${g_acknowledgedCalls[call].message}

` + ` ${GT.acknowledgedCalls[call].message}` } if (list.length > 0) @@ -15091,10 +15092,10 @@ function searchLogForCallsign(call) } if (list[row].confirmed) { - conf[what] = g_pskColors[list[row].band]; + conf[what] = GT.pskColors[list[row].band]; if (what in work) delete work[what]; } - else if (!(what in conf)) work[what] = g_pskColors[list[row].band]; + else if (!(what in conf)) work[what] = GT.pskColors[list[row].band]; } worker += "
"; - if (g_searchWB.length > 0) + worker += "
"; + if (GT.searchWB.length > 0) { worker += ""; } worker += ""; - if (g_gridSearch.length > 0) + worker += ""; + if (GT.gridSearch.length > 0) { worker += ""; } @@ -8033,9 +8034,9 @@ function showWorkedBox(sortIndex, nextPage, redraw) worker += "DXCCFlagWhenLoTWeQSLOQRSLoTWeQSLOQRS
" + @@ -8063,41 +8064,41 @@ function showWorkedBox(sortIndex, nextPage, redraw) worker += "" + key.RSTrecv + "" + - g_dxccToAltName[key.dxcc] + + GT.dxccToAltName[key.dxcc] + " (" + - (key.dxcc in g_dxccInfo - ? g_dxccInfo[key.dxcc].pp + (key.dxcc in GT.dxccInfo + ? GT.dxccInfo[key.dxcc].pp : "?") + ")" + userTimeString(key.time * 1000) + "" + - (key.DEcall in g_lotwCallsigns ? "✔" : "") + + (key.DEcall in GT.lotwCallsigns ? "✔" : "") + "" + - (key.DEcall in g_eqslCallsigns ? "✔" : "") + + (key.DEcall in GT.eqslCallsigns ? "✔" : "") + "" + - (key.DEcall in g_oqrsCallsigns ? "✔" : "") + + (key.DEcall in GT.oqrsCallsigns ? "✔" : "") + "
" + - key.formatCallsign() + + formatCallsign(key) + "" + - g_QSOhash[g_tracker.worked.px[key]].DEcall.formatCallsign() + + formatCallsign(GT.QSOhash[GT.tracker.worked.px[key]].DEcall) + "
" + key.formatCallsign() + "" + - g_QSOhash[g_tracker.confirmed.px[key]].DEcall.formatCallsign() + + formatCallsign(GT.QSOhash[GT.tracker.confirmed.px[key]].DEcall) + "
" + keys[key] + @@ -9683,8 +9684,8 @@ function createDistanceTable(obj, name) { if (keys[key] in obj.band && obj.band[keys[key]].confirmed_hash) { - var grid = g_QSOhash[obj.band[keys[key]].confirmed_hash].grid; - var call = g_QSOhash[obj.band[keys[key]].confirmed_hash].DEcall; + var grid = GT.QSOhash[obj.band[keys[key]].confirmed_hash].grid; + var call = GT.QSOhash[obj.band[keys[key]].confirmed_hash].DEcall; worker += "
" + keys[key] + @@ -9714,8 +9715,8 @@ function createDistanceTable(obj, name) keys = Object.keys(obj.mode).sort(); for (var key in keys) { - var grid = g_QSOhash[obj.mode[keys[key]].worked_hash].grid; - var call = g_QSOhash[obj.mode[keys[key]].worked_hash].DEcall; + var grid = GT.QSOhash[obj.mode[keys[key]].worked_hash].grid; + var call = GT.QSOhash[obj.mode[keys[key]].worked_hash].DEcall; worker += "
" + keys[key] + @@ -9741,8 +9742,8 @@ function createDistanceTable(obj, name) { if (keys[key] in obj.mode && obj.mode[keys[key]].confirmed_hash) { - var grid = g_QSOhash[obj.mode[keys[key]].confirmed_hash].grid; - var call = g_QSOhash[obj.mode[keys[key]].confirmed_hash].DEcall; + var grid = GT.QSOhash[obj.mode[keys[key]].confirmed_hash].grid; + var call = GT.QSOhash[obj.mode[keys[key]].confirmed_hash].DEcall; worker += "
" + keys[key] + @@ -9771,8 +9772,8 @@ function createDistanceTable(obj, name) keys = Object.keys(obj.type).sort(); for (var key in keys) { - var grid = g_QSOhash[obj.type[keys[key]].worked_hash].grid; - var call = g_QSOhash[obj.type[keys[key]].worked_hash].DEcall; + var grid = GT.QSOhash[obj.type[keys[key]].worked_hash].grid; + var call = GT.QSOhash[obj.type[keys[key]].worked_hash].DEcall; worker += "
" + keys[key] + @@ -9798,8 +9799,8 @@ function createDistanceTable(obj, name) { if (keys[key] in obj.type && obj.type[keys[key]].confirmed_hash) { - var grid = g_QSOhash[obj.type[keys[key]].confirmed_hash].grid; - var call = g_QSOhash[obj.type[keys[key]].confirmed_hash].DEcall; + var grid = GT.QSOhash[obj.type[keys[key]].confirmed_hash].grid; + var call = GT.QSOhash[obj.type[keys[key]].confirmed_hash].DEcall; worker += "
" + keys[key] + @@ -9995,33 +9996,33 @@ function createStatTable(title, infoObject, awardName) function validatePropMode(propMode) { - if (g_appSettings.gtPropFilter == "mixed") return true; + if (GT.appSettings.gtPropFilter == "mixed") return true; - return g_appSettings.gtPropFilter == propMode; + return GT.appSettings.gtPropFilter == propMode; } function validateMapBandAndMode(band, mode) { - if ((g_appSettings.gtBandFilter.length == 0 || (g_appSettings.gtBandFilter == "auto" ? myBand == band : g_appSettings.gtBandFilter == band))) + if ((GT.appSettings.gtBandFilter.length == 0 || (GT.appSettings.gtBandFilter == "auto" ? myBand == band : GT.appSettings.gtBandFilter == band))) { - if (g_appSettings.gtModeFilter.length == 0) return true; + if (GT.appSettings.gtModeFilter.length == 0) return true; - if (g_appSettings.gtModeFilter == "auto") return myMode == mode; + if (GT.appSettings.gtModeFilter == "auto") return myMode == mode; - if (g_appSettings.gtModeFilter == "Digital") + if (GT.appSettings.gtModeFilter == "Digital") { - if (mode in g_modes && g_modes[mode]) return true; + if (mode in GT.modes && GT.modes[mode]) return true; return false; } - if (g_appSettings.gtModeFilter == "Phone") + if (GT.appSettings.gtModeFilter == "Phone") { - if (mode in g_modes_phone && g_modes_phone[mode]) return true; + if (mode in GT.modes_phone && GT.modes_phone[mode]) return true; return false; } - if (g_appSettings.gtModeFilter == "CW" && mode == "CW") return true; + if (GT.appSettings.gtModeFilter == "CW" && mode == "CW") return true; - return g_appSettings.gtModeFilter == mode; + return GT.appSettings.gtModeFilter == mode; } else { @@ -10031,90 +10032,90 @@ function validateMapBandAndMode(band, mode) function redrawGrids() { - if (g_appSettings.gridViewMode == 2) removePaths(); + if (GT.appSettings.gridViewMode == 2) removePaths(); clearGrids(); clearQsoGrids(); - g_QSLcount = 0; - g_QSOcount = 0; + GT.QSLcount = 0; + GT.QSOcount = 0; - for (var i in g_QSOhash) + for (var i in GT.QSOhash) { - var finalGrid = g_QSOhash[i].grid; - var worked = g_QSOhash[i].worked; - var didConfirm = g_QSOhash[i].confirmed; - var band = g_QSOhash[i].band; - var mode = g_QSOhash[i].mode; - g_QSOcount++; - if (didConfirm) g_QSLcount++; + var finalGrid = GT.QSOhash[i].grid; + var worked = GT.QSOhash[i].worked; + var didConfirm = GT.QSOhash[i].confirmed; + var band = GT.QSOhash[i].band; + var mode = GT.QSOhash[i].mode; + GT.QSOcount++; + if (didConfirm) GT.QSLcount++; - if (validateMapBandAndMode(g_QSOhash[i].band, g_QSOhash[i].mode) && validatePropMode(g_QSOhash[i].propMode)) + if (validateMapBandAndMode(GT.QSOhash[i].band, GT.QSOhash[i].mode) && validatePropMode(GT.QSOhash[i].propMode)) { - if (g_appSettings.gridViewMode > 1) + if (GT.appSettings.gridViewMode > 1) { - g_QSOhash[i].rect = qthToQsoBox( - g_QSOhash[i].grid, + GT.QSOhash[i].rect = qthToQsoBox( + GT.QSOhash[i].grid, i, false, - g_QSOhash[i].DXcall, - g_QSOhash[i].worked, - g_QSOhash[i].confirmed, - g_QSOhash[i].band, - g_QSOhash[i].wspr + GT.QSOhash[i].DXcall, + GT.QSOhash[i].worked, + GT.QSOhash[i].confirmed, + GT.QSOhash[i].band, + GT.QSOhash[i].wspr ); - for (var vucc in g_QSOhash[i].vucc_grids) + for (var vucc in GT.QSOhash[i].vucc_grids) { qthToQsoBox( - g_QSOhash[i].vucc_grids[vucc], + GT.QSOhash[i].vucc_grids[vucc], i, false, - g_QSOhash[i].DXcall, - g_QSOhash[i].worked, - g_QSOhash[i].confirmed, - g_QSOhash[i].band, - g_QSOhash[i].wspr + GT.QSOhash[i].DXcall, + GT.QSOhash[i].worked, + GT.QSOhash[i].confirmed, + GT.QSOhash[i].band, + GT.QSOhash[i].wspr ); } } - var state = g_QSOhash[i].state; - var cont = g_QSOhash[i].cont; - var finalDxcc = g_QSOhash[i].dxcc; - var cnty = g_QSOhash[i].cnty; - var ituz = g_QSOhash[i].ituz; - var cqz = g_QSOhash[i].cqz; + var state = GT.QSOhash[i].state; + var cont = GT.QSOhash[i].cont; + var finalDxcc = GT.QSOhash[i].dxcc; + var cnty = GT.QSOhash[i].cnty; + var ituz = GT.QSOhash[i].ituz; + var cqz = GT.QSOhash[i].cqz; if (state != null && isKnownCallsignUS(finalDxcc)) { if (state.substr(0, 2) != "US") state = "US-" + state; - if (state in g_StateData) + if (state in GT.StateData) { - var name = g_StateData[state].name; + var name = GT.StateData[state].name; - if (name in g_wasZones) + if (name in GT.wasZones) { - if (g_wasZones[name].worked == false) + if (GT.wasZones[name].worked == false) { - g_wasZones[name].worked = worked; + GT.wasZones[name].worked = worked; } if (worked) { - g_wasZones[name].worked_bands[band] = - ~~g_wasZones[name].worked_bands[band] + 1; - g_wasZones[name].worked_modes[mode] = - ~~g_wasZones[name].worked_modes[mode] + 1; + GT.wasZones[name].worked_bands[band] = + ~~GT.wasZones[name].worked_bands[band] + 1; + GT.wasZones[name].worked_modes[mode] = + ~~GT.wasZones[name].worked_modes[mode] + 1; } - if (g_wasZones[name].confirmed == false) + if (GT.wasZones[name].confirmed == false) { - g_wasZones[name].confirmed = didConfirm; + GT.wasZones[name].confirmed = didConfirm; } if (didConfirm) { - g_wasZones[name].confirmed_bands[band] = - ~~g_wasZones[name].confirmed_bands[band] + 1; - g_wasZones[name].confirmed_modes[mode] = - ~~g_wasZones[name].confirmed_modes[mode] + 1; + GT.wasZones[name].confirmed_bands[band] = + ~~GT.wasZones[name].confirmed_bands[band] + 1; + GT.wasZones[name].confirmed_modes[mode] = + ~~GT.wasZones[name].confirmed_modes[mode] + 1; } } } @@ -10122,140 +10123,140 @@ function redrawGrids() if (cnty != null) { - if (cnty in g_cntyToCounty) + if (cnty in GT.cntyToCounty) { - if (g_countyData[cnty].worked == false) + if (GT.countyData[cnty].worked == false) { - g_countyData[cnty].worked = worked; + GT.countyData[cnty].worked = worked; } if (worked) { - g_countyData[cnty].worked_bands[band] = - ~~g_countyData[cnty].worked_bands[band] + 1; - g_countyData[cnty].worked_modes[mode] = - ~~g_countyData[cnty].worked_modes[mode] + 1; + GT.countyData[cnty].worked_bands[band] = + ~~GT.countyData[cnty].worked_bands[band] + 1; + GT.countyData[cnty].worked_modes[mode] = + ~~GT.countyData[cnty].worked_modes[mode] + 1; } - if (g_countyData[cnty].confirmed == false) + if (GT.countyData[cnty].confirmed == false) { - g_countyData[cnty].confirmed = didConfirm; + GT.countyData[cnty].confirmed = didConfirm; } if (didConfirm) { - g_countyData[cnty].confirmed_bands[band] = - ~~g_countyData[cnty].confirmed_bands[band] + 1; - g_countyData[cnty].confirmed_modes[mode] = - ~~g_countyData[cnty].confirmed_modes[mode] + 1; + GT.countyData[cnty].confirmed_bands[band] = + ~~GT.countyData[cnty].confirmed_bands[band] + 1; + GT.countyData[cnty].confirmed_modes[mode] = + ~~GT.countyData[cnty].confirmed_modes[mode] + 1; } } } if (cont != null) { - if (cont in g_shapeData) + if (cont in GT.shapeData) { - var name = g_shapeData[cont].properties.name; + var name = GT.shapeData[cont].properties.name; - if (name in g_wacZones) + if (name in GT.wacZones) { - if (g_wacZones[name].worked == false) + if (GT.wacZones[name].worked == false) { - g_wacZones[name].worked = worked; + GT.wacZones[name].worked = worked; } if (worked) { - g_wacZones[name].worked_bands[band] = - ~~g_wacZones[name].worked_bands[band] + 1; - g_wacZones[name].worked_modes[mode] = - ~~g_wacZones[name].worked_modes[mode] + 1; + GT.wacZones[name].worked_bands[band] = + ~~GT.wacZones[name].worked_bands[band] + 1; + GT.wacZones[name].worked_modes[mode] = + ~~GT.wacZones[name].worked_modes[mode] + 1; } - if (g_wacZones[name].confirmed == false) + if (GT.wacZones[name].confirmed == false) { - g_wacZones[name].confirmed = didConfirm; + GT.wacZones[name].confirmed = didConfirm; } if (didConfirm) { - g_wacZones[name].confirmed_bands[band] = - ~~g_wacZones[name].confirmed_bands[band] + 1; - g_wacZones[name].confirmed_modes[mode] = - ~~g_wacZones[name].confirmed_modes[mode] + 1; + GT.wacZones[name].confirmed_bands[band] = + ~~GT.wacZones[name].confirmed_bands[band] + 1; + GT.wacZones[name].confirmed_modes[mode] = + ~~GT.wacZones[name].confirmed_modes[mode] + 1; } } } } - if (g_dxccInfo[finalDxcc].worked == false) + if (GT.dxccInfo[finalDxcc].worked == false) { - g_dxccInfo[finalDxcc].worked = worked; + GT.dxccInfo[finalDxcc].worked = worked; } if (worked) { - g_dxccInfo[finalDxcc].worked_bands[band] = - ~~g_dxccInfo[finalDxcc].worked_bands[band] + 1; - g_dxccInfo[finalDxcc].worked_modes[mode] = - ~~g_dxccInfo[finalDxcc].worked_modes[mode] + 1; + GT.dxccInfo[finalDxcc].worked_bands[band] = + ~~GT.dxccInfo[finalDxcc].worked_bands[band] + 1; + GT.dxccInfo[finalDxcc].worked_modes[mode] = + ~~GT.dxccInfo[finalDxcc].worked_modes[mode] + 1; } - if (g_dxccInfo[finalDxcc].confirmed == false) + if (GT.dxccInfo[finalDxcc].confirmed == false) { - g_dxccInfo[finalDxcc].confirmed = didConfirm; + GT.dxccInfo[finalDxcc].confirmed = didConfirm; } if (didConfirm) { - g_dxccInfo[finalDxcc].confirmed_bands[band] = - ~~g_dxccInfo[finalDxcc].confirmed_bands[band] + + GT.dxccInfo[finalDxcc].confirmed_bands[band] = + ~~GT.dxccInfo[finalDxcc].confirmed_bands[band] + 1; - g_dxccInfo[finalDxcc].confirmed_modes[mode] = - ~~g_dxccInfo[finalDxcc].confirmed_modes[mode] + + GT.dxccInfo[finalDxcc].confirmed_modes[mode] = + ~~GT.dxccInfo[finalDxcc].confirmed_modes[mode] + 1; } if (cqz && cqz.length > 0) { - if (g_cqZones[cqz].worked == false) + if (GT.cqZones[cqz].worked == false) { - g_cqZones[cqz].worked = worked; + GT.cqZones[cqz].worked = worked; } if (worked) { - g_cqZones[cqz].worked_bands[band] = - ~~g_cqZones[cqz].worked_bands[band] + 1; - g_cqZones[cqz].worked_modes[mode] = - ~~g_cqZones[cqz].worked_modes[mode] + 1; + GT.cqZones[cqz].worked_bands[band] = + ~~GT.cqZones[cqz].worked_bands[band] + 1; + GT.cqZones[cqz].worked_modes[mode] = + ~~GT.cqZones[cqz].worked_modes[mode] + 1; } - if (g_cqZones[cqz].confirmed == false) + if (GT.cqZones[cqz].confirmed == false) { - g_cqZones[cqz].confirmed = didConfirm; + GT.cqZones[cqz].confirmed = didConfirm; } if (didConfirm) { - g_cqZones[cqz].confirmed_bands[band] = - ~~g_cqZones[cqz].confirmed_bands[band] + 1; - g_cqZones[cqz].confirmed_modes[mode] = - ~~g_cqZones[cqz].confirmed_modes[mode] + 1; + GT.cqZones[cqz].confirmed_bands[band] = + ~~GT.cqZones[cqz].confirmed_bands[band] + 1; + GT.cqZones[cqz].confirmed_modes[mode] = + ~~GT.cqZones[cqz].confirmed_modes[mode] + 1; } } if (ituz && ituz.length > 0) { - if (g_ituZones[ituz].worked == false) + if (GT.ituZones[ituz].worked == false) { - g_ituZones[ituz].worked = worked; + GT.ituZones[ituz].worked = worked; } if (worked) { - g_ituZones[ituz].worked_bands[band] = - ~~g_ituZones[ituz].worked_bands[band] + 1; - g_ituZones[ituz].worked_modes[mode] = - ~~g_ituZones[ituz].worked_modes[mode] + 1; + GT.ituZones[ituz].worked_bands[band] = + ~~GT.ituZones[ituz].worked_bands[band] + 1; + GT.ituZones[ituz].worked_modes[mode] = + ~~GT.ituZones[ituz].worked_modes[mode] + 1; } - if (g_ituZones[ituz].confirmed == false) + if (GT.ituZones[ituz].confirmed == false) { - g_ituZones[ituz].confirmed = didConfirm; + GT.ituZones[ituz].confirmed = didConfirm; } if (didConfirm) { - g_ituZones[ituz].confirmed_bands[band] = - ~~g_ituZones[ituz].confirmed_bands[band] + 1; - g_ituZones[ituz].confirmed_modes[mode] = - ~~g_ituZones[ituz].confirmed_modes[mode] + 1; + GT.ituZones[ituz].confirmed_bands[band] = + ~~GT.ituZones[ituz].confirmed_bands[band] + 1; + GT.ituZones[ituz].confirmed_modes[mode] = + ~~GT.ituZones[ituz].confirmed_modes[mode] + 1; } } @@ -10263,68 +10264,68 @@ function redrawGrids() { var gridCheck = finalGrid.substr(0, 4); - if (gridCheck in g_us48Data) + if (gridCheck in GT.us48Data) { - if (g_us48Data[gridCheck].worked == false) + if (GT.us48Data[gridCheck].worked == false) { - g_us48Data[gridCheck].worked = worked; + GT.us48Data[gridCheck].worked = worked; } if (worked) { - g_us48Data[gridCheck].worked_bands[band] = - ~~g_us48Data[gridCheck].worked_bands[band] + 1; - g_us48Data[gridCheck].worked_modes[mode] = - ~~g_us48Data[gridCheck].worked_modes[mode] + 1; + GT.us48Data[gridCheck].worked_bands[band] = + ~~GT.us48Data[gridCheck].worked_bands[band] + 1; + GT.us48Data[gridCheck].worked_modes[mode] = + ~~GT.us48Data[gridCheck].worked_modes[mode] + 1; } - if (g_us48Data[gridCheck].confirmed == false) + if (GT.us48Data[gridCheck].confirmed == false) { - g_us48Data[gridCheck].confirmed = didConfirm; + GT.us48Data[gridCheck].confirmed = didConfirm; } if (didConfirm) { - g_us48Data[gridCheck].confirmed_bands[band] = - ~~g_us48Data[gridCheck].confirmed_bands[band] + 1; - g_us48Data[gridCheck].confirmed_modes[mode] = - ~~g_us48Data[gridCheck].confirmed_modes[mode] + 1; + GT.us48Data[gridCheck].confirmed_bands[band] = + ~~GT.us48Data[gridCheck].confirmed_bands[band] + 1; + GT.us48Data[gridCheck].confirmed_modes[mode] = + ~~GT.us48Data[gridCheck].confirmed_modes[mode] + 1; } } } - for (var key in g_QSOhash[i].vucc_grids) + for (var key in GT.QSOhash[i].vucc_grids) { - var grid = g_QSOhash[i].vucc_grids[key].substr(0, 4); - if (grid in g_us48Data) + var grid = GT.QSOhash[i].vucc_grids[key].substr(0, 4); + if (grid in GT.us48Data) { - if (g_us48Data[grid].worked == false) + if (GT.us48Data[grid].worked == false) { - g_us48Data[grid].worked = worked; + GT.us48Data[grid].worked = worked; } if (worked) { - g_us48Data[grid].worked_bands[band] = - ~~g_us48Data[grid].worked_bands[band] + 1; - g_us48Data[grid].worked_modes[mode] = - ~~g_us48Data[grid].worked_modes[mode] + 1; + GT.us48Data[grid].worked_bands[band] = + ~~GT.us48Data[grid].worked_bands[band] + 1; + GT.us48Data[grid].worked_modes[mode] = + ~~GT.us48Data[grid].worked_modes[mode] + 1; } - if (g_us48Data[grid].confirmed == false) + if (GT.us48Data[grid].confirmed == false) { - g_us48Data[grid].confirmed = didConfirm; + GT.us48Data[grid].confirmed = didConfirm; } if (didConfirm) { - g_us48Data[grid].confirmed_bands[band] = - ~~g_us48Data[grid].confirmed_bands[band] + 1; - g_us48Data[grid].confirmed_modes[mode] = - ~~g_us48Data[grid].confirmed_modes[mode] + 1; + GT.us48Data[grid].confirmed_bands[band] = + ~~GT.us48Data[grid].confirmed_bands[band] + 1; + GT.us48Data[grid].confirmed_modes[mode] = + ~~GT.us48Data[grid].confirmed_modes[mode] + 1; } } } } } - for (var layer in g_viewInfo) + for (var layer in GT.viewInfo) { - var search = window[g_viewInfo[layer][0]]; + var search = window[GT.viewInfo[layer][0]]; var worked = (confirmed = 0); if (layer == 0) @@ -10334,8 +10335,8 @@ function redrawGrids() if (search[key].rectangle.worked) worked++; if (search[key].rectangle.confirmed) confirmed++; } - g_viewInfo[layer][2] = worked; - g_viewInfo[layer][3] = confirmed; + GT.viewInfo[layer][2] = worked; + GT.viewInfo[layer][3] = confirmed; } else if (layer == 5) { @@ -10347,8 +10348,8 @@ function redrawGrids() if (search[key].confirmed) confirmed++; } } - g_viewInfo[layer][2] = worked; - g_viewInfo[layer][3] = confirmed; + GT.viewInfo[layer][2] = worked; + GT.viewInfo[layer][3] = confirmed; } else { @@ -10357,25 +10358,25 @@ function redrawGrids() if (search[key].worked) worked++; if (search[key].confirmed) confirmed++; } - g_viewInfo[layer][2] = worked; - g_viewInfo[layer][3] = confirmed; + GT.viewInfo[layer][2] = worked; + GT.viewInfo[layer][3] = confirmed; } } - for (var i in g_liveCallsigns) + for (var i in GT.liveCallsigns) { - if (g_appSettings.gridViewMode != 2 && validateMapBandAndMode(g_liveCallsigns[i].band, g_liveCallsigns[i].mode)) + if (GT.appSettings.gridViewMode != 2 && validateMapBandAndMode(GT.liveCallsigns[i].band, GT.liveCallsigns[i].mode)) { - if (g_appSettings.gridViewMode == 1 || g_appSettings.gridViewMode == 3) + if (GT.appSettings.gridViewMode == 1 || GT.appSettings.gridViewMode == 3) { - g_liveCallsigns[i].rect = qthToBox( - g_liveCallsigns[i].grid, - g_liveCallsigns[i].DEcall, + GT.liveCallsigns[i].rect = qthToBox( + GT.liveCallsigns[i].grid, + GT.liveCallsigns[i].DEcall, false, false, - g_liveCallsigns[i].DXcall, - g_liveCallsigns[i].band, - g_liveCallsigns[i].wspr, + GT.liveCallsigns[i].DXcall, + GT.liveCallsigns[i].band, + GT.liveCallsigns[i].wspr, i ); } @@ -10384,15 +10385,15 @@ function redrawGrids() reloadInfo(false); setHomeGridsquare(); - setTrophyOverlay(g_currentOverlay); + setTrophyOverlay(GT.currentOverlay); updateCountStats(); } function toggleAlertMute() { - g_appSettings.alertMute ^= 1; - alertMuteImg.src = g_alertImageArray[g_appSettings.alertMute]; - if (g_appSettings.alertMute == 1) + GT.appSettings.alertMute ^= 1; + alertMuteImg.src = GT.alertImageArray[GT.appSettings.alertMute]; + if (GT.appSettings.alertMute == 1) { chrome.tts.stop(); } @@ -10400,26 +10401,26 @@ function toggleAlertMute() function togglePushPinMode() { - if (g_pushPinMode == false) g_pushPinMode = true; - else g_pushPinMode = false; - g_appSettings.pushPinMode = g_pushPinMode; - pinImg.src = g_pinImageArray[g_pushPinMode == false ? 0 : 1]; + if (GT.pushPinMode == false) GT.pushPinMode = true; + else GT.pushPinMode = false; + GT.appSettings.pushPinMode = GT.pushPinMode; + pinImg.src = GT.pinImageArray[GT.pushPinMode == false ? 0 : 1]; clearTempGrids(); redrawGrids(); } function stopAsking(checkbox) { - g_appSettings.stopAskingVersion = checkbox.checked; + GT.appSettings.stopAskingVersion = checkbox.checked; } function toggleGtShareEnable() { - if (g_appSettings.gtShareEnable == true) + if (GT.appSettings.gtShareEnable == true) { - g_appSettings.gtShareEnable = false; + GT.appSettings.gtShareEnable = false; } - else g_appSettings.gtShareEnable = true; + else GT.appSettings.gtShareEnable = true; setGtShareButtons(); goProcessRoster(); @@ -10427,44 +10428,44 @@ function toggleGtShareEnable() function setGtShareButtons() { - if (g_appSettings.gtShareEnable == true && g_mapSettings.offlineMode == false) + if (GT.appSettings.gtShareEnable == true && GT.mapSettings.offlineMode == false) { - if (g_appSettings.gtMsgEnable == true) { msgButton.style.display = "inline-block"; } + if (GT.appSettings.gtMsgEnable == true) { msgButton.style.display = "inline-block"; } else msgButton.style.display = "none"; gtFlagButton.style.display = "inline-block"; - if (g_appSettings.gtFlagImgSrc > 0) + if (GT.appSettings.gtFlagImgSrc > 0) { - g_layerVectors.gtflags.setVisible(true); + GT.layerVectors.gtflags.setVisible(true); } else { - g_layerVectors.gtflags.setVisible(false); + GT.layerVectors.gtflags.setVisible(false); } } else { - g_oamsBandActivityData = null; + GT.oamsBandActivityData = null; renderBandActivity(); msgButton.style.display = "none"; gtFlagButton.style.display = "none"; - g_layerVectors.gtflags.setVisible(false); + GT.layerVectors.gtflags.setVisible(false); clearGtFlags(); // Clear list - g_gtFlagPins = Object() - g_gtMessages = Object(); - g_gtUnread = Object(); - g_gtCallsigns = Object(); - g_gtSentAwayToCid = Object(); + GT.gtFlagPins = Object() + GT.gtMessages = Object(); + GT.gtUnread = Object(); + GT.gtCallsigns = Object(); + GT.gtSentAwayToCid = Object(); - if (g_chatWindowHandle != null) + if (GT.chatWindowHandle != null) { try { - g_chatWindowHandle.hide(); - g_chatWindowHandle.window.allCallDiv.innerHTML = ""; - g_chatWindowHandle.window.updateCount(); + GT.chatWindowHandle.hide(); + GT.chatWindowHandle.window.allCallDiv.innerHTML = ""; + GT.chatWindowHandle.window.updateCount(); } catch (e) { @@ -10474,12 +10475,12 @@ function setGtShareButtons() goProcessRoster(); } - gtShareFlagImg.src = g_gtShareFlagImageArray[g_appSettings.gtShareEnable == false ? 0 : 1]; + gtShareFlagImg.src = GT.gtShareFlagImageArray[GT.appSettings.gtShareEnable == false ? 0 : 1]; } function setMulticastIp() { - g_appSettings.wsjtIP = multicastIpInput.value; + GT.appSettings.wsjtIP = multicastIpInput.value; } function setMulticastEnable(checkbox) @@ -10489,19 +10490,19 @@ function setMulticastEnable(checkbox) multicastTD.style.display = "block"; if (ValidateMulticast(multicastIpInput)) { - g_appSettings.wsjtIP = multicastIpInput.value; + GT.appSettings.wsjtIP = multicastIpInput.value; } else { - g_appSettings.wsjtIP = ""; + GT.appSettings.wsjtIP = ""; } } else { multicastTD.style.display = "none"; - g_appSettings.wsjtIP = ""; + GT.appSettings.wsjtIP = ""; } - g_appSettings.multicast = checkbox.checked; + GT.appSettings.multicast = checkbox.checked; } function setUdpForwardEnable(checkbox) @@ -10517,35 +10518,35 @@ function setUdpForwardEnable(checkbox) ValidateIPaddress(udpForwardIpInput, null) ) { - g_appSettings.wsjtForwardUdpEnable = checkbox.checked; + GT.appSettings.wsjtForwardUdpEnable = checkbox.checked; return; } } checkbox.checked = false; - g_appSettings.wsjtForwardUdpEnable = checkbox.checked; + GT.appSettings.wsjtForwardUdpEnable = checkbox.checked; } function setGTspotEnable(checkbox) { - g_appSettings.gtSpotEnable = checkbox.checked; + GT.appSettings.gtSpotEnable = checkbox.checked; - if (g_appSettings.gtSpotEnable == false) + if (GT.appSettings.gtSpotEnable == false) { - g_spotCollector = {}; - g_spotDetailsCollector = {}; - g_decodeCollector = {}; + GT.spotCollector = {}; + GT.spotDetailsCollector = {}; + GT.decodeCollector = {}; } - g_gtLiveStatusUpdate = true; + GT.gtLiveStatusUpdate = true; } function setOamsBandActivity(checkbox) { - g_appSettings.oamsBandActivity = checkbox.checked; + GT.appSettings.oamsBandActivity = checkbox.checked; - if (g_appSettings.oamsBandActivity == false) + if (GT.appSettings.oamsBandActivity == false) { bandActivityNeighborDiv.style.display = "none"; - g_oamsBandActivityData = null; + GT.oamsBandActivityData = null; } else { @@ -10557,36 +10558,36 @@ function setOamsBandActivity(checkbox) function setOamsBandActivityNeighbors(checkbox) { - g_appSettings.oamsBandActivityNeighbors = checkbox.checked; + GT.appSettings.oamsBandActivityNeighbors = checkbox.checked; oamsBandActivityCheck(); } function setMsgEnable(checkbox) { - g_appSettings.gtMsgEnable = checkbox.checked; - if (g_appSettings.gtShareEnable == true) + GT.appSettings.gtMsgEnable = checkbox.checked; + if (GT.appSettings.gtShareEnable == true) { - if (g_appSettings.gtMsgEnable == true) { msgButton.style.display = "inline-block"; } + if (GT.appSettings.gtMsgEnable == true) { msgButton.style.display = "inline-block"; } else { msgButton.style.display = "none"; - if (g_chatWindowHandle != null) + if (GT.chatWindowHandle != null) { - g_chatWindowHandle.hide(); + GT.chatWindowHandle.hide(); } } } goProcessRoster(); - g_gtLiveStatusUpdate = true; + GT.gtLiveStatusUpdate = true; setMsgSettingsView(); } function newMessageSetting(whichSetting) { - if (whichSetting.id in g_msgSettings) + if (whichSetting.id in GT.msgSettings) { - g_msgSettings[whichSetting.id] = whichSetting.value; - localStorage.msgSettings = JSON.stringify(g_msgSettings); + GT.msgSettings[whichSetting.id] = whichSetting.value; + localStorage.msgSettings = JSON.stringify(GT.msgSettings); setMsgSettingsView(); } } @@ -10607,7 +10608,7 @@ function checkForNewVersion(showUptoDate = false) function downloadAcknowledgements() { - if (g_mapSettings.offlineMode == false) + if (GT.mapSettings.offlineMode == false) { getBuffer( "https://storage.googleapis.com/gt_app/acknowledgements.json", @@ -10621,7 +10622,7 @@ function downloadAcknowledgements() } } -var g_non_us_bands = [ +GT.non_us_bands = [ "630m", "160m", "80m", @@ -10638,7 +10639,7 @@ var g_non_us_bands = [ "2m" ]; -var g_us_bands = [ +GT.us_bands = [ "630m", "160m", "80m", @@ -10657,10 +10658,10 @@ var g_us_bands = [ function renderBandActivity() { var buffer = ""; - if (typeof g_bandActivity.lines[myMode] != "undefined" || g_oamsBandActivityData != null) + if (typeof GT.bandActivity.lines[myMode] != "undefined" || GT.oamsBandActivityData != null) { - var lines = (myMode in g_bandActivity.lines) ? g_bandActivity.lines[myMode] : []; - var bands = (g_myDXCC in g_callsignDatabaseUSplus) ? g_us_bands : g_non_us_bands; + var lines = (myMode in GT.bandActivity.lines) ? GT.bandActivity.lines[myMode] : []; + var bands = (GT.myDXCC in GT.callsignDatabaseUSplus) ? GT.us_bands : GT.non_us_bands; var bandData = {}; var maxValue = 0; @@ -10676,7 +10677,7 @@ function renderBandActivity() { // doesn't begins with # and has something var values = lines[x].trim().split(" "); - var band = Number(Number(values[0]) / 1000000).formatBand(); + var band = formatBand(Number(Number(values[0]) / 1000000)); if (band in bandData) { @@ -10692,16 +10693,16 @@ function renderBandActivity() } } - if (g_appSettings.gtShareEnable == true && g_appSettings.oamsBandActivity == true && g_oamsBandActivityData) + if (GT.appSettings.gtShareEnable == true && GT.appSettings.oamsBandActivity == true && GT.oamsBandActivityData) { - for (const grid in g_oamsBandActivityData) + for (const grid in GT.oamsBandActivityData) { - for (const band in g_oamsBandActivityData[grid]) + for (const band in GT.oamsBandActivityData[grid]) { if (band in bandData) { var place = bandData[band]; - var data = g_oamsBandActivityData[grid][band]; + var data = GT.oamsBandActivityData[grid][band]; place.oamsScore ??= 0; place.oamsDecodes += data.d; @@ -10735,7 +10736,7 @@ function renderBandActivity() let title; let blueBarValue; - if (g_appSettings.gtShareEnable == true && g_appSettings.oamsBandActivity == true) + if (GT.appSettings.gtShareEnable == true && GT.appSettings.oamsBandActivity == true) { title = "OAMS\n"; title += "\tScore: " + bandData[band].oamsScore + "\n\tDecodes: " + bandData[band].oamsDecodes + "\n\tTX-Spots: " + bandData[band].oamsTxSpots + "\n\tRX-Spots: " + bandData[band].oamsRxSpots + "\n\tTx: " + bandData[band].oamsTx + "\tRx: " + bandData[band].oamsRx; @@ -10760,9 +10761,9 @@ function renderBandActivity() buffer = "..no data yet.."; } graphDiv.innerHTML = buffer; - if (g_baWindowInitialized == true) + if (GT.baWindowInitialized == true) { - g_baWindowHandle.window.graphDiv.innerHTML = buffer; + GT.baWindowHandle.window.graphDiv.innerHTML = buffer; } } @@ -10772,9 +10773,9 @@ function pskBandActivityCallback(buffer, flag) if (result.indexOf("frequency score") > -1) { // looks good so far - g_bandActivity.lines[myMode] = result.split("\n"); - g_bandActivity.lastUpdate[myMode] = g_timeNow + 600; - localStorage.bandActivity = JSON.stringify(g_bandActivity); + GT.bandActivity.lines[myMode] = result.split("\n"); + GT.bandActivity.lastUpdate[myMode] = GT.timeNow + 600; + localStorage.bandActivity = JSON.stringify(GT.bandActivity); } renderBandActivity(); @@ -10791,13 +10792,13 @@ function pskBandActivityCallback(buffer, flag) */ function pskGetBandActivity() { - if (g_mapSettings.offlineMode == true) return; - if (typeof g_bandActivity.lastUpdate[myMode] == "undefined") + if (GT.mapSettings.offlineMode == true) return; + if (typeof GT.bandActivity.lastUpdate[myMode] == "undefined") { - g_bandActivity.lastUpdate[myMode] = 0; + GT.bandActivity.lastUpdate[myMode] = 0; } - if (myMode.length > 0 && myDEGrid.length > 0 && g_timeNow > g_bandActivity.lastUpdate[myMode]) + if (myMode.length > 0 && myDEGrid.length > 0 && GT.timeNow > GT.bandActivity.lastUpdate[myMode]) { getBuffer( "https://pskreporter.info/cgi-bin/psk-freq.pl?mode=" + myMode + "&grid=" + myDEGrid.substr(0, 4) + "&cb=" + timeNowSec(), @@ -10810,12 +10811,12 @@ function pskGetBandActivity() renderBandActivity(); - if (g_pskBandActivityTimerHandle != null) + if (GT.pskBandActivityTimerHandle != null) { - nodeTimers.clearInterval(g_pskBandActivityTimerHandle); + nodeTimers.clearInterval(GT.pskBandActivityTimerHandle); } - g_pskBandActivityTimerHandle = nodeTimers.setInterval(pskGetBandActivity, 601000); // every 20 minutes, 1 second + GT.pskBandActivityTimerHandle = nodeTimers.setInterval(pskGetBandActivity, 601000); // every 20 minutes, 1 second } function getIniFromApp(appName) @@ -10835,7 +10836,7 @@ function getIniFromApp(appName) var wsjtxCfgPath = ""; var data = String(nw.App.dataPath); var end = 0; - if (g_platform == "windows") + if (GT.platform == "windows") { end = data.indexOf("GridTracker\\User Data\\Default"); if (end > -1) @@ -10843,7 +10844,7 @@ function getIniFromApp(appName) wsjtxCfgPath = data.substr(0, end) + appName + "\\" + appName + ".ini"; } } - else if (g_platform == "mac") + else if (GT.platform == "mac") { wsjtxCfgPath = process.env.HOME + "/Library/Preferences/WSJT-X.ini"; } @@ -10893,7 +10894,7 @@ function getIniFromApp(appName) if (indexOfPort == 0) { var portSplit = fileArray[x].split("="); - result.MyBand = Number(portSplit[1] / 1000000).formatBand(); + result.MyBand = formatBand(Number(portSplit[1] / 1000000)); } indexOfPort = fileArray[x].indexOf("N1MMServerPort="); if (indexOfPort == 0) @@ -10922,12 +10923,12 @@ function checkRunningProcesses() { var child_process = require("child_process"); var list = - g_platform == "windows" + GT.platform == "windows" ? child_process.execFileSync("tasklist.exe") : child_process.execFileSync("ps", ["-aef"]); - g_wsjtxProcessRunning = list.indexOf("wsjtx") > -1; - g_jtdxProcessRunning = list.indexOf("jtdx") > -1; + GT.wsjtxProcessRunning = list.indexOf("wsjtx") > -1; + GT.jtdxProcessRunning = list.indexOf("jtdx") > -1; } function updateRunningProcesses() @@ -10938,29 +10939,29 @@ function updateRunningProcesses() } catch (e) { - g_wsjtxProcessRunning = false; - g_jtdxProcessRunning = false; + GT.wsjtxProcessRunning = false; + GT.jtdxProcessRunning = false; } runningAppsDiv.innerHTML = "WSJT-X "; - if (g_wsjtxProcessRunning == true) runningAppsDiv.innerHTML += " - up - "; + if (GT.wsjtxProcessRunning == true) runningAppsDiv.innerHTML += " - up - "; else runningAppsDiv.innerHTML += " - ? - "; - g_wsjtxIni = getIniFromApp("WSJT-X"); - if (g_wsjtxIni.port > -1) + GT.wsjtxIni = getIniFromApp("WSJT-X"); + if (GT.wsjtxIni.port > -1) { runningAppsDiv.innerHTML += - "(" + g_wsjtxIni.ip + " / " + g_wsjtxIni.port + ") "; + "(" + GT.wsjtxIni.ip + " / " + GT.wsjtxIni.port + ") "; } else runningAppsDiv.innerHTML += "(?) "; - if (g_platform != "mac") + if (GT.platform != "mac") { runningAppsDiv.innerHTML += " / JTDX "; - if (g_jtdxProcessRunning == true) runningAppsDiv.innerHTML += " - up - "; + if (GT.jtdxProcessRunning == true) runningAppsDiv.innerHTML += " - up - "; else runningAppsDiv.innerHTML += " - ? - "; - g_jtdxIni = getIniFromApp("JTDX"); - if (g_jtdxIni.port > -1) + GT.jtdxIni = getIniFromApp("JTDX"); + if (GT.jtdxIni.port > -1) { runningAppsDiv.innerHTML += - "(" + g_jtdxIni.ip + " / " + g_jtdxIni.port + ") "; + "(" + GT.jtdxIni.ip + " / " + GT.jtdxIni.port + ") "; } else runningAppsDiv.innerHTML += "(?) "; } @@ -10970,84 +10971,84 @@ function updateBasedOnIni() { var which = null; var count = 0; - if (g_wsjtxProcessRunning) + if (GT.wsjtxProcessRunning) { count++; } - if (g_jtdxProcessRunning) + if (GT.jtdxProcessRunning) { count++; } // UdpPortNotSet - if (g_appSettings.wsjtUdpPort == 0 && count < 2) + if (GT.appSettings.wsjtUdpPort == 0 && count < 2) { - if (g_wsjtxProcessRunning || count == 0) + if (GT.wsjtxProcessRunning || count == 0) { - which = g_wsjtxIni; + which = GT.wsjtxIni; } - else if (g_jtdxProcessRunning) + else if (GT.jtdxProcessRunning) { - which = g_jtdxIni; + which = GT.jtdxIni; } if (which != null && which.port > -1) { - g_appSettings.wsjtUdpPort = which.port; - g_appSettings.wsjtIP = which.ip; + GT.appSettings.wsjtUdpPort = which.port; + GT.appSettings.wsjtIP = which.ip; } if (which == null) { - g_appSettings.wsjtUdpPort = 2237; - g_appSettings.wsjtIP = ""; + GT.appSettings.wsjtUdpPort = 2237; + GT.appSettings.wsjtIP = ""; } - if (ipToInt(g_appSettings.wsjtIP) >= ipToInt("224.0.0.0") && ipToInt(g_appSettings.wsjtIP) < ipToInt("240.0.0.0")) + if (ipToInt(GT.appSettings.wsjtIP) >= ipToInt("224.0.0.0") && ipToInt(GT.appSettings.wsjtIP) < ipToInt("240.0.0.0")) { - g_appSettings.multicast = true; + GT.appSettings.multicast = true; } else { - g_appSettings.multicast = false; + GT.appSettings.multicast = false; } } // Which INI do we load? - if (g_appSettings.wsjtUdpPort) + if (GT.appSettings.wsjtUdpPort) { which = null; - if (g_wsjtxIni.port == g_appSettings.wsjtUdpPort) + if (GT.wsjtxIni.port == GT.appSettings.wsjtUdpPort) { - which = g_wsjtxIni; + which = GT.wsjtxIni; } - else if (g_jtdxIni.port == g_appSettings.wsjtUdpPort) + else if (GT.jtdxIni.port == GT.appSettings.wsjtUdpPort) { - which = g_jtdxIni; + which = GT.jtdxIni; } if (which != null) { myDEcall = which.MyCall; myDEGrid = which.MyGrid; - g_lastBand = myBand; - g_lastMode = myMode; - g_workingIniPath = which.IniPath; + GT.lastBand = myBand; + GT.lastMode = myMode; + GT.workingIniPath = which.IniPath; } - if (which != null && which.BroadcastToN1MM == true && g_N1MMSettings.enable == true) + if (which != null && which.BroadcastToN1MM == true && GT.N1MMSettings.enable == true) { - if (which.N1MMServer == g_N1MMSettings.ip && which.N1MMServerPort == g_N1MMSettings.port) + if (which.N1MMServer == GT.N1MMSettings.ip && which.N1MMServerPort == GT.N1MMSettings.port) { - buttonN1MMCheckBox.checked = g_N1MMSettings.enable = false; - localStorage.N1MMSettings = JSON.stringify(g_N1MMSettings); + buttonN1MMCheckBox.checked = GT.N1MMSettings.enable = false; + localStorage.N1MMSettings = JSON.stringify(GT.N1MMSettings); alert(which.appName + " N1MM Logger+ is enabled with same settings, disabled GridTracker N1MM logger"); } } if (which != null) { - if (g_appSettings.wsjtIP == "") + if (GT.appSettings.wsjtIP == "") { - g_appSettings.wsjtIP = which.ip; + GT.appSettings.wsjtIP = which.ip; } } } @@ -11064,7 +11065,7 @@ function updateBasedOnIni() function CheckReceivePortIsNotForwardPort(value) { - if (udpForwardIpInput.value == "127.0.0.1" && udpForwardPortInput.value == value && g_appSettings.wsjtIP == "" && udpForwardEnable.checked) + if (udpForwardIpInput.value == "127.0.0.1" && udpForwardPortInput.value == value && GT.appSettings.wsjtIP == "" && udpForwardEnable.checked) { return false; } @@ -11074,7 +11075,7 @@ function CheckReceivePortIsNotForwardPort(value) function CheckForwardPortIsNotReceivePort(value) { - if (udpForwardIpInput.value == "127.0.0.1" && udpPortInput.value == value && g_appSettings.wsjtIP == "") + if (udpForwardIpInput.value == "127.0.0.1" && udpPortInput.value == value && GT.appSettings.wsjtIP == "") { return false; } @@ -11084,7 +11085,7 @@ function CheckForwardPortIsNotReceivePort(value) function setForwardIp() { - g_appSettings.wsjtForwardUdpIp = udpForwardIpInput.value; + GT.appSettings.wsjtForwardUdpIp = udpForwardIpInput.value; if (ValidatePort(udpPortInput, null, CheckReceivePortIsNotForwardPort)) { setUdpPort(); @@ -11094,7 +11095,7 @@ function setForwardIp() function setForwardPort() { - g_appSettings.wsjtForwardUdpPort = udpForwardPortInput.value; + GT.appSettings.wsjtForwardUdpPort = udpForwardPortInput.value; ValidateIPaddress(udpForwardIpInput, null); if (ValidatePort(udpPortInput, null, CheckReceivePortIsNotForwardPort)) { @@ -11427,13 +11428,13 @@ function ValidatePort(inputText, checkBox, callBackCheck) function workingCallsignEnableChanged(ele) { - g_appSettings.workingCallsignEnable = ele.checked; + GT.appSettings.workingCallsignEnable = ele.checked; applyCallsignsAndDateDiv.style.display = ""; } function workingDateEnableChanged(ele) { - g_appSettings.workingDateEnable = ele.checked; + GT.appSettings.workingDateEnable = ele.checked; applyCallsignsAndDateDiv.style.display = ""; } @@ -11450,7 +11451,7 @@ function workingDateChanged() 0 ) ); - g_appSettings.workingDate = + GT.appSettings.workingDate = Date.UTC( parseInt(fields[0]), parseInt(fields[1]) - 1, @@ -11465,23 +11466,23 @@ function workingDateChanged() function displayWorkingDate() { - var date = new Date(g_appSettings.workingDate * 1000); + var date = new Date(GT.appSettings.workingDate * 1000); workingDateString.innerHTML = dateToString(date); } -var g_tempWorkingCallsigns = {}; +GT.tempWorkingCallsigns = {}; function workingCallsignsChanged(ele) { - g_tempWorkingCallsigns = {}; + GT.tempWorkingCallsigns = {}; var callsigns = ele.value.split(","); for (var call in callsigns) { - g_tempWorkingCallsigns[callsigns[call]] = true; + GT.tempWorkingCallsigns[callsigns[call]] = true; } if (callsigns.length > 0) { - g_appSettings.workingCallsigns = Object.assign({}, g_tempWorkingCallsigns); - if (g_appSettings.workingCallsignEnable) { applyCallsignsAndDateDiv.style.display = ""; } + GT.appSettings.workingCallsigns = Object.assign({}, GT.tempWorkingCallsigns); + if (GT.appSettings.workingCallsignEnable) { applyCallsignsAndDateDiv.style.display = ""; } } else applyCallsignsAndDateDiv.style.display = "none"; } @@ -11532,14 +11533,14 @@ function lockNewWindows() } } -var g_lastUrl = ""; +GT.lastUrl = ""; function newFrame(frame, url, policy) { - if (url != g_lastUrl) + if (url != GT.lastUrl) { nw.Shell.openExternal(url); - g_lastUrl = url; + GT.lastUrl = url; nodeTimers.setTimeout(clearLastUrlTimeOut, 5000); } policy.ignore(); @@ -11547,17 +11548,17 @@ function newFrame(frame, url, policy) function clearLastUrlTimeOut() { - g_lastUrl = ""; + GT.lastUrl = ""; } function byName(a, b) { - if (g_enums[a] < g_enums[b]) return -1; - if (g_enums[a] > g_enums[b]) return 1; + if (GT.enums[a] < GT.enums[b]) return -1; + if (GT.enums[a] > GT.enums[b]) return 1; return 0; } -var ancPrefixes = ["P", "M", "MM", "AM", "A", "NWS"]; +GT.ancPrefixes = ["P", "M", "MM", "AM", "A", "NWS"]; function callsignToDxcc(insign) { @@ -11568,13 +11569,13 @@ function callsignToDxcc(insign) return -1; } - if (callsign in g_directCallToDXCC) { return Number(g_directCallToDXCC[callsign]); } + if (callsign in GT.directCallToDXCC) { return Number(GT.directCallToDXCC[callsign]); } if (callsign.includes("/")) { var parts = callsign.split("/"); var end = parts.length - 1; - if (ancPrefixes.includes(parts[end])) + if (GT.ancPrefixes.includes(parts[end])) { if (parts[end].toUpperCase() == "MM") { @@ -11601,14 +11602,14 @@ function callsignToDxcc(insign) } else callsign = parts[0]; - if (callsign in g_directCallToDXCC) { return Number(g_directCallToDXCC[callsign]); } + if (callsign in GT.directCallToDXCC) { return Number(GT.directCallToDXCC[callsign]); } } for (var x = callsign.length; x > 0; x--) { - if (callsign.substr(0, x) in g_prefixToMap) + if (callsign.substr(0, x) in GT.prefixToMap) { - return Number(g_dxccInfo[g_prefixToMap[callsign.substr(0, x)]].dxcc); + return Number(GT.dxccInfo[GT.prefixToMap[callsign.substr(0, x)]].dxcc); } } return -1; @@ -11623,19 +11624,19 @@ function cqZoneFromCallsign(insign, dxcc) return null; } - if (callsign in g_directCallToCQzone) { return g_directCallToCQzone[callsign]; } + if (callsign in GT.directCallToCQzone) { return GT.directCallToCQzone[callsign]; } for (var x = callsign.length; x > 0; x--) { - if (callsign.substr(0, x) in g_prefixToCQzone) + if (callsign.substr(0, x) in GT.prefixToCQzone) { - return g_prefixToCQzone[callsign.substr(0, x)]; + return GT.prefixToCQzone[callsign.substr(0, x)]; } } if (dxcc > 0) { - return g_dxccInfo[dxcc].cqzone; + return GT.dxccInfo[dxcc].cqzone; } return null; @@ -11650,19 +11651,19 @@ function ituZoneFromCallsign(insign, dxcc) return null; } - if (callsign in g_directCallToITUzone) { return g_directCallToITUzone[callsign]; } + if (callsign in GT.directCallToITUzone) { return GT.directCallToITUzone[callsign]; } for (var x = callsign.length; x > 0; x--) { - if (callsign.substr(0, x) in g_prefixToITUzone) + if (callsign.substr(0, x) in GT.prefixToITUzone) { - return g_prefixToITUzone[callsign.substr(0, x)]; + return GT.prefixToITUzone[callsign.substr(0, x)]; } } if (dxcc > 0) { - return g_dxccInfo[dxcc].ituzone; + return GT.dxccInfo[dxcc].ituzone; } return null; @@ -11674,56 +11675,56 @@ function loadMaidenHeadData() if (fs.existsSync(file)) { var fileBuf = fs.readFileSync(file, "UTF-8"); - g_dxccInfo = JSON.parse(fileBuf); + GT.dxccInfo = JSON.parse(fileBuf); - for (var key in g_dxccInfo) + for (var key in GT.dxccInfo) { - g_dxccToAltName[g_dxccInfo[key].dxcc] = g_dxccInfo[key].name; - g_dxccToADIFName[g_dxccInfo[key].dxcc] = g_dxccInfo[key].aname; + GT.dxccToAltName[GT.dxccInfo[key].dxcc] = GT.dxccInfo[key].name; + GT.dxccToADIFName[GT.dxccInfo[key].dxcc] = GT.dxccInfo[key].aname; - for (var x = 0; x < g_dxccInfo[key].prefix.length; x++) + for (var x = 0; x < GT.dxccInfo[key].prefix.length; x++) { - g_prefixToMap[g_dxccInfo[key].prefix[x]] = key; + GT.prefixToMap[GT.dxccInfo[key].prefix[x]] = key; } - delete g_dxccInfo[key].prefix; + delete GT.dxccInfo[key].prefix; - for (var x = 0; x < g_dxccInfo[key].direct.length; x++) + for (var x = 0; x < GT.dxccInfo[key].direct.length; x++) { - g_directCallToDXCC[g_dxccInfo[key].direct[x]] = g_dxccInfo[key].dxcc; + GT.directCallToDXCC[GT.dxccInfo[key].direct[x]] = GT.dxccInfo[key].dxcc; } - delete g_dxccInfo[key].direct; + delete GT.dxccInfo[key].direct; - for (var val in g_dxccInfo[key].prefixCQ) + for (var val in GT.dxccInfo[key].prefixCQ) { - g_prefixToCQzone[val] = g_dxccInfo[key].prefixCQ[val]; + GT.prefixToCQzone[val] = GT.dxccInfo[key].prefixCQ[val]; } - delete g_dxccInfo[key].prefixCQ; + delete GT.dxccInfo[key].prefixCQ; - for (var val in g_dxccInfo[key].prefixITU) + for (var val in GT.dxccInfo[key].prefixITU) { - g_prefixToITUzone[val] = g_dxccInfo[key].prefixITU[val]; + GT.prefixToITUzone[val] = GT.dxccInfo[key].prefixITU[val]; } - delete g_dxccInfo[key].prefixITU; + delete GT.dxccInfo[key].prefixITU; - for (var val in g_dxccInfo[key].directCQ) + for (var val in GT.dxccInfo[key].directCQ) { - g_directCallToCQzone[val] = g_dxccInfo[key].directCQ[val]; + GT.directCallToCQzone[val] = GT.dxccInfo[key].directCQ[val]; } - delete g_dxccInfo[key].directCQ; + delete GT.dxccInfo[key].directCQ; - for (var val in g_dxccInfo[key].directITU) + for (var val in GT.dxccInfo[key].directITU) { - g_directCallToITUzone[val] = g_dxccInfo[key].directITU[val]; + GT.directCallToITUzone[val] = GT.dxccInfo[key].directITU[val]; } - delete g_dxccInfo[key].directITU; + delete GT.dxccInfo[key].directITU; - for (var x = 0; x < g_dxccInfo[key].mh.length; x++) + for (var x = 0; x < GT.dxccInfo[key].mh.length; x++) { - if (!(g_dxccInfo[key].mh[x] in g_gridToDXCC)) { g_gridToDXCC[g_dxccInfo[key].mh[x]] = Array(); } - g_gridToDXCC[g_dxccInfo[key].mh[x]].push(g_dxccInfo[key].dxcc); + if (!(GT.dxccInfo[key].mh[x] in GT.gridToDXCC)) { GT.gridToDXCC[GT.dxccInfo[key].mh[x]] = Array(); } + GT.gridToDXCC[GT.dxccInfo[key].mh[x]].push(GT.dxccInfo[key].dxcc); } - if (g_dxccInfo[key].dxcc != 291) { delete g_dxccInfo[key].mh; } + if (GT.dxccInfo[key].dxcc != 291) { delete GT.dxccInfo[key].mh; } } file = "./data/dxcc.json"; @@ -11733,7 +11734,7 @@ function loadMaidenHeadData() for (var key in dxccGeo.features) { var dxcc = dxccGeo.features[key].properties.dxcc_entity_code; - g_dxccInfo[dxcc].geo = dxccGeo.features[key]; + GT.dxccInfo[dxcc].geo = dxccGeo.features[key]; } file = "./data/counties.json"; @@ -11742,130 +11743,130 @@ function loadMaidenHeadData() for (var id in countyData) { - if (!(countyData[id].properties.st in g_stateToCounty)) { g_stateToCounty[countyData[id].properties.st] = Array(); } - g_stateToCounty[countyData[id].properties.st].push(id); + if (!(countyData[id].properties.st in GT.stateToCounty)) { GT.stateToCounty[countyData[id].properties.st] = Array(); } + GT.stateToCounty[countyData[id].properties.st].push(id); - var cnty = countyData[id].properties.st + "," + countyData[id].properties.n.toUpperCase().replaceAll(" ", ""); + var cnty = countyData[id].properties.st + "," + replaceAll(countyData[id].properties.n, " ", ""); - if (!(cnty in g_cntyToCounty)) { g_cntyToCounty[cnty] = countyData[id].properties.n.toProperCase(); } + if (!(cnty in GT.cntyToCounty)) { GT.cntyToCounty[cnty] = toProperCase(countyData[id].properties.n); } - g_countyData[cnty] = {}; - g_countyData[cnty].geo = countyData[id]; - g_countyData[cnty].worked = false; - g_countyData[cnty].confirmed = false; + GT.countyData[cnty] = {}; + GT.countyData[cnty].geo = countyData[id]; + GT.countyData[cnty].worked = false; + GT.countyData[cnty].confirmed = false; - g_countyData[cnty].worked_bands = {}; - g_countyData[cnty].confirmed_bands = {}; - g_countyData[cnty].worked_modes = {}; - g_countyData[cnty].confirmed_modes = {}; + GT.countyData[cnty].worked_bands = {}; + GT.countyData[cnty].confirmed_bands = {}; + GT.countyData[cnty].worked_modes = {}; + GT.countyData[cnty].confirmed_modes = {}; for (var x in countyData[id].properties.z) { var zipS = String(countyData[id].properties.z[x]); - if (!(zipS in g_zipToCounty)) + if (!(zipS in GT.zipToCounty)) { - g_zipToCounty[zipS] = Array(); + GT.zipToCounty[zipS] = Array(); } - g_zipToCounty[zipS].push(cnty); + GT.zipToCounty[zipS].push(cnty); } } files = null; countyData = null; - g_shapeData = JSON.parse(fs.readFileSync(g_shapeFile)); + GT.shapeData = JSON.parse(fs.readFileSync(GT.shapeFile)); - g_StateData = JSON.parse(fs.readFileSync("./data/state.json")); + GT.StateData = JSON.parse(fs.readFileSync("./data/state.json")); - for (var key in g_StateData) + for (var key in GT.StateData) { - for (var x = 0; x < g_StateData[key].mh.length; x++) + for (var x = 0; x < GT.StateData[key].mh.length; x++) { - if (!(g_StateData[key].mh[x] in g_gridToState)) { g_gridToState[g_StateData[key].mh[x]] = Array(); } - g_gridToState[g_StateData[key].mh[x]].push(g_StateData[key].postal); + if (!(GT.StateData[key].mh[x] in GT.gridToState)) { GT.gridToState[GT.StateData[key].mh[x]] = Array(); } + GT.gridToState[GT.StateData[key].mh[x]].push(GT.StateData[key].postal); } } file = "./data/phone.json"; fileBuf = fs.readFileSync(file, "UTF-8"); - g_phonetics = JSON.parse(fileBuf); + GT.phonetics = JSON.parse(fileBuf); file = "./data/enums.json"; fileBuf = fs.readFileSync(file, "UTF-8"); - g_enums = JSON.parse(fileBuf); + GT.enums = JSON.parse(fileBuf); - for (var key in g_dxccInfo) + for (var key in GT.dxccInfo) { - if (g_dxccInfo[key].pp != "" && g_dxccInfo[key].geo != "deleted") + if (GT.dxccInfo[key].pp != "" && GT.dxccInfo[key].geo != "deleted") { - g_enums[g_dxccInfo[key].dxcc] = g_dxccInfo[key].name; + GT.enums[GT.dxccInfo[key].dxcc] = GT.dxccInfo[key].name; } if (key == 291) { // US Mainland - for (var mh in g_dxccInfo[key].mh) + for (var mh in GT.dxccInfo[key].mh) { - var sqr = g_dxccInfo[key].mh[mh]; + var sqr = GT.dxccInfo[key].mh[mh]; - g_us48Data[sqr] = {}; - g_us48Data[sqr].name = sqr; - g_us48Data[sqr].worked = false; - g_us48Data[sqr].confirmed = false; - g_us48Data[sqr].worked_bands = {}; - g_us48Data[sqr].confirmed_bands = {}; - g_us48Data[sqr].worked_modes = {}; - g_us48Data[sqr].confirmed_modes = {}; + GT.us48Data[sqr] = {}; + GT.us48Data[sqr].name = sqr; + GT.us48Data[sqr].worked = false; + GT.us48Data[sqr].confirmed = false; + GT.us48Data[sqr].worked_bands = {}; + GT.us48Data[sqr].confirmed_bands = {}; + GT.us48Data[sqr].worked_modes = {}; + GT.us48Data[sqr].confirmed_modes = {}; } - delete g_dxccInfo[key].mh; + delete GT.dxccInfo[key].mh; } } fileBuf = fs.readFileSync("./data/cqzone.json"); - g_cqZones = JSON.parse(fileBuf); + GT.cqZones = JSON.parse(fileBuf); fileBuf = fs.readFileSync("./data/ituzone.json"); - g_ituZones = JSON.parse(fileBuf); + GT.ituZones = JSON.parse(fileBuf); - for (var key in g_StateData) + for (var key in GT.StateData) { if (key.substr(0, 3) == "US-") { var shapeKey = key.substr(3, 2); - var name = g_StateData[key].name; + var name = GT.StateData[key].name; - if (shapeKey in g_shapeData) + if (shapeKey in GT.shapeData) { - g_wasZones[name] = {}; - g_wasZones[name].geo = g_shapeData[shapeKey]; - g_wasZones[name].worked = false; - g_wasZones[name].confirmed = false; + GT.wasZones[name] = {}; + GT.wasZones[name].geo = GT.shapeData[shapeKey]; + GT.wasZones[name].worked = false; + GT.wasZones[name].confirmed = false; - g_wasZones[name].worked_bands = {}; - g_wasZones[name].confirmed_bands = {}; - g_wasZones[name].worked_modes = {}; - g_wasZones[name].confirmed_modes = {}; + GT.wasZones[name].worked_bands = {}; + GT.wasZones[name].confirmed_bands = {}; + GT.wasZones[name].worked_modes = {}; + GT.wasZones[name].confirmed_modes = {}; } } } - for (var key in g_shapeData) + for (var key in GT.shapeData) { - if (g_shapeData[key].properties.type == "Continent") + if (GT.shapeData[key].properties.type == "Continent") { - var name = g_shapeData[key].properties.name; - g_wacZones[name] = {}; - g_wacZones[name].geo = g_shapeData[key]; + var name = GT.shapeData[key].properties.name; + GT.wacZones[name] = {}; + GT.wacZones[name].geo = GT.shapeData[key]; - g_wacZones[name].worked = false; - g_wacZones[name].confirmed = false; + GT.wacZones[name].worked = false; + GT.wacZones[name].confirmed = false; - g_wacZones[name].worked_bands = {}; - g_wacZones[name].confirmed_bands = {}; - g_wacZones[name].worked_modes = {}; - g_wacZones[name].confirmed_modes = {}; + GT.wacZones[name].worked_bands = {}; + GT.wacZones[name].confirmed_bands = {}; + GT.wacZones[name].worked_modes = {}; + GT.wacZones[name].confirmed_modes = {}; } } } - var localeDxcc = "./i18n/" + g_appSettings.locale + "-dxcc.json"; + var localeDxcc = "./i18n/" + GT.appSettings.locale + "-dxcc.json"; if (fs.existsSync(localeDxcc)) { var fileBuf = fs.readFileSync(localeDxcc, "UTF-8"); @@ -11874,16 +11875,16 @@ function loadMaidenHeadData() { for (const dxcc in langDxcc) { - if (dxcc in g_dxccInfo) + if (dxcc in GT.dxccInfo) { - g_dxccInfo[dxcc].name = langDxcc[dxcc]; - g_dxccToAltName[dxcc] = langDxcc[dxcc]; + GT.dxccInfo[dxcc].name = langDxcc[dxcc]; + GT.dxccToAltName[dxcc] = langDxcc[dxcc]; } } } } - var localeState = "./i18n/" + g_appSettings.locale + "-state.json"; + var localeState = "./i18n/" + GT.appSettings.locale + "-state.json"; if (fs.existsSync(localeState)) { var fileBuf = fs.readFileSync(localeState, "UTF-8"); @@ -11892,56 +11893,56 @@ function loadMaidenHeadData() { for (const state in langState) { - if (state in g_StateData) + if (state in GT.StateData) { - g_StateData[state].name = langState[state]; + GT.StateData[state].name = langState[state]; } } } } } -var g_timezonesEnable = 0; -var g_timezoneLayer = null; +GT.timezonesEnable = 0; +GT.timezoneLayer = null; function createZoneLayer() { - g_timezoneLayer = createGeoJsonLayer( + GT.timezoneLayer = createGeoJsonLayer( "tz", "./data/combined-with-oceans.json", "#000088FF", 0.5 ); - g_map.addLayer(g_timezoneLayer); - g_timezoneLayer.setVisible(false); + GT.map.addLayer(GT.timezoneLayer); + GT.timezoneLayer.setVisible(false); } function toggleTimezones() { - if (g_currentOverlay != 0) return; + if (GT.currentOverlay != 0) return; - g_timezonesEnable ^= 1; + GT.timezonesEnable ^= 1; mouseOutGtFlag(); - if (g_timezonesEnable == 1) + if (GT.timezonesEnable == 1) { - if (g_timezoneLayer == null) + if (GT.timezoneLayer == null) { createZoneLayer(); } - g_timezoneLayer.setVisible(true); + GT.timezoneLayer.setVisible(true); } else { - if (g_timezoneLayer != null) + if (GT.timezoneLayer != null) { - g_map.removeLayer(g_timezoneLayer); - g_timezoneLayer = null; + GT.map.removeLayer(GT.timezoneLayer); + GT.timezoneLayer = null; } } - timezoneImg.style.filter = g_timezonesEnable == 1 ? "" : "grayscale(1)"; + timezoneImg.style.filter = GT.timezonesEnable == 1 ? "" : "grayscale(1)"; } function drawAllGrids() @@ -11969,7 +11970,7 @@ function drawAllGrids() }); newGridBox.setStyle(featureStyle); - g_layerSources["line-grids"].addFeature(newGridBox); + GT.layerSources["line-grids"].addFeature(newGridBox); } for (var x = -90; x < 91; x++) @@ -11992,7 +11993,7 @@ function drawAllGrids() }); newGridBox.setStyle(featureStyle); - g_layerSources["line-grids"].addFeature(newGridBox); + GT.layerSources["line-grids"].addFeature(newGridBox); } for (var x = 65; x < 83; x++) @@ -12034,7 +12035,7 @@ function drawAllGrids() }) }); feature.setStyle(featureStyle); - g_layerSources["long-grids"].addFeature(feature); + GT.layerSources["long-grids"].addFeature(feature); } } @@ -12056,7 +12057,7 @@ function drawAllGrids() }) }); feature.setStyle(featureStyle); - g_layerSources["big-grids"].addFeature(feature); + GT.layerSources["big-grids"].addFeature(feature); } } } @@ -12121,7 +12122,7 @@ function updateAcks(buffer) { try { - g_acknowledgedCalls = JSON.parse(buffer); + GT.acknowledgedCalls = JSON.parse(buffer); } catch (e) { @@ -12133,10 +12134,10 @@ function readAcksFromDisk() { try { - var fileBuf = fs.readFileSync(g_NWappData + "acknowledgements.json"); + var fileBuf = fs.readFileSync(GT.NWappData + "acknowledgements.json"); var loadedData = JSON.parse(fileBuf); // some validation here? - g_acknowledgedCalls = loadedData; + GT.acknowledgedCalls = loadedData; } catch (e) { @@ -12320,56 +12321,56 @@ function colorToHex(color) function setHueColor() { - g_mapHue = colorToHex(hueDiv.style.backgroundColor); - if (g_mapHue == "#000000") g_mapHue = 0; + GT.mapHue = colorToHex(hueDiv.style.backgroundColor); + if (GT.mapHue == "#000000") GT.mapHue = 0; } function loadMapSettings() { - shadowValue.value = g_mapSettings.shadow; + shadowValue.value = GT.mapSettings.shadow; showDarknessTd.innerHTML = parseInt(shadowValue.value * 100) + "%"; - pathWidthTd.innerHTML = pathWidthValue.value = g_appSettings.pathWidthWeight; + pathWidthTd.innerHTML = pathWidthValue.value = GT.appSettings.pathWidthWeight; qrzPathWidthTd.innerHTML = qrzPathWidthValue.value = - g_appSettings.qrzPathWidthWeight; + GT.appSettings.qrzPathWidthWeight; - gridDecay.value = g_appSettings.gridsquareDecayTime; + gridDecay.value = GT.appSettings.gridsquareDecayTime; changeGridDecay(); - pathColorValue.value = g_mapSettings.pathColor; - qrzPathColorValue.value = g_mapSettings.qrzPathColor; - brightnessValue.value = g_mapSettings.loudness; - nightBrightnessValue.value = g_mapSettings.nightLoudness; + pathColorValue.value = GT.mapSettings.pathColor; + qrzPathColorValue.value = GT.mapSettings.qrzPathColor; + brightnessValue.value = GT.mapSettings.loudness; + nightBrightnessValue.value = GT.mapSettings.nightLoudness; - nightPathColorValue.value = g_mapSettings.nightPathColor; - nightQrzPathColorValue.value = g_mapSettings.nightQrzPathColor; + nightPathColorValue.value = GT.mapSettings.nightPathColor; + nightQrzPathColorValue.value = GT.mapSettings.nightQrzPathColor; - mouseOverValue.checked = g_mapSettings.mouseOver; - mergeOverlayValue.checked = g_mapSettings.mergeOverlay; + mouseOverValue.checked = GT.mapSettings.mouseOver; + mergeOverlayValue.checked = GT.mapSettings.mergeOverlay; - offlineImg.src = g_mapImageArray[g_mapSettings.offlineMode ? 0 : 1]; + offlineImg.src = GT.mapImageArray[GT.mapSettings.offlineMode ? 0 : 1]; - mapSelect.value = g_mapSettings.mapIndex; - mapNightSelect.value = g_mapSettings.nightMapIndex; + mapSelect.value = GT.mapSettings.mapIndex; + mapNightSelect.value = GT.mapSettings.nightMapIndex; - animateValue.checked = g_mapSettings.animate; - animateSpeedValue.value = 21 - g_mapSettings.animateSpeed; + animateValue.checked = GT.mapSettings.animate; + animateSpeedValue.value = 21 - GT.mapSettings.animateSpeed; setAnimateView(); - splitQSLValue.checked = g_mapSettings.splitQSL; - fitQRZvalue.checked = g_mapSettings.fitQRZ; - qrzDxccFallbackValue.checked = g_mapSettings.qrzDxccFallback; - CqHiliteValue.checked = g_mapSettings.CQhilite; - focusRigValue.checked = g_mapSettings.focusRig; - haltAllOnTxValue.checked = g_mapSettings.haltAllOnTx; + splitQSLValue.checked = GT.mapSettings.splitQSL; + fitQRZvalue.checked = GT.mapSettings.fitQRZ; + qrzDxccFallbackValue.checked = GT.mapSettings.qrzDxccFallback; + CqHiliteValue.checked = GT.mapSettings.CQhilite; + focusRigValue.checked = GT.mapSettings.focusRig; + haltAllOnTxValue.checked = GT.mapSettings.haltAllOnTx; - trafficDecode.checked = g_mapSettings.trafficDecode; + trafficDecode.checked = GT.mapSettings.trafficDecode; setSpotImage(); - timezoneImg.style.filter = g_timezonesEnable == 1 ? "" : "grayscale(1)"; - radarImg.style.filter = g_mapSettings.usNexrad ? "" : "grayscale(1)"; - gridOverlayImg.style.filter = g_showAllGrids ? "" : "grayscale(1)"; + timezoneImg.style.filter = GT.timezonesEnable == 1 ? "" : "grayscale(1)"; + radarImg.style.filter = GT.mapSettings.usNexrad ? "" : "grayscale(1)"; + gridOverlayImg.style.filter = GT.showAllGrids ? "" : "grayscale(1)"; - g_bandToColor = JSON.parse(JSON.stringify(g_pskColors)); + GT.bandToColor = JSON.parse(JSON.stringify(GT.pskColors)); setGridOpacity(); @@ -12414,17 +12415,17 @@ function loadMapSettings() function changeDistanceUnit() { - g_appSettings.distanceUnit = distanceUnit.value; - g_scaleLine.setUnits(g_scaleUnits[g_appSettings.distanceUnit]); + GT.appSettings.distanceUnit = distanceUnit.value; + GT.scaleLine.setUnits(GT.scaleUnits[GT.appSettings.distanceUnit]); goProcessRoster(); } function changeMapNightValues() { - g_mapSettings.nightPathColor = nightPathColorValue.value; - g_mapSettings.nightQrzPathColor = nightQrzPathColorValue.value; - g_mapSettings.nightMapIndex = mapNightSelect.value; - g_mapSettings.nightLoudness = nightBrightnessValue.value; + GT.mapSettings.nightPathColor = nightPathColorValue.value; + GT.mapSettings.nightQrzPathColor = nightQrzPathColorValue.value; + GT.mapSettings.nightMapIndex = mapNightSelect.value; + GT.mapSettings.nightLoudness = nightBrightnessValue.value; saveMapSettings(); setNightHtml(); @@ -12434,13 +12435,13 @@ function changeMapNightValues() function setNightHtml() { var pathColor = - g_mapSettings.nightPathColor == 0 + GT.mapSettings.nightPathColor == 0 ? "#000" - : g_mapSettings.nightPathColor == 361 + : GT.mapSettings.nightPathColor == 361 ? "#FFF" - : "hsl(" + g_mapSettings.nightPathColor + ", 100%, 50%)"; + : "hsl(" + GT.mapSettings.nightPathColor + ", 100%, 50%)"; - if (g_mapSettings.nightPathColor != 0) + if (GT.mapSettings.nightPathColor != 0) { pathNightColorDiv.style.color = "#000"; pathNightColorDiv.style.backgroundColor = pathColor; @@ -12452,12 +12453,12 @@ function setNightHtml() } pathColor = - g_mapSettings.nightQrzPathColor == 0 + GT.mapSettings.nightQrzPathColor == 0 ? "#000" - : g_mapSettings.nightQrzPathColor == 361 + : GT.mapSettings.nightQrzPathColor == 361 ? "#FFF" - : "hsl(" + g_mapSettings.nightQrzPathColor + ", 100%, 50%)"; - if (g_mapSettings.nightQrzPathColor != 0) + : "hsl(" + GT.mapSettings.nightQrzPathColor + ", 100%, 50%)"; + if (GT.mapSettings.nightQrzPathColor != 0) { pathNightQrzColorDiv.style.color = "#000"; pathNightQrzColorDiv.style.backgroundColor = pathColor; @@ -12471,18 +12472,18 @@ function setNightHtml() function changeMapValues() { - g_mapSettings.pathColor = pathColorValue.value; - g_mapSettings.qrzPathColor = qrzPathColorValue.value; - g_mapSettings.loudness = brightnessValue.value; + GT.mapSettings.pathColor = pathColorValue.value; + GT.mapSettings.qrzPathColor = qrzPathColorValue.value; + GT.mapSettings.loudness = brightnessValue.value; - g_mapSettings.mapIndex = mapSelect.value; - if (g_appSettings.gtFlagImgSrc > 0 && g_mapSettings.offlineMode == false && g_appSettings.gtShareEnable == true) + GT.mapSettings.mapIndex = mapSelect.value; + if (GT.appSettings.gtFlagImgSrc > 0 && GT.mapSettings.offlineMode == false && GT.appSettings.gtShareEnable == true) { - g_layerVectors.gtflags.setVisible(true); + GT.layerVectors.gtflags.setVisible(true); } else { - g_layerVectors.gtflags.setVisible(false); + GT.layerVectors.gtflags.setVisible(false); } saveMapSettings(); @@ -12490,13 +12491,13 @@ function changeMapValues() saveAlertSettings(); var pathColor = - g_mapSettings.pathColor == 0 + GT.mapSettings.pathColor == 0 ? "#000" - : g_mapSettings.pathColor == 361 + : GT.mapSettings.pathColor == 361 ? "#FFF" - : "hsl(" + g_mapSettings.pathColor + ", 100%, 50%)"; + : "hsl(" + GT.mapSettings.pathColor + ", 100%, 50%)"; - if (g_mapSettings.pathColor != 0) + if (GT.mapSettings.pathColor != 0) { pathColorDiv.style.color = "#000"; pathColorDiv.style.backgroundColor = pathColor; @@ -12508,12 +12509,12 @@ function changeMapValues() } pathColor = - g_mapSettings.qrzPathColor == 0 + GT.mapSettings.qrzPathColor == 0 ? "#000" - : g_mapSettings.qrzPathColor == 361 + : GT.mapSettings.qrzPathColor == 361 ? "#FFF" - : "hsl(" + g_mapSettings.qrzPathColor + ", 100%, 50%)"; - if (g_mapSettings.qrzPathColor != 0) + : "hsl(" + GT.mapSettings.qrzPathColor + ", 100%, 50%)"; + if (GT.mapSettings.qrzPathColor != 0) { qrzPathColorDiv.style.color = "#000"; qrzPathColorDiv.style.backgroundColor = pathColor; @@ -12542,10 +12543,10 @@ function setLegendGrid(name, newColor) function setLegendAndGridSettings() { - for (var key in g_legendColors) + for (var key in GT.legendColors) { - setLegendColor(key, g_legendColors[key]); - setLegendGrid(key, g_legendColors[key]); + setLegendColor(key, GT.legendColors[key]); + setLegendGrid(key, GT.legendColors[key]); } } @@ -12553,7 +12554,7 @@ function resetLegendColors() { for (var key in def_legendColors) { - g_legendColors[key] = def_legendColors[key]; + GT.legendColors[key] = def_legendColors[key]; } setLegendAndGridSettings(); @@ -12561,7 +12562,7 @@ function resetLegendColors() redrawGrids(); } -var g_redrawFromLegendTimeoutHandle = null; +GT.redrawFromLegendTimeoutHandle = null; function changeLegendColor(source) { var newColor = source.value; @@ -12569,19 +12570,19 @@ function changeLegendColor(source) var name = source.id.replace("gridValue", ""); setLegendColor(name, newColor); - g_legendColors[name] = newColor; + GT.legendColors[name] = newColor; - if (g_redrawFromLegendTimeoutHandle != null) + if (GT.redrawFromLegendTimeoutHandle != null) { - nodeTimers.clearTimeout(g_redrawFromLegendTimeoutHandle); + nodeTimers.clearTimeout(GT.redrawFromLegendTimeoutHandle); } - g_redrawFromLegendTimeoutHandle = nodeTimers.setTimeout(redrawGrids, 500); + GT.redrawFromLegendTimeoutHandle = nodeTimers.setTimeout(redrawGrids, 500); } function toggleLegend() { - if (g_mapSettings.legend == true) g_mapSettings.legend = false; - else g_mapSettings.legend = true; + if (GT.mapSettings.legend == true) GT.mapSettings.legend = false; + else GT.mapSettings.legend = true; saveMapSettings(); @@ -12595,7 +12596,7 @@ function hideLegend() function displayLegend() { - if (g_mapSettings.legend == true) + if (GT.mapSettings.legend == true) { LegendDiv.style.display = "block"; legendImg.style.webkitFilter = ""; @@ -12650,22 +12651,22 @@ function cutHex(h) function changeMapLayer() { - if (g_mapSettings.offlineMode) + if (GT.mapSettings.offlineMode) { - g_tileLayer.setSource(g_offlineLayer); - g_tileLayer.setOpacity(Number(g_mapSettings.loudness)); + GT.tileLayer.setSource(GT.offlineLayer); + GT.tileLayer.setOpacity(Number(GT.mapSettings.loudness)); } else { - if (g_mapSettings.nightMapEnable && g_nightTime) + if (GT.mapSettings.nightMapEnable && GT.nightTime) { - g_tileLayer.setSource(g_mapsLayer[g_mapSettings.nightMapIndex]); - g_tileLayer.setOpacity(Number(g_mapSettings.nightLoudness)); + GT.tileLayer.setSource(GT.mapsLayer[GT.mapSettings.nightMapIndex]); + GT.tileLayer.setOpacity(Number(GT.mapSettings.nightLoudness)); } else { - g_tileLayer.setSource(g_mapsLayer[g_mapSettings.mapIndex]); - g_tileLayer.setOpacity(Number(g_mapSettings.loudness)); + GT.tileLayer.setSource(GT.mapsLayer[GT.mapSettings.mapIndex]); + GT.tileLayer.setOpacity(Number(GT.mapSettings.loudness)); } } @@ -12676,25 +12677,25 @@ function changeMapLayer() function voiceChangedValue() { - g_speechSettings.voice = Number(alertVoiceInput.value) + 1; + GT.speechSettings.voice = Number(alertVoiceInput.value) + 1; changeSpeechValues(); } function timedGetVoices() { - g_voices = window.speechSynthesis.getVoices(); - if (g_voices.length > 0) + GT.voices = window.speechSynthesis.getVoices(); + if (GT.voices.length > 0) { var newSelect = document.createElement("select"); newSelect.id = "alertVoiceInput"; newSelect.title = "Select Voice"; - for (var i = 0; i < g_voices.length; i++) + for (var i = 0; i < GT.voices.length; i++) { var option = document.createElement("option"); option.value = i; - newstring = g_voices[i].name.replace(/ /g, ""); + newstring = GT.voices[i].name.replace(/ /g, ""); option.text = newstring; - if (g_voices[i].default) + if (GT.voices[i].default) { option.selected = true; } @@ -12703,7 +12704,7 @@ function timedGetVoices() newSelect.oninput = voiceChangedValue; voicesDiv.appendChild(newSelect); } - g_speechAvailable = true; + GT.speechAvailable = true; loadAlerts(); } @@ -12714,7 +12715,7 @@ function initSpeech() nodeTimers.setTimeout(timedGetVoices, 500); }; var msg = new SpeechSynthesisUtterance("."); - msg.lang = g_localeString; + msg.lang = GT.localeString; window.speechSynthesis.speak(msg); } @@ -12748,118 +12749,118 @@ function gotAudioDevices(deviceInfos) newSelect.oninput = soundCardChangedValue; soundCardDiv.appendChild(newSelect); - soundCardInput.value = g_soundCard; + soundCardInput.value = GT.soundCard; } function soundCardChangedValue() { - g_appSettings.soundCard = g_soundCard = soundCardInput.value; + GT.appSettings.soundCard = GT.soundCard = soundCardInput.value; playTestFile(); } function setPins() { - g_colorLeafletPins = {}; - g_colorLeafleteQPins = {}; - g_colorLeafletQPins.worked = {}; - g_colorLeafletQPins.confirmed = {}; - for (var i = 0; i < g_colorBands.length; i++) + GT.colorLeafletPins = {}; + GT.colorLeafleteQPins = {}; + GT.colorLeafletQPins.worked = {}; + GT.colorLeafletQPins.confirmed = {}; + for (var i = 0; i < GT.colorBands.length; i++) { var pin = new ol.style.Icon({ - src: "./img/pin/" + g_colorBands[i] + ".png", + src: "./img/pin/" + GT.colorBands[i] + ".png", anchorYUnits: "pixels", anchorXUnits: "pixels", anchor: [5, 18] }); - g_colorLeafletPins[g_colorBands[i]] = pin; + GT.colorLeafletPins[GT.colorBands[i]] = pin; pin = new ol.style.Icon({ - src: "./img/pin/" + g_colorBands[i] + "w.png", + src: "./img/pin/" + GT.colorBands[i] + "w.png", anchorYUnits: "pixels", anchorXUnits: "pixels", anchor: [5, 18] }); - g_colorLeafletQPins.worked[g_colorBands[i]] = pin; + GT.colorLeafletQPins.worked[GT.colorBands[i]] = pin; pin = new ol.style.Icon({ - src: "./img/pin/" + g_colorBands[i] + "q.png", + src: "./img/pin/" + GT.colorBands[i] + "q.png", anchorYUnits: "pixels", anchorXUnits: "pixels", anchor: [5, 18] }); - g_colorLeafletQPins.confirmed[g_colorBands[i]] = pin; + GT.colorLeafletQPins.confirmed[GT.colorBands[i]] = pin; } } function changeClearOnCQ() { - g_appSettings.clearOnCQ = clearOnCQ.checked; + GT.appSettings.clearOnCQ = clearOnCQ.checked; saveAppSettings(); } function loadViewSettings() { - gtBandFilter.value = g_appSettings.gtBandFilter; - gtModeFilter.value = g_appSettings.gtModeFilter; - gtPropFilter.value = g_appSettings.gtPropFilter; - distanceUnit.value = g_appSettings.distanceUnit; - languageLocale.value = g_appSettings.locale; - N1MMIpInput.value = g_N1MMSettings.ip; - N1MMPortInput.value = g_N1MMSettings.port; - buttonN1MMCheckBox.checked = g_N1MMSettings.enable; + gtBandFilter.value = GT.appSettings.gtBandFilter; + gtModeFilter.value = GT.appSettings.gtModeFilter; + gtPropFilter.value = GT.appSettings.gtPropFilter; + distanceUnit.value = GT.appSettings.distanceUnit; + languageLocale.value = GT.appSettings.locale; + N1MMIpInput.value = GT.N1MMSettings.ip; + N1MMPortInput.value = GT.N1MMSettings.port; + buttonN1MMCheckBox.checked = GT.N1MMSettings.enable; ValidatePort(N1MMPortInput, buttonN1MMCheckBox, null); ValidateIPaddress(N1MMIpInput, buttonN1MMCheckBox, null); - log4OMIpInput.value = g_log4OMSettings.ip; - log4OMPortInput.value = g_log4OMSettings.port; - buttonLog4OMCheckBox.checked = g_log4OMSettings.enable; + log4OMIpInput.value = GT.log4OMSettings.ip; + log4OMPortInput.value = GT.log4OMSettings.port; + buttonLog4OMCheckBox.checked = GT.log4OMSettings.enable; ValidatePort(log4OMPortInput, buttonLog4OMCheckBox, null); ValidateIPaddress(log4OMIpInput, buttonLog4OMCheckBox, null); - acLogIpInput.value = g_acLogSettings.ip; - acLogPortInput.value = g_acLogSettings.port; - buttonacLogCheckBox.checked = g_acLogSettings.enable; + acLogIpInput.value = GT.acLogSettings.ip; + acLogPortInput.value = GT.acLogSettings.port; + buttonacLogCheckBox.checked = GT.acLogSettings.enable; ValidatePort(acLogPortInput, buttonacLogCheckBox, null); ValidateIPaddress(acLogIpInput, buttonacLogCheckBox, null); - dxkLogIpInput.value = g_dxkLogSettings.ip; - dxkLogPortInput.value = g_dxkLogSettings.port; - buttondxkLogCheckBox.checked = g_dxkLogSettings.enable; + dxkLogIpInput.value = GT.dxkLogSettings.ip; + dxkLogPortInput.value = GT.dxkLogSettings.port; + buttondxkLogCheckBox.checked = GT.dxkLogSettings.enable; ValidatePort(dxkLogPortInput, buttondxkLogCheckBox, null); ValidateIPaddress(dxkLogIpInput, buttondxkLogCheckBox, null); - hrdLogbookIpInput.value = g_HRDLogbookLogSettings.ip; - hrdLogbookPortInput.value = g_HRDLogbookLogSettings.port; - buttonHrdLogbookCheckBox.checked = g_HRDLogbookLogSettings.enable; + hrdLogbookIpInput.value = GT.HRDLogbookLogSettings.ip; + hrdLogbookPortInput.value = GT.HRDLogbookLogSettings.port; + buttonHrdLogbookCheckBox.checked = GT.HRDLogbookLogSettings.enable; ValidatePort(hrdLogbookPortInput, buttonHrdLogbookCheckBox, null); ValidateIPaddress(hrdLogbookIpInput, buttonHrdLogbookCheckBox, null); - pstrotatorIpInput.value = g_pstrotatorSettings.ip; - pstrotatorPortInput.value = g_pstrotatorSettings.port; - pstrotatorCheckBox.checked = g_pstrotatorSettings.enable; + pstrotatorIpInput.value = GT.pstrotatorSettings.ip; + pstrotatorPortInput.value = GT.pstrotatorSettings.port; + pstrotatorCheckBox.checked = GT.pstrotatorSettings.enable; ValidatePort(pstrotatorPortInput, pstrotatorCheckBox, null); ValidateIPaddress(pstrotatorIpInput, pstrotatorCheckBox, null); spotHistoryTimeValue.value = parseInt( - g_receptionSettings.viewHistoryTimeSec / 60 + GT.receptionSettings.viewHistoryTimeSec / 60 ); spotHistoryTimeTd.innerHTML = - "Max Age: " + Number(g_receptionSettings.viewHistoryTimeSec).toDHM(); + "Max Age: " + toDHM(Number(GT.receptionSettings.viewHistoryTimeSec)); - spotPathsValue.checked = g_receptionSettings.viewPaths; - spotPathColorValue.value = g_receptionSettings.pathColor; - spotNightPathColorValue.value = g_receptionSettings.pathNightColor; - spotWidthTd.innerHTML = spotWidthValue.value = g_receptionSettings.spotWidth; + spotPathsValue.checked = GT.receptionSettings.viewPaths; + spotPathColorValue.value = GT.receptionSettings.pathColor; + spotNightPathColorValue.value = GT.receptionSettings.pathNightColor; + spotWidthTd.innerHTML = spotWidthValue.value = GT.receptionSettings.spotWidth; - spotMergeValue.checked = g_receptionSettings.mergeSpots; + spotMergeValue.checked = GT.receptionSettings.mergeSpots; - lookupOnTx.checked = g_appSettings.lookupOnTx; - lookupCallookPreferred.checked = g_appSettings.lookupCallookPreferred; - lookupCloseLog.checked = g_appSettings.lookupCloseLog; - lookupMerge.checked = g_appSettings.lookupMerge; - lookupMissingGrid.checked = g_appSettings.lookupMissingGrid; + lookupOnTx.checked = GT.appSettings.lookupOnTx; + lookupCallookPreferred.checked = GT.appSettings.lookupCallookPreferred; + lookupCloseLog.checked = GT.appSettings.lookupCloseLog; + lookupMerge.checked = GT.appSettings.lookupMerge; + lookupMissingGrid.checked = GT.appSettings.lookupMissingGrid; - clearOnCQ.checked = g_appSettings.clearOnCQ; + clearOnCQ.checked = GT.appSettings.clearOnCQ; - if (g_appSettings.lookupMerge == true) + if (GT.appSettings.lookupMerge == true) { lookupMissingGridDiv.style.display = "inline-block"; } @@ -12868,7 +12869,7 @@ function loadViewSettings() lookupMissingGridDiv.style.display = "none"; } - if (g_receptionSettings.viewPaths) + if (GT.receptionSettings.viewPaths) { spotPathWidthDiv.style.display = "inline-block"; } @@ -12883,18 +12884,18 @@ function loadViewSettings() function loadMsgSettings() { - msgEnable.checked = g_appSettings.gtMsgEnable; - GTspotEnable.checked = g_appSettings.gtSpotEnable; + msgEnable.checked = GT.appSettings.gtMsgEnable; + GTspotEnable.checked = GT.appSettings.gtSpotEnable; - oamsBandActivity.checked = g_appSettings.oamsBandActivity; - oamsBandActivityNeighbors.checked = g_appSettings.oamsBandActivityNeighbors; + oamsBandActivity.checked = GT.appSettings.oamsBandActivity; + oamsBandActivityNeighbors.checked = GT.appSettings.oamsBandActivityNeighbors; setOamsBandActivity(oamsBandActivity); setSpotImage(); - for (var key in g_msgSettings) + for (var key in GT.msgSettings) { - document.getElementById(key).value = g_msgSettings[key]; + document.getElementById(key).value = GT.msgSettings[key]; } ValidateText(msgAwayText); setMsgSettingsView(); @@ -12905,16 +12906,16 @@ function setMsgSettingsView() if (msgEnable.checked) msgSettingsDiv.style.display = "inline-block"; else msgSettingsDiv.style.display = "none"; - if (g_msgSettings.msgAlertSelect > 0) + if (GT.msgSettings.msgAlertSelect > 0) { msgFrequencySelectDiv.style.display = "inline-block"; - if (g_msgSettings.msgAlertSelect == 1) + if (GT.msgSettings.msgAlertSelect == 1) { msgAlertWord.style.display = "inline-block"; msgAlertMedia.style.display = "none"; ValidateText(msgAlertWord); } - if (g_msgSettings.msgAlertSelect == 2) + if (GT.msgSettings.msgAlertSelect == 2) { msgAlertWord.style.display = "none"; msgAlertMedia.style.display = "inline-block"; @@ -12927,30 +12928,30 @@ function setMsgSettingsView() msgAlertMedia.style.display = "none"; } - if (g_msgSettings.msgAwaySelect > 0) { msgAwayTextDiv.style.display = "inline-block"; } + if (GT.msgSettings.msgAwaySelect > 0) { msgAwayTextDiv.style.display = "inline-block"; } else msgAwayTextDiv.style.display = "none"; } function loadAdifSettings() { - workingCallsignEnable.checked = g_appSettings.workingCallsignEnable; + workingCallsignEnable.checked = GT.appSettings.workingCallsignEnable; workingCallsignsValue.value = Object.keys( - g_appSettings.workingCallsigns + GT.appSettings.workingCallsigns ).join(","); ValidateCallsigns(workingCallsignsValue); - workingDateEnable.checked = g_appSettings.workingDateEnable; + workingDateEnable.checked = GT.appSettings.workingDateEnable; displayWorkingDate(); - if (g_platform == "mac") + if (GT.platform == "mac") { selectTQSLButton.style.display = "none"; } - for (var key in g_adifLogSettings.menu) + for (var key in GT.adifLogSettings.menu) { - var value = g_adifLogSettings.menu[key]; + var value = GT.adifLogSettings.menu[key]; var where = key + "Div"; if (document.getElementById(key) != null) { @@ -12965,15 +12966,15 @@ function loadAdifSettings() } } } - for (var key in g_adifLogSettings.startup) + for (var key in GT.adifLogSettings.startup) { - if (document.getElementById(key) != null) { document.getElementById(key).checked = g_adifLogSettings.startup[key]; } + if (document.getElementById(key) != null) { document.getElementById(key).checked = GT.adifLogSettings.startup[key]; } } - for (var key in g_adifLogSettings.nickname) + for (var key in GT.adifLogSettings.nickname) { if (document.getElementById(key) != null) { - document.getElementById(key).checked = g_adifLogSettings.nickname[key]; + document.getElementById(key).checked = GT.adifLogSettings.nickname[key]; if (key == "nicknameeQSLCheckBox") { if (document.getElementById(key).checked == true) @@ -12987,19 +12988,19 @@ function loadAdifSettings() } } } - for (var key in g_adifLogSettings.text) + for (var key in GT.adifLogSettings.text) { if (document.getElementById(key) != null) { - document.getElementById(key).value = g_adifLogSettings.text[key]; + document.getElementById(key).value = GT.adifLogSettings.text[key]; ValidateText(document.getElementById(key)); } } - for (var key in g_adifLogSettings.qsolog) + for (var key in GT.adifLogSettings.qsolog) { if (document.getElementById(key) != null) { - document.getElementById(key).checked = g_adifLogSettings.qsolog[key]; + document.getElementById(key).checked = GT.adifLogSettings.qsolog[key]; if (key == "logLOTWqsoCheckBox") { if (document.getElementById(key).checked == true) @@ -13019,7 +13020,7 @@ function loadAdifSettings() { clubCall.value = myRawCall; ValidateText(clubCall); - localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings); + localStorage.adifLogSettings = JSON.stringify(GT.adifLogSettings); } try @@ -13042,7 +13043,7 @@ function loadAdifSettings() function startupVersionInit() { - if (!g_developerMode) + if (!GT.developerMode) { document.body.addEventListener("contextmenu", function (ev) { @@ -13051,7 +13052,7 @@ function startupVersionInit() } imSureCheck.checked = false; - stopAskingCheckbox.checked = g_appSettings.stopAskingVersion; + stopAskingCheckbox.checked = GT.appSettings.stopAskingVersion; if (stopAskingCheckbox.checked == false) { checkForNewVersion(); @@ -13063,28 +13064,28 @@ function startupButtonsAndInputs() { try { - g_pushPinMode = !(g_appSettings.pushPinMode == true); + GT.pushPinMode = !(GT.appSettings.pushPinMode == true); togglePushPinMode(); - udpForwardEnable.checked = g_appSettings.wsjtForwardUdpEnable; - multicastEnable.checked = g_appSettings.multicast; + udpForwardEnable.checked = GT.appSettings.wsjtForwardUdpEnable; + multicastEnable.checked = GT.appSettings.multicast; - gridViewButton.innerHTML = g_gridViewArray[g_appSettings.gridViewMode]; - earthImg.src = g_earthShadowImageArray[g_appSettings.earthImgSrc]; - gtFlagImg.src = g_gtFlagImageArray[g_appSettings.gtFlagImgSrc % 2]; + gridViewButton.innerHTML = GT.gridViewArray[GT.appSettings.gridViewMode]; + earthImg.src = GT.earthShadowImageArray[GT.appSettings.earthImgSrc]; + gtFlagImg.src = GT.gtFlagImageArray[GT.appSettings.gtFlagImgSrc % 2]; gtShareFlagImg.src = - g_gtShareFlagImageArray[g_appSettings.gtShareEnable == false ? 0 : 1]; + GT.gtShareFlagImageArray[GT.appSettings.gtShareEnable == false ? 0 : 1]; - alertMuteImg.src = g_alertImageArray[g_appSettings.alertMute]; - modeImg.src = g_maidenheadModeImageArray[g_appSettings.sixWideMode]; + alertMuteImg.src = GT.alertImageArray[GT.appSettings.alertMute]; + modeImg.src = GT.maidenheadModeImageArray[GT.appSettings.sixWideMode]; - if (g_appSettings.centerGridsquare.length > 0) + if (GT.appSettings.centerGridsquare.length > 0) { - homeQTHInput.value = g_appSettings.centerGridsquare.substr(0, 6); + homeQTHInput.value = GT.appSettings.centerGridsquare.substr(0, 6); if (ValidateGridsquare(homeQTHInput, null)) setCenterGridsquare(); } ValidateCallsign(alertValueInput, null); - if (g_mapSettings.offlineMode == true) + if (GT.mapSettings.offlineMode == true) { conditionsButton.style.display = "none"; buttonPsk24CheckBoxDiv.style.display = "none"; @@ -13119,26 +13120,26 @@ function startupEventsAndTimers() nodeTimers.setInterval(oamsBandActivityCheck, 300000); } -var g_finishedLoading = false; +GT.finishedLoading = false; function postInit() { - setGridViewMode(g_appSettings.gridViewMode); + setGridViewMode(GT.appSettings.gridViewMode); redrawSpots(); checkForSettings(); updateForwardListener(); addLastTraffic("GridTracker
" + gtShortVersion); - g_nexradEnable = g_mapSettings.usNexrad ? 0 : 1; + GT.nexradEnable = GT.mapSettings.usNexrad ? 0 : 1; toggleNexrad(); - if (String(gtVersion) != String(g_startVersion)) + if (String(gtVersion) != String(GT.startVersion)) { // generalbut.className = "settingsTablinks"; showSettingsBox(); openSettingsTab(updatebut, "updateSettingsDiv"); } - g_finishedLoading = true; + GT.finishedLoading = true; // tagme var x = document.querySelectorAll("input[type='range']"); for (var i = 0; i < x.length; i++) @@ -13153,7 +13154,7 @@ function postInit() openConditionsWindow(false); showMessaging(false); - if (g_developerMode) + if (GT.developerMode) { devPanel.style.display = "inline-block"; } @@ -13168,10 +13169,10 @@ document.addEventListener("dragover", function (event) document.addEventListener("drop", function (event) { event.preventDefault(); - if (g_finishedLoading == true) dropHandler(event); + if (GT.finishedLoading == true) dropHandler(event); }); -var g_startupTable = [ +GT.startupTable = [ [startupVersionInit, "Completed Version Check"], [loadi18n, "Loading Locales"], [qsoBackupFileInit, "QSO Backup Initialized"], @@ -13206,12 +13207,12 @@ function init() { startupVersionDiv.innerHTML = gtVersionString; aboutVersionDiv.innerHTML = gtVersionString; - g_currentDay = parseInt(timeNowSec() / 86400); + GT.currentDay = parseInt(timeNowSec() / 86400); if (mediaCheck() == false) { startupDiv.style.display = "none"; documentsDiv.style.display = "block"; - searchedDocFolder.innerHTML = g_appData; + searchedDocFolder.innerHTML = GT.appData; } else { @@ -13224,9 +13225,9 @@ function init() function startupEngine() { - if (g_startupTable.length > 0) + if (GT.startupTable.length > 0) { - var funcInfo = g_startupTable.shift(); + var funcInfo = GT.startupTable.shift(); funcInfo[0](); startupStatusDiv.innerHTML = funcInfo[1]; nodeTimers.setTimeout(startupEngine, 32); @@ -13242,7 +13243,7 @@ function startupEngine() function directoryInput(what) { - g_appSettings.savedAppData = what.files[0].path; + GT.appSettings.savedAppData = what.files[0].path; init(); } @@ -13250,33 +13251,33 @@ function endStartup() { startupDiv.style.display = "none"; main.style.display = "block"; - g_map.updateSize(); + GT.map.updateSize(); } function loadPortSettings() { - multicastEnable.checked = g_appSettings.multicast; - multicastIpInput.value = g_appSettings.wsjtIP; + multicastEnable.checked = GT.appSettings.multicast; + multicastIpInput.value = GT.appSettings.wsjtIP; setMulticastEnable(multicastEnable); - udpPortInput.value = g_appSettings.wsjtUdpPort; + udpPortInput.value = GT.appSettings.wsjtUdpPort; ValidatePort(udpPortInput, null, CheckReceivePortIsNotForwardPort); - udpForwardPortInput.value = g_appSettings.wsjtForwardUdpPort; + udpForwardPortInput.value = GT.appSettings.wsjtForwardUdpPort; ValidatePort(udpForwardPortInput, null, CheckForwardPortIsNotReceivePort); - udpForwardIpInput.value = g_appSettings.wsjtForwardUdpIp; + udpForwardIpInput.value = GT.appSettings.wsjtForwardUdpIp; ValidateIPaddress(udpForwardIpInput, null); - udpForwardEnable.checked = g_appSettings.wsjtForwardUdpEnable; + udpForwardEnable.checked = GT.appSettings.wsjtForwardUdpEnable; setUdpForwardEnable(udpForwardEnable); } -var g_wsjtCurrentPort = -1; -var g_wsjtUdpServer = null; -var g_wsjtUdpSocketReady = false; -var g_wsjtUdpSocketError = false; -var g_qtToSplice = 0; +GT.wsjtCurrentPort = -1; +GT.wsjtUdpServer = null; +GT.wsjtUdpSocketReady = false; +GT.wsjtUdpSocketError = false; +GT.qtToSplice = 0; function decodeQUINT8(byteArray) { - g_qtToSplice = 1; + GT.qtToSplice = 1; return byteArray[0]; } @@ -13287,7 +13288,7 @@ function encodeQBOOL(byteArray, offset, value) function decodeQUINT32(byteArray) { - g_qtToSplice = 4; + GT.qtToSplice = 4; return byteArray.readUInt32BE(0); } @@ -13299,7 +13300,7 @@ function encodeQUINT32(byteArray, offset, value) function decodeQINT32(byteArray) { - g_qtToSplice = 4; + GT.qtToSplice = 4; return byteArray.readInt32BE(0); } @@ -13315,7 +13316,7 @@ function decodeQUINT64(byteArray) { value = value * 256 + byteArray[i]; } - g_qtToSplice = 8; + GT.qtToSplice = 8; return value; } @@ -13338,10 +13339,10 @@ function decodeQUTF8(byteArray) { var utf8_len = decodeQUINT32(byteArray); var result = ""; - byteArray = byteArray.slice(g_qtToSplice); + byteArray = byteArray.slice(GT.qtToSplice); if (utf8_len == 0xffffffff) utf8_len = 0; else result = byteArray.slice(0, utf8_len); - g_qtToSplice = utf8_len + 4; + GT.qtToSplice = utf8_len + 4; return result.toString(); } @@ -13354,7 +13355,7 @@ function encodeQUTF8(byteArray, offset, value) function decodeQDOUBLE(byteArray) { - g_qtToSplice = 8; + GT.qtToSplice = 8; return byteArray.readDoubleBE(0); } @@ -13363,154 +13364,154 @@ function encodeQDOUBLE(byteArray, offset, value) return byteArray.writeDoubleBE(value, offset); } -var g_forwardUdpServer = null; +GT.forwardUdpServer = null; function updateForwardListener() { - if (g_forwardUdpServer != null) + if (GT.forwardUdpServer != null) { - g_forwardUdpServer.close(); + GT.forwardUdpServer.close(); } - if (g_closing == true) return; + if (GT.closing == true) return; var dgram = require("dgram"); - g_forwardUdpServer = dgram.createSocket({ + GT.forwardUdpServer = dgram.createSocket({ type: "udp4", reuseAddr: true }); - g_forwardUdpServer.on("listening", function () { }); - g_forwardUdpServer.on("error", function () + GT.forwardUdpServer.on("listening", function () { }); + GT.forwardUdpServer.on("error", function () { - g_forwardUdpServer.close(); - g_forwardUdpServer = null; + GT.forwardUdpServer.close(); + GT.forwardUdpServer = null; }); - g_forwardUdpServer.on("message", function (originalMessage, remote) + GT.forwardUdpServer.on("message", function (originalMessage, remote) { // Decode enough to get the rig-name, so we know who to send to var message = Object.assign({}, originalMessage); var newMessage = {}; newMessage.magic_key = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); if (newMessage.magic_key == 0xadbccbda) { newMessage.schema_number = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.type = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Id = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); var instanceId = newMessage.Id; - if (instanceId in g_instances) + if (instanceId in GT.instances) { wsjtUdpMessage( originalMessage, originalMessage.length, - g_instances[instanceId].remote.port, - g_instances[instanceId].remote.address + GT.instances[instanceId].remote.port, + GT.instances[instanceId].remote.address ); } } }); - g_forwardUdpServer.bind(0); + GT.forwardUdpServer.bind(0); } function sendForwardUdpMessage(msg, length, port, address) { - if (g_forwardUdpServer) + if (GT.forwardUdpServer) { - g_forwardUdpServer.send(msg, 0, length, port, address); + GT.forwardUdpServer.send(msg, 0, length, port, address); } } function wsjtUdpMessage(msg, length, port, address) { - if (g_wsjtUdpServer) + if (GT.wsjtUdpServer) { - g_wsjtUdpServer.send(msg, 0, length, port, address); + GT.wsjtUdpServer.send(msg, 0, length, port, address); } } function checkWsjtxListener() { if ( - g_wsjtUdpServer == null || - (g_wsjtUdpSocketReady == false && g_wsjtUdpSocketError == true) + GT.wsjtUdpServer == null || + (GT.wsjtUdpSocketReady == false && GT.wsjtUdpSocketError == true) ) { - g_wsjtCurrentPort = -1; - g_wsjtCurrentIP = "none"; + GT.wsjtCurrentPort = -1; + GT.wsjtCurrentIP = "none"; } - updateWsjtxListener(g_appSettings.wsjtUdpPort); + updateWsjtxListener(GT.appSettings.wsjtUdpPort); } -var g_instances = {}; -var g_instancesIndex = Array(); +GT.instances = {}; +GT.instancesIndex = Array(); -var g_activeInstance = ""; -var g_activeIndex = 0; +GT.activeInstance = ""; +GT.activeIndex = 0; -var g_currentID = null; +GT.currentID = null; function updateWsjtxListener(port) { - if (port == g_wsjtCurrentPort && g_appSettings.wsjtIP == g_wsjtCurrentIP) { return; } - if (g_wsjtUdpServer != null) + if (port == GT.wsjtCurrentPort && GT.appSettings.wsjtIP == GT.wsjtCurrentIP) { return; } + if (GT.wsjtUdpServer != null) { - if (multicastEnable.checked == true && g_appSettings.wsjtIP != "") + if (multicastEnable.checked == true && GT.appSettings.wsjtIP != "") { try { - g_wsjtUdpServer.dropMembership(g_appSettings.wsjtIP); + GT.wsjtUdpServer.dropMembership(GT.appSettings.wsjtIP); } catch (e) { console.error(e); } } - g_wsjtUdpServer.close(); - g_wsjtUdpServer = null; - g_wsjtUdpSocketReady = false; + GT.wsjtUdpServer.close(); + GT.wsjtUdpServer = null; + GT.wsjtUdpSocketReady = false; } - if (g_closing == true) return; - g_wsjtUdpSocketError = false; + if (GT.closing == true) return; + GT.wsjtUdpSocketError = false; var dgram = require("dgram"); - g_wsjtUdpServer = dgram.createSocket({ + GT.wsjtUdpServer = dgram.createSocket({ type: "udp4", reuseAddr: true }); - if (multicastEnable.checked == true && g_appSettings.wsjtIP != "") + if (multicastEnable.checked == true && GT.appSettings.wsjtIP != "") { - g_wsjtUdpServer.on("listening", function () + GT.wsjtUdpServer.on("listening", function () { - var address = g_wsjtUdpServer.address(); - g_wsjtUdpServer.setBroadcast(true); - g_wsjtUdpServer.setMulticastTTL(128); - g_wsjtUdpServer.addMembership(g_appSettings.wsjtIP); - g_wsjtUdpSocketReady = true; + var address = GT.wsjtUdpServer.address(); + GT.wsjtUdpServer.setBroadcast(true); + GT.wsjtUdpServer.setMulticastTTL(128); + GT.wsjtUdpServer.addMembership(GT.appSettings.wsjtIP); + GT.wsjtUdpSocketReady = true; }); } else { - g_appSettings.multicast = false; - g_wsjtCurrentIP = g_appSettings.wsjtIP = ""; - g_wsjtUdpServer.on("listening", function () + GT.appSettings.multicast = false; + GT.wsjtCurrentIP = GT.appSettings.wsjtIP = ""; + GT.wsjtUdpServer.on("listening", function () { - g_wsjtUdpServer.setBroadcast(true); - g_wsjtUdpSocketReady = true; + GT.wsjtUdpServer.setBroadcast(true); + GT.wsjtUdpSocketReady = true; }); } - g_wsjtUdpServer.on("error", function () + GT.wsjtUdpServer.on("error", function () { - g_wsjtUdpServer.close(); - g_wsjtUdpServer = null; - g_wsjtUdpSocketReady = false; - g_wsjtUdpSocketError = true; + GT.wsjtUdpServer.close(); + GT.wsjtUdpServer = null; + GT.wsjtUdpSocketReady = false; + GT.wsjtUdpSocketError = true; }); - g_wsjtUdpServer.on("message", function (message, remote) + GT.wsjtUdpServer.on("message", function (message, remote) { - // if (g_closing == true) true; + // if (GT.closing == true) true; if ( typeof udpForwardEnable != "undefined" && @@ -13527,27 +13528,27 @@ function updateWsjtxListener(port) var newMessage = {}; newMessage.magic_key = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); if (newMessage.magic_key == 0xadbccbda) { newMessage.schema_number = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.type = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Id = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); var instanceId = newMessage.Id; - if (!(instanceId in g_instances)) + if (!(instanceId in GT.instances)) { - g_instances[instanceId] = {}; - g_instances[instanceId].valid = false; - g_instancesIndex.push(instanceId); - g_instances[instanceId].intId = g_instancesIndex.length - 1; - g_instances[instanceId].crEnable = true; - g_instances[instanceId].oldStatus = null; - g_instances[instanceId].status = null; - if (g_instancesIndex.length > 1) + GT.instances[instanceId] = {}; + GT.instances[instanceId].valid = false; + GT.instancesIndex.push(instanceId); + GT.instances[instanceId].intId = GT.instancesIndex.length - 1; + GT.instances[instanceId].crEnable = true; + GT.instances[instanceId].oldStatus = null; + GT.instances[instanceId].status = null; + if (GT.instancesIndex.length > 1) { multiRigCRDiv.style.display = "inline-block"; haltTXDiv.style.display = "inline-block"; @@ -13555,9 +13556,9 @@ function updateWsjtxListener(port) updateRosterInstances(); } var notify = false; - if (g_instances[instanceId].open == false) notify = true; - g_instances[instanceId].open = true; - g_instances[instanceId].remote = remote; + if (GT.instances[instanceId].open == false) notify = true; + GT.instances[instanceId].open = true; + GT.instances[instanceId].remote = remote; if (notify) updateRosterInstances(); @@ -13565,43 +13566,43 @@ function updateWsjtxListener(port) { newMessage.event = "Status"; newMessage.Frequency = decodeQUINT64(message); - newMessage.Band = Number(newMessage.Frequency / 1000000).formatBand(); - message = message.slice(g_qtToSplice); + newMessage.Band = formatBand(Number(newMessage.Frequency / 1000000)); + message = message.slice(GT.qtToSplice); newMessage.MO = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DXcall = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Report = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TxMode = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TxEnabled = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Transmitting = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Decoding = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.RxDF = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TxDF = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DEcall = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DEgrid = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DXgrid = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TxWatchdog = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Submode = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Fastmode = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); if (message.length > 0) { newMessage.SopMode = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else { @@ -13610,7 +13611,7 @@ function updateWsjtxListener(port) if (message.length > 0) { newMessage.FreqTol = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else { @@ -13619,7 +13620,7 @@ function updateWsjtxListener(port) if (message.length > 0) { newMessage.TRP = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else { @@ -13628,7 +13629,7 @@ function updateWsjtxListener(port) if (message.length > 0) { newMessage.ConfName = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else { @@ -13637,45 +13638,45 @@ function updateWsjtxListener(port) if (message.length > 0) { newMessage.TxMessage = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else { newMessage.TxMessage = null; } - g_instances[instanceId].oldStatus = g_instances[instanceId].status; - g_instances[instanceId].status = newMessage; - g_instances[instanceId].valid = true; + GT.instances[instanceId].oldStatus = GT.instances[instanceId].status; + GT.instances[instanceId].status = newMessage; + GT.instances[instanceId].valid = true; } - if (g_instances[instanceId].valid == true) + if (GT.instances[instanceId].valid == true) { if (newMessage.type == 2) { newMessage.event = "Decode"; newMessage.NW = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TM = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.SR = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DT = decodeQDOUBLE(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DF = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.MO = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Msg = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.LC = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.OA = decodeQUINT8(message); - message = message.slice(g_qtToSplice); - newMessage.OF = g_instances[instanceId].status.Frequency; - newMessage.OC = g_instances[instanceId].status.DEcall; - newMessage.OG = g_instances[instanceId].status.DEgrid; - newMessage.OM = g_instances[instanceId].status.MO; - newMessage.OB = g_instances[instanceId].status.Band; - newMessage.SP = g_instances[instanceId].status.SopMode; + message = message.slice(GT.qtToSplice); + newMessage.OF = GT.instances[instanceId].status.Frequency; + newMessage.OC = GT.instances[instanceId].status.DEcall; + newMessage.OG = GT.instances[instanceId].status.DEgrid; + newMessage.OM = GT.instances[instanceId].status.MO; + newMessage.OB = GT.instances[instanceId].status.Band; + newMessage.SP = GT.instances[instanceId].status.SopMode; } if (newMessage.type == 3) { @@ -13685,77 +13686,77 @@ function updateWsjtxListener(port) { newMessage.event = "QSO Logged"; newMessage.DateOff = decodeQUINT64(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TimeOff = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.timespecOff = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); if (newMessage.timespecOff == 2) { newMessage.offsetOff = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } newMessage.DXCall = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DXGrid = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Frequency = decodeQUINT64(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.MO = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.ReportSend = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.ReportRecieved = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TXPower = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Comments = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Name = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DateOn = decodeQUINT64(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TimeOn = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.timespecOn = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); if (newMessage.timespecOn == 2) { newMessage.offsetOn = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } if (message.length > 0) { newMessage.Operatorcall = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else newMessage.Operatorcall = ""; if (message.length > 0) { newMessage.Mycall = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else newMessage.Mycall = ""; if (message.length > 0) { newMessage.Mygrid = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else newMessage.Mygrid = ""; if (message.length > 0) { newMessage.ExchangeSent = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else newMessage.ExchangeSent = ""; if (message.length > 0) { newMessage.ExchangeReceived = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } else newMessage.ExchangeReceived = ""; } @@ -13767,73 +13768,73 @@ function updateWsjtxListener(port) { newMessage.event = "WSPRDecode"; newMessage.NW = decodeQUINT8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.TM = decodeQUINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.SR = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.DT = decodeQDOUBLE(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Frequency = decodeQUINT64(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Drift = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Callsign = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Grid = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.Power = decodeQINT32(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); newMessage.OA = decodeQUINT8(message); - message = message.slice(g_qtToSplice); - newMessage.OF = g_instances[instanceId].status.Frequency; - newMessage.OC = g_instances[instanceId].status.DEcall; - newMessage.OG = g_instances[instanceId].status.DEgrid; - newMessage.OM = g_instances[instanceId].status.MO; - newMessage.OB = g_instances[instanceId].status.Band; + message = message.slice(GT.qtToSplice); + newMessage.OF = GT.instances[instanceId].status.Frequency; + newMessage.OC = GT.instances[instanceId].status.DEcall; + newMessage.OG = GT.instances[instanceId].status.DEgrid; + newMessage.OM = GT.instances[instanceId].status.MO; + newMessage.OB = GT.instances[instanceId].status.Band; } if (newMessage.type == 12) { newMessage.event = "ADIF"; newMessage.ADIF = decodeQUTF8(message); - message = message.slice(g_qtToSplice); + message = message.slice(GT.qtToSplice); } - if (newMessage.type in g_wsjtHandlers) + if (newMessage.type in GT.wsjtHandlers) { newMessage.remote = remote; newMessage.instance = instanceId; lastMsgTimeDiv.innerHTML = "Received from " + newMessage.Id; - g_wsjtHandlers[newMessage.type](newMessage); - g_lastTimeSinceMessageInSeconds = parseInt(Date.now() / 1000); + GT.wsjtHandlers[newMessage.type](newMessage); + GT.lastTimeSinceMessageInSeconds = parseInt(Date.now() / 1000); } } } }); - g_wsjtUdpServer.bind(port); - g_wsjtCurrentPort = port; - g_wsjtCurrentIP = g_appSettings.wsjtIP; + GT.wsjtUdpServer.bind(port); + GT.wsjtCurrentPort = port; + GT.wsjtCurrentIP = GT.appSettings.wsjtIP; } function loadLookupDetails() { - lookupService.value = g_appSettings.lookupService; + lookupService.value = GT.appSettings.lookupService; if (lookupService.value == "QRZ") { - lookupLogin.value = g_appSettings.lookupLoginQrz; - lookupPassword.value = g_appSettings.lookupPasswordQrz; + lookupLogin.value = GT.appSettings.lookupLoginQrz; + lookupPassword.value = GT.appSettings.lookupPasswordQrz; } if (lookupService.value == "QRZCQ") { - lookupLogin.value = g_appSettings.lookupLoginCq; - lookupPassword.value = g_appSettings.lookupPasswordCq; + lookupLogin.value = GT.appSettings.lookupLoginCq; + lookupPassword.value = GT.appSettings.lookupPasswordCq; } if (lookupService.value == "HAMQTH") { - lookupLogin.value = g_appSettings.lookupLoginQth; - lookupPassword.value = g_appSettings.lookupPasswordQth; + lookupLogin.value = GT.appSettings.lookupLoginQth; + lookupPassword.value = GT.appSettings.lookupPasswordQth; } ValidateText(lookupLogin); ValidateText(lookupPassword); @@ -13843,69 +13844,69 @@ function loadLookupDetails() function lookupValueChanged(what) { - if (g_appSettings.lookupService != lookupService.value) + if (GT.appSettings.lookupService != lookupService.value) { - g_lastLookupCallsign = ""; + GT.lastLookupCallsign = ""; if (lookupService.value == "QRZ") { - lookupLogin.value = g_appSettings.lookupLoginQrz; - lookupPassword.value = g_appSettings.lookupPasswordQrz; + lookupLogin.value = GT.appSettings.lookupLoginQrz; + lookupPassword.value = GT.appSettings.lookupPasswordQrz; } if (lookupService.value == "QRZCQ") { - lookupLogin.value = g_appSettings.lookupLoginCq; - lookupPassword.value = g_appSettings.lookupPasswordCq; + lookupLogin.value = GT.appSettings.lookupLoginCq; + lookupPassword.value = GT.appSettings.lookupPasswordCq; } if (lookupService.value == "HAMQTH") { - lookupLogin.value = g_appSettings.lookupLoginQth; - lookupPassword.value = g_appSettings.lookupPasswordQth; + lookupLogin.value = GT.appSettings.lookupLoginQth; + lookupPassword.value = GT.appSettings.lookupPasswordQth; } } - g_appSettings.lookupService = lookupService.value; - g_appSettings.lookupCallookPreferred = lookupCallookPreferred.checked; + GT.appSettings.lookupService = lookupService.value; + GT.appSettings.lookupCallookPreferred = lookupCallookPreferred.checked; lookupQrzTestResult.innerHTML = ""; - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; if (lookupService.value == "CALLOOK") { lookupCredentials.style.display = "none"; } else lookupCredentials.style.display = "block"; if (ValidateText(lookupLogin) && ValidateText(lookupPassword)) { if (lookupService.value == "QRZ") { - g_appSettings.lookupLoginQrz = lookupLogin.value; - g_appSettings.lookupPasswordQrz = lookupPassword.value; + GT.appSettings.lookupLoginQrz = lookupLogin.value; + GT.appSettings.lookupPasswordQrz = lookupPassword.value; } if (lookupService.value == "QRZCQ") { - g_appSettings.lookupLoginCq = lookupLogin.value; - g_appSettings.lookupPasswordCq = lookupPassword.value; + GT.appSettings.lookupLoginCq = lookupLogin.value; + GT.appSettings.lookupPasswordCq = lookupPassword.value; } if (lookupService.value == "HAMQTH") { - g_appSettings.lookupLoginQth = lookupLogin.value; - g_appSettings.lookupPasswordQth = lookupPassword.value; + GT.appSettings.lookupLoginQth = lookupLogin.value; + GT.appSettings.lookupPasswordQth = lookupPassword.value; } } } -var g_lastLookupCallsign = ""; -var g_lookupTimeout = null; +GT.lastLookupCallsign = ""; +GT.lookupTimeout = null; function lookupCallsign(callsign, gridPass, useCache = true) { - if (g_mapSettings.offlineMode == true && useCache == false) return; - g_lastLookupCallsign = callsign; + if (GT.mapSettings.offlineMode == true && useCache == false) return; + GT.lastLookupCallsign = callsign; - if (g_lookupWindowHandle && g_lookupWindowInitialized) + if (GT.lookupWindowHandle && GT.lookupWindowInitialized) { - g_lookupWindowHandle.window.lookupCallsignInput.value = callsign; + GT.lookupWindowHandle.window.lookupCallsignInput.value = callsign; lookupValidateCallByElement("lookupCallsignInput"); } - if (g_lookupTimeout != null) + if (GT.lookupTimeout != null) { - nodeTimers.clearTimeout(g_lookupTimeout); - g_lookupTimeout = null; + nodeTimers.clearTimeout(GT.lookupTimeout); + GT.lookupTimeout = null; } - g_lookupTimeout = nodeTimers.setTimeout(searchLogForCallsign, 500, callsign); + GT.lookupTimeout = nodeTimers.setTimeout(searchLogForCallsign, 500, callsign); if (useCache) { @@ -13926,15 +13927,15 @@ function continueWithLookup(callsign, gridPass) "Looking up " + callsign + ", please wait..." ); - if (g_appSettings.lookupCallookPreferred) + if (GT.appSettings.lookupCallookPreferred) { var dxcc = callsignToDxcc(callsign); var where; var ccode = 0; - if (dxcc in g_dxccToAltName) + if (dxcc in GT.dxccToAltName) { - where = g_dxccToAltName[dxcc]; - ccode = g_dxccInfo[dxcc].ccode; + where = GT.dxccToAltName[dxcc]; + ccode = GT.dxccInfo[dxcc].ccode; } else where = "Unknown"; if (ccode == 840) @@ -13949,22 +13950,22 @@ function continueWithLookup(callsign, gridPass) ); } } - if (g_appSettings.lookupService != "CALLOOK") + if (GT.appSettings.lookupService != "CALLOOK") { - g_qrzLookupCallsign = callsign; - g_qrzLookupGrid = gridPass; + GT.qrzLookupCallsign = callsign; + GT.qrzLookupGrid = gridPass; if ( - g_qrzLookupSessionId == null || - timeNowSec() - g_sinceLastLookup > 3600 + GT.qrzLookupSessionId == null || + timeNowSec() - GT.sinceLastLookup > 3600 ) { - g_qrzLookupSessionId = null; - g_sinceLastLookup = timeNowSec(); + GT.qrzLookupSessionId = null; + GT.sinceLastLookup = timeNowSec(); GetSessionID(null, true); } else { - g_sinceLastLookup = timeNowSec(); + GT.sinceLastLookup = timeNowSec(); GetLookup(true); } } @@ -13973,10 +13974,10 @@ function continueWithLookup(callsign, gridPass) var dxcc = callsignToDxcc(callsign); var where; var ccode = 0; - if (dxcc in g_dxccToAltName) + if (dxcc in GT.dxccToAltName) { - where = g_dxccToAltName[dxcc]; - ccode = g_dxccInfo[dxcc].ccode; + where = GT.dxccToAltName[dxcc]; + ccode = GT.dxccInfo[dxcc].ccode; } else where = "Unknown"; if (ccode == 840) @@ -14018,7 +14019,7 @@ function callookResults(buffer, gridPass) { var callObject = {}; var dxcc = callsignToDxcc(results.current.callsign); - if (dxcc in g_dxccToAltName) callObject.land = g_dxccToAltName[dxcc]; + if (dxcc in GT.dxccToAltName) callObject.land = GT.dxccToAltName[dxcc]; callObject.type = results.type; callObject.call = results.current.callsign; callObject.dxcc = dxcc; @@ -14060,22 +14061,22 @@ function callookResults(buffer, gridPass) } else setLookupDiv("lookupInfoDiv", "Unknown Lookup Error"); } -var g_qrzLookupSessionId = null; -var g_qrzLookupCallsign = ""; -var g_qrzLookupGrid = ""; -var g_sinceLastLookup = 0; +GT.qrzLookupSessionId = null; +GT.qrzLookupCallsign = ""; +GT.qrzLookupGrid = ""; +GT.sinceLastLookup = 0; function GetSessionID(resultTd, useCache) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (resultTd != null) resultTd.innerHTML = "Testing"; - if (g_appSettings.lookupService == "QRZCQ") + if (GT.appSettings.lookupService == "QRZCQ") { getBuffer( "https://ssl.qrzcq.com/xml?username=" + - g_appSettings.lookupLoginCq + + GT.appSettings.lookupLoginCq + "&password=" + - encodeURIComponent(g_appSettings.lookupPasswordCq) + + encodeURIComponent(GT.appSettings.lookupPasswordCq) + "&agent=GridTracker1.18", qrzGetSessionCallback, resultTd, @@ -14084,13 +14085,13 @@ function GetSessionID(resultTd, useCache) useCache ); } - else if (g_appSettings.lookupService == "QRZ") + else if (GT.appSettings.lookupService == "QRZ") { getBuffer( "https://xmldata.qrz.com/xml/current/?username=" + - g_appSettings.lookupLoginQrz + + GT.appSettings.lookupLoginQrz + ";password=" + - encodeURIComponent(g_appSettings.lookupPasswordQrz), + encodeURIComponent(GT.appSettings.lookupPasswordQrz), qrzGetSessionCallback, resultTd, "https", @@ -14102,9 +14103,9 @@ function GetSessionID(resultTd, useCache) { getBuffer( "https://www.hamqth.com/xml.php?u=" + - g_appSettings.lookupLoginQth + + GT.appSettings.lookupLoginQth + "&p=" + - encodeURIComponent(g_appSettings.lookupPasswordQth), + encodeURIComponent(GT.appSettings.lookupPasswordQth), hamQthGetSessionCallback, resultTd, "https", @@ -14127,33 +14128,33 @@ function hamQthGetSessionCallback(buffer, resultTd) if (json.session.hasOwnProperty("session_id")) { result = "Valid"; - g_qrzLookupSessionId = json.session.session_id; + GT.qrzLookupSessionId = json.session.session_id; } else { result = "" + json.session.error + ""; - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; } } else { result = "Invalid Response"; - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; } } else { result = "Unknown Error"; - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; } if (resultTd == null) { // It's a true session Request - SessionResponse(g_qrzLookupSessionId, result); + SessionResponse(GT.qrzLookupSessionId, result); } else { - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; resultTd.innerHTML = result; } } @@ -14171,29 +14172,29 @@ function qrzGetSessionCallback(buffer, resultTd, useCache) if (json.Session.hasOwnProperty("Key")) { result = "Valid"; - g_qrzLookupSessionId = json.Session.Key; + GT.qrzLookupSessionId = json.Session.Key; } else { result = "" + json.Session.Error + ""; - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; } } else { result = "Invalid Response"; - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; } } else { result = "Unknown Error"; - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; } if (resultTd == null) { // It's a true session Request - SessionResponse(g_qrzLookupSessionId, result, useCache); + SessionResponse(GT.qrzLookupSessionId, result, useCache); } else resultTd.innerHTML = result; } @@ -14213,30 +14214,30 @@ function SessionResponse(newKey, result, useCache) function GetLookup(useCache) { - if (g_appSettings.lookupService == "QRZCQ") + if (GT.appSettings.lookupService == "QRZCQ") { getBuffer( "https://ssl.qrzcq.com/xml?s=" + - g_qrzLookupSessionId + + GT.qrzLookupSessionId + "&callsign=" + - g_qrzLookupCallsign + + GT.qrzLookupCallsign + "&agent=GridTracker", qrzLookupResults, - g_qrzLookupGrid, + GT.qrzLookupGrid, "https", 443, useCache ); } - else if (g_appSettings.lookupService == "QRZ") + else if (GT.appSettings.lookupService == "QRZ") { getBuffer( "http://xmldata.qrz.com/xml/current/?s=" + - g_qrzLookupSessionId + + GT.qrzLookupSessionId + ";callsign=" + - g_qrzLookupCallsign, + GT.qrzLookupCallsign, qrzLookupResults, - g_qrzLookupGrid, + GT.qrzLookupGrid, "http", 80, useCache @@ -14246,12 +14247,12 @@ function GetLookup(useCache) { getBuffer( "https://www.hamqth.com/xml.php?id=" + - g_qrzLookupSessionId + + GT.qrzLookupSessionId + "&callsign=" + - g_qrzLookupCallsign + + GT.qrzLookupCallsign + "&prg=GridTracker", qthHamLookupResults, - g_qrzLookupGrid, + GT.qrzLookupGrid, "https", 443, useCache @@ -14279,7 +14280,7 @@ function qthHamLookupResults(buffer, gridPass, useCache) } else { - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; setLookupDiv( "lookupInfoDiv", "
No result for callsign

" @@ -14289,7 +14290,7 @@ function qthHamLookupResults(buffer, gridPass, useCache) else { setLookupDiv("lookupInfoDiv", buffer); - g_qrzLookupSessionId = null; + GT.qrzLookupSessionId = null; } } @@ -14310,7 +14311,7 @@ function qrzLookupResults(buffer, gridPass, useCache) delete json.Callsign.callsign; } if (json.Callsign.hasOwnProperty("call")) call = json.Callsign.call; - if (g_appSettings.lookupService == "QRZ") + if (GT.appSettings.lookupService == "QRZ") { json.Callsign.source = "
Source
"; worker += "
"; - worker += getLookProp(lookup, "call").toUpperCase().formatCallsign(); + worker += formatCallsign(getLookProp(lookup, "call").toUpperCase()); worker += ""; - if (lookup.dxcc > 0 && lookup.dxcc in g_dxccInfo) + if (lookup.dxcc > 0 && lookup.dxcc in GT.dxccInfo) { worker += ""; } worker += "
"; worker += getLookProp(lookup, "addrAttn"); - g_lastLookupAddress += getLookProp(lookup, "addrAttn") + "\n"; + GT.lastLookupAddress += getLookProp(lookup, "addrAttn") + "\n"; worker += "
"; worker += "" + getLookProp(lookup, "name") + ""; - g_lastLookupAddress += getLookProp(lookup, "name") + "\n"; + GT.lastLookupAddress += getLookProp(lookup, "name") + "\n"; worker += "
"; worker += getLookProp(lookup, "addr1"); - g_lastLookupAddress += getLookProp(lookup, "addr1") + "\n"; + GT.lastLookupAddress += getLookProp(lookup, "addr1") + "\n"; worker += "
"; var country = getLookProp(lookup, "country"); worker += country; - g_lastLookupAddress += country + "\n"; + GT.lastLookupAddress += country + "\n"; worker += "
DXCC" + - getLookProp(lookup, "dxcc") + " - " + g_dxccToAltName[getLookProp(lookup, "dxcc")] + + getLookProp(lookup, "dxcc") + " - " + GT.dxccToAltName[getLookProp(lookup, "dxcc")] + "
Distance" + parseInt( MyCircle.distance( - g_myLat, - g_myLon, + GT.myLat, + GT.myLon, Number(lookup.lat), Number(lookup.lon), distanceUnit.value ) * MyCircle.validateRadius(distanceUnit.value) ) + distanceUnit.value.toLowerCase() + "
Azimuth" + bearing + "°
"; @@ -15123,7 +15124,7 @@ function searchLogForCallsign(call) worker += ""; - if (Object.keys(g_blockedCQ).length > 0) + if (Object.keys(CR.blockedCQ).length > 0) { clearString = ""; @@ -1531,7 +1529,7 @@ function openIgnoreEdit() "px;'>
Last QSO"; worker += "" + list[lastRow].band + "," + @@ -15135,23 +15136,23 @@ function searchLogForCallsign(call) worker += "
" + - g_dxccToAltName[dxcc] + + GT.dxccToAltName[dxcc] + " (" + - g_dxccInfo[dxcc].pp + + GT.dxccInfo[dxcc].pp + ")"; - for (var band in g_colorBands) + for (var band in GT.colorBands) { - if (String(dxcc) + "|" + g_colorBands[band] in g_tracker.worked.dxcc) + if (String(dxcc) + "|" + GT.colorBands[band] in GT.tracker.worked.dxcc) { var strike = ""; - if (String(dxcc) + "|" + g_colorBands[band] in g_tracker.confirmed.dxcc) { strike = "text-decoration: underline overline;"; } + if (String(dxcc) + "|" + GT.colorBands[band] in GT.tracker.confirmed.dxcc) { strike = "text-decoration: underline overline;"; } worker += "
" + - g_colorBands[band] + + GT.colorBands[band] + "
 "; } } @@ -15220,24 +15221,24 @@ function purgeUserFiles(userDir, systemDir) function mediaCheck() { - var homeDir = (g_platform == "windows") ? process.env.USERPROFILE : process.env.HOME; + var homeDir = (GT.platform == "windows") ? process.env.USERPROFILE : process.env.HOME; - g_appData = path.join(homeDir, "OneDrive\\Dokumente"); - if (!is_dir(g_appData)) + GT.appData = path.join(homeDir, "OneDrive\\Dokumente"); + if (!is_dir(GT.appData)) { - g_appData = path.join(homeDir, "OneDrive\\Documents"); - if (!is_dir(g_appData)) + GT.appData = path.join(homeDir, "OneDrive\\Documents"); + if (!is_dir(GT.appData)) { - g_appData = path.join(homeDir, "Dokumente") - if (!is_dir(g_appData)) + GT.appData = path.join(homeDir, "Dokumente") + if (!is_dir(GT.appData)) { - g_appData = path.join(homeDir, "Documents") - if (!is_dir(g_appData)) + GT.appData = path.join(homeDir, "Documents") + if (!is_dir(GT.appData)) { - if (g_appSettings.savedAppData != null) + if (GT.appSettings.savedAppData != null) { - g_appData = g_appSettings.savedAppData; - if (!is_dir(g_appData)) return false; + GT.appData = GT.appSettings.savedAppData; + if (!is_dir(GT.appData)) return false; } else { @@ -15248,23 +15249,23 @@ function mediaCheck() } } - g_appData = path.join(g_appData, "GridTracker"); - g_userMediaDir = path.join(g_appData, "media"); - g_jsonDir = path.join(g_appData, "data"); - g_screenshotDir = path.join(g_appData, "screenshots"); - g_scriptDir = path.join(g_appData, "scripts"); + GT.appData = path.join(GT.appData, "GridTracker"); + GT.userMediaDir = path.join(GT.appData, "media"); + GT.jsonDir = path.join(GT.appData, "data"); + GT.screenshotDir = path.join(GT.appData, "screenshots"); + GT.scriptDir = path.join(GT.appData, "scripts"); - g_NWappData = path.join(nw.App.dataPath, "Ginternal"); + GT.NWappData = path.join(nw.App.dataPath, "Ginternal"); try { var tryDirectory = ""; var userdirs = [ - g_appData, - g_NWappData, - g_screenshotDir, - g_scriptDir, - g_userMediaDir + GT.appData, + GT.NWappData, + GT.screenshotDir, + GT.scriptDir, + GT.userMediaDir ]; for (var dir of userdirs) { @@ -15283,13 +15284,13 @@ function mediaCheck() nw.App.quit(); } - g_jsonDir += g_dirSeperator; - g_NWappData += g_dirSeperator; - g_screenshotDir += g_dirSeperator; - g_scriptDir += g_dirSeperator; + GT.jsonDir += GT.dirSeperator; + GT.NWappData += GT.dirSeperator; + GT.screenshotDir += GT.dirSeperator; + GT.scriptDir += GT.dirSeperator; - g_qsoLogFile = path.join(g_appData, "GridTracker_QSO.adif"); - g_LoTWLogFile = path.join(g_appData, "LogbookOfTheWorld.adif"); + GT.qsoLogFile = path.join(GT.appData, "GridTracker_QSO.adif"); + GT.LoTWLogFile = path.join(GT.appData, "LogbookOfTheWorld.adif"); logEventMedia.appendChild(newOption("none", "None")); msgAlertMedia.appendChild(newOption("none", "Select File")); @@ -15302,14 +15303,14 @@ function mediaCheck() huntStatesNotifyMedia.appendChild(newOption("none", "Select File")); huntRosterNotifyMedia.appendChild(newOption("none", "Select File")); - purgeUserFiles(g_userMediaDir, g_gtMediaDir); + purgeUserFiles(GT.userMediaDir, GT.gtMediaDir); // add all the files in both directories to the list, user filenames // override system filenames later var mediaFiles = [].concat( - fs.readdirSync(g_userMediaDir), - fs.readdirSync(g_gtMediaDir) + fs.readdirSync(GT.userMediaDir), + fs.readdirSync(GT.gtMediaDir) ); mediaFiles.forEach((filename) => { @@ -15327,19 +15328,19 @@ function mediaCheck() }); var modeData = fs.readFileSync("./data/modes.json"); - g_modes = JSON.parse(modeData); - for (var key in g_modes) + GT.modes = JSON.parse(modeData); + for (var key in GT.modes) { gtModeFilter.appendChild(newOption(key)); } modeData = fs.readFileSync("./data/modes-phone.json"); - g_modes_phone = JSON.parse(modeData); + GT.modes_phone = JSON.parse(modeData); initQSOdata(); - g_QSOhash = {}; - g_QSLcount = 0; - g_QSOcount = 0; + GT.QSOhash = {}; + GT.QSLcount = 0; + GT.QSOcount = 0; // Old log filenames, no longer referenced tryToDeleteLog("lotw_QSL.adif"); @@ -15348,36 +15349,36 @@ function mediaCheck() try { - let fileExists = fs.existsSync(g_NWappData + "internal_qso.json"); - if (fileExists == true && g_startVersion > 1221123) + let fileExists = fs.existsSync(GT.NWappData + "internal_qso.json"); + if (fileExists == true && GT.startVersion > 1221123) { - var data = JSON.parse(fs.readFileSync(g_NWappData + "internal_qso.json")); - g_tracker = data.tracker; + var data = JSON.parse(fs.readFileSync(GT.NWappData + "internal_qso.json")); + GT.tracker = data.tracker; - if (typeof g_tracker.worked.px == "undefined") + if (typeof GT.tracker.worked.px == "undefined") { - g_tracker.worked.px = {}; - g_tracker.confirmed.px = {}; + GT.tracker.worked.px = {}; + GT.tracker.confirmed.px = {}; } - if (typeof g_tracker.worked.pota == "undefined") + if (typeof GT.tracker.worked.pota == "undefined") { - g_tracker.worked.pota = {}; - g_tracker.confirmed.pota = {}; + GT.tracker.worked.pota = {}; + GT.tracker.confirmed.pota = {}; } for (const i in data.g_QSOhash) { - g_QSOhash[i] = fillObjectFromTemplate(def_qso, data.g_QSOhash[i]); - g_QSOcount++; - if (g_QSOhash[i].confirmed) g_QSLcount++; + GT.QSOhash[i] = fillObjectFromTemplate(def_qso, data.g_QSOhash[i]); + GT.QSOcount++; + if (GT.QSOhash[i].confirmed) GT.QSLcount++; } - fs.unlinkSync(g_NWappData + "internal_qso.json"); + fs.unlinkSync(GT.NWappData + "internal_qso.json"); } else if (fileExists == true) { - fs.unlinkSync(g_NWappData + "internal_qso.json"); + fs.unlinkSync(GT.NWappData + "internal_qso.json"); } loadReceptionReports(); @@ -15399,10 +15400,10 @@ function newOption(value, text) return option; } -var g_rosterSpot = false; +GT.rosterSpot = false; function setRosterSpot(enabled) { - g_rosterSpot = enabled; + GT.rosterSpot = enabled; } function saveReceptionReports() @@ -15410,8 +15411,8 @@ function saveReceptionReports() try { fs.writeFileSync( - g_NWappData + "spots.json", - JSON.stringify(g_receptionReports) + GT.NWappData + "spots.json", + JSON.stringify(GT.receptionReports) ); } catch (e) @@ -15425,17 +15426,17 @@ function loadReceptionReports() try { var clear = true; - if (fs.existsSync(g_NWappData + "spots.json")) + if (fs.existsSync(GT.NWappData + "spots.json")) { - g_receptionReports = JSON.parse( - fs.readFileSync(g_NWappData + "spots.json") + GT.receptionReports = JSON.parse( + fs.readFileSync(GT.NWappData + "spots.json") ); - if (timeNowSec() - g_receptionReports.lastDownloadTimeSec <= 86400) { clear = false; } + if (timeNowSec() - GT.receptionReports.lastDownloadTimeSec <= 86400) { clear = false; } } if (clear == true) { - g_receptionReports = { + GT.receptionReports = { lastDownloadTimeSec: 0, lastSequenceNumber: "0", spots: {} @@ -15444,7 +15445,7 @@ function loadReceptionReports() } catch (e) { - g_receptionReports = { + GT.receptionReports = { lastDownloadTimeSec: 0, lastSequenceNumber: "0", spots: {} @@ -15454,24 +15455,24 @@ function loadReceptionReports() function pskSpotCheck(timeSec) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (myDEcall == null || myDEcall == "NOCALL" || myDEcall == "") return; if ( - (g_spotView > 0 || g_rosterSpot) && - (g_receptionReports.lastDownloadTimeSec < g_lastTrasmissionTimeSec) && + (GT.spotView > 0 || GT.rosterSpot) && + (GT.receptionReports.lastDownloadTimeSec < GT.lastTrasmissionTimeSec) && ( - timeSec - g_receptionReports.lastDownloadTimeSec > PSKREPORTER_INTERVAL_IN_SECONDS || - g_receptionReports.lastDownloadTimeSec > timeSec + timeSec - GT.receptionReports.lastDownloadTimeSec > PSKREPORTER_INTERVAL_IN_SECONDS || + GT.receptionReports.lastDownloadTimeSec > timeSec ) ) { - g_receptionReports.lastDownloadTimeSec = timeSec; - localStorage.receptionSettings = JSON.stringify(g_receptionSettings); + GT.receptionReports.lastDownloadTimeSec = timeSec; + localStorage.receptionSettings = JSON.stringify(GT.receptionSettings); spotRefreshDiv.innerHTML = "…refreshing…"; getBuffer( - `https://retrieve.pskreporter.info/query?rronly=1&lastseqno=${g_receptionReports.lastSequenceNumber}` + + `https://retrieve.pskreporter.info/query?rronly=1&lastseqno=${GT.receptionReports.lastSequenceNumber}` + `&senderCallsign=${encodeURIComponent(myRawCall)}` + `&appcontact=${encodeURIComponent(`GT-${pjson.version}`)}`, pskSpotResults, @@ -15480,11 +15481,11 @@ function pskSpotCheck(timeSec) 443 ); } - else if (g_spotView > 0) + else if (GT.spotView > 0) { if ( - g_lastTrasmissionTimeSec < g_receptionReports.lastDownloadTimeSec && - (timeSec - g_receptionReports.lastDownloadTimeSec) > PSKREPORTER_INTERVAL_IN_SECONDS + GT.lastTrasmissionTimeSec < GT.receptionReports.lastDownloadTimeSec && + (timeSec - GT.receptionReports.lastDownloadTimeSec) > PSKREPORTER_INTERVAL_IN_SECONDS ) { spotRefreshDiv.innerHTML = "No recent TX"; @@ -15493,7 +15494,7 @@ function pskSpotCheck(timeSec) { spotRefreshDiv.innerHTML = "Refresh: " + - Number(PSKREPORTER_INTERVAL_IN_SECONDS - (timeSec - g_receptionReports.lastDownloadTimeSec)).toDHMS(); + toDHMS(Number(PSKREPORTER_INTERVAL_IN_SECONDS - (timeSec - GT.receptionReports.lastDownloadTimeSec))); } } } @@ -15508,7 +15509,7 @@ function pskSpotResults(buffer, flag) var json = XML2jsobj(oDOM.documentElement); if ("lastSequenceNumber" in json) { - g_receptionReports.lastSequenceNumber = json.lastSequenceNumber.value; + GT.receptionReports.lastSequenceNumber = json.lastSequenceNumber.value; if ("receptionReport" in json) { @@ -15521,17 +15522,17 @@ function pskSpotResults(buffer, flag) var mode = json.receptionReport[key].mode; var grid = json.receptionReport[key].receiverLocator.substr(0, 6); if (grid.length < 4) { continue; } - var band = Number(parseInt(json.receptionReport[key].frequency) / 1000000).formatBand(); + var band = formatBand(Number(parseInt(json.receptionReport[key].frequency) / 1000000)); var hash = call + mode + band + grid.substr(0, 4); - if (hash in g_receptionReports.spots) + if (hash in GT.receptionReports.spots) { - report = g_receptionReports.spots[hash]; + report = GT.receptionReports.spots[hash]; if (parseInt(json.receptionReport[key].flowStartSeconds) < report.when) { continue; } } else { - report = g_receptionReports.spots[hash] = {}; + report = GT.receptionReports.spots[hash] = {}; report.call = call; report.band = band; report.grid = grid.toUpperCase(); @@ -15556,43 +15557,43 @@ function pskSpotResults(buffer, flag) } } - g_receptionReports.lastDownloadTimeSec = timeNowSec(); + GT.receptionReports.lastDownloadTimeSec = timeNowSec(); - localStorage.receptionSettings = JSON.stringify(g_receptionSettings); + localStorage.receptionSettings = JSON.stringify(GT.receptionSettings); redrawSpots(); - if (g_rosterSpot) goProcessRoster(); + if (GT.rosterSpot) goProcessRoster(); } -var g_oamsSpotTimeout = null; +GT.oamsSpotTimeout = null; function addNewOAMSSpot(cid, db, frequency, band, mode) { - if (g_oamsSpotTimeout !== null) + if (GT.oamsSpotTimeout !== null) { - nodeTimers.clearTimeout(g_oamsSpotTimeout); - g_oamsSpotTimeout = null; + nodeTimers.clearTimeout(GT.oamsSpotTimeout); + GT.oamsSpotTimeout = null; } var report; - var call = g_gtFlagPins[cid].call; - var grid = g_gtFlagPins[cid].grid.substr(0, 6); + var call = GT.gtFlagPins[cid].call; + var grid = GT.gtFlagPins[cid].grid.substr(0, 6); var hash = call + mode + band + grid.substr(0, 4); - if (hash in g_receptionReports.spots) + if (hash in GT.receptionReports.spots) { - report = g_receptionReports.spots[hash]; + report = GT.receptionReports.spots[hash]; } else { - report = g_receptionReports.spots[hash] = {}; + report = GT.receptionReports.spots[hash] = {}; report.call = call; report.band = band; report.grid = grid; report.mode = mode; } - report.dxcc = g_gtFlagPins[cid].dxcc; + report.dxcc = GT.gtFlagPins[cid].dxcc; report.when = timeNowSec(); report.snr = Number(db); report.freq = frequency; @@ -15602,7 +15603,7 @@ function addNewOAMSSpot(cid, db, frequency, band, mode) if (SNR < 0) SNR = 0; report.color = SNR; - g_oamsSpotTimeout = nodeTimers.setTimeout(redrawSpots, 250); + GT.oamsSpotTimeout = nodeTimers.setTimeout(redrawSpots, 250); } function spotFeature(center) @@ -15615,7 +15616,7 @@ function spotFeature(center) ); } -var g_spotTotalCount = 0; +GT.spotTotalCount = 0; function createSpot(report, key, fromPoint, addToLayer = true) { @@ -15631,11 +15632,11 @@ function createSpot(report, key, fromPoint, addToLayer = true) var spot = spotFeature([LL.o, LL.a]); - var colorNoAlpha = "#" + g_bandToColor[report.band]; + var colorNoAlpha = "#" + GT.bandToColor[report.band]; var colorAlpha = intAlphaToRGB(colorNoAlpha, report.color); var spotColor = colorAlpha; - var workingColor = g_mapSettings.nightMapEnable && g_nightTime ? g_receptionSettings.pathNightColor : g_receptionSettings.pathColor; + var workingColor = GT.mapSettings.nightMapEnable && GT.nightTime ? GT.receptionSettings.pathNightColor : GT.receptionSettings.pathColor; if (workingColor != -1) { @@ -15662,7 +15663,7 @@ function createSpot(report, key, fromPoint, addToLayer = true) spot.setStyle(featureStyle); spot.spot = key; spot.size = 6; // Mouseover detection - g_layerSources["psk-spots"].addFeature(spot); + GT.layerSources["psk-spots"].addFeature(spot); var toPoint = ol.proj.fromLonLat([LL.o, LL.a]); @@ -15673,18 +15674,18 @@ function createSpot(report, key, fromPoint, addToLayer = true) weight: report.color / 255 // e.g. temperature }); - g_layerSources["psk-heat"].addFeature(pointFeature); + GT.layerSources["psk-heat"].addFeature(pointFeature); - if (g_receptionSettings.viewPaths && g_receptionSettings.spotWidth > 0) + if (GT.receptionSettings.viewPaths && GT.receptionSettings.spotWidth > 0) { - var strokeWeight = g_receptionSettings.spotWidth; + var strokeWeight = GT.receptionSettings.spotWidth; var flightColor = workingColor == -1 ? colorNoAlpha + "BB" - : g_mapSettings.nightMapEnable && g_nightTime - ? g_spotNightFlightColor - : g_spotFlightColor; + : GT.mapSettings.nightMapEnable && GT.nightTime + ? GT.spotNightFlightColor + : GT.spotFlightColor; flightFeature( [fromPoint, toPoint], @@ -15708,39 +15709,39 @@ function redrawSpots() { var shouldSave = false; var now = timeNowSec(); - g_spotTotalCount = 0; - g_layerSources["psk-spots"].clear(); - g_layerSources["psk-flights"].clear(); - g_layerSources["psk-hop"].clear(); - g_layerSources["psk-heat"].clear(); + GT.spotTotalCount = 0; + GT.layerSources["psk-spots"].clear(); + GT.layerSources["psk-flights"].clear(); + GT.layerSources["psk-hop"].clear(); + GT.layerSources["psk-heat"].clear(); var fromPoint = getPoint(myRawGrid); - if (g_receptionSettings.mergeSpots == false) + if (GT.receptionSettings.mergeSpots == false) { - var spot = iconFeature(fromPoint, g_gtFlagIcon, 100); + var spot = iconFeature(fromPoint, GT.gtFlagIcon, 100); - g_layerSources["psk-spots"].addFeature(spot); - g_layerSources["psk-heat"].addFeature(spot); + GT.layerSources["psk-spots"].addFeature(spot); + GT.layerSources["psk-heat"].addFeature(spot); } - for (var key in g_receptionReports.spots) + for (var key in GT.receptionReports.spots) { - report = g_receptionReports.spots[key]; + report = GT.receptionReports.spots[key]; if ((now - report.when > 86400) || (report.grid.length < 4)) { - delete g_receptionReports.spots[key]; + delete GT.receptionReports.spots[key]; shouldSave = true; continue; } if (validateMapBandAndMode(report.band, report.mode)) { - if (now - report.when <= g_receptionSettings.viewHistoryTimeSec) + if (now - report.when <= GT.receptionSettings.viewHistoryTimeSec) { createSpot(report, key, fromPoint); - g_spotTotalCount++; + GT.spotTotalCount++; } } } @@ -15754,19 +15755,19 @@ function redrawSpots() function updateSpotCountDiv() { - spotCountDiv.innerHTML = "Spots: " + g_spotTotalCount; + spotCountDiv.innerHTML = "Spots: " + GT.spotTotalCount; } -var g_spotFlightColor = "#FFFFFFBB"; -var g_spotNightFlightColor = "#FFFFFFBB"; +GT.spotFlightColor = "#FFFFFFBB"; +GT.spotNightFlightColor = "#FFFFFFBB"; function changeSpotValues() { - g_receptionSettings.viewHistoryTimeSec = parseInt(spotHistoryTimeValue.value) * 60; - spotHistoryTimeTd.innerHTML = "Max Age: " + Number(g_receptionSettings.viewHistoryTimeSec).toDHM(); - g_receptionSettings.viewPaths = spotPathsValue.checked; + GT.receptionSettings.viewHistoryTimeSec = parseInt(spotHistoryTimeValue.value) * 60; + spotHistoryTimeTd.innerHTML = "Max Age: " + toDHM(Number(GT.receptionSettings.viewHistoryTimeSec)); + GT.receptionSettings.viewPaths = spotPathsValue.checked; - if (g_receptionSettings.viewPaths) + if (GT.receptionSettings.viewPaths) { spotPathWidthDiv.style.display = "inline-block"; } @@ -15775,32 +15776,32 @@ function changeSpotValues() spotPathWidthDiv.style.display = "none"; } - g_receptionSettings.mergeSpots = spotMergeValue.checked; - localStorage.receptionSettings = JSON.stringify(g_receptionSettings); + GT.receptionSettings.mergeSpots = spotMergeValue.checked; + localStorage.receptionSettings = JSON.stringify(GT.receptionSettings); - setTrophyOverlay(g_currentOverlay); + setTrophyOverlay(GT.currentOverlay); updateSpotView(); - if (g_rosterSpot) goProcessRoster(); + if (GT.rosterSpot) goProcessRoster(); } function mapTransChange() { - g_mapSettings.mapTrans = mapTransValue.value; + GT.mapSettings.mapTrans = mapTransValue.value; - mapTransTd.innerHTML = String(100 - parseInt(((g_mapSettings.mapTrans * 255) / 255) * 100)) + "%"; - mapSettingsDiv.style.backgroundColor = "rgba(0,0,0, " + g_mapSettings.mapTrans + ")"; + mapTransTd.innerHTML = String(100 - parseInt(((GT.mapSettings.mapTrans * 255) / 255) * 100)) + "%"; + mapSettingsDiv.style.backgroundColor = "rgba(0,0,0, " + GT.mapSettings.mapTrans + ")"; } function spotPathChange() { - g_receptionSettings.pathColor = spotPathColorValue.value; - var pathColor = g_receptionSettings.pathColor < 1 + GT.receptionSettings.pathColor = spotPathColorValue.value; + var pathColor = GT.receptionSettings.pathColor < 1 ? "#000" - : g_receptionSettings.pathColor == 361 + : GT.receptionSettings.pathColor == 361 ? "#FFF" - : "hsl(" + g_receptionSettings.pathColor + ", 100%, 50%)"; + : "hsl(" + GT.receptionSettings.pathColor + ", 100%, 50%)"; - if (g_receptionSettings.pathColor > 0) + if (GT.receptionSettings.pathColor > 0) { spotPathColorDiv.style.color = "#000"; spotPathColorDiv.style.backgroundColor = pathColor; @@ -15810,24 +15811,24 @@ function spotPathChange() spotPathColorDiv.style.color = "#FFF"; spotPathColorDiv.style.backgroundColor = pathColor; } - if (g_receptionSettings.pathColor == -1) { spotPathInfoTd.innerHTML = "PSK-Reporter Palette"; } + if (GT.receptionSettings.pathColor == -1) { spotPathInfoTd.innerHTML = "PSK-Reporter Palette"; } else spotPathInfoTd.innerHTML = ""; - g_spotFlightColor = - g_receptionSettings.pathColor < 1 + GT.spotFlightColor = + GT.receptionSettings.pathColor < 1 ? "#0000000BB" - : g_receptionSettings.pathColor == 361 + : GT.receptionSettings.pathColor == 361 ? "#FFFFFFBB" - : "hsla(" + g_receptionSettings.pathColor + ", 100%, 50%,0.73)"; + : "hsla(" + GT.receptionSettings.pathColor + ", 100%, 50%,0.73)"; - g_receptionSettings.pathNightColor = spotNightPathColorValue.value; + GT.receptionSettings.pathNightColor = spotNightPathColorValue.value; var pathNightColor = - g_receptionSettings.pathNightColor < 1 + GT.receptionSettings.pathNightColor < 1 ? "#000" - : g_receptionSettings.pathNightColor == 361 + : GT.receptionSettings.pathNightColor == 361 ? "#FFF" - : "hsl(" + g_receptionSettings.pathNightColor + ", 100%, 50%)"; - if (g_receptionSettings.pathNightColor > 0) + : "hsl(" + GT.receptionSettings.pathNightColor + ", 100%, 50%)"; + if (GT.receptionSettings.pathNightColor > 0) { spotNightPathColorDiv.style.color = "#000"; spotNightPathColorDiv.style.backgroundColor = pathNightColor; @@ -15837,19 +15838,19 @@ function spotPathChange() spotNightPathColorDiv.style.color = "#FFF"; spotNightPathColorDiv.style.backgroundColor = pathNightColor; } - if (g_receptionSettings.pathNightColor == -1) { spotNightPathInfoTd.innerHTML = "PSK-Reporter Palette"; } + if (GT.receptionSettings.pathNightColor == -1) { spotNightPathInfoTd.innerHTML = "PSK-Reporter Palette"; } else spotNightPathInfoTd.innerHTML = ""; - g_spotNightFlightColor = - g_receptionSettings.pathNightColor < 1 + GT.spotNightFlightColor = + GT.receptionSettings.pathNightColor < 1 ? "#0000000BB" - : g_receptionSettings.pathNightColor == 361 + : GT.receptionSettings.pathNightColor == 361 ? "#FFFFFFBB" - : "hsla(" + g_receptionSettings.pathNightColor + ", 100%, 50%,0.73)"; + : "hsla(" + GT.receptionSettings.pathNightColor + ", 100%, 50%,0.73)"; - spotWidthTd.innerHTML = g_receptionSettings.spotWidth = spotWidthValue.value; + spotWidthTd.innerHTML = GT.receptionSettings.spotWidth = spotWidthValue.value; - localStorage.receptionSettings = JSON.stringify(g_receptionSettings); + localStorage.receptionSettings = JSON.stringify(GT.receptionSettings); } function toggleSpotOverGrids() @@ -15870,10 +15871,10 @@ function toggleSpotPaths() var spotPaths = spotPathsValue.checked == true ? 1 : 0; spotPaths ^= 1; spotPathsValue.checked = spotPaths == 1; - g_receptionSettings.viewPaths = spotPathsValue.checked; - localStorage.receptionSettings = JSON.stringify(g_receptionSettings); + GT.receptionSettings.viewPaths = spotPathsValue.checked; + localStorage.receptionSettings = JSON.stringify(GT.receptionSettings); - if (g_receptionSettings.viewPaths) + if (GT.receptionSettings.viewPaths) { spotPathWidthDiv.style.display = "inline-block"; } @@ -15886,27 +15887,27 @@ function toggleSpotPaths() function setSpotImage() { - spotsButtonImg.src = g_spotImageArray[g_spotView]; - spotsButtonImg.style.filter = (g_spotView == 0) ? "grayscale(1)" : ""; + spotsButtonImg.src = GT.spotImageArray[GT.spotView]; + spotsButtonImg.style.filter = (GT.spotView == 0) ? "grayscale(1)" : ""; } function cycleSpotsView() { - g_spotView++; - g_spotView %= 3; + GT.spotView++; + GT.spotView %= 3; - g_appSettings.spotView = g_spotView; + GT.appSettings.spotView = GT.spotView; setSpotImage(); - setTrophyOverlay(g_currentOverlay); + setTrophyOverlay(GT.currentOverlay); updateSpotView(); } function toggleCRScript() { - g_crScript ^= 1; - g_appSettings.crScript = g_crScript; - if (g_crScript == 1) + GT.crScript ^= 1; + GT.appSettings.crScript = GT.crScript; + if (GT.crScript == 1) { addLastTraffic( "Call Roster Script Enabled" @@ -15923,28 +15924,28 @@ function toggleCRScript() function updateSpotView(leaveCount = true) { - if (g_spotView > 0) + if (GT.spotView > 0) { - if (g_receptionSettings.mergeSpots == false) + if (GT.receptionSettings.mergeSpots == false) { - for (var key in g_layerVectors) + for (var key in GT.layerVectors) { - g_layerVectors[key].setVisible(false); + GT.layerVectors[key].setVisible(false); } } - if (g_spotView == 1) + if (GT.spotView == 1) { - g_layerVectors["psk-spots"].setVisible(true); - g_layerVectors["psk-flights"].setVisible(true); - g_layerVectors["psk-hop"].setVisible(true); - g_layerVectors["psk-heat"].setVisible(false); + GT.layerVectors["psk-spots"].setVisible(true); + GT.layerVectors["psk-flights"].setVisible(true); + GT.layerVectors["psk-hop"].setVisible(true); + GT.layerVectors["psk-heat"].setVisible(false); } else { - g_layerVectors["psk-spots"].setVisible(false); - g_layerVectors["psk-flights"].setVisible(false); - g_layerVectors["psk-hop"].setVisible(false); - g_layerVectors["psk-heat"].setVisible(true); + GT.layerVectors["psk-spots"].setVisible(false); + GT.layerVectors["psk-flights"].setVisible(false); + GT.layerVectors["psk-hop"].setVisible(false); + GT.layerVectors["psk-heat"].setVisible(true); } SpotsDiv.style.display = "block"; @@ -15952,10 +15953,10 @@ function updateSpotView(leaveCount = true) } else { - g_layerVectors["psk-spots"].setVisible(false); - g_layerVectors["psk-flights"].setVisible(false); - g_layerVectors["psk-hop"].setVisible(false); - g_layerVectors["psk-heat"].setVisible(false); + GT.layerVectors["psk-spots"].setVisible(false); + GT.layerVectors["psk-flights"].setVisible(false); + GT.layerVectors["psk-hop"].setVisible(false); + GT.layerVectors["psk-heat"].setVisible(false); SpotsDiv.style.display = "none"; spotRefreshDiv.innerHTML = " "; } @@ -15969,27 +15970,27 @@ function gotoDonate() function getSpotTime(hash) { - if (hash in g_receptionReports.spots) + if (hash in GT.receptionReports.spots) { - return g_receptionReports.spots[hash]; + return GT.receptionReports.spots[hash]; } else return null; } function setGridOpacity() { - opacityValue.value = g_mapSettings.gridAlpha; + opacityValue.value = GT.mapSettings.gridAlpha; showOpacityTd.innerHTML = - parseInt((g_mapSettings.gridAlpha / 255) * 100) + "%"; - g_gridAlpha = parseInt(g_mapSettings.gridAlpha).toString(16); + parseInt((GT.mapSettings.gridAlpha / 255) * 100) + "%"; + GT.gridAlpha = parseInt(GT.mapSettings.gridAlpha).toString(16); } function changeGridOpacity() { - g_mapSettings.gridAlpha = opacityValue.value; + GT.mapSettings.gridAlpha = opacityValue.value; showOpacityTd.innerHTML = - parseInt((g_mapSettings.gridAlpha / 255) * 100) + "%"; - g_gridAlpha = parseInt(g_mapSettings.gridAlpha).toString(16); + parseInt((GT.mapSettings.gridAlpha / 255) * 100) + "%"; + GT.gridAlpha = parseInt(GT.mapSettings.gridAlpha).toString(16); saveMapSettings(); } @@ -16003,11 +16004,11 @@ function currentTimeStampString() "-" + now.getDate() + " " + - now.getHours().pad() + + padNumber(now.getHours()) + "." + - now.getMinutes().pad() + + padNumber(now.getMinutes())+ "." + - now.getSeconds().pad() + padNumber(now.getSeconds()) ); } @@ -16035,7 +16036,7 @@ function makeScreenshots() try { var fn = - g_screenshotDir + "Screenshot " + currentTimeStampString() + ".png"; + GT.screenshotDir + "Screenshot " + currentTimeStampString() + ".png"; fs.writeFileSync(fn, buffer); addLastTraffic( " g_gtMaxChatMessages) + GT.gtMessages[cid].history.push(jsmesg); + while (GT.gtMessages[cid].history.length > GT.gtMaxChatMessages) { - g_gtMessages[cid].history.shift(); + GT.gtMessages[cid].history.shift(); } } @@ -572,7 +572,7 @@ function htmlEntities(str) function gtChatMessage(jsmesg) { - if (g_appSettings.gtMsgEnable == true) + if (GT.appSettings.gtMsgEnable == true) { var cid = jsmesg.cid; jsmesg.when = Date.now(); @@ -589,16 +589,16 @@ function gtChatMessage(jsmesg) if (jsmesg.call != null && jsmesg.call != "" && jsmesg.call != "NOCALL") { appendToHistory(cid, jsmesg); - g_gtUnread[cid] = true; - g_gtCurrentMessageCount++; + GT.gtUnread[cid] = true; + GT.gtCurrentMessageCount++; if (newChatMessage(cid, jsmesg) == false) alertChatMessage(); - if (g_msgSettings.msgAwaySelect == 1 && !(cid in g_gtSentAwayToCid)) + if (GT.msgSettings.msgAwaySelect == 1 && !(cid in GT.gtSentAwayToCid)) { - g_gtSentAwayToCid[cid] = true; + GT.gtSentAwayToCid[cid] = true; gtSendMessage( - "Away message [ " + g_msgSettings.msgAwayText + " ]", + "Away message [ " + GT.msgSettings.msgAwayText + " ]", cid ); } @@ -610,7 +610,7 @@ function gtSendMessage(message, who) { msg = Object(); msg.type = "mesg"; - msg.uuid = g_appSettings.chatUUID; + msg.uuid = GT.appSettings.chatUUID; msg.cid = who; msg.msg = new Buffer.from(message).toString("base64"); // eslint-disable-line new-cap sendGtJson(JSON.stringify(msg)); @@ -624,9 +624,9 @@ function gtChatSendUUID() { var msg = Object(); msg.type = "uuid"; - if (g_appSettings.chatUUID != "") + if (GT.appSettings.chatUUID != "") { - msg.uuid = g_appSettings.chatUUID; + msg.uuid = GT.appSettings.chatUUID; } else { @@ -637,7 +637,7 @@ function gtChatSendUUID() msg.ver = gtShortVersion; sendGtJson(JSON.stringify(msg), true); - g_gtState = ChatState.waitUUID; + GT.gtState = ChatState.waitUUID; } function gtWaitUUID() @@ -647,67 +647,67 @@ function gtWaitUUID() function gtChatSetUUID(jsmesg) { - g_appSettings.chatUUID = jsmesg.uuid; + GT.appSettings.chatUUID = jsmesg.uuid; myChatId = jsmesg.id; - g_gtUuidValid = true; + GT.gtUuidValid = true; gtChatSendStatus(); - g_gtLiveStatusUpdate = false; - g_gtStatusCount = g_gtStatusTime; - g_gtState = ChatState.status; + GT.gtLiveStatusUpdate = false; + GT.gtStatusCount = GT.gtStatusTime; + GT.gtState = ChatState.status; } -var g_getEngineWasRunning = false; +GT.getEngineWasRunning = false; function gtChatStateMachine() { - if (g_appSettings.gtShareEnable == true && g_mapSettings.offlineMode == false) + if (GT.appSettings.gtShareEnable == true && GT.mapSettings.offlineMode == false) { var now = timeNowSec(); - g_gtStateToFunction[g_gtState](); + GT.gtStateToFunction[GT.gtState](); - if (Object.keys(g_gtUnread).length > 0 && now % 2 == 0) + if (Object.keys(GT.gtUnread).length > 0 && now % 2 == 0) { msgImg.style.webkitFilter = "invert(1)"; } else msgImg.style.webkitFilter = ""; - if (g_msgSettings.msgFrequencySelect > 0 && Object.keys(g_gtUnread).length > 0) + if (GT.msgSettings.msgFrequencySelect > 0 && Object.keys(GT.gtUnread).length > 0) { - if (now - g_lastChatMsgAlert > g_msgSettings.msgFrequencySelect * 60) + if (now - GT.lastChatMsgAlert > GT.msgSettings.msgFrequencySelect * 60) { alertChatMessage(); } } - g_getEngineWasRunning = true; + GT.getEngineWasRunning = true; } else { - if (g_getEngineWasRunning == true) + if (GT.getEngineWasRunning == true) { - g_getEngineWasRunning = false; + GT.getEngineWasRunning = false; closeGtSocket(); - g_lastGtStatus = ""; + GT.lastGtStatus = ""; } } } function gtSpotMessage(jsmesg) { - if (jsmesg.cid in g_gtFlagPins) + if (jsmesg.cid in GT.gtFlagPins) { let frequency, band, mode; if (jsmesg.ex != null) { frequency = Number(jsmesg.ex[0]); - band = Number(frequency / 1000000).formatBand(); + band = formatBand(Number(frequency / 1000000)); mode = String(jsmesg.ex[1]); } else { - frequency = g_gtFlagPins[jsmesg.cid].freq; - band = g_gtFlagPins[jsmesg.cid].band; - mode = g_gtFlagPins[jsmesg.cid].mode; + frequency = GT.gtFlagPins[jsmesg.cid].freq; + band = GT.gtFlagPins[jsmesg.cid].band; + mode = GT.gtFlagPins[jsmesg.cid].mode; } addNewOAMSSpot(jsmesg.cid, jsmesg.db, frequency, band, mode); @@ -716,55 +716,55 @@ function gtSpotMessage(jsmesg) function gtChatSystemInit() { - g_gtEngineInterval = nodeTimers.setInterval(gtChatStateMachine, 1000); + GT.gtEngineInterval = nodeTimers.setInterval(gtChatStateMachine, 1000); } function showGtFlags() { - if (g_appSettings.gtFlagImgSrc > 0) + if (GT.appSettings.gtFlagImgSrc > 0) { - if (g_mapSettings.offlineMode == false) + if (GT.mapSettings.offlineMode == false) { redrawPins(); - g_layerVectors.gtflags.setVisible(true); + GT.layerVectors.gtflags.setVisible(true); } else { - g_layerVectors.gtflags.setVisible(false); + GT.layerVectors.gtflags.setVisible(false); } } - else g_layerVectors.gtflags.setVisible(false); + else GT.layerVectors.gtflags.setVisible(false); } function clearGtFlags() { - g_layerSources.gtflags.clear(); + GT.layerSources.gtflags.clear(); } function toggleGtMap() { - g_appSettings.gtFlagImgSrc += 1; - g_appSettings.gtFlagImgSrc %= 2; - gtFlagImg.src = g_gtFlagImageArray[g_appSettings.gtFlagImgSrc]; - if (g_spotView > 0 && g_receptionSettings.mergeSpots == false) return; - if (g_appSettings.gtFlagImgSrc > 0) + GT.appSettings.gtFlagImgSrc += 1; + GT.appSettings.gtFlagImgSrc %= 2; + gtFlagImg.src = GT.gtFlagImageArray[GT.appSettings.gtFlagImgSrc]; + if (GT.spotView > 0 && GT.receptionSettings.mergeSpots == false) return; + if (GT.appSettings.gtFlagImgSrc > 0) { redrawPins(); - g_layerVectors.gtflags.setVisible(true); + GT.layerVectors.gtflags.setVisible(true); } else { - g_layerVectors.gtflags.setVisible(false); + GT.layerVectors.gtflags.setVisible(false); } } function notifyNoChat(id) { - if (g_chatWindowHandle != null) + if (GT.chatWindowHandle != null) { try { - g_chatWindowHandle.window.notifyNoChat(id); + GT.chatWindowHandle.window.notifyNoChat(id); } catch (e) {} } @@ -772,17 +772,17 @@ function notifyNoChat(id) function updateChatWindow(id = null) { - if (g_chatWindowHandle != null) + if (GT.chatWindowHandle != null) { try { if (id) { - g_chatWindowHandle.window.updateCallsign(id); + GT.chatWindowHandle.window.updateCallsign(id); } else { - g_chatWindowHandle.window.updateEverything(); + GT.chatWindowHandle.window.updateEverything(); } } catch (e) {} @@ -792,33 +792,33 @@ function updateChatWindow(id = null) function newChatMessage(id, jsmesg) { var hasFocus = false; - if (g_msgSettings.msgActionSelect == 1) showMessaging(); + if (GT.msgSettings.msgActionSelect == 1) showMessaging(); - if (g_chatWindowHandle != null) + if (GT.chatWindowHandle != null) { try { - hasFocus = g_chatWindowHandle.window.newChatMessage(id, jsmesg); - g_chatWindowHandle.window.messagesRedraw(); + hasFocus = GT.chatWindowHandle.window.newChatMessage(id, jsmesg); + GT.chatWindowHandle.window.messagesRedraw(); } catch (e) {} } return hasFocus; } -var g_lastChatMsgAlert = 0; +GT.lastChatMsgAlert = 0; function alertChatMessage() { - if (g_msgSettings.msgAlertSelect == 1) + if (GT.msgSettings.msgAlertSelect == 1) { // Text to speech - speakAlertString(g_msgSettings.msgAlertWord); + speakAlertString(GT.msgSettings.msgAlertWord); } - if (g_msgSettings.msgAlertSelect == 2) + if (GT.msgSettings.msgAlertSelect == 2) { // Audible - playAlertMediaFile(g_msgSettings.msgAlertMedia); + playAlertMediaFile(GT.msgSettings.msgAlertMedia); } - g_lastChatMsgAlert = timeNowSec(); + GT.lastChatMsgAlert = timeNowSec(); } diff --git a/package.nw/lib/i18n.js b/package.nw/lib/i18n.js index 3dbd303d..7577ebb9 100644 --- a/package.nw/lib/i18n.js +++ b/package.nw/lib/i18n.js @@ -8,7 +8,7 @@ function loadi18n() { $.i18n().load(languages).done(function () { - $.i18n().locale = g_appSettings.locale; + $.i18n().locale = GT.appSettings.locale; }); } @@ -20,8 +20,8 @@ function renderI18n(locale) function changeLocale() { - g_appSettings.locale = languageLocale.value; - renderI18n(g_appSettings.locale); + GT.appSettings.locale = languageLocale.value; + renderI18n(GT.appSettings.locale); saveAppSettings(); chrome.runtime.reload(); } @@ -30,7 +30,7 @@ function loadChildWindowI18n() { $.i18n().load(languages).done(function () { - renderI18n(window.opener.g_appSettings.locale); + renderI18n(window.opener.GT.appSettings.locale); }); } @@ -38,12 +38,12 @@ function loadRosteri18n() { $.i18n().load(languages).done(function () { - renderI18n(window.opener.g_appSettings.locale); + renderI18n(window.opener.GT.appSettings.locale); addControls(); }); } function renderLocale() { - renderI18n(g_appSettings.locale); + renderI18n(GT.appSettings.locale); } diff --git a/package.nw/lib/pota.js b/package.nw/lib/pota.js index c71d40e8..e27a9ce7 100644 --- a/package.nw/lib/pota.js +++ b/package.nw/lib/pota.js @@ -2,7 +2,7 @@ // All rights reserved. // See LICENSE for more information. -var g_pota = { +GT.pota = { parks: {}, locations: {}, parksTimeout: null, @@ -17,7 +17,7 @@ var g_pota = { rbnFrequency: 600000 }; -var g_potaSpotTemplate = { +GT.potaSpotTemplate = { activator: "", frequency: 0, mode: "", @@ -33,11 +33,11 @@ var g_potaSpotTemplate = { spotterGrid: "" }; -var g_parkTemplate = { +GT.parkTemplate = { feature: null } -var g_potaUnknownPark = { +GT.potaUnknownPark = { name: "Unknown park (not yet spotted)", active: "0", entityId: "-1", @@ -47,14 +47,14 @@ var g_potaUnknownPark = { grid: "" }; -var g_gtParkIconActive = new ol.style.Icon({ +GT.gtParkIconActive = new ol.style.Icon({ src: "./img/pota_icon_active.png", anchorYUnits: "pixels", anchorXUnits: "pixels", anchor: [10, 19] }); -var g_gtParkIconInactive = new ol.style.Icon({ +GT.gtParkIconInactive = new ol.style.Icon({ src: "./img/pota_icon_inactive.png", anchorYUnits: "pixels", anchorXUnits: "pixels", @@ -63,15 +63,15 @@ var g_gtParkIconInactive = new ol.style.Icon({ function initPota() { - potaEnabled.checked = (g_appSettings.potaEnabled == 1); - potaMenu.checked = g_appSettings.potaShowMenu; - potaButton.style.display = (g_appSettings.potaEnabled == 1 && g_appSettings.potaShowMenu && g_mapSettings.offlineMode == false) ? "" : "none"; - potaImg.style.filter = g_appSettings.potaMapEnabled ? "" : "grayscale(1)"; + potaEnabled.checked = (GT.appSettings.potaEnabled == 1); + potaMenu.checked = GT.appSettings.potaShowMenu; + potaButton.style.display = (GT.appSettings.potaEnabled == 1 && GT.appSettings.potaShowMenu && GT.mapSettings.offlineMode == false) ? "" : "none"; + potaImg.style.filter = GT.appSettings.potaMapEnabled ? "" : "grayscale(1)"; - g_layerSources.pota.clear(); - g_pota.mapParks = {}; + GT.layerSources.pota.clear(); + GT.pota.mapParks = {}; - if (g_appSettings.potaEnabled == 1) + if (GT.appSettings.potaEnabled == 1) { getPotaParks(); } @@ -79,11 +79,11 @@ function initPota() function changePotaEnable() { - g_appSettings.potaEnabled = (potaEnabled.checked == true) ? 1 : 0; - potaButton.style.display = (g_appSettings.potaEnabled == 1 && g_appSettings.potaShowMenu && g_mapSettings.offlineMode == false) ? "" : "none"; - if (!g_appSettings.potaEnabled) + GT.appSettings.potaEnabled = (potaEnabled.checked == true) ? 1 : 0; + potaButton.style.display = (GT.appSettings.potaEnabled == 1 && GT.appSettings.potaShowMenu && GT.mapSettings.offlineMode == false) ? "" : "none"; + if (!GT.appSettings.potaEnabled) { - g_layerSources.pota.clear(); + GT.layerSources.pota.clear(); } else { @@ -96,18 +96,18 @@ function changePotaEnable() function changePotaMenu() { - g_appSettings.potaShowMenu = potaMenu.checked; + GT.appSettings.potaShowMenu = potaMenu.checked; - potaButton.style.display = (g_appSettings.potaEnabled == 1 && g_appSettings.potaShowMenu && g_mapSettings.offlineMode == false) ? "" : "none"; - potaImg.style.filter = g_appSettings.potaMapEnabled ? "" : "grayscale(1)"; + potaButton.style.display = (GT.appSettings.potaEnabled == 1 && GT.appSettings.potaShowMenu && GT.mapSettings.offlineMode == false) ? "" : "none"; + potaImg.style.filter = GT.appSettings.potaMapEnabled ? "" : "grayscale(1)"; saveAppSettings(); } function togglePotaMap() { - g_appSettings.potaMapEnabled = !g_appSettings.potaMapEnabled; - potaImg.style.filter = g_appSettings.potaMapEnabled ? "" : "grayscale(1)"; + GT.appSettings.potaMapEnabled = !GT.appSettings.potaMapEnabled; + potaImg.style.filter = GT.appSettings.potaMapEnabled ? "" : "grayscale(1)"; saveAppSettings(); @@ -116,11 +116,11 @@ function togglePotaMap() function redrawParks() { - g_layerSources.pota.clear(); + GT.layerSources.pota.clear(); - if (g_appSettings.potaEnabled == 1 && g_appSettings.potaMapEnabled) + if (GT.appSettings.potaEnabled == 1 && GT.appSettings.potaMapEnabled) { - g_pota.mapParks = {}; + GT.pota.mapParks = {}; makeParkFeatures(); } } @@ -129,22 +129,22 @@ function makeParkFeatures() { try { - for (const park in g_pota.parkSpots) + for (const park in GT.pota.parkSpots) { - if (park in g_pota.parks) + if (park in GT.pota.parks) { - var parkObj = Object.assign({}, g_parkTemplate); - for (const call in g_pota.parkSpots[park]) + var parkObj = Object.assign({}, GT.parkTemplate); + for (const call in GT.pota.parkSpots[park]) { - var report = g_pota.parkSpots[park][call]; + var report = GT.pota.parkSpots[park][call]; if (parkObj.feature == null && validateMapBandAndMode(report.band, report.mode)) { - parkObj.feature = iconFeature(ol.proj.fromLonLat([Number(g_pota.parks[park].longitude), Number(g_pota.parks[park].latitude)]), g_gtParkIconActive, 1); + parkObj.feature = iconFeature(ol.proj.fromLonLat([Number(GT.pota.parks[park].longitude), Number(GT.pota.parks[park].latitude)]), GT.gtParkIconActive, 1); parkObj.feature.key = park; parkObj.feature.size = 22; - g_pota.mapParks[park] = parkObj; - g_layerSources.pota.addFeature(parkObj.feature); + GT.pota.mapParks[park] = parkObj; + GT.layerSources.pota.addFeature(parkObj.feature); } } } @@ -163,58 +163,58 @@ function potaSpotFromDecode(callObj) { var park = callObj.pota; - if (callObj.DEcall in g_pota.callSpots && park in g_pota.parkSpots) + if (callObj.DEcall in GT.pota.callSpots && park in GT.pota.parkSpots) { // update spot - var newObj = spotFromCallObj(callObj, park, g_pota.parkSpots[park][callObj.DEcall].count); - g_pota.parkSpots[park][callObj.DEcall] = fillObjectFromTemplate(g_pota.parkSpots[park][callObj.DEcall], newObj); + var newObj = spotFromCallObj(callObj, park, GT.pota.parkSpots[park][callObj.DEcall].count); + GT.pota.parkSpots[park][callObj.DEcall] = fillObjectFromTemplate(GT.pota.parkSpots[park][callObj.DEcall], newObj); // may or may not be on screen, so try - if (g_appSettings.potaMapEnabled) + if (GT.appSettings.potaMapEnabled) { - addParkSpotFeature(park, g_pota.parkSpots[park][callObj.DEcall]); + addParkSpotFeature(park, GT.pota.parkSpots[park][callObj.DEcall]); } var hash = park + callObj.DEcall; - if (!(hash in g_pota.rbnReportTimes) || Date.now() > g_pota.rbnReportTimes[hash]) + if (!(hash in GT.pota.rbnReportTimes) || Date.now() > GT.pota.rbnReportTimes[hash]) { - g_pota.rbnReportTimes[hash] = Date.now() + g_pota.rbnFrequency; - reportPotaRBN(g_pota.parkSpots[park][callObj.DEcall]); + GT.pota.rbnReportTimes[hash] = Date.now() + GT.pota.rbnFrequency; + reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); } } - else if (callObj.DEcall in g_pota.callSchedule) + else if (callObj.DEcall in GT.pota.callSchedule) { // Looks like it's scheduled, so it's new - g_pota.callSpots[callObj.DEcall] = park; + GT.pota.callSpots[callObj.DEcall] = park; - if (!(park in g_pota.parkSpots)) + if (!(park in GT.pota.parkSpots)) { - g_pota.parkSpots[park] = {}; + GT.pota.parkSpots[park] = {}; } var newObj = spotFromCallObj(callObj, park, 0); newObj.expire = newObj.spotTime + 300000; - g_pota.parkSpots[park][callObj.DEcall] = newObj; + GT.pota.parkSpots[park][callObj.DEcall] = newObj; - if (g_appSettings.potaMapEnabled) + if (GT.appSettings.potaMapEnabled) { - addParkSpotFeature(park, g_pota.parkSpots[park][callObj.DEcall]); + addParkSpotFeature(park, GT.pota.parkSpots[park][callObj.DEcall]); } var hash = park + callObj.DEcall; - if (!(hash in g_pota.rbnReportTimes) || Date.now() > g_pota.rbnReportTimes[hash]) + if (!(hash in GT.pota.rbnReportTimes) || Date.now() > GT.pota.rbnReportTimes[hash]) { - g_pota.rbnReportTimes[hash] = Date.now() + g_pota.rbnFrequency; - reportPotaRBN(g_pota.parkSpots[park][callObj.DEcall]); + GT.pota.rbnReportTimes[hash] = Date.now() + GT.pota.rbnFrequency; + reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); } } else { - if (!(callObj.DEcall in g_pota.callSpots)) + if (!(callObj.DEcall in GT.pota.callSpots)) { console.log("No call spot: " + callObj.DEcall); } - if (!(park in g_pota.parkSpots)) + if (!(park in GT.pota.parkSpots)) { console.log("No park spot: " + park); } @@ -290,15 +290,15 @@ function reportPotaQSO(record) function rbnReportResult(buffer, flag, cookies) { // It worked! process latest spots! - if (g_pota.spotsTimeout) + if (GT.pota.spotsTimeout) { - nodeTimers.clearTimeout(g_pota.spotsTimeout); - g_pota.spotsTimeout = null; + nodeTimers.clearTimeout(GT.pota.spotsTimeout); + GT.pota.spotsTimeout = null; } processPotaSpots(String(buffer)); - g_pota.spotsTimeout = nodeTimers.setTimeout(getPotaSpots, 300000); + GT.pota.spotsTimeout = nodeTimers.setTimeout(getPotaSpots, 300000); } function spotFromCallObj(callObj, park, inCount, rbnTime) @@ -308,7 +308,7 @@ function spotFromCallObj(callObj, park, inCount, rbnTime) activatorGrid: callObj.grid, spotter: myDEcall + "-#", spotterGrid: myDEGrid, - frequency: Number((g_instances[callObj.instance].status.Frequency / 1000000).toFixed(3)), + frequency: Number((GT.instances[callObj.instance].status.Frequency / 1000000).toFixed(3)), reference: park, mode: callObj.mode, band: callObj.band, @@ -322,28 +322,28 @@ function spotFromCallObj(callObj, park, inCount, rbnTime) function addParkSpotFeature(park, report) { - var parkObj = Object.assign({}, g_parkTemplate); - if (park in g_pota.mapParks) + var parkObj = Object.assign({}, GT.parkTemplate); + if (park in GT.pota.mapParks) { - parkObj = g_pota.mapParks[park]; + parkObj = GT.pota.mapParks[park]; } else { - g_pota.mapParks[park] = parkObj; + GT.pota.mapParks[park] = parkObj; } if (parkObj.feature == null && validateMapBandAndMode(report.band, report.mode)) { - parkObj.feature = iconFeature(ol.proj.fromLonLat([Number(g_pota.parks[park].longitude), Number(g_pota.parks[park].latitude)]), g_gtParkIconActive, 1); + parkObj.feature = iconFeature(ol.proj.fromLonLat([Number(GT.pota.parks[park].longitude), Number(GT.pota.parks[park].latitude)]), GT.gtParkIconActive, 1); parkObj.feature.key = park; parkObj.feature.size = 22; - g_layerSources.pota.addFeature(parkObj.feature); + GT.layerSources.pota.addFeature(parkObj.feature); } } function processPotaParks(buffer) { - if (g_appSettings.potaEnabled == 1) + if (GT.appSettings.potaEnabled == 1) { try { @@ -361,10 +361,10 @@ function processPotaParks(buffer) } newParks[park].locationDesc = locations.join(", "); } - newParks["?-????"] = g_potaUnknownPark; + newParks["?-????"] = GT.potaUnknownPark; - g_pota.parks = newParks; - g_pota.locations = data.locations; + GT.pota.parks = newParks; + GT.pota.locations = data.locations; getPotaSchedule(); getPotaSpots(); } @@ -379,13 +379,13 @@ function processPotaParks(buffer) function getPotaParks() { - if (g_pota.parksTimeout) + if (GT.pota.parksTimeout) { - nodeTimers.clearTimeout(g_pota.parksTimeout); - g_pota.spotsTimeout = null; + nodeTimers.clearTimeout(GT.pota.parksTimeout); + GT.pota.spotsTimeout = null; } - if (g_mapSettings.offlineMode == false && g_appSettings.potaEnabled == 1) + if (GT.mapSettings.offlineMode == false && GT.appSettings.potaEnabled == 1) { getBuffer( "https://storage.googleapis.com/gt_app/pota.json?cb=" + Date.now(), @@ -396,7 +396,7 @@ function getPotaParks() ); } - g_pota.parksTimeout = nodeTimers.setTimeout(getPotaParks, 86400000) + GT.pota.parksTimeout = nodeTimers.setTimeout(getPotaParks, 86400000) } // This is a shallow copy, don't use with objects that contain other objects or arrays @@ -425,22 +425,22 @@ function uniqueArrayFromArray(input) function processPotaSpots(buffer) { - if (g_appSettings.potaEnabled == 1) + if (GT.appSettings.potaEnabled == 1) { try { var spots = JSON.parse(buffer); - g_pota.callSpots = {}; - g_pota.parkSpots = {}; + GT.pota.callSpots = {}; + GT.pota.parkSpots = {}; for (const spot in spots) { - if (spots[spot].reference in g_pota.parks) + if (spots[spot].reference in GT.pota.parks) { - var newSpot = fillObjectFromTemplate(g_potaSpotTemplate, spots[spot]); + var newSpot = fillObjectFromTemplate(GT.potaSpotTemplate, spots[spot]); newSpot.spotTime = Date.parse(newSpot.spotTime + "Z"); newSpot.frequency = parseInt(newSpot.frequency) / 1000; newSpot.expire = newSpot.spotTime + (Number(newSpot.expire) * 1000); - newSpot.band = newSpot.frequency.formatBand(); + newSpot.band = formatBand(newSpot.frequency); if (newSpot.spotter == newSpot.activator && newSpot.comments.match(/qrt/gi)) { // don't add the spot, they have self-QRT'ed @@ -451,14 +451,14 @@ function processPotaSpots(buffer) } else { - g_pota.callSpots[newSpot.activator] = newSpot.reference; + GT.pota.callSpots[newSpot.activator] = newSpot.reference; - if (!(newSpot.reference in g_pota.parkSpots)) + if (!(newSpot.reference in GT.pota.parkSpots)) { - g_pota.parkSpots[newSpot.reference] = {}; + GT.pota.parkSpots[newSpot.reference] = {}; } - g_pota.parkSpots[newSpot.reference][newSpot.activator] = newSpot; + GT.pota.parkSpots[newSpot.reference][newSpot.activator] = newSpot; } } else @@ -478,13 +478,13 @@ function processPotaSpots(buffer) function getPotaSpots() { - if (g_pota.spotsTimeout) + if (GT.pota.spotsTimeout) { - nodeTimers.clearTimeout(g_pota.spotsTimeout); - g_pota.spotsTimeout = null; + nodeTimers.clearTimeout(GT.pota.spotsTimeout); + GT.pota.spotsTimeout = null; } - if (g_mapSettings.offlineMode == false && g_appSettings.potaEnabled == 1) + if (GT.mapSettings.offlineMode == false && GT.appSettings.potaEnabled == 1) { getBuffer( "https://api.pota.app/spot/activator", @@ -495,18 +495,18 @@ function getPotaSpots() ); } - g_pota.spotsTimeout = nodeTimers.setTimeout(getPotaSpots, 300000); + GT.pota.spotsTimeout = nodeTimers.setTimeout(getPotaSpots, 300000); } function processPotaSchedule(buffer) { - if (g_appSettings.potaEnabled == 1) + if (GT.appSettings.potaEnabled == 1) { try { var schedules = JSON.parse(buffer); - g_pota.callSchedule = {}; - g_pota.parkSchedule = {}; + GT.pota.callSchedule = {}; + GT.pota.parkSchedule = {}; for (const i in schedules) { var newObj = {}; @@ -517,13 +517,13 @@ function processPotaSchedule(buffer) newObj.comments = schedules[i].comments; if (Date.now() < newObj.end) { - if (newObj.id in g_pota.parks) + if (newObj.id in GT.pota.parks) { - (g_pota.callSchedule[schedules[i].activator] = g_pota.callSchedule[schedules[i].activator] || []).push(newObj); + (GT.pota.callSchedule[schedules[i].activator] = GT.pota.callSchedule[schedules[i].activator] || []).push(newObj); newObj = Object.assign({}, newObj); newObj.id = schedules[i].activator; - (g_pota.parkSchedule[schedules[i].reference] = g_pota.parkSchedule[schedules[i].reference] || []).push(newObj); + (GT.pota.parkSchedule[schedules[i].reference] = GT.pota.parkSchedule[schedules[i].reference] || []).push(newObj); } else { @@ -534,13 +534,13 @@ function processPotaSchedule(buffer) } // Sanity dedupe checks - for (const key in g_pota.callSchedule) + for (const key in GT.pota.callSchedule) { - g_pota.callSchedule[key] = uniqueArrayFromArray(g_pota.callSchedule[key]); + GT.pota.callSchedule[key] = uniqueArrayFromArray(GT.pota.callSchedule[key]); } - for (const key in g_pota.parkSchedule) + for (const key in GT.pota.parkSchedule) { - g_pota.parkSchedule[key] = uniqueArrayFromArray(g_pota.parkSchedule[key]); + GT.pota.parkSchedule[key] = uniqueArrayFromArray(GT.pota.parkSchedule[key]); } } catch (e) @@ -552,13 +552,13 @@ function processPotaSchedule(buffer) function getPotaSchedule() { - if (g_pota.scheduleTimeout) + if (GT.pota.scheduleTimeout) { - nodeTimers.clearTimeout(g_pota.scheduleTimeout); - g_pota.scheduleTimeout = null; + nodeTimers.clearTimeout(GT.pota.scheduleTimeout); + GT.pota.scheduleTimeout = null; } - if (g_mapSettings.offlineMode == false && g_appSettings.potaEnabled == 1) + if (GT.mapSettings.offlineMode == false && GT.appSettings.potaEnabled == 1) { getBuffer( "https://api.pota.app/activation", @@ -568,18 +568,18 @@ function getPotaSchedule() 443 ); } - g_pota.scheduleTimeout = nodeTimers.setTimeout(getPotaSchedule, 900000); + GT.pota.scheduleTimeout = nodeTimers.setTimeout(getPotaSchedule, 900000); } -var g_lastPark = null; +GT.lastPark = null; function mouseOverPark(feature) { - if (g_lastPark && g_lastPark == feature) + if (GT.lastPark && GT.lastPark == feature) { mouseParkMove(); return; } - g_lastPark = feature; + GT.lastPark = feature; createParkTipTable(feature); @@ -591,7 +591,7 @@ function mouseOverPark(feature) function mouseOutPark(mouseEvent) { - g_lastPark = null; + GT.lastPark = null; myParktip.style.zIndex = -1; } @@ -615,57 +615,33 @@ function mouseParkMove() function createParkTipTable(toolElement) { var worker = ""; - var key = toolElement.key; var now = Date.now(); worker += "
" + key + - " : " + g_pota.parks[key].name + "" + - " (" + g_dxccToAltName[Number(g_pota.parks[key].entityId)] + ")" + - "
" + g_pota.parks[key].locationDesc + "
"; + " : " + GT.pota.parks[key].name + "" + + " (" + GT.dxccToAltName[Number(GT.pota.parks[key].entityId)] + ")" + + "
" + GT.pota.parks[key].locationDesc + ""; worker += ""; worker += ""; - for (const i in g_pota.parkSpots[key]) + for (const i in GT.pota.parkSpots[key]) { - if (validateMapBandAndMode(g_pota.parkSpots[key][i].band, g_pota.parkSpots[key][i].mode)) + if (validateMapBandAndMode(GT.pota.parkSpots[key][i].band, GT.pota.parkSpots[key][i].mode)) { worker += ""; - worker += ""; - worker += ""; - worker += ""; - worker += ""; - worker += ""; - worker += ""; - worker += ""; - worker += ""; + worker += ""; + worker += ""; + worker += ""; + worker += ""; + worker += ""; + worker += ""; + worker += ""; + worker += ""; worker += ""; } } worker += "
ActivatorSpotterFreqModeCountWhenSourceComment
" + g_pota.parkSpots[key][i].activator + "" + ((g_pota.parkSpots[key][i].spotter == g_pota.parkSpots[key][i].activator) ? "Self" : g_pota.parkSpots[key][i].spotter) + "" + g_pota.parkSpots[key][i].frequency.formatMhz(3, 3) + " (" + g_pota.parkSpots[key][i].band + ")" + g_pota.parkSpots[key][i].mode + "" + g_pota.parkSpots[key][i].count + "" + parseInt((now - g_pota.parkSpots[key][i].spotTime) / 1000).toDHMS() + "" + g_pota.parkSpots[key][i].source + "" + g_pota.parkSpots[key][i].comments + "" + GT.pota.parkSpots[key][i].activator + "" + ((GT.pota.parkSpots[key][i].spotter == GT.pota.parkSpots[key][i].activator) ? "Self" : GT.pota.parkSpots[key][i].spotter) + "" + formatMhz(GT.pota.parkSpots[key][i].frequency, 3, 3) + " (" + GT.pota.parkSpots[key][i].band + ")" + GT.pota.parkSpots[key][i].mode + "" + GT.pota.parkSpots[key][i].count + "" + toDHMS(parseInt((now - GT.pota.parkSpots[key][i].spotTime) / 1000)) + "" + GT.pota.parkSpots[key][i].source + "" + GT.pota.parkSpots[key][i].comments + "
"; - - /* - buffer += "
Activations (scheduled)" - buffer += ""; - buffer += ""; - for (const i in g_pota.parkSchedule[key]) - { - var start = g_pota.parkSchedule[key][i].start; - var end = g_pota.parkSchedule[key][i].end; - if (now < end) - { - buffer += ""; - buffer += ""; - buffer += ""; - buffer += ""; - buffer += ""; - buffer += ""; - buffer += ""; - active++; - } - } - */ myParktip.innerHTML = worker; - return 1; } diff --git a/package.nw/lib/protos.js b/package.nw/lib/protos.js index a26228c5..5697de2f 100644 --- a/package.nw/lib/protos.js +++ b/package.nw/lib/protos.js @@ -1,7 +1,7 @@ // GridTracker Copyright © 2023 GridTracker.org // All rights reserved. // See LICENSE for more information. -var g_proto_bands = [ +const g_proto_bands = [ "OOB", "OOB", 1, @@ -74,9 +74,8 @@ var g_proto_bands = [ "1.25m" ]; // Incoming is already float fixed ( 14.037 ) for 14,037,000hz -Number.prototype.formatBand = function () +function formatBand(freq) { - let freq = this; let newFreq = parseInt(freq); if (newFreq > 0 && newFreq < 226) return g_proto_bands[g_proto_bands.indexOf(newFreq) + 1]; else if (newFreq >= 420 && newFreq <= 450) return "70cm"; @@ -99,95 +98,53 @@ Number.prototype.formatBand = function () else return "OOB"; }; -Number.prototype.formatMhz = function (n, x) +function formatMhz(freq, n, x) { - var re = "\\d(?=(\\d{" + (x || 3) + "})+" + (n > 0 ? "\\." : "$") + ")"; - return this.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, "g"), "$&."); + let re = "\\d(?=(\\d{" + (x || 3) + "})+" + (n > 0 ? "\\." : "$") + ")"; + return freq.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, "g"), "$&."); }; -Number.prototype.formatSignalReport = function () +function formatSignalReport(val) { - var val = this; - var report = String(); - + let report = String(); if (val >= 0) report = "+" + val; else report = val; return report; }; -var CALLSIGN_REGEX = /0/g -String.prototype.formatCallsign = function () +const CALLSIGN_REGEX = /0/g +function formatCallsign(call) { - return this.replace(CALLSIGN_REGEX, "Ø"); + return call.replace(CALLSIGN_REGEX, "Ø"); }; -Number.prototype.toDHMS = function () +function toDHMS(inputSeconds) { - var seconds = this; - var days = Math.floor(seconds / (3600 * 24)); + let seconds = inputSeconds; + let days = Math.floor(seconds / (3600 * 24)); seconds -= days * 3600 * 24; - var hrs = Math.floor(seconds / 3600); + let hrs = Math.floor(seconds / 3600); seconds -= hrs * 3600; - var mnts = Math.floor(seconds / 60); + let mnts = Math.floor(seconds / 60); seconds -= mnts * 60; days = days ? days + "d " : ""; hrs = hrs ? hrs + "h " : ""; mnts = mnts ? mnts + "m " : ""; - var first = days + hrs + mnts; + let first = days + hrs + mnts; if (first == "") val = seconds + "s"; else val = first + (seconds > 0 ? seconds + "s" : ""); return val; }; -Number.prototype.msToDHMS = function () +function toDHM(inputSeconds) { - var seconds = parseInt(this / 1000); - var days = Math.floor(seconds / (3600 * 24)); + let seconds = inputSeconds; + let days = Math.floor(seconds / (3600 * 24)); seconds -= days * 3600 * 24; - var hrs = Math.floor(seconds / 3600); + let hrs = Math.floor(seconds / 3600); seconds -= hrs * 3600; - var mnts = Math.floor(seconds / 60); - seconds -= mnts * 60; - - days = days ? days + "d " : ""; - hrs = hrs ? hrs + "h " : ""; - mnts = mnts ? mnts + "m " : ""; - var first = days + hrs + mnts; - if (first == "") val = seconds + "s"; - else val = first + (seconds > 0 ? seconds + "s" : ""); - return val; -}; - -Number.prototype.toDHMS15 = function () -{ - // round to earliest 15 seconds - - var seconds = Math.floor(this / 15) * 15; - var days = Math.floor(seconds / (3600 * 24)); - seconds -= days * 3600 * 24; - var hrs = Math.floor(seconds / 3600); - seconds -= hrs * 3600; - var mnts = Math.floor(seconds / 60); - seconds -= mnts * 60; - - days = days ? days + "d " : ""; - hrs = hrs ? hrs + "h " : ""; - mnts = mnts ? mnts + "m " : ""; - var first = days + hrs + mnts; - if (first == "") val = seconds + "s"; - else val = first + (seconds > 0 ? seconds + "s" : ""); - return val; -}; - -Number.prototype.toDHM = function () -{ - var seconds = this; - var days = Math.floor(seconds / (3600 * 24)); - seconds -= days * 3600 * 24; - var hrs = Math.floor(seconds / 3600); - seconds -= hrs * 3600; - var mnts = Math.floor(seconds / 60); + let mnts = Math.floor(seconds / 60); seconds -= mnts * 60; days = days ? days + "d " : ""; @@ -199,46 +156,21 @@ Number.prototype.toDHM = function () return val; }; -Number.prototype.toYM = function () +function toYM(input) { - var months = this; - var years = parseInt(Math.floor(months / 12)); + let months = input; + let years = parseInt(Math.floor(months / 12)); months -= years * 12; months = parseInt(months); years = years ? years + "y " : ""; months = months ? months + "m" : ""; - var total = years + months; + let total = years + months; return total == "" ? "any" : total; }; -Number.prototype.toHMS = function () +function padNumber(number, size) { - var seconds = this; - var days = Math.floor(seconds / (3600 * 24)); - seconds -= days * 3600 * 24; - var hrs = Math.floor(seconds / 3600); - seconds -= hrs * 3600; - var mnts = Math.floor(seconds / 60); - seconds -= mnts * 60; - - hrs = hrs < 10 ? "0" + hrs : hrs; - mnts = mnts < 10 ? "0" + mnts : mnts; - seconds = seconds < 10 ? "0" + seconds : seconds; - val = hrs + "" + mnts + "" + seconds; - return val; -}; - -String.prototype.toProperCase = function () -{ - return this.replace(/\w\S*/g, function (txt) - { - return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); - }); -}; - -Number.prototype.pad = function (size) -{ - var s = String(this); + let s = String(number); while (s.length < (size || 2)) { s = "0" + s; @@ -246,7 +178,15 @@ Number.prototype.pad = function (size) return s; }; -String.prototype.replaceAll = function (str1, str2) +function replaceAll(input, str1, str2) { - return this.split(str1).join(str2); + return input.split(str1).join(str2); +}; + +function toProperCase(text) +{ + return text.replace(/\w\S*/g, function (txt) + { + return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); + }); }; diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index 745529e4..de3e76b5 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -4,67 +4,68 @@ const fs = require("fs"); -var callRoster = {}; -var g_blockedCalls = {}; -var g_blockedCQ = {}; -var g_blockedDxcc = {}; -var g_blockedCQz = {}; -var g_blockedITUz = {}; -var g_scriptReport = {}; -var g_worked = {}; -var g_confirmed = {}; -var g_modes = {}; -var g_modes_phone = {}; -var g_currentUSCallsigns = null; -var r_currentUSState = ""; -var r_currentDXCCs = -1; -var r_callsignManifest = null; -var g_rosterSettings = {}; -var g_day = 0; -var g_dayAsString = "0"; -var g_menu = null; -var g_callMenu = null; -var g_ageMenu = null; -var g_callingMenu = null; -var g_compactMenu = null; -var g_menuItemForCurrentColumn = null; -var g_currentColumnName = null; -var g_targetHash = ""; -var g_clearIgnores = null; -var g_clearIgnoresCall = null; -var g_dxccMenu = null; -var g_targetDxcc = -1; -var g_clearDxccIgnore = null; -var g_clearDxccIgnoreMainMenu = null; -var g_CQMenu = null; -var g_targetCQ = ""; -var g_clearCQIgnore = null; -var g_clearCQIgnoreMainMenu = null; -var g_clearCQzIgnore = null; -var g_clearCQzIgnoreMainMenu = null; -var g_clearITUzIgnore = null; -var g_clearITUzIgnoreMainMenu = null; -var g_timerInterval = null; -var g_typingInRoster = false; -var g_awards = {}; -var g_awardTypes = {}; -var g_awardTracker = {}; -var g_callsignDatabaseDXCC = {}; -var g_callsignDatabaseUS = {}; -var g_callsignDatabaseUSplus = {}; +// var CR is in screen.js +CR.developerMode = process.versions["nw-flavor"] == "sdk"; +CR.callRoster = {}; +CR.blockedCalls = {}; +CR.blockedCQ = {}; +CR.blockedDxcc = {}; +CR.blockedCQz = {}; +CR.blockedITUz = {}; +CR.scriptReport = {}; +CR.worked = {}; +CR.confirmed = {}; +CR.modes = {}; +CR.modes_phone = {}; +CR.currentUSCallsigns = null; +CR.currentUSState = ""; +CR.currentDXCCs = -1; +CR.callsignManifest = null; +CR.rosterSettings = {}; +CR.day = 0; +CR.dayAsString = "0"; +CR.menu = null; +CR.callMenu = null; +CR.ageMenu = null; +CR.callingMenu = null; +CR.compactMenu = null; +CR.menuItemForCurrentColumn = null; +CR.currentColumnName = null; +CR.targetHash = ""; +CR.clearIgnores = null; +CR.clearIgnoresCall = null; +CR.dxccMenu = null; +CR.targetDxcc = -1; +CR.clearDxccIgnore = null; +CR.clearDxccIgnoreMainMenu = null; +CR.CQMenu = null; +CR.targetCQ = ""; +CR.clearCQIgnore = null; +CR.clearCQIgnoreMainMenu = null; +CR.clearCQzIgnore = null; +CR.clearCQzIgnoreMainMenu = null; +CR.clearITUzIgnore = null; +CR.clearITUzIgnoreMainMenu = null; +CR.timerInterval = null; +CR.typingInRoster = false; +CR.awards = {}; +CR.awardTypes = {}; +CR.awardTracker = {}; +CR.callsignDatabaseDXCC = {}; +CR.callsignDatabaseUS = {}; +CR.callsignDatabaseUSplus = {}; +CR.modeColors = {}; +CR.modeColors.FT4 = "1111FF"; +CR.modeColors.FT8 = "11FF11"; +CR.modeColors.JT4 = "EE1111"; +CR.modeColors.JT9 = "7CFC00"; +CR.modeColors.JT65 = "E550E5"; +CR.modeColors.QRA64 = "FF00FF"; +CR.modeColors.MSK144 = "4949FF"; +CR.rosterTimeout = null; +CR.rosterFocus = false; -var g_developerMode = process.versions["nw-flavor"] == "sdk"; - -var g_modeColors = {}; -g_modeColors.FT4 = "1111FF"; -g_modeColors.FT8 = "11FF11"; -g_modeColors.JT4 = "EE1111"; -g_modeColors.JT9 = "7CFC00"; -g_modeColors.JT65 = "E550E5"; -g_modeColors.QRA64 = "FF00FF"; -g_modeColors.MSK144 = "4949FF"; - -var g_defaultSettings = { +CR.defaultSettings = { callsign: "all", hunting: "dxcc", huntNeed: "confirmed", @@ -165,7 +166,7 @@ var g_defaultSettings = { compactEntity: "DXCC" }; -g_def_displayFilters = { +CR.def_displayFilters = { brightness: 100, contrast: 100, saturate: 100, @@ -217,33 +218,33 @@ if (typeof localStorage.blockedITUz == "undefined") if (typeof localStorage.awardTracker == "undefined") { localStorage.awardTracker = "{}"; - g_rosterSettings = {}; + CR.rosterSettings = {}; writeRosterSettings(); } -g_awardTracker = JSON.parse(localStorage.awardTracker); +CR.awardTracker = JSON.parse(localStorage.awardTracker); if (typeof localStorage.blockedCalls != "undefined") { - g_blockedCalls = JSON.parse(localStorage.blockedCalls); - g_blockedCQ = JSON.parse(localStorage.blockedCQ); - g_blockedDxcc = JSON.parse(localStorage.blockedDxcc); - g_blockedCQz = JSON.parse(localStorage.blockedCQz); - g_blockedITUz = JSON.parse(localStorage.blockedITUz); + CR.blockedCalls = JSON.parse(localStorage.blockedCalls); + CR.blockedCQ = JSON.parse(localStorage.blockedCQ); + CR.blockedDxcc = JSON.parse(localStorage.blockedDxcc); + CR.blockedCQz = JSON.parse(localStorage.blockedCQz); + CR.blockedITUz = JSON.parse(localStorage.blockedITUz); } function storeBlocks() { - localStorage.blockedCalls = JSON.stringify(g_blockedCalls); - localStorage.blockedCQ = JSON.stringify(g_blockedCQ); - localStorage.blockedDxcc = JSON.stringify(g_blockedDxcc); - localStorage.blockedCQz = JSON.stringify(g_blockedCQz); - localStorage.blockedITUz = JSON.stringify(g_blockedITUz); + localStorage.blockedCalls = JSON.stringify(CR.blockedCalls); + localStorage.blockedCQ = JSON.stringify(CR.blockedCQ); + localStorage.blockedDxcc = JSON.stringify(CR.blockedDxcc); + localStorage.blockedCQz = JSON.stringify(CR.blockedCQz); + localStorage.blockedITUz = JSON.stringify(CR.blockedITUz); } function storeAwardTracker() { - localStorage.awardTracker = JSON.stringify(g_awardTracker); + localStorage.awardTracker = JSON.stringify(CR.awardTracker); } function loadSettings() @@ -253,7 +254,7 @@ function loadSettings() { readSettings = JSON.parse(localStorage.rosterSettings); } - g_rosterSettings = deepmerge(g_defaultSettings, readSettings); + CR.rosterSettings = deepmerge(CR.defaultSettings, readSettings); fixLegacySettings(); @@ -263,46 +264,46 @@ function loadSettings() function fixLegacySettings() { // Not sure why, but Paul Traina added this settings cleanup in August 2020. - if ("GT" in g_rosterSettings.columns) delete g_rosterSettings.columns.GT; + if ("GT" in CR.rosterSettings.columns) delete CR.rosterSettings.columns.GT; // In January 2022, we refactored roster column sorting - if (g_rosterSettings.lastSortIndex) + if (CR.rosterSettings.lastSortIndex) { - g_rosterSettings.sortColumn = LEGACY_COLUMN_SORT_ID[g_rosterSettings.lastSortIndex] || "Age"; - delete g_rosterSettings.lastSortIndex; + CR.rosterSettings.sortColumn = LEGACY_COLUMN_SORT_ID[CR.rosterSettings.lastSortIndex] || "Age"; + delete CR.rosterSettings.lastSortIndex; } // In January 2022, we refactored roster column sorting - if (g_rosterSettings.lastSortReverse) + if (CR.rosterSettings.lastSortReverse) { - g_rosterSettings.sortReverse = g_rosterSettings.lastSortReverse; - delete g_rosterSettings.lastSortReverse; + CR.rosterSettings.sortReverse = CR.rosterSettings.lastSortReverse; + delete CR.rosterSettings.lastSortReverse; } // In January 2022, we added a `columnOrder` setting, which we need to ensure always includes all columns - g_rosterSettings.columnOrder = validateRosterColumnOrder(g_rosterSettings.columnOrder); + CR.rosterSettings.columnOrder = validateRosterColumnOrder(CR.rosterSettings.columnOrder); } function writeRosterSettings() { - localStorage.rosterSettings = JSON.stringify(g_rosterSettings); + localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); } function isKnownCallsignDXCC(dxcc) { - if (dxcc in g_callsignDatabaseDXCC) return true; + if (dxcc in CR.callsignDatabaseDXCC) return true; return false; } function isKnownCallsignUS(dxcc) { - if (dxcc in g_callsignDatabaseUS) return true; + if (dxcc in CR.callsignDatabaseUS) return true; return false; } function isKnownCallsignUSplus(dxcc) { - if (dxcc in g_callsignDatabaseUSplus) return true; + if (dxcc in CR.callsignDatabaseUSplus) return true; return false; } @@ -344,40 +345,37 @@ function hashMaker(start, callObj, reference) return ""; } -var rosterTimeout = null; -var rosterFocus = false; - function rosterInFocus() { - if (g_rosterSettings.rosterDelayOnFocus) + if (CR.rosterSettings.rosterDelayOnFocus) { - rosterFocus = true; + CR.rosterFocus = true; } } function rosterNoFocus() { - rosterFocus = false; - if (rosterTimeout != null) + CR.rosterFocus = false; + if (CR.rosterTimeout != null) { - nodeTimers.clearTimeout(rosterTimeout); - rosterTimeout = null; + nodeTimers.clearTimeout(CR.rosterTimeout); + CR.rosterTimeout = null; viewRoster(); } } function processRoster(roster) { - callRoster = roster; - if (rosterTimeout != null) + CR.callRoster = roster; + if (CR.rosterTimeout != null) { - nodeTimers.clearTimeout(rosterTimeout); - rosterTimeout = null; + nodeTimers.clearTimeout(CR.rosterTimeout); + CR.rosterTimeout = null; } - if (rosterFocus) + if (CR.rosterFocus) { - rosterTimeout = nodeTimers.setTimeout(viewRoster, g_rosterSettings.rosterDelayTime); + CR.rosterTimeout = nodeTimers.setTimeout(viewRoster, CR.rosterSettings.rosterDelayTime); rosterDelayDiv.style.display = "inline-block"; } else @@ -388,52 +386,52 @@ function processRoster(roster) function viewRoster() { - rosterTimeout = null; + CR.rosterTimeout = null; rosterDelayDiv.style.display = "none"; let rosterSettings = prepareRosterSettings(); - processRosterFiltering(callRoster, rosterSettings); - processRosterHunting(callRoster, rosterSettings, g_awardTracker); - renderRoster(callRoster, rosterSettings); - sendAlerts(callRoster, rosterSettings); + processRosterFiltering(CR.callRoster, rosterSettings); + processRosterHunting(CR.callRoster, rosterSettings, CR.awardTracker); + renderRoster(CR.callRoster, rosterSettings); + sendAlerts(CR.callRoster, rosterSettings); } function realtimeRoster() { let now = timeNowSec(); - g_day = parseInt(now / 86400); - g_dayAsString = String(g_day); + CR.day = parseInt(now / 86400); + CR.dayAsString = String(CR.day); - if (g_rosterSettings.realtime == false) return; + if (CR.rosterSettings.realtime == false) return; let timeCols = document.getElementsByClassName("timeCol"); for (const x in timeCols) { - if ((typeof timeCols[x].id != "undefined") && (typeof callRoster[timeCols[x].id.substr(2)] != "undefined")) + if ((typeof timeCols[x].id != "undefined") && (typeof CR.callRoster[timeCols[x].id.substr(2)] != "undefined")) { - let when = now - callRoster[timeCols[x].id.substr(2)].callObj.age; - timeCols[x].innerHTML = when.toDHMS(); + let when = now - CR.callRoster[timeCols[x].id.substr(2)].callObj.age; + timeCols[x].innerHTML = toDHMS(when); } } let lifeCols = document.getElementsByClassName("lifeCol"); for (const x in lifeCols) { - if ((typeof lifeCols[x].id != "undefined") && (typeof callRoster[lifeCols[x].id.substr(2)] != "undefined")) + if ((typeof lifeCols[x].id != "undefined") && (typeof CR.callRoster[lifeCols[x].id.substr(2)] != "undefined")) { - let when = now - callRoster[lifeCols[x].id.substr(2)].callObj.life; - lifeCols[x].innerHTML = when.toDHMS(); + let when = now - CR.callRoster[lifeCols[x].id.substr(2)].callObj.life; + lifeCols[x].innerHTML = toDHMS(when); } } - if (g_rosterSettings.columns.Spot) + if (CR.rosterSettings.columns.Spot) { let spotCols = document.getElementsByClassName("spotCol"); for (const x in spotCols) { - if ((typeof spotCols[x].id != "undefined") && (typeof callRoster[spotCols[x].id.substr(2)] != "undefined")) + if ((typeof spotCols[x].id != "undefined") && (typeof CR.callRoster[spotCols[x].id.substr(2)] != "undefined")) { spotCols[x].innerHTML = getSpotString( - callRoster[spotCols[x].id.substr(2)].callObj + CR.callRoster[spotCols[x].id.substr(2)].callObj ); - if (g_rosterSettings.onlySpot && spotCols[x].innerHTML == "") + if (CR.rosterSettings.onlySpot && spotCols[x].innerHTML == "") { viewRoster(); return; @@ -449,8 +447,8 @@ function getSpotString(callObj) if (callObj.spot && callObj.spot.when > 0) { when = timeNowSec() - callObj.spot.when; - if (when <= window.opener.g_receptionSettings.viewHistoryTimeSec) - { result = parseInt(when).toDHM(); } + if (when <= window.opener.GT.receptionSettings.viewHistoryTimeSec) + { result = toDHM(parseInt(when)); } } if (result != " ") result += " / " + callObj.spot.snr; return result; @@ -469,29 +467,29 @@ function initiateQso(thisHash) function callLookup(thisHash, grid) { window.opener.startLookup( - callRoster[thisHash].DEcall, - callRoster[thisHash].grid + CR.callRoster[thisHash].DEcall, + CR.callRoster[thisHash].grid ); } function callingLookup(thisHash, grid) { - let thisCall = callRoster[thisHash].DXcall; + let thisCall = CR.callRoster[thisHash].DXcall; window.opener.startLookup(thisCall, grid); } function callGenMessage(thisHash, grid) { - let thisCall = callRoster[thisHash].DEcall; - let instance = callRoster[thisHash].callObj.instance; + let thisCall = CR.callRoster[thisHash].DEcall; + let instance = CR.callRoster[thisHash].callObj.instance; window.opener.startGenMessages(thisCall, grid, instance); } function callingGenMessage(thisHash, grid) { - let thisCall = callRoster[thisHash].DXcall; - let instance = callRoster[thisHash].callObj.instance; + let thisCall = CR.callRoster[thisHash].DXcall; + let instance = CR.callRoster[thisHash].callObj.instance; window.opener.startGenMessages(thisCall, grid, instance); } @@ -503,15 +501,15 @@ function centerOn(grid) function instanceChange(what) { - window.opener.g_instances[what.id].crEnable = what.checked; + window.opener.GT.instances[what.id].crEnable = what.checked; window.opener.goProcessRoster(); } function updateInstances() { - if (window.opener.g_instancesIndex.length > 1) + if (window.opener.GT.instancesIndex.length > 1) { - let instances = window.opener.g_instances; + let instances = window.opener.GT.instances; let worker = ""; @@ -618,7 +616,7 @@ function createSelectOptions( let option = document.createElement("option"); option.value = opt; option.text = altName ? forObject[opt][altName] : opt; - if (checkSponsor && opt + "-" + checkSponsor in g_awardTracker) + if (checkSponsor && opt + "-" + checkSponsor in CR.awardTracker) { option.disabled = true; } selector.appendChild(option); @@ -631,7 +629,7 @@ function awardSponsorChanged() createSelectOptions( "awardName", "Select Award", - g_awards[awardSponsor.value].awards, + CR.awards[awardSponsor.value].awards, "name", null, awardSponsor.value @@ -647,9 +645,9 @@ function awardNameChanged() ); let hash = awardToAdd.name + "-" + awardToAdd.sponsor; - if (!(hash in g_awardTracker)) + if (!(hash in CR.awardTracker)) { - g_awardTracker[hash] = awardToAdd; + CR.awardTracker[hash] = awardToAdd; storeAwardTracker(); processAward(hash); updateAwardList(hash); @@ -658,7 +656,7 @@ function awardNameChanged() createSelectOptions( "awardName", "Select Award", - g_awards[awardToAdd.sponsor].awards, + CR.awards[awardToAdd.sponsor].awards, "name", null, awardToAdd.sponsor @@ -677,12 +675,12 @@ function updateAwardList(target = null) AwardWantedList.innerHTML = worker; - let keys = Object.keys(g_awardTracker).sort(); + let keys = Object.keys(CR.awardTracker).sort(); for (const key in keys) { - let award = g_awardTracker[keys[key]]; - let rule = g_awards[award.sponsor].awards[award.name].rule; + let award = CR.awardTracker[keys[key]]; + let rule = CR.awards[award.sponsor].awards[award.name].rule; let row = awardTable.insertRow(); row.id = keys[key]; let baseAward = false; @@ -692,7 +690,7 @@ function updateAwardList(target = null) let endorseTotal = 0; let allEndorse = false; - let tooltip = g_awards[award.sponsor].awards[award.name].tooltip + " (" + g_awards[award.sponsor].sponsor + ")\n"; + let tooltip = CR.awards[award.sponsor].awards[award.name].tooltip + " (" + CR.awards[award.sponsor].sponsor + ")\n"; tooltip += toTitleCase(award.test.qsl_req) + " QSO\n"; for (const mode in award.comp.counts) { @@ -752,7 +750,7 @@ function updateAwardList(target = null) function deleteAwardTracker(sender) { let id = sender.parentNode.parentNode.id; - delete g_awardTracker[id]; + delete CR.awardTracker[id]; storeAwardTracker(); resetAwardAdd(); updateAwardList(); @@ -762,7 +760,7 @@ function deleteAwardTracker(sender) function awardCheckboxChanged(sender) { let awardId = sender.target.parentNode.parentNode.id; - g_awardTracker[sender.target.parentNode.parentNode.id][sender.target.name] = + CR.awardTracker[sender.target.parentNode.parentNode.id][sender.target.name] = sender.target.checked; storeAwardTracker(); window.opener.goProcessRoster(); @@ -771,7 +769,7 @@ function awardCheckboxChanged(sender) function awardValueChanged(sender) { let awardId = sender.target.parentNode.parentNode.id; - g_awardTracker[sender.target.parentNode.parentNode.id][sender.target.name] = + CR.awardTracker[sender.target.parentNode.parentNode.id][sender.target.name] = sender.target.value; storeAwardTracker(); window.opener.goProcessRoster(); @@ -839,7 +837,7 @@ function resetAwardAdd() { awardName.style.display = "none"; createSelectOptions("awardName", "Select Award", null); - createSelectOptions("awardSponsor", "Select Sponsor", g_awards, "sponsor"); + createSelectOptions("awardSponsor", "Select Sponsor", CR.awards, "sponsor"); } function openAwardPopup() @@ -856,8 +854,8 @@ function closeAwardPopup() function toggleMoreControls() { - g_rosterSettings.controlsExtended = !g_rosterSettings.controlsExtended; - localStorage.rosterSettings = JSON.stringify(g_rosterSettings); + CR.rosterSettings.controlsExtended = !CR.rosterSettings.controlsExtended; + localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); setVisual(); } @@ -868,9 +866,9 @@ function setVisual() stateSelect.style.display = "none"; DXCCsSelect.style.display = "none"; - if (g_rosterSettings.controls) + if (CR.rosterSettings.controls) { - if (g_rosterSettings.controlsExtended) + if (CR.rosterSettings.controlsExtended) { RosterControls.className = "extended"; instancesWrapper.style.display = ""; @@ -897,11 +895,11 @@ function setVisual() } else { - for (const key in g_rosterSettings.wanted) + for (const key in CR.rosterSettings.wanted) { if (document.getElementById(key)) { - document.getElementById(key).checked = g_rosterSettings.wanted[key]; + document.getElementById(key).checked = CR.rosterSettings.wanted[key]; } } @@ -1002,10 +1000,10 @@ function setVisual() callsignRegex.style.display = "none"; } - if (window.opener.g_callsignLookups.lotwUseEnable == true) + if (window.opener.GT.callsignLookups.lotwUseEnable == true) { usesLoTWDiv.style.display = ""; - if (g_rosterSettings.usesLoTW == true) + if (CR.rosterSettings.usesLoTW == true) { maxLoTW.style.display = ""; maxLoTWView.style.display = ""; @@ -1023,7 +1021,7 @@ function setVisual() maxLoTWView.style.display = "none"; } - if (window.opener.g_callsignLookups.eqslUseEnable == true) + if (window.opener.GT.callsignLookups.eqslUseEnable == true) { useseQSLDiv.style.display = ""; } @@ -1032,7 +1030,7 @@ function setVisual() useseQSLDiv.style.display = "none"; } - if (window.opener.g_callsignLookups.oqrsUseEnable == true) + if (window.opener.GT.callsignLookups.oqrsUseEnable == true) { usesOQRSDiv.style.display = ""; } @@ -1041,7 +1039,7 @@ function setVisual() usesOQRSDiv.style.display = "none"; } - if (g_rosterSettings.columns.Spot == true) + if (CR.rosterSettings.columns.Spot == true) { onlySpotDiv.style.display = ""; } @@ -1050,7 +1048,7 @@ function setVisual() onlySpotDiv.style.display = "none"; } - if (g_rosterSettings.callsign == "all" || g_rosterSettings.callsign == "hits") + if (CR.rosterSettings.callsign == "all" || CR.rosterSettings.callsign == "hits") { allOnlyNewDiv.style.display = ""; } @@ -1066,23 +1064,23 @@ function setVisual() function wantedChanged(element) { - g_rosterSettings.wanted[element.id] = element.checked; + CR.rosterSettings.wanted[element.id] = element.checked; if (element.checked == true) { let t = element.id.replace("hunt", ""); - if (t in g_rosterSettings.columns) + if (t in CR.rosterSettings.columns) { - g_rosterSettings.columns[t] = true; + CR.rosterSettings.columns[t] = true; - for (const i in g_menu.items) + for (const i in CR.menu.items) { if ( - typeof g_menu.items[i].checked != "undefined" && - g_menu.items[i].label == t + typeof CR.menu.items[i].checked != "undefined" && + CR.menu.items[i].label == t ) - { g_menu.items[i].checked = true; } + { CR.menu.items[i].checked = true; } } } } @@ -1091,10 +1089,10 @@ function wantedChanged(element) writeRosterSettings(); - g_scriptReport = Object(); - for (const callHash in window.opener.g_callRoster) + CR.scriptReport = Object(); + for (const callHash in window.opener.GT.callRoster) { - window.opener.g_callRoster[callHash].callObj.alerted = false; + window.opener.GT.callRoster[callHash].callObj.alerted = false; } window.opener.goProcessRoster(); } @@ -1103,30 +1101,30 @@ function valuesChanged() { setVisual(); - g_rosterSettings.callsign = callsignNeed.value; - g_rosterSettings.hunting = huntMode.value; - g_rosterSettings.huntNeed = huntNeed.value; - g_rosterSettings.requireGrid = wantGrid.checked; + CR.rosterSettings.callsign = callsignNeed.value; + CR.rosterSettings.hunting = huntMode.value; + CR.rosterSettings.huntNeed = huntNeed.value; + CR.rosterSettings.requireGrid = wantGrid.checked; - g_rosterSettings.wantMaxDT = wantMaxDT.checked; - g_rosterSettings.wantMinDB = wantMinDB.checked; - g_rosterSettings.wantMinFreq = wantMinFreq.checked; - g_rosterSettings.wantMaxFreq = wantMaxFreq.checked; - g_rosterSettings.wantRRCQ = wantRRCQ.checked; + CR.rosterSettings.wantMaxDT = wantMaxDT.checked; + CR.rosterSettings.wantMinDB = wantMinDB.checked; + CR.rosterSettings.wantMinFreq = wantMinFreq.checked; + CR.rosterSettings.wantMaxFreq = wantMaxFreq.checked; + CR.rosterSettings.wantRRCQ = wantRRCQ.checked; - maxDTView.innerHTML = g_rosterSettings.maxDT = maxDT.value; - minDbView.innerHTML = g_rosterSettings.minDb = minDb.value; - minFreqView.innerHTML = g_rosterSettings.minFreq = minFreq.value; - maxFreqView.innerHTML = g_rosterSettings.maxFreq = maxFreq.value; - g_rosterSettings.maxLoTW = maxLoTW.value; - maxLoTWView.innerHTML = g_rosterSettings.maxLoTW < 27 ? Number(g_rosterSettings.maxLoTW).toYM() : ""; - g_rosterSettings.maxLoTW = maxLoTW.value; - g_rosterSettings.cqOnly = cqOnly.checked; - g_rosterSettings.noMyDxcc = noMyDxcc.checked; - g_rosterSettings.onlyMyDxcc = onlyMyDxcc.checked; + maxDTView.innerHTML = CR.rosterSettings.maxDT = maxDT.value; + minDbView.innerHTML = CR.rosterSettings.minDb = minDb.value; + minFreqView.innerHTML = CR.rosterSettings.minFreq = minFreq.value; + maxFreqView.innerHTML = CR.rosterSettings.maxFreq = maxFreq.value; + CR.rosterSettings.maxLoTW = maxLoTW.value; + maxLoTWView.innerHTML = CR.rosterSettings.maxLoTW < 27 ? toYM(Number(CR.rosterSettings.maxLoTW)) : ""; + CR.rosterSettings.maxLoTW = maxLoTW.value; + CR.rosterSettings.cqOnly = cqOnly.checked; + CR.rosterSettings.noMyDxcc = noMyDxcc.checked; + CR.rosterSettings.onlyMyDxcc = onlyMyDxcc.checked; if (noMsg.checked && onlyMsg.checked && noMsgValue.value == onlyMsgValue.value) { - if (g_rosterSettings.noMsg) + if (CR.rosterSettings.noMsg) { noMsg.checked = false; } @@ -1135,42 +1133,42 @@ function valuesChanged() onlyMsg.checked = false; } } - g_rosterSettings.noMsg = noMsg.checked; - g_rosterSettings.onlyMsg = onlyMsg.checked; - g_rosterSettings.noMsgValue = noMsgValue.value; - g_rosterSettings.onlyMsgValue = onlyMsgValue.value; - g_rosterSettings.usesLoTW = usesLoTW.checked; - g_rosterSettings.useseQSL = useseQSL.checked; - g_rosterSettings.usesOQRS = usesOQRS.checked; - g_rosterSettings.onlySpot = onlySpot.checked; - g_rosterSettings.reference = referenceNeed.value; - g_rosterSettings.allOnlyNew = allOnlyNew.checked; - g_rosterSettings.useRegex = useRegex.checked; - g_rosterSettings.callsignRegex = callsignRegex.value; - g_rosterSettings.huntRegexValue = huntRegexValue.value; - g_rosterSettings.noUnknownDXCC = noUnknownDXCC.checked; + CR.rosterSettings.noMsg = noMsg.checked; + CR.rosterSettings.onlyMsg = onlyMsg.checked; + CR.rosterSettings.noMsgValue = noMsgValue.value; + CR.rosterSettings.onlyMsgValue = onlyMsgValue.value; + CR.rosterSettings.usesLoTW = usesLoTW.checked; + CR.rosterSettings.useseQSL = useseQSL.checked; + CR.rosterSettings.usesOQRS = usesOQRS.checked; + CR.rosterSettings.onlySpot = onlySpot.checked; + CR.rosterSettings.reference = referenceNeed.value; + CR.rosterSettings.allOnlyNew = allOnlyNew.checked; + CR.rosterSettings.useRegex = useRegex.checked; + CR.rosterSettings.callsignRegex = callsignRegex.value; + CR.rosterSettings.huntRegexValue = huntRegexValue.value; + CR.rosterSettings.noUnknownDXCC = noUnknownDXCC.checked; writeRosterSettings(); - g_scriptReport = Object(); - for (const callHash in window.opener.g_callRoster) + CR.scriptReport = Object(); + for (const callHash in window.opener.GT.callRoster) { - window.opener.g_callRoster[callHash].callObj.alerted = false; + window.opener.GT.callRoster[callHash].callObj.alerted = false; } window.opener.goProcessRoster(); } function loadFilterSettings() { - var filters = ""; - for (const filter in g_rosterSettings.displayFilters) + let filters = ""; + for (const filter in CR.rosterSettings.displayFilters) { - var slider = document.getElementById("filter" + filter + "Slider"); + let slider = document.getElementById("filter" + filter + "Slider"); if (slider) { - slider.value = g_rosterSettings.displayFilters[filter]; - var td = document.getElementById("filter" + filter + "Td"); + slider.value = CR.rosterSettings.displayFilters[filter]; + let td = document.getElementById("filter" + filter + "Td"); if (filter != "huerotate") { td.innerHTML = slider.value + "%"; @@ -1188,18 +1186,18 @@ function loadFilterSettings() function filtersChanged() { - for (const filter in g_rosterSettings.displayFilters) + for (const filter in CR.rosterSettings.displayFilters) { - var slider = document.getElementById("filter" + filter + "Slider"); + let slider = document.getElementById("filter" + filter + "Slider"); if (slider) { - g_rosterSettings.displayFilters[filter] = slider.value; + CR.rosterSettings.displayFilters[filter] = slider.value; } else { // no longer a filter, get rid of it - delete g_rosterSettings.displayFilters[filter]; + delete CR.rosterSettings.displayFilters[filter]; } } loadFilterSettings(); @@ -1207,9 +1205,9 @@ function filtersChanged() function resetFilters() { - for (const filter in g_rosterSettings.displayFilters) + for (const filter in CR.rosterSettings.displayFilters) { - g_rosterSettings.displayFilters[filter] = g_def_displayFilters[filter]; + CR.rosterSettings.displayFilters[filter] = CR.def_displayFilters[filter]; } loadFilterSettings(); } @@ -1266,27 +1264,27 @@ function getBuffer(file_url, callback, flag, mode, port, cookie) function callsignResult(buffer, flag) { let rawData = JSON.parse(buffer); - r_currentUSState = flag; + CR.currentUSState = flag; - g_currentUSCallsigns = Object(); - for (const key in rawData.c) g_currentUSCallsigns[rawData.c[key]] = true; + CR.currentUSCallsigns = Object(); + for (const key in rawData.c) CR.currentUSCallsigns[rawData.c[key]] = true; window.opener.goProcessRoster(); } function stateChangedValue(what) { - if (r_currentUSState != stateSelect.value && stateSelect.value != "") + if (CR.currentUSState != stateSelect.value && stateSelect.value != "") { - r_currentUSState = stateSelect.value; + CR.currentUSState = stateSelect.value; - if (window.opener.g_mapSettings.offlineMode == false) + if (window.opener.GT.mapSettings.offlineMode == false) { - let callState = r_currentUSState.replace("CN-", ""); + let callState = CR.currentUSState.replace("CN-", ""); getBuffer( "https://storage.googleapis.com/gt_app/callsigns/" + callState + ".callsigns.json", callsignResult, - r_currentUSState, + CR.currentUSState, "http", 80 ); @@ -1294,8 +1292,8 @@ function stateChangedValue(what) else { window.opener.goProcessRoster(); - r_currentUSState = ""; - g_currentUSCallsigns = null; + CR.currentUSState = ""; + CR.currentUSCallsigns = null; stateSelect.value = ""; return; @@ -1304,8 +1302,8 @@ function stateChangedValue(what) if (stateSelect.value == "") { - r_currentUSState = ""; - g_currentUSCallsigns = null; + CR.currentUSState = ""; + CR.currentUSCallsigns = null; window.opener.goProcessRoster(); } @@ -1313,16 +1311,16 @@ function stateChangedValue(what) function DXCCsChangedValue(what) { - r_currentDXCCs = DXCCsSelect.value; + CR.currentDXCCs = DXCCsSelect.value; window.opener.goProcessRoster(); } function initDXCCSelector() { - let items = Object.keys(window.opener.g_dxccToAltName).sort(function (a, b) + let items = Object.keys(window.opener.GT.dxccToAltName).sort(function (a, b) { - return window.opener.g_dxccToAltName[a].localeCompare( - window.opener.g_dxccToAltName[b] + return window.opener.GT.dxccToAltName[a].localeCompare( + window.opener.GT.dxccToAltName[b] ); }); let newSelect = document.getElementById("DXCCsSelect"); @@ -1332,16 +1330,16 @@ function initDXCCSelector() let key = items[i]; if ( - window.opener.g_dxccInfo[key].geo != + window.opener.GT.dxccInfo[key].geo != "deleted" ) { let option = document.createElement("option"); option.value = key; option.text = - window.opener.g_dxccToAltName[key] + + window.opener.GT.dxccToAltName[key] + " (" + - window.opener.g_dxccInfo[key].pp + + window.opener.GT.dxccInfo[key].pp + ")"; newSelect.appendChild(option); @@ -1352,21 +1350,21 @@ function initDXCCSelector() function manifestResult(buffer, flag) { - r_callsignManifest = JSON.parse(buffer); + CR.callsignManifest = JSON.parse(buffer); let newSelect = document.getElementById("stateSelect"); - for (const key in r_callsignManifest.cnt) + for (const key in CR.callsignManifest.cnt) { let option = document.createElement("option"); - if (window.opener.g_enums[key]) + if (window.opener.GT.enums[key]) { option.value = key; - option.text = window.opener.g_enums[key]; + option.text = window.opener.GT.enums[key]; } else { option.value = "CN-" + key; - option.text = window.opener.g_enums["CN-" + key]; + option.text = window.opener.GT.enums["CN-" + key]; } newSelect.appendChild(option); } @@ -1375,22 +1373,22 @@ function manifestResult(buffer, flag) function receiveMessage(event) {} -var g_tracker = {}; +CR.tracker = {}; function updateWorked() { - g_worked = window.opener.g_tracker.worked; - g_confirmed = window.opener.g_tracker.confirmed; - g_modes = window.opener.g_modes; - g_modes_phone = window.opener.g_modes_phone; - g_tracker = window.opener.g_tracker; + CR.worked = window.opener.GT.tracker.worked; + CR.confirmed = window.opener.GT.tracker.confirmed; + CR.modes = window.opener.GT.modes; + CR.modes_phone = window.opener.GT.modes_phone; + CR.tracker = window.opener.GT.tracker; processAllAwardTrackers(); } function deleteCallsignIgnore(key) { - delete g_blockedCalls[key]; + delete CR.blockedCalls[key]; storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1398,7 +1396,7 @@ function deleteCallsignIgnore(key) function deleteDxccIgnore(key) { - delete g_blockedDxcc[key]; + delete CR.blockedDxcc[key]; storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1406,7 +1404,7 @@ function deleteDxccIgnore(key) function deleteCQIgnore(key) { - delete g_blockedCQ[key]; + delete CR.blockedCQ[key]; storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1414,7 +1412,7 @@ function deleteCQIgnore(key) function deleteCQzIgnore(key) { - delete g_blockedCQz[key]; + delete CR.blockedCQz[key]; storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1422,7 +1420,7 @@ function deleteCQzIgnore(key) function deleteITUzIgnore(key) { - delete g_blockedITUz[key]; + delete CR.blockedITUz[key]; storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1430,7 +1428,7 @@ function deleteITUzIgnore(key) function clearAllCallsignIgnores() { - g_blockedCalls = Object(); + CR.blockedCalls = Object(); storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1438,7 +1436,7 @@ function clearAllCallsignIgnores() function clearAllDxccIgnores() { - g_blockedDxcc = Object(); + CR.blockedDxcc = Object(); storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1446,7 +1444,7 @@ function clearAllDxccIgnores() function clearAllCQIgnores() { - g_blockedCQ = Object(); + CR.blockedCQ = Object(); storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1454,7 +1452,7 @@ function clearAllCQIgnores() function clearAllCQzIgnores() { - g_blockedCQz = Object(); + CR.blockedCQz = Object(); storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1462,7 +1460,7 @@ function clearAllCQzIgnores() function clearAllITUzIgnores() { - g_blockedITUz = Object(); + CR.blockedITUz = Object(); storeBlocks(); openIgnoreEdit(); window.opener.goProcessRoster(); @@ -1495,7 +1493,7 @@ function openIgnoreEdit() let worker = ""; let clearString = ""; - if (Object.keys(g_blockedCalls).length > 0) + if (Object.keys(CR.blockedCalls).length > 0) { clearString = ""; @@ -1506,7 +1504,7 @@ function openIgnoreEdit() "px;'>
ActivatorStartEndFrequenciesComment
" + g_pota.parkSchedule[key][i].id + "" + ((now >= start) ? "Now" : (userTimeString(start) + "
T- " + Number(start - now).msToDHMS() + "")) + "
" + (userTimeString(end) + "
T- " + Number(end - now).msToDHMS() + "") + "
" + g_pota.parkSchedule[key][i].frequencies + "" + g_pota.parkSchedule[key][i].comments.substr(0, 40) + "
noneClear All
" + clearString + ""; - Object.keys(g_blockedCalls) + Object.keys(CR.blockedCalls) .sort() .forEach(function (key, i) { @@ -1520,7 +1518,7 @@ function openIgnoreEdit() worker += "
Callsigns
"; clearString = "
noneClear All
" + clearString + ""; - Object.keys(g_blockedCQ) + Object.keys(CR.blockedCQ) .sort() .forEach(function (key, i) { @@ -1545,7 +1543,7 @@ function openIgnoreEdit() worker += "
CQ
"; clearString = "
noneClear All
" + clearString + ""; - Object.keys(g_blockedDxcc) + Object.keys(CR.blockedDxcc) .sort() .forEach(function (key, i) { worker += ""; }); worker += "
DXCCs
" + - window.opener.g_dxccToAltName[key] + + window.opener.GT.dxccToAltName[key] + " (" + - window.opener.g_dxccInfo[key].pp + + window.opener.GT.dxccInfo[key].pp + ")
"; - if (Object.keys(g_blockedCQz).length > 0) + if (Object.keys(CR.blockedCQz).length > 0) { clearString = "Clear All"; @@ -1582,7 +1580,7 @@ function openIgnoreEdit() "px;'>" + clearString + ""; - Object.keys(g_blockedCQz) + Object.keys(CR.blockedCQz) .sort() .forEach(function (key, i) { @@ -1595,7 +1593,7 @@ function openIgnoreEdit() }); worker += "
CQ Zones
"; - if (Object.keys(g_blockedITUz).length > 0) + if (Object.keys(CR.blockedITUz).length > 0) { clearString = "Clear All"; @@ -1606,7 +1604,7 @@ function openIgnoreEdit() "px;'>" + clearString + ""; - Object.keys(g_blockedITUz) + Object.keys(CR.blockedITUz) .sort() .forEach(function (key, i) { @@ -1625,7 +1623,7 @@ function openIgnoreEdit() function onMyKeyDown(event) { - if (!g_typingInRoster) + if (!CR.typingInRoster) { if (event.code == "KeyS" && event.ctrlKey == true) { @@ -1659,11 +1657,11 @@ function resize() function init() { - window.opener.g_rosterInitialized = true; + window.opener.GT.rosterInitialized = true; - g_callsignDatabaseDXCC = window.opener.g_callsignDatabaseDXCC; - g_callsignDatabaseUS = window.opener.g_callsignDatabaseUS; - g_callsignDatabaseUSplus = window.opener.g_callsignDatabaseUSplus; + CR.callsignDatabaseDXCC = window.opener.GT.callsignDatabaseDXCC; + CR.callsignDatabaseUS = window.opener.GT.callsignDatabaseUS; + CR.callsignDatabaseUSplus = window.opener.GT.callsignDatabaseUSplus; loadAwardJson(); updateWorked(); @@ -1672,7 +1670,7 @@ function init() window.addEventListener("message", receiveMessage, false); lockNewWindows(); - if (window.opener.g_mapSettings.offlineMode == false) + if (window.opener.GT.mapSettings.offlineMode == false) { getBuffer( "https://storage.googleapis.com/gt_app/callsigns/manifest.json", @@ -1712,61 +1710,61 @@ function addControls() pota: $.i18n("rosterColumns.Wanted.pota") } - window.opener.setRosterSpot(g_rosterSettings.columns.Spot); + window.opener.setRosterSpot(CR.rosterSettings.columns.Spot); - for (const key in g_rosterSettings.wanted) + for (const key in CR.rosterSettings.wanted) { if (document.getElementById(key)) - { document.getElementById(key).checked = g_rosterSettings.wanted[key]; } + { document.getElementById(key).checked = CR.rosterSettings.wanted[key]; } } - g_menu = new nw.Menu(); - g_compactMenu = new nw.Menu(); + CR.menu = new nw.Menu(); + CR.compactMenu = new nw.Menu(); let showControlsText = $.i18n("roster.menu.ShowControls"); let hideControlsText = $.i18n("roster.menu.HideControls"); let item = new nw.MenuItem({ type: "normal", - label: g_rosterSettings.controls ? hideControlsText : showControlsText, + label: CR.rosterSettings.controls ? hideControlsText : showControlsText, click: function () { if (this.label == "Hide Controls") { this.label = showControlsText; - g_rosterSettings.controls = false; + CR.rosterSettings.controls = false; } else { this.label = hideControlsText; - g_rosterSettings.controls = true; + CR.rosterSettings.controls = true; } - g_compactMenu.items[0].label = g_rosterSettings.controls ? hideControlsText : showControlsText; - localStorage.rosterSettings = JSON.stringify(g_rosterSettings); + CR.compactMenu.items[0].label = CR.rosterSettings.controls ? hideControlsText : showControlsText; + localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); setVisual(); } }); - g_menu.append(item); + CR.menu.append(item); item = new nw.MenuItem({ type: "normal", - label: g_rosterSettings.controls ? hideControlsText : showControlsText, + label: CR.rosterSettings.controls ? hideControlsText : showControlsText, click: function () { if (this.label == hideControlsText) { this.label = showControlsText; - g_rosterSettings.controls = false; + CR.rosterSettings.controls = false; } else { this.label = hideControlsText; - g_rosterSettings.controls = true; + CR.rosterSettings.controls = true; } - g_menu.items[0].label = g_rosterSettings.controls ? hideControlsText : showControlsText; - localStorage.rosterSettings = JSON.stringify(g_rosterSettings); + CR.menu.items[0].label = CR.rosterSettings.controls ? hideControlsText : showControlsText; + localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); setVisual(); } }); - g_compactMenu.append(item); + CR.compactMenu.append(item); item = new nw.MenuItem({ type: "normal", @@ -1776,7 +1774,7 @@ function addControls() openSettings(); } }); - g_menu.append(item); + CR.menu.append(item); item = new nw.MenuItem({ type: "normal", @@ -1786,73 +1784,73 @@ function addControls() openSettings(); } }); - g_compactMenu.append(item); + CR.compactMenu.append(item); item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.CompactMode"), click: function () { - g_rosterSettings.compact = true; - localStorage.rosterSettings = JSON.stringify(g_rosterSettings); + CR.rosterSettings.compact = true; + localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); resize(); } }); - g_menu.append(item); + CR.menu.append(item); item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.RosterMode"), click: function () { - g_rosterSettings.compact = false; - localStorage.rosterSettings = JSON.stringify(g_rosterSettings); + CR.rosterSettings.compact = false; + localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); resize(); } }); - g_compactMenu.append(item); + CR.compactMenu.append(item); - g_callMenu = new nw.Menu(); + CR.callMenu = new nw.Menu(); item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.Lookup"), click: function () { - callLookup(g_targetHash, ""); + callLookup(CR.targetHash, ""); } }); - g_callMenu.append(item); + CR.callMenu.append(item); item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.GenMesg"), click: function () { - callGenMessage(g_targetHash, ""); + callGenMessage(CR.targetHash, ""); } }); - g_callMenu.append(item); + CR.callMenu.append(item); item = new nw.MenuItem({ type: "separator" }); - g_callMenu.append(item); + CR.callMenu.append(item); - if (window.opener.g_pstrotatorSettings.enable) + if (window.opener.GT.pstrotatorSettings.enable) { item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.AimRotator"), click: function () { - let target = callRoster[g_targetHash] + let target = CR.callRoster[CR.targetHash] window.opener.aimRotator(target, ""); } }); - g_callMenu.append(item); + CR.callMenu.append(item); item = new nw.MenuItem({ type: "separator" }); - g_callMenu.append(item); + CR.callMenu.append(item); } item = new nw.MenuItem({ @@ -1860,197 +1858,197 @@ function addControls() label: $.i18n("roster.menu.IgnoreCall"), click: function () { - let thisCall = callRoster[g_targetHash].DEcall; - g_blockedCalls[thisCall] = true; + let thisCall = CR.callRoster[CR.targetHash].DEcall; + CR.blockedCalls[thisCall] = true; storeBlocks(); window.opener.goProcessRoster(); } }); - g_callMenu.append(item); + CR.callMenu.append(item); - g_callingMenu = new nw.Menu(); + CR.callingMenu = new nw.Menu(); item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.Lookup"), click: function () { - callingLookup(g_targetHash, ""); + callingLookup(CR.targetHash, ""); } }); - g_callingMenu.append(item); + CR.callingMenu.append(item); item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.GenMesg"), click: function () { - callingGenMessage(g_targetHash, ""); + callingGenMessage(CR.targetHash, ""); } }); - g_callingMenu.append(item); + CR.callingMenu.append(item); item = new nw.MenuItem({ type: "separator" }); - g_menu.append(item); + CR.menu.append(item); - if (window.opener.g_pstrotatorSettings.enable) + if (window.opener.GT.pstrotatorSettings.enable) { item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.AimRotator"), click: function () { - let target = callRoster[g_targetHash] + let target = CR.callRoster[CR.targetHash] window.opener.aimRotator(target, ""); } }); - g_callingMenu.append(item); + CR.callingMenu.append(item); item = new nw.MenuItem({ type: "separator" }); - g_callingMenu.append(item); + CR.callingMenu.append(item); } item = new nw.MenuItem({ type: "checkbox", label: $.i18n("roster.menu.Realtime"), - checked: g_rosterSettings.realtime, + checked: CR.rosterSettings.realtime, click: function () { - g_rosterSettings.realtime = this.checked; + CR.rosterSettings.realtime = this.checked; writeRosterSettings(); window.opener.goProcessRoster(); } }); - g_menu.append(item); + CR.menu.append(item); item = new nw.MenuItem({ type: "separator" }); - g_menu.append(item); + CR.menu.append(item); - g_menuItemForCurrentColumn = new nw.MenuItem({ + CR.menuItemForCurrentColumn = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.MoveLeft"), click: function () { - moveColumnLeft(g_currentColumnName); + moveColumnLeft(CR.currentColumnName); } }) - g_menu.append(g_menuItemForCurrentColumn) + CR.menu.append(CR.menuItemForCurrentColumn) item = new nw.MenuItem({ type: "separator" }); - g_menu.append(item); + CR.menu.append(item); - for (const columnIndex in g_rosterSettings.columnOrder) + for (const columnIndex in CR.rosterSettings.columnOrder) { - let key = g_rosterSettings.columnOrder[columnIndex]; + let key = CR.rosterSettings.columnOrder[columnIndex]; if (key != "Callsign") { let itemx = new nw.MenuItem({ type: "checkbox", label: key, - checked: g_rosterSettings.columns[key], + checked: CR.rosterSettings.columns[key], click: function () { - g_rosterSettings.columns[this.label] = this.checked; + CR.rosterSettings.columns[this.label] = this.checked; if (this.label == "Spot") - { window.opener.setRosterSpot(g_rosterSettings.columns.Spot); } + { window.opener.setRosterSpot(CR.rosterSettings.columns.Spot); } writeRosterSettings(); window.opener.goProcessRoster(); resize(); } }); - g_menu.append(itemx); + CR.menu.append(itemx); } } item = new nw.MenuItem({ type: "separator" }); - g_menu.append(item); + CR.menu.append(item); - g_clearIgnores = new nw.MenuItem({ + CR.clearIgnores = new nw.MenuItem({ type: "normal", label: "Clear Call Ignore", enabled: false, click: function () { - g_blockedCalls = Object(); + CR.blockedCalls = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_menu.append(g_clearIgnores); + CR.menu.append(CR.clearIgnores); - g_clearIgnoresCall = new nw.MenuItem({ + CR.clearIgnoresCall = new nw.MenuItem({ type: "normal", label: "Clear Ignore", enabled: false, click: function () { - g_blockedCalls = Object(); + CR.blockedCalls = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_callMenu.append(g_clearIgnoresCall); + CR.callMenu.append(CR.clearIgnoresCall); - g_CQMenu = new nw.Menu(); + CR.CQMenu = new nw.Menu(); item = new nw.MenuItem({ type: "normal", label: "Ignore CQ from DXCC", click: function () { - g_blockedCQ[ - callRoster[g_targetCQ].DXcall + + CR.blockedCQ[ + CR.callRoster[CR.targetCQ].DXcall + " from " + - window.opener.g_dxccToAltName[callRoster[g_targetCQ].callObj.dxcc] + window.opener.GT.dxccToAltName[CR.callRoster[CR.targetCQ].callObj.dxcc] ] = true; storeBlocks(); window.opener.goProcessRoster(); } }); - g_CQMenu.append(item); + CR.CQMenu.append(item); item = new nw.MenuItem({ type: "normal", label: "Ignore CQ from All", click: function () { - g_blockedCQ[callRoster[g_targetCQ].DXcall + " from All"] = true; + CR.blockedCQ[CR.callRoster[CR.targetCQ].DXcall + " from All"] = true; storeBlocks(); window.opener.goProcessRoster(); } }); - g_CQMenu.append(item); + CR.CQMenu.append(item); - g_clearCQIgnoreMainMenu = new nw.MenuItem({ + CR.clearCQIgnoreMainMenu = new nw.MenuItem({ type: "normal", label: "Clear CQ Ignore", enabled: false, click: function () { - g_blockedCQ = Object(); + CR.blockedCQ = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_menu.append(g_clearCQIgnoreMainMenu); + CR.menu.append(CR.clearCQIgnoreMainMenu); - g_clearCQIgnore = new nw.MenuItem({ + CR.clearCQIgnore = new nw.MenuItem({ type: "normal", label: "Clear Ignore", enabled: false, click: function () { - g_blockedCQ = Object(); + CR.blockedCQ = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_CQMenu.append(g_clearCQIgnore); + CR.CQMenu.append(CR.clearCQIgnore); item = new nw.MenuItem({ type: "normal", @@ -2061,49 +2059,49 @@ function addControls() openIgnoreEdit(); } }); - g_CQMenu.append(item); + CR.CQMenu.append(item); - g_CQzMenu = new nw.Menu(); + CR.CQzMenu = new nw.Menu(); item = new nw.MenuItem({ type: "normal", label: "Ignore CQ Zone", click: function () { - g_blockedCQz[callRoster[g_targetCQz].callObj.cqz] = true; + CR.blockedCQz[CR.callRoster[CR.targetCQz].callObj.cqz] = true; storeBlocks(); window.opener.goProcessRoster(); } }); - g_CQzMenu.append(item); + CR.CQzMenu.append(item); - g_clearCQzIgnoreMainMenu = new nw.MenuItem({ + CR.clearCQzIgnoreMainMenu = new nw.MenuItem({ type: "normal", label: "Clear CQ Zone Ignore", enabled: false, click: function () { - g_blockedCQz = Object(); + CR.blockedCQz = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_clearCQzIgnore = new nw.MenuItem({ + CR.clearCQzIgnore = new nw.MenuItem({ type: "normal", label: "Clear Ignore", enabled: false, click: function () { - g_blockedCQz = Object(); + CR.blockedCQz = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_CQzMenu.append(g_clearCQzIgnore); + CR.CQzMenu.append(CR.clearCQzIgnore); - g_CQzMenu.append(g_clearCQzIgnoreMainMenu); + CR.CQzMenu.append(CR.clearCQzIgnoreMainMenu); item = new nw.MenuItem({ type: "normal", @@ -2115,50 +2113,50 @@ function addControls() } }); - g_CQzMenu.append(item); + CR.CQzMenu.append(item); - g_ITUzMenu = new nw.Menu(); + CR.ITUzMenu = new nw.Menu(); item = new nw.MenuItem({ type: "normal", label: "Ignore ITU Zone", click: function () { - g_blockedITUz[callRoster[g_targetITUz].callObj.ituz] = true; + CR.blockedITUz[CR.callRoster[CR.targetITUz].callObj.ituz] = true; storeBlocks(); window.opener.goProcessRoster(); } }); - g_ITUzMenu.append(item); + CR.ITUzMenu.append(item); - g_clearITUzIgnoreMainMenu = new nw.MenuItem({ + CR.clearITUzIgnoreMainMenu = new nw.MenuItem({ type: "normal", label: "Clear ITU Zone Ignore", enabled: false, click: function () { - g_blockedITUz = Object(); + CR.blockedITUz = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_ITUzMenu.append(g_clearITUzIgnoreMainMenu); + CR.ITUzMenu.append(CR.clearITUzIgnoreMainMenu); - g_clearITUzIgnore = new nw.MenuItem({ + CR.clearITUzIgnore = new nw.MenuItem({ type: "normal", label: "Clear Ignore", enabled: false, click: function () { - g_blockedITUz = Object(); + CR.blockedITUz = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_ITUzMenu.append(g_clearITUzIgnore); + CR.ITUzMenu.append(CR.clearITUzIgnore); item = new nw.MenuItem({ type: "normal", @@ -2170,48 +2168,48 @@ function addControls() } }); - g_ITUzMenu.append(item); + CR.ITUzMenu.append(item); - g_dxccMenu = new nw.Menu(); + CR.dxccMenu = new nw.Menu(); item = new nw.MenuItem({ type: "normal", label: "Ignore DXCC", click: function () { - g_blockedDxcc[g_targetDxcc] = true; + CR.blockedDxcc[CR.targetDxcc] = true; storeBlocks(); window.opener.goProcessRoster(); } }); - g_dxccMenu.append(item); + CR.dxccMenu.append(item); - g_clearDxccIgnoreMainMenu = new nw.MenuItem({ + CR.clearDxccIgnoreMainMenu = new nw.MenuItem({ type: "normal", label: "Clear DXCC Ignore", enabled: false, click: function () { - g_blockedDxcc = Object(); + CR.blockedDxcc = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_menu.append(g_clearDxccIgnoreMainMenu); + CR.menu.append(CR.clearDxccIgnoreMainMenu); - g_clearDxccIgnore = new nw.MenuItem({ + CR.clearDxccIgnore = new nw.MenuItem({ type: "normal", label: "Clear Ignore", enabled: false, click: function () { - g_blockedDxcc = Object(); + CR.blockedDxcc = Object(); storeBlocks(); window.opener.goProcessRoster(); } }); - g_dxccMenu.append(g_clearDxccIgnore); + CR.dxccMenu.append(CR.clearDxccIgnore); item = new nw.MenuItem({ type: "normal", @@ -2222,7 +2220,7 @@ function addControls() openIgnoreEdit(); } }); - g_menu.append(item); + CR.menu.append(item); item = new nw.MenuItem({ type: "normal", @@ -2233,7 +2231,7 @@ function addControls() openIgnoreEdit(); } }); - g_callMenu.append(item); + CR.callMenu.append(item); item = new nw.MenuItem({ type: "normal", @@ -2244,54 +2242,54 @@ function addControls() openIgnoreEdit(); } }); - g_dxccMenu.append(item); + CR.dxccMenu.append(item); - callsignNeed.value = g_rosterSettings.callsign; - huntMode.value = g_rosterSettings.hunting; - huntNeed.value = g_rosterSettings.huntNeed; - wantGrid.checked = g_rosterSettings.requireGrid; + callsignNeed.value = CR.rosterSettings.callsign; + huntMode.value = CR.rosterSettings.hunting; + huntNeed.value = CR.rosterSettings.huntNeed; + wantGrid.checked = CR.rosterSettings.requireGrid; - wantMaxDT.checked = g_rosterSettings.wantMaxDT; - wantMinDB.checked = g_rosterSettings.wantMinDB; - wantMinFreq.checked = g_rosterSettings.wantMinFreq; - wantMaxFreq.checked = g_rosterSettings.wantMaxFreq; - wantRRCQ.checked = g_rosterSettings.wantRRCQ; + wantMaxDT.checked = CR.rosterSettings.wantMaxDT; + wantMinDB.checked = CR.rosterSettings.wantMinDB; + wantMinFreq.checked = CR.rosterSettings.wantMinFreq; + wantMaxFreq.checked = CR.rosterSettings.wantMaxFreq; + wantRRCQ.checked = CR.rosterSettings.wantRRCQ; - maxDTView.innerHTML = maxDT.value = g_rosterSettings.maxDT; - minDbView.innerHTML = minDb.value = g_rosterSettings.minDb; - minFreqView.innerHTML = minFreq.value = g_rosterSettings.minFreq; - maxFreqView.innerHTML = maxFreq.value = g_rosterSettings.maxFreq; + maxDTView.innerHTML = maxDT.value = CR.rosterSettings.maxDT; + minDbView.innerHTML = minDb.value = CR.rosterSettings.minDb; + minFreqView.innerHTML = minFreq.value = CR.rosterSettings.minFreq; + maxFreqView.innerHTML = maxFreq.value = CR.rosterSettings.maxFreq; - maxLoTW.value = g_rosterSettings.maxLoTW; - maxLoTWView.innerHTML = maxLoTW.value < 27 ? Number(maxLoTW.value).toYM() : ""; + maxLoTW.value = CR.rosterSettings.maxLoTW; + maxLoTWView.innerHTML = maxLoTW.value < 27 ? toYM(Number(maxLoTW.value)) : ""; - cqOnly.checked = g_rosterSettings.cqOnly; - noMyDxcc.checked = g_rosterSettings.noMyDxcc; - onlyMyDxcc.checked = g_rosterSettings.onlyMyDxcc; + cqOnly.checked = CR.rosterSettings.cqOnly; + noMyDxcc.checked = CR.rosterSettings.noMyDxcc; + onlyMyDxcc.checked = CR.rosterSettings.onlyMyDxcc; - noMsg.checked = g_rosterSettings.noMsg; - onlyMsg.checked = g_rosterSettings.onlyMsg; - noMsgValue.value = g_rosterSettings.noMsgValue; - onlyMsgValue.value = g_rosterSettings.onlyMsgValue; + noMsg.checked = CR.rosterSettings.noMsg; + onlyMsg.checked = CR.rosterSettings.onlyMsg; + noMsgValue.value = CR.rosterSettings.noMsgValue; + onlyMsgValue.value = CR.rosterSettings.onlyMsgValue; - usesLoTW.checked = g_rosterSettings.usesLoTW; - useseQSL.checked = g_rosterSettings.useseQSL; - onlySpot.checked = g_rosterSettings.onlySpot; - usesOQRS.checked = g_rosterSettings.usesOQRS; + usesLoTW.checked = CR.rosterSettings.usesLoTW; + useseQSL.checked = CR.rosterSettings.useseQSL; + onlySpot.checked = CR.rosterSettings.onlySpot; + usesOQRS.checked = CR.rosterSettings.usesOQRS; - referenceNeed.value = g_rosterSettings.reference; - allOnlyNew.checked = g_rosterSettings.allOnlyNew; - useRegex.checked = g_rosterSettings.useRegex; - callsignRegex.value = g_rosterSettings.callsignRegex; - huntRegexValue.value = g_rosterSettings.huntRegexValue; + referenceNeed.value = CR.rosterSettings.reference; + allOnlyNew.checked = CR.rosterSettings.allOnlyNew; + useRegex.checked = CR.rosterSettings.useRegex; + callsignRegex.value = CR.rosterSettings.callsignRegex; + huntRegexValue.value = CR.rosterSettings.huntRegexValue; - noUnknownDXCC.checked = g_rosterSettings.noUnknownDXCC; + noUnknownDXCC.checked = CR.rosterSettings.noUnknownDXCC; - clearRosterOnBandChange.checked = g_rosterSettings.clearRosterOnBandChange; - rosterAlwaysOnTop.checked = g_rosterSettings.rosterAlwaysOnTop; - rosterDelayOnFocus.checked = g_rosterSettings.rosterDelayOnFocus; + clearRosterOnBandChange.checked = CR.rosterSettings.clearRosterOnBandChange; + rosterAlwaysOnTop.checked = CR.rosterSettings.rosterAlwaysOnTop; + rosterDelayOnFocus.checked = CR.rosterSettings.rosterDelayOnFocus; displayDelayOnFocus(); - rosterDelayTime.value = g_rosterSettings.rosterDelayTime; + rosterDelayTime.value = CR.rosterSettings.rosterDelayTime; rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; setRosterTimeView(); @@ -2299,8 +2297,8 @@ function addControls() { if (column != "Callsign") { - var option = newOption(column, column); - if (column == g_rosterSettings.compactEntity) + let option = newOption(column, column); + if (column == CR.rosterSettings.compactEntity) { option.selected = true; } @@ -2312,33 +2310,33 @@ function addControls() document.addEventListener("keydown", onMyKeyDown, false); initDXCCSelector(); - g_timerInterval = nodeTimers.setInterval(realtimeRoster, 1000); + CR.timerInterval = nodeTimers.setInterval(realtimeRoster, 1000); updateInstances(); } function compactEntityChanged() { - g_rosterSettings.compactEntity = compactEntitySelect.value; + CR.rosterSettings.compactEntity = compactEntitySelect.value; viewRoster(); } function clearRosterOnBandChangeValueChanged(what) { - g_rosterSettings.clearRosterOnBandChange = clearRosterOnBandChange.checked; + CR.rosterSettings.clearRosterOnBandChange = clearRosterOnBandChange.checked; writeRosterSettings(); } function rosterDelayOnFocusValueChanged(what) { - g_rosterSettings.rosterDelayOnFocus = rosterDelayOnFocus.checked; + CR.rosterSettings.rosterDelayOnFocus = rosterDelayOnFocus.checked; displayDelayOnFocus(); writeRosterSettings(); } function displayDelayOnFocus() { - if (g_rosterSettings.rosterDelayOnFocus) + if (CR.rosterSettings.rosterDelayOnFocus) { rosterDelayTimeTd.style.display = "block"; rosterDelayTime.style.display = "block"; @@ -2352,14 +2350,14 @@ function displayDelayOnFocus() function changeRosterDelayTime() { - g_rosterSettings.rosterDelayTime = rosterDelayTime.value; + CR.rosterSettings.rosterDelayTime = rosterDelayTime.value; rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; writeRosterSettings(); } function changeRosterTime() { - g_rosterSettings.rosterTime = rosterTime.value; + CR.rosterSettings.rosterTime = rosterTime.value; setRosterTimeView(); writeRosterSettings(); viewRoster(); @@ -2367,19 +2365,19 @@ function changeRosterTime() function changeRosterTop(butt) { - g_rosterSettings.rosterAlwaysOnTop = butt.checked; + CR.rosterSettings.rosterAlwaysOnTop = butt.checked; setRosterTop(); } function setRosterTop() { - nw.Window.get().setAlwaysOnTop(g_rosterSettings.rosterAlwaysOnTop); + nw.Window.get().setAlwaysOnTop(CR.rosterSettings.rosterAlwaysOnTop); } function setRosterTimeView() { - rosterTime.value = g_rosterSettings.rosterTime; - rosterTimeTd.innerHTML = Number(rosterTime.value).toDHMS(); + rosterTime.value = CR.rosterSettings.rosterTime; + rosterTimeTd.innerHTML = toDHMS(Number(rosterTime.value)); } function handleContextMenu(ev) @@ -2389,96 +2387,96 @@ function handleContextMenu(ev) let mouseX = Math.round(ev.x); let mouseY = Math.round(ev.y); - let len = Object.keys(g_blockedCalls).length; + let len = Object.keys(CR.blockedCalls).length; if (len > 0) { - g_clearIgnores.enabled = true; - g_clearIgnores.label = + CR.clearIgnores.enabled = true; + CR.clearIgnores.label = "Clear Call Ignore" + (len > 1 ? "s (" + len + ")" : ""); - g_clearIgnoresCall.enabled = true; - g_clearIgnoresCall.label = + CR.clearIgnoresCall.enabled = true; + CR.clearIgnoresCall.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); } else { - g_clearIgnores.label = "Clear Call Ignore"; - g_clearIgnores.enabled = false; - g_clearIgnoresCall.label = "Clear Ignore"; - g_clearIgnoresCall.enabled = false; + CR.clearIgnores.label = "Clear Call Ignore"; + CR.clearIgnores.enabled = false; + CR.clearIgnoresCall.label = "Clear Ignore"; + CR.clearIgnoresCall.enabled = false; } - len = Object.keys(g_blockedDxcc).length; + len = Object.keys(CR.blockedDxcc).length; if (len > 0) { - g_clearDxccIgnoreMainMenu.enabled = true; - g_clearDxccIgnoreMainMenu.label = + CR.clearDxccIgnoreMainMenu.enabled = true; + CR.clearDxccIgnoreMainMenu.label = "Clear DXCC Ignore" + (len > 1 ? "s (" + len + ")" : ""); - g_clearDxccIgnore.enabled = true; - g_clearDxccIgnore.label = + CR.clearDxccIgnore.enabled = true; + CR.clearDxccIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); } else { - g_clearDxccIgnoreMainMenu.label = "Clear DXCC Ignore"; - g_clearDxccIgnoreMainMenu.enabled = false; - g_clearDxccIgnore.label = "Clear Ignore"; - g_clearDxccIgnore.enabled = false; + CR.clearDxccIgnoreMainMenu.label = "Clear DXCC Ignore"; + CR.clearDxccIgnoreMainMenu.enabled = false; + CR.clearDxccIgnore.label = "Clear Ignore"; + CR.clearDxccIgnore.enabled = false; } - len = Object.keys(g_blockedCQ).length; + len = Object.keys(CR.blockedCQ).length; if (len > 0) { - g_clearCQIgnoreMainMenu.enabled = true; - g_clearCQIgnoreMainMenu.label = + CR.clearCQIgnoreMainMenu.enabled = true; + CR.clearCQIgnoreMainMenu.label = "Clear CQ Ignore" + (len > 1 ? "s (" + len + ")" : ""); - g_clearCQIgnore.enabled = true; - g_clearCQIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); + CR.clearCQIgnore.enabled = true; + CR.clearCQIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); } else { - g_clearCQIgnoreMainMenu.label = "Clear CQ Ignore"; - g_clearCQIgnoreMainMenu.enabled = false; - g_clearCQIgnore.label = "Clear Ignore"; - g_clearCQIgnore.enabled = false; + CR.clearCQIgnoreMainMenu.label = "Clear CQ Ignore"; + CR.clearCQIgnoreMainMenu.enabled = false; + CR.clearCQIgnore.label = "Clear Ignore"; + CR.clearCQIgnore.enabled = false; } - len = Object.keys(g_blockedCQz).length; + len = Object.keys(CR.blockedCQz).length; if (len > 0) { - g_clearCQzIgnoreMainMenu.enabled = true; - g_clearCQzIgnoreMainMenu.label = + CR.clearCQzIgnoreMainMenu.enabled = true; + CR.clearCQzIgnoreMainMenu.label = "Clear CQ Zone Ignore" + (len > 1 ? "s (" + len + ")" : ""); - g_clearCQzIgnore.enabled = true; - g_clearCQzIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); + CR.clearCQzIgnore.enabled = true; + CR.clearCQzIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); } else { - g_clearCQzIgnoreMainMenu.label = "Clear CQ Zone Ignore"; - g_clearCQzIgnoreMainMenu.enabled = false; - g_clearCQzIgnore.label = "Clear Ignore"; - g_clearCQzIgnore.enabled = false; + CR.clearCQzIgnoreMainMenu.label = "Clear CQ Zone Ignore"; + CR.clearCQzIgnoreMainMenu.enabled = false; + CR.clearCQzIgnore.label = "Clear Ignore"; + CR.clearCQzIgnore.enabled = false; } - len = Object.keys(g_blockedITUz).length; + len = Object.keys(CR.blockedITUz).length; if (len > 0) { - g_clearITUzIgnoreMainMenu.enabled = true; - g_clearITUzIgnoreMainMenu.label = + CR.clearITUzIgnoreMainMenu.enabled = true; + CR.clearITUzIgnoreMainMenu.label = "Clear ITU Zone Ignore" + (len > 1 ? "s (" + len + ")" : ""); - g_clearITUzIgnore.enabled = true; - g_clearITUzIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); + CR.clearITUzIgnore.enabled = true; + CR.clearITUzIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); } else { - g_clearITUzIgnoreMainMenu.label = "Clear ITU Zone Ignore"; - g_clearITUzIgnoreMainMenu.enabled = false; - g_clearITUzIgnore.label = "Clear Ignore"; - g_clearITUzIgnore.enabled = false; + CR.clearITUzIgnoreMainMenu.label = "Clear ITU Zone Ignore"; + CR.clearITUzIgnoreMainMenu.enabled = false; + CR.clearITUzIgnore.label = "Clear Ignore"; + CR.clearITUzIgnore.enabled = false; } if (typeof ev.target != "undefined") { - if (g_developerMode) + if (CR.developerMode) { if ((ev.target.id === "ShowMoreControlsLink") || (ev.target.id === "ShowFewerControlsLink") || @@ -2490,78 +2488,78 @@ function handleContextMenu(ev) } let name = ""; - if (ev.target.tagName == "TD" || (g_rosterSettings.compact && ev.target.tagName == "DIV")) + if (ev.target.tagName == "TD" || (CR.rosterSettings.compact && ev.target.tagName == "DIV")) { name = ev.target.getAttribute("name"); } if (name == "Callsign") { - g_targetHash = ev.target.parentNode.id; - g_callMenu.popup(mouseX, mouseY); + CR.targetHash = ev.target.parentNode.id; + CR.callMenu.popup(mouseX, mouseY); } else if (name == "Calling") { - g_targetHash = ev.target.parentNode.id; - g_callingMenu.popup(mouseX, mouseY); + CR.targetHash = ev.target.parentNode.id; + CR.callingMenu.popup(mouseX, mouseY); } else if (name == "CQ") { - if (callRoster[ev.target.parentNode.id].DXcall != "CQ") + if (CR.callRoster[ev.target.parentNode.id].DXcall != "CQ") { - g_targetCQ = ev.target.parentNode.id; - g_CQMenu.popup(mouseX, mouseY); + CR.targetCQ = ev.target.parentNode.id; + CR.CQMenu.popup(mouseX, mouseY); } } else if (name == "CQz") { - g_targetCQz = ev.target.parentNode.id; - g_CQzMenu.popup(mouseX, mouseY); + CR.targetCQz = ev.target.parentNode.id; + CR.CQzMenu.popup(mouseX, mouseY); } else if (name == "ITUz") { - g_targetITUz = ev.target.parentNode.id; - g_ITUzMenu.popup(mouseX, mouseY); + CR.targetITUz = ev.target.parentNode.id; + CR.ITUzMenu.popup(mouseX, mouseY); } else if (name && name.startsWith("DXCC")) { let dxcca = name.split("("); let dxcc = parseInt(dxcca[1]); - g_targetDxcc = dxcc; - g_dxccMenu.popup(mouseX, mouseY); + CR.targetDxcc = dxcc; + CR.dxccMenu.popup(mouseX, mouseY); } else { - if (g_rosterSettings.compact) + if (CR.rosterSettings.compact) { - g_compactMenu.popup(mouseX, mouseY); + CR.compactMenu.popup(mouseX, mouseY); } else { if (ev.target.tagName == "TH" && ev.target.getAttribute("name")) { - g_menuItemForCurrentColumn.enabled = true; - g_currentColumnName = ev.target.getAttribute("name"); + CR.menuItemForCurrentColumn.enabled = true; + CR.currentColumnName = ev.target.getAttribute("name"); } else { - g_menuItemForCurrentColumn.enabled = false; - g_currentColumnName = null; + CR.menuItemForCurrentColumn.enabled = false; + CR.currentColumnName = null; } - g_menu.popup(mouseX, mouseY); + CR.menu.popup(mouseX, mouseY); } } } else { - if (g_rosterSettings.compact == false) + if (CR.rosterSettings.compact == false) { - g_menu.popup(mouseX, mouseY); + CR.menu.popup(mouseX, mouseY); } else { - g_compactMenu.popup(mouseX, mouseY); + CR.compactMenu.popup(mouseX, mouseY); } } @@ -2572,10 +2570,10 @@ function handleContextMenu(ev) function getTypeFromMode(mode) { - if (mode in g_modes) + if (mode in CR.modes) { - if (g_modes[mode] == true) return "Digital"; - else if (g_modes_phone[mode] == true) return "Phone"; + if (CR.modes[mode] == true) return "Digital"; + else if (CR.modes_phone[mode] == true) return "Phone"; } return ""; } @@ -2583,49 +2581,49 @@ function getTypeFromMode(mode) function testAward(awardName, obj, baseHash) { if ( - g_awardTracker[awardName].test.dxcc && - g_awardTracker[awardName].rule.dxcc.indexOf(obj.dxcc) == -1 + CR.awardTracker[awardName].test.dxcc && + CR.awardTracker[awardName].rule.dxcc.indexOf(obj.dxcc) == -1 ) { return false; } if ( - g_awardTracker[awardName].test.mode && - g_awardTracker[awardName].rule.mode.indexOf(obj.mode) == -1 + CR.awardTracker[awardName].test.mode && + CR.awardTracker[awardName].rule.mode.indexOf(obj.mode) == -1 ) { return false; } if ( - g_awardTracker[awardName].test.band && - g_awardTracker[awardName].rule.band.indexOf(obj.band) == -1 + CR.awardTracker[awardName].test.band && + CR.awardTracker[awardName].rule.band.indexOf(obj.band) == -1 ) { return false; } if ( - g_awardTracker[awardName].test.DEcall && - g_awardTracker[awardName].rule.call.indexOf(obj.DEcall) == -1 + CR.awardTracker[awardName].test.DEcall && + CR.awardTracker[awardName].rule.call.indexOf(obj.DEcall) == -1 ) { return false; } if ( - g_awardTracker[awardName].test.cont && - g_awardTracker[awardName].rule.cont.indexOf(obj.cont) == -1 + CR.awardTracker[awardName].test.cont && + CR.awardTracker[awardName].rule.cont.indexOf(obj.cont) == -1 ) { return false; } if ( - g_awardTracker[awardName].test.prop && - g_awardTracker[awardName].rule.propMode != obj.propMode + CR.awardTracker[awardName].test.prop && + CR.awardTracker[awardName].rule.propMode != obj.propMode ) { return false; } if ( - g_awardTracker[awardName].test.sat && - g_awardTracker[awardName].rule.satName.indexOf(obj.satName) == -1 + CR.awardTracker[awardName].test.sat && + CR.awardTracker[awardName].rule.satName.indexOf(obj.satName) == -1 ) { return false; } - return g_awardTypes[g_awardTracker[awardName].rule.type].test( - g_awardTracker[awardName], + return CR.awardTypes[CR.awardTracker[awardName].rule.type].test( + CR.awardTracker[awardName], obj, baseHash ); @@ -2634,11 +2632,11 @@ function testAward(awardName, obj, baseHash) function processAward(awardName) { let award = - g_awards[g_awardTracker[awardName].sponsor].awards[ - g_awardTracker[awardName].name + CR.awards[CR.awardTracker[awardName].sponsor].awards[ + CR.awardTracker[awardName].name ]; - g_awardTracker[awardName].rule = award.rule; - let test = (g_awardTracker[awardName].test = {}); + CR.awardTracker[awardName].rule = award.rule; + let test = (CR.awardTracker[awardName].test = {}); let mode = award.rule.mode.slice(); let Index = mode.indexOf("Mixed"); @@ -2651,9 +2649,9 @@ function processAward(awardName) if (Index > -1) mode.splice(Index, 1); test.mode = mode.length > 0; - test.confirmed = "qsl_req" in g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule ? g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule.qsl_req == "confirmed" : g_awards[g_awardTracker[awardName].sponsor].qsl_req == "confirmed"; + test.confirmed = "qsl_req" in CR.awards[CR.awardTracker[awardName].sponsor].awards[CR.awardTracker[awardName].name].rule ? CR.awards[CR.awardTracker[awardName].sponsor].awards[CR.awardTracker[awardName].name].rule.qsl_req == "confirmed" : CR.awards[CR.awardTracker[awardName].sponsor].qsl_req == "confirmed"; test.look = "confirmed"; - test.qsl_req = "qsl_req" in g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule ? g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule.qsl_req : g_awards[g_awardTracker[awardName].sponsor].qsl_req; + test.qsl_req = "qsl_req" in CR.awards[CR.awardTracker[awardName].sponsor].awards[CR.awardTracker[awardName].name].rule ? CR.awards[CR.awardTracker[awardName].sponsor].awards[CR.awardTracker[awardName].name].rule.qsl_req : CR.awards[CR.awardTracker[awardName].sponsor].qsl_req; test.DEcall = "call" in award.rule; test.band = "band" in award.rule && award.rule.band.indexOf("Mixed") == -1; test.dxcc = "dxcc" in award.rule; @@ -2661,11 +2659,11 @@ function processAward(awardName) test.prop = "propMode" in award.rule; test.sat = "satName" in award.rule; - g_awardTracker[awardName].stat = {}; + CR.awardTracker[awardName].stat = {}; - for (const i in window.opener.g_QSOhash) + for (const i in window.opener.GT.QSOhash) { - let obj = window.opener.g_QSOhash[i]; + let obj = window.opener.GT.QSOhash[i]; if (test.confirmed && !obj.confirmed) continue; @@ -2685,14 +2683,14 @@ function processAward(awardName) if (test.sat && award.rule.satName.indexOf(obj.satName) == -1) continue; - g_awardTypes[award.rule.type].score(g_awardTracker[awardName], obj); + CR.awardTypes[award.rule.type].score(CR.awardTracker[awardName], obj); } - g_awardTracker[awardName].comp = g_awardTypes[award.rule.type].compile( - g_awardTracker[awardName], - g_awardTracker[awardName].stat + CR.awardTracker[awardName].comp = CR.awardTypes[award.rule.type].compile( + CR.awardTracker[awardName], + CR.awardTracker[awardName].stat ); - g_awardTracker[awardName].stat = {}; + CR.awardTracker[awardName].stat = {}; } function newAwardCountObject() @@ -2739,7 +2737,7 @@ function workAwardObject(obj, band, mode, isDigital, isPhone, unique = null) function buildAwardTypeHandlers() { - g_awardTypes = { + CR.awardTypes = { IOTA: { name: "Islands On The Air" }, call: { name: "Callsign" }, callarea: { name: "Call Area" }, @@ -2763,71 +2761,71 @@ function buildAwardTypeHandlers() states2band: { name: "States per Band" } }; - g_awardTypes.IOTA.score = scoreAIOTA; - g_awardTypes.call.score = scoreAcall; - g_awardTypes.callarea.score = scoreAcallarea; - g_awardTypes.calls2dxcc.score = scoreAcalls2dxcc; - g_awardTypes.cnty.score = scoreAcnty; - g_awardTypes.cont.score = scoreAcont; - g_awardTypes.cont5.score = scoreAcont5; - g_awardTypes.cont52band.score = scoreAcont52band; - g_awardTypes.cqz.score = scoreAcqz; - g_awardTypes.dxcc.score = scoreAdxcc; - g_awardTypes.grids.score = scoreAgrids; - g_awardTypes.numsfx.score = scoreAnumsfx; - g_awardTypes.px.score = scoreApx; - g_awardTypes.pxa.score = scoreApxa; - g_awardTypes.pxplus.score = scoreApxplus; - g_awardTypes.sfx.score = scoreAsfx; - g_awardTypes.states.score = scoreAstates; - g_awardTypes.cont2band.score = scoreAcont2band; - g_awardTypes.calls2band.score = scoreAcalls2band; - g_awardTypes.dxcc2band.score = scoreAdxcc2band; - g_awardTypes.states2band.score = scoreAstates2band; + CR.awardTypes.IOTA.score = scoreAIOTA; + CR.awardTypes.call.score = scoreAcall; + CR.awardTypes.callarea.score = scoreAcallarea; + CR.awardTypes.calls2dxcc.score = scoreAcalls2dxcc; + CR.awardTypes.cnty.score = scoreAcnty; + CR.awardTypes.cont.score = scoreAcont; + CR.awardTypes.cont5.score = scoreAcont5; + CR.awardTypes.cont52band.score = scoreAcont52band; + CR.awardTypes.cqz.score = scoreAcqz; + CR.awardTypes.dxcc.score = scoreAdxcc; + CR.awardTypes.grids.score = scoreAgrids; + CR.awardTypes.numsfx.score = scoreAnumsfx; + CR.awardTypes.px.score = scoreApx; + CR.awardTypes.pxa.score = scoreApxa; + CR.awardTypes.pxplus.score = scoreApxplus; + CR.awardTypes.sfx.score = scoreAsfx; + CR.awardTypes.states.score = scoreAstates; + CR.awardTypes.cont2band.score = scoreAcont2band; + CR.awardTypes.calls2band.score = scoreAcalls2band; + CR.awardTypes.dxcc2band.score = scoreAdxcc2band; + CR.awardTypes.states2band.score = scoreAstates2band; - g_awardTypes.IOTA.test = testAIOTA; - g_awardTypes.call.test = testAcall; - g_awardTypes.callarea.test = testAcallarea; - g_awardTypes.calls2dxcc.test = testAcalls2dxcc; - g_awardTypes.cnty.test = testAcnty; - g_awardTypes.cont.test = testAcont; - g_awardTypes.cont5.test = testAcont5; - g_awardTypes.cont52band.test = testAcont52band; - g_awardTypes.cqz.test = testAcqz; - g_awardTypes.dxcc.test = testAdxcc; - g_awardTypes.grids.test = testAgrids; - g_awardTypes.numsfx.test = testAnumsfx; - g_awardTypes.px.test = testApx; - g_awardTypes.pxa.test = testApxa; - g_awardTypes.pxplus.test = testApxplus; - g_awardTypes.sfx.test = testAsfx; - g_awardTypes.states.test = testAstates; - g_awardTypes.cont2band.test = testAcont2band; - g_awardTypes.calls2band.test = testAcalls2band; - g_awardTypes.dxcc2band.test = testAdxcc2band; - g_awardTypes.states2band.test = testAstates; + CR.awardTypes.IOTA.test = testAIOTA; + CR.awardTypes.call.test = testAcall; + CR.awardTypes.callarea.test = testAcallarea; + CR.awardTypes.calls2dxcc.test = testAcalls2dxcc; + CR.awardTypes.cnty.test = testAcnty; + CR.awardTypes.cont.test = testAcont; + CR.awardTypes.cont5.test = testAcont5; + CR.awardTypes.cont52band.test = testAcont52band; + CR.awardTypes.cqz.test = testAcqz; + CR.awardTypes.dxcc.test = testAdxcc; + CR.awardTypes.grids.test = testAgrids; + CR.awardTypes.numsfx.test = testAnumsfx; + CR.awardTypes.px.test = testApx; + CR.awardTypes.pxa.test = testApxa; + CR.awardTypes.pxplus.test = testApxplus; + CR.awardTypes.sfx.test = testAsfx; + CR.awardTypes.states.test = testAstates; + CR.awardTypes.cont2band.test = testAcont2band; + CR.awardTypes.calls2band.test = testAcalls2band; + CR.awardTypes.dxcc2band.test = testAdxcc2band; + CR.awardTypes.states2band.test = testAstates; - g_awardTypes.IOTA.compile = singleCompile; - g_awardTypes.call.compile = singleCompile; - g_awardTypes.callarea.compile = singleCompile; - g_awardTypes.calls2dxcc.compile = doubleCompile; - g_awardTypes.cnty.compile = singleCompile; - g_awardTypes.cont.compile = singleCompile; - g_awardTypes.cont5.compile = singleCompile; - g_awardTypes.cont52band.compile = doubleCompile; - g_awardTypes.cqz.compile = singleCompile; - g_awardTypes.dxcc.compile = singleCompile; - g_awardTypes.grids.compile = singleCompile; - g_awardTypes.numsfx.compile = singleCompile; - g_awardTypes.px.compile = singleCompile; - g_awardTypes.pxa.compile = singleCompile; - g_awardTypes.pxplus.compile = singleCompile; - g_awardTypes.sfx.compile = singleCompile; - g_awardTypes.states.compile = singleCompile; - g_awardTypes.cont2band.compile = doubleCompile; - g_awardTypes.calls2band.compile = doubleCompile; - g_awardTypes.dxcc2band.compile = doubleCompile; - g_awardTypes.states2band.compile = doubleCompile; + CR.awardTypes.IOTA.compile = singleCompile; + CR.awardTypes.call.compile = singleCompile; + CR.awardTypes.callarea.compile = singleCompile; + CR.awardTypes.calls2dxcc.compile = doubleCompile; + CR.awardTypes.cnty.compile = singleCompile; + CR.awardTypes.cont.compile = singleCompile; + CR.awardTypes.cont5.compile = singleCompile; + CR.awardTypes.cont52band.compile = doubleCompile; + CR.awardTypes.cqz.compile = singleCompile; + CR.awardTypes.dxcc.compile = singleCompile; + CR.awardTypes.grids.compile = singleCompile; + CR.awardTypes.numsfx.compile = singleCompile; + CR.awardTypes.px.compile = singleCompile; + CR.awardTypes.pxa.compile = singleCompile; + CR.awardTypes.pxplus.compile = singleCompile; + CR.awardTypes.sfx.compile = singleCompile; + CR.awardTypes.states.compile = singleCompile; + CR.awardTypes.cont2band.compile = doubleCompile; + CR.awardTypes.calls2band.compile = doubleCompile; + CR.awardTypes.dxcc2band.compile = doubleCompile; + CR.awardTypes.states2band.compile = doubleCompile; } function scoreAstates(award, obj) @@ -2850,7 +2848,7 @@ function scoreAstates(award, obj) function testAstates(award, obj, baseHash) { // calls with empty state will not match anything in the hash map. so filter those out - if (!obj.state || obj.state + baseHash in g_tracker[award.test.look].state) + if (!obj.state || obj.state + baseHash in CR.tracker[award.test.look].state) { return false; } @@ -2888,7 +2886,7 @@ function scoreAdxcc(award, obj) function testAdxcc(award, obj, baseHash) { - if (String(obj.dxcc) + "|" + baseHash in g_tracker[award.test.look].dxcc) + if (String(obj.dxcc) + "|" + baseHash in CR.tracker[award.test.look].dxcc) { return false; } @@ -2920,7 +2918,7 @@ function testAcont(award, obj, baseHash) let cont = obj.cont; if (cont == "AN") cont = "OC"; - if (cont + baseHash in g_tracker[award.test.look].cont) + if (cont + baseHash in CR.tracker[award.test.look].cont) { return false; } @@ -2956,7 +2954,7 @@ function testAcont5(award, obj, baseHash) if (cont == "NA" || cont == "SA") cont = "AM"; if (cont == "AN") cont = "OC"; - if (cont + baseHash in g_tracker[award.test.look].cont) + if (cont + baseHash in CR.tracker[award.test.look].cont) { return false; } @@ -2985,7 +2983,7 @@ function testAcont2band(award, obj, baseHash) let cont = obj.cont; if (cont == "AN") cont = "OC"; - if (cont + baseHash in g_tracker[award.test.look].cont) + if (cont + baseHash in CR.tracker[award.test.look].cont) { return false; } @@ -3022,7 +3020,7 @@ function testAcont52band(award, obj, baseHash) if (cont == "NA" || cont == "SA") cont = "AM"; if (cont == "AN") cont = "OC"; - if (cont + baseHash in g_tracker[award.test.look].cont) + if (cont + baseHash in CR.tracker[award.test.look].cont) { return false; } @@ -3050,7 +3048,7 @@ function scoreAgrids(award, obj) function testAgrids(award, obj, baseHash) { - if (obj.grid && obj.grid + baseHash in g_tracker[award.test.look].grid) + if (obj.grid && obj.grid + baseHash in CR.tracker[award.test.look].grid) { return false; } @@ -3079,7 +3077,7 @@ function scoreAcnty(award, obj) function testAcnty(award, obj, baseHash) { - if (obj.cnty && obj.cnty + baseHash in g_tracker[award.test.look].cnty) + if (obj.cnty && obj.cnty + baseHash in CR.tracker[award.test.look].cnty) { return false; } @@ -3110,7 +3108,7 @@ function testAcall(award, obj, baseHash) { if (obj.DEcall.indexOf("/") > -1 && obj.DEcall.endsWith("/MM")) return false; - if (obj.DEcall + baseHash in g_tracker[award.test.look].call) + if (obj.DEcall + baseHash in CR.tracker[award.test.look].call) { return false; } @@ -3121,7 +3119,7 @@ function scoreAIOTA(award, obj) { if (obj.IOTA) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; if ("IOTA" in test.rule && test.rule.IOTA.indexOf(obj.IOTA) == -1) { return false; } @@ -3143,7 +3141,7 @@ function testAIOTA(award, obj, baseHash) { /* if ( obj.IOTA ) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; if ( "IOTA" in test.rule && test.rule.IOTA.indexOf(obj.IOTA) == -1 ) return false; @@ -3157,7 +3155,7 @@ function scoreAcallarea(award, obj) { if (obj.zone != null) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; if ("zone" in test.rule && test.rule.zone.indexOf(obj.zone) == -1) { return false; } @@ -3178,7 +3176,7 @@ function testAcallarea(award, obj, baseHash) { if (obj.zone != null) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; if ("zone" in test.rule && test.rule.zone.indexOf(obj.zone) == -1) { return false; } @@ -3190,7 +3188,7 @@ function scoreApx(award, obj) { if (obj.px) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let px = obj.px; if ("px" in test.rule) { @@ -3214,7 +3212,7 @@ function testApx(award, obj, baseHash) { if (obj.px) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let px = obj.px; if ("px" in test.rule) { @@ -3222,7 +3220,7 @@ function testApx(award, obj, baseHash) if (test.rule.px.indexOf(px) == -1) return false; } - if (String(obj.px) + baseHash in g_tracker[award.test.look].px) + if (String(obj.px) + baseHash in CR.tracker[award.test.look].px) { return false; } @@ -3234,7 +3232,7 @@ function scoreApxa(award, obj) { if (obj.px) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; for (const i in test.rule.pxa) { if (test.rule.pxa[i].indexOf(obj.px) > -1) @@ -3257,12 +3255,12 @@ function testApxa(award, obj, baseHash) { if (obj.px) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; for (const i in test.rule.pxa) { if (test.rule.pxa[i].indexOf(obj.px) > -1) { - if (String(obj.px) + baseHash in g_tracker[award.test.look].px) + if (String(obj.px) + baseHash in CR.tracker[award.test.look].px) { return false; } @@ -3278,7 +3276,7 @@ function testApxa(award, obj, baseHash) function scoreAsfx(award, obj) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let suf = obj.DEcall.replace(obj.px, ""); for (const i in test.rule.sfx) { @@ -3303,7 +3301,7 @@ function scoreAsfx(award, obj) function testAsfx(award, obj, baseHash) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let suf = obj.DEcall.replace(obj.px, ""); for (const i in test.rule.sfx) { @@ -3335,7 +3333,7 @@ function scoreAcalls2dxcc(award, obj) function testAcalls2dxcc(award, obj, baseHash) { - if (obj.DEcall + baseHash in g_tracker[award.test.look].call) + if (obj.DEcall + baseHash in CR.tracker[award.test.look].call) { return false; } @@ -3358,7 +3356,7 @@ function scoreAcalls2band(award, obj) function testAcalls2band(award, obj, baseHash) { - if (obj.DEcall + baseHash in g_tracker[award.test.look].call) + if (obj.DEcall + baseHash in CR.tracker[award.test.look].call) { return false; } @@ -3381,7 +3379,7 @@ function scoreAdxcc2band(award, obj) function testAdxcc2band(award, obj, baseHash) { - if (String(obj.dxcc) + "|" + baseHash in g_tracker[award.test.look].dxcc) + if (String(obj.dxcc) + "|" + baseHash in CR.tracker[award.test.look].dxcc) { return false; } @@ -3408,7 +3406,7 @@ function scoreAcqz(award, obj) function testAcqz(award, obj, baseHash) { // calls with empty cqz will not match anything in the hash map. so filter those out - if (!obj.cqz || obj.cqz + "|" + baseHash in g_tracker[award.test.look].cqz) + if (!obj.cqz || obj.cqz + "|" + baseHash in CR.tracker[award.test.look].cqz) { return false; } @@ -3419,7 +3417,7 @@ function scoreAnumsfx(award, obj) { if (obj.px) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let px = obj.px.substr(0, obj.px.length - 1); let suf = obj.DEcall.replace(px, ""); suf = suf.substr(0, test.rule.numsfx[0][0].length); @@ -3448,7 +3446,7 @@ function testAnumsfx(award, obj) { if (obj.px) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let px = obj.px.substr(0, obj.px.length - 1); let suf = obj.DEcall.replace(px, ""); suf = suf.substr(0, test.rule.numsfx[0][0].length); @@ -3469,7 +3467,7 @@ function testAnumsfx(award, obj) function scoreApxplus(award, obj) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; if (test.rule.pxplus) { @@ -3493,7 +3491,7 @@ function scoreApxplus(award, obj) function testApxplus(award, obj) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; if (test.rule.pxplus) { @@ -3510,46 +3508,46 @@ function testApxplus(award, obj) function loadAwardJson() { - g_awards = {}; + CR.awards = {}; let fs = require("fs"); if (fs.existsSync("./data/awards.json")) { fileBuf = fs.readFileSync("./data/awards.json"); try { - g_awards = JSON.parse(fileBuf); - // fs.writeFileSync("./data/awards.json", JSON.stringify(g_awards,null,2)); + CR.awards = JSON.parse(fileBuf); + // fs.writeFileSync("./data/awards.json", JSON.stringify(CR.awards,null,2)); - for (const sp in g_awards) + for (const sp in CR.awards) { - for (const aw in g_awards[sp].awards) + for (const aw in CR.awards[sp].awards) { - if (!("unique" in g_awards[sp].awards[aw].rule)) - { g_awards[sp].awards[aw].rule.unique = 1; } + if (!("unique" in CR.awards[sp].awards[aw].rule)) + { CR.awards[sp].awards[aw].rule.unique = 1; } - if (g_awards[sp].awards[aw].rule.band[0] == "Mixed") + if (CR.awards[sp].awards[aw].rule.band[0] == "Mixed") { - g_awards[sp].awards[aw].rule.band.shift(); + CR.awards[sp].awards[aw].rule.band.shift(); } - if (g_awards[sp].awards[aw].rule.band.length == 0) + if (CR.awards[sp].awards[aw].rule.band.length == 0) { - g_awards[sp].awards[aw].rule.band = []; - for (let key in g_awards[sp].mixed) + CR.awards[sp].awards[aw].rule.band = []; + for (let key in CR.awards[sp].mixed) { - g_awards[sp].awards[aw].rule.band.push(g_awards[sp].mixed[key]); + CR.awards[sp].awards[aw].rule.band.push(CR.awards[sp].mixed[key]); } } if ( - g_awards[sp].awards[aw].rule.endorse.length == 1 && - g_awards[sp].awards[aw].rule.endorse[0] == "Mixed" + CR.awards[sp].awards[aw].rule.endorse.length == 1 && + CR.awards[sp].awards[aw].rule.endorse[0] == "Mixed" ) { - g_awards[sp].awards[aw].rule.endorse = []; - for (let key in g_awards[sp].mixed) + CR.awards[sp].awards[aw].rule.endorse = []; + for (let key in CR.awards[sp].mixed) { - g_awards[sp].awards[aw].rule.endorse.push( - g_awards[sp].mixed[key] + CR.awards[sp].awards[aw].rule.endorse.push( + CR.awards[sp].mixed[key] ); } } @@ -3561,7 +3559,7 @@ function loadAwardJson() catch (e) { alert("Core awards.json : " + e); - g_awards = {}; + CR.awards = {}; } } else alert("Missing core awards.json"); @@ -3569,21 +3567,21 @@ function loadAwardJson() function processAllAwardTrackers() { - for (let tracker in g_awardTracker) + for (let tracker in CR.awardTracker) { - if (!(g_awardTracker[tracker].sponsor in g_awards)) + if (!(CR.awardTracker[tracker].sponsor in CR.awards)) { - delete g_awardTracker[tracker]; + delete CR.awardTracker[tracker]; continue; } if ( !( - g_awardTracker[tracker].name in - g_awards[g_awardTracker[tracker].sponsor].awards + CR.awardTracker[tracker].name in + CR.awards[CR.awardTracker[tracker].sponsor].awards ) ) { - delete g_awardTracker[tracker]; + delete CR.awardTracker[tracker]; continue; } processAward(tracker); @@ -3597,9 +3595,9 @@ function newAwardTrackerObject(sponsor, award, enable) newAward.sponsor = sponsor; newAward.name = award; newAward.enable = enable; - newAward.mode = g_awards[sponsor].awards[award].rule.mode[0]; - newAward.band = g_awards[sponsor].awards[award].rule.band[0]; - newAward.count = g_awards[sponsor].awards[award].rule.count[0]; + newAward.mode = CR.awards[sponsor].awards[award].rule.mode[0]; + newAward.band = CR.awards[sponsor].awards[award].rule.band[0]; + newAward.count = CR.awards[sponsor].awards[award].rule.count[0]; newAward.stat = {}; newAward.comp = {}; newAward.test = {}; @@ -3608,16 +3606,16 @@ function newAwardTrackerObject(sponsor, award, enable) function addAllAwards() { - for (let sponsor in g_awards) + for (let sponsor in CR.awards) { - for (let award in g_awards[sponsor].awards) + for (let award in CR.awards[sponsor].awards) { let awardToAdd = newAwardTrackerObject(sponsor, award, true); let hash = awardToAdd.name + "-" + awardToAdd.sponsor; - if (!(hash in g_awardTracker)) + if (!(hash in CR.awardTracker)) { - g_awardTracker[hash] = awardToAdd; + CR.awardTracker[hash] = awardToAdd; processAward(hash); storeAwardTracker(); } @@ -3629,7 +3627,7 @@ function addAllAwards() function delAllAwards() { - g_awardTracker = {}; + CR.awardTracker = {}; storeAwardTracker(); updateAwardList(); window.opener.goProcessRoster(); @@ -3647,7 +3645,7 @@ function newCompileCountObject() function singleCompile(award, obj) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let rule = test.rule; let comp = newCompileCountObject(); for (let mode in rule.mode) @@ -3707,7 +3705,7 @@ function singleCompile(award, obj) function doubleCompile(award, firstLevel) { - let test = g_awards[award.sponsor].awards[award.name]; + let test = CR.awards[award.sponsor].awards[award.name]; let rule = test.rule; for (let k in firstLevel) @@ -3753,11 +3751,11 @@ function doubleCompile(award, firstLevel) function listShortInstances() { let shortInstances = []; - if (typeof window.opener.g_instancesIndex != "undefined" && typeof window.opener.g_instances != "undefined") + if (typeof window.opener.GT.instancesIndex != "undefined" && typeof window.opener.GT.instances != "undefined") { - if (window.opener.g_instancesIndex.length > 1) + if (window.opener.GT.instancesIndex.length > 1) { - let instances = window.opener.g_instances; + let instances = window.opener.GT.instances; let keys = Object.keys(instances).sort(); for (let key in keys) { diff --git a/package.nw/lib/roster/prepareRosterSettings.js b/package.nw/lib/roster/prepareRosterSettings.js index 0b7b9cee..8ddf0ccf 100644 --- a/package.nw/lib/roster/prepareRosterSettings.js +++ b/package.nw/lib/roster/prepareRosterSettings.js @@ -3,7 +3,7 @@ function prepareRosterSettings() let rosterSettings = { bands: {}, modes: {}, - callMode: g_rosterSettings.callsign, + callMode: CR.rosterSettings.callsign, onlyHits: false, isAwardTracker: false, now: timeNowSec() @@ -19,24 +19,24 @@ function prepareRosterSettings() rosterSettings.callMode = "all"; rosterSettings.onlyHits = false; rosterSettings.isAwardTracker = true; - g_rosterSettings.huntNeed = "confirmed"; + CR.rosterSettings.huntNeed = "confirmed"; } // this appears to be determine if we should show the OAMS column // if the user is not in offline mode and has OAMS enabled, this could // be it's own function maybe? rosterSettings.canMsg = - window.opener.g_mapSettings.offlineMode == false && - window.opener.g_appSettings.gtShareEnable == true && - window.opener.g_appSettings.gtMsgEnable == true; + window.opener.GT.mapSettings.offlineMode == false && + window.opener.GT.appSettings.gtShareEnable == true && + window.opener.GT.appSettings.gtMsgEnable == true; // The following 3 sections deal with QSLing, do we break them out // individually or lump them into a qslUser function that sets // all three at the same time? // this section is for LoTW users, can be a function - if (window.opener.g_callsignLookups.lotwUseEnable == true) + if (window.opener.GT.callsignLookups.lotwUseEnable == true) { usesLoTWDiv.style.display = ""; - if (g_rosterSettings.usesLoTW == true) + if (CR.rosterSettings.usesLoTW == true) { maxLoTW.style.display = ""; maxLoTWView.style.display = ""; @@ -54,22 +54,22 @@ function prepareRosterSettings() maxLoTWView.style.display = "none"; } - if (g_rosterSettings.huntNeed == "mixed") + if (CR.rosterSettings.huntNeed == "mixed") { - rosterSettings.huntIndex = g_confirmed; - rosterSettings.workedIndex = g_worked; - rosterSettings.layeredMode = LAYERED_MODE_FOR[String(g_rosterSettings.reference)]; + rosterSettings.huntIndex = CR.confirmed; + rosterSettings.workedIndex = CR.worked; + rosterSettings.layeredMode = LAYERED_MODE_FOR[String(CR.rosterSettings.reference)]; } - else if (g_rosterSettings.huntNeed == "worked") + else if (CR.rosterSettings.huntNeed == "worked") { - rosterSettings.huntIndex = g_worked; + rosterSettings.huntIndex = CR.worked; rosterSettings.workedIndex = false; rosterSettings.layeredMode = false; } - else if (g_rosterSettings.huntNeed == "confirmed") + else if (CR.rosterSettings.huntNeed == "confirmed") { - rosterSettings.huntIndex = g_confirmed; - rosterSettings.workedIndex = g_worked; + rosterSettings.huntIndex = CR.confirmed; + rosterSettings.workedIndex = CR.worked; rosterSettings.layeredMode = false; } else diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index d860fd33..4fa43550 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -24,9 +24,9 @@ function processRosterFiltering(callRoster, rosterSettings) // this whole section is full of individual if's that could be broken out for (const callHash in callRoster) { - var entry = callRoster[callHash]; - var callObj = entry.callObj; - var call = entry.DEcall; + let entry = callRoster[callHash]; + let callObj = entry.callObj; + let call = entry.DEcall; entry.tx = true; callObj.shouldAlert = false; @@ -40,7 +40,7 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (rosterSettings.now - callObj.age > g_rosterSettings.rosterTime) + if (rosterSettings.now - callObj.age > CR.rosterSettings.rosterTime) { entry.tx = false; entry.alerted = false; @@ -53,44 +53,44 @@ function processRosterFiltering(callRoster, rosterSettings) entry.tx = false; continue; } - if (g_rosterSettings.noUnknownDXCC && callObj.dxcc === -1) + if (CR.rosterSettings.noUnknownDXCC && callObj.dxcc === -1) { entry.tx = false; continue; } - if (window.opener.g_instances[callObj.instance].crEnable == false) + if (window.opener.GT.instances[callObj.instance].crEnable == false) { entry.tx = false; continue; } - if (call in g_blockedCalls) + if (call in CR.blockedCalls) { entry.tx = false; continue; } - if (entry.DXcall + " from All" in g_blockedCQ || entry.DXcall + " from " + window.opener.g_dxccToAltName[callObj.dxcc] in g_blockedCQ) + if (entry.DXcall + " from All" in CR.blockedCQ || entry.DXcall + " from " + window.opener.GT.dxccToAltName[callObj.dxcc] in CR.blockedCQ) { entry.tx = false; continue; } - if (callObj.ituz in g_blockedITUz) + if (callObj.ituz in CR.blockedITUz) { entry.tx = false; continue; } - if (callObj.cqz in g_blockedCQz) + if (callObj.cqz in CR.blockedCQz) { entry.tx = false; continue; } - if (callObj.dxcc in g_blockedDxcc) + if (callObj.dxcc in CR.blockedDxcc) { entry.tx = false; continue; } - if (g_rosterSettings.cqOnly == true) + if (CR.rosterSettings.cqOnly == true) { - if (g_rosterSettings.wantRRCQ) + if (CR.rosterSettings.wantRRCQ) { if (callObj.RR73 == false && callObj.CQ == false) { @@ -104,10 +104,9 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } } - if (g_rosterSettings.useRegex && g_rosterSettings.callsignRegex.length > 0) + if (CR.rosterSettings.useRegex && CR.rosterSettings.callsignRegex.length > 0) { - var regexObj = regexObj || new RegExp(g_rosterSettings.callsignRegex, "i") - + var regexObj = regexObj || new RegExp(CR.rosterSettings.callsignRegex, "i") try { if (!call.match(regexObj)) @@ -118,37 +117,37 @@ function processRosterFiltering(callRoster, rosterSettings) } catch (e) {} } - if (g_rosterSettings.requireGrid == true && callObj.grid.length != 4) + if (CR.rosterSettings.requireGrid == true && callObj.grid.length != 4) { entry.tx = false; continue; } - if (g_rosterSettings.wantMinDB == true && entry.message.SR < g_rosterSettings.minDb) + if (CR.rosterSettings.wantMinDB == true && entry.message.SR < CR.rosterSettings.minDb) { entry.tx = false; continue; } - if (g_rosterSettings.wantMaxDT == true && Math.abs(entry.message.DT) > g_rosterSettings.maxDT) + if (CR.rosterSettings.wantMaxDT == true && Math.abs(entry.message.DT) > CR.rosterSettings.maxDT) { entry.tx = false; continue; } - if (g_rosterSettings.wantMinFreq == true && entry.message.DF < g_rosterSettings.minFreq) + if (CR.rosterSettings.wantMinFreq == true && entry.message.DF < CR.rosterSettings.minFreq) { entry.tx = false; continue; } - if (g_rosterSettings.wantMaxFreq == true && entry.message.DF > g_rosterSettings.maxFreq) + if (CR.rosterSettings.wantMaxFreq == true && entry.message.DF > CR.rosterSettings.maxFreq) { entry.tx = false; continue; } - if (g_rosterSettings.noMsg == true) + if (CR.rosterSettings.noMsg == true) { try { - if (callObj.msg.match(g_rosterSettings.noMsgValue)) + if (callObj.msg.match(CR.rosterSettings.noMsgValue)) { entry.tx = false; continue; @@ -156,11 +155,11 @@ function processRosterFiltering(callRoster, rosterSettings) } catch (e) {} } - if (g_rosterSettings.onlyMsg == true) + if (CR.rosterSettings.onlyMsg == true) { try { - if (!callObj.msg.match(g_rosterSettings.onlyMsgValue)) + if (!callObj.msg.match(CR.rosterSettings.onlyMsgValue)) { entry.tx = false; continue; @@ -169,31 +168,31 @@ function processRosterFiltering(callRoster, rosterSettings) catch (e) {} } - if (callObj.dxcc == window.opener.g_myDXCC) + if (callObj.dxcc == window.opener.GT.myDXCC) { - if (g_rosterSettings.noMyDxcc == true) + if (CR.rosterSettings.noMyDxcc == true) { entry.tx = false; continue; } } - else if (g_rosterSettings.onlyMyDxcc == true) + else if (CR.rosterSettings.onlyMyDxcc == true) { entry.tx = false; continue; } - if (window.opener.g_callsignLookups.lotwUseEnable == true && g_rosterSettings.usesLoTW == true) + if (window.opener.GT.callsignLookups.lotwUseEnable == true && CR.rosterSettings.usesLoTW == true) { - if (!(call in window.opener.g_lotwCallsigns)) + if (!(call in window.opener.GT.lotwCallsigns)) { entry.tx = false; continue; } - if (g_rosterSettings.maxLoTW < 27) + if (CR.rosterSettings.maxLoTW < 27) { - var months = (g_day - window.opener.g_lotwCallsigns[call]) / 30; - if (months > g_rosterSettings.maxLoTW) + let months = (CR.day - window.opener.GT.lotwCallsigns[call]) / 30; + if (months > CR.rosterSettings.maxLoTW) { entry.tx = false; continue; @@ -201,18 +200,18 @@ function processRosterFiltering(callRoster, rosterSettings) } } - if (window.opener.g_callsignLookups.eqslUseEnable == true && g_rosterSettings.useseQSL == true) + if (window.opener.GT.callsignLookups.eqslUseEnable == true && CR.rosterSettings.useseQSL == true) { - if (!(call in window.opener.g_eqslCallsigns)) + if (!(call in window.opener.GT.eqslCallsigns)) { entry.tx = false; continue; } } - if (window.opener.g_callsignLookups.oqrsUseEnable == true && g_rosterSettings.usesOQRS == true) + if (window.opener.GT.callsignLookups.oqrsUseEnable == true && CR.rosterSettings.usesOQRS == true) { - if (!(call in window.opener.g_oqrsCallsigns)) + if (!(call in window.opener.GT.oqrsCallsigns)) { entry.tx = false; continue; @@ -221,28 +220,28 @@ function processRosterFiltering(callRoster, rosterSettings) if (rosterSettings.callMode != "all") { - if (entry.DXcall == "CQ DX" && callObj.dxcc == window.opener.g_myDXCC) + if (entry.DXcall == "CQ DX" && callObj.dxcc == window.opener.GT.myDXCC) { entry.tx = false; continue; } - var hash = hashMaker(call, callObj, g_rosterSettings.reference); - if (rosterSettings.callMode == "worked" && hash in g_worked.call) + let hash = hashMaker(call, callObj, CR.rosterSettings.reference); + if (rosterSettings.callMode == "worked" && hash in CR.worked.call) { entry.tx = false; continue; } - if (rosterSettings.callMode == "confirmed" && hash in g_confirmed.call) + if (rosterSettings.callMode == "confirmed" && hash in CR.confirmed.call) { entry.tx = false; continue; } - if (g_rosterSettings.hunting == "grid") + if (CR.rosterSettings.hunting == "grid") { - var hash = hashMaker(callObj.grid.substr(0, 4), - callObj, g_rosterSettings.reference); + let hash = hashMaker(callObj.grid.substr(0, 4), + callObj, CR.rosterSettings.reference); if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.grid) { entry.tx = false; @@ -255,9 +254,9 @@ function processRosterFiltering(callRoster, rosterSettings) } continue; } - if (g_rosterSettings.hunting == "dxcc") + if (CR.rosterSettings.hunting == "dxcc") { - let hash = hashMaker(String(callObj.dxcc) + "|", callObj, g_rosterSettings.reference); + let hash = hashMaker(String(callObj.dxcc) + "|", callObj, CR.rosterSettings.reference); if (rosterSettings.huntIndex && (hash in rosterSettings.huntIndex.dxcc)) { @@ -267,24 +266,24 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (g_rosterSettings.hunting == "dxccs" && r_currentDXCCs != -1) + if (CR.rosterSettings.hunting == "dxccs" && CR.currentDXCCs != -1) { - if (callObj.dxcc != r_currentDXCCs) + if (callObj.dxcc != CR.currentDXCCs) { entry.tx = false; continue; } } - if (g_rosterSettings.hunting == "wpx") + if (CR.rosterSettings.hunting == "wpx") { if (String(callObj.px) == null) { entry.tx = false; continue; } - var hash = hashMaker(String(callObj.px), - callObj, g_rosterSettings.reference); + let hash = hashMaker(String(callObj.px), + callObj, CR.rosterSettings.reference); if (rosterSettings.huntIndex && (hash in rosterSettings.huntIndex.px)) { @@ -295,7 +294,7 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (g_rosterSettings.hunting == "cq") + if (CR.rosterSettings.hunting == "cq") { if (callObj.cqz == null || !rosterSettings.huntIndex) { @@ -303,7 +302,7 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - var hash = hashMaker(callObj.cqz + "|", callObj, g_rosterSettings.reference); + let hash = hashMaker(callObj.cqz + "|", callObj, CR.rosterSettings.reference); if (hash in rosterSettings.huntIndex.cqz) { @@ -314,7 +313,7 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (g_rosterSettings.hunting == "itu") + if (CR.rosterSettings.hunting == "itu") { if (callObj.ituz == null || !rosterSettings.huntIndex) { @@ -322,7 +321,7 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - var hash = hashMaker(callObj.ituz + "|", callObj, g_rosterSettings.reference); + let hash = hashMaker(callObj.ituz + "|", callObj, CR.rosterSettings.reference); if (hash in rosterSettings.huntIndex.ituz) { @@ -333,15 +332,15 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (g_rosterSettings.hunting == "usstates" && window.opener.g_callsignLookups.ulsUseEnable == true) + if (CR.rosterSettings.hunting == "usstates" && window.opener.GT.callsignLookups.ulsUseEnable == true) { - var state = callObj.state; - var finalDxcc = callObj.dxcc; + let state = callObj.state; + let finalDxcc = callObj.dxcc; if (finalDxcc == 291 || finalDxcc == 110 || finalDxcc == 6) { - if (state in window.opener.g_StateData) + if (state in window.opener.GT.StateData) { - var hash = hashMaker(state, callObj, g_rosterSettings.reference); + let hash = hashMaker(state, callObj, CR.rosterSettings.reference); if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.state) { @@ -356,9 +355,9 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (g_rosterSettings.hunting == "usstate" && g_currentUSCallsigns) + if (CR.rosterSettings.hunting == "usstate" && CR.currentUSCallsigns) { - if (call in g_currentUSCallsigns) + if (call in CR.currentUSCallsigns) { // Do Nothing } @@ -373,26 +372,26 @@ function processRosterFiltering(callRoster, rosterSettings) if (rosterSettings.isAwardTracker) { - var tx = false; - var baseHash = hashMaker("", callObj, g_rosterSettings.reference); + let tx = false; + let baseHash = hashMaker("", callObj, CR.rosterSettings.reference); - for (const award in g_awardTracker) + for (const award in CR.awardTracker) { - if (g_awardTracker[award].enable) + if (CR.awardTracker[award].enable) { tx = testAward(award, callObj, baseHash); if (tx) { - var x = g_awardTracker[award]; + let x = CR.awardTracker[award]; // TODO: Move award reason out of exclusions code? - callObj.awardReason = g_awards[x.sponsor].awards[x.name].tooltip + " (" + g_awards[x.sponsor].sponsor + ")"; + callObj.awardReason = CR.awards[x.sponsor].awards[x.name].tooltip + " (" + CR.awards[x.sponsor].sponsor + ")"; callObj.shouldAlert = true; break; } } } - let didWork = (baseHash in g_worked.call); + let didWork = (baseHash in CR.worked.call); if (allOnlyNew.checked && didWork && !callObj.qrz) { callObj.shouldAlert = false; diff --git a/package.nw/lib/roster/processRosterHunting.js b/package.nw/lib/roster/processRosterHunting.js index b5568363..42977c04 100644 --- a/package.nw/lib/roster/processRosterHunting.js +++ b/package.nw/lib/roster/processRosterHunting.js @@ -15,7 +15,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) const currentYear = new Date().getFullYear(); const currentYearSuffix = `’${currentYear - 2000}`; - const potaEnabled = (window.opener.g_appSettings.potaEnabled === 1); + const potaEnabled = (window.opener.GT.appSettings.potaEnabled === 1); // TODO: Hunting results might be used to filter, based on the "Callsigns: Only Wanted" option, // so maybe we can move this loop first, and add a check to the filtering loop? @@ -29,14 +29,14 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) if (callObj.qrz == true && entry.tx == false) { // The instance has to be enabled - if (window.opener.g_instances[callObj.instance].crEnable == true) + if (window.opener.GT.instances[callObj.instance].crEnable == true) { // Calling us, but we wouldn't normally display // If they are not ignored or we're in a QSO with them, let it through // TODO: This is here because it's after the filtering stage - if ((!(entry.DEcall in g_blockedCalls) && !(callObj.dxcc in g_blockedDxcc)) || - window.opener.g_instances[callObj.instance].status.DXcall == entry.DEcall) + if ((!(entry.DEcall in CR.blockedCalls) && !(callObj.dxcc in CR.blockedDxcc)) || + window.opener.GT.instances[callObj.instance].status.DXcall == entry.DEcall) { entry.tx = true; } @@ -52,11 +52,11 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) if (rosterSettings.layeredMode) { workHashSuffix = hashMaker("", callObj, rosterSettings.layeredMode); - layeredHashSuffix = hashMaker("", callObj, g_rosterSettings.reference); + layeredHashSuffix = hashMaker("", callObj, CR.rosterSettings.reference); } else { - workHashSuffix = hashMaker("", callObj, g_rosterSettings.reference); + workHashSuffix = hashMaker("", callObj, CR.rosterSettings.reference); layeredHashSuffix = false } let workHash = workHashSuffix; // TODO: Remove after replacing all occurrences with Suffix @@ -102,13 +102,13 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) let layeredHash = layeredHashSuffix && (callsign + layeredHashSuffix) // Call worked in current logbook settings, regardless of hunting mode - if (hash in g_worked.call) + if (hash in CR.worked.call) { callObj.callFlags.worked = true; didWork = true; callConf = `${unconf}${call}${inversionAlpha};`; - if (hash in g_confirmed.call) + if (hash in CR.confirmed.call) { callObj.callFlags.confirmed = true; callPointer = "text-decoration: line-through; "; @@ -117,12 +117,12 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } // Calls that have OAMS chat support - if (callsign in window.opener.g_gtCallsigns) + if (callsign in window.opener.GT.gtCallsigns) { callObj.gt = 0; - for (const cid in window.opener.g_gtCallsigns[callsign]) + for (const cid in window.opener.GT.gtCallsigns[callsign]) { - if (cid in window.opener.g_gtFlagPins && window.opener.g_gtFlagPins[cid].canmsg == true) + if (cid in window.opener.GT.gtFlagPins && window.opener.GT.gtFlagPins[cid].canmsg == true) { // found the first one we can message, break now callObj.callFlags.oams = true; @@ -157,9 +157,9 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } // Entries currently calling or being called by us - if (callObj.DEcall == window.opener.g_instances[callObj.instance].status.DXcall) + if (callObj.DEcall == window.opener.GT.instances[callObj.instance].status.DXcall) { - if (window.opener.g_instances[callObj.instance].status.TxEnabled == 1) + if (window.opener.GT.instances[callObj.instance].status.TxEnabled == 1) { callObj.hunting.call = "calling"; callObj.style.call = "class='dxCalling'"; @@ -182,7 +182,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) px: false, cont: false }; - if (g_rosterSettings.reference == LOGBOOK_AWARD_TRACKER) + if (CR.rosterSettings.reference == LOGBOOK_AWARD_TRACKER) { for (let key in awardTracker) { @@ -252,9 +252,9 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } } - if (huntRegex.checked == true && g_rosterSettings.huntRegexValue.length > 0) + if (huntRegex.checked == true && CR.rosterSettings.huntRegexValue.length > 0) { - var huntRegexObj = huntRegexObj || new RegExp(g_rosterSettings.huntRegexValue, "gi") + var huntRegexObj = huntRegexObj || new RegExp(CR.rosterSettings.huntRegexValue, "gi") try { if (callsign.match(huntRegexObj)) @@ -410,13 +410,13 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } // Hunting for US States - if ((huntState.checked || awardTrackerOverrides.states) && window.opener.g_callsignLookups.ulsUseEnable == true) + if ((huntState.checked || awardTrackerOverrides.states) && window.opener.GT.callsignLookups.ulsUseEnable == true) { let stateSearch = callObj.state; let finalDxcc = callObj.dxcc; if (finalDxcc == 291 || finalDxcc == 110 || finalDxcc == 6) { - if (stateSearch in window.opener.g_StateData) + if (stateSearch in window.opener.GT.StateData) { let hash = stateSearch + workHashSuffix; let layeredHash = rosterSettings.layeredMode && (stateSearch + layeredHashSuffix) @@ -467,7 +467,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } // Hunting for US Counties - if ((huntCounty.checked || awardTrackerOverrides.cnty) && window.opener.g_callsignLookups.ulsUseEnable == true) + if ((huntCounty.checked || awardTrackerOverrides.cnty) && window.opener.GT.callsignLookups.ulsUseEnable == true) { let finalDxcc = callObj.dxcc; if ( @@ -482,7 +482,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) { if (callObj.qual == false) { - let counties = window.opener.g_zipToCounty[callObj.zipcode]; + let counties = window.opener.GT.zipToCounty[callObj.zipcode]; let foundHit = false; for (const cnt in counties) { @@ -527,7 +527,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) let huntTotal = 1; let workedFound = 0; - let hash = g_dayAsString + callsign + callObj.pota + (rosterSettings.layeredMode ? layeredHashSuffix : workHashSuffix); + let hash = CR.dayAsString + callsign + callObj.pota + (rosterSettings.layeredMode ? layeredHashSuffix : workHashSuffix); if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.pota) workedFound++; @@ -782,12 +782,12 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) callingBg = "#0000FF" + inversionAlpha; calling = "#FFFF00;text-shadow: 0px 0px 2px #FFFF00"; } - else if ((callObj.CQ == true || (g_rosterSettings.wantRRCQ && callObj.RR73 == true)) && !g_rosterSettings.cqOnly) + else if ((callObj.CQ == true || (CR.rosterSettings.wantRRCQ && callObj.RR73 == true)) && !CR.rosterSettings.cqOnly) { callingBg = calling + inversionAlpha; calling = bold; // If treating RR73/73 as CQ, soften highlighting to help differentiate foreshadow from an actual CQ - if (g_rosterSettings.wantRRCQ && callObj.RR73 == true) + if (CR.rosterSettings.wantRRCQ && callObj.RR73 == true) { callingConf = `${unconf}#90EE90${inversionAlpha};`; calling = `#90EE90${inversionAlpha};` @@ -822,7 +822,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) callObj.style = colorObject; - if (g_rosterSettings.columns.Spot) + if (CR.rosterSettings.columns.Spot) { callObj.spot = window.opener.getSpotTime(callObj.DEcall + callObj.mode + callObj.band + callObj.grid); if (callObj.spot == null) diff --git a/package.nw/lib/roster/renderCompactRoster.js b/package.nw/lib/roster/renderCompactRoster.js index acdb94b9..ad75258e 100644 --- a/package.nw/lib/roster/renderCompactRoster.js +++ b/package.nw/lib/roster/renderCompactRoster.js @@ -1,27 +1,27 @@ // Because the County is clickable we do not allow the whole compact div to trigger an initiateQSO -g_isCompactCounty = false; +CR.isCompactCounty = false; function renderCompactRosterHeaders() { - g_isCompactCounty = (g_rosterSettings.compactEntity == "County"); + CR.isCompactCounty = (CR.rosterSettings.compactEntity == "County"); return "
"; } function renderCompactRosterRow(callObj, showBand) { - var title = callObj.RSTsent + "㏈, " + parseInt(callObj.dt * 100) + "ms, " + callObj.delta + "hz" + (callObj.grid.length ? ", " + callObj.grid : "") + ", " + (timeNowSec() - callObj.age).toDHMS(); - var bandView = showBand ? "
" + callObj.band + "
" : ""; - if (g_rosterSettings.compactEntity == "Band") + let title = callObj.RSTsent + "㏈, " + parseInt(callObj.dt * 100) + "ms, " + callObj.delta + "hz" + (callObj.grid.length ? ", " + callObj.grid : "") + ", " + toDHMS(timeNowSec() - callObj.age); + let bandView = showBand ? "
" + callObj.band + "
" : ""; + if (CR.rosterSettings.compactEntity == "Band") { bandView = ""; } - var onClick = " onClick='initiateQso(\"" + callObj.hash + "\")' id='" + callObj.hash + "' title='" + title + "' "; - var wholeClick = (g_isCompactCounty ? "" : onClick); - var callsignClick = (g_isCompactCounty ? onClick : ""); - var worker = "
"; - worker += "
" + callObj.DEcall.formatCallsign() + bandView + "
"; + let onClick = " onClick='initiateQso(\"" + callObj.hash + "\")' id='" + callObj.hash + "' title='" + title + "' "; + let wholeClick = (CR.isCompactCounty ? "" : onClick); + let callsignClick = (CR.isCompactCounty ? onClick : ""); + let worker = "
"; + worker += "
" + formatCallsign(callObj.DEcall) + bandView + "
"; worker += "
"; - worker += renderEntryForColumn(g_rosterSettings.compactEntity, callObj, "div"); + worker += renderEntryForColumn(CR.rosterSettings.compactEntity, callObj, "div"); worker += "
"; return worker; } diff --git a/package.nw/lib/roster/renderRoster.js b/package.nw/lib/roster/renderRoster.js index f75702bd..9705751f 100644 --- a/package.nw/lib/roster/renderRoster.js +++ b/package.nw/lib/roster/renderRoster.js @@ -4,7 +4,7 @@ function renderRoster(callRoster, rosterSettings) Callsign: true } - if (window.opener.g_callsignLookups.eqslUseEnable == true) + if (window.opener.GT.callsignLookups.eqslUseEnable == true) { useseQSLDiv.style.display = ""; } @@ -14,7 +14,7 @@ function renderRoster(callRoster, rosterSettings) useseQSLDiv.style.display = "none"; } - if (window.opener.g_callsignLookups.oqrsUseEnable == true) + if (window.opener.GT.callsignLookups.oqrsUseEnable == true) { usesOQRSDiv.style.display = ""; } @@ -24,7 +24,7 @@ function renderRoster(callRoster, rosterSettings) usesOQRSDiv.style.display = "none"; } - if (window.opener.g_callsignLookups.lotwUseEnable == true) + if (window.opener.GT.callsignLookups.lotwUseEnable == true) { // Do nothing } @@ -43,7 +43,7 @@ function renderRoster(callRoster, rosterSettings) columnOverrides.OAMS = false; } - if (window.opener.g_appSettings.potaEnabled === 1) + if (window.opener.GT.appSettings.potaEnabled === 1) { huntingMatrixPotaDiv.style.display = ""; } @@ -58,7 +58,7 @@ function renderRoster(callRoster, rosterSettings) columnOverrides.Wanted = true; } // dealing with spots - if (g_rosterSettings.columns.Spot == true) onlySpotDiv.style.display = ""; + if (CR.rosterSettings.columns.Spot == true) onlySpotDiv.style.display = ""; else onlySpotDiv.style.display = "none"; // callmode (all or only new) @@ -104,23 +104,23 @@ function renderRoster(callRoster, rosterSettings) multiInstance = true; } let multiBand = Object.keys(rosterSettings.bands).length > 1; - let showBands = multiBand || g_rosterSettings.columns.Band; - let showModes = (Object.keys(rosterSettings.modes).length > 1) || g_rosterSettings.columns.Mode; + let showBands = multiBand || CR.rosterSettings.columns.Band; + let showModes = (Object.keys(rosterSettings.modes).length > 1) || CR.rosterSettings.columns.Mode; columnOverrides.Band = showBands; columnOverrides.Mode = showModes; - const rosterColumns = rosterColumnList(g_rosterSettings.columns, columnOverrides); + const rosterColumns = rosterColumnList(CR.rosterSettings.columns, columnOverrides); - if (g_rosterSettings.compact) + if (CR.rosterSettings.compact) { sortCallList(visibleCallList, "Age", false, rosterColumns); } else { - sortCallList(visibleCallList, g_rosterSettings.sortColumn, g_rosterSettings.sortReverse); + sortCallList(visibleCallList, CR.rosterSettings.sortColumn, CR.rosterSettings.sortReverse); } - let worker = g_rosterSettings.compact ? renderCompactRosterHeaders() : renderNormalRosterHeaders(rosterColumns); + let worker = CR.rosterSettings.compact ? renderCompactRosterHeaders() : renderNormalRosterHeaders(rosterColumns); // Third loop: render all rows for (let x in visibleCallList) @@ -133,9 +133,9 @@ function renderRoster(callRoster, rosterSettings) if (callObj.DEcall.match("^[KNW][0-9][A-W|Y|Z](/w+)?$")) { callObj.style.call = "class='oneByOne'"; } - if (callObj.DEcall == window.opener.g_instances[callObj.instance].status.DXcall) + if (callObj.DEcall == window.opener.GT.instances[callObj.instance].status.DXcall) { - if (window.opener.g_instances[callObj.instance].status.TxEnabled == 1) + if (window.opener.GT.instances[callObj.instance].status.TxEnabled == 1) { callObj.style.call = "class='dxCalling'"; } @@ -145,10 +145,10 @@ function renderRoster(callRoster, rosterSettings) } } - worker += g_rosterSettings.compact ? renderCompactRosterRow(callObj, multiInstance || multiBand) : renderNormalRosterRow(rosterColumns, callObj); + worker += CR.rosterSettings.compact ? renderCompactRosterRow(callObj, multiInstance || multiBand) : renderNormalRosterRow(rosterColumns, callObj); } - worker += g_rosterSettings.compact ? renderCompactRosterFooter() : renderNormalRosterFooter(); + worker += CR.rosterSettings.compact ? renderCompactRosterFooter() : renderNormalRosterFooter(); RosterTable.innerHTML = worker; } diff --git a/package.nw/lib/roster/rosterColumnFunctions.js b/package.nw/lib/roster/rosterColumnFunctions.js index 0603c1f0..27522bec 100644 --- a/package.nw/lib/roster/rosterColumnFunctions.js +++ b/package.nw/lib/roster/rosterColumnFunctions.js @@ -1,6 +1,6 @@ function rosterColumnList(settings = {}, overrides = {}) { - return g_rosterSettings.columnOrder.filter(column => + return CR.rosterSettings.columnOrder.filter(column => { return column && (settings[column] || overrides[column]) && !(overrides[column] === false) }) @@ -21,9 +21,9 @@ function renderHeaderForColumn(column) attrs.onClick = `setRosterSorting('${column}');` } - if (g_rosterSettings.sortColumn == column) + if (CR.rosterSettings.sortColumn == column) { - attrs.html += "
 " + (g_rosterSettings.sortReverse == false ? "▲" : "▼") + "
"; + attrs.html += "
 " + (CR.rosterSettings.sortReverse == false ? "▲" : "▼") + "
"; } return renderRosterTableHTML("th", attrs) @@ -53,14 +53,14 @@ function renderRosterTableHTML(tag, attrs) function setRosterSorting(column) { - if (g_rosterSettings.sortColumn === column) + if (CR.rosterSettings.sortColumn === column) { - g_rosterSettings.sortReverse = !g_rosterSettings.sortReverse + CR.rosterSettings.sortReverse = !CR.rosterSettings.sortReverse } else { - g_rosterSettings.sortColumn = column - g_rosterSettings.sortReverse = false + CR.rosterSettings.sortColumn = column + CR.rosterSettings.sortReverse = false } writeRosterSettings(); @@ -124,14 +124,14 @@ function validateRosterColumnOrder(columns) function changeRosterColumnOrder(columns) { - g_rosterSettings.columnOrder = validateRosterColumnOrder(columns); + CR.rosterSettings.columnOrder = validateRosterColumnOrder(columns); writeRosterSettings(); window.opener.goProcessRoster(); } function moveColumnLeft(column) { - const columns = rosterColumnList(g_rosterSettings.columns, { Callsign: true, Grid: true }); + const columns = rosterColumnList(CR.rosterSettings.columns, { Callsign: true, Grid: true }); const pos = columns.indexOf(column); if (pos > 1) { diff --git a/package.nw/lib/roster/rosterColumns.js b/package.nw/lib/roster/rosterColumns.js index d81aa458..38371080 100644 --- a/package.nw/lib/roster/rosterColumns.js +++ b/package.nw/lib/roster/rosterColumns.js @@ -60,10 +60,10 @@ const ROSTER_COLUMNS = { align: "left", onClick: `initiateQso("${callObj.hash}")`, rawAttrs: callObj.style.call, - html: html = (callObj.DEcallHTML || callObj.DEcall).formatCallsign() + html: html = formatCallsign((callObj.DEcallHTML || callObj.DEcall)) } - let acks = window.opener.g_acknowledgedCalls || {}; + let acks = window.opener.GT.acknowledgedCalls || {}; if (acks[callObj.DEcall]) { attrs.html = `${attrs.html} ` @@ -77,7 +77,7 @@ const ROSTER_COLUMNS = { Band: { compare: callObjSimpleComparer("band"), tableData: (callObj) => ({ - style: `color: #${window.opener.g_pskColors[callObj.band]};`, + style: `color: #${window.opener.GT.pskColors[callObj.band]};`, html: callObj.band }) }, @@ -85,7 +85,7 @@ const ROSTER_COLUMNS = { Mode: { compare: callObjSimpleComparer("mode"), tableData: (callObj) => ({ - style: `color: #${g_modeColors[callObj.mode] || "888888"};`, + style: `color: #${CR.modeColors[callObj.mode] || "888888"};`, html: callObj.mode }) }, @@ -104,7 +104,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ rawAttrs: callObj.style.calling, name: callObj.CQ ? "CQ" : "Calling", - html: (g_rosterSettings.wantRRCQ && callObj.RR73) ? "RR73" : callObj.DXcall.formatCallsign() + html: (CR.rosterSettings.wantRRCQ && callObj.RR73) ? "RR73" : formatCallsign(callObj.DXcall) }) }, @@ -116,10 +116,10 @@ const ROSTER_COLUMNS = { DXCC: { compare: (a, b) => window.opener.myDxccCompare(a.callObj, b.callObj), tableData: (callObj) => ({ - title: window.opener.g_dxccInfo[callObj.dxcc].pp, + title: window.opener.GT.dxccInfo[callObj.dxcc].pp, name: `DXCC (${callObj.dxcc})`, rawAttrs: callObj.style.dxcc, - html: (callObj.dxccSuffix ? [window.opener.g_dxccToAltName[callObj.dxcc], callObj.dxccSuffix].join(" ") : window.opener.g_dxccToAltName[callObj.dxcc]) + html: (callObj.dxccSuffix ? [window.opener.GT.dxccToAltName[callObj.dxcc], callObj.dxccSuffix].join(" ") : window.opener.GT.dxccToAltName[callObj.dxcc]) }) }, @@ -128,7 +128,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ align: "center", style: "margin:0; padding:0;", - html: `` + html: `` }) }, @@ -150,13 +150,13 @@ const ROSTER_COLUMNS = { let attrs = { align: "center", rawAttrs: callObj.style.cnty, - html: callObj.cnty ? window.opener.g_cntyToCounty[callObj.cnty] : " " + html: callObj.cnty ? window.opener.GT.cntyToCounty[callObj.cnty] : " " } if (callObj.cnty && callObj.qual == false) { attrs.title = $.i18n("rosterColumns.County.title") attrs.onClick = `window.opener.lookupCallsign("${callObj.DEcall}", "${callObj.grid}")` - attrs.html = attrs.html + " +" + String(window.opener.g_zipToCounty[callObj.zipcode].length - 1) + attrs.html = attrs.html + " +" + String(window.opener.GT.zipToCounty[callObj.zipcode].length - 1) attrs.style = "cursor: pointer; color: cyan;" } return attrs @@ -243,17 +243,17 @@ const ROSTER_COLUMNS = { compare: false, tableData: (callObj) => { - if (callObj.DEcall in window.opener.g_lotwCallsigns) + if (callObj.DEcall in window.opener.GT.lotwCallsigns) { - if (g_rosterSettings.maxLoTW < 27) + if (CR.rosterSettings.maxLoTW < 27) { - let months = (g_day - window.opener.g_lotwCallsigns[callObj.DEcall]) / 30; - if (months > g_rosterSettings.maxLoTW) + let months = (CR.day - window.opener.GT.lotwCallsigns[callObj.DEcall]) / 30; + if (months > CR.rosterSettings.maxLoTW) { return { style: "color: yellow;", align: "center", - title: `${$.i18n("rosterColumns.LoTW.NoUpdate")} ${Number(months).toYM()}`, + title: `${$.i18n("rosterColumns.LoTW.NoUpdate")} ${toYM(Number(months))}`, html: "?" } } @@ -263,7 +263,7 @@ const ROSTER_COLUMNS = { style: "color: #0F0;", align: "center", title: `${$.i18n("rosterColumns.LoTW.LastUpdate")}${ - window.opener.userDayString(window.opener.g_lotwCallsigns[callObj.DEcall] * 86400000) + window.opener.userDayString(window.opener.GT.lotwCallsigns[callObj.DEcall] * 86400000) }`, html: "✔" } @@ -275,7 +275,7 @@ const ROSTER_COLUMNS = { style: "color: #0F0;", align: "center", title: `${$.i18n("rosterColumns.LoTW.LastUpdate")}${ - window.opener.userDayString(window.opener.g_lotwCallsigns[callObj.DEcall] * 86400000) + window.opener.userDayString(window.opener.GT.lotwCallsigns[callObj.DEcall] * 86400000) }`, html: "✔" } @@ -295,7 +295,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ style: "color: #0F0;", align: "center", - html: (callObj.DEcall in window.opener.g_eqslCallsigns ? "✔" : " ") + html: (callObj.DEcall in window.opener.GT.eqslCallsigns ? "✔" : " ") }) }, @@ -304,7 +304,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ style: "color: #0F0;", align: "center", - html: (callObj.DEcall in window.opener.g_oqrsCallsigns ? "✔" : " ") + html: (callObj.DEcall in window.opener.GT.oqrsCallsigns ? "✔" : " ") }) }, @@ -314,7 +314,7 @@ const ROSTER_COLUMNS = { style: "color: #EEE;", class: "lifeCol", id: `lm${callObj.hash}`, - html: (timeNowSec() - callObj.life).toDHMS() + html: toDHMS(timeNowSec() - callObj.life) }) }, @@ -359,14 +359,14 @@ const ROSTER_COLUMNS = { style: "color: #EEE;", class: "timeCol", id: `tm${callObj.hash}`, - html: (timeNowSec() - callObj.age).toDHMS() + html: toDHMS(timeNowSec() - callObj.age) }) }, Spot: { compare: (a, b) => { - let cutoff = timeNowSec() - window.opener.g_receptionSettings.viewHistoryTimeSec; + let cutoff = timeNowSec() - window.opener.GT.receptionSettings.viewHistoryTimeSec; if (a.callObj.spot.when <= cutoff) return -1; if (b.callObj.spot.when <= cutoff) return 1; @@ -426,9 +426,9 @@ function potaColumnHover(callObj) { let value = ""; - if (callObj.pota in window.opener.g_pota.parks) + if (callObj.pota in window.opener.GT.pota.parks) { - value += callObj.pota + " - " + window.opener.g_pota.parks[callObj.pota].name + "\n"; + value += callObj.pota + " - " + window.opener.GT.pota.parks[callObj.pota].name + "\n"; } return value; diff --git a/package.nw/lib/roster/sendAlerts.js b/package.nw/lib/roster/sendAlerts.js index 9f532a27..0d77830f 100644 --- a/package.nw/lib/roster/sendAlerts.js +++ b/package.nw/lib/roster/sendAlerts.js @@ -1,36 +1,36 @@ function sendAlerts(callRoster, rosterSettings) { - var dirPath = window.opener.g_scriptDir; - var scriptExists = false; - var script = "cr-alert.sh"; + let dirPath = window.opener.GT.scriptDir; + let scriptExists = false; + let script = "cr-alert.sh"; - var shouldAlert = 0; + let shouldAlert = 0; - for (entry in callRoster) + for (const entry in callRoster) { - var callObj = callRoster[entry].callObj; + let callObj = callRoster[entry].callObj; // chrbayer: what does the tx field mean? no alerts are generated (at all) if this is in place... // if it's "not visible in the roster, don't put it in the report!" if (callRoster[entry].tx == false) continue; - var call = callObj.DEcall; - g_scriptReport[call] = Object.assign({}, callObj); - g_scriptReport[call].dxccName = window.opener.g_dxccToAltName[callObj.dxcc]; - g_scriptReport[call].distance = (callObj.distance > 0) ? parseInt(callObj.distance * MyCircle.validateRadius(window.opener.distanceUnit.value)) : 0; + let call = callObj.DEcall; + CR.scriptReport[call] = Object.assign({}, callObj); + CR.scriptReport[call].dxccName = window.opener.GT.dxccToAltName[callObj.dxcc]; + CR.scriptReport[call].distance = (callObj.distance > 0) ? parseInt(callObj.distance * MyCircle.validateRadius(window.opener.distanceUnit.value)) : 0; - delete g_scriptReport[call].DEcall; - g_scriptReport[call].rect = null; - delete g_scriptReport[call].rect; - delete g_scriptReport[call].style; - delete g_scriptReport[call].wspr; - delete g_scriptReport[call].qso; - delete g_scriptReport[call].instance; + delete CR.scriptReport[call].DEcall; + CR.scriptReport[call].rect = null; + delete CR.scriptReport[call].rect; + delete CR.scriptReport[call].style; + delete CR.scriptReport[call].wspr; + delete CR.scriptReport[call].qso; + delete CR.scriptReport[call].instance; if (rosterSettings.callMode != "all") { - g_scriptReport[call].shouldAlert = true; - g_scriptReport[call].reason.push(g_rosterSettings.hunting); + CR.scriptReport[call].shouldAlert = true; + CR.scriptReport[call].reason.push(CR.rosterSettings.hunting); } if (callObj.alerted == false && rosterSettings.callMode == "all" && callObj.shouldAlert == true) @@ -52,7 +52,7 @@ function sendAlerts(callRoster, rosterSettings) { if (fs.existsSync(dirPath)) { - if (window.opener.g_platform == "windows") + if (window.opener.GT.platform == "windows") { script = "cr-alert.bat"; } @@ -61,7 +61,7 @@ function sendAlerts(callRoster, rosterSettings) scriptExists = true; scriptIcon.innerHTML = "
" + - (window.opener.g_crScript == 1 + (window.opener.GT.crScript == 1 ? `${$.i18n("sendAlerts.scriptEnabled")}` : `${$.i18n("sendAlerts.scriptDisabled")}`) + "
"; @@ -77,12 +77,12 @@ function sendAlerts(callRoster, rosterSettings) if (shouldAlert > 0) { - if (window.opener.g_classicAlerts.huntRoster == true) + if (window.opener.GT.classicAlerts.huntRoster == true) { - var notify = window.opener.huntRosterNotify.value; + let notify = window.opener.huntRosterNotify.value; if (notify == "0") { - var media = window.opener.huntRosterNotifyMedia.value; + let media = window.opener.huntRosterNotifyMedia.value; if (media != "none") window.opener.playAlertMediaFile(media); } else if (notify == "1") @@ -91,15 +91,15 @@ function sendAlerts(callRoster, rosterSettings) } } - if (scriptExists && window.opener.g_crScript == 1) + if (scriptExists && window.opener.GT.crScript == 1) { try { - fs.writeFileSync(dirPath + "cr-alert.json", JSON.stringify(g_scriptReport, null, 2)); + fs.writeFileSync(dirPath + "cr-alert.json", JSON.stringify(CR.scriptReport, null, 2)); - var thisProc = dirPath + script; - var cp = require("child_process"); - var child = cp.spawn(thisProc, [], { + let thisProc = dirPath + script; + let cp = require("child_process"); + let child = cp.spawn(thisProc, [], { detached: true, cwd: dirPath.slice(0, -1), stdio: ["ignore", "ignore", "ignore"] @@ -110,8 +110,8 @@ function sendAlerts(callRoster, rosterSettings) { conosle.log(e); } - g_scriptReport = Object(); + CR.scriptReport = Object(); } - else g_scriptReport = Object(); + else CR.scriptReport = Object(); } } diff --git a/package.nw/lib/screens.js b/package.nw/lib/screens.js index a1251942..51aaace6 100644 --- a/package.nw/lib/screens.js +++ b/package.nw/lib/screens.js @@ -1,5 +1,12 @@ const nodeTimers = require("timers"); +// GridTracker object +var GT = {}; +// CallRoster object +var CR = {}; + +var isShowing = false; + var s_title = null; var s_screenSettings = {}; var s_zoomLevel = 0; @@ -71,7 +78,7 @@ function saveScreenSettings() { setWindowInfo(); - var setting = { showing: g_isShowing, zoomLevel: s_zoomLevel, window: g_windowInfo }; + var setting = { showing: isShowing, zoomLevel: s_zoomLevel, window: g_windowInfo }; s_screenSettings = JSON.parse(localStorage.screenSettings); @@ -83,14 +90,12 @@ function saveScreenSettings() nw.Screen.on("displayAdded", screenCB.onDisplayAdded); nw.Screen.on("displayRemoved", screenCB.onDisplayRemoved); -var g_isShowing = false; - nw.Window.get().on("loaded", function () { // Use the first 12 bytes of the title(trimmed) as storage names // This cannot be changed as current installs (12,000+) use this naming convention s_title = document.title.substr(0, 12).trim(); - g_isShowing = false; + isShowing = false; if (typeof localStorage.screenSettings == "undefined") { localStorage.screenSettings = "{}"; @@ -109,7 +114,7 @@ nw.Window.get().on("loaded", function () { saveScreenSettings(); } - g_isShowing = s_screenSettings[s_title].showing; + isShowing = s_screenSettings[s_title].showing; nw.Window.get().zoomLevel = s_zoomLevel = s_screenSettings[s_title].zoomLevel; g_windowInfo = s_screenSettings[s_title].window; @@ -122,7 +127,7 @@ nw.Window.get().on("loaded", function () // Check the first part of the string, only one window has "GridTracker" in the name. // It is reserved to the main app window. - if (g_isShowing || s_title.indexOf("GridTracker") == 0) + if (isShowing || s_title.indexOf("GridTracker") == 0) { this.show(); } diff --git a/package.nw/lib/services/pstrotator.js b/package.nw/lib/services/pstrotator.js index 26e8bd07..d61f686e 100644 --- a/package.nw/lib/services/pstrotator.js +++ b/package.nw/lib/services/pstrotator.js @@ -8,23 +8,23 @@ * https://groups.io/g/PstRotator/message/5825 * */ -var g_pstrotatorSettings = {}; +GT.pstrotatorSettings = {}; function pstrotatorServiceChanged() { - if (g_pstrotatorSettings.enabled != pstrotatorCheckBox.checked) + if (GT.pstrotatorSettings.enabled != pstrotatorCheckBox.checked) { // This setting toggles the presence of a contextual menu item in the roster, // which is constructed only during roster initialization. // // So when this setting is changed, we need to reload the entire roster window. // - g_pstrotatorSettings.enable = pstrotatorCheckBox.checked; - if (g_rosterInitialized) + GT.pstrotatorSettings.enable = pstrotatorCheckBox.checked; + if (GT.rosterInitialized) { try { - g_callRosterWindowHandle.window.location.reload(); + GT.callRosterWindowHandle.window.location.reload(); } catch (e) { @@ -33,8 +33,8 @@ function pstrotatorServiceChanged() } } - g_pstrotatorSettings.ip = pstrotatorIpInput.value; - g_pstrotatorSettings.port = pstrotatorPortInput.value; + GT.pstrotatorSettings.ip = pstrotatorIpInput.value; + GT.pstrotatorSettings.port = pstrotatorPortInput.value; saveLogSettings(); } @@ -44,9 +44,9 @@ function aimRotator(info) const { callObj } = info if ( - g_pstrotatorSettings.enable == true && - g_pstrotatorSettings.port > 0 && - g_pstrotatorSettings.ip.length > 4 && + GT.pstrotatorSettings.enable == true && + GT.pstrotatorSettings.port > 0 && + GT.pstrotatorSettings.ip.length > 4 && (callObj.distance > 0) ) { @@ -58,8 +58,8 @@ function aimRotator(info) sendUdpMessage( payload, payload.length, - parseInt(g_pstrotatorSettings.port), - g_pstrotatorSettings.ip + parseInt(GT.pstrotatorSettings.port), + GT.pstrotatorSettings.ip ); if (callObj.DEcall) { diff --git a/package.nw/lib/shadow.js b/package.nw/lib/shadow.js index 8c37cd31..559b4f3d 100644 --- a/package.nw/lib/shadow.js +++ b/package.nw/lib/shadow.js @@ -292,7 +292,7 @@ var dayNight = { }), stroke: null }), - opacity: Number(g_mapSettings.shadow), + opacity: Number(GT.mapSettings.shadow), zIndex: 0 }); this.map.getLayers().insertAt(1, this.vectorLayer); @@ -305,7 +305,7 @@ var dayNight = { }) }); this.vectorLayer.setStyle(circleStyle); - this.vectorLayer.setOpacity(Number(g_mapSettings.shadow)); + this.vectorLayer.setOpacity(Number(GT.mapSettings.shadow)); this.vectorSource.clear(); this.vectorSource.addFeature( @@ -313,7 +313,7 @@ var dayNight = { featureProjection: "EPSG:3857" }) ); - var point = ol.proj.fromLonLat([g_myLon, g_myLat]); + var point = ol.proj.fromLonLat([GT.myLon, GT.myLat]); var arr = this.vectorSource.getFeaturesAtCoordinate(point); return arr.length > 0; }, @@ -422,10 +422,10 @@ var moonLayer = { refresh: function () { this.vectorSource.clear(); - if (g_appSettings.moonTrack == 1) + if (GT.appSettings.moonTrack == 1) { now = timeNowSec(); - if (g_appSettings.moonPath == 1) + if (GT.appSettings.moonPath == 1) { this.vectorSource.addFeature(this.future(now)); } this.pin = iconFeature( ol.proj.fromLonLat(subLunar(now).ll), diff --git a/package.nw/lib/stats.js b/package.nw/lib/stats.js index 672bb3c7..9981ccb2 100644 --- a/package.nw/lib/stats.js +++ b/package.nw/lib/stats.js @@ -136,9 +136,9 @@ function addTextToClipboard(data) function setClipboardFromLookup() { - if (window.opener.g_lastLookupAddress) + if (window.opener.GT.lastLookupAddress) { - addTextToClipboard(window.opener.g_lastLookupAddress); + addTextToClipboard(window.opener.GT.lastLookupAddress); } } diff --git a/package.nw/lib/third-party.js b/package.nw/lib/third-party.js index 95407ab9..106e498f 100644 --- a/package.nw/lib/third-party.js +++ b/package.nw/lib/third-party.js @@ -297,10 +297,10 @@ function flightFeature(line, opts, layer, canAnimate) { var dash = []; var dashOff = 0; - if ( canAnimate == true && g_mapSettings.animate == true ) + if ( canAnimate == true && GT.mapSettings.animate == true ) { - dash = g_flightPathLineDash; - dashOff = g_flightPathTotal - g_flightPathOffset; + dash = GT.flightPathLineDash; + dashOff = GT.flightPathTotal - GT.flightPathOffset; } var featureArrow = new ol.Feature(new ol.geom.Point(line[0])); @@ -324,8 +324,8 @@ function flightFeature(line, opts, layer, canAnimate) { featureArrow.setStyle(thisStle); feature.Arrow = featureArrow; - g_layerSources[layer].addFeature(featureArrow); - g_layerSources[layer].addFeature(feature); + GT.layerSources[layer].addFeature(featureArrow); + GT.layerSources[layer].addFeature(feature); return feature; } From 68890b97548a4d111dc8752ec7dbadca2379771d Mon Sep 17 00:00:00 2001 From: Tag Date: Thu, 16 Feb 2023 17:50:47 -0800 Subject: [PATCH 06/36] Fixed county counting --- package.nw/lib/gt.js | 20 ++--- package.nw/lib/roster.js | 84 +++++++++---------- .../lib/roster/rosterColumnFunctions.js | 4 +- package.nw/lib/third-party.js | 5 -- 4 files changed, 54 insertions(+), 59 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index ce0d648d..f59c972b 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -651,14 +651,14 @@ GT.trophyImageArray[6] = "./img/usc_trophy.png"; GT.trophyImageArray[7] = "./img/us48_trophy.png"; GT.viewInfo = {}; -GT.viewInfo[0] = ["GT.qsoGrids", "Grids", 0, 0, 0]; -GT.viewInfo[1] = ["GT.cqZones", "CQ Zones", 0, 0, 40]; -GT.viewInfo[2] = ["GT.ituZones", "ITU Zones", 0, 0, 90]; -GT.viewInfo[3] = ["GT.wacZones", "Continents", 0, 0, 7]; -GT.viewInfo[4] = ["GT.wasZones", "US States", 0, 0, 50]; -GT.viewInfo[5] = ["GT.dxccInfo", "DXCCs", 0, 0, 340]; -GT.viewInfo[6] = ["GT.countyData", "US Counties", 0, 0, 3220]; -GT.viewInfo[7] = ["GT.us48Data", "US Continental Grids", 0, 0, 488]; +GT.viewInfo[0] = ["qsoGrids", "Grids", 0, 0, 0]; +GT.viewInfo[1] = ["cqZones", "CQ Zones", 0, 0, 40]; +GT.viewInfo[2] = ["ituZones", "ITU Zones", 0, 0, 90]; +GT.viewInfo[3] = ["wacZones", "Continents", 0, 0, 7]; +GT.viewInfo[4] = ["wasZones", "US States", 0, 0, 50]; +GT.viewInfo[5] = ["dxccInfo", "DXCCs", 0, 0, 340]; +GT.viewInfo[6] = ["countyData", "US Counties", 0, 0, 3220]; +GT.viewInfo[7] = ["us48Data", "US Continental Grids", 0, 0, 488]; GT.soundCard = GT.appSettings.soundCard; GT.gridAlpha = "88"; @@ -10325,7 +10325,7 @@ function redrawGrids() for (var layer in GT.viewInfo) { - var search = window[GT.viewInfo[layer][0]]; + var search = GT[GT.viewInfo[layer][0]]; var worked = (confirmed = 0); if (layer == 0) @@ -11746,7 +11746,7 @@ function loadMaidenHeadData() if (!(countyData[id].properties.st in GT.stateToCounty)) { GT.stateToCounty[countyData[id].properties.st] = Array(); } GT.stateToCounty[countyData[id].properties.st].push(id); - var cnty = countyData[id].properties.st + "," + replaceAll(countyData[id].properties.n, " ", ""); + var cnty = countyData[id].properties.st + "," + replaceAll(countyData[id].properties.n, " ", "").toUpperCase(); if (!(cnty in GT.cntyToCounty)) { GT.cntyToCounty[cnty] = toProperCase(countyData[id].properties.n); } diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index de3e76b5..e47d1776 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -502,7 +502,7 @@ function centerOn(grid) function instanceChange(what) { window.opener.GT.instances[what.id].crEnable = what.checked; - window.opener.goProcessRoster(); + viewRoster(); } function updateInstances() @@ -651,7 +651,7 @@ function awardNameChanged() storeAwardTracker(); processAward(hash); updateAwardList(hash); - window.opener.goProcessRoster(); + viewRoster(); } createSelectOptions( "awardName", @@ -754,7 +754,7 @@ function deleteAwardTracker(sender) storeAwardTracker(); resetAwardAdd(); updateAwardList(); - window.opener.goProcessRoster(); + viewRoster(); } function awardCheckboxChanged(sender) @@ -763,7 +763,7 @@ function awardCheckboxChanged(sender) CR.awardTracker[sender.target.parentNode.parentNode.id][sender.target.name] = sender.target.checked; storeAwardTracker(); - window.opener.goProcessRoster(); + viewRoster(); } function awardValueChanged(sender) @@ -772,7 +772,7 @@ function awardValueChanged(sender) CR.awardTracker[sender.target.parentNode.parentNode.id][sender.target.name] = sender.target.value; storeAwardTracker(); - window.opener.goProcessRoster(); + viewRoster(); } function createCell( @@ -1094,7 +1094,7 @@ function wantedChanged(element) { window.opener.GT.callRoster[callHash].callObj.alerted = false; } - window.opener.goProcessRoster(); + viewRoster(); } function valuesChanged() @@ -1155,7 +1155,7 @@ function valuesChanged() { window.opener.GT.callRoster[callHash].callObj.alerted = false; } - window.opener.goProcessRoster(); + viewRoster(); } function loadFilterSettings() @@ -1269,7 +1269,7 @@ function callsignResult(buffer, flag) CR.currentUSCallsigns = Object(); for (const key in rawData.c) CR.currentUSCallsigns[rawData.c[key]] = true; - window.opener.goProcessRoster(); + viewRoster(); } function stateChangedValue(what) @@ -1291,7 +1291,7 @@ function stateChangedValue(what) } else { - window.opener.goProcessRoster(); + viewRoster(); CR.currentUSState = ""; CR.currentUSCallsigns = null; stateSelect.value = ""; @@ -1305,14 +1305,14 @@ function stateChangedValue(what) CR.currentUSState = ""; CR.currentUSCallsigns = null; - window.opener.goProcessRoster(); + viewRoster(); } } function DXCCsChangedValue(what) { CR.currentDXCCs = DXCCsSelect.value; - window.opener.goProcessRoster(); + viewRoster(); } function initDXCCSelector() @@ -1391,7 +1391,7 @@ function deleteCallsignIgnore(key) delete CR.blockedCalls[key]; storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function deleteDxccIgnore(key) @@ -1399,7 +1399,7 @@ function deleteDxccIgnore(key) delete CR.blockedDxcc[key]; storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function deleteCQIgnore(key) @@ -1407,7 +1407,7 @@ function deleteCQIgnore(key) delete CR.blockedCQ[key]; storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function deleteCQzIgnore(key) @@ -1415,7 +1415,7 @@ function deleteCQzIgnore(key) delete CR.blockedCQz[key]; storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function deleteITUzIgnore(key) @@ -1423,7 +1423,7 @@ function deleteITUzIgnore(key) delete CR.blockedITUz[key]; storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function clearAllCallsignIgnores() @@ -1431,7 +1431,7 @@ function clearAllCallsignIgnores() CR.blockedCalls = Object(); storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function clearAllDxccIgnores() @@ -1439,7 +1439,7 @@ function clearAllDxccIgnores() CR.blockedDxcc = Object(); storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function clearAllCQIgnores() @@ -1447,7 +1447,7 @@ function clearAllCQIgnores() CR.blockedCQ = Object(); storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function clearAllCQzIgnores() @@ -1455,7 +1455,7 @@ function clearAllCQzIgnores() CR.blockedCQz = Object(); storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function clearAllITUzIgnores() @@ -1463,7 +1463,7 @@ function clearAllITUzIgnores() CR.blockedITUz = Object(); storeBlocks(); openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function openSettings() @@ -1652,7 +1652,7 @@ function resize() { if (editView.style.display == "inline-block") openIgnoreEdit(); - window.opener.goProcessRoster(); + viewRoster(); } function init() @@ -1861,7 +1861,7 @@ function addControls() let thisCall = CR.callRoster[CR.targetHash].DEcall; CR.blockedCalls[thisCall] = true; storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -1918,7 +1918,7 @@ function addControls() { CR.rosterSettings.realtime = this.checked; writeRosterSettings(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.menu.append(item); @@ -1954,7 +1954,7 @@ function addControls() if (this.label == "Spot") { window.opener.setRosterSpot(CR.rosterSettings.columns.Spot); } writeRosterSettings(); - window.opener.goProcessRoster(); + viewRoster(); resize(); } }); @@ -1974,7 +1974,7 @@ function addControls() { CR.blockedCalls = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.menu.append(CR.clearIgnores); @@ -1987,7 +1987,7 @@ function addControls() { CR.blockedCalls = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.callMenu.append(CR.clearIgnoresCall); @@ -2005,7 +2005,7 @@ function addControls() window.opener.GT.dxccToAltName[CR.callRoster[CR.targetCQ].callObj.dxcc] ] = true; storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2018,7 +2018,7 @@ function addControls() { CR.blockedCQ[CR.callRoster[CR.targetCQ].DXcall + " from All"] = true; storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2032,7 +2032,7 @@ function addControls() { CR.blockedCQ = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.menu.append(CR.clearCQIgnoreMainMenu); @@ -2045,7 +2045,7 @@ function addControls() { CR.blockedCQ = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.CQMenu.append(CR.clearCQIgnore); @@ -2070,7 +2070,7 @@ function addControls() { CR.blockedCQz[CR.callRoster[CR.targetCQz].callObj.cqz] = true; storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2084,7 +2084,7 @@ function addControls() { CR.blockedCQz = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2096,7 +2096,7 @@ function addControls() { CR.blockedCQz = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.CQzMenu.append(CR.clearCQzIgnore); @@ -2124,7 +2124,7 @@ function addControls() { CR.blockedITUz[CR.callRoster[CR.targetITUz].callObj.ituz] = true; storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2138,7 +2138,7 @@ function addControls() { CR.blockedITUz = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2152,7 +2152,7 @@ function addControls() { CR.blockedITUz = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2179,7 +2179,7 @@ function addControls() { CR.blockedDxcc[CR.targetDxcc] = true; storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); @@ -2193,7 +2193,7 @@ function addControls() { CR.blockedDxcc = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.menu.append(CR.clearDxccIgnoreMainMenu); @@ -2206,7 +2206,7 @@ function addControls() { CR.blockedDxcc = Object(); storeBlocks(); - window.opener.goProcessRoster(); + viewRoster(); } }); CR.dxccMenu.append(CR.clearDxccIgnore); @@ -3622,7 +3622,7 @@ function addAllAwards() } } updateAwardList(); - window.opener.goProcessRoster(); + viewRoster(); } function delAllAwards() @@ -3630,7 +3630,7 @@ function delAllAwards() CR.awardTracker = {}; storeAwardTracker(); updateAwardList(); - window.opener.goProcessRoster(); + viewRoster(); } function newCompileCountObject() diff --git a/package.nw/lib/roster/rosterColumnFunctions.js b/package.nw/lib/roster/rosterColumnFunctions.js index 27522bec..58d5b2b6 100644 --- a/package.nw/lib/roster/rosterColumnFunctions.js +++ b/package.nw/lib/roster/rosterColumnFunctions.js @@ -65,7 +65,7 @@ function setRosterSorting(column) writeRosterSettings(); - window.opener.goProcessRoster(); + viewRoster(); } function sortCallList(callList, sortColumn, sortReverse, columns) @@ -126,7 +126,7 @@ function changeRosterColumnOrder(columns) { CR.rosterSettings.columnOrder = validateRosterColumnOrder(columns); writeRosterSettings(); - window.opener.goProcessRoster(); + viewRoster(); } function moveColumnLeft(column) diff --git a/package.nw/lib/third-party.js b/package.nw/lib/third-party.js index 106e498f..bad7d5a7 100644 --- a/package.nw/lib/third-party.js +++ b/package.nw/lib/third-party.js @@ -84,8 +84,6 @@ function latLonToGridSquare(param1,param2, width = 4){ } } - - function bitwise(str){ var hash = 0; if (str.length == 0) return hash; @@ -140,9 +138,6 @@ function unique (text) { } - - - var MyCircle = { validateRadius: function(unit) { From 125513b1855364969962bcea1a2df716d8899f71 Mon Sep 17 00:00:00 2001 From: Tag Date: Thu, 16 Feb 2023 17:56:40 -0800 Subject: [PATCH 07/36] Download acks once a day, not ten times a day --- package.nw/lib/gt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index f59c972b..28d6621d 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -10618,7 +10618,7 @@ function downloadAcknowledgements() 80 ); - nodeTimers.setTimeout(downloadAcknowledgements, 8640000); + nodeTimers.setTimeout(downloadAcknowledgements, 86400000); } } From 2d90181b75d53138e89e5e47aa2c52aa23ee2980 Mon Sep 17 00:00:00 2001 From: Tag Date: Fri, 17 Feb 2023 10:33:06 -0800 Subject: [PATCH 08/36] More global removal, bug fix, lint fix --- package.nw/gt_chat.html | 18 +- package.nw/lib/adif.js | 32 +-- package.nw/lib/alerts.js | 10 +- package.nw/lib/defaults.js | 4 +- package.nw/lib/gt.js | 203 ++++++++---------- package.nw/lib/gtws.js | 16 +- package.nw/lib/pota.js | 10 +- package.nw/lib/roster/processRosterHunting.js | 2 +- 8 files changed, 140 insertions(+), 155 deletions(-) diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index f30d704d..2375e731 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -94,7 +94,7 @@ { var thisMsg = "Returned from away."; window.opener.gtSendMessage(thisMsg, g_currentId); - worker = makeViewMessage("self", window.opener.myDEcall, thisMsg); + worker = makeViewMessage("self", window.opener.GT.appSettings.myCall, thisMsg); messageTextDiv.innerHTML += worker; delete window.opener.GT.gtSentAwayToCid[g_currentId]; } @@ -104,7 +104,7 @@ window.opener.newMessageSetting(window.opener.msgAwaySelect); } window.opener.gtSendMessage(msg, g_currentId); - worker = makeViewMessage("self", window.opener.myDEcall, htmlEntities(msg)); + worker = makeViewMessage("self", window.opener.GT.appSettings.myCall, htmlEntities(msg)); messageTextDiv.innerHTML += worker; scrollDown(messageTextDiv); } @@ -281,9 +281,9 @@ } catch (e) {} - if (g_viewBand > 0 && window.opener.myBand != obj.band) show = false; + if (g_viewBand > 0 && window.opener.GT.appSettings.myBand != obj.band) show = false; - if (g_viewMode > 0 && window.opener.myMode != obj.mode) show = false; + if (g_viewMode > 0 && window.opener.GT.appSettings.myMode != obj.mode) show = false; if (obj.canmsg == false) show = false; @@ -360,9 +360,9 @@ } catch (e) {} - if (g_viewBand > 0 && window.opener.myBand != obj.band) show = false; + if (g_viewBand > 0 && window.opener.GT.appSettings.myBand != obj.band) show = false; - if (g_viewMode > 0 && window.opener.myMode != obj.mode) show = false; + if (g_viewMode > 0 && window.opener.GT.appSettings.myMode != obj.mode) show = false; if (obj.canmsg == false) show = false; @@ -383,7 +383,7 @@ if (g_viewBand) { - viewBand.innerHTML = window.opener.myBand; + viewBand.innerHTML = window.opener.GT.appSettings.myBand; } else { @@ -392,7 +392,7 @@ if (g_viewMode) { - viewMode.innerHTML = window.opener.myMode; + viewMode.innerHTML = window.opener.GT.appSettings.myMode; } else { @@ -550,7 +550,7 @@ else worker += makeViewMessage( "self", - window.opener.myDEcall, + window.opener.GT.appSettings.myCall, window.opener.GT.gtMessages[id].history[msg].msg, window.opener.GT.gtMessages[id].history[msg].when ); diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js index b87b1a8a..6e6a160f 100644 --- a/package.nw/lib/adif.js +++ b/package.nw/lib/adif.js @@ -149,7 +149,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) var finalDEcall = findAdiField(activeAdifArray[x], "STATION_CALLSIGN").replace("_", "/"); if (finalDEcall == "") { - finalDEcall = myDEcall; + finalDEcall = GT.appSettings.myCall; } if (GT.appSettings.workingCallsignEnable && !(finalDEcall in GT.appSettings.workingCallsigns)) @@ -356,7 +356,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) var finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC")); if (finalDxcc == 0) { - if (finalDXcall == myDEcall) finalDxcc = callsignToDxcc(finalDEcall); + if (finalDXcall == GT.appSettings.myCall) finalDxcc = callsignToDxcc(finalDEcall); else finalDxcc = callsignToDxcc(finalDXcall); } @@ -379,7 +379,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) validateGridFromString(finalGrid) ) { - if (finalDXcall == myDEcall) + if (finalDXcall == GT.appSettings.myCall) { addDeDx( finalMyGrid, @@ -401,7 +401,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) null ); } - else if (finalDEcall == myDEcall) + else if (finalDEcall == GT.appSettings.myCall) { addDeDx( finalGrid, @@ -894,7 +894,7 @@ function grabPsk24() { if (GT.isGettingPsk == true) return; - if (myDEcall.length > 0 && myDEcall != "NOCALL") + if (GT.appSettings.myCall.length > 0 && GT.appSettings.myCall != "NOCALL") { var days = 1; if (pskImg.src == 1) days = 7; @@ -902,7 +902,7 @@ function grabPsk24() "https://pskreporter.info/cgi-bin/pskdata.pl?adif=1&days=" + days + "&receiverCallsign=" + - myDEcall.toLowerCase(), + GT.appSettings.myCall.toLowerCase(), pskCallback, null, "https", @@ -1832,15 +1832,15 @@ function oldSendToLogger() { report += valueToAdiField("STATION_CALLSIGN", newMessage.Mycall); } - else if (myDEcall != "NOCALL" && myDEcall.length > 0) - { report += valueToAdiField("STATION_CALLSIGN", myDEcall); } + else if (GT.appSettings.myCall != "NOCALL" && GT.appSettings.myCall.length > 0) + { report += valueToAdiField("STATION_CALLSIGN", GT.appSettings.myCall); } if (newMessage.Mygrid.length > 0) { report += valueToAdiField("MY_GRIDSQUARE", newMessage.Mygrid); } - else if (myDEGrid.length > 1) - { report += valueToAdiField("MY_GRIDSQUARE", myDEGrid); } + else if (GT.appSettings.myGrid.length > 1) + { report += valueToAdiField("MY_GRIDSQUARE", GT.appSettings.myGrid); } report += ""; @@ -1894,19 +1894,19 @@ function sendToLogger(ADIF) if ( (!("STATION_CALLSIGN" in record) || record.STATION_CALLSIGN.length == 0) && - myDEcall != "NOCALL" && - myDEcall.length > 0 + GT.appSettings.myCall != "NOCALL" && + GT.appSettings.myCall.length > 0 ) { - record.STATION_CALLSIGN = myDEcall; + record.STATION_CALLSIGN = GT.appSettings.myCall; } if ( (!("MY_GRIDSQUARE" in record) || record.MY_GRIDSQUARE.length == 0) && - myDEGrid.length > 1 + GT.appSettings.myGrid.length > 1 ) { - record.MY_GRIDSQUARE = myDEGrid; + record.MY_GRIDSQUARE = GT.appSettings.myGrid; } if (!("DXCC" in record)) @@ -2398,7 +2398,7 @@ function sendLotwLogEntry(report) lotwStation.value.length > 0 ) { - var header = "Generated " + userTimeString(null) + " for " + myDEcall + "\r\n\r\n"; + var header = "Generated " + userTimeString(null) + " for " + GT.appSettings.myCall + "\r\n\r\n"; var pid = "GridTracker"; var pver = String(gtVersion); header += "" + pid + "\r\n"; diff --git a/package.nw/lib/alerts.js b/package.nw/lib/alerts.js index 75a444cf..c830e364 100644 --- a/package.nw/lib/alerts.js +++ b/package.nw/lib/alerts.js @@ -544,7 +544,7 @@ function checkAlerts( else if (nalert.type == 4) { // QRZ - if (myDEcall.length > 0 && originalMessage.indexOf(myDEcall + " ") == 0) + if (GT.appSettings.myCall.length > 0 && originalMessage.indexOf(GT.appSettings.myCall + " ") == 0) { handleAlert(nalert, DEcallsign, originalMessage, callsignRecord); hadAlert = true; @@ -632,7 +632,7 @@ function handleAlert(nAlert, target, lastMessage, callsignRecord, grid) if (nAlert.type == 4) { if (nAlert.notify == 0) playAlertMediaFile(nAlert.filename); - if (nAlert.notify == 1) speakQRZString(target, "Calling", myDEcall); + if (nAlert.notify == 1) speakQRZString(target, "Calling", GT.appSettings.myCall); if (nAlert.notify == 2) displayAlertPopUp("QRZ", null, null); } nAlert.fired++; @@ -773,7 +773,7 @@ function unflashAlertPopUp() if (GT.alerts[key].type == 2) { worker += "
"; } if (GT.alerts[key].type == 4) - { worker += ""; } + { worker += ""; } if (GT.alerts[key].type == 5) { worker += @@ -850,7 +850,7 @@ function alertTypeChanged() { alertValueSelect.innerHTML = ""; ValidateCallsign(alertValueInput, null); } @@ -940,7 +940,7 @@ function displayAlerts() if (GT.alerts[key].type == 2) { worker += ""; } if (GT.alerts[key].type == 4) - { worker += ""; } + { worker += ""; } if (GT.alerts[key].type == 5) { worker += diff --git a/package.nw/lib/defaults.js b/package.nw/lib/defaults.js index beeaf061..3b687795 100644 --- a/package.nw/lib/defaults.js +++ b/package.nw/lib/defaults.js @@ -68,8 +68,8 @@ var def_appSettings = { mouseTrack: 0, multicast: false, myBand: "OOB", - myDEGrid: "", - myDEcall: "NOCALL", + myGrid: "", + myCall: "NOCALL", myMode: "", myRawCall: "NOCALL", myRawFreq: "", diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 28d6621d..d5507f19 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -58,6 +58,7 @@ GT.lookupWindowHandle = null; GT.lookupWindowInitialized = false; GT.baWindowHandle = null; GT.baWindowInitialized = false; +GT.myDXGrid = ""; GT.appSettings = {}; GT.mapSettings = {}; GT.legendColors = {}; @@ -167,14 +168,6 @@ loadAllSettings(); const k_frequencyBucket = 10000; -var myDEcall = GT.appSettings.myDEcall; -var myDEGrid = GT.appSettings.myDEGrid; -var myDXGrid = ""; -var myMode = GT.appSettings.myMode; -var myBand = GT.appSettings.myBand; -var myRawFreq = GT.appSettings.myRawFreq; -var myRawCall = GT.appSettings.myRawCall; -var myRawGrid = GT.appSettings.myRawGrid; GT.flightDuration = 30; GT.crScript = GT.appSettings.crScript; GT.spotView = GT.appSettings.spotView; @@ -1833,11 +1826,11 @@ function createFlagTipTable(toolElement) var dxccName = GT.dxccToAltName[dxcc]; var workColor = "cyan"; - if (GT.gtFlagPins[key].call + myBand + myMode in GT.tracker.worked.call) + if (GT.gtFlagPins[key].call + GT.appSettings.myBand + GT.appSettings.myMode in GT.tracker.worked.call) { workColor = "yellow"; } - if (GT.gtFlagPins[key].call + myBand + myMode in GT.tracker.confirmed.call) + if (GT.gtFlagPins[key].call + GT.appSettings.myBand + GT.appSettings.myMode in GT.tracker.confirmed.call) { workColor = "#00FF00"; } @@ -1963,7 +1956,7 @@ function createSpotTipTable(toolElement) GT.layerSources["psk-hop"].clear(); var report = GT.receptionReports.spots[toolElement.spot]; - var LL = squareToCenter(myRawGrid); + var LL = squareToCenter(GT.appSettings.myRawGrid); var fromPoint = ol.proj.fromLonLat([LL.o, LL.a]); worker = "
ITU Zones
" + GT.alerts[key].value + "" + myDEcall + "" + GT.appSettings.myCall + "" + GT.alerts[key].value + "" + myDEcall + "" + GT.appSettings.myCall + "
"; @@ -2115,8 +2108,8 @@ function createTooltTipTable(toolElement) var callsign = newCallList[x]; var bgDX = " style='font-weight:bold;color:cyan;' "; var bgDE = " style='font-weight:bold;color:yellow;' "; - if (callsign.DXcall == myDEcall) { bgDX = " style='background-color:cyan;color:#000;font-weight:bold' "; } - if (callsign.DEcall == myDEcall) { bgDE = " style='background-color:#FFFF00;color:#000;font-weight:bold' "; } + if (callsign.DXcall == GT.appSettings.myCall) { bgDX = " style='background-color:cyan;color:#000;font-weight:bold' "; } + if (callsign.DEcall == GT.appSettings.myCall) { bgDE = " style='background-color:#FFFF00;color:#000;font-weight:bold' "; } if (typeof callsign.msg == "undefined" || callsign.msg == "") { callsign.msg = "-"; } var ageString = ""; if (timeNowSec() - callsign.time < 3601) { ageString = toDHMS(timeNowSec() - callsign.time); } @@ -2239,8 +2232,8 @@ function createTooltTipTableLogbook(toolElement) var callsign = newCallList[x]; var bgDX = " style='font-weight:bold;color:cyan;' "; var bgDE = " style='font-weight:bold;color:yellow;' "; - if (callsign.DXcall == myDEcall) { bgDX = " style='background-color:cyan;color:#000;font-weight:bold' "; } - if (callsign.DEcall == myDEcall) { bgDE = " style='background-color:#FFFF00;color:#000;font-weight:bold' "; } + if (callsign.DXcall == GT.appSettings.myCall) { bgDX = " style='background-color:cyan;color:#000;font-weight:bold' "; } + if (callsign.DEcall == GT.appSettings.myCall) { bgDE = " style='background-color:#FFFF00;color:#000;font-weight:bold' "; } var ageString = ""; if (timeNowSec() - callsign.time < 3601) { ageString = toDHMS(timeNowSec() - callsign.time); } else @@ -3075,13 +3068,13 @@ function makeTitleInfo(mapWindow) GT.appSettings.gtBandFilter.length == 0 ? "Mixed" : GT.appSettings.gtBandFilter == "auto" - ? myBand + ? GT.appSettings.myBand : GT.appSettings.gtBandFilter; var mode = GT.appSettings.gtModeFilter.length == 0 ? "Mixed" : GT.appSettings.gtModeFilter == "auto" - ? myMode + ? GT.appSettings.myMode : GT.appSettings.gtModeFilter; var news = `GridTracker ${gtVersionStr} [Band: ${band} Mode: ${mode}`; @@ -4306,7 +4299,7 @@ function qthToBox(iQTH, iDEcallsign, iCQ, locked, DE, band, wspr, hash) boxColor = GT.legendColors.CQ + GT.gridAlpha; } - if (DE == myDEcall) + if (DE == GT.appSettings.myCall) { borderColor = "#FF0000FF"; boxColor = GT.legendColors.QRZ + GT.gridAlpha; @@ -4806,7 +4799,7 @@ function updateCountStats() { var count = Object.keys(GT.liveCallsigns).length; - if (myDEcall in GT.liveCallsigns) count--; + if (GT.appSettings.myCall in GT.liveCallsigns) count--; callsignCount.innerHTML = count; @@ -5023,8 +5016,8 @@ function clearLogFilesAndCounts() function getCurrentBandModeHTML() { - var band = GT.appSettings.gtBandFilter == "auto" ? myBand + " (Auto)" : GT.appSettings.gtBandFilter.length == 0 ? "Mixed Bands" : GT.appSettings.gtBandFilter; - var mode = GT.appSettings.gtModeFilter == "auto" ? myMode + " (Auto)" : GT.appSettings.gtModeFilter.length == 0 ? "Mixed Modes" : GT.appSettings.gtModeFilter; + var band = GT.appSettings.gtBandFilter == "auto" ? GT.appSettings.myBand + " (Auto)" : GT.appSettings.gtBandFilter.length == 0 ? "Mixed Bands" : GT.appSettings.gtBandFilter; + var mode = GT.appSettings.gtModeFilter == "auto" ? GT.appSettings.myMode + " (Auto)" : GT.appSettings.gtModeFilter.length == 0 ? "Mixed Modes" : GT.appSettings.gtModeFilter; return ( "
Viewing: " + band + @@ -5801,20 +5794,20 @@ function liveHash(call, band, mode) function setHomeGridsquare() { - GT.appSettings.centerGridsquare = myDEGrid; + GT.appSettings.centerGridsquare = GT.appSettings.myGrid; if (GT.appSettings.centerGridsquare.length > 0) { homeQTHInput.value = GT.appSettings.centerGridsquare; } - var hash = myDEcall; + var hash = GT.appSettings.myCall; var rect = qthToBox( - myDEGrid, - myDEcall, + GT.appSettings.myGrid, + GT.appSettings.myCall, false, true, "", - myBand, + GT.appSettings.myBand, null, hash ); @@ -5828,18 +5821,18 @@ function setHomeGridsquare() push = true; } else newCallsign = GT.liveCallsigns[hash]; - newCallsign.DEcall = myDEcall; - newCallsign.grid = myDEGrid; + newCallsign.DEcall = GT.appSettings.myCall; + newCallsign.grid = GT.appSettings.myGrid; newCallsign.wspr = null; - newCallsign.msg = myDEGrid; + newCallsign.msg = GT.appSettings.myGrid; newCallsign.RSTsent = "-"; newCallsign.RSTrecv = "-"; newCallsign.time = timeNowSec(); newCallsign.delta = -1; newCallsign.DXcall = "Self"; newCallsign.rect = rect; - newCallsign.mode = myMode; - newCallsign.band = myBand; + newCallsign.mode = GT.appSettings.myMode; + newCallsign.band = GT.appSettings.myBand; newCallsign.worked = false; newCallsign.confirmed = false; newCallsign.state = null; @@ -5849,7 +5842,7 @@ function setHomeGridsquare() newCallsign.instance = null; newCallsign.alerted = false; newCallsign.shouldAlert = false; - GT.myDXCC = newCallsign.dxcc = callsignToDxcc(myDEcall); + GT.myDXCC = newCallsign.dxcc = callsignToDxcc(GT.appSettings.myCall); newCallsign.locked = true; if (push) GT.liveCallsigns[hash] = newCallsign; @@ -6214,11 +6207,11 @@ function handleWsjtxStatus(newMessage) var modeChange = false; wsjtxMode.innerHTML = "" + newMessage.MO + ""; - myMode = newMessage.MO; - myBand = newMessage.Band; - if (GT.lastBand != myBand) + GT.appSettings.myMode = newMessage.MO; + GT.appSettings.myBand = newMessage.Band; + if (GT.lastBand != GT.appSettings.myBand) { - GT.lastBand = myBand; + GT.lastBand = GT.appSettings.myBand; bandChange = true; if (GT.pskBandActivityTimerHandle != null) { @@ -6226,9 +6219,9 @@ function handleWsjtxStatus(newMessage) GT.pskBandActivityTimerHandle = null; } } - if (GT.lastMode != myMode) + if (GT.lastMode != GT.appSettings.myMode) { - GT.lastMode = myMode; + GT.lastMode = GT.appSettings.myMode; modeChange = true; if (GT.pskBandActivityTimerHandle != null) { @@ -6246,7 +6239,7 @@ function handleWsjtxStatus(newMessage) redrawParks(); redrawPins(); - var msg = "" + myBand + " / " + myMode + ""; + var msg = "" + GT.appSettings.myBand + " / " + GT.appSettings.myMode + ""; addLastTraffic(msg); ackAlerts(); updateChatWindow(); @@ -6254,22 +6247,22 @@ function handleWsjtxStatus(newMessage) GT.gtLiveStatusUpdate = true; } - myRawFreq = newMessage.Frequency; - frequency.innerHTML = "" + formatMhz(Number(newMessage.Frequency / 1000), 3, 3) + " Hz (" + myBand + ")"; - myRawCall = newMessage.DEcall.trim(); - myRawGrid = newMessage.DEgrid.trim().substr(0, 6); + GT.appSettings.myRawFreq = newMessage.Frequency; + frequency.innerHTML = "" + formatMhz(Number(newMessage.Frequency / 1000), 3, 3) + " Hz (" + GT.appSettings.myBand + ")"; + GT.appSettings.myRawCall = newMessage.DEcall.trim(); + GT.appSettings.myRawGrid = newMessage.DEgrid.trim().substr(0, 6); - var LL = squareToCenter(myRawGrid); + var LL = squareToCenter(GT.appSettings.myRawGrid); GT.mapSettings.latitude = GT.myLat = LL.a; GT.mapSettings.longitude = GT.myLon = LL.o; - if (myRawGrid != GT.lastRawGrid) + if (GT.appSettings.myRawGrid != GT.lastRawGrid) { - GT.lastRawGrid = myRawGrid; + GT.lastRawGrid = GT.appSettings.myRawGrid; } dxCallBoxDiv.className = "DXCallBox"; - var hash = DXcall + myBand + myMode; + var hash = DXcall + GT.appSettings.myBand + GT.appSettings.myMode; if (hash in GT.tracker.worked.call) { @@ -6298,11 +6291,11 @@ function handleWsjtxStatus(newMessage) localDXcall.innerHTML = "-"; GT.localDXcall = ""; } - localDXGrid.innerHTML = myDXGrid = newMessage.DXgrid.trim(); + localDXGrid.innerHTML = GT.myDXGrid = newMessage.DXgrid.trim(); - if (myDXGrid.length == 0 && hash in GT.liveCallsigns) + if (GT.myDXGrid.length == 0 && hash in GT.liveCallsigns) { - localDXGrid.innerHTML = myDXGrid = GT.liveCallsigns[hash].grid.substr(0, 4); + localDXGrid.innerHTML = GT.myDXGrid = GT.liveCallsigns[hash].grid.substr(0, 4); } if (localDXGrid.innerHTML.length == 0) @@ -6313,7 +6306,7 @@ function handleWsjtxStatus(newMessage) } else { - var LL = squareToCenter(myDXGrid); + var LL = squareToCenter(GT.myDXGrid); localDXDistance.innerHTML = parseInt(MyCircle.distance(GT.myLat, GT.myLon, LL.a, LL.o, distanceUnit.value) * MyCircle.validateRadius(distanceUnit.value)) + distanceUnit.value.toLowerCase(); localDXAzimuth.innerHTML = parseInt(MyCircle.bearing(GT.myLat, GT.myLon, LL.a, LL.o)) + "°"; } @@ -6335,10 +6328,10 @@ function handleWsjtxStatus(newMessage) localDXReport.innerHTML = localDXCountry.innerHTML = ""; } - myDEcall = newMessage.DEcall; - myDEGrid = newMessage.DEgrid.trim().substr(0, 6); - if (myDEGrid.length > 0) setHomeGridsquare(); - if (myDEGrid.length > 0) GT.appSettings.centerGridsquare = myDEGrid; + GT.appSettings.myCall = newMessage.DEcall; + GT.appSettings.myGrid = newMessage.DEgrid.trim().substr(0, 6); + if (GT.appSettings.myGrid.length > 0) setHomeGridsquare(); + if (GT.appSettings.myGrid.length > 0) GT.appSettings.centerGridsquare = GT.appSettings.myGrid; if (newMessage.Decoding == 1) { @@ -6399,16 +6392,16 @@ function handleWsjtxStatus(newMessage) GT.lastMapView.LoLa = GT.mapView.getCenter(); GT.lastMapView.zoom = GT.mapView.getZoom(); } - if (myDXGrid.length > 0) + if (GT.myDXGrid.length > 0) { - fitViewBetweenPoints([getPoint(myRawGrid), getPoint(myDXGrid)]); + fitViewBetweenPoints([getPoint(GT.appSettings.myRawGrid), getPoint(GT.myDXGrid)]); } else if (GT.mapSettings.qrzDxccFallback && DXcall.length > 0 && callsignToDxcc(DXcall) > 0) { var dxcc = callsignToDxcc(DXcall); var Lat = GT.dxccInfo[dxcc].lat; var Lon = GT.dxccInfo[dxcc].lon; - fitViewBetweenPoints([getPoint(myRawGrid), ol.proj.fromLonLat([Lon, Lat])], 15); + fitViewBetweenPoints([getPoint(GT.appSettings.myRawGrid), ol.proj.fromLonLat([Lon, Lat])], 15); } } } @@ -6439,17 +6432,17 @@ function handleWsjtxStatus(newMessage) GT.layerSources.transmit.clear(); GT.transmitFlightPath = null; - if (qrzPathWidthValue.value != 0 && GT.appSettings.gridViewMode != 2 && validateGridFromString(myRawGrid)) + if (qrzPathWidthValue.value != 0 && GT.appSettings.gridViewMode != 2 && validateGridFromString(GT.appSettings.myRawGrid)) { var strokeColor = getQrzPathColor(); var strokeWeight = qrzPathWidthValue.value; - var LL = squareToCenter(myRawGrid); + var LL = squareToCenter(GT.appSettings.myRawGrid); var fromPoint = ol.proj.fromLonLat([LL.o, LL.a]); var toPoint = null; - if (validateGridFromString(myDXGrid)) + if (validateGridFromString(GT.myDXGrid)) { - LL = squareToCenter(myDXGrid); + LL = squareToCenter(GT.myDXGrid); toPoint = ol.proj.fromLonLat([LL.o, LL.a]); } else if (GT.mapSettings.qrzDxccFallback && DXcall.length > 0 && callsignToDxcc(DXcall) > 0) @@ -6491,14 +6484,6 @@ function handleWsjtxStatus(newMessage) } GT.weAreDecoding = false; } - - GT.appSettings.myDEcall = myDEcall; - GT.appSettings.myDEGrid = myDEGrid; - GT.appSettings.myMode = myMode; - GT.appSettings.myBand = myBand; - GT.appSettings.myRawFreq = myRawFreq; - GT.appSettings.myRawCall = myRawCall; - GT.appSettings.myRawGrid = myRawGrid; } if (newMessage.Decoding == 0) @@ -6531,11 +6516,11 @@ function drawTraffic() .split(GT.localDXcall) .join("" + GT.localDXcall + ""); } - if (myRawCall.length > 1) + if (GT.appSettings.myRawCall.length > 1) { worker = worker - .split(myRawCall) - .join("" + myRawCall + ""); + .split(GT.appSettings.myRawCall) + .join("" + GT.appSettings.myRawCall + ""); } trafficDiv.innerHTML = worker; } @@ -6687,10 +6672,10 @@ function handleWsjtxDecode(newMessage) var canPath = false; if ( (GT.appSettings.gtBandFilter.length == 0 || - (GT.appSettings.gtBandFilter == "auto" && newMessage.OB == myBand) || + (GT.appSettings.gtBandFilter == "auto" && newMessage.OB == GT.appSettings.myBand) || newMessage.OB == GT.appSettings.gtBandFilter) && (GT.appSettings.gtModeFilter.length == 0 || - (GT.appSettings.gtModeFilter == "auto" && newMessage.OM == myMode) || + (GT.appSettings.gtModeFilter == "auto" && newMessage.OM == GT.appSettings.myMode) || newMessage.OM == GT.appSettings.gtModeFilter || GT.appSettings.gtModeFilter == "Digital") ) @@ -6788,11 +6773,11 @@ function handleWsjtxDecode(newMessage) if ( (GT.appSettings.gtBandFilter.length == 0 || (GT.appSettings.gtBandFilter == "auto" && - newMessage.OB == myBand) || + newMessage.OB == GT.appSettings.myBand) || newMessage.OB == GT.appSettings.gtBandFilter) && (GT.appSettings.gtModeFilter.length == 0 || (GT.appSettings.gtModeFilter == "auto" && - newMessage.OM == myMode) || + newMessage.OM == GT.appSettings.myMode) || newMessage.OM == GT.appSettings.gtModeFilter || GT.appSettings.gtModeFilter == "Digital") ) @@ -6829,7 +6814,7 @@ function handleWsjtxDecode(newMessage) callsign.CQ = CQ; callsign.RR73 = RR73; - callsign.qrz = (msgDXcallsign == myDEcall); + callsign.qrz = (msgDXcallsign == GT.appSettings.myCall); if (callsign.grid.length > 0 && callsign.distance == 0) { @@ -6950,7 +6935,7 @@ function handleWsjtxDecode(newMessage) var strokeWeight = pathWidthValue.value; var flightPath = null; var isQRZ = false; - if (msgDXcallsign == myDEcall) + if (msgDXcallsign == GT.appSettings.myCall) { strokeColor = getQrzPathColor(); strokeWeight = qrzPathWidthValue.value; @@ -6989,14 +6974,14 @@ function handleWsjtxDecode(newMessage) } } } - else if (GT.mapSettings.qrzDxccFallback && msgDXcallsign == myDEcall && callsign.dxcc > 0) + else if (GT.mapSettings.qrzDxccFallback && msgDXcallsign == GT.appSettings.myCall && callsign.dxcc > 0) { // the caller is calling us, but they don't have a grid, so lookup the DXCC and show it var strokeColor = getQrzPathColor(); var strokeWeight = qrzPathWidthValue.value; var flightPath = null; var isQRZ = true; - var DEcallsign = GT.liveCallsigns[myDEcall]; + var DEcallsign = GT.liveCallsigns[GT.appSettings.myCall]; if (strokeWeight != 0) { @@ -7467,7 +7452,7 @@ function showCallsignBox(redraw) newCallList.sort(compareCallsignTime).reverse(); for (var x in newCallList) { - if (newCallList[x].DEcall == myRawCall) continue; + if (newCallList[x].DEcall == GT.appSettings.myRawCall) continue; var grid = newCallList[x].rect ? newCallList[x].rect.qth : "-"; var cqzone = newCallList[x].cqz ? newCallList[x].cqz : "-"; var ituzone = newCallList[x].ituz ? newCallList[x].ituz : "-"; @@ -8437,7 +8422,7 @@ function showDXCCsBox() Object.keys(List).forEach(function (key, i) { - var band = GT.appSettings.gtBandFilter == "auto" ? myBand : GT.appSettings.gtBandFilter.length == 0 ? "" : GT.appSettings.gtBandFilter; + var band = GT.appSettings.gtBandFilter == "auto" ? GT.appSettings.myBand : GT.appSettings.gtBandFilter.length == 0 ? "" : GT.appSettings.gtBandFilter; var unconfirmedCallsKey = new UnconfirmedCallsKey(List[key].dxcc, band); if (GT.unconfirmedCalls.has(unconfirmedCallsKey.key) && GT.unconfirmedCalls.get(unconfirmedCallsKey.key) != GT.unconfirmedCallsSentinel) { @@ -8594,8 +8579,8 @@ function displayItemList(table, color) function showWPXBox() { var worker = getCurrentBandModeHTML(); - var band = GT.appSettings.gtBandFilter == "auto" ? myBand : GT.appSettings.gtBandFilter.length == 0 ? "" : GT.appSettings.gtBandFilter; - var mode = GT.appSettings.gtModeFilter == "auto" ? myMode : GT.appSettings.gtModeFilter.length == 0 ? "" : GT.appSettings.gtModeFilter; + var band = GT.appSettings.gtBandFilter == "auto" ? GT.appSettings.myBand : GT.appSettings.gtBandFilter.length == 0 ? "" : GT.appSettings.gtBandFilter; + var mode = GT.appSettings.gtModeFilter == "auto" ? GT.appSettings.myMode : GT.appSettings.gtModeFilter.length == 0 ? "" : GT.appSettings.gtModeFilter; if (mode == "Digital") { mode = "dg"; } if (mode == "Phone") { mode = "ph"; } @@ -8667,7 +8652,7 @@ function showWPXBox() { worker += "
"; @@ -10003,11 +9988,11 @@ function validatePropMode(propMode) function validateMapBandAndMode(band, mode) { - if ((GT.appSettings.gtBandFilter.length == 0 || (GT.appSettings.gtBandFilter == "auto" ? myBand == band : GT.appSettings.gtBandFilter == band))) + if ((GT.appSettings.gtBandFilter.length == 0 || (GT.appSettings.gtBandFilter == "auto" ? GT.appSettings.myBand == band : GT.appSettings.gtBandFilter == band))) { if (GT.appSettings.gtModeFilter.length == 0) return true; - if (GT.appSettings.gtModeFilter == "auto") return myMode == mode; + if (GT.appSettings.gtModeFilter == "auto") return GT.appSettings.myMode == mode; if (GT.appSettings.gtModeFilter == "Digital") { @@ -10658,9 +10643,9 @@ GT.us_bands = [ function renderBandActivity() { var buffer = ""; - if (typeof GT.bandActivity.lines[myMode] != "undefined" || GT.oamsBandActivityData != null) + if (typeof GT.bandActivity.lines[GT.appSettings.myMode] != "undefined" || GT.oamsBandActivityData != null) { - var lines = (myMode in GT.bandActivity.lines) ? GT.bandActivity.lines[myMode] : []; + var lines = (GT.appSettings.myMode in GT.bandActivity.lines) ? GT.bandActivity.lines[GT.appSettings.myMode] : []; var bands = (GT.myDXCC in GT.callsignDatabaseUSplus) ? GT.us_bands : GT.non_us_bands; var bandData = {}; var maxValue = 0; @@ -10732,7 +10717,7 @@ function renderBandActivity() } for (const band in bandData) { - let blockMyBand = (band == myBand) ? " class='myBand' " : ""; + let blockMyBand = (band == GT.appSettings.myBand) ? " class='myBand' " : ""; let title; let blueBarValue; @@ -10773,8 +10758,8 @@ function pskBandActivityCallback(buffer, flag) if (result.indexOf("frequency score") > -1) { // looks good so far - GT.bandActivity.lines[myMode] = result.split("\n"); - GT.bandActivity.lastUpdate[myMode] = GT.timeNow + 600; + GT.bandActivity.lines[GT.appSettings.myMode] = result.split("\n"); + GT.bandActivity.lastUpdate[GT.appSettings.myMode] = GT.timeNow + 600; localStorage.bandActivity = JSON.stringify(GT.bandActivity); } @@ -10793,15 +10778,15 @@ function pskBandActivityCallback(buffer, flag) function pskGetBandActivity() { if (GT.mapSettings.offlineMode == true) return; - if (typeof GT.bandActivity.lastUpdate[myMode] == "undefined") + if (typeof GT.bandActivity.lastUpdate[GT.appSettings.myMode] == "undefined") { - GT.bandActivity.lastUpdate[myMode] = 0; + GT.bandActivity.lastUpdate[GT.appSettings.myMode] = 0; } - if (myMode.length > 0 && myDEGrid.length > 0 && GT.timeNow > GT.bandActivity.lastUpdate[myMode]) + if (GT.appSettings.myMode.length > 0 && GT.appSettings.myGrid.length > 0 && GT.timeNow > GT.bandActivity.lastUpdate[GT.appSettings.myMode]) { getBuffer( - "https://pskreporter.info/cgi-bin/psk-freq.pl?mode=" + myMode + "&grid=" + myDEGrid.substr(0, 4) + "&cb=" + timeNowSec(), + "https://pskreporter.info/cgi-bin/psk-freq.pl?mode=" + GT.appSettings.myMode + "&grid=" + GT.appSettings.myGrid.substr(0, 4) + "&cb=" + timeNowSec(), pskBandActivityCallback, null, "https", @@ -11027,10 +11012,10 @@ function updateBasedOnIni() if (which != null) { - myDEcall = which.MyCall; - myDEGrid = which.MyGrid; - GT.lastBand = myBand; - GT.lastMode = myMode; + GT.appSettings.myCall = which.MyCall; + GT.appSettings.myGrid = which.MyGrid; + GT.lastBand = GT.appSettings.myBand; + GT.lastMode = GT.appSettings.myMode; GT.workingIniPath = which.IniPath; } @@ -11053,7 +11038,7 @@ function updateBasedOnIni() } } - if (myDEGrid.length > 0) + if (GT.appSettings.myGrid.length > 0) { setHomeGridsquare(); } @@ -13016,9 +13001,9 @@ function loadAdifSettings() } } } - if (clubCall.value == "" && myRawCall != "NOCALL") + if (clubCall.value == "" && GT.appSettings.myRawCall != "NOCALL") { - clubCall.value = myRawCall; + clubCall.value = GT.appSettings.myRawCall; ValidateText(clubCall); localStorage.adifLogSettings = JSON.stringify(GT.adifLogSettings); } @@ -15064,7 +15049,7 @@ function searchLogForCallsign(call) { return value.DEcall == call; }) - .sort(myBandCompare); + .sort(GT.appSettings.myBandCompare); var worker = "" @@ -15457,7 +15442,7 @@ function pskSpotCheck(timeSec) { if (GT.mapSettings.offlineMode == true) return; - if (myDEcall == null || myDEcall == "NOCALL" || myDEcall == "") return; + if (GT.appSettings.myCall == null || GT.appSettings.myCall == "NOCALL" || GT.appSettings.myCall == "") return; if ( (GT.spotView > 0 || GT.rosterSpot) && @@ -15473,7 +15458,7 @@ function pskSpotCheck(timeSec) spotRefreshDiv.innerHTML = "…refreshing…"; getBuffer( `https://retrieve.pskreporter.info/query?rronly=1&lastseqno=${GT.receptionReports.lastSequenceNumber}` + - `&senderCallsign=${encodeURIComponent(myRawCall)}` + + `&senderCallsign=${encodeURIComponent(GT.appSettings.myRawCall)}` + `&appcontact=${encodeURIComponent(`GT-${pjson.version}`)}`, pskSpotResults, null, @@ -15715,7 +15700,7 @@ function redrawSpots() GT.layerSources["psk-hop"].clear(); GT.layerSources["psk-heat"].clear(); - var fromPoint = getPoint(myRawGrid); + var fromPoint = getPoint(GT.appSettings.myRawGrid); if (GT.receptionSettings.mergeSpots == false) { @@ -16006,7 +15991,7 @@ function currentTimeStampString() " " + padNumber(now.getHours()) + "." + - padNumber(now.getMinutes())+ + padNumber(now.getMinutes()) + "." + padNumber(now.getSeconds()) ); diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index dc4a841b..7e9405e0 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -241,11 +241,11 @@ function gtChatSendStatus() msg.type = "status"; msg.uuid = GT.appSettings.chatUUID; - msg.call = myDEcall; - msg.grid = myRawGrid; - msg.freq = myRawFreq; - msg.mode = myMode; - msg.band = myBand; + msg.call = GT.appSettings.myCall; + msg.grid = GT.appSettings.myRawGrid; + msg.freq = GT.appSettings.myRawFreq; + msg.mode = GT.appSettings.myMode; + msg.band = GT.appSettings.myBand; msg.src = "GT"; msg.canmsg = GT.appSettings.gtMsgEnable; msg.o = GT.appSettings.gtSpotEnable == true ? 1 : 0; @@ -280,9 +280,9 @@ function gtChatSendDecodes(instancesObject) function oamsBandActivityCheck() { - if (GT.appSettings.oamsBandActivity == true && myDEGrid.length >= 4) + if (GT.appSettings.oamsBandActivity == true && GT.appSettings.myGrid.length >= 4) { - let grid = myDEGrid.substring(0, 4).toUpperCase(); + let grid = GT.appSettings.myGrid.substring(0, 4).toUpperCase(); if (GT.appSettings.oamsBandActivityNeighbors == true) { gtChatSendBandActivityRequest(squareToNeighbors(grid)); @@ -633,7 +633,7 @@ function gtChatSendUUID() msg.uuid = null; } - msg.call = myDEcall; + msg.call = GT.appSettings.myCall; msg.ver = gtShortVersion; sendGtJson(JSON.stringify(msg), true); diff --git a/package.nw/lib/pota.js b/package.nw/lib/pota.js index e27a9ce7..00fd619c 100644 --- a/package.nw/lib/pota.js +++ b/package.nw/lib/pota.js @@ -159,7 +159,7 @@ function makeParkFeatures() function potaSpotFromDecode(callObj) { - if (myDEcall != "" && myDEcall != "NOCALL") + if (GT.appSettings.myCall != "" && GT.appSettings.myCall != "NOCALL") { var park = callObj.pota; @@ -228,7 +228,7 @@ function reportPotaRBN(callSpot) { var report = { activator: callSpot.activator, - spotter: myDEcall + "-#", + spotter: GT.appSettings.myCall + "-#", frequency: String(parseInt(callSpot.frequency * 1000)), reference: callSpot.reference, mode: callSpot.mode, @@ -306,8 +306,8 @@ function spotFromCallObj(callObj, park, inCount, rbnTime) var callSpot = { activator: callObj.DEcall, activatorGrid: callObj.grid, - spotter: myDEcall + "-#", - spotterGrid: myDEGrid, + spotter: GT.appSettings.myCall + "-#", + spotterGrid: GT.appSettings.myGrid, frequency: Number((GT.instances[callObj.instance].status.Frequency / 1000000).toFixed(3)), reference: park, mode: callObj.mode, @@ -315,7 +315,7 @@ function spotFromCallObj(callObj, park, inCount, rbnTime) spotTime: Date.now(), source: "GT", count: inCount + 1, - comments: "GT " + callObj.RSTsent + " dB " + myDEGrid + " via " + myDEcall + "-#" + comments: "GT " + callObj.RSTsent + " dB " + GT.appSettings.myGrid + " via " + GT.appSettings.myCall + "-#" }; return callSpot; } diff --git a/package.nw/lib/roster/processRosterHunting.js b/package.nw/lib/roster/processRosterHunting.js index 42977c04..fefbca63 100644 --- a/package.nw/lib/roster/processRosterHunting.js +++ b/package.nw/lib/roster/processRosterHunting.js @@ -777,7 +777,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } // Station is calling us - if (callObj.DXcall == window.opener.myDEcall) + if (callObj.DXcall == window.opener.GT.appSettings.myCall) { callingBg = "#0000FF" + inversionAlpha; calling = "#FFFF00;text-shadow: 0px 0px 2px #FFFF00"; From 2ca4a1bb2854265fcf64471e1383450c2d6eda70 Mon Sep 17 00:00:00 2001 From: Tag Date: Fri, 17 Feb 2023 15:52:20 -0800 Subject: [PATCH 09/36] Working date now has time Also, being nice to LoTW --- package.nw/GridTracker.html | 9 ++++++--- package.nw/lib/adif.js | 17 ++++++++++++++--- package.nw/lib/datepicker.js | 8 ++++---- package.nw/lib/gt.js | 19 ++++++++++++++----- 4 files changed, 38 insertions(+), 15 deletions(-) diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index 20ccfc73..a5be1647 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -1584,7 +1584,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js index 6e6a160f..e32b6e31 100644 --- a/package.nw/lib/adif.js +++ b/package.nw/lib/adif.js @@ -1137,9 +1137,20 @@ function loadLoTWLogFile() } else { - // We have no history, so our dates are not valid any more - GT.adifLogSettings.lastFetch.lotw_qso = "1970-01-01"; - GT.adifLogSettings.lastFetch.lotw_qsl = "1970-01-01"; + if (GT.appSettings.workingDateEnable == true && GT.appSettings.workingDate > 0) + { + var workDate = new Date(0); + workDate.setSeconds(GT.appSettings.workingDate); + var finalDate = workDate.getUTCFullYear() + "-" + padNumber(workDate.getUTCMonth() + 1) + "-" + padNumber(workDate.getUTCDate()); + GT.adifLogSettings.lastFetch.lotw_qso = finalDate; + GT.adifLogSettings.lastFetch.lotw_qsl = finalDate; + } + else + { + // We have no history, so our dates are not valid any more + GT.adifLogSettings.lastFetch.lotw_qso = "1970-01-01"; + GT.adifLogSettings.lastFetch.lotw_qsl = "1970-01-01"; + } } } diff --git a/package.nw/lib/datepicker.js b/package.nw/lib/datepicker.js index 01869018..de313e6e 100644 --- a/package.nw/lib/datepicker.js +++ b/package.nw/lib/datepicker.js @@ -27,9 +27,9 @@ var picker = { // (B) Default to current month + year // ! NOTE: UTC+0 ! - var today = new Date(), + var today = new Date(0), thisMonth = today.getUTCMonth(), // Note: Jan is 0 - thisYear = today.getUTCFullYear(), + thisYear = parseInt(today.getUTCFullYear()), months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; @@ -52,14 +52,14 @@ var picker = { var yRange = 100; // Year range to show, I.E. from thisYear-yRange to thisYear+yRange select = document.createElement("select"); select.classList.add("picker-y"); - for (var y = thisYear - yRange; y < thisYear + 20; y++) + for (var y = thisYear; y < thisYear + yRange; y++) { option = document.createElement("option"); option.value = y; option.text = y; select.appendChild(option); } - select.selectedIndex = yRange; + select.selectedIndex = 0; select.addEventListener("change", function() { picker.draw(this); }); dp.appendChild(select); diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index d5507f19..4866936c 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -11425,14 +11425,20 @@ function workingDateEnableChanged(ele) function workingDateChanged() { + if (workingTimeValue.value.length == 0) + { + workingTimeValue.value = "00:00"; + } var fields = workingDateValue.value.split("-"); + var time = workingTimeValue.value.split(":"); + var date = new Date( Date.UTC( parseInt(fields[0]), parseInt(fields[1]) - 1, parseInt(fields[2]), - 0, - 0, + parseInt(time[0]), + parseInt(time[1]), 0 ) ); @@ -11441,12 +11447,15 @@ function workingDateChanged() parseInt(fields[0]), parseInt(fields[1]) - 1, parseInt(fields[2]), - 0, - 0, + parseInt(time[0]), + parseInt(time[1]), 0 ) / 1000; displayWorkingDate(); - applyCallsignsAndDateDiv.style.display = ""; + if (GT.appSettings.workingDateEnable) + { + applyCallsignsAndDateDiv.style.display = ""; + } } function displayWorkingDate() From 2e52b5be2a41269066ec4d79d7172918be95e59e Mon Sep 17 00:00:00 2001 From: Tag Date: Fri, 17 Feb 2023 17:07:23 -0800 Subject: [PATCH 10/36] Removed janky datepicker --- package.nw/GridTracker.html | 9 +- package.nw/i18n/cn-t.json | 20 --- package.nw/i18n/cn.json | 20 --- package.nw/i18n/en.json | 20 --- package.nw/lib/README-3rdparty.md | 11 -- package.nw/lib/datepicker.js | 273 ------------------------------ package.nw/lib/dp-dark.css | 74 -------- package.nw/lib/gt.js | 14 +- 8 files changed, 7 insertions(+), 434 deletions(-) delete mode 100644 package.nw/lib/datepicker.js delete mode 100644 package.nw/lib/dp-dark.css diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index a5be1647..15481db8 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -34,7 +34,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. GridTracker - @@ -48,7 +47,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - @@ -1594,11 +1592,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Rx Spot
" + - key.formatCallsign() + + formatCallsign(key) + "" + formatCallsign(GT.QSOhash[GT.tracker.confirmed.px[key]].DEcall) + "
-
No Date
@@ -1593,8 +1593,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- + + Time
+
+ Date
+
- Time
-
- Date
- -
+ Date + Time
diff --git a/package.nw/i18n/cn-t.json b/package.nw/i18n/cn-t.json index d0d56483..5ed37074 100644 --- a/package.nw/i18n/cn-t.json +++ b/package.nw/i18n/cn-t.json @@ -692,26 +692,6 @@ "callsigns.Downloading": "下載中...", "callsigns.never": "從不", "callsigns.processing": "處理中...", - "COMMENT_datepicker.js": "", - "datepicker.month.Jan": "一月", - "datepicker.month.Feb": "二月", - "datepicker.month.Mar": "三月", - "datepicker.month.Apr": "四月", - "datepicker.month.May": "五月", - "datepicker.month.Jun": "六月", - "datepicker.month.Jul": "七月", - "datepicker.month.Aug": "八月", - "datepicker.month.Sep": "九月", - "datepicker.month.Oct": "十月", - "datepicker.month.Nov": "十一月", - "datepicker.month.Dec": "十二月", - "datepicker.day.Sun": "日", - "datepicker.day.Mon": "一", - "datepicker.day.Tue": "二", - "datepicker.day.Wed": "三", - "datepicker.day.Thu": "四", - "datepicker.day.Fri": "五", - "datepicker.day.Sat": "六", "COMMENT_gt.js": "", "gt.gridView.live": "實時", "gt.gridView.logbook": "日誌", diff --git a/package.nw/i18n/cn.json b/package.nw/i18n/cn.json index 496a574f..1c9d9575 100644 --- a/package.nw/i18n/cn.json +++ b/package.nw/i18n/cn.json @@ -692,26 +692,6 @@ "callsigns.Downloading": "下载中...", "callsigns.never": "Never", "callsigns.processing": "处理中...", - "COMMENT_datepicker.js": "", - "datepicker.month.Jan": "一月", - "datepicker.month.Feb": "二月", - "datepicker.month.Mar": "三月", - "datepicker.month.Apr": "四月", - "datepicker.month.May": "五月", - "datepicker.month.Jun": "六月", - "datepicker.month.Jul": "七月", - "datepicker.month.Aug": "八月", - "datepicker.month.Sep": "九月", - "datepicker.month.Oct": "十月", - "datepicker.month.Nov": "十一月", - "datepicker.month.Dec": "十二月", - "datepicker.day.Sun": "星期日", - "datepicker.day.Mon": "星期一", - "datepicker.day.Tue": "星期二", - "datepicker.day.Wed": "星期三", - "datepicker.day.Thu": "星期四", - "datepicker.day.Fri": "星期五", - "datepicker.day.Sat": "星期六", "COMMENT_gt.js": "", "gt.gridView.live": "实时数据", "gt.gridView.logbook": "日志数据", diff --git a/package.nw/i18n/en.json b/package.nw/i18n/en.json index f1f1659d..40a21517 100644 --- a/package.nw/i18n/en.json +++ b/package.nw/i18n/en.json @@ -692,26 +692,6 @@ "callsigns.Downloading": "Downloading...", "callsigns.never": "Never", "callsigns.processing": "Processing...", - "COMMENT_datepicker.js": "", - "datepicker.month.Jan": "Jan", - "datepicker.month.Feb": "Feb", - "datepicker.month.Mar": "Mar", - "datepicker.month.Apr": "Apr", - "datepicker.month.May": "May", - "datepicker.month.Jun": "Jun", - "datepicker.month.Jul": "Jul", - "datepicker.month.Aug": "Aug", - "datepicker.month.Sep": "Sep", - "datepicker.month.Oct": "Oct", - "datepicker.month.Nov": "Nov", - "datepicker.month.Dec": "Dec", - "datepicker.day.Sun": "Sun", - "datepicker.day.Mon": "Mon", - "datepicker.day.Tue": "Tue", - "datepicker.day.Wed": "Wed", - "datepicker.day.Thu": "Thur", - "datepicker.day.Fri": "Fri", - "datepicker.day.Sat": "Sat", "COMMENT_gt.js": "", "gt.gridView.live": "Live", "gt.gridView.logbook": "Logbook", diff --git a/package.nw/lib/README-3rdparty.md b/package.nw/lib/README-3rdparty.md index c78e5712..9423ab3c 100644 --- a/package.nw/lib/README-3rdparty.md +++ b/package.nw/lib/README-3rdparty.md @@ -18,17 +18,6 @@ Not entirely part of openlayers, but conglomerated together from other stuff: - lib/shadow.js -## DatePicker - calendar display - -- https://code-boxx.com/simple-datepicker-pure-javascript-css/ -- https://code-boxx.com/wp-content/uploads/2020/06/datepicker-js.zip - -- lib/datepicker.js -- lib/dp-dark.css - -Code has been hacked a bit, origin not reflected in version control so be -careful when upgrading. - ## Other Third Party routines lib/third-party.js diff --git a/package.nw/lib/datepicker.js b/package.nw/lib/datepicker.js deleted file mode 100644 index de313e6e..00000000 --- a/package.nw/lib/datepicker.js +++ /dev/null @@ -1,273 +0,0 @@ -// FIXME ****************************************************************************** // -// The datepicker's "Time" section doesn't work. This really needs to be fixed before -// the next big RTTY Roundup or Field Day where there may be a lot of hams that want -// to use this feature to only reference their log starting when the contest starts. -// Which isn't always 00:00 UTC. -// ************************************************************************************ // -var picker = { - attach: function (opt) - { - // attach() : attach datepicker to target - // opt : options (object) - // target : datepicker will populate this field - // container : datepicker will be generated in this container - // startmon : start on Monday (default false) - // disableday : array of days to disable, e.g. [2,7] to disable Tue and Sun - - // (A) Create new datepicker - var dp = document.createElement("div"); - dp.dataset.target = opt.target; - dp.dataset.fire = opt.fire; - dp.dataset.startmon = opt.startmon ? "1" : "0"; - dp.classList.add("picker"); - if (opt.disableday) - { - dp.dataset.disableday = JSON.stringify(opt.disableday); - } - - // (B) Default to current month + year - // ! NOTE: UTC+0 ! - var today = new Date(0), - thisMonth = today.getUTCMonth(), // Note: Jan is 0 - thisYear = parseInt(today.getUTCFullYear()), - months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - - // (C) Month select - var select = document.createElement("select"), - option = null; - select.classList.add("picker-m"); - for (var mth in months) - { - option = document.createElement("option"); - option.value = parseInt(mth) + 1; - option.text = months[mth]; - select.appendChild(option); - } - select.selectedIndex = thisMonth; - select.addEventListener("change", function() { picker.draw(this); }); - dp.appendChild(select); - - // (D) Year select - var yRange = 100; // Year range to show, I.E. from thisYear-yRange to thisYear+yRange - select = document.createElement("select"); - select.classList.add("picker-y"); - for (var y = thisYear; y < thisYear + yRange; y++) - { - option = document.createElement("option"); - option.value = y; - option.text = y; - select.appendChild(option); - } - select.selectedIndex = 0; - select.addEventListener("change", function() { picker.draw(this); }); - dp.appendChild(select); - - // (E) Day select - var days = document.createElement("div"); - days.classList.add("picker-d"); - dp.appendChild(days); - - // (F) Attach date picker to target container + draw the dates - picker.draw(select); - - // (F1) Popup datepicker - if (opt.container == 1) - { - // Mark this as a "popup" - var uniqueID = 0; - while (document.getElementById("picker-" + uniqueID) != null) - { - uniqueID = Math.floor(Math.random() * (100 - 2)) + 1; - } - dp.dataset.popup = "1"; - dp.dataset.dpid = uniqueID; - - // Create wrapper - var wrapper = document.createElement("div"); - wrapper.id = "picker-" + uniqueID; - wrapper.classList.add("picker-wrap"); - wrapper.appendChild(dp); - - // Attach onclick to show/hide datepicker - var target = document.getElementById(opt.target); - target.dataset.dp = uniqueID; - target.onfocus = function () - { - document.getElementById("picker-" + this.dataset.dp).classList.add("show"); - }; - wrapper.addEventListener("click", function (evt) - { - if (evt.target.classList.contains("picker-wrap")) - { - this.classList.remove("show"); - } - }); - - // Attach popup datepicker to document - document.documentElement.appendChild(wrapper); - } - - // (F2) Inline datepicker - else - { - document.getElementById(opt.container).appendChild(dp); - } - }, - - draw: function (el) - { - // draw() : draw the days in month - // el : HTML reference to either year or month selector - - // (A) Get date picker components - var parent = el.parentElement, - year = parent.getElementsByClassName("picker-y")[0].value, - month = parent.getElementsByClassName("picker-m")[0].value, - days = parent.getElementsByClassName("picker-d")[0]; - - // (B) Date range calculation - // ! NOTE: UTC+0 ! - var daysInMonth = new Date(Date.UTC(year, month, 0)).getUTCDate(), - startDay = new Date(Date.UTC(year, month - 1, 1)).getUTCDay(), // Note: Sun = 0 - endDay = new Date(Date.UTC(year, month - 1, daysInMonth)).getUTCDay(), - startDay = startDay == 0 ? 7 : startDay, - endDay = endDay == 0 ? 7 : endDay; - - // (C) Generate date squares (in array first) - var squares = [], - disableday = null; - if (parent.dataset.disableday) - { - disableday = JSON.parse(parent.dataset.disableday); - } - - // (C1) Empty squares before first day of month - if (parent.dataset.startmon == "1" && startDay != 1) - { - for (var i = 1; i < startDay; i++) { squares.push("B"); } - } - if (parent.dataset.startmon == "0" && startDay != 7) - { - for (var i = 0; i < startDay; i++) { squares.push("B"); } - } - - // (C2) Days of month - // All days enabled, just add - if (disableday == null) - { - for (var i = 1; i <= daysInMonth; i++) { squares.push([i, false]); } - } - // Some days disabled - else - { - var thisday = startDay; - for (var i = 1; i <= daysInMonth; i++) - { - // Check if day is disabled - var disabled = disableday.includes(thisday); - // Day of month, disabled - squares.push([i, disabled]); - // Next day - thisday++; - if (thisday == 8) { thisday = 1; } - } - } - - // (C2) Empty squares after last day of month - if (parent.dataset.startmon == "1" && endDay != 7) - { - for (var i = endDay; i < 7; i++) { squares.push("B"); } - } - if (parent.dataset.startmon == "0" && endDay != 6) - { - for (var i = endDay; i < (endDay == 7 ? 13 : 6); i++) { squares.push("B"); } - } - - // (D) Draw HTML - var daynames = ["Mon", "Tue", "Wed", "Thur", "Fri", "Sat"]; - if (parent.dataset.startmon == "1") { daynames.push("Sun"); } - else { daynames.unshift("Sun"); } - - // (D1) Header - var table = document.createElement("table"), - row = table.insertRow() - cell = null; - row.classList.add("picker-d-h"); - for (let d of daynames) - { - cell = row.insertCell(); - cell.innerHTML = d; - } - - // (D2) Date cells - var total = squares.length; - row = table.insertRow(); - for (var i = 0; i < total; i++) - { - if (i != total && i % 7 == 0) { row = table.insertRow(); } - cell = row.insertCell(); - if (squares[i] == "B") - { - cell.classList.add("picker-d-b"); - } - else - { - cell.innerHTML = squares[i][0]; - // Not allowed to choose this day - if (squares[i][1]) - { - cell.classList.add("picker-d-dd"); - } - // Allowed to choose this day - else - { - cell.classList.add("picker-d-d"); - cell.addEventListener("click", function() { picker.pick(this); }); - } - } - } - - // (D3) Attach new calendar to datepicker - days.innerHTML = ""; - days.appendChild(table); - }, - - pick: function (el) - { - // pick() : choose a date - // el : HTML reference to selected date cell - - // (A) Get all components - var parent = el.parentElement; - while (!parent.classList.contains("picker")) - { - parent = parent.parentElement; - } - - // (B) Get full selected year month day - var year = parent.getElementsByClassName("picker-y")[0].value, - month = parent.getElementsByClassName("picker-m")[0].value, - day = el.innerHTML; - - // YYYY-MM-DD Format - // ! CHANGE FORMAT HERE IF YOU WANT ! - if (parseInt(month) < 10) { month = "0" + month; } - if (parseInt(day) < 10) { day = "0" + day; } - var fullDate = year + "-" + month + "-" + day; - - // (C) Update selected date - document.getElementById(parent.dataset.target).value = fullDate; - - if (parent.dataset.fire.length > 0) - { - window[parent.dataset.fire](); - } - - // (D) Popup only - close the popup - if (parent.dataset.popup == "1") - { - document.getElementById("picker-" + parent.dataset.dpid).classList.remove("show"); - } - } -}; diff --git a/package.nw/lib/dp-dark.css b/package.nw/lib/dp-dark.css deleted file mode 100644 index 9fe3c6b1..00000000 --- a/package.nw/lib/dp-dark.css +++ /dev/null @@ -1,74 +0,0 @@ -/* [POPUP] */ -.picker-wrap { - position: fixed; - top: 0; - left: 0; - width: 100vw; - height: 100vh; - background: rgba(0, 0, 0, 0.5); - opacity: 0; - visibility: hidden; - transition: opacity 0.2s; -} -.picker-wrap.show { - opacity: 1; - visibility: visible; -} -.picker-wrap .picker { - margin: 50vh auto 0 auto; - transform: translateY(-50%); -} - -/* [CONTAINER] */ -.picker { - max-width: 200px; - border: 1px solid #444; - -webkit-border-radius: 6px; - background: #444; - border-style: outset; - padding: 5px; -} - -.picker:hover { - border: 1px solid #888; -} - -/* [MONTH + YEAR] */ -.picker-m, -.picker-y { - width: 25%; - padding: 5px; - box-sizing: border-box; - /*font-size: 16px;*/ -} - -/* [DAY] */ -.picker-d table { - color: #fff; - border-collapse: separate; - width: 100%; - margin-top: 5px; -} -.picker-d table td { - width: 2em; /* 7 equal columns */ - padding: 2px; - text-align: center; -} -/* Header cells */ -.picker-d-h td { - font-weight: bold; -} -/* Blank dates */ -.picker-d-b { - background: #4e4e4e; -} -/* Pickable Dates */ -.picker-d-d:hover { - cursor: pointer; - background: #a33c3c; -} -/* Unpickable Dates */ -.picker-d-dd { - color: #888; - background: #4e4e4e; -} diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 4866936c..88d3cbc2 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -11429,6 +11429,11 @@ function workingDateChanged() { workingTimeValue.value = "00:00"; } + if (workingTimeValue.value.length == 0) + { + workingTimeValue.value = "1970-01-01"; + } + var fields = workingDateValue.value.split("-"); var time = workingTimeValue.value.split(":"); @@ -16049,15 +16054,6 @@ function makeScreenshots() ); } -window.addEventListener("load", function () -{ - picker.attach({ - target: "workingDateValue", - container: "pick-inline", - fire: "workingDateChanged" - }); -}); - function refreshSpotsNoTx() { redrawSpots(); From 8386288f3dd638dd0684e68da447cff455563536 Mon Sep 17 00:00:00 2001 From: Tag Date: Fri, 17 Feb 2023 17:10:41 -0800 Subject: [PATCH 11/36] Check for invalid date --- package.nw/lib/gt.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 88d3cbc2..b8f5de36 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -11429,9 +11429,9 @@ function workingDateChanged() { workingTimeValue.value = "00:00"; } - if (workingTimeValue.value.length == 0) + if (workingDateValue.value.length == 0) { - workingTimeValue.value = "1970-01-01"; + workingDateValue.value = "1970-01-01"; } var fields = workingDateValue.value.split("-"); From 8714cc10ffa04bd4425f5c383cd6190e7b923c5c Mon Sep 17 00:00:00 2001 From: Tag Date: Fri, 17 Feb 2023 17:23:13 -0800 Subject: [PATCH 12/36] Updated copytight --- debian/copyright | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/debian/copyright b/debian/copyright index f336e20d..58a419fd 100644 --- a/debian/copyright +++ b/debian/copyright @@ -86,26 +86,3 @@ License: BSD-2-clause LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Files: package.nw/lib/datepicker package.nw/lib/dp-dark.css -Source: https://code-boxx.com/simple-datepicker-pure-javascript-css/, - https://code-boxx.com/wp-content/uploads/2020/06/datepicker-js.zip -Copyright: Copyright (c) Code Boxx -License: MIT-b - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - . - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. From 53585f31ef8316d15599694789d4ecb1b7249aee Mon Sep 17 00:00:00 2001 From: Tag Date: Fri, 17 Feb 2023 18:12:13 -0800 Subject: [PATCH 13/36] Corrected GridTracker URL --- arch-linux/PKGBUILD.template | 2 +- package.nw/GridTracker.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch-linux/PKGBUILD.template b/arch-linux/PKGBUILD.template index d83f6146..34d7eba7 100644 --- a/arch-linux/PKGBUILD.template +++ b/arch-linux/PKGBUILD.template @@ -6,7 +6,7 @@ pkgver=REPLACE_WITH_VERSION pkgrel=1 pkgdesc="Companion program for WSJT-X for mapping contacts" arch=('x86_64') -url="https://gridtracker.org/grid-tracker/" +url="https://gridtracker.org/" license=('BSD') depends=('nwjs-bin>=0.54.0') replaces=('gridtracker-bin') diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index 15481db8..8b3f36fb 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -3062,7 +3062,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Current Solar Conditions and More!
Learn more at GridTracker.org! + onclick="require('nw.gui').Shell.openExternal('https://gridtracker.org/');">GridTracker.org!

Copyright © 2023 GridTracker.org


From 545c44177e5a7f9b0e043f92a9006aefd5a54d0c Mon Sep 17 00:00:00 2001 From: Tag Date: Fri, 17 Feb 2023 18:22:43 -0800 Subject: [PATCH 14/36] GT flag fix --- package.nw/lib/gt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index b8f5de36..06f2df6b 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -5165,7 +5165,7 @@ function createGeoJsonLayer(name, url, color, stroke) } GT.gtFlagIcon = new ol.style.Icon({ - src: "./img/flaGT.gt_user.png", + src: "./img/flag_gt_user.png", anchorYUnits: "pixels", anchorXUnits: "pixels", anchor: [12, 17] From 21ee54be69e5367c3f8b9561d463d040b0b7b54b Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 19 Feb 2023 14:50:52 -0800 Subject: [PATCH 15/36] Visual alerts in own window --- package.nw/GridTracker.html | 20 ---------- package.nw/gt_alert.html | 78 +++++++++++++++++++++++++++++++++++++ package.nw/lib/alerts.js | 28 ++++--------- package.nw/lib/gt.js | 71 ++++++++++++++++++++++++++++++--- 4 files changed, 151 insertions(+), 46 deletions(-) create mode 100644 package.nw/gt_alert.html diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index 8b3f36fb..b95c3796 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -3078,26 +3078,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -
-
New Alerts!!!
-
-
DISMISS
-
+ + + Alerts + + + + + + + + +
+
+
+
+
+ + diff --git a/package.nw/lib/alerts.js b/package.nw/lib/alerts.js index c830e364..b76d1d10 100644 --- a/package.nw/lib/alerts.js +++ b/package.nw/lib/alerts.js @@ -729,13 +729,12 @@ function speakAlertString(what, message, target) } } -GT.alertFlasher = null; - -function unflashAlertPopUp() +function displayAlertPopUp(what, message, target) { + if (GT.alertWindowInitialized == false) return; + var worker = ""; var acount = 0; - alertsPopDiv.style.backgroundColor = "#000"; if (Object.keys(GT.alerts).length > 0) { @@ -745,9 +744,7 @@ function unflashAlertPopUp() } worker += - "
"; + "
"; worker += ""; @@ -804,25 +801,16 @@ function unflashAlertPopUp() worker += "
"; worker += "
"; } - alertPopListDiv.style.height = "auto"; - alertPopListDiv.innerHTML = worker; - GT.alertFlasher = null; -} -function displayAlertPopUp(what, message, target) -{ - if (GT.alertFlasher) nodeTimers.clearTimeout(GT.alertFlasher); + GT.alertWindowHandle.window.alertPopListDiv.innerHTML = worker; - alertPopListDiv.innerHTML = - "

Gathering Alerts

"; - alertsPopDiv.style.backgroundColor = "#FFF"; - alertsPopDiv.style.display = "inline-block"; - GT.alertFlasher = nodeTimers.setTimeout(unflashAlertPopUp, 100); + GT.alertWindowHandle.width = parseInt(GT.alertWindowHandle.window.alertsPopDiv.offsetWidth) + 20; + GT.alertWindowHandle.height = parseInt(GT.alertWindowHandle.window.alertsPopDiv.offsetHeight) + 44; + openAlertWindow(true); } function ackAlerts() { - alertsPopDiv.style.display = "none"; for (var key in GT.alerts) { GT.alerts[key].needAck = 0; diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 06f2df6b..9e7b820f 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -58,6 +58,8 @@ GT.lookupWindowHandle = null; GT.lookupWindowInitialized = false; GT.baWindowHandle = null; GT.baWindowInitialized = false; +GT.alertWindowHandle = null; +GT.alertWindowInitialized = false; GT.myDXGrid = ""; GT.appSettings = {}; GT.mapSettings = {}; @@ -273,6 +275,7 @@ function saveAndCloseApp() GT.callRosterWindowHandle.window.saveScreenSettings(); GT.statsWindowHandle.window.saveScreenSettings(); GT.baWindowHandle.window.saveScreenSettings(); + GT.alertWindowHandle.window.saveScreenSettings(); GT.lookupWindowHandle.window.saveScreenSettings(); GT.chatWindowHandle.window.saveScreenSettings(); } @@ -327,6 +330,9 @@ function saveAndCloseApp() GT.statsWindowHandle.window.close(true); GT.lookupWindowHandle.window.close(true); GT.baWindowHandle.window.close(true); + GT.alertWindowHandle.window.isShowing = false; + GT.alertWindowHandle.window.saveScreenSettings(); + GT.alertWindowHandle.window.close(true); GT.callRosterWindowHandle.window.close(true); } catch (e) @@ -2844,17 +2850,12 @@ function onMyKeyDown(event) if (event.keyCode == 27) { - alertsPopDiv.style.display = "none"; rootSettingsDiv.style.display = "none"; - helpDiv.style.display = "none"; GT.helpShow = false; } - if ( - alertsPopDiv.style.display == "none" && - rootSettingsDiv.style.display == "none" - ) + if (rootSettingsDiv.style.display == "none") { if (event.code in GT.hotKeys) { @@ -8763,6 +8764,63 @@ function openBaWindow(show = true) } } +function openAlertWindow(show = true) +{ + if (GT.alertWindowHandle == null) + { + popupNewWindows(); + var gui = require("nw.gui"); + gui.Window.open( + "gt_alert.html", + { + show: false, + id: "GT-alert", + always_on_top: true + }, + function (new_win) + { + GT.alertWindowHandle = new_win; + new_win.on("loaded", function () + { + GT.alertWindowHandle.window.isShowing = false; + GT.alertWindowHandle.window.saveScreenSettings(); + GT.alertWindowHandle.hide(); + }); + new_win.on("close", function () + { + ackAlerts(); + GT.alertWindowHandle.window.isShowing = false; + GT.alertWindowHandle.window.saveScreenSettings(); + GT.alertWindowHandle.hide(); + }); + } + ); + lockNewWindows(); + } + else + { + try + { + if (show == true) + { + GT.alertWindowHandle.show(); + GT.alertWindowHandle.window.isShowing = true; + GT.alertWindowHandle.window.saveScreenSettings(); + } + else + { + GT.alertWindowHandle.window.isShowing = false; + GT.alertWindowHandle.window.saveScreenSettings(); + GT.alertWindowHandle.hide(); + } + } + catch (e) + { + console.error(e); + } + } +} + function openLookupWindow(show = false) { if (GT.lookupWindowHandle == null) @@ -13149,6 +13207,7 @@ function postInit() openLookupWindow(false); openBaWindow(false); + openAlertWindow(false); openCallRosterWindow(false); openConditionsWindow(false); showMessaging(false); From 8a735d7065336bcb1ed92af67182928ff957b191 Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 19 Feb 2023 15:22:18 -0800 Subject: [PATCH 16/36] Don't allow resize --- package.nw/lib/alerts.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package.nw/lib/alerts.js b/package.nw/lib/alerts.js index b76d1d10..04bb4b68 100644 --- a/package.nw/lib/alerts.js +++ b/package.nw/lib/alerts.js @@ -802,10 +802,15 @@ function displayAlertPopUp(what, message, target) worker += "

"; } - GT.alertWindowHandle.window.alertPopListDiv.innerHTML = worker; + GT.alertWindowHandle.window.nw.Window.get().setResizable(true); + GT.alertWindowHandle.window.alertPopListDiv.innerHTML = worker; + GT.alertWindowHandle.width = parseInt(GT.alertWindowHandle.window.alertsPopDiv.offsetWidth) + 20; GT.alertWindowHandle.height = parseInt(GT.alertWindowHandle.window.alertsPopDiv.offsetHeight) + 44; + + GT.alertWindowHandle.window.nw.Window.get().setResizable(false); + openAlertWindow(true); } From e449682fb4b3b37f772dc022c6d3255d30014776 Mon Sep 17 00:00:00 2001 From: Tag Date: Mon, 20 Feb 2023 17:16:54 -0800 Subject: [PATCH 17/36] Uses LoTW, eQSL and OQRS are ored together if checked not mutually exclusive --- .../lib/roster/processRosterFiltering.js | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index 4fa43550..d2c6dd1b 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -182,42 +182,50 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } + let usesOneOf = 0; + let checkUses = 0; + if (window.opener.GT.callsignLookups.lotwUseEnable == true && CR.rosterSettings.usesLoTW == true) { - if (!(call in window.opener.GT.lotwCallsigns)) + checkUses++; + if (call in window.opener.GT.lotwCallsigns) { - entry.tx = false; - continue; - } - if (CR.rosterSettings.maxLoTW < 27) - { - let months = (CR.day - window.opener.GT.lotwCallsigns[call]) / 30; - if (months > CR.rosterSettings.maxLoTW) + usesOneOf++; + if (CR.rosterSettings.maxLoTW < 27) { - entry.tx = false; - continue; + let months = (CR.day - window.opener.GT.lotwCallsigns[call]) / 30; + if (months > CR.rosterSettings.maxLoTW) + { + usesOneOf--; + } } } } if (window.opener.GT.callsignLookups.eqslUseEnable == true && CR.rosterSettings.useseQSL == true) { - if (!(call in window.opener.GT.eqslCallsigns)) + checkUses++; + if (call in window.opener.GT.eqslCallsigns) { - entry.tx = false; - continue; + usesOneOf++; } } if (window.opener.GT.callsignLookups.oqrsUseEnable == true && CR.rosterSettings.usesOQRS == true) { - if (!(call in window.opener.GT.oqrsCallsigns)) + checkUses++; + if (call in window.opener.GT.oqrsCallsigns) { - entry.tx = false; - continue; + usesOneOf++; } } + if (checkUses > 0 && usesOneOf == 0) + { + entry.tx = false; + continue; + } + if (rosterSettings.callMode != "all") { if (entry.DXcall == "CQ DX" && callObj.dxcc == window.opener.GT.myDXCC) From 4bf7b3d4e4873b298d3b325bff60b1ec882305d7 Mon Sep 17 00:00:00 2001 From: Tag Date: Mon, 20 Feb 2023 20:20:13 -0800 Subject: [PATCH 18/36] OpenLayers 6.15.1 --- package.nw/lib/gt.js | 6 +- package.nw/lib/ol.css | 278 +----------------------------------------- package.nw/lib/ol.js | 7 +- 3 files changed, 8 insertions(+), 283 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 9e7b820f..8c43b82a 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -5394,7 +5394,7 @@ function initMap() var finalGridFeature = null; for (var index in features) { - if (features[index].geometryName_ == "tz") + if (features[index].K == "tz") { features[index].size = 73; } @@ -5503,7 +5503,7 @@ function initMap() if (shouldReturn) return true; - if (event.pointerEvent.buttons == 1 && event.pointerEvent.ctrlKey == true) + if (event.activePointers[0].buttons == 1 && event.activePointers[0].ctrlKey == true) { var LL = ol.proj.toLonLat(event.coordinate); var info = {}; @@ -5513,7 +5513,7 @@ function initMap() aimRotator(info); } - if (event.pointerEvent.buttons == 2 && GT.currentOverlay == 0) + if (event.activePointers[0].buttons == 2 && GT.currentOverlay == 0) { mouseDownGrid(ol.proj.toLonLat(event.coordinate), event); return true; diff --git a/package.nw/lib/ol.css b/package.nw/lib/ol.css index 2455ac6e..88c70180 100644 --- a/package.nw/lib/ol.css +++ b/package.nw/lib/ol.css @@ -1,276 +1,2 @@ -.ol-box { - box-sizing: border-box; - border-radius: 2px; - border: 2px solid #00f; -} -.ol-mouse-position { - top: 8px; - right: 8px; - position: absolute; -} -.ol-scale-line { - background: rgba(0, 60, 136, 0.3); - border-radius: 4px; - bottom: 8px; - left: 8px; - padding: 2px; - position: absolute; -} -.ol-scale-line-inner { - border: 1px solid #eee; - border-top: none; - color: #eee; - font-size: 10px; - text-align: center; - margin: 1px; - will-change: contents, width; - transition: all 0.25s; -} -.ol-scale-bar { - position: absolute; - bottom: 8px; - left: 8px; -} -.ol-scale-step-marker { - width: 1px; - height: 15px; - background-color: #000; - float: right; - z-index: 10; -} -.ol-scale-step-text { - position: absolute; - bottom: -5px; - font-size: 12px; - z-index: 11; - color: #000; - text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; -} -.ol-scale-text { - position: absolute; - font-size: 14px; - text-align: center; - bottom: 25px; - color: #000; - text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; -} -.ol-scale-singlebar { - position: relative; - height: 10px; - z-index: 9; - border: 1px solid #000; -} -.ol-unsupported { - display: none; -} -.ol-unselectable, -.ol-viewport { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; -} -.ol-overlaycontainer, -.ol-overlaycontainer-stopevent { - pointer-events: none; -} -.ol-overlaycontainer-stopevent > *, -.ol-overlaycontainer > * { - pointer-events: auto; -} -.ol-selectable { - -webkit-touch-callout: default; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.ol-grabbing { - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - cursor: grabbing; -} -.ol-grab { - cursor: move; - cursor: -webkit-grab; - cursor: -moz-grab; - cursor: grab; -} -.ol-control { - position: absolute; - background-color: rgba(255, 255, 255, 0.4); - border-radius: 4px; - padding: 2px; -} -.ol-control:hover { - background-color: rgba(255, 255, 255, 0.6); -} -.ol-zoom { - top: 0.5em; - left: 0.5em; -} -.ol-rotate { - top: 0.5em; - right: 0.5em; - transition: opacity 0.25s linear, visibility 0s linear; -} -.ol-rotate.ol-hidden { - opacity: 0; - visibility: hidden; - transition: opacity 0.25s linear, visibility 0s linear 0.25s; -} -.ol-zoom-extent { - top: 4.643em; - left: 0.5em; -} -.ol-full-screen { - right: 0.5em; - top: 0.5em; -} -.ol-control button { - display: block; - margin: 1px; - padding: 0; - color: #fff; - font-size: 1.14em; - font-weight: 700; - text-decoration: none; - text-align: center; - height: 1.375em; - width: 1.375em; - line-height: 0.4em; - background-color: rgba(0, 60, 136, 0.5); - border: none; - border-radius: 2px; -} -.ol-control button::-moz-focus-inner { - border: none; - padding: 0; -} -.ol-control button span { - pointer-events: none; -} -.ol-zoom-extent button { - line-height: 1.4em; -} -.ol-compass { - display: block; - font-weight: 400; - font-size: 1.2em; - will-change: transform; -} -.ol-touch .ol-control button { - font-size: 1.5em; -} -.ol-touch .ol-zoom-extent { - top: 5.5em; -} -.ol-control button:focus, -.ol-control button:hover { - text-decoration: none; - background-color: rgba(0, 60, 136, 0.7); -} -.ol-zoom .ol-zoom-in { - border-radius: 2px 2px 0 0; -} -.ol-zoom .ol-zoom-out { - border-radius: 0 0 2px 2px; -} -.ol-attribution { - text-align: right; - bottom: 0.5em; - right: 0.5em; - max-width: calc(100% - 1.3em); -} -.ol-attribution ul { - margin: 0; - padding: 0 0.5em; - color: #000; - text-shadow: 0 0 2px #fff; -} -.ol-attribution li { - display: inline; - list-style: none; -} -.ol-attribution li:not(:last-child):after { - content: " "; -} -.ol-attribution img { - max-height: 2em; - max-width: inherit; - vertical-align: middle; -} -.ol-attribution button, -.ol-attribution ul { - display: inline-block; -} -.ol-attribution.ol-collapsed ul { - display: none; -} -.ol-attribution:not(.ol-collapsed) { - background: rgba(255, 255, 255, 0.8); -} -.ol-attribution.ol-uncollapsible { - bottom: 0; - right: 0; - border-radius: 4px 0 0; -} -.ol-attribution.ol-uncollapsible img { - margin-top: -0.2em; - max-height: 1.6em; -} -.ol-attribution.ol-uncollapsible button { - display: none; -} -.ol-zoomslider { - top: 4.5em; - left: 0.5em; - height: 200px; -} -.ol-zoomslider button { - position: relative; - height: 10px; -} -.ol-touch .ol-zoomslider { - top: 5.5em; -} -.ol-overviewmap { - left: 0.5em; - bottom: 0.5em; -} -.ol-overviewmap.ol-uncollapsible { - bottom: 0; - left: 0; - border-radius: 0 4px 0 0; -} -.ol-overviewmap .ol-overviewmap-map, -.ol-overviewmap button { - display: inline-block; -} -.ol-overviewmap .ol-overviewmap-map { - border: 1px solid #7b98bc; - height: 150px; - margin: 2px; - width: 150px; -} -.ol-overviewmap:not(.ol-collapsed) button { - bottom: 1px; - left: 2px; - position: absolute; -} -.ol-overviewmap.ol-collapsed .ol-overviewmap-map, -.ol-overviewmap.ol-uncollapsible button { - display: none; -} -.ol-overviewmap:not(.ol-collapsed) { - background: rgba(255, 255, 255, 0.8); -} -.ol-overviewmap-box { - border: 2px dotted rgba(0, 60, 136, 0.7); -} -.ol-overviewmap .ol-overviewmap-box:hover { - cursor: move; -} -/*# sourceMappingURL=ol.css.map */ +.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid #b3c5db;background-color:rgba(255,255,255,.4)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-singlebar-even{background-color:#000}.ol-scale-singlebar-odd{background-color:#fff}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:12px;z-index:11;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-text{position:absolute;font-size:14px;text-align:center;bottom:25px;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid #000}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:rgba(0,60,136,.7);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:#000;text-shadow:0 0 2px #fff;font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:2px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move} +/*# sourceMappingURL=ol.css.map */ \ No newline at end of file diff --git a/package.nw/lib/ol.js b/package.nw/lib/ol.js index 4d86cfa4..b8bd07df 100644 --- a/package.nw/lib/ol.js +++ b/package.nw/lib/ol.js @@ -1,4 +1,3 @@ -/* eslint-disable */ - -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ol=e():t.ol=e()}(window,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=7)}([function(t,e,r){t.exports=function(){"use strict";function t(t,n,i,o,a){!function t(r,n,i,o,a){for(;o>i;){if(o-i>600){var s=o-i+1,u=n-i+1,l=Math.log(s),h=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*h*(s-h)/s)*(u-s/2<0?-1:1),p=Math.max(i,Math.floor(n-u*h/s+c)),f=Math.min(o,Math.floor(n+(s-u)*h/s+c));t(r,n,p,f,a)}var d=r[n],_=i,g=o;for(e(r,i,n),a(r[o],d)>0&&e(r,i,o);_0;)g--}0===a(r[i],d)?e(r,i,g):(g++,e(r,g,o)),g<=n&&(i=g+1),n<=g&&(o=g-1)}}(t,n,i||0,o||t.length-1,a||r)}function e(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function r(t,e){return te?1:0}var n=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function i(t,e,r){if(!r)return e.indexOf(t);for(var n=0;n=t.minX&&e.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function _(e,r,n,i,o){for(var a=[r,n];a.length;)if(!((n=a.pop())-(r=a.pop())<=i)){var s=r+Math.ceil((n-r)/i/2)*i;t(e,s,r,n,o),a.push(r,s,s,n)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(t){var e=this.data,r=[];if(!f(t,e))return r;for(var n=this.toBBox,i=[];e;){for(var o=0;o=0&&i[e].children.length>this._maxEntries;)this._split(i,e),e--;this._adjustParentBBoxes(n,i,e)},n.prototype._split=function(t,e){var r=t[e],n=r.children.length,i=this._minEntries;this._chooseSplitAxis(r,i,n);var a=this._chooseSplitIndex(r,i,n),s=d(r.children.splice(a,r.children.length-a));s.height=r.height,s.leaf=r.leaf,o(r,this.toBBox),o(s,this.toBBox),e?t[e-1].children.push(s):this._splitRoot(r,s)},n.prototype._splitRoot=function(t,e){this.data=d([t,e]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(t,e,r){for(var n,i,o,s,u,l,c,p=1/0,f=1/0,d=e;d<=r-e;d++){var _=a(t,0,d,this.toBBox),g=a(t,d,r,this.toBBox),y=(i=_,o=g,s=void 0,u=void 0,l=void 0,c=void 0,s=Math.max(i.minX,o.minX),u=Math.max(i.minY,o.minY),l=Math.min(i.maxX,o.maxX),c=Math.min(i.maxY,o.maxY),Math.max(0,l-s)*Math.max(0,c-u)),v=h(_)+h(g);y=e;f--){var d=t.children[f];s(u,t.leaf?i(d):d),l+=c(u)}return l},n.prototype._adjustParentBBoxes=function(t,e,r){for(var n=r;n>=0;n--)s(e[n],t)},n.prototype._condense=function(t){for(var e=t.length-1,r=void 0;e>=0;e--)0===t[e].children.length?e>0?(r=t[e-1].children).splice(r.indexOf(t[e]),1):this.clear():o(t[e],this.toBBox)},n}()},function(t,e){var r=null,n=null;function i(t,e,r){t.addEventListener(e,(function(t){var i=new MouseEvent(r,t);i.pointerId=1,i.isPrimary=!0,i.pointerType="mouse",i.width=1,i.height=1,i.tiltX=0,i.tiltY=0,"buttons"in t&&0!==t.buttons?i.pressure=.5:i.pressure=0;var o=t.target;null!==n&&(o=n,"mouseup"===e&&(n=null)),o.dispatchEvent(i),i.defaultPrevented&&t.preventDefault()}))}function o(t,e,n){t.addEventListener(e,(function(t){for(var i=t.changedTouches,o=i.length,a=0;a>>0):4294967296*(e>>>0)+(t>>>0)}function u(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function l(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function x(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}i.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,o=this.pos;this.type=7&n,t(i,e,this),this.pos===o&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=v(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=x(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=v(this.buf,this.pos)+4294967296*v(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=v(this.buf,this.pos)+4294967296*x(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=n.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=n.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,o=r.buf;if(i=o[r.pos++],n=(112&i)>>4,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<3,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<10,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<17,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<24,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(1&i)<<31,i<128)return s(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&o?function(t,e,r){return o.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n="",i=e;for(;i239?4:u>223?3:u>191?2:1;if(i+h>r)break;1===h?u<128&&(l=u):2===h?128==(192&(o=t[i+1]))&&(l=(31&u)<<6|63&o)<=127&&(l=null):3===h?(o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&((l=(15&u)<<12|(63&o)<<6|63&a)<=2047||l>=55296&&l<=57343)&&(l=null)):4===h&&(o=t[i+1],a=t[i+2],s=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&((l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)<=65535||l>=1114112)&&(l=null)),null===l?(l=65533,h=1):l>65535&&(l-=65536,n+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),n+=String.fromCharCode(l),i+=h}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==i.Bytes)return t.push(this.readVarint(e));var r=a(this);for(t=t||[];this.pos127;);else if(e===i.Bytes)this.pos=this.readVarint()+this.pos;else if(e===i.Fixed32)this.pos+=4;else{if(e!==i.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,o=0;o55295&&n<57344){if(!i){n>56319||o+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&u(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),n.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),n.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&u(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,i.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,l,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,h,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,f,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,c,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,p,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,d,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,_,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,g,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,y,e)},writeBytesField:function(t,e){this.writeTag(t,i.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,i.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,i.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,i.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}}},function(t,e,r){var n=r(5);e.Processor=n},function(t,e){e.read=function(t,e,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,h=-7,c=r?i-1:0,p=r?-1:1,f=t[e+c];for(c+=p,o=f&(1<<-h)-1,f>>=-h,h+=s;h>0;o=256*o+t[e+c],c+=p,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+c],c+=p,h-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),o-=l}return(f?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,s,u,l=8*o-i-1,h=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:o-1,d=n?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),(e+=a+c>=1?p/u:p*Math.pow(2,1-c))*u>=2&&(a++,u/=2),a+c>=h?(s=0,a=h):a+c>=1?(s=(e*u-1)*Math.pow(2,i),a+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[r+f]=255&s,f+=d,s/=256,i-=8);for(a=a<0;t[r+f]=255&a,f+=d,a/=256,l-=8);t[r+f-d]|=128*_}},function(t,e,r){var n=r(6).newImageData;function i(t){var e=!0;try{new ImageData(10,10)}catch(t){e=!1}function r(t,r,n){return e?new ImageData(t,r,n):{data:t,width:r,height:n}}return function(e){var n,i,o=e.buffers,a=e.meta,s=e.imageOps,u=e.width,l=e.height,h=o.length,c=o[0].byteLength;if(s){var p=new Array(h);for(i=0;ithis._maxQueueLength;)this._queue.shift().callback(null,null)},a.prototype._dispatch=function(){if(0===this._running&&this._queue.length>0){var t=this._job=this._queue.shift(),e=t.inputs[0].width,r=t.inputs[0].height,n=t.inputs.map((function(t){return t.data.buffer})),i=this._workers.length;if(this._running=i,1===i)this._workers[0].postMessage({buffers:n,meta:t.meta,imageOps:this._imageOps,width:e,height:r},n);else for(var o=t.inputs[0].data.length,a=4*Math.ceil(o/4/i),s=0;se?1:t=0}function S(t,e,r){var n=t.length;if(t[0]<=e)return 0;if(e<=t[n-1])return n-1;var i=void 0;if(r>0){for(i=1;i>>0,i=0;i0},e.prototype.removeEventListener=function(t,e){var r=this.listeners_[t];if(r){var n=r.indexOf(e);-1!==n&&(t in this.pendingRemovals_?(r[n]=I,++this.pendingRemovals_[t]):(r.splice(n,1),0===r.length&&delete this.listeners_[t]))}},e}(m),N="change",G="error",j="contextmenu",D="click",k="dblclick",U="dragenter",z="dragover",B="drop",Y="keydown",V="keypress",X="load",W="resize",Z="touchmove",K="wheel",q=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var H=function(t){function e(){var e=t.call(this)||this;return e.revision_=0,e}return q(e,t),e.prototype.changed=function(){++this.revision_,this.dispatchEvent(N)},e.prototype.getRevision=function(){return this.revision_},e.prototype.on=function(t,e){if(Array.isArray(t)){for(var r=t.length,n=new Array(r),i=0;i0;)this.pop()},e.prototype.extend=function(t){for(var e=0,r=t.length;ei&&(u|=yt),so&&(u|=gt),u===dt&&(u=_t),u}function Rt(){return[1/0,1/0,-1/0,-1/0]}function Ot(t,e,r,n,i){return i?(i[0]=t,i[1]=e,i[2]=r,i[3]=n,i):[t,e,r,n]}function It(t){return Ot(1/0,1/0,-1/0,-1/0,t)}function Lt(t,e){var r=t[0],n=t[1];return Ot(r,n,r,n,e)}function Ft(t,e,r,n,i){return jt(It(i),t,e,r,n)}function Mt(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function At(t,e){return e[0]t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function Nt(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function Gt(t,e){for(var r=0,n=e.length;re[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Qt(t){return t[2]1)for(var o=t[2]-t[0],a=t[3]-t[1],s=0;s=r[2])){var i=Ht(r),o=Math.floor((n[0]-r[0])/i)*i;t[0]-=o,t[2]-=o}return t}var re="XY",ne="XYZ",ie="XYM",oe="XYZM",ae={POINT:"Point",LINE_STRING:"LineString",LINEAR_RING:"LinearRing",POLYGON:"Polygon",MULTI_POINT:"MultiPoint",MULTI_LINE_STRING:"MultiLineString",MULTI_POLYGON:"MultiPolygon",GEOMETRY_COLLECTION:"GeometryCollection",CIRCLE:"Circle"};function se(t,e,r,n,i,o){for(var a=o||[],s=0,u=e;u1?(r=i,n=o):u>0&&(r+=a*u,n+=s*u)}return fe(t,e,r,n)}function fe(t,e,r,n){var i=r-t,o=n-e;return i*i+o*o}function de(t){return 180*t/Math.PI}function _e(t){return t*Math.PI/180}function ge(t,e){var r=t%e;return r*e<0?r+e:r}function ye(t,e,r){return t+r*(e-t)}function ve(t,e,r){var n=r||6371008.8,i=_e(t[1]),o=_e(e[1]),a=(o-i)/2,s=_e(e[0]-t[0])/2,u=Math.sin(a)*Math.sin(a)+Math.sin(s)*Math.sin(s)*Math.cos(i)*Math.cos(o);return 2*n*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))}function me(t,e){for(var r=0,n=0,i=t.length;n1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=Pe,s=0;sa?u=a:u<-a&&(u=-a),o[s+1]=u}return o}function Me(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;a=2;--l)a[s+l]=e[s+l]}return a}}function Je(t,e,r,n){var i=We(t),o=We(e);Ue(i,o,He(r)),Ue(o,i,He(n))}function Qe(t,e){if(t===e)return!0;var r=t.getUnits()===e.getUnits();return(t.getCode()===e.getCode()||$e(t,e)===Ye)&&r}function $e(t,e){var r=ze(t.getCode(),e.getCode());return r||(r=Ve),r}function tr(t,e){return $e(We(t),We(e))}function er(t,e,r){return tr(e,r)(t,void 0,t.length)}function rr(t,e,r,n){return te(t,tr(e,r),void 0,n)}var nr,ir,or,ar=null;function sr(){return ar}function ur(t,e){return ar?er(t,e,ar):t}function lr(t,e){return ar?er(t,ar,e):t}function hr(t,e){return ar?rr(t,e,ar):t}function cr(t,e){return ar?rr(t,ar,e):t}Ke(Le),Ke(De),nr=Le,ir=Fe,or=Me,De.forEach((function(t){nr.forEach((function(e){Ue(t,e,ir),Ue(e,t,or)}))}));var pr=new Array(6);function fr(t){return _r(t,1,0,0,1,0,0)}function dr(t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],s=t[5],u=e[0],l=e[1],h=e[2],c=e[3],p=e[4],f=e[5];return t[0]=r*u+i*l,t[1]=n*u+o*l,t[2]=r*h+i*c,t[3]=n*h+o*c,t[4]=r*p+i*f+a,t[5]=n*p+o*f+s,t}function _r(t,e,r,n,i,o,a){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=o,t[5]=a,t}function gr(t,e){var r=e[0],n=e[1];return e[0]=t[0]*r+t[2]*n+t[4],e[1]=t[1]*r+t[3]*n+t[5],e}function yr(t,e,r){return dr(t,_r(pr,e,0,0,r,0,0))}function vr(t,e,r,n,i,o,a,s){var u=Math.sin(o),l=Math.cos(o);return t[0]=n*l,t[1]=i*u,t[2]=-n*u,t[3]=i*l,t[4]=a*n*l-s*n*u+e,t[5]=a*i*u+s*i*l+r,t}function mr(t,e){var r,n=(r=e)[0]*r[3]-r[1]*r[2];st(0!==n,32);var i=e[0],o=e[1],a=e[2],s=e[3],u=e[4],l=e[5];return t[0]=s/n,t[1]=-o/n,t[2]=-a/n,t[3]=i/n,t[4]=(a*l-s*u)/n,t[5]=-(i*l-o*u)/n,t}function xr(t){return"matrix("+t.join(", ")+")"}var wr=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Sr=[1,0,0,1,0,0],Er=function(t){function e(){var e,r,n,i,o,a=t.call(this)||this;return a.extent_=[1/0,1/0,-1/0,-1/0],a.extentRevision_=-1,a.simplifiedGeometryMaxMinSquaredTolerance=0,a.simplifiedGeometryRevision=0,a.simplifyTransformedInternal=(e=function(t,e,r){if(!r)return this.getSimplifiedGeometry(e);var n=this.clone();return n.applyTransform(r),n.getSimplifiedGeometry(e)},o=!1,function(){var t=Array.prototype.slice.call(arguments);return o&&this===i&&b(t,n)||(o=!0,i=this,n=t,r=e.apply(this,arguments)),r}),a}return wr(e,t),e.prototype.simplifyTransformed=function(t,e){return this.simplifyTransformedInternal(this.getRevision(),t,e)},e.prototype.clone=function(){return n()},e.prototype.closestPointXY=function(t,e,r,i){return n()},e.prototype.containsXY=function(t,e){var r=this.getClosestPoint([t,e]);return r[0]===t&&r[1]===e},e.prototype.getClosestPoint=function(t,e){var r=e||[NaN,NaN];return this.closestPointXY(t[0],t[1],r,1/0),r},e.prototype.intersectsCoordinate=function(t){return this.containsXY(t[0],t[1])},e.prototype.computeExtent=function(t){return n()},e.prototype.getExtent=function(t){return this.extentRevision_!=this.getRevision()&&(this.extent_=this.computeExtent(this.extent_),this.extentRevision_=this.getRevision()),function(t,e){return e?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e):t}(this.extent_,t)},e.prototype.rotate=function(t,e){n()},e.prototype.scale=function(t,e,r){n()},e.prototype.simplify=function(t){return this.getSimplifiedGeometry(t*t)},e.prototype.getSimplifiedGeometry=function(t){return n()},e.prototype.getType=function(){return n()},e.prototype.applyTransform=function(t){n()},e.prototype.intersectsExtent=function(t){return n()},e.prototype.translate=function(t,e){n()},e.prototype.transform=function(t,e){var r=We(t),n=r.getUnits()==Te.TILE_PIXELS?function(t,n,i){var o=r.getExtent(),a=r.getWorldExtent(),s=Wt(a)/Wt(o);return vr(Sr,a[0],a[3],s,-s,0,0,0),se(t,0,t.length,i,Sr,n),tr(r,e)(t,n,i)}:tr(r,e);return this.applyTransform(n),this},e}(rt),Tr=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Cr(t){var e;return t==re?e=2:t==ne||t==ie?e=3:t==oe&&(e=4),e}var br=function(t){function e(){var e=t.call(this)||this;return e.layout=re,e.stride=2,e.flatCoordinates=null,e}return Tr(e,t),e.prototype.computeExtent=function(t){return Ft(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)},e.prototype.getCoordinates=function(){return n()},e.prototype.getFirstCoordinate=function(){return this.flatCoordinates.slice(0,this.stride)},e.prototype.getFlatCoordinates=function(){return this.flatCoordinates},e.prototype.getLastCoordinate=function(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)},e.prototype.getLayout=function(){return this.layout},e.prototype.getSimplifiedGeometry=function(t){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;var e=this.getSimplifiedGeometryInternal(t);return e.getFlatCoordinates().length1)s=r;else{if(p>0){for(var f=0;fi&&(i=l),o=s,a=u}return i}function Lr(t,e,r,n,i){for(var o=0,a=r.length;o0;){for(var c=l.pop(),p=l.pop(),f=0,d=t[p],_=t[p+1],g=t[c],y=t[c+1],v=p+n;vf&&(h=v,f=m)}f>i&&(u[(h-e)/n]=1,p+n0&&_>f)&&(d<0&&g0&&g>d)?(s=c,u=p):(o[a++]=s,o[a++]=u,l=s,h=u,s=c,u=p)}}return o[a++]=s,o[a++]=u,a}function Vr(t,e,r,n,i,o,a,s){for(var u=0,l=r.length;uo&&(l-s)*(o-u)-(i-s)*(h-u)>0&&a++:h<=o&&(l-s)*(o-u)-(i-s)*(h-u)<0&&a--,s=l,u=h}return 0!==a}function Jr(t,e,r,n,i,o){if(0===r.length)return!1;if(!Hr(t,e,r[0],n,i,o))return!1;for(var a=1,s=r.length;aw&&Jr(t,e,r,n,l=(h+c)/2,d)&&(m=l,w=S),h=c}return isNaN(m)&&(m=i[o]),a?(a.push(m,d,w),a):[m,d,w]}function $r(t,e,r,n,i){for(var o=[],a=0,s=r.length;a=i[0]&&o[2]<=i[2]||(o[1]>=i[1]&&o[3]<=i[3]||tn(t,e,r,n,(function(t,e){return function(t,e,r){var n=!1,i=Pt(t,e),o=Pt(t,r);if(i===_t||o===_t)n=!0;else{var a=t[0],s=t[1],u=t[2],l=t[3],h=e[0],c=e[1],p=r[0],f=r[1],d=(f-c)/(p-h),_=void 0,g=void 0;o>&&!(i>)&&(n=(_=p-(f-l)/d)>=a&&_<=u),n||!(o&yt)||i&yt||(n=(g=f-(p-u)*d)>=s&&g<=l),n||!(o&vt)||i&vt||(n=(_=p-(f-s)/d)>=a&&_<=u),n||!(o&mt)||i&mt||(n=(g=f-(p-a)*d)>=s&&g<=l)}return n}(i,t,e)})))))}function rn(t,e,r,n,i){if(!function(t,e,r,n,i){return!!en(t,e,r,n,i)||(!!Hr(t,e,r,n,i[0],i[1])||(!!Hr(t,e,r,n,i[0],i[3])||(!!Hr(t,e,r,n,i[2],i[1])||!!Hr(t,e,r,n,i[2],i[3]))))}(t,e,r[0],n,i))return!1;if(1===r.length)return!0;for(var o=1,a=r.length;o0}function an(t,e,r,n,i){for(var o=void 0!==i&&i,a=0,s=r.length;a0&&this.points_[r+2]>t;)r-=3;var n=this.points_[e+2]-this.points_[r+2];if(n<1e3/60)return!1;var i=this.points_[e]-this.points_[r],o=this.points_[e+1]-this.points_[r+1];return this.angle_=Math.atan2(o,i),this.initialVelocity_=Math.sqrt(i*i+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),In=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ln=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.map=r,i.frameState=void 0!==n?n:null,i}return In(e,t),e}(F),Fn=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Mn=function(t){function e(e,r,n,i,o){var a=t.call(this,e,r,o)||this;return a.originalEvent=n,a.pixel_=null,a.coordinate_=null,a.dragging=void 0!==i&&i,a}return Fn(e,t),Object.defineProperty(e.prototype,"pixel",{get:function(){return this.pixel_||(this.pixel_=this.map.getEventPixel(this.originalEvent)),this.pixel_},set:function(t){this.pixel_=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"coordinate",{get:function(){return this.coordinate_||(this.coordinate_=this.map.getCoordinateFromPixel(this.pixel)),this.coordinate_},set:function(t){this.coordinate_=t},enumerable:!0,configurable:!0}),e.prototype.preventDefault=function(){t.prototype.preventDefault.call(this),this.originalEvent.preventDefault()},e.prototype.stopPropagation=function(){t.prototype.stopPropagation.call(this),this.originalEvent.stopPropagation()},e}(Ln),An=(r(1),"undefined"!=typeof navigator?navigator.userAgent.toLowerCase():""),Nn=-1!==An.indexOf("firefox"),Gn=(-1!==An.indexOf("safari")&&An.indexOf("chrom"),-1!==An.indexOf("webkit")&&-1==An.indexOf("edge")),jn=-1!==An.indexOf("macintosh"),Dn="undefined"!=typeof devicePixelRatio?devicePixelRatio:1,kn="undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,Un="undefined"!=typeof Image&&Image.prototype.decode,zn=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("_",null,e),window.removeEventListener("_",null,e)}catch(t){}return t}(),Bn={SINGLECLICK:"singleclick",CLICK:D,DBLCLICK:k,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"},Yn=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Vn=function(t){function e(e,r,n,i,o){var a=t.call(this,e,r,n,i,o)||this;return a.pointerEvent=n,a}return Yn(e,t),e}(Mn),Xn="pointermove",Wn="pointerdown",Zn="pointerup",Kn="pointerout",qn=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hn=function(t){function e(e,r){var n=t.call(this,e)||this;n.map_=e,n.clickTimeoutId_,n.dragging_=!1,n.dragListenerKeys_=[],n.moveTolerance_=r?r*Dn:Dn,n.down_=null;var i=n.map_.getViewport();return n.activePointers_=0,n.trackedTouches_={},n.element_=i,n.pointerdownListenerKey_=g(i,Wn,n.handlePointerDown_,n),n.originalPointerMoveEvent_,n.relayedListenerKey_=g(i,Xn,n.relayEvent_,n),n.boundHandleTouchMove_=n.handleTouchMove_.bind(n),n.element_.addEventListener(Z,n.boundHandleTouchMove_,!!zn&&{passive:!1}),n}return qn(e,t),e.prototype.emulateClick_=function(t){var e=new Vn(Bn.CLICK,this.map_,t);this.dispatchEvent(e),void 0!==this.clickTimeoutId_?(clearTimeout(this.clickTimeoutId_),this.clickTimeoutId_=void 0,e=new Vn(Bn.DBLCLICK,this.map_,t),this.dispatchEvent(e)):this.clickTimeoutId_=setTimeout(function(){this.clickTimeoutId_=void 0;var e=new Vn(Bn.SINGLECLICK,this.map_,t);this.dispatchEvent(e)}.bind(this),250)},e.prototype.updateActivePointers_=function(t){var e=t;e.type==Bn.POINTERUP||e.type==Bn.POINTERCANCEL?delete this.trackedTouches_[e.pointerId]:e.type==Bn.POINTERDOWN&&(this.trackedTouches_[e.pointerId]=!0),this.activePointers_=Object.keys(this.trackedTouches_).length},e.prototype.handlePointerUp_=function(t){this.updateActivePointers_(t);var e=new Vn(Bn.POINTERUP,this.map_,t);this.dispatchEvent(e),e.propagationStopped||this.dragging_||!this.isMouseActionButton_(t)||this.emulateClick_(this.down_),0===this.activePointers_&&(this.dragListenerKeys_.forEach(v),this.dragListenerKeys_.length=0,this.dragging_=!1,this.down_=null)},e.prototype.isMouseActionButton_=function(t){return 0===t.button},e.prototype.handlePointerDown_=function(t){this.updateActivePointers_(t);var e=new Vn(Bn.POINTERDOWN,this.map_,t);this.dispatchEvent(e),this.down_=t,0===this.dragListenerKeys_.length&&this.dragListenerKeys_.push(g(document,Bn.POINTERMOVE,this.handlePointerMove_,this),g(document,Bn.POINTERUP,this.handlePointerUp_,this),g(this.element_,Bn.POINTERCANCEL,this.handlePointerUp_,this))},e.prototype.handlePointerMove_=function(t){if(this.isMoving_(t)){this.dragging_=!0;var e=new Vn(Bn.POINTERDRAG,this.map_,t,this.dragging_);this.dispatchEvent(e)}},e.prototype.relayEvent_=function(t){this.originalPointerMoveEvent_=t;var e=!(!this.down_||!this.isMoving_(t));this.dispatchEvent(new Vn(t.type,this.map_,t,e))},e.prototype.handleTouchMove_=function(t){this.originalPointerMoveEvent_&&!this.originalPointerMoveEvent_.defaultPrevented||t.preventDefault()},e.prototype.isMoving_=function(t){return this.dragging_||Math.abs(t.clientX-this.down_.clientX)>this.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(v(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(Z,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(v(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(v),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(A),Jn="postrender",Qn="movestart",$n="moveend",ti="layergroup",ei="size",ri="target",ni="view",ii="prerender",oi="postrender",ai="precompose",si="postcompose",ui="rendercomplete",li=0,hi=1,ci=2,pi=3,fi=4,di=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,f(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,r=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(r);return delete this.queuedElements_[n],r},t.prototype.enqueue=function(t){st(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=1/0&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,r=this.priorities_,n=e.length,i=e[t],o=r[t],a=t;t>1;){var s=this.getLeftChildIndex_(t),u=this.getRightChildIndex_(t),l=ut;){var a=this.getParentIndex_(e);if(!(n[a]>o))break;r[e]=r[a],n[e]=n[a],e=a}r[e]=i,n[e]=o},t.prototype.reprioritize=function(){var t,e,r,n=this.priorityFunction_,i=this.elements_,o=this.priorities_,a=0,s=i.length;for(e=0;e0;)n=(r=this.dequeue()[0]).getKey(),r.getState()!==li||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++i,r.load())},e}(di);function yi(t,e,r){return function(n,i,o,a){if(n){var s=e?0:o[0]*i,u=e?0:o[1]*i,l=t[0]+s/2,h=t[2]-s/2,c=t[1]+u/2,p=t[3]-u/2;l>h&&(h=l=(h+l)/2),c>p&&(p=c=(p+c)/2);var f=he(n[0],l,h),d=he(n[1],c,p),_=30*i;return a&&r&&(f+=-_*Math.log(1+Math.max(0,l-n[0])/_)+_*Math.log(1+Math.max(0,n[0]-h)/_),d+=-_*Math.log(1+Math.max(0,c-n[1])/_)+_*Math.log(1+Math.max(0,n[1]-p)/_)),[f,d]}}}function vi(t){return t}function mi(t,e,r,n){var i=Ht(e)/r[0],o=Wt(e)/r[1];return n?Math.min(t,Math.max(i,o)):Math.min(t,Math.min(i,o))}function xi(t,e,r){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,r&&(n=Math.max(n,r),n/=Math.log(1+50*Math.max(0,r/t-1))/50+1),he(n,r/2,2*e)}function wi(t,e,r,n,i){return function(o,a,s,u){if(void 0!==o){var l=n?mi(t,n,s,i):t;return(void 0===r||r)&&u?xi(o,l,e):he(o,e,l)}}}function Si(t){return void 0!==t?0:void 0}function Ei(t){return void 0!==t?t:void 0}var Ti=0,Ci=1,bi="center",Pi="resolution",Ri="rotation";function Oi(t,e,r){var n=void 0!==r?t.toFixed(r):""+t,i=n.indexOf(".");return(i=-1===i?n.length:i)>e?n:new Array(1+e-i).join("0")+n}function Ii(t,e){for(var r=(""+t).split("."),n=(""+e).split("."),i=0;ia)return 1;if(a>o)return-1}return 0}function Li(t,e){return t[0]+=+e[0],t[1]+=+e[1],t}function Fi(t,e){var r,n,i=t[0],o=t[1],a=e[0],s=e[1],u=a[0],l=a[1],h=s[0],c=s[1],p=h-u,f=c-l,d=0===p&&0===f?0:(p*(i-u)+f*(o-l))/(p*p+f*f||0);return d<=0?(r=u,n=l):d>=1?(r=h,n=c):(r=u+d*p,n=l+d*f),[r,n]}function Mi(t,e,r){var n=ge(e+180,360)-180,i=Math.abs(3600*n),o=r||0,a=Math.pow(10,o),s=Math.floor(i/3600),u=Math.floor((i-3600*s)/60),l=i-3600*s-60*u;return(l=Math.ceil(l*a)/a)>=60&&(l=0,u+=1),u>=60&&(u=0,s+=1),s+"° "+Oi(u,2)+"′ "+Oi(l,2,o)+"″"+(0==n?"":" "+t.charAt(n<0?1:0))}function Ai(t,e,r){return t?e.replace("{x}",t[0].toFixed(r)).replace("{y}",t[1].toFixed(r)):""}function Ni(t,e){for(var r=!0,n=t.length-1;n>=0;--n)if(t[n]!=e[n]){r=!1;break}return r}function Gi(t,e){var r=Math.cos(e),n=Math.sin(e),i=t[0]*r-t[1]*n,o=t[1]*r+t[0]*n;return t[0]=i,t[1]=o,t}function ji(t,e){return t[0]*=e,t[1]*=e,t}function Di(t,e){var r=t[0]-e[0],n=t[1]-e[1];return r*r+n*n}function ki(t,e){return Math.sqrt(Di(t,e))}function Ui(t,e){return Di(t,Fi(t,e))}function zi(t,e){return Ai(t,"{x}, {y}",e)}function Bi(t,e){var r=e.getExtent();if(e.canWrapX()&&(t[0]=r[2])){var n=Ht(r),i=Math.floor((t[0]-r[0])/n);t[0]-=i*n}return t}function Yi(t){return Math.pow(t,3)}function Vi(t){return 1-Yi(1-t)}function Xi(t){return 3*t*t-2*t*t*t}function Wi(t){return t}var Zi=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Ki(t,e){setTimeout((function(){t(e)}),0)}function qi(t){return!(t.sourceCenter&&t.targetCenter&&!Ni(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}var Hi=function(t){function e(e){var r=t.call(this)||this,n=p({},e);return r.hints_=[0,0],r.animations_=[],r.updateAnimationKey_,r.projection_=qe(n.projection,"EPSG:3857"),r.viewportSize_=[100,100],r.targetCenter_=null,r.targetResolution_,r.targetRotation_,r.cancelAnchor_=void 0,n.center&&(n.center=lr(n.center,r.projection_)),n.extent&&(n.extent=cr(n.extent,r.projection_)),r.applyOptions_(n),r}return Zi(e,t),e.prototype.applyOptions_=function(t){var e=function(t){var e,r,n,i=void 0!==t.minZoom?t.minZoom:0,o=void 0!==t.maxZoom?t.maxZoom:28,a=void 0!==t.zoomFactor?t.zoomFactor:2,s=void 0!==t.multiWorld&&t.multiWorld,u=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,l=void 0!==t.showFullExtent&&t.showFullExtent,h=qe(t.projection,"EPSG:3857"),c=h.getExtent(),p=t.constrainOnlyCenter,f=t.extent;s||f||!h.isGlobal()||(p=!1,f=c);if(void 0!==t.resolutions){var d=t.resolutions;r=d[i],n=void 0!==d[o]?d[o]:d[d.length-1],e=t.constrainResolution?function(t,e,r,n){return function(i,o,a,s){if(void 0!==i){var u=t[0],l=t[t.length-1],h=r?mi(u,r,a,n):u;if(s)return void 0===e||e?xi(i,h,l):he(i,l,h);var c=Math.min(h,i),p=Math.floor(S(t,c,o));return t[p]>h&&p1&&"function"==typeof arguments[r-1]&&(e=arguments[r-1],--r),!this.isDef()){var n=arguments[r-1];return n.center&&this.setCenterInternal(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&Ki(e,!0))}for(var i=Date.now(),o=this.targetCenter_.slice(),a=this.targetResolution_,s=this.targetRotation_,u=[],l=0;l0},e.prototype.getInteracting=function(){return this.hints_[Ci]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(Ti,-this.hints_[Ti]);for(var e=0,r=this.animations_.length;e=0;--r){for(var n=this.animations_[r],i=!0,o=0,a=n.length;o0?u/s.duration:1;l>=1?(s.complete=!0,l=1):i=!1;var h=s.easing(l);if(s.sourceCenter){var c=s.sourceCenter[0],p=s.sourceCenter[1],f=c+h*(s.targetCenter[0]-c),d=p+h*(s.targetCenter[1]-p);this.targetCenter_=[f,d]}if(s.sourceResolution&&s.targetResolution){var _=1===h?s.targetResolution:s.sourceResolution+h*(s.targetResolution-s.sourceResolution);if(s.anchor){var g=this.getViewportSize_(this.getRotation()),y=this.constraints_.resolution(_,0,g,!0);this.targetCenter_=this.calculateCenterZoom(y,s.anchor)}this.targetResolution_=_,this.applyTargetState_(!0)}if(void 0!==s.sourceRotation&&void 0!==s.targetRotation){var v=1===h?ge(s.targetRotation+Math.PI,2*Math.PI)-Math.PI:s.sourceRotation+h*(s.targetRotation-s.sourceRotation);if(s.anchor){var m=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(m,s.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!s.complete)break}}if(i){this.animations_[r]=null,this.setHint(Ti,-1);var x=n[0].callback;x&&Ki(x,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var r,n=this.getCenterInternal();return void 0!==n&&(Gi(r=[n[0]-e[0],n[1]-e[1]],t-this.getRotation()),Li(r,e)),r},e.prototype.calculateCenterZoom=function(t,e){var r,n=this.getCenterInternal(),i=this.getResolution();void 0!==n&&void 0!==i&&(r=[e[0]-t*(e[0]-n[0])/i,e[1]-t*(e[1]-n[1])/i]);return r},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var r=e[0],n=e[1];return[Math.abs(r*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(r*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?ur(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(bi)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return hr(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSize_(),r=this.getCenterInternal();st(r,1);var n=this.getResolution();st(void 0!==n,2);var i=this.getRotation();return st(void 0!==i,3),Xt(r,n,i,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(Pi)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(cr(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var r=e||this.getViewportSize_(),n=Ht(t)/r[0],i=Wt(t)/r[1];return Math.max(n,i)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/Math.log(e);return function(t){return r/Math.pow(e,t*i)}},e.prototype.getRotation=function(){return this.get(Ri)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/e;return function(t){return Math.log(r/t)/e/i}},e.prototype.getState=function(){var t=this.getCenterInternal(),e=this.getProjection(),r=this.getResolution(),n=this.getRotation();return{center:t.slice(0),projection:void 0!==e?e:null,resolution:r,rotation:n,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,r,n=this.minZoom_||0;if(this.resolutions_){var i=S(this.resolutions_,t,1);n=i,e=this.resolutions_[i],r=i==this.resolutions_.length-1?2:e/this.resolutions_[i+1]}else e=this.maxResolution_,r=this.zoomFactor_;return n+Math.log(e/t)/Math.log(r)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=he(Math.floor(t),0,this.resolutions_.length-2),r=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(r,he(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var r,n=p({size:this.getViewportSize_()},e||{});if(st(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))st(!Qt(t),25),r=fn(i=cr(t,this.getProjection()));else if(t.getType()===ae.CIRCLE){var i;(r=fn(i=cr(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),Yt(i))}else{var o=sr();r=o?t.clone().transform(o,this.getProjection()):t}this.fitInternal(r,n)},e.prototype.fitInternal=function(t,e){var r=e||{},n=r.size;n||(n=this.getViewportSize_());var i,o=void 0!==r.padding?r.padding:[0,0,0,0],a=void 0!==r.nearest&&r.nearest;i=void 0!==r.minResolution?r.minResolution:void 0!==r.maxZoom?this.getResolutionForZoom(r.maxZoom):0;for(var s=t.getFlatCoordinates(),u=this.getRotation(),l=Math.cos(-u),h=Math.sin(-u),c=1/0,p=1/0,f=-1/0,d=-1/0,_=t.getStride(),g=0,y=s.length;g=0;n--){var i=r[n];if(i.getActive())if(!i.handleEvent(t))break}}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var r=this.maxTilesLoading_,n=r;if(t){var i=t.viewHints;if(i[Ti]||i[Ci]){var o=!Un&&Date.now()-t.time>8;r=o?0:8,n=o?0:2}}e.getTilesLoading()0&&t[1]>0}(e)&&r&&r.isDef()){var o=r.getHints(this.frameState_?this.frameState_.viewHints:void 0),a=r.getState();i={animate:!1,coordinateToPixelTransform:this.coordinateToPixelTransform_,declutterItems:n?n.declutterItems:[],extent:Xt(a.center,a.resolution,a.rotation,e),index:this.frameIndex_++,layerIndex:0,layerStatesArray:this.getLayerGroup().getLayerStatesArray(),pixelRatio:this.pixelRatio_,pixelToCoordinateTransform:this.pixelToCoordinateTransform_,postRenderFunctions:[],size:e,tileQueue:this.tileQueue_,time:t,usedTiles:{},viewState:a,viewHints:o,wantedTiles:{}}}if(this.frameState_=i,this.renderer_.renderFrame(i),i){if(i.animate&&this.render(),Array.prototype.push.apply(this.postRenderFunctions_,i.postRenderFunctions),n)(!this.previousExtent_||!Qt(this.previousExtent_)&&!Mt(i.extent,this.previousExtent_))&&(this.dispatchEvent(new Ln(Qn,this,n)),this.previousExtent_=It(this.previousExtent_));this.previousExtent_&&!i.viewHints[Ti]&&!i.viewHints[Ci]&&!Mt(i.extent,this.previousExtent_)&&(this.dispatchEvent(new Ln($n,this,i)),St(i.extent,this.previousExtent_))}this.dispatchEvent(new Ln(Jn,this,i)),this.postRenderTimeoutHandle_=setTimeout(this.handlePostRender.bind(this),0)},e.prototype.setLayerGroup=function(t){this.set(ti,t)},e.prototype.setSize=function(t){this.set(ei,t)},e.prototype.setTarget=function(t){this.set(ri,t)},e.prototype.setView=function(t){this.set(ni,t)},e.prototype.updateSize=function(){var t=this.getTargetElement();if(t){var e=getComputedStyle(t);this.setSize([t.offsetWidth-parseFloat(e.borderLeftWidth)-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight)-parseFloat(e.borderRightWidth),t.offsetHeight-parseFloat(e.borderTopWidth)-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom)-parseFloat(e.borderBottomWidth)])}else this.setSize(void 0);this.updateViewportSize_()},e.prototype.updateViewportSize_=function(){var t=this.getView();if(t){var e=void 0,r=getComputedStyle(this.viewport_);r.width&&r.height&&(e=[parseInt(r.width,10),parseInt(r.height,10)]),t.setViewportSize(e)}},e}(rt),Po=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ro=function(t){function e(e){var r=t.call(this)||this;return r.element=e.element?e.element:null,r.target_=null,r.map_=null,r.listenerKeys=[],r.render_=e.render?e.render:I,e.target&&r.setTarget(e.target),r}return Po(e,t),e.prototype.disposeInternal=function(){eo(this.element),t.prototype.disposeInternal.call(this)},e.prototype.getMap=function(){return this.map_},e.prototype.setMap=function(t){this.map_&&eo(this.element);for(var e=0,r=this.listenerKeys.length;e=t.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var Ao=function(t){function e(e){var r=this,n=p({},e);delete n.source,(r=t.call(this,n)||this).mapPrecomposeKey_=null,r.mapRenderKey_=null,r.sourceChangeKey_=null,r.renderer_=null,e.render&&(r.render=e.render),e.map&&r.setMap(e.map),r.addEventListener(et(co),r.handleSourcePropertyChange_);var i=e.source?e.source:null;return r.setSource(i),r}return Fo(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(co)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():_o},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(v(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=g(t,N,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_.getFeatures(t)},e.prototype.render=function(t,e){var r=this.getRenderer();if(r.prepareFrame(t))return r.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(v(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(v(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=g(t,ai,(function(t){var e=t.frameState.layerStatesArray,r=this.getLayerState(!1);st(!e.some((function(t){return t.layer===r.layer})),67),e.push(r)}),this),this.mapRenderKey_=g(this,N,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(co,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(fo),No=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Go(t){this.updateElement_(t.frameState)}var jo=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),render:n.render||Go,target:n.target})||this).ulElement_=document.createElement("ul"),r.collapsed_=void 0===n.collapsed||n.collapsed,r.overrideCollapsible_=void 0!==n.collapsible,r.collapsible_=void 0===n.collapsible||n.collapsible,r.collapsible_||(r.collapsed_=!1);var i=void 0!==n.className?n.className:"ol-attribution",o=void 0!==n.tipLabel?n.tipLabel:"Attributions",a=void 0!==n.collapseLabel?n.collapseLabel:"»";"string"==typeof a?(r.collapseLabel_=document.createElement("span"),r.collapseLabel_.textContent=a):r.collapseLabel_=a;var s=void 0!==n.label?n.label:"i";"string"==typeof s?(r.label_=document.createElement("span"),r.label_.textContent=s):r.label_=s;var u=r.collapsible_&&!r.collapsed_?r.collapseLabel_:r.label_,l=document.createElement("button");l.setAttribute("type","button"),l.title=o,l.appendChild(u),l.addEventListener(D,r.handleClick_.bind(r),!1);var h=i+" ol-unselectable ol-control"+(r.collapsed_&&r.collapsible_?" ol-collapsed":"")+(r.collapsible_?"":" ol-uncollapsible"),c=r.element;return c.className=h,c.appendChild(r.ulElement_),c.appendChild(l),r.renderedAttributions_=[],r.renderedVisible_=!0,r}return No(e,t),e.prototype.collectSourceAttributions_=function(t){for(var e={},r=[],n=t.layerStatesArray,i=0,o=n.length;i0;if(this.renderedVisible_!=r&&(this.element.style.display=r?"":"none",this.renderedVisible_=r),!b(e,this.renderedAttributions_)){ro(this.ulElement_);for(var n=0,i=e.length;n0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:Vi}):t.setRotation(0))}},e}(Ro),zo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bo=function(t){function e(e){var r=this,n=e||{};r=t.call(this,{element:document.createElement("div"),target:n.target})||this;var i=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,a=void 0!==n.zoomInLabel?n.zoomInLabel:"+",s=void 0!==n.zoomOutLabel?n.zoomOutLabel:"−",u=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",l=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",h=document.createElement("button");h.className=i+"-in",h.setAttribute("type","button"),h.title=u,h.appendChild("string"==typeof a?document.createTextNode(a):a),h.addEventListener(D,r.handleClick_.bind(r,o),!1);var c=document.createElement("button");c.className=i+"-out",c.setAttribute("type","button"),c.title=l,c.appendChild("string"==typeof s?document.createTextNode(s):s),c.addEventListener(D,r.handleClick_.bind(r,-o),!1);var p=i+" ol-unselectable ol-control",f=r.element;return f.className=p,f.appendChild(h),f.appendChild(c),r.duration_=void 0!==n.duration?n.duration:250,r}return zo(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var r=e.getZoom();if(void 0!==r){var n=e.getConstrainedZoom(r+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:Vi})):e.setZoom(n)}}},e}(Ro);function Yo(t){var e=t||{},r=new at;return(void 0===e.zoom||e.zoom)&&r.push(new Bo(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&r.push(new Uo(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&r.push(new jo(e.attributionOptions)),r}var Vo="active",Xo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Wo(t,e,r,n){var i=t.getZoom();if(void 0!==i){var o=t.getConstrainedZoom(i+e),a=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:a,anchor:r,duration:void 0!==n?n:250,easing:Vi})}}var Zo=function(t){function e(e){var r=t.call(this)||this;return e.handleEvent&&(r.handleEvent=e.handleEvent),r.map_=null,r.setActive(!0),r}return Xo(e,t),e.prototype.getActive=function(){return this.get(Vo)},e.prototype.getMap=function(){return this.map_},e.prototype.handleEvent=function(t){return!0},e.prototype.setActive=function(t){this.set(Vo,t)},e.prototype.setMap=function(t){this.map_=t},e}(rt),Ko=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function qo(t){var e=!1;if(t.type==Bn.DBLCLICK){var r=t.originalEvent,n=t.map,i=t.coordinate,o=r.shiftKey?-this.delta_:this.delta_;Wo(n.getView(),o,i,this.duration_),t.preventDefault(),e=!0}return!e}var Ho=function(t){function e(e){var r=t.call(this,{handleEvent:qo})||this,n=e||{};return r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:250,r}return Ko(e,t),e}(Zo),Jo=function(t){var e=t.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey},Qo=function(t){var e=t.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},$o=function(t){return t.target.getTargetElement()===document.activeElement},ta=R,ea=function(t){var e=t.originalEvent;return 0==e.button&&!(Gn&&jn&&e.ctrlKey)},ra=O,na=function(t){return t.type==Bn.SINGLECLICK},ia=function(t){var e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey},oa=function(t){var e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},aa=function(t){var e=t.originalEvent.target.tagName;return"INPUT"!==e&&"SELECT"!==e&&"TEXTAREA"!==e},sa=function(t){var e=t.pointerEvent;return st(void 0!==e,56),"mouse"==e.pointerType},ua=function(t){var e=t.pointerEvent;return st(void 0!==e,56),e.isPrimary&&0===e.button},la=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function ha(t){for(var e=t.length,r=0,n=0,i=0;i0}}else if(t.type==Bn.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==Bn.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Bn.POINTERDOWN||e===Bn.POINTERDRAG||e===Bn.POINTERUP}(t)){var e=t.pointerEvent,r=e.pointerId.toString();t.type==Bn.POINTERUP?delete this.trackedPointers_[r]:(t.type==Bn.POINTERDOWN||r in this.trackedPointers_)&&(this.trackedPointers_[r]=e),this.targetPointers=d(this.trackedPointers_)}},e}(Zo),pa=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function fa(t){return ia(t)&&ua(t)}var da=function(t){function e(e){var r=t.call(this,{stopDown:O})||this,n=e||{};return r.kinetic_=n.kinetic,r.lastCentroid=null,r.lastPointersCount_,r.panning_=!1,r.condition_=n.condition?n.condition:fa,r.noKinetic_=!1,r}return pa(e,t),e.prototype.conditionInternal_=function(t){var e=!0;return t.map.getTargetElement().hasAttribute("tabindex")&&(e=$o(t)),e&&this.condition_(t)},e.prototype.handleDragEvent=function(t){this.panning_||(this.panning_=!0,this.getMap().getView().beginInteraction());var e=this.targetPointers,r=ha(e);if(e.length==this.lastPointersCount_){if(this.kinetic_&&this.kinetic_.update(r[0],r[1]),this.lastCentroid){var n=[this.lastCentroid[0]-r[0],r[1]-this.lastCentroid[1]],i=t.map.getView();ji(n,i.getResolution()),Gi(n,i.getRotation()),i.adjustCenterInternal(n)}}else this.kinetic_&&this.kinetic_.begin();this.lastCentroid=r,this.lastPointersCount_=e.length,t.originalEvent.preventDefault()},e.prototype.handleUpEvent=function(t){var e=t.map,r=e.getView();if(0===this.targetPointers.length){if(!this.noKinetic_&&this.kinetic_&&this.kinetic_.end()){var n=this.kinetic_.getDistance(),i=this.kinetic_.getAngle(),o=r.getCenterInternal(),a=e.getPixelFromCoordinateInternal(o),s=e.getCoordinateFromPixelInternal([a[0]-n*Math.cos(i),a[1]-n*Math.sin(i)]);r.animateInternal({center:r.getConstrainedCenter(s),duration:500,easing:Vi})}return this.panning_&&(this.panning_=!1,r.endInteraction()),!1}return this.kinetic_&&this.kinetic_.begin(),this.lastCentroid=null,!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>0&&this.conditionInternal_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}(ca),_a=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ga=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{stopDown:O})||this).condition_=n.condition?n.condition:Qo,r.lastAngle_=void 0,r.duration_=void 0!==n.duration?n.duration:250,r}return _a(e,t),e.prototype.handleDragEvent=function(t){if(sa(t)){var e=t.map,r=e.getView();if(r.getConstraints().rotation!==Si){var n=e.getSize(),i=t.pixel,o=Math.atan2(n[1]/2-i[1],i[0]-n[0]/2);if(void 0!==this.lastAngle_){var a=o-this.lastAngle_;r.adjustRotationInternal(-a)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!sa(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!sa(t)&&(!(!ea(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}(ca),ya=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),va=function(t){function e(e){var r=t.call(this)||this;return r.geometry_=null,r.element_=document.createElement("div"),r.element_.style.position="absolute",r.element_.className="ol-box "+e,r.map_=null,r.startPixel_=null,r.endPixel_=null,r}return ya(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,r=this.element_.style;r.left=Math.min(t[0],e[0])+"px",r.top=Math.min(t[1],e[1])+"px",r.width=Math.abs(e[0]-t[0])+"px",r.height=Math.abs(e[1]-t[1])+"px"},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,r=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);r[4]=r[0].slice(),this.geometry_?this.geometry_.setCoordinates([r]):this.geometry_=new cn([r])},e.prototype.getGeometry=function(){return this.geometry_},e}(m),ma=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xa="boxstart",wa="boxdrag",Sa="boxend",Ea=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.coordinate=r,i.mapBrowserEvent=n,i}return ma(e,t),e}(F),Ta=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.box_=new va(n.className||"ol-dragbox"),r.minArea_=void 0!==n.minArea?n.minArea:64,r.onBoxEnd_=n.onBoxEnd?n.onBoxEnd:I,r.startPixel_=null,r.condition_=n.condition?n.condition:ea,r.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:r.defaultBoxEndCondition,r}return ma(e,t),e.prototype.defaultBoxEndCondition=function(t,e,r){var n=r[0]-e[0],i=r[1]-e[1];return n*n+i*i>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Ea(wa,t.coordinate,t))},e.prototype.handleUpEvent=function(t){return this.box_.setMap(null),this.boxEndCondition_(t,this.startPixel_,t.pixel)&&(this.onBoxEnd_(t),this.dispatchEvent(new Ea(Sa,t.coordinate,t))),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Ea(xa,t.coordinate,t)),!0)},e}(ca),Ca=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function ba(){var t,e,r=this.getMap(),n=r.getView(),i=r.getSize(),o=this.getGeometry().getExtent();if(this.out_){var a=n.calculateExtentInternal(i),s=(t=[r.getPixelFromCoordinateInternal(zt(o)),r.getPixelFromCoordinateInternal(qt(o))],Gt(It(e),t));$t(a,1/n.getResolutionForExtentInternal(s,i)),o=a}var u=n.getConstrainedResolution(n.getResolutionForExtentInternal(o,i)),l=n.getConstrainedCenter(Yt(o),u);n.animateInternal({resolution:u,center:l,duration:this.duration_,easing:Vi})}var Pa=function(t){function e(e){var r=this,n=e||{},i=n.condition?n.condition:oa;return(r=t.call(this,{condition:i,className:n.className||"ol-dragzoom",minArea:n.minArea,onBoxEnd:ba})||this).duration_=void 0!==n.duration?n.duration:200,r.out_=void 0!==n.out&&n.out,r}return Ca(e,t),e}(Ta),Ra=37,Oa=38,Ia=39,La=40,Fa=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Ma(t){var e=!1;if(t.type==Y){var r=t.originalEvent.keyCode;if(this.condition_(t)&&(r==La||r==Ra||r==Ia||r==Oa)){var n=t.map.getView(),i=n.getResolution()*this.pixelDelta_,o=0,a=0;r==La?a=-i:r==Ra?o=-i:r==Ia?o=i:a=i;var s=[o,a];Gi(s,n.getRotation()),function(t,e,r){var n=t.getCenterInternal();if(n){var i=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==r?r:250,easing:Wi,center:t.getConstrainedCenter(i)})}}(n,s,this.duration_),t.preventDefault(),e=!0}}return!e}var Aa=function(t){function e(e){var r=t.call(this,{handleEvent:Ma})||this,n=e||{};return r.defaultCondition_=function(t){return ia(t)&&aa(t)},r.condition_=void 0!==n.condition?n.condition:r.defaultCondition_,r.duration_=void 0!==n.duration?n.duration:100,r.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,r}return Fa(e,t),e}(Zo),Na=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Ga(t){var e=!1;if(t.type==Y||t.type==V){var r=t.originalEvent.charCode;if(this.condition_(t)&&(r=="+".charCodeAt(0)||r=="-".charCodeAt(0))){var n=t.map,i=r=="+".charCodeAt(0)?this.delta_:-this.delta_;Wo(n.getView(),i,void 0,this.duration_),t.preventDefault(),e=!0}}return!e}var ja=function(t){function e(e){var r=t.call(this,{handleEvent:Ga})||this,n=e||{};return r.condition_=n.condition?n.condition:aa,r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:100,r}return Na(e,t),e}(Zo),Da=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ka="trackpad",Ua="wheel",za=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,n)||this).totalDelta_=0,r.lastDelta_=0,r.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,r.duration_=void 0!==n.duration?n.duration:250,r.timeout_=void 0!==n.timeout?n.timeout:80,r.useAnchor_=void 0===n.useAnchor||n.useAnchor,r.condition_=n.condition?n.condition:ta,r.lastAnchor_=null,r.startTime_=void 0,r.timeoutId_,r.mode_=void 0,r.trackpadEventGap_=400,r.trackpadTimeoutId_,r.deltaPerZoom_=300,r}return Da(e,t),e.prototype.conditionInternal_=function(t){var e=!0;return t.map.getTargetElement().hasAttribute("tabindex")&&(e=$o(t)),e&&this.condition_(t)},e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.conditionInternal_(t))return!0;if(t.type!==K)return!0;t.preventDefault();var e,r=t.map,n=t.originalEvent;if(this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==K&&(e=n.deltaY,Nn&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=Dn),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var i=Date.now();void 0===this.startTime_&&(this.startTime_=i),(!this.mode_||i-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?ka:Ua);var o=r.getView();if(this.mode_===ka&&!o.getConstrainResolution())return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=i,!1;this.totalDelta_+=e;var a=Math.max(this.timeout_-(i-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,r),a),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var r=-he(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;e.getConstrainResolution()&&(r=r?r>0?1:-1:0),Wo(e,r,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(Zo),Ba=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ya=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=O),(r=t.call(this,i)||this).anchor_=null,r.lastAngle_=void 0,r.rotating_=!1,r.rotationDelta_=0,r.threshold_=void 0!==n.threshold?n.threshold:.3,r.duration_=void 0!==n.duration?n.duration:250,r}return Ba(e,t),e.prototype.handleDragEvent=function(t){var e=0,r=this.targetPointers[0],n=this.targetPointers[1],i=Math.atan2(n.clientY-r.clientY,n.clientX-r.clientX);if(void 0!==this.lastAngle_){var o=i-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=i;var a=t.map,s=a.getView();if(s.getConstraints().rotation!==Si){var u=a.getViewport().getBoundingClientRect(),l=ha(this.targetPointers);l[0]-=u.left,l[1]-=u.top,this.anchor_=a.getCoordinateFromPixelInternal(l),this.rotating_&&(a.render(),s.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(ca),Va=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xa=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=O),(r=t.call(this,i)||this).anchor_=null,r.duration_=void 0!==n.duration?n.duration:400,r.lastDistance_=void 0,r.lastScaleDelta_=1,r}return Va(e,t),e.prototype.handleDragEvent=function(t){var e=1,r=this.targetPointers[0],n=this.targetPointers[1],i=r.clientX-n.clientX,o=r.clientY-n.clientY,a=Math.sqrt(i*i+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/a),this.lastDistance_=a;var s=t.map,u=s.getView();1!=e&&(this.lastScaleDelta_=e);var l=s.getViewport().getBoundingClientRect(),h=ha(this.targetPointers);h[0]-=l.left,h[1]-=l.top,this.anchor_=s.getCoordinateFromPixelInternal(h),s.render(),u.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),r=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,r),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(ca);function Wa(t){var e=t||{},r=new at,n=new On(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&r.push(new ga),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&r.push(new Ho({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&r.push(new da({condition:e.onFocusOnly?$o:void 0,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&r.push(new Ya),(void 0===e.pinchZoom||e.pinchZoom)&&r.push(new Xa({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(r.push(new Aa),r.push(new ja({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&r.push(new za({condition:e.onFocusOnly?$o:void 0,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&r.push(new Pa({duration:e.zoomDuration})),r}var Za=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ka=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.inversePixelTransform=r,o.frameState=n,o.context=i,o}return Za(e,t),e}(F),qa=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,Ha=/^([a-z]*)$|^hsla?\(.*\)$/i;function Ja(t){return"string"==typeof t?t:is(t)}function Qa(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var r=getComputedStyle(e).color;return document.body.removeChild(e),r}return""}var $a,ts,es=($a={},ts=0,function(t){var e;if($a.hasOwnProperty(t))e=$a[t];else{if(ts>=1024){var r=0;for(var n in $a)0==(3&r++)&&(delete $a[n],--ts)}e=function(t){var e,r,n,i,o;if(Ha.exec(t)&&(t=Qa(t)),qa.exec(t)){var a=t.length-1,s=void 0;s=a<=4?1:2;var u=4===a||8===a;e=parseInt(t.substr(1+0*s,s),16),r=parseInt(t.substr(1+1*s,s),16),n=parseInt(t.substr(1+2*s,s),16),i=u?parseInt(t.substr(1+3*s,s),16):255,1==s&&(e=(e<<4)+e,r=(r<<4)+r,n=(n<<4)+n,u&&(i=(i<<4)+i)),o=[e,r,n,i/255]}else 0==t.indexOf("rgba(")?ns(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),ns(o)):st(!1,14);return o}(t),$a[t]=e,++ts}return e});function rs(t){return Array.isArray(t)?t:es(t)}function ns(t){return t[0]=he(t[0]+.5|0,0,255),t[1]=he(t[1]+.5|0,0,255),t[2]=he(t[2]+.5|0,0,255),t[3]=he(t[3],0,1),t}function is(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var r=t[1];r!=(0|r)&&(r=r+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+r+","+n+","+(void 0===t[3]?1:t[3])+")"}var os=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var r=this.cache_[e];0!=(3&t++)||r.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,r){var n=as(t,e,r);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,r,n){var i=as(t,e,r);this.cache_[i]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function as(t,e,r){return e+":"+t+":"+(r?Ja(r):"null")}var ss=new os;function us(t){return Array.isArray(t)?is(t):t}var ls=function(){function t(){}return t.prototype.drawCustom=function(t,e,r){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}(),hs=[],cs=[0,0,0,0],ps=new rt,fs=new A;fs.setSize=function(){console.warn("labelCache is deprecated.")};var ds,_s,gs,ys=null,vs={},ms=function(){var t,e,r=["monospace","serif"],n=r.length,i="wmytzilWMYTZIL@#/&?$%10";function o(t,o,a){for(var s=!0,u=0;u=0;--n)for(var i=r[n],o=i.items,a=0,s=o.length;a=0;--x){var w=g[x],S=w.layer;if(S.hasRenderer()&&Mo(w,l)&&a.call(s,S)){var E=S.getRenderer(),T=S.getSource();if(E&&T){var C=T.getWrapX()?p:t,b=h.bind(null,w.managed);v[0]=C[0]+f[m][0],v[1]=C[1]+f[m][1],u=E.forEachFeatureAtCoordinate(v,e,r,b,_)}if(u)return u}}},e.prototype.forEachLayerAtPixel=function(t,e,r,i,o){return n()},e.prototype.hasFeatureAtCoordinate=function(t,e,r,n,i,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,r,n,R,this,i,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){this.declutterTree_=Zs(t,this.declutterTree_)},e.prototype.scheduleExpireIconCache=function(t){ss.canExpireCache()&&t.postRenderFunctions.push(qs)},e}(m),Js=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Qs=function(t){function e(e){var r=t.call(this,e)||this;r.fontChangeListenerKey_=g(ps,c,e.redrawText.bind(e)),r.element_=document.createElement("div");var n=r.element_.style;n.position="absolute",n.width="100%",n.height="100%",n.zIndex="0",r.element_.className="ol-unselectable ol-layers";var i=e.getViewport();return i.insertBefore(r.element_,i.firstChild||null),r.children_=[],r.renderedVisible_=!0,r}return Js(e,t),e.prototype.dispatchRenderEvent=function(t,e){var r=this.getMap();if(r.hasListener(t)){var n=new Ka(t,void 0,e);r.dispatchEvent(n)}},e.prototype.disposeInternal=function(){v(this.fontChangeListenerKey_),this.element_.parentNode.removeChild(this.element_),t.prototype.disposeInternal.call(this)},e.prototype.renderFrame=function(e){if(e){this.calculateMatrices2D(e),this.dispatchRenderEvent(ai,e);var r=e.layerStatesArray.sort((function(t,e){return t.zIndex-e.zIndex})),n=e.viewState;this.children_.length=0;for(var i=null,o=0,a=r.length;o=0;--s){var u=a[s],l=u.layer;if(l.hasRenderer()&&Mo(u,o)&&i(l)){var h=l.getRenderer().getDataAtPixel(t,e,r);if(h){var c=n(l,h);if(c)return c}}}},e}(Hs),$s=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tu=function(t){function e(e){return(e=p({},e)).controls||(e.controls=Yo()),e.interactions||(e.interactions=Wa()),t.call(this,e)||this}return $s(e,t),e.prototype.createRenderer=function(){return new Qs(this)},e}(bo),eu="bottom-left",ru="bottom-center",nu="bottom-right",iu="center-left",ou="center-center",au="center-right",su="top-left",uu="top-center",lu="top-right",hu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cu="element",pu="map",fu="offset",du="position",_u="positioning",gu=function(t){function e(e){var r=t.call(this)||this;r.options=e,r.id=e.id,r.insertFirst=void 0===e.insertFirst||e.insertFirst,r.stopEvent=void 0===e.stopEvent||e.stopEvent,r.element=document.createElement("div"),r.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",r.element.style.position="absolute";var n=e.autoPan;return n&&"object"!=typeof n&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),r.autoPan=n||!1,r.rendered={transform_:"",visible:!0},r.mapPostrenderListenerKey=null,r.addEventListener(et(cu),r.handleElementChanged),r.addEventListener(et(pu),r.handleMapChanged),r.addEventListener(et(fu),r.handleOffsetChanged),r.addEventListener(et(du),r.handlePositionChanged),r.addEventListener(et(_u),r.handlePositioningChanged),void 0!==e.element&&r.setElement(e.element),r.setOffset(void 0!==e.offset?e.offset:[0,0]),r.setPositioning(void 0!==e.positioning?e.positioning:su),void 0!==e.position&&r.setPosition(e.position),r}return hu(e,t),e.prototype.getElement=function(){return this.get(cu)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(pu)},e.prototype.getOffset=function(){return this.get(fu)},e.prototype.getPosition=function(){return this.get(du)},e.prototype.getPositioning=function(){return this.get(_u)},e.prototype.handleElementChanged=function(){ro(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(eo(this.element),v(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=g(t,Jn,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(cu,t)},e.prototype.setMap=function(t){this.set(pu,t)},e.prototype.setOffset=function(t){this.set(fu,t)},e.prototype.setPosition=function(t){this.set(du,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(du)){var r=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),i=this.getRect(n,[Qi(n),$i(n)]),o=void 0===t.margin?20:t.margin;if(!Ct(r,i)){var a=i[0]-r[0],s=r[2]-i[2],u=i[1]-r[1],l=r[3]-i[3],h=[0,0];if(a<0?h[0]=a-o:s<0&&(h[0]=Math.abs(s)+o),u<0?h[1]=u-o:l<0&&(h[1]=Math.abs(l)+o),0!==h[0]||0!==h[1]){var c=e.getView().getCenterInternal(),p=e.getPixelFromCoordinateInternal(c),f=[p[0]+h[0],p[1]+h[1]],d=t.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(f),duration:d.duration,easing:d.easing})}}}},e.prototype.getRect=function(t,e){var r=t.getBoundingClientRect(),n=r.left+window.pageXOffset,i=r.top+window.pageYOffset;return[n,i,n+e[0],i+e[1]]},e.prototype.setPositioning=function(t){this.set(_u,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var r=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(r,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var r=this.element.style,n=this.getOffset(),i=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",a=Math.round(t[1]+n[1])+"px",s="0%",u="0%";i==nu||i==au||i==lu?s="-100%":i!=ru&&i!=ou&&i!=uu||(s="-50%"),i==eu||i==ru||i==nu?u="-100%":i!=iu&&i!=ou&&i!=au||(u="-50%");var l="translate("+s+", "+u+") translate("+o+", "+a+")";this.rendered.transform_!=l&&(this.rendered.transform_=l,r.transform=l,r.msTransform=l)},e.prototype.getOptions=function(){return this.options},e}(rt),yu="arraybuffer",vu="json",mu="text",xu="xml",wu=!1;function Su(t,e,r,n){return function(i,o,a){var s=new XMLHttpRequest;s.open("GET","function"==typeof t?t(i,o,a):t,!0),e.getType()==yu&&(s.responseType="arraybuffer"),s.withCredentials=wu,s.onload=function(t){if(!s.status||s.status>=200&&s.status<300){var o=e.getType(),u=void 0;o==vu||o==mu?u=s.responseText:o==xu?(u=s.responseXML)||(u=(new DOMParser).parseFromString(s.responseText,"application/xml")):o==yu&&(u=s.response),u?r.call(this,e.readFeatures(u,{extent:i,featureProjection:a}),e.readProjection(u)):n.call(this)}else n.call(this)}.bind(this),s.onerror=function(){n.call(this)}.bind(this),s.send()}}function Eu(t,e){return Su(t,e,(function(t,e){"function"==typeof this.addFeatures&&this.addFeatures(t)}),I)}function Tu(t,e){return[[-1/0,-1/0,1/0,1/0]]}var Cu=function(){function t(t,e,r,n){this.minX=t,this.maxX=e,this.minY=r,this.maxY=n}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function bu(t,e,r,n,i){return void 0!==i?(i.minX=t,i.maxX=e,i.minY=r,i.maxY=n,i):new Cu(t,e,r,n)}var Pu=Cu;function Ru(t,e,r,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=r,n):[t,e,r]}function Ou(t,e,r){return t+"/"+e+"/"+r}function Iu(t){return Ou(t[0],t[1],t[2])}function Lu(t){return t.split("/").map(Number)}function Fu(t){return(t[1]<0||r&&0===o)}))),17),!t.origins)for(var o=0,a=this.resolutions_.length-1;o=this.minZoom;){if(e(s,2===this.zoomFactor_?bu(i=Math.floor(i/2),i,o=Math.floor(o/2),o,r):this.getTileRangeForExtentAndZ(a,s,r)))return!0;--s}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,r){if(t[0]0?n:Math.max(a/s[0],o/s[1]),l=i+1,h=new Array(l),c=0;c=0;o--)this.postProcessPasses_[o].init(t);e.bindTexture(e.TEXTURE_2D,null),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.prepareDrawToRenderTarget=function(t,e,r){var n=this.getGL(),i=e.getSize();n.bindFramebuffer(n.FRAMEBUFFER,e.getFramebuffer()),n.viewport(0,0,i[0],i[1]),n.bindTexture(n.TEXTURE_2D,e.getTexture()),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.ONE,r?n.ZERO:n.ONE_MINUS_SRC_ALPHA),n.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.drawElements=function(t,e){var r=this.getGL(),n=r.UNSIGNED_INT,i=e-t,o=4*t;r.drawElements(r.TRIANGLES,i,n,o)},e.prototype.finalizeDraw=function(t){for(var e=0;ethis.size_[0]||e>=this.size_[1])return Il[0]=0,Il[1]=0,Il[2]=0,Il[3]=0,Il;this.readAll();var r=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return Il[0]=this.data_[4*r],Il[1]=this.data_[4*r+1],Il[2]=this.data_[4*r+2],Il[3]=this.data_[4*r+3],Il},t.prototype.getTexture=function(){return this.texture_},t.prototype.getFramebuffer=function(){return this.framebuffer_},t.prototype.updateSize_=function(){var t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),this.data_=new Uint8Array(t[0]*t[1]*4)},t}(),Fl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ml=function(t){function e(e){var r=t.call(this,{extent:e.extent,origin:e.origin,origins:e.origins,resolutions:e.resolutions,tileSize:e.tileSize,tileSizes:e.tileSizes,sizes:e.sizes})||this;return r.matrixIds_=e.matrixIds,r}return Fl(e,t),e.prototype.getMatrixId=function(t){return this.matrixIds_[t]},e.prototype.getMatrixIds=function(){return this.matrixIds_},e}(Au),Al=Ml;function Nl(t,e,r){var n=[],i=[],o=[],a=[],s=[],u=void 0!==r?r:[],l=t.SupportedCRS,h=We(l.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"))||We(l),c=h.getMetersPerUnit(),p="ne"==h.getAxisOrientation().substr(0,2);return t.TileMatrix.sort((function(t,e){return e.ScaleDenominator-t.ScaleDenominator})),t.TileMatrix.forEach((function(e){if(!(u.length>0)||C(u,(function(r){return e.Identifier==r.TileMatrix||-1===e.Identifier.indexOf(":")&&t.Identifier+":"+e.Identifier===r.TileMatrix}))){i.push(e.Identifier);var r=28e-5*e.ScaleDenominator/c,l=e.TileWidth,h=e.TileHeight;p?o.push([e.TopLeftCorner[1],e.TopLeftCorner[0]]):o.push(e.TopLeftCorner),n.push(r),a.push(l==h?l:[l,h]),s.push([e.MatrixWidth,e.MatrixHeight])}})),new Ml({extent:e,origins:o,resolutions:n,matrixIds:i,tileSizes:a,sizes:s})}var Gl=function(){function t(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.displacement_=t.displacement}return t.prototype.clone=function(){return new t({opacity:this.getOpacity(),scale:this.getScale(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.opacity_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getDisplacement=function(){return this.displacement_},t.prototype.getAnchor=function(){return n()},t.prototype.getImage=function(t){return n()},t.prototype.getHitDetectionImage=function(t){return n()},t.prototype.getImageState=function(){return n()},t.prototype.getImageSize=function(){return n()},t.prototype.getHitDetectionImageSize=function(){return n()},t.prototype.getOrigin=function(){return n()},t.prototype.getSize=function(){return n()},t.prototype.setOpacity=function(t){this.opacity_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t},t.prototype.listenImageChange=function(t){n()},t.prototype.load=function(){n()},t.prototype.unlistenImageChange=function(t){n()},t}(),jl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Dl=function(t){function e(e){var r=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(r=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_=null,r.hitDetectionCanvas_=null,r.fill_=void 0!==e.fill?e.fill:null,r.origin_=[0,0],r.points_=e.points,r.radius_=void 0!==e.radius?e.radius:e.radius1,r.radius2_=e.radius2,r.angle_=void 0!==e.angle?e.angle:0,r.stroke_=void 0!==e.stroke?e.stroke:null,r.anchor_=null,r.size_=null,r.imageSize_=null,r.hitDetectionImageSize_=null,r.render(),r}return jl(e,t),e.prototype.clone=function(){var t=new e({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(t){return this.hitDetectionCanvas_},e.prototype.getImage=function(t){return this.canvas_},e.prototype.getImageSize=function(){return this.imageSize_},e.prototype.getHitDetectionImageSize=function(){return this.hitDetectionImageSize_},e.prototype.getImageState=function(){return Fs},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.render=function(){var t,e="round",r="round",n=0,i=null,o=0,a=0;this.stroke_&&(null===(t=this.stroke_.getColor())&&(t="#000"),t=us(t),void 0===(a=this.stroke_.getWidth())&&(a=1),i=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset(),void 0===(r=this.stroke_.getLineJoin())&&(r="round"),void 0===(e=this.stroke_.getLineCap())&&(e="round"),void 0===(n=this.stroke_.getMiterLimit())&&(n=10));var s=2*(this.radius_+a)+1,u={strokeStyle:t,strokeWidth:a,size:s,lineCap:e,lineDash:i,lineDashOffset:o,lineJoin:r,miterLimit:n},l=Ji(s,s);this.canvas_=l.canvas;var h=s=this.canvas_.width,c=this.getDisplacement();this.draw_(u,l,0,0),this.createHitDetectionCanvas_(u),this.anchor_=[s/2-c[0],s/2+c[1]],this.size_=[s,s],this.imageSize_=[h,h]},e.prototype.draw_=function(t,e,r,n){var i,o,a;e.setTransform(1,0,0,1,0,0),e.translate(r,n),e.beginPath();var s=this.points_;if(s===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var u=void 0!==this.radius2_?this.radius2_:this.radius_;for(u!==this.radius_&&(s*=2),i=0;i<=s;i++)o=2*i*Math.PI/s-Math.PI/2+this.angle_,a=i%2==0?this.radius_:u,e.lineTo(t.size/2+a*Math.cos(o),t.size/2+a*Math.sin(o))}if(this.fill_){var l=this.fill_.getColor();null===l&&(l="#000"),e.fillStyle=us(l),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,e.setLineDash&&t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke()),e.closePath()},e.prototype.createHitDetectionCanvas_=function(t){if(this.hitDetectionImageSize_=[t.size,t.size],this.hitDetectionCanvas_=this.canvas_,this.fill_){var e=this.fill_.getColor(),r=0;if("string"==typeof e&&(e=rs(e)),null===e?r=1:Array.isArray(e)&&(r=4===e.length?e[3]:1),0===r){var n=Ji(t.size,t.size);this.hitDetectionCanvas_=n.canvas,this.drawHitDetectionCanvas_(t,n,0,0)}}},e.prototype.drawHitDetectionCanvas_=function(t,e,r,n){e.setTransform(1,0,0,1,0,0),e.translate(r,n),e.beginPath();var i=this.points_;if(i===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o=void 0!==this.radius2_?this.radius2_:this.radius_;o!==this.radius_&&(i*=2);var a=void 0,s=void 0,u=void 0;for(a=0;a<=i;a++)u=2*a*Math.PI/i-Math.PI/2+this.angle_,s=a%2==0?this.radius_:o,e.lineTo(t.size/2+s*Math.cos(u),t.size/2+s*Math.sin(u))}e.fillStyle="#000",e.fill(),this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.stroke()),e.closePath()},e}(Gl),kl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ul=function(t){function e(e){var r=e||{};return t.call(this,{points:1/0,fill:r.fill,radius:r.radius,stroke:r.stroke,displacement:void 0!==r.displacement?r.displacement:[0,0]})||this}return kl(e,t),e.prototype.clone=function(){var t=new e({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.setRadius=function(t){this.radius_=t,this.render()},e}(Dl),zl=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}(),Bl="fraction",Yl="pixels",Vl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xl=function(t){function e(e,r,n,i){var o=t.call(this)||this;return o.extent=e,o.pixelRatio_=n,o.resolution=r,o.state=i,o}return Vl(e,t),e.prototype.changed=function(){this.dispatchEvent(N)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return n()},e.prototype.getPixelRatio=function(){return this.pixelRatio_},e.prototype.getResolution=function(){return this.resolution},e.prototype.getState=function(){return this.state},e.prototype.load=function(){n()},e}(A),Wl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Zl(t,e,r){var n=t;if(n.src&&Un){var i=n.decode(),o=!0;return i.then((function(){o&&e()})).catch((function(t){o&&("EncodingError"===t.name&&"Invalid image type."===t.message?e():r())})),function(){o=!1}}var a=[y(n,X,e),y(n,G,r)];return function(){a.forEach(v)}}var Kl=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,n,Is)||this;return s.src_=i,s.image_=new Image,null!==o&&(s.image_.crossOrigin=o),s.unlisten_=null,s.state=Is,s.imageLoadFunction_=a,s}return Wl(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=Ms,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=Wt(this.extent)/this.image_.height),this.state=Fs,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=Is&&this.state!=Ms||(this.state=Ls,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=Zl(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.setImage=function(t){this.image_=t},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(Xl),ql=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hl=function(t){function e(e,r,n,i,o,a){var s=t.call(this)||this;return s.hitDetectionImage_=null,s.image_=e||new Image,null!==i&&(s.image_.crossOrigin=i),s.canvas_=a?document.createElement("canvas"):null,s.color_=a,s.unlisten_=null,s.imageState_=o,s.size_=n,s.src_=r,s.tainted_,s}return ql(e,t),e.prototype.isTainted_=function(t){if(void 0===this.tainted_&&this.imageState_===Fs){t||(t=Ji(1,1)).drawImage(this.image_,0,0);try{t.getImageData(0,0,1,1),this.tainted_=!1}catch(t){this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(N)},e.prototype.handleImageError_=function(){this.imageState_=Ms,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=Fs,this.size_&&(this.image_.width=this.size_[0],this.image_.height=this.size_[1]),this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.replaceColor_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.canvas_?this.canvas_:this.image_},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(t){if(!this.hitDetectionImage_)if(this.isTainted_()){var e=this.size_[0],r=this.size_[1],n=Ji(e,r);n.fillRect(0,0,e,r),this.hitDetectionImage_=n.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Is){this.imageState_=Ls;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=Zl(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(){if(this.color_){this.canvas_.width=this.image_.width,this.canvas_.height=this.image_.height;var t=this.canvas_.getContext("2d");if(t.drawImage(this.image_,0,0),this.isTainted_(t)){var e=this.color_;return t.globalCompositeOperation="multiply",t.fillStyle="rgb("+e[0]+","+e[1]+","+e[2]+")",t.fillRect(0,0,this.image_.width,this.image_.height),t.globalCompositeOperation="destination-in",void t.drawImage(this.image_,0,0)}for(var r=t.getImageData(0,0,this.image_.width,this.image_.height),n=r.data,i=this.color_[0]/255,o=this.color_[1]/255,a=this.color_[2]/255,s=0,u=n.length;s0,6);var p=void 0!==n.src?Is:Fs;return r.color_=void 0!==n.color?rs(n.color):null,r.iconImage_=function(t,e,r,n,i,o){var a=ss.get(e,n,o);return a||(a=new Hl(t,e,r,n,i,o),ss.set(e,n,o,a)),a}(l,c,h,r.crossOrigin_,p,r.color_),r.offset_=void 0!==n.offset?n.offset:[0,0],r.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:$l,r.origin_=null,r.size_=void 0!==n.size?n.size:null,r}return eh(e,t),e.prototype.clone=function(){return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:this.getScale(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==Bl||this.anchorYUnits_==Bl){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==Bl&&(t[0]*=e[0]),this.anchorYUnits_==Bl&&(t[1]*=e[1])}if(this.anchorOrigin_!=$l){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=th&&this.anchorOrigin_!=Ql||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=Jl&&this.anchorOrigin_!=Ql||(t[1]=-t[1]+e[1])}return this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getHitDetectionImageSize=function(){return this.getImageSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(t){return this.iconImage_.getHitDetectionImage(t)},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_,e=this.getDisplacement();if(this.offsetOrigin_!=$l){var r=this.getSize(),n=this.iconImage_.getSize();if(!r||!n)return null;t=t.slice(),this.offsetOrigin_!=th&&this.offsetOrigin_!=Ql||(t[0]=n[0]-r[0]-t[0]),this.offsetOrigin_!=Jl&&this.offsetOrigin_!=Ql||(t[1]=n[1]-r[1]-t[1])}return t[0]+=e[0],t[1]+=e[1],this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(N,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(N,t)},e}(Gl),nh=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),ih=function(){function t(t){var e=t||{};this.geometry_=null,this.geometryFunction_=uh,void 0!==e.geometry&&this.setGeometry(e.geometry),this.fill_=void 0!==e.fill?e.fill:null,this.image_=void 0!==e.image?e.image:null,this.renderer_=void 0!==e.renderer?e.renderer:null,this.stroke_=void 0!==e.stroke?e.stroke:null,this.text_=void 0!==e.text?e.text:null,this.zIndex_=e.zIndex}return t.prototype.clone=function(){var e=this.getGeometry();return e&&"object"==typeof e&&(e=e.clone()),new t({geometry:e,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.renderer_},t.prototype.setRenderer=function(t){this.renderer_=t},t.prototype.getGeometry=function(){return this.geometry_},t.prototype.getGeometryFunction=function(){return this.geometryFunction_},t.prototype.getFill=function(){return this.fill_},t.prototype.setFill=function(t){this.fill_=t},t.prototype.getImage=function(){return this.image_},t.prototype.setImage=function(t){this.image_=t},t.prototype.getStroke=function(){return this.stroke_},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.getText=function(){return this.text_},t.prototype.setText=function(t){this.text_=t},t.prototype.getZIndex=function(){return this.zIndex_},t.prototype.setGeometry=function(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=uh,this.geometry_=t},t.prototype.setZIndex=function(t){this.zIndex_=t},t}();var oh=null;function ah(t,e){if(!oh){var r=new zl({color:"rgba(255,255,255,0.4)"}),n=new nh({color:"#3399CC",width:1.25});oh=[new ih({image:new Ul({fill:r,stroke:n,radius:5}),fill:r,stroke:n})]}return oh}function sh(){var t={},e=[255,255,255,1],r=[0,153,255,1];return t[ae.POLYGON]=[new ih({fill:new zl({color:[255,255,255,.5]})})],t[ae.MULTI_POLYGON]=t[ae.POLYGON],t[ae.LINE_STRING]=[new ih({stroke:new nh({color:e,width:5})}),new ih({stroke:new nh({color:r,width:3})})],t[ae.MULTI_LINE_STRING]=t[ae.LINE_STRING],t[ae.CIRCLE]=t[ae.POLYGON].concat(t[ae.LINE_STRING]),t[ae.POINT]=[new ih({image:new Ul({radius:6,fill:new zl({color:r}),stroke:new nh({color:e,width:1.5})}),zIndex:1/0})],t[ae.MULTI_POINT]=t[ae.POINT],t[ae.GEOMETRY_COLLECTION]=t[ae.POLYGON].concat(t[ae.LINE_STRING],t[ae.POINT]),t}function uh(t){return t.getGeometry()}var lh=ih,hh="point",ch="line",ph=function(){function t(t){var e=t||{};this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.scale_=e.scale,this.text_=e.text,this.textAlign_=e.textAlign,this.textBaseline_=e.textBaseline,this.fill_=void 0!==e.fill?e.fill:new zl({color:"#333"}),this.maxAngle_=void 0!==e.maxAngle?e.maxAngle:Math.PI/4,this.placement_=void 0!==e.placement?e.placement:hh,this.overflow_=!!e.overflow,this.stroke_=void 0!==e.stroke?e.stroke:null,this.offsetX_=void 0!==e.offsetX?e.offsetX:0,this.offsetY_=void 0!==e.offsetY?e.offsetY:0,this.backgroundFill_=e.backgroundFill?e.backgroundFill:null,this.backgroundStroke_=e.backgroundStroke?e.backgroundStroke:null,this.padding_=void 0===e.padding?null:e.padding}return t.prototype.clone=function(){return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:this.getScale(),text:this.getText(),textAlign:this.getTextAlign(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()})},t.prototype.getOverflow=function(){return this.overflow_},t.prototype.getFont=function(){return this.font_},t.prototype.getMaxAngle=function(){return this.maxAngle_},t.prototype.getPlacement=function(){return this.placement_},t.prototype.getOffsetX=function(){return this.offsetX_},t.prototype.getOffsetY=function(){return this.offsetY_},t.prototype.getFill=function(){return this.fill_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getStroke=function(){return this.stroke_},t.prototype.getText=function(){return this.text_},t.prototype.getTextAlign=function(){return this.textAlign_},t.prototype.getTextBaseline=function(){return this.textBaseline_},t.prototype.getBackgroundFill=function(){return this.backgroundFill_},t.prototype.getBackgroundStroke=function(){return this.backgroundStroke_},t.prototype.getPadding=function(){return this.padding_},t.prototype.setOverflow=function(t){this.overflow_=t},t.prototype.setFont=function(t){this.font_=t},t.prototype.setMaxAngle=function(t){this.maxAngle_=t},t.prototype.setOffsetX=function(t){this.offsetX_=t},t.prototype.setOffsetY=function(t){this.offsetY_=t},t.prototype.setPlacement=function(t){this.placement_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setFill=function(t){this.fill_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.setText=function(t){this.text_=t},t.prototype.setTextAlign=function(t){this.textAlign_=t},t.prototype.setTextBaseline=function(t){this.textBaseline_=t},t.prototype.setBackgroundFill=function(t){this.backgroundFill_=t},t.prototype.setBackgroundStroke=function(t){this.backgroundStroke_=t},t.prototype.setPadding=function(t){this.padding_=t},t}();function fh(t,e){var r=/\{z\}/g,n=/\{x\}/g,i=/\{y\}/g,o=/\{-y\}/g;return function(a,s,u){return a?t.replace(r,a[0].toString()).replace(n,a[1].toString()).replace(i,a[2].toString()).replace(o,(function(){var t=a[0],r=e.getFullTileRange(t);return st(r,55),(r.getHeight()-a[2]-1).toString()})):void 0}}function dh(t,e){for(var r=t.length,n=new Array(r),i=0;it)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){n()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var r=this.transitionStarts_[t];if(r){if(-1===r)return 1}else r=e,this.transitionStarts_[t]=r;var n=e-r+1e3/60;return n>=this.transition_?1:Yi(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(A),wh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var Sh=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.crossOrigin_=i,s.src_=n,s.image_=new Image,null!==i&&(s.image_.crossOrigin=i),s.unlisten_=null,s.tileLoadFunction_=o,s}return wh(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.getKey=function(){return this.src_},e.prototype.handleImageError_=function(){var t;this.state=pi,this.unlistenImage_(),this.image_=((t=Ji(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=ci:this.state=fi,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==pi&&(this.state=li,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==li&&(this.state=hi,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Zl(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(xh),Eh=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var r=this.entries_[t];return st(void 0!==r,15),r===this.newest_||(r===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(r.newer.older=r.older,r.older.newer=r.newer),r.newer=null,r.older=this.newest_,this.newest_.newer=r,this.newest_=r),r.value_},t.prototype.remove=function(t){var e=this.entries_[t];return st(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){st(!(t in this.entries_),16);var r={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=r:this.oldest_=r,this.newest_=r,this.entries_[t]=r,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}(),Th=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ch=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Th(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=Lu(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(Iu(e.tileCoord)),e.release())}.bind(this))}},e}(Eh);function bh(t,e,r,n){var i=er(r,e,t),o=Ze(e,n,r),a=e.getMetersPerUnit();void 0!==a&&(o*=a);var s=t.getMetersPerUnit();void 0!==s&&(o/=s);var u=t.getExtent();if(!u||Tt(u,i)){var l=Ze(t,o,i)/o;isFinite(l)&&l>0&&(o/=l)}return o}function Ph(t,e,r,n){var i=r-t,o=n-e,a=Math.sqrt(i*i+o*o);return[Math.round(r+i/a),Math.round(n+o/a)]}function Rh(t,e,r,n,i,o,a,s,u,l,h){var c=Ji(Math.round(r*t),Math.round(r*e));if(0===u.length)return c.canvas;c.scale(r,r);var p=[1/0,1/0,-1/0,-1/0];u.forEach((function(t,e,r){At(p,t.extent)}));var f=Ht(p),d=Wt(p),_=Ji(Math.round(r*f/n),Math.round(r*d/n)),g=r/n;u.forEach((function(t,e,r){var n=t.extent[0]-p[0],i=-(t.extent[3]-p[3]),o=Ht(t.extent),a=Wt(t.extent);_.drawImage(t.image,l,l,t.image.width-2*l,t.image.height-2*l,n*g,i*g,o*g,a*g)}));var y=Kt(a);return s.getTriangles().forEach((function(t,e,i){var a=t.source,s=t.target,u=a[0][0],l=a[0][1],h=a[1][0],f=a[1][1],d=a[2][0],g=a[2][1],v=(s[0][0]-y[0])/o,m=-(s[0][1]-y[1])/o,x=(s[1][0]-y[0])/o,w=-(s[1][1]-y[1])/o,S=(s[2][0]-y[0])/o,E=-(s[2][1]-y[1])/o,T=u,C=l;u=0,l=0;var b=function(t){for(var e=t.length,r=0;ri&&(i=a,n=o)}if(0===i)return null;var s=t[n];t[n]=t[r],t[r]=s;for(var u=r+1;u=0;p--){c[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*c[p]}return c}([[h-=T,f-=C,0,0,x-v],[d-=T,g-=C,0,0,S-v],[0,0,h,f,w-m],[0,0,d,g,E-m]]);if(b){c.save(),c.beginPath();var P=(v+x+S)/3,R=(m+w+E)/3,O=Ph(P,R,v,m),I=Ph(P,R,x,w),L=Ph(P,R,S,E);c.moveTo(I[0],I[1]),c.lineTo(O[0],O[1]),c.lineTo(L[0],L[1]),c.clip(),c.transform(b[0],b[2],b[1],b[3],v,m),c.translate(p[0]-T,p[3]-C),c.scale(n/r,-n/r),c.drawImage(_.canvas,0,0),c.restore()}})),h&&(c.save(),c.strokeStyle="black",c.lineWidth=1,s.getTriangles().forEach((function(t,e,r){var n=t.target,i=(n[0][0]-y[0])/o,a=-(n[0][1]-y[1])/o,s=(n[1][0]-y[0])/o,u=-(n[1][1]-y[1])/o,l=(n[2][0]-y[0])/o,h=-(n[2][1]-y[1])/o;c.beginPath(),c.moveTo(s,u),c.lineTo(i,a),c.lineTo(l,h),c.closePath(),c.stroke()})),c.restore()),c.canvas}var Oh=function(){function t(t,e,r,n,i,o){this.sourceProj_=t,this.targetProj_=e;var a={},s=tr(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return a[e]||(a[e]=s(t)),a[e]},this.maxSourceExtent_=n,this.errorThresholdSquared_=i*i,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!n&&!!this.sourceProj_.getExtent()&&Ht(n)==Ht(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?Ht(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?Ht(this.targetProj_.getExtent()):null;var u=Kt(r),l=qt(r),h=Bt(r),c=zt(r),p=this.transformInv_(u),f=this.transformInv_(l),d=this.transformInv_(h),_=this.transformInv_(c),g=10+(o?Math.max(0,Math.ceil(Math.log2(Ut(r)/(o*o*256*256)))):0);if(this.addQuad_(u,l,h,c,p,f,d,_,g),this.wrapsXInSource_){var y=1/0;this.triangles_.forEach((function(t,e,r){y=Math.min(y,t.source[0][0],t.source[1][0],t.source[2][0])})),this.triangles_.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-y>this.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-y>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-y>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-y>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var r=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-r.5&&h<1,f=!1;if(u>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=Ht(xt([t,e,r,n]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&h&&(f=h>.25||f)}if(f||!this.maxSourceExtent_||Jt(l,this.maxSourceExtent_)){if(!(f||isFinite(i[0])&&isFinite(i[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(a[0])&&isFinite(a[1])&&isFinite(s[0])&&isFinite(s[1]))){if(!(u>0))return;f=!0}if(u>0){if(!f){var d=[(t[0]+r[0])/2,(t[1]+r[1])/2],_=this.transformInv_(d),g=void 0;if(p)g=(ge(i[0],c)+ge(a[0],c))/2-ge(_[0],c);else g=(i[0]+a[0])/2-_[0];var y=(i[1]+a[1])/2-_[1];f=g*g+y*y>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-r[0])<=Math.abs(t[1]-r[1])){var v=[(e[0]+r[0])/2,(e[1]+r[1])/2],m=this.transformInv_(v),x=[(n[0]+t[0])/2,(n[1]+t[1])/2],w=this.transformInv_(x);this.addQuad_(t,e,v,x,i,o,m,w,u-1),this.addQuad_(x,v,r,n,w,m,a,s,u-1)}else{var S=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(S),T=[(r[0]+n[0])/2,(r[1]+n[1])/2],C=this.transformInv_(T);this.addQuad_(t,S,T,n,i,E,C,s,u-1),this.addQuad_(S,e,r,T,E,o,a,C,u-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}this.addTriangle_(t,r,n,i,a,s),this.addTriangle_(t,e,r,i,o,a)}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,r,n){var i=e.source;Nt(t,i[0]),Nt(t,i[1]),Nt(t,i[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Ih=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Lh=function(t){function e(e,r,n,i,o,a,s,u,l,h,c){var p=t.call(this,o,li)||this;p.renderEdges_=void 0!==c&&c,p.pixelRatio_=s,p.gutter_=u,p.canvas_=null,p.sourceTileGrid_=r,p.targetTileGrid_=i,p.wrappedTileCoord_=a||o,p.sourceTiles_=[],p.sourcesListenerKeys_=null,p.sourceZ_=0;var f=i.getTileCoordExtent(p.wrappedTileCoord_),d=p.targetTileGrid_.getExtent(),_=p.sourceTileGrid_.getExtent(),g=d?Zt(f,d):f;if(0===Ut(g))return p.state=fi,p;var y=e.getExtent();y&&(_=_?Zt(_,y):y);var v=i.getResolution(p.wrappedTileCoord_[0]),m=bh(e,n,Yt(g),v);if(!isFinite(m)||m<=0)return p.state=fi,p;var x=void 0!==h?h:.5;if(p.triangulation_=new Oh(e,n,g,_,m*x,v),0===p.triangulation_.getTriangles().length)return p.state=fi,p;p.sourceZ_=r.getZForResolution(m);var w=p.triangulation_.calculateSourceExtent();if(_&&(e.canWrapX()?(w[1]=he(w[1],_[1],_[3]),w[3]=he(w[3],_[1],_[3])):w=Zt(w,_)),Ut(w)){for(var S=r.getTileRangeForExtentAndZ(w,p.sourceZ_),E=S.minX;E<=S.maxX;E++)for(var T=S.minY;T<=S.maxY;T++){var C=l(p.sourceZ_,E,T,s);C&&p.sourceTiles_.push(C)}0===p.sourceTiles_.length&&(p.state=fi)}else p.state=fi;return p}return Ih(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,r,n){e&&e.getState()==ci&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=pi;else{var e=this.wrappedTileCoord_[0],r=this.targetTileGrid_.getTileSize(e),n="number"==typeof r?r:r[0],i="number"==typeof r?r:r[1],o=this.targetTileGrid_.getResolution(e),a=this.sourceTileGrid_.getResolution(this.sourceZ_),s=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=Rh(n,i,this.pixelRatio_,a,this.sourceTileGrid_.getExtent(),o,s,this.triangulation_,t,this.gutter_,this.renderEdges_),this.state=ci}this.changed()},e.prototype.load=function(){if(this.state==li){this.state=hi,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,r,n){var i=e.getState();if(i==li||i==hi){t++;var o=g(e,N,(function(r){var n=e.getState();n!=ci&&n!=pi&&n!=fi||(v(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach((function(t,e,r){t.getState()==li&&t.load()})),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(v),this.sourcesListenerKeys_=null},e}(xh),Fh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Mh(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var Ah=function(t){function e(e){var r=t.call(this)||this;return r.projection_=We(e.projection),r.attributions_=Mh(e.attributions),r.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,r.loading=!1,r.state_=void 0!==e.state?e.state:yo,r.wrapX_=void 0!==e.wrapX&&e.wrapX,r}return Fh(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolutions=function(){return n()},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=Mh(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(rt),Nh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gh=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:e.projection,state:e.state,wrapX:e.wrapX})||this;r.opaque_=void 0!==e.opaque&&e.opaque,r.tilePixelRatio_=void 0!==e.tilePixelRatio?e.tilePixelRatio:1,r.tileGrid=void 0!==e.tileGrid?e.tileGrid:null;var n=[256,256],i=e.tileGrid;i&&To(i.getTileSize(i.getMinZoom()),n);var o="undefined"!=typeof screen,a=o?screen.availWidth||screen.width:1920,s=o?screen.availHeight||screen.height:1080,u=4*Math.ceil(a/n[0])*Math.ceil(s/n[1]);return r.tileCache=new Ch(Math.max(u,e.cacheSize||0)),r.tmpSize=[0,0],r.key_=e.key||"",r.tileOptions={transition:e.transition},r.zDirection=e.zDirection?e.zDirection:0,r}return Nh(e,t),e.prototype.canExpireCache=function(){return this.tileCache.canExpireCache()},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);r&&r.expireCache(e)},e.prototype.forEachLoadedTile=function(t,e,r,n){var i=this.getTileCacheForProjection(t);if(!i)return!1;for(var o,a,s,u=!0,l=r.minX;l<=r.maxX;++l)for(var h=r.minY;h<=r.maxY;++h)a=Ou(e,l,h),s=!1,i.containsKey(a)&&(s=(o=i.get(a)).getState()===ci)&&(s=!1!==n(o)),s||(u=!1);return u},e.prototype.getGutterForProjection=function(t){return 0},e.prototype.getKey=function(){return this.key_},e.prototype.setKey=function(t){this.key_!==t&&(this.key_=t,this.changed())},e.prototype.getOpaque=function(t){return this.opaque_},e.prototype.getResolutions=function(){return this.tileGrid.getResolutions()},e.prototype.getTile=function(t,e,r,i,o){return n()},e.prototype.getTileGrid=function(){return this.tileGrid},e.prototype.getTileGridForProjection=function(t){return this.tileGrid?this.tileGrid:Nu(t)},e.prototype.getTileCacheForProjection=function(t){var e=this.getProjection();return e&&!Qe(e,t)?null:this.tileCache},e.prototype.getTilePixelRatio=function(t){return this.tilePixelRatio_},e.prototype.getTilePixelSize=function(t,e,r){var n=this.getTileGridForProjection(r),i=this.getTilePixelRatio(e),o=To(n.getTileSize(t),this.tmpSize);return 1==i?o:Eo(o,i,this.tmpSize)},e.prototype.getTileCoordForTileUrlFunction=function(t,e){var r=void 0!==e?e:this.getProjection(),n=this.getTileGridForProjection(r);return this.getWrapX()&&r.isGlobal()&&(t=function(t,e,r){var n=e[0],i=t.getTileCoordCenter(e),o=ku(r);if(Tt(o,i))return e;var a=Ht(o),s=Math.ceil((o[0]-i[0])/a);return i[0]+=a*s,t.getTileCoordForCoordAndZ(i,n)}(n,t,r)),function(t,e){var r=t[0],n=t[1],i=t[2];if(e.getMinZoom()>r||r>e.getMaxZoom())return!1;var o,a=e.getExtent();return!(o=a?e.getTileRangeForExtentAndZ(a,r):e.getFullTileRange(r))||o.containsXY(n,i)}(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.useTile=function(t,e,r,n){},e}(Ah),jh=function(t){function e(e,r){var n=t.call(this,e)||this;return n.tile=r,n}return Nh(e,t),e}(F),Dh=Gh,kh="tileloadstart",Uh="tileloadend",zh="tileloaderror",Bh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yh=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tilePixelRatio:e.tilePixelRatio,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection})||this;return r.generateTileUrlFunction_=!e.tileUrlFunction,r.tileLoadFunction=e.tileLoadFunction,r.tileUrlFunction=e.tileUrlFunction?e.tileUrlFunction.bind(r):gh,r.urls=null,e.urls?r.setUrls(e.urls):e.url&&r.setUrl(e.url),r.tileLoadingKeys_={},r}return Bh(e,t),e.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},e.prototype.getTileUrlFunction=function(){return this.tileUrlFunction},e.prototype.getUrls=function(){return this.urls},e.prototype.handleTileChange=function(t){var e,r=t.target,n=o(r),i=r.getState();i==hi?(this.tileLoadingKeys_[n]=!0,e=kh):n in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[n],e=i==pi?zh:i==ci?Uh:void 0),null!=e&&this.dispatchEvent(new jh(e,r))},e.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},e.prototype.setTileUrlFunction=function(t,e){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==e?this.setKey(e):this.changed()},e.prototype.setUrl=function(t){var e=yh(t);this.urls=e,this.setUrls(e)},e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(dh(t,this.tileGrid),e):this.setKey(e)},e.prototype.useTile=function(t,e,r){var n=Ou(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Dh),Vh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Xh(t,e){t.getImage().src=e}var Wh=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:Xh,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection})||this;return r.crossOrigin=void 0!==e.crossOrigin?e.crossOrigin:null,r.tileClass=void 0!==e.tileClass?e.tileClass:Sh,r.tileCacheForProjection={},r.tileGridForProjection={},r.reprojectionErrorThreshold_=e.reprojectionErrorThreshold,r.renderReprojectionEdges_=!1,r}return Vh(e,t),e.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);for(var n in this.tileCache.expireCache(this.tileCache==r?e:{}),this.tileCacheForProjection){var i=this.tileCacheForProjection[n];i.expireCache(i==r?e:{})}},e.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Qe(this.getProjection(),t)?0:this.getGutter()},e.prototype.getGutter=function(){return 0},e.prototype.getOpaque=function(e){return!(this.getProjection()&&e&&!Qe(this.getProjection(),e))&&t.prototype.getOpaque.call(this,e)},e.prototype.getTileGridForProjection=function(t){var e=this.getProjection();if(!this.tileGrid||e&&!Qe(e,t)){var r=o(t);return r in this.tileGridForProjection||(this.tileGridForProjection[r]=Nu(t)),this.tileGridForProjection[r]}return this.tileGrid},e.prototype.getTileCacheForProjection=function(t){var e=this.getProjection();if(!e||Qe(e,t))return this.tileCache;var r=o(t);return r in this.tileCacheForProjection||(this.tileCacheForProjection[r]=new Ch(this.tileCache.highWaterMark)),this.tileCacheForProjection[r]},e.prototype.createTile_=function(t,e,r,n,i,o){var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),u=s?this.tileUrlFunction(s,n,i):void 0,l=new this.tileClass(a,void 0!==u?li:fi,void 0!==u?u:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return l.key=o,l.addEventListener(N,this.handleTileChange.bind(this)),l},e.prototype.getTile=function(t,e,r,n,i){var o=this.getProjection();if(o&&i&&!Qe(o,i)){var a=this.getTileCacheForProjection(i),s=[t,e,r],u=void 0,l=Iu(s);a.containsKey(l)&&(u=a.get(l));var h=this.getKey();if(u&&u.key==h)return u;var c=this.getTileGridForProjection(o),p=this.getTileGridForProjection(i),f=this.getTileCoordForTileUrlFunction(s,i),d=new Lh(o,c,i,p,s,f,this.getTilePixelRatio(n),this.getGutter(),function(t,e,r,n){return this.getTileInternal(t,e,r,n,o)}.bind(this),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_);return d.key=h,u?(d.interimTile=u,d.refreshInterimChain(),a.replace(l,d)):a.set(l,d),d}return this.getTileInternal(t,e,r,n,o||i)},e.prototype.getTileInternal=function(t,e,r,n,i){var o=null,a=Ou(t,e,r),s=this.getKey();if(this.tileCache.containsKey(a)){if((o=this.tileCache.get(a)).key!=s){var u=o;o=this.createTile_(t,e,r,n,i,s),u.getState()==li?o.interimTile=u.interimTile:o.interimTile=u,o.refreshInterimChain(),this.tileCache.replace(a,o)}}else o=this.createTile_(t,e,r,n,i,s),this.tileCache.set(a,o);return o},e.prototype.setRenderReprojectionEdges=function(t){if(this.renderReprojectionEdges_!=t){for(var e in this.renderReprojectionEdges_=t,this.tileCacheForProjection)this.tileCacheForProjection[e].clear();this.changed()}},e.prototype.setTileGridForProjection=function(t,e){var r=We(t);if(r){var n=o(r);n in this.tileGridForProjection||(this.tileGridForProjection[n]=e)}},e}(Yh),Zh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var Kh=function(t){function e(e){var r=this,n=void 0!==e.hidpi&&e.hidpi;return(r=t.call(this,{cacheSize:e.cacheSize,crossOrigin:"anonymous",opaque:!0,projection:We("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:go,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:n?2:1,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this).hidpi_=n,r.culture_=void 0!==e.culture?e.culture:"en-us",r.maxZoom_=void 0!==e.maxZoom?e.maxZoom:-1,r.apiKey_=e.key,r.imagerySet_=e.imagerySet,vh("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+r.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+r.apiKey_+"&c="+r.culture_,r.handleImageryMetadataResponse.bind(r),void 0,"jsonp"),r}return Zh(e,t),e.prototype.getApiKey=function(){return this.apiKey_},e.prototype.getImagerySet=function(){return this.imagerySet_},e.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var e=t.resourceSets[0].resources[0],r=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,n=ku(this.getProjection()),i=this.hidpi_?2:1,o=e.imageWidth==e.imageHeight?e.imageWidth/i:[e.imageWidth/i,e.imageHeight/i],a=Gu({extent:n,minZoom:e.zoomMin,maxZoom:r,tileSize:o});this.tileGrid=a;var s=this.culture_,u=this.hidpi_;if(this.tileUrlFunction=_h(e.imageUrlSubdomains.map((function(t){var r=[0,0,0],n=e.imageUrl.replace("{subdomain}",t).replace("{culture}",s);return function(t,e,i){if(t){Ru(t[0],t[1],t[2],r);var o=n;return u&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",function(t){var e,r,n=t[0],i=new Array(n),o=1<>=1;return i.join("")}(r))}}}))),e.imageryProviders){var l=$e(We("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var r=[],n=t.viewState,i=this.getTileGrid(),o=i.getZForResolution(n.resolution,this.zDirection),a=i.getTileCoordForCoordAndZ(n.center,o)[0];return e.imageryProviders.map((function(e){for(var n=!1,i=e.coverageAreas,o=0,s=i.length;o=u.zoomMin&&a<=u.zoomMax){var h=u.bbox;if(Jt(te([h[1],h[0],h[3],h[2]],l),t.extent)){n=!0;break}}}n&&r.push(e.attribution)})),r.push('Terms of Use'),r}.bind(this))}this.setState(yo)}else this.setState(vo)},e}(Wh),qh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hh=function(t){function e(e){var r=e||{},n=void 0!==r.projection?r.projection:"EPSG:3857",i=void 0!==r.tileGrid?r.tileGrid:Gu({extent:ku(n),maxResolution:r.maxResolution,maxZoom:r.maxZoom,minZoom:r.minZoom,tileSize:r.tileSize});return t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,opaque:r.opaque,projection:n,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:i,tileLoadFunction:r.tileLoadFunction,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:r.tileUrlFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this}return qh(e,t),e}(Wh),Jh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Qh=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,maxZoom:void 0!==e.maxZoom?e.maxZoom:18,minZoom:e.minZoom,projection:e.projection,wrapX:e.wrapX})||this;return r.account_=e.account,r.mapId_=e.map||"",r.config_=e.config||{},r.templateCache_={},r.initializeMap_(),r}return Jh(e,t),e.prototype.getConfig=function(){return this.config_},e.prototype.updateConfig=function(t){p(this.config_,t),this.initializeMap_()},e.prototype.setConfig=function(t){this.config_=t||{},this.initializeMap_()},e.prototype.initializeMap_=function(){var t=JSON.stringify(this.config_);if(this.templateCache_[t])this.applyTemplate_(this.templateCache_[t]);else{var e="https://"+this.account_+".carto.com/api/v1/map";this.mapId_&&(e+="/named/"+this.mapId_);var r=new XMLHttpRequest;r.addEventListener("load",this.handleInitResponse_.bind(this,t)),r.addEventListener("error",this.handleInitError_.bind(this)),r.open("POST",e),r.setRequestHeader("Content-type","application/json"),r.send(JSON.stringify(this.config_))}},e.prototype.handleInitResponse_=function(t,e){var r=e.target;if(!r.status||r.status>=200&&r.status<300){var n=void 0;try{n=JSON.parse(r.responseText)}catch(t){return void this.setState(vo)}this.applyTemplate_(n),this.templateCache_[t]=n,this.setState(yo)}else this.setState(vo)},e.prototype.handleInitError_=function(t){this.setState(vo)},e.prototype.applyTemplate_=function(t){var e="https://"+t.cdn_url.https+"/"+this.account_+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(e)},e}(Hh),$h="addfeature",tc="changefeature",ec="clear",rc="removefeature",nc=r(0),ic=r.n(nc),oc=function(){function t(t){this.rbush_=new ic.a(t),this.items_={}}return t.prototype.insert=function(t,e){var r={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(r),this.items_[o(e)]=r},t.prototype.load=function(t,e){for(var r=new Array(e.length),n=0,i=e.length;n=0;--r){var n=this.geometryFunction(t[r]);n?Li(e,n.getCoordinates()):t.splice(r,1)}ji(e,1/t.length);var i=new lt(new Kr(e));return i.set("features",t),i},e}(uc),cc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pc="default",fc="truncated",dc=function(t){function e(e,r,n,i,o,a,s){var u=t.call(this,r,n,i,o,a,s)||this;return u.zoomifyImage_=null,u.tileSize_=e,u}return cc(e,t),e.prototype.getImage=function(){if(this.zoomifyImage_)return this.zoomifyImage_;var e=t.prototype.getImage.call(this);if(this.state==ci){var r=this.tileSize_;if(e.width==r[0]&&e.height==r[1])return this.zoomifyImage_=e,e;var n=Ji(r[0],r[1]);return n.drawImage(e,0,0),this.zoomifyImage_=n.canvas,n.canvas}return e},e}(Sh),_c=function(t){function e(e){var r=this,n=e,i=n.size,o=void 0!==n.tierSizeCalculation?n.tierSizeCalculation:pc,a=n.tilePixelRatio||1,s=i[0],u=i[1],l=[],h=n.tileSize||256,c=h*a;switch(o){case pc:for(;s>c||u>c;)l.push([Math.ceil(s/c),Math.ceil(u/c)]),c+=c;break;case fc:for(var p=s,f=u;p>c||f>c;)l.push([Math.ceil(p/c),Math.ceil(f/c)]),p>>=1,f>>=1;break;default:st(!1,53)}l.push([1,1]),l.reverse();for(var d=[a],_=[0],g=1,y=l.length;g1,n=r&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],i=r&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=r&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(info.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:e.supports.concat(n),formats:e.formats.concat(i),qualities:e.qualities.concat(o)}},Ec[vc]=function(t){var e=t.getComplianceLevelSupportedFeatures(),r=void 0===t.imageInfo.extraFormats?e.formats:e.formats.concat(t.imageInfo.extraFormats),n=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return["jpg","png","gif"].includes(t)})).reduce((function(t,e){return void 0===t&&r.includes(e)?e:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?e.supports:e.supports.concat(t.imageInfo.extraFeatures),formats:r,qualities:void 0===t.imageInfo.extraQualities?e.qualities:e.qualities.concat(t.imageInfo.extraQualities),preferredFormat:n}};var Tc=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var e=0;e0&&"string"==typeof this.imageInfo.profile[0]&&wc.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var e=this.getComplianceLevelEntryFromProfile(t);if(void 0!==e){var r=e.match(/level[0-2](\.json)?$/g);return Array.isArray(r)?r[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),e=this.getComplianceLevelFromProfile(t);return void 0===e?mc.none.none:mc[t][e]}},t.prototype.getTileSourceOptions=function(t){var e=t||{},r=this.getImageApiVersion();if(void 0!==r){var n=void 0===r?void 0:Ec[r](this);if(void 0!==n)return{url:n.url,version:r,size:[this.imageInfo.width,this.imageInfo.height],sizes:n.sizes,format:void 0!==e.format&&n.formats.includes(e.format)?e.format:void 0!==n.preferredFormat?n.preferredFormat:"jpg",supports:n.supports,quality:e.quality&&n.qualities.includes(e.quality)?e.quality:n.qualities.includes("native")?"native":"default",resolutions:Array.isArray(n.resolutions)?n.resolutions.sort((function(t,e){return e-t})):void 0,tileSize:n.tileSize}}},t}(),Cc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function bc(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var Pc=function(t){function e(e){var r=this,n=e||{},i=n.url||"";i+=i.lastIndexOf("/")===i.length-1||""===i?"":"/";var o=n.version||yc,a=n.sizes||[],s=n.size;st(null!=s&&Array.isArray(s)&&2==s.length&&!isNaN(s[0])&&s[0]>0&&!isNaN(s[1])&&s[1]>0,60);var u,l,h,c=s[0],p=s[1],f=n.tileSize,d=n.tilePixelRatio||1,_=n.format||"jpg",g=n.quality||(n.version==gc?"native":"default"),y=n.resolutions||[],v=n.supports||[],m=n.extent||[0,-p,c,0],x=null!=a&&Array.isArray(a)&&a.length>0,w=void 0!==f&&("number"==typeof f&&Number.isInteger(f)&&f>0||Array.isArray(f)&&f.length>0),S=null!=v&&Array.isArray(v)&&(v.includes("regionByPx")||v.includes("regionByPct"))&&(v.includes("sizeByWh")||v.includes("sizeByH")||v.includes("sizeByW")||v.includes("sizeByPct"));if(y.sort((function(t,e){return e-t})),w||S)if(null!=f&&("number"==typeof f&&Number.isInteger(f)&&f>0?(u=f,l=f):Array.isArray(f)&&f.length>0&&((1==f.length||null==f[1]&&Number.isInteger(f[0]))&&(u=f[0],l=f[0]),2==f.length&&(Number.isInteger(f[0])&&Number.isInteger(f[1])?(u=f[0],l=f[1]):null==f[0]&&Number.isInteger(f[1])&&(u=f[1],l=f[1])))),void 0!==u&&void 0!==l||(u=256,l=256),0==y.length)for(var E=h=Math.max(Math.ceil(Math.log(c/u)/Math.LN2),Math.ceil(Math.log(p/l)/Math.LN2));E>=0;E--)y.push(Math.pow(2,E));else{var T=Math.max.apply(Math,y);h=Math.round(Math.log(T)/Math.LN2)}else if(u=c,l=p,y=[],x){a.sort((function(t,e){return t[0]-e[0]})),h=-1;var C=[];for(E=0;E0&&y[y.length-1]==b?C.push(E):(y.push(b),h++)}if(C.length>0)for(E=0;Eh)){var d=t[1],m=t[2],E=y[f];if(!(void 0===d||void 0===m||void 0===E||d<0||Math.ceil(c/E/u)<=d||m<0||Math.ceil(p/E/l)<=m)){if(S||w){var T=d*u*E,C=m*l*E,b=u*E,P=l*E,R=u,O=l;if(T+b>c&&(b=c-T),C+P>p&&(P=p-C),T+u*E>c&&(R=Math.floor((c-T+E-1)/E)),C+l*E>p&&(O=Math.floor((p-C+E-1)/E)),0==T&&b==c&&0==C&&P==p)n="full";else if(!S||v.includes("regionByPx"))n=T+","+C+","+b+","+P;else if(v.includes("regionByPct")){n="pct:"+bc(T/c*100)+","+bc(C/p*100)+","+bc(b/c*100)+","+bc(P/p*100)}o!=vc||S&&!v.includes("sizeByWh")?!S||v.includes("sizeByW")?s=R+",":v.includes("sizeByH")?s=","+O:v.includes("sizeByWh")?s=R+","+O:v.includes("sizeByPct")&&(s="pct:"+bc(100/E)):s=R+","+O}else if(n="full",x){var I=a[f][0],L=a[f][1];s=o==vc?I==c&&L==p?"max":I+","+L:I==c?"full":I+","}else s=o==vc?"max":"full";return i+n+"/"+s+"/0/"+g+"."+_}}},transition:n.transition})||this).zDirection=n.zDirection,r}return Cc(e,t),e}(Wh),Rc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Oc=function(t){function e(e,r,n,i,o,a){var s=this,u=e.getExtent(),l=r.getExtent(),h=l?Zt(n,l):n,c=bh(e,r,Yt(h),i),p=new Oh(e,r,h,u,.5*c,i),f=a(p.calculateSourceExtent(),c,o),d=f?Is:As,_=f?f.getPixelRatio():1;return(s=t.call(this,n,i,_,d)||this).targetProj_=r,s.maxSourceExtent_=u,s.triangulation_=p,s.targetResolution_=i,s.targetExtent_=n,s.sourceImage_=f,s.sourcePixelRatio_=_,s.canvas_=null,s.sourceListenerKey_=null,s}return Rc(e,t),e.prototype.disposeInternal=function(){this.state==Ls&&this.unlistenSource_(),t.prototype.disposeInternal.call(this)},e.prototype.getImage=function(){return this.canvas_},e.prototype.getProjection=function(){return this.targetProj_},e.prototype.reproject_=function(){var t=this.sourceImage_.getState();if(t==Fs){var e=Ht(this.targetExtent_)/this.targetResolution_,r=Wt(this.targetExtent_)/this.targetResolution_;this.canvas_=Rh(e,r,this.sourcePixelRatio_,this.sourceImage_.getResolution(),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0)}this.state=t,this.changed()},e.prototype.load=function(){if(this.state==Is){this.state=Ls,this.changed();var t=this.sourceImage_.getState();t==Fs||t==Ms?this.reproject_():(this.sourceListenerKey_=g(this.sourceImage_,N,(function(t){var e=this.sourceImage_.getState();e!=Fs&&e!=Ms||(this.unlistenSource_(),this.reproject_())}),this),this.sourceImage_.load())}},e.prototype.unlistenSource_=function(){v(this.sourceListenerKey_),this.sourceListenerKey_=null},e}(Xl),Ic=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Lc="imageloadstart",Fc="imageloadend",Mc="imageloaderror",Ac=function(t){function e(e,r){var n=t.call(this,e)||this;return n.image=r,n}return Ic(e,t),e}(F);function Nc(t,e){t.getImage().src=e}var Gc=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,projection:e.projection,state:e.state})||this;return r.resolutions_=void 0!==e.resolutions?e.resolutions:null,r.reprojectedImage_=null,r.reprojectedRevision_=0,r}return Ic(e,t),e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.findNearestResolution=function(t){if(this.resolutions_){var e=S(this.resolutions_,t,0);t=this.resolutions_[e]}return t},e.prototype.getImage=function(t,e,r,n){var i=this.getProjection();if(i&&n&&!Qe(i,n)){if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&Qe(this.reprojectedImage_.getProjection(),n)&&this.reprojectedImage_.getResolution()==e&&Mt(this.reprojectedImage_.getExtent(),t))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new Oc(i,n,t,e,r,function(t,e,r){return this.getImageInternal(t,e,r,i)}.bind(this)),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}return i&&(n=i),this.getImageInternal(t,e,r,n)},e.prototype.getImageInternal=function(t,e,r,i){return n()},e.prototype.handleImageChange=function(t){var e=t.target;switch(e.getState()){case Ls:this.loading=!0,this.dispatchEvent(new Ac(Lc,e));break;case Fs:this.loading=!1,this.dispatchEvent(new Ac(Fc,e));break;case Ms:this.loading=!1,this.dispatchEvent(new Ac(Mc,e))}},e}(Ah);function jc(t,e){var r=[];Object.keys(e).forEach((function(t){null!==e[t]&&void 0!==e[t]&&r.push(t+"="+encodeURIComponent(e[t]))}));var n=r.join("&");return(t=-1===(t=t.replace(/[?&]$/,"")).indexOf("?")?t+"?":t+"&")+n}var Dc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),kc=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.hidpi_=void 0===n.hidpi||n.hidpi,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Nc,r.params_=n.params||{},r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Dc(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&Ct(i.getExtent(),t))return i;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};p(o,this.params_);var a=((t=t.slice())[0]+t[2])/2,s=(t[1]+t[3])/2;if(1!=this.ratio_){var u=this.ratio_*Ht(t)/2,l=this.ratio_*Wt(t)/2;t[0]=a-u,t[1]=s-l,t[2]=a+u,t[3]=s+l}var h=e/r,c=Math.ceil(Ht(t)/h),f=Math.ceil(Wt(t)/h);t[0]=a-h*c/2,t[2]=a+h*c/2,t[1]=s-h*f/2,t[3]=s+h*f/2,this.imageSize_[0]=c,this.imageSize_[1]=f;var d=this.getRequestUrl_(t,this.imageSize_,r,n,o);return this.image_=new Kl(t,e,r,d,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(N,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){var o=n.getCode().split(":").pop();i.SIZE=e[0]+","+e[1],i.BBOX=t.join(","),i.BBOXSR=o,i.IMAGESR=o,i.DPI=Math.round(90*r);var a=this.url_,s=a.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return s==a&&st(!1,50),jc(s,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){p(this.params_,t),this.image_=null,this.changed()},e}(Gc),Uc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zc=function(t){function e(e,r,n,i,o){var a=this,s=void 0!==o?Is:Fs;return(a=t.call(this,e,r,n,s)||this).loader_=void 0!==o?o:null,a.canvas_=i,a.error_=null,a}return Uc(e,t),e.prototype.getError=function(){return this.error_},e.prototype.handleLoad_=function(t){t?(this.error_=t,this.state=Ms):this.state=Fs,this.changed()},e.prototype.load=function(){this.state==Is&&(this.state=Ls,this.changed(),this.loader_(this.handleLoad_.bind(this)))},e.prototype.getImage=function(){return this.canvas_},e}(Xl),Bc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yc=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,projection:n.projection,resolutions:n.resolutions,state:n.state})||this).canvasFunction_=n.canvasFunction,r.canvas_=null,r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Bc(e,t),e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e);var i=this.canvas_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&Ct(i.getExtent(),t))return i;$t(t=t.slice(),this.ratio_);var o=[Ht(t)/e*r,Wt(t)/e*r],a=this.canvasFunction_.call(this,t,e,r,o,n);return a&&(i=new zc(t,e,r,a)),this.canvas_=i,this.renderedRevision_=this.getRevision(),i},e}(Gc),Vc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var Xc=function(t){function e(e){var r=t.call(this,{projection:e.projection,resolutions:e.resolutions})||this;return r.crossOrigin_=void 0!==e.crossOrigin?e.crossOrigin:null,r.displayDpi_=void 0!==e.displayDpi?e.displayDpi:96,r.params_=e.params||{},r.url_=e.url,r.imageLoadFunction_=void 0!==e.imageLoadFunction?e.imageLoadFunction:Nc,r.hidpi_=void 0===e.hidpi||e.hidpi,r.metersPerUnit_=void 0!==e.metersPerUnit?e.metersPerUnit:1,r.ratio_=void 0!==e.ratio?e.ratio:1,r.useOverlay_=void 0!==e.useOverlay&&e.useOverlay,r.image_=null,r.renderedRevision_=0,r}return Vc(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&Ct(i.getExtent(),t))return i;1!=this.ratio_&&$t(t=t.slice(),this.ratio_);var o=[Ht(t)/e*r,Wt(t)/e*r];if(void 0!==this.url_){var a=this.getUrl(this.url_,this.params_,t,o,n);(i=new Kl(t,e,r,a,this.crossOrigin_,this.imageLoadFunction_)).addEventListener(N,this.handleImageChange.bind(this))}else i=null;return this.image_=i,this.renderedRevision_=this.getRevision(),i},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.updateParams=function(t){p(this.params_,t),this.changed()},e.prototype.getUrl=function(t,e,r,n,i){var o=function(t,e,r,n){var i=Ht(t),o=Wt(t),a=e[0],s=e[1],u=.0254/n;return s*i>a*o?i*r/(a*u):o*r/(s*u)}(r,n,this.metersPerUnit_,this.displayDpi_),a=Yt(r),s={OPERATION:this.useOverlay_?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.displayDpi_,SETDISPLAYWIDTH:Math.round(n[0]),SETDISPLAYHEIGHT:Math.round(n[1]),SETVIEWSCALE:o,SETVIEWCENTERX:a[0],SETVIEWCENTERY:a[1]};return p(s,e),jc(t,s)},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e}(Gc),Wc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zc=function(t){function e(e){var r=this,n=void 0!==e.crossOrigin?e.crossOrigin:null,i=void 0!==e.imageLoadFunction?e.imageLoadFunction:Nc;return(r=t.call(this,{attributions:e.attributions,projection:We(e.projection)})||this).url_=e.url,r.imageExtent_=e.imageExtent,r.image_=new Kl(r.imageExtent_,void 0,1,r.url_,n,i),r.imageSize_=e.imageSize?e.imageSize:null,r.image_.addEventListener(N,r.handleImageChange.bind(r)),r}return Wc(e,t),e.prototype.getImageExtent=function(){return this.imageExtent_},e.prototype.getImageInternal=function(t,e,r,n){return Jt(t,this.image_.getExtent())?this.image_:null},e.prototype.getUrl=function(){return this.url_},e.prototype.handleImageChange=function(e){if(this.image_.getState()==Fs){var r=this.image_.getExtent(),n=this.image_.getImage(),i=void 0,o=void 0;this.imageSize_?(i=this.imageSize_[0],o=this.imageSize_[1]):(i=n.width,o=n.height);var a=Wt(r)/o,s=Math.ceil(Ht(r)/a);if(s!=i){var u=Ji(s,o),l=u.canvas;u.drawImage(n,0,0,i,o,0,0,l.width,l.height),this.image_.setImage(l)}}t.prototype.handleImageChange.call(this,e)},e}(Gc),Kc="carmentaserver",qc="geoserver",Hc="mapserver",Jc="qgis",Qc=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),$c=[101,101],tp=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Nc,r.params_=n.params||{},r.v13_=!0,r.updateV13_(),r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Qc(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){if(void 0!==this.url_){var i=We(r),o=this.getProjection();o&&o!==i&&(e=bh(o,i,t,e),t=er(t,i,o));var a=Xt(t,e,0,$c),s={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};p(s,this.params_,n);var u=Math.floor((t[0]-a[0])/e),l=Math.floor((a[3]-t[1])/e);return s[this.v13_?"I":"X"]=u,s[this.v13_?"J":"Y"]=l,this.getRequestUrl_(a,$c,1,o||i,s)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.url_){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i*39.37*(25.4/.28)}return p(r,e),jc(this.url_,r)}},e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),1==r||this.hidpi_&&void 0!==this.serverType_||(r=1);var i=e/r,o=Yt(t),a=Xt(o,i,0,[Math.ceil(Ht(t)/i),Math.ceil(Wt(t)/i)]),s=Xt(o,i,0,[Math.ceil(this.ratio_*Ht(t)/i),Math.ceil(this.ratio_*Wt(t)/i)]),u=this.image_;if(u&&this.renderedRevision_==this.getRevision()&&u.getResolution()==e&&u.getPixelRatio()==r&&Ct(u.getExtent(),a))return u;var l={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};p(l,this.params_),this.imageSize_[0]=Math.round(Ht(s)/i),this.imageSize_[1]=Math.round(Wt(s)/i);var h=this.getRequestUrl_(s,this.imageSize_,r,n,l);return this.image_=new Kl(s,e,r,h,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(N,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){if(st(void 0!==this.url_,9),i[this.v13_?"CRS":"SRS"]=n.getCode(),"STYLES"in this.params_||(i.STYLES=""),1!=r)switch(this.serverType_){case qc:var o=90*r+.5|0;"FORMAT_OPTIONS"in i?i.FORMAT_OPTIONS+=";dpi:"+o:i.FORMAT_OPTIONS="dpi:"+o;break;case Hc:i.MAP_RESOLUTION=90*r;break;case Kc:case Jc:i.DPI=90*r;break;default:st(!1,8)}i.WIDTH=e[0],i.HEIGHT=e[1];var a,s=n.getAxisOrientation();return a=this.v13_&&"ne"==s.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,i.BBOX=a.join(","),jc(this.url_,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){p(this.params_,t),this.updateV13_(),this.image_=null,this.changed()},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=Ii(t,"1.3")>=0},e}(Gc),ep=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rp='© OpenStreetMap contributors.',np=function(t){function e(e){var r,n=e||{};r=void 0!==n.attributions?n.attributions:[rp];var i=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",o=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:r,cacheSize:n.cacheSize,crossOrigin:i,opaque:void 0===n.opaque||n.opaque,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,url:o,wrapX:n.wrapX,attributionsCollapsible:!1})||this}return ep(e,t),e}(Hh),ip=r(3),op=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ap=function(t){function e(e){var r=e||{};return t.call(this,r)||this}return op(e,t),e}(Ao),sp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),up=function(t){function e(e){var r=t.call(this)||this;return r.boundHandleImageChange_=r.handleImageChange_.bind(r),r.layer_=e,r}return sp(e,t),e.prototype.getFeatures=function(t){return n()},e.prototype.prepareFrame=function(t){return n()},e.prototype.renderFrame=function(t,e){return n()},e.prototype.loadedTileCallback=function(t,e,r){t[e]||(t[e]={}),t[e][r.tileCoord.toString()]=r},e.prototype.createLoadedTileFinder=function(t,e,r){return function(n,i){var o=this.loadedTileCallback.bind(this,r,n);return t.forEachLoadedTile(e,n,i,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){},e.prototype.getDataAtPixel=function(t,e,r){return n()},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===Fs&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=Fs&&e!=Ms&&t.addEventListener(N,this.boundHandleImageChange_),e==Is&&(t.load(),e=t.getState()),e==Fs},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==yo&&t.changed()},e}(H),lp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),hp=function(t){function e(e){var r=t.call(this,e)||this;return r.container=null,r.renderedResolution,r.tempTransform_=[1,0,0,1,0,0],r.pixelTransform=[1,0,0,1,0,0],r.inversePixelTransform=[1,0,0,1,0,0],r.context=null,r.containerReused=!1,r}return lp(e,t),e.prototype.useContainer=function(t,e,r){var n,i,o=this.getLayer().getClassName();t&&""===t.style.opacity&&t.className===o&&((s=t.firstElementChild)instanceof HTMLCanvasElement&&(i=s.getContext("2d")));if(i&&i.canvas.style.transform===e?(this.container=t,this.context=i,this.containerReused=!0):this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1),!this.container){(n=document.createElement("div")).className=o;var a=n.style;a.position="absolute",a.width="100%",a.height="100%";var s=(i=Ji()).canvas;n.appendChild(s),(a=s.style).position="absolute",a.left="0",a.transformOrigin="top left",this.container=n,this.context=i}},e.prototype.clip=function(t,e,r){var n=e.pixelRatio,i=e.size[0]*n/2,o=e.size[1]*n/2,a=e.viewState.rotation,s=Kt(r),u=qt(r),l=Bt(r),h=zt(r);gr(e.coordinateToPixelTransform,s),gr(e.coordinateToPixelTransform,u),gr(e.coordinateToPixelTransform,l),gr(e.coordinateToPixelTransform,h),t.save(),Ts(t,-a,i,o),t.beginPath(),t.moveTo(s[0]*n,s[1]*n),t.lineTo(u[0]*n,u[1]*n),t.lineTo(l[0]*n,l[1]*n),t.lineTo(h[0]*n,h[1]*n),t.clip(),Ts(t,a,i,o)},e.prototype.clipUnrotated=function(t,e,r){var n=Kt(r),i=qt(r),o=Bt(r),a=zt(r);gr(e.coordinateToPixelTransform,n),gr(e.coordinateToPixelTransform,i),gr(e.coordinateToPixelTransform,o),gr(e.coordinateToPixelTransform,a);var s=this.inversePixelTransform;gr(s,n),gr(s,i),gr(s,o),gr(s,a),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(i[0]),Math.round(i[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(a[0]),Math.round(a[1])),t.clip()},e.prototype.dispatchRenderEvent_=function(t,e,r){var n=this.getLayer();if(n.hasListener(t)){var i=new Ka(t,this.inversePixelTransform,r,e);n.dispatchEvent(i)}},e.prototype.preRender=function(t,e){this.dispatchRenderEvent_(ii,t,e)},e.prototype.postRender=function(t,e){this.dispatchRenderEvent_(oi,t,e)},e.prototype.getRenderTransform=function(t,e,r,n,i,o,a){var s=i/2,u=o/2,l=n/e,h=-l,c=-t[0]+a,p=-t[1];return vr(this.tempTransform_,s,u,l,h,-r,c,p)},e.prototype.getDataAtPixel=function(t,e,r){var n,i=gr(this.inversePixelTransform,t.slice()),o=this.context;try{n=o.getImageData(Math.round(i[0]),Math.round(i[1]),1,1).data}catch(t){return"SecurityError"===t.name?new Uint8Array:n}return 0===n[3]?null:n},e}(up),cp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pp=function(t){function e(e){var r=t.call(this,e)||this;return r.image_=null,r}return cp(e,t),e.prototype.getImage=function(){return this.image_?this.image_.getImage():null},e.prototype.prepareFrame=function(t){var e=t.layerStatesArray[t.layerIndex],r=t.pixelRatio,n=t.viewState,i=n.resolution,o=this.getLayer().getSource(),a=t.viewHints,s=t.extent;if(void 0!==e.extent&&(s=Zt(s,cr(e.extent,n.projection))),!a[Ti]&&!a[Ci]&&!Qt(s))if(o){var u=n.projection,l=o.getImage(s,i,r,u);l&&this.loadImage(l)&&(this.image_=l)}else this.image_=null;return!!this.image_},e.prototype.renderFrame=function(t,e){var r=this.image_,n=r.getExtent(),i=r.getResolution(),o=r.getPixelRatio(),a=t.layerStatesArray[t.layerIndex],s=t.pixelRatio,u=t.viewState,l=u.center,h=u.resolution,c=t.size,p=s*i/(h*o),f=Math.round(c[0]*s),d=Math.round(c[1]*s),_=u.rotation;if(_){var g=Math.round(Math.sqrt(f*f+d*d));f=g,d=g}vr(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/s,1/s,_,-f/2,-d/2),mr(this.inversePixelTransform,this.pixelTransform);var y=Ps(this.pixelTransform);this.useContainer(e,y,a.opacity);var v=this.context,m=v.canvas;m.width!=f||m.height!=d?(m.width=f,m.height=d):this.containerReused||v.clearRect(0,0,f,d);var x=!1;if(a.extent){var w=cr(a.extent,u.projection);(x=!Ct(w,t.extent)&&Jt(w,t.extent))&&this.clipUnrotated(v,t,w)}var S=r.getImage(),E=vr(this.tempTransform_,f/2,d/2,p,p,0,o*(n[0]-l[0])/i,o*(l[1]-n[3])/i);this.renderedResolution=i*s/o;var T=E[4],C=E[5],b=S.width*E[0],P=S.height*E[3];if(this.preRender(v,t),b>=.5&&P>=.5){var R=a.opacity,O=void 0;1!==R&&(O=this.context.globalAlpha,this.context.globalAlpha=R),this.context.drawImage(S,0,0,+S.width,+S.height,Math.round(T),Math.round(C),Math.round(b),Math.round(P)),1!==R&&(this.context.globalAlpha=O)}return this.postRender(v,t),x&&v.restore(),y!==m.style.transform&&(m.style.transform=y),this.container},e}(hp),fp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),dp=function(t){function e(e){return t.call(this,e)||this}return fp(e,t),e.prototype.createRenderer=function(){return new pp(this)},e}(ap),_p="preload",gp="useInterimTilesOnError",yp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vp=function(t){function e(e){var r=this,n=e||{},i=p({},n);return delete i.preload,delete i.useInterimTilesOnError,(r=t.call(this,i)||this).setPreload(void 0!==n.preload?n.preload:0),r.setUseInterimTilesOnError(void 0===n.useInterimTilesOnError||n.useInterimTilesOnError),r}return yp(e,t),e.prototype.getPreload=function(){return this.get(_p)},e.prototype.setPreload=function(t){this.set(_p,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(gp)},e.prototype.setUseInterimTilesOnError=function(t){this.set(gp,t)},e}(Ao),mp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xp=function(t){function e(e){var r=t.call(this,e)||this;return r.extentChanged=!0,r.renderedExtent_=null,r.renderedPixelRatio,r.renderedProjection=null,r.renderedRevision,r.renderedTiles=[],r.newTiles_=!1,r.tmpExtent=[1/0,1/0,-1/0,-1/0],r.tmpTileRange_=new Pu(0,0,0,0),r}return mp(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),r=t.getState(),n=e.getUseInterimTilesOnError();return r==ci||r==fi||r==pi&&!n},e.prototype.getTile=function(t,e,r,n){var i=n.pixelRatio,o=n.viewState.projection,a=this.getLayer(),s=a.getSource().getTile(t,e,r,i,o);return s.getState()==pi&&(a.getUseInterimTilesOnError()?a.getPreload()>0&&(this.newTiles_=!0):s.setState(ci)),this.isDrawableTile(s)||(s=s.getInterimTile()),s},e.prototype.loadedTileCallback=function(e,r,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,r,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var r=t.layerStatesArray[t.layerIndex],n=t.viewState,i=n.projection,a=n.resolution,s=n.center,u=n.rotation,l=t.pixelRatio,h=this.getLayer(),c=h.getSource(),p=c.getRevision(),f=c.getTileGridForProjection(i),d=f.getZForResolution(a,c.zDirection),_=f.getResolution(d),g=t.extent,y=r.extent&&cr(r.extent,i);y&&(g=Zt(g,cr(r.extent,i)));var v=c.getTilePixelRatio(l),m=Math.round(t.size[0]*v),w=Math.round(t.size[1]*v);if(u){var S=Math.round(Math.sqrt(m*m+w*w));m=S,w=S}var E=_*m/2/v,T=_*w/2/v,C=[s[0]-E,s[1]-T,s[0]+E,s[1]+T],b=f.getTileRangeForExtentAndZ(g,d),P={};P[d]={};var R=this.createLoadedTileFinder(c,i,P),O=this.tmpExtent,I=this.tmpTileRange_;this.newTiles_=!1;for(var L=b.minX;L<=b.maxX;++L)for(var F=b.minY;F<=b.maxY;++F){var M=this.getTile(d,L,F,t);if(this.isDrawableTile(M)){var A=o(this);if(M.getState()==ci){P[d][M.tileCoord.toString()]=M;var N=M.inTransition(A);this.newTiles_||!N&&-1!==this.renderedTiles.indexOf(M)||(this.newTiles_=!0)}if(1===M.getAlpha(A,t.time))continue}var G=f.getTileCoordChildTileRange(M.tileCoord,I,O),j=!1;G&&(j=R(d+1,G)),j||f.forEachTileCoordParentTileRange(M.tileCoord,R,I,O)}var D=_/a;vr(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/v,1/v,u,-m/2,-w/2);var k=Ps(this.pixelTransform);this.useContainer(e,k,r.opacity);var U=this.context,z=U.canvas;mr(this.inversePixelTransform,this.pixelTransform),vr(this.tempTransform_,m/2,w/2,D,D,0,-m/2,-w/2),z.width!=m||z.height!=w?(z.width=m,z.height=w):this.containerReused||U.clearRect(0,0,m,w),y&&this.clipUnrotated(U,t,y),this.preRender(U,t),this.renderedTiles.length=0;var B,Y,V,X=Object.keys(P).map(Number);X.sort(x),1!==r.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(B=[],Y=[]):X=X.reverse();for(var W=X.length-1;W>=0;--W){var Z=X[W],K=c.getTilePixelSize(Z,l,i),q=f.getResolution(Z)/_,H=K[0]*q*D,J=K[1]*q*D,Q=f.getTileCoordForCoordAndZ(Kt(C),Z),$=f.getTileCoordExtent(Q),tt=gr(this.tempTransform_,[v*($[0]-C[0])/_,v*(C[3]-$[3])/_]),et=v*c.getGutterForProjection(i),rt=P[Z];for(var nt in rt){var it=(M=rt[nt]).tileCoord,ot=tt[0]-(Q[1]-it[1])*H,at=Math.round(ot+H),st=tt[1]-(Q[2]-it[2])*J,ut=Math.round(st+J),lt=at-(L=Math.round(ot)),ht=ut-(F=Math.round(st)),ct=d===Z;if(!(N=ct&&1!==M.getAlpha(o(this),t.time)))if(B){U.save(),V=[L,F,L+lt,F,L+lt,F+ht,L,F+ht];for(var pt=0,ft=B.length;ptStamen Design, under CC BY 3.0.',rp],jp={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},Dp={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},kp=function(t){function e(e){var r=e.layer.indexOf("-"),n=-1==r?e.layer:e.layer.slice(0,r),i=Dp[n],o=jp[e.layer],a=void 0!==e.url?e.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+e.layer+"/{z}/{x}/{y}."+o.extension;return t.call(this,{attributions:Gp,cacheSize:e.cacheSize,crossOrigin:"anonymous",maxZoom:null!=e.maxZoom?e.maxZoom:i.maxZoom,minZoom:null!=e.minZoom?e.minZoom:i.minZoom,opaque:o.opaque,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileLoadFunction:e.tileLoadFunction,transition:e.transition,url:a,wrapX:e.wrapX})||this}return Np(e,t),e}(Hh),Up=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function zp(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_||(e=1);var i=n.getTileCoordExtent(t,this.tmpExtent_),o=To(n.getTileSize(t[0]),this.tmpSize);1!=e&&(o=Eo(o,e,this.tmpSize));var a={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return p(a,this.params_),this.getRequestUrl_(t,o,i,e,r,a)}}var Bp=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,tileUrlFunction:zp,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).params_=n.params||{},r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.setKey(r.getKeyForParams_()),r}return Up(e,t),e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){var s,u=i.getCode().split(":").pop();if(o.SIZE=e[0]+","+e[1],o.BBOX=r.join(","),o.BBOXSR=u,o.IMAGESR=u,o.DPI=Math.round(o.DPI?o.DPI*n:90*n),1==a.length)s=a[0];else s=a[ge(Fu(t),a.length)];return jc(s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_?t:1},e.prototype.updateParams=function(t){p(this.params_,t),this.setKey(this.getKeyForParams_())},e}(Wh),Yp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Vp=function(t){function e(e,r,n){var i=t.call(this,e,ci)||this;return i.tileSize_=r,i.text_=n,i.canvas_=null,i}return Yp(e,t),e.prototype.getImage=function(){if(this.canvas_)return this.canvas_;var t=this.tileSize_,e=Ji(t[0],t[1]);return e.strokeStyle="grey",e.strokeRect(.5,.5,t[0]+.5,t[1]+.5),e.fillStyle="grey",e.strokeStyle="white",e.textAlign="center",e.textBaseline="middle",e.font="24px sans-serif",e.lineWidth=4,e.strokeText(this.text_,t[0]/2,t[1]/2,t[0]),e.fillText(this.text_,t[0]/2,t[1]/2,t[0]),this.canvas_=e.canvas,e.canvas},e.prototype.load=function(){},e}(xh),Xp=function(t){function e(e){var r=e||{};return t.call(this,{opaque:!1,projection:r.projection,tileGrid:r.tileGrid,wrapX:void 0===r.wrapX||r.wrapX,zDirection:r.zDirection})||this}return Yp(e,t),e.prototype.getTile=function(t,e,r){var n=Ou(t,e,r);if(this.tileCache.containsKey(n))return this.tileCache.get(n);var i=To(this.tileGrid.getTileSize(t)),o=[t,e,r],a=this.getTileCoordForTileUrlFunction(o),s=void 0;s=a?"z:"+a[0]+" x:"+a[1]+" y:"+a[2]:"none";var u=new Vp(o,i,s);return this.tileCache.set(n,u),u},e}(Hh),Wp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zp=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,projection:We("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:go,tileLoadFunction:e.tileLoadFunction,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this;if(r.tileJSON_=null,r.tileSize_=e.tileSize,e.url)if(e.jsonp)vh(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):st(!1,51);return r}return Wp(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTileJSON=function(){return this.tileJSON_},e.prototype.handleTileJSONResponse=function(t){var e,r=We("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=$e(r,n);e=te(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=Gu({extent:ku(n),maxZoom:a,minZoom:o,tileSize:this.tileSize_});if(this.tileGrid=s,this.tileUrlFunction=dh(t.tiles,s),void 0!==t.attribution&&!this.getAttributions()){var u=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Jt(u,e.extent)?[t.attribution]:null}))}this.tileJSON_=t,this.setState(yo)},e.prototype.handleTileJSONError=function(){this.setState(vo)},e}(Wh),Kp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function qp(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);var i=n.getResolution(t[0]),o=n.getTileCoordExtent(t,this.tmpExtent_),a=To(n.getTileSize(t[0]),this.tmpSize),s=this.gutter_;0!==s&&(a=So(a,s,this.tmpSize),o=wt(o,i*s,o)),1!=e&&(a=Eo(a,e,this.tmpSize));var u={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return p(u,this.params_),this.getRequestUrl_(t,a,o,e,r,u)}}var Hp=function(t){function e(e){var r=this,n=e||{},i=n.params||{},o=!("TRANSPARENT"in i)||i.TRANSPARENT;return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,opaque:!o,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileClass:n.tileClass,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,tileUrlFunction:qp,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).gutter_=void 0!==n.gutter?n.gutter:0,r.params_=i,r.v13_=!0,r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.updateV13_(),r.setKey(r.getKeyForParams_()),r}return Kp(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){var i=We(r),o=this.getProjection(),a=this.getTileGrid();a||(a=this.getTileGridForProjection(i));var s=a.getZForResolution(e,this.zDirection),u=a.getTileCoordForCoordAndZ(t,s);if(!(a.getResolutions().length<=u[0])){var l=a.getResolution(u[0]),h=a.getTileCoordExtent(u,this.tmpExtent_),c=To(a.getTileSize(u[0]),this.tmpSize),f=this.gutter_;0!==f&&(c=So(c,f,this.tmpSize),h=wt(h,l*f,h)),o&&o!==i&&(l=bh(o,i,t,l),h=rr(h,i,o),t=er(t,i,o));var d={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};p(d,this.params_,n);var _=Math.floor((t[0]-h[0])/l),g=Math.floor((h[3]-t[1])/l);return d[this.v13_?"I":"X"]=_,d[this.v13_?"J":"Y"]=g,this.getRequestUrl_(u,c,h,1,o||i,d)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.urls[0]){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i*39.37*(25.4/.28)}return p(r,e),jc(this.urls[0],r)}},e.prototype.getGutter=function(){return this.gutter_},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){if(o.WIDTH=e[0],o.HEIGHT=e[1],o[this.v13_?"CRS":"SRS"]=i.getCode(),"STYLES"in this.params_||(o.STYLES=""),1!=n)switch(this.serverType_){case qc:var s=90*n+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+s:o.FORMAT_OPTIONS="dpi:"+s;break;case Hc:o.MAP_RESOLUTION=90*n;break;case Kc:case Jc:o.DPI=90*n;break;default:st(!1,52)}var u,l=i.getAxisOrientation(),h=r;if(this.v13_&&"ne"==l.substr(0,2)){var c=void 0;c=r[0],h[0]=r[1],h[1]=c,c=r[2],h[2]=r[3],h[3]=c}if(o.BBOX=h.join(","),1==a.length)u=a[0];else u=a[ge(Fu(t),a.length)];return jc(u,o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_&&void 0!==this.serverType_?t:1},e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.updateParams=function(t){p(this.params_,t),this.updateV13_(),this.setKey(this.getKeyForParams_())},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=Ii(t,"1.3")>=0},e}(Wh),Jp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Qp=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r)||this;return s.src_=n,s.extent_=i,s.preemptive_=o,s.grid_=null,s.keys_=null,s.data_=null,s.jsonp_=a,s}return Jp(e,t),e.prototype.getImage=function(){return null},e.prototype.getData=function(t){if(!this.grid_||!this.keys_)return null;var e=(t[0]-this.extent_[0])/(this.extent_[2]-this.extent_[0]),r=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),n=this.grid_[Math.floor((1-r)*this.grid_.length)];if("string"!=typeof n)return null;var i=n.charCodeAt(Math.floor(e*n.length));i>=93&&i--,i>=35&&i--;var o=null;if((i-=32)in this.keys_){var a=this.keys_[i];o=this.data_&&a in this.data_?this.data_[a]:a}return o},e.prototype.forDataAtCoordinate=function(t,e,r){this.state==fi&&!0===r?(this.state=li,y(this,N,(function(r){e(this.getData(t))}),this),this.loadInternal_()):!0===r?setTimeout(function(){e(this.getData(t))}.bind(this),0):e(this.getData(t))},e.prototype.getKey=function(){return this.src_},e.prototype.handleError_=function(){this.state=pi,this.changed()},e.prototype.handleLoad_=function(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=ci,this.changed()},e.prototype.loadInternal_=function(){if(this.state==li)if(this.state=hi,this.jsonp_)vh(this.src_,this.handleLoad_.bind(this),this.handleError_.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.onXHRLoad_.bind(this)),t.addEventListener("error",this.onXHRError_.bind(this)),t.open("GET",this.src_),t.send()}},e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleError_()}this.handleLoad_(r)}else this.handleError_()},e.prototype.onXHRError_=function(t){this.handleError_()},e.prototype.load=function(){this.preemptive_?this.loadInternal_():this.setState(fi)},e}(xh),$p=function(t){function e(e){var r=t.call(this,{projection:We("EPSG:3857"),state:go})||this;if(r.preemptive_=void 0===e.preemptive||e.preemptive,r.tileUrlFunction_=gh,r.template_=void 0,r.jsonp_=e.jsonp||!1,e.url)if(r.jsonp_)vh(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):st(!1,51);return r}return Jp(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTemplate=function(){return this.template_},e.prototype.forDataAtCoordinateAndResolution=function(t,e,r,n){if(this.tileGrid){var i=this.tileGrid.getZForResolution(e,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,i);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,r,n)}else!0===n?setTimeout((function(){r(null)}),0):r(null)},e.prototype.handleTileJSONError=function(){this.setState(vo)},e.prototype.handleTileJSONResponse=function(t){var e,r=We("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=$e(r,n);e=te(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=Gu({extent:ku(n),maxZoom:a,minZoom:o});this.tileGrid=s,this.template_=t.template;var u=t.grids;if(u){if(this.tileUrlFunction_=dh(u,s),void 0!==t.attribution){var l=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Jt(l,e.extent)?[t.attribution]:null}))}this.setState(yo)}else this.setState(vo)},e.prototype.getTile=function(t,e,r,n,i){var o=Ou(t,e,r);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),u=this.tileUrlFunction_(s,n,i),l=new Qp(a,void 0!==u?li:fi,void 0!==u?u:"",this.tileGrid.getTileCoordExtent(a),this.preemptive_,this.jsonp_);return this.tileCache.set(o,l),l},e.prototype.useTile=function(t,e,r){var n=Ou(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Dh),tf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ef=[],rf=function(t){function e(e,r,n,i){var o=t.call(this,e,r,{transition:0})||this;return o.context_={},o.executorGroups={},o.loadingSourceTiles=0,o.errorSourceTileKeys={},o.hitDetectionImageData={},o.replayState_={},o.sourceTiles=null,o.wantedResolution,o.getSourceTiles=i.bind(void 0,o),o.sourceZ=-1,o.hifi=!1,o.wrappedTileCoord=n,o}return tf(e,t),e.prototype.getContext=function(t){var e=o(t);return e in this.context_||(this.context_[e]=Ji(1,1,ef)),this.context_[e]},e.prototype.hasContext=function(t){return o(t)in this.context_},e.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},e.prototype.getReplayState=function(t){var e=o(t);return e in this.replayState_||(this.replayState_[e]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedZ:-1,renderedTileZ:-1}),this.replayState_[e]},e.prototype.load=function(){this.getSourceTiles()},e.prototype.release=function(){for(var e in this.context_)ef.push(this.context_[e].canvas);t.prototype.release.call(this)},e}(xh),nf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),of=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.extent=null,s.format_=i,s.features_=null,s.loader_,s.projection=null,s.resolution,s.tileLoadFunction_=o,s.url_=n,s}return nf(e,t),e.prototype.getFormat=function(){return this.format_},e.prototype.getFeatures=function(){return this.features_},e.prototype.getKey=function(){return this.url_},e.prototype.load=function(){this.state==li&&(this.setState(hi),this.tileLoadFunction_(this,this.url_),this.loader_&&this.loader_(this.extent,this.resolution,this.projection))},e.prototype.onLoad=function(t,e){this.setFeatures(t)},e.prototype.onError=function(){this.setState(pi)},e.prototype.setFeatures=function(t){this.features_=t,this.setState(ci)},e.prototype.setLoader=function(t){this.loader_=t},e}(xh),af=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),sf=function(t){function e(e){var r=this,n=e.projection||"EPSG:3857",i=e.extent||ku(n),o=e.tileGrid||Gu({extent:i,maxResolution:e.maxResolution,maxZoom:void 0!==e.maxZoom?e.maxZoom:22,minZoom:e.minZoom,tileSize:e.tileSize||512});return(r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,opaque:!1,projection:n,state:e.state,tileGrid:o,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:uf,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,zDirection:void 0===e.zDirection?1:e.zDirection})||this).format_=e.format?e.format:null,r.loadingTiles_={},r.sourceTileCache=new Ch(r.tileCache.highWaterMark),r.overlaps_=null==e.overlaps||e.overlaps,r.tileClass=e.tileClass?e.tileClass:of,r.tileGrids_={},r}return af(e,t),e.prototype.getFeaturesInExtent=function(t){var e=[],r=this.tileCache;if(0===r.getCount())return e;var n=Lu(r.peekFirstKey())[0],i=this.tileGrid;return r.forEach((function(r){if(r.tileCoord[0]===n&&r.getState()===ci)for(var o=r.getSourceTiles(),a=0,s=o.length;a0&&_[0].tileCoord[0]===f)h=_,c=!0,p=f;else{h=[],p=f+1;do{--p,c=!0,u.forEachTileCoord(o,p,function(n){var i,o=this.tileUrlFunction(n,t,e);if(void 0!==o)if(this.sourceTileCache.containsKey(o)){var a=(i=this.sourceTileCache.get(o)).getState();if(a===ci||a===pi||a===fi)return void h.push(i)}else p===f&&((i=new this.tileClass(n,li,o,this.format_,this.tileLoadFunction)).extent=u.getTileCoordExtent(n),i.projection=e,i.resolution=u.getResolution(n[0]),this.sourceTileCache.set(o,i),i.addEventListener(N,this.handleTileChange.bind(this)),i.load());c=c&&i&&i.getState()===ci,i&&i.getState()!==fi&&r.getState()===li&&(r.loadingSourceTiles++,i.addEventListener(N,(function t(){var e=i.getState(),n=i.getKey();if(e===ci||e===pi){e===ci?(i.removeEventListener(N,t),r.loadingSourceTiles--,delete r.errorSourceTileKeys[n]):e===pi&&(r.errorSourceTileKeys[n]=!0);var o=Object.keys(r.errorSourceTileKeys).length;r.loadingSourceTiles-o==0&&(r.hifi=0===o,r.sourceZ=f,r.setState(ci))}})))}.bind(this)),c||(h.length=0)}while(!c&&p>d)}return r.getState()===li&&r.setState(hi),c&&(r.hifi=f===p,r.sourceZ=p,r.getState()0&&(r.tileUrlFunction=_h(o.map(ff.bind(r)))),r}return cf(e,t),e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.setTileUrlFunction(_h(t.map(ff.bind(this))),e)},e.prototype.getDimensions=function(){return this.dimensions_},e.prototype.getFormat=function(){return this.format_},e.prototype.getLayer=function(){return this.layer_},e.prototype.getMatrixSet=function(){return this.matrixSet_},e.prototype.getRequestEncoding=function(){return this.requestEncoding_},e.prototype.getStyle=function(){return this.style_},e.prototype.getVersion=function(){return this.version_},e.prototype.getKeyForDimensions_=function(){var t=0,e=[];for(var r in this.dimensions_)e[t++]=r+"-"+this.dimensions_[r];return e.join("/")},e.prototype.updateDimensions=function(t){p(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())},e}(Wh);function ff(t){var e=this.requestEncoding_,r={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};e==lf&&p(r,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t=e==lf?jc(t,r):t.replace(/\{(\w+?)\}/g,(function(t,e){return e.toLowerCase()in r?r[e.toLowerCase()]:t}));var n=this.tileGrid,i=this.dimensions_;return function(r,o,a){if(r){var s={TileMatrix:n.getMatrixId(r[0]),TileCol:r[1],TileRow:r[2]};p(s,i);var u=t;return u=e==lf?jc(u,s):u.replace(/\{(\w+?)\}/g,(function(t,e){return s[e]}))}}}var df=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_f="GENERATE_BUFFERS",gf=function(t){function e(e,r){var n=t.call(this,e)||this,i=r||{};return n.helper=new Ol({postProcesses:i.postProcesses,uniforms:i.uniforms}),n}return df(e,t),e.prototype.disposeInternal=function(){this.helper.dispose(),t.prototype.disposeInternal.call(this)},e.prototype.getShaderCompileErrors=function(){return this.helper.getShaderCompileErrors()},e}(up);var yf=gf,vf=new Blob(['var e="function"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1,o=arguments.length;rthis.maxLineWidth&&(this.maxLineWidth=r.lineWidth,this.bufferedMaxExtent_=null)}else r.strokeStyle=void 0,r.lineCap=void 0,r.lineDash=null,r.lineDashOffset=void 0,r.lineJoin=void 0,r.lineWidth=void 0,r.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,r=[If.SET_FILL_STYLE,e];return"string"!=typeof e&&r.push(!0),r},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[If.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var r=t.fillStyle;"string"==typeof r&&t.currentFillStyle==r||(void 0!==r&&this.instructions.push(e.call(this,t)),t.currentFillStyle=r)},e.prototype.updateStrokeStyle=function(t,e){var r=t.strokeStyle,n=t.lineCap,i=t.lineDash,o=t.lineDashOffset,a=t.lineJoin,s=t.lineWidth,u=t.miterLimit;(t.currentStrokeStyle!=r||t.currentLineCap!=n||i!=t.currentLineDash&&!b(t.currentLineDash,i)||t.currentLineDashOffset!=o||t.currentLineJoin!=a||t.currentLineWidth!=s||t.currentMiterLimit!=u)&&(void 0!==r&&e.call(this,t),t.currentStrokeStyle=r,t.currentLineCap=n,t.currentLineDash=i,t.currentLineDashOffset=o,t.currentLineJoin=a,t.currentLineWidth=s,t.currentMiterLimit=u)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[If.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=St(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;wt(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(ls),Mf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Af=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.declutterGroups_=null,o.hitDetectionImage_=null,o.image_=null,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o}return Mf(e,t),e.prototype.drawCoordinates_=function(t,e,r,n){return this.appendFlatCoordinates(t,e,r,n,!1,!1)},e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.drawCoordinates_(r,0,r.length,n);this.instructions.push([If.DRAW_IMAGE,i,o,this.image_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_*this.pixelRatio,this.width_]),this.hitDetectionInstructions.push([If.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.drawCoordinates_(r,0,r.length,n);this.instructions.push([If.DRAW_IMAGE,i,o,this.image_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_*this.pixelRatio,this.width_]),this.hitDetectionInstructions.push([If.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var r=t.getAnchor(),n=t.getSize(),i=t.getHitDetectionImage(1),o=t.getImage(1),a=t.getOrigin();this.anchorX_=r[0],this.anchorY_=r[1],this.declutterGroups_=e,this.hitDetectionImage_=i,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=a[0],this.originY_=a[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScale(),this.width_=n[0]},e}(Ff),Nf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gf=function(t){function e(e,r,n,i){return t.call(this,e,r,n,i)||this}return Nf(e,t),e.prototype.drawFlatCoordinates_=function(t,e,r,n){var i=this.coordinates.length,o=this.appendFlatCoordinates(t,e,r,n,!1,!1),a=[If.MOVE_TO_LINE_TO,i,o];return this.instructions.push(a),this.hitDetectionInstructions.push(a),r},e.prototype.drawLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([If.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Rf);var o=t.getFlatCoordinates(),a=t.getStride();this.drawFlatCoordinates_(o,0,o.length,a),this.hitDetectionInstructions.push(Pf),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([If.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Rf);for(var o=t.getEnds(),a=t.getFlatCoordinates(),s=t.getStride(),u=0,l=0,h=o.length;lt&&(y>g&&(g=y,d=v,_=o),y=0,v=o-i)),a=s,h=p,c=f),u=m,l=x}return(y+=s)>g?[v,o]:[d,_]}var Uf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zf={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Bf={Circle:Df,Default:Ff,Image:Af,LineString:Gf,Polygon:Df,Text:function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.declutterGroups_,o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o}return Uf(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var r=this.textFillState_,n=this.textStrokeState_,i=this.textState_;if(""!==this.text_&&i&&(r||n)){var o,a,s=this.coordinates.length,u=t.getType(),l=null,h=2,c=2;if(i.placement===ch){if(!Jt(this.getBufferedMaxExtent(),t.getExtent()))return;var p=void 0;if(l=t.getFlatCoordinates(),c=t.getStride(),u==ae.LINE_STRING)p=[l.length];else if(u==ae.MULTI_LINE_STRING)p=t.getEnds();else if(u==ae.POLYGON)p=t.getEnds().slice(0,1);else if(u==ae.MULTI_POLYGON){var f=t.getEndss();for(p=[],o=0,a=f.length;ot[r-n],_=i.length,g=t[e],y=t[e+1],v=t[e+=n],m=t[e+1],x=0,w=Math.sqrt(Math.pow(v-g,2)+Math.pow(m-y,2)),S=!1,E=0;E<_;++E){for(var T=i[c=d?_-E-1:E],C=s*u(l,T,h),b=o+C/2;e0?-Math.PI:Math.PI),void 0!==p){var O=R-p;if(S=S||0!==O,O+=O>Math.PI?-2*Math.PI:O<-Math.PI?2*Math.PI:0,Math.abs(O)>a)return null}p=R;var I=P/w,L=ye(g,v,I),F=ye(y,m,I);f[c]=[L,F,C/2,R,T],o+=C}return S?f:[[f[0][0],f[0][1],f[0][2],f[0][3],i]]}var Wf=[1/0,1/0,-1/0,-1/0],Zf=[1,0,0,1,0,0],Kf=[],qf=[],Hf=[],Jf=[],Qf=function(){function t(t,e,r,n){this.overlaps=r,this.pixelRatio=e,this.resolution=t,this.alignFill_,this.declutterItems=[],this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={}}return t.prototype.createLabel=function(t,e,r,n){var i=t+e+r+n;if(this.labels_[i])return this.labels_[i];var o=n?this.strokeStates[n]:null,a=r?this.fillStates[r]:null,s=this.textStates[e],u=this.pixelRatio,l=s.scale*u,h=zf[s.textAlign||"center"],c=n&&o.lineWidth?o.lineWidth:0,p=t.split("\n"),f=p.length,d=[],_=function(t,e,r){for(var n=e.length,i=0,o=0;on.width?n.width-l:d,x=s+h>n.height?n.height-h:s,w=_[3]+m*p+_[1],S=_[0]+x*p+_[2],E=e-_[3],T=r-_[0];(v||0!==c)&&(Kf[0]=E,Jf[0]=E,Kf[1]=T,qf[1]=T,qf[0]=E+w,Hf[0]=qf[0],Hf[1]=T+S,Jf[1]=Hf[1]);var C=null;if(0!==c){var b=e+i,P=r+o;C=vr(Zf,b,P,1,1,c,-b,-P),gr(Zf,Kf),gr(Zf,qf),gr(Zf,Hf),gr(Zf,Jf),Ot(Math.min(Kf[0],qf[0],Hf[0],Jf[0]),Math.min(Kf[1],qf[1],Hf[1],Jf[1]),Math.max(Kf[0],qf[0],Hf[0],Jf[0]),Math.max(Kf[1],qf[1],Hf[1],Jf[1]),Wf)}else Ot(E,T,E+w,T+S,Wf);var R=t.canvas,O=y?y[2]*p/2:0,I=Wf[0]-O<=R.width&&Wf[2]+O>=0&&Wf[1]-O<=R.height&&Wf[3]+O>=0;if(f&&(e=Math.round(e),r=Math.round(r)),a){if(!I&&1==a[4])return;At(a,Wf);var L=I?[t,C?C.slice(0):null,u,n,l,h,m,x,e,r,p]:null;L&&(v&&L.push(g,y,Kf.slice(0),qf.slice(0),Hf.slice(0),Jf.slice(0)),a.push(L))}else I&&(v&&this.replayTextBackground_(t,Kf,qf,Hf,Jf,g,y),Cs(t,C,u,n,l,h,m,x,e,r,p))},t.prototype.fill_=function(t){if(this.alignFill_){var e=gr(this.renderedTransform_,[0,0]),r=512*this.pixelRatio;t.save(),t.translate(e[0]%r,e[1]%r),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.renderDeclutter=function(t,e,r,n){if(t&&t.length>5){var i=t[4];if(1==i||i==t.length-5){var o={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};if(n||(n=new ic.a(9)),!n.collides(o)){n.insert(o);for(var a=5,s=t.length;a11&&this.replayTextBackground_(u[0],u[13],u[14],u[15],u[16],u[11],u[12]),Cs.apply(void 0,u),h!==r&&(l.globalAlpha=h)}}t.length=5,It(t)}}return n},t.prototype.drawLabelWithPointPlacement_=function(t,e,r,n){var i=this.textStates[e],o=this.createLabel(t,e,n,r),a=this.strokeStates[r],s=this.pixelRatio,u=zf[i.textAlign||"center"],l=zf[i.textBaseline||"middle"],h=a&&a.lineWidth?a.lineWidth:0;return{label:o,anchorX:u*(o.width/s-2*i.scale)+2*(.5-u)*h,anchorY:l*o.height/s+2*(.5-l)*h}},t.prototype.execute_=function(t,e,r,n,i,o){var a,s,u;this.declutterItems.length=0,this.pixelCoordinates_&&b(e,this.renderedTransform_)?a=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),a=se(this.coordinates,0,this.coordinates.length,2,e,this.pixelCoordinates_),s=this.renderedTransform_,u=e,s[0]=u[0],s[1]=u[1],s[2]=u[2],s[3]=u[3],s[4]=u[4],s[5]=u[5]);for(var l,h,c,p,f,d,_,g,y,v,m,x,w,S,E,T,C,P=0,R=r.length,O=0,I=0,L=0,F=null,M=null,A=this.coordinateCache_,N=this.viewRotation_,G=Math.round(1e12*Math.atan2(-e[1],e[0]))/1e12,j={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:N},D=this.instructions!=r||this.overlaps?0:200;PD&&(this.fill_(t),I=0),L>D&&(t.stroke(),L=0),I||L||(t.beginPath(),p=NaN,f=NaN),++P;break;case If.CIRCLE:var U=a[O=k[1]],z=a[O+1],B=a[O+2]-U,Y=a[O+3]-z,V=Math.sqrt(B*B+Y*Y);t.moveTo(U+V,z),t.arc(U,z,V,0,2*Math.PI,!0),++P;break;case If.CLOSE_PATH:t.closePath(),++P;break;case If.CUSTOM:O=k[1],l=k[2];var X=k[3],W=k[4],Z=6==k.length?k[5]:void 0;j.geometry=X,j.feature=E,P in A||(A[P]=[]);var K=A[P];Z?Z(a,O,l,2,K):(K[0]=a[O],K[1]=a[O+1],K.length=2),W(K,j),++P;break;case If.DRAW_IMAGE:O=k[1],l=k[2],v=k[3],h=k[4],c=k[5],y=i?null:k[6];var q=k[7],H=k[8],J=k[9],Q=k[10],$=k[11],tt=k[12],et=k[13],rt=k[14];if(!v&&k.length>=19){m=k[18],x=k[19],w=k[20],S=k[21];var nt=this.drawLabelWithPointPlacement_(m,x,w,S);v=nt.label,k[3]=v;var it=k[22];h=(nt.anchorX-it)*this.pixelRatio,k[4]=h;var ot=k[23];c=(nt.anchorY-ot)*this.pixelRatio,k[5]=c,q=v.height,k[7]=q,rt=v.width,k[14]=rt}var at=void 0;k.length>24&&(at=k[24]);var st=void 0,ut=void 0,lt=void 0;k.length>16?(st=k[15],ut=k[16],lt=k[17]):(st=cs,ut=!1,lt=!1),$&&G?tt+=N:$||G||(tt-=N);for(var ht=0,ct=0;O=o;)rd(r,t+i,t+o),rd(r,t+o,t+i),rd(r,t-o,t+i),rd(r,t-i,t+o),rd(r,t-i,t-o),rd(r,t-o,t-i),rd(r,t+o,t-i),rd(r,t+i,t-o),o++,2*((a+=1+2*o)-i)+1>0&&(a+=1-2*(i-=1));return ed[t]=r,r}(n);function p(t){for(var e=l.getImageData(0,0,a,a).data,r=0;r0){var s=void 0;return(!o||h!=js&&h!=Us||-1!==o.indexOf(t))&&(s=i(t)),s||void l.clearRect(0,0,a,a)}}var f,d,_,g,y,v=Object.keys(this.executorsByZIndex_).map(Number);for(v.sort(x),f=v.length-1;f>=0;--f){var m=v[f].toString();for(_=this.executorsByZIndex_[m],d=$f.length-1;d>=0;--d)if(void 0!==(g=_[h=$f[d]])&&(y=g.executeHitDetection(l,s,r,p,u)))return y}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var r=e[0],n=e[1],i=e[2],o=e[3],a=[r,n,r,o,i,o,i,n];return se(a,0,8,2,t,a),a},t.prototype.isEmpty=function(){return _(this.executorsByZIndex_)},t.prototype.execute=function(t,e,r,n,i,o){var a=Object.keys(this.executorsByZIndex_).map(Number);a.sort(x),this.maxExtent_&&(t.save(),this.clip(t,e));var s,u,l,h,c,p,f=i||$f;for(s=0,u=a.length;s=i)for(n=i;n0&&(a.width=0),this.container;var u=Math.round(t.size[0]*r),l=Math.round(t.size[1]*r);a.width!=u||a.height!=l?(a.width=u,a.height=l,a.style.transform!==i&&(a.style.transform=i)):this.containerReused||o.clearRect(0,0,u,l),this.preRender(o,t);var h=t.extent,c=t.viewState,p=c.center,f=c.resolution,d=c.projection,_=c.rotation,g=d.getExtent(),y=this.getLayer().getSource(),v=!1;if(n.extent){var m=cr(n.extent,d);(v=!Ct(m,t.extent)&&Jt(m,t.extent))&&this.clip(o,t,m)}var x=t.viewHints,w=!(x[Ti]||x[Ci]),S=this.getRenderTransform(p,f,_,r,u,l,0),E=this.getLayer().getDeclutter()?{}:null;if(s.execute(o,S,_,w,void 0,E),y.getWrapX()&&d.canWrapX()&&!Ct(g,h)){for(var T=h[0],C=Ht(g),b=0,P=void 0;Tg[2];){P=C*++b;var O=this.getRenderTransform(p,f,_,r,u,l,P);s.execute(o,O,_,w,void 0,E),T-=C}}if(E){var I=t.viewHints;nd(E,o,_,1,!(I[Ti]||I[Ci]),t.declutterItems)}v&&o.restore(),this.postRender(o,t);var L=n.opacity,F=this.container;return L!==parseFloat(F.style.opacity)&&(F.style.opacity=1===L?"":L),this.container},e.prototype.getFeatures=function(t){return new Promise(function(e,r){if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){var n=[this.context.canvas.width,this.context.canvas.height];gr(this.pixelTransform,n);var i=this.renderedCenter_,o=this.renderedResolution_,a=this.renderedRotation_,s=this.renderedProjection_,u=this.renderedExtent_,l=this.getLayer(),h=[],c=n[0]/2,p=n[1]/2;h.push(this.getRenderTransform(i,o,a,.5,c,p,0).slice());var f=l.getSource(),d=s.getExtent();if(f.getWrapX()&&s.canWrapX()&&!Ct(d,u)){for(var _=u[0],g=Ht(d),y=0,v=void 0;_d[2];)v=g*++y,h.push(this.getRenderTransform(i,o,a,.5,c,p,v).slice()),_-=g}this.hitDetectionImageData_=od(n,h,this.renderedFeatures_,l.getStyleFunction(),u,o,a)}e(ad(t,this.renderedFeatures_,this.hitDetectionImageData_))}.bind(this))},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){if(this.replayGroup_){var a=e.viewState.resolution,s=e.viewState.rotation,u=this.getLayer(),l={};return this.replayGroup_.forEachFeatureAtCoordinate(t,a,s,r,(function(t){var e=o(t);if(!(e in l))return l[e]=!0,n(t,u)}),u.getDeclutter()?i:null)}},e.prototype.handleFontsChanged=function(){var t=this.getLayer();t.getVisible()&&this.replayGroup_&&t.changed()},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.prepareFrame=function(t){var e=this.getLayer(),r=e.getSource();if(!r)return!1;var n=t.viewHints[Ti],i=t.viewHints[Ci],o=e.getUpdateWhileAnimating(),a=e.getUpdateWhileInteracting();if(!this.dirty_&&!o&&n||!a&&i)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;var s=t.extent,u=t.viewState,l=u.projection,h=u.resolution,c=t.pixelRatio,p=e.getRevision(),f=e.getRenderBuffer(),d=e.getRenderOrder();void 0===d&&(d=Bs);var _=u.center.slice(),g=wt(s,f*h),y=[g.slice()],v=l.getExtent();if(r.getWrapX()&&l.canWrapX()&&!Ct(v,t.extent)){var m=Ht(v),x=Math.max(Ht(g)/2,m);g[0]=v[0]-x,g[2]=v[2]+x,Bi(_,l);var w=ee(y[0],l);w[0]v[0]&&w[2]>v[2]&&y.push([w[0]-m,w[1],w[2]-m,w[3]])}if(!this.dirty_&&this.renderedResolution_==h&&this.renderedRevision_==p&&this.renderedRenderOrder_==d&&Ct(this.renderedExtent_,g))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var S,E=new Yf(Vs(h,c),g,h,c,e.getDeclutter()),T=sr();if(T){for(var C=0,b=y.length;C0)e([]);else{var y=Kt(c.getTileCoordExtent(n.wrappedTileCoord)),v=[(p[0]-y[0])/h,(y[1]-p[1])/h],m=n.getSourceTiles().reduce((function(t,e){return t.concat(e.getFeatures())}),[]),x=n.hitDetectionImageData[a];if(!x&&!this.animatingOrInteracting_){var w=To(c.getTileSize(c.getZForResolution(h))),S=[w[0]/2,w[1]/2],E=this.renderedRotation_;x=od(w,[this.getRenderTransform(c.getTileCoordCenter(n.wrappedTileCoord),h,0,.5,S[0],S[1],0)],m,i.getStyleFunction(),c.getTileCoordExtent(n.wrappedTileCoord),n.getReplayState(i).renderedResolution,E),n.hitDetectionImageData[a]=x}e(ad(v,m,x))}}.bind(this))},e.prototype.handleFontsChanged=function(){f(this.renderTileImageQueue_);var t=this.getLayer();t.getVisible()&&void 0!==this.renderedLayerRevision_&&t.changed()},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.renderFrame=function(e,r){var n=e.viewHints,i=!(n[Ti]||n[Ci]);this.renderQueuedTileImages_(i,e),t.prototype.renderFrame.call(this,e,r),this.renderedPixelToCoordinateTransform_=e.pixelToCoordinateTransform.slice(),this.renderedRotation_=e.viewState.rotation;var a=this.getLayer(),s=a.getRenderMode();if(s===cd)return this.container;var u=a.getSource(),l=e.usedTiles[o(u)];for(var h in this.renderTileImageQueue_)l&&h in l||delete this.renderTileImageQueue_[h];for(var c=this.context,p=a.getDeclutter()?{}:null,f=gd[s],d=e.pixelRatio,_=e.viewState,g=_.center,y=_.resolution,v=_.rotation,m=e.size,x=Math.round(m[0]*d),w=Math.round(m[1]*d),S=this.renderedTiles,E=u.getTileGridForProjection(e.viewState.projection),T=[],C=[],b=S.length-1;b>=0;--b)for(var P=S[b],R=P.tileCoord,O=E.getTileCoordExtent(P.wrappedTileCoord),I=E.getTileCoordExtent(R,this.tmpExtent)[0]-O[0],L=dr(yr(this.inversePixelTransform.slice(),1/d,1/d),this.getRenderTransform(g,y,v,d,x,w,I)),F=P.executorGroups[o(a)],M=!1,A=0,N=F.length;A8){e.animate=!0;break}var n=this.renderTileImageQueue_[r];delete this.renderTileImageQueue_[r],this.renderTileImage_(n,e)}},e.prototype.renderFeature=function(t,e,r,n){if(!r)return!1;var i=!1;if(Array.isArray(r))for(var o=0,a=r.length;o>1)],e))<0?a=n+1:(s=n,u=!i);return u?a:~a}(p,g);if(y<0){var v=(g-p[-y-2])/(p[-y-1]-p[-y-2]),m=e+(-y-2)*n;a=ye(t[m],t[m+n],v),s=ye(t[m+1],t[m+n+1],v)}else a=t[e+y*n],s=t[e+y*n+1]}return o?(o[0]=a,o[1]=s,o):[a,s]}function wd(t,e,r,n,i,o){if(r==e)return null;var a;if(i>1;i0&&g.length>0;)o=g.pop(),h=d.pop(),p=_.pop(),(u=o.toString())in y||(l.push(p[0],p[1]),y[u]=!0),a=g.pop(),c=d.pop(),f=_.pop(),pe((i=e(n=t(s=(o+a)/2)))[0],i[1],p[0],p[1],f[0],f[1])this.featurePool_.length;)s=new lt,this.featurePool_.push(s);var l=n.getFeaturesCollection();l.clear();var h,c,p=0;for(h=0,c=this.meridians_.length;hMath.PI/2);for(var g=Ws(t),y=c;y<=p;++y){var v=this.meridians_.length+this.parallels_.length,m=void 0,x=void 0,w=void 0,S=void 0;if(this.meridiansLabels_)for(x=0,w=this.meridiansLabels_.length;x=s?(t[0]=a[0],t[2]=a[2]):o=!0);var u=[he(e[0],this.minX_,this.maxX_),he(e[1],this.minY_,this.maxY_)],l=this.toLonLatTransform_(u);isNaN(l[1])&&(l[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_);var h,c,p,f,d=he(l[0],this.minLon_,this.maxLon_),_=he(l[1],this.minLat_,this.maxLat_),g=this.maxLines_,y=t;o||(y=[he(t[0],this.minX_,this.maxX_),he(t[1],this.minY_,this.maxY_),he(t[2],this.minX_,this.maxX_),he(t[3],this.minY_,this.maxY_)]);var v=te(y,this.toLonLatTransform_,void 0,8),m=v[3],x=v[2],w=v[1],S=v[0];if(o||(Tt(y,this.bottomLeft_)&&(S=this.minLon_,w=this.minLat_),Tt(y,this.bottomRight_)&&(x=this.maxLon_,w=this.minLat_),Tt(y,this.topLeft_)&&(S=this.minLon_,m=this.maxLat_),Tt(y,this.topRight_)&&(x=this.maxLon_,m=this.maxLat_),m=he(m,_,this.maxLat_),x=he(x,d,this.maxLon_),w=he(w,this.minLat_,_),S=he(S,this.minLon_,d)),f=he(d=Math.floor(d/i)*i,this.minLon_,this.maxLon_),c=this.addMeridian_(f,w,m,n,t,0),h=0,o)for(;(f-=i)>=S&&h++n[o]&&(i=o,o=1);var a=Math.max(e[1],n[i]),s=Math.min(e[3],n[o]),u=he(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,a,s),l=[n[i-1]+(n[o-1]-n[i-1])*(u-n[i])/(n[o]-n[i]),u],h=this.meridiansLabels_[r].geom;return h.setCoordinates(l),h},e.prototype.getMeridians=function(){return this.meridians_},e.prototype.getParallel_=function(t,e,r,n,i){var o=function(t,e,r,n,i){return Td((function(n){return[e+(r-e)*n,t]}),tr(We("EPSG:4326"),n),i)}(t,e,r,this.projection_,n),a=this.parallels_[i];return a?(a.setFlatCoordinates(re,o),a.changed()):a=new Ed(o,re),a},e.prototype.getParallelPoint_=function(t,e,r){var n=t.getFlatCoordinates(),i=0,o=n.length-2;n[i]>n[o]&&(i=o,o=0);var a=Math.max(e[0],n[i]),s=Math.min(e[2],n[o]),u=he(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,a,s),l=[u,n[i+1]+(n[o+1]-n[i+1])*(u-n[i])/(n[o]-n[i])],h=this.parallelsLabels_[r].geom;return h.setCoordinates(l),h},e.prototype.getParallels=function(){return this.parallels_},e.prototype.updateProjectionInfo_=function(t){var e=We("EPSG:4326"),r=t.getWorldExtent();this.maxLat_=r[3],this.maxLon_=r[2],this.minLat_=r[1],this.minLon_=r[0];var n=tr(t,e);if(this.minLon_=Math.abs(this.minLat_)?this.maxLat_:this.minLat_),this.projection_=t},e}(md),Od=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Id="blur",Ld="gradient",Fd="radius",Md=["#00f","#0ff","#0f0","#ff0","#f00"];var Ad=function(t){function e(e){var r=this,n=e||{},i=p({},n);delete i.gradient,delete i.radius,delete i.blur,delete i.weight,(r=t.call(this,i)||this).gradient_=null,r.addEventListener(et(Ld),r.handleGradientChanged_),r.setGradient(n.gradient?n.gradient:Md),r.setBlur(void 0!==n.blur?n.blur:15),r.setRadius(void 0!==n.radius?n.radius:8);var o=n.weight?n.weight:"weight";return r.weightFunction_="string"==typeof o?function(t){return t.get(o)}:o,r.setRenderOrder(null),r}return Od(e,t),e.prototype.getBlur=function(){return this.get(Id)},e.prototype.getGradient=function(){return this.get(Ld)},e.prototype.getRadius=function(){return this.get(Fd)},e.prototype.handleGradientChanged_=function(){this.gradient_=function(t){for(var e=Ji(1,256),r=e.createLinearGradient(0,0,1,256),n=1/(t.length-1),i=0,o=t.length;i0)break}this.source_&&(this.source_.clear(),this.source_.addFeatures(a)),this.dispatchEvent(new zd(Ud,t,a,i))},e.prototype.registerListeners_=function(){var t=this.getMap();if(t){var e=this.target?this.target:t.getViewport();this.dropListenKeys_=[g(e,B,Bd,this),g(e,U,Yd,this),g(e,z,Yd,this),g(e,B,Yd,this)]}},e.prototype.setActive=function(e){!this.getActive()&&e&&this.registerListeners_(),this.getActive()&&!e&&this.unregisterListeners_(),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.unregisterListeners_(),t.prototype.setMap.call(this,e),this.getActive()&&this.registerListeners_()},e.prototype.tryReadFeatures_=function(t,e,r){try{return t.readFeatures(e,r)}catch(t){return null}},e.prototype.unregisterListeners_=function(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(v),this.dropListenKeys_=null)},e}(Zo),Xd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wd=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,n)||this).condition_=n.condition?n.condition:oa,r.lastAngle_=void 0,r.lastMagnitude_=void 0,r.lastScaleDelta_=0,r.duration_=void 0!==n.duration?n.duration:400,r}return Xd(e,t),e.prototype.handleDragEvent=function(t){if(sa(t)){var e=t.map,r=e.getSize(),n=t.pixel,i=n[0]-r[0]/2,o=r[1]/2-n[1],a=Math.atan2(o,i),s=Math.sqrt(i*i+o*o),u=e.getView();if(void 0!==this.lastAngle_){var l=this.lastAngle_-a;u.adjustRotationInternal(l)}this.lastAngle_=a,void 0!==this.lastMagnitude_&&u.adjustResolutionInternal(this.lastMagnitude_/s),void 0!==this.lastMagnitude_&&(this.lastScaleDelta_=this.lastMagnitude_/s),this.lastMagnitude_=s}},e.prototype.handleUpEvent=function(t){if(!sa(t))return!0;var e=t.map.getView(),r=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,r),this.lastScaleDelta_=0,!1},e.prototype.handleDownEvent=function(t){return!!sa(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))},e}(ca),Zd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Kd=function(t){function e(e,r,n){var i=t.call(this)||this;if(void 0!==n&&void 0===r)i.setFlatCoordinates(n,e);else{var o=r||0;i.setCenterAndRadius(e,o,n)}return i}return Zd(e,t),e.prototype.clone=function(){return new e(this.flatCoordinates.slice(),void 0,this.layout)},e.prototype.closestPointXY=function(t,e,r,n){var i=this.flatCoordinates,o=t-i[0],a=e-i[1],s=o*o+a*a;if(s=e[0]||(t[1]<=e[1]&&t[3]>=e[1]||kt(t,this.intersectsCoordinate.bind(this)))}return!1},e.prototype.setCenter=function(t){var e=this.stride,r=this.flatCoordinates[e]-this.flatCoordinates[0],n=t.slice();n[e]=n[0]+r;for(var i=1;i=this.dragVertexDelay_?(this.downPx_=e.pixel,this.shouldHandle_=!this.freehand_,r=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0));return this.freehand_&&e.type===Bn.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(e.coordinate),n=!1):this.freehand_&&e.type===Bn.POINTERDOWN?n=!1:r?(n=e.type===Bn.POINTERMOVE)&&this.freehand_?n=this.handlePointerMove_(e):("mouse"==e.pointerEvent.pointerType||e.type===Bn.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(e):e.type===Bn.DBLCLICK&&(n=!1),t.prototype.handleEvent.call(this,e)&&n},e.prototype.handleDownEvent=function(t){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=t.pixel,this.finishCoordinate_||this.startDrawing_(t),!0):this.condition_(t)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout(function(){this.handlePointerMove_(new Vn(Bn.POINTERMOVE,t.map,t.pointerEvent,!1,t.frameState))}.bind(this),this.dragVertexDelay_),this.downPx_=t.pixel,!0):(this.lastDragTime_=void 0,!1)},e.prototype.handleUpEvent=function(t){var e=!0;this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0),this.handlePointerMove_(t);var r=this.mode_===s_;return this.shouldHandle_?(this.finishCoordinate_?this.freehand_||r?this.finishDrawing():this.atFinish_(t)?this.finishCondition_(t)&&this.finishDrawing():this.addToDrawing_(t.coordinate):(this.startDrawing_(t),this.mode_===i_&&this.finishDrawing()),e=!1):this.freehand_&&this.abortDrawing(),!e&&this.stopClick_&&t.stopPropagation(),e},e.prototype.handlePointerMove_=function(t){if(this.downPx_&&(!this.freehand_&&this.shouldHandle_||this.freehand_&&!this.shouldHandle_)){var e=this.downPx_,r=t.pixel,n=e[0]-r[0],i=e[1]-r[1],o=n*n+i*i;if(this.shouldHandle_=this.freehand_?o>this.squaredClickTolerance_:o<=this.squaredClickTolerance_,!this.shouldHandle_)return!0}return this.finishCoordinate_?this.modifyDrawing_(t):this.createOrUpdateSketchPoint_(t),!0},e.prototype.atFinish_=function(t){var e=!1;if(this.sketchFeature_){var r=!1,n=[this.finishCoordinate_];if(this.mode_===o_)r=this.sketchCoords_.length>this.minPoints_;else if(this.mode_===a_){var i=this.sketchCoords_;r=i[0].length>this.minPoints_,n=[i[0][0],i[0][i[0].length-2]]}if(r)for(var o=t.map,a=0,s=n.length;a=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),this.geometryFunction_(r,n,i)):this.mode_===a_&&((r=this.sketchCoords_[0]).length>=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),e&&(this.finishCoordinate_=r[0]),this.geometryFunction_(this.sketchCoords_,n,i)),this.updateSketchFeatures_(),e&&this.finishDrawing()},e.prototype.removeLastPoint=function(){if(this.sketchFeature_){var t,e=this.sketchFeature_.getGeometry(),r=this.getMap().getView().getProjection();this.mode_===o_?((t=this.sketchCoords_).splice(-2,1),this.geometryFunction_(t,e,r),t.length>=2&&(this.finishCoordinate_=t[t.length-2].slice())):this.mode_===a_&&((t=this.sketchCoords_[0]).splice(-2,1),this.sketchLine_.getGeometry().setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e,r)),0===t.length&&this.abortDrawing(),this.updateSketchFeatures_()}},e.prototype.finishDrawing=function(){var t=this.abortDrawing_();if(t){var e=this.sketchCoords_,r=t.getGeometry(),n=this.getMap().getView().getProjection();this.mode_===o_?(e.pop(),this.geometryFunction_(e,r,n)):this.mode_===a_&&(e[0].pop(),this.geometryFunction_(e,r,n),e=r.getCoordinates()),this.type_===ae.MULTI_POINT?t.setGeometry(new $d([e])):this.type_===ae.MULTI_LINE_STRING?t.setGeometry(new Jd([e])):this.type_===ae.MULTI_POLYGON&&t.setGeometry(new r_([e])),this.dispatchEvent(new c_(l_,t)),this.features_&&this.features_.push(t),this.source_&&this.source_.addFeature(t)}},e.prototype.abortDrawing_=function(){this.finishCoordinate_=null;var t=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),t},e.prototype.abortDrawing=function(){var t=this.abortDrawing_();t&&this.dispatchEvent(new c_(h_,t))},e.prototype.appendCoordinates=function(t){var e=this.mode_,r=[];e===o_?r=this.sketchCoords_:e===a_&&(r=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]);for(var n=r.pop(),i=0;ic?o[1]:o[0]),a}}return null},e.prototype.handlePointerMove_=function(t){var e=t.pixel,r=t.map,n=this.snapToVertex_(e,r);n||(n=r.getCoordinateFromPixelInternal(e)),this.createOrUpdatePointerFeature_(n)},e.prototype.createOrUpdateExtentFeature_=function(t){var e=this.extentFeature_;return e?t?e.setGeometry(fn(t)):e.setGeometry(void 0):(e=new lt(t?fn(t):{}),this.extentFeature_=e,this.extentOverlay_.getSource().addFeature(e)),e},e.prototype.createOrUpdatePointerFeature_=function(t){var e=this.vertexFeature_;e?e.getGeometry().setCoordinates(t):(e=new lt(new Kr(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e));return e},e.prototype.handleEvent=function(e){return!e.pointerEvent||(e.type!=Bn.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(e),t.prototype.handleEvent.call(this,e),!1)},e.prototype.handleDownEvent=function(t){var e=t.pixel,r=t.map,n=this.getExtentInternal(),i=this.snapToVertex_(e,r),o=function(t){var e=null,r=null;return t[0]==n[0]?e=n[2]:t[0]==n[2]&&(e=n[0]),t[1]==n[1]?r=n[3]:t[1]==n[3]&&(r=n[1]),null!==e&&null!==r?[e,r]:null};if(i&&n){var a=i[0]==n[0]||i[0]==n[2]?i[0]:null,s=i[1]==n[1]||i[1]==n[3]?i[1]:null;null!==a&&null!==s?this.pointerHandler_=y_(o(i)):null!==a?this.pointerHandler_=v_(o([a,n[1]]),o([a,n[3]])):null!==s&&(this.pointerHandler_=v_(o([n[0],s]),o([n[2],s])))}else i=r.getCoordinateFromPixelInternal(e),this.setExtent([i[0],i[1],i[0],i[1]]),this.pointerHandler_=y_(i);return!0},e.prototype.handleDragEvent=function(t){if(this.pointerHandler_){var e=t.coordinate;this.setExtent(this.pointerHandler_(e)),this.createOrUpdatePointerFeature_(e)}return!0},e.prototype.handleUpEvent=function(t){this.pointerHandler_=null;var e=this.getExtentInternal();return e&&0!==Ut(e)||this.setExtent(null),!1},e.prototype.setMap=function(e){this.extentOverlay_.setMap(e),this.vertexOverlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getExtent=function(){return hr(this.getExtentInternal(),this.getMap().getView().getProjection())},e.prototype.getExtentInternal=function(){return this.extent_},e.prototype.setExtent=function(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new __(this.extent_))},e}(ca),x_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),w_=[0,0,0,0],S_=[],E_="modifystart",T_="modifyend",C_=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.features=r,i.mapBrowserEvent=n,i}return x_(e,t),e}(F);function b_(t,e){return t.index-e.index}function P_(t,e,r){var n=e.geometry;if(n.getType()===ae.CIRCLE){var i=n;if(1===e.index){var o=sr();o&&(i=i.clone().transform(o,r));var a=Di(i.getCenter(),lr(t,r)),s=Math.sqrt(a)-i.getRadius();return s*s}}var u=lr(t,r);return S_[0]=lr(e.segment[0],r),S_[1]=lr(e.segment[1],r),Ui(u,S_)}function R_(t,e,r){var n=e.geometry;if(n.getType()===ae.CIRCLE&&1===e.index){var i=n,o=sr();return o&&(i=i.clone().transform(o,r)),ur(i.getClosestPoint(lr(t,r)),r)}var a=lr(t,r);return S_[0]=lr(e.segment[0],r),S_[1]=lr(e.segment[1],r),ur(Fi(a,S_),r)}var O_=function(t){function e(e){var r,n,i=t.call(this,e)||this;if(i.boundHandleFeatureChange_=i.handleFeatureChange_.bind(i),i.condition_=e.condition?e.condition:ua,i.defaultDeleteCondition_=function(t){return Jo(t)&&na(t)},i.deleteCondition_=e.deleteCondition?e.deleteCondition:i.defaultDeleteCondition_,i.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:ta,i.vertexFeature_=null,i.vertexSegments_=null,i.lastPixel_=[0,0],i.ignoreNextSingleClick_=!1,i.modified_=!1,i.rBush_=new oc,i.pixelTolerance_=void 0!==e.pixelTolerance?e.pixelTolerance:10,i.snappedToVertex_=!1,i.changingFeature_=!1,i.dragSegments_=[],i.overlay_=new md({source:new uc({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:(r=sh(),function(t,e){return r[ae.POINT]}),updateWhileAnimating:!0,updateWhileInteracting:!0}),i.SEGMENT_WRITERS_={Point:i.writePointGeometry_.bind(i),LineString:i.writeLineStringGeometry_.bind(i),LinearRing:i.writeLineStringGeometry_.bind(i),Polygon:i.writePolygonGeometry_.bind(i),MultiPoint:i.writeMultiPointGeometry_.bind(i),MultiLineString:i.writeMultiLineStringGeometry_.bind(i),MultiPolygon:i.writeMultiPolygonGeometry_.bind(i),Circle:i.writeCircleGeometry_.bind(i),GeometryCollection:i.writeGeometryCollectionGeometry_.bind(i)},i.source_=null,e.source?(i.source_=e.source,n=new at(i.source_.getFeatures()),i.source_.addEventListener($h,i.handleSourceAdd_.bind(i)),i.source_.addEventListener(rc,i.handleSourceRemove_.bind(i))):n=e.features,!n)throw new Error("The modify interaction requires features or a source");return i.features_=n,i.features_.forEach(i.addFeature_.bind(i)),i.features_.addEventListener(l,i.handleFeatureAdd_.bind(i)),i.features_.addEventListener(h,i.handleFeatureRemove_.bind(i)),i.lastPointerEvent_=null,i}return x_(e,t),e.prototype.addFeature_=function(t){var e=t.getGeometry();if(e){var r=this.SEGMENT_WRITERS_[e.getType()];r&&r(t,e)}var n=this.getMap();n&&n.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,n),t.addEventListener(N,this.boundHandleFeatureChange_)},e.prototype.willModifyFeatures_=function(t){this.modified_||(this.modified_=!0,this.dispatchEvent(new C_(E_,this.features_,t)))},e.prototype.removeFeature_=function(t){this.removeFeatureSegmentData_(t),this.vertexFeature_&&0===this.features_.getLength()&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.removeEventListener(N,this.boundHandleFeatureChange_)},e.prototype.removeFeatureSegmentData_=function(t){var e=this.rBush_,r=[];e.forEach((function(e){t===e.feature&&r.push(e)}));for(var n=r.length-1;n>=0;--n){for(var i=r[n],o=this.dragSegments_.length-1;o>=0;--o)this.dragSegments_[o][0]===i&&this.dragSegments_.splice(o,1);e.remove(i)}},e.prototype.setActive=function(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.overlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getOverlay=function(){return this.overlay_},e.prototype.handleSourceAdd_=function(t){t.feature&&this.features_.push(t.feature)},e.prototype.handleSourceRemove_=function(t){t.feature&&this.features_.remove(t.feature)},e.prototype.handleFeatureAdd_=function(t){this.addFeature_(t.element)},e.prototype.handleFeatureChange_=function(t){if(!this.changingFeature_){var e=t.target;this.removeFeature_(e),this.addFeature_(e)}},e.prototype.handleFeatureRemove_=function(t){var e=t.element;this.removeFeature_(e)},e.prototype.writePointGeometry_=function(t,e){var r=e.getCoordinates(),n={feature:t,geometry:e,segment:[r,r]};this.rBush_.insert(e.getExtent(),n)},e.prototype.writeMultiPointGeometry_=function(t,e){for(var r=e.getCoordinates(),n=0,i=r.length;n=0;--g)this.insertVertex_.apply(this,i[g])}return!!this.vertexFeature_},e.prototype.handleUpEvent=function(t){for(var e=this.dragSegments_.length-1;e>=0;--e){var r=this.dragSegments_[e][0],n=r.geometry;if(n.getType()===ae.CIRCLE){var i=n.getCenter(),o=r.featureSegments[0],a=r.featureSegments[1];o.segment[0]=i,o.segment[1]=i,a.segment[0]=i,a.segment[1]=i,this.rBush_.update(Lt(i),o);var s=n,u=sr();if(u){var l=t.map.getView().getProjection();s=dn(s=s.clone().transform(u,l)).transform(l,u)}this.rBush_.update(s.getExtent(),a)}else this.rBush_.update(xt(r.segment),r)}return this.modified_&&(this.dispatchEvent(new C_(T_,this.features_,t)),this.modified_=!1),!1},e.prototype.handlePointerMove_=function(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.pixel,t.map,t.coordinate)},e.prototype.handlePointerAtPixel_=function(t,e,r){var n=r||e.getCoordinateFromPixel(t),i=e.getView().getProjection(),a=hr(wt(cr(Lt(n,w_),i),e.getView().getResolution()*this.pixelTolerance_,w_),i),s=this.rBush_.getInExtent(a);if(s.length>0){s.sort((function(t,e){return P_(n,t,i)-P_(n,e,i)}));var u=s[0],l=u.segment,h=R_(n,u,i),c=e.getPixelFromCoordinate(h),p=ki(t,c);if(p<=this.pixelTolerance_){var f={};if(u.geometry.getType()===ae.CIRCLE&&1===u.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(h);else{var d=e.getPixelFromCoordinate(l[0]),_=e.getPixelFromCoordinate(l[1]),g=Di(c,d),y=Di(c,_);p=Math.sqrt(Math.min(g,y)),this.snappedToVertex_=p<=this.pixelTolerance_,this.snappedToVertex_&&(h=g>y?l[1]:l[0]),this.createOrUpdateVertexFeature_(h);for(var v=1,m=s.length;v=0;--i)c=o((h=(r=p[i])[0]).feature),h.depth&&(c+="-"+h.depth.join("-")),c in f||(f[c]={}),0===r[1]?(f[c].right=h,f[c].index=h.index):1==r[1]&&(f[c].left=h,f[c].index=h.index+1);for(c in f){switch(l=f[c].right,s=f[c].left,(u=(a=f[c].index)-1)<0&&(u=0),t=e=(n=(h=void 0!==s?s:l).geometry).getCoordinates(),d=!1,n.getType()){case ae.MULTI_LINE_STRING:e[h.depth[0]].length>2&&(e[h.depth[0]].splice(a,1),d=!0);break;case ae.LINE_STRING:e.length>2&&(e.splice(a,1),d=!0);break;case ae.MULTI_POLYGON:t=t[h.depth[1]];case ae.POLYGON:(t=t[h.depth[0]]).length>4&&(a==t.length-1&&(a=0),t.splice(a,1),d=!0,0===a&&(t.pop(),t.push(t[0]),u=t.length-1))}if(d){this.setGeometryCoordinates_(n,e);var _=[];if(void 0!==s&&(this.rBush_.remove(s),_.push(s.segment[0])),void 0!==l&&(this.rBush_.remove(l),_.push(l.segment[1])),void 0!==s&&void 0!==l){var g={depth:h.depth,feature:h.feature,geometry:h.geometry,index:u,segment:_};this.rBush_.insert(xt(g.segment),g)}this.updateSegmentIndices_(n,a,h.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),p.length=0}}return d},e.prototype.setGeometryCoordinates_=function(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1},e.prototype.updateSegmentIndices_=function(t,e,r,n){this.rBush_.forEachInExtent(t.getExtent(),(function(i){i.geometry===t&&(void 0===r||void 0===i.depth||b(i.depth,r))&&i.index>e&&(i.index+=n)}))},e}(ca),I_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),L_="select",F_=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.selected=r,o.deselected=n,o.mapBrowserEvent=i,o}return I_(e,t),e}(F),M_={};function A_(t){if(!this.condition_(t))return!0;var e=this.addCondition_(t),r=this.removeCondition_(t),n=this.toggleCondition_(t),i=!e&&!r&&!n,o=t.map,a=this.getFeatures(),s=[],u=[];if(i){f(this.featureLayerAssociation_),o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.filter_(t,e))return u.push(t),this.addFeatureLayerAssociation_(t,e),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var l=a.getLength()-1;l>=0;--l){var h=a.item(l),c=u.indexOf(h);c>-1?u.splice(c,1):(a.remove(h),s.push(h))}0!==u.length&&a.extend(u)}else{o.forEachFeatureAtPixel(t.pixel,function(t,i){if(this.filter_(t,i))return!e&&!n||w(a.getArray(),t)?(r||n)&&w(a.getArray(),t)&&(s.push(t),this.removeFeatureLayerAssociation_(t)):(u.push(t),this.addFeatureLayerAssociation_(t,i)),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var p=s.length-1;p>=0;--p)a.remove(s[p]);a.extend(u)}return(u.length>0||s.length>0)&&this.dispatchEvent(new F_(L_,u,s,t)),!0}var N_=function(t){function e(e){var r,n,i=t.call(this,{handleEvent:A_})||this,o=e||{};if(i.boundAddFeature_=i.addFeature_.bind(i),i.boundRemoveFeature_=i.removeFeature_.bind(i),i.condition_=o.condition?o.condition:na,i.addCondition_=o.addCondition?o.addCondition:ra,i.removeCondition_=o.removeCondition?o.removeCondition:ra,i.toggleCondition_=o.toggleCondition?o.toggleCondition:oa,i.multi_=!!o.multi&&o.multi,i.filter_=o.filter?o.filter:R,i.hitTolerance_=o.hitTolerance?o.hitTolerance:0,i.style_=void 0!==o.style?o.style:(T((r=sh())[ae.POLYGON],r[ae.LINE_STRING]),T(r[ae.GEOMETRY_COLLECTION],r[ae.LINE_STRING]),function(t){return t.getGeometry()?r[t.getGeometry().getType()]:null}),i.features_=o.features||new at,o.layers)if("function"==typeof o.layers)n=o.layers;else{var a=o.layers;n=function(t){return w(a,t)}}else n=R;return i.layerFilter_=n,i.featureLayerAssociation_={},i}return I_(e,t),e.prototype.addFeatureLayerAssociation_=function(t,e){this.featureLayerAssociation_[o(t)]=e},e.prototype.getFeatures=function(){return this.features_},e.prototype.getHitTolerance=function(){return this.hitTolerance_},e.prototype.getLayer=function(t){return this.featureLayerAssociation_[o(t)]},e.prototype.setHitTolerance=function(t){this.hitTolerance_=t},e.prototype.setMap=function(e){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),t.prototype.setMap.call(this,e),e?(this.features_.addEventListener(l,this.boundAddFeature_),this.features_.addEventListener(h,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(l,this.boundAddFeature_),this.features_.removeEventListener(h,this.boundRemoveFeature_))},e.prototype.addFeature_=function(t){var e=t.element;this.style_&&this.applySelectedStyle_(e)},e.prototype.removeFeature_=function(t){var e=t.element;this.style_&&this.restorePreviousStyle_(e)},e.prototype.getStyle=function(){return this.style_},e.prototype.applySelectedStyle_=function(t){var e=o(t);e in M_||(M_[e]=t.getStyle()),t.setStyle(this.style_)},e.prototype.restorePreviousStyle_=function(t){var r=o(t),n=this.getMap().getInteractions().getArray().filter((function(r){return r instanceof e&&r.getStyle()&&-1!==r.getFeatures().getArray().indexOf(t)}));n.length>0?t.setStyle(n[n.length-1].getStyle()):(t.setStyle(M_[r]),delete M_[r])},e.prototype.removeFeatureLayerAssociation_=function(t){delete this.featureLayerAssociation_[o(t)]},e}(Zo),G_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function j_(t){return t.feature?t.feature:t.element?t.element:void 0}var D_=[],k_=function(t){function e(e){var r=this,n=e||{},i=n;return i.handleDownEvent||(i.handleDownEvent=R),i.stopDown||(i.stopDown=O),(r=t.call(this,i)||this).source_=n.source?n.source:null,r.vertex_=void 0===n.vertex||n.vertex,r.edge_=void 0===n.edge||n.edge,r.features_=n.features?n.features:null,r.featuresListenerKeys_=[],r.featureChangeListenerKeys_={},r.indexedFeaturesExtents_={},r.pendingFeatures_={},r.pixelTolerance_=void 0!==n.pixelTolerance?n.pixelTolerance:10,r.rBush_=new oc,r.SEGMENT_WRITERS_={Point:r.writePointGeometry_.bind(r),LineString:r.writeLineStringGeometry_.bind(r),LinearRing:r.writeLineStringGeometry_.bind(r),Polygon:r.writePolygonGeometry_.bind(r),MultiPoint:r.writeMultiPointGeometry_.bind(r),MultiLineString:r.writeMultiLineStringGeometry_.bind(r),MultiPolygon:r.writeMultiPolygonGeometry_.bind(r),GeometryCollection:r.writeGeometryCollectionGeometry_.bind(r),Circle:r.writeCircleGeometry_.bind(r)},r}return G_(e,t),e.prototype.addFeature=function(t,e){var r=void 0===e||e,n=o(t),i=t.getGeometry();if(i){var a=this.SEGMENT_WRITERS_[i.getType()];a&&(this.indexedFeaturesExtents_[n]=i.getExtent([1/0,1/0,-1/0,-1/0]),a(t,i))}r&&(this.featureChangeListenerKeys_[n]=g(t,N,this.handleFeatureChange_,this))},e.prototype.forEachFeatureAdd_=function(t){this.addFeature(t)},e.prototype.forEachFeatureRemove_=function(t){this.removeFeature(t)},e.prototype.getFeatures_=function(){var t;return this.features_?t=this.features_:this.source_&&(t=this.source_.getFeatures()),t},e.prototype.handleEvent=function(e){var r=this.snapTo(e.pixel,e.coordinate,e.map);return r.snapped&&(e.coordinate=r.vertex.slice(0,2),e.pixel=r.vertexPixel),t.prototype.handleEvent.call(this,e)},e.prototype.handleFeatureAdd_=function(t){var e=j_(t);this.addFeature(e)},e.prototype.handleFeatureRemove_=function(t){var e=j_(t);this.removeFeature(e)},e.prototype.handleFeatureChange_=function(t){var e=t.target;if(this.handlingDownUpSequence){var r=o(e);r in this.pendingFeatures_||(this.pendingFeatures_[r]=e)}else this.updateFeature_(e)},e.prototype.handleUpEvent=function(t){var e=d(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1},e.prototype.removeFeature=function(t,e){var r=void 0===e||e,n=o(t),i=this.indexedFeaturesExtents_[n];if(i){var a=this.rBush_,s=[];a.forEachInExtent(i,(function(e){t===e.feature&&s.push(e)}));for(var u=s.length-1;u>=0;--u)a.remove(s[u])}r&&(v(this.featureChangeListenerKeys_[n]),delete this.featureChangeListenerKeys_[n])},e.prototype.setMap=function(e){var r=this.getMap(),n=this.featuresListenerKeys_,i=this.getFeatures_();r&&(n.forEach(v),n.length=0,i.forEach(this.forEachFeatureRemove_.bind(this))),t.prototype.setMap.call(this,e),e&&(this.features_?n.push(g(this.features_,l,this.handleFeatureAdd_,this),g(this.features_,h,this.handleFeatureRemove_,this)):this.source_&&n.push(g(this.source_,$h,this.handleFeatureAdd_,this),g(this.source_,rc,this.handleFeatureRemove_,this)),i.forEach(this.forEachFeatureAdd_.bind(this)))},e.prototype.snapTo=function(t,e,r){var n=xt([r.getCoordinateFromPixel([t[0]-this.pixelTolerance_,t[1]+this.pixelTolerance_]),r.getCoordinateFromPixel([t[0]+this.pixelTolerance_,t[1]-this.pixelTolerance_])]),i=this.rBush_.getInExtent(n);this.vertex_&&!this.edge_&&(i=i.filter((function(t){return t.feature.getGeometry().getType()!==ae.CIRCLE})));var o=!1,a=null,s=null;if(0===i.length)return{snapped:o,vertex:a,vertexPixel:s};for(var u,l=r.getView().getProjection(),h=lr(e,l),c=1/0,p=0;pm?_[1]:_[0],s=r.getPixelFromCoordinate(a))}else if(this.edge_){var x=u.feature.getGeometry().getType()===ae.CIRCLE;if(x){var w=u.feature.getGeometry(),S=sr();S&&(w=w.clone().transform(S,l)),a=ur(function(t,e){var r=e.getRadius(),n=e.getCenter(),i=n[0],o=n[1],a=t[0]-i,s=t[1]-o;0===a&&0===s&&(a=1);var u=Math.sqrt(a*a+s*s);return[i+r*a/u,o+r*s/u]}(h,w),l)}else D_[0]=lr(_[0],l),D_[1]=lr(_[1],l),a=ur(Fi(h,D_),l);if(ki(t,s=r.getPixelFromCoordinate(a))<=this.pixelTolerance_&&(o=!0,this.vertex_&&!x)){g=r.getPixelFromCoordinate(_[0]),y=r.getPixelFromCoordinate(_[1]),v=Di(s,g),m=Di(s,y);Math.sqrt(Math.min(v,m))<=this.pixelTolerance_&&(a=v>m?_[1]:_[0],s=r.getPixelFromCoordinate(a))}}return o&&(s=[Math.round(s[0]),Math.round(s[1])]),{snapped:o,vertex:a,vertexPixel:s}},e.prototype.updateFeature_=function(t){this.removeFeature(t,!1),this.addFeature(t,!1)},e.prototype.writeCircleGeometry_=function(t,e){var r=this.getMap().getView().getProjection(),n=e,i=sr();i&&(n=n.clone().transform(i,r));var o=dn(n);i&&o.transform(r,i);for(var a=o.getCoordinates()[0],s=0,u=a.length-1;s=0;r--){var l=o[r][0];if(Ct(new Wr(l).getExtent(),new Wr(s).getExtent())){o[r].push(s),u=!0;break}}u||o.push([s.reverse()])}return o}(o.rings,a);1===s.length?(i=ae.POLYGON,t=Object.assign({},t,((r={}).rings=s[0],r))):(i=ae.MULTI_POLYGON,t=Object.assign({},t,((n={}).rings=s,n)))}return H_((0,rg[i])(t),!1,e)}function og(t){var e=re;return!0===t.hasZ&&!0===t.hasM?e=oe:!0===t.hasZ?e=ne:!0===t.hasM&&(e=ie),e}function ag(t){var e=t.getLayout();return{hasZ:e===ne||e===oe,hasM:e===ie||e===oe}}function sg(t,e){return(0,ng[t.getType()])(H_(t,!0,e),e)}ng[ae.POINT]=function(t,e){var r,n=t.getCoordinates(),i=t.getLayout();i===ne?r={x:n[0],y:n[1],z:n[2]}:i===ie?r={x:n[0],y:n[1],m:n[2]}:i===oe?r={x:n[0],y:n[1],z:n[2],m:n[3]}:i===re?r={x:n[0],y:n[1]}:st(!1,34);return r},ng[ae.LINE_STRING]=function(t,e){var r=ag(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:[t.getCoordinates()]}},ng[ae.POLYGON]=function(t,e){var r=ag(t);return{hasZ:r.hasZ,hasM:r.hasM,rings:t.getCoordinates(!1)}},ng[ae.MULTI_POINT]=function(t,e){var r=ag(t);return{hasZ:r.hasZ,hasM:r.hasM,points:t.getCoordinates()}},ng[ae.MULTI_LINE_STRING]=function(t,e){var r=ag(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:t.getCoordinates()}},ng[ae.MULTI_POLYGON]=function(t,e){for(var r=ag(t),n=t.getCoordinates(!1),i=[],o=0;o=0;a--)i.push(n[o][a]);return{hasZ:r.hasZ,hasM:r.hasM,rings:i}};var ug=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this)||this).geometryName_=n.geometryName,r}return eg(e,t),e.prototype.readFeatureFromObject=function(t,e){var r=t,n=ig(r.geometry,e),i=new lt;return this.geometryName_&&i.setGeometryName(this.geometryName_),i.setGeometry(n),e&&e.idField&&r.attributes[e.idField]&&i.setId(r.attributes[e.idField]),r.attributes&&i.setProperties(r.attributes,!0),i},e.prototype.readFeaturesFromObject=function(t,e){var r=e||{};if(t.features){var n=[],i=t.features;r.idField=t.objectIdFieldName;for(var o=0,a=i.length;o0?r[0]:null},e.prototype.readFeatureFromNode=function(t,e){return null},e.prototype.readFeatures=function(t,e){if(t){if("string"==typeof t){var r=Zu(t);return this.readFeaturesFromDocument(r,e)}return Wu(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}return[]},e.prototype.readFeaturesFromDocument=function(t,e){for(var r=[],n=t.firstChild;n;n=n.nextSibling)n.nodeType==Node.ELEMENT_NODE&&T(r,this.readFeaturesFromNode(n,e));return r},e.prototype.readFeaturesFromNode=function(t,e){return n()},e.prototype.readGeometry=function(t,e){if(t){if("string"==typeof t){var r=Zu(t);return this.readGeometryFromDocument(r,e)}return Wu(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e)}return null},e.prototype.readGeometryFromDocument=function(t,e){return null},e.prototype.readGeometryFromNode=function(t,e){return null},e.prototype.readProjection=function(t){if(t){if("string"==typeof t){var e=Zu(t);return this.readProjectionFromDocument(e)}return Wu(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},e.prototype.readProjectionFromDocument=function(t){return this.dataProjection},e.prototype.readProjectionFromNode=function(t){return this.dataProjection},e.prototype.writeFeature=function(t,e){var r=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeatureNode=function(t,e){return null},e.prototype.writeFeatures=function(t,e){var r=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeaturesNode=function(t,e){return null},e.prototype.writeGeometry=function(t,e){var r=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeGeometryNode=function(t,e){return null},e}(q_),cg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pg="http://www.opengis.net/gml",fg=/^[\s\xa0]*$/,dg=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureType=n.featureType,r.featureNS=n.featureNS,r.srsName=n.srsName,r.schemaLocation="",r.FEATURE_COLLECTION_PARSERS={},r.FEATURE_COLLECTION_PARSERS[r.namespace]={featureMember:qu(r.readFeaturesInternal),featureMembers:Hu(r.readFeaturesInternal)},r}return cg(e,t),e.prototype.readFeaturesInternal=function(t,e){var r=t.localName,n=null;if("FeatureCollection"==r)n=al([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==r||"featureMember"==r){var i=e[0],o=i.featureType,a=i.featureNS;if(!o&&t.childNodes){o=[],a={};for(var s=0,u=t.childNodes.length;s0){i[s]={_content_:i[s]};for(var l=0;l0:c===ae.POINT||c===ae.MULTI_POINT}}s&&(u=o.get("name"),(s=s&&!!u)&&u.search(/&[^&]+;/)>-1&&(lv||(lv=document.createElement("textarea")),lv.innerHTML=u,u=lv.value));var p=r;if(t?p=t:e&&(p=function t(e,r,n){return Array.isArray(e)?e:"string"==typeof e?(!(e in n)&&"#"+e in n&&(e="#"+e),t(n[e],r,n)):r}(e,r,n)),s){var f=function(t,e){var r=[0,0],n="start",i=t.getImage();if(i){var o=i.getImageSize();if(null===o&&(o=My),2==o.length){var a=i.getScale();r[0]=a*o[0]/2,r[1]=-a*o[1]/2,n="left"}}var s=t.getText();s?((s=s.clone()).setFont(s.getFont()||sv.getFont()),s.setScale(s.getScale()||sv.getScale()),s.setFill(s.getFill()||sv.getFill()),s.setStroke(s.getStroke()||ov)):s=sv.clone();return s.setText(e),s.setOffsetX(r[0]),s.setOffsetY(r[1]),s.setTextAlign(n),new lh({image:i,text:s})}(p[0],u);return l.length>0?(f.setGeometry(new K_(l)),[f,new lh({geometry:p[0].getGeometry(),image:null,fill:p[0].getFill(),stroke:p[0].getStroke(),text:null})].concat(p.slice(1))):f}return p}}(r.Style,r.styleUrl,this.defaultStyle_,this.sharedStyles_,this.showPointNames_);n.setStyle(s)}return delete r.Style,n.setProperties(r,!0),n}},e.prototype.readSharedStyle_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=kv.call(this,t,e);if(n){var i=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readSharedStyleMap_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=yv.call(this,t,e);if(n){var i,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readFeatureFromNode=function(t,e){if(!w(Ky,t.namespaceURI))return null;var r=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return r||null},e.prototype.readFeaturesFromNode=function(t,e){if(!w(Ky,t.namespaceURI))return[];var r,n=t.localName;if("Document"==n||"Folder"==n)return(r=this.readDocumentOrFolder_(t,[this.getReadOptions(t,e)]))||[];if("Placemark"==n){var i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i?[i]:[]}if("kml"==n){r=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var a=this.readFeaturesFromNode(o,e);a&&T(r,a)}return r}return[]},e.prototype.readName=function(t){if(t){if("string"==typeof t){var e=Zu(t);return this.readNameFromDocument(e)}return Wu(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},e.prototype.readNameFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE){var r=this.readNameFromNode(e);if(r)return r}},e.prototype.readNameFromNode=function(t){for(var e=t.firstElementChild;e;e=e.nextElementSibling)if(w(Ky,e.namespaceURI)&&"name"==e.localName)return Eg(e);for(e=t.firstElementChild;e;e=e.nextElementSibling){var r=e.localName;if(w(Ky,e.namespaceURI)&&("Document"==r||"Folder"==r||"Placemark"==r||"kml"==r)){var n=this.readNameFromNode(e);if(n)return n}}},e.prototype.readNetworkLinks=function(t){var e=[];if("string"==typeof t){var r=Zu(t);T(e,this.readNetworkLinksFromDocument(r))}else Wu(t)?T(e,this.readNetworkLinksFromDocument(t)):T(e,this.readNetworkLinksFromNode(t));return e},e.prototype.readNetworkLinksFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&T(e,this.readNetworkLinksFromNode(r));return e},e.prototype.readNetworkLinksFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(w(Ky,r.namespaceURI)&&"NetworkLink"==r.localName){var n=al({},Jy,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!w(Ky,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||T(e,this.readNetworkLinksFromNode(r))}return e},e.prototype.readRegion=function(t){var e=[];if("string"==typeof t){var r=Zu(t);T(e,this.readRegionFromDocument(r))}else Wu(t)?T(e,this.readRegionFromDocument(t)):T(e,this.readRegionFromNode(t));return e},e.prototype.readRegionFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&T(e,this.readRegionFromNode(r));return e},e.prototype.readRegionFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(w(Ky,r.namespaceURI)&&"Region"==r.localName){var n=al({},$y,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!w(Ky,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||T(e,this.readRegionFromNode(r))}return e},e.prototype.writeFeaturesNode=function(t,e){e=this.adaptOptions(e);var r=Vu(Ky[4],"kml"),n="http://www.w3.org/2000/xmlns/";r.setAttributeNS(n,"xmlns:gx",Zy[0]),r.setAttributeNS(n,"xmlns:xsi",Yu),r.setAttributeNS(Yu,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var i={node:r},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var a=tv[r.namespaceURI],s=nl(o,a);return ul(i,ev,rl,s,[e],a,this),r},e}(hg);function pv(t){var e=Xu(t,!1),r=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e);if(r){var n=r[1];return[parseInt(n.substr(6,2),16),parseInt(n.substr(4,2),16),parseInt(n.substr(2,2),16),parseInt(n.substr(0,2),16)/255]}}function fv(t){for(var e,r=Xu(t,!1),n=[],i=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?))?\s*/i;e=i.exec(r);){var o=parseFloat(e[1]),a=parseFloat(e[2]),s=e[3]?parseFloat(e[3]):0;n.push(o,a,s),r=r.substr(e[0].length)}if(""===r)return n}function dv(t){var e=Xu(t,!1).trim(),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function _v(t){return mg(t)}var gv=il(Ky,{Pair:function(t,e){var r=al({},Xv,t,e,this);if(!r)return;var n=r.key;if(n&&"normal"==n){var i=r.styleUrl;i&&(e[e.length-1]=i);var o=r.Style;o&&(e[e.length-1]=o)}}});function yv(t,e){return al(void 0,gv,t,e,this)}var vv=il(Ky,{Icon:Qu((function(t,e){var r=al({},Pv,t,e);return r||null})),color:Qu(pv),heading:Qu(mg),hotSpot:Qu((function(t){var e,r=t.getAttribute("xunits"),n=t.getAttribute("yunits");return e="insetPixels"!==r?"insetPixels"!==n?Jl:$l:"insetPixels"!==n?Ql:th,{x:parseFloat(t.getAttribute("x")),xunits:qy[r],y:parseFloat(t.getAttribute("y")),yunits:qy[n],origin:e}})),scale:Qu(_v)});var mv=il(Ky,{color:Qu(pv),scale:Qu(_v)});var xv=il(Ky,{color:Qu(pv),width:Qu(mg)});var wv=il(Ky,{color:Qu(pv),fill:Qu(gg),outline:Qu(gg)});var Sv=il(Ky,{coordinates:Hu(fv)});function Ev(t,e){return al(null,Sv,t,e)}var Tv=il(Zy,{Track:qu(bv)});var Cv=il(Ky,{when:function(t,e){var r=e[e.length-1].whens,n=Xu(t,!1),i=Date.parse(n);r.push(isNaN(i)?0:i)}},il(Zy,{coord:function(t,e){var r=e[e.length-1].flatCoordinates,n=Xu(t,!1),i=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(n);if(i){var o=parseFloat(i[1]),a=parseFloat(i[2]),s=parseFloat(i[3]);r.push(o,a,s,0)}else r.push(0,0,0,0)}}));function bv(t,e){var r=al({flatCoordinates:[],whens:[]},Cv,t,e);if(r){for(var n=r.flatCoordinates,i=r.whens,o=0,a=Math.min(n.length,i.length);o0,h=u.href;h?n=h:l&&(n=Ay);var c,p=Jl,f=r.hotSpot;f?(i=[f.x,f.y],o=f.xunits,a=f.yunits,p=f.origin):n===Ay?(i=Iy,o=Ly,a=Fy):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(n)&&(i=[.5,0],o=Bl,a=Bl);var d,_=u.x,g=u.y;void 0!==_&&void 0!==g&&(c=[_,g]);var y,v=u.w,m=u.h;void 0!==v&&void 0!==m&&(d=[v,m]);var x=r.heading;void 0!==x&&(y=_e(x));var w=r.scale,S=r.color;if(l){n==Ay&&(d=My,void 0===w&&(w=Ny));var E=new rh({anchor:i,anchorOrigin:p,anchorXUnits:o,anchorYUnits:a,crossOrigin:this.crossOrigin_,offset:c,offsetOrigin:Jl,rotation:y,scale:w,size:d,src:n,color:S});s.imageStyle=E}else s.imageStyle=nv}},LabelStyle:function(t,e){var r=al({},mv,t,e);if(r){var n=e[e.length-1],i=new ph({fill:new zl({color:"color"in r?r.color:Oy}),scale:r.scale});n.textStyle=i}},LineStyle:function(t,e){var r=al({},xv,t,e);if(r){var n=e[e.length-1],i=new nh({color:"color"in r?r.color:Oy,width:"width"in r?r.width:1});n.strokeStyle=i}},PolyStyle:function(t,e){var r=al({},wv,t,e);if(r){var n=e[e.length-1],i=new zl({color:"color"in r?r.color:Oy});n.fillStyle=i;var o=r.fill;void 0!==o&&(n.fill=o);var a=r.outline;void 0!==a&&(n.outline=a)}}});function kv(t,e){var r=al({},Dv,t,e,this);if(!r)return null;var n,i="fillStyle"in r?r.fillStyle:rv,o=r.fill;void 0===o||o||(i=null),"imageStyle"in r?r.imageStyle!=nv&&(n=r.imageStyle):n=iv;var a="textStyle"in r?r.textStyle:sv,s="strokeStyle"in r?r.strokeStyle:av,u=r.outline;return void 0===u||u?[new lh({fill:i,image:n,stroke:s,text:a,zIndex:void 0})]:[new lh({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===ae.GEOMETRY_COLLECTION?new K_(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e!==ae.POLYGON&&e!==ae.MULTI_POLYGON}))):r!==ae.POLYGON&&r!==ae.MULTI_POLYGON?e:void 0},fill:i,image:n,stroke:s,text:a,zIndex:void 0}),new lh({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===ae.GEOMETRY_COLLECTION?new K_(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e===ae.POLYGON||e===ae.MULTI_POLYGON}))):r===ae.POLYGON||r===ae.MULTI_POLYGON?e:void 0},fill:i,stroke:null,zIndex:void 0})]}function Uv(t,e){var r,n,i,o=e.length,a=new Array(e.length),s=new Array(e.length),u=new Array(e.length);r=!1,n=!1,i=!1;for(var l=0;l0){var y=nl(i,a);ul(n,wm,Em,[{names:a,values:y}],r)}var v=r[0],m=e.getGeometry();m&&(m=H_(m,!0,v)),ul(n,wm,pm,[m],r)}var Cm=il(Ky,["extrude","tessellate","altitudeMode","coordinates"]),bm=il(Ky,{extrude:$u(Tg),tessellate:$u(Tg),altitudeMode:$u(Pg),coordinates:$u((function(t,e,r){var n,i=r[r.length-1],o=i.layout,a=i.stride;o==re||o==ie?n=2:o==ne||o==oe?n=3:st(!1,34);var s=e.length,u="";if(s>0){u+=e[0];for(var l=1;l>3)?r.readString():2===t?r.readFloat():3===t?r.readDouble():4===t?r.readVarint64():5===t?r.readVarint():6===t?r.readSVarint():7===t?r.readBoolean():null;e.values.push(n)}}function Wm(t,e,r){if(1==t)e.id=r.readVarint();else if(2==t)for(var n=r.readVarint()+r.pos;r.pos>3}a--,1===o||2===o?(s+=t.readSVarint(),u+=t.readSVarint(),1===o&&l>h&&(n.push(l),h=l),r.push(s,u),l+=2):7===o?l>h&&(r.push(r[h],r[h+1]),l+=2):st(!1,59)}l>h&&(n.push(l),h=l)},e.prototype.createFeature_=function(t,e,r){var n,i=e.type;if(0===i)return null;var o,a=e.properties;this.idProperty_?(o=a[this.idProperty_],delete a[this.idProperty_]):o=e.id,a[this.layerName_]=e.layer.name;var s=[],u=[];this.readRawGeometry_(t,e,s,u);var l=function(t,e){var r;1===t?r=1===e?ae.POINT:ae.MULTI_POINT:2===t?r=1===e?ae.LINE_STRING:ae.MULTI_LINE_STRING:3===t&&(r=ae.POLYGON);return r}(i,u.length);if(this.featureClass_===Bm)(n=new this.featureClass_(l,s,u,a,o)).transform(r.dataProjection,r.featureProjection);else{var h=void 0;if(l==ae.POLYGON){for(var c=[],p=0,f=0,d=0,_=u.length;d<_;++d){var g=u[d];on(s,p,g,2)||(c.push(u.slice(f,d)),f=d),p=g}h=c.length>1?new r_(s,re,c):new cn(s,re,u)}else h=l===ae.POINT?new Kr(s,re):l===ae.LINE_STRING?new Ed(s,re):l===ae.POLYGON?new cn(s,re,u):l===ae.MULTI_POINT?new $d(s,re):l===ae.MULTI_LINE_STRING?new Jd(s,re,u):null;n=new(0,this.featureClass_),this.geometryName_&&n.setGeometryName(this.geometryName_);var y=H_(h,!1,r);n.setGeometry(y),n.setId(o),n.setProperties(a,!0)}return n},e.prototype.getType=function(){return yu},e.prototype.readFeatures=function(t,e){var r=this.layers_,n=this.adaptOptions(e),i=We(n.dataProjection);i.setWorldExtent(n.extent),n.dataProjection=i;var o=new km.a(t),a=o.readFields(Vm,{}),s=[];for(var u in a)if(!r||-1!=r.indexOf(u)){var l=a[u],h=l?[0,0,l.extent,l.extent]:null;i.setExtent(h);for(var c=0,p=l.length;c>1):i>>1}return e}(t),i=0,o=n.length;i=32;)e=63+(32|31&t),r+=String.fromCharCode(e),t>>=5;return e=t+63,r+=String.fromCharCode(e)}var hx=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.dataProjection=We("EPSG:4326"),r.factor_=n.factor?n.factor:1e5,r.geometryLayout_=n.geometryLayout?n.geometryLayout:re,r}return ix(e,t),e.prototype.readFeatureFromText=function(t,e){var r=this.readGeometryFromText(t,e);return new lt(r)},e.prototype.readFeaturesFromText=function(t,e){return[this.readFeatureFromText(t,e)]},e.prototype.readGeometryFromText=function(t,e){var r=Cr(this.geometryLayout_),n=ax(t,r,this.factor_);nx(n,0,n.length,r,n);var i=jr(n,0,n.length,r);return H_(new Ed(i,this.geometryLayout_),!1,this.adaptOptions(e))},e.prototype.writeFeatureText=function(t,e){var r=t.getGeometry();return r?this.writeGeometryText(r,e):(st(!1,40),"")},e.prototype.writeFeaturesText=function(t,e){return this.writeFeatureText(t[0],e)},e.prototype.writeGeometryText=function(t,e){var r=(t=H_(t,!0,this.adaptOptions(e))).getFlatCoordinates(),n=t.getStride();return nx(r,0,r.length,n,r),ox(r,n,this.factor_)},e}(Gy),cx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),px=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.layerName_=n.layerName,r.layers_=n.layers?n.layers:null,r.dataProjection=We(n.dataProjection?n.dataProjection:"EPSG:4326"),r}return cx(e,t),e.prototype.readFeaturesFromObject=function(t,e){if("Topology"==t.type){var r=t,n=void 0,i=null,o=null;r.transform&&(i=(n=r.transform).scale,o=n.translate);var a=r.arcs;n&&function(t,e,r){for(var n=0,i=t.length;n0&&i.pop(),n=r>=0?e[r]:e[~r].slice().reverse(),i.push.apply(i,n);for(var s=0,u=i.length;s=2,57),n}return wx(e,t),e}(xx),Ex=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Tx=function(t){function e(e){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return Ex(e,t),e}(Sx),Cx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bx=function(t){function e(e,r,n){var i=t.call(this,"BBOX")||this;if(i.geometryName=e,i.extent=r,4!==r.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return i.srsName=n,i}return Cx(e,t),e}(xx),Px=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Rx=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.geometryName=r||"the_geom",o.geometry=n,o.srsName=i,o}return Px(e,t),e}(xx),Ox=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ix=function(t){function e(e,r,n){return t.call(this,"Contains",e,r,n)||this}return Ox(e,t),e}(Rx),Lx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Fx=function(t){function e(e,r){var n=t.call(this,e)||this;return n.propertyName=r,n}return Lx(e,t),e}(xx),Mx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ax=function(t){function e(e,r,n){var i=t.call(this,"During",e)||this;return i.begin=r,i.end=n,i}return Mx(e,t),e}(Fx),Nx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gx=function(t){function e(e,r,n,i){var o=t.call(this,e,r)||this;return o.expression=n,o.matchCase=i,o}return Nx(e,t),e}(Fx),jx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Dx=function(t){function e(e,r,n){return t.call(this,"PropertyIsEqualTo",e,r,n)||this}return jx(e,t),e}(Gx),kx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ux=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThan",e,r)||this}return kx(e,t),e}(Gx),zx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bx=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThanOrEqualTo",e,r)||this}return zx(e,t),e}(Gx),Yx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Vx=function(t){function e(e,r,n){return t.call(this,"Intersects",e,r,n)||this}return Yx(e,t),e}(Rx),Xx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wx=function(t){function e(e,r,n){var i=t.call(this,"PropertyIsBetween",e)||this;return i.lowerBoundary=r,i.upperBoundary=n,i}return Xx(e,t),e}(Fx),Zx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Kx=function(t){function e(e,r,n,i,o,a){var s=t.call(this,"PropertyIsLike",e)||this;return s.pattern=r,s.wildCard=void 0!==n?n:"*",s.singleChar=void 0!==i?i:".",s.escapeChar=void 0!==o?o:"!",s.matchCase=a,s}return Zx(e,t),e}(Fx),qx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hx=function(t){function e(e){return t.call(this,"PropertyIsNull",e)||this}return qx(e,t),e}(Fx),Jx=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Qx=function(t){function e(e,r){return t.call(this,"PropertyIsLessThan",e,r)||this}return Jx(e,t),e}(Gx),$x=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tw=function(t){function e(e,r){return t.call(this,"PropertyIsLessThanOrEqualTo",e,r)||this}return $x(e,t),e}(Gx),ew=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rw=function(t){function e(e){var r=t.call(this,"Not")||this;return r.condition=e,r}return ew(e,t),e}(xx),nw=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),iw=function(t){function e(e,r,n){return t.call(this,"PropertyIsNotEqualTo",e,r,n)||this}return nw(e,t),e}(Gx),ow=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),aw=function(t){function e(e){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return ow(e,t),e}(Sx),sw=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),uw=function(t){function e(e,r,n){return t.call(this,"Within",e,r,n)||this}return sw(e,t),e}(Rx);function lw(t){var e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(Tx,e))}function hw(t,e,r){return new bx(t,e,r)}var cw=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pw={"http://www.opengis.net/gml":{boundedBy:Qu(_g.prototype.readGeometryElement,"bounds")}},fw={"http://www.opengis.net/wfs":{totalInserted:Qu(wg),totalUpdated:Qu(wg),totalDeleted:Qu(wg)}},dw={"http://www.opengis.net/wfs":{TransactionSummary:Qu((function(t,e){return al({},fw,t,e)}),"transactionSummary"),InsertResults:Qu((function(t,e){return al([],Ew,t,e)}),"insertIds")}},_w={"http://www.opengis.net/wfs":{PropertyName:$u(Pg)}},gw={"http://www.opengis.net/wfs":{Insert:$u((function(t,e,r){var n=r[r.length-1],i=n.featureType,o=n.featureNS,a=n.gmlVersion,s=Vu(o,i);t.appendChild(s),2===a?jg.prototype.writeFeatureElement(s,e,r):Lg.prototype.writeFeatureElement(s,e,r)})),Update:$u((function(t,e,r){var n=r[r.length-1];st(void 0!==e.getId(),27);var i=n.featureType,o=n.featurePrefix,a=n.featureNS,s=Cw(o,i),u=e.getGeometryName();t.setAttribute("typeName",s),t.setAttributeNS(yw,"xmlns:"+o,a);var l=e.getId();if(void 0!==l){for(var h=e.getKeys(),c=[],p=0,f=h.length;p="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.isNumeric_=function(t,e){return t>="0"&&t<="9"||"."==t&&!(void 0!==e&&e)},t.prototype.isWhiteSpace_=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.nextChar_=function(){return this.wkt.charAt(++this.index_)},t.prototype.nextToken=function(){var t,e=this.nextChar_(),r=this.index_,n=e;if("("==e)t=Dw;else if(","==e)t=zw;else if(")"==e)t=kw;else if(this.isNumeric_(e)||"-"==e)t=Uw,n=this.readNumber_();else if(this.isAlpha_(e))t=jw,n=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(""!==e)throw new Error("Unexpected character: "+e);t=Bw}return{position:r,value:n,type:t}},t.prototype.readNumber_=function(){var t,e=this.index_,r=!1,n=!1;do{"."==t?r=!0:"e"!=t&&"E"!=t||(n=!0),t=this.nextChar_()}while(this.isNumeric_(t,r)||!n&&("e"==t||"E"==t)||n&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))},t.prototype.readText_=function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()},t}(),Ww=function(){function t(t){this.lexer_=t,this.token_,this.layout_=re}return t.prototype.consume_=function(){this.token_=this.lexer_.nextToken()},t.prototype.isTokenType=function(t){return this.token_.type==t},t.prototype.match=function(t){var e=this.isTokenType(t);return e&&this.consume_(),e},t.prototype.parse=function(){return this.consume_(),this.parseGeometry_()},t.prototype.parseGeometryLayout_=function(){var t=re,e=this.token_;if(this.isTokenType(jw)){var r=e.value;"Z"===r?t=ne:"M"===r?t=ie:"ZM"===r&&(t=oe),t!==re&&this.consume_()}return t},t.prototype.parseGeometryCollectionText_=function(){if(this.match(Dw)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(zw));if(this.match(kw))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePointText_=function(){if(this.match(Dw)){var t=this.parsePoint_();if(this.match(kw))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())},t.prototype.parseLineStringText_=function(){if(this.match(Dw)){var t=this.parsePointList_();if(this.match(kw))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePolygonText_=function(){if(this.match(Dw)){var t=this.parseLineStringTextList_();if(this.match(kw))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPointText_=function(){if(this.match(Dw)){var t=void 0;if(t=this.token_.type==Dw?this.parsePointTextList_():this.parsePointList_(),this.match(kw))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiLineStringText_=function(){if(this.match(Dw)){var t=this.parseLineStringTextList_();if(this.match(kw))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPolygonText_=function(){if(this.match(Dw)){var t=this.parsePolygonTextList_();if(this.match(kw))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePoint_=function(){for(var t=[],e=this.layout_.length,r=0;r0&&(e+=" "+n)}return 0===r.length?e+" EMPTY":e+"("+r+")"}var $w=Zw;function tS(t){return t.getAttributeNS("http://www.w3.org/1999/xlink","href")}var eS=function(){function t(){}return t.prototype.read=function(t){if(t){if("string"==typeof t){var e=Zu(t);return this.readFromDocument(e)}return Wu(t)?this.readFromDocument(t):this.readFromNode(t)}return null},t.prototype.readFromDocument=function(t){},t.prototype.readFromNode=function(t){},t}(),rS=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),nS=[null,"http://www.opengis.net/wms"],iS=il(nS,{Service:Qu((function(t,e){return al({},sS,t,e)})),Capability:Qu((function(t,e){return al({},oS,t,e)}))}),oS=il(nS,{Request:Qu((function(t,e){return al({},_S,t,e)})),Exception:Qu((function(t,e){return al([],cS,t,e)})),Layer:Qu((function(t,e){return al({},pS,t,e)}))}),aS=function(t){function e(){var e=t.call(this)||this;return e.version=void 0,e}return rS(e,t),e.prototype.readFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readFromNode(e);return null},e.prototype.readFromNode=function(t){this.version=t.getAttribute("version").trim();var e=al({version:this.version},iS,t,[]);return e||null},e}(eS),sS=il(nS,{Name:Qu(Eg),Title:Qu(Eg),Abstract:Qu(Eg),KeywordList:Qu(CS),OnlineResource:Qu(tS),ContactInformation:Qu((function(t,e){return al({},uS,t,e)})),Fees:Qu(Eg),AccessConstraints:Qu(Eg),LayerLimit:Qu(wg),MaxWidth:Qu(wg),MaxHeight:Qu(wg)}),uS=il(nS,{ContactPersonPrimary:Qu((function(t,e){return al({},lS,t,e)})),ContactPosition:Qu(Eg),ContactAddress:Qu((function(t,e){return al({},hS,t,e)})),ContactVoiceTelephone:Qu(Eg),ContactFacsimileTelephone:Qu(Eg),ContactElectronicMailAddress:Qu(Eg)}),lS=il(nS,{ContactPerson:Qu(Eg),ContactOrganization:Qu(Eg)}),hS=il(nS,{AddressType:Qu(Eg),Address:Qu(Eg),City:Qu(Eg),StateOrProvince:Qu(Eg),PostCode:Qu(Eg),Country:Qu(Eg)}),cS=il(nS,{Format:qu(Eg)}),pS=il(nS,{Name:Qu(Eg),Title:Qu(Eg),Abstract:Qu(Eg),KeywordList:Qu(CS),CRS:Ju(Eg),EX_GeographicBoundingBox:Qu((function(t,e){var r=al({},dS,t,e);if(!r)return;var n=r.westBoundLongitude,i=r.southBoundLatitude,o=r.eastBoundLongitude,a=r.northBoundLatitude;if(void 0===n||void 0===i||void 0===o||void 0===a)return;return[n,i,o,a]})),BoundingBox:Ju((function(t,e){var r=[xg(t.getAttribute("minx")),xg(t.getAttribute("miny")),xg(t.getAttribute("maxx")),xg(t.getAttribute("maxy"))],n=[xg(t.getAttribute("resx")),xg(t.getAttribute("resy"))];return{crs:t.getAttribute("CRS"),extent:r,res:n}})),Dimension:Ju((function(t,e){return{name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol"),default:t.getAttribute("default"),multipleValues:yg(t.getAttribute("multipleValues")),nearestValue:yg(t.getAttribute("nearestValue")),current:yg(t.getAttribute("current")),values:Eg(t)}})),Attribution:Qu((function(t,e){return al({},fS,t,e)})),AuthorityURL:Ju((function(t,e){var r=SS(t,e);if(r)return r.name=t.getAttribute("name"),r;return})),Identifier:Ju(Eg),MetadataURL:Ju((function(t,e){var r=SS(t,e);if(r)return r.type=t.getAttribute("type"),r;return})),DataURL:Ju(SS),FeatureListURL:Ju(SS),Style:Ju((function(t,e){return al({},mS,t,e)})),MinScaleDenominator:Qu(mg),MaxScaleDenominator:Qu(mg),Layer:Ju((function(t,e){var r=e[e.length-1],n=al({},pS,t,e);if(!n)return;var i=yg(t.getAttribute("queryable"));void 0===i&&(i=r.queryable);n.queryable=void 0!==i&&i;var o=Sg(t.getAttribute("cascaded"));void 0===o&&(o=r.cascaded);n.cascaded=o;var a=yg(t.getAttribute("opaque"));void 0===a&&(a=r.opaque);n.opaque=void 0!==a&&a;var s=yg(t.getAttribute("noSubsets"));void 0===s&&(s=r.noSubsets);n.noSubsets=void 0!==s&&s;var u=xg(t.getAttribute("fixedWidth"));u||(u=r.fixedWidth);n.fixedWidth=u;var l=xg(t.getAttribute("fixedHeight"));l||(l=r.fixedHeight);n.fixedHeight=l,["Style","CRS","AuthorityURL"].forEach((function(t){if(t in r){var e=n[t]||[];n[t]=e.concat(r[t])}}));return["EX_GeographicBoundingBox","BoundingBox","Dimension","Attribution","MinScaleDenominator","MaxScaleDenominator"].forEach((function(t){if(!(t in n)){var e=r[t];n[t]=e}})),n}))}),fS=il(nS,{Title:Qu(Eg),OnlineResource:Qu(tS),LogoURL:Qu(TS)}),dS=il(nS,{westBoundLongitude:Qu(mg),eastBoundLongitude:Qu(mg),southBoundLatitude:Qu(mg),northBoundLatitude:Qu(mg)}),_S=il(nS,{GetCapabilities:Qu(ES),GetMap:Qu(ES),GetFeatureInfo:Qu(ES)}),gS=il(nS,{Format:Ju(Eg),DCPType:Ju((function(t,e){return al({},yS,t,e)}))}),yS=il(nS,{HTTP:Qu((function(t,e){return al({},vS,t,e)}))}),vS=il(nS,{Get:Qu(SS),Post:Qu(SS)}),mS=il(nS,{Name:Qu(Eg),Title:Qu(Eg),Abstract:Qu(Eg),LegendURL:Ju(TS),StyleSheetURL:Qu(SS),StyleURL:Qu(SS)}),xS=il(nS,{Format:Qu(Eg),OnlineResource:Qu(tS)}),wS=il(nS,{Keyword:qu(Eg)});function SS(t,e){return al({},xS,t,e)}function ES(t,e){return al({},gS,t,e)}function TS(t,e){var r=SS(t,e);if(r){var n=[Sg(t.getAttribute("width")),Sg(t.getAttribute("height"))];return r.size=n,r}}function CS(t,e){return al([],wS,t,e)}var bS=aS,PS=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),RS=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureNS_="http://mapserver.gis.umn.edu/mapserver",r.gmlFormat_=new jg,r.layers_=n.layers?n.layers:null,r}return PS(e,t),e.prototype.getLayers=function(){return this.layers_},e.prototype.setLayers=function(t){this.layers_=t},e.prototype.readFeatures_=function(t,e){t.setAttribute("namespaceURI",this.featureNS_);var r=t.localName,n=[];if(0===t.childNodes.length)return n;if("msGMLOutput"==r)for(var i=0,o=t.childNodes.length;i.75*h||l>.75*c?this.resetExtent_():Ct(o,n)||this.recenter_()}}},e.prototype.resetExtent_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getSize(),n=t.getView().calculateExtentInternal(r),i=e.getView(),o=Math.log(7.5)/Math.LN2;$t(n,1/(.1*Math.pow(2,o/2))),i.fitInternal(fn(n))},e.prototype.recenter_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getView();e.getView().setCenterInternal(r.getCenterInternal())},e.prototype.updateBox_=function(){var t=this.getMap(),e=this.ovmap_;if(t.isRendered()&&e.isRendered()){var r=t.getSize(),n=t.getView(),i=e.getView(),o=this.rotateWithView_?0:-n.getRotation(),a=this.boxOverlay_,s=this.boxOverlay_.getElement(),u=n.getCenterInternal(),l=n.getResolution(),h=i.getResolution(),c=r[0]*l/h,p=r[1]*l/h;if(a.setPosition(u),s){s.style.width=c+"px",s.style.height=p+"px";var f="rotate("+o+"rad)";s.style.transform=f}}},e.prototype.handleClick_=function(t){t.preventDefault(),this.handleToggle_()},e.prototype.handleToggle_=function(){this.element.classList.toggle("ol-collapsed"),this.collapsed_?to(this.collapseLabel_,this.label_):to(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;var t=this.ovmap_;if(!this.collapsed_){if(t.isRendered())return this.viewExtent_=void 0,void t.render();t.updateSize(),this.resetExtent_(),y(t,Jn,(function(t){this.updateBox_()}),this)}},e.prototype.getCollapsible=function(){return this.collapsible_},e.prototype.setCollapsible=function(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.collapsed_&&this.handleToggle_())},e.prototype.setCollapsed=function(t){this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()},e.prototype.getCollapsed=function(){return this.collapsed_},e.prototype.getRotateWithView=function(){return this.rotateWithView_},e.prototype.setRotateWithView=function(t){this.rotateWithView_!==t&&(this.rotateWithView_=t,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))},e.prototype.getOverviewMap=function(){return this.ovmap_},e}(Ro),CE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bE="degrees",PE="imperial",RE="nautical",OE="metric",IE="us",LE=[1,2,5];function FE(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()}var ME=function(t){function e(e){var r=this,n=e||{},i=void 0!==n.className?n.className:n.bar?"ol-scale-bar":"ol-scale-line";return(r=t.call(this,{element:document.createElement("div"),render:n.render||FE,target:n.target})||this).innerElement_=document.createElement("div"),r.innerElement_.className=i+"-inner",r.element.className=i+" ol-unselectable",r.element.appendChild(r.innerElement_),r.viewState_=null,r.minWidth_=void 0!==n.minWidth?n.minWidth:64,r.renderedVisible_=!1,r.renderedWidth_=void 0,r.renderedHTML_="",r.addEventListener(et("units"),r.handleUnitsChanged_),r.setUnits(n.units||OE),r.scaleBar_=n.bar||!1,r.scaleBarSteps_=n.steps||4,r.scaleBarText_=n.text||!1,r}return CE(e,t),e.prototype.getUnits=function(){return this.get("units")},e.prototype.handleUnitsChanged_=function(){this.updateElement_()},e.prototype.setUnits=function(t){this.set("units",t)},e.prototype.updateElement_=function(){var t=this.viewState_;if(t){var e=t.center,r=t.projection,n=this.getUnits(),i=n==bE?Te.DEGREES:Te.METERS,o=Ze(r,t.resolution,e,i),a=this.minWidth_*o,s="";if(n==bE){var u=Ee[Te.DEGREES];(a*=u)=this.minWidth_)break;++f}p=this.scaleBar_?this.createScaleBar(h,l,s):l.toFixed(c<0?-c:0)+" "+s,this.renderedHTML_!=p&&(this.innerElement_.innerHTML=p,this.renderedHTML_=p),this.renderedWidth_!=h&&(this.innerElement_.style.width=h+"px",this.renderedWidth_=h),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,r){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),i=[],o=t/this.scaleBarSteps_,a="#ffffff",s=0;s
'+this.createMarker("relative",s)+(s%2==0||2===this.scaleBarSteps_?this.createStepText(s,t,!1,e,r):"")+"
"),s===this.scaleBarSteps_-1&&i.push(this.createStepText(s+1,t,!0,e,r)),a="#ffffff"===a?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+n+"
":"")+i.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,r,n,i){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+i);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=this.getMap().getView().getResolution(),e=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*e*39.37*(25.4/.28)},e}(Ro),AE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),NE=0,GE=1;function jE(t){if(t.frameState){this.sliderInitialized_||this.initSlider_();var e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}}var DE=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),render:n.render||jE})||this).dragListenerKeys_=[],r.currentResolution_=void 0,r.direction_=NE,r.dragging_,r.heightLimit_=0,r.widthLimit_=0,r.startX_,r.startY_,r.thumbSize_=null,r.sliderInitialized_=!1,r.duration_=void 0!==n.duration?n.duration:200;var i=void 0!==n.className?n.className:"ol-zoomslider",o=document.createElement("button");o.setAttribute("type","button"),o.className=i+"-thumb ol-unselectable";var a=r.element;return a.className=i+" ol-unselectable ol-control",a.appendChild(o),a.addEventListener(Wn,r.handleDraggerStart_.bind(r),!1),a.addEventListener(Xn,r.handleDraggerDrag_.bind(r),!1),a.addEventListener(Zn,r.handleDraggerEnd_.bind(r),!1),a.addEventListener(D,r.handleContainerClick_.bind(r),!1),o.addEventListener(D,L,!1),r}return AE(e,t),e.prototype.setMap=function(e){t.prototype.setMap.call(this,e),e&&e.render()},e.prototype.initSlider_=function(){var t=this.element,e=t.offsetWidth,r=t.offsetHeight,n=t.firstElementChild,i=getComputedStyle(n),o=n.offsetWidth+parseFloat(i.marginRight)+parseFloat(i.marginLeft),a=n.offsetHeight+parseFloat(i.marginTop)+parseFloat(i.marginBottom);this.thumbSize_=[o,a],e>r?(this.direction_=GE,this.widthLimit_=e-o):(this.direction_=NE,this.heightLimit_=r-a),this.sliderInitialized_=!0},e.prototype.handleContainerClick_=function(t){var e=this.getMap().getView(),r=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),n=this.getResolutionForPosition_(r),i=e.getConstrainedZoom(e.getZoomForResolution(n));e.animateInternal({zoom:i,duration:this.duration_,easing:Vi})},e.prototype.handleDraggerStart_=function(t){if(!this.dragging_&&t.target===this.element.firstElementChild){var e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,0===this.dragListenerKeys_.length){var r=this.handleDraggerDrag_,n=this.handleDraggerEnd_;this.dragListenerKeys_.push(g(document,Xn,r,this),g(document,Zn,n,this))}}},e.prototype.handleDraggerDrag_=function(t){if(this.dragging_){var e=t.clientX-this.startX_,r=t.clientY-this.startY_,n=this.getRelativePosition_(e,r);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_)}},e.prototype.handleDraggerEnd_=function(t){this.dragging_&&(this.getMap().getView().endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(v),this.dragListenerKeys_.length=0)},e.prototype.setThumbPosition_=function(t){var e=this.getPositionForResolution_(t),r=this.element.firstElementChild;this.direction_==GE?r.style.left=this.widthLimit_*e+"px":r.style.top=this.heightLimit_*e+"px"},e.prototype.getRelativePosition_=function(t,e){return he(this.direction_===GE?t/this.widthLimit_:e/this.heightLimit_,0,1)},e.prototype.getResolutionForPosition_=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},e.prototype.getPositionForResolution_=function(t){return he(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)},e}(Ro),kE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),UE=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),target:n.target})||this).extent=n.extent?n.extent:null;var i=void 0!==n.className?n.className:"ol-zoom-extent",o=void 0!==n.label?n.label:"E",a=void 0!==n.tipLabel?n.tipLabel:"Fit to extent",s=document.createElement("button");s.setAttribute("type","button"),s.title=a,s.appendChild("string"==typeof o?document.createTextNode(o):o),s.addEventListener(D,r.handleClick_.bind(r),!1);var u=i+" ol-unselectable ol-control",l=r.element;return l.className=u,l.appendChild(s),r}return kE(e,t),e.prototype.handleClick_=function(t){t.preventDefault(),this.handleZoomToExtent()},e.prototype.handleZoomToExtent=function(){var t=this.getMap().getView(),e=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal(fn(e))},e}(Ro),zE={array:{},color:{},colorlike:{},control:{},coordinate:{},easing:{},events:{}};zE.events.condition={},zE.extent={},zE.featureloader={},zE.format={},zE.format.filter={},zE.geom={},zE.has={},zE.interaction={},zE.layer={},zE.loadingstrategy={},zE.proj={},zE.proj.Units={},zE.proj.proj4={},zE.render={},zE.render.canvas={},zE.renderer={},zE.renderer.canvas={},zE.renderer.webgl={},zE.size={},zE.source={},zE.sphere={},zE.style={},zE.style.IconImageCache={},zE.tilegrid={},zE.transform={},zE.util={},zE.webgl={},zE.xml={},zE.Collection=at,zE.Feature=lt,zE.Geolocation=Rn,zE.Kinetic=On,zE.Map=tu,zE.Object=rt,zE.Observable=H,zE.Observable.unByKey=function(t){if(Array.isArray(t))for(var e=0,r=t.length;e180)&&(r[0]=ge(n+180,360)-180),r},zE.proj.transform=er,zE.proj.transformExtent=rr,zE.render.VectorContext=ls,zE.render.canvas.labelCache=fs,zE.render.getRenderPixel=function(t,e){var r=e.slice(0);return gr(t.inversePixelTransform.slice(),r),r},zE.render.getVectorContext=Ws,zE.render.toContext=function(t,e){var r=t.canvas,n=e||{},i=n.pixelRatio||Dn,o=n.size;o&&(r.width=o[0]*i,r.height=o[1]*i,r.style.width=o[0]+"px",r.style.height=o[1]+"px");var a=[0,0,r.width,r.height],s=yr([1,0,0,1,0,0],i,i);return new Os(t,i,a,s,0)},zE.renderer.Composite=Qs,zE.renderer.canvas.ImageLayer=pp,zE.renderer.canvas.TileLayer=wp,zE.renderer.canvas.VectorImageLayer=hd,zE.renderer.canvas.VectorLayer=ud,zE.renderer.canvas.VectorTileLayer=yd,zE.renderer.webgl.PointsLayer=Tf,zE.size.toSize=To,zE.source.BingMaps=Kh,zE.source.CartoDB=Qh,zE.source.Cluster=hc,zE.source.IIIF=Pc,zE.source.Image=Gc,zE.source.ImageArcGISRest=kc,zE.source.ImageCanvas=Yc,zE.source.ImageMapGuide=Xc,zE.source.ImageStatic=Zc,zE.source.ImageWMS=tp,zE.source.OSM=np,zE.source.OSM.ATTRIBUTION=rp,zE.source.Raster=Ap,zE.source.Source=Ah,zE.source.Stamen=kp,zE.source.Tile=Dh,zE.source.TileArcGISRest=Bp,zE.source.TileDebug=Xp,zE.source.TileImage=Wh,zE.source.TileJSON=Zp,zE.source.TileWMS=Hp,zE.source.UTFGrid=$p,zE.source.Vector=uc,zE.source.VectorTile=sf,zE.source.WMTS=pf,zE.source.WMTS.optionsFromCapabilities=function(t,e){var r=C(t.Contents.Layer,(function(t,r,n){return t.Identifier==e.layer}));if(null===r)return null;var n,i=t.Contents.TileMatrixSet;(n=r.TileMatrixSetLink.length>1?P(r.TileMatrixSetLink,"projection"in e?function(t,r,n){var o=C(i,(function(e){return e.Identifier==t.TileMatrixSet})).SupportedCRS,a=We(o.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"))||We(o),s=We(e.projection);return a&&s?Qe(a,s):o==e.projection}:function(t,r,n){return t.TileMatrixSet==e.matrixSet}):0)<0&&(n=0);var o=r.TileMatrixSetLink[n].TileMatrixSet,a=r.TileMatrixSetLink[n].TileMatrixSetLimits,s=r.Format[0];"format"in e&&(s=e.format),(n=P(r.Style,(function(t,r,n){return"style"in e?t.Title==e.style:t.isDefault})))<0&&(n=0);var u=r.Style[n].Identifier,l={};"Dimension"in r&&r.Dimension.forEach((function(t,e,r){var n=t.Identifier,i=t.Default;void 0===i&&(i=t.Value[0]),l[n]=i}));var h,c=C(t.Contents.TileMatrixSet,(function(t,e,r){return t.Identifier==o})),p=c.SupportedCRS;if(p&&(h=We(p.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"))||We(p)),"projection"in e){var f=We(e.projection);f&&(h&&!Qe(f,h)||(h=f))}var d=c.TileMatrix[0],_=28e-5*d.ScaleDenominator,g=h===We("EPSG:4326")?[d.TopLeftCorner[1],d.TopLeftCorner[0]]:d.TopLeftCorner,y=d.TileWidth*_,v=d.TileHeight*_,m=[g[0],g[1]-v*d.MatrixHeight,g[0]+y*d.MatrixWidth,g[1]];null===h.getExtent()&&h.setExtent(m);var x=Nl(c,m,a),S=[],E=e.requestEncoding;if(E=void 0!==E?E:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var T=t.OperationsMetadata.GetTile.DCP.HTTP.Get,b=0,R=T.length;b>1,f=-7,c=i?e-1:0,l=i?-1:1,v=t[n+c];for(c+=l,o=v&(1<<-f)-1,v>>=-f,f+=u;f>0;o=256*o+t[n+c],c+=l,f-=8);for(s=o&(1<<-f)-1,o>>=-f,f+=r;f>0;s=256*s+t[n+c],c+=l,f-=8);if(0===o)o=1-h;else{if(o===a)return s?NaN:1/0*(v?-1:1);s+=Math.pow(2,r),o-=h}return(v?-1:1)*s*Math.pow(2,o-r)},n.write=function(t,n,i,r,e,o){var s,u,a,h=8*o-e-1,f=(1<>1,l=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,v=r?0:o-1,d=r?1:-1,p=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(u=isNaN(n)?1:0,s=f):(s=Math.floor(Math.log(n)/Math.LN2),n*(a=Math.pow(2,-s))<1&&(s--,a*=2),(n+=s+c>=1?l/a:l*Math.pow(2,1-c))*a>=2&&(s++,a/=2),s+c>=f?(u=0,s=f):s+c>=1?(u=(n*a-1)*Math.pow(2,e),s+=c):(u=n*Math.pow(2,c-1)*Math.pow(2,e),s=0));e>=8;t[i+v]=255&u,v+=d,u/=256,e-=8);for(s=s<0;t[i+v]=255&s,v+=d,s/=256,h-=8);t[i+v-d]|=128*p}},875:function(t,n,i){"use strict";const r=i(692),e=Symbol("max"),o=Symbol("length"),s=Symbol("lengthCalculator"),u=Symbol("allowStale"),a=Symbol("maxAge"),h=Symbol("dispose"),f=Symbol("noDisposeOnSet"),c=Symbol("lruList"),l=Symbol("cache"),v=Symbol("updateAgeOnGet"),d=()=>1;const p=(t,n,i)=>{const r=t[l].get(n);if(r){const n=r.value;if(y(t,n)){if(w(t,r),!t[u])return}else i&&(t[v]&&(r.value.now=Date.now()),t[c].unshiftNode(r));return n.value}},y=(t,n)=>{if(!n||!n.maxAge&&!t[a])return!1;const i=Date.now()-n.now;return n.maxAge?i>n.maxAge:t[a]&&i>t[a]},m=t=>{if(t[o]>t[e])for(let n=t[c].tail;t[o]>t[e]&&null!==n;){const i=n.prev;w(t,n),n=i}},w=(t,n)=>{if(n){const i=n.value;t[h]&&t[h](i.key,i.value),t[o]-=i.length,t[l].delete(i.key),t[c].removeNode(n)}};class g{constructor(t,n,i,r,e){this.key=t,this.value=n,this.length=i,this.now=r,this.maxAge=e||0}}const b=(t,n,i,r)=>{let e=i.value;y(t,e)&&(w(t,i),t[u]||(e=void 0)),e&&n.call(r,e.value,e.key,t)};t.exports=class{constructor(t){if("number"==typeof t&&(t={max:t}),t||(t={}),t.max&&("number"!=typeof t.max||t.max<0))throw new TypeError("max must be a non-negative number");this[e]=t.max||1/0;const n=t.length||d;if(this[s]="function"!=typeof n?d:n,this[u]=t.stale||!1,t.maxAge&&"number"!=typeof t.maxAge)throw new TypeError("maxAge must be a number");this[a]=t.maxAge||0,this[h]=t.dispose,this[f]=t.noDisposeOnSet||!1,this[v]=t.updateAgeOnGet||!1,this.reset()}set max(t){if("number"!=typeof t||t<0)throw new TypeError("max must be a non-negative number");this[e]=t||1/0,m(this)}get max(){return this[e]}set allowStale(t){this[u]=!!t}get allowStale(){return this[u]}set maxAge(t){if("number"!=typeof t)throw new TypeError("maxAge must be a non-negative number");this[a]=t,m(this)}get maxAge(){return this[a]}set lengthCalculator(t){"function"!=typeof t&&(t=d),t!==this[s]&&(this[s]=t,this[o]=0,this[c].forEach((t=>{t.length=this[s](t.value,t.key),this[o]+=t.length}))),m(this)}get lengthCalculator(){return this[s]}get length(){return this[o]}get itemCount(){return this[c].length}rforEach(t,n){n=n||this;for(let i=this[c].tail;null!==i;){const r=i.prev;b(this,t,i,n),i=r}}forEach(t,n){n=n||this;for(let i=this[c].head;null!==i;){const r=i.next;b(this,t,i,n),i=r}}keys(){return this[c].toArray().map((t=>t.key))}values(){return this[c].toArray().map((t=>t.value))}reset(){this[h]&&this[c]&&this[c].length&&this[c].forEach((t=>this[h](t.key,t.value))),this[l]=new Map,this[c]=new r,this[o]=0}dump(){return this[c].map((t=>!y(this,t)&&{k:t.key,v:t.value,e:t.now+(t.maxAge||0)})).toArray().filter((t=>t))}dumpLru(){return this[c]}set(t,n,i){if((i=i||this[a])&&"number"!=typeof i)throw new TypeError("maxAge must be a number");const r=i?Date.now():0,u=this[s](n,t);if(this[l].has(t)){if(u>this[e])return w(this,this[l].get(t)),!1;const s=this[l].get(t).value;return this[h]&&(this[f]||this[h](t,s.value)),s.now=r,s.maxAge=i,s.value=n,this[o]+=u-s.length,s.length=u,this.get(t),m(this),!0}const v=new g(t,n,u,r,i);return v.length>this[e]?(this[h]&&this[h](t,n),!1):(this[o]+=v.length,this[c].unshift(v),this[l].set(t,this[c].head),m(this),!0)}has(t){if(!this[l].has(t))return!1;const n=this[l].get(t).value;return!y(this,n)}get(t){return p(this,t,!0)}peek(t){return p(this,t,!1)}pop(){const t=this[c].tail;return t?(w(this,t),t.value):null}del(t){w(this,this[l].get(t))}load(t){this.reset();const n=Date.now();for(let i=t.length-1;i>=0;i--){const r=t[i],e=r.e||0;if(0===e)this.set(r.k,r.v);else{const t=e-n;t>0&&this.set(r.k,r.v,t)}}}prune(){this[l].forEach(((t,n)=>p(this,n,!1)))}}},98:function(t,n,i){"use strict";t.exports=e;var r=i(226);function e(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}e.Varint=0,e.Fixed64=1,e.Bytes=2,e.Fixed32=5;var o=4294967296,s=1/o,u="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function a(t){return t.type===e.Bytes?t.readVarint()+t.pos:t.pos+1}function h(t,n,i){return i?4294967296*n+(t>>>0):4294967296*(n>>>0)+(t>>>0)}function f(t,n,i){var r=n<=16383?1:n<=2097151?2:n<=268435455?3:Math.floor(Math.log(n)/(7*Math.LN2));i.realloc(r);for(var e=i.pos-1;e>=t;e--)i.buf[e+r]=i.buf[e]}function c(t,n){for(var i=0;i>>8,t[i+2]=n>>>16,t[i+3]=n>>>24}function M(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16)+(t[n+3]<<24)}e.prototype={destroy:function(){this.buf=null},readFields:function(t,n,i){for(i=i||this.length;this.pos>3,o=this.pos;this.type=7&r,t(e,n,this),this.pos===o&&this.skip(r)}return n},readMessage:function(t,n){return this.readFields(t,n,this.readVarint()+this.pos)},readFixed32:function(){var t=b(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=M(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=b(this.buf,this.pos)+b(this.buf,this.pos+4)*o;return this.pos+=8,t},readSFixed64:function(){var t=b(this.buf,this.pos)+M(this.buf,this.pos+4)*o;return this.pos+=8,t},readFloat:function(){var t=r.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=r.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var n,i,r=this.buf;return n=127&(i=r[this.pos++]),i<128?n:(n|=(127&(i=r[this.pos++]))<<7,i<128?n:(n|=(127&(i=r[this.pos++]))<<14,i<128?n:(n|=(127&(i=r[this.pos++]))<<21,i<128?n:function(t,n,i){var r,e,o=i.buf;if(e=o[i.pos++],r=(112&e)>>4,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<3,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<10,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<17,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<24,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(1&e)<<31,e<128)return h(t,r,n);throw new Error("Expected varint not more than 10 bytes")}(n|=(15&(i=r[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,n=this.pos;return this.pos=t,t-n>=12&&u?function(t,n,i){return u.decode(t.subarray(n,i))}(this.buf,n,t):function(t,n,i){var r="",e=n;for(;e239?4:a>223?3:a>191?2:1;if(e+f>i)break;1===f?a<128&&(h=a):2===f?128==(192&(o=t[e+1]))&&(h=(31&a)<<6|63&o)<=127&&(h=null):3===f?(o=t[e+1],s=t[e+2],128==(192&o)&&128==(192&s)&&((h=(15&a)<<12|(63&o)<<6|63&s)<=2047||h>=55296&&h<=57343)&&(h=null)):4===f&&(o=t[e+1],s=t[e+2],u=t[e+3],128==(192&o)&&128==(192&s)&&128==(192&u)&&((h=(15&a)<<18|(63&o)<<12|(63&s)<<6|63&u)<=65535||h>=1114112)&&(h=null)),null===h?(h=65533,f=1):h>65535&&(h-=65536,r+=String.fromCharCode(h>>>10&1023|55296),h=56320|1023&h),r+=String.fromCharCode(h),e+=f}return r}(this.buf,n,t)},readBytes:function(){var t=this.readVarint()+this.pos,n=this.buf.subarray(this.pos,t);return this.pos=t,n},readPackedVarint:function(t,n){if(this.type!==e.Bytes)return t.push(this.readVarint(n));var i=a(this);for(t=t||[];this.pos127;);else if(n===e.Bytes)this.pos=this.readVarint()+this.pos;else if(n===e.Fixed32)this.pos+=4;else{if(n!==e.Fixed64)throw new Error("Unimplemented type: "+n);this.pos+=8}},writeTag:function(t,n){this.writeVarint(t<<3|n)},realloc:function(t){for(var n=this.length||16;n268435455||t<0?function(t,n){var i,r;t>=0?(i=t%4294967296|0,r=t/4294967296|0):(r=~(-t/4294967296),4294967295^(i=~(-t%4294967296))?i=i+1|0:(i=0,r=r+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");n.realloc(10),function(t,n,i){i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos]=127&t}(i,0,n),function(t,n){var i=(7&t)<<4;if(n.buf[n.pos++]|=i|((t>>>=3)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;n.buf[n.pos++]=127&t}(r,n)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var n=this.pos;this.pos=function(t,n,i){for(var r,e,o=0;o55295&&r<57344){if(!e){r>56319||o+1===n.length?(t[i++]=239,t[i++]=191,t[i++]=189):e=r;continue}if(r<56320){t[i++]=239,t[i++]=191,t[i++]=189,e=r;continue}r=e-55296<<10|r-56320|65536,e=null}else e&&(t[i++]=239,t[i++]=191,t[i++]=189,e=null);r<128?t[i++]=r:(r<2048?t[i++]=r>>6|192:(r<65536?t[i++]=r>>12|224:(t[i++]=r>>18|240,t[i++]=r>>12&63|128),t[i++]=r>>6&63|128),t[i++]=63&r|128)}return i}(this.buf,t,this.pos);var i=this.pos-n;i>=128&&f(n,i,this),this.pos=n-1,this.writeVarint(i),this.pos+=i},writeFloat:function(t){this.realloc(4),r.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),r.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var n=t.length;this.writeVarint(n),this.realloc(n);for(var i=0;i=128&&f(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,n,i){this.writeTag(t,e.Bytes),this.writeRawMessage(n,i)},writePackedVarint:function(t,n){n.length&&this.writeMessage(t,c,n)},writePackedSVarint:function(t,n){n.length&&this.writeMessage(t,l,n)},writePackedBoolean:function(t,n){n.length&&this.writeMessage(t,p,n)},writePackedFloat:function(t,n){n.length&&this.writeMessage(t,v,n)},writePackedDouble:function(t,n){n.length&&this.writeMessage(t,d,n)},writePackedFixed32:function(t,n){n.length&&this.writeMessage(t,y,n)},writePackedSFixed32:function(t,n){n.length&&this.writeMessage(t,m,n)},writePackedFixed64:function(t,n){n.length&&this.writeMessage(t,w,n)},writePackedSFixed64:function(t,n){n.length&&this.writeMessage(t,g,n)},writeBytesField:function(t,n){this.writeTag(t,e.Bytes),this.writeBytes(n)},writeFixed32Field:function(t,n){this.writeTag(t,e.Fixed32),this.writeFixed32(n)},writeSFixed32Field:function(t,n){this.writeTag(t,e.Fixed32),this.writeSFixed32(n)},writeFixed64Field:function(t,n){this.writeTag(t,e.Fixed64),this.writeFixed64(n)},writeSFixed64Field:function(t,n){this.writeTag(t,e.Fixed64),this.writeSFixed64(n)},writeVarintField:function(t,n){this.writeTag(t,e.Varint),this.writeVarint(n)},writeSVarintField:function(t,n){this.writeTag(t,e.Varint),this.writeSVarint(n)},writeStringField:function(t,n){this.writeTag(t,e.Bytes),this.writeString(n)},writeFloatField:function(t,n){this.writeTag(t,e.Fixed32),this.writeFloat(n)},writeDoubleField:function(t,n){this.writeTag(t,e.Fixed64),this.writeDouble(n)},writeBooleanField:function(t,n){this.writeVarintField(t,Boolean(n))}}},72:function(t){t.exports=function(){"use strict";function t(t,r,e,o,s){!function t(i,r,e,o,s){for(;o>e;){if(o-e>600){var u=o-e+1,a=r-e+1,h=Math.log(u),f=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*f*(u-f)/u)*(a-u/2<0?-1:1);t(i,r,Math.max(e,Math.floor(r-a*f/u+c)),Math.min(o,Math.floor(r+(u-a)*f/u+c)),s)}var l=i[r],v=e,d=o;for(n(i,e,r),s(i[o],l)>0&&n(i,e,o);v0;)d--}0===s(i[e],l)?n(i,e,d):n(i,++d,o),d<=r&&(e=d+1),r<=d&&(o=d-1)}}(t,r,e||0,o||t.length-1,s||i)}function n(t,n,i){var r=t[n];t[n]=t[i],t[i]=r}function i(t,n){return tn?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,n,i){if(!i)return n.indexOf(t);for(var r=0;r=t.minX&&n.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function p(n,i,r,e,o){for(var s=[i,r];s.length;)if(!((r=s.pop())-(i=s.pop())<=e)){var u=i+Math.ceil((r-i)/e/2)*e;t(n,u,i,r,o),s.push(i,u,u,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var n=this.data,i=[];if(!v(t,n))return i;for(var r=this.toBBox,e=[];n;){for(var o=0;o=0&&e[n].children.length>this._maxEntries;)this._split(e,n),n--;this._adjustParentBBoxes(r,e,n)},r.prototype._split=function(t,n){var i=t[n],r=i.children.length,e=this._minEntries;this._chooseSplitAxis(i,e,r);var s=this._chooseSplitIndex(i,e,r),u=d(i.children.splice(s,i.children.length-s));u.height=i.height,u.leaf=i.leaf,o(i,this.toBBox),o(u,this.toBBox),n?t[n-1].children.push(u):this._splitRoot(i,u)},r.prototype._splitRoot=function(t,n){this.data=d([t,n]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,n,i){for(var r,e,o,u,a,h,c,l=1/0,v=1/0,d=n;d<=i-n;d++){var p=s(t,0,d,this.toBBox),y=s(t,d,i,this.toBBox),m=(e=p,o=y,u=void 0,a=void 0,h=void 0,c=void 0,u=Math.max(e.minX,o.minX),a=Math.max(e.minY,o.minY),h=Math.min(e.maxX,o.maxX),c=Math.min(e.maxY,o.maxY),Math.max(0,h-u)*Math.max(0,c-a)),w=f(p)+f(y);m=n;v--){var d=t.children[v];u(a,t.leaf?e(d):d),h+=c(a)}return h},r.prototype._adjustParentBBoxes=function(t,n,i){for(var r=i;r>=0;r--)u(n[r],t)},r.prototype._condense=function(t){for(var n=t.length-1,i=void 0;n>=0;n--)0===t[n].children.length?n>0?(i=t[n-1].children).splice(i.indexOf(t[n]),1):this.clear():o(t[n],this.toBBox)},r}()},760:function(t){var n=function(t){"use strict";var n,i=Object.prototype,r=i.hasOwnProperty,e="function"==typeof Symbol?Symbol:{},o=e.iterator||"@@iterator",s=e.asyncIterator||"@@asyncIterator",u=e.toStringTag||"@@toStringTag";function a(t,n,i){return Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[n]}try{a({},"")}catch(t){a=function(t,n,i){return t[n]=i}}function h(t,n,i,r){var e=n&&n.prototype instanceof y?n:y,o=Object.create(e.prototype),s=new T(r||[]);return o._invoke=function(t,n,i){var r=c;return function(e,o){if(r===v)throw new Error("Generator is already running");if(r===d){if("throw"===e)throw o;return P()}for(i.method=e,i.arg=o;;){var s=i.delegate;if(s){var u=O(s,i);if(u){if(u===p)continue;return u}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===c)throw r=d,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=v;var a=f(t,n,i);if("normal"===a.type){if(r=i.done?d:l,a.arg===p)continue;return{value:a.arg,done:i.done}}"throw"===a.type&&(r=d,i.method="throw",i.arg=a.arg)}}}(t,i,s),o}function f(t,n,i){try{return{type:"normal",arg:t.call(n,i)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var c="suspendedStart",l="suspendedYield",v="executing",d="completed",p={};function y(){}function m(){}function w(){}var g={};a(g,o,(function(){return this}));var b=Object.getPrototypeOf,x=b&&b(b(A([])));x&&x!==i&&r.call(x,o)&&(g=x);var M=w.prototype=y.prototype=Object.create(g);function _(t){["next","throw","return"].forEach((function(n){a(t,n,(function(t){return this._invoke(n,t)}))}))}function S(t,n){function i(e,o,s,u){var a=f(t[e],t,o);if("throw"!==a.type){var h=a.arg,c=h.value;return c&&"object"==typeof c&&r.call(c,"__await")?n.resolve(c.__await).then((function(t){i("next",t,s,u)}),(function(t){i("throw",t,s,u)})):n.resolve(c).then((function(t){h.value=t,s(h)}),(function(t){return i("throw",t,s,u)}))}u(a.arg)}var e;this._invoke=function(t,r){function o(){return new n((function(n,e){i(t,r,n,e)}))}return e=e?e.then(o,o):o()}}function O(t,i){var r=t.iterator[i.method];if(r===n){if(i.delegate=null,"throw"===i.method){if(t.iterator.return&&(i.method="return",i.arg=n,O(t,i),"throw"===i.method))return p;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var e=f(r,t.iterator,i.arg);if("throw"===e.type)return i.method="throw",i.arg=e.arg,i.delegate=null,p;var o=e.arg;return o?o.done?(i[t.resultName]=o.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=n),i.delegate=null,p):o:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,p)}function j(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function E(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function A(t){if(t){var i=t[o];if(i)return i.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var e=-1,s=function i(){for(;++e=0;--o){var s=this.tryEntries[o],u=s.completion;if("root"===s.tryLoc)return e("end");if(s.tryLoc<=this.prev){var a=r.call(s,"catchLoc"),h=r.call(s,"finallyLoc");if(a&&h){if(this.prev=0;--i){var e=this.tryEntries[i];if(e.tryLoc<=this.prev&&r.call(e,"finallyLoc")&&this.prev=0;--n){var i=this.tryEntries[n];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),E(i),p}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc===t){var r=i.completion;if("throw"===r.type){var e=r.arg;E(i)}return e}}throw new Error("illegal catch attempt")},delegateYield:function(t,i,r){return this.delegate={iterator:A(t),resultName:i,nextLoc:r},"next"===this.method&&(this.arg=n),p}},t}(t.exports);try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},617:function(t,n,i){const r=i(279);t.exports=function(t,n,i){const e=i&&i.debug||!1,o=i&&i.startIndex||0;e&&console.log("starting findTagByName with",n," and ",i);const s=r(t,`<${n}[ >]`,o);if(e&&console.log("start:",s),-1===s)return;const u=t.slice(s+n.length);let a=r(u,"[ /]"+n+">",0);const h=-1===a;h&&(a=r(u,"[ /]>",0));const f=s+n.length+a+1+(h?0:n.length)+1;if(e&&console.log("end:",f),-1===f)return;const c=t.slice(s,f);let l;return l=h?null:c.slice(c.indexOf(">")+1,c.lastIndexOf("<")),{inner:l,outer:c,start:s,end:f}}},51:function(t,n,i){const r=i(617);t.exports=function(t,n,i){const e=[],o=i&&i.debug||!1;let s,u=i&&i.startIndex||0;for(;s=r(t,n,{debug:o,startIndex:u});)u=s.end,e.push(s);return o&&console.log("findTagsByName found",e.length,"tags"),e}},802:function(t){t.exports=function(t,n,i){const r=i&&i.debug||!1;r&&console.log("getting "+n+" in "+t);const e="object"==typeof t?t.outer:t,o=`${n}\\="([^"]*)"`;r&&console.log("pattern:",o);const s=new RegExp(o).exec(e);if(r&&console.log("match:",s),s)return s[1]}},279:function(t){t.exports=function(t,n,i){const r=new RegExp(n).exec(t.slice(i));return r?i+r.index:-1}},518:function(t){"use strict";t.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}},692:function(t,n,i){"use strict";function r(t){var n=this;if(n instanceof r||(n=new r),n.tail=null,n.head=null,n.length=0,t&&"function"==typeof t.forEach)t.forEach((function(t){n.push(t)}));else if(arguments.length>0)for(var i=0,e=arguments.length;i1)i=n;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");r=this.head.next,i=this.head.value}for(var e=0;null!==r;e++)i=t(i,r.value,e),r=r.next;return i},r.prototype.reduceReverse=function(t,n){var i,r=this.tail;if(arguments.length>1)i=n;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");r=this.tail.prev,i=this.tail.value}for(var e=this.length-1;null!==r;e--)i=t(i,r.value,e),r=r.prev;return i},r.prototype.toArray=function(){for(var t=new Array(this.length),n=0,i=this.head;null!==i;n++)t[n]=i.value,i=i.next;return t},r.prototype.toArrayReverse=function(){for(var t=new Array(this.length),n=0,i=this.tail;null!==i;n++)t[n]=i.value,i=i.prev;return t},r.prototype.slice=function(t,n){(n=n||this.length)<0&&(n+=this.length),(t=t||0)<0&&(t+=this.length);var i=new r;if(nthis.length&&(n=this.length);for(var e=0,o=this.head;null!==o&&ethis.length&&(n=this.length);for(var e=this.length,o=this.tail;null!==o&&e>n;e--)o=o.prev;for(;null!==o&&e>t;e--,o=o.prev)i.push(o.value);return i},r.prototype.splice=function(t,n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,r=this.head;null!==r&&i>1)],n))<0?s=r+1:(u=r,a=!e);return a?s:~s}function p(t,n){return t>n?1:t=0}function m(t,n,i){var r=t.length;if(t[0]<=n)return 0;if(n<=t[r-1])return r-1;var e=void 0;if(i>0){for(e=1;e0?e-1:e:t[e-1]-n>>0,e=0;e0||i&&0===o)}))}function S(){return!0}function O(){return!1}function j(){}function E(t){var n,i,r,e=!1;return function(){var o=Array.prototype.slice.call(arguments);return e&&this===r&&x(o,i)||(e=!0,r=this,i=o,n=t.apply(this,arguments)),n}}function T(t){return function(){var n;try{n=t()}catch(t){return Promise.reject(t)}return n instanceof Promise?n:Promise.resolve(n)}()}var A="function"==typeof Object.assign?Object.assign:function(t,n){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var i=Object(t),r=1,e=arguments.length;r0)},n.prototype.removeEventListener=function(t,n){var i=this.O&&this.O[t];if(i){var r=i.indexOf(n);-1!==r&&(this._&&t in this._?(i[r]=j,++this._[t]):(i.splice(r,1),0===i.length&&delete this.O[t]))}},n}(v),L="change",z="error",R="contextmenu",F="click",G="dblclick",D="dragenter",q="dragover",U="drop",B="keydown",X="keypress",V="load",W="resize",Y="touchmove",Z="wheel";function $(t,n,i,r,e){if(r&&r!==t&&(i=i.bind(r)),e){var o=i;i=function(){t.removeEventListener(n,i),o.apply(this,arguments)}}var s={target:t,type:n,listener:i};return t.addEventListener(n,i),s}function K(t,n,i,r){return $(t,n,i,r,!0)}function H(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),P(t))}var J=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Q=function(t){function n(){var n=t.call(this)||this;return n.on=n.onInternal,n.once=n.onceInternal,n.un=n.unInternal,n.T=0,n}return J(n,t),n.prototype.changed=function(){++this.T,this.dispatchEvent(L)},n.prototype.getRevision=function(){return this.T},n.prototype.onInternal=function(t,n){if(Array.isArray(t)){for(var i=t.length,r=new Array(i),e=0;e0;)this.pop()},n.prototype.extend=function(t){for(var n=0,i=t.length;nt)throw new Error("Tile load sequence violation");this.state=t,this.changed()},n.prototype.load=function(){r()},n.prototype.getAlpha=function(t,n){if(!this.D)return 1;var i=this.q[t];if(i){if(-1===i)return 1}else i=n,this.q[t]=i;var r=n-i+1e3/60;return r>=this.D?1:yt(r/this.D)},n.prototype.inTransition=function(t){return!!this.D&&-1!==this.q[t]},n.prototype.endTransition=function(t){this.D&&(this.q[t]=-1)},n}(N),Mt=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_t=function(t){function n(n){var i=this,r=ct;return(i=t.call(this,n.tileCoord,r,{transition:n.transition,interpolate:n.interpolate})||this).U=n.loader,i.B=null,i.V=null,i.W=n.size||[256,256],i}return Mt(n,t),n.prototype.getSize=function(){return this.W},n.prototype.getData=function(){return this.B},n.prototype.getError=function(){return this.V},n.prototype.load=function(){if(this.state===ct||this.state===dt){this.state=lt,this.changed();var t=this;this.U().then((function(n){t.B=n,t.state=vt,t.changed()})).catch((function(n){t.V=n,t.state=dt,t.changed()}))}},n}(xt);function St(t,n){if(!t)throw new h(n)}var Ot=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function jt(t){return"function"==typeof t?t:(Array.isArray(t)?n=t:(St("function"==typeof t.getZIndex,41),n=[t]),function(){return n});var n}var Et=function(t){function n(n){var i=t.call(this)||this;if(i.on,i.once,i.un,i.$=void 0,i.K="geometry",i.H=null,i.tt=void 0,i.nt=null,i.addChangeListener(i.K,i.it),n)if("function"==typeof n.getSimplifiedGeometry){var r=n;i.setGeometry(r)}else{var e=n;i.setProperties(e)}return i}return Ot(n,t),n.prototype.clone=function(){var t=new n(this.hasProperties()?this.getProperties():null);t.setGeometryName(this.getGeometryName());var i=this.getGeometry();i&&t.setGeometry(i.clone());var r=this.getStyle();return r&&t.setStyle(r),t},n.prototype.getGeometry=function(){return this.get(this.K)},n.prototype.getId=function(){return this.$},n.prototype.getGeometryName=function(){return this.K},n.prototype.getStyle=function(){return this.H},n.prototype.getStyleFunction=function(){return this.tt},n.prototype.rt=function(){this.changed()},n.prototype.it=function(){this.nt&&(H(this.nt),this.nt=null);var t=this.getGeometry();t&&(this.nt=$(t,L,this.rt,this)),this.changed()},n.prototype.setGeometry=function(t){this.set(this.K,t)},n.prototype.setStyle=function(t){this.H=t,this.tt=t?jt(t):void 0,this.changed()},n.prototype.setId=function(t){this.$=t,this.changed()},n.prototype.setGeometryName=function(t){this.removeChangeListener(this.K,this.it),this.K=t,this.addChangeListener(this.K,this.it),this.it()},n}(et),Tt="XY",At="XYZ",Pt="XYM",Ct="XYZM",kt={RADIANS:"radians",DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"},It={9001:kt.METERS,9002:kt.FEET,9003:kt.USFEET,9101:kt.RADIANS,9102:kt.DEGREES};function Nt(t){return It[t]}var Lt={};Lt[kt.RADIANS]=6370997/(2*Math.PI),Lt[kt.DEGREES]=2*Math.PI*6370997/360,Lt[kt.FEET]=.3048,Lt[kt.METERS]=1,Lt[kt.USFEET]=1200/3937;var zt,Rt=kt,Ft="undefined"!=typeof navigator&&void 0!==navigator.userAgent?navigator.userAgent.toLowerCase():"",Gt=-1!==Ft.indexOf("firefox"),Dt=-1!==Ft.indexOf("safari")&&-1==Ft.indexOf("chrom"),qt=Dt&&!!(Ft.indexOf("version/15.4")>=0||Ft.match(/cpu (os|iphone os) 15_4 like mac os x/)),Ut=-1!==Ft.indexOf("webkit")&&-1==Ft.indexOf("edge"),Bt=-1!==Ft.indexOf("macintosh"),Xt="undefined"!=typeof devicePixelRatio?devicePixelRatio:1,Vt="undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,Wt="undefined"!=typeof Image&&Image.prototype.decode,Yt=function(){var t=!1;try{var n=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("_",null,n),window.removeEventListener("_",null,n)}catch(t){}return t}(),Zt=new Array(6);function $t(){return[1,0,0,1,0,0]}function Kt(t){return Jt(t,1,0,0,1,0,0)}function Ht(t,n){var i=t[0],r=t[1],e=t[2],o=t[3],s=t[4],u=t[5],a=n[0],h=n[1],f=n[2],c=n[3],l=n[4],v=n[5];return t[0]=i*a+e*h,t[1]=r*a+o*h,t[2]=i*f+e*c,t[3]=r*f+o*c,t[4]=i*l+e*v+s,t[5]=r*l+o*v+u,t}function Jt(t,n,i,r,e,o,s){return t[0]=n,t[1]=i,t[2]=r,t[3]=e,t[4]=o,t[5]=s,t}function Qt(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t}function tn(t,n){var i=n[0],r=n[1];return n[0]=t[0]*i+t[2]*r+t[4],n[1]=t[1]*i+t[3]*r+t[5],n}function nn(t,n){var i=Math.cos(n),r=Math.sin(n);return Ht(t,Jt(Zt,i,r,-r,i,0,0))}function rn(t,n,i){return Ht(t,Jt(Zt,n,0,0,i,0,0))}function en(t,n,i){return Jt(t,n,0,0,i,0,0)}function on(t,n,i){return Ht(t,Jt(Zt,1,0,0,1,n,i))}function sn(t,n,i,r,e,o,s,u){var a=Math.sin(o),h=Math.cos(o);return t[0]=r*h,t[1]=e*a,t[2]=-r*a,t[3]=e*h,t[4]=s*r*h-u*r*a+n,t[5]=s*e*a+u*e*h+i,t}function un(t,n){var i=an(n);St(0!==i,32);var r=n[0],e=n[1],o=n[2],s=n[3],u=n[4],a=n[5];return t[0]=s/i,t[1]=-e/i,t[2]=-o/i,t[3]=r/i,t[4]=(o*a-s*u)/i,t[5]=-(r*a-e*u)/i,t}function an(t){return t[0]*t[3]-t[1]*t[2]}function hn(t){var n="matrix("+t.join(", ")+")";if(Vt)return n;var i=zt||(zt=document.createElement("div"));return i.style.transform=n,i.style.transform}var fn=0,cn=1,ln=2,vn=4,dn=8,pn=16;function yn(t){for(var n=Sn(),i=0,r=t.length;ie&&(a|=vn),uo&&(a|=ln),a===fn&&(a=cn),a}function Sn(){return[1/0,1/0,-1/0,-1/0]}function On(t,n,i,r,e){return e?(e[0]=t,e[1]=n,e[2]=i,e[3]=r,e):[t,n,i,r]}function jn(t){return On(1/0,1/0,-1/0,-1/0,t)}function En(t,n){var i=t[0],r=t[1];return On(i,r,i,r,n)}function Tn(t,n,i,r,e){return Nn(jn(e),t,n,i,r)}function An(t,n){return t[0]==n[0]&&t[2]==n[2]&&t[1]==n[1]&&t[3]==n[3]}function Pn(t,n,i){return Math.abs(t[0]-n[0])t[2]&&(t[2]=n[2]),n[1]t[3]&&(t[3]=n[3]),t}function kn(t,n){n[0]t[2]&&(t[2]=n[0]),n[1]t[3]&&(t[3]=n[1])}function In(t,n){for(var i=0,r=n.length;in[0]?r[0]=t[0]:r[0]=n[0],t[1]>n[1]?r[1]=t[1]:r[1]=n[1],t[2]=n[0]&&t[1]<=n[3]&&t[3]>=n[1]}function Hn(t){return t[2]=s&&p<=a),r||!(o&vn)||e&vn||(r=(y=v-(l-a)*d)>=u&&y<=h),r||!(o&dn)||e&dn||(r=(p=l-(v-u)/d)>=s&&p<=a),r||!(o&pn)||e&pn||(r=(y=v-(l-s)*d)>=u&&y<=h)}return r}function ni(t,n,i,r){var e=[];if(r>1)for(var o=t[2]-t[0],s=t[3]-t[1],u=0;u=i[2])){var e=$n(i),o=Math.floor((r[0]-i[0])/e)*e;t[0]-=o,t[2]-=o}return t}function ri(t,n){if(n.canWrapX()){var i=n.getExtent();if(!isFinite(t[0])||!isFinite(t[2]))return[[i[0],t[1],i[2],t[3]]];ii(t,n);var r=$n(i);if($n(t)>r)return[[i[0],t[1],i[2],t[3]]];if(t[0]i[2])return[[t[0],t[1],i[2],t[3]],[i[0],t[1],t[2]-r,t[3]]]}return[t]}var ei=function(){function t(t){this.et=t.code,this.ot=t.units,this.st=void 0!==t.extent?t.extent:null,this.ut=void 0!==t.worldExtent?t.worldExtent:null,this.ht=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.ft=void 0!==t.global&&t.global,this.ct=!(!this.ft||!this.st),this.lt=t.getPointResolution,this.vt=null,this.dt=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.ct},t.prototype.getCode=function(){return this.et},t.prototype.getExtent=function(){return this.st},t.prototype.getUnits=function(){return this.ot},t.prototype.getMetersPerUnit=function(){return this.dt||Lt[this.ot]},t.prototype.getWorldExtent=function(){return this.ut},t.prototype.getAxisOrientation=function(){return this.ht},t.prototype.isGlobal=function(){return this.ft},t.prototype.setGlobal=function(t){this.ft=t,this.ct=!(!t||!this.st)},t.prototype.getDefaultTileGrid=function(){return this.vt},t.prototype.setDefaultTileGrid=function(t){this.vt=t},t.prototype.setExtent=function(t){this.st=t,this.ct=!(!this.ft||!t)},t.prototype.setWorldExtent=function(t){this.ut=t},t.prototype.setGetPointResolution=function(t){this.lt=t},t.prototype.getPointResolutionFunc=function(){return this.lt},t}();function oi(t,n,i){return Math.min(Math.max(t,n),i)}var si="cosh"in Math?Math.cosh:function(t){var n=Math.exp(t);return(n+1/n)/2},ui="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function ai(t,n,i,r,e,o){var s=e-i,u=o-r;if(0!==s||0!==u){var a=((t-i)*s+(n-r)*u)/(s*s+u*u);a>1?(i=e,r=o):a>0&&(i+=s*a,r+=u*a)}return hi(t,n,i,r)}function hi(t,n,i,r){var e=i-t,o=r-n;return e*e+o*o}function fi(t){for(var n=t.length,i=0;ie&&(e=s,r=o)}if(0===e)return null;var u=t[r];t[r]=t[i],t[i]=u;for(var a=i+1;a=0;l--){c[l]=t[l][n]/t[l][l];for(var v=l-1;v>=0;v--)t[v][n]-=t[v][l]*c[l]}return c}function ci(t){return 180*t/Math.PI}function li(t){return t*Math.PI/180}function vi(t,n){var i=t%n;return i*n<0?i+n:i}function di(t,n,i){return t+i*(n-t)}function pi(t,n){var i=Math.pow(10,n);return Math.round(t*i)/i}function yi(t,n){return Math.round(pi(t,n))}function mi(t,n){return Math.floor(pi(t,n))}function wi(t,n){return Math.ceil(pi(t,n))}var gi=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),bi=6378137,xi=Math.PI*bi,Mi=[-xi,-xi,xi,xi],_i=[-180,-85,180,85],Si=bi*Math.log(Math.tan(Math.PI/2)),Oi=function(t){function n(n){return t.call(this,{code:n,units:Rt.METERS,extent:Mi,global:!0,worldExtent:_i,getPointResolution:function(t,n){return t/si(n[1]/bi)}})||this}return gi(n,t),n}(ei),ji=[new Oi("EPSG:3857"),new Oi("EPSG:102100"),new Oi("EPSG:102113"),new Oi("EPSG:900913"),new Oi("http://www.opengis.net/def/crs/EPSG/0/3857"),new Oi("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Ei(t,n,i){var r=t.length,e=i>1?i:2,o=n;void 0===o&&(o=e>2?t.slice():new Array(r));for(var s=0;sSi?u=Si:u<-Si&&(u=-Si),o[s+1]=u}return o}function Ti(t,n,i){var r=t.length,e=i>1?i:2,o=n;void 0===o&&(o=e>2?t.slice():new Array(r));for(var s=0;sn?r:new Array(1+n-e).join("0")+r}function Xi(t,n){for(var i=(""+t).split("."),r=(""+n).split("."),e=0;es)return 1;if(s>o)return-1}return 0}function Vi(t,n){return t[0]+=+n[0],t[1]+=+n[1],t}function Wi(t,n){var i=n.getRadius(),r=n.getCenter(),e=r[0],o=r[1],s=t[0]-e,u=t[1]-o;0===s&&0===u&&(s=1);var a=Math.sqrt(s*s+u*u);return[e+i*s/a,o+i*u/a]}function Yi(t,n){var i,r,e=t[0],o=t[1],s=n[0],u=n[1],a=s[0],h=s[1],f=u[0],c=u[1],l=f-a,v=c-h,d=0===l&&0===v?0:(l*(e-a)+v*(o-h))/(l*l+v*v||0);return d<=0?(i=a,r=h):d>=1?(i=f,r=c):(i=a+d*l,r=h+d*v),[i,r]}function Zi(t,n,i){var r=vi(n+180,360)-180,e=Math.abs(3600*r),o=i||0,s=Math.pow(10,o),u=Math.floor(e/3600),a=Math.floor((e-3600*u)/60),h=e-3600*u-60*a;return(h=Math.ceil(h*s)/s)>=60&&(h=0,a+=1),a>=60&&(a=0,u+=1),u+"° "+Bi(a,2)+"′ "+Bi(h,2,o)+"″"+(0==r?"":" "+t.charAt(r<0?1:0))}function $i(t,n,i){return t?n.replace("{x}",t[0].toFixed(i)).replace("{y}",t[1].toFixed(i)):""}function Ki(t,n){for(var i=!0,r=t.length-1;r>=0;--r)if(t[r]!=n[r]){i=!1;break}return i}function Hi(t,n){var i=Math.cos(n),r=Math.sin(n),e=t[0]*i-t[1]*r,o=t[1]*i+t[0]*r;return t[0]=e,t[1]=o,t}function Ji(t,n){return t[0]*=n,t[1]*=n,t}function Qi(t,n){var i=t[0]-n[0],r=t[1]-n[1];return i*i+r*r}function tr(t,n){return Math.sqrt(Qi(t,n))}function nr(t,n){return Qi(t,Yi(t,n))}function ir(t,n){return $i(t,"{x}, {y}",n)}function rr(t,n){if(n.canWrapX()){var i=$n(n.getExtent()),r=er(t,n,i);r&&(t[0]-=r*i)}return t}function er(t,n,i){var r=n.getExtent(),e=0;if(n.canWrapX()&&(t[0]r[2])){var o=i||$n(r);e=Math.floor((t[0]-r[0])/o)}return e}var or=6371008.8;function sr(t,n,i){var r=i||or,e=li(t[1]),o=li(n[1]),s=(o-e)/2,u=li(n[0]-t[0])/2,a=Math.sin(s)*Math.sin(s)+Math.sin(u)*Math.sin(u)*Math.cos(e)*Math.cos(o);return 2*r*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))}function ur(t,n){for(var i=0,r=0,e=t.length;r=h?n[u+f]:a[f];return s}}function Mr(t,n,i,r){var e=yr(t),o=yr(n);qi(e,o,xr(i)),qi(o,e,xr(r))}function _r(t,n){return cr(),Er(t,"EPSG:4326",void 0!==n?n:"EPSG:3857")}function Sr(t,n){if(t===n)return!0;var i=t.getUnits()===n.getUnits();return(t.getCode()===n.getCode()||Or(t,n)===lr)&&i}function Or(t,n){var i=Ui(t.getCode(),n.getCode());return i||(i=vr),i}function jr(t,n){return Or(yr(t),yr(n))}function Er(t,n,i){return jr(n,i)(t,void 0,t.length)}function Tr(t,n,i,r){return ni(t,jr(n,i),void 0,r)}var Ar=null;function Pr(t){Ar=yr(t)}function Cr(){return Ar}function kr(t,n){return Ar?Er(t,n,Ar):t}function Ir(t,n){return Ar?Er(t,Ar,n):(fr&&!Ki(t,[0,0])&&t[0]>=-180&&t[0]<=180&&t[1]>=-90&&t[1]<=90&&(fr=!1,console.warn("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),t)}function Nr(t,n){return Ar?Tr(t,n,Ar):t}function Lr(t,n){return Ar?Tr(t,Ar,n):t}function zr(t,n){if(!Ar)return t;var i=yr(n).getUnits(),r=Ar.getUnits();return i&&r?t*Lt[i]/Lt[r]:t}function Rr(t,n){if(!Ar)return t;var i=yr(n).getUnits(),r=Ar.getUnits();return i&&r?t*Lt[r]/Lt[i]:t}function Fr(t,n,i){return function(r){var e,o;if(t.canWrapX()){var s=t.getExtent(),u=$n(s);(o=er(r=r.slice(0),t,u))&&(r[0]=r[0]-o*u),r[0]=oi(r[0],s[0],s[2]),r[1]=oi(r[1],s[1],s[3]),e=i(r)}else e=i(r);return o&&n.canWrapX()&&(e[0]+=o*$n(n.getExtent())),e}}function Gr(){wr(ji),wr(Ni),gr(Ni,ji,Ei,Ti)}function Dr(t,n,i,r,e,o){for(var s=o||[],u=0,a=n;a1)u=i;else{if(l>0){for(var v=0;ve&&(e=h),o=u,s=a}return e}function Qr(t,n,i,r,e){for(var o=0,s=i.length;o0;){for(var c=h.pop(),l=h.pop(),v=0,d=t[l],p=t[l+1],y=t[c],m=t[c+1],w=l+r;wv&&(f=w,v=g)}v>e&&(a[(f-n)/r]=1,l+re&&(o[s++]=h,o[s++]=f,u=h,a=f);return h==u&&f==a||(o[s++]=h,o[s++]=f),s}function ce(t,n){return n*Math.round(t/n)}function le(t,n,i,r,e,o,s){if(n==i)return s;var u,a,h=ce(t[n],e),f=ce(t[n+1],e);n+=r,o[s++]=h,o[s++]=f;do{if(u=ce(t[n],e),a=ce(t[n+1],e),(n+=r)==i)return o[s++]=u,o[s++]=a,s}while(u==h&&a==f);for(;n0&&p>v)&&(d<0&&y0&&y>d)?(u=c,a=l):(o[s++]=u,o[s++]=a,h=u,f=a,u=c,a=l)}}return o[s++]=u,o[s++]=a,s}function ve(t,n,i,r,e,o,s,u){for(var a=0,h=i.length;ao&&(h-u)*(o-a)-(e-u)*(f-a)>0&&s++:f<=o&&(h-u)*(o-a)-(e-u)*(f-a)<0&&s--,u=h,a=f}return 0!==s}function Ee(t,n,i,r,e,o){if(0===i.length)return!1;if(!je(t,n,i[0],r,e,o))return!1;for(var s=1,u=i.length;sx&&Ee(t,n,i,r,h=(f+c)/2,d)&&(b=h,x=M),f=c}return isNaN(b)&&(b=e[o]),s?(s.push(b,d,x),s):[b,d,x]}function Pe(t,n,i,r,e){for(var o=[],s=0,u=i.length;s=e[0]&&o[2]<=e[2]||(o[1]>=e[1]&&o[3]<=e[3]||Ce(t,n,i,r,(function(t,n){return ti(e,t,n)})))))}function Ie(t,n,i,r,e){for(var o=0,s=i.length;o0}function Ge(t,n,i,r,e){for(var o=void 0!==e&&e,s=0,u=i.length;s0&&this.Zt[i+2]>t;)i-=3;var r=this.Zt[n+2]-this.Zt[i+2];if(r<1e3/60)return!1;var e=this.Zt[n]-this.Zt[i],o=this.Zt[n+1]-this.Zt[i+1];return this.$t=Math.atan2(o,e),this.Kt=Math.sqrt(e*e+o*o)/r,this.Kt>this.Wt},t.prototype.getDistance=function(){return(this.Wt-this.Kt)/this.Vt},t.prototype.getAngle=function(){return this.$t},t}(),No=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,Lo=/^([a-z]*)$|^hsla?\(.*\)$/i;function zo(t){return"string"==typeof t?t:qo(t)}function Ro(t){var n=document.createElement("div");if(n.style.color=t,""!==n.style.color){document.body.appendChild(n);var i=getComputedStyle(n).color;return document.body.removeChild(n),i}return""}var Fo=function(){var t={},n=0;return function(i){var r;if(t.hasOwnProperty(i))r=t[i];else{if(n>=1024){var e=0;for(var o in t)0==(3&e++)&&(delete t[o],--n)}r=function(t){var n,i,r,e,o;Lo.exec(t)&&(t=Ro(t));if(No.exec(t)){var s=t.length-1,u=void 0;u=s<=4?1:2;var a=4===s||8===s;n=parseInt(t.substr(1+0*u,u),16),i=parseInt(t.substr(1+1*u,u),16),r=parseInt(t.substr(1+2*u,u),16),e=a?parseInt(t.substr(1+3*u,u),16):255,1==u&&(n=(n<<4)+n,i=(i<<4)+i,r=(r<<4)+r,a&&(e=(e<<4)+e)),o=[n,i,r,e/255]}else 0==t.indexOf("rgba(")?Do(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),Do(o)):St(!1,14);return o}(i),t[i]=r,++n}return r}}();function Go(t){return Array.isArray(t)?t:Fo(t)}function Do(t){return t[0]=oi(t[0]+.5|0,0,255),t[1]=oi(t[1]+.5|0,0,255),t[2]=oi(t[2]+.5|0,0,255),t[3]=oi(t[3],0,1),t}function qo(t){var n=t[0];n!=(0|n)&&(n=n+.5|0);var i=t[1];i!=(0|i)&&(i=i+.5|0);var r=t[2];return r!=(0|r)&&(r=r+.5|0),"rgba("+n+","+i+","+r+","+(void 0===t[3]?1:Math.round(100*t[3])/100)+")"}function Uo(t){return Lo.test(t)&&(t=Ro(t)),No.test(t)||0===t.indexOf("rgba(")||0===t.indexOf("rgb(")}var Bo=function(){function t(){this.Ht={},this.Jt=0,this.Qt=32}return t.prototype.clear=function(){this.Ht={},this.Jt=0},t.prototype.canExpireCache=function(){return this.Jt>this.Qt},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var n in this.Ht){var i=this.Ht[n];0!=(3&t++)||i.hasListener()||(delete this.Ht[n],--this.Jt)}}},t.prototype.get=function(t,n,i){var r=Xo(t,n,i);return r in this.Ht?this.Ht[r]:null},t.prototype.set=function(t,n,i,r){var e=Xo(t,n,i);this.Ht[e]=r,++this.Jt},t.prototype.setSize=function(t){this.Qt=t,this.expire()},t}();function Xo(t,n,i){return n+":"+t+":"+(i?zo(i):"null")}var Vo=Bo,Wo=new Bo,Yo="opacity",Zo="visible",$o="extent",Ko="zIndex",Ho="maxResolution",Jo="minResolution",Qo="maxZoom",ts="minZoom",ns="source",is="map",rs=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),es=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un,i.tn=n.background;var r=A({},n);return"object"==typeof n.properties&&(delete r.properties,A(r,n.properties)),r[Yo]=void 0!==n.opacity?n.opacity:1,St("number"==typeof r[Yo],64),r[Zo]=void 0===n.visible||n.visible,r[Ko]=n.zIndex,r[Ho]=void 0!==n.maxResolution?n.maxResolution:1/0,r[Jo]=void 0!==n.minResolution?n.minResolution:0,r[ts]=void 0!==n.minZoom?n.minZoom:-1/0,r[Qo]=void 0!==n.maxZoom?n.maxZoom:1/0,i.nn=void 0!==r.className?r.className:"ol-layer",delete r.className,i.setProperties(r),i.rn=null,i}return rs(n,t),n.prototype.getBackground=function(){return this.tn},n.prototype.getClassName=function(){return this.nn},n.prototype.getLayerState=function(t){var n=this.rn||{layer:this,managed:void 0===t||t},i=this.getZIndex();return n.opacity=oi(Math.round(100*this.getOpacity())/100,0,1),n.visible=this.getVisible(),n.extent=this.getExtent(),n.zIndex=void 0!==i||n.managed?i:1/0,n.maxResolution=this.getMaxResolution(),n.minResolution=Math.max(this.getMinResolution(),0),n.minZoom=this.getMinZoom(),n.maxZoom=this.getMaxZoom(),this.rn=n,n},n.prototype.getLayersArray=function(t){return r()},n.prototype.getLayerStatesArray=function(t){return r()},n.prototype.getExtent=function(){return this.get($o)},n.prototype.getMaxResolution=function(){return this.get(Ho)},n.prototype.getMinResolution=function(){return this.get(Jo)},n.prototype.getMinZoom=function(){return this.get(ts)},n.prototype.getMaxZoom=function(){return this.get(Qo)},n.prototype.getOpacity=function(){return this.get(Yo)},n.prototype.getSourceState=function(){return r()},n.prototype.getVisible=function(){return this.get(Zo)},n.prototype.getZIndex=function(){return this.get(Ko)},n.prototype.setBackground=function(t){this.tn=t,this.changed()},n.prototype.setExtent=function(t){this.set($o,t)},n.prototype.setMaxResolution=function(t){this.set(Ho,t)},n.prototype.setMinResolution=function(t){this.set(Jo,t)},n.prototype.setMaxZoom=function(t){this.set(Qo,t)},n.prototype.setMinZoom=function(t){this.set(ts,t)},n.prototype.setOpacity=function(t){St("number"==typeof t,64),this.set(Yo,t)},n.prototype.setVisible=function(t){this.set(Zo,t)},n.prototype.setZIndex=function(t){this.set(Ko,t)},n.prototype.disposeInternal=function(){this.rn&&(this.rn.layer=null,this.rn=null),t.prototype.disposeInternal.call(this)},n}(et),os="prerender",ss="postrender",us="precompose",as="postcompose",hs="rendercomplete",fs=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function cs(t,n){if(!t.visible)return!1;var i=n.resolution;if(i=t.maxResolution)return!1;var r=n.zoom;return r>t.minZoom&&r<=t.maxZoom}var ls=function(t){function n(n){var i=this,r=A({},n);delete r.source,(i=t.call(this,r)||this).on,i.once,i.un,i.en=null,i.sn=null,i.an=null,i.hn=null,i.rendered=!1,n.render&&(i.render=n.render),n.map&&i.setMap(n.map),i.addChangeListener(ns,i.fn);var e=n.source?n.source:null;return i.setSource(e),i}return fs(n,t),n.prototype.getLayersArray=function(t){var n=t||[];return n.push(this),n},n.prototype.getLayerStatesArray=function(t){var n=t||[];return n.push(this.getLayerState()),n},n.prototype.getSource=function(){return this.get(ns)||null},n.prototype.getRenderSource=function(){return this.getSource()},n.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():"undefined"},n.prototype.cn=function(){this.changed()},n.prototype.fn=function(){this.an&&(H(this.an),this.an=null);var t=this.getSource();t&&(this.an=$(t,L,this.cn,this)),this.changed()},n.prototype.getFeatures=function(t){return this.hn?this.hn.getFeatures(t):new Promise((function(t){return t([])}))},n.prototype.getData=function(t){return this.hn&&this.rendered?this.hn.getData(t):null},n.prototype.render=function(t,n){var i=this.getRenderer();if(i.prepareFrame(t))return this.rendered=!0,i.renderFrame(t,n)},n.prototype.unrender=function(){this.rendered=!1},n.prototype.setMapInternal=function(t){t||this.unrender(),this.set(is,t)},n.prototype.getMapInternal=function(){return this.get(is)},n.prototype.setMap=function(t){this.en&&(H(this.en),this.en=null),t||this.changed(),this.sn&&(H(this.sn),this.sn=null),t&&(this.en=$(t,us,(function(t){var n=t.frameState.layerStatesArray,i=this.getLayerState(!1);St(!n.some((function(t){return t.layer===i.layer})),67),n.push(i)}),this),this.sn=$(this,L,t.render,t),this.changed())},n.prototype.setSource=function(t){this.set(ns,t)},n.prototype.getRenderer=function(){return this.hn||(this.hn=this.createRenderer()),this.hn},n.prototype.hasRenderer=function(){return!!this.hn},n.prototype.createRenderer=function(){return null},n.prototype.disposeInternal=function(){this.hn&&(this.hn.dispose(),delete this.hn),this.setSource(null),t.prototype.disposeInternal.call(this)},n}(es),vs=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function ds(t,n){Wo.expire()}var ps=function(t){function n(n){var i=t.call(this)||this;return i.vn=n,i}return vs(n,t),n.prototype.dispatchRenderEvent=function(t,n){r()},n.prototype.calculateMatrices2D=function(t){var n=t.viewState,i=t.coordinateToPixelTransform,r=t.pixelToCoordinateTransform;sn(i,t.size[0]/2,t.size[1]/2,1/n.resolution,-1/n.resolution,-n.rotation,-n.center[0],-n.center[1]),un(r,i)},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e,o,s,u){var a,h=n.viewState;function f(t,n,i,r){return e.call(o,n,t?i:null,r)}var c=h.projection,l=rr(t.slice(),c),v=[[0,0]];if(c.canWrapX()&&r){var d=$n(c.getExtent());v.push([-d,0],[d,0])}for(var p=n.layerStatesArray,y=p.length,m=[],w=[],g=0;g=0;--b){var x=p[b],M=x.layer;if(M.hasRenderer()&&cs(x,h)&&s.call(u,M)){var _=M.getRenderer(),S=M.getSource();if(_&&S){var O=S.getWrapX()?l:t,j=f.bind(null,x.managed);w[0]=O[0]+v[g][0],w[1]=O[1]+v[g][1],a=_.forEachFeatureAtCoordinate(w,n,i,j,m)}if(a)return a}}if(0!==m.length){var E=1/m.length;return m.forEach((function(t,n){return t.distanceSq+=n*E})),m.sort((function(t,n){return t.distanceSq-n.distanceSq})),m.some((function(t){return a=t.callback(t.feature,t.layer,t.geometry)})),a}},n.prototype.forEachLayerAtPixel=function(t,n,i,e,o){return r()},n.prototype.hasFeatureAtCoordinate=function(t,n,i,r,e,o){return void 0!==this.forEachFeatureAtCoordinate(t,n,i,r,S,this,e,o)},n.prototype.getMap=function(){return this.vn},n.prototype.renderFrame=function(t){r()},n.prototype.scheduleExpireIconCache=function(t){Wo.canExpireCache()&&t.postRenderFunctions.push(ds)},n}(v),ys=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ms=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.inversePixelTransform=i,o.frameState=r,o.context=e,o}return ys(n,t),n}(c),ws="ol-hidden",gs="ol-selectable",bs="ol-unselectable",xs="ol-unsupported",Ms="ol-control",_s="ol-collapsed",Ss=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),Os=["style","variant","weight","size","lineHeight","family"],js=function(t){var n=t.match(Ss);if(!n)return null;for(var i={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},r=0,e=Os.length;r=0;--o)r[o].renderDeclutter(t);Po(this.pn,this.yn),this.dispatchRenderEvent(as,t),this.mn||(this.pn.style.display="",this.mn=!0),this.scheduleExpireIconCache(t)}else this.mn&&(this.pn.style.display="none",this.mn=!1)},n.prototype.forEachLayerAtPixel=function(t,n,i,r,e){for(var o=n.viewState,s=n.layerStatesArray,u=s.length-1;u>=0;--u){var a=s[u],h=a.layer;if(h.hasRenderer()&&cs(a,o)&&e(h)){var f=h.getRenderer().getDataAtPixel(t,n,i);if(f){var c=r(h,f);if(c)return c}}}},n}(ps),Js=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Qs=function(t){function n(n,i){var r=t.call(this,n)||this;return r.layer=i,r}return Js(n,t),n}(c),tu="layers",nu=function(t){function n(n){var i=this,r=n||{},e=A({},r);delete e.layers;var o=r.layers;return(i=t.call(this,e)||this).on,i.once,i.un,i.wn=[],i.gn={},i.addChangeListener(tu,i.bn),o?Array.isArray(o)?o=new ft(o.slice(),{unique:!0}):St("function"==typeof o.getArray,43):o=new ft(void 0,{unique:!0}),i.setLayers(o),i}return Js(n,t),n.prototype.xn=function(){this.changed()},n.prototype.bn=function(){this.wn.forEach(H),this.wn.length=0;var t=this.getLayers();for(var n in this.wn.push($(t,ot,this.Mn,this),$(t,st,this._n,this)),this.gn)this.gn[n].forEach(H);P(this.gn);for(var i=t.getArray(),r=0,e=i.length;rthis.In||Math.abs(t.clientY-this.Nn.clientY)>this.In},n.prototype.disposeInternal=function(){this.Dn&&(H(this.Dn),this.Dn=null),this.pn.removeEventListener(Y,this.Un),this.Rn&&(H(this.Rn),this.Rn=null),this.kn.forEach(H),this.kn.length=0,this.pn=null,t.prototype.disposeInternal.call(this)},n}(N),vu="postrender",du="movestart",pu="moveend",yu="loadstart",mu="loadend",wu="layergroup",gu="size",bu="target",xu="view",Mu=1/0,_u=function(){function t(t,n){this.Kn=t,this.Hn=n,this.Jn=[],this.Qn=[],this.ti={}}return t.prototype.clear=function(){this.Jn.length=0,this.Qn.length=0,P(this.ti)},t.prototype.dequeue=function(){var t=this.Jn,n=this.Qn,i=t[0];1==t.length?(t.length=0,n.length=0):(t[0]=t.pop(),n[0]=n.pop(),this.ni(0));var r=this.Hn(i);return delete this.ti[r],i},t.prototype.enqueue=function(t){St(!(this.Hn(t)in this.ti),31);var n=this.Kn(t);return n!=Mu&&(this.Jn.push(t),this.Qn.push(n),this.ti[this.Hn(t)]=!0,this.ii(0,this.Jn.length-1),!0)},t.prototype.getCount=function(){return this.Jn.length},t.prototype.ri=function(t){return 2*t+1},t.prototype.ei=function(t){return 2*t+2},t.prototype.oi=function(t){return t-1>>1},t.prototype.si=function(){var t;for(t=(this.Jn.length>>1)-1;t>=0;t--)this.ni(t)},t.prototype.isEmpty=function(){return 0===this.Jn.length},t.prototype.isKeyQueued=function(t){return t in this.ti},t.prototype.isQueued=function(t){return this.isKeyQueued(this.Hn(t))},t.prototype.ni=function(t){for(var n=this.Jn,i=this.Qn,r=n.length,e=n[t],o=i[t],s=t;t>1;){var u=this.ri(t),a=this.ei(t),h=at;){var s=this.oi(n);if(!(r[s]>o))break;i[n]=i[s],r[n]=r[s],n=s}i[n]=e,r[n]=o},t.prototype.reprioritize=function(){var t,n,i,r=this.Kn,e=this.Jn,o=this.Qn,s=0,u=e.length;for(n=0;n0;)r=(i=this.dequeue()[0]).getKey(),i.getState()!==ct||r in this.fi||(this.fi[r]=!0,++this.hi,++e,i.load())},n}(_u);function ju(t,n,i,r,e){if(!t||!(i in t.wantedTiles))return Mu;if(!t.wantedTiles[i][n.getKey()])return Mu;var o=t.viewState.center,s=r[0]-o[0],u=r[1]-o[1];return 65536*Math.log(e)+Math.sqrt(s*s+u*u)/e}var Eu=0,Tu=1,Au={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"},Pu=256;function Cu(t,n,i){return function(r,e,o,s,u){if(r){if(!e&&!n)return r;var a=n?0:o[0]*e,h=n?0:o[1]*e,f=u?u[0]:0,c=u?u[1]:0,l=t[0]+a/2+f,v=t[2]-a/2+f,d=t[1]+h/2+c,p=t[3]-h/2+c;l>v&&(v=l=(v+l)/2),d>p&&(p=d=(p+d)/2);var y=oi(r[0],l,v),m=oi(r[1],d,p);if(s&&i&&e){var w=30*e;y+=-w*Math.log(1+Math.max(0,l-r[0])/w)+w*Math.log(1+Math.max(0,r[0]-v)/w),m+=-w*Math.log(1+Math.max(0,d-r[1])/w)+w*Math.log(1+Math.max(0,r[1]-p)/w)}return[y,m]}}}function ku(t){return t}function Iu(t,n,i,r){var e=$n(n)/i[0],o=Vn(n)/i[1];return r?Math.min(t,Math.max(e,o)):Math.min(t,Math.min(e,o))}function Nu(t,n,i){var r=Math.min(t,n);return r*=Math.log(1+50*Math.max(0,t/n-1))/50+1,i&&(r=Math.max(r,i),r/=Math.log(1+50*Math.max(0,i/t-1))/50+1),oi(r,i/2,2*n)}function Lu(t,n,i,r){return function(e,o,s,u){if(void 0!==e){var a=t[0],h=t[t.length-1],f=i?Iu(a,i,s,r):a;if(u)return void 0===n||n?Nu(e,f,h):oi(e,h,f);var c=Math.min(f,e),l=Math.floor(m(t,c,o));return t[l]>f&&l1&&"function"==typeof arguments[i-1]&&(n=arguments[i-1],--i);for(var r=0;r0},n.prototype.getInteracting=function(){return this.ci[Tu]>0},n.prototype.cancelAnimations=function(){var t;this.setHint(Eu,-this.ci[Eu]);for(var n=0,i=this.li.length;n=0;--i){for(var r=this.li[i],e=!0,o=0,s=r.length;o0?a/u.duration:1;h>=1?(u.complete=!0,h=1):e=!1;var f=u.easing(h);if(u.sourceCenter){var c=u.sourceCenter[0],l=u.sourceCenter[1],v=u.targetCenter[0],d=u.targetCenter[1];this.bi=u.targetCenter;var p=c+f*(v-c),y=l+f*(d-l);this.mi=[p,y]}if(u.sourceResolution&&u.targetResolution){var m=1===f?u.targetResolution:u.sourceResolution+f*(u.targetResolution-u.sourceResolution);if(u.anchor){var w=this.Ni(this.getRotation()),g=this.Ci.resolution(m,0,w,!0);this.mi=this.calculateCenterZoom(g,u.anchor)}this.xi=u.targetResolution,this.wi=m,this.Li(!0)}if(void 0!==u.sourceRotation&&void 0!==u.targetRotation){var b=1===f?vi(u.targetRotation+Math.PI,2*Math.PI)-Math.PI:u.sourceRotation+f*(u.targetRotation-u.sourceRotation);if(u.anchor){var x=this.Ci.rotation(b,!0);this.mi=this.calculateCenterRotate(x,u.anchor)}this.Mi=u.targetRotation,this.gi=b}if(this.Li(!0),n=!0,!u.complete)break}}if(e){this.li[i]=null,this.setHint(Eu,-1),this.bi=null,this.xi=NaN,this.Mi=NaN;var M=r[0].callback;M&&Bu(M,!0)}}this.li=this.li.filter(Boolean),n&&void 0===this.vi&&(this.vi=requestAnimationFrame(this.Ii.bind(this)))}},n.prototype.calculateCenterRotate=function(t,n){var i,r=this.getCenterInternal();return void 0!==r&&(Hi(i=[r[0]-n[0],r[1]-n[1]],t-this.getRotation()),Vi(i,n)),i},n.prototype.calculateCenterZoom=function(t,n){var i,r=this.getCenterInternal(),e=this.getResolution();void 0!==r&&void 0!==e&&(i=[n[0]-t*(n[0]-r[0])/e,n[1]-t*(n[1]-r[1])/e]);return i},n.prototype.Ni=function(t){var n=this.yi;if(t){var i=n[0],r=n[1];return[Math.abs(i*Math.cos(t))+Math.abs(r*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(r*Math.cos(t))]}return n},n.prototype.setViewportSize=function(t){this.yi=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},n.prototype.getCenter=function(){var t=this.getCenterInternal();return t?kr(t,this.getProjection()):t},n.prototype.getCenterInternal=function(){return this.get(Au.CENTER)},n.prototype.getConstraints=function(){return this.Ci},n.prototype.getConstrainResolution=function(){return this.get("constrainResolution")},n.prototype.getHints=function(t){return void 0!==t?(t[0]=this.ci[0],t[1]=this.ci[1],t):this.ci.slice()},n.prototype.calculateExtent=function(t){return Nr(this.calculateExtentInternal(t),this.getProjection())},n.prototype.calculateExtentInternal=function(t){var n=t||this.zi(),i=this.getCenterInternal();St(i,1);var r=this.getResolution();St(void 0!==r,2);var e=this.getRotation();return St(void 0!==e,3),Bn(i,r,e,n)},n.prototype.getMaxResolution=function(){return this.Oi},n.prototype.getMinResolution=function(){return this.ji},n.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.ji)},n.prototype.setMaxZoom=function(t){this.Si(this.ki({maxZoom:t}))},n.prototype.getMinZoom=function(){return this.getZoomForResolution(this.Oi)},n.prototype.setMinZoom=function(t){this.Si(this.ki({minZoom:t}))},n.prototype.setConstrainResolution=function(t){this.Si(this.ki({constrainResolution:t}))},n.prototype.getProjection=function(){return this.di},n.prototype.getResolution=function(){return this.get(Au.RESOLUTION)},n.prototype.getResolutions=function(){return this.Ti},n.prototype.getResolutionForExtent=function(t,n){return this.getResolutionForExtentInternal(Lr(t,this.getProjection()),n)},n.prototype.getResolutionForExtentInternal=function(t,n){var i=n||this.zi(),r=$n(t)/i[0],e=Vn(t)/i[1];return Math.max(r,e)},n.prototype.getResolutionForValueFunction=function(t){var n=t||2,i=this.getConstrainedResolution(this.Oi),r=this.ji,e=Math.log(i/r)/Math.log(n);return function(t){return i/Math.pow(n,t*e)}},n.prototype.getRotation=function(){return this.get(Au.ROTATION)},n.prototype.getValueForResolutionFunction=function(t){var n=Math.log(t||2),i=this.getConstrainedResolution(this.Oi),r=this.ji,e=Math.log(i/r)/n;return function(t){return Math.log(i/t)/n/e}},n.prototype.zi=function(t){var n=this.Ni(t),i=this.Ai;return i&&(n=[n[0]-i[1]-i[3],n[1]-i[0]-i[2]]),n},n.prototype.getState=function(){var t=this.getProjection(),n=this.getResolution(),i=this.getRotation(),r=this.getCenterInternal(),e=this.Ai;if(e){var o=this.zi();r=Zu(r,this.Ni(),[o[0]/2+e[3],o[1]/2+e[0]],n,i)}return{center:r.slice(0),projection:void 0!==t?t:null,resolution:n,nextCenter:this.bi,nextResolution:this.xi,nextRotation:this.Mi,rotation:i,zoom:this.getZoom()}},n.prototype.getZoom=function(){var t,n=this.getResolution();return void 0!==n&&(t=this.getZoomForResolution(n)),t},n.prototype.getZoomForResolution=function(t){var n,i,r=this.Pi||0;if(this.Ti){var e=m(this.Ti,t,1);r=e,n=this.Ti[e],i=e==this.Ti.length-1?2:n/this.Ti[e+1]}else n=this.Oi,i=this.Ei;return r+Math.log(n/t)/Math.log(i)},n.prototype.getResolutionForZoom=function(t){if(this.Ti){if(this.Ti.length<=1)return 0;var n=oi(Math.floor(t),0,this.Ti.length-2),i=this.Ti[n]/this.Ti[n+1];return this.Ti[n]/Math.pow(i,oi(t-n,0,1))}return this.Oi/Math.pow(this.Ei,t-this.Pi)},n.prototype.fit=function(t,n){var i;if(St(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))St(!Hn(t),25),i=Ze(r=Lr(t,this.getProjection()));else if("Circle"===t.getType()){var r;(i=Ze(r=Lr(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),qn(r))}else{var e=Cr();i=e?t.clone().transform(e,this.getProjection()):t}this.fitInternal(i,n)},n.prototype.rotatedExtentForGeometry=function(t){for(var n=this.getRotation(),i=Math.cos(n),r=Math.sin(-n),e=t.getFlatCoordinates(),o=t.getStride(),s=1/0,u=1/0,a=-1/0,h=-1/0,f=0,c=e.length;f0&&t[1]>0}function Ju(t,n,i){return void 0===i&&(i=[0,0]),i[0]=t[0]*n+.5|0,i[1]=t[1]*n+.5|0,i}function Qu(t,n){return Array.isArray(t)?t:(void 0===n?n=[t,t]:(n[0]=t,n[1]=t),n)}var ta=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function na(t){t instanceof ls?t.setMapInternal(null):t instanceof nu&&t.getLayers().forEach(na)}function ia(t,n){if(t instanceof ls)t.setMapInternal(n);else if(t instanceof nu)for(var i=t.getLayers().getArray(),r=0,e=i.length;r=0;u--){var a=s[u];if(a.getMap()===this&&a.getActive()&&this.getTargetElement())if(!a.handleEvent(t)||t.propagationStopped)break}}},n.prototype.handlePostRender=function(){var t=this.Zi,n=this.hr;if(!n.isEmpty()){var i=this.Di,r=i;if(t){var e=t.viewHints;if(e[Eu]||e[Tu]){var o=Date.now()-t.time>8;i=o?0:8,r=o?0:2}}n.getTilesLoading()0;if(this.mn!=i&&(this.element.style.display=i?"":"none",this.mn=i),!x(n,this.Ir)){Ao(this._r);for(var r=0,e=n.length;r0&&n%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.Fr,easing:mt}):t.setRotation(0))}},n.prototype.render=function(t){var n=t.frameState;if(n){var i=n.viewState.rotation;if(i!=this.Dr){var r="rotate("+i+"rad)";if(this.Gr){var e=this.element.classList.contains(ws);e||0!==i?e&&0!==i&&this.element.classList.remove(ws):this.element.classList.add(ws)}this.Pr.style.transform=r}this.Dr=i}},n}(oa),fa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ca=function(t){function n(n){var i=this,r=n||{};i=t.call(this,{element:document.createElement("div"),target:r.target})||this;var e=void 0!==r.className?r.className:"ol-zoom",o=void 0!==r.delta?r.delta:1,s=void 0!==r.zoomInClassName?r.zoomInClassName:e+"-in",u=void 0!==r.zoomOutClassName?r.zoomOutClassName:e+"-out",a=void 0!==r.zoomInLabel?r.zoomInLabel:"+",h=void 0!==r.zoomOutLabel?r.zoomOutLabel:"–",f=void 0!==r.zoomInTipLabel?r.zoomInTipLabel:"Zoom in",c=void 0!==r.zoomOutTipLabel?r.zoomOutTipLabel:"Zoom out",l=document.createElement("button");l.className=s,l.setAttribute("type","button"),l.title=f,l.appendChild("string"==typeof a?document.createTextNode(a):a),l.addEventListener(F,i.kr.bind(i,o),!1);var v=document.createElement("button");v.className=u,v.setAttribute("type","button"),v.title=c,v.appendChild("string"==typeof h?document.createTextNode(h):h),v.addEventListener(F,i.kr.bind(i,-o),!1);var d=e+" "+"ol-unselectable "+Ms,p=i.element;return p.className=d,p.appendChild(l),p.appendChild(v),i.Fr=void 0!==r.duration?r.duration:250,i}return fa(n,t),n.prototype.kr=function(t,n){n.preventDefault(),this.Ur(t)},n.prototype.Ur=function(t){var n=this.getMap().getView();if(n){var i=n.getZoom();if(void 0!==i){var r=n.getConstrainedZoom(i+t);this.Fr>0?(n.getAnimating()&&n.cancelAnimations(),n.animate({zoom:r,duration:this.Fr,easing:mt})):n.setZoom(r)}}},n}(oa);function la(t){var n=t||{},i=new ft;return(void 0===n.zoom||n.zoom)&&i.push(new ca(n.zoomOptions)),(void 0===n.rotate||n.rotate)&&i.push(new ha(n.rotateOptions)),(void 0===n.attribution||n.attribution)&&i.push(new ua(n.attributionOptions)),i}var va="active",da=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function pa(t,n,i){var r=t.getCenterInternal();if(r){var e=[r[0]+n[0],r[1]+n[1]];t.animateInternal({duration:void 0!==i?i:250,easing:gt,center:t.getConstrainedCenter(e)})}}function ya(t,n,i,r){var e=t.getZoom();if(void 0!==e){var o=t.getConstrainedZoom(e+n),s=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:s,anchor:i,duration:void 0!==r?r:250,easing:mt})}}var ma=function(t){function n(n){var i=t.call(this)||this;return i.on,i.once,i.un,n&&n.handleEvent&&(i.handleEvent=n.handleEvent),i.vn=null,i.setActive(!0),i}return da(n,t),n.prototype.getActive=function(){return this.get(va)},n.prototype.getMap=function(){return this.vn},n.prototype.handleEvent=function(t){return!0},n.prototype.setActive=function(t){this.set(va,t)},n.prototype.setMap=function(t){this.vn=t},n}(et),wa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ga=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Br=r.delta?r.delta:1,i.Fr=void 0!==r.duration?r.duration:250,i}return wa(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==su.DBLCLICK){var i=t.originalEvent,r=t.map,e=t.coordinate,o=i.shiftKey?-this.Br:this.Br;ya(r.getView(),o,e,this.Fr),i.preventDefault(),n=!0}return!n},n}(ma),ba=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function xa(t){for(var n=t.length,i=0,r=0,e=0;e0}}else if(t.type==su.POINTERDOWN){var r=this.handleDownEvent(t);this.handlingDownUpSequence=r,n=this.stopDown(r)}else t.type==su.POINTERMOVE&&this.handleMoveEvent(t);return!n},n.prototype.handleMoveEvent=function(t){},n.prototype.handleUpEvent=function(t){return!1},n.prototype.stopDown=function(t){return t},n.prototype.Xr=function(t){t.activePointers&&(this.targetPointers=t.activePointers)},n}(ma);function _a(t){var n=arguments;return function(t){for(var i=!0,r=0,e=n.length;r0&&this.Zr(t)){var n=t.map.getView();return this.lastCentroid=null,n.getAnimating()&&n.cancelAnimations(),this.Vr&&this.Vr.begin(),this.$r=this.targetPointers.length>1,!0}return!1},n}(Ma),Ga=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Da=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this,{stopDown:O})||this).Zr=r.condition?r.condition:Oa,i.Kr=void 0,i.Fr=void 0!==r.duration?r.duration:250,i}return Ga(n,t),n.prototype.handleDragEvent=function(t){if(La(t)){var n=t.map,i=n.getView();if(i.getConstraints().rotation!==Fu){var r=n.getSize(),e=t.pixel,o=Math.atan2(r[1]/2-e[1],e[0]-r[0]/2);if(void 0!==this.Kr){var s=o-this.Kr;i.adjustRotationInternal(-s)}this.Kr=o}}},n.prototype.handleUpEvent=function(t){return!La(t)||(t.map.getView().endInteraction(this.Fr),!1)},n.prototype.handleDownEvent=function(t){return!!La(t)&&(!(!Aa(t)||!this.Zr(t))&&(t.map.getView().beginInteraction(),this.Kr=void 0,!0))},n}(Ma),qa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ua=function(t){function n(n){var i=t.call(this)||this;return i.Hr=null,i.pn=document.createElement("div"),i.pn.style.position="absolute",i.pn.style.pointerEvents="auto",i.pn.className="ol-box "+n,i.vn=null,i.Jr=null,i.Qr=null,i}return qa(n,t),n.prototype.disposeInternal=function(){this.setMap(null)},n.prototype.te=function(){var t=this.Jr,n=this.Qr,i="px",r=this.pn.style;r.left=Math.min(t[0],n[0])+i,r.top=Math.min(t[1],n[1])+i,r.width=Math.abs(n[0]-t[0])+i,r.height=Math.abs(n[1]-t[1])+i},n.prototype.setMap=function(t){if(this.vn){this.vn.getOverlayContainer().removeChild(this.pn);var n=this.pn.style;n.left="inherit",n.top="inherit",n.width="inherit",n.height="inherit"}this.vn=t,this.vn&&this.vn.getOverlayContainer().appendChild(this.pn)},n.prototype.setPixels=function(t,n){this.Jr=t,this.Qr=n,this.createOrUpdateGeometry(),this.te()},n.prototype.createOrUpdateGeometry=function(){var t=this.Jr,n=this.Qr,i=[t,[t[0],n[1]],n,[n[0],t[1]]].map(this.vn.getCoordinateFromPixelInternal,this.vn);i[4]=i[0].slice(),this.Hr?this.Hr.setCoordinates([i]):this.Hr=new We([i])},n.prototype.getGeometry=function(){return this.Hr},n}(v),Ba=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Xa="boxstart",Va="boxdrag",Wa="boxend",Ya="boxcancel",Za=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.coordinate=i,e.mapBrowserEvent=r,e}return Ba(n,t),n}(c),$a=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r=n||{};return i.ne=new Ua(r.className||"ol-dragbox"),i.ie=void 0!==r.minArea?r.minArea:64,r.onBoxEnd&&(i.onBoxEnd=r.onBoxEnd),i.Jr=null,i.Zr=r.condition?r.condition:Aa,i.re=r.boxEndCondition?r.boxEndCondition:i.defaultBoxEndCondition,i}return Ba(n,t),n.prototype.defaultBoxEndCondition=function(t,n,i){var r=i[0]-n[0],e=i[1]-n[1];return r*r+e*e>=this.ie},n.prototype.getGeometry=function(){return this.ne.getGeometry()},n.prototype.handleDragEvent=function(t){this.ne.setPixels(this.Jr,t.pixel),this.dispatchEvent(new Za(Va,t.coordinate,t))},n.prototype.handleUpEvent=function(t){this.ne.setMap(null);var n=this.re(t,this.Jr,t.pixel);return n&&this.onBoxEnd(t),this.dispatchEvent(new Za(n?Wa:Ya,t.coordinate,t)),!1},n.prototype.handleDownEvent=function(t){return!!this.Zr(t)&&(this.Jr=t.pixel,this.ne.setMap(t.map),this.ne.setPixels(this.Jr,this.Jr),this.dispatchEvent(new Za(Xa,t.coordinate,t)),!0)},n.prototype.onBoxEnd=function(t){},n}(Ma),Ka=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ha=function(t){function n(n){var i=this,r=n||{},e=r.condition?r.condition:Ia;return(i=t.call(this,{condition:e,className:r.className||"ol-dragzoom",minArea:r.minArea})||this).Fr=void 0!==r.duration?r.duration:200,i.ee=void 0!==r.out&&r.out,i}return Ka(n,t),n.prototype.onBoxEnd=function(t){var n=this.getMap().getView(),i=this.getGeometry();if(this.ee){var r=n.rotatedExtentForGeometry(i),e=n.getResolutionForExtentInternal(r),o=n.getResolution()/e;(i=i.clone()).scale(o*o)}n.fitInternal(i,{duration:this.Fr,easing:mt})},n}($a),Ja=37,Qa=38,th=39,nh=40,ih=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rh=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.oe=function(t){return ka(t)&&Na(t)},i.Zr=void 0!==r.condition?r.condition:i.oe,i.Fr=void 0!==r.duration?r.duration:100,i.se=void 0!==r.pixelDelta?r.pixelDelta:128,i}return ih(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==B){var i=t.originalEvent,r=i.keyCode;if(this.Zr(t)&&(r==nh||r==Ja||r==th||r==Qa)){var e=t.map.getView(),o=e.getResolution()*this.se,s=0,u=0;r==nh?u=-o:r==Ja?s=-o:r==th?s=o:u=o;var a=[s,u];Hi(a,e.getRotation()),pa(e,a,this.Fr),i.preventDefault(),n=!0}}return!n},n}(ma),eh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),oh=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Zr=r.condition?r.condition:Na,i.Br=r.delta?r.delta:1,i.Fr=void 0!==r.duration?r.duration:100,i}return eh(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==B||t.type==X){var i=t.originalEvent,r=i.charCode;if(this.Zr(t)&&(r=="+".charCodeAt(0)||r=="-".charCodeAt(0))){var e=t.map,o=r=="+".charCodeAt(0)?this.Br:-this.Br;ya(e.getView(),o,void 0,this.Fr),i.preventDefault(),n=!0}}return!n},n}(ma),sh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),uh="trackpad",ah="wheel",hh=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,r)||this).ue=0,i.ae=0,i.wt=void 0!==r.maxDelta?r.maxDelta:1,i.Fr=void 0!==r.duration?r.duration:250,i.he=void 0!==r.timeout?r.timeout:80,i.fe=void 0===r.useAnchor||r.useAnchor,i.ce=void 0!==r.constrainResolution&&r.constrainResolution;var e=r.condition?r.condition:Ta;return i.Zr=r.onFocusOnly?_a(Ea,e):e,i.le=null,i.ve=void 0,i.de,i.pe=void 0,i.ye=400,i.me,i.we=300,i}return sh(n,t),n.prototype.ge=function(){this.me=void 0;var t=this.getMap();t&&t.getView().endInteraction(void 0,this.ae?this.ae>0?1:-1:0,this.le)},n.prototype.handleEvent=function(t){if(!this.Zr(t))return!0;if(t.type!==Z)return!0;var n,i=t.map,r=t.originalEvent;if(r.preventDefault(),this.fe&&(this.le=t.coordinate),t.type==Z&&(n=r.deltaY,Gt&&r.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(n/=Xt),r.deltaMode===WheelEvent.DOM_DELTA_LINE&&(n*=40)),0===n)return!1;this.ae=n;var e=Date.now();void 0===this.ve&&(this.ve=e),(!this.pe||e-this.ve>this.ye)&&(this.pe=Math.abs(n)<4?uh:ah);var o=i.getView();if(this.pe===uh&&!o.getConstrainResolution()&&!this.ce)return this.me?clearTimeout(this.me):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.me=setTimeout(this.ge.bind(this),this.he),o.adjustZoom(-n/this.we,this.le),this.ve=e,!1;this.ue+=n;var s=Math.max(this.he-(e-this.ve),0);return clearTimeout(this.de),this.de=setTimeout(this.be.bind(this,i),s),!1},n.prototype.be=function(t){var n=t.getView();n.getAnimating()&&n.cancelAnimations();var i=-oi(this.ue,-this.wt*this.we,this.wt*this.we)/this.we;(n.getConstrainResolution()||this.ce)&&(i=i?i>0?1:-1:0),ya(n,i,this.le,this.Fr),this.pe=void 0,this.ue=0,this.le=null,this.ve=void 0,this.de=void 0},n.prototype.setMouseAnchor=function(t){this.fe=t,t||(this.le=null)},n}(ma),fh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ch=function(t){function n(n){var i=this,r=n||{},e=r;return e.stopDown||(e.stopDown=O),(i=t.call(this,e)||this).xe=null,i.Kr=void 0,i.Me=!1,i._e=0,i.Se=void 0!==r.threshold?r.threshold:.3,i.Fr=void 0!==r.duration?r.duration:250,i}return fh(n,t),n.prototype.handleDragEvent=function(t){var n=0,i=this.targetPointers[0],r=this.targetPointers[1],e=Math.atan2(r.clientY-i.clientY,r.clientX-i.clientX);if(void 0!==this.Kr){var o=e-this.Kr;this._e+=o,!this.Me&&Math.abs(this._e)>this.Se&&(this.Me=!0),n=o}this.Kr=e;var s=t.map,u=s.getView();if(u.getConstraints().rotation!==Fu){var a=s.getViewport().getBoundingClientRect(),h=xa(this.targetPointers);h[0]-=a.left,h[1]-=a.top,this.xe=s.getCoordinateFromPixelInternal(h),this.Me&&(s.render(),u.adjustRotationInternal(n,this.xe))}},n.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.Fr),!1)},n.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var n=t.map;return this.xe=null,this.Kr=void 0,this.Me=!1,this._e=0,this.handlingDownUpSequence||n.getView().beginInteraction(),!0}return!1},n}(Ma),lh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),vh=function(t){function n(n){var i=this,r=n||{},e=r;return e.stopDown||(e.stopDown=O),(i=t.call(this,e)||this).xe=null,i.Fr=void 0!==r.duration?r.duration:400,i.Oe=void 0,i.je=1,i}return lh(n,t),n.prototype.handleDragEvent=function(t){var n=1,i=this.targetPointers[0],r=this.targetPointers[1],e=i.clientX-r.clientX,o=i.clientY-r.clientY,s=Math.sqrt(e*e+o*o);void 0!==this.Oe&&(n=this.Oe/s),this.Oe=s;var u=t.map,a=u.getView();1!=n&&(this.je=n);var h=u.getViewport().getBoundingClientRect(),f=xa(this.targetPointers);f[0]-=h.left,f[1]-=h.top,this.xe=u.getCoordinateFromPixelInternal(f),u.render(),a.adjustResolutionInternal(n,this.xe)},n.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var n=t.map.getView(),i=this.je>1?1:-1;return n.endInteraction(this.Fr,i),!1}return!0},n.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var n=t.map;return this.xe=null,this.Oe=void 0,this.je=1,this.handlingDownUpSequence||n.getView().beginInteraction(),!0}return!1},n}(Ma);function dh(t){var n=t||{},i=new ft,r=new Io(-.005,.05,100);return(void 0===n.altShiftDragRotate||n.altShiftDragRotate)&&i.push(new Da),(void 0===n.doubleClickZoom||n.doubleClickZoom)&&i.push(new ga({delta:n.zoomDelta,duration:n.zoomDuration})),(void 0===n.dragPan||n.dragPan)&&i.push(new Fa({onFocusOnly:n.onFocusOnly,kinetic:r})),(void 0===n.pinchRotate||n.pinchRotate)&&i.push(new ch),(void 0===n.pinchZoom||n.pinchZoom)&&i.push(new vh({duration:n.zoomDuration})),(void 0===n.keyboard||n.keyboard)&&(i.push(new rh),i.push(new oh({delta:n.zoomDelta,duration:n.zoomDuration}))),(void 0===n.mouseWheelZoom||n.mouseWheelZoom)&&i.push(new hh({onFocusOnly:n.onFocusOnly,duration:n.zoomDuration})),(void 0===n.shiftDragZoom||n.shiftDragZoom)&&i.push(new Ha({duration:n.zoomDuration})),i}var ph=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),yh=function(t){function n(n){return(n=A({},n)).controls||(n.controls=la()),n.interactions||(n.interactions=dh({onFocusOnly:!0})),t.call(this,n)||this}return ph(n,t),n.prototype.createRenderer=function(){return new Hs(this)},n}(ra),mh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),wh="element",gh="map",bh="offset",xh="position",Mh="positioning",_h=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un,i.options=n,i.id=n.id,i.insertFirst=void 0===n.insertFirst||n.insertFirst,i.stopEvent=void 0===n.stopEvent||n.stopEvent,i.element=document.createElement("div"),i.element.className=void 0!==n.className?n.className:"ol-overlay-container ol-selectable",i.element.style.position="absolute",i.element.style.pointerEvents="auto";var r=n.autoPan;return r&&"object"!=typeof r&&(r={animation:n.autoPanAnimation,margin:n.autoPanMargin}),i.autoPan=r||!1,i.rendered={jt:"",visible:!0},i.mapPostrenderListenerKey=null,i.addChangeListener(wh,i.handleElementChanged),i.addChangeListener(gh,i.handleMapChanged),i.addChangeListener(bh,i.handleOffsetChanged),i.addChangeListener(xh,i.handlePositionChanged),i.addChangeListener(Mh,i.handlePositioningChanged),void 0!==n.element&&i.setElement(n.element),i.setOffset(void 0!==n.offset?n.offset:[0,0]),i.setPositioning(n.positioning||"top-left"),void 0!==n.position&&i.setPosition(n.position),i}return mh(n,t),n.prototype.getElement=function(){return this.get(wh)},n.prototype.getId=function(){return this.id},n.prototype.getMap=function(){return this.get(gh)||null},n.prototype.getOffset=function(){return this.get(bh)},n.prototype.getPosition=function(){return this.get(xh)},n.prototype.getPositioning=function(){return this.get(Mh)},n.prototype.handleElementChanged=function(){Ao(this.element);var t=this.getElement();t&&this.element.appendChild(t)},n.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(To(this.element),H(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=$(t,vu,this.render,this),this.updatePixelPosition();var n=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?n.insertBefore(this.element,n.childNodes[0]||null):n.appendChild(this.element),this.performAutoPan()}},n.prototype.render=function(){this.updatePixelPosition()},n.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},n.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},n.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},n.prototype.setElement=function(t){this.set(wh,t)},n.prototype.setMap=function(t){this.set(gh,t)},n.prototype.setOffset=function(t){this.set(bh,t)},n.prototype.setPosition=function(t){this.set(xh,t)},n.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},n.prototype.panIntoView=function(t){var n=this.getMap();if(n&&n.getTargetElement()&&this.get(xh)){var i=this.getRect(n.getTargetElement(),n.getSize()),r=this.getElement(),e=this.getRect(r,[Oo(r),jo(r)]),o=t||{},s=void 0===o.margin?20:o.margin;if(!xn(i,e)){var u=e[0]-i[0],a=i[2]-e[2],h=e[1]-i[1],f=i[3]-e[3],c=[0,0];if(u<0?c[0]=u-s:a<0&&(c[0]=Math.abs(a)+s),h<0?c[1]=h-s:f<0&&(c[1]=Math.abs(f)+s),0!==c[0]||0!==c[1]){var l=n.getView().getCenterInternal(),v=n.getPixelFromCoordinateInternal(l);if(!v)return;var d=[v[0]+c[0],v[1]+c[1]],p=o.animation||{};n.getView().animateInternal({center:n.getCoordinateFromPixelInternal(d),duration:p.duration,easing:p.easing})}}}},n.prototype.getRect=function(t,n){var i=t.getBoundingClientRect(),r=i.left+window.pageXOffset,e=i.top+window.pageYOffset;return[r,e,r+n[0],e+n[1]]},n.prototype.setPositioning=function(t){this.set(Mh,t)},n.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},n.prototype.updatePixelPosition=function(){var t=this.getMap(),n=this.getPosition();if(t&&t.isRendered()&&n){var i=t.getPixelFromCoordinate(n),r=t.getSize();this.updateRenderedPosition(i,r)}else this.setVisible(!1)},n.prototype.updateRenderedPosition=function(t,n){var i=this.element.style,r=this.getOffset(),e=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+r[0])+"px",s=Math.round(t[1]+r[1])+"px",u="0%",a="0%";"bottom-right"==e||"center-right"==e||"top-right"==e?u="-100%":"bottom-center"!=e&&"center-center"!=e&&"top-center"!=e||(u="-50%"),"bottom-left"==e||"bottom-center"==e||"bottom-right"==e?a="-100%":"center-left"!=e&&"center-center"!=e&&"center-right"!=e||(a="-50%");var h="translate(".concat(u,", ").concat(a,") translate(").concat(o,", ").concat(s,")");this.rendered.jt!=h&&(this.rendered.jt=h,i.transform=h,i.msTransform=h)},n.prototype.getOptions=function(){return this.options},n}(et),Sh=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.Ee=0,this.Te={},this.Ae=null,this.Pe=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.expireCache=function(t){for(;this.canExpireCache();)this.pop()},t.prototype.clear=function(){this.Ee=0,this.Te={},this.Ae=null,this.Pe=null},t.prototype.containsKey=function(t){return this.Te.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var n=this.Ae;n;)t(n.Ce,n.ke,this),n=n.newer},t.prototype.get=function(t,n){var i=this.Te[t];return St(void 0!==i,15),i===this.Pe||(i===this.Ae?(this.Ae=this.Ae.newer,this.Ae.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.Pe,this.Pe.newer=i,this.Pe=i),i.Ce},t.prototype.remove=function(t){var n=this.Te[t];return St(void 0!==n,15),n===this.Pe?(this.Pe=n.older,this.Pe&&(this.Pe.newer=null)):n===this.Ae?(this.Ae=n.newer,this.Ae&&(this.Ae.older=null)):(n.newer.older=n.older,n.older.newer=n.newer),delete this.Te[t],--this.Ee,n.Ce},t.prototype.getCount=function(){return this.Ee},t.prototype.getKeys=function(){var t,n=new Array(this.Ee),i=0;for(t=this.Pe;t;t=t.older)n[i++]=t.ke;return n},t.prototype.getValues=function(){var t,n=new Array(this.Ee),i=0;for(t=this.Pe;t;t=t.older)n[i++]=t.Ce;return n},t.prototype.peekLast=function(){return this.Ae.Ce},t.prototype.peekLastKey=function(){return this.Ae.ke},t.prototype.peekFirstKey=function(){return this.Pe.ke},t.prototype.peek=function(t){if(this.containsKey(t))return this.Te[t].Ce},t.prototype.pop=function(){var t=this.Ae;return delete this.Te[t.ke],t.newer&&(t.newer.older=null),this.Ae=t.newer,this.Ae||(this.Pe=null),--this.Ee,t.Ce},t.prototype.replace=function(t,n){this.get(t),this.Te[t].Ce=n},t.prototype.set=function(t,n){St(!(t in this.Te),16);var i={ke:t,newer:null,older:this.Pe,Ce:n};this.Pe?this.Pe.newer=i:this.Ae=i,this.Pe=i,this.Te[t]=i,++this.Ee},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function Oh(t,n,i,r){return void 0!==r?(r[0]=t,r[1]=n,r[2]=i,r):[t,n,i]}function jh(t,n,i){return t+"/"+n+"/"+i}function Eh(t){return jh(t[0],t[1],t[2])}function Th(t){var n=t.substring(t.lastIndexOf("/")+1,t.length).split(",").map(Number);return jh(n[0],n[1],n[2])}function Ah(t){return t.split("/").map(Number)}function Ph(t){return(t[1]<i||i>n.getMaxZoom())return!1;var o=n.getFullTileRange(i);return!o||o.containsXY(r,e)}var kh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ih=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return kh(n,t),n.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},n.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=Ah(this.peekFirstKey())[0];this.forEach(function(n){n.tileCoord[0]!==t&&(this.remove(Eh(n.tileCoord)),n.release())}.bind(this))}},n}(Sh),Nh=function(){function t(t,n,i,r){this.minX=t,this.maxX=n,this.minY=i,this.maxY=r}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,n){return this.minX<=t&&t<=this.maxX&&this.minY<=n&&n<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function Lh(t,n,i,r,e){return void 0!==e?(e.minX=t,e.maxX=n,e.minY=i,e.maxY=r,e):new Nh(t,n,i,r)}var zh=Nh,Rh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Fh=[],Gh=function(t){function n(n,i,r,e){var o=t.call(this,n,i,{transition:0})||this;return o.Ne={},o.executorGroups={},o.declutterExecutorGroups={},o.loadingSourceTiles=0,o.hitDetectionImageData={},o.Le={},o.sourceTiles=[],o.errorTileKeys={},o.wantedResolution,o.getSourceTiles=e.bind(void 0,o),o.wrappedTileCoord=r,o}return Rh(n,t),n.prototype.getContext=function(t){var n=o(t);return n in this.Ne||(this.Ne[n]=_o(1,1,Fh)),this.Ne[n]},n.prototype.hasContext=function(t){return o(t)in this.Ne},n.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},n.prototype.getReplayState=function(t){var n=o(t);return n in this.Le||(this.Le[n]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedTileZ:-1}),this.Le[n]},n.prototype.load=function(){this.getSourceTiles()},n.prototype.release=function(){for(var n in this.Ne){var i=this.Ne[n];So(i),Fh.push(i.canvas),delete this.Ne[n]}t.prototype.release.call(this)},n}(xt),Dh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qh=function(t){function n(n,i,r,e,o,s){var u=t.call(this,n,i,s)||this;return u.extent=null,u.ze=e,u.Re=null,u.U,u.projection=null,u.resolution,u.Xt=o,u.Fe=r,u.key=r,u}return Dh(n,t),n.prototype.getFormat=function(){return this.ze},n.prototype.getFeatures=function(){return this.Re},n.prototype.load=function(){this.state==ct&&(this.setState(lt),this.Xt(this,this.Fe),this.U&&this.U(this.extent,this.resolution,this.projection))},n.prototype.onLoad=function(t,n){this.setFeatures(t)},n.prototype.onError=function(){this.setState(dt)},n.prototype.setFeatures=function(t){this.Re=t,this.setState(vt)},n.prototype.setLoader=function(t){this.U=t},n}(xt);function Uh(t){return Array.isArray(t)?qo(t):t}var Bh=!1;function Xh(t,n,i,r,e,o,s){var u=new XMLHttpRequest;u.open("GET","function"==typeof t?t(i,r,e):t,!0),"arraybuffer"==n.getType()&&(u.responseType="arraybuffer"),u.withCredentials=Bh,u.onload=function(t){if(!u.status||u.status>=200&&u.status<300){var r=n.getType(),a=void 0;"json"==r||"text"==r?a=u.responseText:"xml"==r?(a=u.responseXML)||(a=(new DOMParser).parseFromString(u.responseText,"application/xml")):"arraybuffer"==r&&(a=u.response),a?o(n.readFeatures(a,{extent:i,featureProjection:e}),n.readProjection(a)):s()}else s()},u.onerror=s,u.send()}function Vh(t,n){return function(i,r,e,o,s){var u=this;Xh(t,n,i,r,e,(function(t,n){u.addFeatures(t),void 0!==o&&o(t)}),s||j)}}function Wh(t,n){return[[-1/0,-1/0,1/0,1/0]]}var Yh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Zh(t,n,i,r){var e=document.createElement("script"),s="olc_"+o(n);function u(){delete window[s],e.parentNode.removeChild(e)}e.async=!0,e.src=t+(-1==t.indexOf("?")?"?":"&")+(r||"callback")+"="+s;var a=setTimeout((function(){u(),i&&i()}),1e4);window[s]=function(t){clearTimeout(a),u(),n(t)},document.head.appendChild(e)}var $h,Kh=function(t){function n(n){var i=this,r="Unexpected response status: "+n.status;return(i=t.call(this,r)||this).name="ResponseError",i.response=n,i}return Yh(n,t),n}(Error),Hh=function(t){function n(n){var i=t.call(this,"Failed to issue request")||this;return i.name="ClientError",i.client=n,i}return Yh(n,t),n}(Error);function Jh(t){return new Promise((function(n,i){var r=new XMLHttpRequest;r.addEventListener("load",(function(t){var r=t.target;if(!r.status||r.status>=200&&r.status<300){var e=void 0;try{e=JSON.parse(r.responseText)}catch(t){var o="Error parsing response text as JSON: "+t.message;return void i(new Error(o))}n(e)}else i(new Kh(r))})),r.addEventListener("error",(function(t){i(new Hh(t.target))})),r.open("GET",t),r.setRequestHeader("Accept","application/json"),r.send()}))}function Qh(t,n){return n.indexOf("://")>=0?n:new URL(n,t).href}var tf=function(){function t(){}return t.prototype.drawCustom=function(t,n,i,r){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,n){},t.prototype.drawFeature=function(t,n){},t.prototype.drawGeometryCollection=function(t,n){},t.prototype.drawLineString=function(t,n){},t.prototype.drawMultiLineString=function(t,n){},t.prototype.drawMultiPoint=function(t,n){},t.prototype.drawMultiPolygon=function(t,n){},t.prototype.drawPoint=function(t,n){},t.prototype.drawPolygon=function(t,n){},t.prototype.drawText=function(t,n){},t.prototype.setFillStrokeStyle=function(t,n){},t.prototype.setImageStyle=function(t,n){},t.prototype.setTextStyle=function(t,n){},t}(),nf=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rf=function(t){function n(n,i,r,e,o,s,u){var a=t.call(this)||this;return a.Ne=n,a.kt=i,a.st=r,a.jt=e,a.Ge=o,a.De=s,a.qe=u,a.Ue=null,a.Be=null,a.Xe=null,a.Ve=null,a.We=null,a.Lt=null,a.Ye=0,a.Ze=0,a.$e=0,a.Ke=0,a.He=0,a.Je=0,a.Qe=!1,a.no=0,a.io=[0,0],a.ro=0,a.eo="",a.oo=0,a.so=0,a.uo=!1,a.ao=0,a.ho=[0,0],a.fo=null,a.co=null,a.lo=null,a.vo=[],a.do=[1,0,0,1,0,0],a}return nf(n,t),n.prototype.po=function(t,n,i,r){if(this.Lt){var e=Dr(t,n,i,r,this.jt,this.vo),o=this.Ne,s=this.do,u=o.globalAlpha;1!=this.Ke&&(o.globalAlpha=u*this.Ke);var a=this.no;this.Qe&&(a+=this.Ge);for(var h=0,f=e.length;h2||Math.abs(t[4*n+3]-191.25)>2}function mf(t,n,i,r){var e=Er(i,n,t),o=mr(n,r,i),s=n.getMetersPerUnit();void 0!==s&&(o*=s);var u=t.getMetersPerUnit();void 0!==u&&(o/=u);var a=t.getExtent();if(!a||bn(a,e)){var h=mr(t,o,e)/o;isFinite(h)&&h>0&&(o/=h)}return o}function wf(t,n,i,r){var e=qn(i),o=mf(t,n,e,r);return(!isFinite(o)||o<=0)&&Rn(i,(function(i){return o=mf(t,n,i,r),isFinite(o)&&o>0})),o}function gf(t,n,i,r,e,o,s,u,a,h,f,c){var l=_o(Math.round(i*t),Math.round(i*n),df);if(c||A(l,lf),0===a.length)return l.canvas;function v(t){return Math.round(t*i)/i}l.scale(i,i),l.globalCompositeOperation="lighter";var d=[1/0,1/0,-1/0,-1/0];a.forEach((function(t,n,i){Cn(d,t.extent)}));var p=$n(d),y=Vn(d),m=_o(Math.round(i*p/r),Math.round(i*y/r));c||A(m,lf);var w=i/r;a.forEach((function(t,n,i){var r=t.extent[0]-d[0],e=-(t.extent[3]-d[3]),o=$n(t.extent),s=Vn(t.extent);t.image.width>0&&t.image.height>0&&m.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,r*w,e*w,o*w,s*w)}));var g=Yn(s);return u.getTriangles().forEach((function(t,n,e){var s=t.source,u=t.target,a=s[0][0],h=s[0][1],f=s[1][0],p=s[1][1],y=s[2][0],w=s[2][1],b=v((u[0][0]-g[0])/o),x=v(-(u[0][1]-g[1])/o),M=v((u[1][0]-g[0])/o),_=v(-(u[1][1]-g[1])/o),S=v((u[2][0]-g[0])/o),O=v(-(u[2][1]-g[1])/o),j=a,E=h;a=0,h=0;var T=fi([[f-=j,p-=E,0,0,M-b],[y-=j,w-=E,0,0,S-b],[0,0,f,p,_-x],[0,0,y,w,O-x]]);if(T){if(l.save(),l.beginPath(),function(){if(void 0===cf){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",pf(t,4,5,4,0),pf(t,4,5,0,5);var n=t.getImageData(0,0,3,3).data;cf=yf(n,0)||yf(n,4)||yf(n,8)}return cf}()||!c){l.moveTo(M,_);for(var A=b-M,P=x-_,C=0;C<4;C++)l.lineTo(M+v((C+1)*A/4),_+v(C*P/3)),3!=C&&l.lineTo(M+v((C+1)*A/4),_+v((C+1)*P/3));l.lineTo(S,O)}else l.moveTo(M,_),l.lineTo(b,x),l.lineTo(S,O);l.clip(),l.transform(T[0],T[2],T[1],T[3],b,x),l.translate(d[0]-j,d[3]-E),l.scale(r/i,-r/i),l.drawImage(m.canvas,0,0),l.restore()}})),f&&(l.save(),l.globalCompositeOperation="source-over",l.strokeStyle="black",l.lineWidth=1,u.getTriangles().forEach((function(t,n,i){var r=t.target,e=(r[0][0]-g[0])/o,s=-(r[0][1]-g[1])/o,u=(r[1][0]-g[0])/o,a=-(r[1][1]-g[1])/o,h=(r[2][0]-g[0])/o,f=-(r[2][1]-g[1])/o;l.beginPath(),l.moveTo(u,a),l.lineTo(e,s),l.lineTo(h,f),l.closePath(),l.stroke()})),l.restore()),l.canvas}var bf=[0,0,0],xf=function(){function t(t){var n;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.Ti=t.resolutions,St(_(this.Ti,(function(t,n){return n-t}),!0),17),!t.origins)for(var i=0,r=this.Ti.length-1;i=this.minZoom;){if(n(u,2===this.Ei?Lh(e=Math.floor(e/2),e,o=Math.floor(o/2),o,i):this.getTileRangeForExtentAndZ(s,u,i)))return!0;--u}return!1},t.prototype.getExtent=function(){return this.st},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this._o?this._o:this.So[t]},t.prototype.getResolution=function(t){return this.Ti[t]},t.prototype.getResolutions=function(){return this.Ti},t.prototype.getTileCoordChildTileRange=function(t,n,i){if(t[0]this.maxZoom||n0?r:Math.max(s/u[0],o/u[1]),h=e+1,f=new Array(h),c=0;c0))){var i=Uf(n.canvas).getExtension("WEBGL_lose_context");i&&i.loseContext(),delete Cc[t]}}(this.Yo),delete this.Io,delete this.qt},n.prototype.prepareDraw=function(t,n){var i=this.getGL(),r=this.getCanvas(),e=t.size,o=t.pixelRatio;r.width=e[0]*o,r.height=e[1]*o,r.style.width=e[0]+"px",r.style.height=e[1]+"px",i.useProgram(this.Ko);for(var s=this.rs.length-1;s>=0;s--)this.rs[s].init(t);i.bindTexture(i.TEXTURE_2D,null),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),i.enable(i.BLEND),i.blendFunc(i.ONE,n?i.ZERO:i.ONE_MINUS_SRC_ALPHA),i.useProgram(this.Ko),this.applyFrameState(t),this.applyUniforms(t)},n.prototype.prepareDrawToRenderTarget=function(t,n,i){var r=this.getGL(),e=n.getSize();r.bindFramebuffer(r.FRAMEBUFFER,n.getFramebuffer()),r.viewport(0,0,e[0],e[1]),r.bindTexture(r.TEXTURE_2D,n.getTexture()),r.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),r.enable(r.BLEND),r.blendFunc(r.ONE,i?r.ZERO:r.ONE_MINUS_SRC_ALPHA),r.useProgram(this.Ko),this.applyFrameState(t),this.applyUniforms(t)},n.prototype.drawElements=function(t,n){var i=this.getGL();this.getExtension("OES_element_index_uint");var r=i.UNSIGNED_INT,e=n-t,o=4*t;i.drawElements(i.TRIANGLES,e,r,o)},n.prototype.finalizeDraw=function(t,n,i){for(var r=0,e=this.rs.length;rthis.W[0]||n>=this.W[1])return Fc[0]=0,Fc[1]=0,Fc[2]=0,Fc[3]=0,Fc;this.readAll();var i=Math.floor(t)+(this.W[1]-Math.floor(n)-1)*this.W[0];return Fc[0]=this.B[4*i],Fc[1]=this.B[4*i+1],Fc[2]=this.B[4*i+2],Fc[3]=this.B[4*i+3],Fc},t.prototype.getTexture=function(){return this.ss},t.prototype.getFramebuffer=function(){return this.hs},t.prototype.cs=function(){var t=this.W,n=this.us.getGL();this.ss=this.us.createTexture(t,null,this.ss),n.bindFramebuffer(n.FRAMEBUFFER,this.hs),n.viewport(0,0,t[0],t[1]),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,this.ss,0),this.B=new Uint8Array(t[0]*t[1]*4)},t}(),Dc=!0,qc=function(){function t(t,n,i,r,e,o){this.ls=t,this.vs=n;var s={},u=jr(this.vs,this.ls);this.ds=function(t){var n=t[0]+"/"+t[1];return s[n]||(s[n]=u(t)),s[n]},this.ps=r,this.ys=e*e,this.ws=[],this.gs=!1,this.bs=this.ls.canWrapX()&&!!r&&!!this.ls.getExtent()&&$n(r)==$n(this.ls.getExtent()),this.xs=this.ls.getExtent()?$n(this.ls.getExtent()):null,this.Ms=this.vs.getExtent()?$n(this.vs.getExtent()):null;var a=Yn(i),h=Zn(i),f=Dn(i),c=Gn(i),l=this.ds(a),v=this.ds(h),d=this.ds(f),p=this.ds(c),y=10+(o?Math.max(0,Math.ceil(ui(Fn(i)/(o*o*256*256)))):0);if(this._s(a,h,f,c,l,v,d,p,y),this.gs){var m=1/0;this.ws.forEach((function(t,n,i){m=Math.min(m,t.source[0][0],t.source[1][0],t.source[2][0])})),this.ws.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-m>this.xs/2){var n=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];n[0][0]-m>this.xs/2&&(n[0][0]-=this.xs),n[1][0]-m>this.xs/2&&(n[1][0]-=this.xs),n[2][0]-m>this.xs/2&&(n[2][0]-=this.xs);var i=Math.min(n[0][0],n[1][0],n[2][0]);Math.max(n[0][0],n[1][0],n[2][0])-i.5&&f<1,v=!1;if(a>0){if(this.vs.isGlobal()&&this.Ms)v=$n(yn([t,n,i,r]))/this.Ms>.25||v;!l&&this.ls.isGlobal()&&f&&(v=f>.25||v)}if(!(!v&&this.ps&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3]))||Kn(h,this.ps)){var d=0;if(!(v||isFinite(e[0])&&isFinite(e[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(u[0])&&isFinite(u[1])))if(a>0)v=!0;else if(1!=(d=(isFinite(e[0])&&isFinite(e[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(s[0])&&isFinite(s[1])?0:2)+(isFinite(u[0])&&isFinite(u[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(a>0){if(!v){var p=[(t[0]+i[0])/2,(t[1]+i[1])/2],y=this.ds(p),m=void 0;if(l)m=(vi(e[0],c)+vi(s[0],c))/2-vi(y[0],c);else m=(e[0]+s[0])/2-y[0];var w=(e[1]+s[1])/2-y[1];v=m*m+w*w>this.ys}if(v){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){var g=[(n[0]+i[0])/2,(n[1]+i[1])/2],b=this.ds(g),x=[(r[0]+t[0])/2,(r[1]+t[1])/2],M=this.ds(x);this._s(t,n,g,x,e,o,b,M,a-1),this._s(x,g,i,r,M,b,s,u,a-1)}else{var _=[(t[0]+n[0])/2,(t[1]+n[1])/2],S=this.ds(_),O=[(i[0]+r[0])/2,(i[1]+r[1])/2],j=this.ds(O);this._s(t,_,O,r,e,S,j,u,a-1),this._s(_,n,i,O,S,o,s,j,a-1)}return}}if(l){if(!this.bs)return;this.gs=!0}0==(11&d)&&this.Ss(t,i,r,e,s,u),0==(14&d)&&this.Ss(t,i,n,e,s,o),d&&(0==(13&d)&&this.Ss(n,r,t,o,u,e),0==(7&d)&&this.Ss(n,r,i,o,u,s))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.ws.forEach((function(n,i,r){var e=n.source;kn(t,e[0]),kn(t,e[1]),kn(t,e[2])})),t},t.prototype.getTriangles=function(){return this.ws},t}(),Uc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Bc=function(t){function n(n,i,r,e,o,s,u,a,h,f,c,l){var v=t.call(this,o,ct,{interpolate:!!l})||this;v.Os=void 0!==c&&c,v.kt=u,v.js=a,v.qt=null,v.Es=i,v.Ts=e,v.As=s||o,v.Ps=[],v.Cs=null,v.ks=0;var d=e.getTileCoordExtent(v.As),p=v.Ts.getExtent(),y=v.Es.getExtent(),m=p?Wn(d,p):d;if(0===Fn(m))return v.state=pt,v;var w=n.getExtent();w&&(y=y?Wn(y,w):w);var g=e.getResolution(v.As[0]),b=wf(n,r,m,g);if(!isFinite(b)||b<=0)return v.state=pt,v;var x=void 0!==f?f:.5;if(v.Is=new qc(n,r,m,y,b*x,g),0===v.Is.getTriangles().length)return v.state=pt,v;v.ks=i.getZForResolution(b);var M=v.Is.calculateSourceExtent();if(y&&(n.canWrapX()?(M[1]=oi(M[1],y[1],y[3]),M[3]=oi(M[3],y[1],y[3])):M=Wn(M,y)),Fn(M)){for(var _=i.getTileRangeForExtentAndZ(M,v.ks),S=_.minX;S<=_.maxX;S++)for(var O=_.minY;O<=_.maxY;O++){var j=h(v.ks,S,O,u);j&&v.Ps.push(j)}0===v.Ps.length&&(v.state=pt)}else v.state=pt;return v}return Uc(n,t),n.prototype.getImage=function(){return this.qt},n.prototype.Ns=function(){var t=[];if(this.Ps.forEach(function(n,i,r){n&&n.getState()==vt&&t.push({extent:this.Es.getTileCoordExtent(n.tileCoord),image:n.getImage()})}.bind(this)),this.Ps.length=0,0===t.length)this.state=dt;else{var n=this.As[0],i=this.Ts.getTileSize(n),r="number"==typeof i?i:i[0],e="number"==typeof i?i:i[1],o=this.Ts.getResolution(n),s=this.Es.getResolution(this.ks),u=this.Ts.getTileCoordExtent(this.As);this.qt=gf(r,e,this.kt,s,this.Es.getExtent(),o,u,this.Is,t,this.js,this.Os,this.interpolate),this.state=vt}this.changed()},n.prototype.load=function(){if(this.state==ct){this.state=lt,this.changed();var t=0;this.Cs=[],this.Ps.forEach(function(n,i,r){var e=n.getState();if(e==ct||e==lt){t++;var o=$(n,L,(function(i){var r=n.getState();r!=vt&&r!=dt&&r!=pt||(H(o),0===--t&&(this.Ls(),this.Ns()))}),this);this.Cs.push(o)}}.bind(this)),0===t?setTimeout(this.Ns.bind(this),0):this.Ps.forEach((function(t,n,i){t.getState()==ct&&t.load()}))}},n.prototype.Ls=function(){this.Cs.forEach(H),this.Cs=null},n.prototype.release=function(){this.qt&&(So(this.qt.getContext("2d")),df.push(this.qt),this.qt=null),t.prototype.release.call(this)},n}(xt),Xc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Vc(t,n,i){var r=i?t.LINEAR:t.NEAREST;t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,r)}function Wc(t,n,i,r,e,o){var s,u,a=t.getGL();i instanceof Float32Array?(s=a.FLOAT,t.getExtension("OES_texture_float"),u=null!==t.getExtension("OES_texture_float_linear")):(s=a.UNSIGNED_BYTE,u=!0);Vc(a,n,o&&u);var h,f=i.byteLength/r[1],c=1;switch(f%8==0?c=8:f%4==0?c=4:f%2==0&&(c=2),e){case 1:h=a.LUMINANCE;break;case 2:h=a.LUMINANCE_ALPHA;break;case 3:h=a.RGB;break;case 4:h=a.RGBA;break;default:throw new Error("Unsupported number of bands: ".concat(e))}var l=a.getParameter(a.UNPACK_ALIGNMENT);a.pixelStorei(a.UNPACK_ALIGNMENT,c),a.texImage2D(a.TEXTURE_2D,0,h,r[0],r[1],0,h,s,i),a.pixelStorei(a.UNPACK_ALIGNMENT,l)}var Yc=null;var Zc=function(t){function n(n){var i=t.call(this)||this;i.tile,i.textures=[],i.cr=i.cr.bind(i),i.zs=Qu(n.grid.getTileSize(n.tile.tileCoord[0])),i.js=n.gutter||0,i.bandCount=NaN,i.us=n.helper;var r=new mc(zf,Ff);return r.fromArray([0,1,1,1,1,0,0,0]),i.us.flushBufferData(r),i.coords=r,i.setTile(n.tile),i}return Xc(n,t),n.prototype.setTile=function(t){if(t!==this.tile)if(this.tile&&this.tile.removeEventListener(L,this.cr),this.tile=t,this.textures.length=0,this.loaded=t.getState()===vt,this.loaded)this.Rs();else{if(t instanceof ko){var n=t.getImage();n instanceof Image&&!n.crossOrigin&&(n.crossOrigin="anonymous")}t.addEventListener(L,this.cr)}},n.prototype.Rs=function(){var t=this.us,n=t.getGL(),i=this.tile;if(i instanceof ko||i instanceof Bc){var r=n.createTexture();return this.textures.push(r),this.bandCount=4,void function(t,n,i,r){Vc(t,n,r),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,i)}(n,r,i.getImage(),i.interpolate)}var e=i.getSize(),o=[e[0]+2*this.js,e[1]+2*this.js],s=i.getData(),u=s instanceof Float32Array,a=o[0]*o[1],h=u?Float32Array:Uint8Array,f=h.BYTES_PER_ELEMENT,c=s.byteLength/o[1];this.bandCount=Math.floor(c/f/o[0]);var l=Math.ceil(this.bandCount/4);if(1===l){r=n.createTexture();return this.textures.push(r),void Wc(t,r,s,o,this.bandCount,i.interpolate)}for(var v=new Array(l),d=0;d=v;--d)for(var p=a.getTileRangeForExtentAndZ(n,d,this.Ys),y=a.getResolution(d),m=p.minX;m<=p.maxX;++m)for(var w=p.minY;w<=p.maxY;++w){var g=Oh(d,m,w,this.Zs),b=dl(u,g),x=void 0,M=void 0;if(l.containsKey(b)&&(M=(x=l.get(b)).tile),!x||x.tile.key!==u.getKey())if(M=u.getTile(d,m,w,t.pixelRatio,e.projection),x)if(this.iu(M))x.setTile(M);else{var _=M.getInterimTile();x.setTile(_)}else x=new Zc({tile:M,grid:a,helper:this.helper,gutter:h}),l.set(b,x);ll(r,x,d);var S=M.getKey();c[S]=!0,M.getState()===ct&&(t.tileQueue.isKeyQueued(S)||t.tileQueue.enqueue([M,f,a.getTileCoordCenter(g),y]))}},n.prototype.renderFrame=function(t){this.Zi=t,this.renderComplete=!0;var n=this.helper.getGL();this.preRender(n,t);var i=t.viewState,r=this.getLayer().getRenderSource(),e=r.getTileGridForProjection(i.projection),s=r.getGutterForProjection(i.projection),u=vl(t,t.extent),a=e.getZForResolution(i.resolution,r.zDirection),h={};if(t.nextExtent){var f=e.getZForResolution(i.nextResolution,r.zDirection),c=vl(t,t.nextExtent);this.enqueueTiles(t,c,f,h)}this.enqueueTiles(t,u,a,h);for(var l={},v=o(this),d=t.time,y=!1,m=h[a],w=0,g=m.length;w=x;--M){if(this.ru(e,b,M,h))break}}this.helper.useProgram(this.Ks),this.helper.prepareDraw(t,!y);for(var _=Object.keys(h).map(Number).sort(p),S=i.center[0],O=i.center[1],j=0,E=_.length;j0&&Wn(H=e.getTileCoordExtent(b),u,H),this.helper.setUniformFloatVec4(ul.RENDER_EXTENT,H),this.helper.setUniformFloatValue(ul.RESOLUTION,i.resolution),this.helper.setUniformFloatValue(ul.ZOOM,i.zoom),this.helper.drawElements(0,this.Qs.getSize())}}}this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);for(var J=this.helper.getCanvas(),Q=this.tu;Q.canExpireCache();){var tt;(tt=Q.pop()).dispose()}return t.postRenderFunctions.push((function(t,n){r.expireCache(n.viewState.projection,fl)})),this.postRender(n,t),J},n.prototype.getData=function(t){if(!this.helper.getGL())return null;var n=this.Zi;if(!n)return null;var i=this.getLayer(),r=tn(n.pixelToCoordinateTransform,t.slice()),e=n.viewState,o=i.getExtent();if(o&&!bn(Lr(o,e.projection),r))return null;var s,u,a,h=i.getSources(yn([r]),e.resolution);for(s=h.length-1;s>=0;--s)if("ready"===(u=h[s]).getState()){if(a=u.getTileGridForProjection(e.projection),u.getWrapX())break;var f=a.getExtent();if(!f||bn(f,r))break}if(s<0)return null;for(var c=this.tu,l=a.getZForResolution(e.resolution);l>=a.getMinZoom();--l){var v=a.getTileCoordForCoordAndZ(r,l),d=dl(u,v);if(c.containsKey(d)){var p=c.get(d);if(p.loaded){var y=a.getOrigin(l),m=Qu(a.getTileSize(l)),w=a.getResolution(l),g=(r[0]-y[0])/w-v[1]*m[0],b=(y[1]-r[1])/w-v[2]*m[1];return p.getPixelData(g,b)}}}return null},n.prototype.ru=function(t,n,i,r){var e=t.getTileRangeForTileCoordAndZ(n,i,this.Ys);if(!e)return!1;for(var o=!0,s=this.tu,u=this.getLayer().getRenderSource(),a=e.minX;a<=e.maxX;++a)for(var h=e.minY;h<=e.maxY;++h){var f=dl(u,[i,a,h]),c=!1;if(s.containsKey(f)){var l=s.get(f);l.loaded&&(ll(r,l,i),c=!0)}c||(o=!1)}return o},n.prototype.removeHelper=function(){if(this.helper){var n=this.tu;n.forEach((function(t){return t.dispose()})),n.clear()}t.prototype.removeHelper.call(this)},n.prototype.disposeInternal=function(){var n=this.helper;n&&(n.getGL().deleteProgram(this.Ks),delete this.Ks,n.deleteBuffer(this.Qs));t.prototype.disposeInternal.call(this),delete this.Qs,delete this.tu,delete this.Zi},n}(ol),yl=1,ml=2,wl=4,gl=8,bl=16,xl=31,Ml=0,_l={};function Sl(t){if("number"==typeof t)return yl;if("boolean"==typeof t)return gl;if("string"==typeof t)return Uo(t)?wl|ml:ml;if(!Array.isArray(t))throw new Error("Unhandled value type: ".concat(JSON.stringify(t)));var n=t;if(n.every((function(t){return"number"==typeof t})))return 3===n.length||4===n.length?wl|bl:bl;if("string"!=typeof n[0])throw new Error("Expected an expression operator but received: ".concat(JSON.stringify(n)));var i=_l[n[0]];if(void 0===i)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(n)));return i.getReturnType(n.slice(1))}function Ol(t){return ui(t)%1==0}function jl(t){var n=t.toString();return-1===n.indexOf(".")?n+".0":n}function El(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return"vec".concat(t.length,"(").concat(t.map(jl).join(", "),")")}function Tl(t){var n=Go(t).slice();return n.length<4&&n.push(1),El(n.map((function(t,n){return n<3?t/255:t})))}function Al(t,n){return void 0===t.stringLiteralsMap[n]&&(t.stringLiteralsMap[n]=Object.keys(t.stringLiteralsMap).length),t.stringLiteralsMap[n]}function Pl(t,n){return jl(Al(t,n))}function Cl(t,n,i){if(Array.isArray(n)&&"string"==typeof n[0]){var r=_l[n[0]];if(void 0===r)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(n)));return r.toGlsl(t,n.slice(1),i)}var e=Sl(n);if((e&yl)>0)return jl(n);if((e&gl)>0)return n.toString();if((e&ml)>0&&(void 0===i||i==ml))return Pl(t,n.toString());if((e&wl)>0&&(void 0===i||i==wl))return Tl(n);if((e&bl)>0)return El(n);throw new Error("Unexpected expression ".concat(n," (expected type ").concat(i,")"))}function kl(t){if(!(Sl(t)&yl))throw new Error("A numeric value was expected, got ".concat(JSON.stringify(t)," instead"))}function Il(t){for(var n=0;nn)throw new Error("At most ".concat(n," arguments were expected, got ").concat(t.length," instead"))}function Gl(t){if(t.length%2!=0)throw new Error("An even amount of arguments was expected, got ".concat(t," instead"))}function Dl(t,n){if(!Ol(n))throw new Error("Could not infer only one type from the following expression: ".concat(JSON.stringify(t)))}function ql(t){return"u_var_"+t}_l.get={getReturnType:function(t){return xl},toGlsl:function(t,n){zl(n,1),Nl(n[0]);var i=n[0].toString();return-1===t.attributes.indexOf(i)&&t.attributes.push(i),(t.inFragmentShader?"v_":"a_")+i}},_l.var={getReturnType:function(t){return xl},toGlsl:function(t,n){zl(n,1),Nl(n[0]);var i=n[0].toString();return-1===t.variables.indexOf(i)&&t.variables.push(i),ql(i)}};var Ul="u_paletteTextures";_l.palette={getReturnType:function(t){return wl},toGlsl:function(t,n){zl(n,2),kl(n[0]);var i=Cl(t,n[0]),r=n[1];if(!Array.isArray(r))throw new Error("The second argument of palette must be an array");for(var e=r.length,o=new Uint8Array(4*e),s=0;s"]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," > ").concat(Cl(t,n[1]),")")}},_l[">="]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," >= ").concat(Cl(t,n[1]),")")}},_l["<"]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," < ").concat(Cl(t,n[1]),")")}},_l["<="]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," <= ").concat(Cl(t,n[1]),")")}},_l["=="]=Xl("=="),_l["!="]=Xl("!="),_l["!"]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,1),Ll(n[0]),"(!".concat(Cl(t,n[0]),")")}},_l.all=Vl("&&"),_l.any=Vl("||"),_l.between={getReturnType:function(t){return gl},toGlsl:function(t,n){zl(n,3),Il(n);var i=Cl(t,n[1]),r=Cl(t,n[2]),e=Cl(t,n[0]);return"(".concat(e," >= ").concat(i," && ").concat(e," <= ").concat(r,")")}},_l.array={getReturnType:function(t){return bl},toGlsl:function(t,n){Rl(n,2),Fl(n,4),Il(n);var i=n.map((function(n){return Cl(t,n,yl)}));return"vec".concat(n.length,"(").concat(i.join(", "),")")}},_l.color={getReturnType:function(t){return wl},toGlsl:function(t,n){Rl(n,3),Fl(n,4),Il(n);var i=n;3===n.length&&i.push(1);var r=n.map((function(n,i){return Cl(t,n,yl)+(i<3?" / 255.0":"")}));return"vec".concat(n.length,"(").concat(r.join(", "),")")}},_l.interpolate={getReturnType:function(t){for(var n=wl|yl,i=3;i=1;a-=2){var h=Cl(t,n[a]),f=Cl(t,n[a+1],e);u="(".concat(o," == ").concat(h," ? ").concat(f," : ").concat(u||s,")")}return u}},_l.case={getReturnType:function(t){for(var n=xl,i=1;i=0;o-=2){var a=Cl(t,n[o]),h=Cl(t,n[o+1],e);u="(".concat(a," ? ").concat(h," : ").concat(u||s,")")}return u}};var Wl=function(){function t(){this.uniforms=[],this.attributes=[],this.varyings=[],this.sizeExpression="vec2(1.0)",this.rotationExpression="0.0",this.offsetExpression="vec2(0.0)",this.colorExpression="vec4(1.0)",this.texCoordExpression="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression="false",this.rotateWithView=!1}return t.prototype.addUniform=function(t){return this.uniforms.push(t),this},t.prototype.addAttribute=function(t){return this.attributes.push(t),this},t.prototype.addVarying=function(t,n,i){return this.varyings.push({name:t,type:n,expression:i}),this},t.prototype.setSizeExpression=function(t){return this.sizeExpression=t,this},t.prototype.setRotationExpression=function(t){return this.rotationExpression=t,this},t.prototype.setSymbolOffsetExpression=function(t){return this.offsetExpression=t,this},t.prototype.setColorExpression=function(t){return this.colorExpression=t,this},t.prototype.setTextureCoordinateExpression=function(t){return this.texCoordExpression=t,this},t.prototype.setFragmentDiscardExpression=function(t){return this.discardExpression=t,this},t.prototype.setSymbolRotateWithView=function(t){return this.rotateWithView=t,this},t.prototype.getSizeExpression=function(){return this.sizeExpression},t.prototype.getOffsetExpression=function(){return this.offsetExpression},t.prototype.getColorExpression=function(){return this.colorExpression},t.prototype.getTextureCoordinateExpression=function(){return this.texCoordExpression},t.prototype.getFragmentDiscardExpression=function(){return this.discardExpression},t.prototype.getSymbolVertexShader=function(t){var n=this.rotateWithView?"u_offsetScaleMatrix * u_offsetRotateMatrix":"u_offsetScaleMatrix",i=this.attributes,r=this.varyings;return t&&(i=i.concat("vec4 a_hitColor"),r=r.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n".concat(this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n"),"\nattribute vec2 a_position;\nattribute float a_index;\n").concat(i.map((function(t){return"attribute "+t+";"})).join("\n"),"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n").concat(r.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n"),"\nvoid main(void) {\n mat4 offsetMatrix = ").concat(n,";\n vec2 halfSize = ").concat(this.sizeExpression," * 0.5;\n vec2 offset = ").concat(this.offsetExpression,";\n float angle = ").concat(this.rotationExpression,";\n float offsetX;\n float offsetY;\n if (a_index == 0.0) {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n } else if (a_index == 1.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else if (a_index == 2.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n }\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n vec4 texCoord = ").concat(this.texCoordExpression,";\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n v_quadCoord = vec2(u, v);\n").concat(r.map((function(t){return" "+t.name+" = "+t.expression+";"})).join("\n"),"\n}")},t.prototype.getSymbolFragmentShader=function(t){var n=t?" if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;":"",i=this.varyings;return t&&(i=i.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n".concat(this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n"),"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n").concat(i.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n"),"\nvoid main(void) {\n if (").concat(this.discardExpression,") { discard; }\n gl_FragColor = ").concat(this.colorExpression,";\n gl_FragColor.rgb *= gl_FragColor.a;\n").concat(n,"\n}")},t}();function Yl(t){var n=t.symbol,i=void 0!==n.size?n.size:1,r=n.color||"white",e=n.textureCoord||[0,0,1,1],o=n.offset||[0,0],s=void 0!==n.opacity?n.opacity:1,u=void 0!==n.rotation?n.rotation:0,a={inFragmentShader:!1,variables:[],attributes:[],stringLiteralsMap:{},functions:{}},h=Cl(a,i,bl|yl),f=Cl(a,o,bl),c=Cl(a,e,bl),l=Cl(a,u,yl),v={inFragmentShader:!0,variables:a.variables,attributes:[],stringLiteralsMap:a.stringLiteralsMap,functions:{}},d=Cl(v,r,wl),p=Cl(v,s,yl),y="1.0",m="vec2(".concat(Cl(v,i,bl|yl),").x");switch(n.symbolType){case"square":case"image":break;case"circle":y="(1.0-smoothstep(1.-4./".concat(m,",1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))");break;case"triangle":var w="(v_quadCoord*2.-1.)",g="(atan(".concat(w,".x,").concat(w,".y))");y="(1.0-smoothstep(.5-3./".concat(m,",.5,cos(floor(.5+").concat(g,"/2.094395102)*2.094395102-").concat(g,")*length(").concat(w,")))");break;default:throw new Error("Unexpected symbol type: "+n.symbolType)}var b=(new Wl).setSizeExpression("vec2(".concat(h,")")).setRotationExpression(l).setSymbolOffsetExpression(f).setTextureCoordinateExpression(c).setSymbolRotateWithView(!!n.rotateWithView).setColorExpression("vec4(".concat(d,".rgb, ").concat(d,".a * ").concat(p," * ").concat(y,")"));if(t.filter){var x=Cl(v,t.filter,gl);b.setFragmentDiscardExpression("!".concat(x))}var M={};if(v.variables.forEach((function(n){var i=ql(n);b.addUniform("float ".concat(i)),M[i]=function(){if(!t.variables||void 0===t.variables[n])throw new Error("The following variable is missing from the style: ".concat(n));var i=t.variables[n];return"string"==typeof i&&(i=Al(a,i)),void 0!==i?i:-9999999}})),"image"===n.symbolType&&n.src){var _=new Image;_.crossOrigin=void 0===n.crossOrigin?"anonymous":n.crossOrigin,_.src=n.src,b.addUniform("sampler2D u_texture").setColorExpression(b.getColorExpression()+" * texture2D(u_texture, v_texCoord)"),M.u_texture=_}return v.attributes.forEach((function(t){-1===a.attributes.indexOf(t)&&a.attributes.push(t),b.addVarying("v_".concat(t),"float","a_".concat(t))})),a.attributes.forEach((function(t){b.addAttribute("float a_".concat(t))})),{builder:b,attributes:a.attributes.map((function(t){return{name:t,callback:function(n,i){var r=i[t];return"string"==typeof r&&(r=Al(a,r)),void 0!==r?r:-9999999}}})),uniforms:M}}var Zl=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$l=function(t){function n(n){var i=t.call(this,{extent:n.extent,origin:n.origin,origins:n.origins,resolutions:n.resolutions,tileSize:n.tileSize,tileSizes:n.tileSizes,sizes:n.sizes})||this;return i.eu=n.matrixIds,i}return Zl(n,t),n.prototype.getMatrixId=function(t){return this.eu[t]},n.prototype.getMatrixIds=function(){return this.eu},n}(xf),Kl=$l;function Hl(t,n,i){var r=[],e=[],o=[],s=[],u=[],a=void 0!==i?i:[],h=yr(t.SupportedCRS),f=h.getMetersPerUnit(),c="ne"==h.getAxisOrientation().substr(0,2);return t.TileMatrix.sort((function(t,n){return n.ScaleDenominator-t.ScaleDenominator})),t.TileMatrix.forEach((function(n){if(!(a.length>0)||b(a,(function(i){return n.Identifier==i.TileMatrix||-1===n.Identifier.indexOf(":")&&t.Identifier+":"+n.Identifier===i.TileMatrix}))){e.push(n.Identifier);var i=28e-5*n.ScaleDenominator/f,h=n.TileWidth,l=n.TileHeight;c?o.push([n.TopLeftCorner[1],n.TopLeftCorner[0]]):o.push(n.TopLeftCorner),r.push(i),s.push(h==l?h:[h,l]),u.push([n.MatrixWidth,n.MatrixHeight])}})),new $l({extent:n,origins:o,resolutions:r,matrixIds:e,tileSizes:s,sizes:u})}var Jl=function(){function t(t){this.ou=t.opacity,this.su=t.rotateWithView,this.Dr=t.rotation,this.uu=t.scale,this.au=Qu(t.scale),this.hu=t.displacement,this.fu=t.declutterMode}return t.prototype.clone=function(){var n=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(n)?n.slice():n,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})},t.prototype.getOpacity=function(){return this.ou},t.prototype.getRotateWithView=function(){return this.su},t.prototype.getRotation=function(){return this.Dr},t.prototype.getScale=function(){return this.uu},t.prototype.getScaleArray=function(){return this.au},t.prototype.getDisplacement=function(){return this.hu},t.prototype.getDeclutterMode=function(){return this.fu},t.prototype.getAnchor=function(){return r()},t.prototype.getImage=function(t){return r()},t.prototype.getHitDetectionImage=function(){return r()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return r()},t.prototype.getImageSize=function(){return r()},t.prototype.getOrigin=function(){return r()},t.prototype.getSize=function(){return r()},t.prototype.setDisplacement=function(t){this.hu=t},t.prototype.setOpacity=function(t){this.ou=t},t.prototype.setRotateWithView=function(t){this.su=t},t.prototype.setRotation=function(t){this.Dr=t},t.prototype.setScale=function(t){this.uu=t,this.au=Qu(t)},t.prototype.listenImageChange=function(t){r()},t.prototype.load=function(){r()},t.prototype.unlistenImageChange=function(t){r()},t}(),Ql=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),tv=function(t){function n(n){var i=this,r=void 0!==n.rotateWithView&&n.rotateWithView;return(i=t.call(this,{opacity:1,rotateWithView:r,rotation:void 0!==n.rotation?n.rotation:0,scale:void 0!==n.scale?n.scale:1,displacement:void 0!==n.displacement?n.displacement:[0,0],declutterMode:n.declutterMode})||this).qt=void 0,i.cu=null,i.lu=void 0!==n.fill?n.fill:null,i._o=[0,0],i.Zt=n.points,i.vu=void 0!==n.radius?n.radius:n.radius1,i.du=n.radius2,i.$t=void 0!==n.angle?n.angle:0,i.pu=void 0!==n.stroke?n.stroke:null,i.W=null,i.yu=null,i.render(),i}return Ql(n,t),n.prototype.clone=function(){var t=this.getScale(),i=new n({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return i.setOpacity(this.getOpacity()),i},n.prototype.getAnchor=function(){var t=this.W;if(!t)return null;var n=this.getDisplacement();return[t[0]/2-n[0],t[1]/2+n[1]]},n.prototype.getAngle=function(){return this.$t},n.prototype.getFill=function(){return this.lu},n.prototype.setFill=function(t){this.lu=t,this.render()},n.prototype.getHitDetectionImage=function(){return this.cu||this.mu(this.yu),this.cu},n.prototype.getImage=function(t){var n=this.qt[t];if(!n){var i=this.yu,r=_o(i.size*t,i.size*t);this.wu(i,r,t),n=r.canvas,this.qt[t]=n}return n},n.prototype.getPixelRatio=function(t){return t},n.prototype.getImageSize=function(){return this.W},n.prototype.getImageState=function(){return po},n.prototype.getOrigin=function(){return this._o},n.prototype.getPoints=function(){return this.Zt},n.prototype.getRadius=function(){return this.vu},n.prototype.getRadius2=function(){return this.du},n.prototype.getSize=function(){return this.W},n.prototype.getStroke=function(){return this.pu},n.prototype.setStroke=function(t){this.pu=t,this.render()},n.prototype.listenImageChange=function(t){},n.prototype.load=function(){},n.prototype.unlistenImageChange=function(t){},n.prototype.gu=function(t,n,i){if(0===n||this.Zt===1/0||"bevel"!==t&&"miter"!==t)return n;var r=this.vu,e=void 0===this.du?r:this.du;if(r0,6);var c=void 0!==r.src?lo:po;return i.Mu=void 0!==r.color?Go(r.color):null,i.Nu=vv(h,f,void 0!==i.Iu?i.Iu:null,i.Bt,c,i.Mu),i.Lu=void 0!==r.offset?r.offset:[0,0],i.zu=void 0!==r.offsetOrigin?r.offsetOrigin:av,i._o=null,i.W=void 0!==r.size?r.size:null,i}return pv(n,t),n.prototype.clone=function(){var t=this.getScale();return new n({anchor:this.xe.slice(),anchorOrigin:this.Pu,anchorXUnits:this.Cu,anchorYUnits:this.ku,color:this.Mu&&this.Mu.slice?this.Mu.slice():this.Mu||void 0,crossOrigin:this.Bt,imgSize:this.Iu,offset:this.Lu.slice(),offsetOrigin:this.zu,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:Array.isArray(t)?t.slice():t,size:null!==this.W?this.W.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})},n.prototype.getAnchor=function(){var t=this.Au;if(!t){t=this.xe;var n=this.getSize();if(this.Cu==ev||this.ku==ev){if(!n)return null;t=this.xe.slice(),this.Cu==ev&&(t[0]*=n[0]),this.ku==ev&&(t[1]*=n[1])}if(this.Pu!=av){if(!n)return null;t===this.xe&&(t=this.xe.slice()),this.Pu!=hv&&this.Pu!=uv||(t[0]=-t[0]+n[0]),this.Pu!=sv&&this.Pu!=uv||(t[1]=-t[1]+n[1])}this.Au=t}var i=this.getDisplacement();return[t[0]-i[0],t[1]+i[1]]},n.prototype.setAnchor=function(t){this.xe=t,this.Au=null},n.prototype.getColor=function(){return this.Mu},n.prototype.getImage=function(t){return this.Nu.getImage(t)},n.prototype.getPixelRatio=function(t){return this.Nu.getPixelRatio(t)},n.prototype.getImageSize=function(){return this.Nu.getSize()},n.prototype.getImageState=function(){return this.Nu.getImageState()},n.prototype.getHitDetectionImage=function(){return this.Nu.getHitDetectionImage()},n.prototype.getOrigin=function(){if(this._o)return this._o;var t=this.Lu;if(this.zu!=av){var n=this.getSize(),i=this.Nu.getSize();if(!n||!i)return null;t=t.slice(),this.zu!=hv&&this.zu!=uv||(t[0]=i[0]-n[0]-t[0]),this.zu!=sv&&this.zu!=uv||(t[1]=i[1]-n[1]-t[1])}return this._o=t,this._o},n.prototype.getSrc=function(){return this.Nu.getSrc()},n.prototype.getSize=function(){return this.W?this.W:this.Nu.getSize()},n.prototype.listenImageChange=function(t){this.Nu.addEventListener(L,t)},n.prototype.load=function(){this.Nu.load()},n.prototype.unlistenImageChange=function(t){this.Nu.removeEventListener(L,t)},n}(Jl),mv=function(){function t(t){var n=t||{};this.Mu=void 0!==n.color?n.color:null,this.Ru=n.lineCap,this.Fu=void 0!==n.lineDash?n.lineDash:null,this.Gu=n.lineDashOffset,this.Du=n.lineJoin,this.qu=n.miterLimit,this.Uu=n.width}return t.prototype.clone=function(){var n=this.getColor();return new t({color:Array.isArray(n)?n.slice():n||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.Mu},t.prototype.getLineCap=function(){return this.Ru},t.prototype.getLineDash=function(){return this.Fu},t.prototype.getLineDashOffset=function(){return this.Gu},t.prototype.getLineJoin=function(){return this.Du},t.prototype.getMiterLimit=function(){return this.qu},t.prototype.getWidth=function(){return this.Uu},t.prototype.setColor=function(t){this.Mu=t},t.prototype.setLineCap=function(t){this.Ru=t},t.prototype.setLineDash=function(t){this.Fu=t},t.prototype.setLineDashOffset=function(t){this.Gu=t},t.prototype.setLineJoin=function(t){this.Du=t},t.prototype.setMiterLimit=function(t){this.qu=t},t.prototype.setWidth=function(t){this.Uu=t},t}(),wv=function(){function t(t){var n=t||{};this.Hr=null,this.Bu=_v,void 0!==n.geometry&&this.setGeometry(n.geometry),this.lu=void 0!==n.fill?n.fill:null,this.Lt=void 0!==n.image?n.image:null,this.hn=void 0!==n.renderer?n.renderer:null,this.Xu=void 0!==n.hitDetectionRenderer?n.hitDetectionRenderer:null,this.pu=void 0!==n.stroke?n.stroke:null,this.eo=void 0!==n.text?n.text:null,this.Vu=n.zIndex}return t.prototype.clone=function(){var n=this.getGeometry();return n&&"object"==typeof n&&(n=n.clone()),new t({geometry:n,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer(),stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.hn},t.prototype.setRenderer=function(t){this.hn=t},t.prototype.setHitDetectionRenderer=function(t){this.Xu=t},t.prototype.getHitDetectionRenderer=function(){return this.Xu},t.prototype.getGeometry=function(){return this.Hr},t.prototype.getGeometryFunction=function(){return this.Bu},t.prototype.getFill=function(){return this.lu},t.prototype.setFill=function(t){this.lu=t},t.prototype.getImage=function(){return this.Lt},t.prototype.setImage=function(t){this.Lt=t},t.prototype.getStroke=function(){return this.pu},t.prototype.setStroke=function(t){this.pu=t},t.prototype.getText=function(){return this.eo},t.prototype.setText=function(t){this.eo=t},t.prototype.getZIndex=function(){return this.Vu},t.prototype.setGeometry=function(t){"function"==typeof t?this.Bu=t:"string"==typeof t?this.Bu=function(n){return n.get(t)}:t?void 0!==t&&(this.Bu=function(){return t}):this.Bu=_v,this.Hr=t},t.prototype.setZIndex=function(t){this.Vu=t},t}();function gv(t){var n;if("function"==typeof t)n=t;else{var i;if(Array.isArray(t))i=t;else St("function"==typeof t.getZIndex,41),i=[t];n=function(){return i}}return n}var bv=null;function xv(t,n){if(!bv){var i=new rv({color:"rgba(255,255,255,0.4)"}),r=new mv({color:"#3399CC",width:1.25});bv=[new wv({image:new iv({fill:i,stroke:r,radius:5}),fill:i,stroke:r})]}return bv}function Mv(){var t={},n=[255,255,255,1],i=[0,153,255,1];return t.Polygon=[new wv({fill:new rv({color:[255,255,255,.5]})})],t.MultiPolygon=t.Polygon,t.LineString=[new wv({stroke:new mv({color:n,width:5})}),new wv({stroke:new mv({color:i,width:3})})],t.MultiLineString=t.LineString,t.Circle=t.Polygon.concat(t.LineString),t.Point=[new wv({image:new iv({radius:6,fill:new rv({color:i}),stroke:new mv({color:n,width:1.5})}),zIndex:1/0})],t.MultiPoint=t.Point,t.GeometryCollection=t.Polygon.concat(t.LineString,t.Point),t}function _v(t){return t.getGeometry()}var Sv=wv,Ov="point",jv="line",Ev=function(){function t(t){var n=t||{};this.Wu=n.font,this.Dr=n.rotation,this.su=n.rotateWithView,this.uu=n.scale,this.au=Qu(void 0!==n.scale?n.scale:1),this.eo=n.text,this.Yu=n.textAlign,this.Zu=n.justify,this.$u=n.textBaseline,this.lu=void 0!==n.fill?n.fill:new rv({color:"#333"}),this.Ku=void 0!==n.maxAngle?n.maxAngle:Math.PI/4,this.Hu=void 0!==n.placement?n.placement:Ov,this.Ju=!!n.overflow,this.pu=void 0!==n.stroke?n.stroke:null,this.Qu=void 0!==n.offsetX?n.offsetX:0,this.ta=void 0!==n.offsetY?n.offsetY:0,this.na=n.backgroundFill?n.backgroundFill:null,this.ia=n.backgroundStroke?n.backgroundStroke:null,this.Ai=void 0===n.padding?null:n.padding}return t.prototype.clone=function(){var n=this.getScale();return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(n)?n.slice():n,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0})},t.prototype.getOverflow=function(){return this.Ju},t.prototype.getFont=function(){return this.Wu},t.prototype.getMaxAngle=function(){return this.Ku},t.prototype.getPlacement=function(){return this.Hu},t.prototype.getOffsetX=function(){return this.Qu},t.prototype.getOffsetY=function(){return this.ta},t.prototype.getFill=function(){return this.lu},t.prototype.getRotateWithView=function(){return this.su},t.prototype.getRotation=function(){return this.Dr},t.prototype.getScale=function(){return this.uu},t.prototype.getScaleArray=function(){return this.au},t.prototype.getStroke=function(){return this.pu},t.prototype.getText=function(){return this.eo},t.prototype.getTextAlign=function(){return this.Yu},t.prototype.getJustify=function(){return this.Zu},t.prototype.getTextBaseline=function(){return this.$u},t.prototype.getBackgroundFill=function(){return this.na},t.prototype.getBackgroundStroke=function(){return this.ia},t.prototype.getPadding=function(){return this.Ai},t.prototype.setOverflow=function(t){this.Ju=t},t.prototype.setFont=function(t){this.Wu=t},t.prototype.setMaxAngle=function(t){this.Ku=t},t.prototype.setOffsetX=function(t){this.Qu=t},t.prototype.setOffsetY=function(t){this.ta=t},t.prototype.setPlacement=function(t){this.Hu=t},t.prototype.setRotateWithView=function(t){this.su=t},t.prototype.setFill=function(t){this.lu=t},t.prototype.setRotation=function(t){this.Dr=t},t.prototype.setScale=function(t){this.uu=t,this.au=Qu(void 0!==t?t:1)},t.prototype.setStroke=function(t){this.pu=t},t.prototype.setText=function(t){this.eo=t},t.prototype.setTextAlign=function(t){this.Yu=t},t.prototype.setJustify=function(t){this.Zu=t},t.prototype.setTextBaseline=function(t){this.$u=t},t.prototype.setBackgroundFill=function(t){this.na=t},t.prototype.setBackgroundStroke=function(t){this.ia=t},t.prototype.setPadding=function(t){this.Ai=t},t}(),Tv=function(){function t(t){this.ra,this.ea,this.oa,this.sa=void 0===t||t,this.ua=0}return t.prototype.insertItem=function(t){var n={prev:void 0,next:void 0,data:t},i=this.oa;if(i){var r=i.next;n.prev=i,n.next=r,i.next=n,r&&(r.prev=n),i===this.ea&&(this.ea=n)}else this.ra=n,this.ea=n,this.sa&&(n.next=n,n.prev=n);this.oa=n,this.ua++},t.prototype.removeItem=function(){var t=this.oa;if(t){var n=t.next,i=t.prev;n&&(n.prev=i),i&&(i.next=n),this.oa=n||i,this.ra===this.ea?(this.oa=void 0,this.ra=void 0,this.ea=void 0):this.ra===t?this.ra=this.oa:this.ea===t&&(this.ea=i?this.oa.prev:this.oa),this.ua--}},t.prototype.firstItem=function(){if(this.oa=this.ra,this.oa)return this.oa.data},t.prototype.lastItem=function(){if(this.oa=this.ea,this.oa)return this.oa.data},t.prototype.nextItem=function(){if(this.oa&&this.oa.next)return this.oa=this.oa.next,this.oa.data},t.prototype.getNextItem=function(){if(this.oa&&this.oa.next)return this.oa.next.data},t.prototype.prevItem=function(){if(this.oa&&this.oa.prev)return this.oa=this.oa.prev,this.oa.data},t.prototype.getPrevItem=function(){if(this.oa&&this.oa.prev)return this.oa.prev.data},t.prototype.getCurrItem=function(){if(this.oa)return this.oa.data},t.prototype.setFirstItem=function(){this.sa&&this.oa&&(this.ra=this.oa,this.ea=this.oa.prev)},t.prototype.concat=function(t){if(t.oa){if(this.oa){var n=this.oa.next;this.oa.next=t.ra,t.ra.prev=this.oa,n.prev=t.ea,t.ea.next=n,this.ua+=t.ua}else this.oa=t.oa,this.ra=t.ra,this.ea=t.ea,this.ua=t.ua;t.oa=void 0,t.ra=void 0,t.ea=void 0,t.ua=0}},t.prototype.getLength=function(){return this.ua},t}(),Av=i(72),Pv=function(){function t(t){this.aa=new Av(t),this.ha={}}return t.prototype.insert=function(t,n){var i={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:n};this.aa.insert(i),this.ha[o(n)]=i},t.prototype.load=function(t,n){for(var i=new Array(n.length),r=0,e=n.length;ri.highWaterMark&&(i.highWaterMark=t)},n.prototype.useTile=function(t,n,i,r){},n}(zv),Gv=function(t){function n(n,i){var r=t.call(this,n)||this;return r.tile=i,r}return Rv(n,t),n}(c),Dv=Fv,qv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Uv=function(t){function n(i){var r=t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,opaque:i.opaque,projection:i.projection,state:i.state,tileGrid:i.tileGrid,tilePixelRatio:i.tilePixelRatio,wrapX:i.wrapX,transition:i.transition,interpolate:i.interpolate,key:i.key,attributionsCollapsible:i.attributionsCollapsible,zDirection:i.zDirection})||this;return r.wa=r.tileUrlFunction===n.prototype.tileUrlFunction,r.tileLoadFunction=i.tileLoadFunction,i.tileUrlFunction&&(r.tileUrlFunction=i.tileUrlFunction),r.urls=null,i.urls?r.setUrls(i.urls):i.url&&r.setUrl(i.url),r.ga={},r}return qv(n,t),n.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},n.prototype.getTileUrlFunction=function(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction},n.prototype.getUrls=function(){return this.urls},n.prototype.handleTileChange=function(t){var n,i=t.target,r=o(i),e=i.getState();e==lt?(this.ga[r]=!0,n=Cv):r in this.ga&&(delete this.ga[r],n=e==dt?Iv:e==vt?kv:void 0),null!=n&&this.dispatchEvent(new Gv(n,i))},n.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},n.prototype.setTileUrlFunction=function(t,n){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==n?this.setKey(n):this.changed()},n.prototype.setUrl=function(t){var n=If(t);this.urls=n,this.setUrls(n)},n.prototype.setUrls=function(t){this.urls=t;var n=t.join("\n");this.wa?this.setTileUrlFunction(Pf(t,this.tileGrid),n):this.setKey(n)},n.prototype.tileUrlFunction=function(t,n,i){},n.prototype.useTile=function(t,n,i){var r=jh(t,n,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},n}(Dv),Bv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Xv(t,n){t.getImage().src=n}var Vv=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,opaque:n.opaque,projection:n.projection,state:n.state,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction?n.tileLoadFunction:Xv,tilePixelRatio:n.tilePixelRatio,tileUrlFunction:n.tileUrlFunction,url:n.url,urls:n.urls,wrapX:n.wrapX,transition:n.transition,interpolate:r,key:n.key,attributionsCollapsible:n.attributionsCollapsible,zDirection:n.zDirection})||this).crossOrigin=void 0!==n.crossOrigin?n.crossOrigin:null,i.tileClass=void 0!==n.tileClass?n.tileClass:ko,i.tileCacheForProjection={},i.tileGridForProjection={},i.ba=n.reprojectionErrorThreshold,i.xa=!1,i}return Bv(n,t),n.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},n.prototype.expireCache=function(t,n){var i=this.getTileCacheForProjection(t);for(var r in this.tileCache.expireCache(this.tileCache==i?n:{}),this.tileCacheForProjection){var e=this.tileCacheForProjection[r];e.expireCache(e==i?n:{})}},n.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Sr(this.getProjection(),t)?0:this.getGutter()},n.prototype.getGutter=function(){return 0},n.prototype.getKey=function(){var n=t.prototype.getKey.call(this);return this.getInterpolate()||(n+=":disable-interpolation"),n},n.prototype.getOpaque=function(n){return!(this.getProjection()&&n&&!Sr(this.getProjection(),n))&&t.prototype.getOpaque.call(this,n)},n.prototype.getTileGridForProjection=function(t){var n=this.getProjection();if(!this.tileGrid||n&&!Sr(n,t)){var i=o(t);return i in this.tileGridForProjection||(this.tileGridForProjection[i]=Mf(t)),this.tileGridForProjection[i]}return this.tileGrid},n.prototype.getTileCacheForProjection=function(t){var n=this.getProjection();if(!n||Sr(n,t))return this.tileCache;var i=o(t);return i in this.tileCacheForProjection||(this.tileCacheForProjection[i]=new Ih(this.tileCache.highWaterMark)),this.tileCacheForProjection[i]},n.prototype.Ma=function(t,n,i,r,e,o){var s=[t,n,i],u=this.getTileCoordForTileUrlFunction(s,e),a=u?this.tileUrlFunction(u,r,e):void 0,h=new this.tileClass(s,void 0!==a?ct:pt,void 0!==a?a:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return h.key=o,h.addEventListener(L,this.handleTileChange.bind(this)),h},n.prototype.getTile=function(t,n,i,r,e){var o=this.getProjection();if(o&&e&&!Sr(o,e)){var s=this.getTileCacheForProjection(e),u=[t,n,i],a=void 0,h=Eh(u);s.containsKey(h)&&(a=s.get(h));var f=this.getKey();if(a&&a.key==f)return a;var c=this.getTileGridForProjection(o),l=this.getTileGridForProjection(e),v=this.getTileCoordForTileUrlFunction(u,e),d=new Bc(o,c,e,l,u,v,this.getTilePixelRatio(r),this.getGutter(),function(t,n,i,r){return this.getTileInternal(t,n,i,r,o)}.bind(this),this.ba,this.xa,this.getInterpolate());return d.key=f,a?(d.interimTile=a,d.refreshInterimChain(),s.replace(h,d)):s.set(h,d),d}return this.getTileInternal(t,n,i,r,o||e)},n.prototype.getTileInternal=function(t,n,i,r,e){var o=null,s=jh(t,n,i),u=this.getKey();if(this.tileCache.containsKey(s)){if((o=this.tileCache.get(s)).key!=u){var a=o;o=this.Ma(t,n,i,r,e,u),a.getState()==ct?o.interimTile=a.interimTile:o.interimTile=a,o.refreshInterimChain(),this.tileCache.replace(s,o)}}else o=this.Ma(t,n,i,r,e,u),this.tileCache.set(s,o);return o},n.prototype.setRenderReprojectionEdges=function(t){if(this.xa!=t){for(var n in this.xa=t,this.tileCacheForProjection)this.tileCacheForProjection[n].clear();this.changed()}},n.prototype.setTileGridForProjection=function(t,n){var i=yr(t);if(i){var r=o(i);r in this.tileGridForProjection||(this.tileGridForProjection[r]=n)}},n}(Uv),Wv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Yv(t){var n,i,r=t[0],e=new Array(r),o=1<>=1;return e.join("")}var Zv=function(t){function n(n){var i=this,r=void 0!==n.hidpi&&n.hidpi,e=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(e=n.interpolate),(i=t.call(this,{cacheSize:n.cacheSize,crossOrigin:"anonymous",interpolate:e,opaque:!0,projection:yr("EPSG:3857"),reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:"loading",tileLoadFunction:n.tileLoadFunction,tilePixelRatio:r?2:1,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:n.zDirection})||this)._a=r,i.Sa=void 0!==n.culture?n.culture:"en-us",i.Oa=void 0!==n.maxZoom?n.maxZoom:-1,i.ja=n.key,i.Ea=n.imagerySet,Zh("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+i.Ea+"?uriScheme=https&include=ImageryProviders&key="+i.ja+"&c="+i.Sa,i.handleImageryMetadataResponse.bind(i),void 0,"jsonp"),i}return Wv(n,t),n.prototype.getApiKey=function(){return this.ja},n.prototype.getImagerySet=function(){return this.Ea},n.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var n=t.resourceSets[0].resources[0],i=-1==this.Oa?n.zoomMax:this.Oa,r=Tf(this.getProjection()),e=this._a?2:1,o=n.imageWidth==n.imageHeight?n.imageWidth/e:[n.imageWidth/e,n.imageHeight/e],s=Of({extent:r,minZoom:n.zoomMin,maxZoom:i,tileSize:o});this.tileGrid=s;var u=this.Sa,a=this._a;if(this.tileUrlFunction=Cf(n.imageUrlSubdomains.map((function(t){var i=[0,0,0],r=n.imageUrl.replace("{subdomain}",t).replace("{culture}",u);return function(t,n,e){if(t){Oh(t[0],t[1],t[2],i);var o=r;return a&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",Yv(i))}}}))),n.imageryProviders){var h=Or(yr("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var i=[],r=t.viewState,e=this.getTileGrid(),o=e.getZForResolution(r.resolution,this.zDirection),s=e.getTileCoordForCoordAndZ(r.center,o)[0];return n.imageryProviders.map((function(n){for(var r=!1,e=n.coverageAreas,o=0,u=e.length;o=a.zoomMin&&s<=a.zoomMax){var f=a.bbox;if(Kn(ni([f[1],f[0],f[3],f[2]],h),t.extent)){r=!0;break}}}r&&i.push(n.attribution)})),i.push('Terms of Use'),i}.bind(this))}this.setState("ready")}else this.setState("error")},n}(Vv),$v=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Kv=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=void 0!==r.projection?r.projection:"EPSG:3857",s=void 0!==r.tileGrid?r.tileGrid:Of({extent:Tf(o),maxResolution:r.maxResolution,maxZoom:r.maxZoom,minZoom:r.minZoom,tileSize:r.tileSize});return(i=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,opaque:r.opaque,projection:o,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:s,tileLoadFunction:r.tileLoadFunction,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:r.tileUrlFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this).js=void 0!==r.gutter?r.gutter:0,i}return $v(n,t),n.prototype.getGutter=function(){return this.js},n}(Vv),Hv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Jv=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,maxZoom:void 0!==n.maxZoom?n.maxZoom:18,minZoom:n.minZoom,projection:n.projection,transition:n.transition,wrapX:n.wrapX,zDirection:n.zDirection})||this;return i.Ta=n.account,i.Aa=n.map||"",i.Pa=n.config||{},i.Ca={},i.ka(),i}return Hv(n,t),n.prototype.getConfig=function(){return this.Pa},n.prototype.updateConfig=function(t){A(this.Pa,t),this.ka()},n.prototype.setConfig=function(t){this.Pa=t||{},this.ka()},n.prototype.ka=function(){var t=JSON.stringify(this.Pa);if(this.Ca[t])this.Ia(this.Ca[t]);else{var n="https://"+this.Ta+".carto.com/api/v1/map";this.Aa&&(n+="/named/"+this.Aa);var i=new XMLHttpRequest;i.addEventListener("load",this.Na.bind(this,t)),i.addEventListener("error",this.La.bind(this)),i.open("POST",n),i.setRequestHeader("Content-type","application/json"),i.send(JSON.stringify(this.Pa))}},n.prototype.Na=function(t,n){var i=n.target;if(!i.status||i.status>=200&&i.status<300){var r=void 0;try{r=JSON.parse(i.responseText)}catch(t){return void this.setState("error")}this.Ia(r),this.Ca[t]=r,this.setState("ready")}else this.setState("error")},n.prototype.La=function(t){this.setState("error")},n.prototype.Ia=function(t){var n="https://"+t.cdn_url.https+"/"+this.Ta+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(n)},n}(Kv),Qv="addfeature",td="changefeature",nd="clear",id="removefeature",rd="featuresloadstart",ed="featuresloadend",od="featuresloaderror",sd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ud=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.feature=i,e.features=r,e}return sd(n,t),n}(c),ad=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{attributions:r.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:void 0===r.wrapX||r.wrapX})||this).on,i.once,i.un,i.U=j,i.ze=r.format,i.za=void 0===r.overlaps||r.overlaps,i.Fe=r.url,void 0!==r.loader?i.U=r.loader:void 0!==i.Fe&&(St(i.ze,7),i.U=Vh(i.Fe,i.ze)),i.Ra=void 0!==r.strategy?r.strategy:Wh;var e,o,s=void 0===r.useSpatialIndex||r.useSpatialIndex;return i.Fa=s?new Pv:null,i.Ga=new Pv,i.Da=0,i.qa={},i.Ua={},i.Ba={},i.Xa={},i.Va=null,Array.isArray(r.features)?o=r.features:r.features&&(o=(e=r.features).getArray()),s||void 0!==e||(e=new ft(o)),void 0!==o&&i.addFeaturesInternal(o),void 0!==e&&i.Wa(e),i}return sd(n,t),n.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},n.prototype.addFeatureInternal=function(t){var n=o(t);if(this.Ya(n,t)){this.Za(n,t);var i=t.getGeometry();if(i){var r=i.getExtent();this.Fa&&this.Fa.insert(r,t)}else this.qa[n]=t;this.dispatchEvent(new ud(Qv,t))}else this.Va&&this.Va.remove(t)},n.prototype.Za=function(t,n){this.Xa[t]=[$(n,L,this.$a,this),$(n,l,this.$a,this)]},n.prototype.Ya=function(t,n){var i=!0,r=n.getId();return void 0!==r&&(r.toString()in this.Ua?i=!1:this.Ua[r.toString()]=n),i&&(St(!(t in this.Ba),30),this.Ba[t]=n),i},n.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},n.prototype.addFeaturesInternal=function(t){for(var n=[],i=[],r=[],e=0,s=t.length;e0},n.prototype.refresh=function(){this.clear(!0),this.Ga.clear(),t.prototype.refresh.call(this)},n.prototype.removeLoadedExtent=function(t){var n,i=this.Ga;i.forEachInExtent(t,(function(i){if(An(i.extent,t))return n=i,!0})),n&&i.remove(n)},n.prototype.removeFeature=function(t){if(t){var n=o(t);n in this.qa?delete this.qa[n]:this.Fa&&this.Fa.remove(t),this.removeFeatureInternal(t)&&this.changed()}},n.prototype.removeFeatureInternal=function(t){var n=o(t),i=this.Xa[n];if(i){i.forEach(H),delete this.Xa[n];var r=t.getId();return void 0!==r&&delete this.Ua[r.toString()],delete this.Ba[n],this.dispatchEvent(new ud(id,t)),t}},n.prototype.Ka=function(t){var n=!1;for(var i in this.Ua)if(this.Ua[i]===t){delete this.Ua[i],n=!0;break}return n},n.prototype.setLoader=function(t){this.U=t},n.prototype.setUrl=function(t){St(this.ze,7),this.Fe=t,this.setLoader(Vh(t,this.ze))},n}(zv),hd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fd=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,wrapX:n.wrapX})||this;return i.resolution=void 0,i.distance=void 0!==n.distance?n.distance:20,i.minDistance=n.minDistance||0,i.interpolationRatio=0,i.features=[],i.geometryFunction=n.geometryFunction||function(t){var n=t.getGeometry();return St("Point"==n.getType(),10),n},i.Ha=n.createCluster,i.source=null,i.Ja=i.refresh.bind(i),i.updateDistance(i.distance,i.minDistance),i.setSource(n.source||null),i}return hd(n,t),n.prototype.clear=function(n){this.features.length=0,t.prototype.clear.call(this,n)},n.prototype.getDistance=function(){return this.distance},n.prototype.getSource=function(){return this.source},n.prototype.loadFeatures=function(t,n,i){this.source.loadFeatures(t,n,i),n!==this.resolution&&(this.resolution=n,this.refresh())},n.prototype.setDistance=function(t){this.updateDistance(t,this.minDistance)},n.prototype.setMinDistance=function(t){this.updateDistance(this.distance,t)},n.prototype.getMinDistance=function(){return this.minDistance},n.prototype.setSource=function(t){this.source&&this.source.removeEventListener(L,this.Ja),this.source=t,t&&t.addEventListener(L,this.Ja),this.refresh()},n.prototype.refresh=function(){this.clear(),this.cluster(),this.addFeatures(this.features)},n.prototype.updateDistance=function(t,n){var i=0===t?0:Math.min(n,t)/t,r=t!==this.distance||this.interpolationRatio!==i;this.distance=t,this.minDistance=n,this.interpolationRatio=i,r&&this.refresh()},n.prototype.cluster=function(){if(void 0!==this.resolution&&this.source)for(var t=[1/0,1/0,-1/0,-1/0],n=this.distance*this.resolution,i=this.source.getFeatures(),r={},e=0,s=i.length;e=0;--r){var e=this.geometryFunction(t[r]);e?Vi(i,e.getCoordinates()):t.splice(r,1)}Ji(i,1/t.length);var o=qn(n),s=this.interpolationRatio,u=new Se([i[0]*(1-s)+o[0]*s,i[1]*(1-s)+o[1]*s]);return this.Ha?this.Ha(u,t):new Et({geometry:u,features:t})},n}(ad),cd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ld=function(t){function n(n){var i=this,r=void 0===n.projection?"EPSG:3857":n.projection,e=n.tileGrid;if(void 0===e&&r&&(e=Of({extent:Tf(r),maxResolution:n.maxResolution,maxZoom:n.maxZoom,minZoom:n.minZoom,tileSize:n.tileSize})),(i=t.call(this,{cacheSize:.1,attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,projection:r,tileGrid:e,opaque:n.opaque,state:n.state,tilePixelRatio:n.tilePixelRatio,wrapX:n.wrapX,transition:n.transition,interpolate:n.interpolate})||this).js=void 0!==n.gutter?n.gutter:0,i.jo=n.tileSize?Qu(n.tileSize):null,!i.jo&&n.tilePixelRatio&&e){var o=Qu(e.getTileSize(0));i.jo=[o[0]*n.tilePixelRatio,o[1]*n.tilePixelRatio]}return i.Oo=null,i.ga={},i.U=n.loader,i.cr=i.cr.bind(i),i.bandCount=void 0===n.bandCount?4:n.bandCount,i}return cd(n,t),n.prototype.setTileSizes=function(t){this.Oo=t},n.prototype.getTileSize=function(t){if(this.Oo)return this.Oo[t];if(this.jo)return this.jo;var n=this.getTileGrid();return n?Qu(n.getTileSize(t)):[256,256]},n.prototype.getGutterForProjection=function(t){return this.js},n.prototype.setLoader=function(t){this.U=t},n.prototype.getTile=function(t,n,i,r,e){var o=this.getTileSize(t),s=jh(t,n,i);if(this.tileCache.containsKey(s))return this.tileCache.get(s);var u=this.U;var a=A({tileCoord:[t,n,i],loader:function(){return T((function(){return u(t,n,i)}))},size:o},this.tileOptions),h=new _t(a);return h.key=this.getKey(),h.addEventListener(L,this.cr),this.tileCache.set(s,h),h},n.prototype.cr=function(t){var n,i=t.target,r=o(i),e=i.getState();e==lt?(this.ga[r]=!0,n=Cv):r in this.ga&&(delete this.ga[r],n=e==dt?Iv:e==vt?kv:void 0),n&&this.dispatchEvent(new Gv(n,i))},n}(Dv);const vd=new ArrayBuffer(4),dd=new Float32Array(vd),pd=new Uint32Array(vd),yd=new Uint32Array(512),md=new Uint32Array(512);for(let t=0;t<256;++t){const n=t-127;n<-27?(yd[t]=0,yd[256|t]=32768,md[t]=24,md[256|t]=24):n<-14?(yd[t]=1024>>-n-14,yd[256|t]=1024>>-n-14|32768,md[t]=-n-1,md[256|t]=-n-1):n<=15?(yd[t]=n+15<<10,yd[256|t]=n+15<<10|32768,md[t]=13,md[256|t]=13):n<128?(yd[t]=31744,yd[256|t]=64512,md[t]=24,md[256|t]=24):(yd[t]=31744,yd[256|t]=64512,md[t]=13,md[256|t]=13)}const wd=new Uint32Array(2048),gd=new Uint32Array(64),bd=new Uint32Array(64);wd[0]=0;for(let t=1;t<1024;++t){let n=t<<13,i=0;for(;0==(8388608&n);)i-=8388608,n<<=1;n&=-8388609,i+=947912704,wd[t]=n|i}for(let t=1024;t<2048;++t)wd[t]=939524096+(t-1024<<13);gd[0]=0;for(let t=1;t<31;++t)gd[t]=t<<23;gd[31]=1199570944,gd[32]=2147483648;for(let t=33;t<63;++t)gd[t]=2147483648+(t-32<<23);gd[63]=3347054592,bd[0]=0;for(let t=1;t<64;++t)bd[t]=32===t?0:1024;function xd(t){const n=t>>10;return pd[0]=wd[bd[n]+(1023&t)]+gd[n],dd[0]}const Md=Reflect.getPrototypeOf(Uint8Array).prototype,_d=Reflect.getOwnPropertyDescriptor(Md,Symbol.toStringTag).get;function Sd(t){return void 0!==_d.call(t)}const Od=Object.prototype.toString;function jd(t){return!!ArrayBuffer.isView(t)&&(!Sd(t)&&"[object DataView]"===Od.call(t))}function Ed(t,n){if(!jd(t))throw new TypeError("First argument to getFloat16 function must be a DataView");for(var i=arguments.length,r=new Array(i>2?i-2:0),e=2;eCd.set(t,n)))}async function Id(t){const n=Cd.get(t.Compression);if(!n)throw new Error(`Unknown compression method identifier: ${t.Compression}`);return new(await n())(t)}function Nd(t,n,i){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return new(Object.getPrototypeOf(t).constructor)(n*i*r)}function Ld(t,n,i,r,e){const o=n/r,s=i/e;return t.map((t=>{const u=Nd(t,r,e);for(let a=0;a{const u=Nd(t,r,e);for(let a=0;ai.e(226).then(i.bind(i,966)).then((t=>t.default)))),kd(5,(()=>i.e(611).then(i.bind(i,611)).then((t=>t.default)))),kd(6,(()=>{throw new Error("old style JPEG compression is not supported.")})),kd(7,(()=>i.e(382).then(i.bind(i,382)).then((t=>t.default)))),kd([8,32946],(()=>Promise.all([i.e(247),i.e(356)]).then(i.bind(i,356)).then((t=>t.default)))),kd(32773,(()=>i.e(395).then(i.bind(i,395)).then((t=>t.default)))),kd(34887,(()=>Promise.all([i.e(247),i.e(54)]).then(i.bind(i,54)).then((t=>t.default)))),kd(50001,(()=>i.e(629).then(i.bind(i,629)).then((t=>t.default))));var Ud=class{constructor(t,n,i,r,e,o){this.fileDirectory=t,this.geoKeys=n,this.dataView=i,this.littleEndian=r,this.tiles=e?{}:null,this.isTiled=!t.StripOffsets;const s=t.PlanarConfiguration;if(this.planarConfiguration=void 0===s?1:s,1!==this.planarConfiguration&&2!==this.planarConfiguration)throw new Error("Invalid planar configuration.");this.source=o}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.geoKeys}getWidth(){return this.fileDirectory.ImageWidth}getHeight(){return this.fileDirectory.ImageLength}getSamplesPerPixel(){return void 0!==this.fileDirectory.SamplesPerPixel?this.fileDirectory.SamplesPerPixel:1}getTileWidth(){return this.isTiled?this.fileDirectory.TileWidth:this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.TileLength:void 0!==this.fileDirectory.RowsPerStrip?Math.min(this.fileDirectory.RowsPerStrip,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(t){return this.isTiled||(t+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-t*this.getTileHeight()}getBytesPerPixel(){let t=0;for(let n=0;n=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${t} is out of range.`);return Math.ceil(this.fileDirectory.BitsPerSample[t]/8)}getReaderForSample(t){const n=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,i=this.fileDirectory.BitsPerSample[t];switch(n){case 1:if(i<=8)return DataView.prototype.getUint8;if(i<=16)return DataView.prototype.getUint16;if(i<=32)return DataView.prototype.getUint32;break;case 2:if(i<=8)return DataView.prototype.getInt8;if(i<=16)return DataView.prototype.getInt16;if(i<=32)return DataView.prototype.getInt32;break;case 3:switch(i){case 16:return function(t,n){return Ed(this,t,n)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1}getBitsPerSample(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.fileDirectory.BitsPerSample[t]}getArrayForSample(t,n){return qd(this.getSampleFormat(t),this.getBitsPerSample(t),n)}async getTileOrStrip(t,n,i,r,e){const o=Math.ceil(this.getWidth()/this.getTileWidth()),s=Math.ceil(this.getHeight()/this.getTileHeight());let u;const{tiles:a}=this;let h,f;1===this.planarConfiguration?u=n*o+t:2===this.planarConfiguration&&(u=i*o*s+n*o+t),this.isTiled?(h=this.fileDirectory.TileOffsets[u],f=this.fileDirectory.TileByteCounts[u]):(h=this.fileDirectory.StripOffsets[u],f=this.fileDirectory.StripByteCounts[u]);const c=(await this.source.fetch([{offset:h,length:f}],e))[0];let l;return null!==a&&a[u]?l=a[u]:(l=(async()=>{let t=await r.decode(this.fileDirectory,c);const i=this.getSampleFormat(),e=this.getBitsPerSample();return function(t,n){return(1!==t&&2!==t||!(n<=32)||n%8!=0)&&(3!==t||16!==n&&32!==n&&64!==n)}(i,e)&&(t=function(t,n,i,r,e,o,s){const u=new DataView(t),a=2===i?1:r,h=qd(n,e,2===i?s*o:s*o*r),f=parseInt("1".repeat(e),2);if(1===n){let t;t=1===i?r*e:e;let n=o*t;0!=(7&n)&&(n=n+7&-8);for(let t=0;t>8-e-v&f;else if(v+e<=16)h[c]=u.getUint16(l)>>16-e-v&f;else if(v+e<=24){const t=u.getUint16(l)<<8|u.getUint8(l+2);h[c]=t>>24-e-v&f}else h[c]=u.getUint32(l)>>32-e-v&f}}}}return h.buffer}(t,i,this.planarConfiguration,this.getSamplesPerPixel(),e,this.getTileWidth(),this.getBlockHeight(n))),t})(),null!==a&&(a[u]=l)),{x:t,y:n,sample:i,data:await l}}async _readRaster(t,n,i,r,e,o,s,u,a){const h=this.getTileWidth(),f=this.getTileHeight(),c=this.getWidth(),l=this.getHeight(),v=Math.max(Math.floor(t[0]/h),0),d=Math.min(Math.ceil(t[2]/h),Math.ceil(c/h)),p=Math.max(Math.floor(t[1]/f),0),y=Math.min(Math.ceil(t[3]/f),Math.ceil(l/f)),m=t[2]-t[0];let w=this.getBytesPerPixel();const g=[],b=[];for(let t=0;t{const o=e.data,s=new DataView(o),u=this.getBlockHeight(e.y),a=e.y*f,d=e.x*h,p=a+u,y=(e.x+1)*h,x=b[v],_=Math.min(u,u-(p-t[3]),l-a),S=Math.min(h,h-(y-t[2]),c-d);for(let e=Math.max(0,t[1]-a);e<_;++e)for(let o=Math.max(0,t[0]-d);o6&&void 0!==arguments[6]?arguments[6]:"nearest";switch(s.toLowerCase()){case"nearest":return Fd(t,n,i,r,e,o);case"bilinear":case"linear":return Gd(t,n,i,r,e,o);default:throw new Error(`Unsupported resampling method: '${s}'`)}}(i,t[2]-t[0],t[3]-t[1],o,s,n.length,u):function(t,n,i,r,e){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"nearest";switch(o.toLowerCase()){case"nearest":return Ld(t,n,i,r,e);case"bilinear":case"linear":return Rd(t,n,i,r,e);default:throw new Error(`Unsupported resampling method: '${o}'`)}}(i,t[2]-t[0],t[3]-t[1],o,s,u),e.width=o,e.height=s,e}return i.width=o||t[2]-t[0],i.height=s||t[3]-t[1],i}async readRasters(){let{window:t,samples:n=[],interleave:i,pool:r=null,width:e,height:o,resampleMethod:s,fillValue:u,signal:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const h=t||[0,0,this.getWidth(),this.getHeight()];if(h[0]>h[2]||h[1]>h[3])throw new Error("Invalid subsets");const f=(h[2]-h[0])*(h[3]-h[1]),c=this.getSamplesPerPixel();if(n&&n.length){for(let t=0;t=c)return Promise.reject(new RangeError(`Invalid sample index '${n[t]}'.`))}else for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:{};const a=t||[0,0,this.getWidth(),this.getHeight()];if(a[0]>a[2]||a[1]>a[3])throw new Error("Invalid subsets");const h=this.fileDirectory.PhotometricInterpretation;if(h===Pd.Ie.RGB){let a=[0,1,2];if(this.fileDirectory.ExtraSamples!==Pd.pd.Unspecified&&s){a=[];for(let t=0;t>24)/500+u,h=u-(t[n+2]<<24>>24)/200;a=.95047*(a*a*a>.008856?a*a*a:(a-16/116)/7.787),u=1*(u*u*u>.008856?u*u*u:(u-16/116)/7.787),h=1.08883*(h*h*h>.008856?h*h*h:(h-16/116)/7.787),e=3.2406*a+-1.5372*u+-.4986*h,o=-.9689*a+1.8758*u+.0415*h,s=.0557*a+-.204*u+1.057*h,e=e>.0031308?1.055*e**(1/2.4)-.055:12.92*e,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,r[i]=255*Math.max(0,Math.min(1,e)),r[i+1]=255*Math.max(0,Math.min(1,o)),r[i+2]=255*Math.max(0,Math.min(1,s))}return r}(v);break;default:throw new Error("Unsupported photometric interpretation.")}if(!n){const t=new Uint8Array(p.length/3),n=new Uint8Array(p.length/3),i=new Uint8Array(p.length/3);for(let r=0,e=0;r0&&void 0!==arguments[0]?arguments[0]:null;const n={};if(!this.fileDirectory.GDAL_METADATA)return null;const i=this.fileDirectory.GDAL_METADATA;let r=Ad(i,"Item");r=null===t?r.filter((t=>void 0===Td(t,"sample"))):r.filter((n=>Number(Td(n,"sample"))===t));for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:null;const n=this.fileDirectory.ModelPixelScale,i=this.fileDirectory.ModelTransformation;if(n)return[n[0],-n[1],n[2]];if(i)return[i[0],i[5],i[10]];if(t){const[n,i,r]=t.getResolution();return[n*t.getWidth()/this.getWidth(),i*t.getHeight()/this.getHeight(),r*t.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.geoKeys.GTRasterTypeGeoKey}getBoundingBox(){const t=this.getOrigin(),n=this.getResolution(),i=t[0],r=t[1],e=i+n[0]*this.getWidth(),o=r+n[1]*this.getHeight();return[Math.min(i,e),Math.min(r,o),Math.max(i,e),Math.max(r,o)]}};class Bd{constructor(t){this._dataView=new DataView(t)}get buffer(){return this._dataView.buffer}getUint64(t,n){const i=this.getUint32(t,n),r=this.getUint32(t+4,n);let e;if(n){if(e=i+2**32*r,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*i+r,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}getInt64(t,n){let i=0;const r=(128&this._dataView.getUint8(t+(n?7:0)))>0;let e=!0;for(let o=0;o<8;o++){let s=this._dataView.getUint8(t+(n?o:7-o));r&&(e?0!==s&&(s=255&~(s-1),e=!1):s=255&~s),i+=s*256**o}return r&&(i=-i),i}getUint8(t,n){return this._dataView.getUint8(t,n)}getInt8(t,n){return this._dataView.getInt8(t,n)}getUint16(t,n){return this._dataView.getUint16(t,n)}getInt16(t,n){return this._dataView.getInt16(t,n)}getUint32(t,n){return this._dataView.getUint32(t,n)}getInt32(t,n){return this._dataView.getInt32(t,n)}getFloat16(t,n){return Ed(this._dataView,t,n)}getFloat32(t,n){return this._dataView.getFloat32(t,n)}getFloat64(t,n){return this._dataView.getFloat64(t,n)}}class Xd{constructor(t,n,i,r){this._dataView=new DataView(t),this._sliceOffset=n,this._littleEndian=i,this._bigTiff=r}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(t,n){return this.sliceOffset<=t&&this.sliceTop>=t+n}readUint8(t){return this._dataView.getUint8(t-this._sliceOffset,this._littleEndian)}readInt8(t){return this._dataView.getInt8(t-this._sliceOffset,this._littleEndian)}readUint16(t){return this._dataView.getUint16(t-this._sliceOffset,this._littleEndian)}readInt16(t){return this._dataView.getInt16(t-this._sliceOffset,this._littleEndian)}readUint32(t){return this._dataView.getUint32(t-this._sliceOffset,this._littleEndian)}readInt32(t){return this._dataView.getInt32(t-this._sliceOffset,this._littleEndian)}readFloat32(t){return this._dataView.getFloat32(t-this._sliceOffset,this._littleEndian)}readFloat64(t){return this._dataView.getFloat64(t-this._sliceOffset,this._littleEndian)}readUint64(t){const n=this.readUint32(t),i=this.readUint32(t+4);let r;if(this._littleEndian){if(r=n+2**32*i,!Number.isSafeInteger(r))throw new Error(`${r} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return r}if(r=2**32*n+i,!Number.isSafeInteger(r))throw new Error(`${r} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return r}readInt64(t){let n=0;const i=(128&this._dataView.getUint8(t+(this._littleEndian?7:0)))>0;let r=!0;for(let e=0;e<8;e++){let o=this._dataView.getUint8(t+(this._littleEndian?e:7-e));i&&(r?0!==o&&(o=255&~(o-1),r=!1):o=255&~o),n+=o*256**e}return i&&(n=-n),n}readOffset(t){return this._bigTiff?this.readUint64(t):this.readUint32(t)}}const Vd="\r\n\r\n";function Wd(t){if(void 0!==Object.fromEntries)return Object.fromEntries(t);const n={};for(const[i,r]of t)n[i.toLowerCase()]=r;return n}function Yd(t){return Wd(t.split("\r\n").map((t=>{const n=t.split(":").map((t=>t.trim()));return n[0]=n[0].toLowerCase(),n})))}function Zd(t){let n,i,r;return t&&([,n,i,r]=t.match(/bytes (\d+)-(\d+)\/(\d+)/),n=parseInt(n,10),i=parseInt(i,10),r=parseInt(r,10)),{start:n,end:i,total:r}}class $d{async fetch(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return Promise.all(t.map((t=>this.fetchSlice(t,n))))}async fetchSlice(t){throw new Error(`fetching of slice ${t} not possible, not implemented`)}get fileSize(){return null}async close(){}}var Kd=i(875);function Hd(t,n){const i=Array.isArray(t)?t:Array.from(t),r=Array.isArray(n)?n:Array.from(n);return i.map(((t,n)=>[t,r[n]]))}class Jd extends Error{constructor(t){super(t),Error.captureStackTrace&&Error.captureStackTrace(this,Jd),this.name="AbortError"}}class Qd extends Error{constructor(t,n){super(n),this.errors=t,this.message=n,this.name="AggregateError"}}const tp=Qd;class np{constructor(t,n){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this.offset=t,this.length=n,this.data=i}get top(){return this.offset+this.length}}class ip{constructor(t,n,i){this.offset=t,this.length=n,this.blockIds=i}}class rp extends $d{constructor(t){let{blockSize:n=65536,cacheSize:i=100}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.source=t,this.blockSize=n,this.blockCache=new Kd({max:i}),this.blockRequests=new Map,this.blockIdsToFetch=new Set}get fileSize(){return this.source.fileSize}async fetch(t,n){const i=new Map,r=new Map,e=new Set;for(const{offset:n,length:o}of t){let t=n+o;const{fileSize:s}=this;null!==s&&(t=Math.min(t,s));for(let o=Math.floor(n/this.blockSize)*this.blockSize;osetTimeout(n,t)))}(),this.fetchBlocks(n);for(const t of e){const n=this.blockRequests.get(t),e=this.blockCache.get(t);if(n)r.set(t,n);else{if(!e)throw new Error(`Block ${t} is not in the block requests`);i.set(t,e)}}let o=await Promise.allSettled(Array.from(r.values()));if(o.some((t=>"rejected"===t.status))){const t=new Set;for(const[i,e]of Hd(r.keys(),o)){const{rejected:r,reason:o}=e;r&&"AbortError"===o.name&&o.signal!==n&&(this.blockIdsToFetch.add(i),t.add(i))}if(this.blockIdsToFetch.length>0){this.fetchBlocks(n);for(const n of t){const t=this.blockRequests.get(n);if(!t)throw new Error(`Block ${n} is not in the block requests`);r.set(n,t)}o=await Promise.allSettled(Array.from(r.values()))}}if(o.some((t=>"rejected"===t.status))){if(n&&n.aborted)throw new Jd("Request was aborted");throw new tp(o.filter((t=>"rejected"===t.status)).map((t=>t.reason)),"Request failed")}const s=o.map((t=>t.value)),u=new Map(Hd(Array.from(r.keys()),s));for(const[t,n]of i)u.set(t,n);return this.readSliceData(t,u)}fetchBlocks(t){if(this.blockIdsToFetch.size>0){const n=this.groupBlocks(this.blockIdsToFetch),i=this.source.fetch(n,t);for(let r=0;r{try{const t=(await i)[r],e=n*this.blockSize,o=e-t.offset,s=Math.min(o+this.blockSize,t.data.byteLength),u=t.data.slice(o,s),a=new np(e,u.byteLength,u);return this.blockCache.set(n,a),a}catch(n){throw"AbortError"===n.name&&(n.signal=t),n}finally{this.blockRequests.delete(n)}})();this.blockRequests.set(n,e)}}this.blockIdsToFetch.clear()}}groupBlocks(t){const n=Array.from(t).sort(((t,n)=>t-n));if(0===n.length)return[];let i=[],r=null;const e=[];for(const t of n)null===r||r+1===t?(i.push(t),r=t):(e.push(new ip(i[0]*this.blockSize,i.length*this.blockSize,i)),i=[t],r=t);return e.push(new ip(i[0]*this.blockSize,i.length*this.blockSize,i)),e}readSliceData(t,n){return t.map((t=>{const i=t.offset+t.length,r=Math.floor(t.offset/this.blockSize),e=Math.floor((t.offset+t.length)/this.blockSize),o=new ArrayBuffer(t.length),s=new Uint8Array(o);for(let o=r;o<=e;++o){const r=n.get(o),e=r.offset-t.offset,u=r.top-i;let a,h=0,f=0;e<0?h=-e:e>0&&(f=e),a=u<0?r.length-h:i-r.offset-h;const c=new Uint8Array(r.data,h,a);s.set(c,f)}return o}))}}class ep{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(t){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class op{constructor(t){this.url=t}async request(){let{headers:t,credentials:n,signal:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};throw new Error("request is not implemented")}}class sp extends ep{constructor(t){super(),this.response=t}get status(){return this.response.status}getHeader(t){return this.response.headers.get(t)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class up extends op{constructor(t,n){super(t),this.credentials=n}async request(){let{headers:t,credentials:n,signal:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=await fetch(this.url,{headers:t,credentials:n,signal:i});return new sp(r)}}class ap extends ep{constructor(t,n){super(),this.xhr=t,this.data=n}get status(){return this.xhr.status}getHeader(t){return this.xhr.getResponseHeader(t)}async getData(){return this.data}}class hp extends op{constructRequest(t,n){return new Promise(((i,r)=>{const e=new XMLHttpRequest;e.open("GET",this.url),e.responseType="arraybuffer";for(const[n,i]of Object.entries(t))e.setRequestHeader(n,i);e.onload=()=>{const t=e.response;i(new ap(e,t))},e.onerror=r,e.onabort=()=>r(new Jd("Request aborted")),e.send(),n&&(n.aborted&&e.abort(),n.addEventListener("abort",(()=>e.abort())))}))}async request(){let{headers:t,signal:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return await this.constructRequest(t,n)}}var fp=i(752),cp=i(640),lp=i(630);class vp extends ep{constructor(t,n){super(),this.response=t,this.dataPromise=n}get status(){return this.response.statusCode}getHeader(t){return this.response.headers[t]}async getData(){return await this.dataPromise}}class dp extends op{constructor(t){super(t),this.parsedUrl=lp.parse(this.url),this.httpApi="http:"===this.parsedUrl.protocol?fp:cp}constructRequest(t,n){return new Promise(((i,r)=>{const e=this.httpApi.get({...this.parsedUrl,headers:t},(t=>{const n=new Promise((n=>{const i=[];t.on("data",(t=>{i.push(t)})),t.on("end",(()=>{const t=Buffer.concat(i).buffer;n(t)})),t.on("error",r)}));i(new vp(t,n))}));e.on("error",r),n&&(n.aborted&&e.destroy(new Jd("Request aborted")),n.addEventListener("abort",(()=>e.destroy(new Jd("Request aborted")))))}))}async request(){let{headers:t,signal:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return await this.constructRequest(t,n)}}class pp extends $d{constructor(t,n,i,r){super(),this.client=t,this.headers=n,this.maxRanges=i,this.allowFullFile=r,this._fileSize=null}async fetch(t,n){return this.maxRanges>=t.length?this.fetchSlices(t,n):(this.maxRanges>0&&t.length,Promise.all(t.map((t=>this.fetchSlice(t,n)))))}async fetchSlices(t,n){const i=await this.client.request({headers:{...this.headers,Range:`bytes=${t.map((t=>{let{offset:n,length:i}=t;return`${n}-${n+i}`})).join(",")}`},signal:n});if(i.ok){if(206===i.status){const{type:r,params:e}=function(t){const[n,...i]=t.split(";").map((t=>t.trim()));return{type:n,params:Wd(i.map((t=>t.split("="))))}}(i.getHeader("content-type"));if("multipart/byteranges"===r){const t=function(t,n){let i=null;const r=new TextDecoder("ascii"),e=[],o=`--${n}`,s=`${o}--`;for(let n=0;n<10;++n)r.decode(new Uint8Array(t,n,o.length))===o&&(i=n);if(null===i)throw new Error("Could not find initial boundary");for(;i1){const i=await Promise.all(t.slice(1).map((t=>this.fetchSlice(t,n))));return h.concat(i)}return h}{if(!this.allowFullFile)throw new Error("Server responded with full file");const t=await i.getData();return this._fileSize=t.byteLength,[{data:t,offset:0,length:t.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(t,n){const{offset:i,length:r}=t,e=await this.client.request({headers:{...this.headers,Range:`bytes=${i}-${i+r}`},signal:n});if(e.ok){if(206===e.status){const t=await e.getData(),{total:n}=Zd(e.getHeader("content-range"));return this._fileSize=n||null,{data:t,offset:i,length:r}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const t=await e.getData();return this._fileSize=t.byteLength,{data:t,offset:0,length:t.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function yp(t,n){let{blockSize:i,cacheSize:r}=n;return null===i?t:new rp(t,i,r)}function mp(t){let{headers:n={},credentials:i,maxRanges:r=0,allowFullFile:e=!1,...o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=new up(t,i),u=new pp(s,n,r,e);return yp(u,o)}function wp(t){let{headers:n={},maxRanges:i=0,allowFullFile:r=!1,...e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=new hp(t),s=new pp(o,n,i,r);return yp(s,e)}function gp(t){let{headers:n={},maxRanges:i=0,allowFullFile:r=!1,...e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=new dp(t),s=new pp(o,n,i,r);return yp(s,e)}function bp(t){let{forceXHR:n=!1,...i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"function"!=typeof fetch||n?"undefined"!=typeof XMLHttpRequest?wp(t,i):gp(t,i):mp(t,i)}class xp extends $d{constructor(t){super(),this.file=t}async fetchSlice(t,n){return new Promise(((i,r)=>{const e=this.file.slice(t.offset,t.offset+t.length),o=new FileReader;o.onload=t=>i(t.target.result),o.onerror=r,o.onabort=r,o.readAsArrayBuffer(e),n&&n.addEventListener("abort",(()=>o.abort()))}))}}function Mp(t){switch(t){case Pd.sf.BYTE:case Pd.sf.ASCII:case Pd.sf.SBYTE:case Pd.sf.UNDEFINED:return 1;case Pd.sf.SHORT:case Pd.sf.SSHORT:return 2;case Pd.sf.LONG:case Pd.sf.SLONG:case Pd.sf.FLOAT:case Pd.sf.IFD:return 4;case Pd.sf.RATIONAL:case Pd.sf.SRATIONAL:case Pd.sf.DOUBLE:case Pd.sf.LONG8:case Pd.sf.SLONG8:case Pd.sf.IFD8:return 8;default:throw new RangeError(`Invalid field type: ${t}`)}}function _p(t,n,i,r){let e=null,o=null;const s=Mp(n);switch(n){case Pd.sf.BYTE:case Pd.sf.ASCII:case Pd.sf.UNDEFINED:e=new Uint8Array(i),o=t.readUint8;break;case Pd.sf.SBYTE:e=new Int8Array(i),o=t.readInt8;break;case Pd.sf.SHORT:e=new Uint16Array(i),o=t.readUint16;break;case Pd.sf.SSHORT:e=new Int16Array(i),o=t.readInt16;break;case Pd.sf.LONG:case Pd.sf.IFD:e=new Uint32Array(i),o=t.readUint32;break;case Pd.sf.SLONG:e=new Int32Array(i),o=t.readInt32;break;case Pd.sf.LONG8:case Pd.sf.IFD8:e=new Array(i),o=t.readUint64;break;case Pd.sf.SLONG8:e=new Array(i),o=t.readInt64;break;case Pd.sf.RATIONAL:e=new Uint32Array(2*i),o=t.readUint32;break;case Pd.sf.SRATIONAL:e=new Int32Array(2*i),o=t.readInt32;break;case Pd.sf.FLOAT:e=new Float32Array(i),o=t.readFloat32;break;case Pd.sf.DOUBLE:e=new Float64Array(i),o=t.readFloat64;break;default:throw new RangeError(`Invalid field type: ${n}`)}if(n!==Pd.sf.RATIONAL&&n!==Pd.sf.SRATIONAL)for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:{};const{window:n,width:i,height:r}=t;let{resX:e,resY:o,bbox:s}=t;const u=await this.getImage();let a=u;const h=await this.getImageCount(),f=u.getBoundingBox();if(n&&s)throw new Error('Both "bbox" and "window" passed.');if(i||r){if(n){const[t,i]=u.getOrigin(),[r,e]=u.getResolution();s=[t+n[0]*r,i+n[1]*e,t+n[2]*r,i+n[3]*e]}const t=s||f;if(i){if(e)throw new Error("Both width and resX passed");e=(t[2]-t[0])/i}if(r){if(o)throw new Error("Both width and resY passed");o=(t[3]-t[1])/r}}if(e||o){const t=[];for(let n=0;nt.getWidth()-n.getWidth()));for(let n=0;nr||o&&o>s)break}}let c=n;if(s){const[t,n]=u.getOrigin(),[i,r]=a.getResolution(u);c=[Math.round((s[0]-t)/i),Math.round((s[1]-n)/r),Math.round((s[2]-t)/i),Math.round((s[3]-n)/r)],c=[Math.min(c[0],c[2]),Math.min(c[1],c[3]),Math.max(c[0],c[2]),Math.max(c[1],c[3])]}return a.readRasters({...t,window:c})}}class Ep extends jp{constructor(t,n,i,r){let e=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};super(),this.source=t,this.littleEndian=n,this.bigTiff=i,this.firstIFDOffset=r,this.cache=e.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(t,n){const i=this.bigTiff?4048:1024;return new Xd((await this.source.fetch([{offset:t,length:void 0!==n?n:i}]))[0],t,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(t){const n=this.bigTiff?20:12,i=this.bigTiff?8:2;let r=await this.getSlice(t);const e=this.bigTiff?r.readUint64(t):r.readUint16(t),o=e*n+(this.bigTiff?16:6);r.covers(t,o)||(r=await this.getSlice(t,o));const s={};let u=t+(this.bigTiff?8:2);for(let t=0;t{const n=await this.ifdRequests[t-1];if(0===n.nextIFDByteOffset)throw new Op(t);return this.parseFileDirectoryAt(n.nextIFDByteOffset)})(),this.ifdRequests[t]}async getImage(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=await this.requestIFD(t);return new Ud(n.fileDirectory,n.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let t=0,n=!0;for(;n;)try{await this.requestIFD(t),++t}catch(t){if(!(t instanceof Op))throw t;n=!1}return t}async getGhostValues(){const t=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const n="GDAL_STRUCTURAL_METADATA_SIZE=",i=n.length+100;let r=await this.getSlice(t,i);if(n===_p(r,Pd.sf.ASCII,n.length,t)){const n=_p(r,Pd.sf.ASCII,i,t).split("\n")[0],e=Number(n.split("=")[1].split(" ")[0])+n.length;e>i&&(r=await this.getSlice(t,e));const o=_p(r,Pd.sf.ASCII,e,t);this.ghostValues={},o.split("\n").filter((t=>t.length>0)).map((t=>t.split("="))).forEach((t=>{let[n,i]=t;this.ghostValues[n]=i}))}return this.ghostValues}static async fromSource(t,n,i){const r=(await t.fetch([{offset:0,length:1024}],i))[0],e=new Bd(r),o=e.getUint16(0,0);let s;if(18761===o)s=!0;else{if(19789!==o)throw new TypeError("Invalid byte order value.");s=!1}const u=e.getUint16(2,s);let a;if(42===u)a=!1;else{if(43!==u)throw new TypeError("Invalid magic number.");a=!0;if(8!==e.getUint16(4,s))throw new Error("Unsupported offset byte-size.")}const h=a?e.getUint64(8,s):e.getUint32(4,s);return new Ep(t,s,a,h,n)}close(){return"function"==typeof this.source.close&&this.source.close()}}class Tp extends jp{constructor(t,n){super(),this.mainFile=t,this.overviewFiles=n,this.imageFiles=[t].concat(n),this.fileDirectoriesPerFile=null,this.fileDirectoriesPerFileParsing=null,this.imageCount=null}async parseFileDirectoriesPerFile(){const t=[this.mainFile.parseFileDirectoryAt(this.mainFile.firstIFDOffset)].concat(this.overviewFiles.map((t=>t.parseFileDirectoryAt(t.firstIFDOffset))));return this.fileDirectoriesPerFile=await Promise.all(t),this.fileDirectoriesPerFile}async getImage(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;await this.getImageCount(),await this.parseFileDirectoriesPerFile();let n=0,i=0;for(let r=0;rt.getImageCount())));return this.imageCounts=await Promise.all(t),this.imageCount=this.imageCounts.reduce(((t,n)=>t+n),0),this.imageCount}}async function Ap(t,n){return Ep.fromSource(new xp(t),n)}const Pp="undefined"!=typeof navigator&&navigator.hardwareConcurrency||2;var Cp,kp=class{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pp,n=arguments.length>1?arguments[1]:void 0;this.workers=null,this._awaitingDecoder=null,this.size=t,this.messageId=0,t&&(this._awaitingDecoder=n?Promise.resolve(n):new Promise((t=>{i.e(231).then(i.bind(i,231)).then((n=>{t(n.create)}))})),this._awaitingDecoder.then((n=>{this._awaitingDecoder=null,this.workers=[];for(let i=0;ii.decode(t,n))):new Promise((i=>{const r=this.workers.find((t=>t.idle))||this.workers[Math.floor(Math.random()*this.size)];r.idle=!1;const e=this.messageId++,o=t=>{t.data.id===e&&(r.idle=!0,i(t.data.decoded),r.worker.removeEventListener("message",o))};r.worker.addEventListener("message",o),r.worker.postMessage({fileDirectory:t,buffer:n,id:e},[n])}))}destroy(){this.workers&&(this.workers.forEach((t=>{t.worker.terminate()})),this.workers=null)}},Ip=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Np="STATISTICS_MAXIMUM",Lp="STATISTICS_MINIMUM";function zp(t){try{return t.getBoundingBox()}catch(i){var n=t.fileDirectory;return[0,0,n.ImageWidth,n.ImageLength]}}function Rp(t){try{return t.getOrigin().slice(0,2)}catch(n){return[0,t.fileDirectory.ImageLength]}}function Fp(t,n){try{return t.getResolution(n)}catch(i){return[n.fileDirectory.ImageWidth/t.fileDirectory.ImageWidth,n.fileDirectory.ImageHeight/t.fileDirectory.ImageHeight]}}function Gp(t){var n=t.geoKeys;if(!n)return null;if(n.ProjectedCSTypeGeoKey){if(!(r=yr(i="EPSG:"+n.ProjectedCSTypeGeoKey)))(e=Nt(n.ProjLinearUnitsGeoKey))&&(r=new ei({code:i,units:e}));return r}if(n.GeographicTypeGeoKey){var i,r,e;if(!(r=yr(i="EPSG:"+n.GeographicTypeGeoKey)))(e=Nt(n.GeogAngularUnitsGeoKey))&&(r=new ei({code:i,units:e}));return r}return null}function Dp(t){return t.getImageCount().then((function(n){for(var i=new Array(n),r=0;r1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;const e=await Ep.fromSource(bp(t,i),r),o=await Promise.all(n.map((t=>Ep.fromSource(bp(t,i)))));return new Tp(e,o)}(t.url,t.overviews,n):async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;return Ep.fromSource(bp(t,n),i)}(t.url,n)).then(Dp)}function Up(t,n,i,r,e){if(Array.isArray(t)){var o=t.length;if(!Array.isArray(n)||o!=n.length){var s=new Error(r);throw e(s),s}for(var u=0;ui*t)throw new Error(r)}function Bp(t){return t instanceof Int8Array?-128:t instanceof Int16Array?-32768:t instanceof Int32Array?-2147483648:t instanceof Float32Array?12e-39:0}function Xp(t){return t instanceof Int8Array?127:t instanceof Uint8Array||t instanceof Uint8ClampedArray?255:t instanceof Int16Array?32767:t instanceof Uint16Array?65535:t instanceof Int32Array?2147483647:t instanceof Uint32Array?4294967295:t instanceof Float32Array?34e37:255}var Vp=function(t){function n(n){var i=t.call(this,{state:"loading",tileGrid:null,projection:null,opaque:n.opaque,transition:n.transition,interpolate:!1!==n.interpolate,wrapX:n.wrapX})||this;i.Qa=n.sources;var r=i.Qa.length;i.th=n.sourceOptions,i.nh=new Array(r),i.ih=new Array(r),i.rh,i.eh,i.oh,i.sh=!1!==n.normalize,i.uh=!1,i.V=null,i.ah=n.convertToRGB?"readRGB":"readRasters",i.setKey(i.Qa.map((function(t){return t.url})).join(","));for(var e=i,o=new Array(r),s=0;sw.length&&(h=o.length-w.length);var T=o[o.length-1]/w[w.length-1];l.ih[f]=T;var A=w.map((function(t){return t*T}));E="Resolution mismatch for source ".concat(f,", got [").concat(A,"] but expected [").concat(o,"]");Up(o.slice(h,o.length),A,.02,E,l.viewRejector)}else o=w,l.ih[f]=1;r?Up(r.slice(h,r.length),m,.01,"Tile size mismatch for source ".concat(f),l.viewRejector):r=m,e?Up(e.slice(h,e.length),y,0,"Tile size mismatch for source ".concat(f),l.viewRejector):e=y,l.nh[f]=c.reverse()},l=this,v=0;v=0;--d){var w=Gp(m[d]);if(w){this.projection=w;break}}}this.rh=s,this.eh=u,this.oh=a;t:for(v=0;vl||h>l;)f.push([Math.ceil(a/l),Math.ceil(h/l)]),l+=l;break;case $p:for(var v=a,d=h;v>l||d>l;)f.push([Math.ceil(v/l),Math.ceil(d/l)]),v>>=1,d>>=1;break;default:St(!1,53)}f.push([1,1]),f.reverse();for(var p=[u],y=[0],m=1,w=f.length;m1,r=i&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],e=i&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=i&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:Jp(Jp([],n.supports,!0),r,!0),formats:Jp(Jp([],n.formats,!0),e,!0),qualities:Jp(Jp([],n.qualities,!0),o,!0)}},sy[ny]=function(t){var n=t.getComplianceLevelSupportedFeatures(),i=void 0===t.imageInfo.extraFormats?n.formats:Jp(Jp([],n.formats,!0),t.imageInfo.extraFormats,!0),r=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return y(["jpg","png","gif"],t)})).reduce((function(t,n){return void 0===t&&y(i,n)?n:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?n.supports:Jp(Jp([],n.supports,!0),t.imageInfo.extraFeatures,!0),formats:i,qualities:void 0===t.imageInfo.extraQualities?n.qualities:Jp(Jp([],n.qualities,!0),t.imageInfo.extraQualities,!0),preferredFormat:r}};var uy=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var n=0;n0&&"string"==typeof this.imageInfo.profile[0]&&ey.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var n=this.getComplianceLevelEntryFromProfile(t);if(void 0!==n){var i=n.match(/level[0-2](?:\.json)?$/g);return Array.isArray(i)?i[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),n=this.getComplianceLevelFromProfile(t);return void 0===n?iy.none.none:iy[t][n]}},t.prototype.getTileSourceOptions=function(t){var n=t||{},i=this.getImageApiVersion();if(void 0!==i){var r=void 0===i?void 0:sy[i](this);if(void 0!==r)return{url:r.url,version:i,size:[this.imageInfo.width,this.imageInfo.height],sizes:r.sizes,format:void 0!==n.format&&y(r.formats,n.format)?n.format:void 0!==r.preferredFormat?r.preferredFormat:"jpg",supports:r.supports,quality:n.quality&&y(r.qualities,n.quality)?n.quality:y(r.qualities,"native")?"native":"default",resolutions:Array.isArray(r.resolutions)?r.resolutions.sort((function(t,n){return n-t})):void 0,tileSize:r.tileSize}}},t}(),ay=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function hy(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var fy=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=r.url||"";o+=o.lastIndexOf("/")===o.length-1||""===o?"":"/";var s=r.version||ty,u=r.sizes||[],a=r.size;St(null!=a&&Array.isArray(a)&&2==a.length&&!isNaN(a[0])&&a[0]>0&&!isNaN(a[1])&&a[1]>0,60);var h,f,c,l=a[0],v=a[1],d=r.tileSize,p=r.tilePixelRatio||1,m=r.format||"jpg",w=r.quality||(r.version==Qp?"native":"default"),g=r.resolutions||[],b=r.supports||[],x=r.extent||[0,-v,l,0],M=null!=u&&Array.isArray(u)&&u.length>0,_=void 0!==d&&("number"==typeof d&&Number.isInteger(d)&&d>0||Array.isArray(d)&&d.length>0),S=null!=b&&Array.isArray(b)&&(y(b,"regionByPx")||y(b,"regionByPct"))&&(y(b,"sizeByWh")||y(b,"sizeByH")||y(b,"sizeByW")||y(b,"sizeByPct"));if(g.sort((function(t,n){return n-t})),_||S)if(null!=d&&("number"==typeof d&&Number.isInteger(d)&&d>0?(h=d,f=d):Array.isArray(d)&&d.length>0&&((1==d.length||null==d[1]&&Number.isInteger(d[0]))&&(h=d[0],f=d[0]),2==d.length&&(Number.isInteger(d[0])&&Number.isInteger(d[1])?(h=d[0],f=d[1]):null==d[0]&&Number.isInteger(d[1])&&(h=d[1],f=d[1])))),void 0!==h&&void 0!==f||(h=Pu,f=Pu),0==g.length)for(var O=c=Math.max(Math.ceil(Math.log(l/h)/Math.LN2),Math.ceil(Math.log(v/f)/Math.LN2));O>=0;O--)g.push(Math.pow(2,O));else{var j=Math.max.apply(Math,g);c=Math.round(Math.log(j)/Math.LN2)}else if(h=l,f=v,g=[],M){u.sort((function(t,n){return t[0]-n[0]})),c=-1;var E=[];for(O=0;O0&&g[g.length-1]==T?E.push(O):(g.push(T),c++)}if(E.length>0)for(O=0;Oc)){var d=t[1],p=t[2],x=g[a];if(!(void 0===d||void 0===p||void 0===x||d<0||Math.ceil(l/x/h)<=d||p<0||Math.ceil(v/x/f)<=p)){if(S||_){var O=d*h*x,j=p*f*x,E=h*x,T=f*x,A=h,P=f;if(O+E>l&&(E=l-O),j+T>v&&(T=v-j),O+h*x>l&&(A=Math.floor((l-O+x-1)/x)),j+f*x>v&&(P=Math.floor((v-j+x-1)/x)),0==O&&E==l&&0==j&&T==v)r="full";else if(!S||y(b,"regionByPx"))r=O+","+j+","+E+","+T;else if(y(b,"regionByPct")){r="pct:"+hy(O/l*100)+","+hy(j/v*100)+","+hy(E/l*100)+","+hy(T/v*100)}s!=ny||S&&!y(b,"sizeByWh")?!S||y(b,"sizeByW")?e=A+",":y(b,"sizeByH")?e=","+P:y(b,"sizeByWh")?e=A+","+P:y(b,"sizeByPct")&&(e="pct:"+hy(100/x)):e=A+","+P}else if(r="full",M){var C=u[a][0],k=u[a][1];e=s==ny?C==l&&k==v?"max":C+","+k:C==l?"full":C+","}else e=s==ny?"max":"full";return o+r+"/"+e+"/0/"+w+"."+m}}},transition:r.transition})||this).zDirection=r.zDirection,i}return ay(n,t),n}(Vv),cy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ly=function(t){function n(n,i,r,e,o,s,u){var a=this,h=n.getExtent(),f=i.getExtent(),c=f?Wn(r,f):r,l=mf(n,i,qn(c),e),v=new qc(n,i,c,h,.5*l,e),d=s(v.calculateSourceExtent(),l,o),p=d?lo:mo,y=d?d.getPixelRatio():1;return(a=t.call(this,r,e,y,p)||this).vs=i,a.ps=h,a.Is=v,a.wi=e,a.dh=r,a.ph=d,a.yh=y,a.da=u,a.qt=null,a.mh=null,a}return cy(n,t),n.prototype.disposeInternal=function(){this.state==vo&&this.wh(),t.prototype.disposeInternal.call(this)},n.prototype.getImage=function(){return this.qt},n.prototype.getProjection=function(){return this.vs},n.prototype.Ns=function(){var t=this.ph.getState();if(t==po){var n=$n(this.dh)/this.wi,i=Vn(this.dh)/this.wi;this.qt=gf(n,i,this.yh,this.ph.getResolution(),this.ps,this.wi,this.dh,this.Is,[{extent:this.ph.getExtent(),image:this.ph.getImage()}],0,void 0,this.da)}this.state=t,this.changed()},n.prototype.load=function(){if(this.state==lo){this.state=vo,this.changed();var t=this.ph.getState();t==po||t==yo?this.Ns():(this.mh=$(this.ph,L,(function(t){var n=this.ph.getState();n!=po&&n!=yo||(this.wh(),this.Ns())}),this),this.ph.load())}},n.prototype.wh=function(){H(this.mh),this.mh=null},n}(co),vy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),dy="imageloadstart",py="imageloadend",yy="imageloaderror",my=function(t){function n(n,i){var r=t.call(this,n)||this;return r.image=i,r}return vy(n,t),n}(c);function wy(t,n){t.getImage().src=n}var gy=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,projection:n.projection,state:n.state,interpolate:r})||this).on,i.once,i.un,i.Ti=void 0!==n.resolutions?n.resolutions:null,i.gh=null,i.bh=0,i}return vy(n,t),n.prototype.getResolutions=function(){return this.Ti},n.prototype.findNearestResolution=function(t){if(this.Ti){var n=m(this.Ti,t,0);t=this.Ti[n]}return t},n.prototype.getImage=function(t,n,i,r){var e=this.getProjection();if(e&&r&&!Sr(e,r)){if(this.gh){if(this.bh==this.getRevision()&&Sr(this.gh.getProjection(),r)&&this.gh.getResolution()==n&&An(this.gh.getExtent(),t))return this.gh;this.gh.dispose(),this.gh=null}return this.gh=new ly(e,r,t,n,i,function(t,n,i){return this.getImageInternal(t,n,i,e)}.bind(this),this.getInterpolate()),this.bh=this.getRevision(),this.gh}return e&&(r=e),this.getImageInternal(t,n,i,r)},n.prototype.getImageInternal=function(t,n,i,e){return r()},n.prototype.handleImageChange=function(t){var n,i=t.target;switch(i.getState()){case vo:this.loading=!0,n=dy;break;case po:this.loading=!1,n=py;break;case yo:this.loading=!1,n=yy;break;default:return}this.hasListener(n)&&this.dispatchEvent(new my(n,i))},n}(zv),by=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xy=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions})||this).Bt=void 0!==r.crossOrigin?r.crossOrigin:null,i._a=void 0===r.hidpi||r.hidpi,i.Fe=r.url,i.Rt=void 0!==r.imageLoadFunction?r.imageLoadFunction:wy,i.xh=r.params||{},i.Lt=null,i.Mh=[0,0],i._h=0,i.Sh=void 0!==r.ratio?r.ratio:1.5,i}return by(n,t),n.prototype.getParams=function(){return this.xh},n.prototype.getImageInternal=function(t,n,i,r){if(void 0===this.Fe)return null;n=this.findNearestResolution(n),i=this._a?i:1;var e=this.Lt;if(e&&this._h==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&xn(e.getExtent(),t))return e;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};A(o,this.xh);var s=((t=t.slice())[0]+t[2])/2,u=(t[1]+t[3])/2;if(1!=this.Sh){var a=this.Sh*$n(t)/2,h=this.Sh*Vn(t)/2;t[0]=s-a,t[1]=u-h,t[2]=s+a,t[3]=u+h}var f=n/i,c=Math.ceil($n(t)/f),l=Math.ceil(Vn(t)/f);t[0]=s-f*c/2,t[2]=s+f*c/2,t[1]=u-f*l/2,t[3]=u+f*l/2,this.Mh[0]=c,this.Mh[1]=l;var v=this.Oh(t,this.Mh,i,r,o);return this.Lt=new bo(t,n,i,v,this.Bt,this.Rt),this._h=this.getRevision(),this.Lt.addEventListener(L,this.handleImageChange.bind(this)),this.Lt},n.prototype.getImageLoadFunction=function(){return this.Rt},n.prototype.Oh=function(t,n,i,r,e){var o=r.getCode().split(/:(?=\d+$)/).pop();e.SIZE=n[0]+","+n[1],e.BBOX=t.join(","),e.BBOXSR=o,e.IMAGESR=o,e.DPI=Math.round(90*i);var s=this.Fe,u=s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return u==s&&St(!1,50),Nf(u,e)},n.prototype.getUrl=function(){return this.Fe},n.prototype.setImageLoadFunction=function(t){this.Lt=null,this.Rt=t,this.changed()},n.prototype.setUrl=function(t){t!=this.Fe&&(this.Fe=t,this.Lt=null,this.changed())},n.prototype.updateParams=function(t){A(this.xh,t),this.Lt=null,this.changed()},n}(gy),My=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_y=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions,state:r.state})||this).jh=r.canvasFunction,i.qt=null,i._h=0,i.Sh=void 0!==r.ratio?r.ratio:1.5,i}return My(n,t),n.prototype.getImageInternal=function(t,n,i,r){n=this.findNearestResolution(n);var e=this.qt;if(e&&this._h==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&xn(e.getExtent(),t))return e;Qn(t=t.slice(),this.Sh);var o=[$n(t)/n*i,Vn(t)/n*i],s=this.jh.call(this,t,n,i,o,r);return s&&(e=new Mo(t,n,i,s)),this.qt=e,this._h=this.getRevision(),e},n}(gy),Sy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();var Oy=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{interpolate:r,projection:n.projection,resolutions:n.resolutions})||this).Bt=void 0!==n.crossOrigin?n.crossOrigin:null,i.Eh=void 0!==n.displayDpi?n.displayDpi:96,i.xh=n.params||{},i.Fe=n.url,i.Rt=void 0!==n.imageLoadFunction?n.imageLoadFunction:wy,i._a=void 0===n.hidpi||n.hidpi,i.dt=void 0!==n.metersPerUnit?n.metersPerUnit:1,i.Sh=void 0!==n.ratio?n.ratio:1,i.Th=void 0!==n.useOverlay&&n.useOverlay,i.Lt=null,i._h=0,i}return Sy(n,t),n.prototype.getParams=function(){return this.xh},n.prototype.getImageInternal=function(t,n,i,r){n=this.findNearestResolution(n),i=this._a?i:1;var e=this.Lt;if(e&&this._h==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&xn(e.getExtent(),t))return e;1!=this.Sh&&Qn(t=t.slice(),this.Sh);var o=[$n(t)/n*i,Vn(t)/n*i];if(void 0!==this.Fe){var s=this.getUrl(this.Fe,this.xh,t,o,r);(e=new bo(t,n,i,s,this.Bt,this.Rt)).addEventListener(L,this.handleImageChange.bind(this))}else e=null;return this.Lt=e,this._h=this.getRevision(),e},n.prototype.getImageLoadFunction=function(){return this.Rt},n.prototype.updateParams=function(t){A(this.xh,t),this.changed()},n.prototype.getUrl=function(t,n,i,r,e){var o=function(t,n,i,r){var e=$n(t),o=Vn(t),s=n[0],u=n[1],a=.0254/r;return u*e>s*o?e*i/(s*a):o*i/(u*a)}(i,r,this.dt,this.Eh),s=qn(i),u={OPERATION:this.Th?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.Eh,SETDISPLAYWIDTH:Math.round(r[0]),SETDISPLAYHEIGHT:Math.round(r[1]),SETVIEWSCALE:o,SETVIEWCENTERX:s[0],SETVIEWCENTERY:s[1]};return A(u,n),Nf(t,u)},n.prototype.setImageLoadFunction=function(t){this.Lt=null,this.Rt=t,this.changed()},n}(gy),jy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ey=function(t){function n(n){var i=this,r=void 0!==n.crossOrigin?n.crossOrigin:null,e=void 0!==n.imageLoadFunction?n.imageLoadFunction:wy,o=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(o=n.interpolate),(i=t.call(this,{attributions:n.attributions,interpolate:o,projection:yr(n.projection)})||this).Fe=n.url,i.Ah=n.imageExtent,i.Lt=new bo(i.Ah,void 0,1,i.Fe,r,e),i.Mh=n.imageSize?n.imageSize:null,i.Lt.addEventListener(L,i.handleImageChange.bind(i)),i}return jy(n,t),n.prototype.getImageExtent=function(){return this.Ah},n.prototype.getImageInternal=function(t,n,i,r){return Kn(t,this.Lt.getExtent())?this.Lt:null},n.prototype.getUrl=function(){return this.Fe},n.prototype.handleImageChange=function(n){if(this.Lt.getState()==po){var i=this.Lt.getExtent(),r=this.Lt.getImage(),e=void 0,o=void 0;this.Mh?(e=this.Mh[0],o=this.Mh[1]):(e=r.width,o=r.height);var s=$n(i),u=Vn(i),a=s/e,h=u/o,f=e,c=o;if(a>h?f=Math.round(s/h):c=Math.round(u/a),f!==e||c!==o){var l=_o(f,c);this.getInterpolate()||A(l,lf);var v=l.canvas;l.drawImage(r,0,0,e,o,0,0,v.width,v.height),this.Lt.setImage(v)}}t.prototype.handleImageChange.call(this,n)},n}(gy),Ty="1.3.0",Ay=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Py=[101,101],Cy=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions})||this).Bt=void 0!==r.crossOrigin?r.crossOrigin:null,i.Fe=r.url,i.Rt=void 0!==r.imageLoadFunction?r.imageLoadFunction:wy,i.xh=r.params||{},i.Ph=!0,i.Ch(),i.kh=r.serverType,i._a=void 0===r.hidpi||r.hidpi,i.Lt=null,i.Mh=[0,0],i._h=0,i.Sh=void 0!==r.ratio?r.ratio:1.5,i}return Ay(n,t),n.prototype.getFeatureInfoUrl=function(t,n,i,r){if(void 0!==this.Fe){var e=yr(i),o=this.getProjection();o&&o!==e&&(n=mf(o,e,t,n),t=Er(t,e,o));var s=Bn(t,n,0,Py),u={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.xh.LAYERS};A(u,this.xh,r);var a=mi((t[0]-s[0])/n,4),h=mi((s[3]-t[1])/n,4);return u[this.Ph?"I":"X"]=a,u[this.Ph?"J":"Y"]=h,this.Oh(s,Py,1,o||e,u)}},n.prototype.getLegendUrl=function(t,n){if(void 0!==this.Fe){var i={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===n||void 0===n.LAYER){var r=this.xh.LAYERS;if(!(!Array.isArray(r)||1===r.length))return;i.LAYER=r}if(void 0!==t){var e=this.getProjection()?this.getProjection().getMetersPerUnit():1;i.SCALE=t*e/28e-5}return A(i,n),Nf(this.Fe,i)}},n.prototype.getParams=function(){return this.xh},n.prototype.getImageInternal=function(t,n,i,r){if(void 0===this.Fe)return null;n=this.findNearestResolution(n),1==i||this._a&&void 0!==this.kh||(i=1);var e=n/i,o=qn(t),s=Bn(o,e,0,[wi($n(t)/e,4),wi(Vn(t)/e,4)]),u=Bn(o,e,0,[wi(this.Sh*$n(t)/e,4),wi(this.Sh*Vn(t)/e,4)]),a=this.Lt;if(a&&this._h==this.getRevision()&&a.getResolution()==n&&a.getPixelRatio()==i&&xn(a.getExtent(),s))return a;var h={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};A(h,this.xh),this.Mh[0]=yi($n(u)/e,4),this.Mh[1]=yi(Vn(u)/e,4);var f=this.Oh(u,this.Mh,i,r,h);return this.Lt=new bo(u,n,i,f,this.Bt,this.Rt),this._h=this.getRevision(),this.Lt.addEventListener(L,this.handleImageChange.bind(this)),this.Lt},n.prototype.getImageLoadFunction=function(){return this.Rt},n.prototype.Oh=function(t,n,i,r,e){if(St(void 0!==this.Fe,9),e[this.Ph?"CRS":"SRS"]=r.getCode(),"STYLES"in this.xh||(e.STYLES=""),1!=i)switch(this.kh){case"geoserver":var o=90*i+.5|0;"FORMAT_OPTIONS"in e?e.FORMAT_OPTIONS+=";dpi:"+o:e.FORMAT_OPTIONS="dpi:"+o;break;case"mapserver":e.MAP_RESOLUTION=90*i;break;case"carmentaserver":case"qgis":e.DPI=90*i;break;default:St(!1,8)}e.WIDTH=n[0],e.HEIGHT=n[1];var s,u=r.getAxisOrientation();return s=this.Ph&&"ne"==u.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,e.BBOX=s.join(","),Nf(this.Fe,e)},n.prototype.getUrl=function(){return this.Fe},n.prototype.setImageLoadFunction=function(t){this.Lt=null,this.Rt=t,this.changed()},n.prototype.setUrl=function(t){t!=this.Fe&&(this.Fe=t,this.Lt=null,this.changed())},n.prototype.updateParams=function(t){A(this.xh,t),this.Ch(),this.Lt=null,this.changed()},n.prototype.Ch=function(){var t=this.xh.VERSION||Ty;this.Ph=Xi(t,"1.3")>=0},n}(gy),ky={"image/png":!0,"image/jpeg":!0,"image/gif":!0,"image/webp":!0},Iy={"application/vnd.mapbox-vector-tile":!0,"application/geo+json":!0};function Ny(t,n){for(var i,r,e=0;el.maxTileCol||h.tileRowl.maxTileRow)return}A(h,T);var v=i.replace(/\{(\w+?)\}/g,(function(t,n){return h[n]}));return Qh(P,v)}}}}function Ry(t){return Jh(t.url).then((function(n){return function(t,n){var i,r=n.tileMatrixSetLimits;if("map"===n.dataType)i=Ny(n.links,t.mediaType);else{if("vector"!==n.dataType)throw new Error('Expected tileset data type to be "map" or "vector"');i=Ly(n.links,t.mediaType,t.supportedMediaTypes)}if(n.tileMatrixSet)return zy(t,n.tileMatrixSet,i,r);var e=n.links.find((function(t){return"http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme"===t.rel}));if(!e)throw new Error("Expected http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme link or tileMatrixSet");var o=e.href;return Jh(Qh(t.url,o)).then((function(n){return zy(t,n,i,r)}))}(t,n)}))}var Fy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Gy=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:"loading",tileLoadFunction:n.tileLoadFunction,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this,Ry({url:n.url,projection:i.getProjection(),mediaType:n.mediaType,context:n.context||null}).then(i.Ih.bind(i)).catch(i.Nh.bind(i)),i}return Fy(n,t),n.prototype.Ih=function(t){this.tileGrid=t.grid,this.setTileUrlFunction(t.urlFunction,t.urlTemplate),this.setState("ready")},n.prototype.Nh=function(t){console.error(t),this.setState("error")},n}(Vv),Dy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qy=function(t){function n(n){var i=this,r=n.projection||"EPSG:3857",e=n.extent||Tf(r),o=n.tileGrid||Of({extent:e,maxResolution:n.maxResolution,maxZoom:void 0!==n.maxZoom?n.maxZoom:22,minZoom:n.minZoom,tileSize:n.tileSize||512});return(i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,cacheSize:n.cacheSize,interpolate:!0,opaque:!1,projection:r,state:n.state,tileGrid:o,tileLoadFunction:n.tileLoadFunction?n.tileLoadFunction:Uy,tileUrlFunction:n.tileUrlFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:void 0===n.zDirection?1:n.zDirection})||this).ze=n.format?n.format:null,i.sourceTileCache=new Ih(i.tileCache.highWaterMark),i.za=null==n.overlaps||n.overlaps,i.tileClass=n.tileClass?n.tileClass:qh,i.Lh={},i}return Dy(n,t),n.prototype.getFeaturesInExtent=function(t){var n=[],i=this.tileCache;if(0===i.getCount())return n;var r=Ah(i.peekFirstKey())[0],e=this.tileGrid;return i.forEach((function(i){if(i.tileCoord[0]===r&&i.getState()===vt)for(var o=i.getSourceTiles(),s=0,u=o.length;s=s.width)return null;var h=Vn(o),f=Math.floor(s.height*((o[3]-r[1])/h));return f<0||f>=s.height?null:this.getImageData(s,a,f)},n.prototype.renderFrame=function(t,n){var i=this.Lt,r=i.getExtent(),e=i.getResolution(),o=i.getPixelRatio(),s=t.layerStatesArray[t.layerIndex],u=t.pixelRatio,a=t.viewState,h=a.center,f=u*e/(a.resolution*o),c=t.extent,l=a.resolution,v=a.rotation,d=Math.round($n(c)/l*u),p=Math.round(Vn(c)/l*u);sn(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/u,1/u,v,-d/2,-p/2),un(this.inversePixelTransform,this.pixelTransform);var y=hn(this.pixelTransform);this.useContainer(n,y,this.getBackground(t));var m=this.context,w=m.canvas;w.width!=d||w.height!=p?(w.width=d,w.height=p):this.containerReused||m.clearRect(0,0,d,p);var g=!1,b=!0;if(s.extent){var x=Lr(s.extent,a.projection);(g=(b=Kn(x,t.extent))&&!xn(x,t.extent))&&this.clipUnrotated(m,t,x)}var M=i.getImage(),_=sn(this.tempTransform,d/2,p/2,f,f,0,o*(r[0]-h[0])/e,o*(h[1]-r[3])/e);this.renderedResolution=e*u/o;var S=M.width*_[0],O=M.height*_[3];if(this.getLayer().getSource().getInterpolate()||A(m,lf),this.preRender(m,t),b&&S>=.5&&O>=.5){var j=_[4],E=_[5],T=s.opacity,P=void 0;1!==T&&(P=m.globalAlpha,m.globalAlpha=T),m.drawImage(M,0,0,+M.width,+M.height,j,E,S,O),1!==T&&(m.globalAlpha=P)}return this.postRender(m,t),g&&m.restore(),A(m,vf),y!==w.style.transform&&(w.style.transform=y),this.container},n}(tm),rm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),em=function(t){function n(n){return t.call(this,n)||this}return rm(n,t),n.prototype.createRenderer=function(){return new im(this)},n.prototype.getData=function(n){return t.prototype.getData.call(this,n)},n}($y),om="preload",sm="useInterimTilesOnError",um=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),am=function(t){function n(n){var i=this,r=n||{},e=A({},r);return delete e.preload,delete e.useInterimTilesOnError,(i=t.call(this,e)||this).on,i.once,i.un,i.setPreload(void 0!==r.preload?r.preload:0),i.setUseInterimTilesOnError(void 0===r.useInterimTilesOnError||r.useInterimTilesOnError),i}return um(n,t),n.prototype.getPreload=function(){return this.get(om)},n.prototype.setPreload=function(t){this.set(om,t)},n.prototype.getUseInterimTilesOnError=function(){return this.get(sm)},n.prototype.setUseInterimTilesOnError=function(t){this.set(sm,t)},n.prototype.getData=function(n){return t.prototype.getData.call(this,n)},n}(ls),hm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fm=function(t){function n(n){var i=t.call(this,n)||this;return i.extentChanged=!0,i.zh=null,i.renderedPixelRatio,i.renderedProjection=null,i.renderedRevision,i.renderedTiles=[],i.Rh=!1,i.tmpExtent=[1/0,1/0,-1/0,-1/0],i.Fh=new zh(0,0,0,0),i}return hm(n,t),n.prototype.isDrawableTile=function(t){var n=this.getLayer(),i=t.getState(),r=n.getUseInterimTilesOnError();return i==vt||i==pt||i==dt&&!r},n.prototype.getTile=function(t,n,i,r){var e=r.pixelRatio,o=r.viewState.projection,s=this.getLayer(),u=s.getSource().getTile(t,n,i,e,o);return u.getState()==dt&&(s.getUseInterimTilesOnError()?s.getPreload()>0&&(this.Rh=!0):u.setState(vt)),this.isDrawableTile(u)||(u=u.getInterimTile()),u},n.prototype.getData=function(t){var n=this.frameState;if(!n)return null;var i=this.getLayer(),r=tn(n.pixelToCoordinateTransform,t.slice()),e=i.getExtent();if(e&&!bn(e,r))return null;for(var o=n.pixelRatio,s=n.viewState.projection,u=n.viewState,a=i.getRenderSource(),h=a.getTileGridForProjection(u.projection),f=a.getTilePixelRatio(n.pixelRatio),c=h.getZForResolution(u.resolution);c>=h.getMinZoom();--c){var l=h.getTileCoordForCoordAndZ(r,c),v=a.getTile(c,l[1],l[2],o,s);if(!(v instanceof ko||v instanceof Bc))return null;if(v.getState()===vt){var d=h.getOrigin(c),p=Qu(h.getTileSize(c)),y=h.getResolution(c),m=Math.floor(f*((r[0]-d[0])/y-l[1]*p[0])),w=Math.floor(f*((d[1]-r[1])/y-l[2]*p[1])),g=Math.round(f*a.getGutterForProjection(u.projection));return this.getImageData(v.getImage(),m+g,w+g)}}return null},n.prototype.loadedTileCallback=function(n,i,r){return!!this.isDrawableTile(r)&&t.prototype.loadedTileCallback.call(this,n,i,r)},n.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},n.prototype.renderFrame=function(t,n){var i=t.layerStatesArray[t.layerIndex],r=t.viewState,e=r.projection,s=r.resolution,u=r.center,a=r.rotation,h=t.pixelRatio,f=this.getLayer(),c=f.getSource(),l=c.getRevision(),v=c.getTileGridForProjection(e),d=v.getZForResolution(s,c.zDirection),y=v.getResolution(d),m=t.extent,w=t.viewState.resolution,g=c.getTilePixelRatio(h),b=Math.round($n(m)/w*h),x=Math.round(Vn(m)/w*h),M=i.extent&&Lr(i.extent,e);M&&(m=Wn(m,Lr(i.extent,e)));var _=y*b/2/g,S=y*x/2/g,O=[u[0]-_,u[1]-S,u[0]+_,u[1]+S],j=v.getTileRangeForExtentAndZ(m,d),E={};E[d]={};var T=this.createLoadedTileFinder(c,e,E),P=this.tmpExtent,C=this.Fh;this.Rh=!1;for(var k=a?Xn(r.center,w,a,t.size):void 0,I=j.minX;I<=j.maxX;++I)for(var N=j.minY;N<=j.maxY;++N)if(!a||v.tileCoordIntersectsViewport([d,I,N],k)){var L=this.getTile(d,I,N,t);if(this.isDrawableTile(L)){var z=o(this);if(L.getState()==vt)E[d][L.tileCoord.toString()]=L,(ot=L.inTransition(z))&&1!==i.opacity&&(L.endTransition(z),ot=!1),this.Rh||!ot&&-1!==this.renderedTiles.indexOf(L)||(this.Rh=!0);if(1===L.getAlpha(z,t.time))continue}var R=v.getTileCoordChildTileRange(L.tileCoord,C,P),F=!1;R&&(F=T(d+1,R)),F||v.forEachTileCoordParentTileRange(L.tileCoord,T,C,P)}var G=y/s*h/g;sn(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/h,1/h,a,-b/2,-x/2);var D=hn(this.pixelTransform);this.useContainer(n,D,this.getBackground(t));var q=this.context,U=q.canvas;un(this.inversePixelTransform,this.pixelTransform),sn(this.tempTransform,b/2,x/2,G,G,0,-b/2,-x/2),U.width!=b||U.height!=x?(U.width=b,U.height=x):this.containerReused||q.clearRect(0,0,b,x),M&&this.clipUnrotated(q,t,M),c.getInterpolate()||A(q,lf),this.preRender(q,t),this.renderedTiles.length=0;var B,X,V,W=Object.keys(E).map(Number);W.sort(p),1!==i.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(B=[],X=[]):W=W.reverse();for(var Y=W.length-1;Y>=0;--Y){var Z=W[Y],$=c.getTilePixelSize(Z,h,e),K=v.getResolution(Z)/y,H=$[0]*K*G,J=$[1]*K*G,Q=v.getTileCoordForCoordAndZ(Yn(O),Z),tt=v.getTileCoordExtent(Q),nt=tn(this.tempTransform,[g*(tt[0]-O[0])/y,g*(O[3]-tt[3])/y]),it=g*c.getGutterForProjection(e),rt=E[Z];for(var et in rt){var ot,st=(L=rt[et]).tileCoord,ut=Q[1]-st[1],at=Math.round(nt[0]-(ut-1)*H),ht=Q[2]-st[2],ft=Math.round(nt[1]-(ht-1)*J),ct=at-(I=Math.round(nt[0]-ut*H)),lt=ft-(N=Math.round(nt[1]-ht*J)),dt=d===Z,pt=!1;if(!(ot=dt&&1!==L.getAlpha(o(this),t.time)))if(B){V=[I,N,I+ct,N,I+ct,N+lt,I,N+lt];for(var yt=0,mt=B.length;ytthis._maxQueueLength;)this._queue.shift().callback(null,null)},n.prototype._dispatch=function(){if(!this._running&&0!==this._queue.length){var t=this._queue.shift();this._job=t;var n=t.inputs[0].width,i=t.inputs[0].height,r=t.inputs.map((function(t){return t.data.buffer})),e=this._workers.length;if(this._running=e,1!==e)for(var o=t.inputs[0].data.length,s=4*Math.ceil(o/4/e),u=0;uStamen Design, under CC BY 3.0.',Wy],Cm={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},km={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},Im=function(t){function n(n){var i=void 0===n.imageSmoothing||n.imageSmoothing;void 0!==n.interpolate&&(i=n.interpolate);var r=n.layer.indexOf("-"),e=-1==r?n.layer:n.layer.slice(0,r),o=km[e],s=Cm[n.layer],u=void 0!==n.url?n.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+n.layer+"/{z}/{x}/{y}."+s.extension;return t.call(this,{attributions:Pm,cacheSize:n.cacheSize,crossOrigin:"anonymous",interpolate:i,maxZoom:null!=n.maxZoom?n.maxZoom:o.maxZoom,minZoom:null!=n.minZoom?n.minZoom:o.minZoom,opaque:s.opaque,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,transition:n.transition,url:u,wrapX:n.wrapX,zDirection:n.zDirection})||this}return Am(n,t),n}(Kv),Nm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Lm=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,projection:r.projection,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:r.tileGrid,tileLoadFunction:r.tileLoadFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,zDirection:r.zDirection})||this).xh=r.params||{},i._a=void 0===r.hidpi||r.hidpi,i.Ao=[1/0,1/0,-1/0,-1/0],i.setKey(i.$h()),i}return Nm(n,t),n.prototype.$h=function(){var t=0,n=[];for(var i in this.xh)n[t++]=i+"-"+this.xh[i];return n.join("/")},n.prototype.getParams=function(){return this.xh},n.prototype.Oh=function(t,n,i,r,e,o){var s=this.urls;if(s){var u,a=e.getCode().split(/:(?=\d+$)/).pop();if(o.SIZE=n[0]+","+n[1],o.BBOX=i.join(","),o.BBOXSR=a,o.IMAGESR=a,o.DPI=Math.round(o.DPI?o.DPI*r:90*r),1==s.length)u=s[0];else u=s[vi(Ph(t),s.length)];return Nf(u.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},n.prototype.getTilePixelRatio=function(t){return this._a?t:1},n.prototype.updateParams=function(t){A(this.xh,t),this.setKey(this.$h())},n.prototype.tileUrlFunction=function(t,n,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){1==n||this._a||(n=1);var e=r.getTileCoordExtent(t,this.Ao),o=Qu(r.getTileSize(t[0]),this.tmpSize);1!=n&&(o=Ju(o,n,this.tmpSize));var s={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return A(s,this.xh),this.Oh(t,o,e,n,i,s)}},n}(Vv),zm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Rm=function(t){function n(n){var i=this,r=n||{};return i=t.call(this,{opaque:!1,projection:r.projection,tileGrid:r.tileGrid,wrapX:void 0===r.wrapX||r.wrapX,zDirection:r.zDirection,url:r.template||"z:{z} x:{x} y:{y}",tileLoadFunction:function(t,n){var r=t.getTileCoord()[0],e=Qu(i.tileGrid.getTileSize(r)),o=_o(e[0],e[1]);o.strokeStyle="grey",o.strokeRect(.5,.5,e[0]+.5,e[1]+.5),o.fillStyle="grey",o.strokeStyle="white",o.textAlign="center",o.textBaseline="middle",o.font="24px sans-serif",o.lineWidth=4,o.strokeText(n,e[0]/2,e[1]/2,e[0]),o.fillText(n,e[0]/2,e[1]/2,e[0]),t.setImage(o.canvas)}})||this}return zm(n,t),n}(Kv),Fm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Gm=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;if(void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:yr("EPSG:3857"),reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:"loading",tileLoadFunction:n.tileLoadFunction,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).Kh=null,i.jo=n.tileSize,n.url)if(n.jsonp)Zh(n.url,i.handleTileJSONResponse.bind(i),i.handleTileJSONError.bind(i));else{var e=new XMLHttpRequest;e.addEventListener("load",i.Hh.bind(i)),e.addEventListener("error",i.Jh.bind(i)),e.open("GET",n.url),e.send()}else n.tileJSON?i.handleTileJSONResponse(n.tileJSON):St(!1,51);return i}return Fm(n,t),n.prototype.Hh=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},n.prototype.Jh=function(t){this.handleTileJSONError()},n.prototype.getTileJSON=function(){return this.Kh},n.prototype.handleTileJSONResponse=function(t){var n,i=yr("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var e=Or(i,r);n=ni(t.bounds,e)}var o=Tf(r),s=t.minzoom||0,u=Of({extent:o,maxZoom:t.maxzoom||22,minZoom:s,tileSize:this.jo});if(this.tileGrid=u,this.tileUrlFunction=Pf(t.tiles,u),void 0!==t.attribution&&!this.getAttributions()){var a=void 0!==n?n:o;this.setAttributions((function(n){return Kn(a,n.extent)?[t.attribution]:null}))}this.Kh=t,this.setState("ready")},n.prototype.handleTileJSONError=function(){this.setState("error")},n}(Vv),Dm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qm=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=r.params||{},s=!("TRANSPARENT"in o)||o.TRANSPARENT;return(i=t.call(this,{attributions:r.attributions,attributionsCollapsible:r.attributionsCollapsible,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,opaque:!s,projection:r.projection,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileClass:r.tileClass,tileGrid:r.tileGrid,tileLoadFunction:r.tileLoadFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,zDirection:r.zDirection})||this).js=void 0!==r.gutter?r.gutter:0,i.xh=o,i.Ph=!0,i.kh=r.serverType,i._a=void 0===r.hidpi||r.hidpi,i.Ao=[1/0,1/0,-1/0,-1/0],i.Ch(),i.setKey(i.$h()),i}return Dm(n,t),n.prototype.getFeatureInfoUrl=function(t,n,i,r){var e=yr(i),o=this.getProjection(),s=this.getTileGrid();s||(s=this.getTileGridForProjection(e));var u=s.getZForResolution(n,this.zDirection),a=s.getTileCoordForCoordAndZ(t,u);if(!(s.getResolutions().length<=a[0])){var h=s.getResolution(a[0]),f=s.getTileCoordExtent(a,this.Ao),c=Qu(s.getTileSize(a[0]),this.tmpSize),l=this.js;0!==l&&(c=Ku(c,l,this.tmpSize),f=mn(f,h*l,f)),o&&o!==e&&(h=mf(o,e,t,h),f=Tr(f,e,o),t=Er(t,e,o));var v={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.xh.LAYERS};A(v,this.xh,r);var d=Math.floor((t[0]-f[0])/h),p=Math.floor((f[3]-t[1])/h);return v[this.Ph?"I":"X"]=d,v[this.Ph?"J":"Y"]=p,this.Oh(a,c,f,1,o||e,v)}},n.prototype.getLegendUrl=function(t,n){if(void 0!==this.urls[0]){var i={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===n||void 0===n.LAYER){var r=this.xh.LAYERS;if(!(!Array.isArray(r)||1===r.length))return;i.LAYER=r}if(void 0!==t){var e=this.getProjection()?this.getProjection().getMetersPerUnit():1;i.SCALE=t*e/28e-5}return A(i,n),Nf(this.urls[0],i)}},n.prototype.getGutter=function(){return this.js},n.prototype.getParams=function(){return this.xh},n.prototype.Oh=function(t,n,i,r,e,o){var s=this.urls;if(s){if(o.WIDTH=n[0],o.HEIGHT=n[1],o[this.Ph?"CRS":"SRS"]=e.getCode(),"STYLES"in this.xh||(o.STYLES=""),1!=r)switch(this.kh){case"geoserver":var u=90*r+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+u:o.FORMAT_OPTIONS="dpi:"+u;break;case"mapserver":o.MAP_RESOLUTION=90*r;break;case"carmentaserver":case"qgis":o.DPI=90*r;break;default:St(!1,52)}var a,h=e.getAxisOrientation(),f=i;if(this.Ph&&"ne"==h.substr(0,2)){var c=void 0;c=i[0],f[0]=i[1],f[1]=c,c=i[2],f[2]=i[3],f[3]=c}if(o.BBOX=f.join(","),1==s.length)a=s[0];else a=s[vi(Ph(t),s.length)];return Nf(a,o)}},n.prototype.getTilePixelRatio=function(t){return this._a&&void 0!==this.kh?t:1},n.prototype.$h=function(){var t=0,n=[];for(var i in this.xh)n[t++]=i+"-"+this.xh[i];return n.join("/")},n.prototype.updateParams=function(t){A(this.xh,t),this.Ch(),this.setKey(this.$h())},n.prototype.Ch=function(){var t=this.xh.VERSION||Ty;this.Ph=Xi(t,"1.3")>=0},n.prototype.tileUrlFunction=function(t,n,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){1==n||this._a&&void 0!==this.kh||(n=1);var e=r.getResolution(t[0]),o=r.getTileCoordExtent(t,this.Ao),s=Qu(r.getTileSize(t[0]),this.tmpSize),u=this.js;0!==u&&(s=Ku(s,u,this.tmpSize),o=mn(o,e*u,o)),1!=n&&(s=Ju(s,n,this.tmpSize));var a={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return A(a,this.xh),this.Oh(t,s,o,n,i,a)}},n}(Vv),Um=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Bm=function(t){function n(n,i,r,e,o,s){var u=t.call(this,n,i)||this;return u.Nt=r,u.st=e,u.Qh=o,u.tf=null,u.nf=null,u.B=null,u.if=s,u}return Um(n,t),n.prototype.getImage=function(){return null},n.prototype.getData=function(t){if(!this.tf||!this.nf)return null;var n=(t[0]-this.st[0])/(this.st[2]-this.st[0]),i=(t[1]-this.st[1])/(this.st[3]-this.st[1]),r=this.tf[Math.floor((1-i)*this.tf.length)];if("string"!=typeof r)return null;var e=r.charCodeAt(Math.floor(n*r.length));e>=93&&e--,e>=35&&e--;var o=null;if((e-=32)in this.nf){var s=this.nf[e];o=this.B&&s in this.B?this.B[s]:s}return o},n.prototype.forDataAtCoordinate=function(t,n,i){this.state==pt&&!0===i?(this.state=ct,K(this,L,(function(i){n(this.getData(t))}),this),this.rf()):!0===i?setTimeout(function(){n(this.getData(t))}.bind(this),0):n(this.getData(t))},n.prototype.getKey=function(){return this.Nt},n.prototype.Nh=function(){this.state=dt,this.changed()},n.prototype.Ut=function(t){this.tf=t.grid,this.nf=t.keys,this.B=t.data,this.state=vt,this.changed()},n.prototype.rf=function(){if(this.state==ct)if(this.state=lt,this.if)Zh(this.Nt,this.Ut.bind(this),this.Nh.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.Hh.bind(this)),t.addEventListener("error",this.Jh.bind(this)),t.open("GET",this.Nt),t.send()}},n.prototype.Hh=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.Nh()}this.Ut(i)}else this.Nh()},n.prototype.Jh=function(t){this.Nh()},n.prototype.load=function(){this.Qh?this.rf():this.setState(pt)},n}(xt),Xm=function(t){function n(n){var i=t.call(this,{projection:yr("EPSG:3857"),state:"loading",zDirection:n.zDirection})||this;if(i.Qh=void 0===n.preemptive||n.preemptive,i.ef=kf,i.uf=void 0,i.if=n.jsonp||!1,n.url)if(i.if)Zh(n.url,i.handleTileJSONResponse.bind(i),i.handleTileJSONError.bind(i));else{var r=new XMLHttpRequest;r.addEventListener("load",i.Hh.bind(i)),r.addEventListener("error",i.Jh.bind(i)),r.open("GET",n.url),r.send()}else n.tileJSON?i.handleTileJSONResponse(n.tileJSON):St(!1,51);return i}return Um(n,t),n.prototype.Hh=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},n.prototype.Jh=function(t){this.handleTileJSONError()},n.prototype.getTemplate=function(){return this.uf},n.prototype.forDataAtCoordinateAndResolution=function(t,n,i,r){if(this.tileGrid){var e=this.tileGrid.getZForResolution(n,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,e);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,i,r)}else!0===r?setTimeout((function(){i(null)}),0):i(null)},n.prototype.handleTileJSONError=function(){this.setState("error")},n.prototype.handleTileJSONResponse=function(t){var n,i=yr("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var e=Or(i,r);n=ni(t.bounds,e)}var o=Tf(r),s=t.minzoom||0,u=Of({extent:o,maxZoom:t.maxzoom||22,minZoom:s});this.tileGrid=u,this.uf=t.template;var a=t.grids;if(a){if(this.ef=Pf(a,u),void 0!==t.attribution){var h=void 0!==n?n:o;this.setAttributions((function(n){return Kn(h,n.extent)?[t.attribution]:null}))}this.setState("ready")}else this.setState("error")},n.prototype.getTile=function(t,n,i,r,e){var o=jh(t,n,i);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var s=[t,n,i],u=this.getTileCoordForTileUrlFunction(s,e),a=this.ef(u,r,e),h=new Bm(s,void 0!==a?ct:pt,void 0!==a?a:"",this.tileGrid.getTileCoordExtent(s),this.Qh,this.if);return this.tileCache.set(o,h),h},n.prototype.useTile=function(t,n,i){var r=jh(t,n,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},n}(Dv),Vm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Wm=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;void 0!==n.interpolate&&(r=n.interpolate);var e=void 0!==n.requestEncoding?n.requestEncoding:"KVP",o=n.tileGrid,s=n.urls;return void 0===s&&void 0!==n.url&&(s=If(n.url)),(i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileClass:n.tileClass,tileGrid:o,tileLoadFunction:n.tileLoadFunction,tilePixelRatio:n.tilePixelRatio,urls:s,wrapX:void 0!==n.wrapX&&n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).af=void 0!==n.version?n.version:"1.0.0",i.ze=void 0!==n.format?n.format:"image/jpeg",i.hf=void 0!==n.dimensions?n.dimensions:{},i.Ds=n.layer,i.ff=n.matrixSet,i.H=n.style,i.cf=e,i.setKey(i.lf()),s&&s.length>0&&(i.tileUrlFunction=Cf(s.map(i.createFromWMTSTemplate.bind(i)))),i}return Vm(n,t),n.prototype.setUrls=function(t){this.urls=t;var n=t.join("\n");this.setTileUrlFunction(Cf(t.map(this.createFromWMTSTemplate.bind(this))),n)},n.prototype.getDimensions=function(){return this.hf},n.prototype.getFormat=function(){return this.ze},n.prototype.getLayer=function(){return this.Ds},n.prototype.getMatrixSet=function(){return this.ff},n.prototype.getRequestEncoding=function(){return this.cf},n.prototype.getStyle=function(){return this.H},n.prototype.getVersion=function(){return this.af},n.prototype.lf=function(){var t=0,n=[];for(var i in this.hf)n[t++]=i+"-"+this.hf[i];return n.join("/")},n.prototype.updateDimensions=function(t){A(this.hf,t),this.setKey(this.lf())},n.prototype.createFromWMTSTemplate=function(t){var n=this.cf,i={layer:this.Ds,style:this.H,tilematrixset:this.ff};"KVP"==n&&A(i,{Service:"WMTS",Request:"GetTile",Version:this.af,Format:this.ze}),t="KVP"==n?Nf(t,i):t.replace(/\{(\w+?)\}/g,(function(t,n){return n.toLowerCase()in i?i[n.toLowerCase()]:t}));var r=this.tileGrid,e=this.hf;return function(i,o,s){if(i){var u={TileMatrix:r.getMatrixId(i[0]),TileCol:i[1],TileRow:i[2]};A(u,e);var a=t;return a="KVP"==n?Nf(a,u):a.replace(/\{(\w+?)\}/g,(function(t,n){return u[n]}))}}},n}(Vv);var Ym=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Zm="renderOrder",$m=function(t){function n(n){var i=this,r=n||{},e=A({},r);return delete e.style,delete e.renderBuffer,delete e.updateWhileAnimating,delete e.updateWhileInteracting,(i=t.call(this,e)||this).vf=void 0!==r.declutter&&r.declutter,i.df=void 0!==r.renderBuffer?r.renderBuffer:100,i.H=null,i.tt=void 0,i.setStyle(r.style),i.pf=void 0!==r.updateWhileAnimating&&r.updateWhileAnimating,i.yf=void 0!==r.updateWhileInteracting&&r.updateWhileInteracting,i}return Ym(n,t),n.prototype.getDeclutter=function(){return this.vf},n.prototype.getFeatures=function(n){return t.prototype.getFeatures.call(this,n)},n.prototype.getRenderBuffer=function(){return this.df},n.prototype.getRenderOrder=function(){return this.get(Zm)},n.prototype.getStyle=function(){return this.H},n.prototype.getStyleFunction=function(){return this.tt},n.prototype.getUpdateWhileAnimating=function(){return this.pf},n.prototype.getUpdateWhileInteracting=function(){return this.yf},n.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new Av(9)),this.getRenderer().renderDeclutter(t)},n.prototype.setRenderOrder=function(t){this.set(Zm,t)},n.prototype.setStyle=function(t){this.H=void 0!==t?t:xv,this.tt=null===t?void 0:gv(this.H),this.changed()},n}(ls);var Km=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Hm=function(t){function n(n,i){var r=this,e=i.uniforms||{},s=[1,0,0,1,0,0];e[Sc]=s,(r=t.call(this,n,{uniforms:e,postProcesses:i.postProcesses})||this).ready=!1,r.mf=-1,r.wf=new mc(zf,Gf),r.gf=new mc(zf,Gf),r.bf=new mc(Rf,Gf),r.Hs=i.vertexShader,r.Js=i.fragmentShader,r.Ks,r.xf=!(!i.hitFragmentShader||!i.hitVertexShader),r.Mf=i.hitVertexShader,r._f=i.hitFragmentShader,r.Sf;var u=i.attributes?i.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:Pc.FLOAT}})):[];r.attributes=[{name:"a_position",size:2,type:Pc.FLOAT},{name:"a_index",size:1,type:Pc.FLOAT}].concat(u),r.hitDetectionAttributes=[{name:"a_position",size:2,type:Pc.FLOAT},{name:"a_index",size:1,type:Pc.FLOAT},{name:"a_hitColor",size:4,type:Pc.FLOAT},{name:"a_featureUid",size:1,type:Pc.FLOAT}].concat(u),r.customAttributes=i.attributes?i.attributes:[],r.$i=[1/0,1/0,-1/0,-1/0],r.Of=s,r.jf=[1,0,0,1,0,0],r.Ef=[1,0,0,1,0,0],r.Tf=new Float32Array(0),r.Af=new Float32Array(0),r.Pf,r.Cf=0,r.kf=function(){var t='const e="function"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError("Cannot convert undefined or null to object");const t=Object(e);for(let e=1,n=arguments.length;e=0||n.match(/cpu (os|iphone os) 15_4 like mac os x/)),-1!==n.indexOf("webkit")&&n.indexOf("edge"),n.indexOf("macintosh"),"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&(self,WorkerGlobalScope),function(){let e=!1;try{const n=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("_",null,n),window.removeEventListener("_",null,n)}catch(e){}}(),new Array(6);const t="GENERATE_BUFFERS",o=[],r={vertexPosition:0,indexPosition:0};function i(e,n,t,o,r){e[n+0]=t,e[n+1]=o,e[n+2]=r}function s(e,n,t,s,f,c){const l=3+f,a=e[n+0],u=e[n+1],d=o;d.length=f;for(let t=0;t{const o=n.data;if(o.type===t){const n=3,t=2,r=o.customAttributesCount,i=t+r,c=new Float32Array(o.renderInstructions),l=c.length/i,a=4*l*(r+n),u=new Uint32Array(6*l),d=new Float32Array(a);let g;for(let e=0;ec&&(this.instructions.push([rw.CUSTOM,c,o,t,i,pe]),this.hitDetectionInstructions.push([rw.CUSTOM,c,o,t,r||i,pe]));break;case"Point":e=t.getFlatCoordinates(),this.coordinates.push(e[0],e[1]),o=this.coordinates.length,this.instructions.push([rw.CUSTOM,c,o,t,i]),this.hitDetectionInstructions.push([rw.CUSTOM,c,o,t,r||i])}this.endGeometry(n)},n.prototype.beginGeometry=function(t,n){this.qf=[rw.BEGIN_GEOMETRY,n,0,t],this.instructions.push(this.qf),this.Uf=[rw.BEGIN_GEOMETRY,n,0,t],this.hitDetectionInstructions.push(this.Uf)},n.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},n.prototype.reverseHitDetectionInstructions=function(){var t,n=this.hitDetectionInstructions;n.reverse();var i,r,e=n.length,o=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.Bf=null)}else i.strokeStyle=void 0,i.lineCap=void 0,i.lineDash=null,i.lineDashOffset=void 0,i.lineJoin=void 0,i.lineWidth=void 0,i.miterLimit=void 0},n.prototype.createFill=function(t){var n=t.fillStyle,i=[rw.SET_FILL_STYLE,n];return"string"!=typeof n&&i.push(!0),i},n.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},n.prototype.createStroke=function(t){return[rw.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},n.prototype.updateFillStyle=function(t,n){var i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(n.call(this,t)),t.currentFillStyle=i)},n.prototype.updateStrokeStyle=function(t,n){var i=t.strokeStyle,r=t.lineCap,e=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,u=t.lineWidth,a=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=r||e!=t.currentLineDash&&!x(t.currentLineDash,e)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=u||t.currentMiterLimit!=a)&&(void 0!==i&&n.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=r,t.currentLineDash=e,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=u,t.currentMiterLimit=a)},n.prototype.endGeometry=function(t){this.qf[2]=this.instructions.length,this.qf=null,this.Uf[2]=this.hitDetectionInstructions.length,this.Uf=null;var n=[rw.END_GEOMETRY,t];this.instructions.push(n),this.hitDetectionInstructions.push(n)},n.prototype.getBufferedMaxExtent=function(){if(!this.Bf&&(this.Bf=wn(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;mn(this.Bf,t,this.Bf)}return this.Bf},n}(tf),sw=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),uw=function(t){function n(n,i,r,e){var o=t.call(this,n,i,r,e)||this;return o._u=null,o.Lt=null,o.Wf=void 0,o.Yf=void 0,o.Zf=void 0,o.$f=void 0,o.ou=void 0,o.Kf=void 0,o.Hf=void 0,o.su=void 0,o.Dr=void 0,o.uu=void 0,o.Uu=void 0,o.fu=void 0,o.Jf=void 0,o}return sw(n,t),n.prototype.drawPoint=function(t,n){if(this.Lt){this.beginGeometry(t,n);var i=t.getFlatCoordinates(),r=t.getStride(),e=this.coordinates.length,o=this.appendFlatPointCoordinates(i,r);this.instructions.push([rw.DRAW_IMAGE,e,o,this.Lt,this.Yf*this.Wf,this.Zf*this.Wf,Math.ceil(this.$f*this.Wf),this.ou,this.Kf*this.Wf,this.Hf*this.Wf,this.su,this.Dr,[this.uu[0]*this.pixelRatio/this.Wf,this.uu[1]*this.pixelRatio/this.Wf],Math.ceil(this.Uu*this.Wf),this.fu,this.Jf]),this.hitDetectionInstructions.push([rw.DRAW_IMAGE,e,o,this._u,this.Yf,this.Zf,this.$f,this.ou,this.Kf,this.Hf,this.su,this.Dr,this.uu,this.Uu,this.fu,this.Jf]),this.endGeometry(n)}},n.prototype.drawMultiPoint=function(t,n){if(this.Lt){this.beginGeometry(t,n);var i=t.getFlatCoordinates(),r=t.getStride(),e=this.coordinates.length,o=this.appendFlatPointCoordinates(i,r);this.instructions.push([rw.DRAW_IMAGE,e,o,this.Lt,this.Yf*this.Wf,this.Zf*this.Wf,Math.ceil(this.$f*this.Wf),this.ou,this.Kf*this.Wf,this.Hf*this.Wf,this.su,this.Dr,[this.uu[0]*this.pixelRatio/this.Wf,this.uu[1]*this.pixelRatio/this.Wf],Math.ceil(this.Uu*this.Wf),this.fu,this.Jf]),this.hitDetectionInstructions.push([rw.DRAW_IMAGE,e,o,this._u,this.Yf,this.Zf,this.$f,this.ou,this.Kf,this.Hf,this.su,this.Dr,this.uu,this.Uu,this.fu,this.Jf]),this.endGeometry(n)}},n.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.Yf=void 0,this.Zf=void 0,this._u=null,this.Lt=null,this.Wf=void 0,this.$f=void 0,this.uu=void 0,this.ou=void 0,this.Kf=void 0,this.Hf=void 0,this.su=void 0,this.Dr=void 0,this.Uu=void 0,t.prototype.finish.call(this)},n.prototype.setImageStyle=function(t,n){var i=t.getAnchor(),r=t.getSize(),e=t.getOrigin();this.Wf=t.getPixelRatio(this.pixelRatio),this.Yf=i[0],this.Zf=i[1],this._u=t.getHitDetectionImage(),this.Lt=t.getImage(this.pixelRatio),this.$f=r[1],this.ou=t.getOpacity(),this.Kf=e[0],this.Hf=e[1],this.su=t.getRotateWithView(),this.Dr=t.getRotation(),this.uu=t.getScaleArray(),this.Uu=r[0],this.fu=t.getDeclutterMode(),this.Jf=n},n}(ow),aw=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),hw=function(t){function n(n,i,r,e){return t.call(this,n,i,r,e)||this}return aw(n,t),n.prototype.Qf=function(t,n,i,r){var e=this.coordinates.length,o=this.appendFlatLineCoordinates(t,n,i,r,!1,!1),s=[rw.MOVE_TO_LINE_TO,e,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),i},n.prototype.drawLineString=function(t,n){var i=this.state,r=i.strokeStyle,e=i.lineWidth;if(void 0!==r&&void 0!==e){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,n),this.hitDetectionInstructions.push([rw.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,Ps,0],nw);var o=t.getFlatCoordinates(),s=t.getStride();this.Qf(o,0,o.length,s),this.hitDetectionInstructions.push(tw),this.endGeometry(n)}},n.prototype.drawMultiLineString=function(t,n){var i=this.state,r=i.strokeStyle,e=i.lineWidth;if(void 0!==r&&void 0!==e){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,n),this.hitDetectionInstructions.push([rw.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],nw);for(var o=t.getEnds(),s=t.getFlatCoordinates(),u=t.getStride(),a=0,h=0,f=o.length;ht&&(m>y&&(y=m,d=w,p=o),m=0,w=o-e)),s=u,f=l,c=v),a=g,h=b}return(m+=u)>y?[w,o]:[d,p]}var vw=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),dw={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},pw=function(t){function n(n,i,r,e){var o=t.call(this,n,i,r,e)||this;return o.rc=null,o.eo="",o.oo=0,o.so=0,o.uo=void 0,o.ao=0,o.fo=null,o.fillStates={},o.co=null,o.strokeStates={},o.lo={},o.textStates={},o.ec="",o.oc="",o.sc="",o.Jf=void 0,o}return vw(n,t),n.prototype.finish=function(){var n=t.prototype.finish.call(this);return n.textStates=this.textStates,n.fillStates=this.fillStates,n.strokeStates=this.strokeStates,n},n.prototype.drawText=function(t,n){var i=this.fo,r=this.co,e=this.lo;if(""!==this.eo&&e&&(i||r)){var o=this.coordinates,s=o.length,u=t.getType(),a=null,h=t.getStride();if(e.placement!==jv||"LineString"!=u&&"MultiLineString"!=u&&"Polygon"!=u&&"MultiPolygon"!=u){var f=e.overflow?null:[];switch(u){case"Point":case"MultiPoint":a=t.getFlatCoordinates();break;case"LineString":a=t.getFlatMidpoint();break;case"Circle":a=t.getCenter();break;case"MultiLineString":a=t.getFlatMidpoints(),h=2;break;case"Polygon":a=t.getFlatInteriorPoint(),e.overflow||f.push(a[2]/this.resolution),h=3;break;case"MultiPolygon":var c=t.getFlatInteriorPoints();a=[];for(M=0,_=c.length;M<_;M+=3)e.overflow||f.push(c[M+2]/this.resolution),a.push(c[M],c[M+1]);if(0===a.length)return;h=2}if((P=this.appendFlatPointCoordinates(a,h))===s)return;if(f&&(P-s)/2!=a.length/h){var l=s/2;f=f.filter((function(t,n){var i=o[2*(l+n)]===a[n*h]&&o[2*(l+n)+1]===a[n*h+1];return i||--l,i}))}this.uc(),(e.backgroundFill||e.backgroundStroke)&&(this.setFillStrokeStyle(e.backgroundFill,e.backgroundStroke),e.backgroundFill&&(this.updateFillStyle(this.state,this.createFill),this.hitDetectionInstructions.push(this.createFill(this.state))),e.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(t,n);var v=e.padding;if(v!=zs&&(e.scale[0]<0||e.scale[1]<0)){var d=e.padding[0],p=e.padding[1],y=e.padding[2],m=e.padding[3];e.scale[0]<0&&(p=-p,m=-m),e.scale[1]<0&&(d=-d,y=-y),v=[d,p,y,m]}var w=this.pixelRatio;this.instructions.push([rw.DRAW_IMAGE,s,P,null,NaN,NaN,NaN,1,0,0,this.uo,this.ao,[1,1],NaN,void 0,this.Jf,v==zs?zs:v.map((function(t){return t*w})),!!e.backgroundFill,!!e.backgroundStroke,this.eo,this.ec,this.sc,this.oc,this.oo,this.so,f]);var g=1/w;this.hitDetectionInstructions.push([rw.DRAW_IMAGE,s,P,null,NaN,NaN,NaN,1,0,0,this.uo,this.ao,[g,g],NaN,void 0,this.Jf,v,!!e.backgroundFill,!!e.backgroundStroke,this.eo,this.ec,this.sc,this.oc,this.oo,this.so,f]),this.endGeometry(n)}else{if(!Kn(this.getBufferedMaxExtent(),t.getExtent()))return;var b=void 0;if(a=t.getFlatCoordinates(),"LineString"==u)b=[a.length];else if("MultiLineString"==u)b=t.getEnds();else if("Polygon"==u)b=t.getEnds().slice(0,1);else if("MultiPolygon"==u){var x=t.getEndss();b=[];for(var M=0,_=x.length;M<_;++M)b.push(x[M][0])}this.beginGeometry(t,n);for(var S=e.textAlign,O=0,j=void 0,E=0,T=b.length;ET[2]}else O=b>j;var A,P=Math.PI,C=[],k=M+r===n;if(y=0,m=_,l=t[n=M],v=t[n+1],k){w(),A=Math.atan2(v-p,l-d),O&&(A+=A>0?-P:P);var I=(j+b)/2,N=(E+x)/2;return C[0]=[I,N,(S-o)/2,A,e],C}for(var L=0,z=(e=e.replace(/\n/g," ")).length;L0?-P:P),void 0!==A){var F=R-A;if(F+=F>P?-2*P:F<-P?2*P:0,Math.abs(F)>s)return null}A=R;for(var G=L,D=0;L0&&t.push("\n",""),t.push(n,""),t}var Aw=function(){function t(t,n,i,r){this.overlaps=i,this.pixelRatio=n,this.resolution=t,this.vc,this.instructions=r.instructions,this.coordinates=r.coordinates,this.dc={},this.yc=[1,0,0,1,0,0],this.hitDetectionInstructions=r.hitDetectionInstructions,this.vo=null,this.Ge=0,this.fillStates=r.fillStates||{},this.strokeStates=r.strokeStates||{},this.textStates=r.textStates||{},this.mc={},this.rc={}}return t.prototype.createLabel=function(t,n,i,r){var e=t+n+i+r;if(this.rc[e])return this.rc[e];var o=r?this.strokeStates[r]:null,s=i?this.fillStates[i]:null,u=this.textStates[n],a=this.pixelRatio,h=[u.scale[0]*a,u.scale[1]*a],f=Array.isArray(t),c=u.justify?dw[u.justify]:Ew(Array.isArray(t)?t[0]:t,u.textAlign||Ns),l=r&&o.lineWidth?o.lineWidth:0,v=f?t:t.split("\n").reduce(Tw,[]),d=Zs(u,v),p=d.width,y=d.height,m=d.widths,w=d.heights,g=d.lineWidths,b=p+l,x=[],M=(b+2)*h[0],_=(y+l)*h[1],S={width:M<0?Math.floor(M):Math.ceil(M),height:_<0?Math.floor(_):Math.ceil(_),contextInstructions:x};(1==h[0]&&1==h[1]||x.push("scale",h),r)&&(x.push("strokeStyle",o.strokeStyle),x.push("lineWidth",l),x.push("lineCap",o.lineCap),x.push("lineJoin",o.lineJoin),x.push("miterLimit",o.miterLimit),(Vt?OffscreenCanvasRenderingContext2D:CanvasRenderingContext2D).prototype.setLineDash&&(x.push("setLineDash",[o.lineDash]),x.push("lineDashOffset",o.lineDashOffset)));i&&x.push("fillStyle",s.fillStyle),x.push("textBaseline","middle"),x.push("textAlign","center");for(var O,j=.5-c,E=c*b+j*l,T=[],A=[],P=0,C=0,k=0,I=0,N=0,L=v.length;Nt?t-a:e,b=o+h>n?n-h:o,x=v[3]+g*c[0]+v[1],M=v[0]+b*c[1]+v[2],_=m-v[3],S=w-v[0];return(d||0!==f)&&(xw[0]=_,Sw[0]=_,xw[1]=S,Mw[1]=S,Mw[0]=_+x,_w[0]=Mw[0],_w[1]=S+M,Sw[1]=_w[1]),0!==f?(tn(y=sn([1,0,0,1,0,0],i,r,1,1,f,-i,-r),xw),tn(y,Mw),tn(y,_w),tn(y,Sw),On(Math.min(xw[0],Mw[0],_w[0],Sw[0]),Math.min(xw[1],Mw[1],_w[1],Sw[1]),Math.max(xw[0],Mw[0],_w[0],Sw[0]),Math.max(xw[1],Mw[1],_w[1],Sw[1]),bw)):On(Math.min(_,_+x),Math.min(S,S+M),Math.max(_,_+x),Math.max(S,S+M),bw),l&&(m=Math.round(m),w=Math.round(w)),{drawImageX:m,drawImageY:w,drawImageW:g,drawImageH:b,originX:a,originY:h,declutterBox:{minX:bw[0],minY:bw[1],maxX:bw[2],maxY:bw[3],value:p},canvasTransform:y,scale:c}},t.prototype.xc=function(t,n,i,r,e,o,s){var u=!(!o&&!s),a=r.declutterBox,h=t.canvas,f=s?s[2]*r.scale[0]/2:0;return a.minX-f<=h.width/n&&a.maxX+f>=0&&a.minY-f<=h.height/n&&a.maxY+f>=0&&(u&&this.wc(t,xw,Mw,_w,Sw,o,s),$s(t,r.canvasTransform,e,i,r.originX,r.originY,r.drawImageW,r.drawImageH,r.drawImageX,r.drawImageY,r.scale)),!0},t.prototype.lu=function(t){if(this.vc){var n=tn(this.yc,[0,0]),i=512*this.pixelRatio;t.save(),t.translate(n[0]%i,n[1]%i),t.rotate(this.Ge)}t.fill(),this.vc&&t.restore()},t.prototype.gc=function(t,n){t.strokeStyle=n[1],t.lineWidth=n[2],t.lineCap=n[3],t.lineJoin=n[4],t.miterLimit=n[5],t.setLineDash&&(t.lineDashOffset=n[7],t.setLineDash(n[6]))},t.prototype.Mc=function(t,n,i,r){var e=this.textStates[n],o=this.createLabel(t,n,r,i),s=this.strokeStates[i],u=this.pixelRatio,a=Ew(Array.isArray(t)?t[0]:t,e.textAlign||Ns),h=dw[e.textBaseline||Ls],f=s&&s.lineWidth?s.lineWidth:0;return{label:o,anchorX:a*(o.width/u-2*e.scale[0])+2*(.5-a)*f,anchorY:h*o.height/u+2*(.5-h)*f}},t.prototype._c=function(t,n,i,r,e,o,s,u){var a;this.vo&&x(i,this.yc)?a=this.vo:(this.vo||(this.vo=[]),a=Dr(this.coordinates,0,this.coordinates.length,2,i,this.vo),Qt(this.yc,i));for(var h,f,c,l,v,d,p,y,m,w,g,b,M,_,S,O,j=0,E=r.length,T=0,A=0,P=0,C=null,k=null,I=this.dc,N=this.Ge,L=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,z={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:N},R=this.instructions!=r||this.overlaps?0:200;jR&&(this.lu(t),A=0),P>R&&(t.stroke(),P=0),A||P||(t.beginPath(),l=NaN,v=NaN),++j;break;case rw.CIRCLE:var G=a[T=F[1]],D=a[T+1],q=a[T+2]-G,U=a[T+3]-D,B=Math.sqrt(q*q+U*U);t.moveTo(G+B,D),t.arc(G,D,B,0,2*Math.PI,!0),++j;break;case rw.CLOSE_PATH:t.closePath(),++j;break;case rw.CUSTOM:T=F[1],h=F[2];var X=F[3],V=F[4],W=6==F.length?F[5]:void 0;z.geometry=X,z.feature=M,j in I||(I[j]=[]);var Y=I[j];W?W(a,T,h,2,Y):(Y[0]=a[T],Y[1]=a[T+1],Y.length=2),V(Y,z),++j;break;case rw.DRAW_IMAGE:T=F[1],h=F[2],y=F[3],f=F[4],c=F[5];var Z=F[6],$=F[7],K=F[8],H=F[9],J=F[10],Q=F[11],tt=F[12],nt=F[13],it=F[14],rt=F[15];if(!y&&F.length>=20){m=F[19],w=F[20],g=F[21],b=F[22];var et=this.Mc(m,w,g,b);y=et.label,F[3]=y;var ot=F[23];f=(et.anchorX-ot)*this.pixelRatio,F[4]=f;var st=F[24];c=(et.anchorY-st)*this.pixelRatio,F[5]=c,Z=y.height,F[6]=Z,nt=y.width,F[13]=nt}var ut=void 0;F.length>25&&(ut=F[25]);var at=void 0,ht=void 0,ft=void 0;F.length>17?(at=F[16],ht=F[17],ft=F[18]):(at=zs,ht=!1,ft=!1),J&&L?Q+=N:J||L||(Q-=N);for(var ct=0;T0){if(!o||"Image"!==c&&"Text"!==c||-1!==o.indexOf(t)){var h=(l[u]-3)/4,v=r-h%s,d=r-(h/s|0),p=e(t,n,v*v+d*d);if(p)return p}f.clearRect(0,0,s,s);break}}var d,y,m,w,g,b=Object.keys(this.Sc).map(Number);for(b.sort(p),d=b.length-1;d>=0;--d){var x=b[d].toString();for(m=this.Sc[x],y=Pw.length-1;y>=0;--y)if(void 0!==(w=m[c=Pw[y]])&&(g=w.executeHitDetection(f,u,i,v,h)))return g}},t.prototype.getClipCoords=function(t){var n=this.fc;if(!n)return null;var i=n[0],r=n[1],e=n[2],o=n[3],s=[i,r,i,o,e,o,e,r];return Dr(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return k(this.Sc)},t.prototype.execute=function(t,n,i,r,e,o,s){var u=Object.keys(this.Sc).map(Number);u.sort(p),this.fc&&(t.save(),this.clip(t,i));var a,h,f,c,l,v,d=o||Pw;for(s&&u.reverse(),a=0,h=u.length;ai)break;var u=r[s];u||(u=[],r[s]=u),u.push(4*((t+e)*n+(t+o))+3),e>0&&u.push(4*((t-e)*n+(t+o))+3),o>0&&(u.push(4*((t+e)*n+(t-o))+3),e>0&&u.push(4*((t-e)*n+(t-o))+3))}for(var a=[],h=(e=0,r.length);ev[2];)m=p*++y,h.push(this.getRenderTransform(r,e,o,Lw,f,c,m).slice()),d-=p}this.Cc=zw(i,h,this.kc,a.getStyleFunction(),u,e,o)}n(Rw(t,this.kc,this.Cc))}.bind(this))},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e){var s=this;if(this.Gc){var u,a=n.viewState.resolution,h=n.viewState.rotation,f=this.getLayer(),c={},l=function(t,n,i){var s=o(t),u=c[s];if(u){if(!0!==u&&ig[0]&&_[2]>g[2]&&w.push([_[0]-b,_[1],_[2]-b,_[3]])}if(this.ready&&this.Ic==f&&this._h==l&&this.Fc==d&&xn(this.Nc,y))return x(this.zh,m)||(this.Cc=null,this.zh=m),this.zc=p,this.replayGroupChanged=!1,!0;this.Gc=null;var S,O=new mw(uf(f,c),y,f,c);this.getLayer().getDeclutter()&&(S=new mw(uf(f,c),y,f,c));var j,E=Cr();if(E){for(var T=0,A=w.length;T0)n([]);else{var m=Yn(c.getTileCoordExtent(r.wrappedTileCoord)),w=[(l[0]-m[0])/f,(m[1]-l[1])/f],g=r.getSourceTiles().reduce((function(t,n){return t.concat(n.getFeatures())}),[]),b=r.hitDetectionImageData[s];if(!b&&!this.Pc){var x=Qu(c.getTileSize(c.getZForResolution(f,u.zDirection))),M=this.Lc;b=zw(x,[this.getRenderTransform(c.getTileCoordCenter(r.wrappedTileCoord),f,0,Lw,x[0]*Lw,x[1]*Lw,0)],g,e.getStyleFunction(),c.getTileCoordExtent(r.wrappedTileCoord),r.getReplayState(e).renderedResolution,M),r.hitDetectionImageData[s]=b}n(Rw(w,g,b))}}.bind(this))},n.prototype.handleFontsChanged=function(){var t=this.getLayer();t.getVisible()&&void 0!==this.Yc&&t.changed()},n.prototype.Ac=function(t){this.renderIfReadyAndVisible()},n.prototype.renderDeclutter=function(t){var n=this.context,i=n.globalAlpha;n.globalAlpha=this.getLayer().getOpacity();for(var r=t.viewHints,e=!(r[Eu]||r[Tu]),s=this.renderedTiles,u=0,a=s.length;u=0;--c)f[c].execute(this.context,1,this.getTileRenderTransform(h,t),t.viewState.rotation,e,void 0,t.declutterTree)}n.globalAlpha=i},n.prototype.getTileRenderTransform=function(t,n){var i=n.pixelRatio,r=n.viewState,e=r.center,o=r.resolution,s=r.rotation,u=n.size,a=Math.round(u[0]*i),h=Math.round(u[1]*i),f=this.getLayer().getSource().getTileGridForProjection(n.viewState.projection),c=t.tileCoord,l=f.getTileCoordExtent(t.wrappedTileCoord),v=f.getTileCoordExtent(c,this.tmpExtent)[0]-l[0];return Ht(rn(this.inversePixelTransform.slice(),1/i,1/i),this.getRenderTransform(e,o,s,i,a,h,v))},n.prototype.renderFrame=function(n,i){var r=n.viewHints,e=!(r[Eu]||r[Tu]);t.prototype.renderFrame.call(this,n,i),this.Wc=n.pixelToCoordinateTransform.slice(),this.Lc=n.viewState.rotation;var s=this.getLayer(),u=s.getRenderMode(),a=this.context,h=a.globalAlpha;a.globalAlpha=s.getOpacity();for(var f=Yw[u],c=n.viewState,l=c.rotation,v=s.getSource(),d=v.getTileGridForProjection(c.projection).getZForResolution(c.resolution,v.zDirection),p=this.renderedTiles,y=[],m=[],w=!0,g=p.length-1;g>=0;--g){var b=p[g];w=w&&!b.getReplayState(s).dirty;var x=b.executorGroups[o(s)].filter((function(t){return t.hasExecutors(f)}));if(0!==x.length){var M=this.getTileRenderTransform(b,n),_=b.tileCoord[0],S=!1,O=x[0].getClipCoords(M);if(O){for(var j=0,E=y.length;j1?s:2,x=o||new Array(b);for(p=0;p>1;e1?new sg(i,Tt,e):new We(i,Tt,r);default:throw new Error("Invalid geometry type:"+n)}}ag.prototype.getEndss=ag.prototype.getEnds,ag.prototype.getFlatCoordinates=ag.prototype.getOrientedFlatCoordinates;var fg=ag;var cg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),lg=function(t){function n(n){return t.call(this,n)||this}return cg(n,t),n.prototype.createRenderer=function(){return new Gw(this)},n}($m);function vg(t,n,i){for(var r,e,o,s,u,a,h=[],f=t(0),c=t(1),l=n(f),v=n(c),d=[c,f],p=[v,l],y=[1,0],m={},w=1e5;--w>0&&y.length>0;)o=y.pop(),f=d.pop(),l=p.pop(),(a=o.toString())in m||(h.push(l[0],l[1]),m[a]=!0),s=y.pop(),c=d.pop(),v=p.pop(),ai((e=n(r=t(u=(o+s)/2)))[0],e[1],l[0],l[1],v[0],v[1])this.Dl.length;)u=new Et,this.Dl.push(u);var h=r.getFeaturesCollection();h.clear();var f,c,l=0;for(f=0,c=this.wl.length;fMath.PI/2);for(var d=ff(t),p=h;p<=f;++p){var y=this.wl.length+this.gl.length,m=void 0,w=void 0,g=void 0,b=void 0;if(this.Tl)for(w=0,g=this.Tl.length;w=u?(t[0]=s[0],t[2]=s[2]):o=!0);var a=[oi(n[0],this.dl,this.ll),oi(n[1],this.pl,this.vl)],h=this.Ml(a);isNaN(h[1])&&(h[1]=Math.abs(this.al)>=Math.abs(this.fl)?this.al:this.fl);var f,c,l,v,d=oi(h[0],this.cl,this.hl),p=oi(h[1],this.fl,this.al),y=this.ml,m=t;o||(m=[oi(t[0],this.dl,this.ll),oi(t[1],this.pl,this.vl),oi(t[2],this.dl,this.ll),oi(t[3],this.pl,this.vl)]);var w=ni(m,this.Ml,void 0,8),g=w[3],b=w[2],x=w[1],M=w[0];if(o||(bn(m,this.Sl)&&(M=this.cl,x=this.fl),bn(m,this.Ol)&&(b=this.hl,x=this.fl),bn(m,this.jl)&&(M=this.cl,g=this.al),bn(m,this.El)&&(b=this.hl,g=this.al),g=oi(g,p,this.al),b=oi(b,d,this.hl),x=oi(x,this.fl,p),M=oi(M,this.cl,d)),v=oi(d=Math.floor(d/e)*e,this.cl,this.hl),c=this.Vl(v,x,g,r,t,0),f=0,o)for(;(v-=e)>=M&&f++r[o]&&(e=o,o=1);var s=Math.max(n[1],r[e]),u=Math.min(n[3],r[o]),a=oi(n[1]+Math.abs(n[1]-n[3])*this.kl,s,u),h=[r[e-1]+(r[o-1]-r[e-1])*(a-r[e])/(r[o]-r[e]),a],f=this.Tl[i].geom;return f.setCoordinates(h),f},n.prototype.getMeridians=function(){return this.wl},n.prototype.Zl=function(t,n,i,r,e){var o=pg(t,n,i,this.di,r),s=this.gl[e];return s?(s.setFlatCoordinates(Tt,o),s.changed()):s=new ng(o,Tt),s},n.prototype.Kl=function(t,n,i){var r=t.getFlatCoordinates(),e=0,o=r.length-2;r[e]>r[o]&&(e=o,o=0);var s=Math.max(n[0],r[e]),u=Math.min(n[2],r[o]),a=oi(n[0]+Math.abs(n[0]-n[2])*this.Il,s,u),h=[a,r[e+1]+(r[o+1]-r[e+1])*(a-r[e])/(r[o]-r[e])],f=this.Al[i].geom;return f.setCoordinates(h),f},n.prototype.getParallels=function(){return this.gl},n.prototype.Bl=function(t){var n=yr("EPSG:4326"),i=t.getWorldExtent();this.al=i[3],this.hl=i[2],this.fl=i[1],this.cl=i[0];var r=jr(t,n);if(this.cl=Math.abs(this.fl)?this.al:this.fl),this.di=t},n}(lg),bg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xg="blur",Mg="gradient",_g="radius",Sg=["#00f","#0ff","#0f0","#ff0","#f00"];var Og=function(t){function n(n){var i=this,r=n||{},e=A({},r);delete e.gradient,delete e.radius,delete e.blur,delete e.weight,(i=t.call(this,e)||this).Jl=null,i.addChangeListener(Mg,i.Ql),i.setGradient(r.gradient?r.gradient:Sg),i.setBlur(void 0!==r.blur?r.blur:15),i.setRadius(void 0!==r.radius?r.radius:8);var o=r.weight?r.weight:"weight";return i.tv="string"==typeof o?function(t){return t.get(o)}:o,i.setRenderOrder(null),i}return bg(n,t),n.prototype.getBlur=function(){return this.get(xg)},n.prototype.getGradient=function(){return this.get(Mg)},n.prototype.getRadius=function(){return this.get(_g)},n.prototype.Ql=function(){this.Jl=function(t){for(var n=1,i=256,r=_o(n,i),e=r.createLinearGradient(0,0,n,i),o=1/(t.length-1),s=0,u=t.length;s>3)?i.readString():2===t?i.readFloat():3===t?i.readDouble():4===t?i.readVarint64():5===t?i.readVarint():6===t?i.readSVarint():7===t?i.readBoolean():null;n.values.push(r)}}function Ig(t,n,i){if(1==t)n.id=i.readVarint();else if(2==t)for(var r=i.readVarint()+i.pos;i.pos>3}s--,1===o||2===o?(u+=t.readSVarint(),a+=t.readSVarint(),1===o&&h>f&&(r.push(h),f=h),i.push(u,a),h+=2):7===o?h>f&&(i.push(i[f],i[f+1]),h+=2):St(!1,59)}h>f&&(r.push(h),f=h)},n.prototype.ov=function(t,n,i){var r,e=n.type;if(0===e)return null;var o,s=n.properties;this.rv?(o=s[this.rv],delete s[this.rv]):o=n.id,s[this.iv]=n.layer.name;var u=[],a=[];this.ev(t,n,u,a);var h=function(t,n){var i;1===t?i=1===n?"Point":"MultiPoint":2===t?i=1===n?"LineString":"MultiLineString":3===t&&(i="Polygon");return i}(e,a.length);if(this.nv===fg)(r=new this.nv(h,u,a,s,o)).transform(i.dataProjection);else{var f=void 0;if("Polygon"==h){var c=Be(u,a);f=c.length>1?new sg(u,Tt,c):new We(u,Tt,a)}else f="Point"===h?new Se(u,Tt):"LineString"===h?new ng(u,Tt):"MultiPoint"===h?new Kw(u,Tt):"MultiLineString"===h?new rg(u,Tt,a):null;r=new(0,this.nv),this.K&&r.setGeometryName(this.K);var l=Eg(f,!1,i);r.setGeometry(l),void 0!==o&&r.setId(o),r.setProperties(s,!0)}return r},n.prototype.getType=function(){return"arraybuffer"},n.prototype.readFeatures=function(t,n){var i=this.Uh,r=this.adaptOptions(n),e=yr(r.dataProjection);e.setWorldExtent(r.extent),r.dataProjection=e;var o=new Ag(t),s=o.readFields(Cg,{}),u=[];for(var a in s)if(!i||-1!=i.indexOf(a)){var h=s[a],f=h?[0,0,h.extent,h.extent]:null;e.setExtent(f);for(var c=0,l=h.length;c255?255:t}function Hg(t){return t<0?0:t>1?1:t}function Jg(t){return"%"===t[t.length-1]?Kg(parseFloat(t)/100*255):Kg(parseInt(t))}function Qg(t){return"%"===t[t.length-1]?Hg(parseFloat(t)/100):Hg(parseFloat(t))}function tb(t,n,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(n-t)*i*6:2*i<1?n:3*i<2?t+(n-t)*(2/3-i)*6:t}try{Yg={}.parseCSSColor=function(t){var n,i=t.replace(/ /g,"").toLowerCase();if(i in $g)return $g[i].slice();if("#"===i[0])return 4===i.length?(n=parseInt(i.substr(1),16))>=0&&n<=4095?[(3840&n)>>4|(3840&n)>>8,240&n|(240&n)>>4,15&n|(15&n)<<4,1]:null:7===i.length&&(n=parseInt(i.substr(1),16))>=0&&n<=16777215?[(16711680&n)>>16,(65280&n)>>8,255&n,1]:null;var r=i.indexOf("("),e=i.indexOf(")");if(-1!==r&&e+1===i.length){var o=i.substr(0,r),s=i.substr(r+1,e-(r+1)).split(","),u=1;switch(o){case"rgba":if(4!==s.length)return null;u=Qg(s.pop());case"rgb":return 3!==s.length?null:[Jg(s[0]),Jg(s[1]),Jg(s[2]),u];case"hsla":if(4!==s.length)return null;u=Qg(s.pop());case"hsl":if(3!==s.length)return null;var a=(parseFloat(s[0])%360+360)%360/360,h=Qg(s[1]),f=Qg(s[2]),c=f<=.5?f*(h+1):f+h-f*h,l=2*f-c;return[Kg(255*tb(l,c,a+1/3)),Kg(255*tb(l,c,a)),Kg(255*tb(l,c,a-1/3)),u];default:return null}}return null}}catch(t){}var nb=function(t,n,i,r){void 0===r&&(r=1),this.r=t,this.g=n,this.b=i,this.a=r};function ib(t){return"object"==typeof t?["literal",t]:t}function rb(t,n){var i=t.stops;if(!i)return function(t,n){var i=["get",t.property];if(void 0===t.default)return"string"===n.type?["string",i]:i;if("enum"===n.type)return["match",i,Object.keys(n.values),i,t.default];var r=["color"===n.type?"to-color":n.type,i,ib(t.default)];return"array"===n.type&&r.splice(1,0,n.value,n.length||null),r}(t,n);var r=i&&"object"==typeof i[0][0],e=r||void 0!==t.property,o=r||!e;return i=i.map((function(t){return!e&&n.tokens&&"string"==typeof t[1]?[t[0],fb(t[1])]:[t[0],ib(t[1])]})),r?function(t,n,i){for(var r={},e={},o=[],s=0;s3&&n===t[t.length-2]||(r&&2===t.length||t.push(n),t.push(i))}function hb(t,n){return t.type?t.type:n.expression.interpolated?"exponential":"interval"}function fb(t){for(var n=["concat"],i=/{([^{}]+)}/g,r=0,e=i.exec(t);null!==e;e=i.exec(t)){var o=t.slice(r,i.lastIndex-e[0].length);r=i.lastIndex,o.length>0&&n.push(o),n.push(["get",e[1]])}if(1===n.length)return t;if(r":"value"===t.itemType.kind?"array":"array<"+n+">"}return t.kind}var Ob=[vb,db,pb,yb,mb,xb,wb,_b(gb),Mb];function jb(t,n){if("error"===n.kind)return null;if("array"===t.kind){if("array"===n.kind&&(0===n.N&&"value"===n.itemType.kind||!jb(t.itemType,n.itemType))&&("number"!=typeof t.N||t.N===n.N))return null}else{if(t.kind===n.kind)return null;if("value"===t.kind)for(var i=0,r=Ob;i=0&&t<=255&&"number"==typeof n&&n>=0&&n<=255&&"number"==typeof i&&i>=0&&i<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:"Invalid rgba value ["+[t,n,i,r].join(", ")+"]: 'a' must be between 0 and 1.":"Invalid rgba value ["+("number"==typeof r?[t,n,i,r]:[t,n,i]).join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}function Nb(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof nb)return!0;if(t instanceof Ab)return!0;if(t instanceof Cb)return!0;if(t instanceof kb)return!0;if(Array.isArray(t)){for(var n=0,i=t;n2){var u=t[1];if("string"!=typeof u||!(u in Gb)||"object"===u)return n.error('The item type argument of "array" must be one of string, number, boolean',1);o=Gb[u],r++}else o=gb;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return n.error('The length argument to "array" must be a positive integer literal',2);s=t[2],r++}i=_b(o,s)}else i=Gb[e];for(var a=[];r1)&&n.push(r)}}return n.concat(this.args.map((function(t){return t.serialize()})))};var qb=function(t){this.type=xb,this.sections=t};qb.parse=function(t,n){if(t.length<2)return n.error("Expected at least one argument.");var i=t[1];if(!Array.isArray(i)&&"object"==typeof i)return n.error("First argument must be an image or text section.");for(var r=[],e=!1,o=1;o<=t.length-1;++o){var s=t[o];if(e&&"object"==typeof s&&!Array.isArray(s)){e=!1;var u=null;if(s["font-scale"]&&!(u=n.parse(s["font-scale"],1,db)))return null;var a=null;if(s["text-font"]&&!(a=n.parse(s["text-font"],1,_b(pb))))return null;var h=null;if(s["text-color"]&&!(h=n.parse(s["text-color"],1,mb)))return null;var f=r[r.length-1];f.scale=u,f.font=a,f.textColor=h}else{var c=n.parse(t[o],1,gb);if(!c)return null;var l=c.type.kind;if("string"!==l&&"value"!==l&&"null"!==l&&"resolvedImage"!==l)return n.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");e=!0,r.push({content:c,scale:null,font:null,textColor:null})}}return new qb(r)},qb.prototype.evaluate=function(t){return new Cb(this.sections.map((function(n){var i=n.content.evaluate(t);return Lb(i)===Mb?new Pb("",i,null,null,null):new Pb(zb(i),null,n.scale?n.scale.evaluate(t):null,n.font?n.font.evaluate(t).join(","):null,n.textColor?n.textColor.evaluate(t):null)})))},qb.prototype.eachChild=function(t){for(var n=0,i=this.sections;n-1),i},Ub.prototype.eachChild=function(t){t(this.input)},Ub.prototype.outputDefined=function(){return!1},Ub.prototype.serialize=function(){return["image",this.input.serialize()]};var Bb={"to-boolean":yb,"to-color":mb,"to-number":db,"to-string":pb},Xb=function(t,n){this.type=t,this.args=n};Xb.parse=function(t,n){if(t.length<2)return n.error("Expected at least one argument.");var i=t[0];if(("to-boolean"===i||"to-string"===i)&&2!==t.length)return n.error("Expected one argument.");for(var r=Bb[i],e=[],o=1;o4?"Invalid rbga value "+JSON.stringify(n)+": expected an array containing either three or four numeric values.":Ib(n[0],n[1],n[2],n[3])))return new nb(n[0]/255,n[1]/255,n[2]/255,n[3])}throw new Fb(i||"Could not parse color from value '"+("string"==typeof n?n:String(JSON.stringify(n)))+"'")}if("number"===this.type.kind){for(var s=null,u=0,a=this.args;u=n[2])&&(!(t[1]<=n[1])&&!(t[3]>=n[3])))}function Jb(t,n){var i,r=(180+t[0])/360,e=(i=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360),o=Math.pow(2,n.z);return[Math.round(r*o*$b),Math.round(e*o*$b)]}function Qb(t,n,i){var r=t[0]-n[0],e=t[1]-n[1],o=t[0]-i[0],s=t[1]-i[1];return r*s-o*e==0&&r*o<=0&&e*s<=0}function tx(t,n,i){return n[1]>t[1]!=i[1]>t[1]&&t[0]<(i[0]-n[0])*(t[1]-n[1])/(i[1]-n[1])+n[0]}function nx(t,n){for(var i=!1,r=0,e=n.length;r0&&c<0||f<0&&c>0}function ex(t,n,i){for(var r=0,e=i;ri[2]){var e=.5*r,o=t[0]-i[0]>e?-r:i[0]-t[0]>e?r:0;0===o&&(o=t[0]-i[2]>e?-r:i[2]-t[0]>e?r:0),t[0]+=o}Kb(n,t)}function fx(t,n,i,r){var e=Math.pow(2,r.z)*$b,o=[r.x*$b,r.y*$b],s=[];if(!t)return s;for(var u=0,a=t;u=0)return!1;var i=!0;return t.eachChild((function(t){i&&!px(t,n)&&(i=!1)})),i}lx.parse=function(t,n){if(2!==t.length)return n.error("'within' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(Nb(t[1])){var i=t[1];if("FeatureCollection"===i.type)for(var r=0;rn))throw new Fb("Input is not a number.");s=u-1}return 0}mx.prototype.parse=function(t,n,i,r,e){return void 0===e&&(e={}),n?this.concat(n,i,r)._parse(t,e):this._parse(t,e)},mx.prototype._parse=function(t,n){function i(t,n,i){return"assert"===i?new Db(n,[t]):"coerce"===i?new Xb(n,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var r=t[0];if("string"!=typeof r)return this.error("Expression name must be a string, but found "+typeof r+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var e=this.registry[r];if(e){var o=e.parse(t,this);if(!o)return null;if(this.expectedType){var s=this.expectedType,u=o.type;if("string"!==s.kind&&"number"!==s.kind&&"boolean"!==s.kind&&"object"!==s.kind&&"array"!==s.kind||"value"!==u.kind)if("color"!==s.kind&&"formatted"!==s.kind&&"resolvedImage"!==s.kind||"value"!==u.kind&&"string"!==u.kind){if(this.checkSubtype(s,u))return null}else o=i(o,s,n.typeAnnotation||"coerce");else o=i(o,s,n.typeAnnotation||"assert")}if(!(o instanceof Rb)&&"resolvedImage"!==o.type.kind&&wx(o)){var a=new Wb;try{o=new Rb(o.type,o.evaluate(a))}catch(t){return this.error(t.message),null}}return o}return this.error('Unknown expression "'+r+'". If you wanted a literal array, use ["literal", [...]].',0)}return void 0===t?this.error("'undefined' value invalid. Use null instead."):"object"==typeof t?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof t+" instead.")},mx.prototype.concat=function(t,n,i){var r="number"==typeof t?this.path.concat(t):this.path,e=i?this.scope.concat(i):this.scope;return new mx(this.registry,r,n||null,e,this.errors)},mx.prototype.error=function(t){for(var n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];var r=""+this.key+n.map((function(t){return"["+t+"]"})).join("");this.errors.push(new cb(r,t))},mx.prototype.checkSubtype=function(t,n){var i=jb(t,n);return i&&this.error(i),i};var bx=function(t,n,i){this.type=t,this.input=n,this.labels=[],this.outputs=[];for(var r=0,e=i;r=s)return n.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);var f=n.parse(u,h,e);if(!f)return null;e=e||f.type,r.push([s,f])}return new bx(e,i,r)},bx.prototype.evaluate=function(t){var n=this.labels,i=this.outputs;if(1===n.length)return i[0].evaluate(t);var r=this.input.evaluate(t);if(r<=n[0])return i[0].evaluate(t);var e=n.length;return r>=n[e-1]?i[e-1].evaluate(t):i[gx(n,r)].evaluate(t)},bx.prototype.eachChild=function(t){t(this.input);for(var n=0,i=this.outputs;n0&&t.push(this.labels[n]),t.push(this.outputs[n].serialize());return t};var xx=Mx;function Mx(t,n,i,r){this.cx=3*t,this.bx=3*(i-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*n,this.by=3*(r-n)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=r,this.p2x=i,this.p2y=r}function _x(t,n,i){return t*(1-i)+n*i}Mx.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},Mx.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},Mx.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},Mx.prototype.solveCurveX=function(t,n){var i,r,e,o,s;for(void 0===n&&(n=1e-6),e=t,s=0;s<8;s++){if(o=this.sampleCurveX(e)-t,Math.abs(o)(r=1))return r;for(;io?i=e:r=e,e=.5*(r-i)+i}return e},Mx.prototype.solve=function(t,n){return this.sampleCurveY(this.solveCurveX(t,n))};var Sx=Object.freeze({__proto__:null,number:_x,color:function(t,n,i){return new nb(_x(t.r,n.r,i),_x(t.g,n.g,i),_x(t.b,n.b,i),_x(t.a,n.a,i))},array:function(t,n,i){return t.map((function(t,r){return _x(t,n[r],i)}))}}),Ox=.95047,jx=1.08883,Ex=4/29,Tx=6/29,Ax=3*Tx*Tx,Px=Math.PI/180,Cx=180/Math.PI;function kx(t){return t>.008856451679035631?Math.pow(t,1/3):t/Ax+Ex}function Ix(t){return t>Tx?t*t*t:Ax*(t-Ex)}function Nx(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Lx(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function zx(t){var n=Lx(t.r),i=Lx(t.g),r=Lx(t.b),e=kx((.4124564*n+.3575761*i+.1804375*r)/Ox),o=kx((.2126729*n+.7151522*i+.072175*r)/1);return{l:116*o-16,a:500*(e-o),b:200*(o-kx((.0193339*n+.119192*i+.9503041*r)/jx)),alpha:t.a}}function Rx(t){var n=(t.l+16)/116,i=isNaN(t.a)?n:n+t.a/500,r=isNaN(t.b)?n:n-t.b/200;return n=1*Ix(n),i=Ox*Ix(i),r=jx*Ix(r),new nb(Nx(3.2404542*i-1.5371385*n-.4985314*r),Nx(-.969266*i+1.8760108*n+.041556*r),Nx(.0556434*i-.2040259*n+1.0572252*r),t.alpha)}function Fx(t,n,i){var r=n-t;return t+i*(r>180||r<-180?r-360*Math.round(r/360):r)}var Gx={forward:zx,reverse:Rx,interpolate:function(t,n,i){return{l:_x(t.l,n.l,i),a:_x(t.a,n.a,i),b:_x(t.b,n.b,i),alpha:_x(t.alpha,n.alpha,i)}}},Dx={forward:function(t){var n=zx(t),i=n.l,r=n.a,e=n.b,o=Math.atan2(e,r)*Cx;return{h:o<0?o+360:o,c:Math.sqrt(r*r+e*e),l:i,alpha:t.a}},reverse:function(t){var n=t.h*Px,i=t.c;return Rx({l:t.l,a:Math.cos(n)*i,b:Math.sin(n)*i,alpha:t.alpha})},interpolate:function(t,n,i){return{h:Fx(t.h,n.h,i),c:_x(t.c,n.c,i),l:_x(t.l,n.l,i),alpha:_x(t.alpha,n.alpha,i)}}},qx=function(t,n,i,r,e){this.type=t,this.operator=n,this.interpolation=i,this.input=r,this.labels=[],this.outputs=[];for(var o=0,s=e;o1})))return n.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:u}}if(t.length-1<4)return n.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if((t.length-1)%2!=0)return n.error("Expected an even number of arguments.");if(!(e=n.parse(e,2,db)))return null;var a=[],h=null;"interpolate-hcl"===i||"interpolate-lab"===i?h=mb:n.expectedType&&"value"!==n.expectedType.kind&&(h=n.expectedType);for(var f=0;f=c)return n.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',v);var p=n.parse(l,d,h);if(!p)return null;h=h||p.type,a.push([c,p])}return"number"===h.kind||"color"===h.kind||"array"===h.kind&&"number"===h.itemType.kind&&"number"==typeof h.N?new qx(h,i,r,e,a):n.error("Type "+Sb(h)+" is not interpolatable.")},qx.prototype.evaluate=function(t){var n=this.labels,i=this.outputs;if(1===n.length)return i[0].evaluate(t);var r=this.input.evaluate(t);if(r<=n[0])return i[0].evaluate(t);var e=n.length;if(r>=n[e-1])return i[e-1].evaluate(t);var o=gx(n,r),s=n[o],u=n[o+1],a=qx.interpolationFactor(this.interpolation,r,s,u),h=i[o].evaluate(t),f=i[o+1].evaluate(t);return"interpolate"===this.operator?Sx[this.type.kind.toLowerCase()](h,f,a):"interpolate-hcl"===this.operator?Dx.reverse(Dx.interpolate(Dx.forward(h),Dx.forward(f),a)):Gx.reverse(Gx.interpolate(Gx.forward(h),Gx.forward(f),a))},qx.prototype.eachChild=function(t){t(this.input);for(var n=0,i=this.outputs;n=i.length)throw new Fb("Array index out of bounds: "+n+" > "+(i.length-1)+".");if(n!==Math.floor(n))throw new Fb("Array index must be an integer, but found "+n+" instead.");return i[n]},Vx.prototype.eachChild=function(t){t(this.index),t(this.input)},Vx.prototype.outputDefined=function(){return!1},Vx.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var Wx=function(t,n){this.type=yb,this.needle=t,this.haystack=n};Wx.parse=function(t,n){if(3!==t.length)return n.error("Expected 2 arguments, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1,gb),r=n.parse(t[2],2,gb);return i&&r?Eb(i.type,[yb,pb,db,vb,gb])?new Wx(i,r):n.error("Expected first argument to be of type boolean, string, number or null, but found "+Sb(i.type)+" instead"):null},Wx.prototype.evaluate=function(t){var n=this.needle.evaluate(t),i=this.haystack.evaluate(t);if(null==i)return!1;if(!Tb(n,["boolean","string","number","null"]))throw new Fb("Expected first argument to be of type boolean, string, number or null, but found "+Sb(Lb(n))+" instead.");if(!Tb(i,["string","array"]))throw new Fb("Expected second argument to be of type array or string, but found "+Sb(Lb(i))+" instead.");return i.indexOf(n)>=0},Wx.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},Wx.prototype.outputDefined=function(){return!0},Wx.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var Yx=function(t,n,i){this.type=db,this.needle=t,this.haystack=n,this.fromIndex=i};Yx.parse=function(t,n){if(t.length<=2||t.length>=5)return n.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1,gb),r=n.parse(t[2],2,gb);if(!i||!r)return null;if(!Eb(i.type,[yb,pb,db,vb,gb]))return n.error("Expected first argument to be of type boolean, string, number or null, but found "+Sb(i.type)+" instead");if(4===t.length){var e=n.parse(t[3],3,db);return e?new Yx(i,r,e):null}return new Yx(i,r)},Yx.prototype.evaluate=function(t){var n=this.needle.evaluate(t),i=this.haystack.evaluate(t);if(!Tb(n,["boolean","string","number","null"]))throw new Fb("Expected first argument to be of type boolean, string, number or null, but found "+Sb(Lb(n))+" instead.");if(!Tb(i,["string","array"]))throw new Fb("Expected second argument to be of type array or string, but found "+Sb(Lb(i))+" instead.");if(this.fromIndex){var r=this.fromIndex.evaluate(t);return i.indexOf(n,r)}return i.indexOf(n)},Yx.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},Yx.prototype.outputDefined=function(){return!1},Yx.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var Zx=function(t,n,i,r,e,o){this.inputType=t,this.type=n,this.input=i,this.cases=r,this.outputs=e,this.otherwise=o};Zx.parse=function(t,n){if(t.length<5)return n.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if(t.length%2!=1)return n.error("Expected an even number of arguments.");var i,r;n.expectedType&&"value"!==n.expectedType.kind&&(r=n.expectedType);for(var e={},o=[],s=2;sNumber.MAX_SAFE_INTEGER)return h.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if("number"==typeof l&&Math.floor(l)!==l)return h.error("Numeric branch labels must be integer values.");if(i){if(h.checkSubtype(i,Lb(l)))return null}else i=Lb(l);if(void 0!==e[String(l)])return h.error("Branch labels must be unique.");e[String(l)]=o.length}var v=n.parse(a,s,r);if(!v)return null;r=r||v.type,o.push(v)}var d=n.parse(t[1],1,gb);if(!d)return null;var p=n.parse(t[t.length-1],t.length-1,r);return p?"value"!==d.type.kind&&n.concat(1).checkSubtype(i,d.type)?null:new Zx(i,r,d,e,o,p):null},Zx.prototype.evaluate=function(t){var n=this.input.evaluate(t);return(Lb(n)===this.inputType&&this.outputs[this.cases[n]]||this.otherwise).evaluate(t)},Zx.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},Zx.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},Zx.prototype.serialize=function(){for(var t=this,n=["match",this.input.serialize()],i=[],r={},e=0,o=Object.keys(this.cases).sort();e=5)return n.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1,gb),r=n.parse(t[2],2,db);if(!i||!r)return null;if(!Eb(i.type,[_b(gb),pb,gb]))return n.error("Expected first argument to be of type array or string, but found "+Sb(i.type)+" instead");if(4===t.length){var e=n.parse(t[3],3,db);return e?new Kx(i.type,i,r,e):null}return new Kx(i.type,i,r)},Kx.prototype.evaluate=function(t){var n=this.input.evaluate(t),i=this.beginIndex.evaluate(t);if(!Tb(n,["string","array"]))throw new Fb("Expected first argument to be of type array or string, but found "+Sb(Lb(n))+" instead.");if(this.endIndex){var r=this.endIndex.evaluate(t);return n.slice(i,r)}return n.slice(i)},Kx.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},Kx.prototype.outputDefined=function(){return!1},Kx.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};var tM=Qx("==",(function(t,n,i){return n===i}),Jx),nM=Qx("!=",(function(t,n,i){return n!==i}),(function(t,n,i,r){return!Jx(0,n,i,r)})),iM=Qx("<",(function(t,n,i){return n",(function(t,n,i){return n>i}),(function(t,n,i,r){return r.compare(n,i)>0})),eM=Qx("<=",(function(t,n,i){return n<=i}),(function(t,n,i,r){return r.compare(n,i)<=0})),oM=Qx(">=",(function(t,n,i){return n>=i}),(function(t,n,i,r){return r.compare(n,i)>=0})),sM=function(t,n,i,r,e){this.type=pb,this.number=t,this.locale=n,this.currency=i,this.minFractionDigits=r,this.maxFractionDigits=e};sM.parse=function(t,n){if(3!==t.length)return n.error("Expected two arguments.");var i=n.parse(t[1],1,db);if(!i)return null;var r=t[2];if("object"!=typeof r||Array.isArray(r))return n.error("NumberFormat options argument must be an object.");var e=null;if(r.locale&&!(e=n.parse(r.locale,1,pb)))return null;var o=null;if(r.currency&&!(o=n.parse(r.currency,1,pb)))return null;var s=null;if(r["min-fraction-digits"]&&!(s=n.parse(r["min-fraction-digits"],1,db)))return null;var u=null;return r["max-fraction-digits"]&&!(u=n.parse(r["max-fraction-digits"],1,db))?null:new sM(i,e,o,s,u)},sM.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},sM.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},sM.prototype.outputDefined=function(){return!1},sM.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]};var uM=function(t){this.type=db,this.input=t};uM.parse=function(t,n){if(2!==t.length)return n.error("Expected 1 argument, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1);return i?"array"!==i.type.kind&&"string"!==i.type.kind&&"value"!==i.type.kind?n.error("Expected argument of type string or array, but found "+Sb(i.type)+" instead."):new uM(i):null},uM.prototype.evaluate=function(t){var n=this.input.evaluate(t);if("string"==typeof n)return n.length;if(Array.isArray(n))return n.length;throw new Fb("Expected value to be of type string or array, but found "+Sb(Lb(n))+" instead.")},uM.prototype.eachChild=function(t){t(this.input)},uM.prototype.outputDefined=function(){return!1},uM.prototype.serialize=function(){var t=["length"];return this.eachChild((function(n){t.push(n.serialize())})),t};var aM={"==":tM,"!=":nM,">":rM,"<":iM,">=":oM,"<=":eM,array:Db,at:Vx,boolean:Db,case:$x,coalesce:Bx,collator:Zb,format:qb,image:Ub,in:Wx,"index-of":Yx,interpolate:qx,"interpolate-hcl":qx,"interpolate-lab":qx,length:uM,let:Xx,literal:Rb,match:Zx,number:Db,"number-format":sM,object:Db,slice:Kx,step:bx,string:Db,"to-boolean":Xb,"to-color":Xb,"to-number":Xb,"to-string":Xb,var:yx,within:lx};function hM(t,n){var i=n[0],r=n[1],e=n[2],o=n[3];i=i.evaluate(t),r=r.evaluate(t),e=e.evaluate(t);var s=o?o.evaluate(t):1,u=Ib(i,r,e,s);if(u)throw new Fb(u);return new nb(i/255*s,r/255*s,e/255*s,s)}function fM(t,n){return t in n}function cM(t,n){var i=n[t];return void 0===i?null:i}function lM(t){return{type:t}}function vM(t){return{result:"success",value:t}}function dM(t){return{result:"error",value:t}}function pM(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}Yb.register(aM,{error:[{kind:"error"},[pb],function(t,n){var i=n[0];throw new Fb(i.evaluate(t))}],typeof:[pb,[gb],function(t,n){return Sb(Lb(n[0].evaluate(t)))}],"to-rgba":[_b(db,4),[mb],function(t,n){return n[0].evaluate(t).toArray()}],rgb:[mb,[db,db,db],hM],rgba:[mb,[db,db,db,db],hM],has:{type:yb,overloads:[[[pb],function(t,n){return fM(n[0].evaluate(t),t.properties())}],[[pb,wb],function(t,n){var i=n[0],r=n[1];return fM(i.evaluate(t),r.evaluate(t))}]]},get:{type:gb,overloads:[[[pb],function(t,n){return cM(n[0].evaluate(t),t.properties())}],[[pb,wb],function(t,n){var i=n[0],r=n[1];return cM(i.evaluate(t),r.evaluate(t))}]]},"feature-state":[gb,[pb],function(t,n){return cM(n[0].evaluate(t),t.featureState||{})}],properties:[wb,[],function(t){return t.properties()}],"geometry-type":[pb,[],function(t){return t.geometryType()}],id:[gb,[],function(t){return t.id()}],zoom:[db,[],function(t){return t.globals.zoom}],pitch:[db,[],function(t){return t.globals.pitch||0}],"distance-from-center":[db,[],function(t){return t.distanceFromCenter()}],"heatmap-density":[db,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[db,[],function(t){return t.globals.lineProgress||0}],"sky-radial-progress":[db,[],function(t){return t.globals.skyRadialProgress||0}],accumulated:[gb,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[db,lM(db),function(t,n){for(var i=0,r=0,e=n;r":[yb,[pb,gb],function(t,n){var i=n[0],r=n[1],e=t.properties()[i.value],o=r.value;return typeof e==typeof o&&e>o}],"filter-id->":[yb,[gb],function(t,n){var i=n[0],r=t.id(),e=i.value;return typeof r==typeof e&&r>e}],"filter-<=":[yb,[pb,gb],function(t,n){var i=n[0],r=n[1],e=t.properties()[i.value],o=r.value;return typeof e==typeof o&&e<=o}],"filter-id-<=":[yb,[gb],function(t,n){var i=n[0],r=t.id(),e=i.value;return typeof r==typeof e&&r<=e}],"filter->=":[yb,[pb,gb],function(t,n){var i=n[0],r=n[1],e=t.properties()[i.value],o=r.value;return typeof e==typeof o&&e>=o}],"filter-id->=":[yb,[gb],function(t,n){var i=n[0],r=t.id(),e=i.value;return typeof r==typeof e&&r>=e}],"filter-has":[yb,[gb],function(t,n){return n[0].value in t.properties()}],"filter-has-id":[yb,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[yb,[_b(pb)],function(t,n){return n[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[yb,[_b(gb)],function(t,n){return n[0].value.indexOf(t.id())>=0}],"filter-in-small":[yb,[pb,_b(gb)],function(t,n){var i=n[0];return n[1].value.indexOf(t.properties()[i.value])>=0}],"filter-in-large":[yb,[pb,_b(gb)],function(t,n){var i=n[0],r=n[1];return function(t,n,i,r){for(;i<=r;){var e=i+r>>1;if(n[e]===t)return!0;n[e]>t?r=e-1:i=e+1}return!1}(t.properties()[i.value],r.value,0,r.value.length-1)}],all:{type:yb,overloads:[[[yb,yb],function(t,n){var i=n[0],r=n[1];return i.evaluate(t)&&r.evaluate(t)}],[lM(yb),function(t,n){for(var i=0,r=n;i-1}(n))return dM([new cb("","zoom expressions not supported")]);var o=xM(i);if(!o&&!e)return dM([new cb("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(o instanceof cb)return dM([o]);if(o instanceof qx&&!function(t){return!!t.expression&&t.expression.interpolated}(n))return dM([new cb("",'"interpolate" expressions cannot be used with this property')]);if(!o)return vM(new wM(r?"constant":"source",t.value));var s=o instanceof qx?o.interpolation:void 0;return vM(new gM(r?"camera":"composite",t.value,o.labels,s))}function xM(t){var n=null;if(t instanceof Xx)n=xM(t.result);else if(t instanceof Bx)for(var i=0,r=t.args;i":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},expression_name:{type:"enum",values:{let:{group:"Variable binding"},var:{group:"Variable binding"},literal:{group:"Types"},array:{group:"Types"},at:{group:"Lookup"},in:{group:"Lookup"},"index-of":{group:"Lookup"},slice:{group:"Lookup"},case:{group:"Decision"},match:{group:"Decision"},coalesce:{group:"Decision"},step:{group:"Ramps, scales, curves"},interpolate:{group:"Ramps, scales, curves"},"interpolate-hcl":{group:"Ramps, scales, curves"},"interpolate-lab":{group:"Ramps, scales, curves"},ln2:{group:"Math"},pi:{group:"Math"},e:{group:"Math"},typeof:{group:"Types"},string:{group:"Types"},number:{group:"Types"},boolean:{group:"Types"},object:{group:"Types"},collator:{group:"Types"},format:{group:"Types"},image:{group:"Types"},"number-format":{group:"Types"},"to-string":{group:"Types"},"to-number":{group:"Types"},"to-boolean":{group:"Types"},"to-rgba":{group:"Color"},"to-color":{group:"Types"},rgb:{group:"Color"},rgba:{group:"Color"},get:{group:"Lookup"},has:{group:"Lookup"},length:{group:"Lookup"},properties:{group:"Feature data"},"feature-state":{group:"Feature data"},"geometry-type":{group:"Feature data"},id:{group:"Feature data"},zoom:{group:"Camera"},pitch:{group:"Camera"},"distance-from-center":{group:"Camera"},"heatmap-density":{group:"Heatmap"},"line-progress":{group:"Feature data"},"sky-radial-progress":{group:"sky"},accumulated:{group:"Feature data"},"+":{group:"Math"},"*":{group:"Math"},"-":{group:"Math"},"/":{group:"Math"},"%":{group:"Math"},"^":{group:"Math"},sqrt:{group:"Math"},log10:{group:"Math"},ln:{group:"Math"},log2:{group:"Math"},sin:{group:"Math"},cos:{group:"Math"},tan:{group:"Math"},asin:{group:"Math"},acos:{group:"Math"},atan:{group:"Math"},min:{group:"Math"},max:{group:"Math"},round:{group:"Math"},abs:{group:"Math"},ceil:{group:"Math"},floor:{group:"Math"},distance:{group:"Math"},"==":{group:"Decision"},"!=":{group:"Decision"},">":{group:"Decision"},"<":{group:"Decision"},">=":{group:"Decision"},"<=":{group:"Decision"},all:{group:"Decision"},any:{group:"Decision"},"!":{group:"Decision"},within:{group:"Decision"},"is-supported-script":{group:"String"},upcase:{group:"String"},downcase:{group:"String"},concat:{group:"String"},"resolved-locale":{group:"String"}}},fog:{range:{type:"array",default:[.5,10],minimum:-20,maximum:20,length:2,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-blend":{type:"number","property-type":"data-constant",default:.1,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},projection:{name:{type:"enum",values:{albers:{},equalEarth:{},equirectangular:{},lambertConformalConic:{},mercator:{},naturalEarth:{},winkelTripel:{}},default:"mercator",required:!0},center:{type:"array",length:2,value:"number","property-type":"data-constant",transition:!1,requires:[{name:["albers","lambertConformalConic"]}]},parallels:{type:"array",length:2,value:"number","property-type":"data-constant",transition:!1,requires:[{name:["albers","lambertConformalConic"]}]}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number","property-type":"data-constant",default:1,minimum:0,maximum:1e3,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_sky:{"sky-type":{type:"enum",values:{gradient:{},atmosphere:{}},default:"atmosphere",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{type:"array",value:"number",length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,requires:[{"sky-type":"atmosphere"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{type:"number",requires:[{"sky-type":"atmosphere"}],default:10,minimum:0,maximum:100,transition:!1,"property-type":"data-constant"},"sky-gradient-center":{type:"array",requires:[{"sky-type":"gradient"}],value:"number",default:[0,0],length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{type:"number",requires:[{"sky-type":"gradient"}],default:90,minimum:0,maximum:180,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient":{type:"color",default:["interpolate",["linear"],["sky-radial-progress"],.8,"#87ceeb",1,"white"],transition:!1,requires:[{"sky-type":"gradient"}],expression:{interpolated:!0,parameters:["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{type:"color",default:"white",transition:!1,requires:[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-atmosphere-color":{type:"color",default:"white",transition:!1,requires:[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};function SM(t){if(!0===t||!1===t)return!0;if(!Array.isArray(t)||0===t.length)return!1;switch(t[0]){case"has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(var n=0,i=t.slice(1);n",">=","<","<=","to-boolean"]);function PM(t,n){return tn?1:0}function CM(t){if(!Array.isArray(t))return!1;if("within"===t[0])return!0;for(var n=1;n"===i||"<="===i||">="===i?IM(t[1],t[2],i):"any"===i?(n=t.slice(1),["any"].concat(n.map(kM))):"all"===i?["all"].concat(t.slice(1).map(kM)):"none"===i?["all"].concat(t.slice(1).map(kM).map(zM)):"in"===i?NM(t[1],t.slice(2)):"!in"===i?zM(NM(t[1],t.slice(2))):"has"===i?LM(t[1]):"!has"===i?zM(LM(t[1])):"within"!==i||t}function IM(t,n,i){switch(t){case"$type":return["filter-type-"+i,n];case"$id":return["filter-id-"+i,n];default:return["filter-"+i,t,n]}}function NM(t,n){if(0===n.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",n]];case"$id":return["filter-id-in",["literal",n]];default:return n.length>200&&!n.some((function(t){return typeof t!=typeof n[0]}))?["filter-in-large",t,["literal",n.sort(PM)]]:["filter-in-small",t,["literal",n]]}}function LM(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function zM(t){return["!",t]}var RM=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function FM(t,n){var i={};for(var r in t)"ref"!==r&&(i[r]=t[r]);return RM.forEach((function(t){t in n&&(i[t]=n[t])})),i}var GM={thin:100,hairline:100,"ultra-light":100,"extra-light":100,light:200,book:300,regular:400,normal:400,plain:400,roman:400,standard:400,medium:500,"semi-bold":600,"demi-bold":600,bold:700,heavy:800,black:800,"extra-bold":800,"ultra-black":900,"extra-black":900,"ultra-bold":900,"heavy-black":900,fat:900,poster:900},DM=" ",qM=/(italic|oblique)$/i,UM={},BM=function(t,n,i){var r=UM[t];if(!r){Array.isArray(t)||(t=[t]);for(var e=400,o="normal",s=[],u=0,a=t.length;u1?h[h.length-2].toLowerCase():"";if(f==c||f==c.replace("-","")||l+"-"+f==c){e=GM[c],h.pop(),l&&c.startsWith(l)&&h.pop();break}}"number"==typeof f&&(e=f);var v=h.join(DM).replace("Klokantech Noto Sans","Noto Sans");-1!==v.indexOf(DM)&&(v='"'+v+'"'),s.push(v)}r=UM[t]=[o,e,s]}return r[0]+DM+r[1]+DM+n+"px"+(i?"/"+i:"")+DM+r[2]},XM="https://api.mapbox.com";function VM(t){var n="mapbox://";return 0!==t.indexOf(n)?"":t.slice(n.length)}function WM(t,n){var i=VM(t);if(!i)return decodeURI(new URL(t,location.href).href);var r="styles/";if(0!==i.indexOf(r))throw new Error("unexpected style url: "+t);var e=i.slice(r.length);return XM+"/styles/v1/"+e+"?&access_token="+n}function YM(t,n,i,r){var e=new URL(t,r),o=VM(t);return o?"https://{a-d}.tiles.mapbox.com/v4/"+o+"/{z}/{x}/{y}.vector.pbf?access_token="+n:n?(e.searchParams.set(i,n),decodeURI(e.href)):decodeURI(e.href)}function ZM(t){return t*Math.PI/180}var $M=function(){for(var t=[],n=78271.51696402048;t.length<=24;n/=2)t.push(n);return t}();function KM(t,n){if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas)return new OffscreenCanvas(t,n);var i=document.createElement("canvas");return i.width=t,i.height=n,i}var HM={};function JM(t,n,i){if(void 0===i&&(i={}),n in HM)return HM[n];var r=i.transformRequest&&i.transformRequest(n,t)||new Request(n);r.headers.get("Accept")||r.headers.set("Accept","application/json");var e=fetch(r).then((function(t){return delete HM[n],t.ok?t.json():Promise.reject(new Error("Error fetching source "+n))})).catch((function(t){return delete HM[n],Promise.reject(new Error("Error fetching source "+n))}));return HM[n]=e,e}function QM(t,n){if("string"!=typeof t)return Promise.resolve(t);if(!t.trim().startsWith("{"))return JM("Style",t=WM(t,n.accessToken),n);try{var i=JSON.parse(t);return Promise.resolve(i)}catch(t){return Promise.reject(t)}}var t_={};function n_(t,n,i){void 0===i&&(i={});var r=[n,JSON.stringify(t)].toString(),e=t_[r];if(!e||i.transformRequest){var o=t.url;if(o){var s=YM(o,i.accessToken,i.accessTokenParam||"access_token",n||location.href);e=o.startsWith("mapbox://")?Promise.resolve(A({},t,{url:void 0,tiles:s})):JM("Source",s,i).then((function(t){for(var n=0,r=t.tiles.length;n=.05){for(var i="",r=t.split("\n"),e=r_.slice(0,Math.round(n/.1)),o=0,s=r.length;o0&&(i+="\n"),i+=r[o].split("").join(e);return i}return t}function o_(){return i_||(i_=KM(1,1).getContext("2d")),i_}function s_(t,n){return o_().measureText(t).width+(t.length-1)*n}var u_={};function a_(t,n,i,r){if(-1!==t.indexOf("\n")){for(var e=t.split("\n"),o=[],s=0,u=e.length;s1){var c=o_();c.font=n;for(var l=c.measureText("M").width*i,v="",d=[],p=0,y=f.length;p1;++g){var x=d[g];if(s_(x,r)<.35*l){var M=g>0?s_(d[g-1],r):1/0,_=g.7*l&&s_(E,r)<.6*l){var T=j.split(" "),A=T.pop();s_(A,r)<.2*l&&(d[S]=T.join(" "),d[S+1]=A+" "+E),O-=1}}h=d.join("\n")}else h=t;h=e_(h,r),u_[a]=h}return h}var h_,f_=/font-family: ?([^;]*);/,c_=/("|')/g;function l_(t){if(!h_){h_={};for(var n=document.styleSheets,i=0,r=n.length;i0&&"string"==typeof a[0]&&a[0]in aM);if(!l&&pM(f)&&(f=rb(f,c),l=!0),l){var v=function(t,n){var i=bM(t,n);if("error"===i.result)throw new Error(i.value.map((function(t){return t.key+": "+t.message})).join(", "));return i.value}(f,c);h[i]=v.evaluate.bind(v)}else"color"==c.type&&(f=nb.parse(f)),h[i]=function(){return f}}return b_.zoom=r,h[i](b_,e,s)}function M_(t,n,i,r){return x_(t,"layout","icon-allow-overlap",n,i,r)?x_(t,"layout","icon-ignore-placement",n,i,r)?"none":"obstacle":"declutter"}function __(t,n,i,r,e){return e||console.warn("No filterCache provided to evaluateFilter()"),t in e||(e[t]=OM(n).filter),b_.zoom=r,e[t](b_,i)}var S_=!1;function O_(t,n){if(t){if(!S_&&(0===t.a||0===n))return;var i=t.a;return n=void 0===n?1:n,0===i?"transparent":"rgba("+Math.round(255*t.r/i)+","+Math.round(255*t.g/i)+","+Math.round(255*t.b/i)+","+i*n+")"}return t}var j_=/^([^]*)\{(.*)\}([^]*)$/;function E_(t,n){var i;do{if(i=t.match(j_)){var r=n[i[2]]||"";t=i[1]+r+i[3]}}while(i);return t}var T_=!1;function A_(t,n,i,r,e,o,s){if(void 0===r&&(r=$M),void 0===e&&(e=void 0),void 0===o&&(o=void 0),void 0===s&&(s=void 0),"string"==typeof n&&(n=JSON.parse(n)),8!=n.version)throw new Error("glStyle version 8 required.");var u,a;if(o)if("undefined"!=typeof Image){var h=new Image;h.crossOrigin="anonymous",h.onload=function(){u=h,a=[h.width,h.height],t.changed(),h.onload=null},h.src=o}else if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope){var f=self;f.postMessage({action:"loadImage",src:o}),f.addEventListener("message",(function(t){"imageLoaded"===t.data.action&&t.data.src===o&&(u=t.data.image,a=[u.width,u.height])}))}for(var c,l=function(t){t=t.slice();for(var n=Object.create(null),i=0;i=S.maxzoom)){var C=S.filter;if(!C||__(O,C,d,f,w)){c=S;var k=void 0,I=void 0,N=void 0,L=void 0,z=void 0,R=void 0,F=_.index;if(3==l&&("fill"==S.type||"fill-extrusion"==S.type))if(I=x_(S,"paint",S.type+"-opacity",f,d,m,g),S.type+"-pattern"in P){var G=x_(S,"paint",S.type+"-pattern",f,d,m,g);if(G){var D="string"==typeof G?E_(G,o):G.toString();if(u&&e&&e[D]){++b,(R=A[b])&&R.getFill()&&!R.getStroke()&&!R.getText()||(R=new Sv({fill:new rv}),A[b]=R),N=R.getFill(),R.setZIndex(F);var q=D+"."+I,U=y[q];if(!U){var B=e[D],X=KM(B.width,B.height),V=X.getContext("2d");V.globalAlpha=I,V.drawImage(u,B.x,B.y,B.width,B.height,0,0,B.width,B.height),U=V.createPattern(X,"repeat"),y[q]=U}N.setColor(U)}}}else k=O_(x_(S,"paint",S.type+"-color",f,d,m,g),I),S.type+"-outline-color"in P&&(z=O_(x_(S,"paint",S.type+"-outline-color",f,d,m,g),I)),z||(z=k),(k||z)&&(++b,(!(R=A[b])||k&&!R.getFill()||!k&&R.getFill()||z&&!R.getStroke()||!z&&R.getStroke()||R.getText())&&(R=new Sv({fill:k?new rv:void 0,stroke:z?new mv:void 0}),A[b]=R),k&&(N=R.getFill()).setColor(k),z&&((L=R.getStroke()).setColor(z),L.setWidth(.5)),R.setZIndex(F));if(1!=l&&"line"==S.type){k=!("line-pattern"in P)&&"line-color"in P?O_(x_(S,"paint","line-color",f,d,m,g),x_(S,"paint","line-opacity",f,d,m,g)):void 0;var W=x_(S,"paint","line-width",f,d,m,g);k&&W>0&&(++b,(R=A[b])&&R.getStroke()&&!R.getFill()&&!R.getText()||(R=new Sv({stroke:new mv}),A[b]=R),(L=R.getStroke()).setLineCap(x_(S,"layout","line-cap",f,d,m,g)),L.setLineJoin(x_(S,"layout","line-join",f,d,m,g)),L.setMiterLimit(x_(S,"layout","line-miter-limit",f,d,m,g)),L.setColor(k),L.setWidth(W),L.setLineDash(P["line-dasharray"]?x_(S,"paint","line-dasharray",f,d,m,g).map((function(t){return t*W})):null),R.setZIndex(F))}var Y=!1,Z=null,$=0,K=void 0,H=void 0,J=void 0;if((1==l||2==l)&&"icon-image"in j){var Q=x_(S,"layout","icon-image",f,d,m,g);if(Q){K="string"==typeof Q?E_(Q,o):Q.toString();var tt=void 0;if(u&&e&&e[K]){var nt=x_(S,"layout","icon-rotation-alignment",f,d,m,g);if(2==l){var it=n.getGeometry();if(it.getFlatMidpoint||it.getFlatMidpoints){var rt=it.getExtent();if(Math.sqrt(Math.max(Math.pow((rt[2]-rt[0])/i,2),Math.pow((rt[3]-rt[1])/i,2)))>150){var et="MultiLineString"===it.getType()?it.getFlatMidpoints():it.getFlatMidpoint();if(y_||(y_=new fg("Point",p_=[NaN,NaN],[],{},null)),tt=y_,p_[0]=et[0],p_[1]=et[1],"line"===x_(S,"layout","symbol-placement",f,d,m,g)&&"map"===nt)for(var ot=it.getStride(),st=it.getFlatCoordinates(),ut=0,at=st.length-ot;ut=vt&&et[0]<=pt&&et[1]>=dt&&et[1]<=yt){$=Math.atan2(ft-lt,ct-ht);break}}}}}if(2!==l||tt){var mt=x_(S,"layout","icon-size",f,d,m,g),wt=void 0!==P["icon-color"]?x_(S,"paint","icon-color",f,d,m,g):null;if(!wt||0!==wt.a){var gt=K+"."+mt;if(null!==wt&&(gt+="."+wt),!(H=p[gt])){var bt=e[K],xt=M_(S,f,d,m);H=new yv({color:wt?[255*wt.r,255*wt.g,255*wt.b,wt.a]:void 0,img:u,imgSize:a,size:[bt.width,bt.height],offset:[bt.x,bt.y],rotateWithView:"map"===nt,scale:mt/bt.pixelRatio,displacement:"icon-offset"in j?x_(S,"layout","icon-offset",f,d,m,g).map((function(t){return-t*bt.pixelRatio})):void 0,declutterMode:xt}),p[gt]=H}}H&&(++b,(R=A[b])&&R.getImage()&&!R.getFill()&&!R.getStroke()||(R=new Sv,A[b]=R),R.setGeometry(tt),H.setRotation($+ZM(x_(S,"layout","icon-rotate",f,d,m,g))),H.setOpacity(x_(S,"paint","icon-opacity",f,d,m,g)),H.setAnchor(w_[x_(S,"layout","icon-anchor",f,d,m,g)]),R.setImage(H),Z=R.getText(),R.setText(void 0),R.setZIndex(F),Y=!0,J=!1)}else J=!0}}}if(1==l&&"circle"===S.type){++b,(R=A[b])&&R.getImage()&&!R.getFill()&&!R.getStroke()||(R=new Sv,A[b]=R);var Mt="circle-radius"in P?x_(S,"paint","circle-radius",f,d,m,g):5,_t=O_(x_(S,"paint","circle-stroke-color",f,d,m,g),x_(S,"paint","circle-stroke-opacity",f,d,m,g)),St=O_(x_(S,"paint","circle-color",f,d,m,g),x_(S,"paint","circle-opacity",f,d,m,g)),Ot=x_(S,"paint","circle-stroke-width",f,d,m,g),jt=Mt+"."+_t+"."+St+"."+Ot;(H=p[jt])||(H=new iv({radius:Mt,stroke:_t&&Ot>0?new mv({width:Ot,color:_t}):void 0,fill:St?new rv({color:St}):void 0,declutterMode:"none"}),p[jt]=H),R.setImage(H),Z=R.getText(),R.setText(void 0),R.setGeometry(void 0),R.setZIndex(F),Y=!0}var Et=void 0,Tt=void 0,At=void 0,Pt=void 0,Ct=void 0,kt=void 0;if("text-field"in j){Pt=Math.round(x_(S,"layout","text-size",f,d,m,g));var It=x_(S,"layout","text-font",f,d,m,g);At=x_(S,"layout","text-line-height",f,d,m,g),(Tt=BM(s?s(It):It,Pt,At)).includes("sans-serif")||(Tt+=",sans-serif"),Ct=x_(S,"layout","text-letter-spacing",f,d,m,g),kt=x_(S,"layout","text-max-width",f,d,m,g);var Nt=x_(S,"layout","text-field",f,d,m,g);Et="object"==typeof Nt&&Nt.sections?1===Nt.sections.length?Nt.toString():Nt.sections.reduce((function(t,n,i){var r=n.fontStack?n.fontStack.split(","):It,e=BM(s?s(r):r,Pt*(n.scale||1),At),o=n.text;if("\n"===o)return t.push("\n",""),t;if(2!=l){for(var u=0,a=(o=a_(o,e,kt,Ct).split("\n")).length;u0&&t.push("\n",""),t.push(o[u],e);return t}t.push(e_(o,Ct),e)}),[]):E_(Nt,o).trim(),I=x_(S,"paint","text-opacity",f,d,m,g)}if(Et&&I&&!J){Y||(++b,(R=A[b])&&R.getText()&&!R.getFill()&&!R.getStroke()||(R=new Sv,A[b]=R),R.setImage(void 0),R.setGeometry(void 0)),R.getText()||R.setText(Z||new Ev({padding:[2,2,2,2]})),Z=R.getText();var Lt=j["text-transform"];"uppercase"==Lt?Et=Array.isArray(Et)?Et.map((function(t,n){return n%2?t:t.toUpperCase()})):Et.toUpperCase():"lowercase"==Lt&&(Et=Array.isArray(Et)?Et.map((function(t,n){return n%2?t:t.toLowerCase()})):Et.toLowerCase());var zt=Array.isArray(Et)?Et:2==l?e_(Et,Ct):a_(Et,Tt,kt,Ct);Z.setText(zt),Z.setFont(Tt),Z.setRotation(ZM(x_(S,"layout","text-rotate",f,d,m,g)));var Rt=x_(S,"layout","text-anchor",f,d,m,g),Ft=Y||1==l?"point":x_(S,"layout","symbol-placement",f,d,m,g);Z.setPlacement(Ft),Z.setOverflow("point"===Ft);var Gt=x_(S,"paint","text-halo-width",f,d,m,g),Dt=x_(S,"layout","text-offset",f,d,m,g),qt=x_(S,"paint","text-translate",f,d,m,g),Ut=0,Bt=0;if("point"==Ft){var Xt="center";-1!==Rt.indexOf("left")?(Xt="left",Bt=Gt):-1!==Rt.indexOf("right")&&(Xt="right",Bt=-Gt),Z.setTextAlign(Xt);var Vt=x_(S,"layout","text-rotation-alignment",f,d,m,g);Z.setRotateWithView("map"==Vt)}else Z.setMaxAngle(ZM(x_(S,"layout","text-max-angle",f,d,m,g))*Et.length/zt.length),Z.setTextAlign(),Z.setRotateWithView(!1);var Wt="middle";0==Rt.indexOf("bottom")?(Wt="bottom",Ut=-Gt-.5*(At-1)*Pt):0==Rt.indexOf("top")&&(Wt="top",Ut=Gt+.5*(At-1)*Pt),Z.setTextBaseline(Wt),Z.setOffsetX(Dt[0]*Pt+Bt+qt[0]),Z.setOffsetY(Dt[1]*Pt+Ut+qt[1]),T.setColor(O_(x_(S,"paint","text-color",f,d,m,g),I)),Z.setFill(T);var Yt=O_(x_(S,"paint","text-halo-color",f,d,m,g),I);if(Yt){E.setColor(Yt),Gt*=2;var Zt=.5*Pt;E.setWidth(Gt<=Zt?Gt:Zt),Z.setStroke(E)}else Z.setStroke(void 0);var $t=x_(S,"layout","text-padding",f,d,m,g),Kt=Z.getPadding();$t!==Kt[0]&&(Kt[0]=$t,Kt[1]=$t,Kt[2]=$t,Kt[3]=$t),R.setZIndex(F)}}}}return b>-1?(A.length=b+1,T_&&("function"==typeof n.set?n.set("mapbox-layer",c):n.getProperties()["mapbox-layer"]=c),A):void 0}};return t.setStyle(P),t.set("mapbox-source",c),t.set("mapbox-layers",d),t.set("mapbox-featurestate",{}),P}function P_(t,n){n.accessToken||(n=A({},n),new URL(t).searchParams.forEach((function(t,i){n.accessToken=t,n.accessTokenParam=i})));return n}function C_(t,n,i,r,e){var o,s,u;return void 0===i&&(i=""),void 0===r&&(r={}),void 0===e&&(e=void 0),"string"==typeof r?(o=r,u={}):(o=r.styleUrl,u=r),e||(e=u.resolutions),o||"string"!=typeof n||n.trim().startsWith("{")||(o=n),o&&(o=o.startsWith("data:")?location.href:WM(o,u.accessToken),u=P_(o,u)),new Promise((function(r,a){QM(n,u).then((function(n){if(8!=n.version)return a(new Error("glStyle version 8 required."));if(!(t instanceof lg||t instanceof Rg))return a(new Error("Can only apply to VectorLayer or VectorTileLayer"));var h,f,c,l=t instanceof Rg?"vector":"geojson";if(i?s=Array.isArray(i)?n.layers.find((function(t){return t.id===i[0]})).source:i:(s=Object.keys(n.sources).find((function(t){return n.sources[t].type===l})),i=s),!s)return a(new Error("No "+l+" source found in the glStyle."));function v(){if(t instanceof Rg)return z_(n.sources[s],o,u).then((function(n){var i=t.getSource();if(i?n!==i&&(i.setTileUrlFunction(n.getTileUrlFunction()),i.ze||(i.ze=n.ze),i.getAttributions()||i.setAttributions(n.getAttributions()),i.getTileLoadFunction()===Uy&&i.setTileLoadFunction(n.getTileLoadFunction()),Sr(i.getProjection(),n.getProjection())&&(i.tileGrid=n.getTileGrid())):t.setSource(n),!isFinite(t.getMaxResolution())&&!isFinite(t.getMinZoom())){var r=t.getSource().getTileGrid();t.setMaxResolution(r.getResolution(r.getMinZoom()))}}));var i=n.sources[s],r=t.getSource();r&&r.get("mapbox-source")===i||(r=F_(i,o,u));var e=t.getSource();return e?r!==e&&(e.getAttributions()||e.setAttributions(r.getAttributions()),e.ze||(e.ze=r.getFormat()),e.Fe=r.getUrl()):t.setSource(r),Promise.resolve()}function d(){c||n.sprite&&!h?c?(t.setStyle(c),v().then(r).catch(a)):a(new Error("Something went wrong trying to apply style.")):(c=A_(t,n,i,e,h,f,d_),t.getStyle()?v().then(r).catch(a):a(new Error("Nothing to show for source ["+s+"]")))}if(n.sprite){var p=new URL(function(t,n,i){var r=VM(t);if(!r)return decodeURI(new URL(t,i).href);var e="sprites/";if(0!==r.indexOf(e))throw new Error("unexpected sprites url: "+t);var o=r.slice(e.length);return XM+"/styles/v1/"+o+"/sprite?access_token="+n}(n.sprite,u.accessToken,o||location.href)),y=.5==(window.devicePixelRatio>=1.5?.5:1)?"@2x":"",m=p.origin+p.pathname+y+".json"+p.search;new Promise((function(t,n){JM("Sprite",m,u).then(t).catch((function(i){JM("Sprite",m=p.origin+p.pathname+".json"+p.search,u).then(t).catch(n)}))})).then((function(t){void 0===t&&a(new Error("No sprites found.")),h=t,f=p.origin+p.pathname+y+".png"+p.search,d()})).catch((function(t){a(new Error("Sprites cannot be loaded: "+m+": "+t.message))}))}else d()})).catch(a)}))}var k_={};function I_(t,n){var i={id:n.id,type:n.type},r={};function e(e){var o=n.layout||{},s=n.paint||{};i.paint=s;var u,a,h="function"==typeof t.getSource?t.getSource().getTileGrid().getZForResolution(e):t.getView().getZoom(),f="function"==typeof t.getTargetElement?t.getTargetElement():void 0;if(void 0!==s["background-color"]&&(u=x_(i,"paint","background-color",h,k_,r),f&&(f.style.background=nb.parse(u).toString())),void 0!==s["background-opacity"]&&(a=x_(i,"paint","background-opacity",h,k_,r),f&&(f.style.opacity=a)),"none"!=o.visibility)return O_(u,a);f&&(f.style.backgroundColor="",f.style.opacity="")}if("function"==typeof t.getTargetElement)t.getTargetElement()&&e(),t.on(["change:resolution","change:target"],e);else{if("function"!=typeof t.setBackground)throw new Error("Unable to apply background.");t.setBackground(e)}}function N_(t,n){n.layers.some((function(n){if("background"===n.type)return I_(t,n),!0}))}function L_(t){var n=t.bounds;if(n){var i=_r([n[0],n[1]]),r=_r([n[2],n[3]]);return[i[0],i[1],r[0],r[1]]}}function z_(t,n,i){return new Promise((function(r,e){n_(t,n,i).then((function(t){var n=new Gm({tileJSON:t}),i=n.getTileJSON(),e=n.getTileGrid(),o=L_(i),s=i.minzoom||0,u=i.maxzoom||22,a={attributions:n.getAttributions(),format:new Lg,tileGrid:new xf({origin:e.getOrigin(0),extent:o||e.getExtent(),minZoom:s,resolutions:$M.slice(0,u+1),tileSize:512})};Array.isArray(i.tiles)?a.urls=i.tiles:a.url=i.tiles,t.olSourceOptions&&Object.assign(a,t.olSourceOptions),r(new qy(a))})).catch(e)}))}var R_=new Zg;function F_(t,n,i){var r=t.data,e={};if("string"==typeof r){var o=YM(r,i.accessToken,i.accessTokenParam||"access_token",n||location.href);if(i.transformRequest){var s=i.transformRequest(o,"GeoJSON");s instanceof Request&&(o=encodeURI(s.url))}e.url=o}else e.features=R_.readFeatures(r,{featureProjection:Cr()||"EPSG:3857"});var u=new ad(A({attributions:t.attribution,format:R_},e));return u.set("mapbox-source",t),u}var G_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),D_=function(t){function n(n){var i=t.call(this,z)||this;return i.error=n,i}return G_(n,t),n}(c),q_=function(t){function n(n){var i=this,r=!("declutter"in n)||n.declutter,e=new qy({state:"loading",format:new Lg});i=t.call(this,{source:e,background:n.background,declutter:r,className:n.className,opacity:n.opacity,visible:n.visible,zIndex:n.zIndex,minResolution:n.minResolution,maxResolution:n.maxResolution,minZoom:n.minZoom,maxZoom:n.maxZoom,renderOrder:n.renderOrder,renderBuffer:n.renderBuffer,renderMode:n.renderMode,map:n.map,updateWhileAnimating:n.updateWhileAnimating,updateWhileInteracting:n.updateWhileInteracting,preload:n.preload,useInterimTilesOnError:n.useInterimTilesOnError,properties:n.properties})||this,n.accessToken&&(i.accessToken=n.accessToken);var o=n.styleUrl;return C_(i,o,n.layers||n.source,{accessToken:i.accessToken}).then((function(){e.setState("ready")})).catch((function(t){i.dispatchEvent(new D_(t)),i.getSource().setState("error")})),void 0===i.getBackground()&&function(t,n,i){void 0===i&&(i={}),"object"==typeof n?(N_(t,n),Promise.resolve()):QM(n,i).then((function(n){N_(t,n)}))}(i,n.styleUrl,{accessToken:i.accessToken}),i}return G_(n,t),n}(Rg),U_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),B_=function(t){function n(n){var i=this,r=n||{},e=A({},r);return delete e.imageRatio,(i=t.call(this,e)||this).lv=void 0!==r.imageRatio?r.imageRatio:1,i}return U_(n,t),n.prototype.getImageRatio=function(){return this.lv},n.prototype.createRenderer=function(){return new qw(this)},n}($m),X_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),V_=function(t){function n(n){var i=this,r=A({},n);return(i=t.call(this,r)||this).vv=Yl(n.style),i.dv=n.style.variables||{},i.pv=!!n.disableHitDetection,i}return X_(n,t),n.prototype.createRenderer=function(){return new Hm(this,{vertexShader:this.vv.builder.getSymbolVertexShader(),fragmentShader:this.vv.builder.getSymbolFragmentShader(),hitVertexShader:!this.pv&&this.vv.builder.getSymbolVertexShader(!0),hitFragmentShader:!this.pv&&this.vv.builder.getSymbolFragmentShader(!0),uniforms:this.vv.uniforms,attributes:this.vv.attributes})},n.prototype.updateStyleVariables=function(t){A(this.dv,t),this.changed()},n}(ls),W_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Y_(t,n){var i="\n attribute vec2 ".concat(al.TEXTURE_COORD,";\n uniform mat4 ").concat(ul.TILE_TRANSFORM,";\n uniform float ").concat(ul.TEXTURE_PIXEL_WIDTH,";\n uniform float ").concat(ul.TEXTURE_PIXEL_HEIGHT,";\n uniform float ").concat(ul.TEXTURE_RESOLUTION,";\n uniform float ").concat(ul.TEXTURE_ORIGIN_X,";\n uniform float ").concat(ul.TEXTURE_ORIGIN_Y,";\n uniform float ").concat(ul.DEPTH,";\n\n varying vec2 v_textureCoord;\n varying vec2 v_mapCoord;\n\n void main() {\n v_textureCoord = ").concat(al.TEXTURE_COORD,";\n v_mapCoord = vec2(\n ").concat(ul.TEXTURE_ORIGIN_X," + ").concat(ul.TEXTURE_RESOLUTION," * ").concat(ul.TEXTURE_PIXEL_WIDTH," * v_textureCoord[0],\n ").concat(ul.TEXTURE_ORIGIN_Y," - ").concat(ul.TEXTURE_RESOLUTION," * ").concat(ul.TEXTURE_PIXEL_HEIGHT," * v_textureCoord[1]\n );\n gl_Position = ").concat(ul.TILE_TRANSFORM," * vec4(").concat(al.TEXTURE_COORD,", ").concat(ul.DEPTH,", 1.0);\n }\n "),r={inFragmentShader:!0,variables:[],attributes:[],stringLiteralsMap:{},functions:{},bandCount:n},e=[];if(void 0!==t.color){var o=Cl(r,t.color,wl);e.push("color = ".concat(o,";"))}if(void 0!==t.contrast){var s=Cl(r,t.contrast,yl);e.push("color.rgb = clamp((".concat(s," + 1.0) * color.rgb - (").concat(s," / 2.0), vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.exposure){var u=Cl(r,t.exposure,yl);e.push("color.rgb = clamp((".concat(u," + 1.0) * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.saturation){var a=Cl(r,t.saturation,yl);e.push("\n float saturation = ".concat(a," + 1.0;\n float sr = (1.0 - saturation) * 0.2126;\n float sg = (1.0 - saturation) * 0.7152;\n float sb = (1.0 - saturation) * 0.0722;\n mat3 saturationMatrix = mat3(\n sr + saturation, sr, sr,\n sg, sg + saturation, sg,\n sb, sb, sb + saturation\n );\n color.rgb = clamp(saturationMatrix * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));\n "))}if(void 0!==t.gamma){var h=Cl(r,t.gamma,yl);e.push("color.rgb = pow(color.rgb, vec3(1.0 / ".concat(h,"));"))}if(void 0!==t.brightness){var f=Cl(r,t.brightness,yl);e.push("color.rgb = clamp(color.rgb + ".concat(f,", vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}var c={},l=r.variables.length;if(l>1&&!t.variables)throw new Error("Missing variables in style (expected ".concat(r.variables,")"));for(var v=function(n){var i=r.variables[n];if(!(i in t.variables))throw new Error("Missing '".concat(i,"' in style variables"));var e=ql(i);c[e]=function(){var n=t.variables[i];return"string"==typeof n&&(n=Al(r,n)),void 0!==n?n:-9999999}},d=0;d ").concat(ul.RENDER_EXTENT,"[2] ||\n v_mapCoord[1] > ").concat(ul.RENDER_EXTENT,"[3]\n ) {\n discard;\n }\n\n vec4 color = texture2D(").concat(ul.TILE_TEXTURE_ARRAY,"[0], v_textureCoord);\n\n ").concat(e.join("\n"),"\n\n if (color.a == 0.0) {\n discard;\n }\n\n gl_FragColor = color;\n gl_FragColor.rgb *= gl_FragColor.a;\n gl_FragColor *= ").concat(ul.TRANSITION_ALPHA,";\n }"),uniforms:c,paletteTextures:r.paletteTextures}}var Z_=function(t){function n(n){var i=this,r=n?A({},n):{},e=r.style||{};delete r.style;var o=r.cacheSize;return delete r.cacheSize,(i=t.call(this,r)||this).yv=r.sources,i.mv=null,i.Ic=NaN,i.H=e,i.Jt=o,i.dv=i.H.variables||{},i.addChangeListener(ns,i.wv),i}return W_(n,t),n.prototype.getSources=function(t,n){var i=this.getSource();return this.yv?"function"==typeof this.yv?this.yv(t,n):this.yv:i?[i]:[]},n.prototype.getRenderSource=function(){return this.mv||this.getSource()},n.prototype.getSourceState=function(){var t=this.getRenderSource();return t?t.getState():"undefined"},n.prototype.wv=function(){this.getSource()&&this.setStyle(this.H)},n.prototype.gv=function(){var t=Number.MAX_SAFE_INTEGER,n=this.getSources([-t,-t,t,t],t);return n&&n.length&&"bandCount"in n[0]?n[0].bandCount:4},n.prototype.createRenderer=function(){var t=Y_(this.H,this.gv());return new pl(this,{vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms,cacheSize:this.Jt,paletteTextures:t.paletteTextures})},n.prototype.renderSources=function(t,n){for(var i,r=this.getRenderer(),e=0,o=n.length;e.5*r.resolution){var f=this.getSources(t.extent,this.Ic).filter((function(t){return!e.includes(t)}));if(f.length>0)return this.renderSources(t,f)}return h},n.prototype.setStyle=function(t){this.dv=t.variables||{},this.H=t;var n=Y_(this.H,this.gv());this.getRenderer().reset({vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,uniforms:n.uniforms,paletteTextures:n.paletteTextures}),this.changed()},n.prototype.updateStyleVariables=function(t){A(this.dv,t),this.changed()},n}(am);Z_.prototype.dispose;var $_=Z_,K_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),H_="addfeatures",J_=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.features=r,o.file=i,o.projection=e,o}return K_(n,t),n}(c),Q_=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{handleEvent:S})||this).on,i.once,i.un,i.bv=!1,i.xv=[];for(var e=r.formatConstructors?r.formatConstructors:[],o=0,s=e.length;o0){this._v&&(this._v.clear(),this._v.addFeatures(c)),this.dispatchEvent(new J_(H_,t,c,o));break}}},n.prototype.jv=function(){var t=this.getMap();if(t){var n=this.target?this.target:t.getViewport();this.Mv=[$(n,U,this.handleDrop,this),$(n,D,this.handleStop,this),$(n,q,this.handleStop,this),$(n,U,this.handleStop,this)]}},n.prototype.setActive=function(n){!this.getActive()&&n&&this.jv(),this.getActive()&&!n&&this.Ev(),t.prototype.setActive.call(this,n)},n.prototype.setMap=function(n){this.Ev(),t.prototype.setMap.call(this,n),this.getActive()&&this.jv()},n.prototype.Ov=function(t,n,i){try{return t.readFeatures(n,i)}catch(t){return null}},n.prototype.Ev=function(){this.Mv&&(this.Mv.forEach(H),this.Mv=null)},n.prototype.handleDrop=function(t){for(var n=t.dataTransfer.files,i=0,r=n.length;i1?1:-1;return n.endInteraction(this.Fr,i),this.je=0,!1},n.prototype.handleDownEvent=function(t){return!!La(t)&&(!!this.Zr(t)&&(t.map.getView().beginInteraction(),this.Kr=void 0,this.Tv=void 0,!0))},n}(Ma),iS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rS=function(t){function n(n,i,r){var e=t.call(this)||this;if(void 0!==r&&void 0===i)e.setFlatCoordinates(r,n);else{var o=i||0;e.setCenterAndRadius(n,o,r)}return e}return iS(n,t),n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),void 0,this.layout);return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){var e=this.flatCoordinates,o=t-e[0],s=n-e[1],u=o*o+s*s;if(u=n[0]||(t[1]<=n[1]&&t[3]>=n[1]||Rn(t,this.intersectsCoordinate.bind(this)))}return!1},n.prototype.setCenter=function(t){var n=this.stride,i=this.flatCoordinates[n]-this.flatCoordinates[0],r=t.slice();r[n]=r[0]+i;for(var e=1;e=this.Uv?(this.Cv=n.pixel,this.Pv=!this.Lv,i=!0):this.Iv=void 0,this.Pv&&void 0!==this.kv&&(clearTimeout(this.kv),this.kv=void 0));return this.Lv&&n.type===su.POINTERDRAG&&null!==this.Xv?(this.Qv(n.coordinate),r=!1):this.Lv&&n.type===su.POINTERDOWN?r=!1:i&&this.getPointerCount()<2?(r=n.type===su.POINTERMOVE)&&this.Lv?(this.Zn(n),this.Pv&&n.originalEvent.preventDefault()):("mouse"===n.originalEvent.pointerType||n.type===su.POINTERDRAG&&void 0===this.kv)&&this.Zn(n):n.type===su.DBLCLICK&&(r=!1),t.prototype.handleEvent.call(this,n)&&r},n.prototype.handleDownEvent=function(t){return this.Pv=!this.Lv,this.Lv?(this.Cv=t.pixel,this.Bv||this.td(t.coordinate),!0):this.Zr(t)?(this.Iv=Date.now(),this.kv=setTimeout(function(){this.Zn(new ou(su.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}.bind(this),this.Uv),this.Cv=t.pixel,!0):(this.Iv=void 0,!1)},n.prototype.handleUpEvent=function(t){var n=!0;if(0===this.getPointerCount())if(this.kv&&(clearTimeout(this.kv),this.kv=void 0),this.Zn(t),this.Pv){var i=!this.Bv;i&&this.td(t.coordinate),!i&&this.Lv?this.finishDrawing():this.Lv||i&&this.pe!==sS||(this.rd(t.pixel)?this.Dv(t)&&this.finishDrawing():this.Qv(t.coordinate)),n=!1}else this.Lv&&this.abortDrawing();return!n&&this.Rv&&t.preventDefault(),n},n.prototype.Zn=function(t){if(this.Nv=t.originalEvent.pointerType,this.Cv&&(!this.Lv&&this.Pv||this.Lv&&!this.Pv)){var n=this.Cv,i=t.pixel,r=n[0]-i[0],e=n[1]-i[1],o=r*r+e*e;if(this.Pv=this.Lv?o>this.$v:o<=this.$v,!this.Pv)return}this.Bv?this.ed(t.coordinate):this.od(t.coordinate.slice())},n.prototype.rd=function(t){var n=!1;if(this.Xv){var i=!1,r=[this.Bv],e=this.pe;if(e===sS)n=!0;else if(e===hS)n=2===this.Wv.length;else if(e===uS)i=this.Wv.length>this.Fv;else if(e===aS){var o=this.Wv;i=o[0].length>this.Fv,r=[o[0][0],o[0][o[0].length-2]]}if(i)for(var s=this.getMap(),u=0,a=r.length;u=this.Gv&&(this.Lv?i.pop():n=!0),i.push(t.slice()),this.Bu(i,r,e)):o===aS&&((i=this.Wv[0]).length>=this.Gv&&(this.Lv?i.pop():n=!0),i.push(t.slice()),n&&(this.Bv=i[0]),this.Bu(this.Wv,r,e)),this.od(t.slice()),this.sd(),n&&this.finishDrawing()},n.prototype.removeLastPoint=function(){if(this.Xv){var t,n=this.Xv.getGeometry(),i=this.getMap().getView().getProjection(),r=this.pe;if(r===uS||r===hS){if((t=this.Wv).splice(-2,1),t.length>=2){this.Bv=t[t.length-2].slice();var e=this.Bv.slice();t[t.length-1]=e,this.od(e)}this.Bu(t,n,i),"Polygon"===n.getType()&&this.Yv&&this.ud(n)}else if(r===aS){(t=this.Wv[0]).splice(-2,1);var o=this.Yv.getGeometry();if(t.length>=2){e=t[t.length-2].slice();t[t.length-1]=e,this.od(e)}o.setCoordinates(t),this.Bu(this.Wv,n,i)}1===t.length&&this.abortDrawing(),this.sd()}},n.prototype.finishDrawing=function(){var t=this.ad();if(t){var n=this.Wv,i=t.getGeometry(),r=this.getMap().getView().getProjection();this.pe===uS?(n.pop(),this.Bu(n,i,r)):this.pe===aS&&(n[0].pop(),this.Bu(n,i,r),n=i.getCoordinates()),"MultiPoint"===this.rl?t.setGeometry(new Kw([n])):"MultiLineString"===this.rl?t.setGeometry(new rg([n])):"MultiPolygon"===this.rl&&t.setGeometry(new sg([n])),this.dispatchEvent(new vS(cS,t)),this.Re&&this.Re.push(t),this._v&&this._v.addFeature(t)}},n.prototype.ad=function(){this.Bv=null;var t=this.Xv;return this.Xv=null,this.Vv=null,this.Yv=null,this.Kv.getSource().clear(!0),t},n.prototype.abortDrawing=function(){var t=this.ad();t&&this.dispatchEvent(new vS(lS,t))},n.prototype.appendCoordinates=function(t){var n,i=this.pe,r=!this.Xv;if(r&&this.td(t[0]),i===uS||i===hS)n=this.Wv;else{if(i!==aS)return;n=this.Wv&&this.Wv.length?this.Wv[0]:[]}r&&n.shift(),n.pop();for(var e=0;ec?o[1]:o[0]),s}}return null},n.prototype.Zn=function(t){var n=t.pixel,i=t.map,r=this.wd(n,i);r||(r=i.getCoordinateFromPixelInternal(n)),this.gd(r)},n.prototype.bd=function(t){var n=this.vd;return n?t?n.setGeometry(Ze(t)):n.setGeometry(void 0):(n=new Et(t?Ze(t):{}),this.vd=n,this.yd.getSource().addFeature(n)),n},n.prototype.gd=function(t){var n=this.dd;n?n.getGeometry().setCoordinates(t):(n=new Et(new Se(t)),this.dd=n,this.md.getSource().addFeature(n));return n},n.prototype.handleEvent=function(n){return!n.originalEvent||!this.Zr(n)||(n.type!=su.POINTERMOVE||this.handlingDownUpSequence||this.Zn(n),t.prototype.handleEvent.call(this,n),!1)},n.prototype.handleDownEvent=function(t){var n=t.pixel,i=t.map,r=this.getExtentInternal(),e=this.wd(n,i),o=function(t){var n=null,i=null;return t[0]==r[0]?n=r[2]:t[0]==r[2]&&(n=r[0]),t[1]==r[1]?i=r[3]:t[1]==r[3]&&(i=r[1]),null!==n&&null!==i?[n,i]:null};if(e&&r){var s=e[0]==r[0]||e[0]==r[2]?e[0]:null,u=e[1]==r[1]||e[1]==r[3]?e[1]:null;null!==s&&null!==u?this.hd=gS(o(e)):null!==s?this.hd=bS(o([s,r[1]]),o([s,r[3]])):null!==u&&(this.hd=bS(o([r[0],u]),o([r[2],u])))}else e=i.getCoordinateFromPixelInternal(n),this.setExtent([e[0],e[1],e[0],e[1]]),this.hd=gS(e);return!0},n.prototype.handleDragEvent=function(t){if(this.hd){var n=t.coordinate;this.setExtent(this.hd(n)),this.gd(n)}},n.prototype.handleUpEvent=function(t){this.hd=null;var n=this.getExtentInternal();return n&&0!==Fn(n)||this.setExtent(null),!1},n.prototype.setMap=function(n){this.yd.setMap(n),this.md.setMap(n),t.prototype.setMap.call(this,n)},n.prototype.getExtent=function(){return Nr(this.getExtentInternal(),this.getMap().getView().getProjection())},n.prototype.getExtentInternal=function(){return this.st},n.prototype.setExtent=function(t){this.st=t||null,this.bd(t),this.dispatchEvent(new mS(this.st))},n}(Ma),MS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function _S(t){return parseFloat(t)}function SS(t){return function(t){return pi(t,5)}(t).toString()}function OS(t,n){return!isNaN(t)&&t!==_S(SS(n))}var jS=function(t){function n(n){var i,r=t.call(this)||this,e=A({animate:!0,replace:!1,prefix:""},n||{});return i=!0===e.animate?{duration:250}:e.animate?e.animate:null,r.xd=i,r.Md=e.replace,r._d=e.prefix,r.gn=[],r.Sd=!0,r.Jv=r.Jv.bind(r),r}return MS(n,t),n.prototype.Od=function(t){return this._d?this._d+t:t},n.prototype.jd=function(t,n){return t.get(this.Od(n))},n.prototype.Ed=function(t,n,i){t.set(this.Od(n),i)},n.prototype.Td=function(t,n){t.delete(this.Od(n))},n.prototype.setMap=function(n){var i=this.getMap();t.prototype.setMap.call(this,n),n!==i&&(i&&this.Ev(i),n&&(this.Sd=!0,this.Jv(),this.jv(n)))},n.prototype.jv=function(t){this.gn.push($(t,pu,this.Ad,this),$(t.getLayerGroup(),L,this.Ad,this),$(t,"change:layergroup",this.Pd,this)),this.Md||addEventListener("popstate",this.Jv)},n.prototype.Ev=function(t){for(var n=0,i=this.gn.length;n=0;--r){for(var e=i[r],o=this.qd.length-1;o>=0;--o)this.qd[o][0]===e&&this.qd.splice(o,1);n.remove(e)}},n.prototype.setActive=function(n){this.dd&&!n&&(this.Kv.getSource().removeFeature(this.dd),this.dd=null),t.prototype.setActive.call(this,n)},n.prototype.setMap=function(n){this.Kv.setMap(n),t.prototype.setMap.call(this,n)},n.prototype.getOverlay=function(){return this.Kv},n.prototype.Jd=function(t){t.feature&&this.Re.push(t.feature)},n.prototype.Qd=function(t){t.feature&&this.Re.remove(t.feature)},n.prototype.np=function(t){this.tp(t.element)},n.prototype.$a=function(t){if(!this.Dd){var n=t.target;this.up(n),this.tp(n)}},n.prototype.ip=function(t){var n=t.element;this.up(n)},n.prototype.Bd=function(t,n){var i=n.getCoordinates(),r={feature:t,geometry:n,segment:[i,i]};this.Gd.insert(n.getExtent(),r)},n.prototype.Wd=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r=0;--m)this.cp(e[m],s)}return!!this.dd},n.prototype.handleUpEvent=function(t){for(var n=this.qd.length-1;n>=0;--n){var i=this.qd[n][0],r=i.geometry;if("Circle"===r.getType()){var e=r.getCenter(),o=i.featureSegments[0],s=i.featureSegments[1];o.segment[0]=e,o.segment[1]=e,s.segment[0]=e,s.segment[1]=e,this.Gd.update(En(e),o);var u=r,a=Cr();if(a){var h=t.map.getView().getProjection();u=$e(u=u.clone().transform(a,h)).transform(h,a)}this.Gd.update(u.getExtent(),s)}else this.Gd.update(yn(i.segment),i)}return this.Fd&&(this.dispatchEvent(new kS(CS,this.Fd,t)),this.Fd=null),!1},n.prototype.Zn=function(t){this.zd=t.pixel,this.op(t.pixel,t.map,t.coordinate)},n.prototype.op=function(t,n,i){var r,e,s=this,u=i||n.getCoordinateFromPixel(t),a=n.getView().getProjection();if(this.Hd){var h="object"==typeof this.Hd?function(t){return t===s.Hd}:void 0;n.forEachFeatureAtPixel(t,(function(t,n,i){if("Point"===(i=i||t.getGeometry()).getType()&&y(s.Re.getArray(),t)){e=i;var o=i.getFlatCoordinates().slice(0,2);r=[{feature:t,geometry:i,segment:[o,o]}]}return!0}),{layerFilter:h})}if(!r){var f=Nr(mn(Lr(En(u,TS),a),n.getView().getResolution()*this.fd,TS),a);r=this.Gd.getInExtent(f)}if(r&&r.length>0){var c=r.sort((function(t,n){return NS(u,t,a)-NS(u,n,a)}))[0],l=c.segment,v=LS(u,c,a),d=n.getPixelFromCoordinate(v),p=tr(t,d);if(e||p<=this.fd){var m={};if(m[o(l)]=!0,this.ep||(this.Br[0]=v[0]-u[0],this.Br[1]=v[1]-u[1]),"Circle"===c.geometry.getType()&&1===c.index)this.ld=!0,this.hp(v,[c.feature],[c.geometry]);else{var w=n.getPixelFromCoordinate(l[0]),g=n.getPixelFromCoordinate(l[1]),b=Qi(d,w),x=Qi(d,g);p=Math.sqrt(Math.min(b,x)),this.ld=p<=this.fd,this.ld&&(v=b>x?l[1]:l[0]),this.hp(v,[c.feature],[c.geometry]);var M={};M[o(c.geometry)]=!0;for(var _=1,S=r.length;_=0;--e)c=o((f=(i=l[e])[0]).feature),f.depth&&(c+="-"+f.depth.join("-")),c in v||(v[c]={}),0===i[1]?(v[c].right=f,v[c].index=f.index):1==i[1]&&(v[c].left=f,v[c].index=f.index+1);for(c in v){switch(h=v[c].right,u=v[c].left,(a=(s=v[c].index)-1)<0&&(a=0),t=n=(r=(f=void 0!==u?u:h).geometry).getCoordinates(),d=!1,r.getType()){case"MultiLineString":n[f.depth[0]].length>2&&(n[f.depth[0]].splice(s,1),d=!0);break;case"LineString":n.length>2&&(n.splice(s,1),d=!0);break;case"MultiPolygon":t=t[f.depth[1]];case"Polygon":(t=t[f.depth[0]]).length>4&&(s==t.length-1&&(s=0),t.splice(s,1),d=!0,0===s&&(t.pop(),t.push(t[0]),a=t.length-1))}if(d){this.fp(r,n);var p=[];if(void 0!==u&&(this.Gd.remove(u),p.push(u.segment[0])),void 0!==h&&(this.Gd.remove(h),p.push(h.segment[1])),void 0!==u&&void 0!==h){var y={depth:f.depth,feature:f.feature,geometry:f.geometry,index:a,segment:p};this.Gd.insert(yn(y.segment),y)}this.lp(r,s,f.depth,-1),this.dd&&(this.Kv.getSource().removeFeature(this.dd),this.dd=null),l.length=0}}return d},n.prototype.fp=function(t,n){this.Dd=!0,t.setCoordinates(n),this.Dd=!1},n.prototype.lp=function(t,n,i,r){this.Gd.forEachInExtent(t.getExtent(),(function(e){e.geometry===t&&(void 0===i||void 0===e.depth||x(e.depth,i))&&e.index>n&&(e.index+=r)}))},n}(Ma),RS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),FS="select",GS=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.selected=i,o.deselected=r,o.mapBrowserEvent=e,o}return RS(n,t),n}(c),DS={};var qS=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r,e,o=n||{};if(i.dp=i.tp.bind(i),i.pp=i.up.bind(i),i.Zr=o.condition?o.condition:Ca,i.yp=o.addCondition?o.addCondition:Pa,i.mp=o.removeCondition?o.removeCondition:Pa,i.wp=o.toggleCondition?o.toggleCondition:Ia,i.gp=!!o.multi&&o.multi,i.bp=o.filter?o.filter:S,i.xp=o.hitTolerance?o.hitTolerance:0,i.H=void 0!==o.style?o.style:(g((r=Mv()).Polygon,r.LineString),g(r.GeometryCollection,r.LineString),function(t){return t.getGeometry()?r[t.getGeometry().getType()]:null}),i.Re=o.features||new ft,o.layers)if("function"==typeof o.layers)e=o.layers;else{var s=o.layers;e=function(t){return y(s,t)}}else e=S;return i.Mp=e,i._p={},i}return RS(n,t),n.prototype.Sp=function(t,n){this._p[o(t)]=n},n.prototype.getFeatures=function(){return this.Re},n.prototype.getHitTolerance=function(){return this.xp},n.prototype.getLayer=function(t){return this._p[o(t)]},n.prototype.setHitTolerance=function(t){this.xp=t},n.prototype.setMap=function(n){this.getMap()&&this.H&&this.Re.forEach(this.Op.bind(this)),t.prototype.setMap.call(this,n),n?(this.Re.addEventListener(ot,this.dp),this.Re.addEventListener(st,this.pp),this.H&&this.Re.forEach(this.jp.bind(this))):(this.Re.removeEventListener(ot,this.dp),this.Re.removeEventListener(st,this.pp))},n.prototype.tp=function(t){var n=t.element;if(this.H&&this.jp(n),!this.getLayer(n)){var i=this.getMap().getAllLayers().find((function(t){if(t instanceof lg&&t.getSource()&&t.getSource().hasFeature(n))return t}));i&&this.Sp(n,i)}},n.prototype.up=function(t){var n=t.element;this.H&&this.Op(n)},n.prototype.getStyle=function(){return this.H},n.prototype.jp=function(t){var n=o(t);n in DS||(DS[n]=t.getStyle()),t.setStyle(this.H)},n.prototype.Op=function(t){for(var i=this.getMap().getInteractions().getArray(),r=i.length-1;r>=0;--r){var e=i[r];if(e!==this&&e instanceof n&&e.getStyle()&&-1!==e.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(e.getStyle())}var s=o(t);t.setStyle(DS[s]),delete DS[s]},n.prototype.Ep=function(t){delete this._p[o(t)]},n.prototype.handleEvent=function(t){if(!this.Zr(t))return!0;var n=this.yp(t),i=this.mp(t),r=this.wp(t),e=!n&&!i&&!r,o=t.map,s=this.getFeatures(),u=[],a=[];if(e){P(this._p),o.forEachFeatureAtPixel(t.pixel,function(t,n){if(this.bp(t,n))return this.Sp(t,n),a.push(t),!this.gp}.bind(this),{layerFilter:this.Mp,hitTolerance:this.xp});for(var h=s.getLength()-1;h>=0;--h){var f=s.item(h),c=a.indexOf(f);c>-1?a.splice(c,1):(s.remove(f),u.push(f))}0!==a.length&&s.extend(a)}else{o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.bp(t,e))return!n&&!r||y(s.getArray(),t)?(i||r)&&y(s.getArray(),t)&&(u.push(t),this.Ep(t)):(this.Sp(t,e),a.push(t)),!this.gp}.bind(this),{layerFilter:this.Mp,hitTolerance:this.xp});for(var l=u.length-1;l>=0;--l)s.remove(u[l]);s.extend(a)}return(a.length>0||u.length>0)&&this.dispatchEvent(new GS(FS,a,u,t)),!0},n}(ma),US=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function BS(t){return t.feature?t.feature:t.element?t.element:void 0}var XS=[],VS=function(t){function n(n){var i=this,r=n||{},e=r;return e.handleDownEvent||(e.handleDownEvent=S),e.stopDown||(e.stopDown=O),(i=t.call(this,e)||this)._v=r.source?r.source:null,i.Tp=void 0===r.vertex||r.vertex,i.Ap=void 0===r.edge||r.edge,i.Re=r.features?r.features:null,i.Pp=[],i.Cp={},i.kp={},i.Ip={},i.fd=void 0!==r.pixelTolerance?r.pixelTolerance:10,i.Gd=new Pv,i.Np={Point:i.Lp.bind(i),LineString:i.zp.bind(i),LinearRing:i.zp.bind(i),Polygon:i.Rp.bind(i),MultiPoint:i.Fp.bind(i),MultiLineString:i.Gp.bind(i),MultiPolygon:i.Dp.bind(i),GeometryCollection:i.qp.bind(i),Circle:i.Up.bind(i)},i}return US(n,t),n.prototype.addFeature=function(t,n){var i=void 0===n||n,r=o(t),e=t.getGeometry();if(e){var s=this.Np[e.getType()];if(s){this.kp[r]=e.getExtent([1/0,1/0,-1/0,-1/0]);var u=[];if(s(u,e),1===u.length)this.Gd.insert(yn(u[0]),{feature:t,segment:u[0]});else if(u.length>1){var a=u.map((function(t){return yn(t)})),h=u.map((function(n){return{feature:t,segment:n}}));this.Gd.load(a,h)}}}i&&(this.Cp[r]=$(t,L,this.$a,this))},n.prototype.Bp=function(t){this.addFeature(t)},n.prototype.Xp=function(t){this.removeFeature(t)},n.prototype.Vp=function(){var t;return this.Re?t=this.Re:this._v&&(t=this._v.getFeatures()),t},n.prototype.handleEvent=function(n){var i=this.snapTo(n.pixel,n.coordinate,n.map);return i&&(n.coordinate=i.vertex.slice(0,2),n.pixel=i.vertexPixel),t.prototype.handleEvent.call(this,n)},n.prototype.np=function(t){var n=BS(t);this.addFeature(n)},n.prototype.ip=function(t){var n=BS(t);this.removeFeature(n)},n.prototype.$a=function(t){var n=t.target;if(this.handlingDownUpSequence){var i=o(n);i in this.Ip||(this.Ip[i]=n)}else this.Wp(n)},n.prototype.handleUpEvent=function(t){var n=C(this.Ip);return n.length&&(n.forEach(this.Wp.bind(this)),this.Ip={}),!1},n.prototype.removeFeature=function(t,n){var i=void 0===n||n,r=o(t),e=this.kp[r];if(e){var s=this.Gd,u=[];s.forEachInExtent(e,(function(n){t===n.feature&&u.push(n)}));for(var a=u.length-1;a>=0;--a)s.remove(u[a])}i&&(H(this.Cp[r]),delete this.Cp[r])},n.prototype.setMap=function(n){var i=this.getMap(),r=this.Pp,e=this.Vp();i&&(r.forEach(H),r.length=0,e.forEach(this.Xp.bind(this))),t.prototype.setMap.call(this,n),n&&(this.Re?r.push($(this.Re,ot,this.np,this),$(this.Re,st,this.ip,this)):this._v&&r.push($(this._v,Qv,this.np,this),$(this._v,id,this.ip,this)),e.forEach(this.Bp.bind(this)))},n.prototype.snapTo=function(t,n,i){var r=yn([i.getCoordinateFromPixel([t[0]-this.fd,t[1]+this.fd]),i.getCoordinateFromPixel([t[0]+this.fd,t[1]-this.fd])]),e=this.Gd.getInExtent(r),o=e.length;if(0===o)return null;var s,u=i.getView().getProjection(),a=Ir(n,u),h=1/0,f=this.fd*this.fd,c=function(){if(s){var n=i.getPixelFromCoordinate(s);if(Qi(t,n)<=f)return{vertex:s,vertexPixel:[Math.round(n[0]),Math.round(n[1])]}}return null};if(this.Tp){for(var l=0;l=0;s--)e.push(r[o][s]);return{hasZ:i.hasZ,hasM:i.hasM,rings:e}}};function iO(t,n){var i,r,e;if(!t)return null;if("number"==typeof t.x&&"number"==typeof t.y)e="Point";else if(t.points)e="MultiPoint";else if(t.paths){e=1===t.paths.length?"LineString":"MultiLineString"}else if(t.rings){var o=t,s=rO(o),u=function(t,n){var i,r,e=[],o=[],s=[];for(i=0,r=t.length;i=0;i--){var h=o[i][0];if(xn(new Me(h).getExtent(),new Me(u).getExtent())){o[i].push(u),a=!0;break}}a||o.push([u.reverse()])}return o}(o.rings,s);1===u.length?(e="Polygon",t=A({},t,((i={}).rings=u[0],i))):(e="MultiPolygon",t=A({},t,((r={}).rings=u,r)))}return Eg((0,tO[e])(t),!1,n)}function rO(t){var n=Tt;return!0===t.hasZ&&!0===t.hasM?n=Ct:!0===t.hasZ?n=At:!0===t.hasM&&(n=Pt),n}function eO(t){var n=t.getLayout();return{hasZ:n===At||n===Ct,hasM:n===Pt||n===Ct}}function oO(t,n){return(0,nO[t.getType()])(Eg(t,!0,n),n)}var sO=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this)||this).K=r.geometryName,i}return QS(n,t),n.prototype.readFeatureFromObject=function(t,n,i){var r=t,e=iO(r.geometry,n),o=new Et;if(this.K&&o.setGeometryName(this.K),o.setGeometry(e),r.attributes){o.setProperties(r.attributes,!0);var s=r.attributes[i];void 0!==s&&o.setId(s)}return o},n.prototype.readFeaturesFromObject=function(t,n){var i=n||{};if(t.features){for(var r=[],e=t.features,o=0,s=e.length;o0?i[0]:null},n.prototype.readFeatureFromNode=function(t,n){return null},n.prototype.readFeatures=function(t,n){if(t){if("string"==typeof t){var i=$f(t);return this.readFeaturesFromDocument(i,n)}return Yf(t)?this.readFeaturesFromDocument(t,n):this.readFeaturesFromNode(t,n)}return[]},n.prototype.readFeaturesFromDocument=function(t,n){for(var i=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&g(i,this.readFeaturesFromNode(r,n));return i},n.prototype.readFeaturesFromNode=function(t,n){return r()},n.prototype.readGeometry=function(t,n){if(t){if("string"==typeof t){var i=$f(t);return this.readGeometryFromDocument(i,n)}return Yf(t)?this.readGeometryFromDocument(t,n):this.readGeometryFromNode(t,n)}return null},n.prototype.readGeometryFromDocument=function(t,n){return null},n.prototype.readGeometryFromNode=function(t,n){return null},n.prototype.readProjection=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readProjectionFromDocument(n)}return Yf(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},n.prototype.readProjectionFromDocument=function(t){return this.dataProjection},n.prototype.readProjectionFromNode=function(t){return this.dataProjection},n.prototype.writeFeature=function(t,n){var i=this.writeFeatureNode(t,n);return this.Jp.serializeToString(i)},n.prototype.writeFeatureNode=function(t,n){return null},n.prototype.writeFeatures=function(t,n){var i=this.writeFeaturesNode(t,n);return this.Jp.serializeToString(i)},n.prototype.writeFeaturesNode=function(t,n){return null},n.prototype.writeGeometry=function(t,n){var i=this.writeGeometryNode(t,n);return this.Jp.serializeToString(i)},n.prototype.writeGeometryNode=function(t,n){return null},n}(jg),hO=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fO="http://www.opengis.net/gml",cO=/^[\s\xa0]*$/,lO=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.featureType=r.featureType,i.featureNS=r.featureNS,i.srsName=r.srsName,i.schemaLocation="",i.FEATURE_COLLECTION_PARSERS={},i.FEATURE_COLLECTION_PARSERS[i.namespace]={featureMember:Hf(i.readFeaturesInternal),featureMembers:Jf(i.readFeaturesInternal)},i.supportedMediaTypes=["application/gml+xml"],i}return hO(n,t),n.prototype.readFeaturesInternal=function(t,n){var i=t.localName,r=null;if("FeatureCollection"==i)r=ac([],this.FEATURE_COLLECTION_PARSERS,t,n,this);else if("featureMembers"==i||"featureMember"==i||"member"==i){var e=n[0],o=e.featureType,s=e.featureNS;if(!o&&t.childNodes){o=[],s={};for(var u=0,a=t.childNodes.length;u0){s={Qp:s};for(var h=0;h0;else{var c=f.getType();u="Point"===c||"MultiPoint"===c}}u&&(a=o.get("name"),(u=u&&!!a)&&a.search(/&[^&]+;/)>-1&&(eE||(eE=document.createElement("textarea")),eE.innerHTML=a,a=eE.value));var l=i;if(t?l=t:n&&(l=hE(n,i,r)),u){var v=function(t,n){var i=[0,0],r="start",e=t.getImage();if(e){var o=e.getSize();if(o&&2==o.length){var s=e.getScaleArray(),u=e.getAnchor();i[0]=s[0]*(o[0]-u[0]),i[1]=s[1]*(o[1]/2-u[1]),r="left"}}var a=t.getText();a?((a=a.clone()).setFont(a.getFont()||iE.getFont()),a.setScale(a.getScale()||iE.getScale()),a.setFill(a.getFill()||iE.getFill()),a.setStroke(a.getStroke()||tE)):a=iE.clone();return a.setText(n),a.setOffsetX(i[0]),a.setOffsetY(i[1]),a.setTextAlign(r),new Sv({image:e,text:a})}(l[0],a);return h.length>0?(v.setGeometry(new Dg(h)),[v,new Sv({geometry:l[0].getGeometry(),image:null,fill:l[0].getFill(),stroke:l[0].getStroke(),text:null})].concat(l.slice(1))):v}return l}}(i.Style,i.styleUrl,this.jy,this.Ay,this.Py);r.setStyle(u)}return delete i.Style,r.setProperties(i,!0),r}},n.prototype.Ny=function(t,n){var i=t.getAttribute("id");if(null!==i){var r=FE.call(this,t,n);if(r){var e=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)e=new URL("#"+i,o).href;else e="#"+i;this.Ay[e]=r}}},n.prototype.Ly=function(t,n){var i=t.getAttribute("id");if(null!==i){var r=yE.call(this,t,n);if(r){var e,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)e=new URL("#"+i,o).href;else e="#"+i;this.Ay[e]=r}}},n.prototype.readFeatureFromNode=function(t,n){if(!y(Bj,t.namespaceURI))return null;var i=this.Iy(t,[this.getReadOptions(t,n)]);return i||null},n.prototype.readFeaturesFromNode=function(t,n){if(!y(Bj,t.namespaceURI))return[];var i,r=t.localName;if("Document"==r||"Folder"==r)return(i=this.ky(t,[this.getReadOptions(t,n)]))||[];if("Placemark"==r){var e=this.Iy(t,[this.getReadOptions(t,n)]);return e?[e]:[]}if("kml"==r){i=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var s=this.readFeaturesFromNode(o,n);s&&g(i,s)}return i}return[]},n.prototype.readName=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readNameFromDocument(n)}return Yf(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},n.prototype.readNameFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE){var i=this.readNameFromNode(n);if(i)return i}},n.prototype.readNameFromNode=function(t){for(var n=t.firstElementChild;n;n=n.nextElementSibling)if(y(Bj,n.namespaceURI)&&"name"==n.localName)return xO(n);for(n=t.firstElementChild;n;n=n.nextElementSibling){var i=n.localName;if(y(Bj,n.namespaceURI)&&("Document"==i||"Folder"==i||"Placemark"==i||"kml"==i)){var r=this.readNameFromNode(n);if(r)return r}}},n.prototype.readNetworkLinks=function(t){var n=[];if("string"==typeof t){var i=$f(t);g(n,this.readNetworkLinksFromDocument(i))}else Yf(t)?g(n,this.readNetworkLinksFromDocument(t)):g(n,this.readNetworkLinksFromNode(t));return n},n.prototype.readNetworkLinksFromDocument=function(t){for(var n=[],i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&g(n,this.readNetworkLinksFromNode(i));return n},n.prototype.readNetworkLinksFromNode=function(t){for(var n=[],i=t.firstElementChild;i;i=i.nextElementSibling)if(y(Bj,i.namespaceURI)&&"NetworkLink"==i.localName){var r=ac({},Wj,i,[]);n.push(r)}for(i=t.firstElementChild;i;i=i.nextElementSibling){var e=i.localName;!y(Bj,i.namespaceURI)||"Document"!=e&&"Folder"!=e&&"kml"!=e||g(n,this.readNetworkLinksFromNode(i))}return n},n.prototype.readRegion=function(t){var n=[];if("string"==typeof t){var i=$f(t);g(n,this.readRegionFromDocument(i))}else Yf(t)?g(n,this.readRegionFromDocument(t)):g(n,this.readRegionFromNode(t));return n},n.prototype.readRegionFromDocument=function(t){for(var n=[],i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&g(n,this.readRegionFromNode(i));return n},n.prototype.readRegionFromNode=function(t){for(var n=[],i=t.firstElementChild;i;i=i.nextElementSibling)if(y(Bj,i.namespaceURI)&&"Region"==i.localName){var r=ac({},Zj,i,[]);n.push(r)}for(i=t.firstElementChild;i;i=i.nextElementSibling){var e=i.localName;!y(Bj,i.namespaceURI)||"Document"!=e&&"Folder"!=e&&"kml"!=e||g(n,this.readRegionFromNode(i))}return n},n.prototype.writeFeaturesNode=function(t,n){n=this.adaptOptions(n);var i=Xf(Bj[4],"kml"),r="http://www.w3.org/2000/xmlns/";i.setAttributeNS(r,"xmlns:gx",Uj[0]),i.setAttributeNS(r,"xmlns:xsi",Bf),i.setAttributeNS(Bf,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var e={node:i},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var s=$j[i.namespaceURI],u=oc(o,s);return fc(e,Kj,ec,u,[n],s,this),i},n}(aO);function hE(t,n,i){return Array.isArray(t)?t:"string"==typeof t?hE(i[t],n,i):n}function fE(t){var n=Vf(t,!1),i=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(n);if(i){var r=i[1];return[parseInt(r.substr(6,2),16),parseInt(r.substr(4,2),16),parseInt(r.substr(2,2),16),parseInt(r.substr(0,2),16)/255]}}function cE(t){var n=Vf(t,!1),i=[];n=n.replace(/\s*,\s*/g,",");for(var r,e=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;r=e.exec(n);){var o=parseFloat(r[1]),s=parseFloat(r[2]),u=r[3]?parseFloat(r[3]):0;i.push(o,s,u),n=n.substr(r[0].length)}if(""===n)return i}function lE(t){var n=Vf(t,!1).trim(),i=t.baseURI;return i&&"about:blank"!=i||(i=window.location.href),i?new URL(n,i).href:n}function vE(t){var n=Vf(t,!1).trim().replace(/^(?!.*#)/,"#"),i=t.baseURI;return i&&"about:blank"!=i||(i=window.location.href),i?new URL(n,i).href:n}function dE(t){return mO(t)}var pE=sc(Bj,{Pair:function(t,n){var i=ac({},XE,t,n,this);if(!i)return;var r=i.key;if(r&&"normal"==r){var e=i.styleUrl;e&&(n[n.length-1]=e);var o=i.Style;o&&(n[n.length-1]=o)}}});function yE(t,n){return ac(void 0,pE,t,n,this)}var mE=sc(Bj,{Icon:tc((function(t,n){var i=ac({},jE,t,n);return i||null})),color:tc(fE),heading:tc(mO),hotSpot:tc((function(t){var n,i=t.getAttribute("xunits"),r=t.getAttribute("yunits");return n="insetPixels"!==i?"insetPixels"!==r?sv:av:"insetPixels"!==r?uv:hv,{x:parseFloat(t.getAttribute("x")),xunits:Xj[i],y:parseFloat(t.getAttribute("y")),yunits:Xj[r],origin:n}})),scale:tc(dE)});var wE=sc(Bj,{color:tc(fE),scale:tc(dE)});var gE=sc(Bj,{color:tc(fE),width:tc(mO)});var bE=sc(Bj,{color:tc(fE),fill:tc(dO),outline:tc(dO)});var xE=sc(Bj,{coordinates:Jf(cE)});function ME(t,n){return ac(null,xE,t,n)}var _E=sc(Uj,{Track:Hf(OE)});var SE=sc(Bj,{when:function(t,n){var i=n[n.length-1].whens,r=Vf(t,!1),e=Date.parse(r);i.push(isNaN(e)?0:e)}},sc(Uj,{coord:function(t,n){var i=n[n.length-1].coordinates,r=Vf(t,!1),e=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(r);if(e){var o=parseFloat(e[1]),s=parseFloat(e[2]),u=parseFloat(e[3]);i.push([o,s,u])}else i.push([])}}));function OE(t,n){var i=ac({coordinates:[],whens:[]},SE,t,n);if(i){for(var r=[],e=i.coordinates,o=i.whens,s=0,u=Math.min(e.length,o.length);s0){var r=n[n.length-1];r.push.apply(r,i)}},outerBoundaryIs:function(t,n){var i=ac(void 0,$E,t,n);if(i){n[n.length-1][0]=i}}});function zE(t,n){var i=ac({},AE,t,n),r=ac([null],LE,t,n);if(r&&r[0]){for(var e=r[0],o=[e.length],s=1,u=r.length;s0,f=a.href;f?r=f:h&&(r=Pj);var c,l=sv,v=i.hotSpot;v?(e=[v.x,v.y],o=v.xunits,s=v.yunits,l=v.origin):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(r)&&(/pushpin/.test(r)?(e=jj,o=Ej,s=Tj):/arrow-reverse/.test(r)?(e=[54,42],o=Ej,s=Tj):/paddle/.test(r)&&(e=[32,1],o=Ej,s=Tj));var d,p=a.x,y=a.y;void 0!==p&&void 0!==y&&(c=[p,y]);var m,w=a.w,g=a.h;void 0!==w&&void 0!==g&&(d=[w,g]);var b=i.heading;void 0!==b&&(m=li(b));var x=i.scale,M=i.color;if(h){r==Pj&&(d=Aj);var _=new yv({anchor:e,anchorOrigin:l,anchorXUnits:o,anchorYUnits:s,crossOrigin:this.Bt,offset:c,offsetOrigin:sv,rotation:m,scale:x,size:d,src:this.Cy(r),color:M}),S=_.getScaleArray()[0],O=_.getSize();if(null===O){var j=_.getImageState();if(j===lo||j===vo){var E=function(){var t=_.getImageState();if(t!==lo&&t!==vo){var n=_.getSize();if(n&&2==n.length){var i=sE(n);_.setScale(S*i)}_.unlistenImageChange(E)}};_.listenImageChange(E),j===lo&&_.load()}}else if(2==O.length){var T=sE(O);_.setScale(S*T)}u.imageStyle=_}else u.imageStyle=Jj}},LabelStyle:function(t,n){var i=ac({},wE,t,n);if(i){var r=n[n.length-1],e=new Ev({fill:new rv({color:"color"in i?i.color:Oj}),scale:i.scale});r.textStyle=e}},LineStyle:function(t,n){var i=ac({},gE,t,n);if(i){var r=n[n.length-1],e=new mv({color:"color"in i?i.color:Oj,width:"width"in i?i.width:1});r.strokeStyle=e}},PolyStyle:function(t,n){var i=ac({},bE,t,n);if(i){var r=n[n.length-1],e=new rv({color:"color"in i?i.color:Oj});r.fillStyle=e;var o=i.fill;void 0!==o&&(r.fill=o);var s=i.outline;void 0!==s&&(r.outline=s)}}});function FE(t,n){var i=ac({},RE,t,n,this);if(!i)return null;var r,e="fillStyle"in i?i.fillStyle:Hj,o=i.fill;void 0===o||o||(e=null),"imageStyle"in i?i.imageStyle!=Jj&&(r=i.imageStyle):r=Qj;var s="textStyle"in i?i.textStyle:iE,u="strokeStyle"in i?i.strokeStyle:nE,a=i.outline;return void 0===a||a?[new Sv({fill:e,image:r,stroke:u,text:s,zIndex:void 0})]:[new Sv({geometry:function(t){var n=t.getGeometry(),i=n.getType();return"GeometryCollection"===i?new Dg(n.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return"Polygon"!==n&&"MultiPolygon"!==n}))):"Polygon"!==i&&"MultiPolygon"!==i?n:void 0},fill:e,image:r,stroke:u,text:s,zIndex:void 0}),new Sv({geometry:function(t){var n=t.getGeometry(),i=n.getType();return"GeometryCollection"===i?new Dg(n.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return"Polygon"===n||"MultiPolygon"===n}))):"Polygon"===i||"MultiPolygon"===i?n:void 0},fill:e,stroke:null,zIndex:void 0})]}function GE(t,n){var i,r,e,o=n.length,s=new Array(n.length),u=new Array(n.length),a=new Array(n.length);i=!1,r=!1,e=!1;for(var h=0;h0){var m=oc(e,s);fc(r,bT,MT,[{names:s,values:m}],i)}var w=i[0],g=n.getGeometry();g&&(g=Eg(g,!0,w)),fc(r,bT,cT,[g],i)}var ST=sc(Bj,["extrude","tessellate","altitudeMode","coordinates"]),OT=sc(Bj,{extrude:nc(MO),tessellate:nc(MO),altitudeMode:nc(EO),coordinates:nc((function(t,n,i){var r,e=i[i.length-1],o=e.layout,s=e.stride;o==Tt||o==Pt?r=2:o==At||o==Ct?r=3:St(!1,34);var u=n.length,a="";if(u>0){a+=n[0];for(var h=1;h>1):e>>1}return n}function wA(t){for(var n="",i=0,r=t.length;i=32;)n=63+(32|31&t),i+=String.fromCharCode(n),t>>=5;return n=t+63,i+=String.fromCharCode(n)}var xA=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.dataProjection=yr("EPSG:4326"),i.zy=r.factor?r.factor:1e5,i.qv=r.geometryLayout?r.geometryLayout:Tt,i}return cA(n,t),n.prototype.readFeatureFromText=function(t,n){var i=this.readGeometryFromText(t,n);return new Et(i)},n.prototype.readFeaturesFromText=function(t,n){return[this.readFeatureFromText(t,n)]},n.prototype.readGeometryFromText=function(t,n){var i=Zr(this.qv),r=vA(t,i,this.zy);JS(r,0,r.length,i,r);var e=pe(r,0,r.length,i);return Eg(new ng(e,this.qv),!1,this.adaptOptions(n))},n.prototype.writeFeatureText=function(t,n){var i=t.getGeometry();return i?this.writeGeometryText(i,n):(St(!1,40),"")},n.prototype.writeFeaturesText=function(t,n){return this.writeFeatureText(t[0],n)},n.prototype.writeGeometryText=function(t,n){var i=(t=Eg(t,!0,this.adaptOptions(n))).getFlatCoordinates(),r=t.getStride();return JS(i,0,i.length,r,i),lA(i,r,this.zy)},n}(Cj),MA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_A=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.iv=r.layerName,i.Uh=r.layers?r.layers:null,i.dataProjection=yr(r.dataProjection?r.dataProjection:"EPSG:4326"),i}return MA(n,t),n.prototype.readFeaturesFromObject=function(t,n){if("Topology"==t.type){var i=t,r=void 0,e=null,o=null;i.transform&&(e=(r=i.transform).scale,o=r.translate);var s=i.arcs;r&&function(t,n,i){for(var r=0,e=t.length;r0&&r.pop(),i>=0)for(var s=0,u=(a=n[i]).length;s=0;--s)r.push(a[s].slice(0))}return r}function jA(t,n,i,r,e,o,s){for(var u=t.geometries,a=[],h=0,f=u.length;h=2,57),r}return kA(n,t),n}(CA),NA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),LA=function(t){function n(n){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return NA(n,t),n}(IA),zA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),RA=function(t){function n(n,i,r){var e=t.call(this,"BBOX")||this;if(e.geometryName=n,e.extent=i,4!==i.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return e.srsName=r,e}return zA(n,t),n}(CA),FA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),GA=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.geometryName=i||"the_geom",o.geometry=r,o.srsName=e,o}return FA(n,t),n}(CA),DA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qA=function(t){function n(n,i,r){return t.call(this,"Contains",n,i,r)||this}return DA(n,t),n}(GA),UA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),BA=function(t){function n(n,i,r,e,o){var s=t.call(this,"DWithin",n,i,o)||this;return s.distance=r,s.unit=e,s}return UA(n,t),n}(GA),XA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),VA=function(t){function n(n,i,r){return t.call(this,"Disjoint",n,i,r)||this}return XA(n,t),n}(GA),WA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),YA=function(t){function n(n,i){var r=t.call(this,n)||this;return r.propertyName=i,r}return WA(n,t),n}(CA),ZA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$A=function(t){function n(n,i,r){var e=t.call(this,"During",n)||this;return e.begin=i,e.end=r,e}return ZA(n,t),n}(YA),KA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),HA=function(t){function n(n,i,r,e){var o=t.call(this,n,i)||this;return o.expression=r,o.matchCase=e,o}return KA(n,t),n}(YA),JA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),QA=function(t){function n(n,i,r){return t.call(this,"PropertyIsEqualTo",n,i,r)||this}return JA(n,t),n}(HA),tP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),nP=function(t){function n(n,i){return t.call(this,"PropertyIsGreaterThan",n,i)||this}return tP(n,t),n}(HA),iP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rP=function(t){function n(n,i){return t.call(this,"PropertyIsGreaterThanOrEqualTo",n,i)||this}return iP(n,t),n}(HA),eP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),oP=function(t){function n(n,i,r){return t.call(this,"Intersects",n,i,r)||this}return eP(n,t),n}(GA),sP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),uP=function(t){function n(n,i,r){var e=t.call(this,"PropertyIsBetween",n)||this;return e.lowerBoundary=i,e.upperBoundary=r,e}return sP(n,t),n}(YA),aP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),hP=function(t){function n(n,i,r,e,o,s){var u=t.call(this,"PropertyIsLike",n)||this;return u.pattern=i,u.wildCard=void 0!==r?r:"*",u.singleChar=void 0!==e?e:".",u.escapeChar=void 0!==o?o:"!",u.matchCase=s,u}return aP(n,t),n}(YA),fP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),cP=function(t){function n(n){return t.call(this,"PropertyIsNull",n)||this}return fP(n,t),n}(YA),lP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),vP=function(t){function n(n,i){return t.call(this,"PropertyIsLessThan",n,i)||this}return lP(n,t),n}(HA),dP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),pP=function(t){function n(n,i){return t.call(this,"PropertyIsLessThanOrEqualTo",n,i)||this}return dP(n,t),n}(HA),yP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),mP=function(t){function n(n){var i=t.call(this,"Not")||this;return i.condition=n,i}return yP(n,t),n}(CA),wP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),gP=function(t){function n(n,i,r){return t.call(this,"PropertyIsNotEqualTo",n,i,r)||this}return wP(n,t),n}(HA),bP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xP=function(t){function n(n){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return bP(n,t),n}(IA),MP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_P=function(t){function n(n){var i=t.call(this,"ResourceId")||this;return i.rid=n,i}return MP(n,t),n}(CA),SP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),OP=function(t){function n(n,i,r){return t.call(this,"Within",n,i,r)||this}return SP(n,t),n}(GA);function jP(t){var n=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(LA,n))}function EP(t,n,i){return new RA(t,n,i)}var TP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),AP={"http://www.opengis.net/gml":{boundedBy:tc(vO.prototype.readExtentElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:Hf(vO.prototype.readFeaturesInternal)}},PP={"http://www.opengis.net/wfs":{totalInserted:tc(gO),totalUpdated:tc(gO),totalDeleted:tc(gO)},"http://www.opengis.net/wfs/2.0":{totalInserted:tc(gO),totalUpdated:tc(gO),totalDeleted:tc(gO)}},CP={"http://www.opengis.net/wfs":{TransactionSummary:tc(BP,"transactionSummary"),InsertResults:tc(YP,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:tc(BP,"transactionSummary"),InsertResults:tc(YP,"insertIds")}},kP={"http://www.opengis.net/wfs":{PropertyName:nc(EO)},"http://www.opengis.net/wfs/2.0":{PropertyName:nc(EO)}},IP={"http://www.opengis.net/wfs":{Insert:nc(ZP),Update:nc(JP),Delete:nc(HP),Property:nc(QP),Native:nc(tC)},"http://www.opengis.net/wfs/2.0":{Insert:nc(ZP),Update:nc(JP),Delete:nc(HP),Property:nc(QP),Native:nc(tC)}},NP="feature",LP="http://www.w3.org/2000/xmlns/",zP={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},RP={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},FP={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},GP={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},DP={"2.0.0":DO,"1.1.0":LO,"1.0.0":CO},qP=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.af=r.version?r.version:"1.1.0",i.Fy=r.featureType,i.Gy=r.featureNS,i.Dy=r.gmlFormat?r.gmlFormat:new DP[i.af],i.qy=r.schemaLocation?r.schemaLocation:GP[i.af],i}return TP(n,t),n.prototype.getFeatureType=function(){return this.Fy},n.prototype.setFeatureType=function(t){this.Fy=t},n.prototype.readFeaturesFromNode=function(t,n){var i={node:t};A(i,{featureType:this.Fy,featureNS:this.Gy}),A(i,this.getReadOptions(t,n||{}));var r=[i],e=ac([],"2.0.0"===this.af?AP:this.Dy.FEATURE_COLLECTION_PARSERS,t,r,this.Dy);return e||(e=[]),e},n.prototype.readTransactionResponse=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readTransactionResponseFromDocument(n)}return Yf(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}},n.prototype.readFeatureCollectionMetadata=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readFeatureCollectionMetadataFromDocument(n)}return Yf(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}},n.prototype.readFeatureCollectionMetadataFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(n)},n.prototype.readFeatureCollectionMetadataFromNode=function(t){var n={},i=bO(t.getAttribute("numberOfFeatures"));return n.numberOfFeatures=i,ac(n,AP,t,[],this.Dy)},n.prototype.readTransactionResponseFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(n)},n.prototype.readTransactionResponseFromNode=function(t){return ac({},CP,t,[])},n.prototype.writeGetFeature=function(t){var n=this,i=Xf(RP[this.af],"GetFeature");i.setAttribute("service","WFS"),i.setAttribute("version",this.af),t.handle&&i.setAttribute("handle",t.handle),t.outputFormat&&i.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&i.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&i.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&i.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&i.setAttribute("count",String(t.count)),void 0!==t.viewParams&&i.setAttribute("viewParams",t.viewParams),i.setAttributeNS(Bf,"xsi:schemaLocation",this.qy);var r={node:i};if(A(r,{version:this.af,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.Gy,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),St(Array.isArray(t.featureTypes),11),"string"==typeof t.featureTypes[0]){var e=t.filter;t.bbox&&(St(t.geometryName,12),e=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,e)),A(r,{geometryName:t.geometryName,filter:e}),wC(i,t.featureTypes,[r])}else t.featureTypes.forEach((function(e){var o=n.combineBboxAndFilter(e.geometryName,e.bbox,t.srsName,t.filter);A(r,{geometryName:e.geometryName,filter:o}),wC(i,[e.name],[r])}));return i},n.prototype.combineBboxAndFilter=function(t,n,i,r){var e=EP(t,n,i);return r?jP(r,e):e},n.prototype.writeTransaction=function(t,n,i,r){var e,o=[],s=r.version?r.version:this.af,u=Xf(RP[s],"Transaction");u.setAttribute("service","WFS"),u.setAttribute("version",s),r&&(e=r.gmlOptions?r.gmlOptions:{},r.handle&&u.setAttribute("handle",r.handle)),u.setAttributeNS(Bf,"xsi:schemaLocation",GP[s]);var a=function(t,n,i,r){var e,o=r.featurePrefix?r.featurePrefix:NP;"1.0.0"===i?e=2:"1.1.0"===i?e=3:"2.0.0"===i&&(e=3.2);return A({node:t},{version:i,featureNS:r.featureNS,featureType:r.featureType,featurePrefix:o,gmlVersion:e,hasZ:r.hasZ,srsName:r.srsName},n)}(u,e,s,r);return t&&UP("Insert",t,o,a),n&&UP("Update",n,o,a),i&&UP("Delete",i,o,a),r.nativeElements&&UP("Native",r.nativeElements,o,a),u},n.prototype.readProjectionFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(n);return null},n.prototype.readProjectionFromNode=function(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(var n=(t=t.firstElementChild.firstElementChild).firstElementChild;n;n=n.nextElementSibling)if(0!==n.childNodes.length&&(1!==n.childNodes.length||3!==n.firstChild.nodeType)){var i=[{}];return this.Dy.readGeometryElement(n,i),yr(i.pop().srsName)}return null},n}(aO);function UP(t,n,i,r){fc(r,IP,rc(t),n,i)}function BP(t,n){return ac({},PP,t,n)}var XP={"http://www.opengis.net/ogc":{FeatureId:Hf((function(t,n){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:Hf((function(t,n){return t.getAttribute("fid")}))}};function VP(t,n){uc(XP,t,n)}var WP={"http://www.opengis.net/wfs":{Feature:VP},"http://www.opengis.net/wfs/2.0":{Feature:VP}};function YP(t,n){return ac([],WP,t,n)}function ZP(t,n,i){var r=i[i.length-1],e=r.featureType,o=r.featureNS,s=r.gmlVersion,u=Xf(o,e);t.appendChild(u),2===s?CO.prototype.writeFeatureElement(u,n,i):3===s?LO.prototype.writeFeatureElement(u,n,i):DO.prototype.writeFeatureElement(u,n,i)}function $P(t,n,i){var r=i[i.length-1].version,e=zP[r],o=Xf(e,"Filter"),s=Xf(e,"FeatureId");o.appendChild(s),s.setAttribute("fid",n),t.appendChild(o)}function KP(t,n){var i=(t=t||NP)+":";return 0===n.indexOf(i)?n:i+n}function HP(t,n,i){var r=i[i.length-1];St(void 0!==n.getId(),26);var e=r.featureType,o=r.featurePrefix,s=r.featureNS,u=KP(o,e);t.setAttribute("typeName",u),t.setAttributeNS(LP,"xmlns:"+o,s);var a=n.getId();void 0!==a&&$P(t,a,i)}function JP(t,n,i){var r=i[i.length-1];St(void 0!==n.getId(),27);var e=r.version,o=r.featureType,s=r.featurePrefix,u=r.featureNS,a=KP(s,o),h=n.getGeometryName();t.setAttribute("typeName",a),t.setAttributeNS(LP,"xmlns:"+s,u);var f=n.getId();if(void 0!==f){for(var c=n.getKeys(),l=[],v=0,d=c.length;v0,i=this.readUint32(n),r=Math.floor((268435455&i)/1e3),e=Boolean(2147483648&i)||1===r||3===r,o=Boolean(1073741824&i)||2===r||3===r,s=Boolean(536870912&i),u=(268435455&i)%1e3,a=["XY",e?"Z":"",o?"M":""].join(""),h=s?this.readUint32(n):null;if(void 0!==t&&t!==u)throw new Error("Unexpected WKB geometry type "+u);if(this.Xy){if(this.Vy!==n)throw new Error("Inconsistent endian");if(this.$y!==a)throw new Error("Inconsistent geometry layout");if(h&&this.Zy!==h)throw new Error("Inconsistent coordinate system (SRID)")}else this.Vy=n,this.Wy=e,this.Yy=o,this.$y=a,this.Zy=h,this.Xy=!0;return u},t.prototype.readWkbPayload=function(t){switch(t){case MC:return this.readPoint();case _C:return this.readLineString();case SC:case CC:return this.readPolygon();case OC:return this.readMultiPoint();case jC:return this.readMultiLineString();case EC:case AC:case PC:return this.readMultiPolygon();case TC:return this.readGeometryCollection();default:throw new Error("Unsupported WKB geometry type "+t+" is found")}},t.prototype.readWkbBlock=function(t){return this.readWkbPayload(this.readWkbHeader(t))},t.prototype.readWkbCollection=function(t,n){for(var i=this.readUint32(),r=[],e=0;e=0&&(t+=this.Ky?2147483648:1e3),this.$y.indexOf("M")>=0&&(t+=this.Ky?1073741824:2e3),this.Ky&&Number.isInteger(n)&&(t|=536870912),this.writeUint8(this.Vy?1:0),this.writeUint32(t),this.Ky&&Number.isInteger(n)&&this.writeUint32(n)},t.prototype.writeMultiPoint=function(t,n){this.writeUint32(t.length);for(var i=0;i="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.am=function(t,n){return t>="0"&&t<="9"||"."==t&&!(void 0!==n&&n)},t.prototype.hm=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.fm=function(){return this.wkt.charAt(++this.sm)},t.prototype.nextToken=function(){var t,n=this.fm(),i=this.sm,r=n;if("("==n)t=qC;else if(","==n)t=XC;else if(")"==n)t=UC;else if(this.am(n)||"-"==n)t=BC,r=this.lm();else if(this.um(n))t=DC,r=this.vm();else{if(this.hm(n))return this.nextToken();if(""!==n)throw new Error("Unexpected character: "+n);t=VC}return{position:i,value:r,type:t}},t.prototype.lm=function(){var t,n=this.sm,i=!1,r=!1;do{"."==t?i=!0:"e"!=t&&"E"!=t||(r=!0),t=this.fm()}while(this.am(t,i)||!r&&("e"==t||"E"==t)||r&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(n,this.sm--))},t.prototype.vm=function(){var t,n=this.sm;do{t=this.fm()}while(this.um(t));return this.wkt.substring(n,this.sm--).toUpperCase()},t}(),ZC=function(){function t(t){this.dm=t,this.pm={position:0,type:GC},this.$y=Tt}return t.prototype.ym=function(){this.pm=this.dm.nextToken()},t.prototype.isTokenType=function(t){return this.pm.type==t},t.prototype.match=function(t){var n=this.isTokenType(t);return n&&this.ym(),n},t.prototype.parse=function(){return this.ym(),this.wm()},t.prototype.gm=function(){var t=Tt,n=this.pm;if(this.isTokenType(DC)){var i=n.value;"Z"===i?t=At:"M"===i?t=Pt:"ZM"===i&&(t=Ct),t!==Tt&&this.ym()}return t},t.prototype.bm=function(){if(this.match(qC)){var t=[];do{t.push(this.wm())}while(this.match(XC));if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Mm=function(){if(this.match(qC)){var t=this._m();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Sm=function(){if(this.match(qC)){var t=this.Om();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.jm=function(){if(this.match(qC)){var t=this.Em();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Tm=function(){if(this.match(qC)){var t=void 0;if(t=this.pm.type==qC?this.Am():this.Om(),this.match(UC))return t}throw new Error(this.xm())},t.prototype.Pm=function(){if(this.match(qC)){var t=this.Em();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Cm=function(){if(this.match(qC)){var t=this.km();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype._m=function(){for(var t=[],n=this.$y.length,i=0;i0&&(r+=" "+e)}return 0===i.length?r+" "+FC:r+"("+i+")"}var nk=$C,ik=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rk=[null,"http://www.opengis.net/wms"],ek=sc(rk,{Service:tc((function(t,n){return ac({},uk,t,n)})),Capability:tc((function(t,n){return ac({},ok,t,n)}))}),ok=sc(rk,{Request:tc((function(t,n){return ac({},pk,t,n)})),Exception:tc((function(t,n){return ac([],ck,t,n)})),Layer:tc((function(t,n){var i=ac({},lk,t,n);if(void 0===i.Layer)return Object.assign(i,Mk(t,n));return i}))}),sk=function(t){function n(){var n=t.call(this)||this;return n.version=void 0,n}return ik(n,t),n.prototype.readFromNode=function(t){this.version=t.getAttribute("version").trim();var n=ac({version:this.version},ek,t,[]);return n||null},n}(VT),uk=sc(rk,{Name:tc(xO),Title:tc(xO),Abstract:tc(xO),KeywordList:tc(jk),OnlineResource:tc(WT),ContactInformation:tc((function(t,n){return ac({},ak,t,n)})),Fees:tc(xO),AccessConstraints:tc(xO),LayerLimit:tc(gO),MaxWidth:tc(gO),MaxHeight:tc(gO)}),ak=sc(rk,{ContactPersonPrimary:tc((function(t,n){return ac({},hk,t,n)})),ContactPosition:tc(xO),ContactAddress:tc((function(t,n){return ac({},fk,t,n)})),ContactVoiceTelephone:tc(xO),ContactFacsimileTelephone:tc(xO),ContactElectronicMailAddress:tc(xO)}),hk=sc(rk,{ContactPerson:tc(xO),ContactOrganization:tc(xO)}),fk=sc(rk,{AddressType:tc(xO),Address:tc(xO),City:tc(xO),StateOrProvince:tc(xO),PostCode:tc(xO),Country:tc(xO)}),ck=sc(rk,{Format:Hf(xO)}),lk=sc(rk,{Name:tc(xO),Title:tc(xO),Abstract:tc(xO),KeywordList:tc(jk),CRS:Qf(xO),EX_GeographicBoundingBox:tc((function(t,n){var i=ac({},dk,t,n);if(!i)return;var r=i.westBoundLongitude,e=i.southBoundLatitude,o=i.eastBoundLongitude,s=i.northBoundLatitude;if(void 0===r||void 0===e||void 0===o||void 0===s)return;return[r,e,o,s]})),BoundingBox:Qf((function(t,n){var i=[wO(t.getAttribute("minx")),wO(t.getAttribute("miny")),wO(t.getAttribute("maxx")),wO(t.getAttribute("maxy"))],r=[wO(t.getAttribute("resx")),wO(t.getAttribute("resy"))];return{crs:t.getAttribute("CRS"),extent:i,res:r}})),Dimension:Qf((function(t,n){return{name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol"),default:t.getAttribute("default"),multipleValues:pO(t.getAttribute("multipleValues")),nearestValue:pO(t.getAttribute("nearestValue")),current:pO(t.getAttribute("current")),values:xO(t)}})),Attribution:tc((function(t,n){return ac({},vk,t,n)})),AuthorityURL:Qf((function(t,n){var i=_k(t,n);if(i)return i.name=t.getAttribute("name"),i;return})),Identifier:Qf(xO),MetadataURL:Qf((function(t,n){var i=_k(t,n);if(i)return i.type=t.getAttribute("type"),i;return})),DataURL:Qf(_k),FeatureListURL:Qf(_k),Style:Qf((function(t,n){return ac({},gk,t,n)})),MinScaleDenominator:tc(mO),MaxScaleDenominator:tc(mO),Layer:Qf(Mk)}),vk=sc(rk,{Title:tc(xO),OnlineResource:tc(WT),LogoURL:tc(Ok)}),dk=sc(rk,{westBoundLongitude:tc(mO),eastBoundLongitude:tc(mO),southBoundLatitude:tc(mO),northBoundLatitude:tc(mO)}),pk=sc(rk,{GetCapabilities:tc(Sk),GetMap:tc(Sk),GetFeatureInfo:tc(Sk)}),yk=sc(rk,{Format:Qf(xO),DCPType:Qf((function(t,n){return ac({},mk,t,n)}))}),mk=sc(rk,{HTTP:tc((function(t,n){return ac({},wk,t,n)}))}),wk=sc(rk,{Get:tc(_k),Post:tc(_k)}),gk=sc(rk,{Name:tc(xO),Title:tc(xO),Abstract:tc(xO),LegendURL:Qf(Ok),StyleSheetURL:tc(_k),StyleURL:tc(_k)}),bk=sc(rk,{Format:tc(xO),OnlineResource:tc(WT)}),xk=sc(rk,{Keyword:Hf(xO)});function Mk(t,n){var i=n[n.length-1],r=ac({},lk,t,n);if(r){var e=pO(t.getAttribute("queryable"));void 0===e&&(e=i.queryable),r.queryable=void 0!==e&&e;var o=bO(t.getAttribute("cascaded"));void 0===o&&(o=i.cascaded),r.cascaded=o;var s=pO(t.getAttribute("opaque"));void 0===s&&(s=i.opaque),r.opaque=void 0!==s&&s;var u=pO(t.getAttribute("noSubsets"));void 0===u&&(u=i.noSubsets),r.noSubsets=void 0!==u&&u;var a=wO(t.getAttribute("fixedWidth"));a||(a=i.fixedWidth),r.fixedWidth=a;var h=wO(t.getAttribute("fixedHeight"));h||(h=i.fixedHeight),r.fixedHeight=h;["Style","CRS","AuthorityURL"].forEach((function(t){if(t in i){var n=r[t]||[];r[t]=n.concat(i[t])}}));return["EX_GeographicBoundingBox","BoundingBox","Dimension","Attribution","MinScaleDenominator","MaxScaleDenominator"].forEach((function(t){if(!(t in r)){var n=i[t];r[t]=n}})),r}}function _k(t,n){return ac({},bk,t,n)}function Sk(t,n){return ac({},yk,t,n)}function Ok(t,n){var i=_k(t,n);if(i){var r=[bO(t.getAttribute("width")),bO(t.getAttribute("height"))];return i.size=r,i}}function jk(t,n){return ac([],xk,t,n)}var Ek=sk,Tk=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ak=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Gy="http://mapserver.gis.umn.edu/mapserver",i.Dy=new CO,i.Uh=r.layers?r.layers:null,i}return Tk(n,t),n.prototype.getLayers=function(){return this.Uh},n.prototype.setLayers=function(t){this.Uh=t},n.prototype.zm=function(t,n){t.setAttribute("namespaceURI",this.Gy);var i=t.localName,r=[];if(0===t.childNodes.length)return r;if("msGMLOutput"==i)for(var e=0,o=t.childNodes.length;ef*uI||h>c*uI?this.cw():xn(o,r)||this.pw()}}},n.prototype.cw=function(){var t=this.getMap(),n=this.sw,i=t.getSize(),r=t.getView().calculateExtentInternal(i),e=n.getView(),o=Math.log(7.5)/Math.LN2;Qn(r,1/(Math.pow(2,o/2)*aI)),e.fitInternal(Ze(r))},n.prototype.pw=function(){var t=this.getMap(),n=this.sw,i=t.getView();n.getView().setCenterInternal(i.getCenterInternal())},n.prototype.yw=function(){var t=this.getMap(),n=this.sw;if(t.isRendered()&&n.isRendered()){var i=t.getSize(),r=t.getView(),e=n.getView(),o=this.su?0:-r.getRotation(),s=this.uw,u=this.uw.getElement(),a=r.getCenterInternal(),h=r.getResolution(),f=e.getResolution(),c=i[0]*h/f,l=i[1]*h/f;if(s.setPosition(a),u){u.style.width=c+"px",u.style.height=l+"px";var v="rotate("+o+"rad)";u.style.transform=v}}},n.prototype.lw=function(){this.mw||(this.mw=K(this.sw,vu,(function(t){delete this.mw,this.yw()}),this))},n.prototype.kr=function(t){t.preventDefault(),this.zr()},n.prototype.zr=function(){this.element.classList.toggle(_s),this.Sr?Eo(this.Ar,this.Pr):Eo(this.Pr,this.Ar),this.Sr=!this.Sr;var t=this.sw;if(!this.Sr){if(t.isRendered())return this.ew=void 0,void t.render();t.updateSize(),this.cw(),this.lw()}},n.prototype.getCollapsible=function(){return this.Tr},n.prototype.setCollapsible=function(t){this.Tr!==t&&(this.Tr=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.Sr&&this.zr())},n.prototype.setCollapsed=function(t){this.Tr&&this.Sr!==t&&this.zr()},n.prototype.getCollapsed=function(){return this.Sr},n.prototype.getRotateWithView=function(){return this.su},n.prototype.setRotateWithView=function(t){this.su!==t&&(this.su=t,0!==this.getMap().getView().getRotation()&&(this.su?this.rw():this.sw.getView().setRotation(0),this.ew=void 0,this.dw(),this.yw()))},n.prototype.getOverviewMap=function(){return this.sw},n.prototype.render=function(t){this.dw(),this.yw()},n}(oa),cI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),lI="units",vI="degrees",dI="imperial",pI="nautical",yI="metric",mI="us",wI=[1,2,5],gI=25.4/.28,bI=function(t){function n(n){var i=this,r=n||{},e=void 0!==r.className?r.className:r.bar?"ol-scale-bar":"ol-scale-line";return(i=t.call(this,{element:document.createElement("div"),render:r.render,target:r.target})||this).on,i.once,i.un,i.ww=document.createElement("div"),i.ww.className=e+"-inner",i.element.className=e+" "+bs,i.element.appendChild(i.ww),i.gw=null,i.bw=void 0!==r.minWidth?r.minWidth:64,i.xw=r.maxWidth,i.mn=!1,i.Mw=void 0,i.Qm="",i.addChangeListener(lI,i._w),i.setUnits(r.units||yI),i.Sw=r.bar||!1,i.Ow=r.steps||4,i.jw=r.text||!1,i.Ew=r.dpi||void 0,i}return cI(n,t),n.prototype.getUnits=function(){return this.get(lI)},n.prototype._w=function(){this.Lr()},n.prototype.setUnits=function(t){this.set(lI,t)},n.prototype.setDpi=function(t){this.Ew=t},n.prototype.Lr=function(){var t=this.gw;if(t){var n=t.center,i=t.projection,r=this.getUnits(),e=r==vI?Rt.DEGREES:Rt.METERS,o=mr(i,t.resolution,n,e),s=this.bw*(this.Ew||gI)/gI,u=void 0!==this.xw?this.xw*(this.Ew||gI)/gI:void 0,a=s*o,h="";if(r==vI){var f=Lt[Rt.DEGREES];(a*=f)=u){c=d,l=p,v=y;break}if(l>=s)break;d=c,p=l,y=v,++w}m=this.Sw?this.createScaleBar(l,c,h):c.toFixed(v<0?-v:0)+" "+h,this.Qm!=m&&(this.ww.innerHTML=m,this.Qm=m),this.Mw!=l&&(this.ww.style.width=l+"px",this.Mw=l),this.mn||(this.element.style.display="",this.mn=!0)}else this.mn&&(this.element.style.display="none",this.mn=!1)},n.prototype.createScaleBar=function(t,n,i){for(var r="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),e=[],o=t/this.Ow,s="ol-scale-singlebar-odd",u=0;u
'+this.createMarker("relative",u)+(u%2==0||2===this.Ow?this.createStepText(u,t,!1,n,i):"")+""),u===this.Ow-1&&e.push(this.createStepText(u+1,t,!0,n,i)),s="ol-scale-singlebar-odd"===s?"ol-scale-singlebar-even":"ol-scale-singlebar-odd";return'
'+(this.jw?'
'+r+"
":"")+e.join("")+"
"},n.prototype.createMarker=function(t,n){return'
'},n.prototype.createStepText=function(t,n,i,r,e){var o=(0===t?0:Math.round(r/this.Ow*t*100)/100)+(0===t?"":" "+e);return'
'+o+"
"},n.prototype.getScaleForResolution=function(){var t=mr(this.gw.projection,this.gw.resolution,this.gw.center,Rt.METERS),n=this.Ew||gI;return parseFloat(t.toString())*(1e3/25.4)*n},n.prototype.render=function(t){var n=t.frameState;this.gw=n?n.viewState:null,this.Lr()},n}(oa),xI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),MI=0,_I=1,SI=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),render:r.render})||this).kn=[],i.Tw=void 0,i.Aw=MI,i.Cn,i.Pw=0,i.Cw=0,i.kw,i.Iw,i.Nw=null,i.Lw=!1,i.Fr=void 0!==r.duration?r.duration:200;var e=void 0!==r.className?r.className:"ol-zoomslider",o=document.createElement("button");o.setAttribute("type","button"),o.className=e+"-thumb "+bs;var s=i.element;return s.className=e+" "+"ol-unselectable "+Ms,s.appendChild(o),s.addEventListener(au,i.zw.bind(i),!1),s.addEventListener(uu,i.Rw.bind(i),!1),s.addEventListener(hu,i.Fw.bind(i),!1),s.addEventListener(F,i.Gw.bind(i),!1),o.addEventListener(F,f,!1),i}return xI(n,t),n.prototype.setMap=function(n){t.prototype.setMap.call(this,n),n&&n.render()},n.prototype.Dw=function(){var t=this.element,n=t.offsetWidth,i=t.offsetHeight;if(0===n&&0===i)return this.Lw=!1;var r=getComputedStyle(t);n-=parseFloat(r.paddingRight)+parseFloat(r.paddingLeft),i-=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);var e=t.firstElementChild,o=getComputedStyle(e),s=e.offsetWidth+parseFloat(o.marginRight)+parseFloat(o.marginLeft),u=e.offsetHeight+parseFloat(o.marginTop)+parseFloat(o.marginBottom);return this.Nw=[s,u],n>i?(this.Aw=_I,this.Cw=n-s):(this.Aw=MI,this.Pw=i-u),this.Lw=!0},n.prototype.Gw=function(t){var n=this.getMap().getView(),i=this.qw(t.offsetX-this.Nw[0]/2,t.offsetY-this.Nw[1]/2),r=this.Uw(i),e=n.getConstrainedZoom(n.getZoomForResolution(r));n.animateInternal({zoom:e,duration:this.Fr,easing:mt})},n.prototype.zw=function(t){if(!this.Cn&&t.target===this.element.firstElementChild){var n=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.kw=t.clientX-parseFloat(n.style.left),this.Iw=t.clientY-parseFloat(n.style.top),this.Cn=!0,0===this.kn.length){var i=this.Rw,r=this.Fw,e=this.getMap().getOwnerDocument();this.kn.push($(e,uu,i,this),$(e,hu,r,this))}}},n.prototype.Rw=function(t){if(this.Cn){var n=t.clientX-this.kw,i=t.clientY-this.Iw,r=this.qw(n,i);this.Tw=this.Uw(r),this.getMap().getView().setResolution(this.Tw)}},n.prototype.Fw=function(t){this.Cn&&(this.getMap().getView().endInteraction(),this.Cn=!1,this.kw=void 0,this.Iw=void 0,this.kn.forEach(H),this.kn.length=0)},n.prototype.Bw=function(t){var n=this.Xw(t),i=this.element.firstElementChild;this.Aw==_I?i.style.left=this.Cw*n+"px":i.style.top=this.Pw*n+"px"},n.prototype.qw=function(t,n){return oi(this.Aw===_I?t/this.Cw:n/this.Pw,0,1)},n.prototype.Uw=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},n.prototype.Xw=function(t){return oi(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)},n.prototype.render=function(t){if(t.frameState&&(this.Lw||this.Dw())){var n=t.frameState.viewState.resolution;this.Tw=n,this.Bw(n)}},n}(oa),OI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),jI=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),target:r.target})||this).extent=r.extent?r.extent:null;var e=void 0!==r.className?r.className:"ol-zoom-extent",o=void 0!==r.label?r.label:"E",s=void 0!==r.tipLabel?r.tipLabel:"Fit to extent",u=document.createElement("button");u.setAttribute("type","button"),u.title=s,u.appendChild("string"==typeof o?document.createTextNode(o):o),u.addEventListener(F,i.kr.bind(i),!1);var a=e+" "+"ol-unselectable "+Ms,h=i.element;return h.className=a,h.appendChild(u),i}return OI(n,t),n.prototype.kr=function(t){t.preventDefault(),this.handleZoomToExtent()},n.prototype.handleZoomToExtent=function(){var t=this.getMap().getView(),n=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal(Ze(n))},n}(oa),EI={};EI.AssertionError=h,EI.Collection=ft,EI.Collection.CollectionEvent=ht,EI.DataTile=_t,EI.Disposable=v,EI.Feature=Et,EI.Feature.createStyleFunction=jt,EI.Geolocation=ho,EI.Image=bo,EI.Image.listenImage=go,EI.ImageBase=co,EI.ImageCanvas=Mo,EI.ImageTile=ko,EI.Kinetic=Io,EI.Map=yh,EI.MapBrowserEvent=ou,EI.MapBrowserEventHandler=lu,EI.MapEvent=ru,EI.Object=et,EI.Object.ObjectEvent=rt,EI.Observable=nt,EI.Observable.unByKey=tt,EI.Overlay=_h,EI.PluggableMap=ra,EI.Tile=xt,EI.TileCache=Ih,EI.TileQueue=Ou,EI.TileQueue.getTilePriority=ju,EI.TileRange=zh,EI.TileRange.createOrUpdate=Lh,EI.VectorRenderTile=Gh,EI.VectorTile=qh,EI.View=$u,EI.View.createCenterConstraint=Xu,EI.View.createResolutionConstraint=Vu,EI.View.createRotationConstraint=Wu,EI.View.isNoopAnimation=Yu,EI.array={},EI.array.binarySearch=d,EI.array.equals=x,EI.array.extend=g,EI.array.find=b,EI.array.findIndex=M,EI.array.includes=y,EI.array.isSorted=_,EI.array.linearFindNearest=m,EI.array.numberSafeCompareFunction=p,EI.array.remove=function(t,n){var i=t.indexOf(n),r=i>-1;return r&&t.splice(i,1),r},EI.array.reverseSubArray=w,EI.array.stableSort=function(t,n){var i,r=t.length,e=Array(t.length);for(i=0;i3&&!!we(t,n,i,r)},EI.geom.flat.transform={},EI.geom.flat.transform.rotate=qr,EI.geom.flat.transform.scale=Ur,EI.geom.flat.transform.transform2D=Dr,EI.geom.flat.transform.translate=Br,EI.has={},EI.has.DEVICE_PIXEL_RATIO=Xt,EI.has.FIREFOX=Gt,EI.has.IMAGE_DECODE=Wt,EI.has.MAC=Bt,EI.has.PASSIVE_EVENT_LISTENERS=Yt,EI.has.SAFARI=Dt,EI.has.SAFARI_BUG_237906=qt,EI.has.WEBKIT=Ut,EI.has.WORKER_OFFSCREEN_CANVAS=Vt,EI.interaction={},EI.interaction.DoubleClickZoom=ga,EI.interaction.DragAndDrop=Q_,EI.interaction.DragAndDrop.DragAndDropEvent=J_,EI.interaction.DragBox=$a,EI.interaction.DragBox.DragBoxEvent=Za,EI.interaction.DragPan=Fa,EI.interaction.DragRotate=Da,EI.interaction.DragRotateAndZoom=nS,EI.interaction.DragZoom=Ha,EI.interaction.Draw=dS,EI.interaction.Draw.DrawEvent=vS,EI.interaction.Draw.createBox=function(){return function(t,n,i){var r=yn([t[0],t[t.length-1]].map((function(t){return Ir(t,i)}))),e=[[Gn(r),Dn(r),Zn(r),Yn(r),Gn(r)]],o=n;o?o.setCoordinates(e):o=new We(e);var s=Cr();return s&&o.transform(i,s),o}},EI.interaction.Draw.createRegularPolygon=function(t,n){return function(i,r,e){var o=Ir(i[0],e),s=Ir(i[i.length-1],e),u=Math.sqrt(Qi(o,s)),a=r||$e(new eS(o),t),h=n;if(!n&&0!==n){var f=s[0]-o[0],c=s[1]-o[1];h=Math.atan2(c,f)}Ke(a,o,u,h);var l=Cr();return l&&a.transform(e,l),a}},EI.interaction.Extent=xS,EI.interaction.Extent.ExtentEvent=mS,EI.interaction.Interaction=ma,EI.interaction.Interaction.pan=pa,EI.interaction.Interaction.zoomByDelta=ya,EI.interaction.KeyboardPan=rh,EI.interaction.KeyboardZoom=oh,EI.interaction.Link=jS,EI.interaction.Modify=zS,EI.interaction.Modify.ModifyEvent=kS,EI.interaction.MouseWheelZoom=hh,EI.interaction.PinchRotate=ch,EI.interaction.PinchZoom=vh,EI.interaction.Pointer=Ma,EI.interaction.Pointer.centroid=xa,EI.interaction.Select=qS,EI.interaction.Select.SelectEvent=GS,EI.interaction.Snap=VS,EI.interaction.Translate=HS,EI.interaction.Translate.TranslateEvent=KS,EI.interaction.defaults=dh,EI.layer={},EI.layer.Base=es,EI.layer.BaseImage=$y,EI.layer.BaseTile=am,EI.layer.BaseVector=$m,EI.layer.Graticule=gg,EI.layer.Group=nu,EI.layer.Group.GroupEvent=Qs,EI.layer.Heatmap=Og,EI.layer.Image=em,EI.layer.Layer=ls,EI.layer.Layer.inView=cs,EI.layer.MapboxVector=q_,EI.layer.Tile=lm,EI.layer.Vector=lg,EI.layer.VectorImage=B_,EI.layer.VectorTile=Rg,EI.layer.WebGLPoints=V_,EI.layer.WebGLTile=$_,EI.loadingstrategy={},EI.loadingstrategy.all=Wh,EI.loadingstrategy.bbox=function(t,n){return[t]},EI.loadingstrategy.tile=function(t){return function(n,i,r){var e=t.getZForResolution(Rr(i,r)),o=t.getTileRangeForExtentAndZ(Lr(n,r),e),s=[],u=[e,0,0];for(u[1]=o.minX;u[1]<=o.maxX;++u[1])for(u[2]=o.minY;u[2]<=o.maxY;++u[2])s.push(Nr(t.getTileCoordExtent(u),r));return s}},EI.math={},EI.math.ceil=wi,EI.math.clamp=oi,EI.math.cosh=si,EI.math.floor=mi,EI.math.lerp=di,EI.math.log2=ui,EI.math.modulo=vi,EI.math.round=yi,EI.math.solveLinearSystem=fi,EI.math.squaredDistance=hi,EI.math.squaredSegmentDistance=ai,EI.math.toDegrees=ci,EI.math.toFixed=pi,EI.math.toRadians=li,EI.net={},EI.net.ClientError=Hh,EI.net.ResponseError=Kh,EI.net.getJSON=Jh,EI.net.jsonp=Zh,EI.net.overrideXHR=function(t){"undefined"!=typeof XMLHttpRequest&&($h=XMLHttpRequest),global.XMLHttpRequest=t},EI.net.resolveUrl=Qh,EI.net.restoreXHR=function(){global.XMLHttpRequest=$h},EI.obj={},EI.obj.assign=A,EI.obj.clear=P,EI.obj.getValues=C,EI.obj.isEmpty=k,EI.proj={},EI.proj.Projection=ei,EI.proj.Units={},EI.proj.Units.METERS_PER_UNIT=Lt,EI.proj.Units.fromCode=Nt,EI.proj.addCommon=Gr,EI.proj.addCoordinateTransforms=Mr,EI.proj.addEquivalentProjections=wr,EI.proj.addEquivalentTransforms=gr,EI.proj.addProjection=dr,EI.proj.addProjections=pr,EI.proj.clearAllProjections=function(){zi(),Di()},EI.proj.clearUserProjection=function(){Ar=null},EI.proj.cloneTransform=lr,EI.proj.createProjection=br,EI.proj.createSafeCoordinateTransform=Fr,EI.proj.createTransformFromCoordinateTransform=xr,EI.proj.disableCoordinateWarning=cr,EI.proj.epsg3857={},EI.proj.epsg3857.EXTENT=Mi,EI.proj.epsg3857.HALF_SIZE=xi,EI.proj.epsg3857.MAX_SAFE_Y=Si,EI.proj.epsg3857.PROJECTIONS=ji,EI.proj.epsg3857.RADIUS=bi,EI.proj.epsg3857.WORLD_EXTENT=_i,EI.proj.epsg3857.fromEPSG4326=Ei,EI.proj.epsg3857.toEPSG4326=Ti,EI.proj.epsg4326={},EI.proj.epsg4326.EXTENT=Ci,EI.proj.epsg4326.METERS_PER_UNIT=ki,EI.proj.epsg4326.PROJECTIONS=Ni,EI.proj.epsg4326.RADIUS=Pi,EI.proj.equivalent=Sr,EI.proj.fromLonLat=_r,EI.proj.fromUserCoordinate=Ir,EI.proj.fromUserExtent=Lr,EI.proj.fromUserResolution=Rr,EI.proj.get=yr,EI.proj.getPointResolution=mr,EI.proj.getTransform=jr,EI.proj.getTransformFromProjections=Or,EI.proj.getUserProjection=Cr,EI.proj.identityTransform=vr,EI.proj.proj4={},EI.proj.proj4.register=function(t){var n,i,r=Object.keys(t.defs),e=r.length;for(n=0;n180)&&(i[0]=vi(r+180,360)-180),i},EI.proj.toUserCoordinate=kr,EI.proj.toUserExtent=Nr,EI.proj.toUserResolution=zr,EI.proj.transform=Er,EI.proj.transformExtent=Tr,EI.proj.transformWithProjections=function(t,n,i){return Or(n,i)(t)},EI.proj.transforms={},EI.proj.transforms.add=qi,EI.proj.transforms.clear=Di,EI.proj.transforms.get=Ui,EI.proj.transforms.remove=function(t,n){var i=t.getCode(),r=n.getCode(),e=Gi[i][r];return delete Gi[i][r],k(Gi[i])&&delete Gi[i],e},EI.proj.useGeographic=function(){Pr("EPSG:4326")},EI.render={},EI.render.Box=Ua,EI.render.Event=ms,EI.render.Feature=fg,EI.render.Feature.toFeature=function(t,n){var i=t.getId(),r=hg(t),e=t.getProperties(),o=new Et;return void 0!==n&&o.setGeometryName(n),o.setGeometry(r),void 0!==i&&o.setId(i),o.setProperties(e,!0),o},EI.render.Feature.toGeometry=hg,EI.render.VectorContext=tf,EI.render.canvas={},EI.render.canvas.Builder=ow,EI.render.canvas.BuilderGroup=mw,EI.render.canvas.Executor=Aw,EI.render.canvas.ExecutorGroup=Nw,EI.render.canvas.ExecutorGroup.getPixelIndexArray=Iw,EI.render.canvas.ImageBuilder=uw,EI.render.canvas.Immediate=rf,EI.render.canvas.Instruction={},EI.render.canvas.Instruction.beginPathInstruction=nw,EI.render.canvas.Instruction.closePathInstruction=iw,EI.render.canvas.Instruction.fillInstruction=Qm,EI.render.canvas.Instruction.strokeInstruction=tw,EI.render.canvas.LineStringBuilder=hw,EI.render.canvas.PolygonBuilder=cw,EI.render.canvas.TextBuilder=pw,EI.render.canvas.checkedFonts=Rs,EI.render.canvas.defaultFillStyle=Ts,EI.render.canvas.defaultFont=Es,EI.render.canvas.defaultLineCap=As,EI.render.canvas.defaultLineDash=Ps,EI.render.canvas.defaultLineDashOffset=0,EI.render.canvas.defaultLineJoin=Cs,EI.render.canvas.defaultLineWidth=1,EI.render.canvas.defaultMiterLimit=ks,EI.render.canvas.defaultPadding=zs,EI.render.canvas.defaultStrokeStyle=Is,EI.render.canvas.defaultTextAlign=Ns,EI.render.canvas.defaultTextBaseline=Ls,EI.render.canvas.drawImageOrLabel=$s,EI.render.canvas.getTextDimensions=Zs,EI.render.canvas.hitdetect={},EI.render.canvas.hitdetect.HIT_DETECT_RESOLUTION=Lw,EI.render.canvas.hitdetect.createHitDetectionImageData=zw,EI.render.canvas.hitdetect.hitDetect=Rw,EI.render.canvas.labelCache=Fs,EI.render.canvas.measureAndCacheTextWidth=Ys,EI.render.canvas.measureTextHeight=Xs,EI.render.canvas.measureTextWidth=Ws,EI.render.canvas.registerFont=Bs,EI.render.canvas.rotateAtOffset=function(t,n,i,r){0!==n&&(t.translate(i,r),t.rotate(n),t.translate(-i,-r))},EI.render.canvas.textHeights=Us,EI.render.getRenderPixel=function(t,n){return tn(t.inversePixelTransform,n.slice(0))},EI.render.getVectorContext=ff,EI.render.toContext=function(t,n){var i=t.canvas,r=n||{},e=r.pixelRatio||Xt,o=r.size;o&&(i.width=o[0]*e,i.height=o[1]*e,i.style.width=o[0]+"px",i.style.height=o[1]+"px");var s=[0,0,i.width,i.height],u=rn([1,0,0,1,0,0],e,e);return new rf(t,e,s,u,0)},EI.renderer={},EI.renderer.Composite=Hs,EI.renderer.Layer=Kc,EI.renderer.Map=ps,EI.renderer.canvas={},EI.renderer.canvas.ImageLayer=im,EI.renderer.canvas.Layer=tm,EI.renderer.canvas.Layer.canvasPool=Hy,EI.renderer.canvas.TileLayer=fm,EI.renderer.canvas.VectorImageLayer=qw,EI.renderer.canvas.VectorLayer=Gw,EI.renderer.canvas.VectorTileLayer=Zw,EI.renderer.canvas.common={},EI.renderer.canvas.common.IMAGE_SMOOTHING_DISABLED=lf,EI.renderer.canvas.common.IMAGE_SMOOTHING_ENABLED=vf,EI.renderer.vector={},EI.renderer.vector.defaultOrder=of,EI.renderer.vector.getSquaredTolerance=sf,EI.renderer.vector.getTolerance=uf,EI.renderer.vector.renderFeature=af,EI.renderer.webgl={},EI.renderer.webgl.Layer=ol,EI.renderer.webgl.Layer.colorDecodeId=el,EI.renderer.webgl.Layer.colorEncodeId=rl,EI.renderer.webgl.Layer.getBlankImageData=function(){var t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t},EI.renderer.webgl.Layer.writePointFeatureToBuffers=function(t,n,i,r,e,o){var s=3+e,u=t[n+0],a=t[n+1],h=tl;h.length=e;for(var f=0;f1?M(i.TileMatrixSetLink,"projection"in n?function(t,i,r){var o=b(e,(function(n){return n.Identifier==t.TileMatrixSet})).SupportedCRS,s=yr(o),u=yr(n.projection);return s&&u?Sr(s,u):o==n.projection}:function(t,i,r){return t.TileMatrixSet==n.matrixSet}):0)<0&&(r=0);var o=i.TileMatrixSetLink[r].TileMatrixSet,s=i.TileMatrixSetLink[r].TileMatrixSetLimits,u=i.Format[0];"format"in n&&(u=n.format),(r=M(i.Style,(function(t,i,r){return"style"in n?t.Title==n.style:t.isDefault})))<0&&(r=0);var a=i.Style[r].Identifier,h={};"Dimension"in i&&i.Dimension.forEach((function(t,n,i){var r=t.Identifier,e=t.Default;void 0===e&&(e=t.Value[0]),h[r]=e}));var f,c=b(t.Contents.TileMatrixSet,(function(t,n,i){return t.Identifier==o})),l=c.SupportedCRS;if(l&&(f=yr(l)),"projection"in n){var v=yr(n.projection);v&&(f&&!Sr(v,f)||(f=v))}var d=!1,p="ne"==f.getAxisOrientation().substr(0,2),m=c.TileMatrix[0],w={MinTileCol:0,MinTileRow:0,MaxTileCol:m.MatrixWidth-1,MaxTileRow:m.MatrixHeight-1};if(s){w=s[s.length-1];var g=b(c.TileMatrix,(function(t){return t.Identifier===w.TileMatrix||c.Identifier+":"+t.Identifier===w.TileMatrix}));g&&(m=g)}var x=28e-5*m.ScaleDenominator/f.getMetersPerUnit(),_=p?[m.TopLeftCorner[1],m.TopLeftCorner[0]]:m.TopLeftCorner,S=m.TileWidth*x,O=m.TileHeight*x,j=c.BoundingBox;j&&p&&(j=[j[1],j[0],j[3],j[2]]);var E=[_[0]+S*w.MinTileCol,_[1]-O*(1+w.MaxTileRow),_[0]+S*(1+w.MaxTileCol),_[1]-O*w.MinTileRow];if(void 0!==j&&!xn(j,E)){var T=i.WGS84BoundingBox,A=yr("EPSG:4326").getExtent();if(E=j,T)d=T[0]===A[0]&&T[2]===A[2];else{var P=Tr(j,c.SupportedCRS,"EPSG:4326");d=P[0]-1e-10<=A[0]&&P[2]+1e-10>=A[2]}}var C=Hl(c,E,s),k=[],I=n.requestEncoding;if(I=void 0!==I?I:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var N=t.OperationsMetadata.GetTile.DCP.HTTP.Get,L=0,z=N.length;L Date: Tue, 21 Feb 2023 15:24:06 -0800 Subject: [PATCH 19/36] Fixed "Spotted Me" exception --- package.nw/lib/roster.js | 15 ++++----------- package.nw/lib/roster/processRosterFiltering.js | 6 ++++++ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index e47d1776..fce71674 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -421,6 +421,7 @@ function realtimeRoster() lifeCols[x].innerHTML = toDHMS(when); } } + if (CR.rosterSettings.columns.Spot) { let spotCols = document.getElementsByClassName("spotCol"); @@ -428,14 +429,7 @@ function realtimeRoster() { if ((typeof spotCols[x].id != "undefined") && (typeof CR.callRoster[spotCols[x].id.substr(2)] != "undefined")) { - spotCols[x].innerHTML = getSpotString( - CR.callRoster[spotCols[x].id.substr(2)].callObj - ); - if (CR.rosterSettings.onlySpot && spotCols[x].innerHTML == "") - { - viewRoster(); - return; - } + spotCols[x].innerHTML = getSpotString(CR.callRoster[spotCols[x].id.substr(2)].callObj); } } } @@ -1099,8 +1093,6 @@ function wantedChanged(element) function valuesChanged() { - setVisual(); - CR.rosterSettings.callsign = callsignNeed.value; CR.rosterSettings.hunting = huntMode.value; CR.rosterSettings.huntNeed = huntNeed.value; @@ -1155,7 +1147,8 @@ function valuesChanged() { window.opener.GT.callRoster[callHash].callObj.alerted = false; } - viewRoster(); + + setVisual(); } function loadFilterSettings() diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index d2c6dd1b..8f222cdd 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -182,6 +182,12 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } + if (CR.rosterSettings.columns.Spot == true && CR.rosterSettings.onlySpot == true && (callObj.spot.when == 0 || (timeNowSec() - callObj.spot.when > window.opener.GT.receptionSettings.viewHistoryTimeSec))) + { + entry.tx = false; + continue; + } + let usesOneOf = 0; let checkUses = 0; From d673415c59ad69da9b8d4c9e320f61901d3d5939 Mon Sep 17 00:00:00 2001 From: Tag Date: Tue, 21 Feb 2023 15:29:03 -0800 Subject: [PATCH 20/36] Force an update on resize --- package.nw/lib/roster.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index fce71674..6dcac5af 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -1147,7 +1147,7 @@ function valuesChanged() { window.opener.GT.callRoster[callHash].callObj.alerted = false; } - + setVisual(); } @@ -1645,7 +1645,7 @@ function resize() { if (editView.style.display == "inline-block") openIgnoreEdit(); - viewRoster(); + window.opener.goProcessRoster(); } function init() From 5f45771f7c4619e1dcc8ddbf7bec2b24f41607bd Mon Sep 17 00:00:00 2001 From: Tag Date: Tue, 21 Feb 2023 15:58:26 -0800 Subject: [PATCH 21/36] check the value --- package.nw/lib/roster/processRosterFiltering.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index 8f222cdd..d40c6210 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -90,7 +90,7 @@ function processRosterFiltering(callRoster, rosterSettings) } if (CR.rosterSettings.cqOnly == true) { - if (CR.rosterSettings.wantRRCQ) + if (CR.rosterSettings.wantRRCQ == true) { if (callObj.RR73 == false && callObj.CQ == false) { From bc6cf78341b8cb225d9f54ada40e6010d2a90ab9 Mon Sep 17 00:00:00 2001 From: Tag Date: Tue, 21 Feb 2023 16:05:33 -0800 Subject: [PATCH 22/36] Corrected case --- package.nw/i18n/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/i18n/en.json b/package.nw/i18n/en.json index 40a21517..f6641b0f 100644 --- a/package.nw/i18n/en.json +++ b/package.nw/i18n/en.json @@ -558,7 +558,7 @@ "roster.secondary.exceptions.maxFreq": "Max Freq", "roster.secondary.exceptions.usesLoTW": "Uses LoTW", "roster.secondary.exceptions.spottedMe": "Spotted Me", - "roster.secondary.exceptions.noMyDXCC": "Not My Dxcc", + "roster.secondary.exceptions.noMyDXCC": "Not My DXCC", "roster.secondary.exceptions.onlyMyDXCC": "Only My DXCC", "roster.secondary.exceptions.useseQSL":" Uses eQSL", "roster.secondary.exceptions.usesOQRS": "Uses OQRS", From c9f2e601632f1d410964ce82a912ed0f133cd521 Mon Sep 17 00:00:00 2001 From: Tag Date: Tue, 21 Feb 2023 17:12:01 -0800 Subject: [PATCH 23/36] Fixed mac "Full Stop" on startup --- package.nw/lib/gt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 8c43b82a..8c81dd36 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -12771,7 +12771,7 @@ function initSpeech() { nodeTimers.setTimeout(timedGetVoices, 500); }; - var msg = new SpeechSynthesisUtterance("."); + var msg = new SpeechSynthesisUtterance("\n"); msg.lang = GT.localeString; window.speechSynthesis.speak(msg); } From 26af8c66ac09e07eec2be103af6afb5fc1dbe8f3 Mon Sep 17 00:00:00 2001 From: Tag Date: Wed, 22 Feb 2023 16:51:31 -0800 Subject: [PATCH 24/36] Better close of websocket handling --- package.nw/lib/gt.js | 11 +++++------ package.nw/lib/gtws.js | 25 +++++++++++-------------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 8c81dd36..ee1b8b9a 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -2719,6 +2719,7 @@ function onRightClickGridSquare(feature) new_win.on("loaded", function () { GT.popupWindowHandle.show(); + GT.popupWindowHandle.focus(); renderTooltipWindow(feature); }); new_win.on("close", function () @@ -7727,9 +7728,9 @@ function resetSearch() GT.lastSearchSelection = null; } -function showWorkedByCall(callsign, evt) +function showWorkedByCall(callsign, event) { - evt.preventDefault(); + event.preventDefault(); resetSearch(); GT.searchWB = callsign; @@ -7830,10 +7831,7 @@ function showWorkedBox(sortIndex, nextPage, redraw) bands[list[key].band] = list[key].band; modes[list[key].mode] = list[key].mode; var unconfirmedCallsKey = new UnconfirmedCallsKey(list[key].dxcc, list[key].band); - if ( - GT.unconfirmedCalls.has(unconfirmedCallsKey.key) && - list[key].confirmed - ) + if (GT.unconfirmedCalls.has(unconfirmedCallsKey.key) && list[key].confirmed) { GT.unconfirmedCalls.set(unconfirmedCallsKey.key, GT.unconfirmedCallsSentinel); } @@ -8447,6 +8445,7 @@ function showDXCCsBox() new_win.on("loaded", function () { GT.popupWindowHandle.show(); + GT.popupWindowHandle.focus(); renderTooltipWindowLogbook(GT.unconfirmedCalls.get(unconfirmedCallsKey.key)); }); new_win.on("close", function () diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index 7e9405e0..398bfb5e 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -120,11 +120,14 @@ function gtConnectChat() GT.gtChatSocket.onerror = function () { + this.close(); + GT.gtChatSocket = null; GT.gtState = ChatState.error; }; GT.gtChatSocket.onclose = function () { + GT.gtChatSocket = null; GT.gtState = ChatState.closed; }; } @@ -151,20 +154,20 @@ function closeGtSocket() { gtChatSendClose(); - if (GT.gtChatSocket.readyState != WebSocket.CLOSED) GT.gtChatSocket.close(); - - if (GT.gtChatSocket.readyState === WebSocket.CLOSED) - { - GT.gtChatSocket = null; - GT.gtState = ChatState.none; - } + GT.gtChatSocket.close(); + GT.gtChatSocket = null; + GT.gtState = ChatState.none; } else GT.gtState = ChatState.none; } function gtClosedSocket() { - GT.gtChatSocket = null; + if (GT.gtChatSocket != null) + { + GT.gtChatSocket.close(); + GT.gtChatSocket = null; + } GT.gtState = ChatState.none; } @@ -320,12 +323,6 @@ function gtChatRemoveCall(jsmesg) { delete GT.gtFlagPins[cid].ids[id]; } - else - { - console.log("drop: No such id in GT.gtFlagPins.ids:"); - console.log(jsmesg); - console.log(GT.gtFlagPins[cid].ids); - } if (Object.keys(GT.gtFlagPins[cid].ids).length == 0) { From 559a25f9b4bcb421d52c308ee2286603f1409794 Mon Sep 17 00:00:00 2001 From: Tag Date: Wed, 22 Feb 2023 16:55:04 -0800 Subject: [PATCH 25/36] lint fixes --- package.nw/lib/ol.js | 2 ++ package.nw/lib/roster.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/package.nw/lib/ol.js b/package.nw/lib/ol.js index b8bd07df..296a61c0 100644 --- a/package.nw/lib/ol.js +++ b/package.nw/lib/ol.js @@ -1,3 +1,5 @@ +/* eslint-disable */ + /*! For license information please see ol.js.LICENSE.txt */ !function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.ol=n():t.ol=n()}(self,(function(){return function(){var t,n={226:function(t,n){n.read=function(t,n,i,r,e){var o,s,u=8*e-r-1,a=(1<>1,f=-7,c=i?e-1:0,l=i?-1:1,v=t[n+c];for(c+=l,o=v&(1<<-f)-1,v>>=-f,f+=u;f>0;o=256*o+t[n+c],c+=l,f-=8);for(s=o&(1<<-f)-1,o>>=-f,f+=r;f>0;s=256*s+t[n+c],c+=l,f-=8);if(0===o)o=1-h;else{if(o===a)return s?NaN:1/0*(v?-1:1);s+=Math.pow(2,r),o-=h}return(v?-1:1)*s*Math.pow(2,o-r)},n.write=function(t,n,i,r,e,o){var s,u,a,h=8*o-e-1,f=(1<>1,l=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,v=r?0:o-1,d=r?1:-1,p=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(u=isNaN(n)?1:0,s=f):(s=Math.floor(Math.log(n)/Math.LN2),n*(a=Math.pow(2,-s))<1&&(s--,a*=2),(n+=s+c>=1?l/a:l*Math.pow(2,1-c))*a>=2&&(s++,a/=2),s+c>=f?(u=0,s=f):s+c>=1?(u=(n*a-1)*Math.pow(2,e),s+=c):(u=n*Math.pow(2,c-1)*Math.pow(2,e),s=0));e>=8;t[i+v]=255&u,v+=d,u/=256,e-=8);for(s=s<0;t[i+v]=255&s,v+=d,s/=256,h-=8);t[i+v-d]|=128*p}},875:function(t,n,i){"use strict";const r=i(692),e=Symbol("max"),o=Symbol("length"),s=Symbol("lengthCalculator"),u=Symbol("allowStale"),a=Symbol("maxAge"),h=Symbol("dispose"),f=Symbol("noDisposeOnSet"),c=Symbol("lruList"),l=Symbol("cache"),v=Symbol("updateAgeOnGet"),d=()=>1;const p=(t,n,i)=>{const r=t[l].get(n);if(r){const n=r.value;if(y(t,n)){if(w(t,r),!t[u])return}else i&&(t[v]&&(r.value.now=Date.now()),t[c].unshiftNode(r));return n.value}},y=(t,n)=>{if(!n||!n.maxAge&&!t[a])return!1;const i=Date.now()-n.now;return n.maxAge?i>n.maxAge:t[a]&&i>t[a]},m=t=>{if(t[o]>t[e])for(let n=t[c].tail;t[o]>t[e]&&null!==n;){const i=n.prev;w(t,n),n=i}},w=(t,n)=>{if(n){const i=n.value;t[h]&&t[h](i.key,i.value),t[o]-=i.length,t[l].delete(i.key),t[c].removeNode(n)}};class g{constructor(t,n,i,r,e){this.key=t,this.value=n,this.length=i,this.now=r,this.maxAge=e||0}}const b=(t,n,i,r)=>{let e=i.value;y(t,e)&&(w(t,i),t[u]||(e=void 0)),e&&n.call(r,e.value,e.key,t)};t.exports=class{constructor(t){if("number"==typeof t&&(t={max:t}),t||(t={}),t.max&&("number"!=typeof t.max||t.max<0))throw new TypeError("max must be a non-negative number");this[e]=t.max||1/0;const n=t.length||d;if(this[s]="function"!=typeof n?d:n,this[u]=t.stale||!1,t.maxAge&&"number"!=typeof t.maxAge)throw new TypeError("maxAge must be a number");this[a]=t.maxAge||0,this[h]=t.dispose,this[f]=t.noDisposeOnSet||!1,this[v]=t.updateAgeOnGet||!1,this.reset()}set max(t){if("number"!=typeof t||t<0)throw new TypeError("max must be a non-negative number");this[e]=t||1/0,m(this)}get max(){return this[e]}set allowStale(t){this[u]=!!t}get allowStale(){return this[u]}set maxAge(t){if("number"!=typeof t)throw new TypeError("maxAge must be a non-negative number");this[a]=t,m(this)}get maxAge(){return this[a]}set lengthCalculator(t){"function"!=typeof t&&(t=d),t!==this[s]&&(this[s]=t,this[o]=0,this[c].forEach((t=>{t.length=this[s](t.value,t.key),this[o]+=t.length}))),m(this)}get lengthCalculator(){return this[s]}get length(){return this[o]}get itemCount(){return this[c].length}rforEach(t,n){n=n||this;for(let i=this[c].tail;null!==i;){const r=i.prev;b(this,t,i,n),i=r}}forEach(t,n){n=n||this;for(let i=this[c].head;null!==i;){const r=i.next;b(this,t,i,n),i=r}}keys(){return this[c].toArray().map((t=>t.key))}values(){return this[c].toArray().map((t=>t.value))}reset(){this[h]&&this[c]&&this[c].length&&this[c].forEach((t=>this[h](t.key,t.value))),this[l]=new Map,this[c]=new r,this[o]=0}dump(){return this[c].map((t=>!y(this,t)&&{k:t.key,v:t.value,e:t.now+(t.maxAge||0)})).toArray().filter((t=>t))}dumpLru(){return this[c]}set(t,n,i){if((i=i||this[a])&&"number"!=typeof i)throw new TypeError("maxAge must be a number");const r=i?Date.now():0,u=this[s](n,t);if(this[l].has(t)){if(u>this[e])return w(this,this[l].get(t)),!1;const s=this[l].get(t).value;return this[h]&&(this[f]||this[h](t,s.value)),s.now=r,s.maxAge=i,s.value=n,this[o]+=u-s.length,s.length=u,this.get(t),m(this),!0}const v=new g(t,n,u,r,i);return v.length>this[e]?(this[h]&&this[h](t,n),!1):(this[o]+=v.length,this[c].unshift(v),this[l].set(t,this[c].head),m(this),!0)}has(t){if(!this[l].has(t))return!1;const n=this[l].get(t).value;return!y(this,n)}get(t){return p(this,t,!0)}peek(t){return p(this,t,!1)}pop(){const t=this[c].tail;return t?(w(this,t),t.value):null}del(t){w(this,this[l].get(t))}load(t){this.reset();const n=Date.now();for(let i=t.length-1;i>=0;i--){const r=t[i],e=r.e||0;if(0===e)this.set(r.k,r.v);else{const t=e-n;t>0&&this.set(r.k,r.v,t)}}}prune(){this[l].forEach(((t,n)=>p(this,n,!1)))}}},98:function(t,n,i){"use strict";t.exports=e;var r=i(226);function e(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}e.Varint=0,e.Fixed64=1,e.Bytes=2,e.Fixed32=5;var o=4294967296,s=1/o,u="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function a(t){return t.type===e.Bytes?t.readVarint()+t.pos:t.pos+1}function h(t,n,i){return i?4294967296*n+(t>>>0):4294967296*(n>>>0)+(t>>>0)}function f(t,n,i){var r=n<=16383?1:n<=2097151?2:n<=268435455?3:Math.floor(Math.log(n)/(7*Math.LN2));i.realloc(r);for(var e=i.pos-1;e>=t;e--)i.buf[e+r]=i.buf[e]}function c(t,n){for(var i=0;i>>8,t[i+2]=n>>>16,t[i+3]=n>>>24}function M(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16)+(t[n+3]<<24)}e.prototype={destroy:function(){this.buf=null},readFields:function(t,n,i){for(i=i||this.length;this.pos>3,o=this.pos;this.type=7&r,t(e,n,this),this.pos===o&&this.skip(r)}return n},readMessage:function(t,n){return this.readFields(t,n,this.readVarint()+this.pos)},readFixed32:function(){var t=b(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=M(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=b(this.buf,this.pos)+b(this.buf,this.pos+4)*o;return this.pos+=8,t},readSFixed64:function(){var t=b(this.buf,this.pos)+M(this.buf,this.pos+4)*o;return this.pos+=8,t},readFloat:function(){var t=r.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=r.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var n,i,r=this.buf;return n=127&(i=r[this.pos++]),i<128?n:(n|=(127&(i=r[this.pos++]))<<7,i<128?n:(n|=(127&(i=r[this.pos++]))<<14,i<128?n:(n|=(127&(i=r[this.pos++]))<<21,i<128?n:function(t,n,i){var r,e,o=i.buf;if(e=o[i.pos++],r=(112&e)>>4,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<3,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<10,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<17,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(127&e)<<24,e<128)return h(t,r,n);if(e=o[i.pos++],r|=(1&e)<<31,e<128)return h(t,r,n);throw new Error("Expected varint not more than 10 bytes")}(n|=(15&(i=r[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,n=this.pos;return this.pos=t,t-n>=12&&u?function(t,n,i){return u.decode(t.subarray(n,i))}(this.buf,n,t):function(t,n,i){var r="",e=n;for(;e239?4:a>223?3:a>191?2:1;if(e+f>i)break;1===f?a<128&&(h=a):2===f?128==(192&(o=t[e+1]))&&(h=(31&a)<<6|63&o)<=127&&(h=null):3===f?(o=t[e+1],s=t[e+2],128==(192&o)&&128==(192&s)&&((h=(15&a)<<12|(63&o)<<6|63&s)<=2047||h>=55296&&h<=57343)&&(h=null)):4===f&&(o=t[e+1],s=t[e+2],u=t[e+3],128==(192&o)&&128==(192&s)&&128==(192&u)&&((h=(15&a)<<18|(63&o)<<12|(63&s)<<6|63&u)<=65535||h>=1114112)&&(h=null)),null===h?(h=65533,f=1):h>65535&&(h-=65536,r+=String.fromCharCode(h>>>10&1023|55296),h=56320|1023&h),r+=String.fromCharCode(h),e+=f}return r}(this.buf,n,t)},readBytes:function(){var t=this.readVarint()+this.pos,n=this.buf.subarray(this.pos,t);return this.pos=t,n},readPackedVarint:function(t,n){if(this.type!==e.Bytes)return t.push(this.readVarint(n));var i=a(this);for(t=t||[];this.pos127;);else if(n===e.Bytes)this.pos=this.readVarint()+this.pos;else if(n===e.Fixed32)this.pos+=4;else{if(n!==e.Fixed64)throw new Error("Unimplemented type: "+n);this.pos+=8}},writeTag:function(t,n){this.writeVarint(t<<3|n)},realloc:function(t){for(var n=this.length||16;n268435455||t<0?function(t,n){var i,r;t>=0?(i=t%4294967296|0,r=t/4294967296|0):(r=~(-t/4294967296),4294967295^(i=~(-t%4294967296))?i=i+1|0:(i=0,r=r+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");n.realloc(10),function(t,n,i){i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos]=127&t}(i,0,n),function(t,n){var i=(7&t)<<4;if(n.buf[n.pos++]|=i|((t>>>=3)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;n.buf[n.pos++]=127&t}(r,n)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var n=this.pos;this.pos=function(t,n,i){for(var r,e,o=0;o55295&&r<57344){if(!e){r>56319||o+1===n.length?(t[i++]=239,t[i++]=191,t[i++]=189):e=r;continue}if(r<56320){t[i++]=239,t[i++]=191,t[i++]=189,e=r;continue}r=e-55296<<10|r-56320|65536,e=null}else e&&(t[i++]=239,t[i++]=191,t[i++]=189,e=null);r<128?t[i++]=r:(r<2048?t[i++]=r>>6|192:(r<65536?t[i++]=r>>12|224:(t[i++]=r>>18|240,t[i++]=r>>12&63|128),t[i++]=r>>6&63|128),t[i++]=63&r|128)}return i}(this.buf,t,this.pos);var i=this.pos-n;i>=128&&f(n,i,this),this.pos=n-1,this.writeVarint(i),this.pos+=i},writeFloat:function(t){this.realloc(4),r.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),r.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var n=t.length;this.writeVarint(n),this.realloc(n);for(var i=0;i=128&&f(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,n,i){this.writeTag(t,e.Bytes),this.writeRawMessage(n,i)},writePackedVarint:function(t,n){n.length&&this.writeMessage(t,c,n)},writePackedSVarint:function(t,n){n.length&&this.writeMessage(t,l,n)},writePackedBoolean:function(t,n){n.length&&this.writeMessage(t,p,n)},writePackedFloat:function(t,n){n.length&&this.writeMessage(t,v,n)},writePackedDouble:function(t,n){n.length&&this.writeMessage(t,d,n)},writePackedFixed32:function(t,n){n.length&&this.writeMessage(t,y,n)},writePackedSFixed32:function(t,n){n.length&&this.writeMessage(t,m,n)},writePackedFixed64:function(t,n){n.length&&this.writeMessage(t,w,n)},writePackedSFixed64:function(t,n){n.length&&this.writeMessage(t,g,n)},writeBytesField:function(t,n){this.writeTag(t,e.Bytes),this.writeBytes(n)},writeFixed32Field:function(t,n){this.writeTag(t,e.Fixed32),this.writeFixed32(n)},writeSFixed32Field:function(t,n){this.writeTag(t,e.Fixed32),this.writeSFixed32(n)},writeFixed64Field:function(t,n){this.writeTag(t,e.Fixed64),this.writeFixed64(n)},writeSFixed64Field:function(t,n){this.writeTag(t,e.Fixed64),this.writeSFixed64(n)},writeVarintField:function(t,n){this.writeTag(t,e.Varint),this.writeVarint(n)},writeSVarintField:function(t,n){this.writeTag(t,e.Varint),this.writeSVarint(n)},writeStringField:function(t,n){this.writeTag(t,e.Bytes),this.writeString(n)},writeFloatField:function(t,n){this.writeTag(t,e.Fixed32),this.writeFloat(n)},writeDoubleField:function(t,n){this.writeTag(t,e.Fixed64),this.writeDouble(n)},writeBooleanField:function(t,n){this.writeVarintField(t,Boolean(n))}}},72:function(t){t.exports=function(){"use strict";function t(t,r,e,o,s){!function t(i,r,e,o,s){for(;o>e;){if(o-e>600){var u=o-e+1,a=r-e+1,h=Math.log(u),f=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*f*(u-f)/u)*(a-u/2<0?-1:1);t(i,r,Math.max(e,Math.floor(r-a*f/u+c)),Math.min(o,Math.floor(r+(u-a)*f/u+c)),s)}var l=i[r],v=e,d=o;for(n(i,e,r),s(i[o],l)>0&&n(i,e,o);v0;)d--}0===s(i[e],l)?n(i,e,d):n(i,++d,o),d<=r&&(e=d+1),r<=d&&(o=d-1)}}(t,r,e||0,o||t.length-1,s||i)}function n(t,n,i){var r=t[n];t[n]=t[i],t[i]=r}function i(t,n){return tn?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,n,i){if(!i)return n.indexOf(t);for(var r=0;r=t.minX&&n.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function p(n,i,r,e,o){for(var s=[i,r];s.length;)if(!((r=s.pop())-(i=s.pop())<=e)){var u=i+Math.ceil((r-i)/e/2)*e;t(n,u,i,r,o),s.push(i,u,u,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var n=this.data,i=[];if(!v(t,n))return i;for(var r=this.toBBox,e=[];n;){for(var o=0;o=0&&e[n].children.length>this._maxEntries;)this._split(e,n),n--;this._adjustParentBBoxes(r,e,n)},r.prototype._split=function(t,n){var i=t[n],r=i.children.length,e=this._minEntries;this._chooseSplitAxis(i,e,r);var s=this._chooseSplitIndex(i,e,r),u=d(i.children.splice(s,i.children.length-s));u.height=i.height,u.leaf=i.leaf,o(i,this.toBBox),o(u,this.toBBox),n?t[n-1].children.push(u):this._splitRoot(i,u)},r.prototype._splitRoot=function(t,n){this.data=d([t,n]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,n,i){for(var r,e,o,u,a,h,c,l=1/0,v=1/0,d=n;d<=i-n;d++){var p=s(t,0,d,this.toBBox),y=s(t,d,i,this.toBBox),m=(e=p,o=y,u=void 0,a=void 0,h=void 0,c=void 0,u=Math.max(e.minX,o.minX),a=Math.max(e.minY,o.minY),h=Math.min(e.maxX,o.maxX),c=Math.min(e.maxY,o.maxY),Math.max(0,h-u)*Math.max(0,c-a)),w=f(p)+f(y);m=n;v--){var d=t.children[v];u(a,t.leaf?e(d):d),h+=c(a)}return h},r.prototype._adjustParentBBoxes=function(t,n,i){for(var r=i;r>=0;r--)u(n[r],t)},r.prototype._condense=function(t){for(var n=t.length-1,i=void 0;n>=0;n--)0===t[n].children.length?n>0?(i=t[n-1].children).splice(i.indexOf(t[n]),1):this.clear():o(t[n],this.toBBox)},r}()},760:function(t){var n=function(t){"use strict";var n,i=Object.prototype,r=i.hasOwnProperty,e="function"==typeof Symbol?Symbol:{},o=e.iterator||"@@iterator",s=e.asyncIterator||"@@asyncIterator",u=e.toStringTag||"@@toStringTag";function a(t,n,i){return Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[n]}try{a({},"")}catch(t){a=function(t,n,i){return t[n]=i}}function h(t,n,i,r){var e=n&&n.prototype instanceof y?n:y,o=Object.create(e.prototype),s=new T(r||[]);return o._invoke=function(t,n,i){var r=c;return function(e,o){if(r===v)throw new Error("Generator is already running");if(r===d){if("throw"===e)throw o;return P()}for(i.method=e,i.arg=o;;){var s=i.delegate;if(s){var u=O(s,i);if(u){if(u===p)continue;return u}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===c)throw r=d,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=v;var a=f(t,n,i);if("normal"===a.type){if(r=i.done?d:l,a.arg===p)continue;return{value:a.arg,done:i.done}}"throw"===a.type&&(r=d,i.method="throw",i.arg=a.arg)}}}(t,i,s),o}function f(t,n,i){try{return{type:"normal",arg:t.call(n,i)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var c="suspendedStart",l="suspendedYield",v="executing",d="completed",p={};function y(){}function m(){}function w(){}var g={};a(g,o,(function(){return this}));var b=Object.getPrototypeOf,x=b&&b(b(A([])));x&&x!==i&&r.call(x,o)&&(g=x);var M=w.prototype=y.prototype=Object.create(g);function _(t){["next","throw","return"].forEach((function(n){a(t,n,(function(t){return this._invoke(n,t)}))}))}function S(t,n){function i(e,o,s,u){var a=f(t[e],t,o);if("throw"!==a.type){var h=a.arg,c=h.value;return c&&"object"==typeof c&&r.call(c,"__await")?n.resolve(c.__await).then((function(t){i("next",t,s,u)}),(function(t){i("throw",t,s,u)})):n.resolve(c).then((function(t){h.value=t,s(h)}),(function(t){return i("throw",t,s,u)}))}u(a.arg)}var e;this._invoke=function(t,r){function o(){return new n((function(n,e){i(t,r,n,e)}))}return e=e?e.then(o,o):o()}}function O(t,i){var r=t.iterator[i.method];if(r===n){if(i.delegate=null,"throw"===i.method){if(t.iterator.return&&(i.method="return",i.arg=n,O(t,i),"throw"===i.method))return p;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var e=f(r,t.iterator,i.arg);if("throw"===e.type)return i.method="throw",i.arg=e.arg,i.delegate=null,p;var o=e.arg;return o?o.done?(i[t.resultName]=o.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=n),i.delegate=null,p):o:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,p)}function j(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function E(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function A(t){if(t){var i=t[o];if(i)return i.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var e=-1,s=function i(){for(;++e=0;--o){var s=this.tryEntries[o],u=s.completion;if("root"===s.tryLoc)return e("end");if(s.tryLoc<=this.prev){var a=r.call(s,"catchLoc"),h=r.call(s,"finallyLoc");if(a&&h){if(this.prev=0;--i){var e=this.tryEntries[i];if(e.tryLoc<=this.prev&&r.call(e,"finallyLoc")&&this.prev=0;--n){var i=this.tryEntries[n];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),E(i),p}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc===t){var r=i.completion;if("throw"===r.type){var e=r.arg;E(i)}return e}}throw new Error("illegal catch attempt")},delegateYield:function(t,i,r){return this.delegate={iterator:A(t),resultName:i,nextLoc:r},"next"===this.method&&(this.arg=n),p}},t}(t.exports);try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},617:function(t,n,i){const r=i(279);t.exports=function(t,n,i){const e=i&&i.debug||!1,o=i&&i.startIndex||0;e&&console.log("starting findTagByName with",n," and ",i);const s=r(t,`<${n}[ >]`,o);if(e&&console.log("start:",s),-1===s)return;const u=t.slice(s+n.length);let a=r(u,"[ /]"+n+">",0);const h=-1===a;h&&(a=r(u,"[ /]>",0));const f=s+n.length+a+1+(h?0:n.length)+1;if(e&&console.log("end:",f),-1===f)return;const c=t.slice(s,f);let l;return l=h?null:c.slice(c.indexOf(">")+1,c.lastIndexOf("<")),{inner:l,outer:c,start:s,end:f}}},51:function(t,n,i){const r=i(617);t.exports=function(t,n,i){const e=[],o=i&&i.debug||!1;let s,u=i&&i.startIndex||0;for(;s=r(t,n,{debug:o,startIndex:u});)u=s.end,e.push(s);return o&&console.log("findTagsByName found",e.length,"tags"),e}},802:function(t){t.exports=function(t,n,i){const r=i&&i.debug||!1;r&&console.log("getting "+n+" in "+t);const e="object"==typeof t?t.outer:t,o=`${n}\\="([^"]*)"`;r&&console.log("pattern:",o);const s=new RegExp(o).exec(e);if(r&&console.log("match:",s),s)return s[1]}},279:function(t){t.exports=function(t,n,i){const r=new RegExp(n).exec(t.slice(i));return r?i+r.index:-1}},518:function(t){"use strict";t.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}},692:function(t,n,i){"use strict";function r(t){var n=this;if(n instanceof r||(n=new r),n.tail=null,n.head=null,n.length=0,t&&"function"==typeof t.forEach)t.forEach((function(t){n.push(t)}));else if(arguments.length>0)for(var i=0,e=arguments.length;i1)i=n;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");r=this.head.next,i=this.head.value}for(var e=0;null!==r;e++)i=t(i,r.value,e),r=r.next;return i},r.prototype.reduceReverse=function(t,n){var i,r=this.tail;if(arguments.length>1)i=n;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");r=this.tail.prev,i=this.tail.value}for(var e=this.length-1;null!==r;e--)i=t(i,r.value,e),r=r.prev;return i},r.prototype.toArray=function(){for(var t=new Array(this.length),n=0,i=this.head;null!==i;n++)t[n]=i.value,i=i.next;return t},r.prototype.toArrayReverse=function(){for(var t=new Array(this.length),n=0,i=this.tail;null!==i;n++)t[n]=i.value,i=i.prev;return t},r.prototype.slice=function(t,n){(n=n||this.length)<0&&(n+=this.length),(t=t||0)<0&&(t+=this.length);var i=new r;if(nthis.length&&(n=this.length);for(var e=0,o=this.head;null!==o&&ethis.length&&(n=this.length);for(var e=this.length,o=this.tail;null!==o&&e>n;e--)o=o.prev;for(;null!==o&&e>t;e--,o=o.prev)i.push(o.value);return i},r.prototype.splice=function(t,n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,r=this.head;null!==r&&i>1)],n))<0?s=r+1:(u=r,a=!e);return a?s:~s}function p(t,n){return t>n?1:t=0}function m(t,n,i){var r=t.length;if(t[0]<=n)return 0;if(n<=t[r-1])return r-1;var e=void 0;if(i>0){for(e=1;e0?e-1:e:t[e-1]-n>>0,e=0;e0||i&&0===o)}))}function S(){return!0}function O(){return!1}function j(){}function E(t){var n,i,r,e=!1;return function(){var o=Array.prototype.slice.call(arguments);return e&&this===r&&x(o,i)||(e=!0,r=this,i=o,n=t.apply(this,arguments)),n}}function T(t){return function(){var n;try{n=t()}catch(t){return Promise.reject(t)}return n instanceof Promise?n:Promise.resolve(n)}()}var A="function"==typeof Object.assign?Object.assign:function(t,n){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var i=Object(t),r=1,e=arguments.length;r0)},n.prototype.removeEventListener=function(t,n){var i=this.O&&this.O[t];if(i){var r=i.indexOf(n);-1!==r&&(this._&&t in this._?(i[r]=j,++this._[t]):(i.splice(r,1),0===i.length&&delete this.O[t]))}},n}(v),L="change",z="error",R="contextmenu",F="click",G="dblclick",D="dragenter",q="dragover",U="drop",B="keydown",X="keypress",V="load",W="resize",Y="touchmove",Z="wheel";function $(t,n,i,r,e){if(r&&r!==t&&(i=i.bind(r)),e){var o=i;i=function(){t.removeEventListener(n,i),o.apply(this,arguments)}}var s={target:t,type:n,listener:i};return t.addEventListener(n,i),s}function K(t,n,i,r){return $(t,n,i,r,!0)}function H(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),P(t))}var J=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Q=function(t){function n(){var n=t.call(this)||this;return n.on=n.onInternal,n.once=n.onceInternal,n.un=n.unInternal,n.T=0,n}return J(n,t),n.prototype.changed=function(){++this.T,this.dispatchEvent(L)},n.prototype.getRevision=function(){return this.T},n.prototype.onInternal=function(t,n){if(Array.isArray(t)){for(var i=t.length,r=new Array(i),e=0;e0;)this.pop()},n.prototype.extend=function(t){for(var n=0,i=t.length;nt)throw new Error("Tile load sequence violation");this.state=t,this.changed()},n.prototype.load=function(){r()},n.prototype.getAlpha=function(t,n){if(!this.D)return 1;var i=this.q[t];if(i){if(-1===i)return 1}else i=n,this.q[t]=i;var r=n-i+1e3/60;return r>=this.D?1:yt(r/this.D)},n.prototype.inTransition=function(t){return!!this.D&&-1!==this.q[t]},n.prototype.endTransition=function(t){this.D&&(this.q[t]=-1)},n}(N),Mt=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_t=function(t){function n(n){var i=this,r=ct;return(i=t.call(this,n.tileCoord,r,{transition:n.transition,interpolate:n.interpolate})||this).U=n.loader,i.B=null,i.V=null,i.W=n.size||[256,256],i}return Mt(n,t),n.prototype.getSize=function(){return this.W},n.prototype.getData=function(){return this.B},n.prototype.getError=function(){return this.V},n.prototype.load=function(){if(this.state===ct||this.state===dt){this.state=lt,this.changed();var t=this;this.U().then((function(n){t.B=n,t.state=vt,t.changed()})).catch((function(n){t.V=n,t.state=dt,t.changed()}))}},n}(xt);function St(t,n){if(!t)throw new h(n)}var Ot=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function jt(t){return"function"==typeof t?t:(Array.isArray(t)?n=t:(St("function"==typeof t.getZIndex,41),n=[t]),function(){return n});var n}var Et=function(t){function n(n){var i=t.call(this)||this;if(i.on,i.once,i.un,i.$=void 0,i.K="geometry",i.H=null,i.tt=void 0,i.nt=null,i.addChangeListener(i.K,i.it),n)if("function"==typeof n.getSimplifiedGeometry){var r=n;i.setGeometry(r)}else{var e=n;i.setProperties(e)}return i}return Ot(n,t),n.prototype.clone=function(){var t=new n(this.hasProperties()?this.getProperties():null);t.setGeometryName(this.getGeometryName());var i=this.getGeometry();i&&t.setGeometry(i.clone());var r=this.getStyle();return r&&t.setStyle(r),t},n.prototype.getGeometry=function(){return this.get(this.K)},n.prototype.getId=function(){return this.$},n.prototype.getGeometryName=function(){return this.K},n.prototype.getStyle=function(){return this.H},n.prototype.getStyleFunction=function(){return this.tt},n.prototype.rt=function(){this.changed()},n.prototype.it=function(){this.nt&&(H(this.nt),this.nt=null);var t=this.getGeometry();t&&(this.nt=$(t,L,this.rt,this)),this.changed()},n.prototype.setGeometry=function(t){this.set(this.K,t)},n.prototype.setStyle=function(t){this.H=t,this.tt=t?jt(t):void 0,this.changed()},n.prototype.setId=function(t){this.$=t,this.changed()},n.prototype.setGeometryName=function(t){this.removeChangeListener(this.K,this.it),this.K=t,this.addChangeListener(this.K,this.it),this.it()},n}(et),Tt="XY",At="XYZ",Pt="XYM",Ct="XYZM",kt={RADIANS:"radians",DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"},It={9001:kt.METERS,9002:kt.FEET,9003:kt.USFEET,9101:kt.RADIANS,9102:kt.DEGREES};function Nt(t){return It[t]}var Lt={};Lt[kt.RADIANS]=6370997/(2*Math.PI),Lt[kt.DEGREES]=2*Math.PI*6370997/360,Lt[kt.FEET]=.3048,Lt[kt.METERS]=1,Lt[kt.USFEET]=1200/3937;var zt,Rt=kt,Ft="undefined"!=typeof navigator&&void 0!==navigator.userAgent?navigator.userAgent.toLowerCase():"",Gt=-1!==Ft.indexOf("firefox"),Dt=-1!==Ft.indexOf("safari")&&-1==Ft.indexOf("chrom"),qt=Dt&&!!(Ft.indexOf("version/15.4")>=0||Ft.match(/cpu (os|iphone os) 15_4 like mac os x/)),Ut=-1!==Ft.indexOf("webkit")&&-1==Ft.indexOf("edge"),Bt=-1!==Ft.indexOf("macintosh"),Xt="undefined"!=typeof devicePixelRatio?devicePixelRatio:1,Vt="undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,Wt="undefined"!=typeof Image&&Image.prototype.decode,Yt=function(){var t=!1;try{var n=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("_",null,n),window.removeEventListener("_",null,n)}catch(t){}return t}(),Zt=new Array(6);function $t(){return[1,0,0,1,0,0]}function Kt(t){return Jt(t,1,0,0,1,0,0)}function Ht(t,n){var i=t[0],r=t[1],e=t[2],o=t[3],s=t[4],u=t[5],a=n[0],h=n[1],f=n[2],c=n[3],l=n[4],v=n[5];return t[0]=i*a+e*h,t[1]=r*a+o*h,t[2]=i*f+e*c,t[3]=r*f+o*c,t[4]=i*l+e*v+s,t[5]=r*l+o*v+u,t}function Jt(t,n,i,r,e,o,s){return t[0]=n,t[1]=i,t[2]=r,t[3]=e,t[4]=o,t[5]=s,t}function Qt(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t}function tn(t,n){var i=n[0],r=n[1];return n[0]=t[0]*i+t[2]*r+t[4],n[1]=t[1]*i+t[3]*r+t[5],n}function nn(t,n){var i=Math.cos(n),r=Math.sin(n);return Ht(t,Jt(Zt,i,r,-r,i,0,0))}function rn(t,n,i){return Ht(t,Jt(Zt,n,0,0,i,0,0))}function en(t,n,i){return Jt(t,n,0,0,i,0,0)}function on(t,n,i){return Ht(t,Jt(Zt,1,0,0,1,n,i))}function sn(t,n,i,r,e,o,s,u){var a=Math.sin(o),h=Math.cos(o);return t[0]=r*h,t[1]=e*a,t[2]=-r*a,t[3]=e*h,t[4]=s*r*h-u*r*a+n,t[5]=s*e*a+u*e*h+i,t}function un(t,n){var i=an(n);St(0!==i,32);var r=n[0],e=n[1],o=n[2],s=n[3],u=n[4],a=n[5];return t[0]=s/i,t[1]=-e/i,t[2]=-o/i,t[3]=r/i,t[4]=(o*a-s*u)/i,t[5]=-(r*a-e*u)/i,t}function an(t){return t[0]*t[3]-t[1]*t[2]}function hn(t){var n="matrix("+t.join(", ")+")";if(Vt)return n;var i=zt||(zt=document.createElement("div"));return i.style.transform=n,i.style.transform}var fn=0,cn=1,ln=2,vn=4,dn=8,pn=16;function yn(t){for(var n=Sn(),i=0,r=t.length;ie&&(a|=vn),uo&&(a|=ln),a===fn&&(a=cn),a}function Sn(){return[1/0,1/0,-1/0,-1/0]}function On(t,n,i,r,e){return e?(e[0]=t,e[1]=n,e[2]=i,e[3]=r,e):[t,n,i,r]}function jn(t){return On(1/0,1/0,-1/0,-1/0,t)}function En(t,n){var i=t[0],r=t[1];return On(i,r,i,r,n)}function Tn(t,n,i,r,e){return Nn(jn(e),t,n,i,r)}function An(t,n){return t[0]==n[0]&&t[2]==n[2]&&t[1]==n[1]&&t[3]==n[3]}function Pn(t,n,i){return Math.abs(t[0]-n[0])t[2]&&(t[2]=n[2]),n[1]t[3]&&(t[3]=n[3]),t}function kn(t,n){n[0]t[2]&&(t[2]=n[0]),n[1]t[3]&&(t[3]=n[1])}function In(t,n){for(var i=0,r=n.length;in[0]?r[0]=t[0]:r[0]=n[0],t[1]>n[1]?r[1]=t[1]:r[1]=n[1],t[2]=n[0]&&t[1]<=n[3]&&t[3]>=n[1]}function Hn(t){return t[2]=s&&p<=a),r||!(o&vn)||e&vn||(r=(y=v-(l-a)*d)>=u&&y<=h),r||!(o&dn)||e&dn||(r=(p=l-(v-u)/d)>=s&&p<=a),r||!(o&pn)||e&pn||(r=(y=v-(l-s)*d)>=u&&y<=h)}return r}function ni(t,n,i,r){var e=[];if(r>1)for(var o=t[2]-t[0],s=t[3]-t[1],u=0;u=i[2])){var e=$n(i),o=Math.floor((r[0]-i[0])/e)*e;t[0]-=o,t[2]-=o}return t}function ri(t,n){if(n.canWrapX()){var i=n.getExtent();if(!isFinite(t[0])||!isFinite(t[2]))return[[i[0],t[1],i[2],t[3]]];ii(t,n);var r=$n(i);if($n(t)>r)return[[i[0],t[1],i[2],t[3]]];if(t[0]i[2])return[[t[0],t[1],i[2],t[3]],[i[0],t[1],t[2]-r,t[3]]]}return[t]}var ei=function(){function t(t){this.et=t.code,this.ot=t.units,this.st=void 0!==t.extent?t.extent:null,this.ut=void 0!==t.worldExtent?t.worldExtent:null,this.ht=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.ft=void 0!==t.global&&t.global,this.ct=!(!this.ft||!this.st),this.lt=t.getPointResolution,this.vt=null,this.dt=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.ct},t.prototype.getCode=function(){return this.et},t.prototype.getExtent=function(){return this.st},t.prototype.getUnits=function(){return this.ot},t.prototype.getMetersPerUnit=function(){return this.dt||Lt[this.ot]},t.prototype.getWorldExtent=function(){return this.ut},t.prototype.getAxisOrientation=function(){return this.ht},t.prototype.isGlobal=function(){return this.ft},t.prototype.setGlobal=function(t){this.ft=t,this.ct=!(!t||!this.st)},t.prototype.getDefaultTileGrid=function(){return this.vt},t.prototype.setDefaultTileGrid=function(t){this.vt=t},t.prototype.setExtent=function(t){this.st=t,this.ct=!(!this.ft||!t)},t.prototype.setWorldExtent=function(t){this.ut=t},t.prototype.setGetPointResolution=function(t){this.lt=t},t.prototype.getPointResolutionFunc=function(){return this.lt},t}();function oi(t,n,i){return Math.min(Math.max(t,n),i)}var si="cosh"in Math?Math.cosh:function(t){var n=Math.exp(t);return(n+1/n)/2},ui="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function ai(t,n,i,r,e,o){var s=e-i,u=o-r;if(0!==s||0!==u){var a=((t-i)*s+(n-r)*u)/(s*s+u*u);a>1?(i=e,r=o):a>0&&(i+=s*a,r+=u*a)}return hi(t,n,i,r)}function hi(t,n,i,r){var e=i-t,o=r-n;return e*e+o*o}function fi(t){for(var n=t.length,i=0;ie&&(e=s,r=o)}if(0===e)return null;var u=t[r];t[r]=t[i],t[i]=u;for(var a=i+1;a=0;l--){c[l]=t[l][n]/t[l][l];for(var v=l-1;v>=0;v--)t[v][n]-=t[v][l]*c[l]}return c}function ci(t){return 180*t/Math.PI}function li(t){return t*Math.PI/180}function vi(t,n){var i=t%n;return i*n<0?i+n:i}function di(t,n,i){return t+i*(n-t)}function pi(t,n){var i=Math.pow(10,n);return Math.round(t*i)/i}function yi(t,n){return Math.round(pi(t,n))}function mi(t,n){return Math.floor(pi(t,n))}function wi(t,n){return Math.ceil(pi(t,n))}var gi=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),bi=6378137,xi=Math.PI*bi,Mi=[-xi,-xi,xi,xi],_i=[-180,-85,180,85],Si=bi*Math.log(Math.tan(Math.PI/2)),Oi=function(t){function n(n){return t.call(this,{code:n,units:Rt.METERS,extent:Mi,global:!0,worldExtent:_i,getPointResolution:function(t,n){return t/si(n[1]/bi)}})||this}return gi(n,t),n}(ei),ji=[new Oi("EPSG:3857"),new Oi("EPSG:102100"),new Oi("EPSG:102113"),new Oi("EPSG:900913"),new Oi("http://www.opengis.net/def/crs/EPSG/0/3857"),new Oi("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Ei(t,n,i){var r=t.length,e=i>1?i:2,o=n;void 0===o&&(o=e>2?t.slice():new Array(r));for(var s=0;sSi?u=Si:u<-Si&&(u=-Si),o[s+1]=u}return o}function Ti(t,n,i){var r=t.length,e=i>1?i:2,o=n;void 0===o&&(o=e>2?t.slice():new Array(r));for(var s=0;sn?r:new Array(1+n-e).join("0")+r}function Xi(t,n){for(var i=(""+t).split("."),r=(""+n).split("."),e=0;es)return 1;if(s>o)return-1}return 0}function Vi(t,n){return t[0]+=+n[0],t[1]+=+n[1],t}function Wi(t,n){var i=n.getRadius(),r=n.getCenter(),e=r[0],o=r[1],s=t[0]-e,u=t[1]-o;0===s&&0===u&&(s=1);var a=Math.sqrt(s*s+u*u);return[e+i*s/a,o+i*u/a]}function Yi(t,n){var i,r,e=t[0],o=t[1],s=n[0],u=n[1],a=s[0],h=s[1],f=u[0],c=u[1],l=f-a,v=c-h,d=0===l&&0===v?0:(l*(e-a)+v*(o-h))/(l*l+v*v||0);return d<=0?(i=a,r=h):d>=1?(i=f,r=c):(i=a+d*l,r=h+d*v),[i,r]}function Zi(t,n,i){var r=vi(n+180,360)-180,e=Math.abs(3600*r),o=i||0,s=Math.pow(10,o),u=Math.floor(e/3600),a=Math.floor((e-3600*u)/60),h=e-3600*u-60*a;return(h=Math.ceil(h*s)/s)>=60&&(h=0,a+=1),a>=60&&(a=0,u+=1),u+"° "+Bi(a,2)+"′ "+Bi(h,2,o)+"″"+(0==r?"":" "+t.charAt(r<0?1:0))}function $i(t,n,i){return t?n.replace("{x}",t[0].toFixed(i)).replace("{y}",t[1].toFixed(i)):""}function Ki(t,n){for(var i=!0,r=t.length-1;r>=0;--r)if(t[r]!=n[r]){i=!1;break}return i}function Hi(t,n){var i=Math.cos(n),r=Math.sin(n),e=t[0]*i-t[1]*r,o=t[1]*i+t[0]*r;return t[0]=e,t[1]=o,t}function Ji(t,n){return t[0]*=n,t[1]*=n,t}function Qi(t,n){var i=t[0]-n[0],r=t[1]-n[1];return i*i+r*r}function tr(t,n){return Math.sqrt(Qi(t,n))}function nr(t,n){return Qi(t,Yi(t,n))}function ir(t,n){return $i(t,"{x}, {y}",n)}function rr(t,n){if(n.canWrapX()){var i=$n(n.getExtent()),r=er(t,n,i);r&&(t[0]-=r*i)}return t}function er(t,n,i){var r=n.getExtent(),e=0;if(n.canWrapX()&&(t[0]r[2])){var o=i||$n(r);e=Math.floor((t[0]-r[0])/o)}return e}var or=6371008.8;function sr(t,n,i){var r=i||or,e=li(t[1]),o=li(n[1]),s=(o-e)/2,u=li(n[0]-t[0])/2,a=Math.sin(s)*Math.sin(s)+Math.sin(u)*Math.sin(u)*Math.cos(e)*Math.cos(o);return 2*r*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))}function ur(t,n){for(var i=0,r=0,e=t.length;r=h?n[u+f]:a[f];return s}}function Mr(t,n,i,r){var e=yr(t),o=yr(n);qi(e,o,xr(i)),qi(o,e,xr(r))}function _r(t,n){return cr(),Er(t,"EPSG:4326",void 0!==n?n:"EPSG:3857")}function Sr(t,n){if(t===n)return!0;var i=t.getUnits()===n.getUnits();return(t.getCode()===n.getCode()||Or(t,n)===lr)&&i}function Or(t,n){var i=Ui(t.getCode(),n.getCode());return i||(i=vr),i}function jr(t,n){return Or(yr(t),yr(n))}function Er(t,n,i){return jr(n,i)(t,void 0,t.length)}function Tr(t,n,i,r){return ni(t,jr(n,i),void 0,r)}var Ar=null;function Pr(t){Ar=yr(t)}function Cr(){return Ar}function kr(t,n){return Ar?Er(t,n,Ar):t}function Ir(t,n){return Ar?Er(t,Ar,n):(fr&&!Ki(t,[0,0])&&t[0]>=-180&&t[0]<=180&&t[1]>=-90&&t[1]<=90&&(fr=!1,console.warn("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),t)}function Nr(t,n){return Ar?Tr(t,n,Ar):t}function Lr(t,n){return Ar?Tr(t,Ar,n):t}function zr(t,n){if(!Ar)return t;var i=yr(n).getUnits(),r=Ar.getUnits();return i&&r?t*Lt[i]/Lt[r]:t}function Rr(t,n){if(!Ar)return t;var i=yr(n).getUnits(),r=Ar.getUnits();return i&&r?t*Lt[r]/Lt[i]:t}function Fr(t,n,i){return function(r){var e,o;if(t.canWrapX()){var s=t.getExtent(),u=$n(s);(o=er(r=r.slice(0),t,u))&&(r[0]=r[0]-o*u),r[0]=oi(r[0],s[0],s[2]),r[1]=oi(r[1],s[1],s[3]),e=i(r)}else e=i(r);return o&&n.canWrapX()&&(e[0]+=o*$n(n.getExtent())),e}}function Gr(){wr(ji),wr(Ni),gr(Ni,ji,Ei,Ti)}function Dr(t,n,i,r,e,o){for(var s=o||[],u=0,a=n;a1)u=i;else{if(l>0){for(var v=0;ve&&(e=h),o=u,s=a}return e}function Qr(t,n,i,r,e){for(var o=0,s=i.length;o0;){for(var c=h.pop(),l=h.pop(),v=0,d=t[l],p=t[l+1],y=t[c],m=t[c+1],w=l+r;wv&&(f=w,v=g)}v>e&&(a[(f-n)/r]=1,l+re&&(o[s++]=h,o[s++]=f,u=h,a=f);return h==u&&f==a||(o[s++]=h,o[s++]=f),s}function ce(t,n){return n*Math.round(t/n)}function le(t,n,i,r,e,o,s){if(n==i)return s;var u,a,h=ce(t[n],e),f=ce(t[n+1],e);n+=r,o[s++]=h,o[s++]=f;do{if(u=ce(t[n],e),a=ce(t[n+1],e),(n+=r)==i)return o[s++]=u,o[s++]=a,s}while(u==h&&a==f);for(;n0&&p>v)&&(d<0&&y0&&y>d)?(u=c,a=l):(o[s++]=u,o[s++]=a,h=u,f=a,u=c,a=l)}}return o[s++]=u,o[s++]=a,s}function ve(t,n,i,r,e,o,s,u){for(var a=0,h=i.length;ao&&(h-u)*(o-a)-(e-u)*(f-a)>0&&s++:f<=o&&(h-u)*(o-a)-(e-u)*(f-a)<0&&s--,u=h,a=f}return 0!==s}function Ee(t,n,i,r,e,o){if(0===i.length)return!1;if(!je(t,n,i[0],r,e,o))return!1;for(var s=1,u=i.length;sx&&Ee(t,n,i,r,h=(f+c)/2,d)&&(b=h,x=M),f=c}return isNaN(b)&&(b=e[o]),s?(s.push(b,d,x),s):[b,d,x]}function Pe(t,n,i,r,e){for(var o=[],s=0,u=i.length;s=e[0]&&o[2]<=e[2]||(o[1]>=e[1]&&o[3]<=e[3]||Ce(t,n,i,r,(function(t,n){return ti(e,t,n)})))))}function Ie(t,n,i,r,e){for(var o=0,s=i.length;o0}function Ge(t,n,i,r,e){for(var o=void 0!==e&&e,s=0,u=i.length;s0&&this.Zt[i+2]>t;)i-=3;var r=this.Zt[n+2]-this.Zt[i+2];if(r<1e3/60)return!1;var e=this.Zt[n]-this.Zt[i],o=this.Zt[n+1]-this.Zt[i+1];return this.$t=Math.atan2(o,e),this.Kt=Math.sqrt(e*e+o*o)/r,this.Kt>this.Wt},t.prototype.getDistance=function(){return(this.Wt-this.Kt)/this.Vt},t.prototype.getAngle=function(){return this.$t},t}(),No=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,Lo=/^([a-z]*)$|^hsla?\(.*\)$/i;function zo(t){return"string"==typeof t?t:qo(t)}function Ro(t){var n=document.createElement("div");if(n.style.color=t,""!==n.style.color){document.body.appendChild(n);var i=getComputedStyle(n).color;return document.body.removeChild(n),i}return""}var Fo=function(){var t={},n=0;return function(i){var r;if(t.hasOwnProperty(i))r=t[i];else{if(n>=1024){var e=0;for(var o in t)0==(3&e++)&&(delete t[o],--n)}r=function(t){var n,i,r,e,o;Lo.exec(t)&&(t=Ro(t));if(No.exec(t)){var s=t.length-1,u=void 0;u=s<=4?1:2;var a=4===s||8===s;n=parseInt(t.substr(1+0*u,u),16),i=parseInt(t.substr(1+1*u,u),16),r=parseInt(t.substr(1+2*u,u),16),e=a?parseInt(t.substr(1+3*u,u),16):255,1==u&&(n=(n<<4)+n,i=(i<<4)+i,r=(r<<4)+r,a&&(e=(e<<4)+e)),o=[n,i,r,e/255]}else 0==t.indexOf("rgba(")?Do(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),Do(o)):St(!1,14);return o}(i),t[i]=r,++n}return r}}();function Go(t){return Array.isArray(t)?t:Fo(t)}function Do(t){return t[0]=oi(t[0]+.5|0,0,255),t[1]=oi(t[1]+.5|0,0,255),t[2]=oi(t[2]+.5|0,0,255),t[3]=oi(t[3],0,1),t}function qo(t){var n=t[0];n!=(0|n)&&(n=n+.5|0);var i=t[1];i!=(0|i)&&(i=i+.5|0);var r=t[2];return r!=(0|r)&&(r=r+.5|0),"rgba("+n+","+i+","+r+","+(void 0===t[3]?1:Math.round(100*t[3])/100)+")"}function Uo(t){return Lo.test(t)&&(t=Ro(t)),No.test(t)||0===t.indexOf("rgba(")||0===t.indexOf("rgb(")}var Bo=function(){function t(){this.Ht={},this.Jt=0,this.Qt=32}return t.prototype.clear=function(){this.Ht={},this.Jt=0},t.prototype.canExpireCache=function(){return this.Jt>this.Qt},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var n in this.Ht){var i=this.Ht[n];0!=(3&t++)||i.hasListener()||(delete this.Ht[n],--this.Jt)}}},t.prototype.get=function(t,n,i){var r=Xo(t,n,i);return r in this.Ht?this.Ht[r]:null},t.prototype.set=function(t,n,i,r){var e=Xo(t,n,i);this.Ht[e]=r,++this.Jt},t.prototype.setSize=function(t){this.Qt=t,this.expire()},t}();function Xo(t,n,i){return n+":"+t+":"+(i?zo(i):"null")}var Vo=Bo,Wo=new Bo,Yo="opacity",Zo="visible",$o="extent",Ko="zIndex",Ho="maxResolution",Jo="minResolution",Qo="maxZoom",ts="minZoom",ns="source",is="map",rs=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),es=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un,i.tn=n.background;var r=A({},n);return"object"==typeof n.properties&&(delete r.properties,A(r,n.properties)),r[Yo]=void 0!==n.opacity?n.opacity:1,St("number"==typeof r[Yo],64),r[Zo]=void 0===n.visible||n.visible,r[Ko]=n.zIndex,r[Ho]=void 0!==n.maxResolution?n.maxResolution:1/0,r[Jo]=void 0!==n.minResolution?n.minResolution:0,r[ts]=void 0!==n.minZoom?n.minZoom:-1/0,r[Qo]=void 0!==n.maxZoom?n.maxZoom:1/0,i.nn=void 0!==r.className?r.className:"ol-layer",delete r.className,i.setProperties(r),i.rn=null,i}return rs(n,t),n.prototype.getBackground=function(){return this.tn},n.prototype.getClassName=function(){return this.nn},n.prototype.getLayerState=function(t){var n=this.rn||{layer:this,managed:void 0===t||t},i=this.getZIndex();return n.opacity=oi(Math.round(100*this.getOpacity())/100,0,1),n.visible=this.getVisible(),n.extent=this.getExtent(),n.zIndex=void 0!==i||n.managed?i:1/0,n.maxResolution=this.getMaxResolution(),n.minResolution=Math.max(this.getMinResolution(),0),n.minZoom=this.getMinZoom(),n.maxZoom=this.getMaxZoom(),this.rn=n,n},n.prototype.getLayersArray=function(t){return r()},n.prototype.getLayerStatesArray=function(t){return r()},n.prototype.getExtent=function(){return this.get($o)},n.prototype.getMaxResolution=function(){return this.get(Ho)},n.prototype.getMinResolution=function(){return this.get(Jo)},n.prototype.getMinZoom=function(){return this.get(ts)},n.prototype.getMaxZoom=function(){return this.get(Qo)},n.prototype.getOpacity=function(){return this.get(Yo)},n.prototype.getSourceState=function(){return r()},n.prototype.getVisible=function(){return this.get(Zo)},n.prototype.getZIndex=function(){return this.get(Ko)},n.prototype.setBackground=function(t){this.tn=t,this.changed()},n.prototype.setExtent=function(t){this.set($o,t)},n.prototype.setMaxResolution=function(t){this.set(Ho,t)},n.prototype.setMinResolution=function(t){this.set(Jo,t)},n.prototype.setMaxZoom=function(t){this.set(Qo,t)},n.prototype.setMinZoom=function(t){this.set(ts,t)},n.prototype.setOpacity=function(t){St("number"==typeof t,64),this.set(Yo,t)},n.prototype.setVisible=function(t){this.set(Zo,t)},n.prototype.setZIndex=function(t){this.set(Ko,t)},n.prototype.disposeInternal=function(){this.rn&&(this.rn.layer=null,this.rn=null),t.prototype.disposeInternal.call(this)},n}(et),os="prerender",ss="postrender",us="precompose",as="postcompose",hs="rendercomplete",fs=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function cs(t,n){if(!t.visible)return!1;var i=n.resolution;if(i=t.maxResolution)return!1;var r=n.zoom;return r>t.minZoom&&r<=t.maxZoom}var ls=function(t){function n(n){var i=this,r=A({},n);delete r.source,(i=t.call(this,r)||this).on,i.once,i.un,i.en=null,i.sn=null,i.an=null,i.hn=null,i.rendered=!1,n.render&&(i.render=n.render),n.map&&i.setMap(n.map),i.addChangeListener(ns,i.fn);var e=n.source?n.source:null;return i.setSource(e),i}return fs(n,t),n.prototype.getLayersArray=function(t){var n=t||[];return n.push(this),n},n.prototype.getLayerStatesArray=function(t){var n=t||[];return n.push(this.getLayerState()),n},n.prototype.getSource=function(){return this.get(ns)||null},n.prototype.getRenderSource=function(){return this.getSource()},n.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():"undefined"},n.prototype.cn=function(){this.changed()},n.prototype.fn=function(){this.an&&(H(this.an),this.an=null);var t=this.getSource();t&&(this.an=$(t,L,this.cn,this)),this.changed()},n.prototype.getFeatures=function(t){return this.hn?this.hn.getFeatures(t):new Promise((function(t){return t([])}))},n.prototype.getData=function(t){return this.hn&&this.rendered?this.hn.getData(t):null},n.prototype.render=function(t,n){var i=this.getRenderer();if(i.prepareFrame(t))return this.rendered=!0,i.renderFrame(t,n)},n.prototype.unrender=function(){this.rendered=!1},n.prototype.setMapInternal=function(t){t||this.unrender(),this.set(is,t)},n.prototype.getMapInternal=function(){return this.get(is)},n.prototype.setMap=function(t){this.en&&(H(this.en),this.en=null),t||this.changed(),this.sn&&(H(this.sn),this.sn=null),t&&(this.en=$(t,us,(function(t){var n=t.frameState.layerStatesArray,i=this.getLayerState(!1);St(!n.some((function(t){return t.layer===i.layer})),67),n.push(i)}),this),this.sn=$(this,L,t.render,t),this.changed())},n.prototype.setSource=function(t){this.set(ns,t)},n.prototype.getRenderer=function(){return this.hn||(this.hn=this.createRenderer()),this.hn},n.prototype.hasRenderer=function(){return!!this.hn},n.prototype.createRenderer=function(){return null},n.prototype.disposeInternal=function(){this.hn&&(this.hn.dispose(),delete this.hn),this.setSource(null),t.prototype.disposeInternal.call(this)},n}(es),vs=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function ds(t,n){Wo.expire()}var ps=function(t){function n(n){var i=t.call(this)||this;return i.vn=n,i}return vs(n,t),n.prototype.dispatchRenderEvent=function(t,n){r()},n.prototype.calculateMatrices2D=function(t){var n=t.viewState,i=t.coordinateToPixelTransform,r=t.pixelToCoordinateTransform;sn(i,t.size[0]/2,t.size[1]/2,1/n.resolution,-1/n.resolution,-n.rotation,-n.center[0],-n.center[1]),un(r,i)},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e,o,s,u){var a,h=n.viewState;function f(t,n,i,r){return e.call(o,n,t?i:null,r)}var c=h.projection,l=rr(t.slice(),c),v=[[0,0]];if(c.canWrapX()&&r){var d=$n(c.getExtent());v.push([-d,0],[d,0])}for(var p=n.layerStatesArray,y=p.length,m=[],w=[],g=0;g=0;--b){var x=p[b],M=x.layer;if(M.hasRenderer()&&cs(x,h)&&s.call(u,M)){var _=M.getRenderer(),S=M.getSource();if(_&&S){var O=S.getWrapX()?l:t,j=f.bind(null,x.managed);w[0]=O[0]+v[g][0],w[1]=O[1]+v[g][1],a=_.forEachFeatureAtCoordinate(w,n,i,j,m)}if(a)return a}}if(0!==m.length){var E=1/m.length;return m.forEach((function(t,n){return t.distanceSq+=n*E})),m.sort((function(t,n){return t.distanceSq-n.distanceSq})),m.some((function(t){return a=t.callback(t.feature,t.layer,t.geometry)})),a}},n.prototype.forEachLayerAtPixel=function(t,n,i,e,o){return r()},n.prototype.hasFeatureAtCoordinate=function(t,n,i,r,e,o){return void 0!==this.forEachFeatureAtCoordinate(t,n,i,r,S,this,e,o)},n.prototype.getMap=function(){return this.vn},n.prototype.renderFrame=function(t){r()},n.prototype.scheduleExpireIconCache=function(t){Wo.canExpireCache()&&t.postRenderFunctions.push(ds)},n}(v),ys=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ms=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.inversePixelTransform=i,o.frameState=r,o.context=e,o}return ys(n,t),n}(c),ws="ol-hidden",gs="ol-selectable",bs="ol-unselectable",xs="ol-unsupported",Ms="ol-control",_s="ol-collapsed",Ss=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),Os=["style","variant","weight","size","lineHeight","family"],js=function(t){var n=t.match(Ss);if(!n)return null;for(var i={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},r=0,e=Os.length;r=0;--o)r[o].renderDeclutter(t);Po(this.pn,this.yn),this.dispatchRenderEvent(as,t),this.mn||(this.pn.style.display="",this.mn=!0),this.scheduleExpireIconCache(t)}else this.mn&&(this.pn.style.display="none",this.mn=!1)},n.prototype.forEachLayerAtPixel=function(t,n,i,r,e){for(var o=n.viewState,s=n.layerStatesArray,u=s.length-1;u>=0;--u){var a=s[u],h=a.layer;if(h.hasRenderer()&&cs(a,o)&&e(h)){var f=h.getRenderer().getDataAtPixel(t,n,i);if(f){var c=r(h,f);if(c)return c}}}},n}(ps),Js=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Qs=function(t){function n(n,i){var r=t.call(this,n)||this;return r.layer=i,r}return Js(n,t),n}(c),tu="layers",nu=function(t){function n(n){var i=this,r=n||{},e=A({},r);delete e.layers;var o=r.layers;return(i=t.call(this,e)||this).on,i.once,i.un,i.wn=[],i.gn={},i.addChangeListener(tu,i.bn),o?Array.isArray(o)?o=new ft(o.slice(),{unique:!0}):St("function"==typeof o.getArray,43):o=new ft(void 0,{unique:!0}),i.setLayers(o),i}return Js(n,t),n.prototype.xn=function(){this.changed()},n.prototype.bn=function(){this.wn.forEach(H),this.wn.length=0;var t=this.getLayers();for(var n in this.wn.push($(t,ot,this.Mn,this),$(t,st,this._n,this)),this.gn)this.gn[n].forEach(H);P(this.gn);for(var i=t.getArray(),r=0,e=i.length;rthis.In||Math.abs(t.clientY-this.Nn.clientY)>this.In},n.prototype.disposeInternal=function(){this.Dn&&(H(this.Dn),this.Dn=null),this.pn.removeEventListener(Y,this.Un),this.Rn&&(H(this.Rn),this.Rn=null),this.kn.forEach(H),this.kn.length=0,this.pn=null,t.prototype.disposeInternal.call(this)},n}(N),vu="postrender",du="movestart",pu="moveend",yu="loadstart",mu="loadend",wu="layergroup",gu="size",bu="target",xu="view",Mu=1/0,_u=function(){function t(t,n){this.Kn=t,this.Hn=n,this.Jn=[],this.Qn=[],this.ti={}}return t.prototype.clear=function(){this.Jn.length=0,this.Qn.length=0,P(this.ti)},t.prototype.dequeue=function(){var t=this.Jn,n=this.Qn,i=t[0];1==t.length?(t.length=0,n.length=0):(t[0]=t.pop(),n[0]=n.pop(),this.ni(0));var r=this.Hn(i);return delete this.ti[r],i},t.prototype.enqueue=function(t){St(!(this.Hn(t)in this.ti),31);var n=this.Kn(t);return n!=Mu&&(this.Jn.push(t),this.Qn.push(n),this.ti[this.Hn(t)]=!0,this.ii(0,this.Jn.length-1),!0)},t.prototype.getCount=function(){return this.Jn.length},t.prototype.ri=function(t){return 2*t+1},t.prototype.ei=function(t){return 2*t+2},t.prototype.oi=function(t){return t-1>>1},t.prototype.si=function(){var t;for(t=(this.Jn.length>>1)-1;t>=0;t--)this.ni(t)},t.prototype.isEmpty=function(){return 0===this.Jn.length},t.prototype.isKeyQueued=function(t){return t in this.ti},t.prototype.isQueued=function(t){return this.isKeyQueued(this.Hn(t))},t.prototype.ni=function(t){for(var n=this.Jn,i=this.Qn,r=n.length,e=n[t],o=i[t],s=t;t>1;){var u=this.ri(t),a=this.ei(t),h=at;){var s=this.oi(n);if(!(r[s]>o))break;i[n]=i[s],r[n]=r[s],n=s}i[n]=e,r[n]=o},t.prototype.reprioritize=function(){var t,n,i,r=this.Kn,e=this.Jn,o=this.Qn,s=0,u=e.length;for(n=0;n0;)r=(i=this.dequeue()[0]).getKey(),i.getState()!==ct||r in this.fi||(this.fi[r]=!0,++this.hi,++e,i.load())},n}(_u);function ju(t,n,i,r,e){if(!t||!(i in t.wantedTiles))return Mu;if(!t.wantedTiles[i][n.getKey()])return Mu;var o=t.viewState.center,s=r[0]-o[0],u=r[1]-o[1];return 65536*Math.log(e)+Math.sqrt(s*s+u*u)/e}var Eu=0,Tu=1,Au={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"},Pu=256;function Cu(t,n,i){return function(r,e,o,s,u){if(r){if(!e&&!n)return r;var a=n?0:o[0]*e,h=n?0:o[1]*e,f=u?u[0]:0,c=u?u[1]:0,l=t[0]+a/2+f,v=t[2]-a/2+f,d=t[1]+h/2+c,p=t[3]-h/2+c;l>v&&(v=l=(v+l)/2),d>p&&(p=d=(p+d)/2);var y=oi(r[0],l,v),m=oi(r[1],d,p);if(s&&i&&e){var w=30*e;y+=-w*Math.log(1+Math.max(0,l-r[0])/w)+w*Math.log(1+Math.max(0,r[0]-v)/w),m+=-w*Math.log(1+Math.max(0,d-r[1])/w)+w*Math.log(1+Math.max(0,r[1]-p)/w)}return[y,m]}}}function ku(t){return t}function Iu(t,n,i,r){var e=$n(n)/i[0],o=Vn(n)/i[1];return r?Math.min(t,Math.max(e,o)):Math.min(t,Math.min(e,o))}function Nu(t,n,i){var r=Math.min(t,n);return r*=Math.log(1+50*Math.max(0,t/n-1))/50+1,i&&(r=Math.max(r,i),r/=Math.log(1+50*Math.max(0,i/t-1))/50+1),oi(r,i/2,2*n)}function Lu(t,n,i,r){return function(e,o,s,u){if(void 0!==e){var a=t[0],h=t[t.length-1],f=i?Iu(a,i,s,r):a;if(u)return void 0===n||n?Nu(e,f,h):oi(e,h,f);var c=Math.min(f,e),l=Math.floor(m(t,c,o));return t[l]>f&&l1&&"function"==typeof arguments[i-1]&&(n=arguments[i-1],--i);for(var r=0;r0},n.prototype.getInteracting=function(){return this.ci[Tu]>0},n.prototype.cancelAnimations=function(){var t;this.setHint(Eu,-this.ci[Eu]);for(var n=0,i=this.li.length;n=0;--i){for(var r=this.li[i],e=!0,o=0,s=r.length;o0?a/u.duration:1;h>=1?(u.complete=!0,h=1):e=!1;var f=u.easing(h);if(u.sourceCenter){var c=u.sourceCenter[0],l=u.sourceCenter[1],v=u.targetCenter[0],d=u.targetCenter[1];this.bi=u.targetCenter;var p=c+f*(v-c),y=l+f*(d-l);this.mi=[p,y]}if(u.sourceResolution&&u.targetResolution){var m=1===f?u.targetResolution:u.sourceResolution+f*(u.targetResolution-u.sourceResolution);if(u.anchor){var w=this.Ni(this.getRotation()),g=this.Ci.resolution(m,0,w,!0);this.mi=this.calculateCenterZoom(g,u.anchor)}this.xi=u.targetResolution,this.wi=m,this.Li(!0)}if(void 0!==u.sourceRotation&&void 0!==u.targetRotation){var b=1===f?vi(u.targetRotation+Math.PI,2*Math.PI)-Math.PI:u.sourceRotation+f*(u.targetRotation-u.sourceRotation);if(u.anchor){var x=this.Ci.rotation(b,!0);this.mi=this.calculateCenterRotate(x,u.anchor)}this.Mi=u.targetRotation,this.gi=b}if(this.Li(!0),n=!0,!u.complete)break}}if(e){this.li[i]=null,this.setHint(Eu,-1),this.bi=null,this.xi=NaN,this.Mi=NaN;var M=r[0].callback;M&&Bu(M,!0)}}this.li=this.li.filter(Boolean),n&&void 0===this.vi&&(this.vi=requestAnimationFrame(this.Ii.bind(this)))}},n.prototype.calculateCenterRotate=function(t,n){var i,r=this.getCenterInternal();return void 0!==r&&(Hi(i=[r[0]-n[0],r[1]-n[1]],t-this.getRotation()),Vi(i,n)),i},n.prototype.calculateCenterZoom=function(t,n){var i,r=this.getCenterInternal(),e=this.getResolution();void 0!==r&&void 0!==e&&(i=[n[0]-t*(n[0]-r[0])/e,n[1]-t*(n[1]-r[1])/e]);return i},n.prototype.Ni=function(t){var n=this.yi;if(t){var i=n[0],r=n[1];return[Math.abs(i*Math.cos(t))+Math.abs(r*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(r*Math.cos(t))]}return n},n.prototype.setViewportSize=function(t){this.yi=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},n.prototype.getCenter=function(){var t=this.getCenterInternal();return t?kr(t,this.getProjection()):t},n.prototype.getCenterInternal=function(){return this.get(Au.CENTER)},n.prototype.getConstraints=function(){return this.Ci},n.prototype.getConstrainResolution=function(){return this.get("constrainResolution")},n.prototype.getHints=function(t){return void 0!==t?(t[0]=this.ci[0],t[1]=this.ci[1],t):this.ci.slice()},n.prototype.calculateExtent=function(t){return Nr(this.calculateExtentInternal(t),this.getProjection())},n.prototype.calculateExtentInternal=function(t){var n=t||this.zi(),i=this.getCenterInternal();St(i,1);var r=this.getResolution();St(void 0!==r,2);var e=this.getRotation();return St(void 0!==e,3),Bn(i,r,e,n)},n.prototype.getMaxResolution=function(){return this.Oi},n.prototype.getMinResolution=function(){return this.ji},n.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.ji)},n.prototype.setMaxZoom=function(t){this.Si(this.ki({maxZoom:t}))},n.prototype.getMinZoom=function(){return this.getZoomForResolution(this.Oi)},n.prototype.setMinZoom=function(t){this.Si(this.ki({minZoom:t}))},n.prototype.setConstrainResolution=function(t){this.Si(this.ki({constrainResolution:t}))},n.prototype.getProjection=function(){return this.di},n.prototype.getResolution=function(){return this.get(Au.RESOLUTION)},n.prototype.getResolutions=function(){return this.Ti},n.prototype.getResolutionForExtent=function(t,n){return this.getResolutionForExtentInternal(Lr(t,this.getProjection()),n)},n.prototype.getResolutionForExtentInternal=function(t,n){var i=n||this.zi(),r=$n(t)/i[0],e=Vn(t)/i[1];return Math.max(r,e)},n.prototype.getResolutionForValueFunction=function(t){var n=t||2,i=this.getConstrainedResolution(this.Oi),r=this.ji,e=Math.log(i/r)/Math.log(n);return function(t){return i/Math.pow(n,t*e)}},n.prototype.getRotation=function(){return this.get(Au.ROTATION)},n.prototype.getValueForResolutionFunction=function(t){var n=Math.log(t||2),i=this.getConstrainedResolution(this.Oi),r=this.ji,e=Math.log(i/r)/n;return function(t){return Math.log(i/t)/n/e}},n.prototype.zi=function(t){var n=this.Ni(t),i=this.Ai;return i&&(n=[n[0]-i[1]-i[3],n[1]-i[0]-i[2]]),n},n.prototype.getState=function(){var t=this.getProjection(),n=this.getResolution(),i=this.getRotation(),r=this.getCenterInternal(),e=this.Ai;if(e){var o=this.zi();r=Zu(r,this.Ni(),[o[0]/2+e[3],o[1]/2+e[0]],n,i)}return{center:r.slice(0),projection:void 0!==t?t:null,resolution:n,nextCenter:this.bi,nextResolution:this.xi,nextRotation:this.Mi,rotation:i,zoom:this.getZoom()}},n.prototype.getZoom=function(){var t,n=this.getResolution();return void 0!==n&&(t=this.getZoomForResolution(n)),t},n.prototype.getZoomForResolution=function(t){var n,i,r=this.Pi||0;if(this.Ti){var e=m(this.Ti,t,1);r=e,n=this.Ti[e],i=e==this.Ti.length-1?2:n/this.Ti[e+1]}else n=this.Oi,i=this.Ei;return r+Math.log(n/t)/Math.log(i)},n.prototype.getResolutionForZoom=function(t){if(this.Ti){if(this.Ti.length<=1)return 0;var n=oi(Math.floor(t),0,this.Ti.length-2),i=this.Ti[n]/this.Ti[n+1];return this.Ti[n]/Math.pow(i,oi(t-n,0,1))}return this.Oi/Math.pow(this.Ei,t-this.Pi)},n.prototype.fit=function(t,n){var i;if(St(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))St(!Hn(t),25),i=Ze(r=Lr(t,this.getProjection()));else if("Circle"===t.getType()){var r;(i=Ze(r=Lr(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),qn(r))}else{var e=Cr();i=e?t.clone().transform(e,this.getProjection()):t}this.fitInternal(i,n)},n.prototype.rotatedExtentForGeometry=function(t){for(var n=this.getRotation(),i=Math.cos(n),r=Math.sin(-n),e=t.getFlatCoordinates(),o=t.getStride(),s=1/0,u=1/0,a=-1/0,h=-1/0,f=0,c=e.length;f0&&t[1]>0}function Ju(t,n,i){return void 0===i&&(i=[0,0]),i[0]=t[0]*n+.5|0,i[1]=t[1]*n+.5|0,i}function Qu(t,n){return Array.isArray(t)?t:(void 0===n?n=[t,t]:(n[0]=t,n[1]=t),n)}var ta=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function na(t){t instanceof ls?t.setMapInternal(null):t instanceof nu&&t.getLayers().forEach(na)}function ia(t,n){if(t instanceof ls)t.setMapInternal(n);else if(t instanceof nu)for(var i=t.getLayers().getArray(),r=0,e=i.length;r=0;u--){var a=s[u];if(a.getMap()===this&&a.getActive()&&this.getTargetElement())if(!a.handleEvent(t)||t.propagationStopped)break}}},n.prototype.handlePostRender=function(){var t=this.Zi,n=this.hr;if(!n.isEmpty()){var i=this.Di,r=i;if(t){var e=t.viewHints;if(e[Eu]||e[Tu]){var o=Date.now()-t.time>8;i=o?0:8,r=o?0:2}}n.getTilesLoading()0;if(this.mn!=i&&(this.element.style.display=i?"":"none",this.mn=i),!x(n,this.Ir)){Ao(this._r);for(var r=0,e=n.length;r0&&n%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.Fr,easing:mt}):t.setRotation(0))}},n.prototype.render=function(t){var n=t.frameState;if(n){var i=n.viewState.rotation;if(i!=this.Dr){var r="rotate("+i+"rad)";if(this.Gr){var e=this.element.classList.contains(ws);e||0!==i?e&&0!==i&&this.element.classList.remove(ws):this.element.classList.add(ws)}this.Pr.style.transform=r}this.Dr=i}},n}(oa),fa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ca=function(t){function n(n){var i=this,r=n||{};i=t.call(this,{element:document.createElement("div"),target:r.target})||this;var e=void 0!==r.className?r.className:"ol-zoom",o=void 0!==r.delta?r.delta:1,s=void 0!==r.zoomInClassName?r.zoomInClassName:e+"-in",u=void 0!==r.zoomOutClassName?r.zoomOutClassName:e+"-out",a=void 0!==r.zoomInLabel?r.zoomInLabel:"+",h=void 0!==r.zoomOutLabel?r.zoomOutLabel:"–",f=void 0!==r.zoomInTipLabel?r.zoomInTipLabel:"Zoom in",c=void 0!==r.zoomOutTipLabel?r.zoomOutTipLabel:"Zoom out",l=document.createElement("button");l.className=s,l.setAttribute("type","button"),l.title=f,l.appendChild("string"==typeof a?document.createTextNode(a):a),l.addEventListener(F,i.kr.bind(i,o),!1);var v=document.createElement("button");v.className=u,v.setAttribute("type","button"),v.title=c,v.appendChild("string"==typeof h?document.createTextNode(h):h),v.addEventListener(F,i.kr.bind(i,-o),!1);var d=e+" "+"ol-unselectable "+Ms,p=i.element;return p.className=d,p.appendChild(l),p.appendChild(v),i.Fr=void 0!==r.duration?r.duration:250,i}return fa(n,t),n.prototype.kr=function(t,n){n.preventDefault(),this.Ur(t)},n.prototype.Ur=function(t){var n=this.getMap().getView();if(n){var i=n.getZoom();if(void 0!==i){var r=n.getConstrainedZoom(i+t);this.Fr>0?(n.getAnimating()&&n.cancelAnimations(),n.animate({zoom:r,duration:this.Fr,easing:mt})):n.setZoom(r)}}},n}(oa);function la(t){var n=t||{},i=new ft;return(void 0===n.zoom||n.zoom)&&i.push(new ca(n.zoomOptions)),(void 0===n.rotate||n.rotate)&&i.push(new ha(n.rotateOptions)),(void 0===n.attribution||n.attribution)&&i.push(new ua(n.attributionOptions)),i}var va="active",da=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function pa(t,n,i){var r=t.getCenterInternal();if(r){var e=[r[0]+n[0],r[1]+n[1]];t.animateInternal({duration:void 0!==i?i:250,easing:gt,center:t.getConstrainedCenter(e)})}}function ya(t,n,i,r){var e=t.getZoom();if(void 0!==e){var o=t.getConstrainedZoom(e+n),s=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:s,anchor:i,duration:void 0!==r?r:250,easing:mt})}}var ma=function(t){function n(n){var i=t.call(this)||this;return i.on,i.once,i.un,n&&n.handleEvent&&(i.handleEvent=n.handleEvent),i.vn=null,i.setActive(!0),i}return da(n,t),n.prototype.getActive=function(){return this.get(va)},n.prototype.getMap=function(){return this.vn},n.prototype.handleEvent=function(t){return!0},n.prototype.setActive=function(t){this.set(va,t)},n.prototype.setMap=function(t){this.vn=t},n}(et),wa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ga=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Br=r.delta?r.delta:1,i.Fr=void 0!==r.duration?r.duration:250,i}return wa(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==su.DBLCLICK){var i=t.originalEvent,r=t.map,e=t.coordinate,o=i.shiftKey?-this.Br:this.Br;ya(r.getView(),o,e,this.Fr),i.preventDefault(),n=!0}return!n},n}(ma),ba=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function xa(t){for(var n=t.length,i=0,r=0,e=0;e0}}else if(t.type==su.POINTERDOWN){var r=this.handleDownEvent(t);this.handlingDownUpSequence=r,n=this.stopDown(r)}else t.type==su.POINTERMOVE&&this.handleMoveEvent(t);return!n},n.prototype.handleMoveEvent=function(t){},n.prototype.handleUpEvent=function(t){return!1},n.prototype.stopDown=function(t){return t},n.prototype.Xr=function(t){t.activePointers&&(this.targetPointers=t.activePointers)},n}(ma);function _a(t){var n=arguments;return function(t){for(var i=!0,r=0,e=n.length;r0&&this.Zr(t)){var n=t.map.getView();return this.lastCentroid=null,n.getAnimating()&&n.cancelAnimations(),this.Vr&&this.Vr.begin(),this.$r=this.targetPointers.length>1,!0}return!1},n}(Ma),Ga=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Da=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this,{stopDown:O})||this).Zr=r.condition?r.condition:Oa,i.Kr=void 0,i.Fr=void 0!==r.duration?r.duration:250,i}return Ga(n,t),n.prototype.handleDragEvent=function(t){if(La(t)){var n=t.map,i=n.getView();if(i.getConstraints().rotation!==Fu){var r=n.getSize(),e=t.pixel,o=Math.atan2(r[1]/2-e[1],e[0]-r[0]/2);if(void 0!==this.Kr){var s=o-this.Kr;i.adjustRotationInternal(-s)}this.Kr=o}}},n.prototype.handleUpEvent=function(t){return!La(t)||(t.map.getView().endInteraction(this.Fr),!1)},n.prototype.handleDownEvent=function(t){return!!La(t)&&(!(!Aa(t)||!this.Zr(t))&&(t.map.getView().beginInteraction(),this.Kr=void 0,!0))},n}(Ma),qa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ua=function(t){function n(n){var i=t.call(this)||this;return i.Hr=null,i.pn=document.createElement("div"),i.pn.style.position="absolute",i.pn.style.pointerEvents="auto",i.pn.className="ol-box "+n,i.vn=null,i.Jr=null,i.Qr=null,i}return qa(n,t),n.prototype.disposeInternal=function(){this.setMap(null)},n.prototype.te=function(){var t=this.Jr,n=this.Qr,i="px",r=this.pn.style;r.left=Math.min(t[0],n[0])+i,r.top=Math.min(t[1],n[1])+i,r.width=Math.abs(n[0]-t[0])+i,r.height=Math.abs(n[1]-t[1])+i},n.prototype.setMap=function(t){if(this.vn){this.vn.getOverlayContainer().removeChild(this.pn);var n=this.pn.style;n.left="inherit",n.top="inherit",n.width="inherit",n.height="inherit"}this.vn=t,this.vn&&this.vn.getOverlayContainer().appendChild(this.pn)},n.prototype.setPixels=function(t,n){this.Jr=t,this.Qr=n,this.createOrUpdateGeometry(),this.te()},n.prototype.createOrUpdateGeometry=function(){var t=this.Jr,n=this.Qr,i=[t,[t[0],n[1]],n,[n[0],t[1]]].map(this.vn.getCoordinateFromPixelInternal,this.vn);i[4]=i[0].slice(),this.Hr?this.Hr.setCoordinates([i]):this.Hr=new We([i])},n.prototype.getGeometry=function(){return this.Hr},n}(v),Ba=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Xa="boxstart",Va="boxdrag",Wa="boxend",Ya="boxcancel",Za=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.coordinate=i,e.mapBrowserEvent=r,e}return Ba(n,t),n}(c),$a=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r=n||{};return i.ne=new Ua(r.className||"ol-dragbox"),i.ie=void 0!==r.minArea?r.minArea:64,r.onBoxEnd&&(i.onBoxEnd=r.onBoxEnd),i.Jr=null,i.Zr=r.condition?r.condition:Aa,i.re=r.boxEndCondition?r.boxEndCondition:i.defaultBoxEndCondition,i}return Ba(n,t),n.prototype.defaultBoxEndCondition=function(t,n,i){var r=i[0]-n[0],e=i[1]-n[1];return r*r+e*e>=this.ie},n.prototype.getGeometry=function(){return this.ne.getGeometry()},n.prototype.handleDragEvent=function(t){this.ne.setPixels(this.Jr,t.pixel),this.dispatchEvent(new Za(Va,t.coordinate,t))},n.prototype.handleUpEvent=function(t){this.ne.setMap(null);var n=this.re(t,this.Jr,t.pixel);return n&&this.onBoxEnd(t),this.dispatchEvent(new Za(n?Wa:Ya,t.coordinate,t)),!1},n.prototype.handleDownEvent=function(t){return!!this.Zr(t)&&(this.Jr=t.pixel,this.ne.setMap(t.map),this.ne.setPixels(this.Jr,this.Jr),this.dispatchEvent(new Za(Xa,t.coordinate,t)),!0)},n.prototype.onBoxEnd=function(t){},n}(Ma),Ka=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ha=function(t){function n(n){var i=this,r=n||{},e=r.condition?r.condition:Ia;return(i=t.call(this,{condition:e,className:r.className||"ol-dragzoom",minArea:r.minArea})||this).Fr=void 0!==r.duration?r.duration:200,i.ee=void 0!==r.out&&r.out,i}return Ka(n,t),n.prototype.onBoxEnd=function(t){var n=this.getMap().getView(),i=this.getGeometry();if(this.ee){var r=n.rotatedExtentForGeometry(i),e=n.getResolutionForExtentInternal(r),o=n.getResolution()/e;(i=i.clone()).scale(o*o)}n.fitInternal(i,{duration:this.Fr,easing:mt})},n}($a),Ja=37,Qa=38,th=39,nh=40,ih=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rh=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.oe=function(t){return ka(t)&&Na(t)},i.Zr=void 0!==r.condition?r.condition:i.oe,i.Fr=void 0!==r.duration?r.duration:100,i.se=void 0!==r.pixelDelta?r.pixelDelta:128,i}return ih(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==B){var i=t.originalEvent,r=i.keyCode;if(this.Zr(t)&&(r==nh||r==Ja||r==th||r==Qa)){var e=t.map.getView(),o=e.getResolution()*this.se,s=0,u=0;r==nh?u=-o:r==Ja?s=-o:r==th?s=o:u=o;var a=[s,u];Hi(a,e.getRotation()),pa(e,a,this.Fr),i.preventDefault(),n=!0}}return!n},n}(ma),eh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),oh=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Zr=r.condition?r.condition:Na,i.Br=r.delta?r.delta:1,i.Fr=void 0!==r.duration?r.duration:100,i}return eh(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==B||t.type==X){var i=t.originalEvent,r=i.charCode;if(this.Zr(t)&&(r=="+".charCodeAt(0)||r=="-".charCodeAt(0))){var e=t.map,o=r=="+".charCodeAt(0)?this.Br:-this.Br;ya(e.getView(),o,void 0,this.Fr),i.preventDefault(),n=!0}}return!n},n}(ma),sh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),uh="trackpad",ah="wheel",hh=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,r)||this).ue=0,i.ae=0,i.wt=void 0!==r.maxDelta?r.maxDelta:1,i.Fr=void 0!==r.duration?r.duration:250,i.he=void 0!==r.timeout?r.timeout:80,i.fe=void 0===r.useAnchor||r.useAnchor,i.ce=void 0!==r.constrainResolution&&r.constrainResolution;var e=r.condition?r.condition:Ta;return i.Zr=r.onFocusOnly?_a(Ea,e):e,i.le=null,i.ve=void 0,i.de,i.pe=void 0,i.ye=400,i.me,i.we=300,i}return sh(n,t),n.prototype.ge=function(){this.me=void 0;var t=this.getMap();t&&t.getView().endInteraction(void 0,this.ae?this.ae>0?1:-1:0,this.le)},n.prototype.handleEvent=function(t){if(!this.Zr(t))return!0;if(t.type!==Z)return!0;var n,i=t.map,r=t.originalEvent;if(r.preventDefault(),this.fe&&(this.le=t.coordinate),t.type==Z&&(n=r.deltaY,Gt&&r.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(n/=Xt),r.deltaMode===WheelEvent.DOM_DELTA_LINE&&(n*=40)),0===n)return!1;this.ae=n;var e=Date.now();void 0===this.ve&&(this.ve=e),(!this.pe||e-this.ve>this.ye)&&(this.pe=Math.abs(n)<4?uh:ah);var o=i.getView();if(this.pe===uh&&!o.getConstrainResolution()&&!this.ce)return this.me?clearTimeout(this.me):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.me=setTimeout(this.ge.bind(this),this.he),o.adjustZoom(-n/this.we,this.le),this.ve=e,!1;this.ue+=n;var s=Math.max(this.he-(e-this.ve),0);return clearTimeout(this.de),this.de=setTimeout(this.be.bind(this,i),s),!1},n.prototype.be=function(t){var n=t.getView();n.getAnimating()&&n.cancelAnimations();var i=-oi(this.ue,-this.wt*this.we,this.wt*this.we)/this.we;(n.getConstrainResolution()||this.ce)&&(i=i?i>0?1:-1:0),ya(n,i,this.le,this.Fr),this.pe=void 0,this.ue=0,this.le=null,this.ve=void 0,this.de=void 0},n.prototype.setMouseAnchor=function(t){this.fe=t,t||(this.le=null)},n}(ma),fh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ch=function(t){function n(n){var i=this,r=n||{},e=r;return e.stopDown||(e.stopDown=O),(i=t.call(this,e)||this).xe=null,i.Kr=void 0,i.Me=!1,i._e=0,i.Se=void 0!==r.threshold?r.threshold:.3,i.Fr=void 0!==r.duration?r.duration:250,i}return fh(n,t),n.prototype.handleDragEvent=function(t){var n=0,i=this.targetPointers[0],r=this.targetPointers[1],e=Math.atan2(r.clientY-i.clientY,r.clientX-i.clientX);if(void 0!==this.Kr){var o=e-this.Kr;this._e+=o,!this.Me&&Math.abs(this._e)>this.Se&&(this.Me=!0),n=o}this.Kr=e;var s=t.map,u=s.getView();if(u.getConstraints().rotation!==Fu){var a=s.getViewport().getBoundingClientRect(),h=xa(this.targetPointers);h[0]-=a.left,h[1]-=a.top,this.xe=s.getCoordinateFromPixelInternal(h),this.Me&&(s.render(),u.adjustRotationInternal(n,this.xe))}},n.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.Fr),!1)},n.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var n=t.map;return this.xe=null,this.Kr=void 0,this.Me=!1,this._e=0,this.handlingDownUpSequence||n.getView().beginInteraction(),!0}return!1},n}(Ma),lh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),vh=function(t){function n(n){var i=this,r=n||{},e=r;return e.stopDown||(e.stopDown=O),(i=t.call(this,e)||this).xe=null,i.Fr=void 0!==r.duration?r.duration:400,i.Oe=void 0,i.je=1,i}return lh(n,t),n.prototype.handleDragEvent=function(t){var n=1,i=this.targetPointers[0],r=this.targetPointers[1],e=i.clientX-r.clientX,o=i.clientY-r.clientY,s=Math.sqrt(e*e+o*o);void 0!==this.Oe&&(n=this.Oe/s),this.Oe=s;var u=t.map,a=u.getView();1!=n&&(this.je=n);var h=u.getViewport().getBoundingClientRect(),f=xa(this.targetPointers);f[0]-=h.left,f[1]-=h.top,this.xe=u.getCoordinateFromPixelInternal(f),u.render(),a.adjustResolutionInternal(n,this.xe)},n.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var n=t.map.getView(),i=this.je>1?1:-1;return n.endInteraction(this.Fr,i),!1}return!0},n.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var n=t.map;return this.xe=null,this.Oe=void 0,this.je=1,this.handlingDownUpSequence||n.getView().beginInteraction(),!0}return!1},n}(Ma);function dh(t){var n=t||{},i=new ft,r=new Io(-.005,.05,100);return(void 0===n.altShiftDragRotate||n.altShiftDragRotate)&&i.push(new Da),(void 0===n.doubleClickZoom||n.doubleClickZoom)&&i.push(new ga({delta:n.zoomDelta,duration:n.zoomDuration})),(void 0===n.dragPan||n.dragPan)&&i.push(new Fa({onFocusOnly:n.onFocusOnly,kinetic:r})),(void 0===n.pinchRotate||n.pinchRotate)&&i.push(new ch),(void 0===n.pinchZoom||n.pinchZoom)&&i.push(new vh({duration:n.zoomDuration})),(void 0===n.keyboard||n.keyboard)&&(i.push(new rh),i.push(new oh({delta:n.zoomDelta,duration:n.zoomDuration}))),(void 0===n.mouseWheelZoom||n.mouseWheelZoom)&&i.push(new hh({onFocusOnly:n.onFocusOnly,duration:n.zoomDuration})),(void 0===n.shiftDragZoom||n.shiftDragZoom)&&i.push(new Ha({duration:n.zoomDuration})),i}var ph=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),yh=function(t){function n(n){return(n=A({},n)).controls||(n.controls=la()),n.interactions||(n.interactions=dh({onFocusOnly:!0})),t.call(this,n)||this}return ph(n,t),n.prototype.createRenderer=function(){return new Hs(this)},n}(ra),mh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),wh="element",gh="map",bh="offset",xh="position",Mh="positioning",_h=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un,i.options=n,i.id=n.id,i.insertFirst=void 0===n.insertFirst||n.insertFirst,i.stopEvent=void 0===n.stopEvent||n.stopEvent,i.element=document.createElement("div"),i.element.className=void 0!==n.className?n.className:"ol-overlay-container ol-selectable",i.element.style.position="absolute",i.element.style.pointerEvents="auto";var r=n.autoPan;return r&&"object"!=typeof r&&(r={animation:n.autoPanAnimation,margin:n.autoPanMargin}),i.autoPan=r||!1,i.rendered={jt:"",visible:!0},i.mapPostrenderListenerKey=null,i.addChangeListener(wh,i.handleElementChanged),i.addChangeListener(gh,i.handleMapChanged),i.addChangeListener(bh,i.handleOffsetChanged),i.addChangeListener(xh,i.handlePositionChanged),i.addChangeListener(Mh,i.handlePositioningChanged),void 0!==n.element&&i.setElement(n.element),i.setOffset(void 0!==n.offset?n.offset:[0,0]),i.setPositioning(n.positioning||"top-left"),void 0!==n.position&&i.setPosition(n.position),i}return mh(n,t),n.prototype.getElement=function(){return this.get(wh)},n.prototype.getId=function(){return this.id},n.prototype.getMap=function(){return this.get(gh)||null},n.prototype.getOffset=function(){return this.get(bh)},n.prototype.getPosition=function(){return this.get(xh)},n.prototype.getPositioning=function(){return this.get(Mh)},n.prototype.handleElementChanged=function(){Ao(this.element);var t=this.getElement();t&&this.element.appendChild(t)},n.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(To(this.element),H(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=$(t,vu,this.render,this),this.updatePixelPosition();var n=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?n.insertBefore(this.element,n.childNodes[0]||null):n.appendChild(this.element),this.performAutoPan()}},n.prototype.render=function(){this.updatePixelPosition()},n.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},n.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},n.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},n.prototype.setElement=function(t){this.set(wh,t)},n.prototype.setMap=function(t){this.set(gh,t)},n.prototype.setOffset=function(t){this.set(bh,t)},n.prototype.setPosition=function(t){this.set(xh,t)},n.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},n.prototype.panIntoView=function(t){var n=this.getMap();if(n&&n.getTargetElement()&&this.get(xh)){var i=this.getRect(n.getTargetElement(),n.getSize()),r=this.getElement(),e=this.getRect(r,[Oo(r),jo(r)]),o=t||{},s=void 0===o.margin?20:o.margin;if(!xn(i,e)){var u=e[0]-i[0],a=i[2]-e[2],h=e[1]-i[1],f=i[3]-e[3],c=[0,0];if(u<0?c[0]=u-s:a<0&&(c[0]=Math.abs(a)+s),h<0?c[1]=h-s:f<0&&(c[1]=Math.abs(f)+s),0!==c[0]||0!==c[1]){var l=n.getView().getCenterInternal(),v=n.getPixelFromCoordinateInternal(l);if(!v)return;var d=[v[0]+c[0],v[1]+c[1]],p=o.animation||{};n.getView().animateInternal({center:n.getCoordinateFromPixelInternal(d),duration:p.duration,easing:p.easing})}}}},n.prototype.getRect=function(t,n){var i=t.getBoundingClientRect(),r=i.left+window.pageXOffset,e=i.top+window.pageYOffset;return[r,e,r+n[0],e+n[1]]},n.prototype.setPositioning=function(t){this.set(Mh,t)},n.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},n.prototype.updatePixelPosition=function(){var t=this.getMap(),n=this.getPosition();if(t&&t.isRendered()&&n){var i=t.getPixelFromCoordinate(n),r=t.getSize();this.updateRenderedPosition(i,r)}else this.setVisible(!1)},n.prototype.updateRenderedPosition=function(t,n){var i=this.element.style,r=this.getOffset(),e=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+r[0])+"px",s=Math.round(t[1]+r[1])+"px",u="0%",a="0%";"bottom-right"==e||"center-right"==e||"top-right"==e?u="-100%":"bottom-center"!=e&&"center-center"!=e&&"top-center"!=e||(u="-50%"),"bottom-left"==e||"bottom-center"==e||"bottom-right"==e?a="-100%":"center-left"!=e&&"center-center"!=e&&"center-right"!=e||(a="-50%");var h="translate(".concat(u,", ").concat(a,") translate(").concat(o,", ").concat(s,")");this.rendered.jt!=h&&(this.rendered.jt=h,i.transform=h,i.msTransform=h)},n.prototype.getOptions=function(){return this.options},n}(et),Sh=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.Ee=0,this.Te={},this.Ae=null,this.Pe=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.expireCache=function(t){for(;this.canExpireCache();)this.pop()},t.prototype.clear=function(){this.Ee=0,this.Te={},this.Ae=null,this.Pe=null},t.prototype.containsKey=function(t){return this.Te.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var n=this.Ae;n;)t(n.Ce,n.ke,this),n=n.newer},t.prototype.get=function(t,n){var i=this.Te[t];return St(void 0!==i,15),i===this.Pe||(i===this.Ae?(this.Ae=this.Ae.newer,this.Ae.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.Pe,this.Pe.newer=i,this.Pe=i),i.Ce},t.prototype.remove=function(t){var n=this.Te[t];return St(void 0!==n,15),n===this.Pe?(this.Pe=n.older,this.Pe&&(this.Pe.newer=null)):n===this.Ae?(this.Ae=n.newer,this.Ae&&(this.Ae.older=null)):(n.newer.older=n.older,n.older.newer=n.newer),delete this.Te[t],--this.Ee,n.Ce},t.prototype.getCount=function(){return this.Ee},t.prototype.getKeys=function(){var t,n=new Array(this.Ee),i=0;for(t=this.Pe;t;t=t.older)n[i++]=t.ke;return n},t.prototype.getValues=function(){var t,n=new Array(this.Ee),i=0;for(t=this.Pe;t;t=t.older)n[i++]=t.Ce;return n},t.prototype.peekLast=function(){return this.Ae.Ce},t.prototype.peekLastKey=function(){return this.Ae.ke},t.prototype.peekFirstKey=function(){return this.Pe.ke},t.prototype.peek=function(t){if(this.containsKey(t))return this.Te[t].Ce},t.prototype.pop=function(){var t=this.Ae;return delete this.Te[t.ke],t.newer&&(t.newer.older=null),this.Ae=t.newer,this.Ae||(this.Pe=null),--this.Ee,t.Ce},t.prototype.replace=function(t,n){this.get(t),this.Te[t].Ce=n},t.prototype.set=function(t,n){St(!(t in this.Te),16);var i={ke:t,newer:null,older:this.Pe,Ce:n};this.Pe?this.Pe.newer=i:this.Ae=i,this.Pe=i,this.Te[t]=i,++this.Ee},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function Oh(t,n,i,r){return void 0!==r?(r[0]=t,r[1]=n,r[2]=i,r):[t,n,i]}function jh(t,n,i){return t+"/"+n+"/"+i}function Eh(t){return jh(t[0],t[1],t[2])}function Th(t){var n=t.substring(t.lastIndexOf("/")+1,t.length).split(",").map(Number);return jh(n[0],n[1],n[2])}function Ah(t){return t.split("/").map(Number)}function Ph(t){return(t[1]<i||i>n.getMaxZoom())return!1;var o=n.getFullTileRange(i);return!o||o.containsXY(r,e)}var kh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ih=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return kh(n,t),n.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},n.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=Ah(this.peekFirstKey())[0];this.forEach(function(n){n.tileCoord[0]!==t&&(this.remove(Eh(n.tileCoord)),n.release())}.bind(this))}},n}(Sh),Nh=function(){function t(t,n,i,r){this.minX=t,this.maxX=n,this.minY=i,this.maxY=r}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,n){return this.minX<=t&&t<=this.maxX&&this.minY<=n&&n<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function Lh(t,n,i,r,e){return void 0!==e?(e.minX=t,e.maxX=n,e.minY=i,e.maxY=r,e):new Nh(t,n,i,r)}var zh=Nh,Rh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Fh=[],Gh=function(t){function n(n,i,r,e){var o=t.call(this,n,i,{transition:0})||this;return o.Ne={},o.executorGroups={},o.declutterExecutorGroups={},o.loadingSourceTiles=0,o.hitDetectionImageData={},o.Le={},o.sourceTiles=[],o.errorTileKeys={},o.wantedResolution,o.getSourceTiles=e.bind(void 0,o),o.wrappedTileCoord=r,o}return Rh(n,t),n.prototype.getContext=function(t){var n=o(t);return n in this.Ne||(this.Ne[n]=_o(1,1,Fh)),this.Ne[n]},n.prototype.hasContext=function(t){return o(t)in this.Ne},n.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},n.prototype.getReplayState=function(t){var n=o(t);return n in this.Le||(this.Le[n]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedTileZ:-1}),this.Le[n]},n.prototype.load=function(){this.getSourceTiles()},n.prototype.release=function(){for(var n in this.Ne){var i=this.Ne[n];So(i),Fh.push(i.canvas),delete this.Ne[n]}t.prototype.release.call(this)},n}(xt),Dh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qh=function(t){function n(n,i,r,e,o,s){var u=t.call(this,n,i,s)||this;return u.extent=null,u.ze=e,u.Re=null,u.U,u.projection=null,u.resolution,u.Xt=o,u.Fe=r,u.key=r,u}return Dh(n,t),n.prototype.getFormat=function(){return this.ze},n.prototype.getFeatures=function(){return this.Re},n.prototype.load=function(){this.state==ct&&(this.setState(lt),this.Xt(this,this.Fe),this.U&&this.U(this.extent,this.resolution,this.projection))},n.prototype.onLoad=function(t,n){this.setFeatures(t)},n.prototype.onError=function(){this.setState(dt)},n.prototype.setFeatures=function(t){this.Re=t,this.setState(vt)},n.prototype.setLoader=function(t){this.U=t},n}(xt);function Uh(t){return Array.isArray(t)?qo(t):t}var Bh=!1;function Xh(t,n,i,r,e,o,s){var u=new XMLHttpRequest;u.open("GET","function"==typeof t?t(i,r,e):t,!0),"arraybuffer"==n.getType()&&(u.responseType="arraybuffer"),u.withCredentials=Bh,u.onload=function(t){if(!u.status||u.status>=200&&u.status<300){var r=n.getType(),a=void 0;"json"==r||"text"==r?a=u.responseText:"xml"==r?(a=u.responseXML)||(a=(new DOMParser).parseFromString(u.responseText,"application/xml")):"arraybuffer"==r&&(a=u.response),a?o(n.readFeatures(a,{extent:i,featureProjection:e}),n.readProjection(a)):s()}else s()},u.onerror=s,u.send()}function Vh(t,n){return function(i,r,e,o,s){var u=this;Xh(t,n,i,r,e,(function(t,n){u.addFeatures(t),void 0!==o&&o(t)}),s||j)}}function Wh(t,n){return[[-1/0,-1/0,1/0,1/0]]}var Yh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Zh(t,n,i,r){var e=document.createElement("script"),s="olc_"+o(n);function u(){delete window[s],e.parentNode.removeChild(e)}e.async=!0,e.src=t+(-1==t.indexOf("?")?"?":"&")+(r||"callback")+"="+s;var a=setTimeout((function(){u(),i&&i()}),1e4);window[s]=function(t){clearTimeout(a),u(),n(t)},document.head.appendChild(e)}var $h,Kh=function(t){function n(n){var i=this,r="Unexpected response status: "+n.status;return(i=t.call(this,r)||this).name="ResponseError",i.response=n,i}return Yh(n,t),n}(Error),Hh=function(t){function n(n){var i=t.call(this,"Failed to issue request")||this;return i.name="ClientError",i.client=n,i}return Yh(n,t),n}(Error);function Jh(t){return new Promise((function(n,i){var r=new XMLHttpRequest;r.addEventListener("load",(function(t){var r=t.target;if(!r.status||r.status>=200&&r.status<300){var e=void 0;try{e=JSON.parse(r.responseText)}catch(t){var o="Error parsing response text as JSON: "+t.message;return void i(new Error(o))}n(e)}else i(new Kh(r))})),r.addEventListener("error",(function(t){i(new Hh(t.target))})),r.open("GET",t),r.setRequestHeader("Accept","application/json"),r.send()}))}function Qh(t,n){return n.indexOf("://")>=0?n:new URL(n,t).href}var tf=function(){function t(){}return t.prototype.drawCustom=function(t,n,i,r){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,n){},t.prototype.drawFeature=function(t,n){},t.prototype.drawGeometryCollection=function(t,n){},t.prototype.drawLineString=function(t,n){},t.prototype.drawMultiLineString=function(t,n){},t.prototype.drawMultiPoint=function(t,n){},t.prototype.drawMultiPolygon=function(t,n){},t.prototype.drawPoint=function(t,n){},t.prototype.drawPolygon=function(t,n){},t.prototype.drawText=function(t,n){},t.prototype.setFillStrokeStyle=function(t,n){},t.prototype.setImageStyle=function(t,n){},t.prototype.setTextStyle=function(t,n){},t}(),nf=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rf=function(t){function n(n,i,r,e,o,s,u){var a=t.call(this)||this;return a.Ne=n,a.kt=i,a.st=r,a.jt=e,a.Ge=o,a.De=s,a.qe=u,a.Ue=null,a.Be=null,a.Xe=null,a.Ve=null,a.We=null,a.Lt=null,a.Ye=0,a.Ze=0,a.$e=0,a.Ke=0,a.He=0,a.Je=0,a.Qe=!1,a.no=0,a.io=[0,0],a.ro=0,a.eo="",a.oo=0,a.so=0,a.uo=!1,a.ao=0,a.ho=[0,0],a.fo=null,a.co=null,a.lo=null,a.vo=[],a.do=[1,0,0,1,0,0],a}return nf(n,t),n.prototype.po=function(t,n,i,r){if(this.Lt){var e=Dr(t,n,i,r,this.jt,this.vo),o=this.Ne,s=this.do,u=o.globalAlpha;1!=this.Ke&&(o.globalAlpha=u*this.Ke);var a=this.no;this.Qe&&(a+=this.Ge);for(var h=0,f=e.length;h2||Math.abs(t[4*n+3]-191.25)>2}function mf(t,n,i,r){var e=Er(i,n,t),o=mr(n,r,i),s=n.getMetersPerUnit();void 0!==s&&(o*=s);var u=t.getMetersPerUnit();void 0!==u&&(o/=u);var a=t.getExtent();if(!a||bn(a,e)){var h=mr(t,o,e)/o;isFinite(h)&&h>0&&(o/=h)}return o}function wf(t,n,i,r){var e=qn(i),o=mf(t,n,e,r);return(!isFinite(o)||o<=0)&&Rn(i,(function(i){return o=mf(t,n,i,r),isFinite(o)&&o>0})),o}function gf(t,n,i,r,e,o,s,u,a,h,f,c){var l=_o(Math.round(i*t),Math.round(i*n),df);if(c||A(l,lf),0===a.length)return l.canvas;function v(t){return Math.round(t*i)/i}l.scale(i,i),l.globalCompositeOperation="lighter";var d=[1/0,1/0,-1/0,-1/0];a.forEach((function(t,n,i){Cn(d,t.extent)}));var p=$n(d),y=Vn(d),m=_o(Math.round(i*p/r),Math.round(i*y/r));c||A(m,lf);var w=i/r;a.forEach((function(t,n,i){var r=t.extent[0]-d[0],e=-(t.extent[3]-d[3]),o=$n(t.extent),s=Vn(t.extent);t.image.width>0&&t.image.height>0&&m.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,r*w,e*w,o*w,s*w)}));var g=Yn(s);return u.getTriangles().forEach((function(t,n,e){var s=t.source,u=t.target,a=s[0][0],h=s[0][1],f=s[1][0],p=s[1][1],y=s[2][0],w=s[2][1],b=v((u[0][0]-g[0])/o),x=v(-(u[0][1]-g[1])/o),M=v((u[1][0]-g[0])/o),_=v(-(u[1][1]-g[1])/o),S=v((u[2][0]-g[0])/o),O=v(-(u[2][1]-g[1])/o),j=a,E=h;a=0,h=0;var T=fi([[f-=j,p-=E,0,0,M-b],[y-=j,w-=E,0,0,S-b],[0,0,f,p,_-x],[0,0,y,w,O-x]]);if(T){if(l.save(),l.beginPath(),function(){if(void 0===cf){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",pf(t,4,5,4,0),pf(t,4,5,0,5);var n=t.getImageData(0,0,3,3).data;cf=yf(n,0)||yf(n,4)||yf(n,8)}return cf}()||!c){l.moveTo(M,_);for(var A=b-M,P=x-_,C=0;C<4;C++)l.lineTo(M+v((C+1)*A/4),_+v(C*P/3)),3!=C&&l.lineTo(M+v((C+1)*A/4),_+v((C+1)*P/3));l.lineTo(S,O)}else l.moveTo(M,_),l.lineTo(b,x),l.lineTo(S,O);l.clip(),l.transform(T[0],T[2],T[1],T[3],b,x),l.translate(d[0]-j,d[3]-E),l.scale(r/i,-r/i),l.drawImage(m.canvas,0,0),l.restore()}})),f&&(l.save(),l.globalCompositeOperation="source-over",l.strokeStyle="black",l.lineWidth=1,u.getTriangles().forEach((function(t,n,i){var r=t.target,e=(r[0][0]-g[0])/o,s=-(r[0][1]-g[1])/o,u=(r[1][0]-g[0])/o,a=-(r[1][1]-g[1])/o,h=(r[2][0]-g[0])/o,f=-(r[2][1]-g[1])/o;l.beginPath(),l.moveTo(u,a),l.lineTo(e,s),l.lineTo(h,f),l.closePath(),l.stroke()})),l.restore()),l.canvas}var bf=[0,0,0],xf=function(){function t(t){var n;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.Ti=t.resolutions,St(_(this.Ti,(function(t,n){return n-t}),!0),17),!t.origins)for(var i=0,r=this.Ti.length-1;i=this.minZoom;){if(n(u,2===this.Ei?Lh(e=Math.floor(e/2),e,o=Math.floor(o/2),o,i):this.getTileRangeForExtentAndZ(s,u,i)))return!0;--u}return!1},t.prototype.getExtent=function(){return this.st},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this._o?this._o:this.So[t]},t.prototype.getResolution=function(t){return this.Ti[t]},t.prototype.getResolutions=function(){return this.Ti},t.prototype.getTileCoordChildTileRange=function(t,n,i){if(t[0]this.maxZoom||n0?r:Math.max(s/u[0],o/u[1]),h=e+1,f=new Array(h),c=0;c0))){var i=Uf(n.canvas).getExtension("WEBGL_lose_context");i&&i.loseContext(),delete Cc[t]}}(this.Yo),delete this.Io,delete this.qt},n.prototype.prepareDraw=function(t,n){var i=this.getGL(),r=this.getCanvas(),e=t.size,o=t.pixelRatio;r.width=e[0]*o,r.height=e[1]*o,r.style.width=e[0]+"px",r.style.height=e[1]+"px",i.useProgram(this.Ko);for(var s=this.rs.length-1;s>=0;s--)this.rs[s].init(t);i.bindTexture(i.TEXTURE_2D,null),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),i.enable(i.BLEND),i.blendFunc(i.ONE,n?i.ZERO:i.ONE_MINUS_SRC_ALPHA),i.useProgram(this.Ko),this.applyFrameState(t),this.applyUniforms(t)},n.prototype.prepareDrawToRenderTarget=function(t,n,i){var r=this.getGL(),e=n.getSize();r.bindFramebuffer(r.FRAMEBUFFER,n.getFramebuffer()),r.viewport(0,0,e[0],e[1]),r.bindTexture(r.TEXTURE_2D,n.getTexture()),r.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),r.enable(r.BLEND),r.blendFunc(r.ONE,i?r.ZERO:r.ONE_MINUS_SRC_ALPHA),r.useProgram(this.Ko),this.applyFrameState(t),this.applyUniforms(t)},n.prototype.drawElements=function(t,n){var i=this.getGL();this.getExtension("OES_element_index_uint");var r=i.UNSIGNED_INT,e=n-t,o=4*t;i.drawElements(i.TRIANGLES,e,r,o)},n.prototype.finalizeDraw=function(t,n,i){for(var r=0,e=this.rs.length;rthis.W[0]||n>=this.W[1])return Fc[0]=0,Fc[1]=0,Fc[2]=0,Fc[3]=0,Fc;this.readAll();var i=Math.floor(t)+(this.W[1]-Math.floor(n)-1)*this.W[0];return Fc[0]=this.B[4*i],Fc[1]=this.B[4*i+1],Fc[2]=this.B[4*i+2],Fc[3]=this.B[4*i+3],Fc},t.prototype.getTexture=function(){return this.ss},t.prototype.getFramebuffer=function(){return this.hs},t.prototype.cs=function(){var t=this.W,n=this.us.getGL();this.ss=this.us.createTexture(t,null,this.ss),n.bindFramebuffer(n.FRAMEBUFFER,this.hs),n.viewport(0,0,t[0],t[1]),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,this.ss,0),this.B=new Uint8Array(t[0]*t[1]*4)},t}(),Dc=!0,qc=function(){function t(t,n,i,r,e,o){this.ls=t,this.vs=n;var s={},u=jr(this.vs,this.ls);this.ds=function(t){var n=t[0]+"/"+t[1];return s[n]||(s[n]=u(t)),s[n]},this.ps=r,this.ys=e*e,this.ws=[],this.gs=!1,this.bs=this.ls.canWrapX()&&!!r&&!!this.ls.getExtent()&&$n(r)==$n(this.ls.getExtent()),this.xs=this.ls.getExtent()?$n(this.ls.getExtent()):null,this.Ms=this.vs.getExtent()?$n(this.vs.getExtent()):null;var a=Yn(i),h=Zn(i),f=Dn(i),c=Gn(i),l=this.ds(a),v=this.ds(h),d=this.ds(f),p=this.ds(c),y=10+(o?Math.max(0,Math.ceil(ui(Fn(i)/(o*o*256*256)))):0);if(this._s(a,h,f,c,l,v,d,p,y),this.gs){var m=1/0;this.ws.forEach((function(t,n,i){m=Math.min(m,t.source[0][0],t.source[1][0],t.source[2][0])})),this.ws.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-m>this.xs/2){var n=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];n[0][0]-m>this.xs/2&&(n[0][0]-=this.xs),n[1][0]-m>this.xs/2&&(n[1][0]-=this.xs),n[2][0]-m>this.xs/2&&(n[2][0]-=this.xs);var i=Math.min(n[0][0],n[1][0],n[2][0]);Math.max(n[0][0],n[1][0],n[2][0])-i.5&&f<1,v=!1;if(a>0){if(this.vs.isGlobal()&&this.Ms)v=$n(yn([t,n,i,r]))/this.Ms>.25||v;!l&&this.ls.isGlobal()&&f&&(v=f>.25||v)}if(!(!v&&this.ps&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3]))||Kn(h,this.ps)){var d=0;if(!(v||isFinite(e[0])&&isFinite(e[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(u[0])&&isFinite(u[1])))if(a>0)v=!0;else if(1!=(d=(isFinite(e[0])&&isFinite(e[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(s[0])&&isFinite(s[1])?0:2)+(isFinite(u[0])&&isFinite(u[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(a>0){if(!v){var p=[(t[0]+i[0])/2,(t[1]+i[1])/2],y=this.ds(p),m=void 0;if(l)m=(vi(e[0],c)+vi(s[0],c))/2-vi(y[0],c);else m=(e[0]+s[0])/2-y[0];var w=(e[1]+s[1])/2-y[1];v=m*m+w*w>this.ys}if(v){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){var g=[(n[0]+i[0])/2,(n[1]+i[1])/2],b=this.ds(g),x=[(r[0]+t[0])/2,(r[1]+t[1])/2],M=this.ds(x);this._s(t,n,g,x,e,o,b,M,a-1),this._s(x,g,i,r,M,b,s,u,a-1)}else{var _=[(t[0]+n[0])/2,(t[1]+n[1])/2],S=this.ds(_),O=[(i[0]+r[0])/2,(i[1]+r[1])/2],j=this.ds(O);this._s(t,_,O,r,e,S,j,u,a-1),this._s(_,n,i,O,S,o,s,j,a-1)}return}}if(l){if(!this.bs)return;this.gs=!0}0==(11&d)&&this.Ss(t,i,r,e,s,u),0==(14&d)&&this.Ss(t,i,n,e,s,o),d&&(0==(13&d)&&this.Ss(n,r,t,o,u,e),0==(7&d)&&this.Ss(n,r,i,o,u,s))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.ws.forEach((function(n,i,r){var e=n.source;kn(t,e[0]),kn(t,e[1]),kn(t,e[2])})),t},t.prototype.getTriangles=function(){return this.ws},t}(),Uc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Bc=function(t){function n(n,i,r,e,o,s,u,a,h,f,c,l){var v=t.call(this,o,ct,{interpolate:!!l})||this;v.Os=void 0!==c&&c,v.kt=u,v.js=a,v.qt=null,v.Es=i,v.Ts=e,v.As=s||o,v.Ps=[],v.Cs=null,v.ks=0;var d=e.getTileCoordExtent(v.As),p=v.Ts.getExtent(),y=v.Es.getExtent(),m=p?Wn(d,p):d;if(0===Fn(m))return v.state=pt,v;var w=n.getExtent();w&&(y=y?Wn(y,w):w);var g=e.getResolution(v.As[0]),b=wf(n,r,m,g);if(!isFinite(b)||b<=0)return v.state=pt,v;var x=void 0!==f?f:.5;if(v.Is=new qc(n,r,m,y,b*x,g),0===v.Is.getTriangles().length)return v.state=pt,v;v.ks=i.getZForResolution(b);var M=v.Is.calculateSourceExtent();if(y&&(n.canWrapX()?(M[1]=oi(M[1],y[1],y[3]),M[3]=oi(M[3],y[1],y[3])):M=Wn(M,y)),Fn(M)){for(var _=i.getTileRangeForExtentAndZ(M,v.ks),S=_.minX;S<=_.maxX;S++)for(var O=_.minY;O<=_.maxY;O++){var j=h(v.ks,S,O,u);j&&v.Ps.push(j)}0===v.Ps.length&&(v.state=pt)}else v.state=pt;return v}return Uc(n,t),n.prototype.getImage=function(){return this.qt},n.prototype.Ns=function(){var t=[];if(this.Ps.forEach(function(n,i,r){n&&n.getState()==vt&&t.push({extent:this.Es.getTileCoordExtent(n.tileCoord),image:n.getImage()})}.bind(this)),this.Ps.length=0,0===t.length)this.state=dt;else{var n=this.As[0],i=this.Ts.getTileSize(n),r="number"==typeof i?i:i[0],e="number"==typeof i?i:i[1],o=this.Ts.getResolution(n),s=this.Es.getResolution(this.ks),u=this.Ts.getTileCoordExtent(this.As);this.qt=gf(r,e,this.kt,s,this.Es.getExtent(),o,u,this.Is,t,this.js,this.Os,this.interpolate),this.state=vt}this.changed()},n.prototype.load=function(){if(this.state==ct){this.state=lt,this.changed();var t=0;this.Cs=[],this.Ps.forEach(function(n,i,r){var e=n.getState();if(e==ct||e==lt){t++;var o=$(n,L,(function(i){var r=n.getState();r!=vt&&r!=dt&&r!=pt||(H(o),0===--t&&(this.Ls(),this.Ns()))}),this);this.Cs.push(o)}}.bind(this)),0===t?setTimeout(this.Ns.bind(this),0):this.Ps.forEach((function(t,n,i){t.getState()==ct&&t.load()}))}},n.prototype.Ls=function(){this.Cs.forEach(H),this.Cs=null},n.prototype.release=function(){this.qt&&(So(this.qt.getContext("2d")),df.push(this.qt),this.qt=null),t.prototype.release.call(this)},n}(xt),Xc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Vc(t,n,i){var r=i?t.LINEAR:t.NEAREST;t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,r)}function Wc(t,n,i,r,e,o){var s,u,a=t.getGL();i instanceof Float32Array?(s=a.FLOAT,t.getExtension("OES_texture_float"),u=null!==t.getExtension("OES_texture_float_linear")):(s=a.UNSIGNED_BYTE,u=!0);Vc(a,n,o&&u);var h,f=i.byteLength/r[1],c=1;switch(f%8==0?c=8:f%4==0?c=4:f%2==0&&(c=2),e){case 1:h=a.LUMINANCE;break;case 2:h=a.LUMINANCE_ALPHA;break;case 3:h=a.RGB;break;case 4:h=a.RGBA;break;default:throw new Error("Unsupported number of bands: ".concat(e))}var l=a.getParameter(a.UNPACK_ALIGNMENT);a.pixelStorei(a.UNPACK_ALIGNMENT,c),a.texImage2D(a.TEXTURE_2D,0,h,r[0],r[1],0,h,s,i),a.pixelStorei(a.UNPACK_ALIGNMENT,l)}var Yc=null;var Zc=function(t){function n(n){var i=t.call(this)||this;i.tile,i.textures=[],i.cr=i.cr.bind(i),i.zs=Qu(n.grid.getTileSize(n.tile.tileCoord[0])),i.js=n.gutter||0,i.bandCount=NaN,i.us=n.helper;var r=new mc(zf,Ff);return r.fromArray([0,1,1,1,1,0,0,0]),i.us.flushBufferData(r),i.coords=r,i.setTile(n.tile),i}return Xc(n,t),n.prototype.setTile=function(t){if(t!==this.tile)if(this.tile&&this.tile.removeEventListener(L,this.cr),this.tile=t,this.textures.length=0,this.loaded=t.getState()===vt,this.loaded)this.Rs();else{if(t instanceof ko){var n=t.getImage();n instanceof Image&&!n.crossOrigin&&(n.crossOrigin="anonymous")}t.addEventListener(L,this.cr)}},n.prototype.Rs=function(){var t=this.us,n=t.getGL(),i=this.tile;if(i instanceof ko||i instanceof Bc){var r=n.createTexture();return this.textures.push(r),this.bandCount=4,void function(t,n,i,r){Vc(t,n,r),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,i)}(n,r,i.getImage(),i.interpolate)}var e=i.getSize(),o=[e[0]+2*this.js,e[1]+2*this.js],s=i.getData(),u=s instanceof Float32Array,a=o[0]*o[1],h=u?Float32Array:Uint8Array,f=h.BYTES_PER_ELEMENT,c=s.byteLength/o[1];this.bandCount=Math.floor(c/f/o[0]);var l=Math.ceil(this.bandCount/4);if(1===l){r=n.createTexture();return this.textures.push(r),void Wc(t,r,s,o,this.bandCount,i.interpolate)}for(var v=new Array(l),d=0;d=v;--d)for(var p=a.getTileRangeForExtentAndZ(n,d,this.Ys),y=a.getResolution(d),m=p.minX;m<=p.maxX;++m)for(var w=p.minY;w<=p.maxY;++w){var g=Oh(d,m,w,this.Zs),b=dl(u,g),x=void 0,M=void 0;if(l.containsKey(b)&&(M=(x=l.get(b)).tile),!x||x.tile.key!==u.getKey())if(M=u.getTile(d,m,w,t.pixelRatio,e.projection),x)if(this.iu(M))x.setTile(M);else{var _=M.getInterimTile();x.setTile(_)}else x=new Zc({tile:M,grid:a,helper:this.helper,gutter:h}),l.set(b,x);ll(r,x,d);var S=M.getKey();c[S]=!0,M.getState()===ct&&(t.tileQueue.isKeyQueued(S)||t.tileQueue.enqueue([M,f,a.getTileCoordCenter(g),y]))}},n.prototype.renderFrame=function(t){this.Zi=t,this.renderComplete=!0;var n=this.helper.getGL();this.preRender(n,t);var i=t.viewState,r=this.getLayer().getRenderSource(),e=r.getTileGridForProjection(i.projection),s=r.getGutterForProjection(i.projection),u=vl(t,t.extent),a=e.getZForResolution(i.resolution,r.zDirection),h={};if(t.nextExtent){var f=e.getZForResolution(i.nextResolution,r.zDirection),c=vl(t,t.nextExtent);this.enqueueTiles(t,c,f,h)}this.enqueueTiles(t,u,a,h);for(var l={},v=o(this),d=t.time,y=!1,m=h[a],w=0,g=m.length;w=x;--M){if(this.ru(e,b,M,h))break}}this.helper.useProgram(this.Ks),this.helper.prepareDraw(t,!y);for(var _=Object.keys(h).map(Number).sort(p),S=i.center[0],O=i.center[1],j=0,E=_.length;j0&&Wn(H=e.getTileCoordExtent(b),u,H),this.helper.setUniformFloatVec4(ul.RENDER_EXTENT,H),this.helper.setUniformFloatValue(ul.RESOLUTION,i.resolution),this.helper.setUniformFloatValue(ul.ZOOM,i.zoom),this.helper.drawElements(0,this.Qs.getSize())}}}this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);for(var J=this.helper.getCanvas(),Q=this.tu;Q.canExpireCache();){var tt;(tt=Q.pop()).dispose()}return t.postRenderFunctions.push((function(t,n){r.expireCache(n.viewState.projection,fl)})),this.postRender(n,t),J},n.prototype.getData=function(t){if(!this.helper.getGL())return null;var n=this.Zi;if(!n)return null;var i=this.getLayer(),r=tn(n.pixelToCoordinateTransform,t.slice()),e=n.viewState,o=i.getExtent();if(o&&!bn(Lr(o,e.projection),r))return null;var s,u,a,h=i.getSources(yn([r]),e.resolution);for(s=h.length-1;s>=0;--s)if("ready"===(u=h[s]).getState()){if(a=u.getTileGridForProjection(e.projection),u.getWrapX())break;var f=a.getExtent();if(!f||bn(f,r))break}if(s<0)return null;for(var c=this.tu,l=a.getZForResolution(e.resolution);l>=a.getMinZoom();--l){var v=a.getTileCoordForCoordAndZ(r,l),d=dl(u,v);if(c.containsKey(d)){var p=c.get(d);if(p.loaded){var y=a.getOrigin(l),m=Qu(a.getTileSize(l)),w=a.getResolution(l),g=(r[0]-y[0])/w-v[1]*m[0],b=(y[1]-r[1])/w-v[2]*m[1];return p.getPixelData(g,b)}}}return null},n.prototype.ru=function(t,n,i,r){var e=t.getTileRangeForTileCoordAndZ(n,i,this.Ys);if(!e)return!1;for(var o=!0,s=this.tu,u=this.getLayer().getRenderSource(),a=e.minX;a<=e.maxX;++a)for(var h=e.minY;h<=e.maxY;++h){var f=dl(u,[i,a,h]),c=!1;if(s.containsKey(f)){var l=s.get(f);l.loaded&&(ll(r,l,i),c=!0)}c||(o=!1)}return o},n.prototype.removeHelper=function(){if(this.helper){var n=this.tu;n.forEach((function(t){return t.dispose()})),n.clear()}t.prototype.removeHelper.call(this)},n.prototype.disposeInternal=function(){var n=this.helper;n&&(n.getGL().deleteProgram(this.Ks),delete this.Ks,n.deleteBuffer(this.Qs));t.prototype.disposeInternal.call(this),delete this.Qs,delete this.tu,delete this.Zi},n}(ol),yl=1,ml=2,wl=4,gl=8,bl=16,xl=31,Ml=0,_l={};function Sl(t){if("number"==typeof t)return yl;if("boolean"==typeof t)return gl;if("string"==typeof t)return Uo(t)?wl|ml:ml;if(!Array.isArray(t))throw new Error("Unhandled value type: ".concat(JSON.stringify(t)));var n=t;if(n.every((function(t){return"number"==typeof t})))return 3===n.length||4===n.length?wl|bl:bl;if("string"!=typeof n[0])throw new Error("Expected an expression operator but received: ".concat(JSON.stringify(n)));var i=_l[n[0]];if(void 0===i)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(n)));return i.getReturnType(n.slice(1))}function Ol(t){return ui(t)%1==0}function jl(t){var n=t.toString();return-1===n.indexOf(".")?n+".0":n}function El(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return"vec".concat(t.length,"(").concat(t.map(jl).join(", "),")")}function Tl(t){var n=Go(t).slice();return n.length<4&&n.push(1),El(n.map((function(t,n){return n<3?t/255:t})))}function Al(t,n){return void 0===t.stringLiteralsMap[n]&&(t.stringLiteralsMap[n]=Object.keys(t.stringLiteralsMap).length),t.stringLiteralsMap[n]}function Pl(t,n){return jl(Al(t,n))}function Cl(t,n,i){if(Array.isArray(n)&&"string"==typeof n[0]){var r=_l[n[0]];if(void 0===r)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(n)));return r.toGlsl(t,n.slice(1),i)}var e=Sl(n);if((e&yl)>0)return jl(n);if((e&gl)>0)return n.toString();if((e&ml)>0&&(void 0===i||i==ml))return Pl(t,n.toString());if((e&wl)>0&&(void 0===i||i==wl))return Tl(n);if((e&bl)>0)return El(n);throw new Error("Unexpected expression ".concat(n," (expected type ").concat(i,")"))}function kl(t){if(!(Sl(t)&yl))throw new Error("A numeric value was expected, got ".concat(JSON.stringify(t)," instead"))}function Il(t){for(var n=0;nn)throw new Error("At most ".concat(n," arguments were expected, got ").concat(t.length," instead"))}function Gl(t){if(t.length%2!=0)throw new Error("An even amount of arguments was expected, got ".concat(t," instead"))}function Dl(t,n){if(!Ol(n))throw new Error("Could not infer only one type from the following expression: ".concat(JSON.stringify(t)))}function ql(t){return"u_var_"+t}_l.get={getReturnType:function(t){return xl},toGlsl:function(t,n){zl(n,1),Nl(n[0]);var i=n[0].toString();return-1===t.attributes.indexOf(i)&&t.attributes.push(i),(t.inFragmentShader?"v_":"a_")+i}},_l.var={getReturnType:function(t){return xl},toGlsl:function(t,n){zl(n,1),Nl(n[0]);var i=n[0].toString();return-1===t.variables.indexOf(i)&&t.variables.push(i),ql(i)}};var Ul="u_paletteTextures";_l.palette={getReturnType:function(t){return wl},toGlsl:function(t,n){zl(n,2),kl(n[0]);var i=Cl(t,n[0]),r=n[1];if(!Array.isArray(r))throw new Error("The second argument of palette must be an array");for(var e=r.length,o=new Uint8Array(4*e),s=0;s"]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," > ").concat(Cl(t,n[1]),")")}},_l[">="]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," >= ").concat(Cl(t,n[1]),")")}},_l["<"]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," < ").concat(Cl(t,n[1]),")")}},_l["<="]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,2),Il(n),"(".concat(Cl(t,n[0])," <= ").concat(Cl(t,n[1]),")")}},_l["=="]=Xl("=="),_l["!="]=Xl("!="),_l["!"]={getReturnType:function(t){return gl},toGlsl:function(t,n){return zl(n,1),Ll(n[0]),"(!".concat(Cl(t,n[0]),")")}},_l.all=Vl("&&"),_l.any=Vl("||"),_l.between={getReturnType:function(t){return gl},toGlsl:function(t,n){zl(n,3),Il(n);var i=Cl(t,n[1]),r=Cl(t,n[2]),e=Cl(t,n[0]);return"(".concat(e," >= ").concat(i," && ").concat(e," <= ").concat(r,")")}},_l.array={getReturnType:function(t){return bl},toGlsl:function(t,n){Rl(n,2),Fl(n,4),Il(n);var i=n.map((function(n){return Cl(t,n,yl)}));return"vec".concat(n.length,"(").concat(i.join(", "),")")}},_l.color={getReturnType:function(t){return wl},toGlsl:function(t,n){Rl(n,3),Fl(n,4),Il(n);var i=n;3===n.length&&i.push(1);var r=n.map((function(n,i){return Cl(t,n,yl)+(i<3?" / 255.0":"")}));return"vec".concat(n.length,"(").concat(r.join(", "),")")}},_l.interpolate={getReturnType:function(t){for(var n=wl|yl,i=3;i=1;a-=2){var h=Cl(t,n[a]),f=Cl(t,n[a+1],e);u="(".concat(o," == ").concat(h," ? ").concat(f," : ").concat(u||s,")")}return u}},_l.case={getReturnType:function(t){for(var n=xl,i=1;i=0;o-=2){var a=Cl(t,n[o]),h=Cl(t,n[o+1],e);u="(".concat(a," ? ").concat(h," : ").concat(u||s,")")}return u}};var Wl=function(){function t(){this.uniforms=[],this.attributes=[],this.varyings=[],this.sizeExpression="vec2(1.0)",this.rotationExpression="0.0",this.offsetExpression="vec2(0.0)",this.colorExpression="vec4(1.0)",this.texCoordExpression="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression="false",this.rotateWithView=!1}return t.prototype.addUniform=function(t){return this.uniforms.push(t),this},t.prototype.addAttribute=function(t){return this.attributes.push(t),this},t.prototype.addVarying=function(t,n,i){return this.varyings.push({name:t,type:n,expression:i}),this},t.prototype.setSizeExpression=function(t){return this.sizeExpression=t,this},t.prototype.setRotationExpression=function(t){return this.rotationExpression=t,this},t.prototype.setSymbolOffsetExpression=function(t){return this.offsetExpression=t,this},t.prototype.setColorExpression=function(t){return this.colorExpression=t,this},t.prototype.setTextureCoordinateExpression=function(t){return this.texCoordExpression=t,this},t.prototype.setFragmentDiscardExpression=function(t){return this.discardExpression=t,this},t.prototype.setSymbolRotateWithView=function(t){return this.rotateWithView=t,this},t.prototype.getSizeExpression=function(){return this.sizeExpression},t.prototype.getOffsetExpression=function(){return this.offsetExpression},t.prototype.getColorExpression=function(){return this.colorExpression},t.prototype.getTextureCoordinateExpression=function(){return this.texCoordExpression},t.prototype.getFragmentDiscardExpression=function(){return this.discardExpression},t.prototype.getSymbolVertexShader=function(t){var n=this.rotateWithView?"u_offsetScaleMatrix * u_offsetRotateMatrix":"u_offsetScaleMatrix",i=this.attributes,r=this.varyings;return t&&(i=i.concat("vec4 a_hitColor"),r=r.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n".concat(this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n"),"\nattribute vec2 a_position;\nattribute float a_index;\n").concat(i.map((function(t){return"attribute "+t+";"})).join("\n"),"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n").concat(r.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n"),"\nvoid main(void) {\n mat4 offsetMatrix = ").concat(n,";\n vec2 halfSize = ").concat(this.sizeExpression," * 0.5;\n vec2 offset = ").concat(this.offsetExpression,";\n float angle = ").concat(this.rotationExpression,";\n float offsetX;\n float offsetY;\n if (a_index == 0.0) {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n } else if (a_index == 1.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else if (a_index == 2.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n }\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n vec4 texCoord = ").concat(this.texCoordExpression,";\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n v_quadCoord = vec2(u, v);\n").concat(r.map((function(t){return" "+t.name+" = "+t.expression+";"})).join("\n"),"\n}")},t.prototype.getSymbolFragmentShader=function(t){var n=t?" if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;":"",i=this.varyings;return t&&(i=i.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n".concat(this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n"),"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n").concat(i.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n"),"\nvoid main(void) {\n if (").concat(this.discardExpression,") { discard; }\n gl_FragColor = ").concat(this.colorExpression,";\n gl_FragColor.rgb *= gl_FragColor.a;\n").concat(n,"\n}")},t}();function Yl(t){var n=t.symbol,i=void 0!==n.size?n.size:1,r=n.color||"white",e=n.textureCoord||[0,0,1,1],o=n.offset||[0,0],s=void 0!==n.opacity?n.opacity:1,u=void 0!==n.rotation?n.rotation:0,a={inFragmentShader:!1,variables:[],attributes:[],stringLiteralsMap:{},functions:{}},h=Cl(a,i,bl|yl),f=Cl(a,o,bl),c=Cl(a,e,bl),l=Cl(a,u,yl),v={inFragmentShader:!0,variables:a.variables,attributes:[],stringLiteralsMap:a.stringLiteralsMap,functions:{}},d=Cl(v,r,wl),p=Cl(v,s,yl),y="1.0",m="vec2(".concat(Cl(v,i,bl|yl),").x");switch(n.symbolType){case"square":case"image":break;case"circle":y="(1.0-smoothstep(1.-4./".concat(m,",1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))");break;case"triangle":var w="(v_quadCoord*2.-1.)",g="(atan(".concat(w,".x,").concat(w,".y))");y="(1.0-smoothstep(.5-3./".concat(m,",.5,cos(floor(.5+").concat(g,"/2.094395102)*2.094395102-").concat(g,")*length(").concat(w,")))");break;default:throw new Error("Unexpected symbol type: "+n.symbolType)}var b=(new Wl).setSizeExpression("vec2(".concat(h,")")).setRotationExpression(l).setSymbolOffsetExpression(f).setTextureCoordinateExpression(c).setSymbolRotateWithView(!!n.rotateWithView).setColorExpression("vec4(".concat(d,".rgb, ").concat(d,".a * ").concat(p," * ").concat(y,")"));if(t.filter){var x=Cl(v,t.filter,gl);b.setFragmentDiscardExpression("!".concat(x))}var M={};if(v.variables.forEach((function(n){var i=ql(n);b.addUniform("float ".concat(i)),M[i]=function(){if(!t.variables||void 0===t.variables[n])throw new Error("The following variable is missing from the style: ".concat(n));var i=t.variables[n];return"string"==typeof i&&(i=Al(a,i)),void 0!==i?i:-9999999}})),"image"===n.symbolType&&n.src){var _=new Image;_.crossOrigin=void 0===n.crossOrigin?"anonymous":n.crossOrigin,_.src=n.src,b.addUniform("sampler2D u_texture").setColorExpression(b.getColorExpression()+" * texture2D(u_texture, v_texCoord)"),M.u_texture=_}return v.attributes.forEach((function(t){-1===a.attributes.indexOf(t)&&a.attributes.push(t),b.addVarying("v_".concat(t),"float","a_".concat(t))})),a.attributes.forEach((function(t){b.addAttribute("float a_".concat(t))})),{builder:b,attributes:a.attributes.map((function(t){return{name:t,callback:function(n,i){var r=i[t];return"string"==typeof r&&(r=Al(a,r)),void 0!==r?r:-9999999}}})),uniforms:M}}var Zl=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$l=function(t){function n(n){var i=t.call(this,{extent:n.extent,origin:n.origin,origins:n.origins,resolutions:n.resolutions,tileSize:n.tileSize,tileSizes:n.tileSizes,sizes:n.sizes})||this;return i.eu=n.matrixIds,i}return Zl(n,t),n.prototype.getMatrixId=function(t){return this.eu[t]},n.prototype.getMatrixIds=function(){return this.eu},n}(xf),Kl=$l;function Hl(t,n,i){var r=[],e=[],o=[],s=[],u=[],a=void 0!==i?i:[],h=yr(t.SupportedCRS),f=h.getMetersPerUnit(),c="ne"==h.getAxisOrientation().substr(0,2);return t.TileMatrix.sort((function(t,n){return n.ScaleDenominator-t.ScaleDenominator})),t.TileMatrix.forEach((function(n){if(!(a.length>0)||b(a,(function(i){return n.Identifier==i.TileMatrix||-1===n.Identifier.indexOf(":")&&t.Identifier+":"+n.Identifier===i.TileMatrix}))){e.push(n.Identifier);var i=28e-5*n.ScaleDenominator/f,h=n.TileWidth,l=n.TileHeight;c?o.push([n.TopLeftCorner[1],n.TopLeftCorner[0]]):o.push(n.TopLeftCorner),r.push(i),s.push(h==l?h:[h,l]),u.push([n.MatrixWidth,n.MatrixHeight])}})),new $l({extent:n,origins:o,resolutions:r,matrixIds:e,tileSizes:s,sizes:u})}var Jl=function(){function t(t){this.ou=t.opacity,this.su=t.rotateWithView,this.Dr=t.rotation,this.uu=t.scale,this.au=Qu(t.scale),this.hu=t.displacement,this.fu=t.declutterMode}return t.prototype.clone=function(){var n=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(n)?n.slice():n,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})},t.prototype.getOpacity=function(){return this.ou},t.prototype.getRotateWithView=function(){return this.su},t.prototype.getRotation=function(){return this.Dr},t.prototype.getScale=function(){return this.uu},t.prototype.getScaleArray=function(){return this.au},t.prototype.getDisplacement=function(){return this.hu},t.prototype.getDeclutterMode=function(){return this.fu},t.prototype.getAnchor=function(){return r()},t.prototype.getImage=function(t){return r()},t.prototype.getHitDetectionImage=function(){return r()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return r()},t.prototype.getImageSize=function(){return r()},t.prototype.getOrigin=function(){return r()},t.prototype.getSize=function(){return r()},t.prototype.setDisplacement=function(t){this.hu=t},t.prototype.setOpacity=function(t){this.ou=t},t.prototype.setRotateWithView=function(t){this.su=t},t.prototype.setRotation=function(t){this.Dr=t},t.prototype.setScale=function(t){this.uu=t,this.au=Qu(t)},t.prototype.listenImageChange=function(t){r()},t.prototype.load=function(){r()},t.prototype.unlistenImageChange=function(t){r()},t}(),Ql=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),tv=function(t){function n(n){var i=this,r=void 0!==n.rotateWithView&&n.rotateWithView;return(i=t.call(this,{opacity:1,rotateWithView:r,rotation:void 0!==n.rotation?n.rotation:0,scale:void 0!==n.scale?n.scale:1,displacement:void 0!==n.displacement?n.displacement:[0,0],declutterMode:n.declutterMode})||this).qt=void 0,i.cu=null,i.lu=void 0!==n.fill?n.fill:null,i._o=[0,0],i.Zt=n.points,i.vu=void 0!==n.radius?n.radius:n.radius1,i.du=n.radius2,i.$t=void 0!==n.angle?n.angle:0,i.pu=void 0!==n.stroke?n.stroke:null,i.W=null,i.yu=null,i.render(),i}return Ql(n,t),n.prototype.clone=function(){var t=this.getScale(),i=new n({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return i.setOpacity(this.getOpacity()),i},n.prototype.getAnchor=function(){var t=this.W;if(!t)return null;var n=this.getDisplacement();return[t[0]/2-n[0],t[1]/2+n[1]]},n.prototype.getAngle=function(){return this.$t},n.prototype.getFill=function(){return this.lu},n.prototype.setFill=function(t){this.lu=t,this.render()},n.prototype.getHitDetectionImage=function(){return this.cu||this.mu(this.yu),this.cu},n.prototype.getImage=function(t){var n=this.qt[t];if(!n){var i=this.yu,r=_o(i.size*t,i.size*t);this.wu(i,r,t),n=r.canvas,this.qt[t]=n}return n},n.prototype.getPixelRatio=function(t){return t},n.prototype.getImageSize=function(){return this.W},n.prototype.getImageState=function(){return po},n.prototype.getOrigin=function(){return this._o},n.prototype.getPoints=function(){return this.Zt},n.prototype.getRadius=function(){return this.vu},n.prototype.getRadius2=function(){return this.du},n.prototype.getSize=function(){return this.W},n.prototype.getStroke=function(){return this.pu},n.prototype.setStroke=function(t){this.pu=t,this.render()},n.prototype.listenImageChange=function(t){},n.prototype.load=function(){},n.prototype.unlistenImageChange=function(t){},n.prototype.gu=function(t,n,i){if(0===n||this.Zt===1/0||"bevel"!==t&&"miter"!==t)return n;var r=this.vu,e=void 0===this.du?r:this.du;if(r0,6);var c=void 0!==r.src?lo:po;return i.Mu=void 0!==r.color?Go(r.color):null,i.Nu=vv(h,f,void 0!==i.Iu?i.Iu:null,i.Bt,c,i.Mu),i.Lu=void 0!==r.offset?r.offset:[0,0],i.zu=void 0!==r.offsetOrigin?r.offsetOrigin:av,i._o=null,i.W=void 0!==r.size?r.size:null,i}return pv(n,t),n.prototype.clone=function(){var t=this.getScale();return new n({anchor:this.xe.slice(),anchorOrigin:this.Pu,anchorXUnits:this.Cu,anchorYUnits:this.ku,color:this.Mu&&this.Mu.slice?this.Mu.slice():this.Mu||void 0,crossOrigin:this.Bt,imgSize:this.Iu,offset:this.Lu.slice(),offsetOrigin:this.zu,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:Array.isArray(t)?t.slice():t,size:null!==this.W?this.W.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})},n.prototype.getAnchor=function(){var t=this.Au;if(!t){t=this.xe;var n=this.getSize();if(this.Cu==ev||this.ku==ev){if(!n)return null;t=this.xe.slice(),this.Cu==ev&&(t[0]*=n[0]),this.ku==ev&&(t[1]*=n[1])}if(this.Pu!=av){if(!n)return null;t===this.xe&&(t=this.xe.slice()),this.Pu!=hv&&this.Pu!=uv||(t[0]=-t[0]+n[0]),this.Pu!=sv&&this.Pu!=uv||(t[1]=-t[1]+n[1])}this.Au=t}var i=this.getDisplacement();return[t[0]-i[0],t[1]+i[1]]},n.prototype.setAnchor=function(t){this.xe=t,this.Au=null},n.prototype.getColor=function(){return this.Mu},n.prototype.getImage=function(t){return this.Nu.getImage(t)},n.prototype.getPixelRatio=function(t){return this.Nu.getPixelRatio(t)},n.prototype.getImageSize=function(){return this.Nu.getSize()},n.prototype.getImageState=function(){return this.Nu.getImageState()},n.prototype.getHitDetectionImage=function(){return this.Nu.getHitDetectionImage()},n.prototype.getOrigin=function(){if(this._o)return this._o;var t=this.Lu;if(this.zu!=av){var n=this.getSize(),i=this.Nu.getSize();if(!n||!i)return null;t=t.slice(),this.zu!=hv&&this.zu!=uv||(t[0]=i[0]-n[0]-t[0]),this.zu!=sv&&this.zu!=uv||(t[1]=i[1]-n[1]-t[1])}return this._o=t,this._o},n.prototype.getSrc=function(){return this.Nu.getSrc()},n.prototype.getSize=function(){return this.W?this.W:this.Nu.getSize()},n.prototype.listenImageChange=function(t){this.Nu.addEventListener(L,t)},n.prototype.load=function(){this.Nu.load()},n.prototype.unlistenImageChange=function(t){this.Nu.removeEventListener(L,t)},n}(Jl),mv=function(){function t(t){var n=t||{};this.Mu=void 0!==n.color?n.color:null,this.Ru=n.lineCap,this.Fu=void 0!==n.lineDash?n.lineDash:null,this.Gu=n.lineDashOffset,this.Du=n.lineJoin,this.qu=n.miterLimit,this.Uu=n.width}return t.prototype.clone=function(){var n=this.getColor();return new t({color:Array.isArray(n)?n.slice():n||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.Mu},t.prototype.getLineCap=function(){return this.Ru},t.prototype.getLineDash=function(){return this.Fu},t.prototype.getLineDashOffset=function(){return this.Gu},t.prototype.getLineJoin=function(){return this.Du},t.prototype.getMiterLimit=function(){return this.qu},t.prototype.getWidth=function(){return this.Uu},t.prototype.setColor=function(t){this.Mu=t},t.prototype.setLineCap=function(t){this.Ru=t},t.prototype.setLineDash=function(t){this.Fu=t},t.prototype.setLineDashOffset=function(t){this.Gu=t},t.prototype.setLineJoin=function(t){this.Du=t},t.prototype.setMiterLimit=function(t){this.qu=t},t.prototype.setWidth=function(t){this.Uu=t},t}(),wv=function(){function t(t){var n=t||{};this.Hr=null,this.Bu=_v,void 0!==n.geometry&&this.setGeometry(n.geometry),this.lu=void 0!==n.fill?n.fill:null,this.Lt=void 0!==n.image?n.image:null,this.hn=void 0!==n.renderer?n.renderer:null,this.Xu=void 0!==n.hitDetectionRenderer?n.hitDetectionRenderer:null,this.pu=void 0!==n.stroke?n.stroke:null,this.eo=void 0!==n.text?n.text:null,this.Vu=n.zIndex}return t.prototype.clone=function(){var n=this.getGeometry();return n&&"object"==typeof n&&(n=n.clone()),new t({geometry:n,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer(),stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.hn},t.prototype.setRenderer=function(t){this.hn=t},t.prototype.setHitDetectionRenderer=function(t){this.Xu=t},t.prototype.getHitDetectionRenderer=function(){return this.Xu},t.prototype.getGeometry=function(){return this.Hr},t.prototype.getGeometryFunction=function(){return this.Bu},t.prototype.getFill=function(){return this.lu},t.prototype.setFill=function(t){this.lu=t},t.prototype.getImage=function(){return this.Lt},t.prototype.setImage=function(t){this.Lt=t},t.prototype.getStroke=function(){return this.pu},t.prototype.setStroke=function(t){this.pu=t},t.prototype.getText=function(){return this.eo},t.prototype.setText=function(t){this.eo=t},t.prototype.getZIndex=function(){return this.Vu},t.prototype.setGeometry=function(t){"function"==typeof t?this.Bu=t:"string"==typeof t?this.Bu=function(n){return n.get(t)}:t?void 0!==t&&(this.Bu=function(){return t}):this.Bu=_v,this.Hr=t},t.prototype.setZIndex=function(t){this.Vu=t},t}();function gv(t){var n;if("function"==typeof t)n=t;else{var i;if(Array.isArray(t))i=t;else St("function"==typeof t.getZIndex,41),i=[t];n=function(){return i}}return n}var bv=null;function xv(t,n){if(!bv){var i=new rv({color:"rgba(255,255,255,0.4)"}),r=new mv({color:"#3399CC",width:1.25});bv=[new wv({image:new iv({fill:i,stroke:r,radius:5}),fill:i,stroke:r})]}return bv}function Mv(){var t={},n=[255,255,255,1],i=[0,153,255,1];return t.Polygon=[new wv({fill:new rv({color:[255,255,255,.5]})})],t.MultiPolygon=t.Polygon,t.LineString=[new wv({stroke:new mv({color:n,width:5})}),new wv({stroke:new mv({color:i,width:3})})],t.MultiLineString=t.LineString,t.Circle=t.Polygon.concat(t.LineString),t.Point=[new wv({image:new iv({radius:6,fill:new rv({color:i}),stroke:new mv({color:n,width:1.5})}),zIndex:1/0})],t.MultiPoint=t.Point,t.GeometryCollection=t.Polygon.concat(t.LineString,t.Point),t}function _v(t){return t.getGeometry()}var Sv=wv,Ov="point",jv="line",Ev=function(){function t(t){var n=t||{};this.Wu=n.font,this.Dr=n.rotation,this.su=n.rotateWithView,this.uu=n.scale,this.au=Qu(void 0!==n.scale?n.scale:1),this.eo=n.text,this.Yu=n.textAlign,this.Zu=n.justify,this.$u=n.textBaseline,this.lu=void 0!==n.fill?n.fill:new rv({color:"#333"}),this.Ku=void 0!==n.maxAngle?n.maxAngle:Math.PI/4,this.Hu=void 0!==n.placement?n.placement:Ov,this.Ju=!!n.overflow,this.pu=void 0!==n.stroke?n.stroke:null,this.Qu=void 0!==n.offsetX?n.offsetX:0,this.ta=void 0!==n.offsetY?n.offsetY:0,this.na=n.backgroundFill?n.backgroundFill:null,this.ia=n.backgroundStroke?n.backgroundStroke:null,this.Ai=void 0===n.padding?null:n.padding}return t.prototype.clone=function(){var n=this.getScale();return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(n)?n.slice():n,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0})},t.prototype.getOverflow=function(){return this.Ju},t.prototype.getFont=function(){return this.Wu},t.prototype.getMaxAngle=function(){return this.Ku},t.prototype.getPlacement=function(){return this.Hu},t.prototype.getOffsetX=function(){return this.Qu},t.prototype.getOffsetY=function(){return this.ta},t.prototype.getFill=function(){return this.lu},t.prototype.getRotateWithView=function(){return this.su},t.prototype.getRotation=function(){return this.Dr},t.prototype.getScale=function(){return this.uu},t.prototype.getScaleArray=function(){return this.au},t.prototype.getStroke=function(){return this.pu},t.prototype.getText=function(){return this.eo},t.prototype.getTextAlign=function(){return this.Yu},t.prototype.getJustify=function(){return this.Zu},t.prototype.getTextBaseline=function(){return this.$u},t.prototype.getBackgroundFill=function(){return this.na},t.prototype.getBackgroundStroke=function(){return this.ia},t.prototype.getPadding=function(){return this.Ai},t.prototype.setOverflow=function(t){this.Ju=t},t.prototype.setFont=function(t){this.Wu=t},t.prototype.setMaxAngle=function(t){this.Ku=t},t.prototype.setOffsetX=function(t){this.Qu=t},t.prototype.setOffsetY=function(t){this.ta=t},t.prototype.setPlacement=function(t){this.Hu=t},t.prototype.setRotateWithView=function(t){this.su=t},t.prototype.setFill=function(t){this.lu=t},t.prototype.setRotation=function(t){this.Dr=t},t.prototype.setScale=function(t){this.uu=t,this.au=Qu(void 0!==t?t:1)},t.prototype.setStroke=function(t){this.pu=t},t.prototype.setText=function(t){this.eo=t},t.prototype.setTextAlign=function(t){this.Yu=t},t.prototype.setJustify=function(t){this.Zu=t},t.prototype.setTextBaseline=function(t){this.$u=t},t.prototype.setBackgroundFill=function(t){this.na=t},t.prototype.setBackgroundStroke=function(t){this.ia=t},t.prototype.setPadding=function(t){this.Ai=t},t}(),Tv=function(){function t(t){this.ra,this.ea,this.oa,this.sa=void 0===t||t,this.ua=0}return t.prototype.insertItem=function(t){var n={prev:void 0,next:void 0,data:t},i=this.oa;if(i){var r=i.next;n.prev=i,n.next=r,i.next=n,r&&(r.prev=n),i===this.ea&&(this.ea=n)}else this.ra=n,this.ea=n,this.sa&&(n.next=n,n.prev=n);this.oa=n,this.ua++},t.prototype.removeItem=function(){var t=this.oa;if(t){var n=t.next,i=t.prev;n&&(n.prev=i),i&&(i.next=n),this.oa=n||i,this.ra===this.ea?(this.oa=void 0,this.ra=void 0,this.ea=void 0):this.ra===t?this.ra=this.oa:this.ea===t&&(this.ea=i?this.oa.prev:this.oa),this.ua--}},t.prototype.firstItem=function(){if(this.oa=this.ra,this.oa)return this.oa.data},t.prototype.lastItem=function(){if(this.oa=this.ea,this.oa)return this.oa.data},t.prototype.nextItem=function(){if(this.oa&&this.oa.next)return this.oa=this.oa.next,this.oa.data},t.prototype.getNextItem=function(){if(this.oa&&this.oa.next)return this.oa.next.data},t.prototype.prevItem=function(){if(this.oa&&this.oa.prev)return this.oa=this.oa.prev,this.oa.data},t.prototype.getPrevItem=function(){if(this.oa&&this.oa.prev)return this.oa.prev.data},t.prototype.getCurrItem=function(){if(this.oa)return this.oa.data},t.prototype.setFirstItem=function(){this.sa&&this.oa&&(this.ra=this.oa,this.ea=this.oa.prev)},t.prototype.concat=function(t){if(t.oa){if(this.oa){var n=this.oa.next;this.oa.next=t.ra,t.ra.prev=this.oa,n.prev=t.ea,t.ea.next=n,this.ua+=t.ua}else this.oa=t.oa,this.ra=t.ra,this.ea=t.ea,this.ua=t.ua;t.oa=void 0,t.ra=void 0,t.ea=void 0,t.ua=0}},t.prototype.getLength=function(){return this.ua},t}(),Av=i(72),Pv=function(){function t(t){this.aa=new Av(t),this.ha={}}return t.prototype.insert=function(t,n){var i={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:n};this.aa.insert(i),this.ha[o(n)]=i},t.prototype.load=function(t,n){for(var i=new Array(n.length),r=0,e=n.length;ri.highWaterMark&&(i.highWaterMark=t)},n.prototype.useTile=function(t,n,i,r){},n}(zv),Gv=function(t){function n(n,i){var r=t.call(this,n)||this;return r.tile=i,r}return Rv(n,t),n}(c),Dv=Fv,qv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Uv=function(t){function n(i){var r=t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,opaque:i.opaque,projection:i.projection,state:i.state,tileGrid:i.tileGrid,tilePixelRatio:i.tilePixelRatio,wrapX:i.wrapX,transition:i.transition,interpolate:i.interpolate,key:i.key,attributionsCollapsible:i.attributionsCollapsible,zDirection:i.zDirection})||this;return r.wa=r.tileUrlFunction===n.prototype.tileUrlFunction,r.tileLoadFunction=i.tileLoadFunction,i.tileUrlFunction&&(r.tileUrlFunction=i.tileUrlFunction),r.urls=null,i.urls?r.setUrls(i.urls):i.url&&r.setUrl(i.url),r.ga={},r}return qv(n,t),n.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},n.prototype.getTileUrlFunction=function(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction},n.prototype.getUrls=function(){return this.urls},n.prototype.handleTileChange=function(t){var n,i=t.target,r=o(i),e=i.getState();e==lt?(this.ga[r]=!0,n=Cv):r in this.ga&&(delete this.ga[r],n=e==dt?Iv:e==vt?kv:void 0),null!=n&&this.dispatchEvent(new Gv(n,i))},n.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},n.prototype.setTileUrlFunction=function(t,n){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==n?this.setKey(n):this.changed()},n.prototype.setUrl=function(t){var n=If(t);this.urls=n,this.setUrls(n)},n.prototype.setUrls=function(t){this.urls=t;var n=t.join("\n");this.wa?this.setTileUrlFunction(Pf(t,this.tileGrid),n):this.setKey(n)},n.prototype.tileUrlFunction=function(t,n,i){},n.prototype.useTile=function(t,n,i){var r=jh(t,n,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},n}(Dv),Bv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Xv(t,n){t.getImage().src=n}var Vv=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,opaque:n.opaque,projection:n.projection,state:n.state,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction?n.tileLoadFunction:Xv,tilePixelRatio:n.tilePixelRatio,tileUrlFunction:n.tileUrlFunction,url:n.url,urls:n.urls,wrapX:n.wrapX,transition:n.transition,interpolate:r,key:n.key,attributionsCollapsible:n.attributionsCollapsible,zDirection:n.zDirection})||this).crossOrigin=void 0!==n.crossOrigin?n.crossOrigin:null,i.tileClass=void 0!==n.tileClass?n.tileClass:ko,i.tileCacheForProjection={},i.tileGridForProjection={},i.ba=n.reprojectionErrorThreshold,i.xa=!1,i}return Bv(n,t),n.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},n.prototype.expireCache=function(t,n){var i=this.getTileCacheForProjection(t);for(var r in this.tileCache.expireCache(this.tileCache==i?n:{}),this.tileCacheForProjection){var e=this.tileCacheForProjection[r];e.expireCache(e==i?n:{})}},n.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Sr(this.getProjection(),t)?0:this.getGutter()},n.prototype.getGutter=function(){return 0},n.prototype.getKey=function(){var n=t.prototype.getKey.call(this);return this.getInterpolate()||(n+=":disable-interpolation"),n},n.prototype.getOpaque=function(n){return!(this.getProjection()&&n&&!Sr(this.getProjection(),n))&&t.prototype.getOpaque.call(this,n)},n.prototype.getTileGridForProjection=function(t){var n=this.getProjection();if(!this.tileGrid||n&&!Sr(n,t)){var i=o(t);return i in this.tileGridForProjection||(this.tileGridForProjection[i]=Mf(t)),this.tileGridForProjection[i]}return this.tileGrid},n.prototype.getTileCacheForProjection=function(t){var n=this.getProjection();if(!n||Sr(n,t))return this.tileCache;var i=o(t);return i in this.tileCacheForProjection||(this.tileCacheForProjection[i]=new Ih(this.tileCache.highWaterMark)),this.tileCacheForProjection[i]},n.prototype.Ma=function(t,n,i,r,e,o){var s=[t,n,i],u=this.getTileCoordForTileUrlFunction(s,e),a=u?this.tileUrlFunction(u,r,e):void 0,h=new this.tileClass(s,void 0!==a?ct:pt,void 0!==a?a:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return h.key=o,h.addEventListener(L,this.handleTileChange.bind(this)),h},n.prototype.getTile=function(t,n,i,r,e){var o=this.getProjection();if(o&&e&&!Sr(o,e)){var s=this.getTileCacheForProjection(e),u=[t,n,i],a=void 0,h=Eh(u);s.containsKey(h)&&(a=s.get(h));var f=this.getKey();if(a&&a.key==f)return a;var c=this.getTileGridForProjection(o),l=this.getTileGridForProjection(e),v=this.getTileCoordForTileUrlFunction(u,e),d=new Bc(o,c,e,l,u,v,this.getTilePixelRatio(r),this.getGutter(),function(t,n,i,r){return this.getTileInternal(t,n,i,r,o)}.bind(this),this.ba,this.xa,this.getInterpolate());return d.key=f,a?(d.interimTile=a,d.refreshInterimChain(),s.replace(h,d)):s.set(h,d),d}return this.getTileInternal(t,n,i,r,o||e)},n.prototype.getTileInternal=function(t,n,i,r,e){var o=null,s=jh(t,n,i),u=this.getKey();if(this.tileCache.containsKey(s)){if((o=this.tileCache.get(s)).key!=u){var a=o;o=this.Ma(t,n,i,r,e,u),a.getState()==ct?o.interimTile=a.interimTile:o.interimTile=a,o.refreshInterimChain(),this.tileCache.replace(s,o)}}else o=this.Ma(t,n,i,r,e,u),this.tileCache.set(s,o);return o},n.prototype.setRenderReprojectionEdges=function(t){if(this.xa!=t){for(var n in this.xa=t,this.tileCacheForProjection)this.tileCacheForProjection[n].clear();this.changed()}},n.prototype.setTileGridForProjection=function(t,n){var i=yr(t);if(i){var r=o(i);r in this.tileGridForProjection||(this.tileGridForProjection[r]=n)}},n}(Uv),Wv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Yv(t){var n,i,r=t[0],e=new Array(r),o=1<>=1;return e.join("")}var Zv=function(t){function n(n){var i=this,r=void 0!==n.hidpi&&n.hidpi,e=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(e=n.interpolate),(i=t.call(this,{cacheSize:n.cacheSize,crossOrigin:"anonymous",interpolate:e,opaque:!0,projection:yr("EPSG:3857"),reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:"loading",tileLoadFunction:n.tileLoadFunction,tilePixelRatio:r?2:1,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:n.zDirection})||this)._a=r,i.Sa=void 0!==n.culture?n.culture:"en-us",i.Oa=void 0!==n.maxZoom?n.maxZoom:-1,i.ja=n.key,i.Ea=n.imagerySet,Zh("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+i.Ea+"?uriScheme=https&include=ImageryProviders&key="+i.ja+"&c="+i.Sa,i.handleImageryMetadataResponse.bind(i),void 0,"jsonp"),i}return Wv(n,t),n.prototype.getApiKey=function(){return this.ja},n.prototype.getImagerySet=function(){return this.Ea},n.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var n=t.resourceSets[0].resources[0],i=-1==this.Oa?n.zoomMax:this.Oa,r=Tf(this.getProjection()),e=this._a?2:1,o=n.imageWidth==n.imageHeight?n.imageWidth/e:[n.imageWidth/e,n.imageHeight/e],s=Of({extent:r,minZoom:n.zoomMin,maxZoom:i,tileSize:o});this.tileGrid=s;var u=this.Sa,a=this._a;if(this.tileUrlFunction=Cf(n.imageUrlSubdomains.map((function(t){var i=[0,0,0],r=n.imageUrl.replace("{subdomain}",t).replace("{culture}",u);return function(t,n,e){if(t){Oh(t[0],t[1],t[2],i);var o=r;return a&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",Yv(i))}}}))),n.imageryProviders){var h=Or(yr("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var i=[],r=t.viewState,e=this.getTileGrid(),o=e.getZForResolution(r.resolution,this.zDirection),s=e.getTileCoordForCoordAndZ(r.center,o)[0];return n.imageryProviders.map((function(n){for(var r=!1,e=n.coverageAreas,o=0,u=e.length;o=a.zoomMin&&s<=a.zoomMax){var f=a.bbox;if(Kn(ni([f[1],f[0],f[3],f[2]],h),t.extent)){r=!0;break}}}r&&i.push(n.attribution)})),i.push('Terms of Use'),i}.bind(this))}this.setState("ready")}else this.setState("error")},n}(Vv),$v=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Kv=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=void 0!==r.projection?r.projection:"EPSG:3857",s=void 0!==r.tileGrid?r.tileGrid:Of({extent:Tf(o),maxResolution:r.maxResolution,maxZoom:r.maxZoom,minZoom:r.minZoom,tileSize:r.tileSize});return(i=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,opaque:r.opaque,projection:o,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:s,tileLoadFunction:r.tileLoadFunction,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:r.tileUrlFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this).js=void 0!==r.gutter?r.gutter:0,i}return $v(n,t),n.prototype.getGutter=function(){return this.js},n}(Vv),Hv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Jv=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,maxZoom:void 0!==n.maxZoom?n.maxZoom:18,minZoom:n.minZoom,projection:n.projection,transition:n.transition,wrapX:n.wrapX,zDirection:n.zDirection})||this;return i.Ta=n.account,i.Aa=n.map||"",i.Pa=n.config||{},i.Ca={},i.ka(),i}return Hv(n,t),n.prototype.getConfig=function(){return this.Pa},n.prototype.updateConfig=function(t){A(this.Pa,t),this.ka()},n.prototype.setConfig=function(t){this.Pa=t||{},this.ka()},n.prototype.ka=function(){var t=JSON.stringify(this.Pa);if(this.Ca[t])this.Ia(this.Ca[t]);else{var n="https://"+this.Ta+".carto.com/api/v1/map";this.Aa&&(n+="/named/"+this.Aa);var i=new XMLHttpRequest;i.addEventListener("load",this.Na.bind(this,t)),i.addEventListener("error",this.La.bind(this)),i.open("POST",n),i.setRequestHeader("Content-type","application/json"),i.send(JSON.stringify(this.Pa))}},n.prototype.Na=function(t,n){var i=n.target;if(!i.status||i.status>=200&&i.status<300){var r=void 0;try{r=JSON.parse(i.responseText)}catch(t){return void this.setState("error")}this.Ia(r),this.Ca[t]=r,this.setState("ready")}else this.setState("error")},n.prototype.La=function(t){this.setState("error")},n.prototype.Ia=function(t){var n="https://"+t.cdn_url.https+"/"+this.Ta+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(n)},n}(Kv),Qv="addfeature",td="changefeature",nd="clear",id="removefeature",rd="featuresloadstart",ed="featuresloadend",od="featuresloaderror",sd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ud=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.feature=i,e.features=r,e}return sd(n,t),n}(c),ad=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{attributions:r.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:void 0===r.wrapX||r.wrapX})||this).on,i.once,i.un,i.U=j,i.ze=r.format,i.za=void 0===r.overlaps||r.overlaps,i.Fe=r.url,void 0!==r.loader?i.U=r.loader:void 0!==i.Fe&&(St(i.ze,7),i.U=Vh(i.Fe,i.ze)),i.Ra=void 0!==r.strategy?r.strategy:Wh;var e,o,s=void 0===r.useSpatialIndex||r.useSpatialIndex;return i.Fa=s?new Pv:null,i.Ga=new Pv,i.Da=0,i.qa={},i.Ua={},i.Ba={},i.Xa={},i.Va=null,Array.isArray(r.features)?o=r.features:r.features&&(o=(e=r.features).getArray()),s||void 0!==e||(e=new ft(o)),void 0!==o&&i.addFeaturesInternal(o),void 0!==e&&i.Wa(e),i}return sd(n,t),n.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},n.prototype.addFeatureInternal=function(t){var n=o(t);if(this.Ya(n,t)){this.Za(n,t);var i=t.getGeometry();if(i){var r=i.getExtent();this.Fa&&this.Fa.insert(r,t)}else this.qa[n]=t;this.dispatchEvent(new ud(Qv,t))}else this.Va&&this.Va.remove(t)},n.prototype.Za=function(t,n){this.Xa[t]=[$(n,L,this.$a,this),$(n,l,this.$a,this)]},n.prototype.Ya=function(t,n){var i=!0,r=n.getId();return void 0!==r&&(r.toString()in this.Ua?i=!1:this.Ua[r.toString()]=n),i&&(St(!(t in this.Ba),30),this.Ba[t]=n),i},n.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},n.prototype.addFeaturesInternal=function(t){for(var n=[],i=[],r=[],e=0,s=t.length;e0},n.prototype.refresh=function(){this.clear(!0),this.Ga.clear(),t.prototype.refresh.call(this)},n.prototype.removeLoadedExtent=function(t){var n,i=this.Ga;i.forEachInExtent(t,(function(i){if(An(i.extent,t))return n=i,!0})),n&&i.remove(n)},n.prototype.removeFeature=function(t){if(t){var n=o(t);n in this.qa?delete this.qa[n]:this.Fa&&this.Fa.remove(t),this.removeFeatureInternal(t)&&this.changed()}},n.prototype.removeFeatureInternal=function(t){var n=o(t),i=this.Xa[n];if(i){i.forEach(H),delete this.Xa[n];var r=t.getId();return void 0!==r&&delete this.Ua[r.toString()],delete this.Ba[n],this.dispatchEvent(new ud(id,t)),t}},n.prototype.Ka=function(t){var n=!1;for(var i in this.Ua)if(this.Ua[i]===t){delete this.Ua[i],n=!0;break}return n},n.prototype.setLoader=function(t){this.U=t},n.prototype.setUrl=function(t){St(this.ze,7),this.Fe=t,this.setLoader(Vh(t,this.ze))},n}(zv),hd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fd=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,wrapX:n.wrapX})||this;return i.resolution=void 0,i.distance=void 0!==n.distance?n.distance:20,i.minDistance=n.minDistance||0,i.interpolationRatio=0,i.features=[],i.geometryFunction=n.geometryFunction||function(t){var n=t.getGeometry();return St("Point"==n.getType(),10),n},i.Ha=n.createCluster,i.source=null,i.Ja=i.refresh.bind(i),i.updateDistance(i.distance,i.minDistance),i.setSource(n.source||null),i}return hd(n,t),n.prototype.clear=function(n){this.features.length=0,t.prototype.clear.call(this,n)},n.prototype.getDistance=function(){return this.distance},n.prototype.getSource=function(){return this.source},n.prototype.loadFeatures=function(t,n,i){this.source.loadFeatures(t,n,i),n!==this.resolution&&(this.resolution=n,this.refresh())},n.prototype.setDistance=function(t){this.updateDistance(t,this.minDistance)},n.prototype.setMinDistance=function(t){this.updateDistance(this.distance,t)},n.prototype.getMinDistance=function(){return this.minDistance},n.prototype.setSource=function(t){this.source&&this.source.removeEventListener(L,this.Ja),this.source=t,t&&t.addEventListener(L,this.Ja),this.refresh()},n.prototype.refresh=function(){this.clear(),this.cluster(),this.addFeatures(this.features)},n.prototype.updateDistance=function(t,n){var i=0===t?0:Math.min(n,t)/t,r=t!==this.distance||this.interpolationRatio!==i;this.distance=t,this.minDistance=n,this.interpolationRatio=i,r&&this.refresh()},n.prototype.cluster=function(){if(void 0!==this.resolution&&this.source)for(var t=[1/0,1/0,-1/0,-1/0],n=this.distance*this.resolution,i=this.source.getFeatures(),r={},e=0,s=i.length;e=0;--r){var e=this.geometryFunction(t[r]);e?Vi(i,e.getCoordinates()):t.splice(r,1)}Ji(i,1/t.length);var o=qn(n),s=this.interpolationRatio,u=new Se([i[0]*(1-s)+o[0]*s,i[1]*(1-s)+o[1]*s]);return this.Ha?this.Ha(u,t):new Et({geometry:u,features:t})},n}(ad),cd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ld=function(t){function n(n){var i=this,r=void 0===n.projection?"EPSG:3857":n.projection,e=n.tileGrid;if(void 0===e&&r&&(e=Of({extent:Tf(r),maxResolution:n.maxResolution,maxZoom:n.maxZoom,minZoom:n.minZoom,tileSize:n.tileSize})),(i=t.call(this,{cacheSize:.1,attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,projection:r,tileGrid:e,opaque:n.opaque,state:n.state,tilePixelRatio:n.tilePixelRatio,wrapX:n.wrapX,transition:n.transition,interpolate:n.interpolate})||this).js=void 0!==n.gutter?n.gutter:0,i.jo=n.tileSize?Qu(n.tileSize):null,!i.jo&&n.tilePixelRatio&&e){var o=Qu(e.getTileSize(0));i.jo=[o[0]*n.tilePixelRatio,o[1]*n.tilePixelRatio]}return i.Oo=null,i.ga={},i.U=n.loader,i.cr=i.cr.bind(i),i.bandCount=void 0===n.bandCount?4:n.bandCount,i}return cd(n,t),n.prototype.setTileSizes=function(t){this.Oo=t},n.prototype.getTileSize=function(t){if(this.Oo)return this.Oo[t];if(this.jo)return this.jo;var n=this.getTileGrid();return n?Qu(n.getTileSize(t)):[256,256]},n.prototype.getGutterForProjection=function(t){return this.js},n.prototype.setLoader=function(t){this.U=t},n.prototype.getTile=function(t,n,i,r,e){var o=this.getTileSize(t),s=jh(t,n,i);if(this.tileCache.containsKey(s))return this.tileCache.get(s);var u=this.U;var a=A({tileCoord:[t,n,i],loader:function(){return T((function(){return u(t,n,i)}))},size:o},this.tileOptions),h=new _t(a);return h.key=this.getKey(),h.addEventListener(L,this.cr),this.tileCache.set(s,h),h},n.prototype.cr=function(t){var n,i=t.target,r=o(i),e=i.getState();e==lt?(this.ga[r]=!0,n=Cv):r in this.ga&&(delete this.ga[r],n=e==dt?Iv:e==vt?kv:void 0),n&&this.dispatchEvent(new Gv(n,i))},n}(Dv);const vd=new ArrayBuffer(4),dd=new Float32Array(vd),pd=new Uint32Array(vd),yd=new Uint32Array(512),md=new Uint32Array(512);for(let t=0;t<256;++t){const n=t-127;n<-27?(yd[t]=0,yd[256|t]=32768,md[t]=24,md[256|t]=24):n<-14?(yd[t]=1024>>-n-14,yd[256|t]=1024>>-n-14|32768,md[t]=-n-1,md[256|t]=-n-1):n<=15?(yd[t]=n+15<<10,yd[256|t]=n+15<<10|32768,md[t]=13,md[256|t]=13):n<128?(yd[t]=31744,yd[256|t]=64512,md[t]=24,md[256|t]=24):(yd[t]=31744,yd[256|t]=64512,md[t]=13,md[256|t]=13)}const wd=new Uint32Array(2048),gd=new Uint32Array(64),bd=new Uint32Array(64);wd[0]=0;for(let t=1;t<1024;++t){let n=t<<13,i=0;for(;0==(8388608&n);)i-=8388608,n<<=1;n&=-8388609,i+=947912704,wd[t]=n|i}for(let t=1024;t<2048;++t)wd[t]=939524096+(t-1024<<13);gd[0]=0;for(let t=1;t<31;++t)gd[t]=t<<23;gd[31]=1199570944,gd[32]=2147483648;for(let t=33;t<63;++t)gd[t]=2147483648+(t-32<<23);gd[63]=3347054592,bd[0]=0;for(let t=1;t<64;++t)bd[t]=32===t?0:1024;function xd(t){const n=t>>10;return pd[0]=wd[bd[n]+(1023&t)]+gd[n],dd[0]}const Md=Reflect.getPrototypeOf(Uint8Array).prototype,_d=Reflect.getOwnPropertyDescriptor(Md,Symbol.toStringTag).get;function Sd(t){return void 0!==_d.call(t)}const Od=Object.prototype.toString;function jd(t){return!!ArrayBuffer.isView(t)&&(!Sd(t)&&"[object DataView]"===Od.call(t))}function Ed(t,n){if(!jd(t))throw new TypeError("First argument to getFloat16 function must be a DataView");for(var i=arguments.length,r=new Array(i>2?i-2:0),e=2;eCd.set(t,n)))}async function Id(t){const n=Cd.get(t.Compression);if(!n)throw new Error(`Unknown compression method identifier: ${t.Compression}`);return new(await n())(t)}function Nd(t,n,i){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return new(Object.getPrototypeOf(t).constructor)(n*i*r)}function Ld(t,n,i,r,e){const o=n/r,s=i/e;return t.map((t=>{const u=Nd(t,r,e);for(let a=0;a{const u=Nd(t,r,e);for(let a=0;ai.e(226).then(i.bind(i,966)).then((t=>t.default)))),kd(5,(()=>i.e(611).then(i.bind(i,611)).then((t=>t.default)))),kd(6,(()=>{throw new Error("old style JPEG compression is not supported.")})),kd(7,(()=>i.e(382).then(i.bind(i,382)).then((t=>t.default)))),kd([8,32946],(()=>Promise.all([i.e(247),i.e(356)]).then(i.bind(i,356)).then((t=>t.default)))),kd(32773,(()=>i.e(395).then(i.bind(i,395)).then((t=>t.default)))),kd(34887,(()=>Promise.all([i.e(247),i.e(54)]).then(i.bind(i,54)).then((t=>t.default)))),kd(50001,(()=>i.e(629).then(i.bind(i,629)).then((t=>t.default))));var Ud=class{constructor(t,n,i,r,e,o){this.fileDirectory=t,this.geoKeys=n,this.dataView=i,this.littleEndian=r,this.tiles=e?{}:null,this.isTiled=!t.StripOffsets;const s=t.PlanarConfiguration;if(this.planarConfiguration=void 0===s?1:s,1!==this.planarConfiguration&&2!==this.planarConfiguration)throw new Error("Invalid planar configuration.");this.source=o}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.geoKeys}getWidth(){return this.fileDirectory.ImageWidth}getHeight(){return this.fileDirectory.ImageLength}getSamplesPerPixel(){return void 0!==this.fileDirectory.SamplesPerPixel?this.fileDirectory.SamplesPerPixel:1}getTileWidth(){return this.isTiled?this.fileDirectory.TileWidth:this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.TileLength:void 0!==this.fileDirectory.RowsPerStrip?Math.min(this.fileDirectory.RowsPerStrip,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(t){return this.isTiled||(t+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-t*this.getTileHeight()}getBytesPerPixel(){let t=0;for(let n=0;n=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${t} is out of range.`);return Math.ceil(this.fileDirectory.BitsPerSample[t]/8)}getReaderForSample(t){const n=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,i=this.fileDirectory.BitsPerSample[t];switch(n){case 1:if(i<=8)return DataView.prototype.getUint8;if(i<=16)return DataView.prototype.getUint16;if(i<=32)return DataView.prototype.getUint32;break;case 2:if(i<=8)return DataView.prototype.getInt8;if(i<=16)return DataView.prototype.getInt16;if(i<=32)return DataView.prototype.getInt32;break;case 3:switch(i){case 16:return function(t,n){return Ed(this,t,n)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1}getBitsPerSample(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.fileDirectory.BitsPerSample[t]}getArrayForSample(t,n){return qd(this.getSampleFormat(t),this.getBitsPerSample(t),n)}async getTileOrStrip(t,n,i,r,e){const o=Math.ceil(this.getWidth()/this.getTileWidth()),s=Math.ceil(this.getHeight()/this.getTileHeight());let u;const{tiles:a}=this;let h,f;1===this.planarConfiguration?u=n*o+t:2===this.planarConfiguration&&(u=i*o*s+n*o+t),this.isTiled?(h=this.fileDirectory.TileOffsets[u],f=this.fileDirectory.TileByteCounts[u]):(h=this.fileDirectory.StripOffsets[u],f=this.fileDirectory.StripByteCounts[u]);const c=(await this.source.fetch([{offset:h,length:f}],e))[0];let l;return null!==a&&a[u]?l=a[u]:(l=(async()=>{let t=await r.decode(this.fileDirectory,c);const i=this.getSampleFormat(),e=this.getBitsPerSample();return function(t,n){return(1!==t&&2!==t||!(n<=32)||n%8!=0)&&(3!==t||16!==n&&32!==n&&64!==n)}(i,e)&&(t=function(t,n,i,r,e,o,s){const u=new DataView(t),a=2===i?1:r,h=qd(n,e,2===i?s*o:s*o*r),f=parseInt("1".repeat(e),2);if(1===n){let t;t=1===i?r*e:e;let n=o*t;0!=(7&n)&&(n=n+7&-8);for(let t=0;t>8-e-v&f;else if(v+e<=16)h[c]=u.getUint16(l)>>16-e-v&f;else if(v+e<=24){const t=u.getUint16(l)<<8|u.getUint8(l+2);h[c]=t>>24-e-v&f}else h[c]=u.getUint32(l)>>32-e-v&f}}}}return h.buffer}(t,i,this.planarConfiguration,this.getSamplesPerPixel(),e,this.getTileWidth(),this.getBlockHeight(n))),t})(),null!==a&&(a[u]=l)),{x:t,y:n,sample:i,data:await l}}async _readRaster(t,n,i,r,e,o,s,u,a){const h=this.getTileWidth(),f=this.getTileHeight(),c=this.getWidth(),l=this.getHeight(),v=Math.max(Math.floor(t[0]/h),0),d=Math.min(Math.ceil(t[2]/h),Math.ceil(c/h)),p=Math.max(Math.floor(t[1]/f),0),y=Math.min(Math.ceil(t[3]/f),Math.ceil(l/f)),m=t[2]-t[0];let w=this.getBytesPerPixel();const g=[],b=[];for(let t=0;t{const o=e.data,s=new DataView(o),u=this.getBlockHeight(e.y),a=e.y*f,d=e.x*h,p=a+u,y=(e.x+1)*h,x=b[v],_=Math.min(u,u-(p-t[3]),l-a),S=Math.min(h,h-(y-t[2]),c-d);for(let e=Math.max(0,t[1]-a);e<_;++e)for(let o=Math.max(0,t[0]-d);o6&&void 0!==arguments[6]?arguments[6]:"nearest";switch(s.toLowerCase()){case"nearest":return Fd(t,n,i,r,e,o);case"bilinear":case"linear":return Gd(t,n,i,r,e,o);default:throw new Error(`Unsupported resampling method: '${s}'`)}}(i,t[2]-t[0],t[3]-t[1],o,s,n.length,u):function(t,n,i,r,e){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"nearest";switch(o.toLowerCase()){case"nearest":return Ld(t,n,i,r,e);case"bilinear":case"linear":return Rd(t,n,i,r,e);default:throw new Error(`Unsupported resampling method: '${o}'`)}}(i,t[2]-t[0],t[3]-t[1],o,s,u),e.width=o,e.height=s,e}return i.width=o||t[2]-t[0],i.height=s||t[3]-t[1],i}async readRasters(){let{window:t,samples:n=[],interleave:i,pool:r=null,width:e,height:o,resampleMethod:s,fillValue:u,signal:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const h=t||[0,0,this.getWidth(),this.getHeight()];if(h[0]>h[2]||h[1]>h[3])throw new Error("Invalid subsets");const f=(h[2]-h[0])*(h[3]-h[1]),c=this.getSamplesPerPixel();if(n&&n.length){for(let t=0;t=c)return Promise.reject(new RangeError(`Invalid sample index '${n[t]}'.`))}else for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:{};const a=t||[0,0,this.getWidth(),this.getHeight()];if(a[0]>a[2]||a[1]>a[3])throw new Error("Invalid subsets");const h=this.fileDirectory.PhotometricInterpretation;if(h===Pd.Ie.RGB){let a=[0,1,2];if(this.fileDirectory.ExtraSamples!==Pd.pd.Unspecified&&s){a=[];for(let t=0;t>24)/500+u,h=u-(t[n+2]<<24>>24)/200;a=.95047*(a*a*a>.008856?a*a*a:(a-16/116)/7.787),u=1*(u*u*u>.008856?u*u*u:(u-16/116)/7.787),h=1.08883*(h*h*h>.008856?h*h*h:(h-16/116)/7.787),e=3.2406*a+-1.5372*u+-.4986*h,o=-.9689*a+1.8758*u+.0415*h,s=.0557*a+-.204*u+1.057*h,e=e>.0031308?1.055*e**(1/2.4)-.055:12.92*e,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,r[i]=255*Math.max(0,Math.min(1,e)),r[i+1]=255*Math.max(0,Math.min(1,o)),r[i+2]=255*Math.max(0,Math.min(1,s))}return r}(v);break;default:throw new Error("Unsupported photometric interpretation.")}if(!n){const t=new Uint8Array(p.length/3),n=new Uint8Array(p.length/3),i=new Uint8Array(p.length/3);for(let r=0,e=0;r0&&void 0!==arguments[0]?arguments[0]:null;const n={};if(!this.fileDirectory.GDAL_METADATA)return null;const i=this.fileDirectory.GDAL_METADATA;let r=Ad(i,"Item");r=null===t?r.filter((t=>void 0===Td(t,"sample"))):r.filter((n=>Number(Td(n,"sample"))===t));for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:null;const n=this.fileDirectory.ModelPixelScale,i=this.fileDirectory.ModelTransformation;if(n)return[n[0],-n[1],n[2]];if(i)return[i[0],i[5],i[10]];if(t){const[n,i,r]=t.getResolution();return[n*t.getWidth()/this.getWidth(),i*t.getHeight()/this.getHeight(),r*t.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.geoKeys.GTRasterTypeGeoKey}getBoundingBox(){const t=this.getOrigin(),n=this.getResolution(),i=t[0],r=t[1],e=i+n[0]*this.getWidth(),o=r+n[1]*this.getHeight();return[Math.min(i,e),Math.min(r,o),Math.max(i,e),Math.max(r,o)]}};class Bd{constructor(t){this._dataView=new DataView(t)}get buffer(){return this._dataView.buffer}getUint64(t,n){const i=this.getUint32(t,n),r=this.getUint32(t+4,n);let e;if(n){if(e=i+2**32*r,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*i+r,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}getInt64(t,n){let i=0;const r=(128&this._dataView.getUint8(t+(n?7:0)))>0;let e=!0;for(let o=0;o<8;o++){let s=this._dataView.getUint8(t+(n?o:7-o));r&&(e?0!==s&&(s=255&~(s-1),e=!1):s=255&~s),i+=s*256**o}return r&&(i=-i),i}getUint8(t,n){return this._dataView.getUint8(t,n)}getInt8(t,n){return this._dataView.getInt8(t,n)}getUint16(t,n){return this._dataView.getUint16(t,n)}getInt16(t,n){return this._dataView.getInt16(t,n)}getUint32(t,n){return this._dataView.getUint32(t,n)}getInt32(t,n){return this._dataView.getInt32(t,n)}getFloat16(t,n){return Ed(this._dataView,t,n)}getFloat32(t,n){return this._dataView.getFloat32(t,n)}getFloat64(t,n){return this._dataView.getFloat64(t,n)}}class Xd{constructor(t,n,i,r){this._dataView=new DataView(t),this._sliceOffset=n,this._littleEndian=i,this._bigTiff=r}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(t,n){return this.sliceOffset<=t&&this.sliceTop>=t+n}readUint8(t){return this._dataView.getUint8(t-this._sliceOffset,this._littleEndian)}readInt8(t){return this._dataView.getInt8(t-this._sliceOffset,this._littleEndian)}readUint16(t){return this._dataView.getUint16(t-this._sliceOffset,this._littleEndian)}readInt16(t){return this._dataView.getInt16(t-this._sliceOffset,this._littleEndian)}readUint32(t){return this._dataView.getUint32(t-this._sliceOffset,this._littleEndian)}readInt32(t){return this._dataView.getInt32(t-this._sliceOffset,this._littleEndian)}readFloat32(t){return this._dataView.getFloat32(t-this._sliceOffset,this._littleEndian)}readFloat64(t){return this._dataView.getFloat64(t-this._sliceOffset,this._littleEndian)}readUint64(t){const n=this.readUint32(t),i=this.readUint32(t+4);let r;if(this._littleEndian){if(r=n+2**32*i,!Number.isSafeInteger(r))throw new Error(`${r} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return r}if(r=2**32*n+i,!Number.isSafeInteger(r))throw new Error(`${r} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return r}readInt64(t){let n=0;const i=(128&this._dataView.getUint8(t+(this._littleEndian?7:0)))>0;let r=!0;for(let e=0;e<8;e++){let o=this._dataView.getUint8(t+(this._littleEndian?e:7-e));i&&(r?0!==o&&(o=255&~(o-1),r=!1):o=255&~o),n+=o*256**e}return i&&(n=-n),n}readOffset(t){return this._bigTiff?this.readUint64(t):this.readUint32(t)}}const Vd="\r\n\r\n";function Wd(t){if(void 0!==Object.fromEntries)return Object.fromEntries(t);const n={};for(const[i,r]of t)n[i.toLowerCase()]=r;return n}function Yd(t){return Wd(t.split("\r\n").map((t=>{const n=t.split(":").map((t=>t.trim()));return n[0]=n[0].toLowerCase(),n})))}function Zd(t){let n,i,r;return t&&([,n,i,r]=t.match(/bytes (\d+)-(\d+)\/(\d+)/),n=parseInt(n,10),i=parseInt(i,10),r=parseInt(r,10)),{start:n,end:i,total:r}}class $d{async fetch(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return Promise.all(t.map((t=>this.fetchSlice(t,n))))}async fetchSlice(t){throw new Error(`fetching of slice ${t} not possible, not implemented`)}get fileSize(){return null}async close(){}}var Kd=i(875);function Hd(t,n){const i=Array.isArray(t)?t:Array.from(t),r=Array.isArray(n)?n:Array.from(n);return i.map(((t,n)=>[t,r[n]]))}class Jd extends Error{constructor(t){super(t),Error.captureStackTrace&&Error.captureStackTrace(this,Jd),this.name="AbortError"}}class Qd extends Error{constructor(t,n){super(n),this.errors=t,this.message=n,this.name="AggregateError"}}const tp=Qd;class np{constructor(t,n){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this.offset=t,this.length=n,this.data=i}get top(){return this.offset+this.length}}class ip{constructor(t,n,i){this.offset=t,this.length=n,this.blockIds=i}}class rp extends $d{constructor(t){let{blockSize:n=65536,cacheSize:i=100}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.source=t,this.blockSize=n,this.blockCache=new Kd({max:i}),this.blockRequests=new Map,this.blockIdsToFetch=new Set}get fileSize(){return this.source.fileSize}async fetch(t,n){const i=new Map,r=new Map,e=new Set;for(const{offset:n,length:o}of t){let t=n+o;const{fileSize:s}=this;null!==s&&(t=Math.min(t,s));for(let o=Math.floor(n/this.blockSize)*this.blockSize;osetTimeout(n,t)))}(),this.fetchBlocks(n);for(const t of e){const n=this.blockRequests.get(t),e=this.blockCache.get(t);if(n)r.set(t,n);else{if(!e)throw new Error(`Block ${t} is not in the block requests`);i.set(t,e)}}let o=await Promise.allSettled(Array.from(r.values()));if(o.some((t=>"rejected"===t.status))){const t=new Set;for(const[i,e]of Hd(r.keys(),o)){const{rejected:r,reason:o}=e;r&&"AbortError"===o.name&&o.signal!==n&&(this.blockIdsToFetch.add(i),t.add(i))}if(this.blockIdsToFetch.length>0){this.fetchBlocks(n);for(const n of t){const t=this.blockRequests.get(n);if(!t)throw new Error(`Block ${n} is not in the block requests`);r.set(n,t)}o=await Promise.allSettled(Array.from(r.values()))}}if(o.some((t=>"rejected"===t.status))){if(n&&n.aborted)throw new Jd("Request was aborted");throw new tp(o.filter((t=>"rejected"===t.status)).map((t=>t.reason)),"Request failed")}const s=o.map((t=>t.value)),u=new Map(Hd(Array.from(r.keys()),s));for(const[t,n]of i)u.set(t,n);return this.readSliceData(t,u)}fetchBlocks(t){if(this.blockIdsToFetch.size>0){const n=this.groupBlocks(this.blockIdsToFetch),i=this.source.fetch(n,t);for(let r=0;r{try{const t=(await i)[r],e=n*this.blockSize,o=e-t.offset,s=Math.min(o+this.blockSize,t.data.byteLength),u=t.data.slice(o,s),a=new np(e,u.byteLength,u);return this.blockCache.set(n,a),a}catch(n){throw"AbortError"===n.name&&(n.signal=t),n}finally{this.blockRequests.delete(n)}})();this.blockRequests.set(n,e)}}this.blockIdsToFetch.clear()}}groupBlocks(t){const n=Array.from(t).sort(((t,n)=>t-n));if(0===n.length)return[];let i=[],r=null;const e=[];for(const t of n)null===r||r+1===t?(i.push(t),r=t):(e.push(new ip(i[0]*this.blockSize,i.length*this.blockSize,i)),i=[t],r=t);return e.push(new ip(i[0]*this.blockSize,i.length*this.blockSize,i)),e}readSliceData(t,n){return t.map((t=>{const i=t.offset+t.length,r=Math.floor(t.offset/this.blockSize),e=Math.floor((t.offset+t.length)/this.blockSize),o=new ArrayBuffer(t.length),s=new Uint8Array(o);for(let o=r;o<=e;++o){const r=n.get(o),e=r.offset-t.offset,u=r.top-i;let a,h=0,f=0;e<0?h=-e:e>0&&(f=e),a=u<0?r.length-h:i-r.offset-h;const c=new Uint8Array(r.data,h,a);s.set(c,f)}return o}))}}class ep{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(t){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class op{constructor(t){this.url=t}async request(){let{headers:t,credentials:n,signal:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};throw new Error("request is not implemented")}}class sp extends ep{constructor(t){super(),this.response=t}get status(){return this.response.status}getHeader(t){return this.response.headers.get(t)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class up extends op{constructor(t,n){super(t),this.credentials=n}async request(){let{headers:t,credentials:n,signal:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=await fetch(this.url,{headers:t,credentials:n,signal:i});return new sp(r)}}class ap extends ep{constructor(t,n){super(),this.xhr=t,this.data=n}get status(){return this.xhr.status}getHeader(t){return this.xhr.getResponseHeader(t)}async getData(){return this.data}}class hp extends op{constructRequest(t,n){return new Promise(((i,r)=>{const e=new XMLHttpRequest;e.open("GET",this.url),e.responseType="arraybuffer";for(const[n,i]of Object.entries(t))e.setRequestHeader(n,i);e.onload=()=>{const t=e.response;i(new ap(e,t))},e.onerror=r,e.onabort=()=>r(new Jd("Request aborted")),e.send(),n&&(n.aborted&&e.abort(),n.addEventListener("abort",(()=>e.abort())))}))}async request(){let{headers:t,signal:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return await this.constructRequest(t,n)}}var fp=i(752),cp=i(640),lp=i(630);class vp extends ep{constructor(t,n){super(),this.response=t,this.dataPromise=n}get status(){return this.response.statusCode}getHeader(t){return this.response.headers[t]}async getData(){return await this.dataPromise}}class dp extends op{constructor(t){super(t),this.parsedUrl=lp.parse(this.url),this.httpApi="http:"===this.parsedUrl.protocol?fp:cp}constructRequest(t,n){return new Promise(((i,r)=>{const e=this.httpApi.get({...this.parsedUrl,headers:t},(t=>{const n=new Promise((n=>{const i=[];t.on("data",(t=>{i.push(t)})),t.on("end",(()=>{const t=Buffer.concat(i).buffer;n(t)})),t.on("error",r)}));i(new vp(t,n))}));e.on("error",r),n&&(n.aborted&&e.destroy(new Jd("Request aborted")),n.addEventListener("abort",(()=>e.destroy(new Jd("Request aborted")))))}))}async request(){let{headers:t,signal:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return await this.constructRequest(t,n)}}class pp extends $d{constructor(t,n,i,r){super(),this.client=t,this.headers=n,this.maxRanges=i,this.allowFullFile=r,this._fileSize=null}async fetch(t,n){return this.maxRanges>=t.length?this.fetchSlices(t,n):(this.maxRanges>0&&t.length,Promise.all(t.map((t=>this.fetchSlice(t,n)))))}async fetchSlices(t,n){const i=await this.client.request({headers:{...this.headers,Range:`bytes=${t.map((t=>{let{offset:n,length:i}=t;return`${n}-${n+i}`})).join(",")}`},signal:n});if(i.ok){if(206===i.status){const{type:r,params:e}=function(t){const[n,...i]=t.split(";").map((t=>t.trim()));return{type:n,params:Wd(i.map((t=>t.split("="))))}}(i.getHeader("content-type"));if("multipart/byteranges"===r){const t=function(t,n){let i=null;const r=new TextDecoder("ascii"),e=[],o=`--${n}`,s=`${o}--`;for(let n=0;n<10;++n)r.decode(new Uint8Array(t,n,o.length))===o&&(i=n);if(null===i)throw new Error("Could not find initial boundary");for(;i1){const i=await Promise.all(t.slice(1).map((t=>this.fetchSlice(t,n))));return h.concat(i)}return h}{if(!this.allowFullFile)throw new Error("Server responded with full file");const t=await i.getData();return this._fileSize=t.byteLength,[{data:t,offset:0,length:t.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(t,n){const{offset:i,length:r}=t,e=await this.client.request({headers:{...this.headers,Range:`bytes=${i}-${i+r}`},signal:n});if(e.ok){if(206===e.status){const t=await e.getData(),{total:n}=Zd(e.getHeader("content-range"));return this._fileSize=n||null,{data:t,offset:i,length:r}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const t=await e.getData();return this._fileSize=t.byteLength,{data:t,offset:0,length:t.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function yp(t,n){let{blockSize:i,cacheSize:r}=n;return null===i?t:new rp(t,i,r)}function mp(t){let{headers:n={},credentials:i,maxRanges:r=0,allowFullFile:e=!1,...o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=new up(t,i),u=new pp(s,n,r,e);return yp(u,o)}function wp(t){let{headers:n={},maxRanges:i=0,allowFullFile:r=!1,...e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=new hp(t),s=new pp(o,n,i,r);return yp(s,e)}function gp(t){let{headers:n={},maxRanges:i=0,allowFullFile:r=!1,...e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=new dp(t),s=new pp(o,n,i,r);return yp(s,e)}function bp(t){let{forceXHR:n=!1,...i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"function"!=typeof fetch||n?"undefined"!=typeof XMLHttpRequest?wp(t,i):gp(t,i):mp(t,i)}class xp extends $d{constructor(t){super(),this.file=t}async fetchSlice(t,n){return new Promise(((i,r)=>{const e=this.file.slice(t.offset,t.offset+t.length),o=new FileReader;o.onload=t=>i(t.target.result),o.onerror=r,o.onabort=r,o.readAsArrayBuffer(e),n&&n.addEventListener("abort",(()=>o.abort()))}))}}function Mp(t){switch(t){case Pd.sf.BYTE:case Pd.sf.ASCII:case Pd.sf.SBYTE:case Pd.sf.UNDEFINED:return 1;case Pd.sf.SHORT:case Pd.sf.SSHORT:return 2;case Pd.sf.LONG:case Pd.sf.SLONG:case Pd.sf.FLOAT:case Pd.sf.IFD:return 4;case Pd.sf.RATIONAL:case Pd.sf.SRATIONAL:case Pd.sf.DOUBLE:case Pd.sf.LONG8:case Pd.sf.SLONG8:case Pd.sf.IFD8:return 8;default:throw new RangeError(`Invalid field type: ${t}`)}}function _p(t,n,i,r){let e=null,o=null;const s=Mp(n);switch(n){case Pd.sf.BYTE:case Pd.sf.ASCII:case Pd.sf.UNDEFINED:e=new Uint8Array(i),o=t.readUint8;break;case Pd.sf.SBYTE:e=new Int8Array(i),o=t.readInt8;break;case Pd.sf.SHORT:e=new Uint16Array(i),o=t.readUint16;break;case Pd.sf.SSHORT:e=new Int16Array(i),o=t.readInt16;break;case Pd.sf.LONG:case Pd.sf.IFD:e=new Uint32Array(i),o=t.readUint32;break;case Pd.sf.SLONG:e=new Int32Array(i),o=t.readInt32;break;case Pd.sf.LONG8:case Pd.sf.IFD8:e=new Array(i),o=t.readUint64;break;case Pd.sf.SLONG8:e=new Array(i),o=t.readInt64;break;case Pd.sf.RATIONAL:e=new Uint32Array(2*i),o=t.readUint32;break;case Pd.sf.SRATIONAL:e=new Int32Array(2*i),o=t.readInt32;break;case Pd.sf.FLOAT:e=new Float32Array(i),o=t.readFloat32;break;case Pd.sf.DOUBLE:e=new Float64Array(i),o=t.readFloat64;break;default:throw new RangeError(`Invalid field type: ${n}`)}if(n!==Pd.sf.RATIONAL&&n!==Pd.sf.SRATIONAL)for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:{};const{window:n,width:i,height:r}=t;let{resX:e,resY:o,bbox:s}=t;const u=await this.getImage();let a=u;const h=await this.getImageCount(),f=u.getBoundingBox();if(n&&s)throw new Error('Both "bbox" and "window" passed.');if(i||r){if(n){const[t,i]=u.getOrigin(),[r,e]=u.getResolution();s=[t+n[0]*r,i+n[1]*e,t+n[2]*r,i+n[3]*e]}const t=s||f;if(i){if(e)throw new Error("Both width and resX passed");e=(t[2]-t[0])/i}if(r){if(o)throw new Error("Both width and resY passed");o=(t[3]-t[1])/r}}if(e||o){const t=[];for(let n=0;nt.getWidth()-n.getWidth()));for(let n=0;nr||o&&o>s)break}}let c=n;if(s){const[t,n]=u.getOrigin(),[i,r]=a.getResolution(u);c=[Math.round((s[0]-t)/i),Math.round((s[1]-n)/r),Math.round((s[2]-t)/i),Math.round((s[3]-n)/r)],c=[Math.min(c[0],c[2]),Math.min(c[1],c[3]),Math.max(c[0],c[2]),Math.max(c[1],c[3])]}return a.readRasters({...t,window:c})}}class Ep extends jp{constructor(t,n,i,r){let e=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};super(),this.source=t,this.littleEndian=n,this.bigTiff=i,this.firstIFDOffset=r,this.cache=e.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(t,n){const i=this.bigTiff?4048:1024;return new Xd((await this.source.fetch([{offset:t,length:void 0!==n?n:i}]))[0],t,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(t){const n=this.bigTiff?20:12,i=this.bigTiff?8:2;let r=await this.getSlice(t);const e=this.bigTiff?r.readUint64(t):r.readUint16(t),o=e*n+(this.bigTiff?16:6);r.covers(t,o)||(r=await this.getSlice(t,o));const s={};let u=t+(this.bigTiff?8:2);for(let t=0;t{const n=await this.ifdRequests[t-1];if(0===n.nextIFDByteOffset)throw new Op(t);return this.parseFileDirectoryAt(n.nextIFDByteOffset)})(),this.ifdRequests[t]}async getImage(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=await this.requestIFD(t);return new Ud(n.fileDirectory,n.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let t=0,n=!0;for(;n;)try{await this.requestIFD(t),++t}catch(t){if(!(t instanceof Op))throw t;n=!1}return t}async getGhostValues(){const t=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const n="GDAL_STRUCTURAL_METADATA_SIZE=",i=n.length+100;let r=await this.getSlice(t,i);if(n===_p(r,Pd.sf.ASCII,n.length,t)){const n=_p(r,Pd.sf.ASCII,i,t).split("\n")[0],e=Number(n.split("=")[1].split(" ")[0])+n.length;e>i&&(r=await this.getSlice(t,e));const o=_p(r,Pd.sf.ASCII,e,t);this.ghostValues={},o.split("\n").filter((t=>t.length>0)).map((t=>t.split("="))).forEach((t=>{let[n,i]=t;this.ghostValues[n]=i}))}return this.ghostValues}static async fromSource(t,n,i){const r=(await t.fetch([{offset:0,length:1024}],i))[0],e=new Bd(r),o=e.getUint16(0,0);let s;if(18761===o)s=!0;else{if(19789!==o)throw new TypeError("Invalid byte order value.");s=!1}const u=e.getUint16(2,s);let a;if(42===u)a=!1;else{if(43!==u)throw new TypeError("Invalid magic number.");a=!0;if(8!==e.getUint16(4,s))throw new Error("Unsupported offset byte-size.")}const h=a?e.getUint64(8,s):e.getUint32(4,s);return new Ep(t,s,a,h,n)}close(){return"function"==typeof this.source.close&&this.source.close()}}class Tp extends jp{constructor(t,n){super(),this.mainFile=t,this.overviewFiles=n,this.imageFiles=[t].concat(n),this.fileDirectoriesPerFile=null,this.fileDirectoriesPerFileParsing=null,this.imageCount=null}async parseFileDirectoriesPerFile(){const t=[this.mainFile.parseFileDirectoryAt(this.mainFile.firstIFDOffset)].concat(this.overviewFiles.map((t=>t.parseFileDirectoryAt(t.firstIFDOffset))));return this.fileDirectoriesPerFile=await Promise.all(t),this.fileDirectoriesPerFile}async getImage(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;await this.getImageCount(),await this.parseFileDirectoriesPerFile();let n=0,i=0;for(let r=0;rt.getImageCount())));return this.imageCounts=await Promise.all(t),this.imageCount=this.imageCounts.reduce(((t,n)=>t+n),0),this.imageCount}}async function Ap(t,n){return Ep.fromSource(new xp(t),n)}const Pp="undefined"!=typeof navigator&&navigator.hardwareConcurrency||2;var Cp,kp=class{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pp,n=arguments.length>1?arguments[1]:void 0;this.workers=null,this._awaitingDecoder=null,this.size=t,this.messageId=0,t&&(this._awaitingDecoder=n?Promise.resolve(n):new Promise((t=>{i.e(231).then(i.bind(i,231)).then((n=>{t(n.create)}))})),this._awaitingDecoder.then((n=>{this._awaitingDecoder=null,this.workers=[];for(let i=0;ii.decode(t,n))):new Promise((i=>{const r=this.workers.find((t=>t.idle))||this.workers[Math.floor(Math.random()*this.size)];r.idle=!1;const e=this.messageId++,o=t=>{t.data.id===e&&(r.idle=!0,i(t.data.decoded),r.worker.removeEventListener("message",o))};r.worker.addEventListener("message",o),r.worker.postMessage({fileDirectory:t,buffer:n,id:e},[n])}))}destroy(){this.workers&&(this.workers.forEach((t=>{t.worker.terminate()})),this.workers=null)}},Ip=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Np="STATISTICS_MAXIMUM",Lp="STATISTICS_MINIMUM";function zp(t){try{return t.getBoundingBox()}catch(i){var n=t.fileDirectory;return[0,0,n.ImageWidth,n.ImageLength]}}function Rp(t){try{return t.getOrigin().slice(0,2)}catch(n){return[0,t.fileDirectory.ImageLength]}}function Fp(t,n){try{return t.getResolution(n)}catch(i){return[n.fileDirectory.ImageWidth/t.fileDirectory.ImageWidth,n.fileDirectory.ImageHeight/t.fileDirectory.ImageHeight]}}function Gp(t){var n=t.geoKeys;if(!n)return null;if(n.ProjectedCSTypeGeoKey){if(!(r=yr(i="EPSG:"+n.ProjectedCSTypeGeoKey)))(e=Nt(n.ProjLinearUnitsGeoKey))&&(r=new ei({code:i,units:e}));return r}if(n.GeographicTypeGeoKey){var i,r,e;if(!(r=yr(i="EPSG:"+n.GeographicTypeGeoKey)))(e=Nt(n.GeogAngularUnitsGeoKey))&&(r=new ei({code:i,units:e}));return r}return null}function Dp(t){return t.getImageCount().then((function(n){for(var i=new Array(n),r=0;r1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;const e=await Ep.fromSource(bp(t,i),r),o=await Promise.all(n.map((t=>Ep.fromSource(bp(t,i)))));return new Tp(e,o)}(t.url,t.overviews,n):async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;return Ep.fromSource(bp(t,n),i)}(t.url,n)).then(Dp)}function Up(t,n,i,r,e){if(Array.isArray(t)){var o=t.length;if(!Array.isArray(n)||o!=n.length){var s=new Error(r);throw e(s),s}for(var u=0;ui*t)throw new Error(r)}function Bp(t){return t instanceof Int8Array?-128:t instanceof Int16Array?-32768:t instanceof Int32Array?-2147483648:t instanceof Float32Array?12e-39:0}function Xp(t){return t instanceof Int8Array?127:t instanceof Uint8Array||t instanceof Uint8ClampedArray?255:t instanceof Int16Array?32767:t instanceof Uint16Array?65535:t instanceof Int32Array?2147483647:t instanceof Uint32Array?4294967295:t instanceof Float32Array?34e37:255}var Vp=function(t){function n(n){var i=t.call(this,{state:"loading",tileGrid:null,projection:null,opaque:n.opaque,transition:n.transition,interpolate:!1!==n.interpolate,wrapX:n.wrapX})||this;i.Qa=n.sources;var r=i.Qa.length;i.th=n.sourceOptions,i.nh=new Array(r),i.ih=new Array(r),i.rh,i.eh,i.oh,i.sh=!1!==n.normalize,i.uh=!1,i.V=null,i.ah=n.convertToRGB?"readRGB":"readRasters",i.setKey(i.Qa.map((function(t){return t.url})).join(","));for(var e=i,o=new Array(r),s=0;sw.length&&(h=o.length-w.length);var T=o[o.length-1]/w[w.length-1];l.ih[f]=T;var A=w.map((function(t){return t*T}));E="Resolution mismatch for source ".concat(f,", got [").concat(A,"] but expected [").concat(o,"]");Up(o.slice(h,o.length),A,.02,E,l.viewRejector)}else o=w,l.ih[f]=1;r?Up(r.slice(h,r.length),m,.01,"Tile size mismatch for source ".concat(f),l.viewRejector):r=m,e?Up(e.slice(h,e.length),y,0,"Tile size mismatch for source ".concat(f),l.viewRejector):e=y,l.nh[f]=c.reverse()},l=this,v=0;v=0;--d){var w=Gp(m[d]);if(w){this.projection=w;break}}}this.rh=s,this.eh=u,this.oh=a;t:for(v=0;vl||h>l;)f.push([Math.ceil(a/l),Math.ceil(h/l)]),l+=l;break;case $p:for(var v=a,d=h;v>l||d>l;)f.push([Math.ceil(v/l),Math.ceil(d/l)]),v>>=1,d>>=1;break;default:St(!1,53)}f.push([1,1]),f.reverse();for(var p=[u],y=[0],m=1,w=f.length;m1,r=i&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],e=i&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=i&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:Jp(Jp([],n.supports,!0),r,!0),formats:Jp(Jp([],n.formats,!0),e,!0),qualities:Jp(Jp([],n.qualities,!0),o,!0)}},sy[ny]=function(t){var n=t.getComplianceLevelSupportedFeatures(),i=void 0===t.imageInfo.extraFormats?n.formats:Jp(Jp([],n.formats,!0),t.imageInfo.extraFormats,!0),r=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return y(["jpg","png","gif"],t)})).reduce((function(t,n){return void 0===t&&y(i,n)?n:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?n.supports:Jp(Jp([],n.supports,!0),t.imageInfo.extraFeatures,!0),formats:i,qualities:void 0===t.imageInfo.extraQualities?n.qualities:Jp(Jp([],n.qualities,!0),t.imageInfo.extraQualities,!0),preferredFormat:r}};var uy=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var n=0;n0&&"string"==typeof this.imageInfo.profile[0]&&ey.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var n=this.getComplianceLevelEntryFromProfile(t);if(void 0!==n){var i=n.match(/level[0-2](?:\.json)?$/g);return Array.isArray(i)?i[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),n=this.getComplianceLevelFromProfile(t);return void 0===n?iy.none.none:iy[t][n]}},t.prototype.getTileSourceOptions=function(t){var n=t||{},i=this.getImageApiVersion();if(void 0!==i){var r=void 0===i?void 0:sy[i](this);if(void 0!==r)return{url:r.url,version:i,size:[this.imageInfo.width,this.imageInfo.height],sizes:r.sizes,format:void 0!==n.format&&y(r.formats,n.format)?n.format:void 0!==r.preferredFormat?r.preferredFormat:"jpg",supports:r.supports,quality:n.quality&&y(r.qualities,n.quality)?n.quality:y(r.qualities,"native")?"native":"default",resolutions:Array.isArray(r.resolutions)?r.resolutions.sort((function(t,n){return n-t})):void 0,tileSize:r.tileSize}}},t}(),ay=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function hy(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var fy=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=r.url||"";o+=o.lastIndexOf("/")===o.length-1||""===o?"":"/";var s=r.version||ty,u=r.sizes||[],a=r.size;St(null!=a&&Array.isArray(a)&&2==a.length&&!isNaN(a[0])&&a[0]>0&&!isNaN(a[1])&&a[1]>0,60);var h,f,c,l=a[0],v=a[1],d=r.tileSize,p=r.tilePixelRatio||1,m=r.format||"jpg",w=r.quality||(r.version==Qp?"native":"default"),g=r.resolutions||[],b=r.supports||[],x=r.extent||[0,-v,l,0],M=null!=u&&Array.isArray(u)&&u.length>0,_=void 0!==d&&("number"==typeof d&&Number.isInteger(d)&&d>0||Array.isArray(d)&&d.length>0),S=null!=b&&Array.isArray(b)&&(y(b,"regionByPx")||y(b,"regionByPct"))&&(y(b,"sizeByWh")||y(b,"sizeByH")||y(b,"sizeByW")||y(b,"sizeByPct"));if(g.sort((function(t,n){return n-t})),_||S)if(null!=d&&("number"==typeof d&&Number.isInteger(d)&&d>0?(h=d,f=d):Array.isArray(d)&&d.length>0&&((1==d.length||null==d[1]&&Number.isInteger(d[0]))&&(h=d[0],f=d[0]),2==d.length&&(Number.isInteger(d[0])&&Number.isInteger(d[1])?(h=d[0],f=d[1]):null==d[0]&&Number.isInteger(d[1])&&(h=d[1],f=d[1])))),void 0!==h&&void 0!==f||(h=Pu,f=Pu),0==g.length)for(var O=c=Math.max(Math.ceil(Math.log(l/h)/Math.LN2),Math.ceil(Math.log(v/f)/Math.LN2));O>=0;O--)g.push(Math.pow(2,O));else{var j=Math.max.apply(Math,g);c=Math.round(Math.log(j)/Math.LN2)}else if(h=l,f=v,g=[],M){u.sort((function(t,n){return t[0]-n[0]})),c=-1;var E=[];for(O=0;O0&&g[g.length-1]==T?E.push(O):(g.push(T),c++)}if(E.length>0)for(O=0;Oc)){var d=t[1],p=t[2],x=g[a];if(!(void 0===d||void 0===p||void 0===x||d<0||Math.ceil(l/x/h)<=d||p<0||Math.ceil(v/x/f)<=p)){if(S||_){var O=d*h*x,j=p*f*x,E=h*x,T=f*x,A=h,P=f;if(O+E>l&&(E=l-O),j+T>v&&(T=v-j),O+h*x>l&&(A=Math.floor((l-O+x-1)/x)),j+f*x>v&&(P=Math.floor((v-j+x-1)/x)),0==O&&E==l&&0==j&&T==v)r="full";else if(!S||y(b,"regionByPx"))r=O+","+j+","+E+","+T;else if(y(b,"regionByPct")){r="pct:"+hy(O/l*100)+","+hy(j/v*100)+","+hy(E/l*100)+","+hy(T/v*100)}s!=ny||S&&!y(b,"sizeByWh")?!S||y(b,"sizeByW")?e=A+",":y(b,"sizeByH")?e=","+P:y(b,"sizeByWh")?e=A+","+P:y(b,"sizeByPct")&&(e="pct:"+hy(100/x)):e=A+","+P}else if(r="full",M){var C=u[a][0],k=u[a][1];e=s==ny?C==l&&k==v?"max":C+","+k:C==l?"full":C+","}else e=s==ny?"max":"full";return o+r+"/"+e+"/0/"+w+"."+m}}},transition:r.transition})||this).zDirection=r.zDirection,i}return ay(n,t),n}(Vv),cy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ly=function(t){function n(n,i,r,e,o,s,u){var a=this,h=n.getExtent(),f=i.getExtent(),c=f?Wn(r,f):r,l=mf(n,i,qn(c),e),v=new qc(n,i,c,h,.5*l,e),d=s(v.calculateSourceExtent(),l,o),p=d?lo:mo,y=d?d.getPixelRatio():1;return(a=t.call(this,r,e,y,p)||this).vs=i,a.ps=h,a.Is=v,a.wi=e,a.dh=r,a.ph=d,a.yh=y,a.da=u,a.qt=null,a.mh=null,a}return cy(n,t),n.prototype.disposeInternal=function(){this.state==vo&&this.wh(),t.prototype.disposeInternal.call(this)},n.prototype.getImage=function(){return this.qt},n.prototype.getProjection=function(){return this.vs},n.prototype.Ns=function(){var t=this.ph.getState();if(t==po){var n=$n(this.dh)/this.wi,i=Vn(this.dh)/this.wi;this.qt=gf(n,i,this.yh,this.ph.getResolution(),this.ps,this.wi,this.dh,this.Is,[{extent:this.ph.getExtent(),image:this.ph.getImage()}],0,void 0,this.da)}this.state=t,this.changed()},n.prototype.load=function(){if(this.state==lo){this.state=vo,this.changed();var t=this.ph.getState();t==po||t==yo?this.Ns():(this.mh=$(this.ph,L,(function(t){var n=this.ph.getState();n!=po&&n!=yo||(this.wh(),this.Ns())}),this),this.ph.load())}},n.prototype.wh=function(){H(this.mh),this.mh=null},n}(co),vy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),dy="imageloadstart",py="imageloadend",yy="imageloaderror",my=function(t){function n(n,i){var r=t.call(this,n)||this;return r.image=i,r}return vy(n,t),n}(c);function wy(t,n){t.getImage().src=n}var gy=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,projection:n.projection,state:n.state,interpolate:r})||this).on,i.once,i.un,i.Ti=void 0!==n.resolutions?n.resolutions:null,i.gh=null,i.bh=0,i}return vy(n,t),n.prototype.getResolutions=function(){return this.Ti},n.prototype.findNearestResolution=function(t){if(this.Ti){var n=m(this.Ti,t,0);t=this.Ti[n]}return t},n.prototype.getImage=function(t,n,i,r){var e=this.getProjection();if(e&&r&&!Sr(e,r)){if(this.gh){if(this.bh==this.getRevision()&&Sr(this.gh.getProjection(),r)&&this.gh.getResolution()==n&&An(this.gh.getExtent(),t))return this.gh;this.gh.dispose(),this.gh=null}return this.gh=new ly(e,r,t,n,i,function(t,n,i){return this.getImageInternal(t,n,i,e)}.bind(this),this.getInterpolate()),this.bh=this.getRevision(),this.gh}return e&&(r=e),this.getImageInternal(t,n,i,r)},n.prototype.getImageInternal=function(t,n,i,e){return r()},n.prototype.handleImageChange=function(t){var n,i=t.target;switch(i.getState()){case vo:this.loading=!0,n=dy;break;case po:this.loading=!1,n=py;break;case yo:this.loading=!1,n=yy;break;default:return}this.hasListener(n)&&this.dispatchEvent(new my(n,i))},n}(zv),by=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xy=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions})||this).Bt=void 0!==r.crossOrigin?r.crossOrigin:null,i._a=void 0===r.hidpi||r.hidpi,i.Fe=r.url,i.Rt=void 0!==r.imageLoadFunction?r.imageLoadFunction:wy,i.xh=r.params||{},i.Lt=null,i.Mh=[0,0],i._h=0,i.Sh=void 0!==r.ratio?r.ratio:1.5,i}return by(n,t),n.prototype.getParams=function(){return this.xh},n.prototype.getImageInternal=function(t,n,i,r){if(void 0===this.Fe)return null;n=this.findNearestResolution(n),i=this._a?i:1;var e=this.Lt;if(e&&this._h==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&xn(e.getExtent(),t))return e;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};A(o,this.xh);var s=((t=t.slice())[0]+t[2])/2,u=(t[1]+t[3])/2;if(1!=this.Sh){var a=this.Sh*$n(t)/2,h=this.Sh*Vn(t)/2;t[0]=s-a,t[1]=u-h,t[2]=s+a,t[3]=u+h}var f=n/i,c=Math.ceil($n(t)/f),l=Math.ceil(Vn(t)/f);t[0]=s-f*c/2,t[2]=s+f*c/2,t[1]=u-f*l/2,t[3]=u+f*l/2,this.Mh[0]=c,this.Mh[1]=l;var v=this.Oh(t,this.Mh,i,r,o);return this.Lt=new bo(t,n,i,v,this.Bt,this.Rt),this._h=this.getRevision(),this.Lt.addEventListener(L,this.handleImageChange.bind(this)),this.Lt},n.prototype.getImageLoadFunction=function(){return this.Rt},n.prototype.Oh=function(t,n,i,r,e){var o=r.getCode().split(/:(?=\d+$)/).pop();e.SIZE=n[0]+","+n[1],e.BBOX=t.join(","),e.BBOXSR=o,e.IMAGESR=o,e.DPI=Math.round(90*i);var s=this.Fe,u=s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return u==s&&St(!1,50),Nf(u,e)},n.prototype.getUrl=function(){return this.Fe},n.prototype.setImageLoadFunction=function(t){this.Lt=null,this.Rt=t,this.changed()},n.prototype.setUrl=function(t){t!=this.Fe&&(this.Fe=t,this.Lt=null,this.changed())},n.prototype.updateParams=function(t){A(this.xh,t),this.Lt=null,this.changed()},n}(gy),My=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_y=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions,state:r.state})||this).jh=r.canvasFunction,i.qt=null,i._h=0,i.Sh=void 0!==r.ratio?r.ratio:1.5,i}return My(n,t),n.prototype.getImageInternal=function(t,n,i,r){n=this.findNearestResolution(n);var e=this.qt;if(e&&this._h==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&xn(e.getExtent(),t))return e;Qn(t=t.slice(),this.Sh);var o=[$n(t)/n*i,Vn(t)/n*i],s=this.jh.call(this,t,n,i,o,r);return s&&(e=new Mo(t,n,i,s)),this.qt=e,this._h=this.getRevision(),e},n}(gy),Sy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();var Oy=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{interpolate:r,projection:n.projection,resolutions:n.resolutions})||this).Bt=void 0!==n.crossOrigin?n.crossOrigin:null,i.Eh=void 0!==n.displayDpi?n.displayDpi:96,i.xh=n.params||{},i.Fe=n.url,i.Rt=void 0!==n.imageLoadFunction?n.imageLoadFunction:wy,i._a=void 0===n.hidpi||n.hidpi,i.dt=void 0!==n.metersPerUnit?n.metersPerUnit:1,i.Sh=void 0!==n.ratio?n.ratio:1,i.Th=void 0!==n.useOverlay&&n.useOverlay,i.Lt=null,i._h=0,i}return Sy(n,t),n.prototype.getParams=function(){return this.xh},n.prototype.getImageInternal=function(t,n,i,r){n=this.findNearestResolution(n),i=this._a?i:1;var e=this.Lt;if(e&&this._h==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&xn(e.getExtent(),t))return e;1!=this.Sh&&Qn(t=t.slice(),this.Sh);var o=[$n(t)/n*i,Vn(t)/n*i];if(void 0!==this.Fe){var s=this.getUrl(this.Fe,this.xh,t,o,r);(e=new bo(t,n,i,s,this.Bt,this.Rt)).addEventListener(L,this.handleImageChange.bind(this))}else e=null;return this.Lt=e,this._h=this.getRevision(),e},n.prototype.getImageLoadFunction=function(){return this.Rt},n.prototype.updateParams=function(t){A(this.xh,t),this.changed()},n.prototype.getUrl=function(t,n,i,r,e){var o=function(t,n,i,r){var e=$n(t),o=Vn(t),s=n[0],u=n[1],a=.0254/r;return u*e>s*o?e*i/(s*a):o*i/(u*a)}(i,r,this.dt,this.Eh),s=qn(i),u={OPERATION:this.Th?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.Eh,SETDISPLAYWIDTH:Math.round(r[0]),SETDISPLAYHEIGHT:Math.round(r[1]),SETVIEWSCALE:o,SETVIEWCENTERX:s[0],SETVIEWCENTERY:s[1]};return A(u,n),Nf(t,u)},n.prototype.setImageLoadFunction=function(t){this.Lt=null,this.Rt=t,this.changed()},n}(gy),jy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ey=function(t){function n(n){var i=this,r=void 0!==n.crossOrigin?n.crossOrigin:null,e=void 0!==n.imageLoadFunction?n.imageLoadFunction:wy,o=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(o=n.interpolate),(i=t.call(this,{attributions:n.attributions,interpolate:o,projection:yr(n.projection)})||this).Fe=n.url,i.Ah=n.imageExtent,i.Lt=new bo(i.Ah,void 0,1,i.Fe,r,e),i.Mh=n.imageSize?n.imageSize:null,i.Lt.addEventListener(L,i.handleImageChange.bind(i)),i}return jy(n,t),n.prototype.getImageExtent=function(){return this.Ah},n.prototype.getImageInternal=function(t,n,i,r){return Kn(t,this.Lt.getExtent())?this.Lt:null},n.prototype.getUrl=function(){return this.Fe},n.prototype.handleImageChange=function(n){if(this.Lt.getState()==po){var i=this.Lt.getExtent(),r=this.Lt.getImage(),e=void 0,o=void 0;this.Mh?(e=this.Mh[0],o=this.Mh[1]):(e=r.width,o=r.height);var s=$n(i),u=Vn(i),a=s/e,h=u/o,f=e,c=o;if(a>h?f=Math.round(s/h):c=Math.round(u/a),f!==e||c!==o){var l=_o(f,c);this.getInterpolate()||A(l,lf);var v=l.canvas;l.drawImage(r,0,0,e,o,0,0,v.width,v.height),this.Lt.setImage(v)}}t.prototype.handleImageChange.call(this,n)},n}(gy),Ty="1.3.0",Ay=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Py=[101,101],Cy=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions})||this).Bt=void 0!==r.crossOrigin?r.crossOrigin:null,i.Fe=r.url,i.Rt=void 0!==r.imageLoadFunction?r.imageLoadFunction:wy,i.xh=r.params||{},i.Ph=!0,i.Ch(),i.kh=r.serverType,i._a=void 0===r.hidpi||r.hidpi,i.Lt=null,i.Mh=[0,0],i._h=0,i.Sh=void 0!==r.ratio?r.ratio:1.5,i}return Ay(n,t),n.prototype.getFeatureInfoUrl=function(t,n,i,r){if(void 0!==this.Fe){var e=yr(i),o=this.getProjection();o&&o!==e&&(n=mf(o,e,t,n),t=Er(t,e,o));var s=Bn(t,n,0,Py),u={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.xh.LAYERS};A(u,this.xh,r);var a=mi((t[0]-s[0])/n,4),h=mi((s[3]-t[1])/n,4);return u[this.Ph?"I":"X"]=a,u[this.Ph?"J":"Y"]=h,this.Oh(s,Py,1,o||e,u)}},n.prototype.getLegendUrl=function(t,n){if(void 0!==this.Fe){var i={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===n||void 0===n.LAYER){var r=this.xh.LAYERS;if(!(!Array.isArray(r)||1===r.length))return;i.LAYER=r}if(void 0!==t){var e=this.getProjection()?this.getProjection().getMetersPerUnit():1;i.SCALE=t*e/28e-5}return A(i,n),Nf(this.Fe,i)}},n.prototype.getParams=function(){return this.xh},n.prototype.getImageInternal=function(t,n,i,r){if(void 0===this.Fe)return null;n=this.findNearestResolution(n),1==i||this._a&&void 0!==this.kh||(i=1);var e=n/i,o=qn(t),s=Bn(o,e,0,[wi($n(t)/e,4),wi(Vn(t)/e,4)]),u=Bn(o,e,0,[wi(this.Sh*$n(t)/e,4),wi(this.Sh*Vn(t)/e,4)]),a=this.Lt;if(a&&this._h==this.getRevision()&&a.getResolution()==n&&a.getPixelRatio()==i&&xn(a.getExtent(),s))return a;var h={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};A(h,this.xh),this.Mh[0]=yi($n(u)/e,4),this.Mh[1]=yi(Vn(u)/e,4);var f=this.Oh(u,this.Mh,i,r,h);return this.Lt=new bo(u,n,i,f,this.Bt,this.Rt),this._h=this.getRevision(),this.Lt.addEventListener(L,this.handleImageChange.bind(this)),this.Lt},n.prototype.getImageLoadFunction=function(){return this.Rt},n.prototype.Oh=function(t,n,i,r,e){if(St(void 0!==this.Fe,9),e[this.Ph?"CRS":"SRS"]=r.getCode(),"STYLES"in this.xh||(e.STYLES=""),1!=i)switch(this.kh){case"geoserver":var o=90*i+.5|0;"FORMAT_OPTIONS"in e?e.FORMAT_OPTIONS+=";dpi:"+o:e.FORMAT_OPTIONS="dpi:"+o;break;case"mapserver":e.MAP_RESOLUTION=90*i;break;case"carmentaserver":case"qgis":e.DPI=90*i;break;default:St(!1,8)}e.WIDTH=n[0],e.HEIGHT=n[1];var s,u=r.getAxisOrientation();return s=this.Ph&&"ne"==u.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,e.BBOX=s.join(","),Nf(this.Fe,e)},n.prototype.getUrl=function(){return this.Fe},n.prototype.setImageLoadFunction=function(t){this.Lt=null,this.Rt=t,this.changed()},n.prototype.setUrl=function(t){t!=this.Fe&&(this.Fe=t,this.Lt=null,this.changed())},n.prototype.updateParams=function(t){A(this.xh,t),this.Ch(),this.Lt=null,this.changed()},n.prototype.Ch=function(){var t=this.xh.VERSION||Ty;this.Ph=Xi(t,"1.3")>=0},n}(gy),ky={"image/png":!0,"image/jpeg":!0,"image/gif":!0,"image/webp":!0},Iy={"application/vnd.mapbox-vector-tile":!0,"application/geo+json":!0};function Ny(t,n){for(var i,r,e=0;el.maxTileCol||h.tileRowl.maxTileRow)return}A(h,T);var v=i.replace(/\{(\w+?)\}/g,(function(t,n){return h[n]}));return Qh(P,v)}}}}function Ry(t){return Jh(t.url).then((function(n){return function(t,n){var i,r=n.tileMatrixSetLimits;if("map"===n.dataType)i=Ny(n.links,t.mediaType);else{if("vector"!==n.dataType)throw new Error('Expected tileset data type to be "map" or "vector"');i=Ly(n.links,t.mediaType,t.supportedMediaTypes)}if(n.tileMatrixSet)return zy(t,n.tileMatrixSet,i,r);var e=n.links.find((function(t){return"http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme"===t.rel}));if(!e)throw new Error("Expected http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme link or tileMatrixSet");var o=e.href;return Jh(Qh(t.url,o)).then((function(n){return zy(t,n,i,r)}))}(t,n)}))}var Fy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Gy=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:"loading",tileLoadFunction:n.tileLoadFunction,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this,Ry({url:n.url,projection:i.getProjection(),mediaType:n.mediaType,context:n.context||null}).then(i.Ih.bind(i)).catch(i.Nh.bind(i)),i}return Fy(n,t),n.prototype.Ih=function(t){this.tileGrid=t.grid,this.setTileUrlFunction(t.urlFunction,t.urlTemplate),this.setState("ready")},n.prototype.Nh=function(t){console.error(t),this.setState("error")},n}(Vv),Dy=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qy=function(t){function n(n){var i=this,r=n.projection||"EPSG:3857",e=n.extent||Tf(r),o=n.tileGrid||Of({extent:e,maxResolution:n.maxResolution,maxZoom:void 0!==n.maxZoom?n.maxZoom:22,minZoom:n.minZoom,tileSize:n.tileSize||512});return(i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,cacheSize:n.cacheSize,interpolate:!0,opaque:!1,projection:r,state:n.state,tileGrid:o,tileLoadFunction:n.tileLoadFunction?n.tileLoadFunction:Uy,tileUrlFunction:n.tileUrlFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:void 0===n.zDirection?1:n.zDirection})||this).ze=n.format?n.format:null,i.sourceTileCache=new Ih(i.tileCache.highWaterMark),i.za=null==n.overlaps||n.overlaps,i.tileClass=n.tileClass?n.tileClass:qh,i.Lh={},i}return Dy(n,t),n.prototype.getFeaturesInExtent=function(t){var n=[],i=this.tileCache;if(0===i.getCount())return n;var r=Ah(i.peekFirstKey())[0],e=this.tileGrid;return i.forEach((function(i){if(i.tileCoord[0]===r&&i.getState()===vt)for(var o=i.getSourceTiles(),s=0,u=o.length;s=s.width)return null;var h=Vn(o),f=Math.floor(s.height*((o[3]-r[1])/h));return f<0||f>=s.height?null:this.getImageData(s,a,f)},n.prototype.renderFrame=function(t,n){var i=this.Lt,r=i.getExtent(),e=i.getResolution(),o=i.getPixelRatio(),s=t.layerStatesArray[t.layerIndex],u=t.pixelRatio,a=t.viewState,h=a.center,f=u*e/(a.resolution*o),c=t.extent,l=a.resolution,v=a.rotation,d=Math.round($n(c)/l*u),p=Math.round(Vn(c)/l*u);sn(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/u,1/u,v,-d/2,-p/2),un(this.inversePixelTransform,this.pixelTransform);var y=hn(this.pixelTransform);this.useContainer(n,y,this.getBackground(t));var m=this.context,w=m.canvas;w.width!=d||w.height!=p?(w.width=d,w.height=p):this.containerReused||m.clearRect(0,0,d,p);var g=!1,b=!0;if(s.extent){var x=Lr(s.extent,a.projection);(g=(b=Kn(x,t.extent))&&!xn(x,t.extent))&&this.clipUnrotated(m,t,x)}var M=i.getImage(),_=sn(this.tempTransform,d/2,p/2,f,f,0,o*(r[0]-h[0])/e,o*(h[1]-r[3])/e);this.renderedResolution=e*u/o;var S=M.width*_[0],O=M.height*_[3];if(this.getLayer().getSource().getInterpolate()||A(m,lf),this.preRender(m,t),b&&S>=.5&&O>=.5){var j=_[4],E=_[5],T=s.opacity,P=void 0;1!==T&&(P=m.globalAlpha,m.globalAlpha=T),m.drawImage(M,0,0,+M.width,+M.height,j,E,S,O),1!==T&&(m.globalAlpha=P)}return this.postRender(m,t),g&&m.restore(),A(m,vf),y!==w.style.transform&&(w.style.transform=y),this.container},n}(tm),rm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),em=function(t){function n(n){return t.call(this,n)||this}return rm(n,t),n.prototype.createRenderer=function(){return new im(this)},n.prototype.getData=function(n){return t.prototype.getData.call(this,n)},n}($y),om="preload",sm="useInterimTilesOnError",um=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),am=function(t){function n(n){var i=this,r=n||{},e=A({},r);return delete e.preload,delete e.useInterimTilesOnError,(i=t.call(this,e)||this).on,i.once,i.un,i.setPreload(void 0!==r.preload?r.preload:0),i.setUseInterimTilesOnError(void 0===r.useInterimTilesOnError||r.useInterimTilesOnError),i}return um(n,t),n.prototype.getPreload=function(){return this.get(om)},n.prototype.setPreload=function(t){this.set(om,t)},n.prototype.getUseInterimTilesOnError=function(){return this.get(sm)},n.prototype.setUseInterimTilesOnError=function(t){this.set(sm,t)},n.prototype.getData=function(n){return t.prototype.getData.call(this,n)},n}(ls),hm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fm=function(t){function n(n){var i=t.call(this,n)||this;return i.extentChanged=!0,i.zh=null,i.renderedPixelRatio,i.renderedProjection=null,i.renderedRevision,i.renderedTiles=[],i.Rh=!1,i.tmpExtent=[1/0,1/0,-1/0,-1/0],i.Fh=new zh(0,0,0,0),i}return hm(n,t),n.prototype.isDrawableTile=function(t){var n=this.getLayer(),i=t.getState(),r=n.getUseInterimTilesOnError();return i==vt||i==pt||i==dt&&!r},n.prototype.getTile=function(t,n,i,r){var e=r.pixelRatio,o=r.viewState.projection,s=this.getLayer(),u=s.getSource().getTile(t,n,i,e,o);return u.getState()==dt&&(s.getUseInterimTilesOnError()?s.getPreload()>0&&(this.Rh=!0):u.setState(vt)),this.isDrawableTile(u)||(u=u.getInterimTile()),u},n.prototype.getData=function(t){var n=this.frameState;if(!n)return null;var i=this.getLayer(),r=tn(n.pixelToCoordinateTransform,t.slice()),e=i.getExtent();if(e&&!bn(e,r))return null;for(var o=n.pixelRatio,s=n.viewState.projection,u=n.viewState,a=i.getRenderSource(),h=a.getTileGridForProjection(u.projection),f=a.getTilePixelRatio(n.pixelRatio),c=h.getZForResolution(u.resolution);c>=h.getMinZoom();--c){var l=h.getTileCoordForCoordAndZ(r,c),v=a.getTile(c,l[1],l[2],o,s);if(!(v instanceof ko||v instanceof Bc))return null;if(v.getState()===vt){var d=h.getOrigin(c),p=Qu(h.getTileSize(c)),y=h.getResolution(c),m=Math.floor(f*((r[0]-d[0])/y-l[1]*p[0])),w=Math.floor(f*((d[1]-r[1])/y-l[2]*p[1])),g=Math.round(f*a.getGutterForProjection(u.projection));return this.getImageData(v.getImage(),m+g,w+g)}}return null},n.prototype.loadedTileCallback=function(n,i,r){return!!this.isDrawableTile(r)&&t.prototype.loadedTileCallback.call(this,n,i,r)},n.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},n.prototype.renderFrame=function(t,n){var i=t.layerStatesArray[t.layerIndex],r=t.viewState,e=r.projection,s=r.resolution,u=r.center,a=r.rotation,h=t.pixelRatio,f=this.getLayer(),c=f.getSource(),l=c.getRevision(),v=c.getTileGridForProjection(e),d=v.getZForResolution(s,c.zDirection),y=v.getResolution(d),m=t.extent,w=t.viewState.resolution,g=c.getTilePixelRatio(h),b=Math.round($n(m)/w*h),x=Math.round(Vn(m)/w*h),M=i.extent&&Lr(i.extent,e);M&&(m=Wn(m,Lr(i.extent,e)));var _=y*b/2/g,S=y*x/2/g,O=[u[0]-_,u[1]-S,u[0]+_,u[1]+S],j=v.getTileRangeForExtentAndZ(m,d),E={};E[d]={};var T=this.createLoadedTileFinder(c,e,E),P=this.tmpExtent,C=this.Fh;this.Rh=!1;for(var k=a?Xn(r.center,w,a,t.size):void 0,I=j.minX;I<=j.maxX;++I)for(var N=j.minY;N<=j.maxY;++N)if(!a||v.tileCoordIntersectsViewport([d,I,N],k)){var L=this.getTile(d,I,N,t);if(this.isDrawableTile(L)){var z=o(this);if(L.getState()==vt)E[d][L.tileCoord.toString()]=L,(ot=L.inTransition(z))&&1!==i.opacity&&(L.endTransition(z),ot=!1),this.Rh||!ot&&-1!==this.renderedTiles.indexOf(L)||(this.Rh=!0);if(1===L.getAlpha(z,t.time))continue}var R=v.getTileCoordChildTileRange(L.tileCoord,C,P),F=!1;R&&(F=T(d+1,R)),F||v.forEachTileCoordParentTileRange(L.tileCoord,T,C,P)}var G=y/s*h/g;sn(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/h,1/h,a,-b/2,-x/2);var D=hn(this.pixelTransform);this.useContainer(n,D,this.getBackground(t));var q=this.context,U=q.canvas;un(this.inversePixelTransform,this.pixelTransform),sn(this.tempTransform,b/2,x/2,G,G,0,-b/2,-x/2),U.width!=b||U.height!=x?(U.width=b,U.height=x):this.containerReused||q.clearRect(0,0,b,x),M&&this.clipUnrotated(q,t,M),c.getInterpolate()||A(q,lf),this.preRender(q,t),this.renderedTiles.length=0;var B,X,V,W=Object.keys(E).map(Number);W.sort(p),1!==i.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(B=[],X=[]):W=W.reverse();for(var Y=W.length-1;Y>=0;--Y){var Z=W[Y],$=c.getTilePixelSize(Z,h,e),K=v.getResolution(Z)/y,H=$[0]*K*G,J=$[1]*K*G,Q=v.getTileCoordForCoordAndZ(Yn(O),Z),tt=v.getTileCoordExtent(Q),nt=tn(this.tempTransform,[g*(tt[0]-O[0])/y,g*(O[3]-tt[3])/y]),it=g*c.getGutterForProjection(e),rt=E[Z];for(var et in rt){var ot,st=(L=rt[et]).tileCoord,ut=Q[1]-st[1],at=Math.round(nt[0]-(ut-1)*H),ht=Q[2]-st[2],ft=Math.round(nt[1]-(ht-1)*J),ct=at-(I=Math.round(nt[0]-ut*H)),lt=ft-(N=Math.round(nt[1]-ht*J)),dt=d===Z,pt=!1;if(!(ot=dt&&1!==L.getAlpha(o(this),t.time)))if(B){V=[I,N,I+ct,N,I+ct,N+lt,I,N+lt];for(var yt=0,mt=B.length;ytthis._maxQueueLength;)this._queue.shift().callback(null,null)},n.prototype._dispatch=function(){if(!this._running&&0!==this._queue.length){var t=this._queue.shift();this._job=t;var n=t.inputs[0].width,i=t.inputs[0].height,r=t.inputs.map((function(t){return t.data.buffer})),e=this._workers.length;if(this._running=e,1!==e)for(var o=t.inputs[0].data.length,s=4*Math.ceil(o/4/e),u=0;uStamen Design, under CC BY 3.0.',Wy],Cm={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},km={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},Im=function(t){function n(n){var i=void 0===n.imageSmoothing||n.imageSmoothing;void 0!==n.interpolate&&(i=n.interpolate);var r=n.layer.indexOf("-"),e=-1==r?n.layer:n.layer.slice(0,r),o=km[e],s=Cm[n.layer],u=void 0!==n.url?n.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+n.layer+"/{z}/{x}/{y}."+s.extension;return t.call(this,{attributions:Pm,cacheSize:n.cacheSize,crossOrigin:"anonymous",interpolate:i,maxZoom:null!=n.maxZoom?n.maxZoom:o.maxZoom,minZoom:null!=n.minZoom?n.minZoom:o.minZoom,opaque:s.opaque,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,transition:n.transition,url:u,wrapX:n.wrapX,zDirection:n.zDirection})||this}return Am(n,t),n}(Kv),Nm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Lm=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,projection:r.projection,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:r.tileGrid,tileLoadFunction:r.tileLoadFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,zDirection:r.zDirection})||this).xh=r.params||{},i._a=void 0===r.hidpi||r.hidpi,i.Ao=[1/0,1/0,-1/0,-1/0],i.setKey(i.$h()),i}return Nm(n,t),n.prototype.$h=function(){var t=0,n=[];for(var i in this.xh)n[t++]=i+"-"+this.xh[i];return n.join("/")},n.prototype.getParams=function(){return this.xh},n.prototype.Oh=function(t,n,i,r,e,o){var s=this.urls;if(s){var u,a=e.getCode().split(/:(?=\d+$)/).pop();if(o.SIZE=n[0]+","+n[1],o.BBOX=i.join(","),o.BBOXSR=a,o.IMAGESR=a,o.DPI=Math.round(o.DPI?o.DPI*r:90*r),1==s.length)u=s[0];else u=s[vi(Ph(t),s.length)];return Nf(u.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},n.prototype.getTilePixelRatio=function(t){return this._a?t:1},n.prototype.updateParams=function(t){A(this.xh,t),this.setKey(this.$h())},n.prototype.tileUrlFunction=function(t,n,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){1==n||this._a||(n=1);var e=r.getTileCoordExtent(t,this.Ao),o=Qu(r.getTileSize(t[0]),this.tmpSize);1!=n&&(o=Ju(o,n,this.tmpSize));var s={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return A(s,this.xh),this.Oh(t,o,e,n,i,s)}},n}(Vv),zm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Rm=function(t){function n(n){var i=this,r=n||{};return i=t.call(this,{opaque:!1,projection:r.projection,tileGrid:r.tileGrid,wrapX:void 0===r.wrapX||r.wrapX,zDirection:r.zDirection,url:r.template||"z:{z} x:{x} y:{y}",tileLoadFunction:function(t,n){var r=t.getTileCoord()[0],e=Qu(i.tileGrid.getTileSize(r)),o=_o(e[0],e[1]);o.strokeStyle="grey",o.strokeRect(.5,.5,e[0]+.5,e[1]+.5),o.fillStyle="grey",o.strokeStyle="white",o.textAlign="center",o.textBaseline="middle",o.font="24px sans-serif",o.lineWidth=4,o.strokeText(n,e[0]/2,e[1]/2,e[0]),o.fillText(n,e[0]/2,e[1]/2,e[0]),t.setImage(o.canvas)}})||this}return zm(n,t),n}(Kv),Fm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Gm=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;if(void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:yr("EPSG:3857"),reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:"loading",tileLoadFunction:n.tileLoadFunction,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).Kh=null,i.jo=n.tileSize,n.url)if(n.jsonp)Zh(n.url,i.handleTileJSONResponse.bind(i),i.handleTileJSONError.bind(i));else{var e=new XMLHttpRequest;e.addEventListener("load",i.Hh.bind(i)),e.addEventListener("error",i.Jh.bind(i)),e.open("GET",n.url),e.send()}else n.tileJSON?i.handleTileJSONResponse(n.tileJSON):St(!1,51);return i}return Fm(n,t),n.prototype.Hh=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},n.prototype.Jh=function(t){this.handleTileJSONError()},n.prototype.getTileJSON=function(){return this.Kh},n.prototype.handleTileJSONResponse=function(t){var n,i=yr("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var e=Or(i,r);n=ni(t.bounds,e)}var o=Tf(r),s=t.minzoom||0,u=Of({extent:o,maxZoom:t.maxzoom||22,minZoom:s,tileSize:this.jo});if(this.tileGrid=u,this.tileUrlFunction=Pf(t.tiles,u),void 0!==t.attribution&&!this.getAttributions()){var a=void 0!==n?n:o;this.setAttributions((function(n){return Kn(a,n.extent)?[t.attribution]:null}))}this.Kh=t,this.setState("ready")},n.prototype.handleTileJSONError=function(){this.setState("error")},n}(Vv),Dm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qm=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=r.params||{},s=!("TRANSPARENT"in o)||o.TRANSPARENT;return(i=t.call(this,{attributions:r.attributions,attributionsCollapsible:r.attributionsCollapsible,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,opaque:!s,projection:r.projection,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileClass:r.tileClass,tileGrid:r.tileGrid,tileLoadFunction:r.tileLoadFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,zDirection:r.zDirection})||this).js=void 0!==r.gutter?r.gutter:0,i.xh=o,i.Ph=!0,i.kh=r.serverType,i._a=void 0===r.hidpi||r.hidpi,i.Ao=[1/0,1/0,-1/0,-1/0],i.Ch(),i.setKey(i.$h()),i}return Dm(n,t),n.prototype.getFeatureInfoUrl=function(t,n,i,r){var e=yr(i),o=this.getProjection(),s=this.getTileGrid();s||(s=this.getTileGridForProjection(e));var u=s.getZForResolution(n,this.zDirection),a=s.getTileCoordForCoordAndZ(t,u);if(!(s.getResolutions().length<=a[0])){var h=s.getResolution(a[0]),f=s.getTileCoordExtent(a,this.Ao),c=Qu(s.getTileSize(a[0]),this.tmpSize),l=this.js;0!==l&&(c=Ku(c,l,this.tmpSize),f=mn(f,h*l,f)),o&&o!==e&&(h=mf(o,e,t,h),f=Tr(f,e,o),t=Er(t,e,o));var v={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.xh.LAYERS};A(v,this.xh,r);var d=Math.floor((t[0]-f[0])/h),p=Math.floor((f[3]-t[1])/h);return v[this.Ph?"I":"X"]=d,v[this.Ph?"J":"Y"]=p,this.Oh(a,c,f,1,o||e,v)}},n.prototype.getLegendUrl=function(t,n){if(void 0!==this.urls[0]){var i={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===n||void 0===n.LAYER){var r=this.xh.LAYERS;if(!(!Array.isArray(r)||1===r.length))return;i.LAYER=r}if(void 0!==t){var e=this.getProjection()?this.getProjection().getMetersPerUnit():1;i.SCALE=t*e/28e-5}return A(i,n),Nf(this.urls[0],i)}},n.prototype.getGutter=function(){return this.js},n.prototype.getParams=function(){return this.xh},n.prototype.Oh=function(t,n,i,r,e,o){var s=this.urls;if(s){if(o.WIDTH=n[0],o.HEIGHT=n[1],o[this.Ph?"CRS":"SRS"]=e.getCode(),"STYLES"in this.xh||(o.STYLES=""),1!=r)switch(this.kh){case"geoserver":var u=90*r+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+u:o.FORMAT_OPTIONS="dpi:"+u;break;case"mapserver":o.MAP_RESOLUTION=90*r;break;case"carmentaserver":case"qgis":o.DPI=90*r;break;default:St(!1,52)}var a,h=e.getAxisOrientation(),f=i;if(this.Ph&&"ne"==h.substr(0,2)){var c=void 0;c=i[0],f[0]=i[1],f[1]=c,c=i[2],f[2]=i[3],f[3]=c}if(o.BBOX=f.join(","),1==s.length)a=s[0];else a=s[vi(Ph(t),s.length)];return Nf(a,o)}},n.prototype.getTilePixelRatio=function(t){return this._a&&void 0!==this.kh?t:1},n.prototype.$h=function(){var t=0,n=[];for(var i in this.xh)n[t++]=i+"-"+this.xh[i];return n.join("/")},n.prototype.updateParams=function(t){A(this.xh,t),this.Ch(),this.setKey(this.$h())},n.prototype.Ch=function(){var t=this.xh.VERSION||Ty;this.Ph=Xi(t,"1.3")>=0},n.prototype.tileUrlFunction=function(t,n,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){1==n||this._a&&void 0!==this.kh||(n=1);var e=r.getResolution(t[0]),o=r.getTileCoordExtent(t,this.Ao),s=Qu(r.getTileSize(t[0]),this.tmpSize),u=this.js;0!==u&&(s=Ku(s,u,this.tmpSize),o=mn(o,e*u,o)),1!=n&&(s=Ju(s,n,this.tmpSize));var a={SERVICE:"WMS",VERSION:Ty,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return A(a,this.xh),this.Oh(t,s,o,n,i,a)}},n}(Vv),Um=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Bm=function(t){function n(n,i,r,e,o,s){var u=t.call(this,n,i)||this;return u.Nt=r,u.st=e,u.Qh=o,u.tf=null,u.nf=null,u.B=null,u.if=s,u}return Um(n,t),n.prototype.getImage=function(){return null},n.prototype.getData=function(t){if(!this.tf||!this.nf)return null;var n=(t[0]-this.st[0])/(this.st[2]-this.st[0]),i=(t[1]-this.st[1])/(this.st[3]-this.st[1]),r=this.tf[Math.floor((1-i)*this.tf.length)];if("string"!=typeof r)return null;var e=r.charCodeAt(Math.floor(n*r.length));e>=93&&e--,e>=35&&e--;var o=null;if((e-=32)in this.nf){var s=this.nf[e];o=this.B&&s in this.B?this.B[s]:s}return o},n.prototype.forDataAtCoordinate=function(t,n,i){this.state==pt&&!0===i?(this.state=ct,K(this,L,(function(i){n(this.getData(t))}),this),this.rf()):!0===i?setTimeout(function(){n(this.getData(t))}.bind(this),0):n(this.getData(t))},n.prototype.getKey=function(){return this.Nt},n.prototype.Nh=function(){this.state=dt,this.changed()},n.prototype.Ut=function(t){this.tf=t.grid,this.nf=t.keys,this.B=t.data,this.state=vt,this.changed()},n.prototype.rf=function(){if(this.state==ct)if(this.state=lt,this.if)Zh(this.Nt,this.Ut.bind(this),this.Nh.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.Hh.bind(this)),t.addEventListener("error",this.Jh.bind(this)),t.open("GET",this.Nt),t.send()}},n.prototype.Hh=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.Nh()}this.Ut(i)}else this.Nh()},n.prototype.Jh=function(t){this.Nh()},n.prototype.load=function(){this.Qh?this.rf():this.setState(pt)},n}(xt),Xm=function(t){function n(n){var i=t.call(this,{projection:yr("EPSG:3857"),state:"loading",zDirection:n.zDirection})||this;if(i.Qh=void 0===n.preemptive||n.preemptive,i.ef=kf,i.uf=void 0,i.if=n.jsonp||!1,n.url)if(i.if)Zh(n.url,i.handleTileJSONResponse.bind(i),i.handleTileJSONError.bind(i));else{var r=new XMLHttpRequest;r.addEventListener("load",i.Hh.bind(i)),r.addEventListener("error",i.Jh.bind(i)),r.open("GET",n.url),r.send()}else n.tileJSON?i.handleTileJSONResponse(n.tileJSON):St(!1,51);return i}return Um(n,t),n.prototype.Hh=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},n.prototype.Jh=function(t){this.handleTileJSONError()},n.prototype.getTemplate=function(){return this.uf},n.prototype.forDataAtCoordinateAndResolution=function(t,n,i,r){if(this.tileGrid){var e=this.tileGrid.getZForResolution(n,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,e);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,i,r)}else!0===r?setTimeout((function(){i(null)}),0):i(null)},n.prototype.handleTileJSONError=function(){this.setState("error")},n.prototype.handleTileJSONResponse=function(t){var n,i=yr("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var e=Or(i,r);n=ni(t.bounds,e)}var o=Tf(r),s=t.minzoom||0,u=Of({extent:o,maxZoom:t.maxzoom||22,minZoom:s});this.tileGrid=u,this.uf=t.template;var a=t.grids;if(a){if(this.ef=Pf(a,u),void 0!==t.attribution){var h=void 0!==n?n:o;this.setAttributions((function(n){return Kn(h,n.extent)?[t.attribution]:null}))}this.setState("ready")}else this.setState("error")},n.prototype.getTile=function(t,n,i,r,e){var o=jh(t,n,i);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var s=[t,n,i],u=this.getTileCoordForTileUrlFunction(s,e),a=this.ef(u,r,e),h=new Bm(s,void 0!==a?ct:pt,void 0!==a?a:"",this.tileGrid.getTileCoordExtent(s),this.Qh,this.if);return this.tileCache.set(o,h),h},n.prototype.useTile=function(t,n,i){var r=jh(t,n,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},n}(Dv),Vm=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Wm=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;void 0!==n.interpolate&&(r=n.interpolate);var e=void 0!==n.requestEncoding?n.requestEncoding:"KVP",o=n.tileGrid,s=n.urls;return void 0===s&&void 0!==n.url&&(s=If(n.url)),(i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileClass:n.tileClass,tileGrid:o,tileLoadFunction:n.tileLoadFunction,tilePixelRatio:n.tilePixelRatio,urls:s,wrapX:void 0!==n.wrapX&&n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).af=void 0!==n.version?n.version:"1.0.0",i.ze=void 0!==n.format?n.format:"image/jpeg",i.hf=void 0!==n.dimensions?n.dimensions:{},i.Ds=n.layer,i.ff=n.matrixSet,i.H=n.style,i.cf=e,i.setKey(i.lf()),s&&s.length>0&&(i.tileUrlFunction=Cf(s.map(i.createFromWMTSTemplate.bind(i)))),i}return Vm(n,t),n.prototype.setUrls=function(t){this.urls=t;var n=t.join("\n");this.setTileUrlFunction(Cf(t.map(this.createFromWMTSTemplate.bind(this))),n)},n.prototype.getDimensions=function(){return this.hf},n.prototype.getFormat=function(){return this.ze},n.prototype.getLayer=function(){return this.Ds},n.prototype.getMatrixSet=function(){return this.ff},n.prototype.getRequestEncoding=function(){return this.cf},n.prototype.getStyle=function(){return this.H},n.prototype.getVersion=function(){return this.af},n.prototype.lf=function(){var t=0,n=[];for(var i in this.hf)n[t++]=i+"-"+this.hf[i];return n.join("/")},n.prototype.updateDimensions=function(t){A(this.hf,t),this.setKey(this.lf())},n.prototype.createFromWMTSTemplate=function(t){var n=this.cf,i={layer:this.Ds,style:this.H,tilematrixset:this.ff};"KVP"==n&&A(i,{Service:"WMTS",Request:"GetTile",Version:this.af,Format:this.ze}),t="KVP"==n?Nf(t,i):t.replace(/\{(\w+?)\}/g,(function(t,n){return n.toLowerCase()in i?i[n.toLowerCase()]:t}));var r=this.tileGrid,e=this.hf;return function(i,o,s){if(i){var u={TileMatrix:r.getMatrixId(i[0]),TileCol:i[1],TileRow:i[2]};A(u,e);var a=t;return a="KVP"==n?Nf(a,u):a.replace(/\{(\w+?)\}/g,(function(t,n){return u[n]}))}}},n}(Vv);var Ym=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Zm="renderOrder",$m=function(t){function n(n){var i=this,r=n||{},e=A({},r);return delete e.style,delete e.renderBuffer,delete e.updateWhileAnimating,delete e.updateWhileInteracting,(i=t.call(this,e)||this).vf=void 0!==r.declutter&&r.declutter,i.df=void 0!==r.renderBuffer?r.renderBuffer:100,i.H=null,i.tt=void 0,i.setStyle(r.style),i.pf=void 0!==r.updateWhileAnimating&&r.updateWhileAnimating,i.yf=void 0!==r.updateWhileInteracting&&r.updateWhileInteracting,i}return Ym(n,t),n.prototype.getDeclutter=function(){return this.vf},n.prototype.getFeatures=function(n){return t.prototype.getFeatures.call(this,n)},n.prototype.getRenderBuffer=function(){return this.df},n.prototype.getRenderOrder=function(){return this.get(Zm)},n.prototype.getStyle=function(){return this.H},n.prototype.getStyleFunction=function(){return this.tt},n.prototype.getUpdateWhileAnimating=function(){return this.pf},n.prototype.getUpdateWhileInteracting=function(){return this.yf},n.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new Av(9)),this.getRenderer().renderDeclutter(t)},n.prototype.setRenderOrder=function(t){this.set(Zm,t)},n.prototype.setStyle=function(t){this.H=void 0!==t?t:xv,this.tt=null===t?void 0:gv(this.H),this.changed()},n}(ls);var Km=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Hm=function(t){function n(n,i){var r=this,e=i.uniforms||{},s=[1,0,0,1,0,0];e[Sc]=s,(r=t.call(this,n,{uniforms:e,postProcesses:i.postProcesses})||this).ready=!1,r.mf=-1,r.wf=new mc(zf,Gf),r.gf=new mc(zf,Gf),r.bf=new mc(Rf,Gf),r.Hs=i.vertexShader,r.Js=i.fragmentShader,r.Ks,r.xf=!(!i.hitFragmentShader||!i.hitVertexShader),r.Mf=i.hitVertexShader,r._f=i.hitFragmentShader,r.Sf;var u=i.attributes?i.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:Pc.FLOAT}})):[];r.attributes=[{name:"a_position",size:2,type:Pc.FLOAT},{name:"a_index",size:1,type:Pc.FLOAT}].concat(u),r.hitDetectionAttributes=[{name:"a_position",size:2,type:Pc.FLOAT},{name:"a_index",size:1,type:Pc.FLOAT},{name:"a_hitColor",size:4,type:Pc.FLOAT},{name:"a_featureUid",size:1,type:Pc.FLOAT}].concat(u),r.customAttributes=i.attributes?i.attributes:[],r.$i=[1/0,1/0,-1/0,-1/0],r.Of=s,r.jf=[1,0,0,1,0,0],r.Ef=[1,0,0,1,0,0],r.Tf=new Float32Array(0),r.Af=new Float32Array(0),r.Pf,r.Cf=0,r.kf=function(){var t='const e="function"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError("Cannot convert undefined or null to object");const t=Object(e);for(let e=1,n=arguments.length;e=0||n.match(/cpu (os|iphone os) 15_4 like mac os x/)),-1!==n.indexOf("webkit")&&n.indexOf("edge"),n.indexOf("macintosh"),"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&(self,WorkerGlobalScope),function(){let e=!1;try{const n=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("_",null,n),window.removeEventListener("_",null,n)}catch(e){}}(),new Array(6);const t="GENERATE_BUFFERS",o=[],r={vertexPosition:0,indexPosition:0};function i(e,n,t,o,r){e[n+0]=t,e[n+1]=o,e[n+2]=r}function s(e,n,t,s,f,c){const l=3+f,a=e[n+0],u=e[n+1],d=o;d.length=f;for(let t=0;t{const o=n.data;if(o.type===t){const n=3,t=2,r=o.customAttributesCount,i=t+r,c=new Float32Array(o.renderInstructions),l=c.length/i,a=4*l*(r+n),u=new Uint32Array(6*l),d=new Float32Array(a);let g;for(let e=0;ec&&(this.instructions.push([rw.CUSTOM,c,o,t,i,pe]),this.hitDetectionInstructions.push([rw.CUSTOM,c,o,t,r||i,pe]));break;case"Point":e=t.getFlatCoordinates(),this.coordinates.push(e[0],e[1]),o=this.coordinates.length,this.instructions.push([rw.CUSTOM,c,o,t,i]),this.hitDetectionInstructions.push([rw.CUSTOM,c,o,t,r||i])}this.endGeometry(n)},n.prototype.beginGeometry=function(t,n){this.qf=[rw.BEGIN_GEOMETRY,n,0,t],this.instructions.push(this.qf),this.Uf=[rw.BEGIN_GEOMETRY,n,0,t],this.hitDetectionInstructions.push(this.Uf)},n.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},n.prototype.reverseHitDetectionInstructions=function(){var t,n=this.hitDetectionInstructions;n.reverse();var i,r,e=n.length,o=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.Bf=null)}else i.strokeStyle=void 0,i.lineCap=void 0,i.lineDash=null,i.lineDashOffset=void 0,i.lineJoin=void 0,i.lineWidth=void 0,i.miterLimit=void 0},n.prototype.createFill=function(t){var n=t.fillStyle,i=[rw.SET_FILL_STYLE,n];return"string"!=typeof n&&i.push(!0),i},n.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},n.prototype.createStroke=function(t){return[rw.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},n.prototype.updateFillStyle=function(t,n){var i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(n.call(this,t)),t.currentFillStyle=i)},n.prototype.updateStrokeStyle=function(t,n){var i=t.strokeStyle,r=t.lineCap,e=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,u=t.lineWidth,a=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=r||e!=t.currentLineDash&&!x(t.currentLineDash,e)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=u||t.currentMiterLimit!=a)&&(void 0!==i&&n.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=r,t.currentLineDash=e,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=u,t.currentMiterLimit=a)},n.prototype.endGeometry=function(t){this.qf[2]=this.instructions.length,this.qf=null,this.Uf[2]=this.hitDetectionInstructions.length,this.Uf=null;var n=[rw.END_GEOMETRY,t];this.instructions.push(n),this.hitDetectionInstructions.push(n)},n.prototype.getBufferedMaxExtent=function(){if(!this.Bf&&(this.Bf=wn(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;mn(this.Bf,t,this.Bf)}return this.Bf},n}(tf),sw=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),uw=function(t){function n(n,i,r,e){var o=t.call(this,n,i,r,e)||this;return o._u=null,o.Lt=null,o.Wf=void 0,o.Yf=void 0,o.Zf=void 0,o.$f=void 0,o.ou=void 0,o.Kf=void 0,o.Hf=void 0,o.su=void 0,o.Dr=void 0,o.uu=void 0,o.Uu=void 0,o.fu=void 0,o.Jf=void 0,o}return sw(n,t),n.prototype.drawPoint=function(t,n){if(this.Lt){this.beginGeometry(t,n);var i=t.getFlatCoordinates(),r=t.getStride(),e=this.coordinates.length,o=this.appendFlatPointCoordinates(i,r);this.instructions.push([rw.DRAW_IMAGE,e,o,this.Lt,this.Yf*this.Wf,this.Zf*this.Wf,Math.ceil(this.$f*this.Wf),this.ou,this.Kf*this.Wf,this.Hf*this.Wf,this.su,this.Dr,[this.uu[0]*this.pixelRatio/this.Wf,this.uu[1]*this.pixelRatio/this.Wf],Math.ceil(this.Uu*this.Wf),this.fu,this.Jf]),this.hitDetectionInstructions.push([rw.DRAW_IMAGE,e,o,this._u,this.Yf,this.Zf,this.$f,this.ou,this.Kf,this.Hf,this.su,this.Dr,this.uu,this.Uu,this.fu,this.Jf]),this.endGeometry(n)}},n.prototype.drawMultiPoint=function(t,n){if(this.Lt){this.beginGeometry(t,n);var i=t.getFlatCoordinates(),r=t.getStride(),e=this.coordinates.length,o=this.appendFlatPointCoordinates(i,r);this.instructions.push([rw.DRAW_IMAGE,e,o,this.Lt,this.Yf*this.Wf,this.Zf*this.Wf,Math.ceil(this.$f*this.Wf),this.ou,this.Kf*this.Wf,this.Hf*this.Wf,this.su,this.Dr,[this.uu[0]*this.pixelRatio/this.Wf,this.uu[1]*this.pixelRatio/this.Wf],Math.ceil(this.Uu*this.Wf),this.fu,this.Jf]),this.hitDetectionInstructions.push([rw.DRAW_IMAGE,e,o,this._u,this.Yf,this.Zf,this.$f,this.ou,this.Kf,this.Hf,this.su,this.Dr,this.uu,this.Uu,this.fu,this.Jf]),this.endGeometry(n)}},n.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.Yf=void 0,this.Zf=void 0,this._u=null,this.Lt=null,this.Wf=void 0,this.$f=void 0,this.uu=void 0,this.ou=void 0,this.Kf=void 0,this.Hf=void 0,this.su=void 0,this.Dr=void 0,this.Uu=void 0,t.prototype.finish.call(this)},n.prototype.setImageStyle=function(t,n){var i=t.getAnchor(),r=t.getSize(),e=t.getOrigin();this.Wf=t.getPixelRatio(this.pixelRatio),this.Yf=i[0],this.Zf=i[1],this._u=t.getHitDetectionImage(),this.Lt=t.getImage(this.pixelRatio),this.$f=r[1],this.ou=t.getOpacity(),this.Kf=e[0],this.Hf=e[1],this.su=t.getRotateWithView(),this.Dr=t.getRotation(),this.uu=t.getScaleArray(),this.Uu=r[0],this.fu=t.getDeclutterMode(),this.Jf=n},n}(ow),aw=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),hw=function(t){function n(n,i,r,e){return t.call(this,n,i,r,e)||this}return aw(n,t),n.prototype.Qf=function(t,n,i,r){var e=this.coordinates.length,o=this.appendFlatLineCoordinates(t,n,i,r,!1,!1),s=[rw.MOVE_TO_LINE_TO,e,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),i},n.prototype.drawLineString=function(t,n){var i=this.state,r=i.strokeStyle,e=i.lineWidth;if(void 0!==r&&void 0!==e){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,n),this.hitDetectionInstructions.push([rw.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,Ps,0],nw);var o=t.getFlatCoordinates(),s=t.getStride();this.Qf(o,0,o.length,s),this.hitDetectionInstructions.push(tw),this.endGeometry(n)}},n.prototype.drawMultiLineString=function(t,n){var i=this.state,r=i.strokeStyle,e=i.lineWidth;if(void 0!==r&&void 0!==e){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,n),this.hitDetectionInstructions.push([rw.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],nw);for(var o=t.getEnds(),s=t.getFlatCoordinates(),u=t.getStride(),a=0,h=0,f=o.length;ht&&(m>y&&(y=m,d=w,p=o),m=0,w=o-e)),s=u,f=l,c=v),a=g,h=b}return(m+=u)>y?[w,o]:[d,p]}var vw=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),dw={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},pw=function(t){function n(n,i,r,e){var o=t.call(this,n,i,r,e)||this;return o.rc=null,o.eo="",o.oo=0,o.so=0,o.uo=void 0,o.ao=0,o.fo=null,o.fillStates={},o.co=null,o.strokeStates={},o.lo={},o.textStates={},o.ec="",o.oc="",o.sc="",o.Jf=void 0,o}return vw(n,t),n.prototype.finish=function(){var n=t.prototype.finish.call(this);return n.textStates=this.textStates,n.fillStates=this.fillStates,n.strokeStates=this.strokeStates,n},n.prototype.drawText=function(t,n){var i=this.fo,r=this.co,e=this.lo;if(""!==this.eo&&e&&(i||r)){var o=this.coordinates,s=o.length,u=t.getType(),a=null,h=t.getStride();if(e.placement!==jv||"LineString"!=u&&"MultiLineString"!=u&&"Polygon"!=u&&"MultiPolygon"!=u){var f=e.overflow?null:[];switch(u){case"Point":case"MultiPoint":a=t.getFlatCoordinates();break;case"LineString":a=t.getFlatMidpoint();break;case"Circle":a=t.getCenter();break;case"MultiLineString":a=t.getFlatMidpoints(),h=2;break;case"Polygon":a=t.getFlatInteriorPoint(),e.overflow||f.push(a[2]/this.resolution),h=3;break;case"MultiPolygon":var c=t.getFlatInteriorPoints();a=[];for(M=0,_=c.length;M<_;M+=3)e.overflow||f.push(c[M+2]/this.resolution),a.push(c[M],c[M+1]);if(0===a.length)return;h=2}if((P=this.appendFlatPointCoordinates(a,h))===s)return;if(f&&(P-s)/2!=a.length/h){var l=s/2;f=f.filter((function(t,n){var i=o[2*(l+n)]===a[n*h]&&o[2*(l+n)+1]===a[n*h+1];return i||--l,i}))}this.uc(),(e.backgroundFill||e.backgroundStroke)&&(this.setFillStrokeStyle(e.backgroundFill,e.backgroundStroke),e.backgroundFill&&(this.updateFillStyle(this.state,this.createFill),this.hitDetectionInstructions.push(this.createFill(this.state))),e.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(t,n);var v=e.padding;if(v!=zs&&(e.scale[0]<0||e.scale[1]<0)){var d=e.padding[0],p=e.padding[1],y=e.padding[2],m=e.padding[3];e.scale[0]<0&&(p=-p,m=-m),e.scale[1]<0&&(d=-d,y=-y),v=[d,p,y,m]}var w=this.pixelRatio;this.instructions.push([rw.DRAW_IMAGE,s,P,null,NaN,NaN,NaN,1,0,0,this.uo,this.ao,[1,1],NaN,void 0,this.Jf,v==zs?zs:v.map((function(t){return t*w})),!!e.backgroundFill,!!e.backgroundStroke,this.eo,this.ec,this.sc,this.oc,this.oo,this.so,f]);var g=1/w;this.hitDetectionInstructions.push([rw.DRAW_IMAGE,s,P,null,NaN,NaN,NaN,1,0,0,this.uo,this.ao,[g,g],NaN,void 0,this.Jf,v,!!e.backgroundFill,!!e.backgroundStroke,this.eo,this.ec,this.sc,this.oc,this.oo,this.so,f]),this.endGeometry(n)}else{if(!Kn(this.getBufferedMaxExtent(),t.getExtent()))return;var b=void 0;if(a=t.getFlatCoordinates(),"LineString"==u)b=[a.length];else if("MultiLineString"==u)b=t.getEnds();else if("Polygon"==u)b=t.getEnds().slice(0,1);else if("MultiPolygon"==u){var x=t.getEndss();b=[];for(var M=0,_=x.length;M<_;++M)b.push(x[M][0])}this.beginGeometry(t,n);for(var S=e.textAlign,O=0,j=void 0,E=0,T=b.length;ET[2]}else O=b>j;var A,P=Math.PI,C=[],k=M+r===n;if(y=0,m=_,l=t[n=M],v=t[n+1],k){w(),A=Math.atan2(v-p,l-d),O&&(A+=A>0?-P:P);var I=(j+b)/2,N=(E+x)/2;return C[0]=[I,N,(S-o)/2,A,e],C}for(var L=0,z=(e=e.replace(/\n/g," ")).length;L0?-P:P),void 0!==A){var F=R-A;if(F+=F>P?-2*P:F<-P?2*P:0,Math.abs(F)>s)return null}A=R;for(var G=L,D=0;L0&&t.push("\n",""),t.push(n,""),t}var Aw=function(){function t(t,n,i,r){this.overlaps=i,this.pixelRatio=n,this.resolution=t,this.vc,this.instructions=r.instructions,this.coordinates=r.coordinates,this.dc={},this.yc=[1,0,0,1,0,0],this.hitDetectionInstructions=r.hitDetectionInstructions,this.vo=null,this.Ge=0,this.fillStates=r.fillStates||{},this.strokeStates=r.strokeStates||{},this.textStates=r.textStates||{},this.mc={},this.rc={}}return t.prototype.createLabel=function(t,n,i,r){var e=t+n+i+r;if(this.rc[e])return this.rc[e];var o=r?this.strokeStates[r]:null,s=i?this.fillStates[i]:null,u=this.textStates[n],a=this.pixelRatio,h=[u.scale[0]*a,u.scale[1]*a],f=Array.isArray(t),c=u.justify?dw[u.justify]:Ew(Array.isArray(t)?t[0]:t,u.textAlign||Ns),l=r&&o.lineWidth?o.lineWidth:0,v=f?t:t.split("\n").reduce(Tw,[]),d=Zs(u,v),p=d.width,y=d.height,m=d.widths,w=d.heights,g=d.lineWidths,b=p+l,x=[],M=(b+2)*h[0],_=(y+l)*h[1],S={width:M<0?Math.floor(M):Math.ceil(M),height:_<0?Math.floor(_):Math.ceil(_),contextInstructions:x};(1==h[0]&&1==h[1]||x.push("scale",h),r)&&(x.push("strokeStyle",o.strokeStyle),x.push("lineWidth",l),x.push("lineCap",o.lineCap),x.push("lineJoin",o.lineJoin),x.push("miterLimit",o.miterLimit),(Vt?OffscreenCanvasRenderingContext2D:CanvasRenderingContext2D).prototype.setLineDash&&(x.push("setLineDash",[o.lineDash]),x.push("lineDashOffset",o.lineDashOffset)));i&&x.push("fillStyle",s.fillStyle),x.push("textBaseline","middle"),x.push("textAlign","center");for(var O,j=.5-c,E=c*b+j*l,T=[],A=[],P=0,C=0,k=0,I=0,N=0,L=v.length;Nt?t-a:e,b=o+h>n?n-h:o,x=v[3]+g*c[0]+v[1],M=v[0]+b*c[1]+v[2],_=m-v[3],S=w-v[0];return(d||0!==f)&&(xw[0]=_,Sw[0]=_,xw[1]=S,Mw[1]=S,Mw[0]=_+x,_w[0]=Mw[0],_w[1]=S+M,Sw[1]=_w[1]),0!==f?(tn(y=sn([1,0,0,1,0,0],i,r,1,1,f,-i,-r),xw),tn(y,Mw),tn(y,_w),tn(y,Sw),On(Math.min(xw[0],Mw[0],_w[0],Sw[0]),Math.min(xw[1],Mw[1],_w[1],Sw[1]),Math.max(xw[0],Mw[0],_w[0],Sw[0]),Math.max(xw[1],Mw[1],_w[1],Sw[1]),bw)):On(Math.min(_,_+x),Math.min(S,S+M),Math.max(_,_+x),Math.max(S,S+M),bw),l&&(m=Math.round(m),w=Math.round(w)),{drawImageX:m,drawImageY:w,drawImageW:g,drawImageH:b,originX:a,originY:h,declutterBox:{minX:bw[0],minY:bw[1],maxX:bw[2],maxY:bw[3],value:p},canvasTransform:y,scale:c}},t.prototype.xc=function(t,n,i,r,e,o,s){var u=!(!o&&!s),a=r.declutterBox,h=t.canvas,f=s?s[2]*r.scale[0]/2:0;return a.minX-f<=h.width/n&&a.maxX+f>=0&&a.minY-f<=h.height/n&&a.maxY+f>=0&&(u&&this.wc(t,xw,Mw,_w,Sw,o,s),$s(t,r.canvasTransform,e,i,r.originX,r.originY,r.drawImageW,r.drawImageH,r.drawImageX,r.drawImageY,r.scale)),!0},t.prototype.lu=function(t){if(this.vc){var n=tn(this.yc,[0,0]),i=512*this.pixelRatio;t.save(),t.translate(n[0]%i,n[1]%i),t.rotate(this.Ge)}t.fill(),this.vc&&t.restore()},t.prototype.gc=function(t,n){t.strokeStyle=n[1],t.lineWidth=n[2],t.lineCap=n[3],t.lineJoin=n[4],t.miterLimit=n[5],t.setLineDash&&(t.lineDashOffset=n[7],t.setLineDash(n[6]))},t.prototype.Mc=function(t,n,i,r){var e=this.textStates[n],o=this.createLabel(t,n,r,i),s=this.strokeStates[i],u=this.pixelRatio,a=Ew(Array.isArray(t)?t[0]:t,e.textAlign||Ns),h=dw[e.textBaseline||Ls],f=s&&s.lineWidth?s.lineWidth:0;return{label:o,anchorX:a*(o.width/u-2*e.scale[0])+2*(.5-a)*f,anchorY:h*o.height/u+2*(.5-h)*f}},t.prototype._c=function(t,n,i,r,e,o,s,u){var a;this.vo&&x(i,this.yc)?a=this.vo:(this.vo||(this.vo=[]),a=Dr(this.coordinates,0,this.coordinates.length,2,i,this.vo),Qt(this.yc,i));for(var h,f,c,l,v,d,p,y,m,w,g,b,M,_,S,O,j=0,E=r.length,T=0,A=0,P=0,C=null,k=null,I=this.dc,N=this.Ge,L=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,z={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:N},R=this.instructions!=r||this.overlaps?0:200;jR&&(this.lu(t),A=0),P>R&&(t.stroke(),P=0),A||P||(t.beginPath(),l=NaN,v=NaN),++j;break;case rw.CIRCLE:var G=a[T=F[1]],D=a[T+1],q=a[T+2]-G,U=a[T+3]-D,B=Math.sqrt(q*q+U*U);t.moveTo(G+B,D),t.arc(G,D,B,0,2*Math.PI,!0),++j;break;case rw.CLOSE_PATH:t.closePath(),++j;break;case rw.CUSTOM:T=F[1],h=F[2];var X=F[3],V=F[4],W=6==F.length?F[5]:void 0;z.geometry=X,z.feature=M,j in I||(I[j]=[]);var Y=I[j];W?W(a,T,h,2,Y):(Y[0]=a[T],Y[1]=a[T+1],Y.length=2),V(Y,z),++j;break;case rw.DRAW_IMAGE:T=F[1],h=F[2],y=F[3],f=F[4],c=F[5];var Z=F[6],$=F[7],K=F[8],H=F[9],J=F[10],Q=F[11],tt=F[12],nt=F[13],it=F[14],rt=F[15];if(!y&&F.length>=20){m=F[19],w=F[20],g=F[21],b=F[22];var et=this.Mc(m,w,g,b);y=et.label,F[3]=y;var ot=F[23];f=(et.anchorX-ot)*this.pixelRatio,F[4]=f;var st=F[24];c=(et.anchorY-st)*this.pixelRatio,F[5]=c,Z=y.height,F[6]=Z,nt=y.width,F[13]=nt}var ut=void 0;F.length>25&&(ut=F[25]);var at=void 0,ht=void 0,ft=void 0;F.length>17?(at=F[16],ht=F[17],ft=F[18]):(at=zs,ht=!1,ft=!1),J&&L?Q+=N:J||L||(Q-=N);for(var ct=0;T0){if(!o||"Image"!==c&&"Text"!==c||-1!==o.indexOf(t)){var h=(l[u]-3)/4,v=r-h%s,d=r-(h/s|0),p=e(t,n,v*v+d*d);if(p)return p}f.clearRect(0,0,s,s);break}}var d,y,m,w,g,b=Object.keys(this.Sc).map(Number);for(b.sort(p),d=b.length-1;d>=0;--d){var x=b[d].toString();for(m=this.Sc[x],y=Pw.length-1;y>=0;--y)if(void 0!==(w=m[c=Pw[y]])&&(g=w.executeHitDetection(f,u,i,v,h)))return g}},t.prototype.getClipCoords=function(t){var n=this.fc;if(!n)return null;var i=n[0],r=n[1],e=n[2],o=n[3],s=[i,r,i,o,e,o,e,r];return Dr(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return k(this.Sc)},t.prototype.execute=function(t,n,i,r,e,o,s){var u=Object.keys(this.Sc).map(Number);u.sort(p),this.fc&&(t.save(),this.clip(t,i));var a,h,f,c,l,v,d=o||Pw;for(s&&u.reverse(),a=0,h=u.length;ai)break;var u=r[s];u||(u=[],r[s]=u),u.push(4*((t+e)*n+(t+o))+3),e>0&&u.push(4*((t-e)*n+(t+o))+3),o>0&&(u.push(4*((t+e)*n+(t-o))+3),e>0&&u.push(4*((t-e)*n+(t-o))+3))}for(var a=[],h=(e=0,r.length);ev[2];)m=p*++y,h.push(this.getRenderTransform(r,e,o,Lw,f,c,m).slice()),d-=p}this.Cc=zw(i,h,this.kc,a.getStyleFunction(),u,e,o)}n(Rw(t,this.kc,this.Cc))}.bind(this))},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e){var s=this;if(this.Gc){var u,a=n.viewState.resolution,h=n.viewState.rotation,f=this.getLayer(),c={},l=function(t,n,i){var s=o(t),u=c[s];if(u){if(!0!==u&&ig[0]&&_[2]>g[2]&&w.push([_[0]-b,_[1],_[2]-b,_[3]])}if(this.ready&&this.Ic==f&&this._h==l&&this.Fc==d&&xn(this.Nc,y))return x(this.zh,m)||(this.Cc=null,this.zh=m),this.zc=p,this.replayGroupChanged=!1,!0;this.Gc=null;var S,O=new mw(uf(f,c),y,f,c);this.getLayer().getDeclutter()&&(S=new mw(uf(f,c),y,f,c));var j,E=Cr();if(E){for(var T=0,A=w.length;T0)n([]);else{var m=Yn(c.getTileCoordExtent(r.wrappedTileCoord)),w=[(l[0]-m[0])/f,(m[1]-l[1])/f],g=r.getSourceTiles().reduce((function(t,n){return t.concat(n.getFeatures())}),[]),b=r.hitDetectionImageData[s];if(!b&&!this.Pc){var x=Qu(c.getTileSize(c.getZForResolution(f,u.zDirection))),M=this.Lc;b=zw(x,[this.getRenderTransform(c.getTileCoordCenter(r.wrappedTileCoord),f,0,Lw,x[0]*Lw,x[1]*Lw,0)],g,e.getStyleFunction(),c.getTileCoordExtent(r.wrappedTileCoord),r.getReplayState(e).renderedResolution,M),r.hitDetectionImageData[s]=b}n(Rw(w,g,b))}}.bind(this))},n.prototype.handleFontsChanged=function(){var t=this.getLayer();t.getVisible()&&void 0!==this.Yc&&t.changed()},n.prototype.Ac=function(t){this.renderIfReadyAndVisible()},n.prototype.renderDeclutter=function(t){var n=this.context,i=n.globalAlpha;n.globalAlpha=this.getLayer().getOpacity();for(var r=t.viewHints,e=!(r[Eu]||r[Tu]),s=this.renderedTiles,u=0,a=s.length;u=0;--c)f[c].execute(this.context,1,this.getTileRenderTransform(h,t),t.viewState.rotation,e,void 0,t.declutterTree)}n.globalAlpha=i},n.prototype.getTileRenderTransform=function(t,n){var i=n.pixelRatio,r=n.viewState,e=r.center,o=r.resolution,s=r.rotation,u=n.size,a=Math.round(u[0]*i),h=Math.round(u[1]*i),f=this.getLayer().getSource().getTileGridForProjection(n.viewState.projection),c=t.tileCoord,l=f.getTileCoordExtent(t.wrappedTileCoord),v=f.getTileCoordExtent(c,this.tmpExtent)[0]-l[0];return Ht(rn(this.inversePixelTransform.slice(),1/i,1/i),this.getRenderTransform(e,o,s,i,a,h,v))},n.prototype.renderFrame=function(n,i){var r=n.viewHints,e=!(r[Eu]||r[Tu]);t.prototype.renderFrame.call(this,n,i),this.Wc=n.pixelToCoordinateTransform.slice(),this.Lc=n.viewState.rotation;var s=this.getLayer(),u=s.getRenderMode(),a=this.context,h=a.globalAlpha;a.globalAlpha=s.getOpacity();for(var f=Yw[u],c=n.viewState,l=c.rotation,v=s.getSource(),d=v.getTileGridForProjection(c.projection).getZForResolution(c.resolution,v.zDirection),p=this.renderedTiles,y=[],m=[],w=!0,g=p.length-1;g>=0;--g){var b=p[g];w=w&&!b.getReplayState(s).dirty;var x=b.executorGroups[o(s)].filter((function(t){return t.hasExecutors(f)}));if(0!==x.length){var M=this.getTileRenderTransform(b,n),_=b.tileCoord[0],S=!1,O=x[0].getClipCoords(M);if(O){for(var j=0,E=y.length;j1?s:2,x=o||new Array(b);for(p=0;p>1;e1?new sg(i,Tt,e):new We(i,Tt,r);default:throw new Error("Invalid geometry type:"+n)}}ag.prototype.getEndss=ag.prototype.getEnds,ag.prototype.getFlatCoordinates=ag.prototype.getOrientedFlatCoordinates;var fg=ag;var cg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),lg=function(t){function n(n){return t.call(this,n)||this}return cg(n,t),n.prototype.createRenderer=function(){return new Gw(this)},n}($m);function vg(t,n,i){for(var r,e,o,s,u,a,h=[],f=t(0),c=t(1),l=n(f),v=n(c),d=[c,f],p=[v,l],y=[1,0],m={},w=1e5;--w>0&&y.length>0;)o=y.pop(),f=d.pop(),l=p.pop(),(a=o.toString())in m||(h.push(l[0],l[1]),m[a]=!0),s=y.pop(),c=d.pop(),v=p.pop(),ai((e=n(r=t(u=(o+s)/2)))[0],e[1],l[0],l[1],v[0],v[1])this.Dl.length;)u=new Et,this.Dl.push(u);var h=r.getFeaturesCollection();h.clear();var f,c,l=0;for(f=0,c=this.wl.length;fMath.PI/2);for(var d=ff(t),p=h;p<=f;++p){var y=this.wl.length+this.gl.length,m=void 0,w=void 0,g=void 0,b=void 0;if(this.Tl)for(w=0,g=this.Tl.length;w=u?(t[0]=s[0],t[2]=s[2]):o=!0);var a=[oi(n[0],this.dl,this.ll),oi(n[1],this.pl,this.vl)],h=this.Ml(a);isNaN(h[1])&&(h[1]=Math.abs(this.al)>=Math.abs(this.fl)?this.al:this.fl);var f,c,l,v,d=oi(h[0],this.cl,this.hl),p=oi(h[1],this.fl,this.al),y=this.ml,m=t;o||(m=[oi(t[0],this.dl,this.ll),oi(t[1],this.pl,this.vl),oi(t[2],this.dl,this.ll),oi(t[3],this.pl,this.vl)]);var w=ni(m,this.Ml,void 0,8),g=w[3],b=w[2],x=w[1],M=w[0];if(o||(bn(m,this.Sl)&&(M=this.cl,x=this.fl),bn(m,this.Ol)&&(b=this.hl,x=this.fl),bn(m,this.jl)&&(M=this.cl,g=this.al),bn(m,this.El)&&(b=this.hl,g=this.al),g=oi(g,p,this.al),b=oi(b,d,this.hl),x=oi(x,this.fl,p),M=oi(M,this.cl,d)),v=oi(d=Math.floor(d/e)*e,this.cl,this.hl),c=this.Vl(v,x,g,r,t,0),f=0,o)for(;(v-=e)>=M&&f++r[o]&&(e=o,o=1);var s=Math.max(n[1],r[e]),u=Math.min(n[3],r[o]),a=oi(n[1]+Math.abs(n[1]-n[3])*this.kl,s,u),h=[r[e-1]+(r[o-1]-r[e-1])*(a-r[e])/(r[o]-r[e]),a],f=this.Tl[i].geom;return f.setCoordinates(h),f},n.prototype.getMeridians=function(){return this.wl},n.prototype.Zl=function(t,n,i,r,e){var o=pg(t,n,i,this.di,r),s=this.gl[e];return s?(s.setFlatCoordinates(Tt,o),s.changed()):s=new ng(o,Tt),s},n.prototype.Kl=function(t,n,i){var r=t.getFlatCoordinates(),e=0,o=r.length-2;r[e]>r[o]&&(e=o,o=0);var s=Math.max(n[0],r[e]),u=Math.min(n[2],r[o]),a=oi(n[0]+Math.abs(n[0]-n[2])*this.Il,s,u),h=[a,r[e+1]+(r[o+1]-r[e+1])*(a-r[e])/(r[o]-r[e])],f=this.Al[i].geom;return f.setCoordinates(h),f},n.prototype.getParallels=function(){return this.gl},n.prototype.Bl=function(t){var n=yr("EPSG:4326"),i=t.getWorldExtent();this.al=i[3],this.hl=i[2],this.fl=i[1],this.cl=i[0];var r=jr(t,n);if(this.cl=Math.abs(this.fl)?this.al:this.fl),this.di=t},n}(lg),bg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xg="blur",Mg="gradient",_g="radius",Sg=["#00f","#0ff","#0f0","#ff0","#f00"];var Og=function(t){function n(n){var i=this,r=n||{},e=A({},r);delete e.gradient,delete e.radius,delete e.blur,delete e.weight,(i=t.call(this,e)||this).Jl=null,i.addChangeListener(Mg,i.Ql),i.setGradient(r.gradient?r.gradient:Sg),i.setBlur(void 0!==r.blur?r.blur:15),i.setRadius(void 0!==r.radius?r.radius:8);var o=r.weight?r.weight:"weight";return i.tv="string"==typeof o?function(t){return t.get(o)}:o,i.setRenderOrder(null),i}return bg(n,t),n.prototype.getBlur=function(){return this.get(xg)},n.prototype.getGradient=function(){return this.get(Mg)},n.prototype.getRadius=function(){return this.get(_g)},n.prototype.Ql=function(){this.Jl=function(t){for(var n=1,i=256,r=_o(n,i),e=r.createLinearGradient(0,0,n,i),o=1/(t.length-1),s=0,u=t.length;s>3)?i.readString():2===t?i.readFloat():3===t?i.readDouble():4===t?i.readVarint64():5===t?i.readVarint():6===t?i.readSVarint():7===t?i.readBoolean():null;n.values.push(r)}}function Ig(t,n,i){if(1==t)n.id=i.readVarint();else if(2==t)for(var r=i.readVarint()+i.pos;i.pos>3}s--,1===o||2===o?(u+=t.readSVarint(),a+=t.readSVarint(),1===o&&h>f&&(r.push(h),f=h),i.push(u,a),h+=2):7===o?h>f&&(i.push(i[f],i[f+1]),h+=2):St(!1,59)}h>f&&(r.push(h),f=h)},n.prototype.ov=function(t,n,i){var r,e=n.type;if(0===e)return null;var o,s=n.properties;this.rv?(o=s[this.rv],delete s[this.rv]):o=n.id,s[this.iv]=n.layer.name;var u=[],a=[];this.ev(t,n,u,a);var h=function(t,n){var i;1===t?i=1===n?"Point":"MultiPoint":2===t?i=1===n?"LineString":"MultiLineString":3===t&&(i="Polygon");return i}(e,a.length);if(this.nv===fg)(r=new this.nv(h,u,a,s,o)).transform(i.dataProjection);else{var f=void 0;if("Polygon"==h){var c=Be(u,a);f=c.length>1?new sg(u,Tt,c):new We(u,Tt,a)}else f="Point"===h?new Se(u,Tt):"LineString"===h?new ng(u,Tt):"MultiPoint"===h?new Kw(u,Tt):"MultiLineString"===h?new rg(u,Tt,a):null;r=new(0,this.nv),this.K&&r.setGeometryName(this.K);var l=Eg(f,!1,i);r.setGeometry(l),void 0!==o&&r.setId(o),r.setProperties(s,!0)}return r},n.prototype.getType=function(){return"arraybuffer"},n.prototype.readFeatures=function(t,n){var i=this.Uh,r=this.adaptOptions(n),e=yr(r.dataProjection);e.setWorldExtent(r.extent),r.dataProjection=e;var o=new Ag(t),s=o.readFields(Cg,{}),u=[];for(var a in s)if(!i||-1!=i.indexOf(a)){var h=s[a],f=h?[0,0,h.extent,h.extent]:null;e.setExtent(f);for(var c=0,l=h.length;c255?255:t}function Hg(t){return t<0?0:t>1?1:t}function Jg(t){return"%"===t[t.length-1]?Kg(parseFloat(t)/100*255):Kg(parseInt(t))}function Qg(t){return"%"===t[t.length-1]?Hg(parseFloat(t)/100):Hg(parseFloat(t))}function tb(t,n,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(n-t)*i*6:2*i<1?n:3*i<2?t+(n-t)*(2/3-i)*6:t}try{Yg={}.parseCSSColor=function(t){var n,i=t.replace(/ /g,"").toLowerCase();if(i in $g)return $g[i].slice();if("#"===i[0])return 4===i.length?(n=parseInt(i.substr(1),16))>=0&&n<=4095?[(3840&n)>>4|(3840&n)>>8,240&n|(240&n)>>4,15&n|(15&n)<<4,1]:null:7===i.length&&(n=parseInt(i.substr(1),16))>=0&&n<=16777215?[(16711680&n)>>16,(65280&n)>>8,255&n,1]:null;var r=i.indexOf("("),e=i.indexOf(")");if(-1!==r&&e+1===i.length){var o=i.substr(0,r),s=i.substr(r+1,e-(r+1)).split(","),u=1;switch(o){case"rgba":if(4!==s.length)return null;u=Qg(s.pop());case"rgb":return 3!==s.length?null:[Jg(s[0]),Jg(s[1]),Jg(s[2]),u];case"hsla":if(4!==s.length)return null;u=Qg(s.pop());case"hsl":if(3!==s.length)return null;var a=(parseFloat(s[0])%360+360)%360/360,h=Qg(s[1]),f=Qg(s[2]),c=f<=.5?f*(h+1):f+h-f*h,l=2*f-c;return[Kg(255*tb(l,c,a+1/3)),Kg(255*tb(l,c,a)),Kg(255*tb(l,c,a-1/3)),u];default:return null}}return null}}catch(t){}var nb=function(t,n,i,r){void 0===r&&(r=1),this.r=t,this.g=n,this.b=i,this.a=r};function ib(t){return"object"==typeof t?["literal",t]:t}function rb(t,n){var i=t.stops;if(!i)return function(t,n){var i=["get",t.property];if(void 0===t.default)return"string"===n.type?["string",i]:i;if("enum"===n.type)return["match",i,Object.keys(n.values),i,t.default];var r=["color"===n.type?"to-color":n.type,i,ib(t.default)];return"array"===n.type&&r.splice(1,0,n.value,n.length||null),r}(t,n);var r=i&&"object"==typeof i[0][0],e=r||void 0!==t.property,o=r||!e;return i=i.map((function(t){return!e&&n.tokens&&"string"==typeof t[1]?[t[0],fb(t[1])]:[t[0],ib(t[1])]})),r?function(t,n,i){for(var r={},e={},o=[],s=0;s3&&n===t[t.length-2]||(r&&2===t.length||t.push(n),t.push(i))}function hb(t,n){return t.type?t.type:n.expression.interpolated?"exponential":"interval"}function fb(t){for(var n=["concat"],i=/{([^{}]+)}/g,r=0,e=i.exec(t);null!==e;e=i.exec(t)){var o=t.slice(r,i.lastIndex-e[0].length);r=i.lastIndex,o.length>0&&n.push(o),n.push(["get",e[1]])}if(1===n.length)return t;if(r":"value"===t.itemType.kind?"array":"array<"+n+">"}return t.kind}var Ob=[vb,db,pb,yb,mb,xb,wb,_b(gb),Mb];function jb(t,n){if("error"===n.kind)return null;if("array"===t.kind){if("array"===n.kind&&(0===n.N&&"value"===n.itemType.kind||!jb(t.itemType,n.itemType))&&("number"!=typeof t.N||t.N===n.N))return null}else{if(t.kind===n.kind)return null;if("value"===t.kind)for(var i=0,r=Ob;i=0&&t<=255&&"number"==typeof n&&n>=0&&n<=255&&"number"==typeof i&&i>=0&&i<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:"Invalid rgba value ["+[t,n,i,r].join(", ")+"]: 'a' must be between 0 and 1.":"Invalid rgba value ["+("number"==typeof r?[t,n,i,r]:[t,n,i]).join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}function Nb(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof nb)return!0;if(t instanceof Ab)return!0;if(t instanceof Cb)return!0;if(t instanceof kb)return!0;if(Array.isArray(t)){for(var n=0,i=t;n2){var u=t[1];if("string"!=typeof u||!(u in Gb)||"object"===u)return n.error('The item type argument of "array" must be one of string, number, boolean',1);o=Gb[u],r++}else o=gb;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return n.error('The length argument to "array" must be a positive integer literal',2);s=t[2],r++}i=_b(o,s)}else i=Gb[e];for(var a=[];r1)&&n.push(r)}}return n.concat(this.args.map((function(t){return t.serialize()})))};var qb=function(t){this.type=xb,this.sections=t};qb.parse=function(t,n){if(t.length<2)return n.error("Expected at least one argument.");var i=t[1];if(!Array.isArray(i)&&"object"==typeof i)return n.error("First argument must be an image or text section.");for(var r=[],e=!1,o=1;o<=t.length-1;++o){var s=t[o];if(e&&"object"==typeof s&&!Array.isArray(s)){e=!1;var u=null;if(s["font-scale"]&&!(u=n.parse(s["font-scale"],1,db)))return null;var a=null;if(s["text-font"]&&!(a=n.parse(s["text-font"],1,_b(pb))))return null;var h=null;if(s["text-color"]&&!(h=n.parse(s["text-color"],1,mb)))return null;var f=r[r.length-1];f.scale=u,f.font=a,f.textColor=h}else{var c=n.parse(t[o],1,gb);if(!c)return null;var l=c.type.kind;if("string"!==l&&"value"!==l&&"null"!==l&&"resolvedImage"!==l)return n.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");e=!0,r.push({content:c,scale:null,font:null,textColor:null})}}return new qb(r)},qb.prototype.evaluate=function(t){return new Cb(this.sections.map((function(n){var i=n.content.evaluate(t);return Lb(i)===Mb?new Pb("",i,null,null,null):new Pb(zb(i),null,n.scale?n.scale.evaluate(t):null,n.font?n.font.evaluate(t).join(","):null,n.textColor?n.textColor.evaluate(t):null)})))},qb.prototype.eachChild=function(t){for(var n=0,i=this.sections;n-1),i},Ub.prototype.eachChild=function(t){t(this.input)},Ub.prototype.outputDefined=function(){return!1},Ub.prototype.serialize=function(){return["image",this.input.serialize()]};var Bb={"to-boolean":yb,"to-color":mb,"to-number":db,"to-string":pb},Xb=function(t,n){this.type=t,this.args=n};Xb.parse=function(t,n){if(t.length<2)return n.error("Expected at least one argument.");var i=t[0];if(("to-boolean"===i||"to-string"===i)&&2!==t.length)return n.error("Expected one argument.");for(var r=Bb[i],e=[],o=1;o4?"Invalid rbga value "+JSON.stringify(n)+": expected an array containing either three or four numeric values.":Ib(n[0],n[1],n[2],n[3])))return new nb(n[0]/255,n[1]/255,n[2]/255,n[3])}throw new Fb(i||"Could not parse color from value '"+("string"==typeof n?n:String(JSON.stringify(n)))+"'")}if("number"===this.type.kind){for(var s=null,u=0,a=this.args;u=n[2])&&(!(t[1]<=n[1])&&!(t[3]>=n[3])))}function Jb(t,n){var i,r=(180+t[0])/360,e=(i=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360),o=Math.pow(2,n.z);return[Math.round(r*o*$b),Math.round(e*o*$b)]}function Qb(t,n,i){var r=t[0]-n[0],e=t[1]-n[1],o=t[0]-i[0],s=t[1]-i[1];return r*s-o*e==0&&r*o<=0&&e*s<=0}function tx(t,n,i){return n[1]>t[1]!=i[1]>t[1]&&t[0]<(i[0]-n[0])*(t[1]-n[1])/(i[1]-n[1])+n[0]}function nx(t,n){for(var i=!1,r=0,e=n.length;r0&&c<0||f<0&&c>0}function ex(t,n,i){for(var r=0,e=i;ri[2]){var e=.5*r,o=t[0]-i[0]>e?-r:i[0]-t[0]>e?r:0;0===o&&(o=t[0]-i[2]>e?-r:i[2]-t[0]>e?r:0),t[0]+=o}Kb(n,t)}function fx(t,n,i,r){var e=Math.pow(2,r.z)*$b,o=[r.x*$b,r.y*$b],s=[];if(!t)return s;for(var u=0,a=t;u=0)return!1;var i=!0;return t.eachChild((function(t){i&&!px(t,n)&&(i=!1)})),i}lx.parse=function(t,n){if(2!==t.length)return n.error("'within' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(Nb(t[1])){var i=t[1];if("FeatureCollection"===i.type)for(var r=0;rn))throw new Fb("Input is not a number.");s=u-1}return 0}mx.prototype.parse=function(t,n,i,r,e){return void 0===e&&(e={}),n?this.concat(n,i,r)._parse(t,e):this._parse(t,e)},mx.prototype._parse=function(t,n){function i(t,n,i){return"assert"===i?new Db(n,[t]):"coerce"===i?new Xb(n,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var r=t[0];if("string"!=typeof r)return this.error("Expression name must be a string, but found "+typeof r+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var e=this.registry[r];if(e){var o=e.parse(t,this);if(!o)return null;if(this.expectedType){var s=this.expectedType,u=o.type;if("string"!==s.kind&&"number"!==s.kind&&"boolean"!==s.kind&&"object"!==s.kind&&"array"!==s.kind||"value"!==u.kind)if("color"!==s.kind&&"formatted"!==s.kind&&"resolvedImage"!==s.kind||"value"!==u.kind&&"string"!==u.kind){if(this.checkSubtype(s,u))return null}else o=i(o,s,n.typeAnnotation||"coerce");else o=i(o,s,n.typeAnnotation||"assert")}if(!(o instanceof Rb)&&"resolvedImage"!==o.type.kind&&wx(o)){var a=new Wb;try{o=new Rb(o.type,o.evaluate(a))}catch(t){return this.error(t.message),null}}return o}return this.error('Unknown expression "'+r+'". If you wanted a literal array, use ["literal", [...]].',0)}return void 0===t?this.error("'undefined' value invalid. Use null instead."):"object"==typeof t?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof t+" instead.")},mx.prototype.concat=function(t,n,i){var r="number"==typeof t?this.path.concat(t):this.path,e=i?this.scope.concat(i):this.scope;return new mx(this.registry,r,n||null,e,this.errors)},mx.prototype.error=function(t){for(var n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];var r=""+this.key+n.map((function(t){return"["+t+"]"})).join("");this.errors.push(new cb(r,t))},mx.prototype.checkSubtype=function(t,n){var i=jb(t,n);return i&&this.error(i),i};var bx=function(t,n,i){this.type=t,this.input=n,this.labels=[],this.outputs=[];for(var r=0,e=i;r=s)return n.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);var f=n.parse(u,h,e);if(!f)return null;e=e||f.type,r.push([s,f])}return new bx(e,i,r)},bx.prototype.evaluate=function(t){var n=this.labels,i=this.outputs;if(1===n.length)return i[0].evaluate(t);var r=this.input.evaluate(t);if(r<=n[0])return i[0].evaluate(t);var e=n.length;return r>=n[e-1]?i[e-1].evaluate(t):i[gx(n,r)].evaluate(t)},bx.prototype.eachChild=function(t){t(this.input);for(var n=0,i=this.outputs;n0&&t.push(this.labels[n]),t.push(this.outputs[n].serialize());return t};var xx=Mx;function Mx(t,n,i,r){this.cx=3*t,this.bx=3*(i-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*n,this.by=3*(r-n)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=r,this.p2x=i,this.p2y=r}function _x(t,n,i){return t*(1-i)+n*i}Mx.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},Mx.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},Mx.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},Mx.prototype.solveCurveX=function(t,n){var i,r,e,o,s;for(void 0===n&&(n=1e-6),e=t,s=0;s<8;s++){if(o=this.sampleCurveX(e)-t,Math.abs(o)(r=1))return r;for(;io?i=e:r=e,e=.5*(r-i)+i}return e},Mx.prototype.solve=function(t,n){return this.sampleCurveY(this.solveCurveX(t,n))};var Sx=Object.freeze({__proto__:null,number:_x,color:function(t,n,i){return new nb(_x(t.r,n.r,i),_x(t.g,n.g,i),_x(t.b,n.b,i),_x(t.a,n.a,i))},array:function(t,n,i){return t.map((function(t,r){return _x(t,n[r],i)}))}}),Ox=.95047,jx=1.08883,Ex=4/29,Tx=6/29,Ax=3*Tx*Tx,Px=Math.PI/180,Cx=180/Math.PI;function kx(t){return t>.008856451679035631?Math.pow(t,1/3):t/Ax+Ex}function Ix(t){return t>Tx?t*t*t:Ax*(t-Ex)}function Nx(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Lx(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function zx(t){var n=Lx(t.r),i=Lx(t.g),r=Lx(t.b),e=kx((.4124564*n+.3575761*i+.1804375*r)/Ox),o=kx((.2126729*n+.7151522*i+.072175*r)/1);return{l:116*o-16,a:500*(e-o),b:200*(o-kx((.0193339*n+.119192*i+.9503041*r)/jx)),alpha:t.a}}function Rx(t){var n=(t.l+16)/116,i=isNaN(t.a)?n:n+t.a/500,r=isNaN(t.b)?n:n-t.b/200;return n=1*Ix(n),i=Ox*Ix(i),r=jx*Ix(r),new nb(Nx(3.2404542*i-1.5371385*n-.4985314*r),Nx(-.969266*i+1.8760108*n+.041556*r),Nx(.0556434*i-.2040259*n+1.0572252*r),t.alpha)}function Fx(t,n,i){var r=n-t;return t+i*(r>180||r<-180?r-360*Math.round(r/360):r)}var Gx={forward:zx,reverse:Rx,interpolate:function(t,n,i){return{l:_x(t.l,n.l,i),a:_x(t.a,n.a,i),b:_x(t.b,n.b,i),alpha:_x(t.alpha,n.alpha,i)}}},Dx={forward:function(t){var n=zx(t),i=n.l,r=n.a,e=n.b,o=Math.atan2(e,r)*Cx;return{h:o<0?o+360:o,c:Math.sqrt(r*r+e*e),l:i,alpha:t.a}},reverse:function(t){var n=t.h*Px,i=t.c;return Rx({l:t.l,a:Math.cos(n)*i,b:Math.sin(n)*i,alpha:t.alpha})},interpolate:function(t,n,i){return{h:Fx(t.h,n.h,i),c:_x(t.c,n.c,i),l:_x(t.l,n.l,i),alpha:_x(t.alpha,n.alpha,i)}}},qx=function(t,n,i,r,e){this.type=t,this.operator=n,this.interpolation=i,this.input=r,this.labels=[],this.outputs=[];for(var o=0,s=e;o1})))return n.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:u}}if(t.length-1<4)return n.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if((t.length-1)%2!=0)return n.error("Expected an even number of arguments.");if(!(e=n.parse(e,2,db)))return null;var a=[],h=null;"interpolate-hcl"===i||"interpolate-lab"===i?h=mb:n.expectedType&&"value"!==n.expectedType.kind&&(h=n.expectedType);for(var f=0;f=c)return n.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',v);var p=n.parse(l,d,h);if(!p)return null;h=h||p.type,a.push([c,p])}return"number"===h.kind||"color"===h.kind||"array"===h.kind&&"number"===h.itemType.kind&&"number"==typeof h.N?new qx(h,i,r,e,a):n.error("Type "+Sb(h)+" is not interpolatable.")},qx.prototype.evaluate=function(t){var n=this.labels,i=this.outputs;if(1===n.length)return i[0].evaluate(t);var r=this.input.evaluate(t);if(r<=n[0])return i[0].evaluate(t);var e=n.length;if(r>=n[e-1])return i[e-1].evaluate(t);var o=gx(n,r),s=n[o],u=n[o+1],a=qx.interpolationFactor(this.interpolation,r,s,u),h=i[o].evaluate(t),f=i[o+1].evaluate(t);return"interpolate"===this.operator?Sx[this.type.kind.toLowerCase()](h,f,a):"interpolate-hcl"===this.operator?Dx.reverse(Dx.interpolate(Dx.forward(h),Dx.forward(f),a)):Gx.reverse(Gx.interpolate(Gx.forward(h),Gx.forward(f),a))},qx.prototype.eachChild=function(t){t(this.input);for(var n=0,i=this.outputs;n=i.length)throw new Fb("Array index out of bounds: "+n+" > "+(i.length-1)+".");if(n!==Math.floor(n))throw new Fb("Array index must be an integer, but found "+n+" instead.");return i[n]},Vx.prototype.eachChild=function(t){t(this.index),t(this.input)},Vx.prototype.outputDefined=function(){return!1},Vx.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var Wx=function(t,n){this.type=yb,this.needle=t,this.haystack=n};Wx.parse=function(t,n){if(3!==t.length)return n.error("Expected 2 arguments, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1,gb),r=n.parse(t[2],2,gb);return i&&r?Eb(i.type,[yb,pb,db,vb,gb])?new Wx(i,r):n.error("Expected first argument to be of type boolean, string, number or null, but found "+Sb(i.type)+" instead"):null},Wx.prototype.evaluate=function(t){var n=this.needle.evaluate(t),i=this.haystack.evaluate(t);if(null==i)return!1;if(!Tb(n,["boolean","string","number","null"]))throw new Fb("Expected first argument to be of type boolean, string, number or null, but found "+Sb(Lb(n))+" instead.");if(!Tb(i,["string","array"]))throw new Fb("Expected second argument to be of type array or string, but found "+Sb(Lb(i))+" instead.");return i.indexOf(n)>=0},Wx.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},Wx.prototype.outputDefined=function(){return!0},Wx.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var Yx=function(t,n,i){this.type=db,this.needle=t,this.haystack=n,this.fromIndex=i};Yx.parse=function(t,n){if(t.length<=2||t.length>=5)return n.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1,gb),r=n.parse(t[2],2,gb);if(!i||!r)return null;if(!Eb(i.type,[yb,pb,db,vb,gb]))return n.error("Expected first argument to be of type boolean, string, number or null, but found "+Sb(i.type)+" instead");if(4===t.length){var e=n.parse(t[3],3,db);return e?new Yx(i,r,e):null}return new Yx(i,r)},Yx.prototype.evaluate=function(t){var n=this.needle.evaluate(t),i=this.haystack.evaluate(t);if(!Tb(n,["boolean","string","number","null"]))throw new Fb("Expected first argument to be of type boolean, string, number or null, but found "+Sb(Lb(n))+" instead.");if(!Tb(i,["string","array"]))throw new Fb("Expected second argument to be of type array or string, but found "+Sb(Lb(i))+" instead.");if(this.fromIndex){var r=this.fromIndex.evaluate(t);return i.indexOf(n,r)}return i.indexOf(n)},Yx.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},Yx.prototype.outputDefined=function(){return!1},Yx.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var Zx=function(t,n,i,r,e,o){this.inputType=t,this.type=n,this.input=i,this.cases=r,this.outputs=e,this.otherwise=o};Zx.parse=function(t,n){if(t.length<5)return n.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if(t.length%2!=1)return n.error("Expected an even number of arguments.");var i,r;n.expectedType&&"value"!==n.expectedType.kind&&(r=n.expectedType);for(var e={},o=[],s=2;sNumber.MAX_SAFE_INTEGER)return h.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if("number"==typeof l&&Math.floor(l)!==l)return h.error("Numeric branch labels must be integer values.");if(i){if(h.checkSubtype(i,Lb(l)))return null}else i=Lb(l);if(void 0!==e[String(l)])return h.error("Branch labels must be unique.");e[String(l)]=o.length}var v=n.parse(a,s,r);if(!v)return null;r=r||v.type,o.push(v)}var d=n.parse(t[1],1,gb);if(!d)return null;var p=n.parse(t[t.length-1],t.length-1,r);return p?"value"!==d.type.kind&&n.concat(1).checkSubtype(i,d.type)?null:new Zx(i,r,d,e,o,p):null},Zx.prototype.evaluate=function(t){var n=this.input.evaluate(t);return(Lb(n)===this.inputType&&this.outputs[this.cases[n]]||this.otherwise).evaluate(t)},Zx.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},Zx.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},Zx.prototype.serialize=function(){for(var t=this,n=["match",this.input.serialize()],i=[],r={},e=0,o=Object.keys(this.cases).sort();e=5)return n.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1,gb),r=n.parse(t[2],2,db);if(!i||!r)return null;if(!Eb(i.type,[_b(gb),pb,gb]))return n.error("Expected first argument to be of type array or string, but found "+Sb(i.type)+" instead");if(4===t.length){var e=n.parse(t[3],3,db);return e?new Kx(i.type,i,r,e):null}return new Kx(i.type,i,r)},Kx.prototype.evaluate=function(t){var n=this.input.evaluate(t),i=this.beginIndex.evaluate(t);if(!Tb(n,["string","array"]))throw new Fb("Expected first argument to be of type array or string, but found "+Sb(Lb(n))+" instead.");if(this.endIndex){var r=this.endIndex.evaluate(t);return n.slice(i,r)}return n.slice(i)},Kx.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},Kx.prototype.outputDefined=function(){return!1},Kx.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};var tM=Qx("==",(function(t,n,i){return n===i}),Jx),nM=Qx("!=",(function(t,n,i){return n!==i}),(function(t,n,i,r){return!Jx(0,n,i,r)})),iM=Qx("<",(function(t,n,i){return n",(function(t,n,i){return n>i}),(function(t,n,i,r){return r.compare(n,i)>0})),eM=Qx("<=",(function(t,n,i){return n<=i}),(function(t,n,i,r){return r.compare(n,i)<=0})),oM=Qx(">=",(function(t,n,i){return n>=i}),(function(t,n,i,r){return r.compare(n,i)>=0})),sM=function(t,n,i,r,e){this.type=pb,this.number=t,this.locale=n,this.currency=i,this.minFractionDigits=r,this.maxFractionDigits=e};sM.parse=function(t,n){if(3!==t.length)return n.error("Expected two arguments.");var i=n.parse(t[1],1,db);if(!i)return null;var r=t[2];if("object"!=typeof r||Array.isArray(r))return n.error("NumberFormat options argument must be an object.");var e=null;if(r.locale&&!(e=n.parse(r.locale,1,pb)))return null;var o=null;if(r.currency&&!(o=n.parse(r.currency,1,pb)))return null;var s=null;if(r["min-fraction-digits"]&&!(s=n.parse(r["min-fraction-digits"],1,db)))return null;var u=null;return r["max-fraction-digits"]&&!(u=n.parse(r["max-fraction-digits"],1,db))?null:new sM(i,e,o,s,u)},sM.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},sM.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},sM.prototype.outputDefined=function(){return!1},sM.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]};var uM=function(t){this.type=db,this.input=t};uM.parse=function(t,n){if(2!==t.length)return n.error("Expected 1 argument, but found "+(t.length-1)+" instead.");var i=n.parse(t[1],1);return i?"array"!==i.type.kind&&"string"!==i.type.kind&&"value"!==i.type.kind?n.error("Expected argument of type string or array, but found "+Sb(i.type)+" instead."):new uM(i):null},uM.prototype.evaluate=function(t){var n=this.input.evaluate(t);if("string"==typeof n)return n.length;if(Array.isArray(n))return n.length;throw new Fb("Expected value to be of type string or array, but found "+Sb(Lb(n))+" instead.")},uM.prototype.eachChild=function(t){t(this.input)},uM.prototype.outputDefined=function(){return!1},uM.prototype.serialize=function(){var t=["length"];return this.eachChild((function(n){t.push(n.serialize())})),t};var aM={"==":tM,"!=":nM,">":rM,"<":iM,">=":oM,"<=":eM,array:Db,at:Vx,boolean:Db,case:$x,coalesce:Bx,collator:Zb,format:qb,image:Ub,in:Wx,"index-of":Yx,interpolate:qx,"interpolate-hcl":qx,"interpolate-lab":qx,length:uM,let:Xx,literal:Rb,match:Zx,number:Db,"number-format":sM,object:Db,slice:Kx,step:bx,string:Db,"to-boolean":Xb,"to-color":Xb,"to-number":Xb,"to-string":Xb,var:yx,within:lx};function hM(t,n){var i=n[0],r=n[1],e=n[2],o=n[3];i=i.evaluate(t),r=r.evaluate(t),e=e.evaluate(t);var s=o?o.evaluate(t):1,u=Ib(i,r,e,s);if(u)throw new Fb(u);return new nb(i/255*s,r/255*s,e/255*s,s)}function fM(t,n){return t in n}function cM(t,n){var i=n[t];return void 0===i?null:i}function lM(t){return{type:t}}function vM(t){return{result:"success",value:t}}function dM(t){return{result:"error",value:t}}function pM(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}Yb.register(aM,{error:[{kind:"error"},[pb],function(t,n){var i=n[0];throw new Fb(i.evaluate(t))}],typeof:[pb,[gb],function(t,n){return Sb(Lb(n[0].evaluate(t)))}],"to-rgba":[_b(db,4),[mb],function(t,n){return n[0].evaluate(t).toArray()}],rgb:[mb,[db,db,db],hM],rgba:[mb,[db,db,db,db],hM],has:{type:yb,overloads:[[[pb],function(t,n){return fM(n[0].evaluate(t),t.properties())}],[[pb,wb],function(t,n){var i=n[0],r=n[1];return fM(i.evaluate(t),r.evaluate(t))}]]},get:{type:gb,overloads:[[[pb],function(t,n){return cM(n[0].evaluate(t),t.properties())}],[[pb,wb],function(t,n){var i=n[0],r=n[1];return cM(i.evaluate(t),r.evaluate(t))}]]},"feature-state":[gb,[pb],function(t,n){return cM(n[0].evaluate(t),t.featureState||{})}],properties:[wb,[],function(t){return t.properties()}],"geometry-type":[pb,[],function(t){return t.geometryType()}],id:[gb,[],function(t){return t.id()}],zoom:[db,[],function(t){return t.globals.zoom}],pitch:[db,[],function(t){return t.globals.pitch||0}],"distance-from-center":[db,[],function(t){return t.distanceFromCenter()}],"heatmap-density":[db,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[db,[],function(t){return t.globals.lineProgress||0}],"sky-radial-progress":[db,[],function(t){return t.globals.skyRadialProgress||0}],accumulated:[gb,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[db,lM(db),function(t,n){for(var i=0,r=0,e=n;r":[yb,[pb,gb],function(t,n){var i=n[0],r=n[1],e=t.properties()[i.value],o=r.value;return typeof e==typeof o&&e>o}],"filter-id->":[yb,[gb],function(t,n){var i=n[0],r=t.id(),e=i.value;return typeof r==typeof e&&r>e}],"filter-<=":[yb,[pb,gb],function(t,n){var i=n[0],r=n[1],e=t.properties()[i.value],o=r.value;return typeof e==typeof o&&e<=o}],"filter-id-<=":[yb,[gb],function(t,n){var i=n[0],r=t.id(),e=i.value;return typeof r==typeof e&&r<=e}],"filter->=":[yb,[pb,gb],function(t,n){var i=n[0],r=n[1],e=t.properties()[i.value],o=r.value;return typeof e==typeof o&&e>=o}],"filter-id->=":[yb,[gb],function(t,n){var i=n[0],r=t.id(),e=i.value;return typeof r==typeof e&&r>=e}],"filter-has":[yb,[gb],function(t,n){return n[0].value in t.properties()}],"filter-has-id":[yb,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[yb,[_b(pb)],function(t,n){return n[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[yb,[_b(gb)],function(t,n){return n[0].value.indexOf(t.id())>=0}],"filter-in-small":[yb,[pb,_b(gb)],function(t,n){var i=n[0];return n[1].value.indexOf(t.properties()[i.value])>=0}],"filter-in-large":[yb,[pb,_b(gb)],function(t,n){var i=n[0],r=n[1];return function(t,n,i,r){for(;i<=r;){var e=i+r>>1;if(n[e]===t)return!0;n[e]>t?r=e-1:i=e+1}return!1}(t.properties()[i.value],r.value,0,r.value.length-1)}],all:{type:yb,overloads:[[[yb,yb],function(t,n){var i=n[0],r=n[1];return i.evaluate(t)&&r.evaluate(t)}],[lM(yb),function(t,n){for(var i=0,r=n;i-1}(n))return dM([new cb("","zoom expressions not supported")]);var o=xM(i);if(!o&&!e)return dM([new cb("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(o instanceof cb)return dM([o]);if(o instanceof qx&&!function(t){return!!t.expression&&t.expression.interpolated}(n))return dM([new cb("",'"interpolate" expressions cannot be used with this property')]);if(!o)return vM(new wM(r?"constant":"source",t.value));var s=o instanceof qx?o.interpolation:void 0;return vM(new gM(r?"camera":"composite",t.value,o.labels,s))}function xM(t){var n=null;if(t instanceof Xx)n=xM(t.result);else if(t instanceof Bx)for(var i=0,r=t.args;i":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},expression_name:{type:"enum",values:{let:{group:"Variable binding"},var:{group:"Variable binding"},literal:{group:"Types"},array:{group:"Types"},at:{group:"Lookup"},in:{group:"Lookup"},"index-of":{group:"Lookup"},slice:{group:"Lookup"},case:{group:"Decision"},match:{group:"Decision"},coalesce:{group:"Decision"},step:{group:"Ramps, scales, curves"},interpolate:{group:"Ramps, scales, curves"},"interpolate-hcl":{group:"Ramps, scales, curves"},"interpolate-lab":{group:"Ramps, scales, curves"},ln2:{group:"Math"},pi:{group:"Math"},e:{group:"Math"},typeof:{group:"Types"},string:{group:"Types"},number:{group:"Types"},boolean:{group:"Types"},object:{group:"Types"},collator:{group:"Types"},format:{group:"Types"},image:{group:"Types"},"number-format":{group:"Types"},"to-string":{group:"Types"},"to-number":{group:"Types"},"to-boolean":{group:"Types"},"to-rgba":{group:"Color"},"to-color":{group:"Types"},rgb:{group:"Color"},rgba:{group:"Color"},get:{group:"Lookup"},has:{group:"Lookup"},length:{group:"Lookup"},properties:{group:"Feature data"},"feature-state":{group:"Feature data"},"geometry-type":{group:"Feature data"},id:{group:"Feature data"},zoom:{group:"Camera"},pitch:{group:"Camera"},"distance-from-center":{group:"Camera"},"heatmap-density":{group:"Heatmap"},"line-progress":{group:"Feature data"},"sky-radial-progress":{group:"sky"},accumulated:{group:"Feature data"},"+":{group:"Math"},"*":{group:"Math"},"-":{group:"Math"},"/":{group:"Math"},"%":{group:"Math"},"^":{group:"Math"},sqrt:{group:"Math"},log10:{group:"Math"},ln:{group:"Math"},log2:{group:"Math"},sin:{group:"Math"},cos:{group:"Math"},tan:{group:"Math"},asin:{group:"Math"},acos:{group:"Math"},atan:{group:"Math"},min:{group:"Math"},max:{group:"Math"},round:{group:"Math"},abs:{group:"Math"},ceil:{group:"Math"},floor:{group:"Math"},distance:{group:"Math"},"==":{group:"Decision"},"!=":{group:"Decision"},">":{group:"Decision"},"<":{group:"Decision"},">=":{group:"Decision"},"<=":{group:"Decision"},all:{group:"Decision"},any:{group:"Decision"},"!":{group:"Decision"},within:{group:"Decision"},"is-supported-script":{group:"String"},upcase:{group:"String"},downcase:{group:"String"},concat:{group:"String"},"resolved-locale":{group:"String"}}},fog:{range:{type:"array",default:[.5,10],minimum:-20,maximum:20,length:2,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-blend":{type:"number","property-type":"data-constant",default:.1,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},projection:{name:{type:"enum",values:{albers:{},equalEarth:{},equirectangular:{},lambertConformalConic:{},mercator:{},naturalEarth:{},winkelTripel:{}},default:"mercator",required:!0},center:{type:"array",length:2,value:"number","property-type":"data-constant",transition:!1,requires:[{name:["albers","lambertConformalConic"]}]},parallels:{type:"array",length:2,value:"number","property-type":"data-constant",transition:!1,requires:[{name:["albers","lambertConformalConic"]}]}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number","property-type":"data-constant",default:1,minimum:0,maximum:1e3,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_sky:{"sky-type":{type:"enum",values:{gradient:{},atmosphere:{}},default:"atmosphere",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{type:"array",value:"number",length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,requires:[{"sky-type":"atmosphere"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{type:"number",requires:[{"sky-type":"atmosphere"}],default:10,minimum:0,maximum:100,transition:!1,"property-type":"data-constant"},"sky-gradient-center":{type:"array",requires:[{"sky-type":"gradient"}],value:"number",default:[0,0],length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{type:"number",requires:[{"sky-type":"gradient"}],default:90,minimum:0,maximum:180,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient":{type:"color",default:["interpolate",["linear"],["sky-radial-progress"],.8,"#87ceeb",1,"white"],transition:!1,requires:[{"sky-type":"gradient"}],expression:{interpolated:!0,parameters:["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{type:"color",default:"white",transition:!1,requires:[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-atmosphere-color":{type:"color",default:"white",transition:!1,requires:[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};function SM(t){if(!0===t||!1===t)return!0;if(!Array.isArray(t)||0===t.length)return!1;switch(t[0]){case"has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(var n=0,i=t.slice(1);n",">=","<","<=","to-boolean"]);function PM(t,n){return tn?1:0}function CM(t){if(!Array.isArray(t))return!1;if("within"===t[0])return!0;for(var n=1;n"===i||"<="===i||">="===i?IM(t[1],t[2],i):"any"===i?(n=t.slice(1),["any"].concat(n.map(kM))):"all"===i?["all"].concat(t.slice(1).map(kM)):"none"===i?["all"].concat(t.slice(1).map(kM).map(zM)):"in"===i?NM(t[1],t.slice(2)):"!in"===i?zM(NM(t[1],t.slice(2))):"has"===i?LM(t[1]):"!has"===i?zM(LM(t[1])):"within"!==i||t}function IM(t,n,i){switch(t){case"$type":return["filter-type-"+i,n];case"$id":return["filter-id-"+i,n];default:return["filter-"+i,t,n]}}function NM(t,n){if(0===n.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",n]];case"$id":return["filter-id-in",["literal",n]];default:return n.length>200&&!n.some((function(t){return typeof t!=typeof n[0]}))?["filter-in-large",t,["literal",n.sort(PM)]]:["filter-in-small",t,["literal",n]]}}function LM(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function zM(t){return["!",t]}var RM=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function FM(t,n){var i={};for(var r in t)"ref"!==r&&(i[r]=t[r]);return RM.forEach((function(t){t in n&&(i[t]=n[t])})),i}var GM={thin:100,hairline:100,"ultra-light":100,"extra-light":100,light:200,book:300,regular:400,normal:400,plain:400,roman:400,standard:400,medium:500,"semi-bold":600,"demi-bold":600,bold:700,heavy:800,black:800,"extra-bold":800,"ultra-black":900,"extra-black":900,"ultra-bold":900,"heavy-black":900,fat:900,poster:900},DM=" ",qM=/(italic|oblique)$/i,UM={},BM=function(t,n,i){var r=UM[t];if(!r){Array.isArray(t)||(t=[t]);for(var e=400,o="normal",s=[],u=0,a=t.length;u1?h[h.length-2].toLowerCase():"";if(f==c||f==c.replace("-","")||l+"-"+f==c){e=GM[c],h.pop(),l&&c.startsWith(l)&&h.pop();break}}"number"==typeof f&&(e=f);var v=h.join(DM).replace("Klokantech Noto Sans","Noto Sans");-1!==v.indexOf(DM)&&(v='"'+v+'"'),s.push(v)}r=UM[t]=[o,e,s]}return r[0]+DM+r[1]+DM+n+"px"+(i?"/"+i:"")+DM+r[2]},XM="https://api.mapbox.com";function VM(t){var n="mapbox://";return 0!==t.indexOf(n)?"":t.slice(n.length)}function WM(t,n){var i=VM(t);if(!i)return decodeURI(new URL(t,location.href).href);var r="styles/";if(0!==i.indexOf(r))throw new Error("unexpected style url: "+t);var e=i.slice(r.length);return XM+"/styles/v1/"+e+"?&access_token="+n}function YM(t,n,i,r){var e=new URL(t,r),o=VM(t);return o?"https://{a-d}.tiles.mapbox.com/v4/"+o+"/{z}/{x}/{y}.vector.pbf?access_token="+n:n?(e.searchParams.set(i,n),decodeURI(e.href)):decodeURI(e.href)}function ZM(t){return t*Math.PI/180}var $M=function(){for(var t=[],n=78271.51696402048;t.length<=24;n/=2)t.push(n);return t}();function KM(t,n){if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas)return new OffscreenCanvas(t,n);var i=document.createElement("canvas");return i.width=t,i.height=n,i}var HM={};function JM(t,n,i){if(void 0===i&&(i={}),n in HM)return HM[n];var r=i.transformRequest&&i.transformRequest(n,t)||new Request(n);r.headers.get("Accept")||r.headers.set("Accept","application/json");var e=fetch(r).then((function(t){return delete HM[n],t.ok?t.json():Promise.reject(new Error("Error fetching source "+n))})).catch((function(t){return delete HM[n],Promise.reject(new Error("Error fetching source "+n))}));return HM[n]=e,e}function QM(t,n){if("string"!=typeof t)return Promise.resolve(t);if(!t.trim().startsWith("{"))return JM("Style",t=WM(t,n.accessToken),n);try{var i=JSON.parse(t);return Promise.resolve(i)}catch(t){return Promise.reject(t)}}var t_={};function n_(t,n,i){void 0===i&&(i={});var r=[n,JSON.stringify(t)].toString(),e=t_[r];if(!e||i.transformRequest){var o=t.url;if(o){var s=YM(o,i.accessToken,i.accessTokenParam||"access_token",n||location.href);e=o.startsWith("mapbox://")?Promise.resolve(A({},t,{url:void 0,tiles:s})):JM("Source",s,i).then((function(t){for(var n=0,r=t.tiles.length;n=.05){for(var i="",r=t.split("\n"),e=r_.slice(0,Math.round(n/.1)),o=0,s=r.length;o0&&(i+="\n"),i+=r[o].split("").join(e);return i}return t}function o_(){return i_||(i_=KM(1,1).getContext("2d")),i_}function s_(t,n){return o_().measureText(t).width+(t.length-1)*n}var u_={};function a_(t,n,i,r){if(-1!==t.indexOf("\n")){for(var e=t.split("\n"),o=[],s=0,u=e.length;s1){var c=o_();c.font=n;for(var l=c.measureText("M").width*i,v="",d=[],p=0,y=f.length;p1;++g){var x=d[g];if(s_(x,r)<.35*l){var M=g>0?s_(d[g-1],r):1/0,_=g.7*l&&s_(E,r)<.6*l){var T=j.split(" "),A=T.pop();s_(A,r)<.2*l&&(d[S]=T.join(" "),d[S+1]=A+" "+E),O-=1}}h=d.join("\n")}else h=t;h=e_(h,r),u_[a]=h}return h}var h_,f_=/font-family: ?([^;]*);/,c_=/("|')/g;function l_(t){if(!h_){h_={};for(var n=document.styleSheets,i=0,r=n.length;i0&&"string"==typeof a[0]&&a[0]in aM);if(!l&&pM(f)&&(f=rb(f,c),l=!0),l){var v=function(t,n){var i=bM(t,n);if("error"===i.result)throw new Error(i.value.map((function(t){return t.key+": "+t.message})).join(", "));return i.value}(f,c);h[i]=v.evaluate.bind(v)}else"color"==c.type&&(f=nb.parse(f)),h[i]=function(){return f}}return b_.zoom=r,h[i](b_,e,s)}function M_(t,n,i,r){return x_(t,"layout","icon-allow-overlap",n,i,r)?x_(t,"layout","icon-ignore-placement",n,i,r)?"none":"obstacle":"declutter"}function __(t,n,i,r,e){return e||console.warn("No filterCache provided to evaluateFilter()"),t in e||(e[t]=OM(n).filter),b_.zoom=r,e[t](b_,i)}var S_=!1;function O_(t,n){if(t){if(!S_&&(0===t.a||0===n))return;var i=t.a;return n=void 0===n?1:n,0===i?"transparent":"rgba("+Math.round(255*t.r/i)+","+Math.round(255*t.g/i)+","+Math.round(255*t.b/i)+","+i*n+")"}return t}var j_=/^([^]*)\{(.*)\}([^]*)$/;function E_(t,n){var i;do{if(i=t.match(j_)){var r=n[i[2]]||"";t=i[1]+r+i[3]}}while(i);return t}var T_=!1;function A_(t,n,i,r,e,o,s){if(void 0===r&&(r=$M),void 0===e&&(e=void 0),void 0===o&&(o=void 0),void 0===s&&(s=void 0),"string"==typeof n&&(n=JSON.parse(n)),8!=n.version)throw new Error("glStyle version 8 required.");var u,a;if(o)if("undefined"!=typeof Image){var h=new Image;h.crossOrigin="anonymous",h.onload=function(){u=h,a=[h.width,h.height],t.changed(),h.onload=null},h.src=o}else if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope){var f=self;f.postMessage({action:"loadImage",src:o}),f.addEventListener("message",(function(t){"imageLoaded"===t.data.action&&t.data.src===o&&(u=t.data.image,a=[u.width,u.height])}))}for(var c,l=function(t){t=t.slice();for(var n=Object.create(null),i=0;i=S.maxzoom)){var C=S.filter;if(!C||__(O,C,d,f,w)){c=S;var k=void 0,I=void 0,N=void 0,L=void 0,z=void 0,R=void 0,F=_.index;if(3==l&&("fill"==S.type||"fill-extrusion"==S.type))if(I=x_(S,"paint",S.type+"-opacity",f,d,m,g),S.type+"-pattern"in P){var G=x_(S,"paint",S.type+"-pattern",f,d,m,g);if(G){var D="string"==typeof G?E_(G,o):G.toString();if(u&&e&&e[D]){++b,(R=A[b])&&R.getFill()&&!R.getStroke()&&!R.getText()||(R=new Sv({fill:new rv}),A[b]=R),N=R.getFill(),R.setZIndex(F);var q=D+"."+I,U=y[q];if(!U){var B=e[D],X=KM(B.width,B.height),V=X.getContext("2d");V.globalAlpha=I,V.drawImage(u,B.x,B.y,B.width,B.height,0,0,B.width,B.height),U=V.createPattern(X,"repeat"),y[q]=U}N.setColor(U)}}}else k=O_(x_(S,"paint",S.type+"-color",f,d,m,g),I),S.type+"-outline-color"in P&&(z=O_(x_(S,"paint",S.type+"-outline-color",f,d,m,g),I)),z||(z=k),(k||z)&&(++b,(!(R=A[b])||k&&!R.getFill()||!k&&R.getFill()||z&&!R.getStroke()||!z&&R.getStroke()||R.getText())&&(R=new Sv({fill:k?new rv:void 0,stroke:z?new mv:void 0}),A[b]=R),k&&(N=R.getFill()).setColor(k),z&&((L=R.getStroke()).setColor(z),L.setWidth(.5)),R.setZIndex(F));if(1!=l&&"line"==S.type){k=!("line-pattern"in P)&&"line-color"in P?O_(x_(S,"paint","line-color",f,d,m,g),x_(S,"paint","line-opacity",f,d,m,g)):void 0;var W=x_(S,"paint","line-width",f,d,m,g);k&&W>0&&(++b,(R=A[b])&&R.getStroke()&&!R.getFill()&&!R.getText()||(R=new Sv({stroke:new mv}),A[b]=R),(L=R.getStroke()).setLineCap(x_(S,"layout","line-cap",f,d,m,g)),L.setLineJoin(x_(S,"layout","line-join",f,d,m,g)),L.setMiterLimit(x_(S,"layout","line-miter-limit",f,d,m,g)),L.setColor(k),L.setWidth(W),L.setLineDash(P["line-dasharray"]?x_(S,"paint","line-dasharray",f,d,m,g).map((function(t){return t*W})):null),R.setZIndex(F))}var Y=!1,Z=null,$=0,K=void 0,H=void 0,J=void 0;if((1==l||2==l)&&"icon-image"in j){var Q=x_(S,"layout","icon-image",f,d,m,g);if(Q){K="string"==typeof Q?E_(Q,o):Q.toString();var tt=void 0;if(u&&e&&e[K]){var nt=x_(S,"layout","icon-rotation-alignment",f,d,m,g);if(2==l){var it=n.getGeometry();if(it.getFlatMidpoint||it.getFlatMidpoints){var rt=it.getExtent();if(Math.sqrt(Math.max(Math.pow((rt[2]-rt[0])/i,2),Math.pow((rt[3]-rt[1])/i,2)))>150){var et="MultiLineString"===it.getType()?it.getFlatMidpoints():it.getFlatMidpoint();if(y_||(y_=new fg("Point",p_=[NaN,NaN],[],{},null)),tt=y_,p_[0]=et[0],p_[1]=et[1],"line"===x_(S,"layout","symbol-placement",f,d,m,g)&&"map"===nt)for(var ot=it.getStride(),st=it.getFlatCoordinates(),ut=0,at=st.length-ot;ut=vt&&et[0]<=pt&&et[1]>=dt&&et[1]<=yt){$=Math.atan2(ft-lt,ct-ht);break}}}}}if(2!==l||tt){var mt=x_(S,"layout","icon-size",f,d,m,g),wt=void 0!==P["icon-color"]?x_(S,"paint","icon-color",f,d,m,g):null;if(!wt||0!==wt.a){var gt=K+"."+mt;if(null!==wt&&(gt+="."+wt),!(H=p[gt])){var bt=e[K],xt=M_(S,f,d,m);H=new yv({color:wt?[255*wt.r,255*wt.g,255*wt.b,wt.a]:void 0,img:u,imgSize:a,size:[bt.width,bt.height],offset:[bt.x,bt.y],rotateWithView:"map"===nt,scale:mt/bt.pixelRatio,displacement:"icon-offset"in j?x_(S,"layout","icon-offset",f,d,m,g).map((function(t){return-t*bt.pixelRatio})):void 0,declutterMode:xt}),p[gt]=H}}H&&(++b,(R=A[b])&&R.getImage()&&!R.getFill()&&!R.getStroke()||(R=new Sv,A[b]=R),R.setGeometry(tt),H.setRotation($+ZM(x_(S,"layout","icon-rotate",f,d,m,g))),H.setOpacity(x_(S,"paint","icon-opacity",f,d,m,g)),H.setAnchor(w_[x_(S,"layout","icon-anchor",f,d,m,g)]),R.setImage(H),Z=R.getText(),R.setText(void 0),R.setZIndex(F),Y=!0,J=!1)}else J=!0}}}if(1==l&&"circle"===S.type){++b,(R=A[b])&&R.getImage()&&!R.getFill()&&!R.getStroke()||(R=new Sv,A[b]=R);var Mt="circle-radius"in P?x_(S,"paint","circle-radius",f,d,m,g):5,_t=O_(x_(S,"paint","circle-stroke-color",f,d,m,g),x_(S,"paint","circle-stroke-opacity",f,d,m,g)),St=O_(x_(S,"paint","circle-color",f,d,m,g),x_(S,"paint","circle-opacity",f,d,m,g)),Ot=x_(S,"paint","circle-stroke-width",f,d,m,g),jt=Mt+"."+_t+"."+St+"."+Ot;(H=p[jt])||(H=new iv({radius:Mt,stroke:_t&&Ot>0?new mv({width:Ot,color:_t}):void 0,fill:St?new rv({color:St}):void 0,declutterMode:"none"}),p[jt]=H),R.setImage(H),Z=R.getText(),R.setText(void 0),R.setGeometry(void 0),R.setZIndex(F),Y=!0}var Et=void 0,Tt=void 0,At=void 0,Pt=void 0,Ct=void 0,kt=void 0;if("text-field"in j){Pt=Math.round(x_(S,"layout","text-size",f,d,m,g));var It=x_(S,"layout","text-font",f,d,m,g);At=x_(S,"layout","text-line-height",f,d,m,g),(Tt=BM(s?s(It):It,Pt,At)).includes("sans-serif")||(Tt+=",sans-serif"),Ct=x_(S,"layout","text-letter-spacing",f,d,m,g),kt=x_(S,"layout","text-max-width",f,d,m,g);var Nt=x_(S,"layout","text-field",f,d,m,g);Et="object"==typeof Nt&&Nt.sections?1===Nt.sections.length?Nt.toString():Nt.sections.reduce((function(t,n,i){var r=n.fontStack?n.fontStack.split(","):It,e=BM(s?s(r):r,Pt*(n.scale||1),At),o=n.text;if("\n"===o)return t.push("\n",""),t;if(2!=l){for(var u=0,a=(o=a_(o,e,kt,Ct).split("\n")).length;u0&&t.push("\n",""),t.push(o[u],e);return t}t.push(e_(o,Ct),e)}),[]):E_(Nt,o).trim(),I=x_(S,"paint","text-opacity",f,d,m,g)}if(Et&&I&&!J){Y||(++b,(R=A[b])&&R.getText()&&!R.getFill()&&!R.getStroke()||(R=new Sv,A[b]=R),R.setImage(void 0),R.setGeometry(void 0)),R.getText()||R.setText(Z||new Ev({padding:[2,2,2,2]})),Z=R.getText();var Lt=j["text-transform"];"uppercase"==Lt?Et=Array.isArray(Et)?Et.map((function(t,n){return n%2?t:t.toUpperCase()})):Et.toUpperCase():"lowercase"==Lt&&(Et=Array.isArray(Et)?Et.map((function(t,n){return n%2?t:t.toLowerCase()})):Et.toLowerCase());var zt=Array.isArray(Et)?Et:2==l?e_(Et,Ct):a_(Et,Tt,kt,Ct);Z.setText(zt),Z.setFont(Tt),Z.setRotation(ZM(x_(S,"layout","text-rotate",f,d,m,g)));var Rt=x_(S,"layout","text-anchor",f,d,m,g),Ft=Y||1==l?"point":x_(S,"layout","symbol-placement",f,d,m,g);Z.setPlacement(Ft),Z.setOverflow("point"===Ft);var Gt=x_(S,"paint","text-halo-width",f,d,m,g),Dt=x_(S,"layout","text-offset",f,d,m,g),qt=x_(S,"paint","text-translate",f,d,m,g),Ut=0,Bt=0;if("point"==Ft){var Xt="center";-1!==Rt.indexOf("left")?(Xt="left",Bt=Gt):-1!==Rt.indexOf("right")&&(Xt="right",Bt=-Gt),Z.setTextAlign(Xt);var Vt=x_(S,"layout","text-rotation-alignment",f,d,m,g);Z.setRotateWithView("map"==Vt)}else Z.setMaxAngle(ZM(x_(S,"layout","text-max-angle",f,d,m,g))*Et.length/zt.length),Z.setTextAlign(),Z.setRotateWithView(!1);var Wt="middle";0==Rt.indexOf("bottom")?(Wt="bottom",Ut=-Gt-.5*(At-1)*Pt):0==Rt.indexOf("top")&&(Wt="top",Ut=Gt+.5*(At-1)*Pt),Z.setTextBaseline(Wt),Z.setOffsetX(Dt[0]*Pt+Bt+qt[0]),Z.setOffsetY(Dt[1]*Pt+Ut+qt[1]),T.setColor(O_(x_(S,"paint","text-color",f,d,m,g),I)),Z.setFill(T);var Yt=O_(x_(S,"paint","text-halo-color",f,d,m,g),I);if(Yt){E.setColor(Yt),Gt*=2;var Zt=.5*Pt;E.setWidth(Gt<=Zt?Gt:Zt),Z.setStroke(E)}else Z.setStroke(void 0);var $t=x_(S,"layout","text-padding",f,d,m,g),Kt=Z.getPadding();$t!==Kt[0]&&(Kt[0]=$t,Kt[1]=$t,Kt[2]=$t,Kt[3]=$t),R.setZIndex(F)}}}}return b>-1?(A.length=b+1,T_&&("function"==typeof n.set?n.set("mapbox-layer",c):n.getProperties()["mapbox-layer"]=c),A):void 0}};return t.setStyle(P),t.set("mapbox-source",c),t.set("mapbox-layers",d),t.set("mapbox-featurestate",{}),P}function P_(t,n){n.accessToken||(n=A({},n),new URL(t).searchParams.forEach((function(t,i){n.accessToken=t,n.accessTokenParam=i})));return n}function C_(t,n,i,r,e){var o,s,u;return void 0===i&&(i=""),void 0===r&&(r={}),void 0===e&&(e=void 0),"string"==typeof r?(o=r,u={}):(o=r.styleUrl,u=r),e||(e=u.resolutions),o||"string"!=typeof n||n.trim().startsWith("{")||(o=n),o&&(o=o.startsWith("data:")?location.href:WM(o,u.accessToken),u=P_(o,u)),new Promise((function(r,a){QM(n,u).then((function(n){if(8!=n.version)return a(new Error("glStyle version 8 required."));if(!(t instanceof lg||t instanceof Rg))return a(new Error("Can only apply to VectorLayer or VectorTileLayer"));var h,f,c,l=t instanceof Rg?"vector":"geojson";if(i?s=Array.isArray(i)?n.layers.find((function(t){return t.id===i[0]})).source:i:(s=Object.keys(n.sources).find((function(t){return n.sources[t].type===l})),i=s),!s)return a(new Error("No "+l+" source found in the glStyle."));function v(){if(t instanceof Rg)return z_(n.sources[s],o,u).then((function(n){var i=t.getSource();if(i?n!==i&&(i.setTileUrlFunction(n.getTileUrlFunction()),i.ze||(i.ze=n.ze),i.getAttributions()||i.setAttributions(n.getAttributions()),i.getTileLoadFunction()===Uy&&i.setTileLoadFunction(n.getTileLoadFunction()),Sr(i.getProjection(),n.getProjection())&&(i.tileGrid=n.getTileGrid())):t.setSource(n),!isFinite(t.getMaxResolution())&&!isFinite(t.getMinZoom())){var r=t.getSource().getTileGrid();t.setMaxResolution(r.getResolution(r.getMinZoom()))}}));var i=n.sources[s],r=t.getSource();r&&r.get("mapbox-source")===i||(r=F_(i,o,u));var e=t.getSource();return e?r!==e&&(e.getAttributions()||e.setAttributions(r.getAttributions()),e.ze||(e.ze=r.getFormat()),e.Fe=r.getUrl()):t.setSource(r),Promise.resolve()}function d(){c||n.sprite&&!h?c?(t.setStyle(c),v().then(r).catch(a)):a(new Error("Something went wrong trying to apply style.")):(c=A_(t,n,i,e,h,f,d_),t.getStyle()?v().then(r).catch(a):a(new Error("Nothing to show for source ["+s+"]")))}if(n.sprite){var p=new URL(function(t,n,i){var r=VM(t);if(!r)return decodeURI(new URL(t,i).href);var e="sprites/";if(0!==r.indexOf(e))throw new Error("unexpected sprites url: "+t);var o=r.slice(e.length);return XM+"/styles/v1/"+o+"/sprite?access_token="+n}(n.sprite,u.accessToken,o||location.href)),y=.5==(window.devicePixelRatio>=1.5?.5:1)?"@2x":"",m=p.origin+p.pathname+y+".json"+p.search;new Promise((function(t,n){JM("Sprite",m,u).then(t).catch((function(i){JM("Sprite",m=p.origin+p.pathname+".json"+p.search,u).then(t).catch(n)}))})).then((function(t){void 0===t&&a(new Error("No sprites found.")),h=t,f=p.origin+p.pathname+y+".png"+p.search,d()})).catch((function(t){a(new Error("Sprites cannot be loaded: "+m+": "+t.message))}))}else d()})).catch(a)}))}var k_={};function I_(t,n){var i={id:n.id,type:n.type},r={};function e(e){var o=n.layout||{},s=n.paint||{};i.paint=s;var u,a,h="function"==typeof t.getSource?t.getSource().getTileGrid().getZForResolution(e):t.getView().getZoom(),f="function"==typeof t.getTargetElement?t.getTargetElement():void 0;if(void 0!==s["background-color"]&&(u=x_(i,"paint","background-color",h,k_,r),f&&(f.style.background=nb.parse(u).toString())),void 0!==s["background-opacity"]&&(a=x_(i,"paint","background-opacity",h,k_,r),f&&(f.style.opacity=a)),"none"!=o.visibility)return O_(u,a);f&&(f.style.backgroundColor="",f.style.opacity="")}if("function"==typeof t.getTargetElement)t.getTargetElement()&&e(),t.on(["change:resolution","change:target"],e);else{if("function"!=typeof t.setBackground)throw new Error("Unable to apply background.");t.setBackground(e)}}function N_(t,n){n.layers.some((function(n){if("background"===n.type)return I_(t,n),!0}))}function L_(t){var n=t.bounds;if(n){var i=_r([n[0],n[1]]),r=_r([n[2],n[3]]);return[i[0],i[1],r[0],r[1]]}}function z_(t,n,i){return new Promise((function(r,e){n_(t,n,i).then((function(t){var n=new Gm({tileJSON:t}),i=n.getTileJSON(),e=n.getTileGrid(),o=L_(i),s=i.minzoom||0,u=i.maxzoom||22,a={attributions:n.getAttributions(),format:new Lg,tileGrid:new xf({origin:e.getOrigin(0),extent:o||e.getExtent(),minZoom:s,resolutions:$M.slice(0,u+1),tileSize:512})};Array.isArray(i.tiles)?a.urls=i.tiles:a.url=i.tiles,t.olSourceOptions&&Object.assign(a,t.olSourceOptions),r(new qy(a))})).catch(e)}))}var R_=new Zg;function F_(t,n,i){var r=t.data,e={};if("string"==typeof r){var o=YM(r,i.accessToken,i.accessTokenParam||"access_token",n||location.href);if(i.transformRequest){var s=i.transformRequest(o,"GeoJSON");s instanceof Request&&(o=encodeURI(s.url))}e.url=o}else e.features=R_.readFeatures(r,{featureProjection:Cr()||"EPSG:3857"});var u=new ad(A({attributions:t.attribution,format:R_},e));return u.set("mapbox-source",t),u}var G_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),D_=function(t){function n(n){var i=t.call(this,z)||this;return i.error=n,i}return G_(n,t),n}(c),q_=function(t){function n(n){var i=this,r=!("declutter"in n)||n.declutter,e=new qy({state:"loading",format:new Lg});i=t.call(this,{source:e,background:n.background,declutter:r,className:n.className,opacity:n.opacity,visible:n.visible,zIndex:n.zIndex,minResolution:n.minResolution,maxResolution:n.maxResolution,minZoom:n.minZoom,maxZoom:n.maxZoom,renderOrder:n.renderOrder,renderBuffer:n.renderBuffer,renderMode:n.renderMode,map:n.map,updateWhileAnimating:n.updateWhileAnimating,updateWhileInteracting:n.updateWhileInteracting,preload:n.preload,useInterimTilesOnError:n.useInterimTilesOnError,properties:n.properties})||this,n.accessToken&&(i.accessToken=n.accessToken);var o=n.styleUrl;return C_(i,o,n.layers||n.source,{accessToken:i.accessToken}).then((function(){e.setState("ready")})).catch((function(t){i.dispatchEvent(new D_(t)),i.getSource().setState("error")})),void 0===i.getBackground()&&function(t,n,i){void 0===i&&(i={}),"object"==typeof n?(N_(t,n),Promise.resolve()):QM(n,i).then((function(n){N_(t,n)}))}(i,n.styleUrl,{accessToken:i.accessToken}),i}return G_(n,t),n}(Rg),U_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),B_=function(t){function n(n){var i=this,r=n||{},e=A({},r);return delete e.imageRatio,(i=t.call(this,e)||this).lv=void 0!==r.imageRatio?r.imageRatio:1,i}return U_(n,t),n.prototype.getImageRatio=function(){return this.lv},n.prototype.createRenderer=function(){return new qw(this)},n}($m),X_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),V_=function(t){function n(n){var i=this,r=A({},n);return(i=t.call(this,r)||this).vv=Yl(n.style),i.dv=n.style.variables||{},i.pv=!!n.disableHitDetection,i}return X_(n,t),n.prototype.createRenderer=function(){return new Hm(this,{vertexShader:this.vv.builder.getSymbolVertexShader(),fragmentShader:this.vv.builder.getSymbolFragmentShader(),hitVertexShader:!this.pv&&this.vv.builder.getSymbolVertexShader(!0),hitFragmentShader:!this.pv&&this.vv.builder.getSymbolFragmentShader(!0),uniforms:this.vv.uniforms,attributes:this.vv.attributes})},n.prototype.updateStyleVariables=function(t){A(this.dv,t),this.changed()},n}(ls),W_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Y_(t,n){var i="\n attribute vec2 ".concat(al.TEXTURE_COORD,";\n uniform mat4 ").concat(ul.TILE_TRANSFORM,";\n uniform float ").concat(ul.TEXTURE_PIXEL_WIDTH,";\n uniform float ").concat(ul.TEXTURE_PIXEL_HEIGHT,";\n uniform float ").concat(ul.TEXTURE_RESOLUTION,";\n uniform float ").concat(ul.TEXTURE_ORIGIN_X,";\n uniform float ").concat(ul.TEXTURE_ORIGIN_Y,";\n uniform float ").concat(ul.DEPTH,";\n\n varying vec2 v_textureCoord;\n varying vec2 v_mapCoord;\n\n void main() {\n v_textureCoord = ").concat(al.TEXTURE_COORD,";\n v_mapCoord = vec2(\n ").concat(ul.TEXTURE_ORIGIN_X," + ").concat(ul.TEXTURE_RESOLUTION," * ").concat(ul.TEXTURE_PIXEL_WIDTH," * v_textureCoord[0],\n ").concat(ul.TEXTURE_ORIGIN_Y," - ").concat(ul.TEXTURE_RESOLUTION," * ").concat(ul.TEXTURE_PIXEL_HEIGHT," * v_textureCoord[1]\n );\n gl_Position = ").concat(ul.TILE_TRANSFORM," * vec4(").concat(al.TEXTURE_COORD,", ").concat(ul.DEPTH,", 1.0);\n }\n "),r={inFragmentShader:!0,variables:[],attributes:[],stringLiteralsMap:{},functions:{},bandCount:n},e=[];if(void 0!==t.color){var o=Cl(r,t.color,wl);e.push("color = ".concat(o,";"))}if(void 0!==t.contrast){var s=Cl(r,t.contrast,yl);e.push("color.rgb = clamp((".concat(s," + 1.0) * color.rgb - (").concat(s," / 2.0), vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.exposure){var u=Cl(r,t.exposure,yl);e.push("color.rgb = clamp((".concat(u," + 1.0) * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.saturation){var a=Cl(r,t.saturation,yl);e.push("\n float saturation = ".concat(a," + 1.0;\n float sr = (1.0 - saturation) * 0.2126;\n float sg = (1.0 - saturation) * 0.7152;\n float sb = (1.0 - saturation) * 0.0722;\n mat3 saturationMatrix = mat3(\n sr + saturation, sr, sr,\n sg, sg + saturation, sg,\n sb, sb, sb + saturation\n );\n color.rgb = clamp(saturationMatrix * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));\n "))}if(void 0!==t.gamma){var h=Cl(r,t.gamma,yl);e.push("color.rgb = pow(color.rgb, vec3(1.0 / ".concat(h,"));"))}if(void 0!==t.brightness){var f=Cl(r,t.brightness,yl);e.push("color.rgb = clamp(color.rgb + ".concat(f,", vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}var c={},l=r.variables.length;if(l>1&&!t.variables)throw new Error("Missing variables in style (expected ".concat(r.variables,")"));for(var v=function(n){var i=r.variables[n];if(!(i in t.variables))throw new Error("Missing '".concat(i,"' in style variables"));var e=ql(i);c[e]=function(){var n=t.variables[i];return"string"==typeof n&&(n=Al(r,n)),void 0!==n?n:-9999999}},d=0;d ").concat(ul.RENDER_EXTENT,"[2] ||\n v_mapCoord[1] > ").concat(ul.RENDER_EXTENT,"[3]\n ) {\n discard;\n }\n\n vec4 color = texture2D(").concat(ul.TILE_TEXTURE_ARRAY,"[0], v_textureCoord);\n\n ").concat(e.join("\n"),"\n\n if (color.a == 0.0) {\n discard;\n }\n\n gl_FragColor = color;\n gl_FragColor.rgb *= gl_FragColor.a;\n gl_FragColor *= ").concat(ul.TRANSITION_ALPHA,";\n }"),uniforms:c,paletteTextures:r.paletteTextures}}var Z_=function(t){function n(n){var i=this,r=n?A({},n):{},e=r.style||{};delete r.style;var o=r.cacheSize;return delete r.cacheSize,(i=t.call(this,r)||this).yv=r.sources,i.mv=null,i.Ic=NaN,i.H=e,i.Jt=o,i.dv=i.H.variables||{},i.addChangeListener(ns,i.wv),i}return W_(n,t),n.prototype.getSources=function(t,n){var i=this.getSource();return this.yv?"function"==typeof this.yv?this.yv(t,n):this.yv:i?[i]:[]},n.prototype.getRenderSource=function(){return this.mv||this.getSource()},n.prototype.getSourceState=function(){var t=this.getRenderSource();return t?t.getState():"undefined"},n.prototype.wv=function(){this.getSource()&&this.setStyle(this.H)},n.prototype.gv=function(){var t=Number.MAX_SAFE_INTEGER,n=this.getSources([-t,-t,t,t],t);return n&&n.length&&"bandCount"in n[0]?n[0].bandCount:4},n.prototype.createRenderer=function(){var t=Y_(this.H,this.gv());return new pl(this,{vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms,cacheSize:this.Jt,paletteTextures:t.paletteTextures})},n.prototype.renderSources=function(t,n){for(var i,r=this.getRenderer(),e=0,o=n.length;e.5*r.resolution){var f=this.getSources(t.extent,this.Ic).filter((function(t){return!e.includes(t)}));if(f.length>0)return this.renderSources(t,f)}return h},n.prototype.setStyle=function(t){this.dv=t.variables||{},this.H=t;var n=Y_(this.H,this.gv());this.getRenderer().reset({vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,uniforms:n.uniforms,paletteTextures:n.paletteTextures}),this.changed()},n.prototype.updateStyleVariables=function(t){A(this.dv,t),this.changed()},n}(am);Z_.prototype.dispose;var $_=Z_,K_=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),H_="addfeatures",J_=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.features=r,o.file=i,o.projection=e,o}return K_(n,t),n}(c),Q_=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{handleEvent:S})||this).on,i.once,i.un,i.bv=!1,i.xv=[];for(var e=r.formatConstructors?r.formatConstructors:[],o=0,s=e.length;o0){this._v&&(this._v.clear(),this._v.addFeatures(c)),this.dispatchEvent(new J_(H_,t,c,o));break}}},n.prototype.jv=function(){var t=this.getMap();if(t){var n=this.target?this.target:t.getViewport();this.Mv=[$(n,U,this.handleDrop,this),$(n,D,this.handleStop,this),$(n,q,this.handleStop,this),$(n,U,this.handleStop,this)]}},n.prototype.setActive=function(n){!this.getActive()&&n&&this.jv(),this.getActive()&&!n&&this.Ev(),t.prototype.setActive.call(this,n)},n.prototype.setMap=function(n){this.Ev(),t.prototype.setMap.call(this,n),this.getActive()&&this.jv()},n.prototype.Ov=function(t,n,i){try{return t.readFeatures(n,i)}catch(t){return null}},n.prototype.Ev=function(){this.Mv&&(this.Mv.forEach(H),this.Mv=null)},n.prototype.handleDrop=function(t){for(var n=t.dataTransfer.files,i=0,r=n.length;i1?1:-1;return n.endInteraction(this.Fr,i),this.je=0,!1},n.prototype.handleDownEvent=function(t){return!!La(t)&&(!!this.Zr(t)&&(t.map.getView().beginInteraction(),this.Kr=void 0,this.Tv=void 0,!0))},n}(Ma),iS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rS=function(t){function n(n,i,r){var e=t.call(this)||this;if(void 0!==r&&void 0===i)e.setFlatCoordinates(r,n);else{var o=i||0;e.setCenterAndRadius(n,o,r)}return e}return iS(n,t),n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),void 0,this.layout);return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){var e=this.flatCoordinates,o=t-e[0],s=n-e[1],u=o*o+s*s;if(u=n[0]||(t[1]<=n[1]&&t[3]>=n[1]||Rn(t,this.intersectsCoordinate.bind(this)))}return!1},n.prototype.setCenter=function(t){var n=this.stride,i=this.flatCoordinates[n]-this.flatCoordinates[0],r=t.slice();r[n]=r[0]+i;for(var e=1;e=this.Uv?(this.Cv=n.pixel,this.Pv=!this.Lv,i=!0):this.Iv=void 0,this.Pv&&void 0!==this.kv&&(clearTimeout(this.kv),this.kv=void 0));return this.Lv&&n.type===su.POINTERDRAG&&null!==this.Xv?(this.Qv(n.coordinate),r=!1):this.Lv&&n.type===su.POINTERDOWN?r=!1:i&&this.getPointerCount()<2?(r=n.type===su.POINTERMOVE)&&this.Lv?(this.Zn(n),this.Pv&&n.originalEvent.preventDefault()):("mouse"===n.originalEvent.pointerType||n.type===su.POINTERDRAG&&void 0===this.kv)&&this.Zn(n):n.type===su.DBLCLICK&&(r=!1),t.prototype.handleEvent.call(this,n)&&r},n.prototype.handleDownEvent=function(t){return this.Pv=!this.Lv,this.Lv?(this.Cv=t.pixel,this.Bv||this.td(t.coordinate),!0):this.Zr(t)?(this.Iv=Date.now(),this.kv=setTimeout(function(){this.Zn(new ou(su.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}.bind(this),this.Uv),this.Cv=t.pixel,!0):(this.Iv=void 0,!1)},n.prototype.handleUpEvent=function(t){var n=!0;if(0===this.getPointerCount())if(this.kv&&(clearTimeout(this.kv),this.kv=void 0),this.Zn(t),this.Pv){var i=!this.Bv;i&&this.td(t.coordinate),!i&&this.Lv?this.finishDrawing():this.Lv||i&&this.pe!==sS||(this.rd(t.pixel)?this.Dv(t)&&this.finishDrawing():this.Qv(t.coordinate)),n=!1}else this.Lv&&this.abortDrawing();return!n&&this.Rv&&t.preventDefault(),n},n.prototype.Zn=function(t){if(this.Nv=t.originalEvent.pointerType,this.Cv&&(!this.Lv&&this.Pv||this.Lv&&!this.Pv)){var n=this.Cv,i=t.pixel,r=n[0]-i[0],e=n[1]-i[1],o=r*r+e*e;if(this.Pv=this.Lv?o>this.$v:o<=this.$v,!this.Pv)return}this.Bv?this.ed(t.coordinate):this.od(t.coordinate.slice())},n.prototype.rd=function(t){var n=!1;if(this.Xv){var i=!1,r=[this.Bv],e=this.pe;if(e===sS)n=!0;else if(e===hS)n=2===this.Wv.length;else if(e===uS)i=this.Wv.length>this.Fv;else if(e===aS){var o=this.Wv;i=o[0].length>this.Fv,r=[o[0][0],o[0][o[0].length-2]]}if(i)for(var s=this.getMap(),u=0,a=r.length;u=this.Gv&&(this.Lv?i.pop():n=!0),i.push(t.slice()),this.Bu(i,r,e)):o===aS&&((i=this.Wv[0]).length>=this.Gv&&(this.Lv?i.pop():n=!0),i.push(t.slice()),n&&(this.Bv=i[0]),this.Bu(this.Wv,r,e)),this.od(t.slice()),this.sd(),n&&this.finishDrawing()},n.prototype.removeLastPoint=function(){if(this.Xv){var t,n=this.Xv.getGeometry(),i=this.getMap().getView().getProjection(),r=this.pe;if(r===uS||r===hS){if((t=this.Wv).splice(-2,1),t.length>=2){this.Bv=t[t.length-2].slice();var e=this.Bv.slice();t[t.length-1]=e,this.od(e)}this.Bu(t,n,i),"Polygon"===n.getType()&&this.Yv&&this.ud(n)}else if(r===aS){(t=this.Wv[0]).splice(-2,1);var o=this.Yv.getGeometry();if(t.length>=2){e=t[t.length-2].slice();t[t.length-1]=e,this.od(e)}o.setCoordinates(t),this.Bu(this.Wv,n,i)}1===t.length&&this.abortDrawing(),this.sd()}},n.prototype.finishDrawing=function(){var t=this.ad();if(t){var n=this.Wv,i=t.getGeometry(),r=this.getMap().getView().getProjection();this.pe===uS?(n.pop(),this.Bu(n,i,r)):this.pe===aS&&(n[0].pop(),this.Bu(n,i,r),n=i.getCoordinates()),"MultiPoint"===this.rl?t.setGeometry(new Kw([n])):"MultiLineString"===this.rl?t.setGeometry(new rg([n])):"MultiPolygon"===this.rl&&t.setGeometry(new sg([n])),this.dispatchEvent(new vS(cS,t)),this.Re&&this.Re.push(t),this._v&&this._v.addFeature(t)}},n.prototype.ad=function(){this.Bv=null;var t=this.Xv;return this.Xv=null,this.Vv=null,this.Yv=null,this.Kv.getSource().clear(!0),t},n.prototype.abortDrawing=function(){var t=this.ad();t&&this.dispatchEvent(new vS(lS,t))},n.prototype.appendCoordinates=function(t){var n,i=this.pe,r=!this.Xv;if(r&&this.td(t[0]),i===uS||i===hS)n=this.Wv;else{if(i!==aS)return;n=this.Wv&&this.Wv.length?this.Wv[0]:[]}r&&n.shift(),n.pop();for(var e=0;ec?o[1]:o[0]),s}}return null},n.prototype.Zn=function(t){var n=t.pixel,i=t.map,r=this.wd(n,i);r||(r=i.getCoordinateFromPixelInternal(n)),this.gd(r)},n.prototype.bd=function(t){var n=this.vd;return n?t?n.setGeometry(Ze(t)):n.setGeometry(void 0):(n=new Et(t?Ze(t):{}),this.vd=n,this.yd.getSource().addFeature(n)),n},n.prototype.gd=function(t){var n=this.dd;n?n.getGeometry().setCoordinates(t):(n=new Et(new Se(t)),this.dd=n,this.md.getSource().addFeature(n));return n},n.prototype.handleEvent=function(n){return!n.originalEvent||!this.Zr(n)||(n.type!=su.POINTERMOVE||this.handlingDownUpSequence||this.Zn(n),t.prototype.handleEvent.call(this,n),!1)},n.prototype.handleDownEvent=function(t){var n=t.pixel,i=t.map,r=this.getExtentInternal(),e=this.wd(n,i),o=function(t){var n=null,i=null;return t[0]==r[0]?n=r[2]:t[0]==r[2]&&(n=r[0]),t[1]==r[1]?i=r[3]:t[1]==r[3]&&(i=r[1]),null!==n&&null!==i?[n,i]:null};if(e&&r){var s=e[0]==r[0]||e[0]==r[2]?e[0]:null,u=e[1]==r[1]||e[1]==r[3]?e[1]:null;null!==s&&null!==u?this.hd=gS(o(e)):null!==s?this.hd=bS(o([s,r[1]]),o([s,r[3]])):null!==u&&(this.hd=bS(o([r[0],u]),o([r[2],u])))}else e=i.getCoordinateFromPixelInternal(n),this.setExtent([e[0],e[1],e[0],e[1]]),this.hd=gS(e);return!0},n.prototype.handleDragEvent=function(t){if(this.hd){var n=t.coordinate;this.setExtent(this.hd(n)),this.gd(n)}},n.prototype.handleUpEvent=function(t){this.hd=null;var n=this.getExtentInternal();return n&&0!==Fn(n)||this.setExtent(null),!1},n.prototype.setMap=function(n){this.yd.setMap(n),this.md.setMap(n),t.prototype.setMap.call(this,n)},n.prototype.getExtent=function(){return Nr(this.getExtentInternal(),this.getMap().getView().getProjection())},n.prototype.getExtentInternal=function(){return this.st},n.prototype.setExtent=function(t){this.st=t||null,this.bd(t),this.dispatchEvent(new mS(this.st))},n}(Ma),MS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function _S(t){return parseFloat(t)}function SS(t){return function(t){return pi(t,5)}(t).toString()}function OS(t,n){return!isNaN(t)&&t!==_S(SS(n))}var jS=function(t){function n(n){var i,r=t.call(this)||this,e=A({animate:!0,replace:!1,prefix:""},n||{});return i=!0===e.animate?{duration:250}:e.animate?e.animate:null,r.xd=i,r.Md=e.replace,r._d=e.prefix,r.gn=[],r.Sd=!0,r.Jv=r.Jv.bind(r),r}return MS(n,t),n.prototype.Od=function(t){return this._d?this._d+t:t},n.prototype.jd=function(t,n){return t.get(this.Od(n))},n.prototype.Ed=function(t,n,i){t.set(this.Od(n),i)},n.prototype.Td=function(t,n){t.delete(this.Od(n))},n.prototype.setMap=function(n){var i=this.getMap();t.prototype.setMap.call(this,n),n!==i&&(i&&this.Ev(i),n&&(this.Sd=!0,this.Jv(),this.jv(n)))},n.prototype.jv=function(t){this.gn.push($(t,pu,this.Ad,this),$(t.getLayerGroup(),L,this.Ad,this),$(t,"change:layergroup",this.Pd,this)),this.Md||addEventListener("popstate",this.Jv)},n.prototype.Ev=function(t){for(var n=0,i=this.gn.length;n=0;--r){for(var e=i[r],o=this.qd.length-1;o>=0;--o)this.qd[o][0]===e&&this.qd.splice(o,1);n.remove(e)}},n.prototype.setActive=function(n){this.dd&&!n&&(this.Kv.getSource().removeFeature(this.dd),this.dd=null),t.prototype.setActive.call(this,n)},n.prototype.setMap=function(n){this.Kv.setMap(n),t.prototype.setMap.call(this,n)},n.prototype.getOverlay=function(){return this.Kv},n.prototype.Jd=function(t){t.feature&&this.Re.push(t.feature)},n.prototype.Qd=function(t){t.feature&&this.Re.remove(t.feature)},n.prototype.np=function(t){this.tp(t.element)},n.prototype.$a=function(t){if(!this.Dd){var n=t.target;this.up(n),this.tp(n)}},n.prototype.ip=function(t){var n=t.element;this.up(n)},n.prototype.Bd=function(t,n){var i=n.getCoordinates(),r={feature:t,geometry:n,segment:[i,i]};this.Gd.insert(n.getExtent(),r)},n.prototype.Wd=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r=0;--m)this.cp(e[m],s)}return!!this.dd},n.prototype.handleUpEvent=function(t){for(var n=this.qd.length-1;n>=0;--n){var i=this.qd[n][0],r=i.geometry;if("Circle"===r.getType()){var e=r.getCenter(),o=i.featureSegments[0],s=i.featureSegments[1];o.segment[0]=e,o.segment[1]=e,s.segment[0]=e,s.segment[1]=e,this.Gd.update(En(e),o);var u=r,a=Cr();if(a){var h=t.map.getView().getProjection();u=$e(u=u.clone().transform(a,h)).transform(h,a)}this.Gd.update(u.getExtent(),s)}else this.Gd.update(yn(i.segment),i)}return this.Fd&&(this.dispatchEvent(new kS(CS,this.Fd,t)),this.Fd=null),!1},n.prototype.Zn=function(t){this.zd=t.pixel,this.op(t.pixel,t.map,t.coordinate)},n.prototype.op=function(t,n,i){var r,e,s=this,u=i||n.getCoordinateFromPixel(t),a=n.getView().getProjection();if(this.Hd){var h="object"==typeof this.Hd?function(t){return t===s.Hd}:void 0;n.forEachFeatureAtPixel(t,(function(t,n,i){if("Point"===(i=i||t.getGeometry()).getType()&&y(s.Re.getArray(),t)){e=i;var o=i.getFlatCoordinates().slice(0,2);r=[{feature:t,geometry:i,segment:[o,o]}]}return!0}),{layerFilter:h})}if(!r){var f=Nr(mn(Lr(En(u,TS),a),n.getView().getResolution()*this.fd,TS),a);r=this.Gd.getInExtent(f)}if(r&&r.length>0){var c=r.sort((function(t,n){return NS(u,t,a)-NS(u,n,a)}))[0],l=c.segment,v=LS(u,c,a),d=n.getPixelFromCoordinate(v),p=tr(t,d);if(e||p<=this.fd){var m={};if(m[o(l)]=!0,this.ep||(this.Br[0]=v[0]-u[0],this.Br[1]=v[1]-u[1]),"Circle"===c.geometry.getType()&&1===c.index)this.ld=!0,this.hp(v,[c.feature],[c.geometry]);else{var w=n.getPixelFromCoordinate(l[0]),g=n.getPixelFromCoordinate(l[1]),b=Qi(d,w),x=Qi(d,g);p=Math.sqrt(Math.min(b,x)),this.ld=p<=this.fd,this.ld&&(v=b>x?l[1]:l[0]),this.hp(v,[c.feature],[c.geometry]);var M={};M[o(c.geometry)]=!0;for(var _=1,S=r.length;_=0;--e)c=o((f=(i=l[e])[0]).feature),f.depth&&(c+="-"+f.depth.join("-")),c in v||(v[c]={}),0===i[1]?(v[c].right=f,v[c].index=f.index):1==i[1]&&(v[c].left=f,v[c].index=f.index+1);for(c in v){switch(h=v[c].right,u=v[c].left,(a=(s=v[c].index)-1)<0&&(a=0),t=n=(r=(f=void 0!==u?u:h).geometry).getCoordinates(),d=!1,r.getType()){case"MultiLineString":n[f.depth[0]].length>2&&(n[f.depth[0]].splice(s,1),d=!0);break;case"LineString":n.length>2&&(n.splice(s,1),d=!0);break;case"MultiPolygon":t=t[f.depth[1]];case"Polygon":(t=t[f.depth[0]]).length>4&&(s==t.length-1&&(s=0),t.splice(s,1),d=!0,0===s&&(t.pop(),t.push(t[0]),a=t.length-1))}if(d){this.fp(r,n);var p=[];if(void 0!==u&&(this.Gd.remove(u),p.push(u.segment[0])),void 0!==h&&(this.Gd.remove(h),p.push(h.segment[1])),void 0!==u&&void 0!==h){var y={depth:f.depth,feature:f.feature,geometry:f.geometry,index:a,segment:p};this.Gd.insert(yn(y.segment),y)}this.lp(r,s,f.depth,-1),this.dd&&(this.Kv.getSource().removeFeature(this.dd),this.dd=null),l.length=0}}return d},n.prototype.fp=function(t,n){this.Dd=!0,t.setCoordinates(n),this.Dd=!1},n.prototype.lp=function(t,n,i,r){this.Gd.forEachInExtent(t.getExtent(),(function(e){e.geometry===t&&(void 0===i||void 0===e.depth||x(e.depth,i))&&e.index>n&&(e.index+=r)}))},n}(Ma),RS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),FS="select",GS=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.selected=i,o.deselected=r,o.mapBrowserEvent=e,o}return RS(n,t),n}(c),DS={};var qS=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r,e,o=n||{};if(i.dp=i.tp.bind(i),i.pp=i.up.bind(i),i.Zr=o.condition?o.condition:Ca,i.yp=o.addCondition?o.addCondition:Pa,i.mp=o.removeCondition?o.removeCondition:Pa,i.wp=o.toggleCondition?o.toggleCondition:Ia,i.gp=!!o.multi&&o.multi,i.bp=o.filter?o.filter:S,i.xp=o.hitTolerance?o.hitTolerance:0,i.H=void 0!==o.style?o.style:(g((r=Mv()).Polygon,r.LineString),g(r.GeometryCollection,r.LineString),function(t){return t.getGeometry()?r[t.getGeometry().getType()]:null}),i.Re=o.features||new ft,o.layers)if("function"==typeof o.layers)e=o.layers;else{var s=o.layers;e=function(t){return y(s,t)}}else e=S;return i.Mp=e,i._p={},i}return RS(n,t),n.prototype.Sp=function(t,n){this._p[o(t)]=n},n.prototype.getFeatures=function(){return this.Re},n.prototype.getHitTolerance=function(){return this.xp},n.prototype.getLayer=function(t){return this._p[o(t)]},n.prototype.setHitTolerance=function(t){this.xp=t},n.prototype.setMap=function(n){this.getMap()&&this.H&&this.Re.forEach(this.Op.bind(this)),t.prototype.setMap.call(this,n),n?(this.Re.addEventListener(ot,this.dp),this.Re.addEventListener(st,this.pp),this.H&&this.Re.forEach(this.jp.bind(this))):(this.Re.removeEventListener(ot,this.dp),this.Re.removeEventListener(st,this.pp))},n.prototype.tp=function(t){var n=t.element;if(this.H&&this.jp(n),!this.getLayer(n)){var i=this.getMap().getAllLayers().find((function(t){if(t instanceof lg&&t.getSource()&&t.getSource().hasFeature(n))return t}));i&&this.Sp(n,i)}},n.prototype.up=function(t){var n=t.element;this.H&&this.Op(n)},n.prototype.getStyle=function(){return this.H},n.prototype.jp=function(t){var n=o(t);n in DS||(DS[n]=t.getStyle()),t.setStyle(this.H)},n.prototype.Op=function(t){for(var i=this.getMap().getInteractions().getArray(),r=i.length-1;r>=0;--r){var e=i[r];if(e!==this&&e instanceof n&&e.getStyle()&&-1!==e.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(e.getStyle())}var s=o(t);t.setStyle(DS[s]),delete DS[s]},n.prototype.Ep=function(t){delete this._p[o(t)]},n.prototype.handleEvent=function(t){if(!this.Zr(t))return!0;var n=this.yp(t),i=this.mp(t),r=this.wp(t),e=!n&&!i&&!r,o=t.map,s=this.getFeatures(),u=[],a=[];if(e){P(this._p),o.forEachFeatureAtPixel(t.pixel,function(t,n){if(this.bp(t,n))return this.Sp(t,n),a.push(t),!this.gp}.bind(this),{layerFilter:this.Mp,hitTolerance:this.xp});for(var h=s.getLength()-1;h>=0;--h){var f=s.item(h),c=a.indexOf(f);c>-1?a.splice(c,1):(s.remove(f),u.push(f))}0!==a.length&&s.extend(a)}else{o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.bp(t,e))return!n&&!r||y(s.getArray(),t)?(i||r)&&y(s.getArray(),t)&&(u.push(t),this.Ep(t)):(this.Sp(t,e),a.push(t)),!this.gp}.bind(this),{layerFilter:this.Mp,hitTolerance:this.xp});for(var l=u.length-1;l>=0;--l)s.remove(u[l]);s.extend(a)}return(a.length>0||u.length>0)&&this.dispatchEvent(new GS(FS,a,u,t)),!0},n}(ma),US=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function BS(t){return t.feature?t.feature:t.element?t.element:void 0}var XS=[],VS=function(t){function n(n){var i=this,r=n||{},e=r;return e.handleDownEvent||(e.handleDownEvent=S),e.stopDown||(e.stopDown=O),(i=t.call(this,e)||this)._v=r.source?r.source:null,i.Tp=void 0===r.vertex||r.vertex,i.Ap=void 0===r.edge||r.edge,i.Re=r.features?r.features:null,i.Pp=[],i.Cp={},i.kp={},i.Ip={},i.fd=void 0!==r.pixelTolerance?r.pixelTolerance:10,i.Gd=new Pv,i.Np={Point:i.Lp.bind(i),LineString:i.zp.bind(i),LinearRing:i.zp.bind(i),Polygon:i.Rp.bind(i),MultiPoint:i.Fp.bind(i),MultiLineString:i.Gp.bind(i),MultiPolygon:i.Dp.bind(i),GeometryCollection:i.qp.bind(i),Circle:i.Up.bind(i)},i}return US(n,t),n.prototype.addFeature=function(t,n){var i=void 0===n||n,r=o(t),e=t.getGeometry();if(e){var s=this.Np[e.getType()];if(s){this.kp[r]=e.getExtent([1/0,1/0,-1/0,-1/0]);var u=[];if(s(u,e),1===u.length)this.Gd.insert(yn(u[0]),{feature:t,segment:u[0]});else if(u.length>1){var a=u.map((function(t){return yn(t)})),h=u.map((function(n){return{feature:t,segment:n}}));this.Gd.load(a,h)}}}i&&(this.Cp[r]=$(t,L,this.$a,this))},n.prototype.Bp=function(t){this.addFeature(t)},n.prototype.Xp=function(t){this.removeFeature(t)},n.prototype.Vp=function(){var t;return this.Re?t=this.Re:this._v&&(t=this._v.getFeatures()),t},n.prototype.handleEvent=function(n){var i=this.snapTo(n.pixel,n.coordinate,n.map);return i&&(n.coordinate=i.vertex.slice(0,2),n.pixel=i.vertexPixel),t.prototype.handleEvent.call(this,n)},n.prototype.np=function(t){var n=BS(t);this.addFeature(n)},n.prototype.ip=function(t){var n=BS(t);this.removeFeature(n)},n.prototype.$a=function(t){var n=t.target;if(this.handlingDownUpSequence){var i=o(n);i in this.Ip||(this.Ip[i]=n)}else this.Wp(n)},n.prototype.handleUpEvent=function(t){var n=C(this.Ip);return n.length&&(n.forEach(this.Wp.bind(this)),this.Ip={}),!1},n.prototype.removeFeature=function(t,n){var i=void 0===n||n,r=o(t),e=this.kp[r];if(e){var s=this.Gd,u=[];s.forEachInExtent(e,(function(n){t===n.feature&&u.push(n)}));for(var a=u.length-1;a>=0;--a)s.remove(u[a])}i&&(H(this.Cp[r]),delete this.Cp[r])},n.prototype.setMap=function(n){var i=this.getMap(),r=this.Pp,e=this.Vp();i&&(r.forEach(H),r.length=0,e.forEach(this.Xp.bind(this))),t.prototype.setMap.call(this,n),n&&(this.Re?r.push($(this.Re,ot,this.np,this),$(this.Re,st,this.ip,this)):this._v&&r.push($(this._v,Qv,this.np,this),$(this._v,id,this.ip,this)),e.forEach(this.Bp.bind(this)))},n.prototype.snapTo=function(t,n,i){var r=yn([i.getCoordinateFromPixel([t[0]-this.fd,t[1]+this.fd]),i.getCoordinateFromPixel([t[0]+this.fd,t[1]-this.fd])]),e=this.Gd.getInExtent(r),o=e.length;if(0===o)return null;var s,u=i.getView().getProjection(),a=Ir(n,u),h=1/0,f=this.fd*this.fd,c=function(){if(s){var n=i.getPixelFromCoordinate(s);if(Qi(t,n)<=f)return{vertex:s,vertexPixel:[Math.round(n[0]),Math.round(n[1])]}}return null};if(this.Tp){for(var l=0;l=0;s--)e.push(r[o][s]);return{hasZ:i.hasZ,hasM:i.hasM,rings:e}}};function iO(t,n){var i,r,e;if(!t)return null;if("number"==typeof t.x&&"number"==typeof t.y)e="Point";else if(t.points)e="MultiPoint";else if(t.paths){e=1===t.paths.length?"LineString":"MultiLineString"}else if(t.rings){var o=t,s=rO(o),u=function(t,n){var i,r,e=[],o=[],s=[];for(i=0,r=t.length;i=0;i--){var h=o[i][0];if(xn(new Me(h).getExtent(),new Me(u).getExtent())){o[i].push(u),a=!0;break}}a||o.push([u.reverse()])}return o}(o.rings,s);1===u.length?(e="Polygon",t=A({},t,((i={}).rings=u[0],i))):(e="MultiPolygon",t=A({},t,((r={}).rings=u,r)))}return Eg((0,tO[e])(t),!1,n)}function rO(t){var n=Tt;return!0===t.hasZ&&!0===t.hasM?n=Ct:!0===t.hasZ?n=At:!0===t.hasM&&(n=Pt),n}function eO(t){var n=t.getLayout();return{hasZ:n===At||n===Ct,hasM:n===Pt||n===Ct}}function oO(t,n){return(0,nO[t.getType()])(Eg(t,!0,n),n)}var sO=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this)||this).K=r.geometryName,i}return QS(n,t),n.prototype.readFeatureFromObject=function(t,n,i){var r=t,e=iO(r.geometry,n),o=new Et;if(this.K&&o.setGeometryName(this.K),o.setGeometry(e),r.attributes){o.setProperties(r.attributes,!0);var s=r.attributes[i];void 0!==s&&o.setId(s)}return o},n.prototype.readFeaturesFromObject=function(t,n){var i=n||{};if(t.features){for(var r=[],e=t.features,o=0,s=e.length;o0?i[0]:null},n.prototype.readFeatureFromNode=function(t,n){return null},n.prototype.readFeatures=function(t,n){if(t){if("string"==typeof t){var i=$f(t);return this.readFeaturesFromDocument(i,n)}return Yf(t)?this.readFeaturesFromDocument(t,n):this.readFeaturesFromNode(t,n)}return[]},n.prototype.readFeaturesFromDocument=function(t,n){for(var i=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&g(i,this.readFeaturesFromNode(r,n));return i},n.prototype.readFeaturesFromNode=function(t,n){return r()},n.prototype.readGeometry=function(t,n){if(t){if("string"==typeof t){var i=$f(t);return this.readGeometryFromDocument(i,n)}return Yf(t)?this.readGeometryFromDocument(t,n):this.readGeometryFromNode(t,n)}return null},n.prototype.readGeometryFromDocument=function(t,n){return null},n.prototype.readGeometryFromNode=function(t,n){return null},n.prototype.readProjection=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readProjectionFromDocument(n)}return Yf(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},n.prototype.readProjectionFromDocument=function(t){return this.dataProjection},n.prototype.readProjectionFromNode=function(t){return this.dataProjection},n.prototype.writeFeature=function(t,n){var i=this.writeFeatureNode(t,n);return this.Jp.serializeToString(i)},n.prototype.writeFeatureNode=function(t,n){return null},n.prototype.writeFeatures=function(t,n){var i=this.writeFeaturesNode(t,n);return this.Jp.serializeToString(i)},n.prototype.writeFeaturesNode=function(t,n){return null},n.prototype.writeGeometry=function(t,n){var i=this.writeGeometryNode(t,n);return this.Jp.serializeToString(i)},n.prototype.writeGeometryNode=function(t,n){return null},n}(jg),hO=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fO="http://www.opengis.net/gml",cO=/^[\s\xa0]*$/,lO=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.featureType=r.featureType,i.featureNS=r.featureNS,i.srsName=r.srsName,i.schemaLocation="",i.FEATURE_COLLECTION_PARSERS={},i.FEATURE_COLLECTION_PARSERS[i.namespace]={featureMember:Hf(i.readFeaturesInternal),featureMembers:Jf(i.readFeaturesInternal)},i.supportedMediaTypes=["application/gml+xml"],i}return hO(n,t),n.prototype.readFeaturesInternal=function(t,n){var i=t.localName,r=null;if("FeatureCollection"==i)r=ac([],this.FEATURE_COLLECTION_PARSERS,t,n,this);else if("featureMembers"==i||"featureMember"==i||"member"==i){var e=n[0],o=e.featureType,s=e.featureNS;if(!o&&t.childNodes){o=[],s={};for(var u=0,a=t.childNodes.length;u0){s={Qp:s};for(var h=0;h0;else{var c=f.getType();u="Point"===c||"MultiPoint"===c}}u&&(a=o.get("name"),(u=u&&!!a)&&a.search(/&[^&]+;/)>-1&&(eE||(eE=document.createElement("textarea")),eE.innerHTML=a,a=eE.value));var l=i;if(t?l=t:n&&(l=hE(n,i,r)),u){var v=function(t,n){var i=[0,0],r="start",e=t.getImage();if(e){var o=e.getSize();if(o&&2==o.length){var s=e.getScaleArray(),u=e.getAnchor();i[0]=s[0]*(o[0]-u[0]),i[1]=s[1]*(o[1]/2-u[1]),r="left"}}var a=t.getText();a?((a=a.clone()).setFont(a.getFont()||iE.getFont()),a.setScale(a.getScale()||iE.getScale()),a.setFill(a.getFill()||iE.getFill()),a.setStroke(a.getStroke()||tE)):a=iE.clone();return a.setText(n),a.setOffsetX(i[0]),a.setOffsetY(i[1]),a.setTextAlign(r),new Sv({image:e,text:a})}(l[0],a);return h.length>0?(v.setGeometry(new Dg(h)),[v,new Sv({geometry:l[0].getGeometry(),image:null,fill:l[0].getFill(),stroke:l[0].getStroke(),text:null})].concat(l.slice(1))):v}return l}}(i.Style,i.styleUrl,this.jy,this.Ay,this.Py);r.setStyle(u)}return delete i.Style,r.setProperties(i,!0),r}},n.prototype.Ny=function(t,n){var i=t.getAttribute("id");if(null!==i){var r=FE.call(this,t,n);if(r){var e=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)e=new URL("#"+i,o).href;else e="#"+i;this.Ay[e]=r}}},n.prototype.Ly=function(t,n){var i=t.getAttribute("id");if(null!==i){var r=yE.call(this,t,n);if(r){var e,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)e=new URL("#"+i,o).href;else e="#"+i;this.Ay[e]=r}}},n.prototype.readFeatureFromNode=function(t,n){if(!y(Bj,t.namespaceURI))return null;var i=this.Iy(t,[this.getReadOptions(t,n)]);return i||null},n.prototype.readFeaturesFromNode=function(t,n){if(!y(Bj,t.namespaceURI))return[];var i,r=t.localName;if("Document"==r||"Folder"==r)return(i=this.ky(t,[this.getReadOptions(t,n)]))||[];if("Placemark"==r){var e=this.Iy(t,[this.getReadOptions(t,n)]);return e?[e]:[]}if("kml"==r){i=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var s=this.readFeaturesFromNode(o,n);s&&g(i,s)}return i}return[]},n.prototype.readName=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readNameFromDocument(n)}return Yf(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},n.prototype.readNameFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE){var i=this.readNameFromNode(n);if(i)return i}},n.prototype.readNameFromNode=function(t){for(var n=t.firstElementChild;n;n=n.nextElementSibling)if(y(Bj,n.namespaceURI)&&"name"==n.localName)return xO(n);for(n=t.firstElementChild;n;n=n.nextElementSibling){var i=n.localName;if(y(Bj,n.namespaceURI)&&("Document"==i||"Folder"==i||"Placemark"==i||"kml"==i)){var r=this.readNameFromNode(n);if(r)return r}}},n.prototype.readNetworkLinks=function(t){var n=[];if("string"==typeof t){var i=$f(t);g(n,this.readNetworkLinksFromDocument(i))}else Yf(t)?g(n,this.readNetworkLinksFromDocument(t)):g(n,this.readNetworkLinksFromNode(t));return n},n.prototype.readNetworkLinksFromDocument=function(t){for(var n=[],i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&g(n,this.readNetworkLinksFromNode(i));return n},n.prototype.readNetworkLinksFromNode=function(t){for(var n=[],i=t.firstElementChild;i;i=i.nextElementSibling)if(y(Bj,i.namespaceURI)&&"NetworkLink"==i.localName){var r=ac({},Wj,i,[]);n.push(r)}for(i=t.firstElementChild;i;i=i.nextElementSibling){var e=i.localName;!y(Bj,i.namespaceURI)||"Document"!=e&&"Folder"!=e&&"kml"!=e||g(n,this.readNetworkLinksFromNode(i))}return n},n.prototype.readRegion=function(t){var n=[];if("string"==typeof t){var i=$f(t);g(n,this.readRegionFromDocument(i))}else Yf(t)?g(n,this.readRegionFromDocument(t)):g(n,this.readRegionFromNode(t));return n},n.prototype.readRegionFromDocument=function(t){for(var n=[],i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&g(n,this.readRegionFromNode(i));return n},n.prototype.readRegionFromNode=function(t){for(var n=[],i=t.firstElementChild;i;i=i.nextElementSibling)if(y(Bj,i.namespaceURI)&&"Region"==i.localName){var r=ac({},Zj,i,[]);n.push(r)}for(i=t.firstElementChild;i;i=i.nextElementSibling){var e=i.localName;!y(Bj,i.namespaceURI)||"Document"!=e&&"Folder"!=e&&"kml"!=e||g(n,this.readRegionFromNode(i))}return n},n.prototype.writeFeaturesNode=function(t,n){n=this.adaptOptions(n);var i=Xf(Bj[4],"kml"),r="http://www.w3.org/2000/xmlns/";i.setAttributeNS(r,"xmlns:gx",Uj[0]),i.setAttributeNS(r,"xmlns:xsi",Bf),i.setAttributeNS(Bf,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var e={node:i},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var s=$j[i.namespaceURI],u=oc(o,s);return fc(e,Kj,ec,u,[n],s,this),i},n}(aO);function hE(t,n,i){return Array.isArray(t)?t:"string"==typeof t?hE(i[t],n,i):n}function fE(t){var n=Vf(t,!1),i=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(n);if(i){var r=i[1];return[parseInt(r.substr(6,2),16),parseInt(r.substr(4,2),16),parseInt(r.substr(2,2),16),parseInt(r.substr(0,2),16)/255]}}function cE(t){var n=Vf(t,!1),i=[];n=n.replace(/\s*,\s*/g,",");for(var r,e=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;r=e.exec(n);){var o=parseFloat(r[1]),s=parseFloat(r[2]),u=r[3]?parseFloat(r[3]):0;i.push(o,s,u),n=n.substr(r[0].length)}if(""===n)return i}function lE(t){var n=Vf(t,!1).trim(),i=t.baseURI;return i&&"about:blank"!=i||(i=window.location.href),i?new URL(n,i).href:n}function vE(t){var n=Vf(t,!1).trim().replace(/^(?!.*#)/,"#"),i=t.baseURI;return i&&"about:blank"!=i||(i=window.location.href),i?new URL(n,i).href:n}function dE(t){return mO(t)}var pE=sc(Bj,{Pair:function(t,n){var i=ac({},XE,t,n,this);if(!i)return;var r=i.key;if(r&&"normal"==r){var e=i.styleUrl;e&&(n[n.length-1]=e);var o=i.Style;o&&(n[n.length-1]=o)}}});function yE(t,n){return ac(void 0,pE,t,n,this)}var mE=sc(Bj,{Icon:tc((function(t,n){var i=ac({},jE,t,n);return i||null})),color:tc(fE),heading:tc(mO),hotSpot:tc((function(t){var n,i=t.getAttribute("xunits"),r=t.getAttribute("yunits");return n="insetPixels"!==i?"insetPixels"!==r?sv:av:"insetPixels"!==r?uv:hv,{x:parseFloat(t.getAttribute("x")),xunits:Xj[i],y:parseFloat(t.getAttribute("y")),yunits:Xj[r],origin:n}})),scale:tc(dE)});var wE=sc(Bj,{color:tc(fE),scale:tc(dE)});var gE=sc(Bj,{color:tc(fE),width:tc(mO)});var bE=sc(Bj,{color:tc(fE),fill:tc(dO),outline:tc(dO)});var xE=sc(Bj,{coordinates:Jf(cE)});function ME(t,n){return ac(null,xE,t,n)}var _E=sc(Uj,{Track:Hf(OE)});var SE=sc(Bj,{when:function(t,n){var i=n[n.length-1].whens,r=Vf(t,!1),e=Date.parse(r);i.push(isNaN(e)?0:e)}},sc(Uj,{coord:function(t,n){var i=n[n.length-1].coordinates,r=Vf(t,!1),e=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(r);if(e){var o=parseFloat(e[1]),s=parseFloat(e[2]),u=parseFloat(e[3]);i.push([o,s,u])}else i.push([])}}));function OE(t,n){var i=ac({coordinates:[],whens:[]},SE,t,n);if(i){for(var r=[],e=i.coordinates,o=i.whens,s=0,u=Math.min(e.length,o.length);s0){var r=n[n.length-1];r.push.apply(r,i)}},outerBoundaryIs:function(t,n){var i=ac(void 0,$E,t,n);if(i){n[n.length-1][0]=i}}});function zE(t,n){var i=ac({},AE,t,n),r=ac([null],LE,t,n);if(r&&r[0]){for(var e=r[0],o=[e.length],s=1,u=r.length;s0,f=a.href;f?r=f:h&&(r=Pj);var c,l=sv,v=i.hotSpot;v?(e=[v.x,v.y],o=v.xunits,s=v.yunits,l=v.origin):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(r)&&(/pushpin/.test(r)?(e=jj,o=Ej,s=Tj):/arrow-reverse/.test(r)?(e=[54,42],o=Ej,s=Tj):/paddle/.test(r)&&(e=[32,1],o=Ej,s=Tj));var d,p=a.x,y=a.y;void 0!==p&&void 0!==y&&(c=[p,y]);var m,w=a.w,g=a.h;void 0!==w&&void 0!==g&&(d=[w,g]);var b=i.heading;void 0!==b&&(m=li(b));var x=i.scale,M=i.color;if(h){r==Pj&&(d=Aj);var _=new yv({anchor:e,anchorOrigin:l,anchorXUnits:o,anchorYUnits:s,crossOrigin:this.Bt,offset:c,offsetOrigin:sv,rotation:m,scale:x,size:d,src:this.Cy(r),color:M}),S=_.getScaleArray()[0],O=_.getSize();if(null===O){var j=_.getImageState();if(j===lo||j===vo){var E=function(){var t=_.getImageState();if(t!==lo&&t!==vo){var n=_.getSize();if(n&&2==n.length){var i=sE(n);_.setScale(S*i)}_.unlistenImageChange(E)}};_.listenImageChange(E),j===lo&&_.load()}}else if(2==O.length){var T=sE(O);_.setScale(S*T)}u.imageStyle=_}else u.imageStyle=Jj}},LabelStyle:function(t,n){var i=ac({},wE,t,n);if(i){var r=n[n.length-1],e=new Ev({fill:new rv({color:"color"in i?i.color:Oj}),scale:i.scale});r.textStyle=e}},LineStyle:function(t,n){var i=ac({},gE,t,n);if(i){var r=n[n.length-1],e=new mv({color:"color"in i?i.color:Oj,width:"width"in i?i.width:1});r.strokeStyle=e}},PolyStyle:function(t,n){var i=ac({},bE,t,n);if(i){var r=n[n.length-1],e=new rv({color:"color"in i?i.color:Oj});r.fillStyle=e;var o=i.fill;void 0!==o&&(r.fill=o);var s=i.outline;void 0!==s&&(r.outline=s)}}});function FE(t,n){var i=ac({},RE,t,n,this);if(!i)return null;var r,e="fillStyle"in i?i.fillStyle:Hj,o=i.fill;void 0===o||o||(e=null),"imageStyle"in i?i.imageStyle!=Jj&&(r=i.imageStyle):r=Qj;var s="textStyle"in i?i.textStyle:iE,u="strokeStyle"in i?i.strokeStyle:nE,a=i.outline;return void 0===a||a?[new Sv({fill:e,image:r,stroke:u,text:s,zIndex:void 0})]:[new Sv({geometry:function(t){var n=t.getGeometry(),i=n.getType();return"GeometryCollection"===i?new Dg(n.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return"Polygon"!==n&&"MultiPolygon"!==n}))):"Polygon"!==i&&"MultiPolygon"!==i?n:void 0},fill:e,image:r,stroke:u,text:s,zIndex:void 0}),new Sv({geometry:function(t){var n=t.getGeometry(),i=n.getType();return"GeometryCollection"===i?new Dg(n.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return"Polygon"===n||"MultiPolygon"===n}))):"Polygon"===i||"MultiPolygon"===i?n:void 0},fill:e,stroke:null,zIndex:void 0})]}function GE(t,n){var i,r,e,o=n.length,s=new Array(n.length),u=new Array(n.length),a=new Array(n.length);i=!1,r=!1,e=!1;for(var h=0;h0){var m=oc(e,s);fc(r,bT,MT,[{names:s,values:m}],i)}var w=i[0],g=n.getGeometry();g&&(g=Eg(g,!0,w)),fc(r,bT,cT,[g],i)}var ST=sc(Bj,["extrude","tessellate","altitudeMode","coordinates"]),OT=sc(Bj,{extrude:nc(MO),tessellate:nc(MO),altitudeMode:nc(EO),coordinates:nc((function(t,n,i){var r,e=i[i.length-1],o=e.layout,s=e.stride;o==Tt||o==Pt?r=2:o==At||o==Ct?r=3:St(!1,34);var u=n.length,a="";if(u>0){a+=n[0];for(var h=1;h>1):e>>1}return n}function wA(t){for(var n="",i=0,r=t.length;i=32;)n=63+(32|31&t),i+=String.fromCharCode(n),t>>=5;return n=t+63,i+=String.fromCharCode(n)}var xA=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.dataProjection=yr("EPSG:4326"),i.zy=r.factor?r.factor:1e5,i.qv=r.geometryLayout?r.geometryLayout:Tt,i}return cA(n,t),n.prototype.readFeatureFromText=function(t,n){var i=this.readGeometryFromText(t,n);return new Et(i)},n.prototype.readFeaturesFromText=function(t,n){return[this.readFeatureFromText(t,n)]},n.prototype.readGeometryFromText=function(t,n){var i=Zr(this.qv),r=vA(t,i,this.zy);JS(r,0,r.length,i,r);var e=pe(r,0,r.length,i);return Eg(new ng(e,this.qv),!1,this.adaptOptions(n))},n.prototype.writeFeatureText=function(t,n){var i=t.getGeometry();return i?this.writeGeometryText(i,n):(St(!1,40),"")},n.prototype.writeFeaturesText=function(t,n){return this.writeFeatureText(t[0],n)},n.prototype.writeGeometryText=function(t,n){var i=(t=Eg(t,!0,this.adaptOptions(n))).getFlatCoordinates(),r=t.getStride();return JS(i,0,i.length,r,i),lA(i,r,this.zy)},n}(Cj),MA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_A=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.iv=r.layerName,i.Uh=r.layers?r.layers:null,i.dataProjection=yr(r.dataProjection?r.dataProjection:"EPSG:4326"),i}return MA(n,t),n.prototype.readFeaturesFromObject=function(t,n){if("Topology"==t.type){var i=t,r=void 0,e=null,o=null;i.transform&&(e=(r=i.transform).scale,o=r.translate);var s=i.arcs;r&&function(t,n,i){for(var r=0,e=t.length;r0&&r.pop(),i>=0)for(var s=0,u=(a=n[i]).length;s=0;--s)r.push(a[s].slice(0))}return r}function jA(t,n,i,r,e,o,s){for(var u=t.geometries,a=[],h=0,f=u.length;h=2,57),r}return kA(n,t),n}(CA),NA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),LA=function(t){function n(n){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return NA(n,t),n}(IA),zA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),RA=function(t){function n(n,i,r){var e=t.call(this,"BBOX")||this;if(e.geometryName=n,e.extent=i,4!==i.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return e.srsName=r,e}return zA(n,t),n}(CA),FA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),GA=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.geometryName=i||"the_geom",o.geometry=r,o.srsName=e,o}return FA(n,t),n}(CA),DA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qA=function(t){function n(n,i,r){return t.call(this,"Contains",n,i,r)||this}return DA(n,t),n}(GA),UA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),BA=function(t){function n(n,i,r,e,o){var s=t.call(this,"DWithin",n,i,o)||this;return s.distance=r,s.unit=e,s}return UA(n,t),n}(GA),XA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),VA=function(t){function n(n,i,r){return t.call(this,"Disjoint",n,i,r)||this}return XA(n,t),n}(GA),WA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),YA=function(t){function n(n,i){var r=t.call(this,n)||this;return r.propertyName=i,r}return WA(n,t),n}(CA),ZA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$A=function(t){function n(n,i,r){var e=t.call(this,"During",n)||this;return e.begin=i,e.end=r,e}return ZA(n,t),n}(YA),KA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),HA=function(t){function n(n,i,r,e){var o=t.call(this,n,i)||this;return o.expression=r,o.matchCase=e,o}return KA(n,t),n}(YA),JA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),QA=function(t){function n(n,i,r){return t.call(this,"PropertyIsEqualTo",n,i,r)||this}return JA(n,t),n}(HA),tP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),nP=function(t){function n(n,i){return t.call(this,"PropertyIsGreaterThan",n,i)||this}return tP(n,t),n}(HA),iP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rP=function(t){function n(n,i){return t.call(this,"PropertyIsGreaterThanOrEqualTo",n,i)||this}return iP(n,t),n}(HA),eP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),oP=function(t){function n(n,i,r){return t.call(this,"Intersects",n,i,r)||this}return eP(n,t),n}(GA),sP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),uP=function(t){function n(n,i,r){var e=t.call(this,"PropertyIsBetween",n)||this;return e.lowerBoundary=i,e.upperBoundary=r,e}return sP(n,t),n}(YA),aP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),hP=function(t){function n(n,i,r,e,o,s){var u=t.call(this,"PropertyIsLike",n)||this;return u.pattern=i,u.wildCard=void 0!==r?r:"*",u.singleChar=void 0!==e?e:".",u.escapeChar=void 0!==o?o:"!",u.matchCase=s,u}return aP(n,t),n}(YA),fP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),cP=function(t){function n(n){return t.call(this,"PropertyIsNull",n)||this}return fP(n,t),n}(YA),lP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),vP=function(t){function n(n,i){return t.call(this,"PropertyIsLessThan",n,i)||this}return lP(n,t),n}(HA),dP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),pP=function(t){function n(n,i){return t.call(this,"PropertyIsLessThanOrEqualTo",n,i)||this}return dP(n,t),n}(HA),yP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),mP=function(t){function n(n){var i=t.call(this,"Not")||this;return i.condition=n,i}return yP(n,t),n}(CA),wP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),gP=function(t){function n(n,i,r){return t.call(this,"PropertyIsNotEqualTo",n,i,r)||this}return wP(n,t),n}(HA),bP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xP=function(t){function n(n){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return bP(n,t),n}(IA),MP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_P=function(t){function n(n){var i=t.call(this,"ResourceId")||this;return i.rid=n,i}return MP(n,t),n}(CA),SP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),OP=function(t){function n(n,i,r){return t.call(this,"Within",n,i,r)||this}return SP(n,t),n}(GA);function jP(t){var n=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(LA,n))}function EP(t,n,i){return new RA(t,n,i)}var TP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),AP={"http://www.opengis.net/gml":{boundedBy:tc(vO.prototype.readExtentElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:Hf(vO.prototype.readFeaturesInternal)}},PP={"http://www.opengis.net/wfs":{totalInserted:tc(gO),totalUpdated:tc(gO),totalDeleted:tc(gO)},"http://www.opengis.net/wfs/2.0":{totalInserted:tc(gO),totalUpdated:tc(gO),totalDeleted:tc(gO)}},CP={"http://www.opengis.net/wfs":{TransactionSummary:tc(BP,"transactionSummary"),InsertResults:tc(YP,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:tc(BP,"transactionSummary"),InsertResults:tc(YP,"insertIds")}},kP={"http://www.opengis.net/wfs":{PropertyName:nc(EO)},"http://www.opengis.net/wfs/2.0":{PropertyName:nc(EO)}},IP={"http://www.opengis.net/wfs":{Insert:nc(ZP),Update:nc(JP),Delete:nc(HP),Property:nc(QP),Native:nc(tC)},"http://www.opengis.net/wfs/2.0":{Insert:nc(ZP),Update:nc(JP),Delete:nc(HP),Property:nc(QP),Native:nc(tC)}},NP="feature",LP="http://www.w3.org/2000/xmlns/",zP={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},RP={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},FP={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},GP={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},DP={"2.0.0":DO,"1.1.0":LO,"1.0.0":CO},qP=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.af=r.version?r.version:"1.1.0",i.Fy=r.featureType,i.Gy=r.featureNS,i.Dy=r.gmlFormat?r.gmlFormat:new DP[i.af],i.qy=r.schemaLocation?r.schemaLocation:GP[i.af],i}return TP(n,t),n.prototype.getFeatureType=function(){return this.Fy},n.prototype.setFeatureType=function(t){this.Fy=t},n.prototype.readFeaturesFromNode=function(t,n){var i={node:t};A(i,{featureType:this.Fy,featureNS:this.Gy}),A(i,this.getReadOptions(t,n||{}));var r=[i],e=ac([],"2.0.0"===this.af?AP:this.Dy.FEATURE_COLLECTION_PARSERS,t,r,this.Dy);return e||(e=[]),e},n.prototype.readTransactionResponse=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readTransactionResponseFromDocument(n)}return Yf(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}},n.prototype.readFeatureCollectionMetadata=function(t){if(t){if("string"==typeof t){var n=$f(t);return this.readFeatureCollectionMetadataFromDocument(n)}return Yf(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}},n.prototype.readFeatureCollectionMetadataFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(n)},n.prototype.readFeatureCollectionMetadataFromNode=function(t){var n={},i=bO(t.getAttribute("numberOfFeatures"));return n.numberOfFeatures=i,ac(n,AP,t,[],this.Dy)},n.prototype.readTransactionResponseFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(n)},n.prototype.readTransactionResponseFromNode=function(t){return ac({},CP,t,[])},n.prototype.writeGetFeature=function(t){var n=this,i=Xf(RP[this.af],"GetFeature");i.setAttribute("service","WFS"),i.setAttribute("version",this.af),t.handle&&i.setAttribute("handle",t.handle),t.outputFormat&&i.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&i.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&i.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&i.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&i.setAttribute("count",String(t.count)),void 0!==t.viewParams&&i.setAttribute("viewParams",t.viewParams),i.setAttributeNS(Bf,"xsi:schemaLocation",this.qy);var r={node:i};if(A(r,{version:this.af,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.Gy,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),St(Array.isArray(t.featureTypes),11),"string"==typeof t.featureTypes[0]){var e=t.filter;t.bbox&&(St(t.geometryName,12),e=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,e)),A(r,{geometryName:t.geometryName,filter:e}),wC(i,t.featureTypes,[r])}else t.featureTypes.forEach((function(e){var o=n.combineBboxAndFilter(e.geometryName,e.bbox,t.srsName,t.filter);A(r,{geometryName:e.geometryName,filter:o}),wC(i,[e.name],[r])}));return i},n.prototype.combineBboxAndFilter=function(t,n,i,r){var e=EP(t,n,i);return r?jP(r,e):e},n.prototype.writeTransaction=function(t,n,i,r){var e,o=[],s=r.version?r.version:this.af,u=Xf(RP[s],"Transaction");u.setAttribute("service","WFS"),u.setAttribute("version",s),r&&(e=r.gmlOptions?r.gmlOptions:{},r.handle&&u.setAttribute("handle",r.handle)),u.setAttributeNS(Bf,"xsi:schemaLocation",GP[s]);var a=function(t,n,i,r){var e,o=r.featurePrefix?r.featurePrefix:NP;"1.0.0"===i?e=2:"1.1.0"===i?e=3:"2.0.0"===i&&(e=3.2);return A({node:t},{version:i,featureNS:r.featureNS,featureType:r.featureType,featurePrefix:o,gmlVersion:e,hasZ:r.hasZ,srsName:r.srsName},n)}(u,e,s,r);return t&&UP("Insert",t,o,a),n&&UP("Update",n,o,a),i&&UP("Delete",i,o,a),r.nativeElements&&UP("Native",r.nativeElements,o,a),u},n.prototype.readProjectionFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(n);return null},n.prototype.readProjectionFromNode=function(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(var n=(t=t.firstElementChild.firstElementChild).firstElementChild;n;n=n.nextElementSibling)if(0!==n.childNodes.length&&(1!==n.childNodes.length||3!==n.firstChild.nodeType)){var i=[{}];return this.Dy.readGeometryElement(n,i),yr(i.pop().srsName)}return null},n}(aO);function UP(t,n,i,r){fc(r,IP,rc(t),n,i)}function BP(t,n){return ac({},PP,t,n)}var XP={"http://www.opengis.net/ogc":{FeatureId:Hf((function(t,n){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:Hf((function(t,n){return t.getAttribute("fid")}))}};function VP(t,n){uc(XP,t,n)}var WP={"http://www.opengis.net/wfs":{Feature:VP},"http://www.opengis.net/wfs/2.0":{Feature:VP}};function YP(t,n){return ac([],WP,t,n)}function ZP(t,n,i){var r=i[i.length-1],e=r.featureType,o=r.featureNS,s=r.gmlVersion,u=Xf(o,e);t.appendChild(u),2===s?CO.prototype.writeFeatureElement(u,n,i):3===s?LO.prototype.writeFeatureElement(u,n,i):DO.prototype.writeFeatureElement(u,n,i)}function $P(t,n,i){var r=i[i.length-1].version,e=zP[r],o=Xf(e,"Filter"),s=Xf(e,"FeatureId");o.appendChild(s),s.setAttribute("fid",n),t.appendChild(o)}function KP(t,n){var i=(t=t||NP)+":";return 0===n.indexOf(i)?n:i+n}function HP(t,n,i){var r=i[i.length-1];St(void 0!==n.getId(),26);var e=r.featureType,o=r.featurePrefix,s=r.featureNS,u=KP(o,e);t.setAttribute("typeName",u),t.setAttributeNS(LP,"xmlns:"+o,s);var a=n.getId();void 0!==a&&$P(t,a,i)}function JP(t,n,i){var r=i[i.length-1];St(void 0!==n.getId(),27);var e=r.version,o=r.featureType,s=r.featurePrefix,u=r.featureNS,a=KP(s,o),h=n.getGeometryName();t.setAttribute("typeName",a),t.setAttributeNS(LP,"xmlns:"+s,u);var f=n.getId();if(void 0!==f){for(var c=n.getKeys(),l=[],v=0,d=c.length;v0,i=this.readUint32(n),r=Math.floor((268435455&i)/1e3),e=Boolean(2147483648&i)||1===r||3===r,o=Boolean(1073741824&i)||2===r||3===r,s=Boolean(536870912&i),u=(268435455&i)%1e3,a=["XY",e?"Z":"",o?"M":""].join(""),h=s?this.readUint32(n):null;if(void 0!==t&&t!==u)throw new Error("Unexpected WKB geometry type "+u);if(this.Xy){if(this.Vy!==n)throw new Error("Inconsistent endian");if(this.$y!==a)throw new Error("Inconsistent geometry layout");if(h&&this.Zy!==h)throw new Error("Inconsistent coordinate system (SRID)")}else this.Vy=n,this.Wy=e,this.Yy=o,this.$y=a,this.Zy=h,this.Xy=!0;return u},t.prototype.readWkbPayload=function(t){switch(t){case MC:return this.readPoint();case _C:return this.readLineString();case SC:case CC:return this.readPolygon();case OC:return this.readMultiPoint();case jC:return this.readMultiLineString();case EC:case AC:case PC:return this.readMultiPolygon();case TC:return this.readGeometryCollection();default:throw new Error("Unsupported WKB geometry type "+t+" is found")}},t.prototype.readWkbBlock=function(t){return this.readWkbPayload(this.readWkbHeader(t))},t.prototype.readWkbCollection=function(t,n){for(var i=this.readUint32(),r=[],e=0;e=0&&(t+=this.Ky?2147483648:1e3),this.$y.indexOf("M")>=0&&(t+=this.Ky?1073741824:2e3),this.Ky&&Number.isInteger(n)&&(t|=536870912),this.writeUint8(this.Vy?1:0),this.writeUint32(t),this.Ky&&Number.isInteger(n)&&this.writeUint32(n)},t.prototype.writeMultiPoint=function(t,n){this.writeUint32(t.length);for(var i=0;i="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.am=function(t,n){return t>="0"&&t<="9"||"."==t&&!(void 0!==n&&n)},t.prototype.hm=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.fm=function(){return this.wkt.charAt(++this.sm)},t.prototype.nextToken=function(){var t,n=this.fm(),i=this.sm,r=n;if("("==n)t=qC;else if(","==n)t=XC;else if(")"==n)t=UC;else if(this.am(n)||"-"==n)t=BC,r=this.lm();else if(this.um(n))t=DC,r=this.vm();else{if(this.hm(n))return this.nextToken();if(""!==n)throw new Error("Unexpected character: "+n);t=VC}return{position:i,value:r,type:t}},t.prototype.lm=function(){var t,n=this.sm,i=!1,r=!1;do{"."==t?i=!0:"e"!=t&&"E"!=t||(r=!0),t=this.fm()}while(this.am(t,i)||!r&&("e"==t||"E"==t)||r&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(n,this.sm--))},t.prototype.vm=function(){var t,n=this.sm;do{t=this.fm()}while(this.um(t));return this.wkt.substring(n,this.sm--).toUpperCase()},t}(),ZC=function(){function t(t){this.dm=t,this.pm={position:0,type:GC},this.$y=Tt}return t.prototype.ym=function(){this.pm=this.dm.nextToken()},t.prototype.isTokenType=function(t){return this.pm.type==t},t.prototype.match=function(t){var n=this.isTokenType(t);return n&&this.ym(),n},t.prototype.parse=function(){return this.ym(),this.wm()},t.prototype.gm=function(){var t=Tt,n=this.pm;if(this.isTokenType(DC)){var i=n.value;"Z"===i?t=At:"M"===i?t=Pt:"ZM"===i&&(t=Ct),t!==Tt&&this.ym()}return t},t.prototype.bm=function(){if(this.match(qC)){var t=[];do{t.push(this.wm())}while(this.match(XC));if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Mm=function(){if(this.match(qC)){var t=this._m();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Sm=function(){if(this.match(qC)){var t=this.Om();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.jm=function(){if(this.match(qC)){var t=this.Em();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Tm=function(){if(this.match(qC)){var t=void 0;if(t=this.pm.type==qC?this.Am():this.Om(),this.match(UC))return t}throw new Error(this.xm())},t.prototype.Pm=function(){if(this.match(qC)){var t=this.Em();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype.Cm=function(){if(this.match(qC)){var t=this.km();if(this.match(UC))return t}throw new Error(this.xm())},t.prototype._m=function(){for(var t=[],n=this.$y.length,i=0;i0&&(r+=" "+e)}return 0===i.length?r+" "+FC:r+"("+i+")"}var nk=$C,ik=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rk=[null,"http://www.opengis.net/wms"],ek=sc(rk,{Service:tc((function(t,n){return ac({},uk,t,n)})),Capability:tc((function(t,n){return ac({},ok,t,n)}))}),ok=sc(rk,{Request:tc((function(t,n){return ac({},pk,t,n)})),Exception:tc((function(t,n){return ac([],ck,t,n)})),Layer:tc((function(t,n){var i=ac({},lk,t,n);if(void 0===i.Layer)return Object.assign(i,Mk(t,n));return i}))}),sk=function(t){function n(){var n=t.call(this)||this;return n.version=void 0,n}return ik(n,t),n.prototype.readFromNode=function(t){this.version=t.getAttribute("version").trim();var n=ac({version:this.version},ek,t,[]);return n||null},n}(VT),uk=sc(rk,{Name:tc(xO),Title:tc(xO),Abstract:tc(xO),KeywordList:tc(jk),OnlineResource:tc(WT),ContactInformation:tc((function(t,n){return ac({},ak,t,n)})),Fees:tc(xO),AccessConstraints:tc(xO),LayerLimit:tc(gO),MaxWidth:tc(gO),MaxHeight:tc(gO)}),ak=sc(rk,{ContactPersonPrimary:tc((function(t,n){return ac({},hk,t,n)})),ContactPosition:tc(xO),ContactAddress:tc((function(t,n){return ac({},fk,t,n)})),ContactVoiceTelephone:tc(xO),ContactFacsimileTelephone:tc(xO),ContactElectronicMailAddress:tc(xO)}),hk=sc(rk,{ContactPerson:tc(xO),ContactOrganization:tc(xO)}),fk=sc(rk,{AddressType:tc(xO),Address:tc(xO),City:tc(xO),StateOrProvince:tc(xO),PostCode:tc(xO),Country:tc(xO)}),ck=sc(rk,{Format:Hf(xO)}),lk=sc(rk,{Name:tc(xO),Title:tc(xO),Abstract:tc(xO),KeywordList:tc(jk),CRS:Qf(xO),EX_GeographicBoundingBox:tc((function(t,n){var i=ac({},dk,t,n);if(!i)return;var r=i.westBoundLongitude,e=i.southBoundLatitude,o=i.eastBoundLongitude,s=i.northBoundLatitude;if(void 0===r||void 0===e||void 0===o||void 0===s)return;return[r,e,o,s]})),BoundingBox:Qf((function(t,n){var i=[wO(t.getAttribute("minx")),wO(t.getAttribute("miny")),wO(t.getAttribute("maxx")),wO(t.getAttribute("maxy"))],r=[wO(t.getAttribute("resx")),wO(t.getAttribute("resy"))];return{crs:t.getAttribute("CRS"),extent:i,res:r}})),Dimension:Qf((function(t,n){return{name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol"),default:t.getAttribute("default"),multipleValues:pO(t.getAttribute("multipleValues")),nearestValue:pO(t.getAttribute("nearestValue")),current:pO(t.getAttribute("current")),values:xO(t)}})),Attribution:tc((function(t,n){return ac({},vk,t,n)})),AuthorityURL:Qf((function(t,n){var i=_k(t,n);if(i)return i.name=t.getAttribute("name"),i;return})),Identifier:Qf(xO),MetadataURL:Qf((function(t,n){var i=_k(t,n);if(i)return i.type=t.getAttribute("type"),i;return})),DataURL:Qf(_k),FeatureListURL:Qf(_k),Style:Qf((function(t,n){return ac({},gk,t,n)})),MinScaleDenominator:tc(mO),MaxScaleDenominator:tc(mO),Layer:Qf(Mk)}),vk=sc(rk,{Title:tc(xO),OnlineResource:tc(WT),LogoURL:tc(Ok)}),dk=sc(rk,{westBoundLongitude:tc(mO),eastBoundLongitude:tc(mO),southBoundLatitude:tc(mO),northBoundLatitude:tc(mO)}),pk=sc(rk,{GetCapabilities:tc(Sk),GetMap:tc(Sk),GetFeatureInfo:tc(Sk)}),yk=sc(rk,{Format:Qf(xO),DCPType:Qf((function(t,n){return ac({},mk,t,n)}))}),mk=sc(rk,{HTTP:tc((function(t,n){return ac({},wk,t,n)}))}),wk=sc(rk,{Get:tc(_k),Post:tc(_k)}),gk=sc(rk,{Name:tc(xO),Title:tc(xO),Abstract:tc(xO),LegendURL:Qf(Ok),StyleSheetURL:tc(_k),StyleURL:tc(_k)}),bk=sc(rk,{Format:tc(xO),OnlineResource:tc(WT)}),xk=sc(rk,{Keyword:Hf(xO)});function Mk(t,n){var i=n[n.length-1],r=ac({},lk,t,n);if(r){var e=pO(t.getAttribute("queryable"));void 0===e&&(e=i.queryable),r.queryable=void 0!==e&&e;var o=bO(t.getAttribute("cascaded"));void 0===o&&(o=i.cascaded),r.cascaded=o;var s=pO(t.getAttribute("opaque"));void 0===s&&(s=i.opaque),r.opaque=void 0!==s&&s;var u=pO(t.getAttribute("noSubsets"));void 0===u&&(u=i.noSubsets),r.noSubsets=void 0!==u&&u;var a=wO(t.getAttribute("fixedWidth"));a||(a=i.fixedWidth),r.fixedWidth=a;var h=wO(t.getAttribute("fixedHeight"));h||(h=i.fixedHeight),r.fixedHeight=h;["Style","CRS","AuthorityURL"].forEach((function(t){if(t in i){var n=r[t]||[];r[t]=n.concat(i[t])}}));return["EX_GeographicBoundingBox","BoundingBox","Dimension","Attribution","MinScaleDenominator","MaxScaleDenominator"].forEach((function(t){if(!(t in r)){var n=i[t];r[t]=n}})),r}}function _k(t,n){return ac({},bk,t,n)}function Sk(t,n){return ac({},yk,t,n)}function Ok(t,n){var i=_k(t,n);if(i){var r=[bO(t.getAttribute("width")),bO(t.getAttribute("height"))];return i.size=r,i}}function jk(t,n){return ac([],xk,t,n)}var Ek=sk,Tk=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ak=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Gy="http://mapserver.gis.umn.edu/mapserver",i.Dy=new CO,i.Uh=r.layers?r.layers:null,i}return Tk(n,t),n.prototype.getLayers=function(){return this.Uh},n.prototype.setLayers=function(t){this.Uh=t},n.prototype.zm=function(t,n){t.setAttribute("namespaceURI",this.Gy);var i=t.localName,r=[];if(0===t.childNodes.length)return r;if("msGMLOutput"==i)for(var e=0,o=t.childNodes.length;ef*uI||h>c*uI?this.cw():xn(o,r)||this.pw()}}},n.prototype.cw=function(){var t=this.getMap(),n=this.sw,i=t.getSize(),r=t.getView().calculateExtentInternal(i),e=n.getView(),o=Math.log(7.5)/Math.LN2;Qn(r,1/(Math.pow(2,o/2)*aI)),e.fitInternal(Ze(r))},n.prototype.pw=function(){var t=this.getMap(),n=this.sw,i=t.getView();n.getView().setCenterInternal(i.getCenterInternal())},n.prototype.yw=function(){var t=this.getMap(),n=this.sw;if(t.isRendered()&&n.isRendered()){var i=t.getSize(),r=t.getView(),e=n.getView(),o=this.su?0:-r.getRotation(),s=this.uw,u=this.uw.getElement(),a=r.getCenterInternal(),h=r.getResolution(),f=e.getResolution(),c=i[0]*h/f,l=i[1]*h/f;if(s.setPosition(a),u){u.style.width=c+"px",u.style.height=l+"px";var v="rotate("+o+"rad)";u.style.transform=v}}},n.prototype.lw=function(){this.mw||(this.mw=K(this.sw,vu,(function(t){delete this.mw,this.yw()}),this))},n.prototype.kr=function(t){t.preventDefault(),this.zr()},n.prototype.zr=function(){this.element.classList.toggle(_s),this.Sr?Eo(this.Ar,this.Pr):Eo(this.Pr,this.Ar),this.Sr=!this.Sr;var t=this.sw;if(!this.Sr){if(t.isRendered())return this.ew=void 0,void t.render();t.updateSize(),this.cw(),this.lw()}},n.prototype.getCollapsible=function(){return this.Tr},n.prototype.setCollapsible=function(t){this.Tr!==t&&(this.Tr=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.Sr&&this.zr())},n.prototype.setCollapsed=function(t){this.Tr&&this.Sr!==t&&this.zr()},n.prototype.getCollapsed=function(){return this.Sr},n.prototype.getRotateWithView=function(){return this.su},n.prototype.setRotateWithView=function(t){this.su!==t&&(this.su=t,0!==this.getMap().getView().getRotation()&&(this.su?this.rw():this.sw.getView().setRotation(0),this.ew=void 0,this.dw(),this.yw()))},n.prototype.getOverviewMap=function(){return this.sw},n.prototype.render=function(t){this.dw(),this.yw()},n}(oa),cI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),lI="units",vI="degrees",dI="imperial",pI="nautical",yI="metric",mI="us",wI=[1,2,5],gI=25.4/.28,bI=function(t){function n(n){var i=this,r=n||{},e=void 0!==r.className?r.className:r.bar?"ol-scale-bar":"ol-scale-line";return(i=t.call(this,{element:document.createElement("div"),render:r.render,target:r.target})||this).on,i.once,i.un,i.ww=document.createElement("div"),i.ww.className=e+"-inner",i.element.className=e+" "+bs,i.element.appendChild(i.ww),i.gw=null,i.bw=void 0!==r.minWidth?r.minWidth:64,i.xw=r.maxWidth,i.mn=!1,i.Mw=void 0,i.Qm="",i.addChangeListener(lI,i._w),i.setUnits(r.units||yI),i.Sw=r.bar||!1,i.Ow=r.steps||4,i.jw=r.text||!1,i.Ew=r.dpi||void 0,i}return cI(n,t),n.prototype.getUnits=function(){return this.get(lI)},n.prototype._w=function(){this.Lr()},n.prototype.setUnits=function(t){this.set(lI,t)},n.prototype.setDpi=function(t){this.Ew=t},n.prototype.Lr=function(){var t=this.gw;if(t){var n=t.center,i=t.projection,r=this.getUnits(),e=r==vI?Rt.DEGREES:Rt.METERS,o=mr(i,t.resolution,n,e),s=this.bw*(this.Ew||gI)/gI,u=void 0!==this.xw?this.xw*(this.Ew||gI)/gI:void 0,a=s*o,h="";if(r==vI){var f=Lt[Rt.DEGREES];(a*=f)=u){c=d,l=p,v=y;break}if(l>=s)break;d=c,p=l,y=v,++w}m=this.Sw?this.createScaleBar(l,c,h):c.toFixed(v<0?-v:0)+" "+h,this.Qm!=m&&(this.ww.innerHTML=m,this.Qm=m),this.Mw!=l&&(this.ww.style.width=l+"px",this.Mw=l),this.mn||(this.element.style.display="",this.mn=!0)}else this.mn&&(this.element.style.display="none",this.mn=!1)},n.prototype.createScaleBar=function(t,n,i){for(var r="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),e=[],o=t/this.Ow,s="ol-scale-singlebar-odd",u=0;u
'+this.createMarker("relative",u)+(u%2==0||2===this.Ow?this.createStepText(u,t,!1,n,i):"")+""),u===this.Ow-1&&e.push(this.createStepText(u+1,t,!0,n,i)),s="ol-scale-singlebar-odd"===s?"ol-scale-singlebar-even":"ol-scale-singlebar-odd";return'
'+(this.jw?'
'+r+"
":"")+e.join("")+"
"},n.prototype.createMarker=function(t,n){return'
'},n.prototype.createStepText=function(t,n,i,r,e){var o=(0===t?0:Math.round(r/this.Ow*t*100)/100)+(0===t?"":" "+e);return'
'+o+"
"},n.prototype.getScaleForResolution=function(){var t=mr(this.gw.projection,this.gw.resolution,this.gw.center,Rt.METERS),n=this.Ew||gI;return parseFloat(t.toString())*(1e3/25.4)*n},n.prototype.render=function(t){var n=t.frameState;this.gw=n?n.viewState:null,this.Lr()},n}(oa),xI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),MI=0,_I=1,SI=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),render:r.render})||this).kn=[],i.Tw=void 0,i.Aw=MI,i.Cn,i.Pw=0,i.Cw=0,i.kw,i.Iw,i.Nw=null,i.Lw=!1,i.Fr=void 0!==r.duration?r.duration:200;var e=void 0!==r.className?r.className:"ol-zoomslider",o=document.createElement("button");o.setAttribute("type","button"),o.className=e+"-thumb "+bs;var s=i.element;return s.className=e+" "+"ol-unselectable "+Ms,s.appendChild(o),s.addEventListener(au,i.zw.bind(i),!1),s.addEventListener(uu,i.Rw.bind(i),!1),s.addEventListener(hu,i.Fw.bind(i),!1),s.addEventListener(F,i.Gw.bind(i),!1),o.addEventListener(F,f,!1),i}return xI(n,t),n.prototype.setMap=function(n){t.prototype.setMap.call(this,n),n&&n.render()},n.prototype.Dw=function(){var t=this.element,n=t.offsetWidth,i=t.offsetHeight;if(0===n&&0===i)return this.Lw=!1;var r=getComputedStyle(t);n-=parseFloat(r.paddingRight)+parseFloat(r.paddingLeft),i-=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);var e=t.firstElementChild,o=getComputedStyle(e),s=e.offsetWidth+parseFloat(o.marginRight)+parseFloat(o.marginLeft),u=e.offsetHeight+parseFloat(o.marginTop)+parseFloat(o.marginBottom);return this.Nw=[s,u],n>i?(this.Aw=_I,this.Cw=n-s):(this.Aw=MI,this.Pw=i-u),this.Lw=!0},n.prototype.Gw=function(t){var n=this.getMap().getView(),i=this.qw(t.offsetX-this.Nw[0]/2,t.offsetY-this.Nw[1]/2),r=this.Uw(i),e=n.getConstrainedZoom(n.getZoomForResolution(r));n.animateInternal({zoom:e,duration:this.Fr,easing:mt})},n.prototype.zw=function(t){if(!this.Cn&&t.target===this.element.firstElementChild){var n=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.kw=t.clientX-parseFloat(n.style.left),this.Iw=t.clientY-parseFloat(n.style.top),this.Cn=!0,0===this.kn.length){var i=this.Rw,r=this.Fw,e=this.getMap().getOwnerDocument();this.kn.push($(e,uu,i,this),$(e,hu,r,this))}}},n.prototype.Rw=function(t){if(this.Cn){var n=t.clientX-this.kw,i=t.clientY-this.Iw,r=this.qw(n,i);this.Tw=this.Uw(r),this.getMap().getView().setResolution(this.Tw)}},n.prototype.Fw=function(t){this.Cn&&(this.getMap().getView().endInteraction(),this.Cn=!1,this.kw=void 0,this.Iw=void 0,this.kn.forEach(H),this.kn.length=0)},n.prototype.Bw=function(t){var n=this.Xw(t),i=this.element.firstElementChild;this.Aw==_I?i.style.left=this.Cw*n+"px":i.style.top=this.Pw*n+"px"},n.prototype.qw=function(t,n){return oi(this.Aw===_I?t/this.Cw:n/this.Pw,0,1)},n.prototype.Uw=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},n.prototype.Xw=function(t){return oi(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)},n.prototype.render=function(t){if(t.frameState&&(this.Lw||this.Dw())){var n=t.frameState.viewState.resolution;this.Tw=n,this.Bw(n)}},n}(oa),OI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),jI=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),target:r.target})||this).extent=r.extent?r.extent:null;var e=void 0!==r.className?r.className:"ol-zoom-extent",o=void 0!==r.label?r.label:"E",s=void 0!==r.tipLabel?r.tipLabel:"Fit to extent",u=document.createElement("button");u.setAttribute("type","button"),u.title=s,u.appendChild("string"==typeof o?document.createTextNode(o):o),u.addEventListener(F,i.kr.bind(i),!1);var a=e+" "+"ol-unselectable "+Ms,h=i.element;return h.className=a,h.appendChild(u),i}return OI(n,t),n.prototype.kr=function(t){t.preventDefault(),this.handleZoomToExtent()},n.prototype.handleZoomToExtent=function(){var t=this.getMap().getView(),n=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal(Ze(n))},n}(oa),EI={};EI.AssertionError=h,EI.Collection=ft,EI.Collection.CollectionEvent=ht,EI.DataTile=_t,EI.Disposable=v,EI.Feature=Et,EI.Feature.createStyleFunction=jt,EI.Geolocation=ho,EI.Image=bo,EI.Image.listenImage=go,EI.ImageBase=co,EI.ImageCanvas=Mo,EI.ImageTile=ko,EI.Kinetic=Io,EI.Map=yh,EI.MapBrowserEvent=ou,EI.MapBrowserEventHandler=lu,EI.MapEvent=ru,EI.Object=et,EI.Object.ObjectEvent=rt,EI.Observable=nt,EI.Observable.unByKey=tt,EI.Overlay=_h,EI.PluggableMap=ra,EI.Tile=xt,EI.TileCache=Ih,EI.TileQueue=Ou,EI.TileQueue.getTilePriority=ju,EI.TileRange=zh,EI.TileRange.createOrUpdate=Lh,EI.VectorRenderTile=Gh,EI.VectorTile=qh,EI.View=$u,EI.View.createCenterConstraint=Xu,EI.View.createResolutionConstraint=Vu,EI.View.createRotationConstraint=Wu,EI.View.isNoopAnimation=Yu,EI.array={},EI.array.binarySearch=d,EI.array.equals=x,EI.array.extend=g,EI.array.find=b,EI.array.findIndex=M,EI.array.includes=y,EI.array.isSorted=_,EI.array.linearFindNearest=m,EI.array.numberSafeCompareFunction=p,EI.array.remove=function(t,n){var i=t.indexOf(n),r=i>-1;return r&&t.splice(i,1),r},EI.array.reverseSubArray=w,EI.array.stableSort=function(t,n){var i,r=t.length,e=Array(t.length);for(i=0;i3&&!!we(t,n,i,r)},EI.geom.flat.transform={},EI.geom.flat.transform.rotate=qr,EI.geom.flat.transform.scale=Ur,EI.geom.flat.transform.transform2D=Dr,EI.geom.flat.transform.translate=Br,EI.has={},EI.has.DEVICE_PIXEL_RATIO=Xt,EI.has.FIREFOX=Gt,EI.has.IMAGE_DECODE=Wt,EI.has.MAC=Bt,EI.has.PASSIVE_EVENT_LISTENERS=Yt,EI.has.SAFARI=Dt,EI.has.SAFARI_BUG_237906=qt,EI.has.WEBKIT=Ut,EI.has.WORKER_OFFSCREEN_CANVAS=Vt,EI.interaction={},EI.interaction.DoubleClickZoom=ga,EI.interaction.DragAndDrop=Q_,EI.interaction.DragAndDrop.DragAndDropEvent=J_,EI.interaction.DragBox=$a,EI.interaction.DragBox.DragBoxEvent=Za,EI.interaction.DragPan=Fa,EI.interaction.DragRotate=Da,EI.interaction.DragRotateAndZoom=nS,EI.interaction.DragZoom=Ha,EI.interaction.Draw=dS,EI.interaction.Draw.DrawEvent=vS,EI.interaction.Draw.createBox=function(){return function(t,n,i){var r=yn([t[0],t[t.length-1]].map((function(t){return Ir(t,i)}))),e=[[Gn(r),Dn(r),Zn(r),Yn(r),Gn(r)]],o=n;o?o.setCoordinates(e):o=new We(e);var s=Cr();return s&&o.transform(i,s),o}},EI.interaction.Draw.createRegularPolygon=function(t,n){return function(i,r,e){var o=Ir(i[0],e),s=Ir(i[i.length-1],e),u=Math.sqrt(Qi(o,s)),a=r||$e(new eS(o),t),h=n;if(!n&&0!==n){var f=s[0]-o[0],c=s[1]-o[1];h=Math.atan2(c,f)}Ke(a,o,u,h);var l=Cr();return l&&a.transform(e,l),a}},EI.interaction.Extent=xS,EI.interaction.Extent.ExtentEvent=mS,EI.interaction.Interaction=ma,EI.interaction.Interaction.pan=pa,EI.interaction.Interaction.zoomByDelta=ya,EI.interaction.KeyboardPan=rh,EI.interaction.KeyboardZoom=oh,EI.interaction.Link=jS,EI.interaction.Modify=zS,EI.interaction.Modify.ModifyEvent=kS,EI.interaction.MouseWheelZoom=hh,EI.interaction.PinchRotate=ch,EI.interaction.PinchZoom=vh,EI.interaction.Pointer=Ma,EI.interaction.Pointer.centroid=xa,EI.interaction.Select=qS,EI.interaction.Select.SelectEvent=GS,EI.interaction.Snap=VS,EI.interaction.Translate=HS,EI.interaction.Translate.TranslateEvent=KS,EI.interaction.defaults=dh,EI.layer={},EI.layer.Base=es,EI.layer.BaseImage=$y,EI.layer.BaseTile=am,EI.layer.BaseVector=$m,EI.layer.Graticule=gg,EI.layer.Group=nu,EI.layer.Group.GroupEvent=Qs,EI.layer.Heatmap=Og,EI.layer.Image=em,EI.layer.Layer=ls,EI.layer.Layer.inView=cs,EI.layer.MapboxVector=q_,EI.layer.Tile=lm,EI.layer.Vector=lg,EI.layer.VectorImage=B_,EI.layer.VectorTile=Rg,EI.layer.WebGLPoints=V_,EI.layer.WebGLTile=$_,EI.loadingstrategy={},EI.loadingstrategy.all=Wh,EI.loadingstrategy.bbox=function(t,n){return[t]},EI.loadingstrategy.tile=function(t){return function(n,i,r){var e=t.getZForResolution(Rr(i,r)),o=t.getTileRangeForExtentAndZ(Lr(n,r),e),s=[],u=[e,0,0];for(u[1]=o.minX;u[1]<=o.maxX;++u[1])for(u[2]=o.minY;u[2]<=o.maxY;++u[2])s.push(Nr(t.getTileCoordExtent(u),r));return s}},EI.math={},EI.math.ceil=wi,EI.math.clamp=oi,EI.math.cosh=si,EI.math.floor=mi,EI.math.lerp=di,EI.math.log2=ui,EI.math.modulo=vi,EI.math.round=yi,EI.math.solveLinearSystem=fi,EI.math.squaredDistance=hi,EI.math.squaredSegmentDistance=ai,EI.math.toDegrees=ci,EI.math.toFixed=pi,EI.math.toRadians=li,EI.net={},EI.net.ClientError=Hh,EI.net.ResponseError=Kh,EI.net.getJSON=Jh,EI.net.jsonp=Zh,EI.net.overrideXHR=function(t){"undefined"!=typeof XMLHttpRequest&&($h=XMLHttpRequest),global.XMLHttpRequest=t},EI.net.resolveUrl=Qh,EI.net.restoreXHR=function(){global.XMLHttpRequest=$h},EI.obj={},EI.obj.assign=A,EI.obj.clear=P,EI.obj.getValues=C,EI.obj.isEmpty=k,EI.proj={},EI.proj.Projection=ei,EI.proj.Units={},EI.proj.Units.METERS_PER_UNIT=Lt,EI.proj.Units.fromCode=Nt,EI.proj.addCommon=Gr,EI.proj.addCoordinateTransforms=Mr,EI.proj.addEquivalentProjections=wr,EI.proj.addEquivalentTransforms=gr,EI.proj.addProjection=dr,EI.proj.addProjections=pr,EI.proj.clearAllProjections=function(){zi(),Di()},EI.proj.clearUserProjection=function(){Ar=null},EI.proj.cloneTransform=lr,EI.proj.createProjection=br,EI.proj.createSafeCoordinateTransform=Fr,EI.proj.createTransformFromCoordinateTransform=xr,EI.proj.disableCoordinateWarning=cr,EI.proj.epsg3857={},EI.proj.epsg3857.EXTENT=Mi,EI.proj.epsg3857.HALF_SIZE=xi,EI.proj.epsg3857.MAX_SAFE_Y=Si,EI.proj.epsg3857.PROJECTIONS=ji,EI.proj.epsg3857.RADIUS=bi,EI.proj.epsg3857.WORLD_EXTENT=_i,EI.proj.epsg3857.fromEPSG4326=Ei,EI.proj.epsg3857.toEPSG4326=Ti,EI.proj.epsg4326={},EI.proj.epsg4326.EXTENT=Ci,EI.proj.epsg4326.METERS_PER_UNIT=ki,EI.proj.epsg4326.PROJECTIONS=Ni,EI.proj.epsg4326.RADIUS=Pi,EI.proj.equivalent=Sr,EI.proj.fromLonLat=_r,EI.proj.fromUserCoordinate=Ir,EI.proj.fromUserExtent=Lr,EI.proj.fromUserResolution=Rr,EI.proj.get=yr,EI.proj.getPointResolution=mr,EI.proj.getTransform=jr,EI.proj.getTransformFromProjections=Or,EI.proj.getUserProjection=Cr,EI.proj.identityTransform=vr,EI.proj.proj4={},EI.proj.proj4.register=function(t){var n,i,r=Object.keys(t.defs),e=r.length;for(n=0;n180)&&(i[0]=vi(r+180,360)-180),i},EI.proj.toUserCoordinate=kr,EI.proj.toUserExtent=Nr,EI.proj.toUserResolution=zr,EI.proj.transform=Er,EI.proj.transformExtent=Tr,EI.proj.transformWithProjections=function(t,n,i){return Or(n,i)(t)},EI.proj.transforms={},EI.proj.transforms.add=qi,EI.proj.transforms.clear=Di,EI.proj.transforms.get=Ui,EI.proj.transforms.remove=function(t,n){var i=t.getCode(),r=n.getCode(),e=Gi[i][r];return delete Gi[i][r],k(Gi[i])&&delete Gi[i],e},EI.proj.useGeographic=function(){Pr("EPSG:4326")},EI.render={},EI.render.Box=Ua,EI.render.Event=ms,EI.render.Feature=fg,EI.render.Feature.toFeature=function(t,n){var i=t.getId(),r=hg(t),e=t.getProperties(),o=new Et;return void 0!==n&&o.setGeometryName(n),o.setGeometry(r),void 0!==i&&o.setId(i),o.setProperties(e,!0),o},EI.render.Feature.toGeometry=hg,EI.render.VectorContext=tf,EI.render.canvas={},EI.render.canvas.Builder=ow,EI.render.canvas.BuilderGroup=mw,EI.render.canvas.Executor=Aw,EI.render.canvas.ExecutorGroup=Nw,EI.render.canvas.ExecutorGroup.getPixelIndexArray=Iw,EI.render.canvas.ImageBuilder=uw,EI.render.canvas.Immediate=rf,EI.render.canvas.Instruction={},EI.render.canvas.Instruction.beginPathInstruction=nw,EI.render.canvas.Instruction.closePathInstruction=iw,EI.render.canvas.Instruction.fillInstruction=Qm,EI.render.canvas.Instruction.strokeInstruction=tw,EI.render.canvas.LineStringBuilder=hw,EI.render.canvas.PolygonBuilder=cw,EI.render.canvas.TextBuilder=pw,EI.render.canvas.checkedFonts=Rs,EI.render.canvas.defaultFillStyle=Ts,EI.render.canvas.defaultFont=Es,EI.render.canvas.defaultLineCap=As,EI.render.canvas.defaultLineDash=Ps,EI.render.canvas.defaultLineDashOffset=0,EI.render.canvas.defaultLineJoin=Cs,EI.render.canvas.defaultLineWidth=1,EI.render.canvas.defaultMiterLimit=ks,EI.render.canvas.defaultPadding=zs,EI.render.canvas.defaultStrokeStyle=Is,EI.render.canvas.defaultTextAlign=Ns,EI.render.canvas.defaultTextBaseline=Ls,EI.render.canvas.drawImageOrLabel=$s,EI.render.canvas.getTextDimensions=Zs,EI.render.canvas.hitdetect={},EI.render.canvas.hitdetect.HIT_DETECT_RESOLUTION=Lw,EI.render.canvas.hitdetect.createHitDetectionImageData=zw,EI.render.canvas.hitdetect.hitDetect=Rw,EI.render.canvas.labelCache=Fs,EI.render.canvas.measureAndCacheTextWidth=Ys,EI.render.canvas.measureTextHeight=Xs,EI.render.canvas.measureTextWidth=Ws,EI.render.canvas.registerFont=Bs,EI.render.canvas.rotateAtOffset=function(t,n,i,r){0!==n&&(t.translate(i,r),t.rotate(n),t.translate(-i,-r))},EI.render.canvas.textHeights=Us,EI.render.getRenderPixel=function(t,n){return tn(t.inversePixelTransform,n.slice(0))},EI.render.getVectorContext=ff,EI.render.toContext=function(t,n){var i=t.canvas,r=n||{},e=r.pixelRatio||Xt,o=r.size;o&&(i.width=o[0]*e,i.height=o[1]*e,i.style.width=o[0]+"px",i.style.height=o[1]+"px");var s=[0,0,i.width,i.height],u=rn([1,0,0,1,0,0],e,e);return new rf(t,e,s,u,0)},EI.renderer={},EI.renderer.Composite=Hs,EI.renderer.Layer=Kc,EI.renderer.Map=ps,EI.renderer.canvas={},EI.renderer.canvas.ImageLayer=im,EI.renderer.canvas.Layer=tm,EI.renderer.canvas.Layer.canvasPool=Hy,EI.renderer.canvas.TileLayer=fm,EI.renderer.canvas.VectorImageLayer=qw,EI.renderer.canvas.VectorLayer=Gw,EI.renderer.canvas.VectorTileLayer=Zw,EI.renderer.canvas.common={},EI.renderer.canvas.common.IMAGE_SMOOTHING_DISABLED=lf,EI.renderer.canvas.common.IMAGE_SMOOTHING_ENABLED=vf,EI.renderer.vector={},EI.renderer.vector.defaultOrder=of,EI.renderer.vector.getSquaredTolerance=sf,EI.renderer.vector.getTolerance=uf,EI.renderer.vector.renderFeature=af,EI.renderer.webgl={},EI.renderer.webgl.Layer=ol,EI.renderer.webgl.Layer.colorDecodeId=el,EI.renderer.webgl.Layer.colorEncodeId=rl,EI.renderer.webgl.Layer.getBlankImageData=function(){var t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t},EI.renderer.webgl.Layer.writePointFeatureToBuffers=function(t,n,i,r,e,o){var s=3+e,u=t[n+0],a=t[n+1],h=tl;h.length=e;for(var f=0;f1?M(i.TileMatrixSetLink,"projection"in n?function(t,i,r){var o=b(e,(function(n){return n.Identifier==t.TileMatrixSet})).SupportedCRS,s=yr(o),u=yr(n.projection);return s&&u?Sr(s,u):o==n.projection}:function(t,i,r){return t.TileMatrixSet==n.matrixSet}):0)<0&&(r=0);var o=i.TileMatrixSetLink[r].TileMatrixSet,s=i.TileMatrixSetLink[r].TileMatrixSetLimits,u=i.Format[0];"format"in n&&(u=n.format),(r=M(i.Style,(function(t,i,r){return"style"in n?t.Title==n.style:t.isDefault})))<0&&(r=0);var a=i.Style[r].Identifier,h={};"Dimension"in i&&i.Dimension.forEach((function(t,n,i){var r=t.Identifier,e=t.Default;void 0===e&&(e=t.Value[0]),h[r]=e}));var f,c=b(t.Contents.TileMatrixSet,(function(t,n,i){return t.Identifier==o})),l=c.SupportedCRS;if(l&&(f=yr(l)),"projection"in n){var v=yr(n.projection);v&&(f&&!Sr(v,f)||(f=v))}var d=!1,p="ne"==f.getAxisOrientation().substr(0,2),m=c.TileMatrix[0],w={MinTileCol:0,MinTileRow:0,MaxTileCol:m.MatrixWidth-1,MaxTileRow:m.MatrixHeight-1};if(s){w=s[s.length-1];var g=b(c.TileMatrix,(function(t){return t.Identifier===w.TileMatrix||c.Identifier+":"+t.Identifier===w.TileMatrix}));g&&(m=g)}var x=28e-5*m.ScaleDenominator/f.getMetersPerUnit(),_=p?[m.TopLeftCorner[1],m.TopLeftCorner[0]]:m.TopLeftCorner,S=m.TileWidth*x,O=m.TileHeight*x,j=c.BoundingBox;j&&p&&(j=[j[1],j[0],j[3],j[2]]);var E=[_[0]+S*w.MinTileCol,_[1]-O*(1+w.MaxTileRow),_[0]+S*(1+w.MaxTileCol),_[1]-O*w.MinTileRow];if(void 0!==j&&!xn(j,E)){var T=i.WGS84BoundingBox,A=yr("EPSG:4326").getExtent();if(E=j,T)d=T[0]===A[0]&&T[2]===A[2];else{var P=Tr(j,c.SupportedCRS,"EPSG:4326");d=P[0]-1e-10<=A[0]&&P[2]+1e-10>=A[2]}}var C=Hl(c,E,s),k=[],I=n.requestEncoding;if(I=void 0!==I?I:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var N=t.OperationsMetadata.GetTile.DCP.HTTP.Get,L=0,z=N.length;L Date: Sat, 25 Feb 2023 11:27:07 -0800 Subject: [PATCH 26/36] node module test build for tle.js --- package.nw/lib/adif.js | 1 + package.nw/lib/gt.js | 12 ++++++++++++ package.nw/package.json | 3 +++ 3 files changed, 16 insertions(+) diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js index e32b6e31..f87f075c 100644 --- a/package.nw/lib/adif.js +++ b/package.nw/lib/adif.js @@ -2067,6 +2067,7 @@ function finishSendingReport(record, localMode) } catch (e) { + console.log(e); addLastTraffic( "Exception GridTracker backup" ); diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index ee1b8b9a..a069f257 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -1,6 +1,8 @@ // GridTracker Copyright © 2023 GridTracker.org // All rights reserved. // See LICENSE for more information. + +const tle = require("tle.js"); const pjson = require("./package.json"); var gtVersionStr = pjson.version var gtVersion = parseInt(gtVersionStr.replace(/\./g, "")); @@ -28,6 +30,8 @@ const os = require("os"); const fs = require("fs"); const process = require("process"); const path = require("path"); + + GT.dirSeperator = path.sep; GT.platform = os.platform(); @@ -13216,6 +13220,14 @@ function postInit() devPanel.style.display = "inline-block"; } nodeTimers.setInterval(removeFlightPathsAndDimSquares, 2000); + + const testTle = `ISS (ZARYA) +1 25544U 98067A 17206.18396726 .00001961 00000-0 36771-4 0 9993 +2 25544 51.6400 208.9163 0006317 69.9862 25.2906 15.54225995 67660`; + + const optionalTimestampMS = 1502342329860; + const latLonObj = tle.getLatLngObj(testTle, optionalTimestampMS); + console.log(latLonObj); } document.addEventListener("dragover", function (event) diff --git a/package.nw/package.json b/package.nw/package.json index 9b67f62e..8894124e 100644 --- a/package.nw/package.json +++ b/package.nw/package.json @@ -47,5 +47,8 @@ "diffUpdaters": false, "MUI_FINISHPAGE_RUN": "" } + }, + "dependencies": { + "tle.js": "^4.7.3" } } From 6017494a6ad1b2e77102e5de6fa794af5d7d7953 Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 25 Feb 2023 11:29:10 -0800 Subject: [PATCH 27/36] lint fix --- package.nw/lib/gt.js | 1 - 1 file changed, 1 deletion(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index a069f257..5a955640 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -31,7 +31,6 @@ const fs = require("fs"); const process = require("process"); const path = require("path"); - GT.dirSeperator = path.sep; GT.platform = os.platform(); From 8fab79cbc026c74700727b8b27a347381fec8b79 Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 25 Feb 2023 12:32:45 -0800 Subject: [PATCH 28/36] Remove tlejs test code --- package.nw/lib/gt.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 5a955640..6a724749 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -2,7 +2,7 @@ // All rights reserved. // See LICENSE for more information. -const tle = require("tle.js"); +const tlejs = require("tle.js"); const pjson = require("./package.json"); var gtVersionStr = pjson.version var gtVersion = parseInt(gtVersionStr.replace(/\./g, "")); @@ -13219,14 +13219,6 @@ function postInit() devPanel.style.display = "inline-block"; } nodeTimers.setInterval(removeFlightPathsAndDimSquares, 2000); - - const testTle = `ISS (ZARYA) -1 25544U 98067A 17206.18396726 .00001961 00000-0 36771-4 0 9993 -2 25544 51.6400 208.9163 0006317 69.9862 25.2906 15.54225995 67660`; - - const optionalTimestampMS = 1502342329860; - const latLonObj = tle.getLatLngObj(testTle, optionalTimestampMS); - console.log(latLonObj); } document.addEventListener("dragover", function (event) From 5b2cd39c4e96e31506a870c483a3d8d7d264ca95 Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 25 Feb 2023 12:54:55 -0800 Subject: [PATCH 29/36] minor clean up --- package.nw/lib/third-party.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/package.nw/lib/third-party.js b/package.nw/lib/third-party.js index bad7d5a7..9c57d8dd 100644 --- a/package.nw/lib/third-party.js +++ b/package.nw/lib/third-party.js @@ -304,7 +304,6 @@ function flightFeature(line, opts, layer, canAnimate) { line = new ol.geom.LineString(line); var feature = new ol.Feature({ geometry: line, name: 'flight' }); - feature.setStyle(new ol.style.Style({ stroke: new ol.style.Stroke({ color: opts.color, width: opts.weight, lineDash: dash, lineDashOffset:dashOff}) })); @@ -489,13 +488,9 @@ function sidTime(mjd, lambda) { } -function datetojd(datestring) { - - +function datetojd(datestring) +{ jd = (timeNowSec() /86400.0) + 2440587.5; - - - return jd } From 0a717a664b9f805a7957a804b63faa0e9a9a3d30 Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 25 Feb 2023 13:41:32 -0800 Subject: [PATCH 30/36] Speed improvement Removed unnessecary type comparisons --- package.nw/GridTracker.html | 16 ++++---- package.nw/gt_chat.html | 2 +- package.nw/gt_lookup.html | 2 +- package.nw/lib/adif.js | 10 ++--- package.nw/lib/arc.js | 6 +-- package.nw/lib/gt.js | 41 +++++++++++++++---- package.nw/lib/gtws.js | 4 +- package.nw/lib/roster.js | 10 ++--- .../lib/roster/processRosterFiltering.js | 2 +- package.nw/lib/roster/processRosterHunting.js | 2 +- package.nw/lib/roster/renderRoster.js | 2 +- .../lib/roster/rosterColumnFunctions.js | 4 +- package.nw/lib/shadow.js | 4 +- package.nw/lib/third-party.js | 26 ++++++------ 14 files changed, 77 insertions(+), 54 deletions(-) diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index b95c3796..1268102e 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -2559,7 +2559,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @@ -2583,7 +2583,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @@ -2607,7 +2607,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @@ -2631,7 +2631,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @@ -2655,7 +2655,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @@ -2679,7 +2679,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @@ -2704,7 +2704,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @@ -2970,7 +2970,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index 2375e731..bfd50f3a 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -80,7 +80,7 @@ function handleKey(event) { - if (event.key === "Enter") + if (event.key == "Enter") { // Do work var msg = messageInput.value.replace(/[\n\r]/g, ''); diff --git a/package.nw/gt_lookup.html b/package.nw/gt_lookup.html index 2d8d00f4..2f1c7cad 100644 --- a/package.nw/gt_lookup.html +++ b/package.nw/gt_lookup.html @@ -120,7 +120,7 @@
+ id="lookupCallsignInput" type="text" class="inputTextValue" size="12" onkeyup="if (event.keyCode == 13) lookupButtonID.click();" oninput="ValidateCallsign(this,null);"/>
0) + if (GT.appSettings.gtShareEnable == true && Object.keys(GT.spotCollector).length > 0) { gtChatSendSpots(GT.spotCollector, GT.spotDetailsCollector); GT.spotCollector = {}; @@ -6572,6 +6572,29 @@ GT.spotDetailsCollector = {}; GT.decodeCollector = {}; function handleWsjtxDecode(newMessage) +{ + // eg: "YK7DAQ RR73; 3O5GAS +14" + if (newMessage.Msg.indexOf(" RR73; ") > -1) + { + let parts = newMessage.Msg.split("RR73; "); + // parts[0] is "YK7DAQ " includes space + // parts[1] is "3O5GAS +14" no leading space, a useable message + let caller = parts[1].split(" ")[1]; + // caller is "" + let first = parts[0] + caller + " RR73"; + // first is "YK7DAQ RR73" + finalWsjtxDecode(newMessage, true, parts[1]); + // Send the RR73 last as it's more important to us + finalWsjtxDecode(newMessage, true, first); + } + else + { + // A classic mode 0 decoded messages + finalWsjtxDecode(newMessage); + } +} + +function finalWsjtxDecode(newMessage, isFox = false, foxMessage) { var didAlert = false; var didCustomAlert = false; @@ -6593,7 +6616,7 @@ function handleWsjtxDecode(newMessage) } var theTimeStamp = timeNowSec() - (timeNowSec() % 86400) + parseInt(newMessage.TM / 1000); - var theMessage = newMessage.Msg; + var theMessage = (isFox == true ? foxMessage : newMessage.Msg); // Break up the decoded message var decodeWords = theMessage.split(" ").slice(0, 5); @@ -8430,7 +8453,7 @@ function showDXCCsBox() { var onMousedown = function (e) { - if (e.which === 1) + if (e.which == 1) { if (GT.popupWindowHandle == null) { @@ -12261,7 +12284,7 @@ function getBuffer(file_url, callback, flag, mode, port, cache = null) }) .on("end", function () { - if (typeof callback === "function") + if (typeof callback == "function") { // Call it, since we have confirmed it is callable callback(fileBuffer, flag, cache); @@ -12316,7 +12339,7 @@ function getPostBuffer( }) .on("end", function () { - if (typeof callback === "function") + if (typeof callback == "function") { // Call it, since we have confirmed it is callable callback(fileBuffer, flag, cookies); @@ -12324,7 +12347,7 @@ function getPostBuffer( }) .on("error", function () { - if (typeof errorCallback === "function") + if (typeof errorCallback == "function") { errorCallback(); } @@ -12364,7 +12387,7 @@ function getPostBuffer( function colorToHex(color) { - if (color.substr(0, 1) === "#") + if (color.substr(0, 1) == "#") { return color; } @@ -12797,7 +12820,7 @@ function gotAudioDevices(deviceInfos) for (var i = 0; i !== deviceInfos.length; ++i) { var deviceInfo = deviceInfos[i]; - if (deviceInfo.kind === "audiooutput") + if (deviceInfo.kind == "audiooutput") { var option = document.createElement("option"); option.value = deviceInfo.deviceId; diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index 398bfb5e..ed4f4a4e 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -222,13 +222,13 @@ function sendGtJson(json, isUUIDrequest = false) { if (GT.appSettings.gtShareEnable == true && GT.gtChatSocket != null) { - if (GT.gtChatSocket.readyState === WebSocket.OPEN && (isUUIDrequest || GT.gtUuidValid)) + if (GT.gtChatSocket.readyState == WebSocket.OPEN && (isUUIDrequest || GT.gtUuidValid)) { GT.gtChatSocket.send(json); } else { - if (GT.gtChatSocket.readyState === WebSocket.CLOSED) + if (GT.gtChatSocket.readyState == WebSocket.CLOSED) { GT.gtState = ChatState.closed; } diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index 86c16aaf..2dfe547f 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -1244,7 +1244,7 @@ function getBuffer(file_url, callback, flag, mode, port, cookie) }) .on("end", function () { - if (typeof callback === "function") + if (typeof callback == "function") { // Call it, since we have confirmed it is callable callback(fileBuffer, flag, cookies); @@ -1635,7 +1635,7 @@ function onMyKeyDown(event) function blurOnEnter(ele) { - if (event.key === "Enter") + if (event.key == "Enter") { ele.blur(); } @@ -2471,9 +2471,9 @@ function handleContextMenu(ev) { if (CR.developerMode) { - if ((ev.target.id === "ShowMoreControlsLink") || - (ev.target.id === "ShowFewerControlsLink") || - (ev.target.id === "txrxdec")) + if ((ev.target.id == "ShowMoreControlsLink") || + (ev.target.id == "ShowFewerControlsLink") || + (ev.target.id == "txrxdec")) { // Allow event to bubble up so that NWJS will show the developer menu return true; diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index d40c6210..b0d83109 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -53,7 +53,7 @@ function processRosterFiltering(callRoster, rosterSettings) entry.tx = false; continue; } - if (CR.rosterSettings.noUnknownDXCC && callObj.dxcc === -1) + if (CR.rosterSettings.noUnknownDXCC && callObj.dxcc == -1) { entry.tx = false; continue; diff --git a/package.nw/lib/roster/processRosterHunting.js b/package.nw/lib/roster/processRosterHunting.js index fefbca63..741bf94c 100644 --- a/package.nw/lib/roster/processRosterHunting.js +++ b/package.nw/lib/roster/processRosterHunting.js @@ -15,7 +15,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) const currentYear = new Date().getFullYear(); const currentYearSuffix = `’${currentYear - 2000}`; - const potaEnabled = (window.opener.GT.appSettings.potaEnabled === 1); + const potaEnabled = (window.opener.GT.appSettings.potaEnabled == 1); // TODO: Hunting results might be used to filter, based on the "Callsigns: Only Wanted" option, // so maybe we can move this loop first, and add a check to the filtering loop? diff --git a/package.nw/lib/roster/renderRoster.js b/package.nw/lib/roster/renderRoster.js index 9705751f..7225828a 100644 --- a/package.nw/lib/roster/renderRoster.js +++ b/package.nw/lib/roster/renderRoster.js @@ -43,7 +43,7 @@ function renderRoster(callRoster, rosterSettings) columnOverrides.OAMS = false; } - if (window.opener.GT.appSettings.potaEnabled === 1) + if (window.opener.GT.appSettings.potaEnabled == 1) { huntingMatrixPotaDiv.style.display = ""; } diff --git a/package.nw/lib/roster/rosterColumnFunctions.js b/package.nw/lib/roster/rosterColumnFunctions.js index 58d5b2b6..f75be35c 100644 --- a/package.nw/lib/roster/rosterColumnFunctions.js +++ b/package.nw/lib/roster/rosterColumnFunctions.js @@ -2,7 +2,7 @@ function rosterColumnList(settings = {}, overrides = {}) { return CR.rosterSettings.columnOrder.filter(column => { - return column && (settings[column] || overrides[column]) && !(overrides[column] === false) + return column && (settings[column] || overrides[column]) && !(overrides[column] == false) }) } @@ -53,7 +53,7 @@ function renderRosterTableHTML(tag, attrs) function setRosterSorting(column) { - if (CR.rosterSettings.sortColumn === column) + if (CR.rosterSettings.sortColumn == column) { CR.rosterSettings.sortReverse = !CR.rosterSettings.sortReverse } diff --git a/package.nw/lib/shadow.js b/package.nw/lib/shadow.js index 559b4f3d..6e9f9a97 100644 --- a/package.nw/lib/shadow.js +++ b/package.nw/lib/shadow.js @@ -3,9 +3,9 @@ **/ (function (global, factory) { - typeof exports === "object" && typeof module !== "undefined" + typeof exports == "object" && typeof module !== "undefined" ? (module.exports = factory()) - : typeof define === "function" && define.amd + : typeof define == "function" && define.amd ? define(factory) : (global.GeoJSONTerminator = factory()); })(this, function () diff --git a/package.nw/lib/third-party.js b/package.nw/lib/third-party.js index 9c57d8dd..0670b5c8 100644 --- a/package.nw/lib/third-party.js +++ b/package.nw/lib/third-party.js @@ -23,13 +23,13 @@ function latLonToGridSquare(param1,param2, width = 4){ // other objects with lat/lon properties // properties could be getter functions, numbers, or strings function toNum(x){ - if (typeof(x) === 'number') return x; - if (typeof(x) === 'string') return parseFloat(x); - if (typeof(x) === 'function') return parseFloat(x()); + if (typeof(x) == 'number') return x; + if (typeof(x) == 'string') return parseFloat(x); + if (typeof(x) == 'function') return parseFloat(x()); throw "HamGridSquare -- toNum -- can not convert input: "+x; } - if (typeof(param1)==='object'){ - if (param1.length === 2){ + if (typeof(param1)=='object'){ + if (param1.length == 2){ lat = toNum(param1[0]); lon = toNum(param1[1]); } else if (('lat' in param1) && ('lon' in param1)){ @@ -47,7 +47,7 @@ function latLonToGridSquare(param1,param2, width = 4){ } if (isNaN(lat)) throw "lat is NaN"; if (isNaN(lon)) throw "lon is NaN"; - if (Math.abs(lat) === 90.0) throw "grid g_grids invalid at N/S poles"; + if (Math.abs(lat) == 90.0) throw "grid g_grids invalid at N/S poles"; if (Math.abs(lat) > 90) throw "invalid latitude: "+lat; if (Math.abs(lon) > 180) { @@ -147,7 +147,7 @@ var MyCircle = { }, distance: function(lat1, lon1, lat2, lon2, unit) { - if ( unit === undefined ) unit = 'KM'; + if ( unit == undefined ) unit = 'KM'; var r = this.validateRadius(unit); lat1 *= Math.PI / 180; lon1 *= Math.PI / 180; @@ -178,7 +178,7 @@ var MyCircle = { }, destination: function(lat1, lon1, brng, dt, unit) { - if ( unit === undefined ) unit = 'KM'; + if ( unit == undefined ) unit = 'KM'; var r = this.validateRadius(unit); lat1 *= Math.PI / 180; lon1 *= Math.PI / 180; @@ -527,7 +527,7 @@ function convert(ra, dec, lmst,lat) { } function isMergeableObject(val) { - var nonNullObject = val && typeof val === 'object' + var nonNullObject = val && typeof val == 'object' return nonNullObject && Object.prototype.toString.call(val) !== '[object RegExp]' @@ -539,18 +539,18 @@ function emptyTarget(val) { } function cloneIfNecessary(value, optionsArgument) { - var clone = optionsArgument && optionsArgument.clone === true + var clone = optionsArgument && optionsArgument.clone == true return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value } function defaultArrayMerge(target, source, optionsArgument) { var destination = target.slice() source.forEach(function(e, i) { - if (typeof destination[i] === 'undefined') { + if (typeof destination[i] == 'undefined') { destination[i] = cloneIfNecessary(e, optionsArgument) } else if (isMergeableObject(e)) { destination[i] = deepmerge(target[i], e, optionsArgument) - } else if (target.indexOf(e) === -1) { + } else if (target.indexOf(e) == -1) { destination.push(cloneIfNecessary(e, optionsArgument)) } }) @@ -600,7 +600,7 @@ deepmerge.all = function deepmergeAll(array, optionsArgument) { // https://stackoverflow.com/questions/3942878/how-to-decide-font-color-in-white-or-black-depending-on-background-color function pickTextColorBasedOnBgColorAdvanced(bgColor, lightColor, darkColor) { - var color = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor; + var color = (bgColor.charAt(0) == '#') ? bgColor.substring(1, 7) : bgColor; var r = parseInt(color.substring(0, 2), 16); // hexToR var g = parseInt(color.substring(2, 4), 16); // hexToG var b = parseInt(color.substring(4, 6), 16); // hexToB From 1e906b9866cc5ef7b1be891a8ef6b217a04e4d4c Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 19 Mar 2023 00:15:25 -0700 Subject: [PATCH 31/36] No longer report POTA RBN, fixed pota spot expiration --- package.nw/lib/pota.js | 8 +++++--- package.nw/lib/roster/renderRoster.js | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/package.nw/lib/pota.js b/package.nw/lib/pota.js index 00fd619c..525a0d59 100644 --- a/package.nw/lib/pota.js +++ b/package.nw/lib/pota.js @@ -137,7 +137,7 @@ function makeParkFeatures() for (const call in GT.pota.parkSpots[park]) { var report = GT.pota.parkSpots[park][call]; - if (parkObj.feature == null && validateMapBandAndMode(report.band, report.mode)) + if (parkObj.feature == null && validateMapBandAndMode(report.band, report.mode) && Date.now() < report.expire) { parkObj.feature = iconFeature(ol.proj.fromLonLat([Number(GT.pota.parks[park].longitude), Number(GT.pota.parks[park].latitude)]), GT.gtParkIconActive, 1); parkObj.feature.key = park; @@ -205,7 +205,7 @@ function potaSpotFromDecode(callObj) if (!(hash in GT.pota.rbnReportTimes) || Date.now() > GT.pota.rbnReportTimes[hash]) { GT.pota.rbnReportTimes[hash] = Date.now() + GT.pota.rbnFrequency; - reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); + // reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); } } else @@ -434,12 +434,14 @@ function processPotaSpots(buffer) GT.pota.parkSpots = {}; for (const spot in spots) { + console.log(spots[spot]); if (spots[spot].reference in GT.pota.parks) { var newSpot = fillObjectFromTemplate(GT.potaSpotTemplate, spots[spot]); newSpot.spotTime = Date.parse(newSpot.spotTime + "Z"); newSpot.frequency = parseInt(newSpot.frequency) / 1000; - newSpot.expire = newSpot.spotTime + (Number(newSpot.expire) * 1000); + + newSpot.expire = Date.now() + (Number(newSpot.expire) * 1000); newSpot.band = formatBand(newSpot.frequency); if (newSpot.spotter == newSpot.activator && newSpot.comments.match(/qrt/gi)) { diff --git a/package.nw/lib/roster/renderRoster.js b/package.nw/lib/roster/renderRoster.js index 7225828a..989cb645 100644 --- a/package.nw/lib/roster/renderRoster.js +++ b/package.nw/lib/roster/renderRoster.js @@ -70,7 +70,7 @@ function renderRoster(callRoster, rosterSettings) // let visibleCallList = callRoster.filter(entry => entry.tx); let visibleCallList = []; - for (entry in callRoster) + for (const entry in callRoster) { // entry should populate in general if (callRoster[entry].tx) @@ -123,7 +123,7 @@ function renderRoster(callRoster, rosterSettings) let worker = CR.rosterSettings.compact ? renderCompactRosterHeaders() : renderNormalRosterHeaders(rosterColumns); // Third loop: render all rows - for (let x in visibleCallList) + for (const x in visibleCallList) { let callObj = visibleCallList[x].callObj; From b53fd22a0d381aac6fe89da90dae9383d471c041 Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 19 Mar 2023 00:21:18 -0700 Subject: [PATCH 32/36] Global fix for pskColors --- package.nw/lib/gt.js | 68 +++++++++++++++++++++--------------------- package.nw/lib/pota.js | 1 - 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 6221553f..f566ec47 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -545,40 +545,40 @@ GT.stateToCounty = {}; GT.cntyToCounty = {}; GT.us48Data = {}; -var g_pskColors = {}; -g_pskColors.OOB = "888888"; -g_pskColors["4000m"] = "45E0FF"; -g_pskColors["2200m"] = "FF4500"; -g_pskColors["630m"] = "1E90FF"; -g_pskColors["160m"] = "7CFC00"; -g_pskColors["80m"] = "E550E5"; -g_pskColors["60m"] = "0000FF"; -g_pskColors["40m"] = "4949FF"; -g_pskColors["30m"] = "62FF62"; -g_pskColors["20m"] = "FFC40C"; -g_pskColors["17m"] = "F2F261"; -g_pskColors["15m"] = "CCA166"; -g_pskColors["12m"] = "B22222"; -g_pskColors["11m"] = "00FF00"; -g_pskColors["10m"] = "FF69B4"; -g_pskColors["8m"] = "8b00fb"; -g_pskColors["6m"] = "FF0000"; -g_pskColors["4m"] = "df0040"; -g_pskColors["2m"] = "FF1493"; -g_pskColors["1.25m"] = "beff00"; -g_pskColors["70cm"] = "999900"; -g_pskColors["33cm"] = "ff8c90"; -g_pskColors["23cm"] = "5AB8C7"; -g_pskColors["13cm"] = "ff7540"; -g_pskColors["9cm"] = "b77ac7"; -g_pskColors["5cm"] = "b77ac7"; -g_pskColors["3cm"] = "696969"; -g_pskColors["1.2cm"] = "b77ac7"; -g_pskColors["6mm"] = "b77ac7"; -g_pskColors["4mm"] = "b77ac7"; -g_pskColors["2.5mm"] = "b77ac7"; -g_pskColors["2mm"] = "b77ac7"; -g_pskColors["1mm"] = "b77ac7"; +GT.pskColors = {}; +GT.pskColors.OOB = "888888"; +GT.pskColors["4000m"] = "45E0FF"; +GT.pskColors["2200m"] = "FF4500"; +GT.pskColors["630m"] = "1E90FF"; +GT.pskColors["160m"] = "7CFC00"; +GT.pskColors["80m"] = "E550E5"; +GT.pskColors["60m"] = "0000FF"; +GT.pskColors["40m"] = "4949FF"; +GT.pskColors["30m"] = "62FF62"; +GT.pskColors["20m"] = "FFC40C"; +GT.pskColors["17m"] = "F2F261"; +GT.pskColors["15m"] = "CCA166"; +GT.pskColors["12m"] = "B22222"; +GT.pskColors["11m"] = "00FF00"; +GT.pskColors["10m"] = "FF69B4"; +GT.pskColors["8m"] = "8b00fb"; +GT.pskColors["6m"] = "FF0000"; +GT.pskColors["4m"] = "df0040"; +GT.pskColors["2m"] = "FF1493"; +GT.pskColors["1.25m"] = "beff00"; +GT.pskColors["70cm"] = "999900"; +GT.pskColors["33cm"] = "ff8c90"; +GT.pskColors["23cm"] = "5AB8C7"; +GT.pskColors["13cm"] = "ff7540"; +GT.pskColors["9cm"] = "b77ac7"; +GT.pskColors["5cm"] = "b77ac7"; +GT.pskColors["3cm"] = "696969"; +GT.pskColors["1.2cm"] = "b77ac7"; +GT.pskColors["6mm"] = "b77ac7"; +GT.pskColors["4mm"] = "b77ac7"; +GT.pskColors["2.5mm"] = "b77ac7"; +GT.pskColors["2mm"] = "b77ac7"; +GT.pskColors["1mm"] = "b77ac7"; GT.bandToColor = {}; GT.colorLeafletPins = {}; diff --git a/package.nw/lib/pota.js b/package.nw/lib/pota.js index 525a0d59..6461f690 100644 --- a/package.nw/lib/pota.js +++ b/package.nw/lib/pota.js @@ -434,7 +434,6 @@ function processPotaSpots(buffer) GT.pota.parkSpots = {}; for (const spot in spots) { - console.log(spots[spot]); if (spots[spot].reference in GT.pota.parks) { var newSpot = fillObjectFromTemplate(GT.potaSpotTemplate, spots[spot]); From eb3c20eeb1f3c299c4f5cb161e9d0c6999ab9bc7 Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 19 Mar 2023 12:54:05 -0700 Subject: [PATCH 33/36] test candidate --- debian/changelog | 15 ++++++++++++++ gridtracker.spec | 13 ++++++++++++ package.nw/gt_update.odt | Bin 98021 -> 79388 bytes package.nw/gt_update.pdf | Bin 78587 -> 70738 bytes package.nw/lib/pota.js | 6 +++--- .../lib/roster/processRosterFiltering.js | 19 +++++++++++++++--- package.nw/lib/roster/processRosterHunting.js | 13 ------------ package.nw/package.json | 2 +- 8 files changed, 48 insertions(+), 20 deletions(-) diff --git a/debian/changelog b/debian/changelog index 77ba6cb6..ddb883ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +gridtracker (1.23.0319) unstable; urgency=low + - POTA – fixed disappearing parks, removed auto RBNs + - Pin mode – added missing band pins + - Call Roster – fixed “Spotted Me” exception + - Call Roster – “Uses LoTW” “Uses eQSL” “Uses OQRS” now inclusive + - Loggers – added HamZone.cn service + - OAMS – band activity sums neighboring grids correctly + - Logbook – “Working Date” now accepts time of day + - Visual Alerts – in own movable window + - Map – upgraded to OpenLayers 6.15.1, Heatmap now world-wraps + - Mac – “Full Stop” no longer spoken at startup + - Satellite – framework started for satellite tracking + - BIGCTY – update 0204 +-- Tag Loomis Sun, 19 Mar 2023 00:00:00 -0000 + gridtracker (1.23.0206) unstable; urgency=low - Bugfix for Turkey zone 1 decodes - Heatmap part of “Spots” button, Hotkey H removed diff --git a/gridtracker.spec b/gridtracker.spec index 238c874d..516e6d00 100644 --- a/gridtracker.spec +++ b/gridtracker.spec @@ -40,6 +40,19 @@ DESTDIR=${RPM_BUILD_ROOT} make clean %license %{_docdir}/%{name}/ %changelog +* Sun Mar 19 2023 Tag Loomis - 1.23.0319-1 + - POTA – fixed disappearing parks, removed auto RBNs + - Pin mode – added missing band pins + - Call Roster – fixed “Spotted Me” exception + - Call Roster – “Uses LoTW” “Uses eQSL” “Uses OQRS” now inclusive + - Loggers – added HamZone.cn service + - OAMS – band activity sums neighboring grids correctly + - Logbook – “Working Date” now accepts time of day + - Visual Alerts – in own movable window + - Map – upgraded to OpenLayers 6.15.1, Heatmap now world-wraps + - Mac – “Full Stop” no longer spoken at startup + - Satellite – framework started for satellite tracking + - BIGCTY – update 0204 * Mon Feb 06 2023 Tag Loomis - 1.23.0206-1 - Removed lightning strike detection - Bugfix for Turkey zone 1 decodes diff --git a/package.nw/gt_update.odt b/package.nw/gt_update.odt index ec78488b2597999b13f1cbae2f6be5bc91bcbc0f..9c28e09c788579a027f28068ef45cec5d4ffcb71 100644 GIT binary patch delta 27101 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"!-Xvfq#1Mv>RDi4pBg}nd1 z5j1-6IL@f@7JhzrqP+{9Rrv4?$?5Jj829K{deTMM$ZZ9UPjUzDI;%l+0vO_Uh`wQS z5Xie~U7e<1@HBfhC6^$sYkp(1q~XwVFIw@DsKm9XrM>N2Lp<0+b{XoNQPXD{UCiadB)id9gBV3p@3CIfClI^p#9KA$V?b55u z$->#$fp@;8){?#ITX8fyuVyM3N;%#Q-2=^4*ZAM10JRsMRBmo79i`1CYY^*|450Qo zy#4fO-f^y@L-lMq3ajII&A29a`R=hfX~kqrr>pyBb|W-T$R|qNk=6NOIK%iHet&es zZquAC+_o#63pMn-=?9v=&v5NM;wk!yLl+}H@J6lb_a^GPLHm=^YxgoUPbc7x#R%%P zGVjIxp!P6YSzA(ZbiM`SY!)si2tPf$GE+|7#8cksHQRr*7MI#cr*dYIZ0kQ$R;m(* zN2iN>CRt~Y*XMihCc6*Qj4nDbt1O}lE0({VGKLjt zR0Km5ahn}>`hN;^F=4RMi8xZ0-ra}Wfhd#>9kZP0TG;G|%g+Vo3ybe3%~!k)n+xF3 z=nGAvuIc;pT>rWXmWRXU3J06zR`X< z=S3U+UHqhPqRT|PiM8YAA;}xH^Ns}?xIP5bttp~h@!h){+UIMms_-Qtx|lQ8e%lb8 zTM0S!C805?^4G zkpJWyN_*-e{YSFn_YWga4Q2jF{`83V|3{B5e`Eo?-`xHG&FY_q9DvNK{af_!%QkL;{iN{s_QN0s%@V zBqTLQD>ZX_?*BQ-UA1pKixnyEUW$8hFYd*i;!xZrxVyW%yB06*?(Xgm&-3x#``x>KNmkbE zWX{Z*%p_-a_MBv#LGQoAAS*~iL1RKdz(YVJlZwS6OF?}k@#T=Du^w3efw3c`v5n~e zjadJa#6hzEmkAdn_y5h0PlEg}gO5_2|7}4U5Bmx8e<1&V!}?#Jcp-t03REHfAKT{- z?BM8TW$eJ~h3>Uk&BQj;S!=w!ZoZm6pi6(V6fhHz_ z@%e>*gF-54O$ru~u0{^ZcbvO|mPqxh4d`mO^>;WqTHMVEr4&)pw4chiNwZ&nMZutF zVl#|);OQEb*fnc5;fy7VgR&Ge?xZ(FTkufoqT-6uLbP#LU8%L)R&r0SkViLu#APM$ zD3f_#lM4t%k(zJkS|Fs`@eL=_rB9BoeZQFgk!^WQhdc5^%1y&a?6Jc1Zp`d{C5XSttsg4}y?LI{b8JSNp=k_-fbLq$gOZKF%0^sipECuAn z0J3w|q`W&$Pub7y^NP&@*tr)Ne&=iYuqO2VzokBuCAt&*KNdw5=zGT;SMS;GpwP1a zxX02NMVdcEuL6l>CQSG`=Om^T>8#b zh&cdBg%*|OTf5`Aff~IKOsW0?N#=g2)UwE&N+A>9Pb4p=oqx@;;IFK0*pB~Nl7TVh zn6;@ZJ;LtIA)BXUlWQ0?`+tD~J87c=FgUBWtA*hz1#f)(UU>?uvhJG?mOc)h9l3AR z@WYJB_LGBTMbu{rNBz?1L;0+6sxLvYdLcu$fj{Y75okh+4c8l2$8$LoVhK3MtZ_RW ziU=YA<-oa*@z-X{?wV$pIw}1*_`)B6|Ag#LQbbmhW2 zrPTRD0=ysW6R?OsUZd})F$*vptC`8iX{K@nmFM-qOmAz(4!JL?NNIbH3R3$8qN(*M zEg3X;M@y}22{RAayL z#Po|{&+nDnT_VFMc-B{ib;@bxirsA&d~v^Q*nwQ*FS6AEa}w8nCI0-aCxXDJt=Sap zB6i^R9(kP^ix6KQk~G4F&_8Ep@5;;UmkK4c`%{bO@{V%53k3~UPa&^4vVaC8GYr;x zGuA}0j)o_9etFZtS^#2Dfb1;Hgwcb-lr7yS!>mYNJLt+Tz+w90{_e08i6yHeRdBIZ zV8({_ZWG?8i!EaLxb9Wu2fq z_utNtxB7jrhJPl#(M5d}CWYJBcNq?81xOf=|Vuc^%Q^Z{#8OG^*3%|6F*S{oT>^ zVR7n~R&mIq0aeE_``h~B!(v4)zOf^oeJz2(=1dAm2Fp9%i;)I@RTDj7m68h|=zwed zw8tQ9KamLHAHX?#L*C$LCSbPIf0AB2;u%T$=Hh_!Pzy)v)mU=>Z2F6D?%*MSJfy59wc&AO2j{%TPvb5CeKsfshu3SSQ(TF zbGRE!zrJGcQJ2}VK=hOqtyT1JKUMgs*0jn*&YiSJ?Qid@-t^NHk&TF_$=FY`4}1Pm z_^za83!Srt((jx>w#prNUoUFULLlL?I5Xh@QaQF)X&>o@RlAJ)CIE_K>Jz09c%{e% z_~M83%DH#pZ0U2=8Y<;^K`<}3l6G9efLC~zSf1o~*;G|d(MY`sJ9T5w>WPvEBlBHb zNMj8H9&fhCXJK_59{y0@f`HXcFO>D2%dmd%Ai)}2;XOmS{11XRT) z)A`1sw-XbXbFDdjC%bT1@yB6M&$v~ulvJ5`b@eufc}(l}rET!olJsuUZSA|{MosK# zgKM2Pmr$rNPmJ?Wl_GwpTPP7a_8cMj0_h88#E+6cQ03Q8lRN?-I0b1qcs|8FbH)!c zLqrP!@!!-29v=Qb)aJivM?4e~79d|A&xG0k==~XXT^JOjG^DUGVV9fF%Ky_PlMR7Q z3WG|Lc+$our{ICFJ%;cQgz~tSKE=zM9keH@SsbxZNE2*M#?C2x?49iG;hFvGSmd>c zS*N(Ap!e!l(jq&vz*Mrv;wNLFj(bxY-a$fsT4q6hmNKgpA^lxak#znqX22wwsDt<$ zME$n#-oOKdh(z~3-^`@{Ojp$#o9wd+9bMTe9^HJ%XYc)idO|EITN1b*hjtMA@S@IH zhrrL2|%v7glOxvtUIlGfD5~DNhW^%a_6fT#o4=Ok_8tVv?DgXIV3(s8-V)aQ{cLDeonXqPY1&S@ z%jK+^;gs?|lS?uMQ|_drRFQ%n+V8q_1rGa=CcbCUwV4JBnXF|rZkiWvYhx*9s)M7= zP#mI4@_rH8NO;cEozmk+*9wyH;eO9+DIF@iF=Dc1w5I!7P_>Z8!JQs8BF)J{#N8oo zr~dQv3hdt&_^l23MG)kFhFn?(>1`Ae0-_G;|1;$AAY?M&$CnQ}X?uOKwHg-?mifsF z9o>qi+s=C9pA3|yWx+Q|qp?k!W)l)!hA606d4|bCt&`E?*~;zN!$VO*K3}JqqtTJ$ z_V^LBqoIFF@{Hdf^B=B*M-I!o_)~{P#TBAu6DV`uYoRW$(Od$mE!8G%^i)~OPsO>8 zPc$jEPWa1!bj-V(#+T9JQy~qz{*=*?vDXIO${ECGjLV2j)k!%yhO%eyXmNJpTy**2 z;q7z#vzzO~-R@xYysgW#+3!11xy`nkw_{I(eloq3gTMBT4Sn{nYT03GHv)q*BEn5S zXc^+`Mn7LvfhY_*>okp5J;1;r9RFqwi8xgy-Q^P?7Uq&LJv%Z#Tzpa#(j0!?`_Ey> zE2cKv`m5)4uCupu%2hQhe1@AiO+QMSz81AK1@&w=D;XinnvURMGmahn4 za~T$4#nWjH)&*i{37uM|R2$qxN_W0e#ACPsErt&BF(Y%04)f%ukiWG&3*L3b*4%&K zKa-)_t?s}C6#{S)aJ|xfB(LQW+Xg|4I<#a!R6nO<0Bn#e^kir7J&=cFxS%2$F2IPS z#n2hBt<#M7dlLjv7t(wi^(JgGjQb)FFR_Ui%{;^5%(p#SV@Lcw6wad=*IO*M6r?*K z%M!#D^rY#^jD>=NzA#cDR!nC+y_q|FChpUrV~A~jk;J^akt2`SUa6( zx6629boi4cYzy46X|u4YFgpSU?idHAJX0F!gazrZXCAU^y#!oDC!I015-fY5dxi;3 zs!{ah#ivlygE>$$l6<1+(_oTB-`fh$#E_N1jh(W5bAlbg9!IdM6bOx?)X;bN%kk|>IehS`dt3Cx_EHSgPKmxE;>|pzYo}5UN@1l)LgiLEu7ju}Nn>ANAHH?IMu>^w=f8wa*^WBn^HotrzYF7qE)g}-nfzb=ZAa=Hh+~VRmQrYY9Y;PfP3aOEW$pDzhz>R; z6R)4X{+$A?PYSEIq7{~aC~x;?Q#R>o^KYpfYh_MaQCh@w{1&wnfh-fOzum>VM6WO^ zdZa+3!Ddow7?l(URSdx*Tn+263Vi2DnQP*^au6`O-6Veg~zF7g=RFdz0w76n| z&+x&qO}q#OIM`2tpIl6<49Hmew-JRiFn2m5N+^vjS6lF!Nd6Z0eF;;O#FkDZ5?3t( z{o;G&;VD6g7cyZ_L0#Nsx+sPcdDPS;uwd_{hncLvr)9a~$mqVBLywybRv|~s!^zyE zzAgBIhSMsw=z?BD-hhs8MB;$+X~Q7QIg9*@|g1X9nP*{TI26a1&ZoU zjwoK_BFtX(c6aKZFJ)+S=w!ML-E|*%D6yJmLnsVK=;`32a-VH>I^aCJ!E~-Tz?o?yIfwVK<&ksL*=~9tcbOqek zxlN@e+jAeFW)m+8LH`T!(fElpG8N@No0lVm6x=|F@%^w(FFpG$hL~dVyeZul4xjt! zLUoeXyHRaKfrWd}h3WZY&F6DaI0c6AX2|LzSya=ptl z;9N!SB}?`YV)LASIzCBsT6%iFuI@bOByKqy+Wo^~5?iND^zBK&cO#aUrIHaZG$e{E z(U&*uC}o&@pXfS8OrtuV>^?T@dq>}M_<%&|Q^|ZUN>JW#f6acw>MOlNrsC`06PZPp z22YeRAj+uBPpF0I*a=7U^2WS)*4$xbT6yK&yQ@%(RcUhkctj1yP=$(rnF?z{DBH2f zJN`Xc=h^TJq3Rp?l!j!Z(7}_JS69Mz?U!+!1GFWv+10uvM8L_Y=<@$^6r0v(m~DJu z`RZ$!CwNgs>0*9#@XyTG6NOE=*n+KewwAi3Gj22l!BZC04 zX283U#z=P)#H6+0U%y0Ac64L!tRMI;wqivb!DqY{t!p1HkPR} zB=(G-+%DHBWQ64EoP=#z})~3PgZ4fvR_Uilxe8_&_K;jXJ{9L4-a*K>hQ( zp_)}~5Z$MDKdAUw!4a4+E(HdCSK(a7m#~GGQh9S6BvAzxw*@6@2#<02<~ARjC4lkH zTA0C{LR$SPZa~}nR}M4hLOol2SY-3|F`bWD5#Ne?XVQ_<1_zQiBu+<0B-~#lX2i%_ zAtr5U*d#k^$=No8xMmqwwmeGK-}Fp^r&JZikLGz?u5;aucT=rsM_t%OuhSFDvc;jL zIU+*4iVF~&OoI#9NyknI8@>6xmcVbQ!^{etH3AG;{kW$$_!(7`NOdLxU-&cU*KpVk zF+F`q(O~_tEmx*^*1oqmiLXzr(!yb|@v^NDYKOB57X8hi!`17_4!0|Yrj8~8HOAIO zKe<6nn_1veT*rvy6^VXgm<})^Qsz{s5#Gy#D5Io+1YVkuHu|hrL+9T%*Z>_#Xi@|| z-HX)d?&VMAG4xKTZNZs_quOkvY)mIUZI?lxFv5Qf>Klmfeb?6f;%%-X`mV%dGDh02 zD+;g^IA+-?MA$hg*jC@QfGY-h7L7DM)s_qj$0;dBuWQZkri2-M(FhwP=_Ikhyg+VI zN-=0oKL`2xTbt16u(zoqAOrNFaf5jAiu<%oXBQ$+LGSuL(;ggGKXV8D+gY#H;-o9z zYG&WrzB7shkCN$hv=v`1G5W)uvHqRWo;bgMeZ{wLO*n|pZES;UM=%^sn9p^7LTdDY zY4ku&0chz66Ik+yLAHEqQe*sp;FQC40k@RVJ z3_J{YosB^J5aSj_CgID`T+4@4vYGl}CBQ+#mn`UlNKw6h&rvx3ZG89Bj03V$v!GPR z`0TC3q}WhU zp5;+PB!T;%YILxG#&g|j4^F2M!X5`0Gj`}#F2wF^y_yN<#K{B-q&>2p)c2zf!*$b| zC11WJh2c8XHiq-{dU6BP_P7I9Vdv18hy!oZ-|d?Ftil(+be+D#FIT}oN5qW4FJCs` zuKL6z9PpFwSx^q;B;dDyeP+lGWa`_MhobwD_q3~ODclDQ3|Mc{G;6umJy`VLd#ko4 zLN`X8H-0AsZ(@g5wUl{KO`jZi=ux!U+uB}IoIJnxh{PR9!Mt}$Hb}R3zQ$0rDM@vD zg%WWPzPru~O&+_v6jC+?V@0Z-lr%H;PZ-6lN-bYu?KOo5+-^%a7V5UB=G9a=GIt%H z3VcT&Yeqo?_-jv~;+n~uwTAoDPJFX}*}7zc*1{xC&#n1`C2Uy1tzTmoRv$cJV>c{5 zIesUrY`%O}iRJ%HtYITk@1giHBCo0e>Ncp#U&zu5E;mX3acjsKP{m+jw5gWZbec&J z!EPW^%y##2u5aPv{mGHg$UHRWELJIeA6$bXx^iR&LeR5@U|9G|g$uvU!TT@~Br5P{ z$o#qgmfa}$trodmewBTL->&h6OJW_Dr^;wCt#$)8XYD)Y?>~4fm1}bu-^DQIwwiS9 zb*3rQh!>Zx*an>^Ewn4MJTGm(Ql=bv=(>Oz79YP+-qSB6^Ya2Or{&2|8&A?Jc&rQ3 zu~H^?0Guv;*Vf!9o79a$dN1H)Qh}XhGv@hy@+kak#>sA3w~hmgtKCCzMqxtRTWD6y zv&FtKdavua^K6#DFl$d019D}G^zX3fYxA5$)gEEqc7nPJ<9}jTS-a&spZV+-(EWr> zJrTC1F}a%khJthOTE}+KP|#@J{n(;hNc7u70h%BqydX~t76?4kej>glikK%QDZ~J= z@KIgsj4nN+MtWK6GZSz(FI1yc9B~oDjIG%q;L|fW*8lJe>BuEuLf#JBHfPfQ5Slc- zhH3tp1VN-I#QfhYS4%6M-%cUbYxyjw+$}VDEC7o#2b};@Z{??NBjXukTB>)AA{B%Y za3wVEsKT1-ef{Cf2T{T4MwQ)~kbg$CO*I>63RIu8)sxBs9U;bF)^PP0)j7`4CAphA zj~!I_Zz~{|;GGp6r)XqQl1Z3|uoa;B*#kQ{)*#Tw;1_Hf(x!c8nwIA@aHA5a8i^$PW4GWbtwOXP1mWqh`LT>s^J{Vtwf744`7cN}G+7 ze@MHXUra4VhPoKPK|K4T8YIstdGQ_b)ObOV=|!&Sz6z5m?tOf2eCDyJdV`JJ%{M}X zyWTbLE>%6O5J?JFbTin1EYZykN6MhQr>bso&4%;yf=)Bx9{z1*M&+Q}S0oGr+Qq`& zMM^ql%lk7`ifMtdC9g4>Ra+!~vUP@i3<|q6^BpK#NRfMXuf$L_nt14)xO=cmg8n_7s zD8hwDC%nN-lXe!jV!Jby;tP%_kHk=qTYJX@?wlVloDckF1lgi{(7Z&_&~73fKJm(L z_A1aQCI*5Q_go404>P-HuJaR`+DAw# z_QIucFMW;EZLG?i(^<60AQ@Ffs-c4nan`yGB*6{IGf4N}cBvE)JBlO-Ewtj4i`j9GL)mtH6V|dXR{0l^5zP#H&lOnc-Y!Uv}Ag7h2^F#P|@Yo`%P9RFe z9B$Y1nV^Z}OA9lw1m)IEU?4%3lIkxGjmzXWokD}+e^KyroW9x^Dv79;Plyq^3#jZ)+d6Dc+w;gC zb2a4Gfi{sD9)136#`>bu@mq%Mss}@+)fEUPFH-H7U_SY@#H_ePUVDxC zrE3jM=n^7Hfseqy`DGjRT%e10mHg=rhXR?Yep#N>ax3g805+F{xh-@0P4=%%o9Ejy z$<~qs{O`XBnsCNs^1*W4shHO zg(_@m*%WX0v;`uiYQH%)-0u%b2Ad(%u_pCmT|}iO)W|N!iX#nT2Ech+Lr+Y!$S)b&%M1JwtwQ(p z@s0)%qGUx1cmVn@C`x5ljRZDC6ur~Tgg|El`V0UOdO zE$SL}KF)14OcE;JQSYCg5?<)Jtd+?$IT&g%7=jIQkqHRnbLk2aO}Y5cyi52-4@8=@ z5MvS&`4NW(pE)5~_Qz$YR<}kdqQ-;wNRiC*i;gK$z)IAQ_z}1gUd7HjTr{rLu0cOswm6W79cg$SN(a8epHg{^98ggX%1V@Sz#Vo{v zBEz$#G3$$8=nW1btmvO^>$~Ux39n<){M>+co?FEIJDkagJN1^iuP{L)& ztj>DEDYvhwPc0UH>RCfJ>Cs@$Qu7_{(QLVEwis_>38$v0Z20o^W*gmq1@PC4?j!e< zz-QzpTs{8bRjl@~w>VSZQj?2U{T)U~_&O*xL+H|B(Wbt8l2Ju4Jl(J;WneYqRrMQw z;*y`(Uzs3p+e-2W!;KWGg!VM*Rf~T0{ZHvS>*D9Jmo37uols+z8s`=lHq{~3&2-1Q zbnA@}h@Ui>sJ(yLLvg#1OoRVlUis$2d)M`d=?+$1m9oaVB$n}aUMU^ewu9s8@w)_}n8{MDEAzdjy zQ=(NQSO`qLsr2-ny#XWH&HLlC7rud)&dh#{EkUAR>Yp9C_pirPQbG3s{*3$5E?ow8 zQ|A30oHTV11TU5mhsVG(PTcgu!Lx32b=8DL7B>UqNa?t#P>d_OqV+_4g*J5~4@SJj z*IG@@z)H2W13h6{AAwyY{aImMU2hTYJ+^`tb{>Cvc?yk0E5OYkjc~^xd+DHATlg`5PnZ)ucyN-R^V&zw3^KT=(QHeTkYqGY) z=EvBXKTn=E|FhOLV@P84iVgv>5&1uBUH><7OEqEVHC8zs0^&ah&WEz5V&-IR_{Sib zogES_zLxA8@EHyP5%)V5B|AOtXA&F|Rtg+8W;Oz5aYk+lZb4oyF(p0)6LA&-i64yO z{KCJ)f0!!pDk&(bYME*q=x7?-n`x>T=o&Z}Ynqvw8e2G9+gn@OySZ5y+x>BHv$t?_ zbHk&}Cc%kj_@2hVUBD?;Cdr*DNBAzqFsnrN{)c;BhE6y`S*1eTK1kiT!9=Uf(k5$au1cNWuR04aU-x)7a(rs%pd`3uv9Ux zAbV|JYoicn(;!dhIB$zsZ~ORma#B(sZ{JXthAOL=YOh9riGgUhi6e)w+!W5jR=SiR zr{Wl|_;+#}ASfa+A|^64Eh|H~s$Zbl=FHb6I$*611i3%u5 z4lYWMug?f+%#JOM>ufGgC@C%}u575NDKD*WYpf`&t7>emFKuaQiHIIauN};&+bv5S zC{H`9Dj6v)TP$uFD(jqSDIRXDns5Bu|M%~DRm*-DFqN1vQ<1bC-!RnDG%)vf>TsYg zeWa*hsHM37Z{tj7>FnRe!;r+|q^h%=u(S4%!gH{r&&O7e;1Ahi6yj z$NtR^14}Ej!%Is`1A}`*O9#Vice7*r)1x(l#_lZThvv;EtPo0q#25D4_~(1F2V z#r-%D2#63ANl_sc*Ol{kL|1%`BqDegJ(*BICKiboio!>|eRX|b?zgy{{DrsU{KXQ+ zRWcEJfyoMwb9C(Pw@W{sEZoNxt*XkCrk2|GJuK9UNC2KFk(EvC-m=PqAPM8gibCS(Y-Lu&B&@RxKyU`W>=Imhac`IPX z2e$Li1wH9s0k?yRaF=r@^4?vo`tKW=!;1Wi_=dzMP@h4%DU)t6)l7DPi?GeL@3PxB zm~07M5fb3$c4YxdJ;_DH|-JbFDsXw-_blyA8`ma--df0Rl+wO z3Zg1)|D0&%lTthKQ$=j9pVE(_j*Kq(ts{qGZA+HU&CH_rG5Sa269-onkJD?3d?5ed z(k{{m*pNv3RlvP~MHKM7`8@1V>n8AQtvT5FuzS#KiUiRr=~~oCxkgsa_q?Zk4v{qo z*`}$rlSxnSebvz5iQRK#<=>M;oj*16g411yRX9^O<5p&j=-_He(1s+{34$IkGWF!t zQvIaSNcj+f0XX5#80?3m4m^Ob1^BSM-!Fmq@i5@+@oH2J3@jRLgWI(_nmOkL3~Sh@ zyDze^)<#(62N$)P^nG5y~4>fuMFy* zwPo!$fgP`+;dlQVM2v>^GV|DS^Uvjalr=G{aNQd6X`H_=Q=)NGI$so|lT20@-=T2sqYXkls= zX%Z>>(NoJeeWQ<07@6Prh6Znsfhh2P%% z@cgQ$+`g>jPc17f;D`hZ4Gm-iIOQ^Y`T&v7$))3lrDEEn6TG^oEORqc$ASU8^tr}w zZ5v8Q9xo5d6O8;gT@(6d69HiAbS&WV>Q(Rk!9`t=4z#GI`&^9r35vGM1p;060`TgyF%USt1Fy&{jG$2wk_!OVzqiY6YtCmRnw{fv+DGwK9<}zVIyAz9 zK{0ssnNR<%ix?@$dGb1>TLHAA_K^p>%CH3M*R{ld^Bug0gV`c?zJPZbr{+fDezq!H z?Kx>rwVAHJuzosD)ZyGGv8{e`?Na%8@Pz#(Li`Opg9J_~DFJS>CBdsY+j`(<0QfDi z2zsLhbv3=llujf0%kz7mtzyV;h=lT^wR85Aa`Y_O!%w@1v$#VCJ=^)Z4!A(}J;Ffe zKQMOo_JaS_JO%54u;*znW+KI*sD&z3EomBggi04SzD5)eXzu*8Va=ky#))fGBl0K{ zGjr2KXlMxWr>75`NWzfP<8hP%l;zPyf(c;jHt*2K=qu?*l;b^$HRXmxFR}DZiNv)u zGpB1LQ&S#I;682x_Ef^W=V-W>yCOo$L8zw$*h@{vZe z^~7|)EuAN^4h)Xa%dt*Glsx|<zCi{Zhl}-3 z6H>H793v7=*v%qZIJmP_9E}dB>@MoQ(5d%@v}gNCl(fjcQ}CMM?|syp>28ZtS{{FU z&O|9>N@Z)`B6|&FB=Auq&wn1g#t?!_m&T~s{J}iOyp~JnxU`b8-JP zjSyszTUMz|42RQ#{Du;mmzajA1T}N{c49|D^OlXO_;iz;4lvUGvd(-_?|xG5-I+vf z4qe$ny@c8Y-+gVWCl0Fi+y~|sN~7T-oHPpnQ1VF+)w~5^TVxHK^CVSNF7w~!q#;)`vA%ij;;(T(~n}902`$??-^bpavSyS|mmqm|0p3IBAo0$epWlS)eZH~Gf?|vWj_-0dg|mrk*6U;tc#`;?C>hGhaRVRp zSHs^PbiRtuzNA7TKY8=~1`EMIxCk_kTe(@a@+WPUaLiT(>Khn25EU7}BvcK|Ge2X) zBPIS80wo(^S`h|H{( z9c5BoPnDJ*<-)%)viBl5lri^o(pbioE;q`Z=W#G=t7$`$rZD4A7IQpE&;v-AmM-4w z+iOZdcMOJM)(2hgjEJB_Mlf>3b554jgiTT6cx&VpFTL_?fAaxkY~=jdg3`gT;CkYhz-{mY z(8Wkm-VZl{bkYgSpuEhj1t=+M+hO$@&Cj{3^O3JfKvUPU@NKs}D{vnx)^GC`n z8HI;0k36loT02->dtxot=;iR`3uEj~mXB+l!wwUw*d$ehhnpq-Jtr3Z!+X8WwDEf7 zc??qXwrPJN!R_VMQa@?YD7Q)GG=nO(>6aB7KXBROmMo`dH!m2V>ZG+{KAKz@&-xIyPJRU_hIv67P ze2~7I0zJY^>gpQi)?AwJCN? zI7e>+UvLIZ5tR*JCR{+7&SW=7-6b(nWA5+zx8mN_o|()50PcEB!-eBE1{7xh^b+IZ zh)TV0T-3VRy>lC}gSK=`2EGq=cgu?Kw0eo^&xJmBE@0yQ4p6}eU%4RuJDGZ&DX=-e zQ2G;kAi7JANBrK_uqM@xPkVL!dBMYGOI8LXp;b(ThC{pj{&f5D0QoHtsL}&Y51u`r zP`jK8%sl~W&(~E{!Clljam94J=uZ*ZA0MNc{$gQvUTo||v$>C`1I^yL7Q(On~Z-FG}S*V>BbrP+6BT&z*=79!os}mGc`5Q%^_wYcJfAhi5DsuYxNC)C00_ zx2BKx&uBQ0{NU{J6|c>Fh~3GUs(0`l%7l=aGYx=z-&963^^||Prjes-4%+gEJKvI6 zv(S1Xhw!)F1iN!~rF*rjdwGD){bz4^qwc`ZOGsR6e7esIHeQE9r*qjVmcJ@z1!!>u za_evVIS2Z}Z@2sVTU&WoS*i}hU21X1C3`^N1^*hs9o5}eer}wuXpG%WlNpEOyEpvQ zI{-g?{JovwQuXriS@(w_+eKc@(Jrx-T63e*3AtbH#|M_)>i~X((H?&A3wDdtukzJ? zf#-+j&ihK6`fUFz>$kUa;O^X}neHU%~Nf)=c7U3Yy61UKXV(p{4H;w z`9;nKbCbz`t7M7I?H4Kt8uL~tY}QddKFgq>QI*@ADFZ!hu-L2!twk| z;Q2uam?s#!%B2d>(KAqO26j*GsboEBOs9%`160`c==epIMWA-QtZ+9)8Fm%Ww_73^ zo4&pcxO6(%7CYJwe|Q9->$?7cL61_l-uib(b8J;%sLA(F22`OzB2b@tN(_JP)(?=Y#DWDbi2FB8vyx}36#>G zux#V3-rnA!wN~&eJjM3B=1Ro(x*dLCGHtir&NET?rbPR7vkR0N901(epv=b~|IPd- zTt5Fc0BDJcYnTTIel%N&10e2@_?-eMuCCsSCiTUw_WTyr`@HA}-G^FUEquxa{`A!2kV& zril31g`eTF<9w-EZ%IG=t_SAXbZ5e;_B{NE1*>nBA|yaV|JAN2V93MP8h{Ej00=UH zWPWf_t?@bI^}@bxy6yL<|GgP$1{@wq< zy#9*C>6GKY=1rlH3|YP9Pm3pEahicnyQ4>C#B6Syf|To@ngU+p-A~*%o*#gt`w8`D zRD0vq@npm%_WD16&nN^46~hh` z6VFjQZdVN^GKlaaPN|RjrKzfZ{YN7r$G#8-;28bL_q`qt&=3CN!D|V^Ex|^l8Lp1Brxk;PT90kH*XGc8!9S2 zcfaH=EiaLdn=O;lld2dkoDA7Uker>sjqE`mh)*AAN@3eL&P#PCRrA}kP8Mo6ewj53 zmv=p6hfwNQsxL(S^C(2z$AZmRN>mjPphjeEL7)90O=0NKSsFYyF^?U?P_>w1d?` zQy$Iv+(foOSQHrAra!7+9D9D0Sd!qN|Eq`-=K2X+3qf0Vm#UCarCzQpoj27jnlYE8z9%C!|%XqpRo zzDkI%B<0>Z{d^6)iIb#IB^)JCR#=ZVNws6w0wj@6&tEQ92}xX zochgb&!aY1^7yKGh&DN1Ey-kk1R{DiDK}}`SMem)X$s<&{^%~h4?(jLoYXHD(QE}y2A`Ce0u1oFmTe1&JjjS{As1X zp6b~bB-m4>U*{CE4%|Br>1f20P`PiyEnFE_=`&0Xq8A+(2#{pDe5+RBeL3IFWL^(#cNl?wtT zYNzp?umMxxzh&?Lbt?Z6y$3$zS*J0N?&HeZuIIH(jLbJafYVaLDV378>YGa!t=pzD zlfKhV&5&_iTp&7@ifI-U)@9hwNvYMr?8FOBb3mP6bxVEh>Y64Twe%-QZm-V%i)18m zl1%Q-I@c}J^}qR-8y(z90h$@FdmyE&{V3RXdnCb0p}5Ueb*{l)Hd#|Kd3eaAP4mEF zpY3cfo*SlqxNpKFY1N_N+F0S{A1j4Tg?+z?3vNP!P$H?`_%0N>oVXctWE!JkQA}U( zJ<7|{(CqMbnbPE5Jcc>W-J#3Pm#WJGv=iQ_Aa~8{r`y(XVNNTEfxus$I6y|hqK4TQ zXk*W`O>KH5P`XA%_s;#iaiG+4>mNug#^^+|-)saCdiicXxM(;4Z-(LN2GiI(6?kb^pOzUETfe-RoIv!xZ;& zrHTw)XdHCI^(a%}TeFq9oU^U+l=eL;u$|1t=f|pp%YK%q*2h6{~ z90z4R%1s0eP%`ZTQ*I}d(KL>vt0G|92U9U%3!25NM>+0D1{Lk5=Y*{l(5pk0HI3mw zftM5Q$aZsV2TrEB)4Inv4=FC1Py?!qOpVme3-U2NGnUNP@Q}VlToPYeuTw|t!6c}I z?h1_L9u&*9P_cl>SBc@b{nsJG%3^okd5%-Lh;mbe9MH?w2gGEeh~Kyz(S)Xd^TW0ld-s7cEMX93;CzPR z5=LeAB+NPAe~ZC}!cetk3iOvBU=07dt!{%p^e}W;o{7qnI32~emuWZIh<820z4`Xs zjeR=!3UZu08OcP#6b`1dq>#Y4ni&@=3WLEgfnag=9}y6@sMop)Ai zhL3Ut;B?1EF=$*?-wFIsdYhFFx&>PurX_v%-*!X8Q-4?ShIO_DpJtqsF)OPhW6Pvv zhy#@77~=Iq~@)9O}dVNQNF}sT&n#fP>-mYNtTQ6J}h)>^OkKxH@1V_NQxUM_aj=L_kpRwcd_w- zgcFVAWyi~jU6bWcot=qk*4a;V32tU;Xha&E4u z4Qc}wT${)DMFH(PJea}fLqh`Zt+VGMWa^ti;ZE>eY1FC8Bf<7p_Y^}v`&E6N3|JeE zhL>iY%re2{`HRPf3mvJtx_aq2p1_PtZm1BDm13v(@4Btq`C^_wRaNwd{ZszWX6Q<* zfd%9mdOx(=Iu19WM`g6}g?Z_!+^5J@xC1Q4*}nCp?o3*z_L29D#Y) z@2%?6JP(3bm4UY*jP>&cy=|z;2Z1LdOmODxg8PUQ_qO9d4qnn7g;=wM_RvYtE@{ta z_Fz}2=~1T$7UV}_+RaZ-JgP?tGUHL(LOM2bj3c$5Ap?ZjJ$xZKTU6gO;+JH( z0QsH{GP)8*9*||%`O^1qR)5l~Q)gH@5<4A3F3e2+N|0FIigUy$IK7;q(?t3Z;V{tNujj%toy1Sw<)6bwJjH% zwrWJOXuD@ghNmfp!$=xx>&KcfGghm?j3FvIda=`x^nR3X0zG}juNd6 zluUuz+D(>UbdeDldRu4dn~;n_#eB=_g_ga4=bIVVSl?jrwLb(0+zK3u z{7w1y!qW9fLG$`?S0hLp7_Qm<_wTXqhtBSlJ_G;1^@fg~`{{;{H#7Crsx$30pmj&%kj&po)3+@&d9w$vwVTg;R!4%K0zZNnM6s{j+zC`>HgJ!KQ z51cn1o@EpmLbEGclFbS4u#_E6Th*Z?q233|t50UDcXH>bP^kVlsEDt?b3umaqT?OY z!=cTTt!MPl55HU8dkty<-=9^?biMvf>3RB%>U-b+l;SUvRJS2~10S>X1=Tw<=l2&#f8RL3?cgpIe!b|#OajW>0Py2ngEyw!(wxZRcLk&ZosP_7) zW$QyQ84@h+A$SKaXwhG{)Ae?XlyhyS3_p3RSQM2T&42p6DXYc6iVCNmhQ!#E4$tEu;AiX?V3qbp+V4$q^eR%5K!==Q=-XeC1}gU^@e7oqQ1hmMB; zmsG|r;q}?0Iym&_MfW@J`wsCsk$w=V-!0_((sTE#kGq_Qt=n7w#0>p20dprM*T){m zgNwU>*X|)WWlLpCZ7W&7>pJk&Nk54Ym)YPKmws}D_L&TBb`i1`G4&&)x>wudv;z40 zC}XC(v#8rs_+|Iu1mt29-v9^s-b zgY6%*iS&$O+qZK}xVy%&+u47J+kNUW&-5z%r8P~%FFShtfXm$J_fOAvw=Lxq^X=c~ z<3Jk7GHNpx*KPw69%ylB=H#rNg~qrfe#4QJ#Uq^1 zou=!Pi8x(fJ#BWbBhk-#G>qg4iY{JUwy5UvY~si&GfIbMc>o+?1X#k=Oe62(U_*l= z<$21TTK`Q>lhZboPkR9UT}?gl`U}{OB0J>vezCc!Db7UgglaHOd9XeK>?C)ywz$oD z2XySb;JLb}HldmJaB%cwTB`9qK@TTRt=LASwFw!%!z1=Po@UgaPVMbysS$t?l6Y$PF*o`+sWvqqF1Qb_sS`(PgYd?*f6ak{ z2=j1^k`kotFqM;H_wL6(pYVW}|MV)WP3=2HZpQ)l?Ya<2H4)2u7r#hiQTD6?(+Xo6 z%_0#lS`e!0+hpV4=veXSG+~Uns4xz%^lt_q5a=MexgyjIJU%8Zt3CFJomau>*Gb6L zX9@KkEF_`nR)K^j+FzYI*Q(RwyDKyriG|LppF@o3O6mZZbYT)N@5pq!+nBJ3qRvpH z&czPXuKK)n$H%=oHjoJ%gpn@ahR;!W^B+bPs#;5$pAn8EX={C0)qXAr9q^iBu5}r?~@Wj}Ad+o*wA^ zUNPTwxiCNt=F(-Ftpn#jRicq+AE?;dC&!KuN!|B&v>9}re)&izoj^#-t0{34v|suo z6^LW_ySxxCQY_L=O~>+ca=w zNu*xgk~yk|jz^Kyc@P5jCdDOXyMGO}lN;<^q;1#;bI90186@9^8bEzb`&qFwh1g{q zweb5aOpi*5`Ncl-8s)$?V7k0ioN$xjo}6p`M+;C61yS~MYplGNiD0HT)kU0Go21o~g5m^9Z3RPbNq>l3nR9S83tA1Lc7k_^j=kQq8)ykj9}E1b#K=rGKjPeWQ=oFmHkN<`b>V ziXQMKGI;?oCcI!5)Qo+&;K}NLvW5Nu)VL3b`45~aKt^OB013h*#4$McgwDaR&Ls6F zBYgB{Wy@4p!zvrOX{vRG3yMTrt)EvC>9zgO^kwKG|JERB*>H%G5%cJ@h*rQ+EA>Fg zYHysw*4nCnX1(TQ1)J{c$@GPBav7yFM;|tM6GgckbAZ^Z znP{S4>Q;*p;+=oI2$_eM^bjJpwm`Idp*&XPJ;0|Q(SXK?8}*JatillldIxLLo!Ye^ z^xv9BbO%FyNwLAa55M{FsvlSo!iJru=G1ESdI3ko?RWP2RQ~m5X@N*F#ZhgIwAU6G9q}9fKc=C)3F` z6!9Om=}k}4DcV5DX4#)QCw0gh`+Op9-5k!%b`4_?Zm6!SJjGSAXQL2BSZV0fi|9!2 z$zZ^0_}|-7w4%FTmo_P+J1d{RoX_&QOW*gn4R_1qI4I>r1A+OX`?^0y&-ZjGC3~pr zp&!xS?6dMa8QuHZc`u%gp9!s!i7$Cq_-=41%qzWf5SSL1`4c4bScq)UPJVbGldsyA zjv0ouxSv=*B^HMgStHXz^cKCe9=VOs2`m#y@Lva{EnZvyqsko{c%Fb9X9+-rUO?mdAs#G^Q#aTedm~^&w6G6wdWrr zf5aTKcV0?aA6&;6P#7RGFRuPBsX;V}bfHo>8{9AHv=tw~8DkQl6AsT7r&nhB4IFKN zwVZ_w+QvYGdFL;K4m|xX)YfSgIgo7`38~#uF0>MCpu>giBsp{U*H9+?K9qGt_+_WK z;A3y5r-r}h?|RMH_3$|AA#UO(;*9XVX1nKK!Olmbk7B~$*h&ahpHomPal7zW-kJ-2gWVqopu&Ls9o?l%t3@b8ccP!rjyjTQTgcQ^%SpN0HQT@g~5-fYQ=>dPdX4rpf zZ5i8MHxFF;BiBcKH6z>JcT?*6gZj@ea*x*!E889+TU{SVEL3 zQ3kg`>RPm7+z@4rf!yc-+eVJ6q949fIvWKr1D$M%_)Rxbp9E;Q$evj0aY0}*qq{Rn zAjmYi60ukdmud%-*9mH;k&I?t!kDXYI(r#Z#X`!8*V2}UhuSwrB77a+wAfcw{LVKW zDKZW&PZ5P`&p1+jBK}gHZKKRS(r`F$13nh80wf+NGZ0M<+VuMo8f>#-sUt%Tn-=R; z(w?G{X;KNCLVjUPZX;9zv@^?LUl8EM;6>6w>o8bz!eb<)6ttR0u0U&pBw$K4a1NB5 zr)U;W1UC)^6T%Z-{^ahcym&v2iv1)BGRR|xu&esPF|YPN32*TK1-x%Oz8d%1#9gi~ z+>$s6Cbz3YP&-^Omd7(241Qlb=l3jRCS8E+cGMX%dG#SS`a??cHAh*L&b1t@Ny6vd zmZoOrW%J_&u%u^yMa;2#hr0M!HHi5XaU{6vslgoHGyauUc1zKk+cx2nz53<&J1d2{ ztYD)Y*zHtgay!&JHjNb%GUlpM=}8I1>j-K*N+RD;ZO`02eQ5(}{FzEV9(}ITO$(&9 zw}lwjY&D5U{qlNvXQDGr7{X)Ex!SDR8*@ffb_7GsVip$G1^s2^ntOqB>)wpPsnDd6 z^Ak@*;p<9!UG<*k3!%0fxNmgN6(o|+&crMO_saKJI>#%KUo;1xNMlwk?EidZzG^f( z>KuQ$E3D>%xvOoSn4J9XbDF;=@L+n;>DG z&Asxy@pZ2OeG)8MlByJ)VWPmfg^SM!PPJN=%gVQR*5P8m?~{zb53do>1>It^l5c*u zfH9T7oH-|u!^|t;Q9O-+W~Ej4*LS<9YvaO};+4aTgPou*v%|Zk{Yy3ZXWTXZNMT$7 zb@CPoOB4zOxO<7 zLW?Y}hP^s63{8n`NhA2}+&YjU%S0RK&x33hKYb~tZ5dxF?&$Rq-iL{}^4%r&sGe5K zu@q*$*jLEFM)xkqu>&#JsNn&An#mSH4OIR;|HubAuZ4+2_$>3Uj<>`LpAI^7a_kgR zdOOafsNY9sA~%Z&*<@rDj4`$)SpFouD*ZP%Fp+S+Oz%l)!_R9<0R>k#+}!%x@3YHI ztS90fE!(RH6uUo^cqE2m->$LCJamM#u0dC8??8`qGM-b7_g&<^e|=K2l-LGY>THbh`Z zpR;z2y1$%eR(fsUWGdz>XW{S{^)Ho4*nMc`pzj2=B(iZ__<6h++ED&WSUIXT0Vw+u zxsL`u?E(x^7s{V2L23|7{qvlk?$ikOoS|KO4Ct#x6b=9|6CABqHzmXX&TXqrG~#>t zK~OLm_(!ofuGVl1QxZ|+;7b}{b9$(%m~ksZKI*weT76CGF>JVwM&}-_DOw7D69*Po z5EKzZ@z8RH&T0pZXYE^!K-Uxd^;}k* z@8lO)$N}mGHW{7K&Uqg5a*(02IMjwhAi&}PDl;%n>@CUF zz<{do^zq9OY_x2!CxVO3?x*?cy{osBzP6y0tuk&FVqvnXgs_(8*f6ls#Z7XbliGG? zBC9x?nMjBJFpV7&9JE9LZ5-zk zsWapVt0p(Ap_U$pV*4j)td*0Ut&qUm#LS)vwOTe#^KpwVIb$BpBvM-{W$eLqoMj-KuSg?5X+df1$8-3kU-S3%MiqIz|}f5lLP@U zE+h#OOwXmy>$eDNB7#{T|a`Id9veSOr53@mN}+uk%wXr=$x;%$s-{%HST1od^}A^LdS&&{L45Y z#)dS&<5D)z3J3hR)O9W(D+-U&5men03bf2sOo5<Eq*99N=S-nisnf>A`}RpavI!vgB8}bN!DJyd)YEvDb)|W_+z7!*`oswi2Dn&2 zrk%$oGj}*}XwHNP+xWUx0Gq9my(Y6=hS7%XGCWW^N#M>Lcp)XnjEg$z!81bvN%@u* zS4b1#80#hIbI?GCDx~h3))8g8x5N^DX4S@U2z6p=VWJ& zC*ov-cp+FLlUCMBN@IVeAj#VXVKln7^pHL1hJ7qTZdG@~RsprVQc})J6*^}Amoe@? z;E^`~u$;WI=jI%l#-nFYZv1k4yM9YdV{?r6M7_P=gL_xn#V|0zeB*j4z1Vseg_Xe- zBVLRFj{Y&lR1^2t_@P@T16!bUZa`xQwr(%VxF=?d3x$;ElO*V~@h(_)c5YIhEV&z5 zTjbRwtxg)SbcIP&KSV_sE|-zso@0H?gm;o&U?J+kyoB4PJ4^ja3UBw@^rVB5D0zG8 z)=fF5O<&M1_H{MPAqV1&$&KDFdF;OKiIBGv;RHC|0W?AK8JTt4r__U_L~74Ht~nczP%= z3`>*e6VoCgkj$9qj`_G)HYVR9Z~FiZhSIB3UQ)tQZs#z@X6$Ru+`<{Lv7v!Rlx>P` zwms`8P;nXGG#WN~CbAdlRDg%6ET4fXIe_rHJI2Hez12Clu>Ph%f_D|LTI?O9Yg{rFYX|HU20;riU|iem?~EiZHQ-KO(vLi%s;Sez)$L`=g{wGTa~602}VqffvI|`eOTeA!Z86) z6p%o>X*naNWW%gny}>&PE{qgKmeEcSNO)(`P3|C<8#;xU`OSEuI)OaakWWx4oew{Z z6)2}%cfhqxgD~|j&u;aMlFchXhN4W%{{Y`RX!bYJ5EL&auwcjC(Ijt06 zUq8avZEzkQ^(Y^&ajAVX(Ru_`u*g)Dg>YL%_-v_KX;wU-LemWGV-c!;0^uatUvw_(i+TmV^~xJ zT5poFI_|}drH-W%n3JVUS|KyY@&&2V@Ry~dLX&yJlEnO`NX)t}mJRohA26MO0GS*C z1=Mhe!&_<61`Q^T3i5>K3m&}QRuY>Lq> z!USthuIZ?WIfbA`WVqlM3K?Z|AuDK=gufjzxx|Lgg8`rXm3MS%_x`*t9}m?_%-r@% z=Q22l3eU~MbAKM+=>_lapQT7;??{7GX!)HlW0wz{d@Fff^pnXhL7fCYY?@ z!7%bV?9L;vn;P&-@L z)^vRnFqa|>uJ1S>Lm+?MjxtNNMqoV<&TjDYliY zDDw&1R0~t%TDvbgq^8$-I#}H=gV7IiN zHlBGtY3n@E4dI5TEi9$Y;HASw|8%+Q>C;tG!NIzdL)grVo zm-8;d7Q>AK3KCG0h(37nr?Cl!v|hqjdVFZQFZKb0`)vG}eRy9V!6aYzO@kvOg3qf~ zqj|1iEdM?7e0e_gNab^T`weyAS@32=*R7FuhhylBvSC<0GT;vy^=JV21jjxGb85GI zI-2RRozljKZ_gT0T|3P@7IY=)WyaIz7iIL6m#0qyZH3M5;Kr-&sO>uiIdiV23QgDm zjQ|`NvZSLzb!O~EFgLygJAb+F@RHoMUmHfM-gQd}T~ITkdu{V@j`(*d zt+act3?Q&r$g=B(jnUQp3lO*Go{0u8M3}NtXqncD@Wq)O+*;URLw18@+=qFkQkm+H z8_D&+yE9g+KqftpU+j_t+DKaBn6x&clMz87l4>Oa3O3Sa;XrzXFpz}eCshaJ^-Wbe zON`nxB(W~8+eyKf4OX|d`zudoP+jaI$NJ|nOvj@bSeZJ=*#P|U>xYah+tmCP z3#OXl@Xf`+C3p!?!>sirC? zhvf?OHuAD7S#^&;`bFUHh*e+fd7J(Oi*oSartPjtXZua-xvhVJL|B;3j!LzaVC9)x z$jF2fPNU?o^&2wiq~M(T%6gNOhdrBcAA-y*em{E(zMOK0)w0jtIoTm@f5T?eGNJG& z&KpXwYhfGSJquyQ%BEWS`eQi6CSb?T3j0phsDg!|H3%3Az6wRVVdU*|m64W651%}! zF|d$VVTvWy+RgK#i7ukd{`!coFdPDh1W82$VJ3^opJ-00kPZx4S0;~jD~{fxQzfRbQH_El8jva#dl2Ppt<-;}QeN){6$&q*)9jt%C) z!W_n55dfW4(!*D8gc8TYl436m#$=d*rYtEM{PiQ9(voKXy%Z}_Rm^FWXg6ZgS9zL^ zmWE16h7(tI=O(JKt!O#JXm+ON%}*h`Bm)Qu?)&CoXxLyr3{OA&6K%ug6GWTwPBnp^ zNRY^UL-{)3`>}|FyF5_lPFu}&mT;>aUXrWNt;q^S`DRr9Jr2U!%l*pFW> zUsX4*J{q5tB14tcY4n@uSS?vQjobpdYENm0ED*BK!F@O?&dy=X6Q91FI*!?5((tk! zYzJ~rF5@F?L5~#BeMXv!T-euTc-`^eYwI@A;&t-OMkNfuz`dMI#mTNd!Rbmm`~f%Y z!bYjiB(gv?L*Jn~W&6EAGJocF%Bl;dt=KZ#nS?%EOJ!kcZwgZ8d!bz9zgwQP!amL$ zVKZ3eZaKD|mjf}hW1nu2g&5rJq`Z$=BL(5a9s2{@>JEc=|jm~~*$3};p^-zKepp4@qt;r5GIaI#Ai zJ>%W8x+NAVIUcG0&zUFzEqhwjMVaj3swV-}^sCSKB1O7$+Aip*nb}mq|K|Ju6IAh^ z+qEB-JEQ*h=UFY>K5x5fCIih3{rX^TK?-yurP;2!>ZndJ99(tXLH z$$q#CvP2ywk&c{zv2_0@X{{6w<4Yr1U*z}ZqnY_K6Yw}qSpZX@L80WFyIM9qqsr%7 zZevU6OMJ&R2{j#3g|V=Gi?`;^Y2!jg2O}fwud(={Z20hIE$M5K?>29lQ<0VC*5y^h zK|g4aOj5hDs~uOHlL+Hc`0-)sa%m`aeck%?(WCPGav)!$44_gv&ISHr3eTs&s2BTG z8IPeFVuIcKDY~&%oCEi{-2%{W=Qc7m1GQ6VxZ#`!rP~25v{RL}a|XW(^-=%6xSFB) zmBpqTxHLG36HOB6?At@?L_5EDLe7`>F~U-to$1NH@Fq_Y=9?eZ>%&$vkwpdP{!4}% zR;5iXeI&MgYlSPG*_gbxnQEl_t>r!v%rm>*U%u3dzm`kH}9TZW2 z4=qu+YEbYp489(vNcrHxEVMfl@cH(A5p}|Fo{_`_z7(OP-GfkjQ@;b^6KL?_2NS8g zkTyBJd9k4d3Nu5Gg6*P+e_-N0TeO=m`U3+G^U|{(f!Q|>%?j|6*7#b*%QMb}1EwM7 z4B$iHTzdMgup2-tK3C`hR$z(5It^1ue*&vxCX`S**&v3F&&XOecW{>iQWT~e?d0@# zJpwI2?Z23Higp$n4_|TAXFgFNWpOh-T^ADqV0}TF2IY*#>%Or!aA{eM72e!zw82Z< z{)u=xasuWKDnQY}RJQeX)>P!|#(y^#JVcd{1Jz-`17*B!rU_Vuk6a@mN$IO@t^3Kg zHvD$jF6A)KR+RF?<~4(&tX5%7eiz34(h^mo&V+SIBADp;LN=!Cq&~~fp9O`Z2$fK< z*edZ)jO4}u(NRp!Qb~7&XxW#Xglqra=Ta_BRMfKqB~*ULTF`Zqr-|*4ePClQ*gx-o zJ7;i-k?L`|`|Q-1wxr6}EgE9=EWy zgDCflOb?@XCtpk5-abZ0exn?dYqxFeV^0+MUNdSMgd>h16->8#Z4#o6VjgWbL_dVI zFDvbn;v+SHA(Ud`a!tl9Cu19ReU0N7o8$j!q`Fk|5gdv1qKf){x)83#$aRCf+d-m} zKwx#oL5fmaafXx4@@)p2N`r?d%v-c`;4hlH+0rE`e&=t=rgdYo40jC5Oy;GAr&?J= z!tsa$jjH|v)pSm4xVvr|%g<>E=bo>nIIIO(j0a9&X+dN)Hogo~d#nRex65s zH&hZs`9zaT8C}YmRY`$yxVj2zrlej{;-E>ohrCVuOkcVpOfi2$Tm*KF(bim0!2585QxoL)I zSDpq}Gio|oM%__Ql;&BsCs#OUjsYX0p1}@AOPzb^ToWZCznS7_m0KY6?d5t#OPqy4 z7DZ0k9hT{~s3=e4wcG6$-!zYinAZ~KSd8pMQDzFwf9nB)Wx2EmQlDa1S=x>MIt?Q$ z{=vU(W0Qz)XKpD$a;Dk-51vjT(K&bzHf|N~UTikd#D?^}bN@-;_&DJpo;kiglhN>7 z`%j8DR*p8mV!iALdSs_yrM|tkLHxOo@w6Be;`rVIv`kRFb_$tA>aE<14oHCb!f0x5 z7PRdOxB}lAs`%2SV8!d2t(WGal^J@|b_$05; z^DJUKjCz2&GF261i-$AHQDuVj##StDcQpuOR?vwGNT#rBFd}QwS1a-=6Wl3{D`31X2f?l0Xdt-Zu1B%c=>xHOy(DZ zgT&LO9 zI4MYM=d!6P<0?J3czv@t%!`CTOEa_cV9Ea5cEb25A_Vw$1EPCZjVoKQOGb0C*GBd8 z7*ZWst5o+EBb<39f@SeF`~?x)L3k6nXst`728B_^+{0sSMwq+9ZwOJtko7Z8+$~r< zY4gF#R4dz+%)f^p!K;s58n@X+89^LRzwssG>lTXi)?+|7 z3?XNf`@J3w52j$wvr*!AnrEkqYyWH5iiW7}@E8c%+K2)tMPi1G(A6 zAz52!-P(o30_u#|qnn+)sAp}4-oPjxd0eR?MAutWniL7tXK5;a36^efRjX-B>v!f}eca@;G=(oG%PIC{9Du#eC5s;bV2s zHYi-cYJ{Tt{O*F8v}cNT&~S*KQ|cjTZWql7x<^YV0fejZt2b?(e&fi2^XGh~TQ-Ns zO)(c%F+`(SatqcyAG(o@>hSu|r z0iJq$Y&R#-a$`j>@&2 z2C|M&>0fQzckkd60!~U>Un`mOBUFfB>{HE|2EH^%-q#+>=!VfP0<%Ho@CZ>Y503VuMYk;H1~Uod-XJ8f=eEsbtQM_=NMCt-9VXX#UTdwgy2i07y9Ax zP4>z0h2~Nj9Jt7Z$xYDtSMvz<)EbI{uNfP{!tLbgU~ET&h$@m=Q>6g+rlu2YHepss z(La+(rJmz%oYcH97C)C;XLX75PZS$qdO^tmgSUX)GJEuP*LU0Ol8UM#84(h`%5` zmrA~gBcd9* zO_J?+e_Gn1UVWzk^qu*^(Q#_9BA!_ay zTpwqT)MGlXNL8zOA^v&5bF0S*4Qr)nnx|IL&-%B~zp)rsmsp!!p9iBzk(jQ;3dE{< zYF43IO|@%KnOW~#NG==M;9jSB4Zt{)LeeDl^?zY8YDhaT_XYK-Ke>ZE%qW)n(-D2Cl{{ zg;^ENQcZB6v1GNyU+CN+tEi^V;=wuDHQk3vp`vVpu5d7#G07-tf6zbv#ff*{N46=U zYu%u*r$vx;%4*BicdbfwLH0Rht(l%WVKe7oEUbaYHb1DKkngkQ^OR-tP->Pby#EbF ziJ*=w!#XCD#kZk*c-1Ot%1`a@(vAEBo8w(iw#EhGL}v`ldTq};y;_ca8` zz@k{=D+y-Xl4K!rt5v60E>c->aLvYHzL{zjpAmD_IRXWq9h6xl8znD56);YjX2Jfq zx<=S7dW}2Z+1sd^sh(mR#ym%8I3fE=&!KhWM{ZU0xDzZ|h66BW1cyi0!OSkXm;1TJ zf`TpwsA!J;y7~;V`L_#5D}!r%ULq8?QgO|b7w09!w@qFQ4`nMSsZeTNkEOkq~n%|XvGF(x0KWj-%-N{@I!>xS&kt`-o6=uc< zw03Dg(|t?DYQ5oJq%G0%R`~2H0FT-HPTj$Yqn;g}!K7BC^J#krtGUXvhDubb#SX2w zfnRCQSzhoVW{XxGRu1I|tH^6+8{CYD>ImykSeMGKvT+!Z8#ZfT!3zE@3Ko*T5hb`T zKS#T?PYD)u;IaRTt?HGE`yrOSD&1J~h@x{_25C2i~mX4L}Qdac@h2oY@ z|5D4--+SWRBJm_v_|gg*(z3_q9cZk$^bMiZ+Y9#6+FG;2m2uQ{X~oOpDP*Am83#CHQVt2=k#@84XOYw&}->4>&YWvtW(dDv^;DR)(n z|56aSbFaui-dlbkC^Vg7iCi1JHpe&PzDjma8x|T6Bmi9Ba<=OP`O`Dnqq9GIaxR-ukk}!VQ-_V@Ogu|1 z4MH=mzXH9)nAy47ko<*{ldIj04Vu4H;L+d{e%Sb-L&k99HO(Z1c`|nzkg=3OY=4i# zheFT_uQg8vr5{JFAZLGCLy4}4juV%~k6Is-O_0O9f}vUIJkgNA%yvj|0;E455HbCC z{Vk5)b9??Bg;8%}gT^6duYkCKVUfZa+*oqDC@kLN*7lFiK58Ll2QL~}tWvyWB;g6T z7g9ZY{o0@1%Nf4|P7pvIm%O;k`pa_;TR>UDfceE=JVwYMSeSIR(%0nP&+>Ch-HSh7 z@r<@X=8MVWsGvD`x|tc%Xmgbtn&9P3wM0`sj3f?;cxiD42~V5uAD#b)8}QbLJG{;aEkH*ciqcYJMwJ)4(cYME+}O@L1X zirL;{28DBni7FMx@s39%IxZ9;Gm9yv!Y#jyFQ6uR?Q=S2Vi|18gkJ|!pNaOU6Pv=z zIxCC~igUHIzVSzd=4WyZ5V613+`6g-=w*-_W@7g_{uyV%6w0_9fQc%RF2dU>XdN)I z%>jroe4nWWB}(PwO-Ny%WBeMM8HI^9K#HRWG0`ossm>=6l{0I=iKPjXeWj#M5;vY| zGK3Q|M~ejeLJf!*P|;w_^9*%T(H}#`QTgXNg!6 zq968t%a~aOskRa+JflUPC&R$b3@Qwj9QI+i9xyry(`@wro0P(didO<}DPEnbL_&8P zSvW`unUqOW2hysAdo^>P(4P=Ye#a~=hPfK2%4!E&&#NK=0b(T4pu=<>T)C#c)-ayw z-7?UkBMO0S-zauSSM0d2MDJ=MXp>fTZ|rEfg-qXd;vo)X8iw?hb>A1!+}b4ELQlZ! zBTM`@Pl7busQ1*UcRJ%2CXWb!Kyscy)4>$rj$CHT*2S5qp@Lg|=^JBFX8}bQZG;fM z1{1iuNsgvDI0;b6=61I*{&msoIL&SAMJG-S7l*+_*1{8s>$t&c$T1ix zp>N(nBTKNL&`QcpQa)Rg(VVmHqixH`coFv4(37IG_~1at6~2G<--5XnR~LDuJPKtH zA?4&E1rMuyaGlZQ>>LZ4rM4MHb<8(@X&>;v`oHLEvim^x|0h}I|0W+dUVqLqgH3ll`07d-gxcn#aohD~demi$eEQFN+=THWO1hw!UsI)7MOd@6#sbb*-OY zA41=tsohx|#|Y*oBRPE9e!K*?H4<>2`i|uKZ>!#k9F;Xy<}Xd;7)&J$6I8ug9=n&LEG`KM6P1Ii zHVmVt8eh{&mPaVqTUxF}T-w_D7bLbRTV4sew|t-V%R2y%h$CUAv+D(&JyBMqNhb%H zx)6q$`8g%3`WSx(Hwh-9p&5&wIYg z#~<*AR1@$Tg``^K(0AEMgOsbTKz~wY1e4{Swowdj26YUj>z4F@`!t;7w`b-?fGnm0 zMb{n20d618m7a)Cjz#EjDj~NoYKs|cE8#KikkYQ@p`3y`;Q67X5bXFRn9WGqJZ{qE1$r{ItPlWK5DkVq*Vw$WAgl zkOqvDMyiX9-}j;R9O+aOI_q=;e-fJ`JVevR5;8l>K!GbK_n*^$=NHNry)Yz=|Fgz$IHjUdQjl%icy>?048uGugHlUoKcP3h9-dZ8s)9Nb z{R02c7Jt=|m92bZd%>aomNmoLJv?v{T17tc(1Wtn<<$EcKZor-)X%X#rMFE7zA_yM zxO`-~3@0OMmA2g=n&(l%69+T&#a-7Ja(XBBG6>TbkV@jD(iz-`ScDC>g~m;JKx}C97B15KZ4Nj|)CUH*TRl%cxX_Bw!m+|uwee5h6C^st} zx6`@L$2ua*#OjSv4tQG9d4`8qf%na}2ANFz5BkRx{C4IYiQvQt1&+|QvAIG^PYVs}QOdNCCF=_=Sb&__ zw{Zi^4a)WWWpE#ypi!j2vBnTEcz0)|jq@`L;#d}Y|E5;hNYWMJ%QlIMNa4EKXpS_2 zdZs3z5Z2tt!;EbQ8n$mle(&X(+x_YmzVxS1Ny>8Yo6Dcrm5$sDJz#wAXyPc)A|&kg z7mv$pqe>{kt>vDLa%*ZgBFvp|<=KnQ-B0;rFXs{S*-LBNuMbfhfyPN(^{W!UruOzE zIv?Q@R7Y!x{UkB-eid6$dTZF%cA87}e*3bv33DXl&8*}cACIZzs#EG}bL!H#N@zH; z8>uvF`IL5wD=rSB34b;zFT44-C_5CN{!97bO;)g|qiuIqANg zp3Xe`!;T^?b{9NJsqDOS)&E2oN{%TPoS*wttWp~-g^HIh(z*Obx3D0p5yhV$evT=1 zIwU0URPa+Be=qCbB2jlm`JNkoL1EhcjVU~u@-2|dCPzN(C)2xcL0#Z@3t$OKS;l^bZes@+P${hjUAM|qdnneEM3+v;H&6V;Kg0pMoN{LeN zg*ssWd?guRLyP!RWz*xtSZx#@>BXM(rRC4#uU=b!6I-eWpR*Vq)>truVEcv0X29lm zzvw5V+tR=-k8tA?DM=Ll=0A@jeJ|a-ZRVe$ktZF8sl+K->l`_h2J2jj=~Jh|TvpT= zXrGm*Le3WAj8A$st{0X9uNb$;`l$9vYyXnc0xo!-6}t#f6Bh#i%c=iAKK%%%{v?!P zk=NJZCYR}W8dyFntgEz}-}CMng*iRZMeu>k&29dlTHVY{x9r@Zce&^_kRYpUNyVj1 zCFMi)*1gWQze>e}lY?4QLm&COZ^|kS)s`!`Cv+l}*C%}+^3Co=O0jNT>V#ENX@;&X zp5|W+5Z6)^`B^J{y#P_~2DXBRF!iFv}tOMTz{ANv&0} z^6h({nOF+g?nuO*z^z;b-UF`p+j<_({TKRWQ{6**AT@=_2RJ>X!sEo^U2%YURjUm) zak{vDHuC21apl`~rs|00fYHh+5o(hyl)5(i^vP8;9}mYT===+rJxBgn1{CJf#Y3j| z!}D|LvO>1v2kni{O2WE_@hRDpU7E|hl!~ssrLG@@JmPzO*#>IFO70HVBlT@tDoHI#+i<(9I0ZzB#!CkbQwt{gkhZ1TCc+docvs)E}0r~wN^yU8*Xg)h8axv`j4!IZh6&5m>0)q&{vL_49&gX{WCF_u-<#j#&ipdfmP-sAmehG5UlGk#|}kSOBW8QSuf= zUJqZG#UIkaiuC^e9jhcTXd9L+0wmsL{O-@;eOGH5zdt1PM_S<@Ti9=0lg$Y} z2rO+2J@V2ajpk=Z(V3m2I9r^(i;v|@kHI}&m6V7jb^|U@u>+5V3FD8;+iZGSrISev z=6qtGl$K9_8m3~l0)aw`yuWmtKRCK9{q9H0#+DbcF0OL8RC8l{Qi@Fwr5Tq5o(Q;1 z|2~2>%+*n$fiP$FZ@c8cgQr`t?4EsPYUj_;=k|)c5wpas9W~%!U+wb}sr!o=HSjin z1}NEOZ@_x2&7!6~Gg>dN1iofJi^3eI6{?arOrj^pS4}pjes6_)9IJa92O8;pjS~Jx zOx?v}(r_Dm-f9imsdC;&NBWZ3ixD-I+)S+`F8HD+@6DMenq`&SdUmbHSUJWpU0n@S z=@ZV!1Go8V->j1@O@F_f=}FYGy_egMnHWy%p}%-d(Ewxp--@n&g1JNKapzyj23VQA38a z`L8`Wlz+3*u|dSL2xy3_WJ=I{ntCp`ISgyy>r z+kp>bfM%7CC!m~ExxOM%b*h^A0CZrkJB%xF1WEsz_}b_t%MIvkDokwuRq%Jk_2-M= zqC+*-ha?I(3R~aP(b2L)VASxf-M`sz{|FW#+d_>GVZeZ5=@dQ>yb3AXA25OyRN(8E zNa7!y&z(tXV(H_1X5Z(Rc2yIfHi%>54IDo%m=^?XKg_i64sDX}tI&rgNZ0WN{&_=K zXC;LR{7sr2_o{#6m&Nvk(cS_|ueuAwl?&zLE`q?8_`ciCE77PkpH^T00Ks${{~&Yb zFb3~@tvmzBfM!-b7XBL;v5K=QI?(t@iZlGjM&13>^{6L;C zvXT!O{SQU2`!1h>R|5+onYNi8zi5;_wy2gqA|zY`{2{Zs97&O6SC!iLQ>4ok+Dc{3 z-H6b2sf2(oev}FgVZL1iax-)kyDjqLiG^o^vlfsv}E zh#cp_z~Yj%sy1ALyz3|hXVKuUAdzqKFo_b8I?em(Qt6xCK(e$F8!%L7svWDf&lgy` zJi9Fa*PYOHxHvUOY-#>DGL&Oy^pJ{8n~812g?K`aes3QYua7~Yzx$`#oW3_HS#NUc zF&Pv;(b&BhC-kNDJUOk&Q4OVwn4YOCQ>0&i$9J2v&oow$xl&K3BgJS@j*P)R)w$Jt zTP`(z!F|E&vt!ki9FO=;S_s-3OB1(xKvlMT`m2H!Quv3!KknSDceUBObzyaHdLn2! zWR#knr)9-SEmx5O`?EOfkJ<9tnE-Y;X`)c&r_2LAoq=>F>QdU{*mXESXq~gu;`h74 zC%5p~a&B|vX#HLxUBmlTQq2GcX~TL$Qm+e?w?*&3`(277RY8*7X{CIx!K%LfPTgDU z%vQ}=F8(hE`dZTNFv`a!Va3NEO0SJuJp@%Wm&H}z?Uy!p$EeM9l1wjYnuPR)ITb;J zG^3b8zt<=}lF=c~*e@OP4!yW$ZiTvB2vL5c2~psP7Uyi#3 zus`{NW2^jEfm*I<^FYxlW>a3>gNq`mf{lwyl+_s_PKKT-fqE|ndHEQ=d_7?hfAFqL zzUzHm>N8rSR@KPTp`T*JyUp_?S{xea@V>|wJIuouE9E>j#cnAIKuF%tX66{?Et;J% zocQs?Z4|qMYdI;_M3T1p>|}Yiuh`$je?;=yVS0$4sniBILSpKdgD2}5@TPLDc*=~a z*oGj$sU&43zHQG@9pg~nlaix2%eu4F!&rAg_hjxW#3>ATkV=fz!yJi%0_gw>W|<8x zqtz+If)S_}bYT?IUBpq2ZhkuG95!4QX;<4%4PIPYkQ0jX3MURPF{Ml|=jSdbK_0l- zOd;j>9Dmi^RP}A{RbCql-ovWmagDqAru7qK%94mmnA7NDk$p((fPl;f53}Wl9z@~C z-JJYIjE1ZlSI>E7s~&#(a)J%&MJE($${`@=>%(6PH)a+D&z-3)E5=fIRHTyezV=cJ z%}>aezw!sI(c=~Kg{S-!NaZ%r*{tJ42q{Vo}JHMM$yFb|M0HtS0#tlxPpSd(Q-q}U^-eEd|8w5 z{0sNiK+QYu%&i5psQjE9=b6v;glY9;f-O}yqH_tuGqp;*+0_?c1^+7b z+`N5xJ^SB{R{twKsh=G+%I!r|Vj(Vigfm3dtNt~+bf($4COxyCXG!6YP8j8awg41H z+0At@27CR>?a(oreIE~}>|EOW>6!S|tEs+UAk^Ik=Fe}AM#I-X45EXIbyE^?>I;U# z-k~~EGsroul3$&L^H{=B{(SA6`Iq zc8?haON-WDaO(X# zCC?ykw?e$C6+g}1EBDg1?EoQ#FQp!=j*d#xe~6cOP2E!96y&v?c3BjS$FtY(l;J{j1?SG zeM7Oe63(cjlPTZiv&3j-Uz135NMc>1)+j4H4~Wm>`986794FCq9q|O6@F|RyY~Wvz zDi;7a^?~-Ncw`xU6rc0hYvFQ0 z@>{T)C@C>aHb0hyNgj$}vVcVHJ>*Y8;pALbgdgY7(eiG_4#)b4xl%r&w`;Ldry}6+ zX*qBe-DK>7>OH}c=Yk^p*1qP?pjSG;g@!pdw{{3Q3eBCcYjU0nr97@91gCaE9QYUk zby5|kKH#ZKB{c1Aurndz9p;rooX4)O(1#m8S_H>Btf5ldUqJ)jF*QYn>?(JvR7sG5 z;o|hd(v&V!@pWG-`*p5~OEi7o>X(bd8iX|`)tf+st3KH>-%Bv#iv`r9iU>elRYO%1 zHNCi)WRlJv^PPrD(!+jOq@yk2ky!=_4REDp4Q70457by!4SA=-d9;t_%NeYL79@!d z_tk!Ny-4Oa%=e>hLqE9ctij)=8cD(_i%tix&lgfQzHKL2EK$te()t@;e=no1R@U=< zSN{#4WGN2hl)fcHYA`&L=gERJ$~4R_>|vA3?fhrsR{V`T?;#KM1nS=qU2yw*by;=n z+T{jy=%W*;0jn+pj>8+H^q~j*F{orjqJ7{->xHH39Ex`z1s}ErR<8Z|nbnvWB($cG zjHp4@YH;|QP;avuFE;u(iMNv}FF0wX45?51dnCw;Zt3vc@MsIf;wLrWII^|xG!U>s zl?hTKo9xRTlFR?Aw4$<9K;VjxfJ((?>p4gU`d85`1nY#JBH-NPwVGsV@}prolhC)_ zpy$xCs-x))r5Yckk7kxa-bs?9G9Uev45ojKkC_T<;0MXqU*JrJeq`RaeC4p2GT_h$xaM-Lp%a!b=p4UwSFr^2t{wT zq3r<~5)0So!S@}4pk76m)0>bP1YVdpHXq;G_w^NfAwP}Il@y)gU-NnGonr-GZD??s z5TGC#x3JpMq1_u*Suxabd&R3jB+eaHnbqaZgG<9($`w1@Rf*Z9_(h?>vY^Dz>f3*) z`b}|sPFs^z2)Ni$DyUZ7;Lg#NS$P`qCWl%Dn0+S5G9QNa773 z$d($h4os2_3Bbhuj5S9$Jt7{YyXQPD?XuY$l&R;(Pw-cK`0Ql-YCvZD_nd0>Txg8< zz)V!%%e4mSP6ZqgKYctcC(}*A3usyGz3g1MyNzqn`U%-(&Fe8EJFmjA4`90V`#jUI zRi%j-QX90<(PqwM46lc7q!PVMwjydJl{AM~Yz=`vhNK~N+3R$gf+gHBQjRb7iI+bl zR##*)7>pRDMiRa`lZqK^WBm-GBZT@{oM;EkXr>w@M1lAhG5-TueQD7>nRAIkf=?$BT&$yAr;L_$E~3A!*oa?<%^bvmQWJ5kDl~peXngah zvirg1^nL4c{xUu-lcOn6h6Sh^_YQYYl!kFt28cCMWuh&0GEUztT! zG4A}e)ZVWOSv1aSOK4snCNOhpDaD>8+E}9OZCr_V%IVtOz0|yirN{aumR=ZoL_NfA z@YzJFCpXRK8a*p2`(>f?YcJ%eJUVFG8#yh=FD{L9j&YMH%3RjFwm_hEEz(bGwOU%E z_}cP}VfEiZp?t^maq9<@4pSU_gf>hBpxJ8mro11_9Kja)(ut%U`|OqFUW9$U@N;AM z&WY5GFYb#c<*+1}3_R6b41xtMe1+f-gVdY8366|g6@l=YQrXu8kJhM^Kj=t#%A=aS?6AdRDs z^KdBP6k5^C5Ix7DwC<7K9nCYG%i#XVBEx6LLqTplUScmQ>B8eV<>3c)p69nwilZ9^ zIgf;nN48gYtm`&mHu0y4lA<2wWM{~;ar6}Q{#sVw^({}*x&0vVx_7xcFK77x;VXd= z_33Y{dH{h{hn`Ujj|~$*^TpMMAxdrw5;Qc!EX#p(92Coi7kyW(?U`OG9lGMM+#nYq z$?j2x&I|ervIw&fE~wPp!a2xOl$cm(x?i?OYB|(M{^+NRsr%?A>Ah75NW4yTazV@7 zjls2H(P`{D5F&q}JKc`MW_VxdZfsdZ=26aS`DuH;ucPS^9uw{yg?M4Ly*(nft{=(} zE~%sh@u?WK$fsrDy=D`dY$e%$DZr#M?7x8a7jzF#n((mEIr^C zAf;~@rhGwj`7Je%zV&avt;L$rFpBEq3EA=AwJ$Ow~hrNv?uDF zKfFf4$2vqw(6qJ>Y6KCoj{s8;82fJ~@&lbWQvg0i8M~!CD+m7e3}fzqd!&wtZ8Iwy z3Ll?&!m?<@SA2*G9E-<0Ym5Uc%RY?ov$BYOM&!mIZnOa(8k>8^d}PSCm+v!+OR{vB zj8s`~kmq^^^eCv(7DV@b)Ny{FFn-*LGbF8>ZD8MlrndGj1*LU-q>g82sZNbKrq0J2 z6{|I_xdv18wXJdDllo%J^ed6`gd3X-wDnK_mNYsoF6Ff;8oM+15X%5lKgNJxMiohy zW6P$Mv?OzeR5?(%?6mzHTrLe>^#Vk(>-T%#jvP{J;9=G(zkj2^#M<|kVQm&@nt2>0 z>nSu0wMq+1;Zg%)t^8akbHAa<&wpw3d(SFH*5E8vWvwaM?xxsKGkMI3L)s8QxK{b4 z!LzF$AZRvLkNc!r8@6uj&WxZhV;#TLksI*}o-hunC+c@*Xt}>VDYfk2_(UqaN9%&Y z9`s6>z$IRFir3GS_>OR`!=u|0D;`f65jWfc?La6U2U0s<59hlH7v3xhZGO+twY@nF zl*9|zf?sTM+#9*e(PPP|^AIA{M-3${E0h3JGaI}({1|1}07Vk<)W3e^1SpwBw71w( zkg05Gb)fv@f%pK6#V|R1M5x2`tcAq+>6F_QSiB-An+_-W?JYcUs=5!XnNasf8&A%l z)#pRpH;#o<5h*B!+U{*rZ;{vg6RgZfjXV9|{4~R3Jf?Sv$)zusAmzeX^Fv@KCB`N) z73IqMa69c)6D0l79klqw-7hz7GCWfJbKc*dzi~OPZCp_KU3@f?t==5#n`nz(B8>21 zL{Ue!9xORv1M9?o#)v^e_=<$5U_a*pKH35#}eA8&!$FD5~8?y!x$Sm=;Ny zyCX!&MtL924V1^_ivu1DkX8kvO=H<@SI|i^C%7bBPvLlt!O1NjeVVkIU46hGll!EJC zo49-$EL_8hy`^eB#Wg+n^^$Ovg>!C>x`4X6by(+Z6t{D>e3tnnE$?)@^&QPB8OL|; z`uz;?pbrjl%KIr(GNRa(`jje2hqqVr=-x39CrU|^wCxR}Nc#*i8EUWo{pdy?zlxw& z^wBf+bzXIV4+n%qURHJW0@~D)(2o%cGHq2OvAgfYmYcn;uEscTx2|Jy&cLHZHL?!BQQQWv@1;seD#( zjb83IeDfOfTR9HCGLuSH@NBup9!s0Nv38)OQgNLg@QB zeq=cjGacxt#;N<=|s3)gK;MA7c$lE8cVqv0HbHEQ_w z;MN<78vROB!LpK*5-us~+4t_50Xew)eZ)$?RWDdS-2;FzhTgq1&=W~yA>LR9Lc#=+ z&ZEqQrVB7U2rZ_7YB7x{kHDxOz`v4w>?=z z1@*3n+BPD6mj$Bvaa{%}>u7~gYL8hw6F0;yaNI&DD5}(S&zK%UFAXEy$XvcGo=qwB zBK)RCLfmEMa4AvVH}&~netk^bZo3%>38kqv<9jsuTE_y#nV;&b^>Wvk6Kvr1$5VaW zPK}NCI!xc_u;px-j0L$_8op**Mq=aVlqG9Zb?9g(c7!l|t}+&J8~XGP!U9^VWe!x{ z&y>ag8HJwP7E8-P9=mm1^0V@8^}t$f$l27NzyY zj{P4( zC5sq<{3_-L1Xe0@+Nm=7>F8G&`;*NkXDAJN9=H)fWtQj$N3;+-B@Xg5wb<3!%WdUM zPQ4#c;VLy|Rj)F;4;-Jzv25hySEl8q-i!KvHkv?Z2h9{(%coUb;w+3(X=kpwybu9) z>3*5a!S|DwIiS|GhqR_i#VBNy&>2?mk3TT!r{eXx`@u4^+@)0H7o?a3@64hTzqadc zJya}gtX(T8nM%(jawVy5RW6`oc|K7Ge`X7YF7)D|mhUMjBP^rR4nR3Xe+|#fnlDlc z{hES5`TWf2TtG>r^`q7NIU4_L8;Y}{SUN9(u#|Vh&sLIf1gn z$(|-DE9~=`KT<3Ze+0<<4Z3D2>Nu&@OKU%Ud5HjaOfX+2A=B>O9PqaE{ds0J9gez( zDyd~mvZc-A-pAOiU5*BTXnaB&AiJ%pVJ@{^mc4Y?&KV{9i)q((kui7P0Z(wSrOkJ< zMIe{Uuo5<Us4X5P(kiE$iE6#e zyT8hXn0}yAd*6mJgpumBb;)kmh1f(wbruda92w*-@mi#(xjH) zGGkQ#q;$D#@I7)Akx1q1?{5!>TQn>OR1QGrwGg5Oy*_x`AhI=NPXBzjHB1XSrz#aK zu-1j?Fks%p{ML4ojLdP>GrPBlZ6{R^mPaZ8 z8&aL#pt2^;CQ1?W{$7M?BOkZBBf}0;()Yk;f2**T zy%_2zhUKr(#e^%GhK9%jYMU6NNmm=2!Q#3}ZJO&Dd!@Q`BxSi5Me@Q!-$&%5x}0k- zJa3TojZ)YQQ?|jaK-Bm`6z;@$4FhR~g`FsRYSj=I(_S&QvU%nRtF#o<$2^1F95~z; z$`8^>o;(gCJSN&=eSbySAms1*O0+L#BF0(9c}jwo)N4|-!}7porW1Do|PG5-h3#0#dvM@@OPe@w`G?`VggsOsSwID>UMX5@o6su{QVB zV+#x#ux+AFC6+{v#T16ZE+X^wEWZNGi8qMu6cgcY6R>G-qBm6Wjn-H<+S3eEGFPRB zZW=#10`mGJdAEkO;=5Y5bY8!m_u-R)TZcEa@NFW66CKQ%qduNQ@pQ#KTYhAPhs`%v zgWEh50E5d2_1gSEkm?9UKnzKZB6eJzI7XuX5qe#Wh4^RVhrNb2&4W-#T)L7IEP5H91>E3iXZoA!@Ec#f&H(sNMY6-9A zj+6A-6(r#e9r0)QyB>Ga_31j0mgf4eN0b-2=lb_8EBx?TP+da;4aSq8RZJiVww<_M z-MAi9{FkU6E(%Kkqz8idq6A*mJ5T47f~B_A$)QddA}dR>mGL8a-W%+s+eN#+dIh{a z?zc%JV9rA>|J(%>UoGnbB{!x_1naoP8T6n?bmB^R9{lMB z`DP>J3&&S*0J(g?mFC*_3S#(3dL>BZH`U53*N<{&O(Y}-o?aKQ@I&df?4^V} z6=xn9jSSlESaE-2xgBGrO#MO%+6?+fQjV2*(%jZ7EE6YFF>@a?>*Id;iDg#Blc|te zkG*toMP9uMYeCZ8UA%lp%r%iZU;~K476aw)rAWPNHJf2=@UQ3X@D~vU4@l0U=+D`! z%XVyt4Jj+3HTZjP*aU%Lv-t;p@*5t->kn$&tsZTH3$zQckA`I!^NDy^c^j;C{MI&7 z#UO>Ro`lOa)ZRZIx)O2PE6_Rv!*8k~Zt`OXc8~?*UH!gP`zCb>B4A9-!9r_G8nj6I zRlr?6XpWG*H@smnl33(0#gTbicp%>nbFAQ1&lX5;+eJy3a|6W>=*;aK`Xr5RpyLu6`pz$u>hPkJfFW_XMMQ(RhNrP5)fYUAZhwDpca z8@D=0V^;R-J+B(Wb7d|A@q5oqCukTya(HtNvEo_VmW7hDA~Gur+qAgex@z-;;1J28 z-IT)6+{89`lu+eNsw}v?#jY;AZyt2nLbax zrog3h2YsFyY1fmcF7AyBh25bSPo0L6tfwVqXfn^hclR(;kJv8D(n&Y$Jm`(1S2*os zJW0Z)z*YB8&_a{U%Kb+*(!Kdi4&+Nm7!?yREbX|BkIxO6MxSK8@eSFHSjS>FME%sSDZm;qX)`it8;VoSKuetR`ZK9 z4!M}c&&&qfZtK|dZv|NM!xu3{s;}ds^^cDXflbjVMC)(NnO@FsdO*jFe)HsElTFQ< z_lk<3Be#}(cD_kG@SotyS{)5{@FJShb8LM{b!_zGnDJE; zFu}o^`aJc8(hKc)4;O7T9|LAiz^cU!w>v#IjPWpoaWB_gZEzazkDJ7SK)sa{2vAq|1A8!1v&_! z>%T3#dHzia>L2L;i$1Fqu&(Q`KLJ2AB{_B3y0_pkO%-Gm5&#AU1|W-3t|{3e0}1)> z&P%5$tABMKW`*DX-N^#+A%XtYp#mXMXGQQKasO-dz=s%3@gcqZ_ekbn9cg|fxqo${ z`H__WeTh2jg8%;)A{J5jcOi8a6okb2U!#$Kk8VLo!nlZg>q~0=u;ax50O+zr1dzC( ze}AQ-it{v%1OPN50|1CC|7hpf0DzOVr#X+WlcS~z(hCy6fA*(e!=~s7K?eYyKmY*F zKjr`c7q|d`hqb4towJR{|21>Yg2C~T2mshh04M_xclbw3A_V{}U7S6wojw0K^Y6#{ z`$^Mx9#eEa004h~DE=`G02p|g#Vv@$#_)GlkvRV=J;Z(vQ2+qMdjDvu&1r=Ww@@Kvod_avp`H05 H?gaRMjA}e2 diff --git a/package.nw/gt_update.pdf b/package.nw/gt_update.pdf index ce88c1a48ca3b9033c844d0d9977ee8b4e74c46a..73a0fe5ffb39d9b5099bb25416bcb7a6e0c16151 100644 GIT binary patch delta 52322 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 delta 59924 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 GT.pota.rbnReportTimes[hash]) { GT.pota.rbnReportTimes[hash] = Date.now() + GT.pota.rbnFrequency; - reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); + // reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); } } else if (callObj.DEcall in GT.pota.callSchedule) @@ -222,7 +222,7 @@ function potaSpotFromDecode(callObj) } } -function reportPotaRBN(callSpot) +/* function reportPotaRBN(callSpot) { if (Date.now() < callSpot.expire) { @@ -253,7 +253,7 @@ function reportPotaRBN(callSpot) ); } } -} +} */ function reportPotaQSO(record) { diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index b0d83109..2816a826 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -182,10 +182,23 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (CR.rosterSettings.columns.Spot == true && CR.rosterSettings.onlySpot == true && (callObj.spot.when == 0 || (timeNowSec() - callObj.spot.when > window.opener.GT.receptionSettings.viewHistoryTimeSec))) + + if (CR.rosterSettings.columns.Spot == true) { - entry.tx = false; - continue; + callObj.spot = window.opener.getSpotTime(callObj.DEcall + callObj.mode + callObj.band + callObj.grid); + if (callObj.spot == null) + { + callObj.spot = { when: 0, snr: 0 }; + } + if (CR.rosterSettings.onlySpot == true && (callObj.spot.when == 0 || (timeNowSec() - callObj.spot.when > window.opener.GT.receptionSettings.viewHistoryTimeSec))) + { + entry.tx = false; + continue; + } + } + else + { + callObj.spot = { when: 0, snr: 0 }; } let usesOneOf = 0; diff --git a/package.nw/lib/roster/processRosterHunting.js b/package.nw/lib/roster/processRosterHunting.js index 741bf94c..db6d4b85 100644 --- a/package.nw/lib/roster/processRosterHunting.js +++ b/package.nw/lib/roster/processRosterHunting.js @@ -822,19 +822,6 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) callObj.style = colorObject; - if (CR.rosterSettings.columns.Spot) - { - callObj.spot = window.opener.getSpotTime(callObj.DEcall + callObj.mode + callObj.band + callObj.grid); - if (callObj.spot == null) - { - callObj.spot = { when: 0, snr: 0 }; - } - } - else - { - callObj.spot = { when: 0, snr: 0 }; - } - rosterSettings.modes[callObj.mode] = true; rosterSettings.bands[callObj.band] = true; } diff --git a/package.nw/package.json b/package.nw/package.json index 8894124e..e29a8cda 100644 --- a/package.nw/package.json +++ b/package.nw/package.json @@ -1,7 +1,7 @@ { "name": "GridTracker", "product_string_do_not_use": "gridtracker", - "version": "1.23.0206", + "version": "1.23.0319", "betaVersion": "", "description": "GridTracker, an amateur radio companion", "author": "GridTracker.org", From 9e73f04c5b42ead9d9e42f26abb1b54f049f5499 Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 19 Mar 2023 13:41:15 -0700 Subject: [PATCH 34/36] Lint fix --- package.nw/lib/roster/processRosterFiltering.js | 1 - 1 file changed, 1 deletion(-) diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index 2816a826..76a48c87 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -182,7 +182,6 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (CR.rosterSettings.columns.Spot == true) { callObj.spot = window.opener.getSpotTime(callObj.DEcall + callObj.mode + callObj.band + callObj.grid); From f397f78885a6b03ab9f7ff61d1eeb3559ee4982a Mon Sep 17 00:00:00 2001 From: Tag Date: Mon, 20 Mar 2023 15:35:02 -0700 Subject: [PATCH 35/36] Fixed global in sendHamZoneEntry --- package.nw/lib/adif.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js index 96899bfd..947f0b10 100644 --- a/package.nw/lib/adif.js +++ b/package.nw/lib/adif.js @@ -2870,7 +2870,7 @@ function HamZoneSendResult(buffer, flag) function sendHamZoneEntry(report) { - if (g_mapSettings.offlineMode == true) return; + if (GT.mapSettings.offlineMode == true) return; if (logHamZoneqsoCheckBox.checked == true) { From b5a6de15f845599894a1e4629fe919783229346b Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 26 Mar 2023 13:22:24 -0700 Subject: [PATCH 36/36] 0326 RC --- debian/changelog | 7 +- gridtracker.spec | 5 +- package.nw/data/mh-root-prefixed.json | 558 ++++++++++++++++++++++--- package.nw/gt_update.odt | Bin 79388 -> 80092 bytes package.nw/gt_update.pdf | Bin 70738 -> 69970 bytes package.nw/lib/gt.js | 2 +- package.nw/lib/protos.js | 10 + package.nw/lib/roster.js | 3 +- package.nw/lib/roster/rosterColumns.js | 10 +- package.nw/package.json | 2 +- 10 files changed, 529 insertions(+), 68 deletions(-) diff --git a/debian/changelog b/debian/changelog index ddb883ca..d2a31059 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ -gridtracker (1.23.0319) unstable; urgency=low +gridtracker (1.23.0326) unstable; urgency=low - POTA – fixed disappearing parks, removed auto RBNs - Pin mode – added missing band pins + - Call Roster - added UTC column for easier even/odd spotting - Call Roster – fixed “Spotted Me” exception - Call Roster – “Uses LoTW” “Uses eQSL” “Uses OQRS” now inclusive - Loggers – added HamZone.cn service @@ -10,8 +11,8 @@ gridtracker (1.23.0319) unstable; urgency=low - Map – upgraded to OpenLayers 6.15.1, Heatmap now world-wraps - Mac – “Full Stop” no longer spoken at startup - Satellite – framework started for satellite tracking - - BIGCTY – update 0204 --- Tag Loomis Sun, 19 Mar 2023 00:00:00 -0000 + - BIGCTY – update from March 19th +-- Tag Loomis Sun, 26 Mar 2023 00:00:00 -0000 gridtracker (1.23.0206) unstable; urgency=low - Bugfix for Turkey zone 1 decodes diff --git a/gridtracker.spec b/gridtracker.spec index 516e6d00..3902053b 100644 --- a/gridtracker.spec +++ b/gridtracker.spec @@ -40,9 +40,10 @@ DESTDIR=${RPM_BUILD_ROOT} make clean %license %{_docdir}/%{name}/ %changelog -* Sun Mar 19 2023 Tag Loomis - 1.23.0319-1 +* Sun Mar 26 2023 Tag Loomis - 1.23.0326-1 - POTA – fixed disappearing parks, removed auto RBNs - Pin mode – added missing band pins + - Call Roster - added UTC column for easier even/odd spotting - Call Roster – fixed “Spotted Me” exception - Call Roster – “Uses LoTW” “Uses eQSL” “Uses OQRS” now inclusive - Loggers – added HamZone.cn service @@ -52,7 +53,7 @@ DESTDIR=${RPM_BUILD_ROOT} make clean - Map – upgraded to OpenLayers 6.15.1, Heatmap now world-wraps - Mac – “Full Stop” no longer spoken at startup - Satellite – framework started for satellite tracking - - BIGCTY – update 0204 + - BIGCTY – update from March 19th * Mon Feb 06 2023 Tag Loomis - 1.23.0206-1 - Removed lightning strike detection - Bugfix for Turkey zone 1 decodes diff --git a/package.nw/data/mh-root-prefixed.json b/package.nw/data/mh-root-prefixed.json index 7fc8f28e..d50727da 100644 --- a/package.nw/data/mh-root-prefixed.json +++ b/package.nw/data/mh-root-prefixed.json @@ -1387,7 +1387,6 @@ "VA2RAG", "VA2RC", "VA2VFT", - "VA2VT", "VA2VVV", "VA3ELE/2", "VA3MPM/2", @@ -1443,7 +1442,6 @@ "VE2GT/150", "VE2HAY/P", "VE2HRI", - "VE2IDX", "VE2III", "VE2IM", "VE2KK", @@ -1516,7 +1514,7 @@ "VE9TEN/5", "VE9XX/6", "VE9ZP/4", - "VER20230204", + "VER20230319", "VF0X", "VF0X/M", "VO/DL2GF", @@ -1846,7 +1844,6 @@ "VA2RAG": "04", "VA2RC": "04", "VA2VFT": "04", - "VA2VT": "04", "VA2VVV": "04", "VA3ELE/2": "04", "VA3NA/2": "04", @@ -1881,7 +1878,6 @@ "VE2GHZ/2": "04", "VE2GT/150": "04", "VE2HRI": "04", - "VE2IDX": "04", "VE2III": "04", "VE2IM": "04", "VE2NN": "04", @@ -2007,7 +2003,6 @@ "VA2RAG": "02", "VA2RC": "02", "VA2VFT": "02", - "VA2VT": "02", "VA2VVV": "02", "VA3ELE/2": "02", "VA3NA/2": "02", @@ -2042,7 +2037,6 @@ "VE2GHZ/2": "02", "VE2GT/150": "02", "VE2HRI": "02", - "VE2IDX": "02", "VE2III": "02", "VE2IM": "02", "VE2NN": "02", @@ -2684,6 +2678,7 @@ "KB5UWU", "KB5YLG", "KB6DKJ", + "KB6HJB", "KB7AMA", "KB7BNG", "KB7BUF", @@ -2816,6 +2811,7 @@ "KD2GKT", "KD2NPD", "KD2SKJ", + "KD2ZZV", "KD4EYW", "KD4MEY", "KD4QJL", @@ -2851,11 +2847,13 @@ "KD7OTW", "KD7PXM", "KD7QAR", + "KD7RF", "KD7RYC", "KD7SIX", "KD7TOJ", "KD7TWB", "KD7UAG", + "KD7UZB", "KD7VOI", "KD7VXE", "KD7WSQ", @@ -2876,6 +2874,7 @@ "KE4DGR", "KE4LJD", "KE4MQD", + "KE4RCO", "KE4YEI", "KE4YLG", "KE5CVD", @@ -3064,6 +3063,7 @@ "KK7BVD", "KK7I", "KK7IV", + "KK7IVL", "KK7STL", "KL7D/M", "KL7NC/IMD", @@ -3135,7 +3135,7 @@ "N4NAV", "N5AAR", "N5CSO", - "N5UC", + "N5RMJ", "N5UKX", "N5WPR", "N5ZDI", @@ -3143,11 +3143,11 @@ "N6CVV", "N6CZU", "N6JM", - "N6MUQ", "N6QEK", "N6RGP", "N6ZZX", "N7BUO", + "N7CFF", "N7CGC", "N7DBN", "N7DKL", @@ -3217,7 +3217,6 @@ "W4BVB", "W4BZB", "W4RSB", - "W5AIT", "W5ERV", "W5JKT", "W5SPY", @@ -10679,6 +10678,7 @@ "R2DXU/8", "R2ET/9", "R2SD/9", + "R2VC/9", "R300NT", "R30ARCK", "R30EMER", @@ -12124,6 +12124,7 @@ "UA4RX/0", "UA4SBZ/0", "UA4WHX/9", + "UA5B/8", "UA6A/9", "UA6ANU/0", "UA6BTN/0", @@ -15383,7 +15384,6 @@ "UA9JLL/P": "31", "UA9MA/9": "31", "UA9MA/9/M": "31", - "UA9MA/M": "31", "UA9MRA/9": "31", "UA9P": "31", "UB8O": "31", @@ -15468,6 +15468,7 @@ "R6XBA/9": "31", "R9/UN7JHC": "31", "R9/UN7JMO": "31", + "R9YU/M": "31", "RA/IK5MIC": "31", "RA/IK5MIC/M": "31", "RA0CCJ/9": "31", @@ -15516,7 +15517,6 @@ "UE80AL": "31", "UI8Y": "31", "R2BZ/9": "31", - "R9YU/M": "31", "RA/IK5MIC/P": "31", "RA3DS/P": "31", "RA4FRH/9/M": "31", @@ -16316,7 +16316,6 @@ "UA9JLL/P": "18", "UA9MA/9": "18", "UA9MA/9/M": "18", - "UA9MA/M": "18", "UA9MRA/9": "18", "UA9P": "18", "UB8O": "18", @@ -16681,6 +16680,7 @@ "R6XBA/9": "18", "R9/UN7JHC": "18", "R9/UN7JMO": "18", + "R9YU/M": "18", "RA/IK5MIC": "18", "RA/IK5MIC/M": "18", "RA0CCJ/9": "18", @@ -16729,7 +16729,6 @@ "UE80AL": "18", "UI8Y": "18", "R2BZ/9": "18", - "R9YU/M": "18", "RA/IK5MIC/P": "18", "RA3DS/P": "18", "RA4FRH/9/M": "18", @@ -17715,8 +17714,6 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ - "3Y/LB1QI", - "3Y/LB5GI", "3Y/ZS6GCM", "3Y0C", "3Y0E", @@ -18086,9 +18083,7 @@ "confirmed_bands": {}, "worked_modes": {}, "confirmed_modes": {}, - "direct": [ - "VERSION" - ], + "direct": [], "prefixITU": {}, "prefixCQ": {}, "directITU": {}, @@ -20518,6 +20513,7 @@ "RA9SGI/1", "RA9ST/3/P", "RA9UEZ/6", + "RA9UF/4", "RA9ULL/6", "RA9USU/3", "RA9USU/4", @@ -20632,6 +20628,7 @@ "RM0F/3", "RM0L/1", "RM0L/3", + "RM0L/4", "RM0L/7", "RM1O", "RM1O/M", @@ -20685,6 +20682,7 @@ "RN85AM", "RN85KN", "RN90FA", + "RN9JM/6", "RN9M/4", "RN9MD/3", "RN9N/1", @@ -22113,7 +22111,6 @@ "RK0SE/1": "19", "RK1O": "19", "RM1O": "19", - "RM1O/M": "19", "RM9X/1": "19", "RO20LH": "19", "RO80KEDR": "19", @@ -22190,7 +22187,9 @@ "RP77PL": "19", "RT1Z": "19", "RU1ZC/ANT": "19", + "RV1CC/1": "19", "RW1ZQ/LH": "19", + "RW6MD/1": "19", "RY83HN": "19", "RZ1Z": "19", "RZ20LH": "19", @@ -22371,6 +22370,7 @@ "R8CZ/4/M": "30", "R8CZ/M": "30", "R8FF/M": "30", + "R8FF/P": "30", "R90BRZ": "30", "R95FR": "30", "R9CZ/4": "30", @@ -22491,8 +22491,6 @@ "RT8X": "20", "RT9X": "20", "RU8X": "20", - "RV1CC/1": "20", - "RW6MD/1": "20", "RY110RAEM": "20", "UB1OAD/1/P": "20", "UB1OAD/9/P": "20", @@ -22532,6 +22530,7 @@ "R8CZ/4/M": "17", "R8CZ/M": "17", "R8FF/M": "17", + "R8FF/P": "17", "R90BRZ": "17", "R95FR": "17", "R9CZ/4": "17", @@ -22652,8 +22651,6 @@ "RT8X": "17", "RT9X": "17", "RU8X": "17", - "RV1CC/1": "17", - "RW6MD/1": "17", "RY110RAEM": "17", "UB1OAD/1/P": "17", "UB1OAD/9/P": "17", @@ -25199,6 +25196,7 @@ "L50DVA/D", "L50DVB/D", "L53DZV/D", + "L75DT/D", "L80AA/D", "L82D/D", "L84VI/D", @@ -25222,7 +25220,6 @@ "LS4AA/H", "LT2F/D", "LT2F/F", - "LT2F/XP", "LT5D/LH", "LT5V/V", "LT5X/XP", @@ -25256,6 +25253,7 @@ "LU1BDB/D", "LU1BDR/D", "LU1BMD/D", + "LU1CBQ/D", "LU1CGB/D", "LU1CHD/D", "LU1CL/D", @@ -25558,6 +25556,7 @@ "LU2VDV/V", "LU2VJ/W", "LU2VJU/V", + "LU2VV/D", "LU2VV/V", "LU2WA/LGT", "LU2WA/W", @@ -25632,6 +25631,7 @@ "LU3DRM/H", "LU3DRP/D", "LU3DRP/E", + "LU3DSR/D", "LU3DVN/X", "LU3DVN/XP", "LU3DXG/D", @@ -25663,6 +25663,7 @@ "LU3ES/V", "LU3ES/W", "LU3ESY/D", + "LU3EU/D", "LU3EU/E", "LU3EZA/D", "LU3FCA/F", @@ -25708,6 +25709,7 @@ "LU3VTG/V", "LU3WAM/W", "LU3WDT/W", + "LU3XAP/H", "LU3XAP/XA", "LU3XEI/X", "LU3XEI/XA", @@ -26290,6 +26292,7 @@ "LU7YAZ/D", "LU7YCL/Y", "LU7YG/F", + "LU7YG/XO", "LU7YG/Y", "LU7YP/Y", "LU7YS/XA", @@ -26321,6 +26324,7 @@ "LU8DLD/XA", "LU8DLT/D", "LU8DMD/D", + "LU8DMV/W", "LU8DQ/D", "LU8DQ/Y", "LU8DR/D", @@ -26371,6 +26375,7 @@ "LU8EKB/W", "LU8EKC/D", "LU8EMC/D", + "LU8EMD/D", "LU8EOT/D", "LU8EOT/X", "LU8EOT/Y", @@ -26407,6 +26412,7 @@ "LU8VCC/U", "LU8VCC/V", "LU8VCC/W", + "LU8VCC/XO", "LU8VCC/Y", "LU8VER/D", "LU8VER/V", @@ -26562,6 +26568,7 @@ "LU9VFN/D", "LU9VRC/V", "LU9VYY/V", + "LU9WE/XA", "LU9WM/D", "LU9WZO/XA", "LU9XCC/XA", @@ -26733,6 +26740,7 @@ "LW6EEU/V", "LW6EFR/D", "LW6EGE/D", + "LW6EGE/H", "LW6EGF/D", "LW6EHD/D", "LW6ELC/D", @@ -27811,6 +27819,7 @@ "LU7WFM/W": "16", "LU7WW/LH": "16", "LU7WW/W": "16", + "LU8DMV/W": "16", "LU8DRA/W": "16", "LU8DWR/W": "16", "LU8EHQ/W": "16", @@ -27835,7 +27844,6 @@ "L20X/LH": "16", "LP0B/XP": "16", "LR1AW/X": "16", - "LT2F/XP": "16", "LT5X/XP": "16", "LU/UA4WHX/X": "16", "LU1AW/X": "16", @@ -27899,10 +27907,12 @@ "LU7XDY/X": "16", "LU7XDY/XA": "16", "LU7XSC/XP": "16", + "LU7YG/XO": "16", "LU7YS/XA": "16", "LU8DLD/XA": "16", "LU8DRA/XA": "16", "LU8EOT/X": "16", + "LU8VCC/XO": "16", "LU8XC/X": "16", "LU8XUU/XP": "16", "LU8XW/X": "16", @@ -27911,6 +27921,7 @@ "LU9DPD/XA": "16", "LU9ESD/XO": "16", "LU9HUP/X": "16", + "LU9WE/XA": "16", "LU9WZO/XA": "16", "LU9XQG/XP": "16", "LW3DKO/XA": "16", @@ -28976,6 +28987,7 @@ "GB2JTA", "GB4SGG", "GB50GSY", + "GB5IG", "GB5LIB", "GB5VAS", "GB70U", @@ -29884,7 +29896,6 @@ "K3UNS", "K4AJQ", "K4EVR", - "K4JMB", "K4RAC", "K4RBK", "K4UAI", @@ -29908,6 +29919,7 @@ "K6JAE", "K6KCW", "K6KKW", + "K6RHJ", "K6RSB", "K6TWG", "K6UCC", @@ -29923,6 +29935,7 @@ "KA0SAJ", "KA0VHP", "KA1ICJ", + "KA1MRC", "KA1YJ", "KA2IXG", "KA2WXU", @@ -30004,7 +30017,6 @@ "KC3GZT", "KC4HHS", "KC4TJB", - "KC5GAX", "KC6HOX", "KC6JAE", "KC6MCC", @@ -30036,12 +30048,12 @@ "KC8EJ", "KC8JNV", "KC8KPX", + "KC8UHF", "KC9CVX", "KC9EQS", "KC9KEX", "KC9NJG", "KC9SBG", - "KC9WIB", "KD0JNO", "KD0OLJ", "KD0OXU", @@ -30087,6 +30099,7 @@ "KD9TEZ", "KE0JSB", "KE0KIE", + "KE0TCW", "KE0TU", "KE2CX", "KE4DYE", @@ -30143,6 +30156,7 @@ "KF5JFX", "KF5MXM", "KF5MXP", + "KF5VYL", "KF6BS", "KF6FDG", "KF6IVV", @@ -30202,6 +30216,7 @@ "KG6TFI", "KG6WZD", "KG6ZRY", + "KG7ART", "KG7AYU", "KG7CJI", "KG7EUP", @@ -30295,7 +30310,6 @@ "KK6GRC", "KK6OMX", "KK6PGA", - "KK6QAI", "KK6RM", "KK6VJN", "KK6ZQ", @@ -30498,7 +30512,6 @@ "WB6CVJ", "WB6PIO", "WB6PJT", - "WB6SAA", "WB6VBM", "WB8NCD", "WD0FTF", @@ -33708,6 +33721,7 @@ "VI90ANZAC", "VI90IARU", "VK100WIA", + "VK1A/4", "VK1AHS/8", "VK1FOC/6", "VK1FOC/8", @@ -33745,17 +33759,20 @@ "VK3ZK/8", "VK3ZW", "VK4ABW/8", + "VK4BJS/7", "VK4EMS/8", "VK4FDJL/6", "VK4FDJL/8", "VK4FOC/8", "VK4HDG/8", + "VK4HFO/7", "VK4IXU/6", "VK4JWG/6", "VK4KC/8", "VK4MM/LH", "VK4NAI/6", "VK4NH/6", + "VK4NH/7", "VK4SN/6", "VK4VXX/6", "VK4VXX/8", @@ -33817,7 +33834,13 @@ "VK6ZN/5", "VK6ZN/7", "VK6ZOA/2", + "VK7AAP/4", + "VK7CLA/4", + "VK7CW/4", "VK7NWT/LH", + "VK7PAK/4", + "VK7RR/4", + "VK7TS/4", "VK80LAN", "VK8FUNN/4", "VK8GM/4", @@ -33866,10 +33889,12 @@ }, "directITU": { "VK100WIA": "55", + "VK1A/4": "55", "VK4MM/LH": "55", "VK4WIA/HQ": "55", "VK5MAV/9": "55", "VK65PFA": "55", + "VK6ANZ/4": "55", "VK6AV/4": "55", "VK6CN/4": "55", "VK6DW/4": "55", @@ -33877,11 +33902,16 @@ "VK6JON/4": "55", "VK6KM/4": "55", "VK6LC/4": "55", - "VK6MB/5": "55", "VK6NAI/4": "55", "VK6SJ/4": "55", "VK6TX/4": "55", "VK6ZN/4": "55", + "VK7AAP/4": "55", + "VK7CLA/4": "55", + "VK7CW/4": "55", + "VK7PAK/4": "55", + "VK7RR/4": "55", + "VK7TS/4": "55", "VK8FUNN/4": "55", "VK8GM/4": "55", "VK8RC/4": "55", @@ -33938,6 +33968,7 @@ "VK2CBD/8": "55", "VK2CR/8": "55", "VK2GR/8": "55", + "VK2IO/8": "55", "VK2ZK/8": "55", "VK3BYD/8": "55", "VK3DHI/8": "55", @@ -34015,6 +34046,7 @@ "VK2CBD/8": "29", "VK2CR/8": "29", "VK2GR/8": "29", + "VK2IO/8": "29", "VK2ZK/8": "29", "VK3BYD/8": "29", "VK3DHI/8": "29", @@ -34411,6 +34443,7 @@ "TX4A", "TX5CW", "TX5FS", + "TX5L", "TX60CNES", "TX8A", "TX8B", @@ -34604,7 +34637,6 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ - "AA1AB", "AA1UQ", "AA2YL", "AB2HV", @@ -34661,7 +34693,6 @@ "W2OTO", "W3FM", "W7KFS", - "WA6AC", "WE1J", "WH6ZW", "WO2G" @@ -35723,6 +35754,7 @@ "confirmed_modes": {}, "direct": [ "AX9YL", + "VJ9N", "VK2ACC/9", "VK2BYF/9", "VK2CA/9", @@ -36130,7 +36162,6 @@ "AL7KI", "K1NDN", "K1QM", - "K2CAJ", "K4C/LH", "K4LCR", "K4PFH", @@ -36233,7 +36264,6 @@ "KD9GIZ", "KD9MRY", "KD9PLJ", - "KD9TWW", "KE0AYJ", "KE0GFK", "KE0SH", @@ -36272,7 +36302,6 @@ "KI4WOB", "KI5JZC", "KI5KQH", - "KI5MKH", "KJ4KZN", "KJ4LOZ", "KJ4TAT", @@ -36377,6 +36406,7 @@ "W6WAW", "W9NKE", "WA2RVA", + "WA4BCR", "WA6RIV", "WB2HMY", "WB5YOF", @@ -37752,6 +37782,7 @@ "IQ0NV/P", "IQ0OG", "IQ0OH", + "IQ0PM", "IQ0QP", "IQ0QP/LH", "IQ0QP/P", @@ -38326,7 +38357,8 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ - "ZB2LGT/LH" + "ZB2LGT/LH", + "ZQ2YN" ], "prefixITU": {}, "prefixCQ": {}, @@ -38434,6 +38466,7 @@ "VP8DIF", "VP8DKX", "VP8DOZ", + "VP8GAA", "VP8GEO", "VP8GI", "VP8SGB", @@ -40624,6 +40657,7 @@ "GB1DDG", "GB1HSC", "GB1IMD", + "GB1PAT", "GB1RM", "GB1ROC", "GB1RP", @@ -40652,6 +40686,7 @@ "GB2MAC", "GB2MRI", "GB2OGI", + "GB2PAT", "GB2PDY", "GB2PP", "GB2PSW", @@ -41920,6 +41955,7 @@ "GB20YOTA", "GB22GM", "GB250RB", + "GB2AAW", "GB2AES", "GB2AGG", "GB2AL", @@ -42090,7 +42126,6 @@ "GB5BBS", "GB5BOH", "GB5C", - "GB5CC", "GB5CS", "GB5CWL", "GB5DHL", @@ -42099,6 +42134,7 @@ "GB5FHC", "GB5FLM", "GB5JS", + "GB5LSG", "GB5LTH", "GB5RO", "GB5RO/LH", @@ -43299,7 +43335,6 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ - "AC7FX", "AJ2O", "K2AHU", "K3BMG", @@ -44709,6 +44744,7 @@ "4U1WB", "AA0EL", "AA0WX", + "AA1AB", "AA1KS/FDR", "AA1KS/LH", "AA1KS/ME33S", @@ -44716,6 +44752,7 @@ "AA3YB", "AA6KY", "AA6MS", + "AA6T", "AA6Y", "AA7DM", "AA7RX", @@ -45205,6 +45242,7 @@ "AL7RS", "AL7RT", "AL7RT/7", + "AL7RV", "AL7T", "AL7V", "AL7W", @@ -45246,6 +45284,7 @@ "K1W", "K1WCC/LH", "K1YR", + "K2CAJ", "K2D", "K2G", "K2HVN/M", @@ -45274,11 +45313,13 @@ "K4G", "K4J", "K4JCB", + "K4JMB", "K4L", "K4LRB", "K4M", "K4O", "K4OHF", + "K4OKI", "K4P", "K4PRS", "K4QFS", @@ -45566,6 +45607,7 @@ "KC9HYY/LUS100", "KC9HYY/MMD", "KC9JDB", + "KC9WIB", "KD0EBY", "KD0ETC/LH", "KD0FDP", @@ -45617,7 +45659,9 @@ "KD8QML", "KD9LE", "KD9Q/M", + "KD9TWW", "KE0BRZ/MN", + "KE0TMB", "KE2KL", "KE4G", "KE4GAJ", @@ -46005,6 +46049,7 @@ "KH6JNK", "KH6JNW", "KH6JNY", + "KH6JPB", "KH6JPJ", "KH6JPO", "KH6JQW", @@ -46109,6 +46154,7 @@ "KH6TY", "KH6TY/R", "KH6UC", + "KH6UK", "KH6UN", "KH6UQ", "KH6USA", @@ -46134,7 +46180,6 @@ "KH6XH", "KH6XJ", "KH6XS", - "KH6XT", "KH6XX/0", "KH6YL", "KH7AL", @@ -46278,6 +46323,7 @@ "KI4WOI", "KI5DQL", "KI5EEE", + "KI5MKH", "KI6FPL", "KI6GIG", "KI6HOG", @@ -46295,6 +46341,7 @@ "KJ6SKC", "KK4YIT", "KK6DLH", + "KK6QAI", "KK6Z", "KK7OZ", "KK9W", @@ -46408,7 +46455,9 @@ "KL0ZY", "KL1A/2", "KL1AA", + "KL1AC", "KL1AE", + "KL1AH", "KL1AK", "KL1AN", "KL1AV", @@ -46445,6 +46494,7 @@ "KL1KM", "KL1KP", "KL1KU", + "KL1KW", "KL1LA", "KL1LD", "KL1LE", @@ -46678,6 +46728,7 @@ "KL3SA", "KL3SH", "KL3SM", + "KL3ST", "KL3TB", "KL3TW", "KL3TY", @@ -46688,6 +46739,7 @@ "KL3WM", "KL3X", "KL3XB", + "KL3XJ", "KL3XS", "KL3YH", "KL3ZC", @@ -46699,11 +46751,13 @@ "KL4CZ", "KL4DD", "KL4DV", + "KL4E", "KL4EJ", "KL4FX", "KL4GW", "KL4GY", "KL4H", + "KL4IP", "KL4IY", "KL4J", "KL4JN", @@ -46732,6 +46786,7 @@ "KL4UN", "KL4UZ", "KL4WV", + "KL4X", "KL4XK", "KL4XR", "KL4YFD", @@ -46741,6 +46796,7 @@ "KL5CD", "KL5CS", "KL5CX", + "KL5DY/4", "KL5GK", "KL5L", "KL5R", @@ -46750,6 +46806,7 @@ "KL7A", "KL7AB", "KL7AD", + "KL7AE", "KL7AF", "KL7AH", "KL7AK", @@ -46757,6 +46814,7 @@ "KL7AL/9", "KL7AN", "KL7AR", + "KL7AT", "KL7AU", "KL7AW", "KL7AX", @@ -46802,6 +46860,7 @@ "KL7DK", "KL7DL", "KL7DLG", + "KL7DM", "KL7DS", "KL7DSI", "KL7DT/4", @@ -46946,6 +47005,7 @@ "KL7JDQ", "KL7JDS", "KL7JEA", + "KL7JEF", "KL7JES", "KL7JEX", "KL7JFR", @@ -46964,7 +47024,6 @@ "KL7JKC", "KL7JKS", "KL7JKV", - "KL7JM", "KL7JO", "KL7JR", "KL7JR/0", @@ -46977,6 +47036,81 @@ "KL7KF", "KL7KG/7", "KL7KNP", + "KL7KTD", + "KL7KTE", + "KL7KTF", + "KL7KTG", + "KL7KTH", + "KL7KTI", + "KL7KTJ", + "KL7KTK", + "KL7KTL", + "KL7KTM", + "KL7KTN", + "KL7KTO", + "KL7KTP", + "KL7KTQ", + "KL7KTR", + "KL7KTS", + "KL7KTT", + "KL7KTU", + "KL7KTV", + "KL7KTW", + "KL7KTX", + "KL7KTY", + "KL7KTZ", + "KL7KUA", + "KL7KUB", + "KL7KUC", + "KL7KUD", + "KL7KUE", + "KL7KUF", + "KL7KUG", + "KL7KUH", + "KL7KUI", + "KL7KUJ", + "KL7KUK", + "KL7KUL", + "KL7KUM", + "KL7KUN", + "KL7KUO", + "KL7KUP", + "KL7KUQ", + "KL7KUR", + "KL7KUS", + "KL7KUT", + "KL7KUU", + "KL7KUV", + "KL7KUW", + "KL7KUX", + "KL7KUY", + "KL7KUZ", + "KL7KVA", + "KL7KVB", + "KL7KVC", + "KL7KVD", + "KL7KVE", + "KL7KVF", + "KL7KVG", + "KL7KVH", + "KL7KVI", + "KL7KVJ", + "KL7KVK", + "KL7KVL", + "KL7KVM", + "KL7KVN", + "KL7KVO", + "KL7KVP", + "KL7KVQ", + "KL7KVR", + "KL7KVS", + "KL7KVT", + "KL7KVU", + "KL7KVV", + "KL7KVW", + "KL7KVY", + "KL7KVZ", + "KL7KWA", "KL7KX", "KL7LG", "KL7LH", @@ -47150,6 +47284,7 @@ "KM7N", "KN4CCY", "KN4REC", + "KN4YTA", "KN5G", "KO4LKZ/YL", "KO4RR", @@ -47185,6 +47320,7 @@ "KP3BL", "KP3BN", "KP3BP", + "KP3DF", "KP3FT", "KP3GE", "KP3JOS", @@ -47430,6 +47566,8 @@ "KY0C", "KY7W", "KZ5DX", + "KZ9V", + "N0BHR", "N0CO", "N0DQD", "N0DXE/M", @@ -47539,6 +47677,7 @@ "N5PLN", "N5QF", "N5T/ANT", + "N5UC", "N5WE", "N5XKG", "N5YIZ", @@ -47569,7 +47708,6 @@ "N6YJG", "N6YKJ", "N7AGF", - "N7CFF", "N7CLW", "N7DF", "N7DQ", @@ -47597,6 +47735,7 @@ "N8A", "N8A/ANT", "N8HOJ", + "N8JBO", "N8JCE", "N8KIE/M", "N8MR/LH", @@ -47775,6 +47914,7 @@ "NH7IE", "NH7IG", "NH7IH", + "NH7JL", "NH7L", "NH7LZ", "NH7M", @@ -47798,6 +47938,7 @@ "NH7Q", "NH7QV", "NH7R", + "NH7RE", "NH7RO", "NH7RO/5", "NH7RO/M", @@ -47872,6 +48013,7 @@ "NL7DH", "NL7DY", "NL7EO", + "NL7FC", "NL7FF", "NL7FJ", "NL7FJ/1", @@ -47942,6 +48084,7 @@ "NL7PV", "NL7QC", "NL7QC/9", + "NL7QF", "NL7QI", "NL7RC", "NL7RL", @@ -47969,6 +48112,7 @@ "NL7V/3", "NL7VL", "NL7VP", + "NL7VR", "NL7VS", "NL7VV", "NL7VX", @@ -48086,6 +48230,7 @@ "NP3AX", "NP3BA", "NP3BL", + "NP3C", "NP3CI", "NP3CM", "NP3CT", @@ -48121,6 +48266,7 @@ "NP3PG", "NP3PH", "NP3QC", + "NP3QE", "NP3QT", "NP3R", "NP3RG", @@ -48274,6 +48420,7 @@ "W4YY", "W4ZZU", "W4ZZY", + "W5AIT", "W5B/LHT", "W5EEK", "W5GXX", @@ -48360,6 +48507,7 @@ "WA3Z", "WA4ZOF", "WA5DTK/LH", + "WA6AC", "WA6BJH", "WA6REA", "WA7DE", @@ -48386,6 +48534,7 @@ "WB6LNX", "WB6MKT", "WB6RQN", + "WB6SAA", "WB7BOR", "WB7CIV", "WB7NCN", @@ -48587,6 +48736,7 @@ "WH6EAE", "WH6EBA", "WH6EBH", + "WH6EBX", "WH6ECJ", "WH6ECO", "WH6ECQ", @@ -48613,6 +48763,7 @@ "WH6EJV", "WH6EKB", "WH6EKI", + "WH6EKV", "WH6EKW", "WH6ELG", "WH6ELM", @@ -48691,6 +48842,7 @@ "WH6GNA", "WH6GOZ", "WH6GQ", + "WH6GRE", "WH6GSX", "WH6GSY", "WH6GTV", @@ -48889,6 +49041,7 @@ "WL7BBV", "WL7BCR", "WL7BEV", + "WL7BGD", "WL7BGF", "WL7BHI", "WL7BHJ", @@ -48981,6 +49134,7 @@ "WL7HL", "WL7HP/7", "WL7I", + "WL7IG", "WL7IM", "WL7IO", "WL7IP", @@ -49393,6 +49547,7 @@ "WP4OPF", "WP4OPY", "WP4OQH", + "WP4OSB", "WP4OSQ", "WP4OTP", "WP4OUE", @@ -50516,6 +50671,7 @@ "KD0FDP": "07", "KD8LNA": "07", "KE0BRZ/MN": "07", + "KE0TMB": "07", "KF4SJ": "07", "KG4IJS/0": "07", "KH0AF": "07", @@ -50649,6 +50805,7 @@ "KS0C": "07", "KS0O": "07", "KY0C": "07", + "N0BHR": "07", "N0CO": "07", "N0DXE/M": "07", "N0GIV/CS": "07", @@ -50661,7 +50818,6 @@ "N0UGZ": "07", "N2KLQ": "07", "N3WWE": "07", - "N7CFF": "07", "N8ZPO": "07", "N9CDQ": "07", "NG7A": "07", @@ -50728,6 +50884,7 @@ "WH6DXA": "07", "WH6EAA": "07", "WH6EAE": "07", + "WH6EBX": "07", "WH6ENX": "07", "WH6FBM": "07", "WH6GG": "07", @@ -50746,6 +50903,7 @@ "WL7AJA": "07", "WL7ANY": "07", "WL7ATK": "07", + "WL7BGD": "07", "WL7BRV": "07", "WL7BT": "07", "WL7CEG": "07", @@ -50769,6 +50927,7 @@ "WP4LEY": "07", "WP4NPV": "07", "WX6X": "07", + "AA1AB": "08", "AA1KS/FDR": "08", "AA1KS/LH": "08", "AA1KS/ME33S": "08", @@ -50850,6 +51009,7 @@ "KL7IOP": "08", "KL7IXX": "08", "KL7JAU": "08", + "KL7JEF": "08", "KL7JHM": "08", "KL7JJN": "08", "KL7JR/1": "08", @@ -50902,6 +51062,7 @@ "NH6ZB": "08", "NH7FU": "08", "NL7AK": "08", + "NL7FC": "08", "NL7FJ": "08", "NL7FJ/1": "08", "NL7MO": "08", @@ -51012,6 +51173,7 @@ "AL7HB": "08", "AL7RG": "08", "AL7RK": "08", + "K2CAJ": "08", "K2D": "08", "K2G": "08", "K2HVN/M": "08", @@ -51476,10 +51638,12 @@ "K4G": "08", "K4J": "08", "K4JCB": "08", + "K4JMB": "08", "K4L": "08", "K4LRB": "08", "K4M": "08", "K4O": "08", + "K4OKI": "08", "K4P": "08", "K4PRS": "08", "K4QFS": "08", @@ -51722,12 +51886,16 @@ "KL4CZ": "08", "KL4DD": "08", "KL4DV": "08", + "KL4E": "08", "KL4H": "08", "KL4J": "08", "KL4NE": "08", + "KL4RL": "08", "KL4T": "08", "KL4WV": "08", + "KL4X": "08", "KL4XR": "08", + "KL5DY/4": "08", "KL5X": "08", "KL5YJ": "08", "KL7A": "08", @@ -51792,6 +51960,7 @@ "KP3AMG": "08", "KP3BL": "08", "KP3BP": "08", + "KP3DF": "08", "KP3SK": "08", "KP3SW": "08", "KP3U": "08", @@ -51843,7 +52012,6 @@ "KP4HE": "08", "KP4HN": "08", "KP4II": "08", - "KP4IRI": "08", "KP4IT": "08", "KP4JCC": "08", "KP4JOS": "08", @@ -51997,6 +52165,7 @@ "NL7PV": "08", "NL7U": "08", "NL7UP": "08", + "NL7VR": "08", "NL7VV": "08", "NL7VX": "08", "NL7VX/4": "08", @@ -52052,6 +52221,7 @@ "NP2W": "08", "NP3AX": "08", "NP3BL": "08", + "NP3C": "08", "NP3CI": "08", "NP3CM": "08", "NP3CT": "08", @@ -52071,6 +52241,7 @@ "NP3MX": "08", "NP3NC": "08", "NP3OW": "08", + "NP3QE": "08", "NP3QT": "08", "NP3R": "08", "NP3ST": "08", @@ -52169,6 +52340,7 @@ "WH6EIK": "08", "WH6EIQ": "08", "WH6EIR": "08", + "WH6EKV": "08", "WH6EKW": "08", "WH6ELG": "08", "WH6ELM": "08", @@ -52222,6 +52394,7 @@ "WL7CUY": "08", "WL7E/4": "08", "WL7GV": "08", + "WL7IG": "08", "WL7IO": "08", "WL7JE": "08", "WL7SR": "08", @@ -52387,6 +52560,7 @@ "WP4OPD": "08", "WP4OPF": "08", "WP4OQH": "08", + "WP4OSB": "08", "WP4OTP": "08", "WP4OXA": "08", "WP4P": "08", @@ -52579,6 +52753,7 @@ "KH8CG": "07", "KH9AE": "07", "KI5DQL": "07", + "KI5MKH": "07", "KI6FPL": "07", "KI7PEZ": "07", "KJ4ETG": "07", @@ -52632,13 +52807,13 @@ "KL3KF": "07", "KL3KH": "07", "KL3KI": "07", + "KL3ST": "07", "KL3TB": "07", "KL4JQ": "07", "KL4LJ": "07", "KL4LS": "07", "KL4QZ": "07", "KL4RA": "07", - "KL4RL": "07", "KL5BF": "07", "KL5GK": "07", "KL5L": "07", @@ -52736,6 +52911,7 @@ "N5NXG": "07", "N5QF": "07", "N5T/ANT": "07", + "N5UC": "07", "N5WE": "07", "N5XKG": "07", "N5YIZ": "07", @@ -52824,6 +53000,7 @@ "W3GW": "07", "W4BMR": "07", "W4QBW": "07", + "W5AIT": "07", "W5B/LHT": "07", "W5GXX": "07", "W5LEE": "07", @@ -52840,6 +53017,7 @@ "WA7NGX": "07", "WB6MKT": "07", "WB6RQN": "07", + "WB6SAA": "07", "WD6EZL": "07", "WD6GHJ": "07", "WH2ACT": "07", @@ -52872,6 +53050,7 @@ "WH6GKR": "07", "WH6GL": "07", "WH6GNA": "07", + "WH6GRE": "07", "WH6KK": "07", "WH6L/5": "07", "WH7DW": "07", @@ -52956,6 +53135,7 @@ "WW5DD": "07", "WY5C": "07", "AA6KY": "06", + "AA6T": "06", "AA8JA": "06", "AC5AZ": "06", "AC6H": "06", @@ -53253,6 +53433,7 @@ "KL7CN": "06", "KL7CW/6": "06", "KL7DJ": "06", + "KL7DM": "06", "KL7EAE": "06", "KL7EAL": "06", "KL7GKW": "06", @@ -53278,6 +53459,7 @@ "KL7VU/6": "06", "KM6BI": "06", "KM6EPQ": "06", + "KN4YTA": "06", "KP2BK": "06", "KP3BN": "06", "KP3YL": "06", @@ -53389,6 +53571,7 @@ "W7IV": "06", "W7IV/M": "06", "W7NUT": "06", + "WA6AC": "06", "WA7ZTA": "06", "WB6FOX": "06", "WC6B": "06", @@ -53707,6 +53890,7 @@ "K7V": "06", "K7Y": "06", "K7ZOA": "06", + "K8AF": "06", "K9WUV": "06", "KA3JJY": "06", "KA3ZOI": "06", @@ -53864,6 +54048,7 @@ "KH6SAT": "06", "KH6SS": "06", "KH6TX": "06", + "KH6UK": "06", "KH6UV": "06", "KH6VI": "06", "KH6VM": "06", @@ -53874,7 +54059,6 @@ "KH6XG": "06", "KH6XJ": "06", "KH6XS": "06", - "KH6XT": "06", "KH6YL": "06", "KH7AR": "06", "KH7AX": "06", @@ -53976,6 +54160,7 @@ "KL1JS": "06", "KL1K": "06", "KL1KU": "06", + "KL1KW": "06", "KL1LE": "06", "KL1LZ": "06", "KL1MF": "06", @@ -54057,6 +54242,7 @@ "KL4BQ": "06", "KL4FX": "06", "KL4GY": "06", + "KL4IP": "06", "KL4KF": "06", "KL4NG": "06", "KL4NX": "06", @@ -54070,6 +54256,8 @@ "KL5CX": "06", "KL7AB": "06", "KL7AD": "06", + "KL7AE": "06", + "KL7AT": "06", "KL7AW": "06", "KL7BB": "06", "KL7BD": "06", @@ -54155,6 +54343,80 @@ "KL7JKV": "06", "KL7KA": "06", "KL7KG/7": "06", + "KL7KTD": "06", + "KL7KTE": "06", + "KL7KTF": "06", + "KL7KTG": "06", + "KL7KTH": "06", + "KL7KTI": "06", + "KL7KTJ": "06", + "KL7KTK": "06", + "KL7KTL": "06", + "KL7KTM": "06", + "KL7KTN": "06", + "KL7KTO": "06", + "KL7KTP": "06", + "KL7KTQ": "06", + "KL7KTR": "06", + "KL7KTS": "06", + "KL7KTT": "06", + "KL7KTU": "06", + "KL7KTV": "06", + "KL7KTW": "06", + "KL7KTX": "06", + "KL7KTY": "06", + "KL7KTZ": "06", + "KL7KUA": "06", + "KL7KUB": "06", + "KL7KUC": "06", + "KL7KUD": "06", + "KL7KUE": "06", + "KL7KUF": "06", + "KL7KUG": "06", + "KL7KUH": "06", + "KL7KUI": "06", + "KL7KUJ": "06", + "KL7KUK": "06", + "KL7KUL": "06", + "KL7KUM": "06", + "KL7KUN": "06", + "KL7KUO": "06", + "KL7KUP": "06", + "KL7KUQ": "06", + "KL7KUR": "06", + "KL7KUS": "06", + "KL7KUT": "06", + "KL7KUU": "06", + "KL7KUV": "06", + "KL7KUW": "06", + "KL7KUY": "06", + "KL7KUZ": "06", + "KL7KVA": "06", + "KL7KVB": "06", + "KL7KVC": "06", + "KL7KVD": "06", + "KL7KVE": "06", + "KL7KVF": "06", + "KL7KVG": "06", + "KL7KVH": "06", + "KL7KVI": "06", + "KL7KVJ": "06", + "KL7KVK": "06", + "KL7KVL": "06", + "KL7KVM": "06", + "KL7KVN": "06", + "KL7KVO": "06", + "KL7KVP": "06", + "KL7KVQ": "06", + "KL7KVR": "06", + "KL7KVS": "06", + "KL7KVT": "06", + "KL7KVU": "06", + "KL7KVV": "06", + "KL7KVW": "06", + "KL7KVY": "06", + "KL7KVZ": "06", + "KL7KWA": "06", "KL7LG": "06", "KL7LI": "06", "KL7LX": "06", @@ -54306,6 +54568,7 @@ "NH6ZE": "06", "NH7DZ": "06", "NH7FZ": "06", + "NH7JL": "06", "NH7M": "06", "NH7MA": "06", "NH7MY": "06", @@ -54364,6 +54627,7 @@ "NL7NL": "06", "NL7OF": "06", "NL7PN": "06", + "NL7QF": "06", "NL7QI": "06", "NL7RL": "06", "NL7RN": "06", @@ -54662,8 +54926,8 @@ "AL7J/8": "08", "AL7JB": "08", "AL7OP": "08", + "AL7RV": "08", "K7YFP": "08", - "K8AF": "08", "K8DT/LH": "08", "K8E/LH": "08", "K8FGL/LH": "08", @@ -54729,6 +54993,7 @@ "KP4AQI": "08", "KP4E": "08", "KP4HMR": "08", + "KP4IRI": "08", "KP4MAS": "08", "KP4VZ": "08", "KP4ZD": "08", @@ -54736,6 +55001,7 @@ "N0UEP": "08", "N8A": "08", "N8A/ANT": "08", + "N8JBO": "08", "N8KIE/M": "08", "N8MR/LH": "08", "N8S": "08", @@ -54830,7 +55096,9 @@ "KC9HYY/EOI": "08", "KC9HYY/LUS100": "08", "KC9HYY/MMD": "08", + "KC9WIB": "08", "KD9Q/M": "08", + "KD9TWW": "08", "KE5DDD": "08", "KH0BE": "08", "KH2RP": "08", @@ -54881,6 +55149,7 @@ "KP4SL": "08", "KP4WG": "08", "KV4AA": "08", + "KZ9V": "08", "N3QKX": "08", "N4RIH": "08", "N8HOJ": "08", @@ -55012,6 +55281,7 @@ "KH4AF": "08", "KH6AD": "08", "KH6EO": "08", + "KH6JPB": "08", "KH6JQW": "08", "KH6KM": "08", "KH6OE": "08", @@ -55036,6 +55306,8 @@ "KL0LN": "08", "KL0PM": "08", "KL0VH": "08", + "KL1AC": "08", + "KL1AH": "08", "KL1DN": "08", "KL1IG": "08", "KL1LV": "08", @@ -55052,6 +55324,7 @@ "KL3PV": "08", "KL3RA": "08", "KL3SA": "08", + "KL3XJ": "08", "KL4EJ": "08", "KL4KA": "08", "KL5AY": "08", @@ -55092,6 +55365,7 @@ "NH7FK": "08", "NH7FL": "08", "NH7H": "08", + "NH7RE": "08", "NL7HH": "08", "NL7OE": "08", "NL7YU": "08", @@ -55152,6 +55426,7 @@ "KH6JVF": "07", "KH6OZ": "07", "KH7AL": "07", + "KK6QAI": "07", "KL0NT": "07", "KL0NV": "07", "KL0RN": "07", @@ -55167,8 +55442,8 @@ "KL7HSG": "07", "KL7JGS": "07", "KL7JGS/M": "07", - "KL7JM": "07", "KL7JUL": "07", + "KL7KUX": "07", "KL7LH": "07", "KL7MVX": "07", "KL7YY/7": "07", @@ -55271,6 +55546,7 @@ "KD0FDP": "04", "KD8LNA": "04", "KE0BRZ/MN": "04", + "KE0TMB": "04", "KF4SJ": "04", "KG4IJS/0": "04", "KH0AF": "04", @@ -55404,6 +55680,7 @@ "KS0C": "04", "KS0O": "04", "KY0C": "04", + "N0BHR": "04", "N0CO": "04", "N0DXE/M": "04", "N0GIV/CS": "04", @@ -55416,7 +55693,6 @@ "N0UGZ": "04", "N2KLQ": "04", "N3WWE": "04", - "N7CFF": "04", "N8ZPO": "04", "N9CDQ": "04", "NG7A": "04", @@ -55483,6 +55759,7 @@ "WH6DXA": "04", "WH6EAA": "04", "WH6EAE": "04", + "WH6EBX": "04", "WH6ENX": "04", "WH6FBM": "04", "WH6GG": "04", @@ -55501,6 +55778,7 @@ "WL7AJA": "04", "WL7ANY": "04", "WL7ATK": "04", + "WL7BGD": "04", "WL7BRV": "04", "WL7BT": "04", "WL7CEG": "04", @@ -55524,6 +55802,7 @@ "WP4LEY": "04", "WP4NPV": "04", "WX6X": "04", + "AA1AB": "05", "AA1KS/FDR": "05", "AA1KS/LH": "05", "AA1KS/ME33S": "05", @@ -55605,6 +55884,7 @@ "KL7IOP": "05", "KL7IXX": "05", "KL7JAU": "05", + "KL7JEF": "05", "KL7JHM": "05", "KL7JJN": "05", "KL7JR/1": "05", @@ -55657,6 +55937,7 @@ "NH6ZB": "05", "NH7FU": "05", "NL7AK": "05", + "NL7FC": "05", "NL7FJ": "05", "NL7FJ/1": "05", "NL7MO": "05", @@ -55767,6 +56048,7 @@ "AL7HB": "05", "AL7RG": "05", "AL7RK": "05", + "K2CAJ": "05", "K2D": "05", "K2G": "05", "K2HVN/M": "05", @@ -56231,10 +56513,12 @@ "K4G": "05", "K4J": "05", "K4JCB": "05", + "K4JMB": "05", "K4L": "05", "K4LRB": "05", "K4M": "05", "K4O": "05", + "K4OKI": "05", "K4P": "05", "K4PRS": "05", "K4QFS": "05", @@ -56477,12 +56761,16 @@ "KL4CZ": "05", "KL4DD": "05", "KL4DV": "05", + "KL4E": "05", "KL4H": "05", "KL4J": "05", "KL4NE": "05", + "KL4RL": "05", "KL4T": "05", "KL4WV": "05", + "KL4X": "05", "KL4XR": "05", + "KL5DY/4": "05", "KL5X": "05", "KL5YJ": "05", "KL7A": "05", @@ -56547,6 +56835,7 @@ "KP3AMG": "05", "KP3BL": "05", "KP3BP": "05", + "KP3DF": "05", "KP3SK": "05", "KP3SW": "05", "KP3U": "05", @@ -56598,7 +56887,6 @@ "KP4HE": "05", "KP4HN": "05", "KP4II": "05", - "KP4IRI": "05", "KP4IT": "05", "KP4JCC": "05", "KP4JOS": "05", @@ -56752,6 +57040,7 @@ "NL7PV": "05", "NL7U": "05", "NL7UP": "05", + "NL7VR": "05", "NL7VV": "05", "NL7VX": "05", "NL7VX/4": "05", @@ -56807,6 +57096,7 @@ "NP2W": "05", "NP3AX": "05", "NP3BL": "05", + "NP3C": "05", "NP3CI": "05", "NP3CM": "05", "NP3CT": "05", @@ -56826,6 +57116,7 @@ "NP3MX": "05", "NP3NC": "05", "NP3OW": "05", + "NP3QE": "05", "NP3QT": "05", "NP3R": "05", "NP3ST": "05", @@ -56924,6 +57215,7 @@ "WH6EIK": "05", "WH6EIQ": "05", "WH6EIR": "05", + "WH6EKV": "05", "WH6EKW": "05", "WH6ELG": "05", "WH6ELM": "05", @@ -56977,6 +57269,7 @@ "WL7CUY": "05", "WL7E/4": "05", "WL7GV": "05", + "WL7IG": "05", "WL7IO": "05", "WL7JE": "05", "WL7SR": "05", @@ -57142,6 +57435,7 @@ "WP4OPD": "05", "WP4OPF": "05", "WP4OQH": "05", + "WP4OSB": "05", "WP4OTP": "05", "WP4OXA": "05", "WP4P": "05", @@ -57334,6 +57628,7 @@ "KH8CG": "04", "KH9AE": "04", "KI5DQL": "04", + "KI5MKH": "04", "KI6FPL": "04", "KI7PEZ": "04", "KJ4ETG": "04", @@ -57387,13 +57682,13 @@ "KL3KF": "04", "KL3KH": "04", "KL3KI": "04", + "KL3ST": "04", "KL3TB": "04", "KL4JQ": "04", "KL4LJ": "04", "KL4LS": "04", "KL4QZ": "04", "KL4RA": "04", - "KL4RL": "04", "KL5BF": "04", "KL5GK": "04", "KL5L": "04", @@ -57491,6 +57786,7 @@ "N5NXG": "04", "N5QF": "04", "N5T/ANT": "04", + "N5UC": "04", "N5WE": "04", "N5XKG": "04", "N5YIZ": "04", @@ -57579,6 +57875,7 @@ "W3GW": "04", "W4BMR": "04", "W4QBW": "04", + "W5AIT": "04", "W5B/LHT": "04", "W5GXX": "04", "W5LEE": "04", @@ -57595,6 +57892,7 @@ "WA7NGX": "04", "WB6MKT": "04", "WB6RQN": "04", + "WB6SAA": "04", "WD6EZL": "04", "WD6GHJ": "04", "WH2ACT": "04", @@ -57627,6 +57925,7 @@ "WH6GKR": "04", "WH6GL": "04", "WH6GNA": "04", + "WH6GRE": "04", "WH6KK": "04", "WH6L/5": "04", "WH7DW": "04", @@ -57711,6 +58010,7 @@ "WW5DD": "04", "WY5C": "04", "AA6KY": "03", + "AA6T": "03", "AA8JA": "03", "AC5AZ": "03", "AC6H": "03", @@ -58008,6 +58308,7 @@ "KL7CN": "03", "KL7CW/6": "03", "KL7DJ": "03", + "KL7DM": "03", "KL7EAE": "03", "KL7EAL": "03", "KL7GKW": "03", @@ -58033,6 +58334,7 @@ "KL7VU/6": "03", "KM6BI": "03", "KM6EPQ": "03", + "KN4YTA": "03", "KP2BK": "03", "KP3BN": "03", "KP3YL": "03", @@ -58144,6 +58446,7 @@ "W7IV": "03", "W7IV/M": "03", "W7NUT": "03", + "WA6AC": "03", "WA7ZTA": "03", "WB6FOX": "03", "WC6B": "03", @@ -58462,6 +58765,7 @@ "K7V": "03", "K7Y": "03", "K7ZOA": "03", + "K8AF": "03", "K9WUV": "03", "KA3JJY": "03", "KA3ZOI": "03", @@ -58619,6 +58923,7 @@ "KH6SAT": "03", "KH6SS": "03", "KH6TX": "03", + "KH6UK": "03", "KH6UV": "03", "KH6VI": "03", "KH6VM": "03", @@ -58629,7 +58934,6 @@ "KH6XG": "03", "KH6XJ": "03", "KH6XS": "03", - "KH6XT": "03", "KH6YL": "03", "KH7AR": "03", "KH7AX": "03", @@ -58731,6 +59035,7 @@ "KL1JS": "03", "KL1K": "03", "KL1KU": "03", + "KL1KW": "03", "KL1LE": "03", "KL1LZ": "03", "KL1MF": "03", @@ -58812,6 +59117,7 @@ "KL4BQ": "03", "KL4FX": "03", "KL4GY": "03", + "KL4IP": "03", "KL4KF": "03", "KL4NG": "03", "KL4NX": "03", @@ -58825,6 +59131,8 @@ "KL5CX": "03", "KL7AB": "03", "KL7AD": "03", + "KL7AE": "03", + "KL7AT": "03", "KL7AW": "03", "KL7BB": "03", "KL7BD": "03", @@ -58910,6 +59218,80 @@ "KL7JKV": "03", "KL7KA": "03", "KL7KG/7": "03", + "KL7KTD": "03", + "KL7KTE": "03", + "KL7KTF": "03", + "KL7KTG": "03", + "KL7KTH": "03", + "KL7KTI": "03", + "KL7KTJ": "03", + "KL7KTK": "03", + "KL7KTL": "03", + "KL7KTM": "03", + "KL7KTN": "03", + "KL7KTO": "03", + "KL7KTP": "03", + "KL7KTQ": "03", + "KL7KTR": "03", + "KL7KTS": "03", + "KL7KTT": "03", + "KL7KTU": "03", + "KL7KTV": "03", + "KL7KTW": "03", + "KL7KTX": "03", + "KL7KTY": "03", + "KL7KTZ": "03", + "KL7KUA": "03", + "KL7KUB": "03", + "KL7KUC": "03", + "KL7KUD": "03", + "KL7KUE": "03", + "KL7KUF": "03", + "KL7KUG": "03", + "KL7KUH": "03", + "KL7KUI": "03", + "KL7KUJ": "03", + "KL7KUK": "03", + "KL7KUL": "03", + "KL7KUM": "03", + "KL7KUN": "03", + "KL7KUO": "03", + "KL7KUP": "03", + "KL7KUQ": "03", + "KL7KUR": "03", + "KL7KUS": "03", + "KL7KUT": "03", + "KL7KUU": "03", + "KL7KUV": "03", + "KL7KUW": "03", + "KL7KUY": "03", + "KL7KUZ": "03", + "KL7KVA": "03", + "KL7KVB": "03", + "KL7KVC": "03", + "KL7KVD": "03", + "KL7KVE": "03", + "KL7KVF": "03", + "KL7KVG": "03", + "KL7KVH": "03", + "KL7KVI": "03", + "KL7KVJ": "03", + "KL7KVK": "03", + "KL7KVL": "03", + "KL7KVM": "03", + "KL7KVN": "03", + "KL7KVO": "03", + "KL7KVP": "03", + "KL7KVQ": "03", + "KL7KVR": "03", + "KL7KVS": "03", + "KL7KVT": "03", + "KL7KVU": "03", + "KL7KVV": "03", + "KL7KVW": "03", + "KL7KVY": "03", + "KL7KVZ": "03", + "KL7KWA": "03", "KL7LG": "03", "KL7LI": "03", "KL7LX": "03", @@ -59061,6 +59443,7 @@ "NH6ZE": "03", "NH7DZ": "03", "NH7FZ": "03", + "NH7JL": "03", "NH7M": "03", "NH7MA": "03", "NH7MY": "03", @@ -59119,6 +59502,7 @@ "NL7NL": "03", "NL7OF": "03", "NL7PN": "03", + "NL7QF": "03", "NL7QI": "03", "NL7RL": "03", "NL7RN": "03", @@ -59417,8 +59801,8 @@ "AL7J/8": "04", "AL7JB": "04", "AL7OP": "04", + "AL7RV": "04", "K7YFP": "04", - "K8AF": "04", "K8DT/LH": "04", "K8E/LH": "04", "K8FGL/LH": "04", @@ -59484,6 +59868,7 @@ "KP4AQI": "04", "KP4E": "04", "KP4HMR": "04", + "KP4IRI": "04", "KP4MAS": "04", "KP4VZ": "04", "KP4ZD": "04", @@ -59491,6 +59876,7 @@ "N0UEP": "04", "N8A": "04", "N8A/ANT": "04", + "N8JBO": "04", "N8KIE/M": "04", "N8MR/LH": "04", "N8S": "04", @@ -59585,7 +59971,9 @@ "KC9HYY/EOI": "04", "KC9HYY/LUS100": "04", "KC9HYY/MMD": "04", + "KC9WIB": "04", "KD9Q/M": "04", + "KD9TWW": "04", "KE5DDD": "04", "KH0BE": "04", "KH2RP": "04", @@ -59636,6 +60024,7 @@ "KP4SL": "04", "KP4WG": "04", "KV4AA": "04", + "KZ9V": "04", "N3QKX": "04", "N4RIH": "04", "N8HOJ": "04", @@ -59767,6 +60156,7 @@ "KH4AF": "04", "KH6AD": "04", "KH6EO": "04", + "KH6JPB": "04", "KH6JQW": "04", "KH6KM": "04", "KH6OE": "04", @@ -59791,6 +60181,8 @@ "KL0LN": "04", "KL0PM": "04", "KL0VH": "04", + "KL1AC": "04", + "KL1AH": "04", "KL1DN": "04", "KL1IG": "04", "KL1LV": "04", @@ -59807,6 +60199,7 @@ "KL3PV": "04", "KL3RA": "04", "KL3SA": "04", + "KL3XJ": "04", "KL4EJ": "04", "KL4KA": "04", "KL5AY": "04", @@ -59847,6 +60240,7 @@ "NH7FK": "04", "NH7FL": "04", "NH7H": "04", + "NH7RE": "04", "NL7HH": "04", "NL7OE": "04", "NL7YU": "04", @@ -59907,6 +60301,7 @@ "KH6JVF": "04", "KH6OZ": "04", "KH7AL": "04", + "KK6QAI": "04", "KL0NT": "04", "KL0NV": "04", "KL0RN": "04", @@ -59922,8 +60317,8 @@ "KL7HSG": "04", "KL7JGS": "04", "KL7JGS/M": "04", - "KL7JM": "04", "KL7JUL": "04", + "KL7KUX": "04", "KL7LH": "04", "KL7MVX": "04", "KL7YY/7": "04", @@ -60295,6 +60690,7 @@ "GB0RSB", "GB0RSC", "GB0RSF", + "GB0RVW", "GB0RWM", "GB0SCB", "GB0SDD", @@ -64913,10 +65309,12 @@ "BG7JJW/UT3GF", "BG8FUL/0", "BG9XD/1", + "BG9XD/2", "BG9XD/4", "BG9XD/5", "BG9XD/7", "BH4CXY/9", + "BH6IVL/9", "BT1OY/YL", "BY1BJ/1DX", "BY1CRA/WO22", @@ -68383,6 +68781,7 @@ "BD7MQ/9": "23", "BG6IFR/9": "23", "BH4CXY/9": "23", + "BH6IVL/9": "23", "BA4DC/0": "23", "BD9BI/0": "23", "BG8FUL/0": "23", @@ -69680,7 +70079,16 @@ "LM40" ], "prefix": [ - "HN", + "HN0", + "HN1", + "HN2", + "HN3", + "HN4", + "HN5", + "HN6", + "HN7", + "HN8", + "HN9", "YI" ], "worked": false, @@ -71455,6 +71863,16 @@ "A60AAP/7", "A60AAP/8", "A60AAP/9", + "A60AP/0", + "A60AP/1", + "A60AP/2", + "A60AP/3", + "A60AP/4", + "A60AP/5", + "A60AP/6", + "A60AP/7", + "A60AP/8", + "A60AP/9", "A60ARS/1", "A60ARS/2", "A60ARS/3", @@ -72047,7 +72465,9 @@ "confirmed_bands": {}, "worked_modes": {}, "confirmed_modes": {}, - "direct": [], + "direct": [ + "VERSION" + ], "prefixITU": {}, "prefixCQ": {}, "directITU": {}, @@ -72473,7 +72893,16 @@ "JJ93" ], "prefix": [ - "TN" + "TN0", + "TN1", + "TN2", + "TN3", + "TN4", + "TN5", + "TN6", + "TN7", + "TN8", + "TN9" ], "worked": false, "confirmed": false, @@ -72892,7 +73321,16 @@ "IK70" ], "prefix": [ - "TU" + "TU0", + "TU1", + "TU2", + "TU3", + "TU4", + "TU5", + "TU6", + "TU7", + "TU8", + "TU9" ], "worked": false, "confirmed": false, @@ -75536,6 +75974,7 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ + "FO/AA7JV", "FO/AC4LN/M", "FO/DJ7RJ", "FO/DL5XU", @@ -75569,6 +76008,7 @@ "TX5VT", "TX7EU", "TX7G", + "TX7K", "TX7M", "TX7MB", "TX7T" diff --git a/package.nw/gt_update.odt b/package.nw/gt_update.odt index 9c28e09c788579a027f28068ef45cec5d4ffcb71..7dca5ebe7170e2e9d84ca58ec6bd987e71037942 100644 GIT binary patch delta 27837 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 O#n1(CwnXn2Li;}p(y7t_ delta 27097 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¥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 diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index f566ec47..a7be0312 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -6841,7 +6841,7 @@ function finalWsjtxDecode(newMessage, isFox = false, foxMessage) callsign.grid = callsign.grid.substr(0, 4); callsign.CQ = CQ; callsign.RR73 = RR73; - + callsign.UTC = toColonHMS(parseInt(newMessage.TM / 1000)); callsign.qrz = (msgDXcallsign == GT.appSettings.myCall); if (callsign.grid.length > 0 && callsign.distance == 0) diff --git a/package.nw/lib/protos.js b/package.nw/lib/protos.js index 5697de2f..00dee349 100644 --- a/package.nw/lib/protos.js +++ b/package.nw/lib/protos.js @@ -156,6 +156,16 @@ function toDHM(inputSeconds) return val; }; +function toColonHMS(inputSeconds) +{ + let seconds = inputSeconds; + let hrs = Math.floor(seconds / 3600); + seconds -= hrs * 3600; + let mnts = Math.floor(seconds / 60); + seconds -= mnts * 60; + return padNumber(hrs, 2) + ":" + padNumber(mnts, 2) + ":" + padNumber(seconds, 2); +}; + function toYM(input) { let months = input; diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index 2dfe547f..52dc2724 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -140,7 +140,8 @@ CR.defaultSettings = { Spot: false, Life: false, OAMS: true, - Age: true + Age: true, + UTC: true }, displayFilters: { brightness: 100, diff --git a/package.nw/lib/roster/rosterColumns.js b/package.nw/lib/roster/rosterColumns.js index 38371080..a364abc1 100644 --- a/package.nw/lib/roster/rosterColumns.js +++ b/package.nw/lib/roster/rosterColumns.js @@ -4,7 +4,7 @@ const DEFAULT_COLUMN_ORDER = [ "dB", "Freq", "DT", "Dist", "Azim", "CQz", "ITUz", "PX", "LoTW", "eQSL", "OQRS", - "Life", "Spot", "OAMS", "Age" + "Life", "Spot", "OAMS", "Age", "UTC" ] const LEGACY_COLUMN_SORT_ID = { @@ -353,6 +353,14 @@ const ROSTER_COLUMNS = { } }, + UTC: { + compare: callObjSimpleComparer("age"), + tableData: (callObj) => ({ + style: "color: #EEE;", + html: callObj.UTC + }) + }, + Age: { compare: callObjSimpleComparer("age"), tableData: (callObj) => ({ diff --git a/package.nw/package.json b/package.nw/package.json index e29a8cda..9483b32f 100644 --- a/package.nw/package.json +++ b/package.nw/package.json @@ -1,7 +1,7 @@ { "name": "GridTracker", "product_string_do_not_use": "gridtracker", - "version": "1.23.0319", + "version": "1.23.0326", "betaVersion": "", "description": "GridTracker, an amateur radio companion", "author": "GridTracker.org",