From bd09a85c39bd5ea0ec104d5b7795159f029ccc3d Mon Sep 17 00:00:00 2001 From: Matthias Wirth Date: Fri, 3 Jan 2020 21:16:40 +0100 Subject: [PATCH] clean history for the commit history of this git project, see the history-master branch. --- 88-tar1090.conf | 79 + 95-tar1090-otherport.conf | 33 + 99-tar1090-webroot.conf | 15 + LICENSE | 681 ++++ README.md | 226 ++ default | 24 + html/colors.css | 14 + html/config.js | 215 ++ html/dbloader.js | 153 + html/defaults.js | 229 ++ html/early.js | 141 + html/flags-tiny/Afghanistan.png | Bin 0 -> 3096 bytes html/flags-tiny/Albania.png | Bin 0 -> 3038 bytes html/flags-tiny/Algeria.png | Bin 0 -> 3075 bytes html/flags-tiny/American_Samoa.png | Bin 0 -> 3312 bytes html/flags-tiny/Andorra.png | Bin 0 -> 3070 bytes html/flags-tiny/Angola.png | Bin 0 -> 3049 bytes html/flags-tiny/Anguilla.png | Bin 0 -> 3300 bytes html/flags-tiny/Antigua_and_Barbuda.png | Bin 0 -> 3261 bytes html/flags-tiny/Argentina.png | Bin 0 -> 2965 bytes html/flags-tiny/Armenia.png | Bin 0 -> 2908 bytes html/flags-tiny/Aruba.png | Bin 0 -> 2956 bytes html/flags-tiny/Australia.png | Bin 0 -> 3378 bytes html/flags-tiny/Austria.png | Bin 0 -> 2835 bytes html/flags-tiny/Azerbaijan.png | Bin 0 -> 3042 bytes html/flags-tiny/Bahamas.png | Bin 0 -> 3018 bytes html/flags-tiny/Bahrain.png | Bin 0 -> 2924 bytes html/flags-tiny/Bangladesh.png | Bin 0 -> 3076 bytes html/flags-tiny/Barbados.png | Bin 0 -> 3037 bytes html/flags-tiny/Belarus.png | Bin 0 -> 2977 bytes html/flags-tiny/Belgium.png | Bin 0 -> 2830 bytes html/flags-tiny/Belize.png | Bin 0 -> 3190 bytes html/flags-tiny/Benin.png | Bin 0 -> 2899 bytes html/flags-tiny/Bermuda.png | Bin 0 -> 3291 bytes html/flags-tiny/Bhutan.png | Bin 0 -> 3224 bytes html/flags-tiny/Bolivia.png | Bin 0 -> 3012 bytes html/flags-tiny/Bosnia.png | Bin 0 -> 3140 bytes html/flags-tiny/Botswana.png | Bin 0 -> 2871 bytes html/flags-tiny/Brazil.png | Bin 0 -> 3264 bytes html/flags-tiny/British_Virgin_Islands.png | Bin 0 -> 3300 bytes html/flags-tiny/Brunei.png | Bin 0 -> 3261 bytes html/flags-tiny/Bulgaria.png | Bin 0 -> 2846 bytes html/flags-tiny/Burkina_Faso.png | Bin 0 -> 2948 bytes html/flags-tiny/Burundi.png | Bin 0 -> 3395 bytes html/flags-tiny/Cambodia.png | Bin 0 -> 3133 bytes html/flags-tiny/Cameroon.png | Bin 0 -> 2937 bytes html/flags-tiny/Canada.png | Bin 0 -> 3076 bytes html/flags-tiny/Cape_Verde.png | Bin 0 -> 3129 bytes html/flags-tiny/Cayman_Islands.png | Bin 0 -> 3328 bytes html/flags-tiny/Central_African_Republic.png | Bin 0 -> 3133 bytes html/flags-tiny/Chad.png | Bin 0 -> 2846 bytes html/flags-tiny/Chile.png | Bin 0 -> 2983 bytes html/flags-tiny/China.png | Bin 0 -> 2972 bytes html/flags-tiny/Christmas_Island.png | Bin 0 -> 3315 bytes html/flags-tiny/Colombia.png | Bin 0 -> 2874 bytes html/flags-tiny/Comoros.png | Bin 0 -> 3143 bytes html/flags-tiny/Cook_Islands.png | Bin 0 -> 3392 bytes html/flags-tiny/Costa_Rica.png | Bin 0 -> 2853 bytes html/flags-tiny/Cote_d_Ivoire.png | Bin 0 -> 2825 bytes html/flags-tiny/Croatia.png | Bin 0 -> 3086 bytes html/flags-tiny/Cuba.png | Bin 0 -> 3077 bytes html/flags-tiny/Cyprus.png | Bin 0 -> 2999 bytes html/flags-tiny/Cyprus_Northern.png | Bin 0 -> 3049 bytes html/flags-tiny/Czech_Republic.png | Bin 0 -> 3044 bytes .../Democratic_Republic_of_the_Congo.png | Bin 0 -> 3109 bytes html/flags-tiny/Denmark.png | Bin 0 -> 2927 bytes html/flags-tiny/Djibouti.png | Bin 0 -> 3044 bytes html/flags-tiny/Dominica.png | Bin 0 -> 3175 bytes html/flags-tiny/Dominican_Republic.png | Bin 0 -> 2981 bytes html/flags-tiny/Ecuador.png | Bin 0 -> 3021 bytes html/flags-tiny/Egypt.png | Bin 0 -> 2917 bytes html/flags-tiny/El_Salvador.png | Bin 0 -> 2945 bytes html/flags-tiny/Equatorial_Guinea.png | Bin 0 -> 3122 bytes html/flags-tiny/Eritrea.png | Bin 0 -> 3268 bytes html/flags-tiny/Estonia.png | Bin 0 -> 2857 bytes html/flags-tiny/Ethiopia.png | Bin 0 -> 3025 bytes html/flags-tiny/Falkland_Islands.png | Bin 0 -> 3324 bytes html/flags-tiny/Faroe_Islands.png | Bin 0 -> 2993 bytes html/flags-tiny/Fiji.png | Bin 0 -> 3292 bytes html/flags-tiny/Finland.png | Bin 0 -> 2944 bytes html/flags-tiny/France.png | Bin 0 -> 2826 bytes html/flags-tiny/French_Polynesia.png | Bin 0 -> 3047 bytes html/flags-tiny/Gabon.png | Bin 0 -> 2878 bytes html/flags-tiny/Gambia.png | Bin 0 -> 2847 bytes html/flags-tiny/Georgia.png | Bin 0 -> 3266 bytes html/flags-tiny/Germany.png | Bin 0 -> 2857 bytes html/flags-tiny/Ghana.png | Bin 0 -> 2976 bytes html/flags-tiny/Gibraltar.png | Bin 0 -> 2973 bytes html/flags-tiny/Greece.png | Bin 0 -> 3046 bytes html/flags-tiny/Greenland.png | Bin 0 -> 3112 bytes html/flags-tiny/Grenada.png | Bin 0 -> 3323 bytes html/flags-tiny/Guam.png | Bin 0 -> 3067 bytes html/flags-tiny/Guatemala.png | Bin 0 -> 2980 bytes html/flags-tiny/Guinea.png | Bin 0 -> 2839 bytes html/flags-tiny/Guinea_Bissau.png | Bin 0 -> 2957 bytes html/flags-tiny/Guyana.png | Bin 0 -> 3272 bytes html/flags-tiny/Haiti.png | Bin 0 -> 2862 bytes html/flags-tiny/Honduras.png | Bin 0 -> 2918 bytes html/flags-tiny/Hong_Kong.png | Bin 0 -> 3100 bytes html/flags-tiny/Hungary.png | Bin 0 -> 2838 bytes html/flags-tiny/Iceland.png | Bin 0 -> 3014 bytes html/flags-tiny/India.png | Bin 0 -> 2970 bytes html/flags-tiny/Indonesia.png | Bin 0 -> 2825 bytes html/flags-tiny/Iran.png | Bin 0 -> 3013 bytes html/flags-tiny/Iraq.png | Bin 0 -> 3030 bytes html/flags-tiny/Ireland.png | Bin 0 -> 2826 bytes html/flags-tiny/Israel.png | Bin 0 -> 3016 bytes html/flags-tiny/Italy.png | Bin 0 -> 2825 bytes html/flags-tiny/Jamaica.png | Bin 0 -> 3315 bytes html/flags-tiny/Japan.png | Bin 0 -> 2999 bytes html/flags-tiny/Jordan.png | Bin 0 -> 3063 bytes html/flags-tiny/Kazakhstan.png | Bin 0 -> 3140 bytes html/flags-tiny/Kenya.png | Bin 0 -> 3136 bytes html/flags-tiny/Kiribati.png | Bin 0 -> 3369 bytes html/flags-tiny/Kuwait.png | Bin 0 -> 2984 bytes html/flags-tiny/Kyrgyzstan.png | Bin 0 -> 2993 bytes html/flags-tiny/Laos.png | Bin 0 -> 3025 bytes html/flags-tiny/Latvia.png | Bin 0 -> 2855 bytes html/flags-tiny/Lebanon.png | Bin 0 -> 3046 bytes html/flags-tiny/Lesotho.png | Bin 0 -> 3323 bytes html/flags-tiny/Liberia.png | Bin 0 -> 2966 bytes html/flags-tiny/Libya.png | Bin 0 -> 513 bytes html/flags-tiny/Liechtenstein.png | Bin 0 -> 3004 bytes html/flags-tiny/Lithuania.png | Bin 0 -> 2877 bytes html/flags-tiny/Luxembourg.png | Bin 0 -> 2845 bytes html/flags-tiny/Macao.png | Bin 0 -> 3260 bytes html/flags-tiny/Macedonia.png | Bin 0 -> 3319 bytes html/flags-tiny/Madagascar.png | Bin 0 -> 2865 bytes html/flags-tiny/Malawi.png | Bin 0 -> 2964 bytes html/flags-tiny/Malaysia.png | Bin 0 -> 3112 bytes html/flags-tiny/Maldives.png | Bin 0 -> 3078 bytes html/flags-tiny/Mali.png | Bin 0 -> 2846 bytes html/flags-tiny/Malta.png | Bin 0 -> 2912 bytes html/flags-tiny/Marshall_Islands.png | Bin 0 -> 3360 bytes html/flags-tiny/Martinique.png | Bin 0 -> 2826 bytes html/flags-tiny/Mauritania.png | Bin 0 -> 3109 bytes html/flags-tiny/Mauritius.png | Bin 0 -> 2855 bytes html/flags-tiny/Mexico.png | Bin 0 -> 3027 bytes html/flags-tiny/Micronesia.png | Bin 0 -> 3040 bytes html/flags-tiny/Moldova.png | Bin 0 -> 3025 bytes html/flags-tiny/Monaco.png | Bin 0 -> 2850 bytes html/flags-tiny/Mongolia.png | Bin 0 -> 2975 bytes html/flags-tiny/Montenegro.png | Bin 0 -> 921 bytes html/flags-tiny/Montserrat.png | Bin 0 -> 3243 bytes html/flags-tiny/Morocco.png | Bin 0 -> 2944 bytes html/flags-tiny/Mozambique.png | Bin 0 -> 3066 bytes html/flags-tiny/Myanmar.png | Bin 0 -> 3007 bytes html/flags-tiny/Namibia.png | Bin 0 -> 3388 bytes html/flags-tiny/Nauru.png | Bin 0 -> 2992 bytes html/flags-tiny/Nepal.png | Bin 0 -> 3332 bytes html/flags-tiny/Netherlands.png | Bin 0 -> 2869 bytes html/flags-tiny/Netherlands_Antilles.png | Bin 0 -> 3065 bytes html/flags-tiny/New_Zealand.png | Bin 0 -> 3292 bytes html/flags-tiny/Nicaragua.png | Bin 0 -> 2952 bytes html/flags-tiny/Niger.png | Bin 0 -> 2940 bytes html/flags-tiny/Nigeria.png | Bin 0 -> 2831 bytes html/flags-tiny/Niue.png | Bin 0 -> 3114 bytes html/flags-tiny/Norfolk_Island.png | Bin 0 -> 3061 bytes html/flags-tiny/North_Korea.png | Bin 0 -> 3054 bytes html/flags-tiny/Norway.png | Bin 0 -> 3019 bytes html/flags-tiny/Oman.png | Bin 0 -> 3022 bytes html/flags-tiny/Pakistan.png | Bin 0 -> 3091 bytes html/flags-tiny/Palau.png | Bin 0 -> 3098 bytes html/flags-tiny/Panama.png | Bin 0 -> 3115 bytes html/flags-tiny/Papua_New_Guinea.png | Bin 0 -> 3217 bytes html/flags-tiny/Paraguay.png | Bin 0 -> 2985 bytes html/flags-tiny/Peru.png | Bin 0 -> 2831 bytes html/flags-tiny/Philippines.png | Bin 0 -> 3104 bytes html/flags-tiny/Pitcairn_Islands.png | Bin 0 -> 3347 bytes html/flags-tiny/Poland.png | Bin 0 -> 2844 bytes html/flags-tiny/Portugal.png | Bin 0 -> 3075 bytes html/flags-tiny/Puerto_Rico.png | Bin 0 -> 3121 bytes html/flags-tiny/Qatar.png | Bin 0 -> 2906 bytes html/flags-tiny/README.txt | 12 + html/flags-tiny/Republic_of_the_Congo.png | Bin 0 -> 3178 bytes html/flags-tiny/Romania.png | Bin 0 -> 2846 bytes html/flags-tiny/Russian_Federation.png | Bin 0 -> 2868 bytes html/flags-tiny/Rwanda.png | Bin 0 -> 3018 bytes html/flags-tiny/Saint_Kitts_and_Nevis.png | Bin 0 -> 3287 bytes html/flags-tiny/Saint_Lucia.png | Bin 0 -> 3084 bytes html/flags-tiny/Saint_Pierre.png | Bin 0 -> 3412 bytes .../Saint_Vicent_and_the_Grenadines.png | Bin 0 -> 3012 bytes html/flags-tiny/Samoa.png | Bin 0 -> 3029 bytes html/flags-tiny/San_Marino.png | Bin 0 -> 2844 bytes html/flags-tiny/Sao_Tome_and_Principe.png | Bin 0 -> 3183 bytes html/flags-tiny/Saudi_Arabia.png | Bin 0 -> 3143 bytes html/flags-tiny/Senegal.png | Bin 0 -> 2938 bytes html/flags-tiny/Serbia.png | Bin 0 -> 1098 bytes html/flags-tiny/Seychelles.png | Bin 0 -> 3280 bytes html/flags-tiny/Sierra_Leone.png | Bin 0 -> 2871 bytes html/flags-tiny/Singapore.png | Bin 0 -> 2971 bytes html/flags-tiny/Slovakia.png | Bin 0 -> 3129 bytes html/flags-tiny/Slovenia.png | Bin 0 -> 3061 bytes html/flags-tiny/Soloman_Islands.png | Bin 0 -> 3304 bytes html/flags-tiny/Somalia.png | Bin 0 -> 3027 bytes html/flags-tiny/South_Africa.png | Bin 0 -> 3240 bytes html/flags-tiny/South_Georgia.png | Bin 0 -> 3294 bytes html/flags-tiny/South_Korea.png | Bin 0 -> 3246 bytes html/flags-tiny/Soviet_Union.png | Bin 0 -> 2876 bytes html/flags-tiny/Spain.png | Bin 0 -> 2861 bytes html/flags-tiny/Sri_Lanka.png | Bin 0 -> 3251 bytes html/flags-tiny/Sudan.png | Bin 0 -> 3028 bytes html/flags-tiny/Suriname.png | Bin 0 -> 2956 bytes html/flags-tiny/Swaziland.png | Bin 0 -> 3232 bytes html/flags-tiny/Sweden.png | Bin 0 -> 2983 bytes html/flags-tiny/Switzerland.png | Bin 0 -> 3073 bytes html/flags-tiny/Syria.png | Bin 0 -> 3004 bytes html/flags-tiny/Taiwan.png | Bin 0 -> 3012 bytes html/flags-tiny/Tajikistan.png | Bin 0 -> 2966 bytes html/flags-tiny/Tanzania.png | Bin 0 -> 3230 bytes html/flags-tiny/Thailand.png | Bin 0 -> 2855 bytes html/flags-tiny/Tibet.png | Bin 0 -> 3490 bytes html/flags-tiny/Timor-Leste.png | Bin 0 -> 3088 bytes html/flags-tiny/Togo.png | Bin 0 -> 3027 bytes html/flags-tiny/Tonga.png | Bin 0 -> 2971 bytes html/flags-tiny/Trinidad_and_Tobago.png | Bin 0 -> 3186 bytes html/flags-tiny/Tunisia.png | Bin 0 -> 3059 bytes html/flags-tiny/Turkey.png | Bin 0 -> 3065 bytes html/flags-tiny/Turkmenistan.png | Bin 0 -> 3091 bytes html/flags-tiny/Turks_and_Caicos_Islands.png | Bin 0 -> 3288 bytes html/flags-tiny/Tuvalu.png | Bin 0 -> 3372 bytes html/flags-tiny/UAE.png | Bin 0 -> 2923 bytes html/flags-tiny/US_Virgin_Islands.png | Bin 0 -> 3308 bytes html/flags-tiny/Uganda.png | Bin 0 -> 3016 bytes html/flags-tiny/Ukraine.png | Bin 0 -> 2829 bytes html/flags-tiny/United_Kingdom.png | Bin 0 -> 3465 bytes html/flags-tiny/United_States_of_America.png | Bin 0 -> 3022 bytes html/flags-tiny/Uruguay.png | Bin 0 -> 3056 bytes html/flags-tiny/Uzbekistan.png | Bin 0 -> 2965 bytes html/flags-tiny/Vanuatu.png | Bin 0 -> 3167 bytes html/flags-tiny/Vatican_City.png | Bin 0 -> 3047 bytes html/flags-tiny/Venezuela.png | Bin 0 -> 2959 bytes html/flags-tiny/Vietnam.png | Bin 0 -> 2988 bytes html/flags-tiny/Wallis_and_Futuna.png | Bin 0 -> 3180 bytes html/flags-tiny/Yemen.png | Bin 0 -> 2830 bytes html/flags-tiny/Yugoslavia.png | Bin 0 -> 192 bytes html/flags-tiny/Zambia.png | Bin 0 -> 2992 bytes html/flags-tiny/Zimbabwe.png | Bin 0 -> 3110 bytes html/flags-tiny/blank.png | Bin 0 -> 2808 bytes html/flags.js | 234 ++ html/formatter.js | 309 ++ html/images/alt_legend_feet.svg | 1 + html/images/alt_legend_meters.svg | 1 + html/images/box-checked.png | Bin 0 -> 197 bytes html/images/box-checked@2x.png | Bin 0 -> 292 bytes html/images/box-checked@3x.png | Bin 0 -> 325 bytes html/images/box-empty.png | Bin 0 -> 182 bytes html/images/box-empty@2x.png | Bin 0 -> 232 bytes html/images/box-empty@3x.png | Bin 0 -> 281 bytes html/images/close-settings.png | Bin 0 -> 482 bytes html/images/close-settings@2x.png | Bin 0 -> 874 bytes html/images/close-settings@3x.png | Bin 0 -> 1260 bytes html/images/column-adjust.png | Bin 0 -> 329 bytes html/images/column-adjust@2x.png | Bin 0 -> 494 bytes html/images/column-adjust@3x.png | Bin 0 -> 629 bytes html/images/fa_logo_color.png | Bin 0 -> 1990 bytes html/images/fa_logo_color@2x.png | Bin 0 -> 3936 bytes html/images/fa_logo_color@3x.png | Bin 0 -> 6018 bytes html/images/ff-sv-logo.png | Bin 0 -> 2172 bytes html/images/ff-sv-logo@2x.png | Bin 0 -> 4400 bytes html/images/ff-sv-logo@3x.png | Bin 0 -> 6592 bytes html/images/hide_sidebar_active_48x40.png | Bin 0 -> 1961 bytes html/images/hide_sidebar_inactive_48x40.png | Bin 0 -> 1833 bytes html/images/icon-information@2x.png | Bin 0 -> 1168 bytes html/images/map-icon.png | Bin 0 -> 700 bytes html/images/map-icon@2x.png | Bin 0 -> 1341 bytes html/images/map-icon@3x.png | Bin 0 -> 1826 bytes html/images/pa-sv-logo.png | Bin 0 -> 1861 bytes html/images/pa-sv-logo@2x.png | Bin 0 -> 3902 bytes html/images/pa-sv-logo@3x.png | Bin 0 -> 6075 bytes html/images/settings-icon.png | Bin 0 -> 10662 bytes html/images/settings-icon@2x.png | Bin 0 -> 805 bytes html/images/settings-icon@3x.png | Bin 0 -> 1159 bytes html/images/show_sidebar_active_48x40.png | Bin 0 -> 1997 bytes html/images/show_sidebar_inactive_48x40.png | Bin 0 -> 1839 bytes html/images/table-icon.png | Bin 0 -> 699 bytes html/images/table-icon@2x.png | Bin 0 -> 914 bytes html/images/table-icon@3x.png | Bin 0 -> 1085 bytes html/images/tar1090-favicon.png | Bin 0 -> 9069 bytes html/images/toggle-height@2x.png | Bin 0 -> 780 bytes html/images/toggle-width@2x.png | Bin 0 -> 778 bytes html/images/zoom-in.png | Bin 0 -> 439 bytes html/images/zoom-in@2x.png | Bin 0 -> 705 bytes html/images/zoom-in@3x.png | Bin 0 -> 917 bytes html/images/zoom-out.png | Bin 0 -> 379 bytes html/images/zoom-out@2x.png | Bin 0 -> 598 bytes html/images/zoom-out@3x.png | Bin 0 -> 834 bytes html/index.html | 761 ++++ html/jquery/README | 3 + html/jquery/jquery-3.4.1.min.js | 2 + html/jquery/jquery-ui-1.11.4-smoothness.css | 1225 +++++++ html/jquery/jquery-ui-1.11.4.min.js | 13 + html/jquery/jquery.ui.touch-punch.min.js | 11 + html/layers.js | 182 + html/markers.js | 377 ++ html/ol/ol-layerswitcher340.css | 123 + html/ol/ol-layerswitcher340.js | 615 ++++ html/ol/ol533.css | 2 + html/ol/ol533.js | 8 + html/planeObject.js | 1545 ++++++++ html/registrations.js | 320 ++ html/script.js | 3093 +++++++++++++++++ html/spinny.gif | Bin 0 -> 80649 bytes html/style.css | 754 ++++ install.sh | 301 ++ nginx.conf | 53 + nginx_webroot.conf | 53 + tar1090.service | 21 + tar1090.sh | 216 ++ uninstall.sh | 33 + 310 files changed, 12078 insertions(+) create mode 100644 88-tar1090.conf create mode 100644 95-tar1090-otherport.conf create mode 100644 99-tar1090-webroot.conf create mode 100644 LICENSE create mode 100644 README.md create mode 100644 default create mode 100644 html/colors.css create mode 100644 html/config.js create mode 100644 html/dbloader.js create mode 100644 html/defaults.js create mode 100644 html/early.js create mode 100644 html/flags-tiny/Afghanistan.png create mode 100644 html/flags-tiny/Albania.png create mode 100644 html/flags-tiny/Algeria.png create mode 100644 html/flags-tiny/American_Samoa.png create mode 100644 html/flags-tiny/Andorra.png create mode 100644 html/flags-tiny/Angola.png create mode 100644 html/flags-tiny/Anguilla.png create mode 100644 html/flags-tiny/Antigua_and_Barbuda.png create mode 100644 html/flags-tiny/Argentina.png create mode 100644 html/flags-tiny/Armenia.png create mode 100644 html/flags-tiny/Aruba.png create mode 100644 html/flags-tiny/Australia.png create mode 100644 html/flags-tiny/Austria.png create mode 100644 html/flags-tiny/Azerbaijan.png create mode 100644 html/flags-tiny/Bahamas.png create mode 100644 html/flags-tiny/Bahrain.png create mode 100644 html/flags-tiny/Bangladesh.png create mode 100644 html/flags-tiny/Barbados.png create mode 100644 html/flags-tiny/Belarus.png create mode 100644 html/flags-tiny/Belgium.png create mode 100644 html/flags-tiny/Belize.png create mode 100644 html/flags-tiny/Benin.png create mode 100644 html/flags-tiny/Bermuda.png create mode 100644 html/flags-tiny/Bhutan.png create mode 100644 html/flags-tiny/Bolivia.png create mode 100644 html/flags-tiny/Bosnia.png create mode 100644 html/flags-tiny/Botswana.png create mode 100644 html/flags-tiny/Brazil.png create mode 100644 html/flags-tiny/British_Virgin_Islands.png create mode 100644 html/flags-tiny/Brunei.png create mode 100644 html/flags-tiny/Bulgaria.png create mode 100644 html/flags-tiny/Burkina_Faso.png create mode 100644 html/flags-tiny/Burundi.png create mode 100644 html/flags-tiny/Cambodia.png create mode 100644 html/flags-tiny/Cameroon.png create mode 100644 html/flags-tiny/Canada.png create mode 100644 html/flags-tiny/Cape_Verde.png create mode 100644 html/flags-tiny/Cayman_Islands.png create mode 100644 html/flags-tiny/Central_African_Republic.png create mode 100644 html/flags-tiny/Chad.png create mode 100644 html/flags-tiny/Chile.png create mode 100644 html/flags-tiny/China.png create mode 100644 html/flags-tiny/Christmas_Island.png create mode 100644 html/flags-tiny/Colombia.png create mode 100644 html/flags-tiny/Comoros.png create mode 100644 html/flags-tiny/Cook_Islands.png create mode 100644 html/flags-tiny/Costa_Rica.png create mode 100644 html/flags-tiny/Cote_d_Ivoire.png create mode 100644 html/flags-tiny/Croatia.png create mode 100644 html/flags-tiny/Cuba.png create mode 100644 html/flags-tiny/Cyprus.png create mode 100644 html/flags-tiny/Cyprus_Northern.png create mode 100644 html/flags-tiny/Czech_Republic.png create mode 100644 html/flags-tiny/Democratic_Republic_of_the_Congo.png create mode 100644 html/flags-tiny/Denmark.png create mode 100644 html/flags-tiny/Djibouti.png create mode 100644 html/flags-tiny/Dominica.png create mode 100644 html/flags-tiny/Dominican_Republic.png create mode 100644 html/flags-tiny/Ecuador.png create mode 100644 html/flags-tiny/Egypt.png create mode 100644 html/flags-tiny/El_Salvador.png create mode 100644 html/flags-tiny/Equatorial_Guinea.png create mode 100644 html/flags-tiny/Eritrea.png create mode 100644 html/flags-tiny/Estonia.png create mode 100644 html/flags-tiny/Ethiopia.png create mode 100644 html/flags-tiny/Falkland_Islands.png create mode 100644 html/flags-tiny/Faroe_Islands.png create mode 100644 html/flags-tiny/Fiji.png create mode 100644 html/flags-tiny/Finland.png create mode 100644 html/flags-tiny/France.png create mode 100644 html/flags-tiny/French_Polynesia.png create mode 100644 html/flags-tiny/Gabon.png create mode 100644 html/flags-tiny/Gambia.png create mode 100644 html/flags-tiny/Georgia.png create mode 100644 html/flags-tiny/Germany.png create mode 100644 html/flags-tiny/Ghana.png create mode 100644 html/flags-tiny/Gibraltar.png create mode 100644 html/flags-tiny/Greece.png create mode 100644 html/flags-tiny/Greenland.png create mode 100644 html/flags-tiny/Grenada.png create mode 100644 html/flags-tiny/Guam.png create mode 100644 html/flags-tiny/Guatemala.png create mode 100644 html/flags-tiny/Guinea.png create mode 100644 html/flags-tiny/Guinea_Bissau.png create mode 100644 html/flags-tiny/Guyana.png create mode 100644 html/flags-tiny/Haiti.png create mode 100644 html/flags-tiny/Honduras.png create mode 100644 html/flags-tiny/Hong_Kong.png create mode 100644 html/flags-tiny/Hungary.png create mode 100644 html/flags-tiny/Iceland.png create mode 100644 html/flags-tiny/India.png create mode 100644 html/flags-tiny/Indonesia.png create mode 100644 html/flags-tiny/Iran.png create mode 100644 html/flags-tiny/Iraq.png create mode 100644 html/flags-tiny/Ireland.png create mode 100644 html/flags-tiny/Israel.png create mode 100644 html/flags-tiny/Italy.png create mode 100644 html/flags-tiny/Jamaica.png create mode 100644 html/flags-tiny/Japan.png create mode 100644 html/flags-tiny/Jordan.png create mode 100644 html/flags-tiny/Kazakhstan.png create mode 100644 html/flags-tiny/Kenya.png create mode 100644 html/flags-tiny/Kiribati.png create mode 100644 html/flags-tiny/Kuwait.png create mode 100644 html/flags-tiny/Kyrgyzstan.png create mode 100644 html/flags-tiny/Laos.png create mode 100644 html/flags-tiny/Latvia.png create mode 100644 html/flags-tiny/Lebanon.png create mode 100644 html/flags-tiny/Lesotho.png create mode 100644 html/flags-tiny/Liberia.png create mode 100644 html/flags-tiny/Libya.png create mode 100644 html/flags-tiny/Liechtenstein.png create mode 100644 html/flags-tiny/Lithuania.png create mode 100644 html/flags-tiny/Luxembourg.png create mode 100644 html/flags-tiny/Macao.png create mode 100644 html/flags-tiny/Macedonia.png create mode 100644 html/flags-tiny/Madagascar.png create mode 100644 html/flags-tiny/Malawi.png create mode 100644 html/flags-tiny/Malaysia.png create mode 100644 html/flags-tiny/Maldives.png create mode 100644 html/flags-tiny/Mali.png create mode 100644 html/flags-tiny/Malta.png create mode 100644 html/flags-tiny/Marshall_Islands.png create mode 100644 html/flags-tiny/Martinique.png create mode 100644 html/flags-tiny/Mauritania.png create mode 100644 html/flags-tiny/Mauritius.png create mode 100644 html/flags-tiny/Mexico.png create mode 100644 html/flags-tiny/Micronesia.png create mode 100644 html/flags-tiny/Moldova.png create mode 100644 html/flags-tiny/Monaco.png create mode 100644 html/flags-tiny/Mongolia.png create mode 100644 html/flags-tiny/Montenegro.png create mode 100644 html/flags-tiny/Montserrat.png create mode 100644 html/flags-tiny/Morocco.png create mode 100644 html/flags-tiny/Mozambique.png create mode 100644 html/flags-tiny/Myanmar.png create mode 100644 html/flags-tiny/Namibia.png create mode 100644 html/flags-tiny/Nauru.png create mode 100644 html/flags-tiny/Nepal.png create mode 100644 html/flags-tiny/Netherlands.png create mode 100644 html/flags-tiny/Netherlands_Antilles.png create mode 100644 html/flags-tiny/New_Zealand.png create mode 100644 html/flags-tiny/Nicaragua.png create mode 100644 html/flags-tiny/Niger.png create mode 100644 html/flags-tiny/Nigeria.png create mode 100644 html/flags-tiny/Niue.png create mode 100644 html/flags-tiny/Norfolk_Island.png create mode 100644 html/flags-tiny/North_Korea.png create mode 100644 html/flags-tiny/Norway.png create mode 100644 html/flags-tiny/Oman.png create mode 100644 html/flags-tiny/Pakistan.png create mode 100644 html/flags-tiny/Palau.png create mode 100644 html/flags-tiny/Panama.png create mode 100644 html/flags-tiny/Papua_New_Guinea.png create mode 100644 html/flags-tiny/Paraguay.png create mode 100644 html/flags-tiny/Peru.png create mode 100644 html/flags-tiny/Philippines.png create mode 100644 html/flags-tiny/Pitcairn_Islands.png create mode 100644 html/flags-tiny/Poland.png create mode 100644 html/flags-tiny/Portugal.png create mode 100644 html/flags-tiny/Puerto_Rico.png create mode 100644 html/flags-tiny/Qatar.png create mode 100644 html/flags-tiny/README.txt create mode 100644 html/flags-tiny/Republic_of_the_Congo.png create mode 100644 html/flags-tiny/Romania.png create mode 100644 html/flags-tiny/Russian_Federation.png create mode 100644 html/flags-tiny/Rwanda.png create mode 100644 html/flags-tiny/Saint_Kitts_and_Nevis.png create mode 100644 html/flags-tiny/Saint_Lucia.png create mode 100644 html/flags-tiny/Saint_Pierre.png create mode 100644 html/flags-tiny/Saint_Vicent_and_the_Grenadines.png create mode 100644 html/flags-tiny/Samoa.png create mode 100644 html/flags-tiny/San_Marino.png create mode 100644 html/flags-tiny/Sao_Tome_and_Principe.png create mode 100644 html/flags-tiny/Saudi_Arabia.png create mode 100644 html/flags-tiny/Senegal.png create mode 100644 html/flags-tiny/Serbia.png create mode 100644 html/flags-tiny/Seychelles.png create mode 100644 html/flags-tiny/Sierra_Leone.png create mode 100644 html/flags-tiny/Singapore.png create mode 100644 html/flags-tiny/Slovakia.png create mode 100644 html/flags-tiny/Slovenia.png create mode 100644 html/flags-tiny/Soloman_Islands.png create mode 100644 html/flags-tiny/Somalia.png create mode 100644 html/flags-tiny/South_Africa.png create mode 100644 html/flags-tiny/South_Georgia.png create mode 100644 html/flags-tiny/South_Korea.png create mode 100644 html/flags-tiny/Soviet_Union.png create mode 100644 html/flags-tiny/Spain.png create mode 100644 html/flags-tiny/Sri_Lanka.png create mode 100644 html/flags-tiny/Sudan.png create mode 100644 html/flags-tiny/Suriname.png create mode 100644 html/flags-tiny/Swaziland.png create mode 100644 html/flags-tiny/Sweden.png create mode 100644 html/flags-tiny/Switzerland.png create mode 100644 html/flags-tiny/Syria.png create mode 100644 html/flags-tiny/Taiwan.png create mode 100644 html/flags-tiny/Tajikistan.png create mode 100644 html/flags-tiny/Tanzania.png create mode 100644 html/flags-tiny/Thailand.png create mode 100644 html/flags-tiny/Tibet.png create mode 100644 html/flags-tiny/Timor-Leste.png create mode 100644 html/flags-tiny/Togo.png create mode 100644 html/flags-tiny/Tonga.png create mode 100644 html/flags-tiny/Trinidad_and_Tobago.png create mode 100644 html/flags-tiny/Tunisia.png create mode 100644 html/flags-tiny/Turkey.png create mode 100644 html/flags-tiny/Turkmenistan.png create mode 100644 html/flags-tiny/Turks_and_Caicos_Islands.png create mode 100644 html/flags-tiny/Tuvalu.png create mode 100644 html/flags-tiny/UAE.png create mode 100644 html/flags-tiny/US_Virgin_Islands.png create mode 100644 html/flags-tiny/Uganda.png create mode 100644 html/flags-tiny/Ukraine.png create mode 100644 html/flags-tiny/United_Kingdom.png create mode 100644 html/flags-tiny/United_States_of_America.png create mode 100644 html/flags-tiny/Uruguay.png create mode 100644 html/flags-tiny/Uzbekistan.png create mode 100644 html/flags-tiny/Vanuatu.png create mode 100644 html/flags-tiny/Vatican_City.png create mode 100644 html/flags-tiny/Venezuela.png create mode 100644 html/flags-tiny/Vietnam.png create mode 100644 html/flags-tiny/Wallis_and_Futuna.png create mode 100644 html/flags-tiny/Yemen.png create mode 100644 html/flags-tiny/Yugoslavia.png create mode 100644 html/flags-tiny/Zambia.png create mode 100644 html/flags-tiny/Zimbabwe.png create mode 100644 html/flags-tiny/blank.png create mode 100644 html/flags.js create mode 100644 html/formatter.js create mode 100644 html/images/alt_legend_feet.svg create mode 100644 html/images/alt_legend_meters.svg create mode 100644 html/images/box-checked.png create mode 100644 html/images/box-checked@2x.png create mode 100644 html/images/box-checked@3x.png create mode 100644 html/images/box-empty.png create mode 100644 html/images/box-empty@2x.png create mode 100644 html/images/box-empty@3x.png create mode 100644 html/images/close-settings.png create mode 100644 html/images/close-settings@2x.png create mode 100644 html/images/close-settings@3x.png create mode 100644 html/images/column-adjust.png create mode 100644 html/images/column-adjust@2x.png create mode 100644 html/images/column-adjust@3x.png create mode 100644 html/images/fa_logo_color.png create mode 100644 html/images/fa_logo_color@2x.png create mode 100644 html/images/fa_logo_color@3x.png create mode 100644 html/images/ff-sv-logo.png create mode 100644 html/images/ff-sv-logo@2x.png create mode 100644 html/images/ff-sv-logo@3x.png create mode 100644 html/images/hide_sidebar_active_48x40.png create mode 100644 html/images/hide_sidebar_inactive_48x40.png create mode 100644 html/images/icon-information@2x.png create mode 100644 html/images/map-icon.png create mode 100644 html/images/map-icon@2x.png create mode 100644 html/images/map-icon@3x.png create mode 100644 html/images/pa-sv-logo.png create mode 100644 html/images/pa-sv-logo@2x.png create mode 100644 html/images/pa-sv-logo@3x.png create mode 100644 html/images/settings-icon.png create mode 100644 html/images/settings-icon@2x.png create mode 100644 html/images/settings-icon@3x.png create mode 100644 html/images/show_sidebar_active_48x40.png create mode 100644 html/images/show_sidebar_inactive_48x40.png create mode 100644 html/images/table-icon.png create mode 100644 html/images/table-icon@2x.png create mode 100644 html/images/table-icon@3x.png create mode 100644 html/images/tar1090-favicon.png create mode 100644 html/images/toggle-height@2x.png create mode 100644 html/images/toggle-width@2x.png create mode 100644 html/images/zoom-in.png create mode 100644 html/images/zoom-in@2x.png create mode 100644 html/images/zoom-in@3x.png create mode 100644 html/images/zoom-out.png create mode 100644 html/images/zoom-out@2x.png create mode 100644 html/images/zoom-out@3x.png create mode 100644 html/index.html create mode 100644 html/jquery/README create mode 100644 html/jquery/jquery-3.4.1.min.js create mode 100644 html/jquery/jquery-ui-1.11.4-smoothness.css create mode 100644 html/jquery/jquery-ui-1.11.4.min.js create mode 100644 html/jquery/jquery.ui.touch-punch.min.js create mode 100644 html/layers.js create mode 100644 html/markers.js create mode 100644 html/ol/ol-layerswitcher340.css create mode 100644 html/ol/ol-layerswitcher340.js create mode 100644 html/ol/ol533.css create mode 100644 html/ol/ol533.js create mode 100644 html/planeObject.js create mode 100644 html/registrations.js create mode 100644 html/script.js create mode 100644 html/spinny.gif create mode 100644 html/style.css create mode 100755 install.sh create mode 100644 nginx.conf create mode 100644 nginx_webroot.conf create mode 100644 tar1090.service create mode 100755 tar1090.sh create mode 100755 uninstall.sh diff --git a/88-tar1090.conf b/88-tar1090.conf new file mode 100644 index 0000000..e722787 --- /dev/null +++ b/88-tar1090.conf @@ -0,0 +1,79 @@ +#lighttpd configuration for tar1090 + +alias.url += ( + "/INSTANCE/data/" => "SOURCE_DIR/", + "/INSTANCE/chunks/" => "/run/SERVICE/", + "/INSTANCE/" => "HTMLPATH/" +) + +# redirect the slash-less URL +url.redirect += ( + "^/INSTANCE$" => "/INSTANCE/" +) + +$HTTP["url"] =~ "^/INSTANCE/chunks/chunk_.*gz$" { + setenv.add-response-header += ( + "Access-Control-Allow-Origin" => "*", + "Cache-Control" => "public, max-age=1209600", + "Content-Encoding" => "gzip", + "Content-Type" => "application/json", + ) +} +$HTTP["url"] =~ "^/INSTANCE/chunks/current_.*gz$" { + setenv.add-response-header += ( + "Access-Control-Allow-Origin" => "*", + "Cache-Control" => "public, max-age=0", + "Content-Encoding" => "gzip", + "Content-Type" => "application/json", + ) +} +$HTTP["url"] =~ "^/INSTANCE/chunks/978\.json$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=0", + ) +} +$HTTP["url"] =~ "^/INSTANCE/data/aircraft\.json$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=0", + ) +} +$HTTP["url"] =~ "^/INSTANCE/data/globe_.*\.json$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=0", + ) +} +$HTTP["url"] =~ "^/INSTANCE/data/icao_.*\.json$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=10", + ) +} +$HTTP["url"] =~ "^/INSTANCE/db/.*\.json$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=1209600", + ) +} +$HTTP["url"] =~ "^/INSTANCE/.*\.png$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=2419200", + ) +} +$HTTP["url"] =~ "^/INSTANCE/spinny.gif$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=1209600", + ) +} +$HTTP["url"] =~ "^/INSTANCE/.*\.js$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=1209600", + ) +} +$HTTP["url"] =~ "^/INSTANCE/config.js$" { + setenv.add-response-header += ( + "Cache-Control" => "must-revalidate", + ) +} +$HTTP["url"] =~ "^/INSTANCE/.*\.css$" { + setenv.add-response-header += ( + "Cache-Control" => "public, max-age=1209600", + ) +} diff --git a/95-tar1090-otherport.conf b/95-tar1090-otherport.conf new file mode 100644 index 0000000..1df3caa --- /dev/null +++ b/95-tar1090-otherport.conf @@ -0,0 +1,33 @@ +# serve tar1090 directly on port 8504 +$SERVER["socket"] == ":8504" { + alias.url += ( + "/data/" => "/run/dump1090-fa/", + "/chunks/" => "/run/tar1090/", + "/" => "/usr/local/share/tar1090/html/", + ) + + $HTTP["url"] =~ "^/chunks/chunk_.*gz$" { + setenv.add-response-header += ( + "Access-Control-Allow-Origin" => "*", + "Cache-Control" => "must-revalidate", + "Content-Encoding" => "gzip", + "Content-Type" => "application/json", + ) + } +} +$SERVER["socket"] == "[::]:8504" { + alias.url += ( + "/data/" => "/run/dump1090-fa/", + "/chunks/" => "/run/tar1090/", + "/" => "/usr/local/share/tar1090/html/", + ) + + $HTTP["url"] =~ "^/chunks/chunk_.*gz$" { + setenv.add-response-header += ( + "Access-Control-Allow-Origin" => "*", + "Cache-Control" => "must-revalidate", + "Content-Encoding" => "gzip", + "Content-Type" => "application/json", + ) + } +} diff --git a/99-tar1090-webroot.conf b/99-tar1090-webroot.conf new file mode 100644 index 0000000..57a5828 --- /dev/null +++ b/99-tar1090-webroot.conf @@ -0,0 +1,15 @@ +# serve tar1090 directly at / the web server root +alias.url += ( + "/data/" => "/run/dump1090-fa/", + "/chunks/" => "/run/tar1090/", + "/" => "/usr/local/share/tar1090/html/", +) + +$HTTP["url"] =~ "^/chunks/chunk_.*gz$" { + setenv.add-response-header += ( + "Access-Control-Allow-Origin" => "*", + "Cache-Control" => "must-revalidate", + "Content-Encoding" => "gzip", + "Content-Type" => "application/json", + ) +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f7ea7a5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,681 @@ +Modified and developed by Matthias Wirth + +Based on code from https://github.com/flightaware/dump1090 +Thank you Flightaware for developing Open Source! + + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..bcb72b2 --- /dev/null +++ b/README.md @@ -0,0 +1,226 @@ +# tar1090 + +![Screenshot1](https://raw.githubusercontent.com/wiedehopf/tar1090/screenshots/screenshot3.png) + +Provides an improved dump1090-fa webinterface + +- Improved adjustable history +- Show All Tracks much faster than original with many planes +- Multiple Maps available +- Map can be dimmed/darkened +- Multiple aircraft can be selected +- Labels with the callsign can be switched on and off + +See the bottom of the page for screenshots + +## Installation / Update: + +``` +sudo bash -c "$(wget -q -O - https://raw.githubusercontent.com/wiedehopf/tar1090/master/install.sh)" +``` + +## View the added webinterface + +Click the following URL and replace the IP address with address of your Raspberry Pi: + +http://192.168.x.yy/tar1090 + +Check further down or keyboard shortcuts. + +## Configuration (optional): + +Edit the configuration file to change the interval in seconds and number of history files saved: +``` +sudo nano /etc/default/tar1090 +``` +Ctrl-x to exit, y (yes) and enter to save. + +Apply the configuration: +``` +sudo systemctl restart tar1090 +``` + +The duration of the history in seconds can be calculated as interval times history_size. + +## Configuring the web interface (optional): + +``` +sudo nano /usr/local/share/tar1090/html/config.js +``` + +Ctrl-x to exit, y (yes) and enter to save. +Then Ctrl-F5 to refresh the web interface in the browser. + +## Enable (/disable) FA links in the webinterface (previously enabled by default) + +``` +# ENABLE: +sudo sed -i -e 's?.*flightawareLinks.*?flightawareLinks = true;?' /usr/local/share/tar1090/html/config.js +# ENABLE if the above doesn't work (updated from previous version) +echo 'flightawareLinks = true;' | sudo tee -a /usr/local/share/tar1090/html/config.js +# DISABLE: +sudo sed -i -e 's?.*flightawareLinks.*?flightawareLinks = false;?' /usr/local/share/tar1090/html/config.js +``` + +Then Ctrl-F5 to refresh the web interface in the browser. + +## UAT receiver running dump978-fa and skyaware978: + +This is the relevant part in the configuration file: +``` +# Change to yes to enable UAT/978 display in tar1090 +ENABLE_978=no +# If running dump978-fa on another computer, modify the IP-address as appropriate. +URL_978="http://127.0.0.1/skyaware978" +``` +Open and save as described above in the Configuration section. +Follow the instructions in the file. + +### Installation / Update to work with another folder, for example /run/combine1090 + + +``` +wget -q -O /tmp/install.sh https://raw.githubusercontent.com/wiedehopf/tar1090/master/install.sh +sudo bash /tmp/install.sh /run/combine1090 +``` + +## Remove / Uninstall + +``` +sudo bash -c "$(wget -q -O - https://raw.githubusercontent.com/wiedehopf/tar1090/master/uninstall.sh)" +``` + +## Keyboard Shortcuts + + +- Q and E zoom out and in. +- A and D move West and East. +- W and S move North and South. +- C or Esc clears the selection. +- M toggles multiselect. +- T selects all aircraft +- B toggle map brightness + +## Multiple instances + +The script can install multiple instances, this is accomplished by first editing `/etc/default/tar1090_instances`: + +On each line there must be one instance. +First on the line the source directory where the aircraft.json is located. +Second on the line the name where you want to access the according website. +(http://pi/tar1090 or http://pi/combo or http://pi/978 in this example) + +The main instance needs to be included in this file. + +Example file: +``` +/run/dump1090-fa tar1090 +/run/combine1090 combo +/run/skyaware978 978 +``` + +After saving that file, just run the install script and it will install/update +all instances. + +The run folder and systemd service will be called tar1090-combo and tar1090-978 +in this example file. +The main instance is the exception to that rule, having systemd service and run +directory called just tar1090. + +### Removing an instance + +For example removing the instance with the name combo and 978: + +First remove the corresponding line from `/etc/default/tar1090_instances` and +save the file so when you update it doesn't get installed again. + +Then run the following command adapted to your instance name, you'll need to +include the tar1090- which is automatically added for the service names: + +``` +sudo bash /usr/local/share/tar1090/uninstall.sh tar1090-combo +sudo bash /usr/local/share/tar1090/uninstall.sh tar1090-978 +``` + +If the instance was installed with the old method without the tar1090_instances +file, you'll have to try without the tar1090- before the combo, like this: + +``` +sudo bash /usr/local/share/tar1090/uninstall.sh combo +sudo bash /usr/local/share/tar1090/uninstall.sh 978 +``` + + + +## Alternative lighttpd configuration + +Placing tar1090 on port 8504: +``` +sudo cp /usr/local/share/tar1090/95-tar1090-otherport.conf /etc/lighttpd/conf-enabled +sudo systemctl restart lighttpd +``` + +Placing tar1090 at / instead of /tar1090: +``` +sudo cp /usr/local/share/tar1090/99-tar1090-webroot.conf /etc/lighttpd/conf-enabled +sudo systemctl restart lighttpd +``` + +Note 1: This will only work if you are using dump1090-fa and the default install + +Note 2: if those cause lighttpd not to start for any reason some other lighttpd configuration is conflicting. +To solve the problem just delete the configuration you copied there: +``` +sudo rm /etc/lighttpd/conf-enabled/95-tar1090-otherport.conf +sudo rm /etc/lighttpd/conf-enabled/99-tar1090-webroot.conf +sudo systemctl restart lighttpd +``` + +## nginx configuration + +If nginx is installed, the install script should give you a configuration file +you can include. The configuration needs to go into the appropriate server { } +section and looks something like this in case you are interested: + +``` +location /tar1090/data/ { + alias /run/dump1090-fa/; +} + +location /tar1090/chunks/ { + alias /run/tar1090/; + location ~* \.gz$ { + add_header Cache-Control "must-revalidate"; + add_header Content-Type "application/json"; + add_header Content-Encoding "gzip"; + } +} + +location /tar1090 { + try_files $uri $uri/ =404; + alias /usr/local/share/tar1090/html/; +} +``` + +If you are using another dump1090 fork, change `/run/dump1090-fa` in this section: +``` +location /tar1090/data/ { + alias /run/dump1090-fa/; +} + + +## history not loading issue (possible fix) + +For a day or so i had a bug in the install script turning symbolic links in /etc/lighttpd/conf-enabled into copies of the files they were pointing to. + +This can cause some other issues with my install script which fiddles with the lighttpd config files to make mod_setenv work. + +Anyhow if just rerunning the install script does not fix your history loading issue, you can try this: + +``` +cd /etc/lighttpd/conf-enabled +for i in *; do if [ -f "../conf-available/$i" ]; then sudo ln -s -f "../conf-available/$i" $i; fi; done +``` + +After that rerun the install script. +If you still have history loading issues, get back to me via the github issues or the various forums i frequent. diff --git a/default b/default new file mode 100644 index 0000000..3121282 --- /dev/null +++ b/default @@ -0,0 +1,24 @@ +# Interval at which the track history is saved +INTERVAL=8 +# How many points in time are stored in the track history +HISTORY_SIZE=450 + +# Change to yes to enable UAT/978 display in tar1090 +ENABLE_978=no +# If running dump978-fa on another computer, modify the IP-address as appropriate. +# The URL needs to point at where you would normally find the skyview978 webinterface +URL_978="http://127.0.0.1/skyaware978" + + + + + + + + + +# no need to change the lines below +CHUNK_SIZE=60 +INT_978=1 +PF_URL="http://127.0.0.1:30053/ajax/aircraft" +COMPRESS_978="" diff --git a/html/colors.css b/html/colors.css new file mode 100644 index 0000000..067f531 --- /dev/null +++ b/html/colors.css @@ -0,0 +1,14 @@ + +.vPosition { background-color: #d8f4ff; } +.mlat { background-color: #FDF7DD; } +.uat { background-color: #C4FFDC; } +.other { background-color: #d8d8ff; } +.tisb { background-color: #ffd8e6; } +.squawk7500 { font-weight: bold; background-color: #ff5555; } +.squawk7600 { font-weight: bold; background-color: #00ffff; } +.squawk7700 { font-weight: bold; background-color: #ffff00; } +.selected.vPosition { background-color: #88DDFF; } +.selected.mlat { background-color: #F1DD83; } +.selected.uat { background-color: #66FFA6; } +.selected.other { background-color: #BEBEFF; } +.selected.tisb { background-color: #FFC1D8; } diff --git a/html/config.js b/html/config.js new file mode 100644 index 0000000..6a1a318 --- /dev/null +++ b/html/config.js @@ -0,0 +1,215 @@ +// -------------------------------------------------------- +// +// This file is to configure the configurable settings. +// +// -------------------------------------------------------- +"use strict"; +// -- Title Settings -------------------------------------- +// Show number of aircraft and/or messages per second in the page title +//PlaneCountInTitle = false; +//MessageRateInTitle = false; + +// -- Output Settings ------------------------------------- +// The DisplayUnits setting controls whether nautical (ft, NM, knots), +// metric (m, km, km/h) or imperial (ft, mi, mph) units are used in the +// plane table and in the detailed plane info. Valid values are +// "nautical", "metric", or "imperial". +//DisplayUnits = "nautical"; + +// -- Map settings ---------------------------------------- +// These settings are overridden by any position information +// provided by dump1090 itself. All positions are in decimal +// degrees. + +// Default center of the map. +//DefaultCenterLat = 45.0; +//DefaultCenterLon = 9.0; +// The google maps zoom level, 0 - 16, lower is further out +//DefaultZoomLvl = 7; + +// Center marker. If dump1090 provides a receiver location, +// that location is used and these settings are ignored. + +//SiteShow = false; // true to show a center marker +//SiteLat = 45.0; // position of the marker +//SiteLon = 9.0; +//SiteName = "My Radar Site"; // tooltip of the marker + +// Color controls for the range outline +//range_outline_color = '#0000DD'; +//range_outline_width = 1.7; +//range_outline_colored_by_altitude = false; + +// which map is displayed to new visitors +// valid values: +// terrain_roads +// osm +// wikimedia +// terrain_roads +// terrain +// carto_light_all +// carto_light_nolabels +// carto_dark_all +// carto_dark_nolabels +// only with bing key: +// bing_aerial +// bing_roads + +// which map is displayed to new visitors +//MapType_tar1090 = "carto_light_all"; + +// Default map dim state, true or false. +//MapDim = true; + + +// -- Marker settings ------------------------------------- + +//markerScaleFactor = 1.2; +//markerMaxSize = 1.32; +//markerMinSize = 0.72; + +//lineWidth = 1; + +// These settings control the coloring of aircraft by altitude. +// All color values are given as Hue (0-359) / Saturation (0-100) / Lightness (0-100) +// +// To enable these colors instead of the defaults, remove the /* and */ above and below the next block + +/* + +ColorByAlt = { + // HSL for planes with unknown altitude: + unknown : { h: 0, s: 0, l: 30 }, + + // HSL for planes that are on the ground: + ground : { h: 0, s: 0, l: 45 }, + + air : { + // These define altitude-to-hue mappings + // at particular altitudes; the hue + // for intermediate altitudes that lie + // between the provided altitudes is linearly + // interpolated. + // + // Mappings must be provided in increasing + // order of altitude. + // + // Altitudes below the first entry use the + // hue of the first entry; altitudes above + // the last entry use the hue of the last + // entry. + h: [ { alt: 2000, val: 20 }, // orange + { alt: 10000, val: 140 }, // light green + { alt: 40000, val: 300 } ], // magenta + s: 88, + l: 44, + }, + + // Changes added to the color of the currently selected plane + selected : { h: 0, s: -10, l: +20 }, + + // Changes added to the color of planes that have stale position info + stale : { h: 0, s: -10, l: +30 }, + + // Changes added to the color of planes that have positions from mlat + mlat : { h: 0, s: -10, l: -10 } +}; + +*/ + +// For a monochrome display try this: +// ColorByAlt = { +// unknown : { h: 0, s: 0, l: 40 }, +// ground : { h: 0, s: 0, l: 30 }, +// air : { h: [ { alt: 0, val: 0 } ], s: 0, l: 50 }, +// selected : { h: 0, s: 0, l: +30 }, +// stale : { h: 0, s: 0, l: +30 }, +// mlat : { h: 0, s: 0, l: -10 } +// }; + +// Outline color for aircraft icons with an ADS-B position +//OutlineADSBColor = '#000000'; + +// Outline color for aircraft icons with a mlat position +//OutlineMlatColor = '#4040FF'; + +//SiteCircles = true; // true to show circles (only shown if the center marker is shown) +// In miles, nautical miles, or km (depending settings value 'DisplayUnits') +//SiteCirclesDistances = new Array(100,150,200,250); + +// Controls page title, righthand pane when nothing is selected +//PageName = "tar1090"; + +// Show country flags by ICAO addresses? +//ShowFlags = true; + +// Set to false to disable the ChartBundle base layers (US coverage only) +//ChartBundleLayers = true; + +// Provide a Bing Maps API key here to enable the Bing imagery layer. +// You can obtain a free key (with usage limits) at +// https://www.bingmapsportal.com/ (you need a "basic key") +// +// Be sure to quote your key: +// BingMapsAPIKey = "your key here"; +// +BingMapsAPIKey = null; + +// This determines what is up, default is north (0 degrees) +//mapOrientation = 0; + +// Only display labels when zoomed in this far: +//labelZoom = 8; +//labelZoomGround = 12.5; + +//labelFont = 'bold 12px tahoma'; + +//displayUATasADSB = false; +//uatNoTISB = true; + +// Don't display any TIS-B planes +// filterTISB = false; + +//flightawareLinks = false; + +// Filter implausible positions (required speed > Mach 3.5) +// positionFilter = true; +// positionFilterSpeed = 3.5; // in Mach +// filter speed is based on transmitted ground speed if available +// this factor is used to give the actual filter speed +// positionFilterGsFactor = 1.8; +// debugPosFilter = false; // draw red dots for filtered positions + +// altitudeFilter = true; + +// time in seconds before an MLAT position is accepted after receiving a +// more reliable position +//mlatTimeout = 30; + +// enable/disable mouseover/hover aircraft information +//enableMouseover = true; + +// enable/disable temporary aircraft trails +//tempTrails = false; +//tempTrailsTimeout = 90; + +// Columns that have a // in front of them are shown. +HideCols = [ + "#icao", +// "#flag", +// "#flight", + "#registration", +// "#aircraft_type", +// "#squawk", +// "#altitude", +// "#speed", + "#vert_rate", +// "#distance", + "#track", + "#msgs", + "#seen", +// "#rssi", + "#lat", + "#lon", + "#data_source", +] diff --git a/html/dbloader.js b/html/dbloader.js new file mode 100644 index 0000000..a55269d --- /dev/null +++ b/html/dbloader.js @@ -0,0 +1,153 @@ +// -*- mode: javascript; indent-tabs-mode: nil; c-basic-offset: 8 -*- + +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// dbloader.js: load aircraft metadata from static json files +// +// Copyright (c) 2014,2015 Oliver Jowett +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +"use strict"; + +var _aircraft_cache = {}; +var _aircraft_type_cache = null; + +function getAircraftData(icao) { + var defer = $.Deferred(); + if (icao.charAt(0) == '~') { + defer.resolve(null); + return defer; + } + + icao = icao.toUpperCase(); + + request_from_db(icao, 1, defer); + return defer; +} + +function request_from_db(icao, level, defer) { + var bkey = icao.substring(0, level); + var dkey = icao.substring(level); + var req = db_ajax(bkey); + + req.done(function(data) { + var subkey; + + if (data == null) { + defer.resolve("strange"); + return; + } + + if (dkey in data) { + getIcaoAircraftTypeData(data[dkey], defer); + return; + } + + if ("children" in data) { + subkey = bkey + dkey.substring(0,1); + if (data.children.indexOf(subkey) != -1) { + request_from_db(icao, level+1, defer); + return; + } + } + defer.resolve(null); + }); + + req.fail(function(jqXHR,textStatus,errorThrown) { + defer.reject(jqXHR,textStatus,errorThrown); + }); +} + +function getIcaoAircraftTypeData(aircraftData, defer) { + if (_aircraft_type_cache === null) { + $.getJSON("db/aircraft_types/icao_aircraft_types.json") + .done(function(typeLookupData) { + _aircraft_type_cache = typeLookupData; + }) + .always(function() { + lookupIcaoAircraftType(aircraftData, defer); + }); + } + else { + lookupIcaoAircraftType(aircraftData, defer); + } +} + +function lookupIcaoAircraftType(aircraftData, defer) { + aircraftData.vType = aircraftData.desc; + if (_aircraft_type_cache !== null && "t" in aircraftData) { + var typeDesignator = aircraftData.t.toUpperCase(); + if (typeDesignator in _aircraft_type_cache) { + var typeData = _aircraft_type_cache[typeDesignator]; + if (typeData.desc != null && typeData.desc.length == 3) { + aircraftData.desc = typeData.desc; + } + if (typeData.wtc != undefined && aircraftData.wtc === undefined) { + aircraftData.wtc = typeData.wtc; + } + } + } + + defer.resolve(aircraftData); +} + +var _request_count = 0; +var _request_queue = []; +var _request_cache = {}; + +function db_ajax(bkey) { + var req; + + if (bkey in _request_cache) { + return _request_cache[bkey]; + } + + req = _request_cache[bkey] = $.Deferred(); + req.bkey = bkey; + // put it in the queue + _request_queue.push(req); + db_ajax_request_complete(); + + return req; +} + +function db_ajax_request_complete() { + var req; + var ajaxreq; + + if (_request_queue.length == 0 || _request_count >= 1) { + return; + } else { + _request_count++; + req = _request_queue.shift(); + const req_url = 'db/' + req.bkey + '.json'; + ajaxreq = $.ajax({ url: req_url, + cache: true, + timeout: 30000, + dataType : 'json' }); + ajaxreq.done(function(data) { req.resolve(data); }); + ajaxreq.fail(function(jqxhr, status, error) { + if (status == 'timeout') { + delete _request_cache[req.bkey]; + } + jqxhr.url = req_url; + req.reject(jqxhr, status, error); + }); + ajaxreq.always(function() { + _request_count--; + db_ajax_request_complete(); + }); + } +} diff --git a/html/defaults.js b/html/defaults.js new file mode 100644 index 0000000..20edcdc --- /dev/null +++ b/html/defaults.js @@ -0,0 +1,229 @@ +// -------------------------------------------------------- +// +// This file is for the default settings, use config.js instead to make settings. +// +// -------------------------------------------------------- +"use strict"; +// -- Title Settings -------------------------------------- +// Show number of aircraft and/or messages per second in the page title +var PlaneCountInTitle = false; +var MessageRateInTitle = false; + +// -- Output Settings ------------------------------------- +// The DisplayUnits setting controls whether nautical (ft, NM, knots), +// metric (m, km, km/h) or imperial (ft, mi, mph) units are used in the +// plane table and in the detailed plane info. Valid values are +// "nautical", "metric", or "imperial". +var DisplayUnits = "nautical"; + +// -- Map settings ---------------------------------------- +// These settings are overridden by any position information +// provided by dump1090 itself. All positions are in decimal +// degrees. + +// Default center of the map. +var DefaultCenterLat = 45.0; +var DefaultCenterLon = 9.0; +// The google maps zoom level, 0 - 16, lower is further out +var DefaultZoomLvl = 7; + +// Center marker. If dump1090 provides a receiver location, +// that location is used and these settings are ignored. + +var SiteShow = true; // true to show a center marker +var SiteLat = null; // position of the marker +var SiteLon = null; +var SiteName = "My Radar Site"; // tooltip of the marker + +// Color controls for the range outline +var range_outline_color = '#0000DD'; +var range_outline_width = 1.7; +var range_outline_colored_by_altitude = false; + +// which map is displayed to new visitors +var MapType_tar1090 = "carto_light_all"; + +// Default map dim state +var MapDim = true; + +// -- Marker settings ------------------------------------- + +var markerScaleFactor = 1.2; +var markerMaxSize = 1.32; +var markerMinSize = 0.72; + +var lineWidth = 1; + +// These settings control the coloring of aircraft by altitude. +// All color values are given as Hue (0-359) / Saturation (0-100) / Lightness (0-100) +var ColorByAlt = { + // HSL for planes with unknown altitude: + unknown : { h: 0, s: 0, l: 60 }, + + // HSL for planes that are on the ground: + ground : { h: 220, s: 0, l: 30 }, + + air : { + // These define altitude-to-hue mappings + // at particular altitudes; the hue + // for intermediate altitudes that lie + // between the provided altitudes is linearly + // interpolated. + // + // Mappings must be provided in increasing + // order of altitude. + // + // Altitudes below the first entry use the + // hue of the first entry; altitudes above + // the last entry use the hue of the last + // entry. + h: [ { alt: 0, val: 20 }, // orange + { alt: 2000, val: 32.5 }, // yellow + { alt: 4000, val: 43 }, // yellow + { alt: 6000, val: 54 }, // yellow + { alt: 8000, val: 72 }, // yellow + { alt: 9000, val: 85 }, // green yellow + { alt: 11000, val: 140 }, // light green + { alt: 40000, val: 300 } , // magenta + { alt: 51000, val: 360 } , // red + ], + s: 88, + l: [ + { h: 0, val: 53}, + { h: 20, val: 50}, + { h: 40, val: 44}, + { h: 60, val: 42}, + { h: 80, val: 42}, + { h: 100, val: 42}, + { h: 120, val: 43}, + { h: 140, val: 43}, + { h: 160, val: 41}, + { h: 180, val: 41}, + { h: 200, val: 48}, + { h: 220, val: 53}, + { h: 240, val: 53}, + { h: 260, val: 49}, + { h: 280, val: 49}, + { h: 290, val: 47}, + { h: 300, val: 43}, + { h: 310, val: 47}, + { h: 320, val: 48}, + { h: 340, val: 52}, + { h: 360, val: 53}, + ], + }, + + // Changes added to the color of the currently selected plane + selected : { h: 0, s: 10, l: 5 }, + + // Changes added to the color of planes that have stale position info + stale : { h: 0, s: -35, l: 9 }, + + // Changes added to the color of planes that have positions from mlat + mlat : { h: 0, s: 0, l: 0 } +}; + +// For a monochrome display try this: +// ColorByAlt = { +// unknown : { h: 0, s: 0, l: 40 }, +// ground : { h: 0, s: 0, l: 30 }, +// air : { h: [ { alt: 0, val: 0 } ], s: 0, l: 50 }, +// selected : { h: 0, s: 0, l: +30 }, +// stale : { h: 0, s: 0, l: +30 }, +// mlat : { h: 0, s: 0, l: -10 } +// }; + +// Outline color for aircraft icons with an ADS-B position +var OutlineADSBColor = '#000000'; + +// Outline color for aircraft icons with a mlat position +var OutlineMlatColor = '#001F66'; + +var SiteCircles = true; // true to show circles (only shown if the center marker is shown) +// In miles, nautical miles, or km (depending settings value 'DisplayUnits') +var SiteCirclesDistances = new Array(100,150,200); + +// Controls page title, righthand pane when nothing is selected +var PageName = "tar1090"; + +// Show country flags by ICAO addresses? +var ShowFlags = true; + +// Path to country flags (can be a relative or absolute URL; include a trailing /) +var FlagPath = "flags-tiny/"; + +// Set to false to disable the ChartBundle base layers (US coverage only) +var ChartBundleLayers = true; + +// Provide a Bing Maps API key here to enable the Bing imagery layer. +// You can obtain a free key (with usage limits) at +// https://www.bingmapsportal.com/ (you need a "basic key") +// +// Be sure to quote your key: +// BingMapsAPIKey = "your key here"; +// +var BingMapsAPIKey = null; + +// Turn on display of extra Mode S EHS / ADS-B v1/v2 data +// This is not polished yet (and so is disabled by default), +// currently it's just a data dump of the new fields with no UX work. +var ExtendedData = false; +var pf_data = ["chunks/pf.json"] + +var mapOrientation = 0; // This determines what is up, normally north (0 degrees) + +// Only display labels when zoomed in this far: +var labelZoom = 0; +var labelZoomGround = 14.8; + +var labelFont = 'bold 12px tahoma'; + +var displayUATasADSB = false; +var uatNoTISB = true; + +// Don't display any TIS-B planes +var filterTISB = false; + +var flightawareLinks = false; + +// Filter implausible positions (required speed > Mach 2.5) +var positionFilter = true; +var positionFilterSpeed = 2.5; // in Mach +// filter speed is based on transmitted ground speed if available +// this factor is used to give the actual filter speed +var positionFilterGsFactor = 1.8; +var debugPosFilter = false; + +var altitudeFilter = true; + +// time in seconds before an MLAT position is accepted after receiving a +// more reliable position +var mlatTimeout = 30; + +// enable/disable mouseover/hover aircraft information +var enableMouseover = true; + +// enable/disable temporary aircraft trails +var tempTrails = false; +var tempTrailsTimeout = 90; + +// Columns that have a // in front of them are shown. +var HideCols = [ + "#icao", +// "#flag", +// "#flight", + "#registration", +// "#aircraft_type", +// "#squawk", +// "#altitude", +// "#speed", + "#vert_rate", +// "#distance", + "#track", + "#msgs", + "#seen", +// "#rssi", + "#lat", + "#lon", + "#data_source", +] diff --git a/html/early.js b/html/early.js new file mode 100644 index 0000000..7f20062 --- /dev/null +++ b/html/early.js @@ -0,0 +1,141 @@ +// This was functionality of script.js, moved it to here to start the downloading of track history earlier +"use strict"; +var Dump1090Version = "unknown version"; +var RefreshInterval = 1000; +var enable_uat = false; +var enable_pf_data = false; +var HistoryChunks = false; +var nHistoryItems = 0; +var HistoryItemsReturned = 0; +var chunkNames; +var PositionHistoryBuffer = []; +var receiverJson; +var deferHistory = []; +var configureReceiver = $.Deferred(); +var historyTimeout = 60; +var globeIndex = 0; + +var uuid = null; + +try { + const search = new URLSearchParams(window.location.search); + + const feed = search.get('feed'); + if (feed != null) { + uuid = feed; + console.log('uuid: ' + uuid); + } +} catch (error) { +} + +// get configuration json files, will be used in initialize function +var get_receiver_defer = $.ajax({ url: 'data/receiver.json', + timeout: 15000, + cache: false, + dataType: 'json' +}); +var test_chunk_defer = $.ajax({ + url:'chunks/chunks.json', + timeout: 10000, + cache: false, + dataType: 'json' +}); + +if (uuid != null) { + get_receiver_defer = null; + receiverJson = null; + Dump1090Version = 'unknown'; + RefreshInterval = 5000; + configureReceiver.resolve(); + console.time("Downloaded History"); +} else { + $.when(get_receiver_defer).done(function(data){ + get_receiver_defer = null; + receiverJson = data; + Dump1090Version = data.version; + RefreshInterval = data.refresh; + nHistoryItems = (data.history < 2) ? 0 : data.history; + if (data.globeIndexGrid != null) { + HistoryChunks = false; + nHistoryItems = 0; + globeIndex = 1; + get_history(); + configureReceiver.resolve(); + } else { + $.when(test_chunk_defer).done(function(data) { + HistoryChunks = true; + chunkNames = data.chunks; + nHistoryItems = chunkNames.length; + enable_uat = (data.enable_uat == "true"); + enable_pf_data = (data.pf_data == "true"); + if (enable_uat) + console.log("UAT/978 enabled!"); + console.log("Chunks enabled"); + get_history(); + configureReceiver.resolve(); + }).fail(function() { + HistoryChunks = false; + get_history(); + configureReceiver.resolve(); + }); + } + }); +} + + + +function get_history() { + + if (!receiverJson.globeIndexGrid) { + nHistoryItems++; + var request = $.ajax({ url: 'data/aircraft.json', + timeout: historyTimeout*800, + cache: false, + dataType: 'json' }); + deferHistory.push(request); + if (enable_uat) { + nHistoryItems++; + request = $.ajax({ url: 'chunks/978.json', + timeout: historyTimeout*800, + cache: false, + dataType: 'json' }); + deferHistory.push(request); + } + } + + if (HistoryChunks) { + if (nHistoryItems > 0) { + console.log("Starting to load history (" + nHistoryItems + " chunks)"); + console.time("Downloaded History"); + for (var i = chunkNames.length-1; i >= 0; i--) { + get_history_item(i); + } + } + } else if (nHistoryItems > 0) { + console.log("Starting to load history (" + nHistoryItems + " items)"); + console.time("Downloaded History"); + // Queue up the history file downloads + for (var i = nHistoryItems-1; i >= 0; i--) { + get_history_item(i); + } + } +} + +function get_history_item(i) { + + var request; + + if (HistoryChunks) { + request = $.ajax({ url: 'chunks/' + chunkNames[i], + timeout: historyTimeout * 1000, + dataType: 'json' + }); + } else { + + request = $.ajax({ url: 'data/history_' + i + '.json', + timeout: nHistoryItems * 80, // Allow 40 ms load time per history entry + cache: false, + dataType: 'json' }); + } + deferHistory.push(request); +} diff --git a/html/flags-tiny/Afghanistan.png b/html/flags-tiny/Afghanistan.png new file mode 100644 index 0000000000000000000000000000000000000000..534dc3adf0944bd9f6975ce0e3a4e18c839b27f7 GIT binary patch literal 3096 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Algeria.png b/html/flags-tiny/Algeria.png new file mode 100644 index 0000000000000000000000000000000000000000..38b66b45a52323de8eacf22bcb3252f162fc7546 GIT binary patch literal 3075 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Anguilla.png b/html/flags-tiny/Anguilla.png new file mode 100644 index 0000000000000000000000000000000000000000..65fb0bf0b740b76f5d1f523b9ce0ac286d1a00de GIT binary patch literal 3300 zcmV))_P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0uf0>K~#9!q>)W%6Hyd}&wcOBOk@6Ph%Gd+^D|>InVIJztsuB4`0Wndd(Y(@ zdUpQ8zB5BJ%lz8y)ZKowMLNR^{zTNdw7>mbaL0J^xluMaXZRPqFfh?>n`5!yvB}Y` z`WK(dM~=i!AMKm(-jlq)u(bGt2t*{Mlz{8Xrfe=#Wn$chpqlCNdg_^sw5*m$q~`IV zTB&jM!24j{B0-Q+x{`dpEv2=xrYTZN0OFI{<`4R#U12q!vFa9q)WJdLTUu}J_*tltQqMQ@8#(`-}R!Ra5jyYdE%@Z>6mGB>f8JCoxQU?L+bEIH4sW> z0!5n%g6+6nkS-$;jw?dZn$GO{!4P{eH+mzLc%-K@YfHIO;^NJdw>~2lzq-o} zpy7as$hGSz=U^1-NOGIC%kz2VgBu6t5^Hw5GN31p=6mn z=4iPxx{c}+Vg!J@;k^XXI1x~DPeb!5FKQjHR!7KD+Yx-YY;h+oEvq6cNWJup72*JF2GsIV!Me igd&9U*F3|2@OuDNG1B9CoQE9%0000KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0qRLaK~#9!Y*N2#Q(+W6_xry0UVb!1TOpxnGE_mT7ONB#T(qTja4YFlwEsa+1W~XK zF5=+gB8o1iV1x<|MJqT65fKqZP=}VNZ6gRF>U;LZyziHTHNiG_y7!)QxNy(G#Y`_c z6=QH6crF<0h~r$khw6j73aj7l*8SF&a|n(j!=iU9F@{>*mS1V5tkP}e#Fo_UY(^++ zuWe6%ie&j$WBn#!@`Q78(i_^t0lfRDi*r%&L4<$egNfMn9cc@Q$l7h3-^yl=FRm<0 z1>n#irt|vPm_kzlI64Z4=`Wx0^d$hKg}9T=^l<(|Ye7J0Ouy^g%=Jx}KI_GhLsfW> z-jGrNAUM7=YqQOyZ*?SZ(CR?U^^GBbs(bt6j9H-Ds#0#`!oKOajT)hm3Pb>40l|?- zu#mhL}T}_y5svXw6hI-U6!RQYdTWg z`!5R{tT&DutWKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0K!Q`K~#9!q>?=f0znLg^JcOGA{N#b_FlsScouKtS*!&sd%;F51i?bV{hQ2AENrvF zvX6A(g)h8^!{t$gpsF-P07S&m2(c>tW~fw&1EXM=X6HN+a!w{T6sYPZgkZi^ecq~h zI-8qdBEsz99gJOUkNaKD-FmYv!o!dDUsyT_6W>P}awk9@+?zgjQUMyGU zeG$Rw`V2iedoGC3rP!A#PjQ{`&O=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0EtONK~#9!q>`}>0x=Xr{ePT`I3y%Spa3Rd5gPVmC1yaPqM^G>zL_C8_fOBVY~Ryu z?;hxj0juQL5N5S34VWSEJsoCGL$!nV%OkN!>Vz$#@|TLIf=(DPSt0@mK>c$CxZ~oq z5pz^~J+JfR(aD-&t-1o_8$PwsyYhdg`<}M0000MB< literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Aruba.png b/html/flags-tiny/Aruba.png new file mode 100644 index 0000000000000000000000000000000000000000..f493df12aadfc67ab80bb03c2458637952210f5e GIT binary patch literal 2956 zcmV;73v={|P)#PjQ{`&O=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0J%v-K~#9!oX#N*!Y~-c@%PcMYcoN@g5nS(!GWCuMK}b<;T}i?76BoMc{Cvb31T61 zUAH2*z`DQx91QAd1zj5*TX@NWRoNlGu(>{65f0000#PjQ{`&O=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0$)i)K~#9!Y?47p6k#02|Nr^EnVs3uO>12X%+}nrEg`WWio)2Ei1Hw`5fMR3ft2W> zf;vVgp;Na=>d-ATI|LmiP$WpfOf4&e(A`+w)pp&P`DW((cUVJ&ewW94@J{dHMBm+g z9p@j7We0{Q-nOgS(>VZ8Zre?%WS0?d95UnShL)A+ zfx%-}g2`kmRDCa9ow6}xYG)HoDra0}Qqti=(cYVF!u5fG4d1zLj*axa`r1EHI3FrF z1uOY%YI0R+J05E-E(}iRf)(XGou@~}=4{&yX#96(ZT#bR;d+382jg8ir7S0;$sxoD zi1Ne=1*@W}G92WY%$kRafLlPA879jXi zN&=NB03eAJL?X~M1^`0%h(IK{ihzi|?;D2pwEr3bboLGuEy0*l8Uz3oL_`q66RsD~ zIO0amOCpKNf`NwEP6RZ~zKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z06KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0S`$;K~#9!q>{Z#15pr#&&-|8#vh^(j3{CuSO``YR;KVB1REQ{#==enOMAh$unSlS zK8{rgsjOVGduL~CEX?&tJ2PPI6Bnp zJ3c+(%X58r1kq3bZ`ifM;z?lcXh*a+@T~wHz>%07*qoM6N<$f?@;8L;wH) literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Bahamas.png b/html/flags-tiny/Bahamas.png new file mode 100644 index 0000000000000000000000000000000000000000..2bfab4828a3bd2d1781feac5e79535e2f81692b4 GIT binary patch literal 3018 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 M07*qoM6N<$g8LQFX#fBK literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Bahrain.png b/html/flags-tiny/Bahrain.png new file mode 100644 index 0000000000000000000000000000000000000000..1e741fc021dabc5f968f9930a6be38953b5a3324 GIT binary patch literal 2924 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Belarus.png b/html/flags-tiny/Belarus.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc3f2cf51b030cf09a6b8c901f68147c5295aa5 GIT binary patch literal 2977 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 Xi$6&vT7eL{00000NkvXXu0mjf0!gm) literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Belgium.png b/html/flags-tiny/Belgium.png new file mode 100644 index 0000000000000000000000000000000000000000..32ec6ee846c8f5bf10e995aac2adb50729a762e6 GIT binary patch literal 2830 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Belize.png b/html/flags-tiny/Belize.png new file mode 100644 index 0000000000000000000000000000000000000000..9e38cc3a69947371180e2db3858657cb17e3b449 GIT binary patch literal 3190 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Benin.png b/html/flags-tiny/Benin.png new file mode 100644 index 0000000000000000000000000000000000000000..4d98605bb3cfd00d27a1b8f19e8c496ad499cd58 GIT binary patch literal 2899 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 KMNUMnLSTY;uP&JY literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Bolivia.png b/html/flags-tiny/Bolivia.png new file mode 100644 index 0000000000000000000000000000000000000000..43bc6d4fa430e4eb9091b805a6016573dbab64c0 GIT binary patch literal 3012 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Bulgaria.png b/html/flags-tiny/Bulgaria.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d6f6577208056519fa1e9afa3d176be40b4d8 GIT binary patch literal 2846 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Burundi.png b/html/flags-tiny/Burundi.png new file mode 100644 index 0000000000000000000000000000000000000000..af7f3810b18c6d505ce290fef3d73a68d48b1f1e GIT binary patch literal 3395 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 Z8vs8i8w_hMWHJB%002ovPDHLkV1lv_dkz2q literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Cambodia.png b/html/flags-tiny/Cambodia.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed009878b948d9f5ea2c0b07073f4322c2f8342 GIT binary patch literal 3133 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 KMNUMnLSTYvOJ27C literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Central_African_Republic.png b/html/flags-tiny/Central_African_Republic.png new file mode 100644 index 0000000000000000000000000000000000000000..37b262fd4a020b7dbd85be03caa5aa596a38f43c GIT binary patch literal 3133 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Chile.png b/html/flags-tiny/Chile.png new file mode 100644 index 0000000000000000000000000000000000000000..448647a3a0b5e81ba7ebc192edf23b045cf9677f GIT binary patch literal 2983 zcmV;Y3t04tP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0MtoDK~#9!#LzKHL_rV)(5n9JA8}Dklm!zrF%ZPe)JQ?RgNHEk0A6B`uov(!rh+Dl zu&e}?Vmg6A@~wEEXc@PKet(#PjQ{`&O=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0Le*2K~#9!+>pIagishn&v*F=f^4FTW;>y@Fjj6uVYP2;XK%8FPhtE^$m*4-EW&p! zb_*+@c8bXqb27<@%}EUEpo0J$6futtjp8vZgFp*vxH_VS9@2p0kkms*V4n^yQp!wL zr|#^5^@cmk;We literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Christmas_Island.png b/html/flags-tiny/Christmas_Island.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7d19dd4ed5d9925bfd39da9951f4c4c5fe52d0 GIT binary patch literal 3315 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Colombia.png b/html/flags-tiny/Colombia.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb4058f7775a81b6bae20ff963a1eac5d84fc57 GIT binary patch literal 2874 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 Y0L;cHky2Jo1ONa407*qoM6N<$g8bEZc>n+a literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Comoros.png b/html/flags-tiny/Comoros.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf39d9109c265391796679f9704991bbe256fea GIT binary patch literal 3143 zcmV-N47l@&P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0dz@3K~#9!VzgSs(k;hm#rL1#AH$#j3?u=jW1s&!UjLte|Nryf|5%tAm>B*r{3jMM zGEHax_xmpc3#S=Be}>S@1SuItCicI7fBa`4>CFHB{bgWh5cy=lcp^yd zfjKk7-ybah8Hq?FEdN;lGXLb}KNrq>Ih^&E(0jHYMCpTQ=6Pfzd?thajmCeL@Bdi8 hGBGeP5S>T?0|3yq$@!6gZ*l+t002ovPDHLkV1i8n56%Dp literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Cook_Islands.png b/html/flags-tiny/Cook_Islands.png new file mode 100644 index 0000000000000000000000000000000000000000..626efaafe18edb995fe85559e862a646c29bd3aa GIT binary patch literal 3392 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 Des*$o literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Cote_d_Ivoire.png b/html/flags-tiny/Cote_d_Ivoire.png new file mode 100644 index 0000000000000000000000000000000000000000..03d9eaa375b29e485d6857e5c0d3d94e10e3c0d6 GIT binary patch literal 2825 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 b|NjF3LZ=AUbB?`F00000NkvXXu0mjf*S}yz literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Croatia.png b/html/flags-tiny/Croatia.png new file mode 100644 index 0000000000000000000000000000000000000000..2c02604923cc8d4107cbb73ababa53c89c9bd6a1 GIT binary patch literal 3086 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Cuba.png b/html/flags-tiny/Cuba.png new file mode 100644 index 0000000000000000000000000000000000000000..368f7407690fc46970a43439331bd45e6600bc53 GIT binary patch literal 3077 zcmV+g4EpnlP)#PjQ{`&O=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0WwKMK~#9!l#($o17RG-pa1*5*UCv7p(j$Bv{x+~5)x8`#Aa*kJ^&MGf&rsNW3<|6 zBocGK0Ey5bxtKI+=pZK5zSq0IZ%}v7{>$^^$&V`IlLuqkUQxctxTG0@bkJS-!b@=uTb%7tJ&52TKar8|*~!0!Po7~t9?bcd`F|Go+V zcu0JGnCi1B<576jt2qPonN(NcLp#?*BS|KEHvV*&7wJOpkT*-bYJ^uy(D=5H~ Te~Y9|00000NkvXXu0mjf9j@Js literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Cyprus.png b/html/flags-tiny/Cyprus.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd9cd3f269e34053d3d19ec3ea8f8e61b2016ad GIT binary patch literal 2999 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Cyprus_Northern.png b/html/flags-tiny/Cyprus_Northern.png new file mode 100644 index 0000000000000000000000000000000000000000..525a6f39c0f57cd06eaa59ac8ab2168b31e45db7 GIT binary patch literal 3049 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 ZJ^+x7H;sJPd-4DP002ovPDHLkV1kDfky!u$ literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Djibouti.png b/html/flags-tiny/Djibouti.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b1ea8ee1f49374c57b6cdb97304e7523e43e59 GIT binary patch literal 3044 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 bi3BhJk7hoVt9xtG00000NkvXXu0mjf8~wb9 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Ecuador.png b/html/flags-tiny/Ecuador.png new file mode 100644 index 0000000000000000000000000000000000000000..4cad4bf3a44378f80b6acf52a466481cb85f81a8 GIT binary patch literal 3021 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 P00000NkvXXu0mjfeTT)i literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Egypt.png b/html/flags-tiny/Egypt.png new file mode 100644 index 0000000000000000000000000000000000000000..64285089889b81fa394f1708eb71580b809b33b9 GIT binary patch literal 2917 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 P00000NkvXXu0mjf5gd#a literal 0 HcmV?d00001 diff --git a/html/flags-tiny/El_Salvador.png b/html/flags-tiny/El_Salvador.png new file mode 100644 index 0000000000000000000000000000000000000000..d4158c32129585cb549b6728f9fd03dbc10dfdc1 GIT binary patch literal 2945 zcmV-{3x4#8P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0Io?yK~#9!VpJ*E!ay!yVxR!9{QdWze9fF}%-CfZnHU-VL0JF)W4D0u-m5RzHUItg z=hs&T1_oAkp8rgo*frxa_3ZUipFccdV`gUM5;N7Y#O`cd{(1WO{k}V=`Pf;FWGzf_ z`S~9Xn{7089=!Ve_dlbpwhk^ejNV-bu}UyAF|+>v$H2(=n}O-?zdzV*zWDG1E|)Vh rGBPkQ;0hE51_l-mR_1|8VSoVuIv+Vtl2P)>00000NkvXXu0mjfMx3P} literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Equatorial_Guinea.png b/html/flags-tiny/Equatorial_Guinea.png new file mode 100644 index 0000000000000000000000000000000000000000..00bada796e2a6287b82d9615455aca8dcb484c6c GIT binary patch literal 3122 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 M07*qoM6N<$f=u-AqW}N^ literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Eritrea.png b/html/flags-tiny/Eritrea.png new file mode 100644 index 0000000000000000000000000000000000000000..b677a3b83ccdb8d0eece2c3c480f69cf81f92aa1 GIT binary patch literal 3268 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Estonia.png b/html/flags-tiny/Estonia.png new file mode 100644 index 0000000000000000000000000000000000000000..8b651d45c0f3297941d87dee95a09d447ac412ca GIT binary patch literal 2857 zcmV+^3)b|BP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z09HvvK~#9!q>!-u2D7AqB>kT*-100000NkvXX Hu0mjf&u()7 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Ethiopia.png b/html/flags-tiny/Ethiopia.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca858f5043cfa4668be400bd013be3ddbda85ff GIT binary patch literal 3025 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Fiji.png b/html/flags-tiny/Fiji.png new file mode 100644 index 0000000000000000000000000000000000000000..d0315dfd2e58b9c7a60997fb775dde12c69ce494 GIT binary patch literal 3292 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/French_Polynesia.png b/html/flags-tiny/French_Polynesia.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9f21a53bd86aa018fb9ecd1036d3ec9d65f3c4 GIT binary patch literal 3047 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Georgia.png b/html/flags-tiny/Georgia.png new file mode 100644 index 0000000000000000000000000000000000000000..5fcc90cb7175c52d0a837fd208bd61488f46a604 GIT binary patch literal 3266 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 A82|tP literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Germany.png b/html/flags-tiny/Germany.png new file mode 100644 index 0000000000000000000000000000000000000000..269877aaf2b8cb7dd28dbc02599e7d383e1fde9a GIT binary patch literal 2857 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 Hu0mjfOZ{?p literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Ghana.png b/html/flags-tiny/Ghana.png new file mode 100644 index 0000000000000000000000000000000000000000..da52a5b8fe1cc8296e52fa3f368cfe213f906951 GIT binary patch literal 2976 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 Wa9lXgbNZJ60000il? literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Gibraltar.png b/html/flags-tiny/Gibraltar.png new file mode 100644 index 0000000000000000000000000000000000000000..316fdd9ba05de44363116cbbc694fe67da7c7142 GIT binary patch literal 2973 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 TpYj#t00000NkvXXu0mjfjd`zK literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Greece.png b/html/flags-tiny/Greece.png new file mode 100644 index 0000000000000000000000000000000000000000..388bb4983bf35d004a40f008584cc0c9c8b6e0d6 GIT binary patch literal 3046 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Greenland.png b/html/flags-tiny/Greenland.png new file mode 100644 index 0000000000000000000000000000000000000000..731ceaa3be32f3e66366d2e9d62b3dc7a2ce0cd0 GIT binary patch literal 3112 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 FV1f|~N5KF9 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Guam.png b/html/flags-tiny/Guam.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e97aa1f284cda739c8a5311bf7c770f75cf2a1 GIT binary patch literal 3067 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 JPDHLkV1l|m+=BoB literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Guatemala.png b/html/flags-tiny/Guatemala.png new file mode 100644 index 0000000000000000000000000000000000000000..a8afc98db0c5054b7d71ccad3f899ddc431405ae GIT binary patch literal 2980 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Guinea_Bissau.png b/html/flags-tiny/Guinea_Bissau.png new file mode 100644 index 0000000000000000000000000000000000000000..bc84276ec38458510a9ce2361a53df80195f30ff GIT binary patch literal 2957 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 M07*qoM6N<$g0HM|vj6}9 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Honduras.png b/html/flags-tiny/Honduras.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d19c36a16db7ea929e9601fa609a2fa478c56d GIT binary patch literal 2918 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Iceland.png b/html/flags-tiny/Iceland.png new file mode 100644 index 0000000000000000000000000000000000000000..961bcdc56639eca9c622d981e6c1e86df0450282 GIT binary patch literal 3014 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 IM6N<$g4#FDw*UYD literal 0 HcmV?d00001 diff --git a/html/flags-tiny/India.png b/html/flags-tiny/India.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5ecacae0211c28ab71e7059704132b7134490f GIT binary patch literal 2970 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 b|NjF3MWhKj+fKu=00000NkvXXu0mjf(j#J= literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Iran.png b/html/flags-tiny/Iran.png new file mode 100644 index 0000000000000000000000000000000000000000..47fb5f342539fbd9243dc33c6e2f69e694585375 GIT binary patch literal 3013 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Israel.png b/html/flags-tiny/Israel.png new file mode 100644 index 0000000000000000000000000000000000000000..6f931d4e16d6698d492ccb7d090feb180ac719a0 GIT binary patch literal 3016 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Japan.png b/html/flags-tiny/Japan.png new file mode 100644 index 0000000000000000000000000000000000000000..37bee5c20510d88eee10b7fffab904a1847dbd47 GIT binary patch literal 2999 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 FV1k9&)uI3Z literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Kazakhstan.png b/html/flags-tiny/Kazakhstan.png new file mode 100644 index 0000000000000000000000000000000000000000..38d6e7a2ebea5506962a2cacd9d0db56f8621384 GIT binary patch literal 3140 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Kuwait.png b/html/flags-tiny/Kuwait.png new file mode 100644 index 0000000000000000000000000000000000000000..36cfebe70f0b82656bf64ac29ec0efc88e0eee31 GIT binary patch literal 2984 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Laos.png b/html/flags-tiny/Laos.png new file mode 100644 index 0000000000000000000000000000000000000000..fcaae251c14557ed4322705c6b05e35a0a45f4a2 GIT binary patch literal 3025 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 FV1fv2b-n-q literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Lebanon.png b/html/flags-tiny/Lebanon.png new file mode 100644 index 0000000000000000000000000000000000000000..62af12519034417cb8ec259c3b5db26b14035181 GIT binary patch literal 3046 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Lesotho.png b/html/flags-tiny/Lesotho.png new file mode 100644 index 0000000000000000000000000000000000000000..e7457c77bc0676e1b76ccc16011ff175cde19232 GIT binary patch literal 3323 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 FV1kwlS}6bk literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Liberia.png b/html/flags-tiny/Liberia.png new file mode 100644 index 0000000000000000000000000000000000000000..43da6e9e8e0a2ae5ce2af56e95d362ba42a3762b GIT binary patch literal 2966 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 M07*qoM6N<$g5JlrumAu6 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Libya.png b/html/flags-tiny/Libya.png new file mode 100644 index 0000000000000000000000000000000000000000..7000aed65d8c7351ed27602554a198a27980b1d5 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^B0$U|zyu`s{=4=bNU@|l`Z_W&Z0zU$lgJ9>D)^mS!_#L3NTBJw2Bu>mOb!PCVt#NzbRNs4|)97Njo zn_r&bAhqpmnaUfr*RKQ~1WdS)V8F6f`9MOz)C?ZR!<-M8<}@%j+?ct9qe;b4hyBK* zTScw8PTdbK*WdfTf4cf-OP=;GegZknzv~tD@ja+cU%7^@M4a!$v07CB1p7<5}+MHj8ebo%rKfMt0J)Q&}cb{rNSyuQQWV6_-wV zbmU~uj2&l-Pd@pVShnHz|EEmrUR_VyTL1C?V|KmgHtXsqXWIk)u3F+6QIe8al4_M) zlnSI6j0_AdbPX(Z4GlvKjjc?Ltc(nF4GgRd48E>eosOa*H$NpatrE9}mXE@>ff^V* MUHx3vIVCg!0NUNeb^rhX literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Liechtenstein.png b/html/flags-tiny/Liechtenstein.png new file mode 100644 index 0000000000000000000000000000000000000000..de59c7f506946b86cdcaf437f216865e80bb2199 GIT binary patch literal 3004 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 b5BmoICw3op)a)NS00000NkvXXu0mjf5@3E@ literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Luxembourg.png b/html/flags-tiny/Luxembourg.png new file mode 100644 index 0000000000000000000000000000000000000000..921cc5ff67efcfd9039163643eb33b9ae3398ef5 GIT binary patch literal 2845 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Macao.png b/html/flags-tiny/Macao.png new file mode 100644 index 0000000000000000000000000000000000000000..a3dfeb49a05a89748279086f5a8496967cd1a56e GIT binary patch literal 3260 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 P00000NkvXXu0mjfH#>QZ literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Malawi.png b/html/flags-tiny/Malawi.png new file mode 100644 index 0000000000000000000000000000000000000000..d2d0db4da49c7b883c4fa886e28b46120420f110 GIT binary patch literal 2964 zcmV;F3v2X=P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0KrK_K~#9!q>sH00YMZ-&&=-liKUUKBoq>%mnhU8K_hrMiASMUC>0w)B1Dj|*32k0 z>!%v0yEos-cdy_VWuJDMk_WKWOmA%TkC^ygbu#pF91VfQTCSG7WO88^eJ1^nxu)m` z>@~vz6$P-oGd?p2SZl(^yZpNCMP#Wf<`In)Vay@|2qbyQBBrT08B&Q`#jg7HLu@f% z;9(OD0tph7z$TlE9?tmaKjcG3xy!9l*Iix}vhK3d##xs9!E*p-AT+M{7zJkl0000< KMNUMnLSTa5bflF4 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Malaysia.png b/html/flags-tiny/Malaysia.png new file mode 100644 index 0000000000000000000000000000000000000000..d6737df7977fca10be01819f955c7dc432fc3e90 GIT binary patch literal 3112 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 U03n}N0000007*qoM6N<$f){n!w*UYD literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Mali.png b/html/flags-tiny/Mali.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc35caf3a2e94befa2586980f4e34bb0b66e035 GIT binary patch literal 2846 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Malta.png b/html/flags-tiny/Malta.png new file mode 100644 index 0000000000000000000000000000000000000000..c275f5d7e1fcb8cf7a8e205dd91a3192a237b817 GIT binary patch literal 2912 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 KMNUMnLSTY(XO4yd literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Marshall_Islands.png b/html/flags-tiny/Marshall_Islands.png new file mode 100644 index 0000000000000000000000000000000000000000..03ebe05ed79a3fceb06e5cfb4e2c7bf6ea1150aa GIT binary patch literal 3360 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Mauritania.png b/html/flags-tiny/Mauritania.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4baf93a7aa0b6e98dd83948f51b8cd9dba2783 GIT binary patch literal 3109 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 VVY!6$l!yQT002ovPDHLkV1lay;feqN literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Micronesia.png b/html/flags-tiny/Micronesia.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e2704ef4ac9aa1584ee08261c26e2afa36216c GIT binary patch literal 3040 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 T!iAFM00000NkvXXu0mjfamT?| literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Monaco.png b/html/flags-tiny/Monaco.png new file mode 100644 index 0000000000000000000000000000000000000000..81d518dc4790e833abbc0fbf0c0827ac37b8ffbe GIT binary patch literal 2850 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 B!!`f_ literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Namibia.png b/html/flags-tiny/Namibia.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e9945085b645d52eb58c2e9c9d29d02b108669 GIT binary patch literal 3388 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 Hu0mjf)aTG| literal 0 HcmV?d00001 diff --git a/html/flags-tiny/New_Zealand.png b/html/flags-tiny/New_Zealand.png new file mode 100644 index 0000000000000000000000000000000000000000..67b4a2497a6b62027f54bbb8595f838dba09cffb GIT binary patch literal 3292 zcmV<23?uW2P)#PjQ{`&O=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0trb(K~#9!jFC%d6Hyd~|8wu1nP#SG+BBq6kSN-MG-y%WR0Z)-MX`w8h%GLBAm~PL z=ZhVmYZLHMXSez(~{0dEjxS{2_Y{e4%u#``_^hmeovsw+{Mq)g(Jd~)vb(03MoVt1nFP~q3tsi`Ij@yggs(b!v^-aY*uz%p_ z>iel5sFO9BUMz-od0lk~Js;cO11E|!5hy==bIs~?BiK?qk_lYb((?klt25;owUt^- z0?ME`0y6;3;8y4Ak4#Ff|@MEf3H%CxLv&@0Nk8~ zAkjJ^0yC7MK#0Sr4GU~6KGbA-@ltx;hx%vUAgnn47^W4m)N$LmQP>pxZrNbK63ngT a-vIy%hus=9jWJaK0000KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0JTX(K~#9!q>?)h!axi}#~Ux9h|&-tQ6nU{05{+^v|N-EAR2@qLF8b6Zg2a@&KU<9B@^Q4pEpgz z;mEqIg0|kDZe;Cd8pEZrY yyrcmD!%%gnon}ve9rTrXt6~oN_Dq95>@xuAT1oZPErxFZ0000KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0I5ktK~#9!#8SHn0#Oj0eIJAKY{0~`4r>s!BqJli8tg!@4HGRuvkT-94t&bF@2w5& zLpTE`-I--}W~tj%=nI1%;E=lhVk#&4gbaKE5I7)3og(jtuH;v`9z@tybNCVxHQTOG zx5nc-owg95IosJLb8`k(*g#-F;2ekUp;c`QKhtH8#Adpn!AP}DU8B2UQ8c m)oqjS;`XH~Z{2@B>@xsWbT+qKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z06a-VK~#9!VhnCnXJKRd|DOQ@e*F4srR7~7I*kDp%-mMD<}xSBJuzL002ovPDHLkV1jmeWN82Z literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Niue.png b/html/flags-tiny/Niue.png new file mode 100644 index 0000000000000000000000000000000000000000..d0b357aa713e08a27e4624b6cdbd698b26ab9514 GIT binary patch literal 3114 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 D&Q;QS literal 0 HcmV?d00001 diff --git a/html/flags-tiny/North_Korea.png b/html/flags-tiny/North_Korea.png new file mode 100644 index 0000000000000000000000000000000000000000..81ed930ae73cf36f994528b4f78187a79d4133a3 GIT binary patch literal 3054 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Norway.png b/html/flags-tiny/Norway.png new file mode 100644 index 0000000000000000000000000000000000000000..70ac8366e197f5061e8239c74a4fb7ccfd5a421d GIT binary patch literal 3019 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Palau.png b/html/flags-tiny/Palau.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9be904100275cae3e162bcb17b510a5ab14506 GIT binary patch literal 3098 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Panama.png b/html/flags-tiny/Panama.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3d1902b219724e9b8cf138daf9b4786b27013a GIT binary patch literal 3115 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Philippines.png b/html/flags-tiny/Philippines.png new file mode 100644 index 0000000000000000000000000000000000000000..18fe8fcf92ceb02e083e6ba46da7b6d7d2e6726a GIT binary patch literal 3104 zcmV+*4BzvKP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0ZmCnK~#9!l#;(o0%07+pZC4@^z=L_Bc#DeXlyr#`Wu3#wuT1(fg+p|q@^E=Awh%^ zXb?454nb2vw24D45gbwZThF|^_uJr_;ywH4`NHS>u+!4bRwn;lYlZXxJcT6RSkvw= zQp<^jPOIxm=?Q1#cEI)iK&Fq12Papy;|4U}gqIl+0RT0@w7Z9Da_9Kb+3+k#WvuR?M&HcBW9cEUSK12!+PN0yH4ol=VEArugD>v-A1G)x|_Cvv+N^+lsb!$4v_%!Gd0Gi*8zov4S zf^E=H7(v#-_21{pPbzI!s@w=+tS|=HL;|u8t^tu|?yQx~k!A6)G2x#D=*fAH)^@X2 uxy*w>7Vxk$(Yx){(@DqtKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0zgSbK~#9!jFC%7RACr~zwiJ5GnX@WM^l?g)5;QrL@1Ip#j+A2E5abiMbIW9f|l*t z)UIgJs%`CzS_ri$Atbse+G4^Q$8_>G+BD<2I?nme*J4_=$#?bez_WUBeE902p;J%R z6AzzfMw%y?Z4EAUUEh(t(E*cnox_i3EY0E^0e}br0f7Jj0Ei^d_uZ}ADqLzQoxXM< zJ~yp$I^WxL_C(|O{&NpT7qhcVh(N%InDCUClr9JWL<9gr=W>rkh1sSE_}#^M*ebDP zqZ5dNuG`#uY@v6h?2839%Vidgn~gsDG#}wg*>$``jz|Ufh9aTe$tWympi}~2aI}Y~ z)7f~-sv%{TONTWj*EiMmI3<#Geor*3dka$^+8H2U>brmBVt+jqpZ#vAs*fAN>X$vY z+YZz$ov6r4&|bLR5Vn}hD_ky~%*Q93lBu4qN` z%G0$8BYeDjPk&+J#T>JU3r891v>SFMd}<=4n={{PG%bWoVq5zi%^NeyqzVdfLLk%S zmQ@Nw!(kuOi^itoY2BCUK1qkW&Zs`m*sHOx(?33b?m%?JFCOA91q1 zZ98v);EXeOEgzJYQCxkeanek(^ssc95F`W=V&yrg+*x79ko^VMHeOP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z07*$iK~#9!)X}jGz#tGqQ5&vd751MeMRq_)xNvrGDt`YYOQvl^Nox4fm6$BQPXuX+ uXO08|$0)2F&Nd1iF~0QY4*&rF{{sL=s}k6dnuKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0We8KK~#9!jFPcR13?gm|JluD?<58fH6cNe5QtzW2#OYhUBHL1@B#ESEPMi=z}m{r z6ln$Rj7EqSAwptKbMf}v9UBn|$(?^U4ByQBGed{xJC2gf_*LYHjn?qw;xWz$%n$*Z zc}kiI0D+OJN!UODBphQDWQ^nznZLmo3m>Bu-LDn<&s$mqs&q&6GfN_DAbd4G7~dDK z7EHP3c7yg>N9SebT5vXPY{OJ`hKqxsP_4ViO>=a%+=@TeIhq4;T4w@VrWf||VK0J2 zFwh0diirQ=SrT``{N}3HYd8GUdfaO{`|kV$WkXn%1`BY=-sNXyY4?4*+pLZv+fb!j znq_!$+mh^?&ArN;r`^4qCyK~AGgm$3&Jvagtfka2*(7ob3;+xQgVI0jdjKlKbZQa% Re%k;5002ovPDHLkV1i!>+`s?; literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Puerto_Rico.png b/html/flags-tiny/Puerto_Rico.png new file mode 100644 index 0000000000000000000000000000000000000000..f647603eabfa84a06cf59466a33bd6ae36443c6b GIT binary patch literal 3121 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 LNkvXXu0mjfg4glG literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Qatar.png b/html/flags-tiny/Qatar.png new file mode 100644 index 0000000000000000000000000000000000000000..4796b49068a5eac6463ca9407aa486dcfc78a7d9 GIT binary patch literal 2906 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 Eg3(lo&j0`b literal 0 HcmV?d00001 diff --git a/html/flags-tiny/README.txt b/html/flags-tiny/README.txt new file mode 100644 index 0000000..c28fc68 --- /dev/null +++ b/html/flags-tiny/README.txt @@ -0,0 +1,12 @@ +This directory contains flag icons for use to display country flags in the DUMP1090 web interface. + +Country flag functionality submitted by Dino Moriello + +The flags are supplied by +Free Country Flags by Gang of the Coconuts and is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. + +Free Country Flags: +http://www.free-country-flags.com/ + +Creative Commons Attribution-ShareAlike 3.0 Unported License +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/html/flags-tiny/Republic_of_the_Congo.png b/html/flags-tiny/Republic_of_the_Congo.png new file mode 100644 index 0000000000000000000000000000000000000000..ca771653cf684f3f753c5003bf411074d8df9974 GIT binary patch literal 3178 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Romania.png b/html/flags-tiny/Romania.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2d6bc90f12ede9b8faee08767e4a1afbdee828 GIT binary patch literal 2846 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 X@*Q3Xcbi-t00000NkvXXu0mjfI+ei# literal 0 HcmV?d00001 diff --git a/html/flags-tiny/San_Marino.png b/html/flags-tiny/San_Marino.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5d99b4c79b300d2259aaabfe5a407b36b8976e GIT binary patch literal 2844 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Senegal.png b/html/flags-tiny/Senegal.png new file mode 100644 index 0000000000000000000000000000000000000000..21d2ad1956a5e23b6a8b0165961d3bd8c28802d7 GIT binary patch literal 2938 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Serbia.png b/html/flags-tiny/Serbia.png new file mode 100644 index 0000000000000000000000000000000000000000..d101e9e383dafc729a62f4196c8138b521e53f36 GIT binary patch literal 1098 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 VBsXYD(?I|L002ovPDHLkV1f)$ccTCR literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Singapore.png b/html/flags-tiny/Singapore.png new file mode 100644 index 0000000000000000000000000000000000000000..d21af8266642e30a10b84d9a0d1e4147468a615f GIT binary patch literal 2971 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 R5qJOq002ovPDHLkV1k0Ds}ukL literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Slovakia.png b/html/flags-tiny/Slovakia.png new file mode 100644 index 0000000000000000000000000000000000000000..a489baa819aec69cd610120a36da14d63beee2a9 GIT binary patch literal 3129 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Slovenia.png b/html/flags-tiny/Slovenia.png new file mode 100644 index 0000000000000000000000000000000000000000..001de05d4ee6e65e9e75efd94bd156fff51da42b GIT binary patch literal 3061 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 D@{iCB literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Soloman_Islands.png b/html/flags-tiny/Soloman_Islands.png new file mode 100644 index 0000000000000000000000000000000000000000..ffba5096bc7bf464c4c73595822b2e5b9c4e4400 GIT binary patch literal 3304 zcmVWi>P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0u@O_K~#9!jFCHN6LB2JfB*me@9uw>#M%s1Z)nAUW@=K!3OZDzbO_QRSg@!Op_38U zh*oguW(_K$i&|e~lKQBNNVOW<8Z}1RQd*IiKs3>sHi^01BlmDps`%(<|G@WwHXOMl zilU+!2!UnWF3QT90e?ZQ695SMXHV^Z@*!Wwo+d~1fZy%pWX*6pxw9d^S90lw^_yl| zxT4ZcOdEw?S~sQDf^Jxe_r+4Jj?pistaGb)?Qmy2+%Ykk zQMR8ElNp8(6Ri&qS9I)eX&Bt+i^Qg0rI*|e7XPqylhF-k*T(cf_o#z@Jbq8O`hv9q zCLD@l7Xjy;6D(8tz(_f!W|RiX=O)LOl2|Qfl^orD4FbOUR#LV m<*&bFO$#UoEAs#h>-zwx?A-LJ>_N={0000#PjQ{`&O=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0RTxvK~#9!q>?c&1W^=)@44^2d4rKCHnCVFh=yhhkzPzhX?yl-M5QQ`dK(I zM!^6I@6S7F5ZT*UC8C%2{^{*q?wn#CbD4-3D808@zYelqmd8eyAuvE=ZGSsYtnCi6 zKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0o6%FK~#9!e3DH_RACf`&-wo3-f_&Pkr^`Z9~u>9q=CdxqC^s^mAHvAS`5^}Y*D+m z5$MuY3tQyQT!<^dg%Q+dgo;v%k)~)GK zNCa>*dGR5+4GWKSHft;Z2GxoHq~fv5$sHFJ!pq!;MdZ=pTRqVT&%QN|22oYdIe$7{ z$0Ol41u2-=FKjP-+03+^=^Y%47r$dZPZbjr)W|Uw<_{)XBIi42en#HyqRq^2Bi zzuP@9_4R#t?HTwk;E@bOAZxHP4<$l((w&)8ZL^;($0r4TN&Bgmp0Ri{(>?`77L4J+ zt{7Y&Zn!ehJF_2qy(bk?S^KUrfEWafl#u_JXai2!C^QlQ2mmVv8Uce~69W4yKHF|h zrV|^j9pgE>=#m0m@X7gzTdr-I&nqy5CVrHlmTMxqof_$<)covLX7iI}iz>>4 a`ZECbdAvnubRru70000KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0t-n*K~#9!q>;}{R8bto&-dQ@=7&EfoSd+ zKb3y`dhU7k`!Z*-!|l0bP2Oo*pQ+9CKDF%?M@qt0h>e!H6Zfi%3)dQ)O!ui>GvjgJ zIevK0jgvb+HlDvf;^u$M5`l;SFcbbr00cHvxPAdD7WZtGDCK;Poi$Ng7nY~I72B7p zYpEk2mPBAY-;&Z0L2D6<1izcrTo8?lXvzM1EKV~CE-l0Ey)->-$I`aXh5?4Bt?ri5 zp5`x>RU8~U@?@kfYH0xSd)K3;-tO9@94I!#tI}RP@uKHJV?*UPz2k1NC2O-Z+V>+j zFTTkf7^e-lvMPA?uGvxsY~;}G%ZU#!Z@m@$KT~HTIbB%0IxIeKBs-6$I}4u%^O1G7 z1j3L~*|N?_b!KR)ZFa&D5@4od=N>Lu$<;uV$go0%WXuXjT+dHbBr0RPu)MBG`W$V? zt9^$`muoV)Z18nLS`uuuKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0ozGLK~#9!Y*ImJ(_k3=l8ye3Mv>t*P^(yxP6l4Ol3irDu9k`(JG9VVTE=d@ zB&ejtn`PIYYAe#v7Nh||impy*)oL)p?7gzgrA_L^ba=}S33f&7N$nxo{X*T6mn|&vB5+zO2{lKA%q%#qq#uwOTY94F-eRY}R6W zTED0DtvQp)gu`J$5E_k!Epgrsg+hv=P)g(RxW%01oH8X63DYzQAw199By+r;rfC8I g%d#idb8`EC07;%I4pxTnBme*a07*qoM6N<$f*M9eRsaA1 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Soviet_Union.png b/html/flags-tiny/Soviet_Union.png new file mode 100644 index 0000000000000000000000000000000000000000..385d439431509741e0af44df3354b8c39ae620e3 GIT binary patch literal 2876 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Sudan.png b/html/flags-tiny/Sudan.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe479310d75e9c52a74f16a150dfa76da4496d6 GIT binary patch literal 3028 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Switzerland.png b/html/flags-tiny/Switzerland.png new file mode 100644 index 0000000000000000000000000000000000000000..a68cce7f4b33999e13716de5af190e66eb08232c GIT binary patch literal 3073 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 P00000NkvXXu0mjfn_kob literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Syria.png b/html/flags-tiny/Syria.png new file mode 100644 index 0000000000000000000000000000000000000000..a56ff985d343804fb06e2759f67e1fc88239402f GIT binary patch literal 3004 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 M07*qoM6N<$f=5KEng9R* literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Tanzania.png b/html/flags-tiny/Tanzania.png new file mode 100644 index 0000000000000000000000000000000000000000..ea814f0dccc44207016f8582697b07a36af8b6ae GIT binary patch literal 3230 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 e8{>Qa%l81cS!6C>%z*g-0000 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Togo.png b/html/flags-tiny/Togo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f5d1c73dcab3cc19c1c93441373206f3d1d6e5d GIT binary patch literal 3027 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 VVcemETulG~002ovPDHLkV1i4W%#8p5 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Tonga.png b/html/flags-tiny/Tonga.png new file mode 100644 index 0000000000000000000000000000000000000000..c4683eccde7857c29a844c3a15c79ad8624bfdf5 GIT binary patch literal 2971 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 Y0IMtjsyUns(f|Me07*qoM6N<$f_A+n{Qv*} literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Tunisia.png b/html/flags-tiny/Tunisia.png new file mode 100644 index 0000000000000000000000000000000000000000..687fd744fec4157447a7fde53d644aa0ee387b70 GIT binary patch literal 3059 zcmVv$P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0U$|4K~#9!oRYsUgJBTIKleOuwcdybgEn1+Zb(dYGl`M-2TTTwK}<%Gh*_F68U~9& zEd47iV(}ws(6P~kq?Z1A-}ekeq zy*Sm^s#)KXiHtrz1Z!Dp@82i-L?sT+b!2|Q9u^oJ65rQyDcs%E`#TbyoW=bl4T#4i zGer>SQ<*R%!OyjOih&5)AP{pv?)PDaZm=EkF#!5&VP|S`KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0VYXAK~#9!oRYsw13?glzuDa*##op_g9w5Uuuf&Ipp9S~6m7Jy62UTHWo0D@v59{{ zN-IkXD?1S^#6}P$2!c)SZtr&2GX6}0Qw;+jyf^QOU5)tfnC}Pga2_RSGZ0pv_CTCb z7?WyErm6rT3<(F)T&--I=8dX1q_!k;^Jqiv2p&RT*-5Sz>U!_Ywf24c7zL#w*2?5; zc<+G2WgvgbR?A!A^~s+%DF`DGHl{M8cTaVrO=%qG`g-3Ym@U00000NkvXX Hu0mjf@`=o` literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Turkmenistan.png b/html/flags-tiny/Turkmenistan.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2d633bbdd35453f033e7224cc4f6dcada3d861 GIT binary patch literal 3091 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 VE-HO%imw0w002ovPDHLkV1jwklv@A* literal 0 HcmV?d00001 diff --git a/html/flags-tiny/US_Virgin_Islands.png b/html/flags-tiny/US_Virgin_Islands.png new file mode 100644 index 0000000000000000000000000000000000000000..73d056db9ea8097b1ef160c3afb74b8f4b2f3312 GIT binary patch literal 3308 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 KMNUMnLSTY0P0xz} literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Ukraine.png b/html/flags-tiny/Ukraine.png new file mode 100644 index 0000000000000000000000000000000000000000..646a017d6f21d8d5c9efe55e2142b852c0b2d81d GIT binary patch literal 2829 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/United_Kingdom.png b/html/flags-tiny/United_Kingdom.png new file mode 100644 index 0000000000000000000000000000000000000000..51a69b19b278d37be2f2f28dfb6d8a2ec13bd21e GIT binary patch literal 3465 zcmV;44R-R0P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0=7v+K~#9!Op;$Lm2n)#zu({cd*5@M!-{pyQk!aBDCr`R zWJu|d(OR2US8A=5(QuJivAH-~$6=MQi4fux?HuP{=Y3!A+l6U8SI^Do;`!`BzT^Ta zE_Fo3)i-uLeKF+m^8RXtm#{DM^;umH2*YdM>pRPD zKEwTaCKoTqCFrji6{#b=B*Cb-bY;mY@O{17s>{f6wuZ;ts!cySDCXtUtek;QON}jE z^9yVKDi)pA5d`q@f~@e{req}B3ejk&zgo0f9Ji{0r9pQZNNAX-3c!E>$>Xs*+>{|4 zO9fFt``+lyVX_Po01yHj638+T0KxzOND?4|EN>P<5CITCkY!3J-GXIl6Jse50^*i4 zL;wJW0hWUekuZpW2tZ^RZDtDq_5u zxgb)%yy_&pPrydo}5#2$S5?)#pg4d>I#f&U!l6(J~P{@JzUiPD^=-9_-5slTo*>3 zHT7ykgHtXRa_;r$p0-RKE5sPgQE$??9xjV1=V4WtEcAnbv?_uYj zPf*d9n~_vgbz)x#E8VNd+3BIg3>yD&!1LtMoX%j<KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0Q*TqK~#9!oRBd}Ls1k&XWqMs!Kf$*R>scGT5ES;;|6pOLbl=pQe+cCTER-N$`;h1 z=70aYcPwHfCSS~HFLMtwJU+V-eozNaHvM)m>!cJ|4uK}Zx?St{HzGt}@uew|cYE7c z7nT!N)0AQo!WAI^f=D_U&oA$zu_dY{9AP8?kP=9M06fypR`2}Oa&9qODF%RqL=q4I zFsG=h&&Ma_)Mj?K*V(+Pn~(rNAW;|X?{#c&Xsuzn+i-ZfDEvJmQN#n(X*N}?>`Vae zc0HZ^zBxE&cC_K{Rt=7p?}0y1ajWhh@P7z2?)}@n&(;V?N0JS`Ms!G1` Qd;kCd07*qoM6N<$f<4^62><{9 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Uruguay.png b/html/flags-tiny/Uruguay.png new file mode 100644 index 0000000000000000000000000000000000000000..3e62f2824037667e1a917a2a1d3294e3e04d73dd GIT binary patch literal 3056 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 FV1oOK3()`o literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Vatican_City.png b/html/flags-tiny/Vatican_City.png new file mode 100644 index 0000000000000000000000000000000000000000..3148b6a487cacceb8b6ba693d810d518ef99f428 GIT binary patch literal 3047 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Venezuela.png b/html/flags-tiny/Venezuela.png new file mode 100644 index 0000000000000000000000000000000000000000..268e4e37cab507763ed1761dc6baca2aefdfca13 GIT binary patch literal 2959 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 literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Yugoslavia.png b/html/flags-tiny/Yugoslavia.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1d6a9b61fa6d91ad492faa688d2dca58941d16 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^A|N&g8<1QX;1>s^7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS0b$0e+I-SLLAE4scNd2LAh=-f^2tCEXHOT$5DWk0lnpcf z%x~;!;PeXS4Y=#z#`e{3Rn^SG(-VJRG5ugK;BYg9(ODsAU*1ipy9RrX9&m_dejjx6 fz(F}p9v+7E{DL0@xl~sGjbre1^>bP0l+XkKqRTqo literal 0 HcmV?d00001 diff --git a/html/flags-tiny/Zambia.png b/html/flags-tiny/Zambia.png new file mode 100644 index 0000000000000000000000000000000000000000..094026a65e7c0615eaa8a2436d3a73f863c9db9e GIT binary patch literal 2992 zcmV;h3s3ZkP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0NqJMK~#9!2axL( zgv2Dnm76PO_Bl(TW+Y1g{+G36`Q%87021Hlz{u1{1mVC=G%ziq^XMx>Lbl^{KX5IJ z;+0`)GIY&#TWUNQis}zo0295_K?b%sIpo8v%~yW2(z1W~>vp5@(r;I}-0hxk7s^@E z0PDv|WTmz9YP@dgw4U75)18g+*=W@=`Y{DQ=l#cK?ZYmfYP`HH&BwjDgv4Ln2Jr5c mndSrl0Z@%}_(T5@e+~c?)>}z_Y;8sW00004B7LEP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0aHmtK~#9!jFP`g0&y6|-}k&b^{x}AbkM!2MTnrHhDgGeiWZ|qkRbnn{)DD-lm_XC zg&dE^*|gAF`Wk>aCnF` zU`Rx{LLpmE&&+Zra}$w6nCT||sc$NmKcDfrSO-KIEC)OSXoMC~_xnZaNO#@NTV^S) zHw0O+^+y1W5%$`xuh%uHYzEeg54GBJYIR<%du7=kwg}r-<=#g^h%|dA|g@mebZCw{jk=0_pJoDV4z#8DMmjiaJGLF0Z#@KF(Udse(yr%;KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000ZNkl= ICAO_Ranges[i].start && hexa <= ICAO_Ranges[i].end) { + return ICAO_Ranges[i]; + } + } + + return unassigned_range; +} diff --git a/html/formatter.js b/html/formatter.js new file mode 100644 index 0000000..9370845 --- /dev/null +++ b/html/formatter.js @@ -0,0 +1,309 @@ +// -*- mode: javascript; indent-tabs-mode: t; c-basic-offset: 8 -*- +"use strict"; + +var NBSP='\u00a0'; +var DEGREES='\u00b0' +var UP_TRIANGLE='\u25b2'; // U+25B2 BLACK UP-POINTING TRIANGLE +var DOWN_TRIANGLE='\u25bc'; // U+25BC BLACK DOWN-POINTING TRIANGLE + +var TrackDirections = ["North","NE","East","SE","South","SW","West","NW"]; + +var UnitLabels = { + 'altitude': { metric: "m", imperial: "ft", nautical: "ft"}, + 'speed': { metric: "km/h", imperial: "mph", nautical: "kt" }, + 'distance': { metric: "km", imperial: "mi", nautical: "NM" }, + 'verticalRate': { metric: "m/s", imperial: "ft/min", nautical: "ft/min" }, + 'distanceShort': {metric: "m", imperial: "ft", nautical: "m"} +}; + +// formatting helpers + +function get_unit_label(quantity, systemOfMeasurement) { + var labels = UnitLabels[quantity]; + if (labels !== undefined && labels[systemOfMeasurement] !== undefined) { + return labels[systemOfMeasurement]; + } + return ""; +} + +// track in degrees (0..359) +function format_track_brief(track) { + if (track == null){ + return "n/a"; + } + + return track.toFixed(1) + DEGREES; +} + +// track in degrees (0..359) +function format_track_long(track) { + if (track == null){ + return "n/a"; + } + + var trackDir = Math.floor((360 + track % 360 + 22.5) / 45) % 8; + return TrackDirections[trackDir] + ":" + NBSP + track.toFixed(1) + DEGREES; +} + +// alt in feet +function format_altitude_brief(alt, vr, displayUnits) { + var alt_text; + + if (alt == null){ + return ""; + } else if (alt === "ground"){ + return "ground"; + } + + alt_text = Math.round(convert_altitude(alt, displayUnits)).toLocaleString() + NBSP; + + // Vertical Rate Triangle + var verticalRateTriangle = ""; + if (vr > 192){ + verticalRateTriangle = UP_TRIANGLE; + } else if (vr < -192){ + verticalRateTriangle = DOWN_TRIANGLE; + } else { + verticalRateTriangle = NBSP + NBSP + NBSP; + } + + return alt_text + verticalRateTriangle; +} + +// alt in feet +function format_altitude_long(alt, vr, displayUnits) { + var alt_text = ""; + + if (alt == null) { + return "n/a"; + } else if (alt === "ground") { + return "on ground"; + } + + alt_text = Math.round(convert_altitude(alt, displayUnits)).toLocaleString() + NBSP + get_unit_label("altitude", displayUnits); + + if (vr > 192) { + return UP_TRIANGLE + NBSP + alt_text; + } else if (vr < -192) { + return DOWN_TRIANGLE + NBSP + alt_text; + } else { + return alt_text; + } +} + +// alt ground/airborne +function format_onground (alt) { + if (alt == null) { + return "n/a"; + } else if (alt === "ground") { + return "on ground"; + } else { + return "airborne"; + } +} + +// alt in feet +function convert_altitude(alt, displayUnits) { + if (displayUnits === "metric") { + return alt / 3.2808; // feet to meters + } + + return alt; +} + +// speed in knots +function format_speed_brief(speed, displayUnits) { + if (speed == null) { + return ""; + } + + return Math.round(convert_speed(speed, displayUnits)); +} + +// speed in knots +function format_speed_long(speed, displayUnits) { + if (speed == null) { + return "n/a"; + } + + var speed_text = Math.round(convert_speed(speed, displayUnits)) + NBSP + get_unit_label("speed", displayUnits); + + return speed_text; +} + +// speed in knots +function convert_speed(speed, displayUnits) { + if (displayUnits === "metric") { + return speed * 1.852; // knots to kilometers per hour + } + else if (displayUnits === "imperial") { + return speed * 1.151; // knots to miles per hour + } + + return speed; +} + +// dist in meters +function format_distance_brief(dist, displayUnits) { + if (dist == null) { + return ""; + } + + return convert_distance(dist, displayUnits).toFixed(1); +} + +// dist in meters +function format_distance_long(dist, displayUnits, fixed) { + if (dist == null) { + return "n/a"; + } + + if (typeof fixed === 'undefined') { + fixed = 1; + } + + var dist_text = convert_distance(dist, displayUnits).toFixed(fixed) + NBSP + get_unit_label("distance", displayUnits); + + return dist_text; +} + +function format_distance_short (dist, displayUnits) { + if (dist == null) { + return "n/a"; + } + + var dist_text = Math.round(convert_distance_short(dist, displayUnits)) + NBSP + get_unit_label("distanceShort", displayUnits); + + return dist_text; +} + +// dist in meters +function convert_distance(dist, displayUnits) { + if (displayUnits === "metric") { + return (dist / 1000); // meters to kilometers + } + else if (displayUnits === "imperial") { + return (dist / 1609); // meters to miles + } + return (dist / 1852); // meters to nautical miles +} + +// dist in meters +// converts meters to feet or just returns meters +function convert_distance_short(dist, displayUnits) { + if (displayUnits === "imperial") { + return (dist / 0.3048); // meters to feet + } + return dist; // just meters +} + +// rate in ft/min +function format_vert_rate_brief(rate, displayUnits) { + if (rate == null) { + return ""; + } + + return convert_vert_rate(rate, displayUnits).toFixed(displayUnits === "metric" ? 1 : 0); +} + +// rate in ft/min +function format_vert_rate_long(rate, displayUnits) { + if (rate == null){ + return "n/a"; + } + + var rate_text = convert_vert_rate(rate, displayUnits).toFixed(displayUnits === "metric" ? 1 : 0) + NBSP + get_unit_label("verticalRate", displayUnits); + + return rate_text; +} + +// rate in ft/min +function convert_vert_rate(rate, displayUnits) { + if (displayUnits === "metric") { + return (rate / 196.85); // ft/min to m/s + } + + return rate; +} + +// p is a [lon, lat] coordinate +function format_latlng(p) { + return p[1].toFixed(3) + DEGREES + "," + NBSP + p[0].toFixed(3) + DEGREES; +} + +function format_data_source(source) { + switch (source) { + case 'uat' : + return "UAT"; + case 'mlat': + return "MLAT"; + case 'adsb_icao': + case 'adsb_other': + return "ADS-B"; + case 'adsb_icao_nt': + return "ADS-B noTP"; + case 'adsr_icao': + case 'adsr_other': + return "ADS-R"; + case 'tisb_icao': + case 'tisb_trackfile': + case 'tisb_other': + case 'tisb': + return "TIS-B"; + case 'mode_s': + return "Mode S"; + case 'mode_ac': + return "Mode A/C"; + } + + return ""; +} + +function format_nac_p (value) { + switch (value) { + case 0: + return "EPU ≥ 18.52 km"; + case 1: + return "EPU < 18.52 km"; + case 2: + return "EPU < 7.408 km"; + case 3: + return "EPU < 3.704 km"; + case 4: + return "EPU < 1852 m"; + case 5: + return "EPU < 926 m"; + case 6: + return "EPU < 555.6 m"; + case 7: + return "EPU < 185.2 m"; + case 8: + return "EPU < 92.6 m"; + case 9: + return "EPU < 30 m"; + case 10: + return "EPU < 10 m"; + case 11: + return "EPU < 3 m"; + default: + return "n/a"; + + } +} + +function format_nac_v (value) { + switch (value) { + case 0: + return "Unknown or 10 m/s"; + case 1: + return "< 10 m/s"; + case 2: + return "< 3 m/s"; + case 3: + return "< 1 m/s"; + case 4: + return "< 0.3 m/s"; + default: + return "n/a"; + } +} diff --git a/html/images/alt_legend_feet.svg b/html/images/alt_legend_feet.svg new file mode 100644 index 0000000..3fd6af3 --- /dev/null +++ b/html/images/alt_legend_feet.svg @@ -0,0 +1 @@ +alt_legend_feet \ No newline at end of file diff --git a/html/images/alt_legend_meters.svg b/html/images/alt_legend_meters.svg new file mode 100644 index 0000000..6e23702 --- /dev/null +++ b/html/images/alt_legend_meters.svg @@ -0,0 +1 @@ +alt_Legend_meters \ No newline at end of file diff --git a/html/images/box-checked.png b/html/images/box-checked.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5cc83466775aec37c30692a36f207ffc167241 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhoCO|{#XvD35N5n|x9$&6u-wzd zF+}2W@}K|z?U|EP?sKx0`EjzvJovue_W$%}%MFZNzRXK7*k+h6F!jjFX%AmnvbBl# zThEZVVX68-Dn%fU;lT$)MiXMqjKSIm4hJA2@IaDelF{r5}E*lc2EZZ literal 0 HcmV?d00001 diff --git a/html/images/box-checked@2x.png b/html/images/box-checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8a75b86d2b658b047104be29d67cbed39e343a77 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4foCO|{#XvDt5N7lYQuzQByyofR z7-Dhy?FB<`rbLyy=pDt5=!DtQrPk2-lNqS+H+b&YSedCet!7m+LL#eo+T8W z)ys2~nDcW*|DV|`&v!3*x=;VX;r{tTf+2rzD(3Dln7UeM+h4!WUo9uyEMQu&qrT|G zjp9$OO53NVWK^s^IA3muN9oht2WpLKKbg((=-LHdeFI~EvcPhb$ z>%b$QqXj(23wZt;@8Ju}`FcM?z0dW-+lT(Vr(H`*jM`4WVQ&x;yyCpP_udza86_$< o$@@3|%si2^BS@)eT7Ny`xiwDW@{PtbfIejKboFyt=akR{000$%1poj5 literal 0 HcmV?d00001 diff --git a/html/images/box-checked@3x.png b/html/images/box-checked@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ae85a45c6845bdd7e33a47ba5cb056ea3e46ef36 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?39a}Z`Uj+kEs6#VY# z;usQf`0e$De$0*{tq<$drs=%S%KpWb6ShtCYAJ`v!mjiKhc>S{7?$%&VaFn~oZxVzir$qIPtR9wsjA+&$0bvoc^}+_|hM@X2*Z7VblpaU!0)3&yJyndAp)N Vi&U>r8n br8M&&+$P^0#2noMw3ETp)z4*}Q$iB}M)W~+ literal 0 HcmV?d00001 diff --git a/html/images/box-empty@2x.png b/html/images/box-empty@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3990ff53170c6226caa4bc51e1b1ab2a206d3d89 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4foCO|{#XvDt5N7lYQuzQBoaO1_ z7-Dhy?bU_6hYbW;AKuTbv~hAj$u!N#>Bicih$-PA@D>#BdhSl?Q@ literal 0 HcmV?d00001 diff --git a/html/images/box-empty@3x.png b/html/images/box-empty@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa7e2b0416a4b7e0cafe80cdfef8f47701667dd GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?39a}Z`Uj+kEs6g=(e z;usQf`0ezKqRj?8to(7mHaOl;xXIwAAicy%ckzTES>*~AH-*^;Sp1YfZ)#9%ty4Gs z|K$0zE(v8#rB4i6MsA_c@9*p|T=qyX4OrB9w%G%zEhKdc9sOqQj)FEw>t zY~p;gK|v`uO?%bZ9;w%NpKdXZ-YNHmDL+)UjA8NWGs3ISJar76Zc@YOBI|fE$MM`; Qptl%2UHx3vIVCg!0Ix4(V*mgE literal 0 HcmV?d00001 diff --git a/html/images/close-settings.png b/html/images/close-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6c65377c58ef88ab436f9be4adfa65ca4ec70568 GIT binary patch literal 482 zcmV<80UiE{P)l+AI%KnzA7P6Ix2bO)jXOa(Co>Clx@3 z0w5LOR1lj}Zjf6z#ku814i>Qf4T)wvp7pMtrEev5XfiP#-~*oZH3MSORnp|vX#hn) zpa9$1)8_z$q^nIkP|OHeC}dvefS4XI0Y<=5!C763BgC8#6LE`)@e%WhnAfJw6Jn

xO<~39x$UT?;Ll@O??bo-~$+P+*KdW>5 Y0lo{QjrJF1^#A|>07*qoM6N<$f;ET8Qvd(} literal 0 HcmV?d00001 diff --git a/html/images/close-settings@2x.png b/html/images/close-settings@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1f45474bebb8a6d85869bc57526766bc666bc3b3 GIT binary patch literal 874 zcmV-w1C{)VP)*i482U2axFe(dh`bLXrQ%5K?P0C2fkp z2~~j39k2?(%*2TeAX5PIn^lTDl$SgyPIUw@BCrre{s)hc>*at^;8WoE7zIAAmjhqo zO0T5MX_H?5)kTUtp#TGbIf6J+o3(zh>l#S|oA`q?SOItz{>L@9xjCo`EQrSxZMFbQ z@@JJKEI%%rX01Q!-y%~jM*t}~vW@d^m}O-1o|$;pg{}*nbY5}25UB{697KfT-iIr_XmSqzC6}E z+Lj=GuyP160VkYr+@rhTO{8y?s5NjywLO`2qHc=M;e<(Edw~^sVw4B&$NtIAxtt0BhGdvbsLIU%rYw zlK?+jrlvloXZ`!~4A}u!wxZ zV?E!Rv}*=cr=o>)Yc*>d4V(@e%eO-O;_yI@TxxtuTp-HtZoAwlIED`Vrnsr>D&j!v zt|`i~@|#){(+;2&nePCLOKWGKT%}4kW#1(J9}W#*6_6x*sQ>@~07*qoM6N<$f?4p5 A(EtDd literal 0 HcmV?d00001 diff --git a/html/images/close-settings@3x.png b/html/images/close-settings@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b71c832bb1ccea2e4e4c76ed29eb1c28d7bcda23 GIT binary patch literal 1260 zcmV}{gKoH0OQc|RgN|&TdC)}kobm=U*q~HZkVEY6- zp8z<4?58FjxJqe!0!zMtmC~JjgA_Xo%V_nnVpo=@wQ1QZ$c374z znNkXyB1}6}#DXnpH#;6wK;E;UkrChxx)gspquAiFAUCdqby`5C047KK;c@=EVF9Za z)~$K$hC#*vPTvd?0KNN^){;vO4}DO7%6+1diF5>;0T?sb5v^InbcHX3y@V{f)+00H zxhi%zB@ymXa`=oOWAssk&)&23p7KnfGF@H_%zF#D_t`lsE0@(86)n~ML7qyY3EqSF z(+$h>W4ZPF$iBWTlv>Rymkdd?vat9|(omDCYfiy4x5foE1I%=VHsw@u-QeLNJ#bkS z@mfNLwDAiT7^@=jHH*R{m5*K=6a~#RB>VEr7_4~CtcAa>sGun@xl*K+?fbUjqpw(x zc|2?pl546?dkOa{>6QsfKk}`;cJo_PIv?8ZNd~u+JSp0zkqwYP+-Gu!9aDwU1Iv!m6aRKG#Jz za-sS8I|QvR&}YWGp1pkLpt9+lS%%De+^hrGgVReFz-vjMumL%ygR5}|urkXl*XV#w z4QxTiR=OVb$%hQOa~0Ll$SS0*7O$Eib*Z*Zjrgf<#bXcljGdOGuA*ZJI>mzy`b< za~1vDfQG%@HO(er#oA^6yxW6{>2caBk()aiFa^sG`F6ZuxIJ*@VneQiTpBIV%VC!d zH+{qc(XFa7TCo=_G?TK)rkTSwy|1)j>sb{+#i7!gX|>K*Z>2ugT!FraO%>Kw<(slL z*YY8sqe!&RIGjv<>D{NH$`nrSeHG@t-i_k*~T0ZvwhEUy)&;LD<0NC03qt8FZ WazWbVBvdT`00004%^t5G$1_lN-|9}1#pI&;7$tmgjJKOqove!09h6_Aone%2%&XEqmF6LQ{f!uDo z5?d3lFnQ_x`1kp{J{!;>?)vxks=B>7{e8ZDVd%_=?ri7M$T(e9&3k{-^Y&GK`*m19 z=t#$=hFOkZni?A$XNDCX;Ko^!(db`);1uqY@v5_@xM_nd1M zZw?%s^d_aXJ0f%W)aD?+DQ6y*ez5zhR)1}g&DY;?_wH?fAAH|`|MTyAzW$3lyh&${ zQBr4}LW5e7byGjHr$Ucgk@cbUH|hQd7Uzk2+`6tb;qpo*z3TJrjhpfwGRE|^)jBxu zyb#0mA^#rpRIM9AAD(QV{&?XvHQ@(8-Yl~)+COpiHFL8Y$!XV~KPtT!b-sMx`VeOW zDaN!npZEW`-1PeH)Iw3N1&i0-eDgZz`?7w$ywx9Lmxil_Ry@uA^7~Z#&qIIb=P0IY zEL~TyI&$rK$vDji-z%4NvN|xZ;6e}V8Q0{>KAH3Vy#D&9M|<~P?%(%#^X#Op`$E3$ z3CWaee(^@2fawn7@2NUbGo<=>O4@xIfHG6girdNht4>#|y4rs0{)fL(4PP1U1TuKK`njxgN@xNAzYN{k literal 0 HcmV?d00001 diff --git a/html/images/column-adjust@3x.png b/html/images/column-adjust@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..fafdadc300153b196c52c7149adf318688dbb8ab GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^?m+Cx!3HGrcUk8HDb50q$YKTtMRO2lG>({G#lXO% z?&;zfQgQ3;osHSTi4w;@-j7b|y7b~=*oB5586FN-)$JM`f=l$oUL_n~bvm`6Kw#6W zSJ(crmrm&8)Ag9>r0!k1vLlp#>Wc|tUaA6tJ%@KL`Re2LdfpC61#Gx;%6ad zo4@{=oZdZk$+veRi)#$@Ult|XDra6dua)4LUndZwpA-Ij*RR~ahvvFpp1L*5)^qRL zKhAll&%b(hwdP!?b>*7v>rKp_thq0%`=fC0!Cr6XbyY8~ZS5}H8~!Jz{!x10bjvAa zSAXrDH*d$i#+>+Lq1HEQ70x<5%Vg!Vc+kMi2XYPANe39)fn2Z{Zi%%|pRd2aFv>w8 zuDf|=lkEiVNooc+&&=9*U--ri$9YSNZ>;#m{$l&e&shOSoPgx#o3F^cI#IjQ zB41hsa6$~t%8z{l^&>4BKP~z$Kt3GERRC9vf#o&2X9i$g3UhrpDW_cf^!rGE&j8eo zzSrvvRDir&wrUgnfq=3Aydtxz!L-TTcB6L1PhtE$kfU~GRun^?PM&*1xvmbB9PKv= zQ0+sB&T_KO z$#@4G#=4Pp!Q}i(?hwEhMa1!eK4rd1rvl_`fX|JfYP9L*{bRx1blf8$RW+kc z9D1$~075F8R&x+~Zm_Kxu=jo&YgeM@8+vYDR(vL3IM}C&PKdCtH|>0cyZY&>RaB$v zA#N);0|5OkPC~zzkF_g+ujsm#1T^{HA%JPruFRu$rGIE^lCe{@dvh(MvH*M{CN@IP zo#E-qDZB2OK8|wUE8K0o&+!c8$VkekN#;7^9c88zd($v~*CM1Ue5_+yLr0NpTqdfy>1F%ES&69676Yli@w1~myw4l425q zsM9dZ2*@t5`WTCu7TCCd4All;3#nd*p4&x5dhV<=Sy(Us{U^qk&;oEK zq#A{u8LA+xk1Elp}!pvTu6h5MK%O|4a+xg zofrRIR*AJerc{TqsRy8ykbdd+c8xI{HYXoIjWKqv14TSM8_hGBZ+(PRQ|1;rraq}n z0KlV#XD6}w$ncN5Nc?>kpv6L}m?mjurE8(*20|)qnx2t~)2wlp?@qLNccONs#Y}%$ zNL3F#cShgnkW%Zk(5lRY>mxf&A=LnP$9ljmN$9yUrK-0|#@vi+fQ_o;>lC*N=KHrF zc&#YK0YFbkrH{Jwn6ma!|K%ojOnb4f*u5EWsyHLNKQL zpCR9A%sf`Jx#F3X<&(E90|L?}rQ9&3JG-t?-!rj4|AMc7{(YK|`o)G1wzUOefS)m+ zKBi|H%pvoW;{@h@qBa37j%`%XjziCVk@D;B6=YIID`BM$bfmoFJi4jbv$Wr1MU?L( z`ELdqw>&fBnYAJVxuEBR&~s~#EcXU^m`s*qe;`xzsnekbtu(nszpu^xYc?j2dT*Kg z!;e_Lc^fAzIKCJiGm0nE%a!YBe@TGxXVU~_KS;wKNtiive;u>7Af)nAY7sj>lBJvrIWu7(>i(46$tU(G>1_{hg0(O+(2DA)?RDB`UIkP4ogj82K zwt2as-^xBnNoGTOOVTKwO1*M^@LP6LaOsL)3Szi+52t7tlp(fzy3DLIx=H0 z<32kdUI;7I% zMMD0qt4U3&Wa*qxzc)!)iQh+)J~r6kQwlUDrp3`;fB0)KrJOQ;oD{SPsbreoLeF)C zRCE1KGaWJ_@mikfnu1knrej$fOFKEpN43~0fEh1tu-dDx&eS&9`6^^R*|kp&GNRc+ z_8_||hFlYqJLKQ4SfkNwv9~CM^SpWb407*qoM6N<$g0cU(wg3PC literal 0 HcmV?d00001 diff --git a/html/images/fa_logo_color@2x.png b/html/images/fa_logo_color@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..76face9e52169da4ab68b795b4484214b69faf2a GIT binary patch literal 3936 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 QT&e>!RCQIVVRkS62Y@JnWdHyG literal 0 HcmV?d00001 diff --git a/html/images/ff-sv-logo.png b/html/images/ff-sv-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9a2635583baa3da6e9a4aa89eb37fb651a396d GIT binary patch literal 2172 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

s{#=|FrwD)%C;VAF8eC^)db0_ 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 literal 0 HcmV?d00001 diff --git a/html/images/map-icon@3x.png b/html/images/map-icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3b51d7e77820a4be186712b0fe2d804b88bfa797 GIT binary patch literal 1826 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 literal 0 HcmV?d00001 diff --git a/html/images/pa-sv-logo@2x.png b/html/images/pa-sv-logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a875af6071a2a03c8285e5b7fd7b68677f22ffcd GIT binary patch literal 3902 zcmV-E55e$>P)1gDL_+6Yz~ zfu#rzN3amVLIew?01hJ1`-9e6udMF*l5Fgou2PlDz-ZJn^Yk-4-L0Um>j?I82C&EN z$P&Pm`RquS7ca&VlvM;E0ua*GmMzV#eI3vC8f{H!u0E4Go^8Fhy%^8Wx~}U1+Ia-9 z0Z}WYg?ZJL6V2(oj%P=~D12vtJn))V8q_6# z4X0lZXcWh<{Anmer59HQHbqiqL z`gd8!v&3r$_-)|!765(_sB)5ZKpX(>1_E-GWPZrKXn;mB0Eh#?YJhp|wJcBq6Zd?F- zuH#uy$Frz&HS40J?|B(e>Uee*@TTw@vSZ|1V%rIT4~mJK^!zXHVKF7OX(J{P1&x78 z{Lp)0<`Vl^9nW$BY_@dp76SN$YxIhjVRzlnaKndd6601xt>~PfM_^9iN&aBAKTG

I&oZyNVTBmDU$-3@ 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 M07*qoM6N<$g3mo{*Z=?k literal 0 HcmV?d00001 diff --git a/html/images/pa-sv-logo@3x.png b/html/images/pa-sv-logo@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..125e0c7edd95d96a7e1bb7d6450510957f9ecadc GIT binary patch literal 6075 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 B=dQ@0+Qek%> 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 M07*qoM6N<$f;d7P#sB~S literal 0 HcmV?d00001 diff --git a/html/images/settings-icon@2x.png b/html/images/settings-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2f90256ef7a3242fa6c4b9853521737f3806bcf1 GIT binary patch literal 805 zcmV+=1KRwFP)k>@`-xz>>b!9XI>v2)s}Sodn)UGJ*Ci zZvhklY%T4Lq-f*--n3bSh_W_$xK!lVy?7&d?xi@C3MYIgqE%FBmV`c4c-3fN<)~Qz znY^U;IJD6cxx%x#uZ%jNPg16jo@HZZ&Qk)P0nB1yYtSKw%z|fFDx8tUz5w}2M9Tyk zx&ZJsaOAA$j{^Yos;bJQuA2y5@DfmNT3`dXc&rtff6qYO2oTZnX z1Nh=)JY zTZ@yIL{tV86##s?RFwyI3E(}jY~w2Zp)8>(67S4xL*8a)!^{@I55+U%CqI$G1~Upcvz^Hf&W}}4-4pM53;uel6yyW1|wy8>j zYblMd6IKO$1!}76wKa!8W(ofF#mrf#xmD@m5Ues#OT|9H%9^r8vK_Chte5zo(969? j0|TVBxoC&GjRyVzh@L=oENx`m00000NkvXXu0mjfzF=!d literal 0 HcmV?d00001 diff --git a/html/images/settings-icon@3x.png b/html/images/settings-icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc5a58b4bf9755ef90e7251083609f67104cd4b8 GIT binary patch literal 1159 zcmV;21bF+2P)Z?A?Cc;?djN8+?i}CKNnY5YekI zoj#laz)!)Wj{ss{dX3>%7Q*L3pGx_LAYI&zF(w!s1YXol2f%t|31LTDr&kab9YeF0 zk=8{TV^*wSL`1n_+$(^IQop%$4&H7l>lPAG(Fp_wa9{h=8bEw%LRKyY@YUiaNq&C{ zAldu<6S(Wdr%1Rw%%>%d}504o4#J%}>KBnM zU`<4sZN!+ed+NI+)?qVSL(+2qPfby$G)^d#8Q>{-0gwYI*xy$&1u)~V_tqhV>v|A( zNTije7_y4cDPLVhe5Vx3YN2q%^R@}PmQ4V(VY96@{NVV1qaDaFVgTPPA$*k7Dy7>Y z0Px#Fi7!O7a!`<&@fMnNF~78)kXV@i+ywwWpbG#2pC`_|f+lyE0{C+d3piqth0-D# zb&*&?WN{cd2f!AwfxbeuaIqaU5K1EIG_GKu|EL&p$JVTKkvu45iW-mL>%t`Amm}R4 znK32Jh>Wz%K^{ zmwe1`-$f}b_n8o|+iaWaPXOGF9V_KqoPc))VST0yvA84%y_RbajzuD`?Zi@xn>ioQS6X)f4uTCv7x& zZBs_Gw1ka9w{4X#0Lb@sloVAoldXv;^Z+0R@ZHtRksOSfVzOIf%)-N2ps88BG+Czv zf;KZ;ow@;bAQ^P!wN+~u$rLpQ=7d2^JE|dQJi^uq1eQdp?+t*$l|>k1rd%1)7Ew~k zy@Ln>S75Z|?knt?BjT0-Le3WNEQX7=a@UtHb-$dPx*k6;=M1}=Wt&D3QR!a_A+vlF z`%+fE8oPG>&0c&`uX8$y1_1<3TS5{iglKmedu~}aT?0tYgarMTxGA}7>RyZBwpZXB zGC`Y8l>t~mCHHMw_^vPXn+JiVMkI`SspHU=uAngw_j7&@8O<+4SKXLUw6Z0C@iY3B0)FC7lNV Z@D~;Q?Gc;9zI^}y002ovPDHLkV1fqi0UZDU literal 0 HcmV?d00001 diff --git a/html/images/show_sidebar_active_48x40.png b/html/images/show_sidebar_active_48x40.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c33c20858983a2acbee7e3ab5d08eeff691664 GIT binary patch literal 1997 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 literal 0 HcmV?d00001 diff --git a/html/images/table-icon.png b/html/images/table-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2eed5f8f7c7b097c5ce6fb12e8b0019e6bbca3a0 GIT binary patch literal 699 zcmV;s0!00ZP)X1^@s6D=Y3@00009a7bBm000XT z000XT0n*)m`~Uy~ZAnByR7l6=R!e9TQ4~Ef$+Qjg$V@X6n2Db>i&#@!r8cA}h(X(G zx)c0D#xCs2x^bmc2D%WzO%<1|Q7VOkAhcQ(yAn-J2~srC29%JtNvtFdBt{b{<3a~C zq?m-pjc0f7;+}iYdH21iQ4|FLpy?buhz39d=XooDc>qQLt6NQ=126=D1uzXDz10NU z0O$d{X+&{#f{HlP=MoRQ_6XG$8l9YrzFu0+RYfp#@{o1((upIrbn5fEoxK-sK6nxc z|Dl8yqVp(#9RQMQa{Q|A0M8N<498;6g6}?1I-Q1R3AsBH2rWielIiT1yv@RyA|I2< z$1mPSOW!w27Bj;LoKbi0(R{2biQ=hD+U2|U6af6P1cyx!B-tNQ<@0p4+ZQ6Sge3bz zBF|8(v)3hoGm=UsS46&0ELAH{;&ZlCv&rUGLj1Di1b}@GtN3dYCje|Wvqa7NWvRYX z#4$AO^SYhoM*bcHh4i1OTY}pvEdz*4A@sZenC$(@kzDHl3i&!kNNTa=&Ug z0H`r-Xrch%*#5n{!&9x6Jmwgh<`|m(Pfa$r5+d>pRgIB7?haE;66L=Z ziw;H*7AJ>~uVr$%znR=-;YY!`}WR(B_002ovPDHLkV1k{FEVlpv literal 0 HcmV?d00001 diff --git a/html/images/table-icon@2x.png b/html/images/table-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c7b3f0e9d0792640ef857a0af0533b63124b2f GIT binary patch literal 914 zcmV;D18w|?P)EU{DMlXOXwDU96I^}KTAfDIcCo&y%zWn+>l7O5 zZ8ve*c~VM?_+yYE2|q+ z=9A=!iPB;@Maz~ZLzUHLpJxrg*~-$tIN#GhHl4`T*oPM#q^@hRITC%?ZC1U-Y}5n5 z%IZcS(dNzbTMdo1l@$PxE6yfNMxA29wHRPM3yn;DT*xHQ(v|D?2b}clLYYL&NgCb$ z`76Q&_kHWZjB7AqAQJ!_^hgW<7PFDcCi@9JBQc4#T%}57BT(qjQpmmR_s_Y#J|=3B z`rw%BpHZ|%t5K7q^+qrpem(Q~Yce040hn`peN4kV{pC#UcAJ$dH`X>op;SJE7!Uvm z05}Tb5@mt(>V-OWG8?A$5@msuUjL`^!5M(Y+R6&DZcj3MGpCw$rLqxX;Lygv+u1Lk z0f*C*j5gQqy&OwyZ)>insQ2y1X5j9#QCFtaV+FwXwXM+b_p86uSU!F24?rjU?E1pui5NcjkW+-gAX_?QIXPx#07*qoM6N<$f{$;pD*ylh literal 0 HcmV?d00001 diff --git a/html/images/table-icon@3x.png b/html/images/table-icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..495700cd83daabfa27c2675a28eed8328f0bf1dd GIT binary patch literal 1085 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 fVv}vw# z0;GnTB@@MY`iWnVYTA#!O<@TeO9^`c_xk8LubTwqhKvDOytC#OQd5vx$seF(b zAhSr-2UAbB2mbv1_dm5^-nkcVK7N52Mk)=`3o-*_7O8q+>dE#1$bh#Wzx>W zk6*uF1`EjT2GD10YXKTE6=ss5Akw@d1z;kXn3dNRgwO2SAn*Dw!xP zajZEoF4p956~l&@!7$|z{vOihF||L0vqH)Xle&F7dXxHj)9F) zpZVSOqo0IyY?d+nW0V9YC(xKZ@8EVhFv&AAZee6&48F6j>j?n3i4tsyO6V$`OIjp zC)?gaNeB$E@PRMYCkSUm;M~CJ=HkS)Tx)YvLr{VsJAB}a7(p0{Jv4!lD?=Uk3;F&d z^>uZWM1C0fA_ijlol|T!1teo2!0AH1i*ny(zo5NkaqC8Ys3+TTqVd*basAhCM+9O0 z>{=7h5vyOaO17}#CKCuF)=CBYorMuMiGYb%{R*vQ(-pUpKonxFRIuNfj<}Ts{1Q}? zP5Bg>d$Ra`ZCXY-V(m(gglY62<_ zF%cU%s6N1H5r6|eDMuzAzkX0$Tyq@Zz-F=#1F;ZO_fr^ol_Cx*E(&q$h&8AV?Fq<% zOvJ4#RynV{HzI&QVZ4-b5SmmPSJ?}hU@V>sfKT_xAgQV;unLwOm zQvz{zAGy;Bq!TdgKzfA?8))qQA54Jr&uD{SqTaY2F$BN_mb|>2_a>2q&1=~hE3>mg zu;YyJGg|-a#nAD?DQmvJDgDTF4-}ch+ZgBgr?~MjsG8sZ0sK4?(&jSxW&i*H07*qo IM6N<$f+L4=Bme*a literal 0 HcmV?d00001 diff --git a/html/images/zoom-in.png b/html/images/zoom-in.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba05d7337e85f8a719dd07f158e658a8a6aa506 GIT binary patch literal 439 zcmV;o0Z9IdP)Qp8fb#{@- znH49TTrr(Z=uQ({nQHt8XiQw6%PZlhHnwLWk9+yv&3TWb2qEZ`V)`Cn1GC!e5=ekV zWKr4qrVUd}-vvTo%CNRTAhIYNgej&U0=Mk1XOTtTZlTsdK_5uhCTy0E=-Q+Ywoptz zZom}N*MWz=Zr9eCo}J>_`p|R>X-zd*z+nmjRK@hi!2CeiR55*B1$2%hcO>spWp>*e z+t8|KaN{&;Nt%-vpVfL)F9yED+`8!9)-p6K3Es(bE}1#^4Om_kgP6PPtIlMWp|M&Q zr0b$HSzQfS`Snfkv}`m4Hx8Dek*T(@qV_8?KUF!u6maMDizW3wY zbCe`WC?mym48Q>Nl}9lU0Z|eLap88004b(p18u+p4kcb01AU+`3nvAnm`)q;fK$q8 z3iyDZ2euJNF&$m>u*G&X1=>j%472{A<_u4?MHs{|e^pG!FXWIIqEGBrS4kMOa~&!Q zV_OFC$R`N{{LYIaK(7?j>2CxQOW7~ds(W$H;ll?2ynT6&etc9E%H8BpUvfETN`HJ* z^p*F*h-DzfbUdKRe&jC!DW;$dd)=d^!rA3$HGo=Y4Tjw}_dD<| z)cgD$w>yxF_U^^Aox&`_jP&s%p8eVRWSQR0*WN!^cjj@s1GIV#t)A~vvvGo!a&tVn zCBDn=ko#_s2^6n$$nJcQ>gniXht|_Zsxx00{g{+B?nVVh6fJTc+eO&>V zX&T6{0MIZAgIEO+!*)}ptbjy;gA8WF&otYBdmj=z$8U8fOpJZU7+mR zW;;?aNzrmZbA~Pr(|gx8jYz;GMJtG`m1aKFaBZ{V*GP^T6u_3GX!WtdqJk>qvpB5} zxVDLFn;6@#X9DLLilSn0qHwBj8KhH-|2=zCYfx`}izH*ZwyB44tQiHATFl>r0;s%v z8dX^Ci0Q{4Oj0yGU^z4|YKjOO4kpt24)Ic26bvIBs}oOc4ThvVP%4#(uk>M#>BL(l zF-83Y6Jx7H{8b%vtV%Le9t0~V1S~C9@yH?!S4ob_H;$|+Az@&vlA>jj2nJA) zfm{N?G7El*qma*1-P|CzvK;>FsU^?nYxykJ{`Pnkuhqu*bl~gQ!l<{om1V5`ZO^60 zMBSNMq_mzNue?~#lSwV1@3+R^8mPQ@7CBTT<;CWPZyPz5vv7dU9tmb0{hUj%!ylbM zVBO(h9rivS%oSAkv`2OKt6#IWMDeZVSJ~%QmdQN|pA`%FEFV2~rH+67p}PAe^!NJb zSF}67gEW11z3{Qb#1dRbG<2=Bv}BmIDhIU z2&{QG-8T~gb$08Rcwi*Ot(yZv89;>NVFJJmugXJ@In?3Z6VF>P*EX$~yQYt-6)Q1? zY6xSz!Ngdr#V`|AeXDzMkaip+u(H=xiDAnYRrJKXt2P*dBf&%uObq9o_J$VK5sfQ7 z^g>gl&WYfhlit1c+}XvI?|wxVRr zPN2;kF%77|-b1aifG0tr0y{R~o=VbgzYPFZNYZ^p55Tf0#a=}eau0jM)B`Xh#-Yl1 rcY>`j_Yr3XHUie`n5rKogqQvTmdaN?fG7I=00000NkvXXu0mjf5fGwi literal 0 HcmV?d00001 diff --git a/html/images/zoom-out.png b/html/images/zoom-out.png new file mode 100644 index 0000000000000000000000000000000000000000..f64b25ede1534ef6d28bd17ca620517631ec75ca GIT binary patch literal 379 zcmV->0fhdEP)1}B$MjbT1QpP!4a9#00UQ9aJ;)X& zd>H~K4AY^#-))(~m$^+2RS8TT`}AW#Rk?u+OzYWTcGR1YW*dr+&nom>z^kI={ROv| zr@dk8Y=d{T*u^eT)OUJ$%X-72r`P>Y%j_lqo*Az@2T1uJC63Xm09GSG??$V%>VSul zu=%b7j8-{tJrJ}qTE%<4X)Wb(04QwrGwWs1FI`ar^Y5M}+MHJS@*D{2pBl)4q{$co Zz5pB;ZemFHizom9002ovPDHLkV1fzZm{I@$ literal 0 HcmV?d00001 diff --git a/html/images/zoom-out@2x.png b/html/images/zoom-out@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..684b7015bfd3e426c70ed3af17e08a1b7af56330 GIT binary patch literal 598 zcmV-c0;&CpP)0=I5`YtVh8w2OfEWmM5~Mo?5)cmg-t zj!uGkWgu}S0zR-?ErE$ng0M7@VYz)-|9$GyxClzM1OsqxSgy0yA=xu2a6of9%5L_& zLt(=(0FfB+9LTWT6W|NYYaj579P(*TBRSRofW(~x+LiaTsSV4GT3W8W-Wd!|d%$nH zp|Jw`bVs%V><$5$dqw#SfIT?G9=xyRU*|u65ydHsKacs3hJ`@R@n_D@Mzvbu9Dl+- z{l>;vwwheGh93_L#|wetAihZ8<2l>yB6sGFI?WX zamr>&(v7YtRg#Q#Me!<@#U;v`Mq-)DBxY^vS|`CmNu?PA_bmhY`FqG~5oWr|t5v2R z52cW6T1&ur>85sMLX(GEw7#6gGIiWimOOf?_3~<<9Godj k+6Q{s00}IrwDGd~3ybZ@d;W*Y*8l(j07*qoM6N<$f)kDgzyJUM literal 0 HcmV?d00001 diff --git a/html/images/zoom-out@3x.png b/html/images/zoom-out@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d3b1939d3119538325b894f131709e0c353781 GIT binary patch literal 834 zcmV-I1HJr-P)CO z732k!H}F<8Rel47^Z}G5T{PHhCx@1H3fQEyqdMp~IF2nTw(MN#2Z4>QjXwT!?mbuM zYDto?4r!*-1Pu9V08RPa2S&gsiTyrnl2#U&W;!jv1}wQ61%EmKA|Og)KU4xtT(JQc zI4t3L#y|*kS9NnKFadJqYOE=mt^qHJ{b(a#n(1_a?izt+bqREm*dMJ0Ok4_qHk;R2 z;KEYDG}AF8!5h4+dP(eeN&$O;&?}OAc3x;^f(g_Y)YAa4vf%U#C|gk|WNFFFH$5Y# z0@PMpGo7F?n9P2GLOGSCkCHBh9P>)5A~vP2lyi&0G}EzwPgF~dd1<51ajS}Iiz!dR ze?)m%NF_~b^-5oW{`Q7c+z=pr?lmxpi@LZW-!PO1Duiun{ z8vpr+ef~LjoW{{vKX1ou9K5Evx2*(N|NBoy_kZ(-ootb|baMXeN7dG`kxu%Cw^mAG zKhl9=&A0}W$)j$LMF4sd`@;!kt-vNTdrhFmlUCCNEUXDw@MwXSaO~9ptUIsr@G1_~ z6N4Uu)xb3`t5$SL`@L1u#k5;bz@$T1wU8W4=hj0JJg-%&nNA2CS7CZ5ZQ1sVZd*DP zS+w0nCwTM)MdXO|{oGjbyb7MZ(Nr9+m&Cre^bT5VHWUlX(;|mh^a6XEp*VM`z(jG9 z6@Iz1;=;kE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tar1090 + + + +

+ +
+ + + + + +
+
+
+ n/a +
+
+ +
+
+
+
+
Registration:
+
n/a
+
+
+
Aircraft Type:
+
n/a
+
+
+
+
+
Altitude:
+
n/a
+
+
+
Speed:
+
n/a
+
+
+
+
+
Source:
+
n/a
+
+
+
RSSI:
+
n/a
+
+
+
+ + + +
+
+
+
+
+ + +
+
+
+
Overlay Toggles
+
+
+
+
NEXRAD Weather
+
+
+
+
Site Position and Range Rings
+
+
+
+
Selected Aircraft Trail
+
+
+
+
Aircraft Positions
+
+ +
+
+
Debug tracks
+
+
+
+
Debug show all
+
+
+
+
+
View Toggles
+
+
+
+
Show Anonymous MLAT Tracks
+
+
+
+
Show Ground Vehicles and Other Non-Aircraft Positions
+
+
+
+
All Aircraft Trails
+
+
+
+
Group by Data Type
+
+
+
+
Dim map
+
+
+
+
+ +
+
+ +
+ +
+
+ UHT +
+
+
+
+
+
L
+
O
+
K
+
+
+
B
+
+
+
V
+
M
+
+
+
P
+
I
+
+
+
R
+
F
+
+
+
+ + +
+ + + + + +
+ + diff --git a/html/jquery/README b/html/jquery/README new file mode 100644 index 0000000..f17efce --- /dev/null +++ b/html/jquery/README @@ -0,0 +1,3 @@ +This directory contains local copies of jQuery / jQuery UI; +the original versions are available from jquery.com under +a MIT-style license. diff --git a/html/jquery/jquery-3.4.1.min.js b/html/jquery/jquery-3.4.1.min.js new file mode 100644 index 0000000..a1c07fd --- /dev/null +++ b/html/jquery/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("
"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.widthi?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget); +i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("
    ").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("
    ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("
    ").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"").addClass(this._triggerClass).html(a?e("").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e(""),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target); +return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?""+i+"":J?"":""+i+"",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?""+n+"":J?"":""+n+"",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"",l=B?"
    "+(Y?h:"")+(this._isInRange(e,r)?"":"")+(Y?"":h)+"
    ":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="
    "}for(M+="
    "+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"
    "+"",C=d?"":"",x=0;7>x;x++)N=(x+u)%7,C+="";for(M+=C+"",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="",E=d?"":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+""}Z++,Z>11&&(Z=0,et++),M+="
    "+this._get(e,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+""+p[N]+"
    "+this._get(e,"calculateWeek")(z)+""+(j&&!v?" ":W?""+z.getDate()+"":""+z.getDate()+"")+"
    "+(Q?"
    "+(K[0]>0&&T===K[1]-1?"
    ":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="
    ",_="";if(a||!g)_+=""+o[t]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+=""}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+=""+i+"";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="
    "},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("
    ").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0) +},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("
    "),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidthe.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("
    "),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("
    ").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0; +if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("
    ").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("
    ").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("
    ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("
    ").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("

    ")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("

    ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("
    ").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()}; +f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("
    ").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("
    ").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("
    ").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("
    ")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""+""+""+""+""},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels; +this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("
    ").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("
    ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("
    ").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("
    ").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("
    ").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})}); \ No newline at end of file diff --git a/html/jquery/jquery.ui.touch-punch.min.js b/html/jquery/jquery.ui.touch-punch.min.js new file mode 100644 index 0000000..31272ce --- /dev/null +++ b/html/jquery/jquery.ui.touch-punch.min.js @@ -0,0 +1,11 @@ +/*! + * jQuery UI Touch Punch 0.2.3 + * + * Copyright 2011–2014, Dave Furfero + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Depends: + * jquery.ui.widget.js + * jquery.ui.mouse.js + */ +!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); \ No newline at end of file diff --git a/html/layers.js b/html/layers.js new file mode 100644 index 0000000..d8fce16 --- /dev/null +++ b/html/layers.js @@ -0,0 +1,182 @@ +// -*- mode: javascript; indent-tabs-mode: nil; c-basic-offset: 8 -*- +"use strict"; + +// Base layers configuration +// "url" : "https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png" +// "url" : "http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png" +// "url" : "http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png" +// "url" : "https://korona.geog.uni-heidelberg.de/tiles/roads/x={x}&y={y}&z={z}" +// "url" : "https://korona.geog.uni-heidelberg.de/tiles/asterh/x={x}&y={y}&z={z}" +// "url" : "https://{a-c}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png" +// "url" : "http://{a-c}.tilessputnik.ru/tiles/kmt2/{z}/{x}/{y}.png" +// "url" : "https://{a-c}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png" +// "url" : "https://{a-c}.tile.openstreetmap.se/osm/{z}/{x}/{y}.png" + +function createBaseLayers() { + var layers = new ol.Collection(); + var layers_group = new ol.layer.Group({ + layers: layers, + }); + + var world = new ol.Collection(); + var us = new ol.Collection(); + + // opacity: 0.9, + world.push(new ol.layer.Tile({ + source: new ol.source.OSM({ + "url" : "https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png" + }), + name: 'wikimedia', + title: 'OpenStreetMap Wikimedia', + type: 'base', + })); + + world.push(new ol.layer.Tile({ + source: new ol.source.OSM(), + name: 'osm', + title: 'OpenStreetMap', + type: 'base', + })); + + world.push(new ol.layer.Tile({ + source: new ol.source.OSM({ + "url" : "http://{a-d}.tile.stamen.com/terrain/{z}/{x}/{y}.png", + "attributions" : 'Map tiles by Stamen Design, under CC BY 3.0. ' + + 'Data by OpenStreetMap, under ODbL.', + }), + name: 'terrain_roads', + title: 'Terrain + Roads', + type: 'base', + })); + + world.push(new ol.layer.Tile({ + source: new ol.source.OSM({ + "url" : "http://{a-d}.tile.stamen.com/terrain-background/{z}/{x}/{y}.png", + "attributions" : 'Map tiles by Stamen Design, under CC BY 3.0. ' + + 'Data by OpenStreetMap, under ODbL.', + }), + name: 'terrain', + title: 'Terrain', + type: 'base', + })); + + world.push(new ol.layer.Tile({ + source: new ol.source.OSM({ + url: 'https://gibs-{a-c}.earthdata.nasa.gov/wmts/epsg3857/best/' + + 'MODIS_Terra_CorrectedReflectance_TrueColor/default/2019-07-22/' + + 'GoogleMapsCompatible_Level9/{z}/{y}/{x}.jpg', + }), + name: 'GIBS', + title: 'GIBS', + type: 'base', + })); + // carto.com basemaps, see the following URLs for details on them: + // http://basemaps.cartocdn.com + // https://github.com/CartoDB/cartodb/wiki/BaseMaps-available + + var basemaps = [ "dark_all", "dark_nolabels", + "light_all", "light_nolabels" + ] + + for (var i in basemaps) { + var basemap_id = basemaps[i]; + + world.push(new ol.layer.Tile({ + source: new ol.source.OSM({ + "url" : "https://{a-z}.basemaps.cartocdn.com/"+ basemap_id + "/{z}/{x}/{y}.png", + "attributions" : 'Courtesy of CARTO.com' + + ' using data by OpenStreetMap, under ODbL.', + }), + name: "carto_" + basemap_id, + title: 'carto.com ' +basemap_id, + type: 'base', + })); + } + + if (BingMapsAPIKey) { + world.push(new ol.layer.Tile({ + source: new ol.source.BingMaps({ + key: BingMapsAPIKey, + imagerySet: 'Aerial' + }), + name: 'bing_aerial', + title: 'Bing Aerial', + type: 'base', + })); + world.push(new ol.layer.Tile({ + source: new ol.source.BingMaps({ + key: BingMapsAPIKey, + imagerySet: 'Road' + }), + name: 'bing_roads', + title: 'Bing Roads', + type: 'base', + })); + } + + if (ChartBundleLayers) { + + var chartbundleTypes = { + sec: "Sectional Charts", + tac: "Terminal Area Charts", + hel: "Helicopter Charts", + enrl: "IFR Enroute Low Charts", + enra: "IFR Area Charts", + enrh: "IFR Enroute High Charts" + }; + + for (var type in chartbundleTypes) { + us.push(new ol.layer.Tile({ + source: new ol.source.TileWMS({ + url: 'http://wms.chartbundle.com/wms', + params: {LAYERS: type}, + projection: 'EPSG:3857', + attributions: 'Tiles courtesy of ChartBundle' + }), + name: 'chartbundle_' + type, + title: chartbundleTypes[type], + type: 'base', + group: 'chartbundle'})); + } + } + + var nexrad = new ol.layer.Tile({ + name: 'nexrad', + title: 'NEXRAD', + type: 'overlay', + opacity: 0.5, + visible: false + }); + + var refreshNexrad = function() { + // re-build the source to force a refresh of the nexrad tiles + var now = new Date().getTime(); + nexrad.setSource(new ol.source.XYZ({ + url : 'http://mesonet{1-3}.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/{z}/{x}/{y}.png?_=' + now, + attributions: 'NEXRAD courtesy of IEM' + })); + }; + + refreshNexrad(); + window.setInterval(refreshNexrad, 3 * 60000); + + + + if (us.getLength() > 0) { + layers.push(new ol.layer.Group({ + name: 'us', + title: 'US', + layers: new ol.Collection(us.getArray().reverse()) + })); + } + if (world.getLength() > 0) { + layers.push(new ol.layer.Group({ + name: 'world', + title: 'Worldwide', + layers: new ol.Collection(world.getArray().reverse()) + })); + } + layers.push(nexrad); + + return layers_group; +} diff --git a/html/markers.js b/html/markers.js new file mode 100644 index 0000000..407695b --- /dev/null +++ b/html/markers.js @@ -0,0 +1,377 @@ +// -*- mode: javascript; indent-tabs-mode: nil; c-basic-offset: 8 -*- +"use strict"; + + +// FA icons +var shapes = { + 'airliner': { + svg: 'airliner_live', + size: [25,26] + }, + 'balloon': { + svg: 'balloon_live', + size: [9,13], + noRotate: true + }, + 'cessna': { + svg: 'cessna_live', + size: [16,13] + }, + 'heavy_2e': { + svg: 'heavy_2e_live', + size: [28,29] + }, + //MD Series + //MD11 - Standard Scale 63px, 3in4 Non-linear Scale 53px + 'md11': { + svg: 'md11_live', + size: [36,31] + }, + 'heavy_4e': { + svg: 'heavy_4e_live', + size: [28,30] + }, + 'helicopter': { + svg: 'helicopter_live', + size: [16,18] + }, + 'hi_perf': { + svg: 'hi_perf_live', + size: [15,21] + }, + 'single_turbo': { + svg: 'single_turbo', + size: [18,18] + }, + 'jet_nonswept': { + svg: 'jet_nonswept_live', + size: [19,19] + }, + 'jet_swept': { + svg: 'jet_swept_live', + size: [18,24] + }, + 'twin_large': { + svg: 'twin_large_live', + size: [21,20] + }, + 'twin_small': { + svg: 'twin_small_live', + size: [19,16] + }, + 'ground_emergency': { + svg: 'emergency_dark', + size: [6, 15] + }, + 'ground_service': { + svg: 'service_dark', + size: [6, 15] + }, + 'ground_unknown': { + svg: 'unknown_dark', + size: [6, 15] + }, + 'ground_fixed': { + svg: 'fixed_dark', + size: [12, 12] + }, + 'unknown': { + svg: 'unknown_live', + size: [17,17] + } +} + +var TypeDesignatorIcons = { + 'SHIP': ['balloon', 1], // Blimp + + 'A318': ['airliner', 0.88], // shortened a320 68t + 'A319': ['airliner', 0.92], // shortened a320 75t + 'A19N': ['airliner', 0.93], // shortened a320 + 'A320': ['airliner', 0.96], // 78t + 'A20N': ['airliner', 0.97], + 'A321': ['airliner', 1.02], // stretched a320 93t + 'A21N': ['airliner', 1.03], // stretched a320 + + 'A306': ['heavy_2e', 0.96], + 'A330': ['heavy_2e', 1], + 'A332': ['heavy_2e', 1], + 'A333': ['heavy_2e', 1], + 'A338': ['heavy_2e', 1], // 800 neo + 'A339': ['heavy_2e', 1], // 900 neo + 'DC10': ['md11', 0.96], + 'MD11': ['md11', 1], + + 'A359': ['heavy_2e', 1.04], + 'A35K': ['heavy_2e', 1.06], + + 'A388': ['heavy_4e', 1.08], + + // dubious since these are old-generation 737s + // but the shape is similar + 'B731': ['airliner', 0.88], + 'B732': ['airliner', 0.88], + 'B733': ['airliner', 0.88], + 'B734': ['airliner', 0.94], + 'B735': ['airliner', 0.96], + + // these probably need reworking + // since they vary in length + 'B736': ['airliner', 0.92], + 'B737': ['airliner', 0.94], + 'B738': ['airliner', 0.96], + 'B739': ['airliner', 1], + + 'J328': ['airliner', 0.78], // 15t + 'E170': ['airliner', 0.82], // 38t + 'E75S/L': ['airliner', 0.82], + 'E75L': ['airliner', 0.82], + 'E75S': ['airliner', 0.82], // 40t + 'E190': ['airliner', 0.84], // 52t + 'E195': ['airliner', 0.84], // 52t + 'E290': ['airliner', 0.84], // 56t + 'E295': ['airliner', 0.86], // 62t + 'BCS1': ['airliner', 0.86], // 64t + 'BCS3': ['airliner', 0.88], // 70t + + 'B741': ['heavy_4e', 1], + 'B742': ['heavy_4e', 1], + 'B743': ['heavy_4e', 1], + 'B744': ['heavy_4e', 1], + 'B74D': ['heavy_4e', 1], + 'B74S': ['heavy_4e', 1], + 'B74R': ['heavy_4e', 1], + 'BLCF': ['heavy_2e', 1], + 'BSCA': ['heavy_4e', 1], // hah! + 'B748': ['heavy_4e', 1.02], + + 'B752': ['airliner', 1.04], + 'B753': ['airliner', 1.04], + + 'B772': ['heavy_2e', 1.04], // all pretty similar except for length + 'B773': ['heavy_2e', 1.06], + 'B77L': ['heavy_2e', 1.06], + 'B77W': ['heavy_2e', 1.08], + + 'C680': ['jet_swept', 0.91], // 14t + 'C68A': ['jet_swept', 0.91], // 14t + 'C750': ['jet_swept', 0.94], // 17t + 'FA50': ['jet_swept', 0.94], // 18t + 'CL30': ['jet_swept', 0.91], // 14t + 'CL35': ['jet_swept', 0.92], + 'CL60': ['jet_swept', 0.96], // 22t + 'GLEX': ['jet_swept', 1], + 'G200': ['jet_swept', 0.91], // 16t + 'G280': ['jet_swept', 0.92], // 18t + 'GL5T': ['jet_swept', 1], + 'GLF2': ['jet_swept', 0.96], // 29t + 'GLF3': ['jet_swept', 0.96], // 31t + 'GLF4': ['jet_swept', 0.96], // 34t + 'GLF5': ['jet_swept', 0.98], // 41t + 'GLF6': ['jet_swept', 1], // 48t + 'E135': ['jet_swept', 0.92], // 20t + 'E35L': ['jet_swept', 0.92], // 24t + 'E145': ['jet_swept', 0.92], // 22t + 'E45X': ['jet_swept', 0.92], // 24t + 'CRJ1': ['jet_swept', 0.92], // 24t + 'CRJ2': ['jet_swept', 0.92], // 24t + 'CRJ7': ['jet_swept', 0.94], // 34t + 'CRJ9': ['jet_swept', 0.95], // 38t + 'CRJX': ['jet_swept', 0.98], // 41t + 'MD80': ['jet_swept', 1.04], // 60t + 'MD81': ['jet_swept', 1.04], + 'MD82': ['jet_swept', 1.04], + 'MD83': ['jet_swept', 1.04], + 'MD87': ['jet_swept', 1.04], + 'MD88': ['jet_swept', 1.04], // 72t + 'B712': ['jet_swept', 1.04], // 54t + 'F100': ['jet_swept', 1], // 45t + + 'C501': ['jet_nonswept', 1], + 'C510': ['jet_nonswept', 1], + 'C25A': ['jet_nonswept', 1], + 'C525': ['jet_nonswept', 1], + 'C550': ['jet_nonswept', 1], + 'C560': ['jet_nonswept', 1], + 'C56X': ['jet_nonswept', 1], // 9t + 'C650': ['jet_nonswept', 1], // 11t + 'LJ35': ['jet_nonswept', 1], // 8t + 'LR35': ['jet_nonswept', 1], // wrong but in database + 'LJ60': ['jet_nonswept', 1], // 10t + 'LR45': ['jet_nonswept', 1], // 10t + 'G150': ['jet_nonswept', 1], // 11t + 'H25A': ['jet_nonswept', 1.04], // 11t + 'H25B': ['jet_nonswept', 1.04], // 11t + 'H25C': ['jet_nonswept', 1.04], // 11t + 'PRM1': ['jet_nonswept', 0.96], + 'E55P': ['jet_nonswept', 0.96], + 'E50P': ['jet_nonswept', 0.96], + 'EA50': ['jet_nonswept', 0.96], + 'HDJT': ['jet_nonswept', 0.96], + 'SF50': ['jet_nonswept', 0.94], + + + 'A37': ['hi_perf', 1], + 'A700': ['hi_perf', 1], + 'LEOP': ['hi_perf', 1], + 'ME62': ['hi_perf', 1], + 'T2': ['hi_perf', 1], + 'T37': ['hi_perf', 1], + 'T38': ['hi_perf', 1], + 'A10': ['hi_perf', 1], + 'A148': ['hi_perf', 1], + 'A3': ['hi_perf', 1], + 'A6': ['hi_perf', 1], + 'AJET': ['hi_perf', 1], + 'AT3': ['hi_perf', 1], + 'CKUO': ['hi_perf', 1], + 'EUFI': ['hi_perf', 1], + 'F1': ['hi_perf', 1], + 'F111': ['hi_perf', 1], + 'F117': ['hi_perf', 1], + 'F14': ['hi_perf', 1], + 'F15': ['hi_perf', 1], + 'F18': ['hi_perf', 1], + 'F22': ['hi_perf', 1], + 'F22A': ['hi_perf', 1], + 'F4': ['hi_perf', 1], + 'F5': ['hi_perf', 1], + 'FOUG': ['hi_perf', 1], + 'J8A': ['hi_perf', 1], + 'J8B': ['hi_perf', 1], + 'JH7': ['hi_perf', 1], + 'LTNG': ['hi_perf', 1], + 'METR': ['hi_perf', 1], + 'MG19': ['hi_perf', 1], + 'MG25': ['hi_perf', 1], + 'MG29': ['hi_perf', 1], + 'MG31': ['hi_perf', 1], + 'MG44': ['hi_perf', 1], + 'MIR4': ['hi_perf', 1], + 'MT2': ['hi_perf', 1], + 'Q5': ['hi_perf', 1], + 'RFAL': ['hi_perf', 1], + 'S3': ['hi_perf', 1], + 'S37': ['hi_perf', 1], + 'SR71': ['hi_perf', 1], + 'SU15': ['hi_perf', 1], + 'SU24': ['hi_perf', 1], + 'SU25': ['hi_perf', 1], + 'SU27': ['hi_perf', 1], + 'T22M': ['hi_perf', 1], + 'T4': ['hi_perf', 1], + 'TOR': ['hi_perf', 1], + 'TU22': ['hi_perf', 1], + 'VAUT': ['hi_perf', 1], + 'WB57': ['hi_perf', 1], + 'Y130': ['hi_perf', 1], + 'YK28': ['hi_perf', 1], + // 'BE20': [_b200, 1], + + // 'C130': [_c130, 1], + // 'C30J': [_c130 +}; + +// Maps ICAO aircraft type description codes (e.g. "L2J") to aircraft icons. This is used if the ICAO type designator (e.g. "B731") +// cannot be found in the TypeDesignatorIcons mappings. The key can be one of the following: +// - Single character: The basic aircraft type letter code (e.g. "H" for helicopter). +// - Three characters: The ICAO type description code (e.g. "L2J" for landplanes with 2 jet engines). +// - Five characters: The ICAO type description code concatenated with the wake turbulence category code, separated by +// a dash (e.g. "L2J-M"). + +var TypeDescriptionIcons = { + 'H': ['helicopter', 1], + + 'L1P': ['cessna', 1], + 'L1T': ['single_turbo', 1], + 'L1J': ['hi_perf', 1], + + 'L2P': ['twin_small', 1], + 'L2T': ['twin_large', 0.96], + 'L2T-M': ['twin_large', 1.12], + + 'L1J-L': ['jet_nonswept', 1], // < 7t + 'L2J-L': ['jet_nonswept', 1], // < 7t + 'L2J-M': ['airliner', 1], // < 136t + 'L2J-H': ['heavy_2e', 1], // > 136t + + 'L3J-H': ['md11', 1], // > 136t + + 'L4T-M': ['heavy_4e', 0.84], + 'L4T-H': ['heavy_4e', 1], + 'L4J-H': ['heavy_4e' , 1], +}; + +var CategoryIcons = { + "A1" : 'cessna', // < 7t + + "A2" : 'jet_swept', // < 34t + + "A3" : 'airliner', // < 136t + + "A4" : 'airliner', // < 136t + + "A5" : 'heavy_4e', // > 136t + + "A6" : 'hi_perf', + + "A7" : 'helicopter', + + "B2" : 'balloon', + + 'C0' : 'ground_unknown', + + 'C1' : 'ground_emergency', + + 'C2' : 'ground_service', + + 'C3' : 'ground_fixed' +}; + +function getBaseMarker(category, typeDesignator, typeDescription, wtc) { + if (typeDesignator in TypeDesignatorIcons) { + var shape = TypeDesignatorIcons[typeDesignator][0]; + var scaling = TypeDesignatorIcons[typeDesignator][1]; + return [shape, scaling]; + } + + if (typeDescription !== undefined && typeDescription !== null && typeDescription.length === 3) { + if (wtc !== undefined && wtc !== null && wtc.length === 1) { + var typeDescriptionWithWtc = typeDescription + "-" + wtc; + if (typeDescriptionWithWtc === "L2J-M" && category === "A2") { + return ["jet_swept", 1]; + } + if (typeDescriptionWithWtc in TypeDescriptionIcons) { + var shape = TypeDescriptionIcons[typeDescriptionWithWtc][0]; + var scaling = TypeDescriptionIcons[typeDescriptionWithWtc][1]; + return [shape, scaling]; + } + } + + if (typeDescription in TypeDescriptionIcons) { + var shape = TypeDescriptionIcons[typeDescription][0]; + var scaling = TypeDescriptionIcons[typeDescription][1]; + return [shape, scaling]; + } + + var basicType = typeDescription.charAt(0); + if (basicType in TypeDescriptionIcons) { + return [TypeDescriptionIcons[basicType][0], 1]; + } + } + + if (category in CategoryIcons) { + return [CategoryIcons[category], 1]; + } + + return ['unknown', 1]; +} + +function svgPathToSvg(path, stroke, fill, selected_stroke) { + path = path.replace('aircraft_color_fill', fill).replace('aircraft_color_stroke', stroke).replace('add_stroke_selected', selected_stroke); + return path; +} + + +function svgPathToURI(path, stroke, fill, selected_stroke) { + return "data:image/svg+xml;base64," + btoa(svgPathToSvg(path, stroke, fill, selected_stroke)); +} diff --git a/html/ol/ol-layerswitcher340.css b/html/ol/ol-layerswitcher340.css new file mode 100644 index 0000000..d547872 --- /dev/null +++ b/html/ol/ol-layerswitcher340.css @@ -0,0 +1,123 @@ +.layer-switcher.shown.ol-control { + background-color: transparent; +} + +.layer-switcher.shown.ol-control:hover { + background-color: transparent; +} + +.layer-switcher { + position: absolute; + top: 3.5em; + right: 0.5em; + text-align: left; +} + +.layer-switcher.shown { + bottom: 3em; +} + +.layer-switcher .panel { + padding: 0 1em 0 0; + margin: 0; + border: 4px solid #eee; + border-radius: 4px; + background-color: white; + display: none; + max-height: 100%; + overflow-y: auto; +} + +.layer-switcher.shown .panel { + display: block; +} + +.layer-switcher button { + float: right; + width: 38px; + height: 38px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==') /*logo.png*/; + background-repeat: no-repeat; + background-position: 2px; + background-color: white; + border: none; +} + +.layer-switcher.shown button { + display: none; +} + +.layer-switcher button:focus, .layer-switcher button:hover { + background-color: white; +} + +.layer-switcher ul { + padding-left: 2em; + list-style: none; +} + +.layer-switcher li.group > label { + font-weight: bold; +} + +.layer-switcher li.layer { + display: table; +} + +.layer-switcher li.layer label, .layer-switcher li.layer input { + display: table-cell; + vertical-align: middle; +} + +.layer-switcher label.disabled { + opacity:0.4; +} + +.layer-switcher input { + margin: 4px; +} + +.layer-switcher.touch ::-webkit-scrollbar { + width: 4px; +} + +.layer-switcher.touch ::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + border-radius: 10px; +} + +.layer-switcher.touch ::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); +} + +.layer-switcher .group button { + display: inline-block; + vertical-align: top; + float: none; + width: 16px; + height: 16px; + background-position: center 2px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAW0lEQVR4nGNgGAWMyBwXFxcGBgaGeii3EU0tXHzPnj1wQRYsihqQ+I0ExDEMQAYNONgoAN0AmMkNaDSyQSheY8JiaCMOGzE04zIAmyFYNTMw4A+DRhzsUUBtAADw4BCeIZkGdwAAAABJRU5ErkJggg=='); + -webkit-transition: -webkit-transform .2s ease-in-out; + -ms-transition: -ms-transform .2s ease-in-out; + transition: transform .2s ease-in-out; +} + +.layer-switcher .group.layer-switcher-close button { + transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); +} + +li.group.layer-switcher-fold { + margin-left: -18px; +} + +.layer-switcher .group.layer-switcher-fold > ul { + padding-left: 3em; +} + +.layer-switcher .group.layer-switcher-fold.layer-switcher-close > ul { + overflow: hidden; + height: 0; +} diff --git a/html/ol/ol-layerswitcher340.js b/html/ol/ol-layerswitcher340.js new file mode 100644 index 0000000..53cb6da --- /dev/null +++ b/html/ol/ol-layerswitcher340.js @@ -0,0 +1,615 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('ol/control/Control'), require('ol/Observable')) : + typeof define === 'function' && define.amd ? define(['ol/control/Control', 'ol/Observable'], factory) : + (global.LayerSwitcher = factory(global.ol.control.Control,global.ol.Observable)); +}(this, (function (Control,ol_Observable) { 'use strict'; + +Control = 'default' in Control ? Control['default'] : Control; + +var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + + + + + + + +var get = function get(object, property, receiver) { + if (object === null) object = Function.prototype; + var desc = Object.getOwnPropertyDescriptor(object, property); + + if (desc === undefined) { + var parent = Object.getPrototypeOf(object); + + if (parent === null) { + return undefined; + } else { + return get(parent, property, receiver); + } + } else if ("value" in desc) { + return desc.value; + } else { + var getter = desc.get; + + if (getter === undefined) { + return undefined; + } + + return getter.call(receiver); + } +}; + +var inherits = function (subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; +}; + + + + + + + + + + + +var possibleConstructorReturn = function (self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; +}; + +var CSS_PREFIX = 'layer-switcher-'; + +/** + * OpenLayers Layer Switcher Control. + * See [the examples](./examples) for usage. + * @constructor + * @extends {ol/control/Control~Control} + * @param {Object} opt_options Control options, extends ol/control/Control~Control#options adding: + * @param {String} opt_options.tipLabel the button tooltip. + * @param {String} opt_options.groupSelectStyle either `'none'` - groups don't get a checkbox, + * `'children'` (default) groups have a checkbox and affect child visibility or + * `'group'` groups have a checkbox but do not alter child visibility (like QGIS). + */ + +var LayerSwitcher = function (_Control) { + inherits(LayerSwitcher, _Control); + + function LayerSwitcher(opt_options) { + classCallCheck(this, LayerSwitcher); + + + var options = opt_options || {}; + + var tipLabel = options.tipLabel ? options.tipLabel : 'Legend'; + + var element = document.createElement('div'); + + var _this = possibleConstructorReturn(this, (LayerSwitcher.__proto__ || Object.getPrototypeOf(LayerSwitcher)).call(this, { element: element, target: options.target })); + + _this.groupSelectStyle = LayerSwitcher.getGroupSelectStyle(options.groupSelectStyle); + + _this.mapListeners = []; + + _this.hiddenClassName = 'ol-unselectable ol-control layer-switcher'; + if (LayerSwitcher.isTouchDevice_()) { + _this.hiddenClassName += ' touch'; + } + _this.shownClassName = 'shown'; + + element.className = _this.hiddenClassName; + + var button = document.createElement('button'); + button.setAttribute('title', tipLabel); + element.appendChild(button); + + _this.panel = document.createElement('div'); + _this.panel.className = 'panel'; + element.appendChild(_this.panel); + LayerSwitcher.enableTouchScroll_(_this.panel); + + var this_ = _this; + + button.onmouseover = function (e) { + this_.showPanel(); + }; + + button.onclick = function (e) { + e = e || window.event; + this_.showPanel(); + e.preventDefault(); + }; + + this_.panel.onmouseout = function (e) { + e = e || window.event; + if (!this_.panel.contains(e.toElement || e.relatedTarget)) { + this_.hidePanel(); + } + }; + + return _this; + } + + /** + * Set the map instance the control is associated with. + * @param {ol/Map~Map} map The map instance. + */ + + + createClass(LayerSwitcher, [{ + key: 'setMap', + value: function setMap(map) { + // Clean up listeners associated with the previous map + for (var i = 0, key; i < this.mapListeners.length; i++) { + ol_Observable.unByKey(this.mapListeners[i]); + } + this.mapListeners.length = 0; + // Wire up listeners etc. and store reference to new map + get(LayerSwitcher.prototype.__proto__ || Object.getPrototypeOf(LayerSwitcher.prototype), 'setMap', this).call(this, map); + if (map) { + var this_ = this; + this.mapListeners.push(map.on('pointerdown', function () { + this_.hidePanel(); + })); + this.renderPanel(); + } + } + + /** + * Show the layer panel. + */ + + }, { + key: 'showPanel', + value: function showPanel() { + if (!this.element.classList.contains(this.shownClassName)) { + this.element.classList.add(this.shownClassName); + this.renderPanel(); + } + } + + /** + * Hide the layer panel. + */ + + }, { + key: 'hidePanel', + value: function hidePanel() { + if (this.element.classList.contains(this.shownClassName)) { + this.element.classList.remove(this.shownClassName); + } + } + + /** + * Re-draw the layer panel to represent the current state of the layers. + */ + + }, { + key: 'renderPanel', + value: function renderPanel() { + LayerSwitcher.renderPanel(this.getMap(), this.panel, { + groupSelectStyle: this.groupSelectStyle + }); + } + + /** + * **Static** Re-draw the layer panel to represent the current state of the layers. + * @param {ol/Map~Map} map The OpenLayers Map instance to render layers for + * @param {Element} panel The DOM Element into which the layer tree will be rendered + */ + + }], [{ + key: 'renderPanel', + value: function renderPanel(map, panel, options) { + + options = options || {}; + + options.groupSelectStyle = LayerSwitcher.getGroupSelectStyle(options.groupSelectStyle); + + LayerSwitcher.ensureTopVisibleBaseLayerShown_(map); + + while (panel.firstChild) { + panel.removeChild(panel.firstChild); + } + + // Reset indeterminate state for all layers and groups before + // applying based on groupSelectStyle + LayerSwitcher.forEachRecursive(map, function (l, idx, a) { + l.set('indeterminate', false); + }); + + if (options.groupSelectStyle === 'children' || options.groupSelectStyle === 'none') { + // Set visibile and indeterminate state of groups based on + // their children's visibility + LayerSwitcher.setGroupVisibility(map); + } else if (options.groupSelectStyle === 'group') { + // Set child indetermiate state based on their parent's visibility + LayerSwitcher.setChildVisibility(map); + } + + var ul = document.createElement('ul'); + panel.appendChild(ul); + // passing two map arguments instead of lyr as we're passing the map as the root of the layers tree + LayerSwitcher.renderLayers_(map, map, ul, options, function render(changedLyr) { + // console.log('render'); + LayerSwitcher.renderPanel(map, panel, options); + }); + } + }, { + key: 'isBaseGroup', + value: function isBaseGroup(lyr) { + var lyrs = lyr.getLayers ? lyr.getLayers().getArray() : []; + return lyrs.length && lyrs[0].get('type') === 'base'; + } + }, { + key: 'setGroupVisibility', + value: function setGroupVisibility(map) { + // Get a list of groups, with the deepest first + var groups = LayerSwitcher.getGroupsAndLayers(map, function (l) { + return l.getLayers && !l.get('combine') && !LayerSwitcher.isBaseGroup(l); + }).reverse(); + // console.log(groups.map(g => g.get('title'))); + groups.forEach(function (group) { + // TODO Can we use getLayersArray, is it public in the esm build? + var descendantVisibility = group.getLayersArray().map(function (l) { + var state = l.getVisible(); + // console.log('>', l.get('title'), state); + return state; + }); + // console.log(descendantVisibility); + if (descendantVisibility.every(function (v) { + return v === true; + })) { + group.setVisible(true); + group.set('indeterminate', false); + } else if (descendantVisibility.every(function (v) { + return v === false; + })) { + group.setVisible(false); + group.set('indeterminate', false); + } else { + group.setVisible(true); + group.set('indeterminate', true); + } + }); + } + }, { + key: 'setChildVisibility', + value: function setChildVisibility(map) { + // console.log('setChildVisibility'); + var groups = LayerSwitcher.getGroupsAndLayers(map, function (l) { + return l.getLayers && !l.get('combine') && !LayerSwitcher.isBaseGroup(l); + }); + groups.forEach(function (group) { + // console.log(group.get('title')); + var groupVisible = group.getVisible(); + var groupIndeterminate = group.get('indeterminate'); + group.getLayers().getArray().forEach(function (l) { + // console.log('>', l.get('title')); + l.set('indeterminate', false); + if ((!groupVisible || groupIndeterminate) && l.getVisible()) { + l.set('indeterminate', true); + } + }); + }); + } + + /** + * **Static** Ensure only the top-most base layer is visible if more than one is visible. + * @param {ol/Map~Map} map The map instance. + * @private + */ + + }, { + key: 'ensureTopVisibleBaseLayerShown_', + value: function ensureTopVisibleBaseLayerShown_(map) { + var lastVisibleBaseLyr; + LayerSwitcher.forEachRecursive(map, function (l, idx, a) { + if (l.get('type') === 'base' && l.getVisible()) { + lastVisibleBaseLyr = l; + } + }); + if (lastVisibleBaseLyr) LayerSwitcher.setVisible_(map, lastVisibleBaseLyr, true); + } + }, { + key: 'getGroupsAndLayers', + value: function getGroupsAndLayers(lyr, filterFn) { + var layers = []; + filterFn = filterFn || function (l, idx, a) { + return true; + }; + LayerSwitcher.forEachRecursive(lyr, function (l, idx, a) { + if (l.get('title')) { + if (filterFn(l, idx, a)) { + layers.push(l); + } + } + }); + return layers; + } + + /** + * **Static** Toggle the visible state of a layer. + * Takes care of hiding other layers in the same exclusive group if the layer + * is toggle to visible. + * @private + * @param {ol/Map~Map} map The map instance. + * @param {ol/layer/Base~BaseLayer} The layer whose visibility will be toggled. + */ + + }, { + key: 'setVisible_', + value: function setVisible_(map, lyr, visible, groupSelectStyle) { + // console.log(lyr.get('title'), visible, groupSelectStyle); + lyr.setVisible(visible); + if (visible && lyr.get('type') === 'base') { + // Hide all other base layers regardless of grouping + LayerSwitcher.forEachRecursive(map, function (l, idx, a) { + if (l != lyr && l.get('type') === 'base') { + l.setVisible(false); + } + }); + } + if (lyr.getLayers && !lyr.get('combine') && groupSelectStyle === 'children') { + lyr.getLayers().forEach(function (l) { + LayerSwitcher.setVisible_(map, l, lyr.getVisible(), groupSelectStyle); + }); + } + } + + /** + * **Static** Render all layers that are children of a group. + * @private + * @param {ol/Map~Map} map The map instance. + * @param {ol/layer/Base~BaseLayer} lyr Layer to be rendered (should have a title property). + * @param {Number} idx Position in parent group list. + */ + + }, { + key: 'renderLayer_', + value: function renderLayer_(map, lyr, idx, options, render) { + + var li = document.createElement('li'); + + var lyrTitle = lyr.get('title'); + + var checkboxId = LayerSwitcher.uuid(); + + var label = document.createElement('label'); + + if (lyr.getLayers && !lyr.get('combine')) { + + var isBaseGroup = LayerSwitcher.isBaseGroup(lyr); + + li.classList.add('group'); + if (isBaseGroup) { + li.classList.add(CSS_PREFIX + 'base-group'); + } + + // Group folding + if (lyr.get('fold')) { + li.classList.add(CSS_PREFIX + 'fold'); + li.classList.add(CSS_PREFIX + lyr.get('fold')); + var btn = document.createElement('button'); + btn.onclick = function (e) { + LayerSwitcher.toggleFold_(lyr, li); + }; + li.appendChild(btn); + } + + if (!isBaseGroup && options.groupSelectStyle != 'none') { + var _input = document.createElement('input'); + _input.type = 'checkbox'; + _input.id = checkboxId; + _input.checked = lyr.getVisible(); + _input.indeterminate = lyr.get('indeterminate'); + _input.onchange = function (e) { + LayerSwitcher.setVisible_(map, lyr, e.target.checked, options.groupSelectStyle); + render(lyr); + }; + li.appendChild(_input); + label.htmlFor = checkboxId; + } + + label.innerHTML = lyrTitle; + li.appendChild(label); + var ul = document.createElement('ul'); + li.appendChild(ul); + + LayerSwitcher.renderLayers_(map, lyr, ul, options, render); + } else { + + li.className = 'layer'; + var input = document.createElement('input'); + if (lyr.get('type') === 'base') { + input.type = 'radio'; + input.name = 'base'; + } else { + input.type = 'checkbox'; + } + input.id = checkboxId; + input.checked = lyr.get('visible'); + input.indeterminate = lyr.get('indeterminate'); + input.onchange = function (e) { + LayerSwitcher.setVisible_(map, lyr, e.target.checked, options.groupSelectStyle); + render(lyr); + }; + li.appendChild(input); + + label.htmlFor = checkboxId; + label.innerHTML = lyrTitle; + + var rsl = map.getView().getResolution(); + if (rsl > lyr.getMaxResolution() || rsl < lyr.getMinResolution()) { + label.className += ' disabled'; + } + + li.appendChild(label); + } + + return li; + } + + /** + * **Static** Render all layers that are children of a group. + * @private + * @param {ol/Map~Map} map The map instance. + * @param {ol/layer/Group~LayerGroup} lyr Group layer whose children will be rendered. + * @param {Element} elm DOM element that children will be appended to. + */ + + }, { + key: 'renderLayers_', + value: function renderLayers_(map, lyr, elm, options, render) { + var lyrs = lyr.getLayers().getArray().slice().reverse(); + for (var i = 0, l; i < lyrs.length; i++) { + l = lyrs[i]; + if (l.get('title')) { + elm.appendChild(LayerSwitcher.renderLayer_(map, l, i, options, render)); + } + } + } + + /** + * **Static** Call the supplied function for each layer in the passed layer group + * recursing nested groups. + * @param {ol/layer/Group~LayerGroup} lyr The layer group to start iterating from. + * @param {Function} fn Callback which will be called for each `ol/layer/Base~BaseLayer` + * found under `lyr`. The signature for `fn` is the same as `ol/Collection~Collection#forEach` + */ + + }, { + key: 'forEachRecursive', + value: function forEachRecursive(lyr, fn) { + lyr.getLayers().forEach(function (lyr, idx, a) { + fn(lyr, idx, a); + if (lyr.getLayers) { + LayerSwitcher.forEachRecursive(lyr, fn); + } + }); + } + + /** + * **Static** Generate a UUID + * Adapted from http://stackoverflow.com/a/2117523/526860 + * @returns {String} UUID + */ + + }, { + key: 'uuid', + value: function uuid() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c == 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } + + /** + * @private + * @desc Apply workaround to enable scrolling of overflowing content within an + * element. Adapted from https://gist.github.com/chrismbarr/4107472 + */ + + }, { + key: 'enableTouchScroll_', + value: function enableTouchScroll_(elm) { + if (LayerSwitcher.isTouchDevice_()) { + var scrollStartPos = 0; + elm.addEventListener("touchstart", function (event) { + scrollStartPos = this.scrollTop + event.touches[0].pageY; + }, false); + elm.addEventListener("touchmove", function (event) { + this.scrollTop = scrollStartPos - event.touches[0].pageY; + }, false); + } + } + + /** + * @private + * @desc Determine if the current browser supports touch events. Adapted from + * https://gist.github.com/chrismbarr/4107472 + */ + + }, { + key: 'isTouchDevice_', + value: function isTouchDevice_() { + try { + document.createEvent("TouchEvent"); + return true; + } catch (e) { + return false; + } + } + + /** + * Fold/unfold layer group + * @private + */ + + }, { + key: 'toggleFold_', + value: function toggleFold_(lyr, li) { + li.classList.remove(CSS_PREFIX + lyr.get('fold')); + lyr.set('fold', lyr.get('fold') === 'open' ? 'close' : 'open'); + li.classList.add(CSS_PREFIX + lyr.get('fold')); + } + + /** + * If a valid groupSelectStyle value is not provided then return the default + * @private + */ + + }, { + key: 'getGroupSelectStyle', + value: function getGroupSelectStyle(groupSelectStyle) { + return ['none', 'children', 'group'].indexOf(groupSelectStyle) >= 0 ? groupSelectStyle : 'children'; + } + }]); + return LayerSwitcher; +}(Control); + +if (window.ol && window.ol.control) { + window.ol.control.LayerSwitcher = LayerSwitcher; +} + +return LayerSwitcher; + +}))); diff --git a/html/ol/ol533.css b/html/ol/ol533.css new file mode 100644 index 0000000..b798e8f --- /dev/null +++ b/html/ol/ol533.css @@ -0,0 +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,.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}.ol-overlay-container{will-change:left,right,top,bottom}.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-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}@media print{.ol-control{display:none}}.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:.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)}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none;line-height:inherit}.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,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em}.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: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,.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/html/ol/ol533.js b/html/ol/ol533.js new file mode 100644 index 0000000..8ed611d --- /dev/null +++ b/html/ol/ol533.js @@ -0,0 +1,8 @@ +!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 i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=9)}([function(t,e,i){"use strict";t.exports=n,t.exports.default=n;var r=i(5);function n(t,e){if(!(this instanceof n))return new n(t,e);this._maxEntries=Math.max(4,t||9),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),e&&this._initFormat(e),this.clear()}function o(t,e,i){if(!i)return e.indexOf(t);for(var r=0;r=t.minX&&e.maxY>=t.minY}function y(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function v(t,e,i,n,o){for(var s,a=[e,i];a.length;)(i=a.pop())-(e=a.pop())<=n||(s=e+Math.ceil((i-e)/n/2)*n,r(t,s,e,i,o),a.push(e,s,s,i))}n.prototype={all:function(){return this._all(this.data,[])},search:function(t){var e=this.data,i=[],r=this.toBBox;if(!g(t,e))return i;for(var n,o,s,a,h=[];e;){for(n=0,o=e.children.length;n=0&&o[e].children.length>this._maxEntries;)this._split(o,e),e--;this._adjustParentBBoxes(n,o,e)},_split:function(t,e){var i=t[e],r=i.children.length,n=this._minEntries;this._chooseSplitAxis(i,n,r);var o=this._chooseSplitIndex(i,n,r),a=y(i.children.splice(o,i.children.length-o));a.height=i.height,a.leaf=i.leaf,s(i,this.toBBox),s(a,this.toBBox),e?t[e-1].children.push(a):this._splitRoot(i,a)},_splitRoot:function(t,e){this.data=y([t,e]),this.data.height=t.height+1,this.data.leaf=!1,s(this.data,this.toBBox)},_chooseSplitIndex:function(t,e,i){var r,n,o,s,h,l,u,c;for(l=u=1/0,r=e;r<=i-e;r++)s=f(n=a(t,0,r,this.toBBox),o=a(t,r,i,this.toBBox)),h=p(n)+p(o),s=e;n--)o=t.children[n],h(u,t.leaf?s(o):o),p+=c(u);return p},_adjustParentBBoxes:function(t,e,i){for(var r=i;r>=0;r--)h(e[r],t)},_condense:function(t){for(var e,i=t.length-1;i>=0;i--)0===t[i].children.length?i>0?(e=t[i-1].children).splice(e.indexOf(t[i]),1):this.clear():s(t[i],this.toBBox)},_initFormat:function(t){var e=["return a"," - b",";"];this.compareMinX=new Function("a","b",e.join(t[0])),this.compareMinY=new Function("a","b",e.join(t[1])),this.toBBox=new Function("a","return {minX: a"+t[0]+", minY: a"+t[1]+", maxX: a"+t[2]+", maxY: a"+t[3]+"};")}}},function(t,e,i){"use strict";t.exports=n;var r=i(6);function n(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}n.Varint=0,n.Fixed64=1,n.Bytes=2,n.Fixed32=5;function o(t){return t.type===n.Bytes?t.readVarint()+t.pos:t.pos+1}function s(t,e,i){return i?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function a(t,e,i){var r=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.ceil(Math.log(e)/(7*Math.LN2));i.realloc(r);for(var n=i.pos-1;n>=t;n--)i.buf[n+r]=i.buf[n]}function h(t,e){for(var i=0;i>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function m(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}n.prototype={destroy:function(){this.buf=null},readFields:function(t,e,i){for(i=i||this.length;this.pos>3,o=this.pos;this.type=7&r,t(n,e,this),this.pos===o&&this.skip(r)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=y(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=y(this.buf,this.pos)+4294967296*y(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=y(this.buf,this.pos)+4294967296*m(this.buf,this.pos+4);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 e,i,r=this.buf;return e=127&(i=r[this.pos++]),i<128?e:(e|=(127&(i=r[this.pos++]))<<7,i<128?e:(e|=(127&(i=r[this.pos++]))<<14,i<128?e:(e|=(127&(i=r[this.pos++]))<<21,i<128?e:function(t,e,i){var r,n,o=i.buf;if(n=o[i.pos++],r=(112&n)>>4,n<128)return s(t,r,e);if(n=o[i.pos++],r|=(127&n)<<3,n<128)return s(t,r,e);if(n=o[i.pos++],r|=(127&n)<<10,n<128)return s(t,r,e);if(n=o[i.pos++],r|=(127&n)<<17,n<128)return s(t,r,e);if(n=o[i.pos++],r|=(127&n)<<24,n<128)return s(t,r,e);if(n=o[i.pos++],r|=(1&n)<<31,n<128)return s(t,r,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(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,e=function(t,e,i){var r="",n=e;for(;n239?4:h>223?3:h>191?2:1;if(n+u>i)break;1===u?h<128&&(l=h):2===u?128==(192&(o=t[n+1]))&&(l=(31&h)<<6|63&o)<=127&&(l=null):3===u?(o=t[n+1],s=t[n+2],128==(192&o)&&128==(192&s)&&((l=(15&h)<<12|(63&o)<<6|63&s)<=2047||l>=55296&&l<=57343)&&(l=null)):4===u&&(o=t[n+1],s=t[n+2],a=t[n+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&((l=(15&h)<<18|(63&o)<<12|(63&s)<<6|63&a)<=65535||l>=1114112)&&(l=null)),null===l?(l=65533,u=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),n+=u}return r}(this.buf,this.pos,t);return this.pos=t,e},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){var i=o(this);for(t=t||[];this.pos127;);else if(e===n.Bytes)this.pos=this.readVarint()+this.pos;else if(e===n.Fixed32)this.pos+=4;else{if(e!==n.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 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");e.realloc(10),function(t,e,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,e),function(t,e){var i=(7&t)<<4;if(e.buf[e.pos++]|=i|((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}(r,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,i){for(var r,n,o=0;o55295&&r<57344){if(!n){r>56319||o+1===e.length?(t[i++]=239,t[i++]=191,t[i++]=189):n=r;continue}if(r<56320){t[i++]=239,t[i++]=191,t[i++]=189,n=r;continue}r=n-55296<<10|r-56320|65536,n=null}else n&&(t[i++]=239,t[i++]=191,t[i++]=189,n=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-e;i>=128&&a(e,i,this),this.pos=e-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 e=t.length;this.writeVarint(e),this.realloc(e);for(var i=0;i=128&&a(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,e,i){this.writeTag(t,n.Bytes),this.writeRawMessage(e,i)},writePackedVarint:function(t,e){this.writeMessage(t,h,e)},writePackedSVarint:function(t,e){this.writeMessage(t,l,e)},writePackedBoolean:function(t,e){this.writeMessage(t,c,e)},writePackedFloat:function(t,e){this.writeMessage(t,u,e)},writePackedDouble:function(t,e){this.writeMessage(t,p,e)},writePackedFixed32:function(t,e){this.writeMessage(t,d,e)},writePackedSFixed32:function(t,e){this.writeMessage(t,f,e)},writePackedFixed64:function(t,e){this.writeMessage(t,_,e)},writePackedSFixed64:function(t,e){this.writeMessage(t,g,e)},writeBytesField:function(t,e){this.writeTag(t,n.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,n.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,n.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,n.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,n.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,n.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,n.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,n.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,n.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,n.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}}},function(t,e,i){var r=i(7);e.Processor=r},,,function(t,e,i){t.exports=function(){"use strict";function t(t,e,i){var r=t[e];t[e]=t[i],t[i]=r}function e(t,e){return te?1:0}return function(i,r,n,o,s){!function e(i,r,n,o,s){for(;o>n;){if(o-n>600){var a=o-n+1,h=r-n+1,l=Math.log(a),u=.5*Math.exp(2*l/3),p=.5*Math.sqrt(l*u*(a-u)/a)*(h-a/2<0?-1:1),c=Math.max(n,Math.floor(r-h*u/a+p)),d=Math.min(o,Math.floor(r+(a-h)*u/a+p));e(i,r,c,d,s)}var f=i[r],_=n,g=o;for(t(i,n,r),s(i[o],f)>0&&t(i,n,o);_0;)g--}0===s(i[n],f)?t(i,n,g):t(i,++g,o),g<=r&&(n=g+1),r<=g&&(o=g-1)}}(i,r,n||0,o||i.length-1,s||e)}}()},function(t,e){e.read=function(t,e,i,r,n){var o,s,a=8*n-r-1,h=(1<>1,u=-7,p=i?n-1:0,c=i?-1:1,d=t[e+p];for(p+=c,o=d&(1<<-u)-1,d>>=-u,u+=a;u>0;o=256*o+t[e+p],p+=c,u-=8);for(s=o&(1<<-u)-1,o>>=-u,u+=r;u>0;s=256*s+t[e+p],p+=c,u-=8);if(0===o)o=1-l;else{if(o===h)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,r),o-=l}return(d?-1:1)*s*Math.pow(2,o-r)},e.write=function(t,e,i,r,n,o){var s,a,h,l=8*o-n-1,u=(1<>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,f=r?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+p>=1?c/h:c*Math.pow(2,1-p))*h>=2&&(s++,h/=2),s+p>=u?(a=0,s=u):s+p>=1?(a=(e*h-1)*Math.pow(2,n),s+=p):(a=e*Math.pow(2,p-1)*Math.pow(2,n),s=0));n>=8;t[i+d]=255&a,d+=f,a/=256,n-=8);for(s=s<0;t[i+d]=255&s,d+=f,s/=256,l-=8);t[i+d-f]|=128*_}},function(t,e,i){var r=i(8).newImageData;function n(t){var e=!0;try{new ImageData(10,10)}catch(t){e=!1}function i(t,i,r){return e?new ImageData(t,i,r):{data:t,width:i,height:r}}return function(e){var r,n,o=e.buffers,s=e.meta,a=e.imageOps,h=e.width,l=e.height,u=o.length,p=o[0].byteLength;if(a){var c=new Array(u);for(n=0;nthis._maxQueueLength;)this._queue.shift().callback(null,null)},s.prototype._dispatch=function(){if(0===this._running&&this._queue.length>0){var t=this._job=this._queue.shift(),e=t.inputs[0].width,i=t.inputs[0].height,r=t.inputs.map(function(t){return t.data.buffer}),n=this._workers.length;if(this._running=n,1===n)this._workers[0].postMessage({buffers:r,meta:t.meta,imageOps:this._imageOps,width:e,height:i},r);else for(var o=t.inputs[0].data.length,s=4*Math.ceil(o/4/n),a=0;a0},e.prototype.removeEventListener=function(t,e){var i=this.listeners_[t];if(i){var r=i.indexOf(e);t in this.pendingRemovals_?(i[r]=I,++this.pendingRemovals_[t]):(i.splice(r,1),0===i.length&&delete this.listeners_[t])}},e}(C),M={CHANGE:"change",CLEAR:"clear",CONTEXTMENU:"contextmenu",CLICK:"click",DBLCLICK:"dblclick",DRAGENTER:"dragenter",DRAGOVER:"dragover",DROP:"drop",ERROR:"error",KEYDOWN:"keydown",KEYPRESS:"keypress",LOAD:"load",MOUSEDOWN:"mousedown",MOUSEMOVE:"mousemove",MOUSEOUT:"mouseout",MOUSEUP:"mouseup",MOUSEWHEEL:"mousewheel",MSPOINTERDOWN:"MSPointerDown",RESIZE:"resize",TOUCHSTART:"touchstart",TOUCHMOVE:"touchmove",TOUCHEND:"touchend",WHEEL:"wheel"};var F=function(t){function e(){t.call(this),this.revision_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.changed=function(){++this.revision_,this.dispatchEvent(M.CHANGE)},e.prototype.getRevision=function(){return this.revision_},e.prototype.on=function(t,e){if(Array.isArray(t)){for(var i=t.length,r=new Array(i),n=0;n0;)this.pop()},e.prototype.extend=function(t){for(var e=0,i=t.length;ee?1:t=0}function z(t,e,i){var r,n=t.length;if(t[0]<=e)return 0;if(e<=t[n-1])return n-1;if(i>0){for(r=1;r>>0,n=0;nn&&(h|=$.RIGHT),ao&&(h|=$.ABOVE),h===$.UNKNOWN&&(h=$.INTERSECTING),h}function ht(){return[1/0,1/0,-1/0,-1/0]}function lt(t,e,i,r,n){return n?(n[0]=t,n[1]=e,n[2]=i,n[3]=r,n):[t,e,i,r]}function ut(t){return lt(1/0,1/0,-1/0,-1/0,t)}function pt(t,e){var i=t[0],r=t[1];return lt(i,r,i,r,e)}function ct(t,e,i,r,n){return yt(ut(n),t,e,i,r)}function dt(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function ft(t,e){return e[0]t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function _t(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function gt(t,e){for(var i=0,r=e.length;ie[0]?r[0]=t[0]:r[0]=e[0],t[1]>e[1]?r[1]=t[1]:r[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function bt(t){return t[2]1?(i=n,r=o):h>0&&(i+=s*h,r+=a*h)}return Yt(t,e,i,r)}function Yt(t,e,i,r){var n=i-t,o=r-e;return n*n+o*o}function Bt(t){return 180*t/Math.PI}function Vt(t){return t*Math.PI/180}function Xt(t,e){var i=t%e;return i*e<0?i+e:i}function zt(t,e,i){return t+i*(e-t)} +/** + * @license + * Latitude/longitude spherical geodesy formulae taken from + * http://www.movable-type.co.uk/scripts/latlong.html + * Licensed under CC-BY-3.0. + */var Wt=6371008.8;function Kt(t,e,i){var r=i||Wt,n=Vt(t[1]),o=Vt(e[1]),s=(o-n)/2,a=Vt(e[0]-t[0])/2,h=Math.sin(s)*Math.sin(s)+Math.sin(a)*Math.sin(a)*Math.cos(n)*Math.cos(o);return 2*r*Math.atan2(Math.sqrt(h),Math.sqrt(1-h))}function Ht(t,e){for(var i=0,r=0,n=t.length;r1?i:2,o=e;void 0===o&&(o=n>2?t.slice():new Array(r));for(var s=re,a=0;as?h=s:h<-s&&(h=-s),o[a+1]=h}return o}function le(t,e,i){var r=t.length,n=i>1?i:2,o=e;void 0===o&&(o=n>2?t.slice():new Array(r));for(var s=0;s=2;--l)s[a+l]=e[a+l]}return s}}function we(t,e,i,r){var n=Ee(t),o=Ee(e);ge(n,o,Re(i)),ge(o,n,Re(r))}function Ie(t,e){if(t===e)return!0;var i=t.getUnits()===e.getUnits();return t.getCode()===e.getCode()?i:Le(t,e)===ve&&i}function Le(t,e){var i=ye(t.getCode(),e.getCode());return i||(i=me),i}function Oe(t,e){return Le(Ee(t),Ee(e))}function Pe(t,e,i){return Oe(e,i)(t,void 0,t.length)}function be(t,e,i){return Ft(t,Oe(e,i))}Te(ae),Te(de),function(t,e,i,r){t.forEach(function(t){e.forEach(function(e){ge(t,e,i),ge(e,t,r)})})}(de,ae,he,le);var Me=new Array(6);function Fe(t){return Ne(t,1,0,0,1,0,0)}function Ae(t,e){var i=t[0],r=t[1],n=t[2],o=t[3],s=t[4],a=t[5],h=e[0],l=e[1],u=e[2],p=e[3],c=e[4],d=e[5];return t[0]=i*h+n*l,t[1]=r*h+o*l,t[2]=i*u+n*p,t[3]=r*u+o*p,t[4]=i*c+n*d+s,t[5]=r*c+o*d+a,t}function Ne(t,e,i,r,n,o,s){return t[0]=e,t[1]=i,t[2]=r,t[3]=n,t[4]=o,t[5]=s,t}function Ge(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function De(t,e){var i=e[0],r=e[1];return e[0]=t[0]*i+t[2]*r+t[4],e[1]=t[1]*i+t[3]*r+t[5],e}function ke(t,e){var i=Math.cos(e),r=Math.sin(e);return Ae(t,Ne(Me,i,r,-r,i,0,0))}function je(t,e,i){return Ae(t,Ne(Me,e,0,0,i,0,0))}function Ue(t,e,i){return Ae(t,Ne(Me,1,0,0,1,e,i))}function Ye(t,e,i,r,n,o,s,a){var h=Math.sin(o),l=Math.cos(o);return t[0]=r*l,t[1]=n*h,t[2]=-r*h,t[3]=n*l,t[4]=s*r*l-a*r*h+e,t[5]=s*n*h+a*n*l+i,t}function Be(t){var e=function(t){return t[0]*t[3]-t[1]*t[2]}(t);Y(0!==e,32);var i=t[0],r=t[1],n=t[2],o=t[3],s=t[4],a=t[5];return t[0]=o/e,t[1]=-r/e,t[2]=-n/e,t[3]=i/e,t[4]=(n*a-o*s)/e,t[5]=-(i*a-r*s)/e,t}var Ve=[1,0,0,1,0,0],Xe=function(t){function e(){t.call(this),this.extent_=[1/0,1/0,-1/0,-1/0],this.extentRevision_=-1,this.simplifiedGeometryCache={},this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clone=function(){return r()},e.prototype.closestPointXY=function(t,e,i,n){return r()},e.prototype.containsXY=function(t,e){return!1},e.prototype.getClosestPoint=function(t,e){var i=e||[NaN,NaN];return this.closestPointXY(t[0],t[1],i,1/0),i},e.prototype.intersectsCoordinate=function(t){return this.containsXY(t[0],t[1])},e.prototype.computeExtent=function(t){return r()},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){r()},e.prototype.scale=function(t,e,i){r()},e.prototype.simplify=function(t){return this.getSimplifiedGeometry(t*t)},e.prototype.getSimplifiedGeometry=function(t){return r()},e.prototype.getType=function(){return r()},e.prototype.applyTransform=function(t){r()},e.prototype.intersectsExtent=function(t){return r()},e.prototype.translate=function(t,e){r()},e.prototype.transform=function(t,e){var i=Ee(t),r=i.getUnits()==$t.TILE_PIXELS?function(t,r,n){var o=i.getExtent(),s=i.getWorldExtent(),a=Rt(s)/Rt(o);return Ye(Ve,s[0],s[3],a,-a,0,0,0),Gt(t,0,t.length,n,Ve,r),Oe(i,e)(t,r,n)}:Oe(i,e);return this.applyTransform(r),this},e}(D);function ze(t){var e;return t==At.XY?e=2:t==At.XYZ||t==At.XYM?e=3:t==At.XYZM&&(e=4),e}var We=function(t){function e(){t.call(this),this.layout=At.XY,this.stride=2,this.flatCoordinates=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.computeExtent=function(t){return ct(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)},e.prototype.getCoordinates=function(){return r()},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()&&(p(this.simplifiedGeometryCache),this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;var e=t.toString();if(this.simplifiedGeometryCache.hasOwnProperty(e))return this.simplifiedGeometryCache[e];var i=this.getSimplifiedGeometryInternal(t);return i.getFlatCoordinates().length1)a=i;else{if(c>0){for(var d=0;dn&&(n=l),o=a,s=h}return n}function Je(t,e,i,r,n){for(var o=0,s=i.length;o0;){for(var p=l.pop(),c=l.pop(),d=0,f=t[c],_=t[c+1],g=t[p],y=t[p+1],v=c+r;vd&&(u=v,d=m)}d>n&&(h[(u-e)/r]=1,c+r0&&_>d)&&(f<0&&g0&&g>f)?(a=p,h=c):(o[s++]=a,o[s++]=h,l=a,u=h,a=p,h=c)}}return o[s++]=a,o[s++]=h,s}function ui(t,e,i,r,n,o,s,a){for(var h=0,l=i.length;ho&&(l-a)*(o-h)-(n-a)*(u-h)>0&&s++:u<=o&&(l-a)*(o-h)-(n-a)*(u-h)<0&&s--,a=l,h=u}return 0!==s}function _i(t,e,i,r,n,o){if(0===i.length)return!1;if(!fi(t,e,i[0],r,n,o))return!1;for(var s=1,a=i.length;sx&&_i(t,e,i,r,l=(u+p)/2,f)&&(m=l,x=E),u=p}return isNaN(m)&&(m=n[o]),s?(s.push(m,f,x),s):[m,f,x]}function yi(t,e,i,r,n){for(var o=[],s=0,a=i.length;s=n[0]&&o[2]<=n[2]||(o[1]>=n[1]&&o[3]<=n[3]||vi(t,e,i,r,function(t,e){return function(t,e,i){var r=!1,n=at(t,e),o=at(t,i);if(n===$.INTERSECTING||o===$.INTERSECTING)r=!0;else{var s,a,h=t[0],l=t[1],u=t[2],p=t[3],c=e[0],d=e[1],f=i[0],_=i[1],g=(_-d)/(f-c);o&$.ABOVE&&!(n&$.ABOVE)&&(r=(s=f-(_-p)/g)>=h&&s<=u),r||!(o&$.RIGHT)||n&$.RIGHT||(r=(a=_-(f-u)*g)>=l&&a<=p),r||!(o&$.BELOW)||n&$.BELOW||(r=(s=f-(_-l)/g)>=h&&s<=u),r||!(o&$.LEFT)||n&$.LEFT||(r=(a=_-(f-h)*g)>=l&&a<=p)}return r}(n,t,e)}))))}function xi(t,e,i,r,n){if(!function(t,e,i,r,n){return!!(mi(t,e,i,r,n)||fi(t,e,i,r,n[0],n[1])||fi(t,e,i,r,n[0],n[3])||fi(t,e,i,r,n[2],n[1])||fi(t,e,i,r,n[2],n[3]))}(t,e,i[0],r,n))return!1;if(1===i.length)return!0;for(var o=1,s=i.length;o0}function Ti(t,e,i,r,n){for(var o=void 0!==n&&n,s=0,a=i.length;se?r:new Array(1+e-n).join("0")+r}function Ki(t,e){for(var i=(""+t).split("."),r=(""+e).split("."),n=0;ns)return 1;if(s>o)return-1}return 0}function Hi(t,e){return t[0]+=e[0],t[1]+=e[1],t}function Zi(t,e){var i,r,n=t[0],o=t[1],s=e[0],a=e[1],h=s[0],l=s[1],u=a[0],p=a[1],c=u-h,d=p-l,f=0===c&&0===d?0:(c*(n-h)+d*(o-l))/(c*c+d*d||0);return f<=0?(i=h,r=l):f>=1?(i=u,r=p):(i=h+f*c,r=l+f*d),[i,r]}function qi(t,e,i){var r=Xt(e+180,360)-180,n=Math.abs(3600*r),o=i||0,s=Math.pow(10,o),a=Math.floor(n/3600),h=Math.floor((n-3600*a)/60),l=n-3600*a-60*h;return(l=Math.ceil(l*s)/s)>=60&&(l=0,h+=1),h>=60&&(h=0,a+=1),a+"° "+Wi(h,2)+"′ "+Wi(l,2,o)+"″"+(0==r?"":" "+t.charAt(r<0?1:0))}function Ji(t,e,i){return t?e.replace("{x}",t[0].toFixed(i)).replace("{y}",t[1].toFixed(i)):""}function Qi(t,e){for(var i=!0,r=t.length-1;r>=0;--r)if(t[r]!=e[r]){i=!1;break}return i}function $i(t,e){var i=Math.cos(e),r=Math.sin(e),n=t[0]*i-t[1]*r,o=t[1]*i+t[0]*r;return t[0]=n,t[1]=o,t}function tr(t,e){return t[0]*=e,t[1]*=e,t}function er(t,e){var i=t[0]-e[0],r=t[1]-e[1];return i*i+r*r}function ir(t,e){return Math.sqrt(er(t,e))}function rr(t,e){return er(t,Zi(t,e))}function nr(t,e){return Ji(t,"{x}, {y}",e)}function or(t,e,i,r,n,o){var s=NaN,a=NaN,h=(i-e)/r;if(1===h)s=t[e],a=t[e+1];else if(2==h)s=(1-n)*t[e]+n*t[e+r],a=(1-n)*t[e+1]+n*t[e+r+1];else if(0!==h){for(var l=t[e],u=t[e+1],p=0,c=[0],d=e+r;d>1)],e))<0?s=r+1:(a=r,h=!n);return h?s:~s}(c,g);if(y<0){var v=(g-c[-y-2])/(c[-y-1]-c[-y-2]),m=e+(-y-2)*r;s=zt(t[m],t[m+r],v),a=zt(t[m+1],t[m+r+1],v)}else s=t[e+y*r],a=t[e+y*r+1]}return o?(o[0]=s,o[1]=a,o):[s,a]}function sr(t,e,i,r,n,o){if(i==e)return null;var s;if(n>1;n0&&g.length>0;)o=g.pop(),u=f.pop(),c=_.pop(),(h=o.toString())in y||(l.push(c[0],c[1]),y[h]=!0),s=g.pop(),p=f.pop(),d=_.pop(),Ut((n=e(r=t(a=(o+s)/2)))[0],n[1],c[0],c[1],d[0],d[1])=1024){var n=0;for(var o in t)0==(3&n++)&&(delete t[o],--e)}r=function(t){var e,i,r,n,o;cr.exec(t)&&(t=function(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var i=getComputedStyle(e).color;return document.body.removeChild(e),i}return""}(t));if(pr.exec(t)){var s,a=t.length-1;s=a<=4?1:2;var h=4===a||8===a;e=parseInt(t.substr(1+0*s,s),16),i=parseInt(t.substr(1+1*s,s),16),r=parseInt(t.substr(1+2*s,s),16),n=h?parseInt(t.substr(1+3*s,s),16):255,1==s&&(e=(e<<4)+e,i=(i<<4)+i,r=(r<<4)+r,h&&(n=(n<<4)+n)),o=[e,i,r,n/255]}else 0==t.indexOf("rgba(")?gr(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),gr(o)):Y(!1,14);return o}(i),t[i]=r,++e}return r}}();function _r(t){return Array.isArray(t)?t:fr(t)}function gr(t){return t[0]=kt(t[0]+.5|0,0,255),t[1]=kt(t[1]+.5|0,0,255),t[2]=kt(t[2]+.5|0,0,255),t[3]=kt(t[3],0,1),t}function yr(t){var e=t[0];e!=(0|e)&&(e=e+.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("+e+","+i+","+r+","+(void 0===t[3]?1:t[3])+")"}var vr=function(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.checksum_=void 0};vr.prototype.clone=function(){var t=this.getColor();return new vr({color:Array.isArray(t)?t.slice():t||void 0})},vr.prototype.getColor=function(){return this.color_},vr.prototype.setColor=function(t){this.color_=t,this.checksum_=void 0},vr.prototype.getChecksum=function(){if(void 0===this.checksum_){var t=this.color_;t?Array.isArray(t)||"string"==typeof t?this.checksum_="f"+dr(t):this.checksum_=o(this.color_):this.checksum_="f-"}return this.checksum_};var mr=vr,xr=function(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,this.checksum_=void 0};xr.prototype.clone=function(){var t=this.getColor();return new xr({color:Array.isArray(t)?t.slice():t||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()})},xr.prototype.getColor=function(){return this.color_},xr.prototype.getLineCap=function(){return this.lineCap_},xr.prototype.getLineDash=function(){return this.lineDash_},xr.prototype.getLineDashOffset=function(){return this.lineDashOffset_},xr.prototype.getLineJoin=function(){return this.lineJoin_},xr.prototype.getMiterLimit=function(){return this.miterLimit_},xr.prototype.getWidth=function(){return this.width_},xr.prototype.setColor=function(t){this.color_=t,this.checksum_=void 0},xr.prototype.setLineCap=function(t){this.lineCap_=t,this.checksum_=void 0},xr.prototype.setLineDash=function(t){this.lineDash_=t,this.checksum_=void 0},xr.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t,this.checksum_=void 0},xr.prototype.setLineJoin=function(t){this.lineJoin_=t,this.checksum_=void 0},xr.prototype.setMiterLimit=function(t){this.miterLimit_=t,this.checksum_=void 0},xr.prototype.setWidth=function(t){this.width_=t,this.checksum_=void 0},xr.prototype.getChecksum=function(){return void 0===this.checksum_&&(this.checksum_="s",this.color_?"string"==typeof this.color_?this.checksum_+=this.color_:this.checksum_+=o(this.color_):this.checksum_+="-",this.checksum_+=","+(void 0!==this.lineCap_?this.lineCap_.toString():"-")+","+(this.lineDash_?this.lineDash_.toString():"-")+","+(void 0!==this.lineDashOffset_?this.lineDashOffset_:"-")+","+(void 0!==this.lineJoin_?this.lineJoin_:"-")+","+(void 0!==this.miterLimit_?this.miterLimit_.toString():"-")+","+(void 0!==this.width_?this.width_.toString():"-")),this.checksum_};var Er=xr,Sr="point",Tr="line",Cr=function(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 mr({color:"#333"}),this.maxAngle_=void 0!==e.maxAngle?e.maxAngle:Math.PI/4,this.placement_=void 0!==e.placement?e.placement:Sr,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};Cr.prototype.clone=function(){return new Cr({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})},Cr.prototype.getOverflow=function(){return this.overflow_},Cr.prototype.getFont=function(){return this.font_},Cr.prototype.getMaxAngle=function(){return this.maxAngle_},Cr.prototype.getPlacement=function(){return this.placement_},Cr.prototype.getOffsetX=function(){return this.offsetX_},Cr.prototype.getOffsetY=function(){return this.offsetY_},Cr.prototype.getFill=function(){return this.fill_},Cr.prototype.getRotateWithView=function(){return this.rotateWithView_},Cr.prototype.getRotation=function(){return this.rotation_},Cr.prototype.getScale=function(){return this.scale_},Cr.prototype.getStroke=function(){return this.stroke_},Cr.prototype.getText=function(){return this.text_},Cr.prototype.getTextAlign=function(){return this.textAlign_},Cr.prototype.getTextBaseline=function(){return this.textBaseline_},Cr.prototype.getBackgroundFill=function(){return this.backgroundFill_},Cr.prototype.getBackgroundStroke=function(){return this.backgroundStroke_},Cr.prototype.getPadding=function(){return this.padding_},Cr.prototype.setOverflow=function(t){this.overflow_=t},Cr.prototype.setFont=function(t){this.font_=t},Cr.prototype.setMaxAngle=function(t){this.maxAngle_=t},Cr.prototype.setOffsetX=function(t){this.offsetX_=t},Cr.prototype.setOffsetY=function(t){this.offsetY_=t},Cr.prototype.setPlacement=function(t){this.placement_=t},Cr.prototype.setFill=function(t){this.fill_=t},Cr.prototype.setRotation=function(t){this.rotation_=t},Cr.prototype.setScale=function(t){this.scale_=t},Cr.prototype.setStroke=function(t){this.stroke_=t},Cr.prototype.setText=function(t){this.text_=t},Cr.prototype.setTextAlign=function(t){this.textAlign_=t},Cr.prototype.setTextBaseline=function(t){this.textBaseline_=t},Cr.prototype.setBackgroundFill=function(t){this.backgroundFill_=t},Cr.prototype.setBackgroundStroke=function(t){this.backgroundStroke_=t},Cr.prototype.setPadding=function(t){this.padding_=t};var Rr=Cr,wr=new Er({color:"rgba(0,0,0,0.2)"}),Ir=[90,45,30,20,10,5,2,1,.5,.2,.1,.05,.01,.005,.002,.001],Lr=function(t){var e=t||{};this.map_=null,this.postcomposeListenerKey_=null,this.projection_=null,this.maxLat_=1/0,this.maxLon_=1/0,this.minLat_=-1/0,this.minLon_=-1/0,this.maxLatP_=1/0,this.maxLonP_=1/0,this.minLatP_=-1/0,this.minLonP_=-1/0,this.targetSize_=void 0!==e.targetSize?e.targetSize:100,this.maxLines_=void 0!==e.maxLines?e.maxLines:100,this.meridians_=[],this.parallels_=[],this.strokeStyle_=void 0!==e.strokeStyle?e.strokeStyle:wr,this.fromLonLatTransform_=void 0,this.toLonLatTransform_=void 0,this.projectionCenterLonLat_=null,this.meridiansLabels_=null,this.parallelsLabels_=null,1==e.showLabels&&(this.lonLabelFormatter_=void 0==e.lonLabelFormatter?qi.bind(this,"EW"):e.lonLabelFormatter,this.latLabelFormatter_=void 0==e.latLabelFormatter?qi.bind(this,"NS"):e.latLabelFormatter,this.lonLabelPosition_=void 0==e.lonLabelPosition?0:e.lonLabelPosition,this.latLabelPosition_=void 0==e.latLabelPosition?1:e.latLabelPosition,this.lonLabelStyle_=void 0!==e.lonLabelStyle?e.lonLabelStyle:new Rr({font:"12px Calibri,sans-serif",textBaseline:"bottom",fill:new mr({color:"rgba(0,0,0,1)"}),stroke:new Er({color:"rgba(255,255,255,1)",width:3})}),this.latLabelStyle_=void 0!==e.latLabelStyle?e.latLabelStyle:new Rr({font:"12px Calibri,sans-serif",textAlign:"end",fill:new mr({color:"rgba(0,0,0,1)"}),stroke:new Er({color:"rgba(255,255,255,1)",width:3})}),this.meridiansLabels_=[],this.parallelsLabels_=[]),this.intervals_=void 0!==e.intervals?e.intervals:Ir,this.setMap(void 0!==e.map?e.map:null)};Lr.prototype.addMeridian_=function(t,e,i,r,n,o){var s=this.getMeridian_(t,e,i,r,o);if(Pt(s.getExtent(),n)){if(this.meridiansLabels_){var a=this.getMeridianPoint_(s,n,o);this.meridiansLabels_[o]={geom:a,text:this.lonLabelFormatter_(t)}}this.meridians_[o++]=s}return o},Lr.prototype.getMeridianPoint_=function(t,e,i){var r,n=t.getFlatCoordinates(),o=Math.max(e[1],n[1]),s=Math.min(e[3],n[n.length-1]),a=kt(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,o,s),h=[n[0],a];return i in this.meridiansLabels_?(r=this.meridiansLabels_[i].geom).setCoordinates(h):r=new ci(h),r},Lr.prototype.addParallel_=function(t,e,i,r,n,o){var s=this.getParallel_(t,e,i,r,o);if(Pt(s.getExtent(),n)){if(this.parallelsLabels_){var a=this.getParallelPoint_(s,n,o);this.parallelsLabels_[o]={geom:a,text:this.latLabelFormatter_(t)}}this.parallels_[o++]=s}return o},Lr.prototype.getParallelPoint_=function(t,e,i){var r,n=t.getFlatCoordinates(),o=Math.max(e[0],n[0]),s=Math.min(e[2],n[n.length-2]),a=[kt(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,o,s),n[1]];return i in this.parallelsLabels_?(r=this.parallelsLabels_[i].geom).setCoordinates(a):r=new ci(a),r},Lr.prototype.createGraticule_=function(t,e,i,r){var n=this.getInterval_(i);if(-1==n)return this.meridians_.length=this.parallels_.length=0,this.meridiansLabels_&&(this.meridiansLabels_.length=0),void(this.parallelsLabels_&&(this.parallelsLabels_.length=0));var o,s,a,h,l=this.toLonLatTransform_(e),u=l[0],p=l[1],c=this.maxLines_,d=[Math.max(t[0],this.minLonP_),Math.max(t[1],this.minLatP_),Math.min(t[2],this.maxLonP_),Math.min(t[3],this.maxLatP_)],f=(d=be(d,this.projection_,"EPSG:4326"))[3],_=d[2],g=d[1],y=d[0];for(h=kt(u=Math.floor(u/n)*n,this.minLon_,this.maxLon_),s=this.addMeridian_(h,g,f,r,t,0),o=0;h!=this.minLon_&&o++0&&this.points_[i+2]>t;)i-=3;var r=this.points_[e+2]-this.points_[i+2];if(r<1e3/60)return!1;var n=this.points_[e]-this.points_[i],o=this.points_[e+1]-this.points_[i+1];return this.angle_=Math.atan2(o,n),this.initialVelocity_=Math.sqrt(n*n+o*o)/r,this.initialVelocity_>this.minVelocity_},Pr.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},Pr.prototype.getAngle=function(){return this.angle_};var br=Pr,Mr=function(t){function e(e,i,r){t.call(this,e),this.map=i,this.frameState=void 0!==r?r:null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P),Fr=function(t){function e(e,i,r,n,o){t.call(this,e,i,o),this.originalEvent=r,this.pixel=i.getEventPixel(r),this.coordinate=i.getCoordinateFromPixel(this.pixel),this.dragging=void 0!==n&&n}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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}(Mr),Ar={SINGLECLICK:"singleclick",CLICK:M.CLICK,DBLCLICK:M.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"},Nr=function(t){function e(e,i,r,n,o){t.call(this,e,i,r.originalEvent,n,o),this.pointerEvent=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Fr),Gr={POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"},Dr=function(t,e){this.dispatcher=t,this.mapping_=e};Dr.prototype.getEvents=function(){return Object.keys(this.mapping_)},Dr.prototype.getHandlerForEvent=function(t){return this.mapping_[t]};var kr=Dr,jr=1,Ur="mouse";function Yr(t){if(!this.isEventSimulatedFromTouch_(t)){jr.toString()in this.pointerMap&&this.cancel(t);var e=Wr(t,this.dispatcher);this.pointerMap[jr.toString()]=t,this.dispatcher.down(e,t)}}function Br(t){if(!this.isEventSimulatedFromTouch_(t)){var e=Wr(t,this.dispatcher);this.dispatcher.move(e,t)}}function Vr(t){if(!this.isEventSimulatedFromTouch_(t)){var e=this.pointerMap[jr.toString()];if(e&&e.button===t.button){var i=Wr(t,this.dispatcher);this.dispatcher.up(i,t),this.cleanupMouse()}}}function Xr(t){if(!this.isEventSimulatedFromTouch_(t)){var e=Wr(t,this.dispatcher);this.dispatcher.enterOver(e,t)}}function zr(t){if(!this.isEventSimulatedFromTouch_(t)){var e=Wr(t,this.dispatcher);this.dispatcher.leaveOut(e,t)}}function Wr(t,e){var i=e.cloneEvent(t,t),r=i.preventDefault;return i.preventDefault=function(){t.preventDefault(),r()},i.pointerId=jr,i.isPrimary=!0,i.pointerType=Ur,i}var Kr=function(t){function e(e){var i={mousedown:Yr,mousemove:Br,mouseup:Vr,mouseover:Xr,mouseout:zr};t.call(this,e,i),this.pointerMap=e.pointerMap,this.lastTouches=[]}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isEventSimulatedFromTouch_=function(t){for(var e=this.lastTouches,i=t.clientX,r=t.clientY,n=0,o=e.length,s=void 0;n=e.length){for(var n=[],o=0;o-1;r&&t.splice(i,1)}(e,r)},this.dedupTimeout_)}},e}(kr),Sn=[["bubbles",!1],["cancelable",!1],["view",null],["detail",null],["screenX",0],["screenY",0],["clientX",0],["clientY",0],["ctrlKey",!1],["altKey",!1],["shiftKey",!1],["metaKey",!1],["button",0],["relatedTarget",null],["buttons",0],["pointerId",0],["width",0],["height",0],["pressure",0],["tiltX",0],["tiltY",0],["pointerType",""],["hwTimestamp",0],["isPrimary",!1],["type",""],["target",null],["currentTarget",null],["which",0]],Tn=function(t){function e(e){t.call(this),this.element_=e,this.pointerMap={},this.eventMap_={},this.eventSourceList_=[],this.registerSources()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.registerSources=function(){if(Yi)this.registerSource("native",new dn(this));else if(Bi)this.registerSource("ms",new nn(this));else{var t=new Kr(this);this.registerSource("mouse",t),Ui&&this.registerSource("touch",new En(this,t))}this.register_()},e.prototype.registerSource=function(t,e){var i=e,r=i.getEvents();r&&(r.forEach(function(t){var e=i.getHandlerForEvent(t);e&&(this.eventMap_[t]=e.bind(i))}.bind(this)),this.eventSourceList_.push(i))},e.prototype.register_=function(){for(var t=this.eventSourceList_.length,e=0;ethis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(E(this.relayedListenerKey_),this.relayedListenerKey_=null),this.pointerdownListenerKey_&&(E(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(E),this.dragListenerKeys_.length=0,this.documentPointerEventHandler_&&(this.documentPointerEventHandler_.dispose(),this.documentPointerEventHandler_=null),this.pointerEventHandler_&&(this.pointerEventHandler_.dispose(),this.pointerEventHandler_=null),t.prototype.disposeInternal.call(this)},e}(b),Rn="postrender",wn="movestart",In="moveend",Ln={LAYERGROUP:"layergroup",SIZE:"size",TARGET:"target",VIEW:"view"},On={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4,ABORT:5},Pn=function(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}};Pn.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,p(this.queuedElements_)},Pn.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,i=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var r=this.keyFunction_(i);return delete this.queuedElements_[r],i},Pn.prototype.enqueue=function(t){Y(!(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)},Pn.prototype.getCount=function(){return this.elements_.length},Pn.prototype.getLeftChildIndex_=function(t){return 2*t+1},Pn.prototype.getRightChildIndex_=function(t){return 2*t+2},Pn.prototype.getParentIndex_=function(t){return t-1>>1},Pn.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},Pn.prototype.isEmpty=function(){return 0===this.elements_.length},Pn.prototype.isKeyQueued=function(t){return t in this.queuedElements_},Pn.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},Pn.prototype.siftUp_=function(t){for(var e=this.elements_,i=this.priorities_,r=e.length,n=e[t],o=i[t],s=t;t>1;){var a=this.getLeftChildIndex_(t),h=this.getRightChildIndex_(t),l=ht;){var s=this.getParentIndex_(e);if(!(r[s]>o))break;i[e]=i[s],r[e]=r[s],e=s}i[e]=n,r[e]=o},Pn.prototype.reprioritize=function(){var t,e,i,r=this.priorityFunction_,n=this.elements_,o=this.priorities_,s=0,a=n.length;for(e=0;e0;)n=(r=this.dequeue()[0]).getKey(),(i=r.getState())===On.ABORT?s=!0:i!==On.IDLE||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++o,r.load());0===o&&s&&this.tileChangeCallback_()},e}(bn),Fn=42,An=256;function Nn(t){return t}function Gn(t,e){return void 0!==t?0:void 0}function Dn(t,e){return void 0!==t?t+e:void 0}var kn=0,jn=1,Un="center",Yn="resolution",Bn="rotation";function Vn(t){return Math.pow(t,3)}function Xn(t){return 1-Vn(1-t)}function zn(t){return 3*t*t-2*t*t*t}function Wn(t){return t}var Kn=0;function Hn(t,e){setTimeout(function(){t(e)},0)}function Zn(t){return!(t.sourceCenter&&t.targetCenter&&!Qi(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}var qn=function(t){function e(e){t.call(this);var i=u({},e);this.hints_=[0,0],this.animations_=[],this.updateAnimationKey_,this.updateAnimations_=this.updateAnimations_.bind(this),this.projection_=Ce(i.projection,"EPSG:3857"),this.applyOptions_(i)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.applyOptions_=function(t){var e={};e[Un]=void 0!==t.center?t.center:null;var i=function(t){var e,i,r,n=void 0!==t.minZoom?t.minZoom:Kn,o=void 0!==t.maxZoom?t.maxZoom:28,s=void 0!==t.zoomFactor?t.zoomFactor:2;if(void 0!==t.resolutions){var a=t.resolutions;i=a[n],r=void 0!==a[o]?a[o]:a[a.length-1],e=function(t){return function(e,i,r){if(void 0!==e){var n=z(t,e,r);n=kt(n+i,0,t.length-1);var o=Math.floor(n);if(n!=o&&o1&&"function"==typeof arguments[r-1]&&(e=arguments[r-1],--r),!this.isDef()){var n=arguments[r-1];return n.center&&this.setCenter(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&Hn(e,!0))}for(var o=Date.now(),s=this.getCenter().slice(),a=this.getResolution(),h=this.getRotation(),l=[],u=0;u0},e.prototype.getInteracting=function(){return this.hints_[jn]>0},e.prototype.cancelAnimations=function(){this.setHint(kn,-this.hints_[kn]);for(var t=0,e=this.animations_.length;t=0;--i){for(var r=this.animations_[i],n=!0,o=0,s=r.length;o0?h/a.duration:1;l>=1?(a.complete=!0,l=1):n=!1;var u=a.easing(l);if(a.sourceCenter){var p=a.sourceCenter[0],c=a.sourceCenter[1],d=p+u*(a.targetCenter[0]-p),f=c+u*(a.targetCenter[1]-c);this.set(Un,[d,f])}if(a.sourceResolution&&a.targetResolution){var _=1===u?a.targetResolution:a.sourceResolution+u*(a.targetResolution-a.sourceResolution);a.anchor&&this.set(Un,this.calculateCenterZoom(_,a.anchor)),this.set(Yn,_)}if(void 0!==a.sourceRotation&&void 0!==a.targetRotation){var g=1===u?Xt(a.targetRotation+Math.PI,2*Math.PI)-Math.PI:a.sourceRotation+u*(a.targetRotation-a.sourceRotation);a.anchor&&this.set(Un,this.calculateCenterRotate(g,a.anchor)),this.set(Bn,g)}if(e=!0,!a.complete)break}}if(n){this.animations_[i]=null,this.setHint(kn,-1);var y=r[0].callback;y&&Hn(y,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_))}},e.prototype.calculateCenterRotate=function(t,e){var i,r=this.getCenter();return void 0!==r&&($i(i=[r[0]-e[0],r[1]-e[1]],t-this.getRotation()),Hi(i,e)),i},e.prototype.calculateCenterZoom=function(t,e){var i,r=this.getCenter(),n=this.getResolution();void 0!==r&&void 0!==n&&(i=[e[0]-t*(e[0]-r[0])/n,e[1]-t*(e[1]-r[1])/n]);return i},e.prototype.getSizeFromViewport_=function(){var t=[100,100],e='.ol-viewport[data-view="'+o(this)+'"]',i=document.querySelector(e);if(i){var r=getComputedStyle(i);t[0]=parseInt(r.width,10),t[1]=parseInt(r.height,10)}return t},e.prototype.constrainCenter=function(t){return this.constraints_.center(t)},e.prototype.constrainResolution=function(t,e,i){var r=e||0,n=i||0;return this.constraints_.resolution(t,r,n)},e.prototype.constrainRotation=function(t,e){var i=e||0;return this.constraints_.rotation(t,i)},e.prototype.getCenter=function(){return this.get(Un)},e.prototype.getConstraints=function(){return this.constraints_},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){var e=t||this.getSizeFromViewport_(),i=this.getCenter();Y(i,1);var r=this.getResolution();Y(void 0!==r,2);var n=this.getRotation();return Y(void 0!==n,3),Ct(i,r,n,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.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(Yn)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){var i=e||this.getSizeFromViewport_(),r=Ot(t)/i[0],n=Rt(t)/i[1];return Math.max(r,n)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,i=this.maxResolution_,r=this.minResolution_,n=Math.log(i/r)/Math.log(e);return function(t){return i/Math.pow(e,t*n)}},e.prototype.getRotation=function(){return this.get(Bn)},e.prototype.getValueForResolutionFunction=function(t){var e=t||2,i=this.maxResolution_,r=this.minResolution_,n=Math.log(i/r)/Math.log(e);return function(t){return Math.log(i/t)/Math.log(e)/n}},e.prototype.getState=function(t){var e=this.getCenter(),i=this.getProjection(),r=this.getResolution(),n=r/t,o=this.getRotation();return{center:[Math.round(e[0]/n)*n,Math.round(e[1]/n)*n],projection:void 0!==i?i:null,resolution:r,rotation:o,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,i,r=this.minZoom_||0;if(this.resolutions_){var n=z(this.resolutions_,t,1);r=n,e=this.resolutions_[n],i=n==this.resolutions_.length-1?2:e/this.resolutions_[n+1]}else e=this.maxResolution_,i=this.zoomFactor_;return r+Math.log(e/t)/Math.log(i)},e.prototype.getResolutionForZoom=function(t){return this.constrainResolution(this.maxResolution_,t-this.minZoom_,0)},e.prototype.fit=function(t,e){var i,r=e||{},n=r.size;n||(n=this.getSizeFromViewport_()),Y(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t)?(Y(!bt(t),25),i=Oi(t)):t.getType()===Nt.CIRCLE?(i=Oi(t=t.getExtent())).rotate(this.getRotation(),Tt(t)):i=t;var o,s=void 0!==r.padding?r.padding:[0,0,0,0],a=void 0===r.constrainResolution||r.constrainResolution,h=void 0!==r.nearest&&r.nearest;o=void 0!==r.minResolution?r.minResolution:void 0!==r.maxZoom?this.constrainResolution(this.maxResolution_,r.maxZoom-this.minZoom_,0):0;for(var l=i.getFlatCoordinates(),u=this.getRotation(),p=Math.cos(-u),c=Math.sin(-u),d=1/0,f=1/0,_=-1/0,g=-1/0,y=i.getStride(),v=0,m=l.length;v=0;i--){var r=e[i];if(r.getActive())if(!r.handleEvent(t))break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var i=this.maxTilesLoading_,r=i;if(t){var n=t.viewHints;n[kn]&&(i=this.loadTilesWhileAnimating_?8:0,r=2),n[jn]&&(i=this.loadTilesWhileInteracting_?8:0,r=2)}e.getTilesLoading()0&&t[1]>0}(i)&&r&&r.isDef()){for(var h=r.getHints(this.frameState_?this.frameState_.viewHints:void 0),l=this.getLayerGroup().getLayerStatesArray(),u={},p=0,c=l.length;p=t.minResolution&&e0;if(this.renderedVisible_!=i&&(this.element.style.display=i?"":"none",this.renderedVisible_=i),!Z(e,this.renderedAttributions_)){to(this.ulElement_);for(var r=0,n=e.length;r0?t.animate({rotation:0,duration:this.duration_,easing:Xn}):t.setRotation(0))},e}(uo),Ro=function(t){function e(e){var i=e||{};t.call(this,{element:document.createElement("div"),target:i.target});var r=void 0!==i.className?i.className:"ol-zoom",n=void 0!==i.delta?i.delta:1,o=void 0!==i.zoomInLabel?i.zoomInLabel:"+",s=void 0!==i.zoomOutLabel?i.zoomOutLabel:"−",a=void 0!==i.zoomInTipLabel?i.zoomInTipLabel:"Zoom in",h=void 0!==i.zoomOutTipLabel?i.zoomOutTipLabel:"Zoom out",l=document.createElement("button");l.className=r+"-in",l.setAttribute("type","button"),l.title=a,l.appendChild("string"==typeof o?document.createTextNode(o):o),v(l,M.CLICK,this.handleClick_.bind(this,n));var u=document.createElement("button");u.className=r+"-out",u.setAttribute("type","button"),u.title=h,u.appendChild("string"==typeof s?document.createTextNode(s):s),v(u,M.CLICK,this.handleClick_.bind(this,-n));var p=r+" "+fo+" "+go,c=this.element;c.className=p,c.appendChild(l),c.appendChild(u),this.duration_=void 0!==i.duration?i.duration:250}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var i=e.getResolution();if(i){var r=e.constrainResolution(i,t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({resolution:r,duration:this.duration_,easing:Xn})):e.setResolution(r)}}},e}(uo);function wo(t){var e=t||{},i=new U;return(void 0===e.zoom||e.zoom)&&i.push(new Ro(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&i.push(new Co(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&i.push(new So(e.attributionOptions)),i}var Io={ACTIVE:"active"};function Lo(t,e,i,r){Oo(t,e=t.constrainRotation(e,0),i,r)}function Oo(t,e,i,r){if(void 0!==e){var n=t.getRotation(),o=t.getCenter();void 0!==n&&o&&r>0?t.animate({rotation:e,anchor:i,duration:r,easing:Xn}):t.rotate(e,i)}}function Po(t,e,i,r,n){Mo(t,e=t.constrainResolution(e,0,n),i,r)}function bo(t,e,i,r){var n=t.getResolution(),o=t.constrainResolution(n,e,0);if(void 0!==o){var s=t.getResolutions();o=kt(o,t.getMinResolution()||s[s.length-1],t.getMaxResolution()||s[0])}if(i&&void 0!==o&&o!==n){var a=t.getCenter(),h=t.calculateCenterZoom(o,i);h=t.constrainCenter(h),i=[(o*a[0]-n*h[0])/(o-n),(o*a[1]-n*h[1])/(o-n)]}Mo(t,o,i,r)}function Mo(t,e,i,r){if(e){var n=t.getResolution(),o=t.getCenter();if(void 0!==n&&o&&e!==n&&r)t.animate({resolution:e,anchor:i,duration:r,easing:Xn});else{if(i){var s=t.calculateCenterZoom(e,i);t.setCenter(s)}t.setResolution(e)}}}var Fo=function(t){function e(e){t.call(this),e.handleEvent&&(this.handleEvent=e.handleEvent),this.map_=null,this.setActive(!0)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getActive=function(){return this.get(Io.ACTIVE)},e.prototype.getMap=function(){return this.map_},e.prototype.handleEvent=function(t){return!0},e.prototype.setActive=function(t){this.set(Io.ACTIVE,t)},e.prototype.setMap=function(t){this.map_=t},e}(D);function Ao(t){var e=!1;if(t.type==Ar.DBLCLICK){var i=t.originalEvent,r=t.map,n=t.coordinate,o=i.shiftKey?-this.delta_:this.delta_;bo(r.getView(),o,n,this.duration_),t.preventDefault(),e=!0}return!e}var No=function(t){function e(e){t.call(this,{handleEvent:Ao});var i=e||{};this.delta_=i.delta?i.delta:1,this.duration_=void 0!==i.duration?i.duration:250}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Fo),Go=function(t){var e=t.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey},Do=function(t){var e=t.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},ko=function(t){return t.target.getTargetElement()===document.activeElement},jo=R,Uo=function(t){var e=t.originalEvent;return 0==e.button&&!(Ni&&Gi&&e.ctrlKey)},Yo=w,Bo=function(t){return"pointermove"==t.type},Vo=function(t){return t.type==Ar.SINGLECLICK},Xo=function(t){var e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey},zo=function(t){var e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},Wo=function(t){var e=t.originalEvent.target.tagName;return"INPUT"!==e&&"SELECT"!==e&&"TEXTAREA"!==e},Ko=function(t){var e=t.pointerEvent;return Y(void 0!==e,56),"mouse"==e.pointerType},Ho=function(t){var e=t.pointerEvent;return Y(void 0!==e,56),e.isPrimary&&0===e.button};function Zo(t){for(var e=t.length,i=0,r=0,n=0;n0}}else if(t.type==Ar.POINTERDOWN){var r=this.handleDownEvent(t);r&&t.preventDefault(),this.handlingDownUpSequence=r,e=this.stopDown(r)}else t.type==Ar.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===Ar.POINTERDOWN||e===Ar.POINTERDRAG||e===Ar.POINTERUP}(t)){var e=t.pointerEvent,i=e.pointerId.toString();t.type==Ar.POINTERUP?delete this.trackedPointers_[i]:t.type==Ar.POINTERDOWN?this.trackedPointers_[i]=e:i in this.trackedPointers_&&(this.trackedPointers_[i]=e),this.targetPointers=c(this.trackedPointers_)}},e}(Fo),Jo=function(t){function e(e){t.call(this,{stopDown:w});var i=e||{};this.kinetic_=i.kinetic,this.lastCentroid=null,this.lastPointersCount_,this.panning_=!1,this.condition_=i.condition?i.condition:Xo,this.noKinetic_=!1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.handleDragEvent=function(t){this.panning_||(this.panning_=!0,this.getMap().getView().setHint(jn,1));var e=this.targetPointers,i=Zo(e);if(e.length==this.lastPointersCount_){if(this.kinetic_&&this.kinetic_.update(i[0],i[1]),this.lastCentroid){var r=this.lastCentroid[0]-i[0],n=i[1]-this.lastCentroid[1],o=t.map.getView(),s=[r,n];tr(s,o.getResolution()),$i(s,o.getRotation()),Hi(s,o.getCenter()),s=o.constrainCenter(s),o.setCenter(s)}}else this.kinetic_&&this.kinetic_.begin();this.lastCentroid=i,this.lastPointersCount_=e.length},e.prototype.handleUpEvent=function(t){var e=t.map,i=e.getView();if(0===this.targetPointers.length){if(!this.noKinetic_&&this.kinetic_&&this.kinetic_.end()){var r=this.kinetic_.getDistance(),n=this.kinetic_.getAngle(),o=i.getCenter(),s=e.getPixelFromCoordinate(o),a=e.getCoordinateFromPixel([s[0]-r*Math.cos(n),s[1]-r*Math.sin(n)]);i.animate({center:i.constrainCenter(a),duration:500,easing:Xn})}return this.panning_&&(this.panning_=!1,i.setHint(jn,-1)),!1}return this.kinetic_&&this.kinetic_.begin(),this.lastCentroid=null,!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.setCenter(t.frameState.viewState.center),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}(qo),Qo=function(t){function e(e){var i=e||{};t.call(this,{stopDown:w}),this.condition_=i.condition?i.condition:Do,this.lastAngle_=void 0,this.duration_=void 0!==i.duration?i.duration:250}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.handleDragEvent=function(t){if(Ko(t)){var e=t.map,i=e.getView();if(i.getConstraints().rotation!==Gn){var r=e.getSize(),n=t.pixel,o=Math.atan2(r[1]/2-n[1],n[0]-r[0]/2);if(void 0!==this.lastAngle_){var s=o-this.lastAngle_;Oo(i,i.getRotation()-s)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){if(!Ko(t))return!0;var e=t.map.getView();return e.setHint(jn,-1),Lo(e,e.getRotation(),void 0,this.duration_),!1},e.prototype.handleDownEvent=function(t){return!!Ko(t)&&(!(!Uo(t)||!this.condition_(t))&&(t.map.getView().setHint(jn,1),this.lastAngle_=void 0,!0))},e}(qo),$o=function(t){function e(e){t.call(this),this.geometry_=null,this.element_=document.createElement("div"),this.element_.style.position="absolute",this.element_.className="ol-box "+e,this.map_=null,this.startPixel_=null,this.endPixel_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,i=this.element_.style;i.left=Math.min(t[0],e[0])+"px",i.top=Math.min(t[1],e[1])+"px",i.width=Math.abs(e[0]-t[0])+"px",i.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=e.top=e.width=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_,i=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixel,this.map_);i[4]=i[0].slice(),this.geometry_?this.geometry_.setCoordinates([i]):this.geometry_=new Ii([i])},e.prototype.getGeometry=function(){return this.geometry_},e}(C),ts="boxstart",es="boxdrag",is="boxend",rs=function(t){function e(e,i,r){t.call(this,e),this.coordinate=i,this.mapBrowserEvent=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P),ns=function(t){function e(e){t.call(this);var i=e||{};this.box_=new $o(i.className||"ol-dragbox"),this.minArea_=void 0!==i.minArea?i.minArea:64,this.onBoxEnd_=i.onBoxEnd?i.onBoxEnd:I,this.startPixel_=null,this.condition_=i.condition?i.condition:jo,this.boxEndCondition_=i.boxEndCondition?i.boxEndCondition:this.defaultBoxEndCondition}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.defaultBoxEndCondition=function(t,e,i){var r=i[0]-e[0],n=i[1]-e[1];return r*r+n*n>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){Ko(t)&&(this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new rs(es,t.coordinate,t)))},e.prototype.handleUpEvent=function(t){return!Ko(t)||(this.box_.setMap(null),this.boxEndCondition_(t,this.startPixel_,t.pixel)&&(this.onBoxEnd_(t),this.dispatchEvent(new rs(is,t.coordinate,t))),!1)},e.prototype.handleDownEvent=function(t){return!!Ko(t)&&(!(!Uo(t)||!this.condition_(t))&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new rs(ts,t.coordinate,t)),!0))},e}(qo);function os(){var t=this.getMap(),e=t.getView(),i=t.getSize(),r=this.getGeometry().getExtent();if(this.out_){var n=e.calculateExtent(i),o=function(t,e){return gt(ut(e),t)}([t.getPixelFromCoordinate(Et(r)),t.getPixelFromCoordinate(Lt(r))]);Mt(n,1/e.getResolutionForExtent(o,i)),r=n}var s=e.constrainResolution(e.getResolutionForExtent(r,i)),a=Tt(r);a=e.constrainCenter(a),e.animate({resolution:s,center:a,duration:this.duration_,easing:Xn})}var ss=function(t){function e(e){var i=e||{},r=i.condition?i.condition:zo;t.call(this,{condition:r,className:i.className||"ol-dragzoom",onBoxEnd:os}),this.duration_=void 0!==i.duration?i.duration:200,this.out_=void 0!==i.out&&i.out}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(ns),as={LEFT:37,UP:38,RIGHT:39,DOWN:40};function hs(t){var e=!1;if(t.type==M.KEYDOWN){var i=t.originalEvent.keyCode;if(this.condition_(t)&&(i==as.DOWN||i==as.LEFT||i==as.RIGHT||i==as.UP)){var r=t.map.getView(),n=r.getResolution()*this.pixelDelta_,o=0,s=0;i==as.DOWN?s=-n:i==as.LEFT?o=-n:i==as.RIGHT?o=n:s=n;var a=[o,s];$i(a,r.getRotation()),function(t,e,i){var r=t.getCenter();if(r){var n=t.constrainCenter([r[0]+e[0],r[1]+e[1]]);i?t.animate({duration:i,easing:Wn,center:n}):t.setCenter(n)}}(r,a,this.duration_),t.preventDefault(),e=!0}}return!e}var ls=function(t){function e(e){t.call(this,{handleEvent:hs});var i=e||{};this.defaultCondition_=function(t){return Xo(t)&&Wo(t)},this.condition_=void 0!==i.condition?i.condition:this.defaultCondition_,this.duration_=void 0!==i.duration?i.duration:100,this.pixelDelta_=void 0!==i.pixelDelta?i.pixelDelta:128}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Fo);function us(t){var e=!1;if(t.type==M.KEYDOWN||t.type==M.KEYPRESS){var i=t.originalEvent.charCode;if(this.condition_(t)&&(i=="+".charCodeAt(0)||i=="-".charCodeAt(0))){var r=t.map,n=i=="+".charCodeAt(0)?this.delta_:-this.delta_;bo(r.getView(),n,void 0,this.duration_),t.preventDefault(),e=!0}}return!e}var ps=function(t){function e(e){t.call(this,{handleEvent:us});var i=e||{};this.condition_=i.condition?i.condition:Wo,this.delta_=i.delta?i.delta:1,this.duration_=void 0!==i.duration?i.duration:100}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Fo),cs="trackpad",ds="wheel",fs=function(t){function e(e){var i=e||{};t.call(this,i),this.delta_=0,this.duration_=void 0!==i.duration?i.duration:250,this.timeout_=void 0!==i.timeout?i.timeout:80,this.useAnchor_=void 0===i.useAnchor||i.useAnchor,this.constrainResolution_=i.constrainResolution||!1,this.condition_=i.condition?i.condition:jo,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_,this.mode_=void 0,this.trackpadEventGap_=400,this.trackpadTimeoutId_,this.trackpadDeltaPerZoom_=300,this.trackpadZoomBuffer_=1.5}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.decrementInteractingHint_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().setHint(jn,-1)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;var e=t.type;if(e!==M.WHEEL&&e!==M.MOUSEWHEEL)return!0;t.preventDefault();var i,r=t.map,n=t.originalEvent;if(this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==M.WHEEL?(i=n.deltaY,Fi&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(i/=Di),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(i*=40)):t.type==M.MOUSEWHEEL&&(i=-n.wheelDeltaY,Ai&&(i/=3)),0===i)return!1;var o=Date.now();if(void 0===this.startTime_&&(this.startTime_=o),(!this.mode_||o-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(i)<4?cs:ds),this.mode_===cs){var s=r.getView();this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):s.setHint(jn,1),this.trackpadTimeoutId_=setTimeout(this.decrementInteractingHint_.bind(this),this.trackpadEventGap_);var a=s.getResolution()*Math.pow(2,i/this.trackpadDeltaPerZoom_),h=s.getMinResolution(),l=s.getMaxResolution(),u=0;if(al&&(a=Math.min(a,l*this.trackpadZoomBuffer_),u=-1),this.lastAnchor_){var p=s.calculateCenterZoom(a,this.lastAnchor_);s.setCenter(s.constrainCenter(p))}return s.setResolution(a),0===u&&this.constrainResolution_&&s.animate({resolution:s.constrainResolution(a,i>0?-1:1),easing:Xn,anchor:this.lastAnchor_,duration:this.duration_}),u>0?s.animate({resolution:h,easing:Xn,anchor:this.lastAnchor_,duration:500}):u<0&&s.animate({resolution:l,easing:Xn,anchor:this.lastAnchor_,duration:500}),this.startTime_=o,!1}this.delta_+=i;var c=Math.max(this.timeout_-(o-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,r),c),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();bo(e,-kt(this.delta_,-1,1),this.lastAnchor_,this.duration_),this.mode_=void 0,this.delta_=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}(Fo),_s=function(t){function e(e){var i=e||{},r=i;r.stopDown||(r.stopDown=w),t.call(this,r),this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.threshold_=void 0!==i.threshold?i.threshold:.3,this.duration_=void 0!==i.duration?i.duration:250}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.handleDragEvent=function(t){var e=0,i=this.targetPointers[0],r=this.targetPointers[1],n=Math.atan2(r.clientY-i.clientY,r.clientX-i.clientX);if(void 0!==this.lastAngle_){var o=n-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=n;var s=t.map,a=s.getView();if(a.getConstraints().rotation!==Gn){var h=s.getViewport().getBoundingClientRect(),l=Zo(this.targetPointers);if(l[0]-=h.left,l[1]-=h.top,this.anchor_=s.getCoordinateFromPixel(l),this.rotating_){var u=a.getRotation();s.render(),Oo(a,u+e,this.anchor_)}}},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView();if(e.setHint(jn,-1),this.rotating_)Lo(e,e.getRotation(),this.anchor_,this.duration_);return!1}return!0},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().setHint(jn,1),!0}return!1},e}(qo),gs=function(t){function e(e){var i=e||{},r=i;r.stopDown||(r.stopDown=w),t.call(this,r),this.constrainResolution_=i.constrainResolution||!1,this.anchor_=null,this.duration_=void 0!==i.duration?i.duration:400,this.lastDistance_=void 0,this.lastScaleDelta_=1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.handleDragEvent=function(t){var e=1,i=this.targetPointers[0],r=this.targetPointers[1],n=i.clientX-r.clientX,o=i.clientY-r.clientY,s=Math.sqrt(n*n+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/s),this.lastDistance_=s;var a=t.map,h=a.getView(),l=h.getResolution(),u=h.getMaxResolution(),p=h.getMinResolution(),c=l*e;c>u?(e=u/l,c=u):ce.getMaxResolution()){var r=this.lastScaleDelta_-1;Po(e,i,this.anchor_,this.duration_,r)}return!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().setHint(jn,1),!0}return!1},e}(qo);function ys(t){var e=t||{},i=new U,r=new br(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&i.push(new Qo),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&i.push(new No({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&i.push(new Jo({condition:e.onFocusOnly?ko:void 0,kinetic:r})),(void 0===e.pinchRotate||e.pinchRotate)&&i.push(new _s),(void 0===e.pinchZoom||e.pinchZoom)&&i.push(new gs({constrainResolution:e.constrainResolution,duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(i.push(new ls),i.push(new ps({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&i.push(new fs({condition:e.onFocusOnly?ko:void 0,constrainResolution:e.constrainResolution,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&i.push(new ss({duration:e.zoomDuration})),i}var vs=.5,ms=function(t){function e(e,i,r,n){t.call(this),this.extent=e,this.pixelRatio_=r,this.resolution=i,this.state=n}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.changed=function(){this.dispatchEvent(M.CHANGE)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return r()},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(){r()},e}(b),xs={IDLE:0,LOADING:1,LOADED:2,ERROR:3},Es=function(t){function e(e,i,r,n,o){var s=void 0!==o?xs.IDLE:xs.LOADED;t.call(this,e,i,r,s),this.loader_=void 0!==o?o:null,this.canvas_=n,this.error_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getError=function(){return this.error_},e.prototype.handleLoad_=function(t){t?(this.error_=t,this.state=xs.ERROR):this.state=xs.LOADED,this.changed()},e.prototype.load=function(){this.state==xs.IDLE&&(this.state=xs.LOADING,this.changed(),this.loader_(this.handleLoad_.bind(this)))},e.prototype.getImage=function(){return this.canvas_},e}(ms),Ss={IMAGE:"IMAGE",TILE:"TILE",VECTOR_TILE:"VECTOR_TILE",VECTOR:"VECTOR"},Ts={IMAGE:"image",VECTOR:"vector"},Cs=function(t){function e(e,i,r,n,o){t.call(this,e),this.vectorContext=i,this.frameState=r,this.context=n,this.glContext=o}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P),Rs=function(t){function e(e){t.call(this),this.highWaterMark=void 0!==e?e:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.canExpireCache=function(){return this.getCount()>this.highWaterMark},e.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null,this.dispatchEvent(M.CLEAR)},e.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},e.prototype.forEach=function(t,e){for(var i=this.oldest_;i;)t.call(e,i.value_,i.key_,this),i=i.newer},e.prototype.get=function(t){var e=this.entries_[t];return Y(void 0!==e,15),e===this.newest_?e.value_:(e===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(e.newer.older=e.older,e.older.newer=e.newer),e.newer=null,e.older=this.newest_,this.newest_.newer=e,this.newest_=e,e.value_)},e.prototype.remove=function(t){var e=this.entries_[t];return Y(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_},e.prototype.getCount=function(){return this.count_},e.prototype.getKeys=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.key_;return e},e.prototype.getValues=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.value_;return e},e.prototype.peekLast=function(){return this.oldest_.value_},e.prototype.peekLastKey=function(){return this.oldest_.key_},e.prototype.peekFirstKey=function(){return this.newest_.key_},e.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_},e.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},e.prototype.set=function(t,e){Y(!(t in this.entries_),16);var i={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=i:this.oldest_=i,this.newest_=i,this.entries_[t]=i,++this.count_},e.prototype.setSize=function(t){this.highWaterMark=t},e.prototype.prune=function(){for(;this.canExpireCache();)this.pop()},e}(b),ws=[0,0,0,1],Is=[],Ls=[0,0,0,1],Os=[0,0,0,0],Ps=new Rs,bs={},Ms=null,Fs={},As=function(){var t,e,i=60,r=bs,n="32px ",o=["monospace","serif"],s=o.length,a="wmytzilWMYTZIL@#/&?$%10";function h(t){for(var i=Ns(),r=100;r<=700;r+=300){for(var h=r+" ",l=!0,u=0;uthis.maxCacheSize_){var t=0;for(var e in this.cache_){var i=this.cache_[e];0!=(3&t++)||i.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},zs.prototype.get=function(t,e,i){var r=Ws(t,e,i);return r in this.cache_?this.cache_[r]:null},zs.prototype.set=function(t,e,i,r){var n=Ws(t,e,i);this.cache_[n]=r,++this.cacheSize_},zs.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()};var Ks=new zs;function Hs(t,e){Ks.expire()}function Zs(t,e){return t.zIndex-e.zIndex}var qs=function(t){function e(e){t.call(this),this.map_=e,this.layerRenderers_={},this.layerRendererListeners_={},this.layerRendererConstructors_=[]}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.dispatchRenderEvent=function(t,e){r()},e.prototype.registerLayerRenderers=function(t){this.layerRendererConstructors_.push.apply(this.layerRendererConstructors_,t)},e.prototype.calculateMatrices2D=function(t){var e=t.viewState,i=t.coordinateToPixelTransform,r=t.pixelToCoordinateTransform;Ye(i,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),Be(Ge(r,i))},e.prototype.removeLayerRenderers=function(){for(var t in this.layerRenderers_)this.removeLayerRendererByKey_(t).dispose()},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,r,n,s,a){var h,l=e.viewState,u=l.resolution;function p(t,i){var s=e.layerStates[o(i)].managed;if(!(o(t)in e.skippedFeatureUids)||s)return r.call(n,t,s?i:null)}var c=l.projection,d=t;if(c.canWrapX()){var f=c.getExtent(),_=Ot(f),g=t[0];if(gf[2])d=[g+_*Math.ceil((f[0]-g)/_),t[1]]}var y,v=e.layerStatesArray;for(y=v.length-1;y>=0;--y){var m=v[y],x=m.layer;if(mo(m,u)&&s.call(a,x)){var E=this.getLayerRenderer(x),S=x.getSource();if(S&&(h=E.forEachFeatureAtCoordinate(S.getWrapX()?d:t,e,i,p)),h)return h}}},e.prototype.forEachLayerAtPixel=function(t,e,i,n,o,s,a){return r()},e.prototype.hasFeatureAtCoordinate=function(t,e,i,r,n){return void 0!==this.forEachFeatureAtCoordinate(t,e,i,R,this,r,n)},e.prototype.getLayerRenderer=function(t){var e=o(t);if(e in this.layerRenderers_)return this.layerRenderers_[e];for(var i,r=0,n=this.layerRendererConstructors_.length;r=0;--h){var d=u[h],f=d.layer;if(mo(d,l)&&o.call(s,f))if(a=this.getLayerRenderer(f).forEachLayerAtCoordinate(c,e,i,r,n))return a}},e.prototype.registerLayerRenderers=function(e){t.prototype.registerLayerRenderers.call(this,e);for(var i=0,r=e.length;i=.5&&p>=.5&&i.drawImage(r,0,0,+r.width,+r.height,Math.round(h),Math.round(l),Math.round(u),Math.round(p)),i.globalAlpha=a,o&&i.restore()}this.postCompose(i,t,e)},e.prototype.getImage=function(){return r()},e.prototype.getImageTransform=function(){return r()},e.prototype.forEachLayerAtCoordinate=function(t,e,i,r,n){if(this.getImage()){var o=De(this.coordinateToCanvasPixelTransform,t.slice());tr(o,e.viewState.resolution/this.renderedResolution),this.hitCanvasContext_||(this.hitCanvasContext_=Jn(1,1)),this.hitCanvasContext_.clearRect(0,0,1,1),this.hitCanvasContext_.drawImage(this.getImage(),o[0],o[1],1,1,0,0,1,1);var s=this.hitCanvasContext_.getImageData(0,0,1,1).data;return s[3]>0?r.call(n,this.getLayer(),s):void 0}},e}(ta),ia=function(t){function e(i){if(t.call(this,i),this.image_=null,this.imageTransform_=[1,0,0,1,0,0],this.skippedFeatures_=[],this.vectorRenderer_=null,i.getType()===Ss.VECTOR)for(var r=0,n=Js.length;rthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},na.prototype.getHeight=function(){return this.maxY-this.minY+1},na.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},na.prototype.getWidth=function(){return this.maxX-this.minX+1},na.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY};var sa=na,aa=function(t){function e(e,i){t.call(this,e),this.context=i?null:Jn(),this.oversampling_,this.renderedExtent_=null,this.renderedRevision,this.renderedTiles=[],this.newTiles_=!1,this.tmpExtent=[1/0,1/0,-1/0,-1/0],this.tmpTileRange_=new sa(0,0,0,0),this.imageTransform_=[1,0,0,1,0,0],this.zDirection=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isDrawableTile_=function(t){var e=this.getLayer(),i=t.getState(),r=e.getUseInterimTilesOnError();return i==On.LOADED||i==On.EMPTY||i==On.ERROR&&!r},e.prototype.getTile=function(t,e,i,r,n){var o=this.getLayer(),s=o.getSource().getTile(t,e,i,r,n);return s.getState()==On.ERROR&&(o.getUseInterimTilesOnError()?o.getPreload()>0&&(this.newTiles_=!0):s.setState(On.LOADED)),this.isDrawableTile_(s)||(s=s.getInterimTile()),s},e.prototype.prepareFrame=function(t,e){var i=t.pixelRatio,r=t.size,n=t.viewState,s=n.projection,a=n.resolution,h=n.center,l=this.getLayer(),u=l.getSource(),p=u.getRevision(),c=u.getTileGridForProjection(s),d=c.getZForResolution(a,this.zDirection),f=c.getResolution(d),_=Math.round(a/f)||1,g=t.extent;if(void 0!==e.extent&&(g=wt(g,e.extent)),bt(g))return!1;var y=c.getTileRangeForExtentAndZ(g,d),v=c.getTileRangeExtent(d,y),m=u.getTilePixelRatio(i),x={};x[d]={};var E,S,T,C=this.createLoadedTileFinder(u,s,x),R=t.viewHints,w=R[kn]||R[jn],I=this.tmpExtent,L=this.tmpTileRange_;for(this.newTiles_=!1,S=y.minX;S<=y.maxX;++S)for(T=y.minY;T<=y.maxY;++T)if(!(Date.now()-t.time>16&&w)){if(E=this.getTile(d,S,T,i,s),this.isDrawableTile_(E)){var O=o(this);if(E.getState()==On.LOADED){x[d][E.tileCoord.toString()]=E;var P=E.inTransition(O);this.newTiles_||!P&&-1!==this.renderedTiles.indexOf(E)||(this.newTiles_=!0)}if(1===E.getAlpha(O,t.time))continue}var b=c.getTileCoordChildTileRange(E.tileCoord,L,I),M=!1;b&&(M=C(d+1,b)),M||c.forEachTileCoordParentTileRange(E.tileCoord,C,null,L,I)}var F=f*i/m*_;if(!(this.renderedResolution&&Date.now()-t.time>16&&w)&&(this.newTiles_||!this.renderedExtent_||!ot(this.renderedExtent_,g)||this.renderedRevision!=p||_!=this.oversampling_||!w&&F!=this.renderedResolution)){var A=this.context;if(A){var N=u.getTilePixelSize(d,i,s),G=Math.round(y.getWidth()*N[0]/_),D=Math.round(y.getHeight()*N[1]/_),k=A.canvas;k.width!=G||k.height!=D?(this.oversampling_=_,k.width=G,k.height=D):(this.renderedExtent_&&!dt(v,this.renderedExtent_)&&A.clearRect(0,0,G,D),_=this.oversampling_)}this.renderedTiles.length=0;var j,U,Y,B,V,X,z,W,K,H,Z=Object.keys(x).map(Number);for(Z.sort(function(t,e){return t===d?1:e===d?-1:t>e?1:t0},e.prototype.drawTileImage=function(t,e,i,r,n,s,a,h,l){var u=this.getTileImage(t);if(u){var p=o(this),c=l?t.getAlpha(p,e.time):1,d=this.getLayer().getSource();1!==c||d.getOpaque(e.viewState.projection)||this.context.clearRect(r,n,s,a);var f=c!==this.context.globalAlpha;f&&(this.context.save(),this.context.globalAlpha=c),this.context.drawImage(u,h,h,u.width-2*h,u.height-2*h,r,n,s,a),f&&this.context.restore(),1!==c?e.animate=!0:l&&t.endTransition(p)}},e.prototype.getImage=function(){var t=this.context;return t?t.canvas:null},e.prototype.getImageTransform=function(){return this.imageTransform_},e.prototype.getTileImage=function(t){return t.getImage()},e}(ea);aa.handles=function(t){return t.getType()===Ss.TILE},aa.create=function(t,e){return new aa(e)},aa.prototype.getLayer;var ha=aa,la=i(0),ua=i.n(la),pa=function(){};pa.prototype.getReplay=function(t,e){return r()},pa.prototype.isEmpty=function(){return r()},pa.prototype.addDeclutter=function(t){return r()};var ca=pa,da={CIRCLE:"Circle",DEFAULT:"Default",IMAGE:"Image",LINE_STRING:"LineString",POLYGON:"Polygon",TEXT:"Text"};function fa(t,e,i,r,n,o,s,a){for(var h,l,u,p=[],c=t[e]>t[i-r],d=n.length,f=t[e],_=t[e+1],g=t[e+=r],y=t[e+1],v=0,m=Math.sqrt(Math.pow(g-f,2)+Math.pow(y-_,2)),x="",E=0,S=0;S0?-Math.PI:Math.PI),void 0!==u){var L=I-u;if(L+=L>Math.PI?-2*Math.PI:L<-Math.PI?2*Math.PI:0,Math.abs(L)>a)return null}var O=w/m,P=zt(f,g,O),b=zt(_,y,O);u==I?(c&&(h[0]=P,h[1]=b,h[2]=C/2),h[4]=x):(E=C,h=[P,b,C/2,I,x=T],c?p.unshift(h):p.push(h),u=I),s+=C}return p}var _a={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},ga=[_a.FILL],ya=[_a.STROKE],va=[_a.BEGIN_PATH],ma=[_a.CLOSE_PATH],xa=_a,Ea=[da.POLYGON,da.CIRCLE,da.LINE_STRING,da.IMAGE,da.TEXT,da.DEFAULT],Sa={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Ta=[1/0,1/0,-1/0,-1/0],Ca=[1,0,0,1,0,0],Ra=function(t){function e(e,i,r,n,o,s){t.call(this),this.declutterTree=s,this.tolerance=e,this.maxExtent=i,this.overlaps=o,this.pixelRatio=n,this.maxLineWidth=0,this.resolution=r,this.alignFill_,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_=null,this.bufferedMaxExtent_=null,this.instructions=[],this.coordinates=[],this.coordinateCache_={},this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=[],this.pixelCoordinates_=null,this.state={},this.viewRotation_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.replayTextBackground_=function(t,e,i,r,n,o,s){t.beginPath(),t.moveTo.apply(t,e),t.lineTo.apply(t,i),t.lineTo.apply(t,r),t.lineTo.apply(t,n),t.lineTo.apply(t,e),o&&(this.alignFill_=o[2],this.fill_(t)),s&&(this.setStrokeStyle_(t,s),t.stroke())},e.prototype.replayImage_=function(t,e,i,r,n,o,s,a,h,l,u,p,c,d,f,_,g,y){var v=g||y;e-=n*=c,i-=o*=c;var m,x,E,S,T=f+l>r.width?r.width-l:f,C=a+u>r.height?r.height-u:a,R=_[3]+T*c+_[1],w=_[0]+C*c+_[2],I=e-_[3],L=i-_[0];(v||0!==p)&&(m=[I,L],x=[I+R,L],E=[I+R,L+w],S=[I,L+w]);var O=null;if(0!==p){var P=e+n,b=i+o;O=Ye(Ca,P,b,1,1,p,-P,-b),ut(Ta),_t(Ta,De(Ca,m)),_t(Ta,De(Ca,x)),_t(Ta,De(Ca,E)),_t(Ta,De(Ca,S))}else lt(I,L,I+R,L+w,Ta);var M=t.canvas,F=y?y[2]*c/2:0,A=Ta[0]-F<=M.width&&Ta[2]+F>=0&&Ta[1]-F<=M.height&&Ta[3]+F>=0;if(d&&(e=Math.round(e),i=Math.round(i)),s){if(!A&&1==s[4])return;ft(s,Ta);var N=A?[t,O?O.slice(0):null,h,r,l,u,T,C,e,i,c]:null;N&&v&&N.push(g,y,m,x,E,S),s.push(N)}else A&&(v&&this.replayTextBackground_(t,m,x,E,S,g,y),Us(t,O,h,r,l,u,T,C,e,i,c))},e.prototype.applyPixelRatio=function(t){var e=this.pixelRatio;return 1==e?t:t.map(function(t){return t*e})},e.prototype.appendFlatCoordinates=function(t,e,i,r,n,o){var s=this.coordinates.length,a=this.getBufferedMaxExtent();o&&(e+=r);var h,l,u,p=[t[e],t[e+1]],c=[NaN,NaN],d=!0;for(h=e+r;h5){var i=t[4];if(1==i||i==t.length-5){var r={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};if(!this.declutterTree.collides(r)){this.declutterTree.insert(r);for(var n=5,o=t.length;n11&&this.replayTextBackground_(s[0],s[13],s[14],s[15],s[16],s[11],s[12]),Us.apply(void 0,s))}}t.length=5,ut(t)}}},e.prototype.replay_=function(t,e,i,r,n,s,a){var h;this.pixelCoordinates_&&Z(e,this.renderedTransform_)?h=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),h=Gt(this.coordinates,0,this.coordinates.length,2,e,this.pixelCoordinates_),Ge(this.renderedTransform_,e));for(var l,u,p,c,f,_,g,y,v,m,x,E,S=!d(i),T=0,C=r.length,R=0,w=0,I=0,L=null,O=null,P=this.coordinateCache_,b=this.viewRotation_,M={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:b},F=this.instructions!=r||this.overlaps?0:200;TF&&(this.fill_(t),w=0),I>F&&(t.stroke(),I=0),w||I||(t.beginPath(),c=f=NaN),++T;break;case xa.CIRCLE:var N=h[R=A[1]],G=h[R+1],D=h[R+2]-N,k=h[R+3]-G,j=Math.sqrt(D*D+k*k);t.moveTo(N+j,G),t.arc(N,G,j,0,2*Math.PI,!0),++T;break;case xa.CLOSE_PATH:t.closePath(),++T;break;case xa.CUSTOM:R=A[1],l=A[2];var U=A[3],Y=A[4],B=6==A.length?A[5]:void 0;M.geometry=U,M.feature=m,T in P||(P[T]=[]);var V=P[T];B?B(h,R,l,2,V):(V[0]=h[R],V[1]=h[R+1],V.length=2),Y(V,M),++T;break;case xa.DRAW_IMAGE:R=A[1],l=A[2],v=A[3],u=A[4],p=A[5],y=s?null:A[6];var X=A[7],z=A[8],W=A[9],K=A[10],H=A[11],q=A[12],J=A[13],Q=A[14],$=void 0,tt=void 0,et=void 0;for(A.length>16?($=A[15],tt=A[16],et=A[17]):($=Os,tt=et=!1),H&&(q+=b);Rthis.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.bufferedMaxExtent_=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},e.prototype.createFill=function(t,e){var i=t.fillStyle,r=[xa.SET_FILL_STYLE,i];return"string"!=typeof i&&r.push(!0),r},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[xa.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,i){var r=t.fillStyle;"string"==typeof r&&t.currentFillStyle==r||(void 0!==r&&this.instructions.push(e.call(this,t,i)),t.currentFillStyle=r)},e.prototype.updateStrokeStyle=function(t,e){var i=t.strokeStyle,r=t.lineCap,n=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,a=t.lineWidth,h=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=r||n!=t.currentLineDash&&!Z(t.currentLineDash,n)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=a||t.currentMiterLimit!=h)&&(void 0!==i&&e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=r,t.currentLineDash=n,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=a,t.currentMiterLimit=h)},e.prototype.endGeometry=function(t,e){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var i=[xa.END_GEOMETRY,e];this.instructions.push(i),this.hitDetectionInstructions.push(i)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=it(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;et(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(Vs),wa=function(t){function e(e,i,r,n,o,s){t.call(this,e,i,r,n,o,s),this.declutterGroup_=null,this.hitDetectionImage_=null,this.image_=null,this.anchorX_=void 0,this.anchorY_=void 0,this.height_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.scale_=void 0,this.width_=void 0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.drawCoordinates_=function(t,e,i,r){return this.appendFlatCoordinates(t,e,i,r,!1,!1)},e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),r=t.getStride(),n=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,r);this.instructions.push([xa.DRAW_IMAGE,n,o,this.image_,this.anchorX_,this.anchorY_,this.declutterGroup_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_*this.pixelRatio,this.width_]),this.hitDetectionInstructions.push([xa.DRAW_IMAGE,n,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroup_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(t,e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),r=t.getStride(),n=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,r);this.instructions.push([xa.DRAW_IMAGE,n,o,this.image_,this.anchorX_,this.anchorY_,this.declutterGroup_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_*this.pixelRatio,this.width_]),this.hitDetectionInstructions.push([xa.DRAW_IMAGE,n,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroup_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(t,e)}},e.prototype.finish=function(){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},e.prototype.setImageStyle=function(t,e){var i=t.getAnchor(),r=t.getSize(),n=t.getHitDetectionImage(1),o=t.getImage(1),s=t.getOrigin();this.anchorX_=i[0],this.anchorY_=i[1],this.declutterGroup_=e,this.hitDetectionImage_=n,this.image_=o,this.height_=r[1],this.opacity_=t.getOpacity(),this.originX_=s[0],this.originY_=s[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScale(),this.width_=r[0]},e}(Ra),Ia=function(t){function e(e,i,r,n,o,s){t.call(this,e,i,r,n,o,s)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.drawFlatCoordinates_=function(t,e,i,r){var n=this.coordinates.length,o=this.appendFlatCoordinates(t,e,i,r,!1,!1),s=[xa.MOVE_TO_LINE_TO,n,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),i},e.prototype.drawLineString=function(t,e){var i=this.state,r=i.strokeStyle,n=i.lineWidth;if(void 0!==r&&void 0!==n){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([xa.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],va);var o=t.getFlatCoordinates(),s=t.getStride();this.drawFlatCoordinates_(o,0,o.length,s),this.hitDetectionInstructions.push(ya),this.endGeometry(t,e)}},e.prototype.drawMultiLineString=function(t,e){var i=this.state,r=i.strokeStyle,n=i.lineWidth;if(void 0!==r&&void 0!==n){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([xa.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],va);for(var o=t.getEnds(),s=t.getFlatCoordinates(),a=t.getStride(),h=0,l=0,u=o.length;lt&&(y>g&&(g=y,f=v,_=o),y=0,v=o-n)),s=a,u=c,p=d),h=m,l=x}return(y+=a)>g?[v,o]:[f,_]}var Pa={Circle:La,Default:Ra,Image:wa,LineString:Ia,Polygon:La,Text:function(t){function e(e,i,r,n,o,s){t.call(this,e,i,r,n,o,s),this.declutterGroup_,this.labels_=null,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_="",this.fillKey_="",this.strokeKey_="",this.widths_={},Ps.prune()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.drawText=function(t,e){var i=this.textFillState_,r=this.textStrokeState_,n=this.textState_;if(""!==this.text_&&n&&(i||r)){var o,s,a=this.coordinates.length,h=t.getType(),l=null,u=2,p=2;if(n.placement===Tr){if(!Pt(this.getBufferedMaxExtent(),t.getExtent()))return;var c;if(l=t.getFlatCoordinates(),p=t.getStride(),h==Nt.LINE_STRING)c=[l.length];else if(h==Nt.MULTI_LINE_STRING)c=t.getEnds();else if(h==Nt.POLYGON)c=t.getEnds().slice(0,1);else if(h==Nt.MULTI_POLYGON){var d=t.getEndss();for(c=[],o=0,s=d.length;o=E)&&l.push(S[o],S[o+1]);if(0==(u=l.length))return}u=this.appendFlatCoordinates(l,0,u,p,!1,!1),(n.backgroundFill||n.backgroundStroke)&&(this.setFillStrokeStyle(n.backgroundFill,n.backgroundStroke),n.backgroundFill&&(this.updateFillStyle(this.state,this.createFill,t),this.hitDetectionInstructions.push(this.createFill(this.state,t))),n.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(t,e),this.drawTextImage_(x,a,u),this.endGeometry(t,e)}}},e.prototype.getImage=function(t,e,i,r){var n,o=r+e+t+i+this.pixelRatio;if(!Ps.containsKey(o)){var s=r?this.strokeStates[r]||this.textStrokeState_:null,a=i?this.fillStates[i]||this.textFillState_:null,h=this.textStates[e]||this.textState_,l=this.pixelRatio,u=h.scale*l,p=Sa[h.textAlign||"center"],c=r&&s.lineWidth?s.lineWidth:0,d=t.split("\n"),f=d.length,_=[],g=function(t,e,i){for(var r=e.length,n=0,o=0;o=o;)Fa(i,t+n,t+o),Fa(i,t+o,t+n),Fa(i,t-o,t+n),Fa(i,t-n,t+o),Fa(i,t-n,t-o),Fa(i,t-o,t-n),Fa(i,t+o,t-n),Fa(i,t+n,t-o),2*((s+=1+2*++o)-n)+1>0&&(s+=1-2*(n-=1));return Ma[t]=i,i}(r);function f(t){for(var e=u.getImageData(0,0,h,h).data,i=0;i0){var n=void 0;return(!p||c!=da.IMAGE&&c!=da.TEXT||-1!==p.indexOf(t))&&(n=o(t)),n||void u.clearRect(0,0,h,h)}}this.declutterTree_&&(p=this.declutterTree_.all().map(function(t){return t.value}));var _,g,y,v,m,x=Object.keys(this.replaysByZIndex_).map(Number);for(x.sort(V),_=x.length-1;_>=0;--_){var E=x[_].toString();for(y=this.replaysByZIndex_[E],g=Ea.length-1;g>=0;--g)if(void 0!==(v=y[c=Ea[g]]))if(!s||c!=da.IMAGE&&c!=da.TEXT){if(m=v.replayHitDetection(u,l,i,n,f,a))return m}else{var S=s[E];S?S.push(v,l.slice(0)):s[E]=[v,l.slice(0)]}}},e.prototype.getClipCoords=function(t){var e=this.maxExtent_,i=e[0],r=e[1],n=e[2],o=e[3],s=[i,r,i,o,n,o,n,r];return Gt(s,0,8,2,t,s),s},e.prototype.getReplay=function(t,e){var i=void 0!==t?t.toString():"0",r=this.replaysByZIndex_[i];void 0===r&&(r={},this.replaysByZIndex_[i]=r);var n=r[e];void 0===n&&(n=new(0,Pa[e])(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_,this.overlaps_,this.declutterTree_),r[e]=n);return n},e.prototype.getReplays=function(){return this.replaysByZIndex_},e.prototype.isEmpty=function(){return d(this.replaysByZIndex_)},e.prototype.replay=function(t,e,i,r,n,o,s){var a=Object.keys(this.replaysByZIndex_).map(Number);a.sort(V),t.save(),this.clip(t,e);var h,l,u,p,c,d,f=o||Ea;for(h=0,l=a.length;h=n)for(r=n;rl[2];)O=b*++M,p=this.getTransform(e,O),f.replay(_,p,h,o,w),P-=b}if(ks(_,h,I/2,L/2),x&&this.dispatchRenderEvent(_,e,p),_!=t){if(m){var F=t.globalAlpha;t.globalAlpha=i.opacity,t.drawImage(_.canvas,-y,-v),t.globalAlpha=F}else t.drawImage(_.canvas,-y,-v);_.translate(-y,-v)}m||(_.globalAlpha=C)}d&&t.restore()},e.prototype.composeFrame=function(t,e,i){var r=this.getTransform(t,0);this.preCompose(i,t,r),this.compose(i,t,e),this.postCompose(i,t,e,r)},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,r,n){if(this.replayGroup_){var s=e.viewState.resolution,a=e.viewState.rotation,h=this.getLayer(),l={};return this.replayGroup_.forEachFeatureAtCoordinate(t,s,a,i,{},function(t){var e=o(t);if(!(e in l))return l[e]=!0,r.call(n,t,h)},null)}},e.prototype.handleFontsChanged_=function(t){var e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.prepareFrame=function(t,e){var i=this.getLayer(),r=i.getSource(),n=t.viewHints[kn],o=t.viewHints[jn],s=i.getUpdateWhileAnimating(),a=i.getUpdateWhileInteracting();if(!this.dirty_&&!s&&n||!a&&o)return!0;var h=t.extent,l=t.viewState,u=l.projection,p=l.resolution,c=t.pixelRatio,d=i.getRevision(),f=i.getRenderBuffer(),_=i.getRenderOrder();void 0===_&&(_=Da);var g=et(h,f*p),y=l.projection.getExtent();if(r.getWrapX()&&l.projection.canWrapX()&&!ot(y,t.extent)){var v=Ot(y),m=Math.max(Ot(g)/2,v);g[0]=y[0]-m,g[2]=y[2]+m}if(!this.dirty_&&this.renderedResolution_==p&&this.renderedRevision_==d&&this.renderedRenderOrder_==_&&ot(this.renderedExtent_,g))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var x=new Aa(ja(p,c),g,p,c,r.getOverlaps(),this.declutterTree_,i.getRenderBuffer());r.loadFeatures(g,p,u);var E=function(t){var e,r=t.getStyleFunction()||i.getStyleFunction();if(r&&(e=r(t,p)),e){var n=this.renderFeature(t,p,c,e,x);this.dirty_=this.dirty_||n}}.bind(this);if(_){var S=[];r.forEachFeatureInExtent(g,function(t){S.push(t)}),S.sort(_);for(var T=0,C=S.length;T=0;--x){var E=g[x];if(E.getState()!=On.ABORT)for(var S=E.tileCoord,T=y.getTileCoordExtent(S,this.tmpExtent)[0]-E.extent[0],C=void 0,R=0,w=E.tileKeys.length;R radius + v_halfWidth) {\n if (u_strokeColor.a == 0.0) {\n gl_FragColor = u_fillColor;\n } else {\n gl_FragColor = u_strokeColor;\n }\n gl_FragColor.a = gl_FragColor.a - (dist - (radius + v_halfWidth));\n } else if (u_fillColor.a == 0.0) {\n // Hooray, no fill, just stroke. We can use real antialiasing.\n gl_FragColor = u_strokeColor;\n if (dist < radius - v_halfWidth) {\n gl_FragColor.a = gl_FragColor.a - (radius - v_halfWidth - dist);\n }\n } else {\n gl_FragColor = u_fillColor;\n float strokeDist = radius - v_halfWidth;\n float antialias = 2.0 * v_pixelRatio;\n if (dist > strokeDist) {\n gl_FragColor = u_strokeColor;\n } else if (dist >= strokeDist - antialias) {\n float step = smoothstep(strokeDist - antialias, strokeDist, dist);\n gl_FragColor = mix(u_fillColor, u_strokeColor, step);\n }\n }\n gl_FragColor.a = gl_FragColor.a * u_opacity;\n if (gl_FragColor.a <= 0.0) {\n discard;\n }\n}\n"),ch=new uh("varying vec2 v_center;\nvarying vec2 v_offset;\nvarying float v_halfWidth;\nvarying float v_pixelRatio;\n\n\nattribute vec2 a_position;\nattribute float a_instruction;\nattribute float a_radius;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_lineWidth;\nuniform float u_pixelRatio;\n\nvoid main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n v_center = vec4(u_projectionMatrix * vec4(a_position, 0.0, 1.0)).xy;\n v_pixelRatio = u_pixelRatio;\n float lineWidth = u_lineWidth * u_pixelRatio;\n v_halfWidth = lineWidth / 2.0;\n if (lineWidth == 0.0) {\n lineWidth = 2.0 * u_pixelRatio;\n }\n vec2 offset;\n // Radius with anitaliasing (roughly).\n float radius = a_radius + 3.0 * u_pixelRatio;\n // Until we get gl_VertexID in WebGL, we store an instruction.\n if (a_instruction == 0.0) {\n // Offsetting the edges of the triangle by lineWidth / 2 is necessary, however\n // we should also leave some space for the antialiasing, thus we offset by lineWidth.\n offset = vec2(-1.0, 1.0);\n } else if (a_instruction == 1.0) {\n offset = vec2(-1.0, -1.0);\n } else if (a_instruction == 2.0) {\n offset = vec2(1.0, -1.0);\n } else {\n offset = vec2(1.0, 1.0);\n }\n\n gl_Position = u_projectionMatrix * vec4(a_position + offset * radius, 0.0, 1.0) +\n offsetMatrix * vec4(offset * lineWidth, 0.0, 0.0);\n v_offset = vec4(u_projectionMatrix * vec4(a_position.x + a_radius, a_position.y,\n 0.0, 1.0)).xy;\n\n if (distance(v_center, v_offset) > 20000.0) {\n gl_Position = vec4(v_center, 0.0, 1.0);\n }\n}\n\n\n"),dh=function(t,e){this.u_projectionMatrix=t.getUniformLocation(e,"u_projectionMatrix"),this.u_offsetScaleMatrix=t.getUniformLocation(e,"u_offsetScaleMatrix"),this.u_offsetRotateMatrix=t.getUniformLocation(e,"u_offsetRotateMatrix"),this.u_lineWidth=t.getUniformLocation(e,"u_lineWidth"),this.u_pixelRatio=t.getUniformLocation(e,"u_pixelRatio"),this.u_opacity=t.getUniformLocation(e,"u_opacity"),this.u_fillColor=t.getUniformLocation(e,"u_fillColor"),this.u_strokeColor=t.getUniformLocation(e,"u_strokeColor"),this.u_size=t.getUniformLocation(e,"u_size"),this.a_position=t.getAttribLocation(e,"a_position"),this.a_instruction=t.getAttribLocation(e,"a_instruction"),this.a_radius=t.getAttribLocation(e,"a_radius")};function fh(t,e){return t[0]=e[0],t[1]=e[1],t[4]=e[2],t[5]=e[3],t[12]=e[4],t[13]=e[5],t}var _h=function(t){function e(e,i){t.call(this),this.tolerance=e,this.maxExtent=i,this.origin=Tt(i),this.projectionMatrix_=[1,0,0,1,0,0],this.offsetRotateMatrix_=[1,0,0,1,0,0],this.offsetScaleMatrix_=[1,0,0,1,0,0],this.tmpMat4_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.indices=[],this.indicesBuffer=null,this.startIndices=[],this.startIndicesFeature=[],this.vertices=[],this.verticesBuffer=null,this.lineStringReplay=void 0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDeleteResourcesFunction=function(t){return r()},e.prototype.finish=function(t){r()},e.prototype.setUpProgram=function(t,e,i,n){return r()},e.prototype.shutDownProgram=function(t,e){r()},e.prototype.drawReplay=function(t,e,i,n){r()},e.prototype.drawHitDetectionReplayOneByOne=function(t,e,i,n,o){return r()},e.prototype.drawHitDetectionReplay=function(t,e,i,r,n,o){return n?this.drawHitDetectionReplayOneByOne(t,e,i,r,o):this.drawHitDetectionReplayAll(t,e,i,r)},e.prototype.drawHitDetectionReplayAll=function(t,e,i,r){t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),this.drawReplay(t,e,i,!0);var n=r(null);return n||void 0},e.prototype.replay=function(t,e,i,r,n,o,s,a,h,l,u){var p,c,d,f,_,g,y,v,m=t.getGL();this.lineStringReplay&&(p=m.isEnabled(m.STENCIL_TEST),c=m.getParameter(m.STENCIL_FUNC),d=m.getParameter(m.STENCIL_VALUE_MASK),f=m.getParameter(m.STENCIL_REF),_=m.getParameter(m.STENCIL_WRITEMASK),g=m.getParameter(m.STENCIL_FAIL),y=m.getParameter(m.STENCIL_PASS_DEPTH_PASS),v=m.getParameter(m.STENCIL_PASS_DEPTH_FAIL),m.enable(m.STENCIL_TEST),m.clear(m.STENCIL_BUFFER_BIT),m.stencilMask(255),m.stencilFunc(m.ALWAYS,1,255),m.stencilOp(m.KEEP,m.KEEP,m.REPLACE),this.lineStringReplay.replay(t,e,i,r,n,o,s,a,h,l,u),m.stencilMask(0),m.stencilFunc(m.NOTEQUAL,1,255)),t.bindBuffer(34962,this.verticesBuffer),t.bindBuffer(34963,this.indicesBuffer);var x=this.setUpProgram(m,t,n,o),E=Fe(this.projectionMatrix_);je(E,2/(i*n[0]),2/(i*n[1])),ke(E,-r),Ue(E,-(e[0]-this.origin[0]),-(e[1]-this.origin[1]));var S=Fe(this.offsetScaleMatrix_);je(S,2/n[0],2/n[1]);var T,C=Fe(this.offsetRotateMatrix_);return 0!==r&&ke(C,-r),m.uniformMatrix4fv(x.u_projectionMatrix,!1,fh(this.tmpMat4_,E)),m.uniformMatrix4fv(x.u_offsetScaleMatrix,!1,fh(this.tmpMat4_,S)),m.uniformMatrix4fv(x.u_offsetRotateMatrix,!1,fh(this.tmpMat4_,C)),m.uniform1f(x.u_opacity,s),void 0===h?this.drawReplay(m,t,a,!1):T=this.drawHitDetectionReplay(m,t,a,h,l,u),this.shutDownProgram(m,x),this.lineStringReplay&&(p||m.disable(m.STENCIL_TEST),m.clear(m.STENCIL_BUFFER_BIT),m.stencilFunc(c,f,d),m.stencilMask(_),m.stencilOp(g,v,y)),T},e.prototype.drawElements=function(t,e,i,r){var n=e.hasOESElementIndexUint?5125:5123,o=r-i,s=i*(e.hasOESElementIndexUint?4:2);t.drawElements(4,o,n,s)},e}(Vs),gh=[0,0,0,1],yh=[],vh=[0,0,0,1],mh=Number.EPSILON||2.220446049250313e-16,xh=function(t,e,i,r,n,o){var s=(i-t)*(o-e)-(n-t)*(r-e);return s<=mh&&s>=-mh?void 0:s>0},Eh=35044,Sh=function(t,e){this.arr_=void 0!==t?t:[],this.usage_=void 0!==e?e:Eh};Sh.prototype.getArray=function(){return this.arr_},Sh.prototype.getUsage=function(){return this.usage_};var Th=Sh,Ch=function(t){function e(e,i){t.call(this,e,i),this.defaultLocations_=null,this.styles_=[],this.styleIndices_=[],this.radius_=0,this.state_={fillColor:null,strokeColor:null,lineDash:null,lineDashOffset:void 0,lineWidth:void 0,changed:!1}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.drawCoordinates_=function(t,e,i,r){var n,o,s=this.vertices.length,a=this.indices.length,h=s/4;for(n=e,o=i;n0&&(this.styles_=[]),this.vertices=null,this.indices=null},e.prototype.getDeleteResourcesFunction=function(t){var e=this.verticesBuffer,i=this.indicesBuffer;return function(){t.deleteBuffer(e),t.deleteBuffer(i)}},e.prototype.setUpProgram=function(t,e,i,r){var n,o=e.getProgram(ph,ch);return this.defaultLocations_?n=this.defaultLocations_:(n=new dh(t,o),this.defaultLocations_=n),e.useProgram(o),t.enableVertexAttribArray(n.a_position),t.vertexAttribPointer(n.a_position,2,5126,!1,16,0),t.enableVertexAttribArray(n.a_instruction),t.vertexAttribPointer(n.a_instruction,1,5126,!1,16,8),t.enableVertexAttribArray(n.a_radius),t.vertexAttribPointer(n.a_radius,1,5126,!1,16,12),t.uniform2fv(n.u_size,i),t.uniform1f(n.u_pixelRatio,r),n},e.prototype.shutDownProgram=function(t,e){t.disableVertexAttribArray(e.a_position),t.disableVertexAttribArray(e.a_instruction),t.disableVertexAttribArray(e.a_radius)},e.prototype.drawReplay=function(t,e,i,r){var n,o,s,a;if(d(i))for(s=this.startIndices[this.startIndices.length-1],n=this.styleIndices_.length-1;n>=0;--n)o=this.styleIndices_[n],a=this.styles_[n],this.setFillStyle_(t,a[0]),this.setStrokeStyle_(t,a[1],a[2]),this.drawElements(t,e,o,s),s=o;else this.drawReplaySkipping_(t,e,i)},e.prototype.drawHitDetectionReplayOneByOne=function(t,e,i,r,n){var s,a,h,l,u,p,c;for(c=this.startIndices.length-2,h=this.startIndices[c+1],s=this.styleIndices_.length-1;s>=0;--s)for(l=this.styles_[s],this.setFillStyle_(t,l[0]),this.setStrokeStyle_(t,l[1],l[2]),u=this.styleIndices_[s];c>=0&&this.startIndices[c]>=u;){if(a=this.startIndices[c],void 0===i[o(p=this.startIndicesFeature[c])]&&p.getGeometry()&&(void 0===n||Pt(n,p.getGeometry().getExtent()))){t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),this.drawElements(t,e,a,h);var d=r(p);if(d)return d}c--,h=a}},e.prototype.drawReplaySkipping_=function(t,e,i){var r,n,s,a,h,l,u;for(l=this.startIndices.length-2,s=n=this.startIndices[l+1],r=this.styleIndices_.length-1;r>=0;--r){for(a=this.styles_[r],this.setFillStyle_(t,a[0]),this.setStrokeStyle_(t,a[1],a[2]),h=this.styleIndices_[r];l>=0&&this.startIndices[l]>=h;)u=this.startIndices[l],i[o(this.startIndicesFeature[l])]&&(n!==s&&this.drawElements(t,e,n,s),s=u),l--,n=u;n!==s&&this.drawElements(t,e,n,s),n=s=h}},e.prototype.setFillStyle_=function(t,e){t.uniform4fv(this.defaultLocations_.u_fillColor,e)},e.prototype.setStrokeStyle_=function(t,e,i){t.uniform4fv(this.defaultLocations_.u_strokeColor,e),t.uniform1f(this.defaultLocations_.u_lineWidth,i)},e.prototype.setFillStrokeStyle=function(t,e){var i,r;if(e){var n=e.getLineDash();this.state_.lineDash=n||yh;var o=e.getLineDashOffset();this.state_.lineDashOffset=o||0,i=(i=e.getColor())instanceof CanvasGradient||i instanceof CanvasPattern?vh:_r(i).map(function(t,e){return 3!=e?t/255:t})||vh,r=void 0!==(r=e.getWidth())?r:1}else i=[0,0,0,0],r=0;var s=t?t.getColor():[0,0,0,0];s=s instanceof CanvasGradient||s instanceof CanvasPattern?gh:_r(s).map(function(t,e){return 3!=e?t/255:t})||gh,this.state_.strokeColor&&Z(this.state_.strokeColor,i)&&this.state_.fillColor&&Z(this.state_.fillColor,s)&&this.state_.lineWidth===r||(this.state_.changed=!0,this.state_.fillColor=s,this.state_.strokeColor=i,this.state_.lineWidth=r,this.styles_.push([s,i,r]))},e}(_h),Rh=new lh("precision mediump float;\nvarying vec2 v_texCoord;\nvarying float v_opacity;\n\nuniform float u_opacity;\nuniform sampler2D u_image;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_image, v_texCoord);\n gl_FragColor.rgb = texColor.rgb;\n float alpha = texColor.a * v_opacity * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n"),wh=new uh("varying vec2 v_texCoord;\nvarying float v_opacity;\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nattribute vec2 a_offsets;\nattribute float a_opacity;\nattribute float a_rotateWithView;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\n\nvoid main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n if (a_rotateWithView == 1.0) {\n offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n }\n vec4 offsets = offsetMatrix * vec4(a_offsets, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n v_texCoord = a_texCoord;\n v_opacity = a_opacity;\n}\n\n\n"),Ih=function(t,e){this.u_projectionMatrix=t.getUniformLocation(e,"u_projectionMatrix"),this.u_offsetScaleMatrix=t.getUniformLocation(e,"u_offsetScaleMatrix"),this.u_offsetRotateMatrix=t.getUniformLocation(e,"u_offsetRotateMatrix"),this.u_opacity=t.getUniformLocation(e,"u_opacity"),this.u_image=t.getUniformLocation(e,"u_image"),this.a_position=t.getAttribLocation(e,"a_position"),this.a_texCoord=t.getAttribLocation(e,"a_texCoord"),this.a_offsets=t.getAttribLocation(e,"a_offsets"),this.a_opacity=t.getAttribLocation(e,"a_opacity"),this.a_rotateWithView=t.getAttribLocation(e,"a_rotateWithView")},Lh={LOST:"webglcontextlost",RESTORED:"webglcontextrestored"};function Oh(t,e,i){var r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),void 0!==e&&t.texParameteri(eh,$a,e),void 0!==i&&t.texParameteri(eh,th,i),r}function Ph(t,e,i,r,n){var o=Oh(t,r,n);return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),o}function bh(t,e,i,r){var n=Oh(t,i,r);return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),n}var Mh=function(t){function e(e,i){t.call(this),this.canvas_=e,this.gl_=i,this.bufferCache_={},this.shaderCache_={},this.programCache_={},this.currentProgram_=null,this.hitDetectionFramebuffer_=null,this.hitDetectionTexture_=null,this.hitDetectionRenderbuffer_=null,this.hasOESElementIndexUint=X(oh,"OES_element_index_uint"),this.hasOESElementIndexUint&&i.getExtension("OES_element_index_uint"),v(this.canvas_,Lh.LOST,this.handleWebGLContextLost,this),v(this.canvas_,Lh.RESTORED,this.handleWebGLContextRestored,this)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.bindBuffer=function(t,e){var i=this.getGL(),r=e.getArray(),n=o(e);if(n in this.bufferCache_){var s=this.bufferCache_[n];i.bindBuffer(t,s.buffer)}else{var a,h=i.createBuffer();i.bindBuffer(t,h),34962==t?a=new Float32Array(r):34963==t&&(a=this.hasOESElementIndexUint?new Uint32Array(r):new Uint16Array(r)),i.bufferData(t,a,e.getUsage()),this.bufferCache_[n]={buf:e,buffer:h}}},e.prototype.deleteBuffer=function(t){var e=this.getGL(),i=o(t),r=this.bufferCache_[i];e.isContextLost()||e.deleteBuffer(r.buffer),delete this.bufferCache_[i]},e.prototype.disposeInternal=function(){S(this.canvas_);var t=this.getGL();if(!t.isContextLost()){for(var e in this.bufferCache_)t.deleteBuffer(this.bufferCache_[e].buffer);for(var i in this.programCache_)t.deleteProgram(this.programCache_[i]);for(var r in this.shaderCache_)t.deleteShader(this.shaderCache_[r]);t.deleteFramebuffer(this.hitDetectionFramebuffer_),t.deleteRenderbuffer(this.hitDetectionRenderbuffer_),t.deleteTexture(this.hitDetectionTexture_)}},e.prototype.getCanvas=function(){return this.canvas_},e.prototype.getGL=function(){return this.gl_},e.prototype.getHitDetectionFramebuffer=function(){return this.hitDetectionFramebuffer_||this.initHitDetectionFramebuffer_(),this.hitDetectionFramebuffer_},e.prototype.getShader=function(t){var e=o(t);if(e in this.shaderCache_)return this.shaderCache_[e];var i=this.getGL(),r=i.createShader(t.getType());return i.shaderSource(r,t.getSource()),i.compileShader(r),this.shaderCache_[e]=r,r},e.prototype.getProgram=function(t,e){var i=o(t)+"/"+o(e);if(i in this.programCache_)return this.programCache_[i];var r=this.getGL(),n=r.createProgram();return r.attachShader(n,this.getShader(t)),r.attachShader(n,this.getShader(e)),r.linkProgram(n),this.programCache_[i]=n,n},e.prototype.handleWebGLContextLost=function(){p(this.bufferCache_),p(this.shaderCache_),p(this.programCache_),this.currentProgram_=null,this.hitDetectionFramebuffer_=null,this.hitDetectionTexture_=null,this.hitDetectionRenderbuffer_=null},e.prototype.handleWebGLContextRestored=function(){},e.prototype.initHitDetectionFramebuffer_=function(){var t=this.gl_,e=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,e);var i=Ph(t,1,1),r=t.createRenderbuffer();t.bindRenderbuffer(t.RENDERBUFFER,r),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,1,1),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,r),t.bindTexture(t.TEXTURE_2D,null),t.bindRenderbuffer(t.RENDERBUFFER,null),t.bindFramebuffer(t.FRAMEBUFFER,null),this.hitDetectionFramebuffer_=e,this.hitDetectionTexture_=i,this.hitDetectionRenderbuffer_=r},e.prototype.useProgram=function(t){return t!=this.currentProgram_&&(this.getGL().useProgram(t),this.currentProgram_=t,!0)},e}(C),Fh=function(t){function e(e,i){t.call(this,e,i),this.anchorX=void 0,this.anchorY=void 0,this.groupIndices=[],this.hitDetectionGroupIndices=[],this.height=void 0,this.imageHeight=void 0,this.imageWidth=void 0,this.defaultLocations=null,this.opacity=void 0,this.originX=void 0,this.originY=void 0,this.rotateWithView=void 0,this.rotation=void 0,this.scale=void 0,this.width=void 0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDeleteResourcesFunction=function(t){var e=this.verticesBuffer,i=this.indicesBuffer,r=this.getTextures(!0),n=t.getGL();return function(){var o,s;if(!n.isContextLost())for(o=0,s=r.length;o0?n[s-1]:0,u=n[s],p=l,c=l;h=0;--s)for(t.bindTexture(eh,c[s]),a=s>0?this.hitDetectionGroupIndices[s-1]:0,l=this.hitDetectionGroupIndices[s];p>=0&&this.startIndices[p]>=a;){if(h=this.startIndices[p],void 0===i[o(u=this.startIndicesFeature[p])]&&u.getGeometry()&&(void 0===n||Pt(n,u.getGeometry().getExtent()))){t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),this.drawElements(t,e,h,l);var d=r(u);if(d)return d}l=h,p--}},e.prototype.finish=function(t){this.anchorX=void 0,this.anchorY=void 0,this.height=void 0,this.imageHeight=void 0,this.imageWidth=void 0,this.indices=null,this.opacity=void 0,this.originX=void 0,this.originY=void 0,this.rotateWithView=void 0,this.rotation=void 0,this.scale=void 0,this.vertices=null,this.width=void 0},e.prototype.getTextures=function(t){return r()},e.prototype.getHitDetectionTextures=function(){return r()},e}(_h),Ah=function(t){function e(e,i){t.call(this,e,i),this.images_=[],this.hitDetectionImages_=[],this.textures_=[],this.hitDetectionTextures_=[]}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.drawMultiPoint=function(t,e){this.startIndices.push(this.indices.length),this.startIndicesFeature.push(e);var i=t.getFlatCoordinates(),r=t.getStride();this.drawCoordinates(i,0,i.length,r)},e.prototype.drawPoint=function(t,e){this.startIndices.push(this.indices.length),this.startIndicesFeature.push(e);var i=t.getFlatCoordinates(),r=t.getStride();this.drawCoordinates(i,0,i.length,r)},e.prototype.finish=function(e){var i=e.getGL();this.groupIndices.push(this.indices.length),this.hitDetectionGroupIndices.push(this.indices.length),this.verticesBuffer=new Th(this.vertices);var r=this.indices;this.indicesBuffer=new Th(r);var n={};this.createTextures(this.textures_,this.images_,n,i),this.createTextures(this.hitDetectionTextures_,this.hitDetectionImages_,n,i),this.images_=null,this.hitDetectionImages_=null,t.prototype.finish.call(this,e)},e.prototype.setImageStyle=function(t){var e=t.getAnchor(),i=t.getImage(1),r=t.getImageSize(),n=t.getHitDetectionImage(1),s=t.getOpacity(),a=t.getOrigin(),h=t.getRotateWithView(),l=t.getRotation(),u=t.getSize(),p=t.getScale();0===this.images_.length?this.images_.push(i):o(this.images_[this.images_.length-1])!=o(i)&&(this.groupIndices.push(this.indices.length),this.images_.push(i)),0===this.hitDetectionImages_.length?this.hitDetectionImages_.push(n):o(this.hitDetectionImages_[this.hitDetectionImages_.length-1])!=o(n)&&(this.hitDetectionGroupIndices.push(this.indices.length),this.hitDetectionImages_.push(n)),this.anchorX=e[0],this.anchorY=e[1],this.height=u[1],this.imageHeight=r[1],this.imageWidth=r[0],this.opacity=s,this.originX=a[0],this.originY=a[1],this.rotation=l,this.rotateWithView=h,this.scale=p,this.width=u[0]},e.prototype.getTextures=function(t){return t?this.textures_.concat(this.hitDetectionTextures_):this.textures_},e.prototype.getHitDetectionTextures=function(){return this.hitDetectionTextures_},e}(Fh);function Nh(t,e,i,r){var n=i-r;return t[e]===t[n]&&t[e+1]===t[n+1]&&(i-e)/r>3&&!!Ke(t,e,i,r)}var Gh=new lh("precision mediump float;\nvarying float v_round;\nvarying vec2 v_roundVertex;\nvarying float v_halfWidth;\n\n\n\nuniform float u_opacity;\nuniform vec4 u_color;\nuniform vec2 u_size;\nuniform float u_pixelRatio;\n\nvoid main(void) {\n if (v_round > 0.0) {\n vec2 windowCoords = vec2((v_roundVertex.x + 1.0) / 2.0 * u_size.x * u_pixelRatio,\n (v_roundVertex.y + 1.0) / 2.0 * u_size.y * u_pixelRatio);\n if (length(windowCoords - gl_FragCoord.xy) > v_halfWidth * u_pixelRatio) {\n discard;\n }\n }\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n"),Dh=new uh("varying float v_round;\nvarying vec2 v_roundVertex;\nvarying float v_halfWidth;\n\n\nattribute vec2 a_lastPos;\nattribute vec2 a_position;\nattribute vec2 a_nextPos;\nattribute float a_direction;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_lineWidth;\nuniform float u_miterLimit;\n\nbool nearlyEquals(in float value, in float ref) {\n float epsilon = 0.000000000001;\n return value >= ref - epsilon && value <= ref + epsilon;\n}\n\nvoid alongNormal(out vec2 offset, in vec2 nextP, in float turnDir, in float direction) {\n vec2 dirVect = nextP - a_position;\n vec2 normal = normalize(vec2(-turnDir * dirVect.y, turnDir * dirVect.x));\n offset = u_lineWidth / 2.0 * normal * direction;\n}\n\nvoid miterUp(out vec2 offset, out float round, in bool isRound, in float direction) {\n float halfWidth = u_lineWidth / 2.0;\n vec2 tangent = normalize(normalize(a_nextPos - a_position) + normalize(a_position - a_lastPos));\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 dirVect = a_nextPos - a_position;\n vec2 tmpNormal = normalize(vec2(-dirVect.y, dirVect.x));\n float miterLength = abs(halfWidth / dot(normal, tmpNormal));\n offset = normal * direction * miterLength;\n round = 0.0;\n if (isRound) {\n round = 1.0;\n } else if (miterLength > u_miterLimit + u_lineWidth) {\n offset = halfWidth * tmpNormal * direction;\n }\n}\n\nbool miterDown(out vec2 offset, in vec4 projPos, in mat4 offsetMatrix, in float direction) {\n bool degenerate = false;\n vec2 tangent = normalize(normalize(a_nextPos - a_position) + normalize(a_position - a_lastPos));\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 dirVect = a_lastPos - a_position;\n vec2 tmpNormal = normalize(vec2(-dirVect.y, dirVect.x));\n vec2 longOffset, shortOffset, longVertex;\n vec4 shortProjVertex;\n float halfWidth = u_lineWidth / 2.0;\n if (length(a_nextPos - a_position) > length(a_lastPos - a_position)) {\n longOffset = tmpNormal * direction * halfWidth;\n shortOffset = normalize(vec2(dirVect.y, -dirVect.x)) * direction * halfWidth;\n longVertex = a_nextPos;\n shortProjVertex = u_projectionMatrix * vec4(a_lastPos, 0.0, 1.0);\n } else {\n shortOffset = tmpNormal * direction * halfWidth;\n longOffset = normalize(vec2(dirVect.y, -dirVect.x)) * direction * halfWidth;\n longVertex = a_lastPos;\n shortProjVertex = u_projectionMatrix * vec4(a_nextPos, 0.0, 1.0);\n }\n //Intersection algorithm based on theory by Paul Bourke (http://paulbourke.net/geometry/pointlineplane/).\n vec4 p1 = u_projectionMatrix * vec4(longVertex, 0.0, 1.0) + offsetMatrix * vec4(longOffset, 0.0, 0.0);\n vec4 p2 = projPos + offsetMatrix * vec4(longOffset, 0.0, 0.0);\n vec4 p3 = shortProjVertex + offsetMatrix * vec4(-shortOffset, 0.0, 0.0);\n vec4 p4 = shortProjVertex + offsetMatrix * vec4(shortOffset, 0.0, 0.0);\n float denom = (p4.y - p3.y) * (p2.x - p1.x) - (p4.x - p3.x) * (p2.y - p1.y);\n float firstU = ((p4.x - p3.x) * (p1.y - p3.y) - (p4.y - p3.y) * (p1.x - p3.x)) / denom;\n float secondU = ((p2.x - p1.x) * (p1.y - p3.y) - (p2.y - p1.y) * (p1.x - p3.x)) / denom;\n float epsilon = 0.000000000001;\n if (firstU > epsilon && firstU < 1.0 - epsilon && secondU > epsilon && secondU < 1.0 - epsilon) {\n shortProjVertex.x = p1.x + firstU * (p2.x - p1.x);\n shortProjVertex.y = p1.y + firstU * (p2.y - p1.y);\n offset = shortProjVertex.xy;\n degenerate = true;\n } else {\n float miterLength = abs(halfWidth / dot(normal, tmpNormal));\n offset = normal * direction * miterLength;\n }\n return degenerate;\n}\n\nvoid squareCap(out vec2 offset, out float round, in bool isRound, in vec2 nextP,\n in float turnDir, in float direction) {\n round = 0.0;\n vec2 dirVect = a_position - nextP;\n vec2 firstNormal = normalize(dirVect);\n vec2 secondNormal = vec2(turnDir * firstNormal.y * direction, -turnDir * firstNormal.x * direction);\n vec2 hypotenuse = normalize(firstNormal - secondNormal);\n vec2 normal = vec2(turnDir * hypotenuse.y * direction, -turnDir * hypotenuse.x * direction);\n float length = sqrt(v_halfWidth * v_halfWidth * 2.0);\n offset = normal * length;\n if (isRound) {\n round = 1.0;\n }\n}\n\nvoid main(void) {\n bool degenerate = false;\n float direction = float(sign(a_direction));\n mat4 offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n vec2 offset;\n vec4 projPos = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n bool round = nearlyEquals(mod(a_direction, 2.0), 0.0);\n\n v_round = 0.0;\n v_halfWidth = u_lineWidth / 2.0;\n v_roundVertex = projPos.xy;\n\n if (nearlyEquals(mod(a_direction, 3.0), 0.0) || nearlyEquals(mod(a_direction, 17.0), 0.0)) {\n alongNormal(offset, a_nextPos, 1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 5.0), 0.0) || nearlyEquals(mod(a_direction, 13.0), 0.0)) {\n alongNormal(offset, a_lastPos, -1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 23.0), 0.0)) {\n miterUp(offset, v_round, round, direction);\n } else if (nearlyEquals(mod(a_direction, 19.0), 0.0)) {\n degenerate = miterDown(offset, projPos, offsetMatrix, direction);\n } else if (nearlyEquals(mod(a_direction, 7.0), 0.0)) {\n squareCap(offset, v_round, round, a_nextPos, 1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 11.0), 0.0)) {\n squareCap(offset, v_round, round, a_lastPos, -1.0, direction);\n }\n if (!degenerate) {\n vec4 offsets = offsetMatrix * vec4(offset, 0.0, 0.0);\n gl_Position = projPos + offsets;\n } else {\n gl_Position = vec4(offset, 0.0, 1.0);\n }\n}\n\n\n"),kh=function(t,e){this.u_projectionMatrix=t.getUniformLocation(e,"u_projectionMatrix"),this.u_offsetScaleMatrix=t.getUniformLocation(e,"u_offsetScaleMatrix"),this.u_offsetRotateMatrix=t.getUniformLocation(e,"u_offsetRotateMatrix"),this.u_lineWidth=t.getUniformLocation(e,"u_lineWidth"),this.u_miterLimit=t.getUniformLocation(e,"u_miterLimit"),this.u_opacity=t.getUniformLocation(e,"u_opacity"),this.u_color=t.getUniformLocation(e,"u_color"),this.u_size=t.getUniformLocation(e,"u_size"),this.u_pixelRatio=t.getUniformLocation(e,"u_pixelRatio"),this.a_lastPos=t.getAttribLocation(e,"a_lastPos"),this.a_position=t.getAttribLocation(e,"a_position"),this.a_nextPos=t.getAttribLocation(e,"a_nextPos"),this.a_direction=t.getAttribLocation(e,"a_direction")},jh=3,Uh=5,Yh=7,Bh=11,Vh=13,Xh=17,zh=19,Wh=23,Kh=function(t){function e(e,i){t.call(this,e,i),this.defaultLocations_=null,this.styles_=[],this.styleIndices_=[],this.state_={strokeColor:null,lineCap:void 0,lineDash:null,lineDashOffset:void 0,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0,changed:!1}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.drawCoordinates_=function(t,e,i,r){var n,o,s,a,h,l,u,p,c=this.vertices.length,d=this.indices.length,f="bevel"===this.state_.lineJoin?0:"miter"===this.state_.lineJoin?1:2,_="butt"===this.state_.lineCap?0:"square"===this.state_.lineCap?1:2,g=Nh(t,e,i,r),y=d,v=1;for(n=e,o=i;ne&&(this.indices[d++]=h,this.indices[d++]=y-1,this.indices[d++]=y,this.indices[d++]=h+2,this.indices[d++]=h,this.indices[d++]=v*a>0?y:y-1),this.indices[d++]=h,this.indices[d++]=h+2,this.indices[d++]=h+1,y=h+2,v=a,f&&(c=this.addVertices_(l,u,p,a*Wh*f,c),this.indices[d++]=h+1,this.indices[d++]=h+3,this.indices[d++]=h)}g&&(h=h||c/7,a=Si([l[0],l[1],u[0],u[1],p[0],p[1]],0,6,2)?1:-1,c=this.addVertices_(l,u,p,a*Vh*(f||1),c),c=this.addVertices_(l,u,p,-a*zh*(f||1),c),this.indices[d++]=h,this.indices[d++]=y-1,this.indices[d++]=y,this.indices[d++]=h+1,this.indices[d++]=h,this.indices[d++]=v*a>0?y:y-1)},e.prototype.addVertices_=function(t,e,i,r,n){return this.vertices[n++]=t[0],this.vertices[n++]=t[1],this.vertices[n++]=e[0],this.vertices[n++]=e[1],this.vertices[n++]=i[0],this.vertices[n++]=i[1],this.vertices[n++]=r,n},e.prototype.isValid_=function(t,e,i,r){var n=i-e;return!(n<2*r)&&(n!==2*r||!Z([t[e],t[e+1]],[t[e+r],t[e+r+1]]))},e.prototype.drawLineString=function(t,e){var i=t.getFlatCoordinates(),r=t.getStride();this.isValid_(i,0,i.length,r)&&(i=Dt(i,0,i.length,r,-this.origin[0],-this.origin[1]),this.state_.changed&&(this.styleIndices_.push(this.indices.length),this.state_.changed=!1),this.startIndices.push(this.indices.length),this.startIndicesFeature.push(e),this.drawCoordinates_(i,0,i.length,r))},e.prototype.drawMultiLineString=function(t,e){var i=this.indices.length,r=t.getEnds();r.unshift(0);var n,o,s=t.getFlatCoordinates(),a=t.getStride();if(r.length>1)for(n=1,o=r.length;ni&&(this.startIndices.push(i),this.startIndicesFeature.push(e),this.state_.changed&&(this.styleIndices_.push(i),this.state_.changed=!1))},e.prototype.drawPolygonCoordinates=function(t,e,i){var r,n;if(Nh(t,0,t.length,i)||(t.push(t[0]),t.push(t[1])),this.drawCoordinates_(t,0,t.length,i),e.length)for(r=0,n=e.length;r0&&(this.styles_=[]),this.vertices=null,this.indices=null},e.prototype.getDeleteResourcesFunction=function(t){var e=this.verticesBuffer,i=this.indicesBuffer;return function(){t.deleteBuffer(e),t.deleteBuffer(i)}},e.prototype.setUpProgram=function(t,e,i,r){var n,o=e.getProgram(Gh,Dh);return this.defaultLocations_?n=this.defaultLocations_:(n=new kh(t,o),this.defaultLocations_=n),e.useProgram(o),t.enableVertexAttribArray(n.a_lastPos),t.vertexAttribPointer(n.a_lastPos,2,5126,!1,28,0),t.enableVertexAttribArray(n.a_position),t.vertexAttribPointer(n.a_position,2,5126,!1,28,8),t.enableVertexAttribArray(n.a_nextPos),t.vertexAttribPointer(n.a_nextPos,2,5126,!1,28,16),t.enableVertexAttribArray(n.a_direction),t.vertexAttribPointer(n.a_direction,1,5126,!1,28,24),t.uniform2fv(n.u_size,i),t.uniform1f(n.u_pixelRatio,r),n},e.prototype.shutDownProgram=function(t,e){t.disableVertexAttribArray(e.a_lastPos),t.disableVertexAttribArray(e.a_position),t.disableVertexAttribArray(e.a_nextPos),t.disableVertexAttribArray(e.a_direction)},e.prototype.drawReplay=function(t,e,i,r){var n,o,s,a,h=t.getParameter(t.DEPTH_FUNC),l=t.getParameter(t.DEPTH_WRITEMASK);if(r||(t.enable(t.DEPTH_TEST),t.depthMask(!0),t.depthFunc(t.NOTEQUAL)),d(i))for(s=this.startIndices[this.startIndices.length-1],n=this.styleIndices_.length-1;n>=0;--n)o=this.styleIndices_[n],a=this.styles_[n],this.setStrokeStyle_(t,a[0],a[1],a[2]),this.drawElements(t,e,o,s),t.clear(t.DEPTH_BUFFER_BIT),s=o;else this.drawReplaySkipping_(t,e,i);r||(t.disable(t.DEPTH_TEST),t.clear(t.DEPTH_BUFFER_BIT),t.depthMask(l),t.depthFunc(h))},e.prototype.drawReplaySkipping_=function(t,e,i){var r,n,s,a,h,l,u;for(l=this.startIndices.length-2,s=n=this.startIndices[l+1],r=this.styleIndices_.length-1;r>=0;--r){for(a=this.styles_[r],this.setStrokeStyle_(t,a[0],a[1],a[2]),h=this.styleIndices_[r];l>=0&&this.startIndices[l]>=h;)u=this.startIndices[l],i[o(this.startIndicesFeature[l])]&&(n!==s&&(this.drawElements(t,e,n,s),t.clear(t.DEPTH_BUFFER_BIT)),s=u),l--,n=u;n!==s&&(this.drawElements(t,e,n,s),t.clear(t.DEPTH_BUFFER_BIT)),n=s=h}},e.prototype.drawHitDetectionReplayOneByOne=function(t,e,i,r,n){var s,a,h,l,u,p,c;for(c=this.startIndices.length-2,h=this.startIndices[c+1],s=this.styleIndices_.length-1;s>=0;--s)for(l=this.styles_[s],this.setStrokeStyle_(t,l[0],l[1],l[2]),u=this.styleIndices_[s];c>=0&&this.startIndices[c]>=u;){if(a=this.startIndices[c],void 0===i[o(p=this.startIndicesFeature[c])]&&p.getGeometry()&&(void 0===n||Pt(n,p.getGeometry().getExtent()))){t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),this.drawElements(t,e,a,h);var d=r(p);if(d)return d}c--,h=a}},e.prototype.setStrokeStyle_=function(t,e,i,r){t.uniform4fv(this.defaultLocations_.u_color,e),t.uniform1f(this.defaultLocations_.u_lineWidth,i),t.uniform1f(this.defaultLocations_.u_miterLimit,r)},e.prototype.setFillStrokeStyle=function(t,e){var i=e.getLineCap();this.state_.lineCap=void 0!==i?i:"round";var r=e.getLineDash();this.state_.lineDash=r||yh;var n=e.getLineDashOffset();this.state_.lineDashOffset=n||0;var o=e.getLineJoin();this.state_.lineJoin=void 0!==o?o:"round";var s=e.getColor();s=s instanceof CanvasGradient||s instanceof CanvasPattern?vh:_r(s).map(function(t,e){return 3!=e?t/255:t})||vh;var a=e.getWidth();a=void 0!==a?a:1;var h=e.getMiterLimit();h=void 0!==h?h:10,this.state_.strokeColor&&Z(this.state_.strokeColor,s)&&this.state_.lineWidth===a&&this.state_.miterLimit===h||(this.state_.changed=!0,this.state_.strokeColor=s,this.state_.lineWidth=a,this.state_.miterLimit=h,this.styles_.push([s,a,h]))},e}(_h),Hh=new lh("precision mediump float;\n\n\n\nuniform vec4 u_color;\nuniform float u_opacity;\n\nvoid main(void) {\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n"),Zh=new uh("\n\nattribute vec2 a_position;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\n\nvoid main(void) {\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n}\n\n\n"),qh=function(t,e){this.u_projectionMatrix=t.getUniformLocation(e,"u_projectionMatrix"),this.u_offsetScaleMatrix=t.getUniformLocation(e,"u_offsetScaleMatrix"),this.u_offsetRotateMatrix=t.getUniformLocation(e,"u_offsetRotateMatrix"),this.u_color=t.getUniformLocation(e,"u_color"),this.u_opacity=t.getUniformLocation(e,"u_opacity"),this.a_position=t.getAttribLocation(e,"a_position")},Jh=function(t){this.first_,this.last_,this.head_,this.circular_=void 0===t||t,this.length_=0};Jh.prototype.insertItem=function(t){var e={prev:void 0,next:void 0,data:t},i=this.head_;if(i){var r=i.next;e.prev=i,e.next=r,i.next=e,r&&(r.prev=e),i===this.last_&&(this.last_=e)}else this.first_=e,this.last_=e,this.circular_&&(e.next=e,e.prev=e);this.head_=e,this.length_++},Jh.prototype.removeItem=function(){var t=this.head_;if(t){var e=t.next,i=t.prev;e&&(e.prev=i),i&&(i.next=e),this.head_=e||i,this.first_===this.last_?(this.head_=void 0,this.first_=void 0,this.last_=void 0):this.first_===t?this.first_=this.head_:this.last_===t&&(this.last_=i?this.head_.prev:this.head_),this.length_--}},Jh.prototype.firstItem=function(){if(this.head_=this.first_,this.head_)return this.head_.data},Jh.prototype.lastItem=function(){if(this.head_=this.last_,this.head_)return this.head_.data},Jh.prototype.nextItem=function(){if(this.head_&&this.head_.next)return this.head_=this.head_.next,this.head_.data},Jh.prototype.getNextItem=function(){if(this.head_&&this.head_.next)return this.head_.next.data},Jh.prototype.prevItem=function(){if(this.head_&&this.head_.prev)return this.head_=this.head_.prev,this.head_.data},Jh.prototype.getPrevItem=function(){if(this.head_&&this.head_.prev)return this.head_.prev.data},Jh.prototype.getCurrItem=function(){if(this.head_)return this.head_.data},Jh.prototype.setFirstItem=function(){this.circular_&&this.head_&&(this.first_=this.head_,this.last_=this.head_.prev)},Jh.prototype.concat=function(t){if(t.head_){if(this.head_){var e=this.head_.next;this.head_.next=t.first_,t.first_.prev=this.head_,e.prev=t.last_,t.last_.next=e,this.length_+=t.length_}else this.head_=t.head_,this.first_=t.first_,this.last_=t.last_,this.length_=t.length_;t.head_=void 0,t.first_=void 0,t.last_=void 0,t.length_=0}},Jh.prototype.getLength=function(){return this.length_};var Qh=Jh,$h=function(t){this.rbush_=ua()(t,void 0),this.items_={}};$h.prototype.insert=function(t,e){var i={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(i),this.items_[o(e)]=i},$h.prototype.load=function(t,e){for(var i=new Array(e.length),r=0,n=e.length;r=s;o-=e)l=this.createPoint_(t[o],t[o+1],p++),d.push(this.insertItem_(h,l,i)),c.push([Math.min(h.x,l.x),Math.min(h.y,l.y),Math.max(h.x,l.x),Math.max(h.y,l.y)]),h=l;d.push(this.insertItem_(l,a,i)),c.push([Math.min(h.x,l.x),Math.min(h.y,l.y),Math.max(h.x,l.x),Math.max(h.y,l.y)])}r.load(c,d)},e.prototype.getMaxCoords_=function(t){var e=t.firstItem(),i=e,r=[i.p0.x,i.p0.y];do{(i=t.nextItem()).p0.x>r[0]&&(r=[i.p0.x,i.p0.y])}while(i!==e);return r},e.prototype.classifyPoints_=function(t,e,i){var r=t.firstItem(),n=r,o=t.nextItem(),s=!1;do{var a=i?xh(o.p1.x,o.p1.y,n.p1.x,n.p1.y,n.p0.x,n.p0.y):xh(n.p0.x,n.p0.y,n.p1.x,n.p1.y,o.p1.x,o.p1.y);void 0===a?(this.removeItem_(n,o,t,e),s=!0,o===r&&(r=t.getNextItem()),o=n,t.prevItem()):n.p1.reflex!==a&&(n.p1.reflex=a,s=!0),n=o,o=t.nextItem()}while(n!==r);return s},e.prototype.bridgeHole_=function(t,e,i,r,n){for(var o=t.firstItem();o.p1.x!==e;)o=t.nextItem();var s,a,h,l,u=o.p1,p={x:r,y:u.y,i:-1},c=1/0,d=this.getIntersections_({p0:u,p1:p},n,!0);for(s=0,a=d.length;s0){var y=this.getPointsInTriangle_(u,l,o.p1,n);if(y.length){var v=1/0;for(s=0,a=y.length;s3;)if(r){if(!this.clipEars_(t,e,r,i)&&!this.classifyPoints_(t,e,i)&&!this.resolveSelfIntersections_(t,e,!0))break}else if(!this.clipEars_(t,e,r,i)&&!this.classifyPoints_(t,e,i)&&!this.resolveSelfIntersections_(t,e)){if(!(r=this.isSimple_(t,e))){this.splitPolygon_(t,e);break}i=!this.isClockwise_(t),this.classifyPoints_(t,e,i)}if(3===t.getLength()){var n=this.indices.length;this.indices[n++]=t.getPrevItem().p0.i,this.indices[n++]=t.getCurrItem().p0.i,this.indices[n++]=t.getNextItem().p0.i}},e.prototype.clipEars_=function(t,e,i,r){var n,o,s,a=this.indices.length,h=t.firstItem(),l=t.getPrevItem(),u=h,p=t.nextItem(),c=t.getNextItem(),d=!1;do{if(n=u.p0,o=u.p1,s=p.p1,!1===o.reflex){var f=void 0;f=i?0===this.getPointsInTriangle_(n,o,s,e,!0).length:r?this.diagonalIsInside_(c.p1,s,o,n,l.p0):this.diagonalIsInside_(l.p0,n,o,s,c.p1),(i||0===this.getIntersections_({p0:n,p1:s},e).length)&&f&&(i||!1===n.reflex||!1===s.reflex||Si([l.p0.x,l.p0.y,n.x,n.y,o.x,o.y,s.x,s.y,c.p1.x,c.p1.y],0,10,2)===!r)&&(this.indices[a++]=n.i,this.indices[a++]=o.i,this.indices[a++]=s.i,this.removeItem_(u,p,t,e),p===h&&(h=c),d=!0)}l=t.getPrevItem(),u=t.getCurrItem(),p=t.nextItem(),c=t.getNextItem()}while(u!==h&&t.getLength()>3);return d},e.prototype.resolveSelfIntersections_=function(t,e,i){var r=t.firstItem();t.nextItem();var n=r,o=t.nextItem(),s=!1;do{var a=this.calculateIntersection_(n.p0,n.p1,o.p0,o.p1,i);if(a){var h=!1,l=this.vertices.length,u=this.indices.length,p=l/2,c=t.prevItem();t.removeItem(),e.remove(c),h=c===r;var d=void 0;if(i?(a[0]===n.p0.x&&a[1]===n.p0.y?(t.prevItem(),d=n.p0,o.p0=d,e.remove(n),h=h||n===r):(d=o.p1,n.p1=d,e.remove(o),h=h||o===r),t.removeItem()):(d=this.createPoint_(a[0],a[1],p),n.p1=d,o.p0=d,e.update([Math.min(n.p0.x,n.p1.x),Math.min(n.p0.y,n.p1.y),Math.max(n.p0.x,n.p1.x),Math.max(n.p0.y,n.p1.y)],n),e.update([Math.min(o.p0.x,o.p1.x),Math.min(o.p0.y,o.p1.y),Math.max(o.p0.x,o.p1.x),Math.max(o.p0.y,o.p1.y)],o)),this.indices[u++]=c.p0.i,this.indices[u++]=c.p1.i,this.indices[u++]=d.i,s=!0,h)break}n=t.getPrevItem(),o=t.nextItem()}while(n!==r);return s},e.prototype.isSimple_=function(t,e){var i=t.firstItem(),r=i;do{if(this.getIntersections_(r,e).length)return!1;r=t.nextItem()}while(r!==i);return!0},e.prototype.isClockwise_=function(t){var e=2*t.getLength(),i=new Array(e),r=t.firstItem(),n=r,o=0;do{i[o++]=n.p0.x,i[o++]=n.p0.y,n=t.nextItem()}while(n!==r);return Si(i,0,e,2)},e.prototype.splitPolygon_=function(t,e){var i=t.firstItem(),r=i;do{var n=this.getIntersections_(r,e);if(n.length){var o=n[0],s=this.vertices.length/2,a=this.calculateIntersection_(r.p0,r.p1,o.p0,o.p1),h=this.createPoint_(a[0],a[1],s),l=new Qh,u=new tl;this.insertItem_(h,r.p1,l,u),r.p1=h,e.update([Math.min(r.p0.x,h.x),Math.min(r.p0.y,h.y),Math.max(r.p0.x,h.x),Math.max(r.p0.y,h.y)],r);for(var p=t.nextItem();p!==o;)this.insertItem_(p.p0,p.p1,l,u),e.remove(p),t.removeItem(),p=t.getCurrItem();this.insertItem_(o.p0,h,l,u),o.p0=h,e.update([Math.min(o.p1.x,h.x),Math.min(o.p1.y,h.y),Math.max(o.p1.x,h.x),Math.max(o.p1.y,h.y)],o),this.classifyPoints_(t,e,!1),this.triangulate_(t,e),this.classifyPoints_(l,u,!1),this.triangulate_(l,u);break}r=t.nextItem()}while(r!==i)},e.prototype.createPoint_=function(t,e,i){var r=this.vertices.length;return this.vertices[r++]=t,this.vertices[r++]=e,{x:t,y:e,i:i,reflex:void 0}},e.prototype.insertItem_=function(t,e,i,r){var n={p0:t,p1:e};return i.insertItem(n),r&&r.insert([Math.min(t.x,e.x),Math.min(t.y,e.y),Math.max(t.x,e.x),Math.max(t.y,e.y)],n),n},e.prototype.removeItem_=function(t,e,i,r){i.getCurrItem()===e&&(i.removeItem(),t.p1=e.p1,r.remove(e),r.update([Math.min(t.p0.x,t.p1.x),Math.min(t.p0.y,t.p1.y),Math.max(t.p0.x,t.p1.x),Math.max(t.p0.y,t.p1.y)],t))},e.prototype.getPointsInTriangle_=function(t,e,i,r,n){for(var o=[],s=r.getInExtent([Math.min(t.x,e.x,i.x),Math.min(t.y,e.y,i.y),Math.max(t.x,e.x,i.x),Math.max(t.y,e.y,i.y)]),a=0,h=s.length;amh&&s<1-mh&&a>mh&&a<1-mh||n&&s>=0&&s<=1&&a>=0&&a<=1)return[t.x+s*(e.x-t.x),t.y+s*(e.y-t.y)]}},e.prototype.diagonalIsInside_=function(t,e,i,r,n){if(void 0===e.reflex||void 0===r.reflex)return!1;var o=(i.x-r.x)*(e.y-r.y)>(i.y-r.y)*(e.x-r.x),s=(n.x-r.x)*(e.y-r.y)<(n.y-r.y)*(e.x-r.x),a=(t.x-e.x)*(r.y-e.y)>(t.y-e.y)*(r.x-e.x),h=(i.x-e.x)*(r.y-e.y)<(i.y-e.y)*(r.x-e.x),l=r.reflex?s||o:s&&o,u=e.reflex?h||a:h&&a;return l&&u},e.prototype.drawMultiPolygon=function(t,e){var i,r,n,o,s=t.getEndss(),a=t.getStride(),h=this.indices.length,l=this.lineStringReplay.getCurrentIndex(),u=t.getFlatCoordinates(),p=0;for(i=0,r=s.length;i0){var d=Dt(u,p,c[0],a,-this.origin[0],-this.origin[1]);if(d.length){var f=[],_=void 0;for(n=1,o=c.length;nh&&(this.startIndices.push(h),this.startIndicesFeature.push(e),this.state_.changed&&(this.styleIndices_.push(h),this.state_.changed=!1)),this.lineStringReplay.getCurrentIndex()>l&&this.lineStringReplay.setPolygonStyle(e,l)},e.prototype.drawPolygon=function(t,e){var i=t.getEnds(),r=t.getStride();if(i.length>0){var n=t.getFlatCoordinates().map(Number),o=Dt(n,0,i[0],r,-this.origin[0],-this.origin[1]);if(o.length){var s,a,h,l=[];for(s=1,a=i.length;s0&&(this.styles_=[]),this.vertices=null,this.indices=null},e.prototype.getDeleteResourcesFunction=function(t){var e=this.verticesBuffer,i=this.indicesBuffer,r=this.lineStringReplay.getDeleteResourcesFunction(t);return function(){t.deleteBuffer(e),t.deleteBuffer(i),r()}},e.prototype.setUpProgram=function(t,e,i,r){var n,o=e.getProgram(Hh,Zh);return this.defaultLocations_?n=this.defaultLocations_:(n=new qh(t,o),this.defaultLocations_=n),e.useProgram(o),t.enableVertexAttribArray(n.a_position),t.vertexAttribPointer(n.a_position,2,5126,!1,8,0),n},e.prototype.shutDownProgram=function(t,e){t.disableVertexAttribArray(e.a_position)},e.prototype.drawReplay=function(t,e,i,r){var n,o,s,a,h=t.getParameter(t.DEPTH_FUNC),l=t.getParameter(t.DEPTH_WRITEMASK);if(r||(t.enable(t.DEPTH_TEST),t.depthMask(!0),t.depthFunc(t.NOTEQUAL)),d(i))for(s=this.startIndices[this.startIndices.length-1],n=this.styleIndices_.length-1;n>=0;--n)o=this.styleIndices_[n],a=this.styles_[n],this.setFillStyle_(t,a),this.drawElements(t,e,o,s),s=o;else this.drawReplaySkipping_(t,e,i);r||(t.disable(t.DEPTH_TEST),t.clear(t.DEPTH_BUFFER_BIT),t.depthMask(l),t.depthFunc(h))},e.prototype.drawHitDetectionReplayOneByOne=function(t,e,i,r,n){var s,a,h,l,u,p,c;for(c=this.startIndices.length-2,h=this.startIndices[c+1],s=this.styleIndices_.length-1;s>=0;--s)for(l=this.styles_[s],this.setFillStyle_(t,l),u=this.styleIndices_[s];c>=0&&this.startIndices[c]>=u;){if(a=this.startIndices[c],void 0===i[o(p=this.startIndicesFeature[c])]&&p.getGeometry()&&(void 0===n||Pt(n,p.getGeometry().getExtent()))){t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),this.drawElements(t,e,a,h);var d=r(p);if(d)return d}c--,h=a}},e.prototype.drawReplaySkipping_=function(t,e,i){var r,n,s,a,h,l,u;for(l=this.startIndices.length-2,s=n=this.startIndices[l+1],r=this.styleIndices_.length-1;r>=0;--r){for(a=this.styles_[r],this.setFillStyle_(t,a),h=this.styleIndices_[r];l>=0&&this.startIndices[l]>=h;)u=this.startIndices[l],i[o(this.startIndicesFeature[l])]&&(n!==s&&(this.drawElements(t,e,n,s),t.clear(t.DEPTH_BUFFER_BIT)),s=u),l--,n=u;n!==s&&(this.drawElements(t,e,n,s),t.clear(t.DEPTH_BUFFER_BIT)),n=s=h}},e.prototype.setFillStyle_=function(t,e){t.uniform4fv(this.defaultLocations_.u_color,e)},e.prototype.setFillStrokeStyle=function(t,e){var i=t?t.getColor():[0,0,0,0];if(i=i instanceof CanvasGradient||i instanceof CanvasPattern?gh:_r(i).map(function(t,e){return 3!=e?t/255:t})||gh,this.state_.fillColor&&Z(i,this.state_.fillColor)||(this.state_.fillColor=i,this.state_.changed=!0,this.styles_.push(i)),e)this.lineStringReplay.setFillStrokeStyle(null,e);else{var r=new Er({color:[0,0,0,0],width:0});this.lineStringReplay.setFillStrokeStyle(null,r)}},e}(_h),il=function(t,e){this.space_=e,this.emptyBlocks_=[{x:0,y:0,width:t,height:t}],this.entries_={},this.context_=Jn(t,t),this.canvas_=this.context_.canvas};il.prototype.get=function(t){return this.entries_[t]||null},il.prototype.add=function(t,e,i,r,n){for(var o=0,s=this.emptyBlocks_.length;o=e+this.space_&&a.height>=i+this.space_){var h={offsetX:a.x+this.space_,offsetY:a.y+this.space_,image:this.canvas_};return this.entries_[t]=h,r.call(n,this.context_,a.x+this.space_,a.y+this.space_),this.split_(o,a,e+this.space_,i+this.space_),h}}return null},il.prototype.split_=function(t,e,i,r){var n,o;e.width-i>e.height-r?(n={x:e.x+i,y:e.y,width:e.width-i,height:e.height},o={x:e.x,y:e.y+r,width:i,height:e.height-r},this.updateBlocks_(t,n,o)):(n={x:e.x+i,y:e.y,width:e.width-i,height:r},o={x:e.x,y:e.y+r,width:e.width,height:e.height-r},this.updateBlocks_(t,n,o))},il.prototype.updateBlocks_=function(t,e,i){var r=[t,1];e.width>0&&e.height>0&&r.push(e),i.width>0&&i.height>0&&r.push(i),this.emptyBlocks_.splice.apply(this.emptyBlocks_,r)};var rl=il,nl=function(t){var e=t||{};this.currentSize_=void 0!==e.initialSize?e.initialSize:256,this.maxSize_=void 0!==e.maxSize?e.maxSize:void 0!==nh?nh:2048,this.space_=void 0!==e.space?e.space:1,this.atlases_=[new rl(this.currentSize_,this.space_)],this.currentHitSize_=this.currentSize_,this.hitAtlases_=[new rl(this.currentHitSize_,this.space_)]};nl.prototype.getInfo=function(t){var e=this.getInfo_(this.atlases_,t);if(!e)return null;var i=this.getInfo_(this.hitAtlases_,t);return this.mergeInfos_(e,i)},nl.prototype.getInfo_=function(t,e){for(var i=0,r=t.length;ithis.maxSize_||i+this.space_>this.maxSize_)return null;var s=this.add_(!1,t,e,i,r,o);if(!s)return null;var a=void 0!==n?n:I,h=this.add_(!0,t,e,i,a,o);return this.mergeInfos_(s,h)},nl.prototype.add_=function(t,e,i,r,n,o){var s,a,h,l,u=t?this.hitAtlases_:this.atlases_;for(h=0,l=u.length;h=0;--d)if(void 0!==(_=f[Ea[d]])&&(g=_.replay(t,e,i,r,n,o,s,a,h,l,u)))return g},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,r,n,o,s,a,h,l){var u,p=e.getGL();return p.bindFramebuffer(p.FRAMEBUFFER,e.getHitDetectionFramebuffer()),void 0!==this.renderBuffer_&&(u=et(pt(t),r*this.renderBuffer_)),this.replayHitDetection_(e,t,r,n,al,s,a,h,function(t){var e=new Uint8Array(4);if(p.readPixels(0,0,1,1,p.RGBA,p.UNSIGNED_BYTE,e),e[3]>0){var i=l(t);if(i)return i}},!0,u)},e.prototype.hasFeatureAtCoordinate=function(t,e,i,r,n,o,s,a,h){var l=e.getGL();return l.bindFramebuffer(l.FRAMEBUFFER,e.getHitDetectionFramebuffer()),void 0!==this.replayHitDetection_(e,t,r,n,al,s,a,h,function(t){var e=new Uint8Array(4);return l.readPixels(0,0,1,1,l.RGBA,l.UNSIGNED_BYTE,e),e[3]>0},!1)},e}(ca),ul=function(t){function e(e,i,r,n,o,s,a){t.call(this),this.context_=e,this.center_=i,this.extent_=s,this.pixelRatio_=a,this.size_=o,this.rotation_=n,this.resolution_=r,this.imageStyle_=null,this.fillStyle_=null,this.strokeStyle_=null,this.textStyle_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.drawText_=function(t,e){var i=this.context_,r=t.getReplay(0,da.TEXT);r.setTextStyle(this.textStyle_),r.drawText(e,null),r.finish(i);r.replay(this.context_,this.center_,this.resolution_,this.rotation_,this.size_,this.pixelRatio_,1,{},void 0,!1),r.getDeleteResourcesFunction(i)()},e.prototype.setStyle=function(t){this.setFillStrokeStyle(t.getFill(),t.getStroke()),this.setImageStyle(t.getImage()),this.setTextStyle(t.getText())},e.prototype.drawGeometry=function(t){switch(t.getType()){case Nt.POINT:this.drawPoint(t,null);break;case Nt.LINE_STRING:this.drawLineString(t,null);break;case Nt.POLYGON:this.drawPolygon(t,null);break;case Nt.MULTI_POINT:this.drawMultiPoint(t,null);break;case Nt.MULTI_LINE_STRING:this.drawMultiLineString(t,null);break;case Nt.MULTI_POLYGON:this.drawMultiPolygon(t,null);break;case Nt.GEOMETRY_COLLECTION:this.drawGeometryCollection(t,null);break;case Nt.CIRCLE:this.drawCircle(t,null)}},e.prototype.drawFeature=function(t,e){var i=e.getGeometryFunction()(t);i&&Pt(this.extent_,i.getExtent())&&(this.setStyle(e),this.drawGeometry(i))},e.prototype.drawGeometryCollection=function(t,e){var i,r,n=t.getGeometriesArray();for(i=0,r=n.length;in[0]||o[1]<0||o[1]>n[1])){this.hitCanvasContext_||(this.hitCanvasContext_=Jn(1,1)),this.hitCanvasContext_.clearRect(0,0,1,1),this.hitCanvasContext_.drawImage(this.image_.getImage(),o[0],o[1],1,1,0,0,1,1);var s=this.hitCanvasContext_.getImageData(0,0,1,1).data;return s[3]>0?i.call(r,this.getLayer(),s):void 0}}},e.prototype.getHitTransformationMatrix_=function(t,e){var i=[1,0,0,1,0,0];Ue(i,-1,-1),je(i,2/t[0],2/t[1]),Ue(i,0,t[1]),je(i,1,-1);var r=Be(this.projectionMatrix.slice()),n=[1,0,0,1,0,0];return Ue(n,0,e[1]),je(n,1,-1),je(n,e[0]/2,e[1]/2),Ue(n,1,1),Ae(n,r),Ae(n,i),n},e}(fl);_l.handles=function(t){return t.getType()===Ss.IMAGE},_l.create=function(t,e){return new _l(t,e)};var gl=_l,yl=function(t){function e(e){t.call(this,e);var i=e.getViewport();this.canvas_=document.createElement("canvas"),this.canvas_.style.width="100%",this.canvas_.style.height="100%",this.canvas_.style.display="block",this.canvas_.className=fo,i.insertBefore(this.canvas_,i.childNodes[0]||null),this.clipTileCanvasWidth_=0,this.clipTileCanvasHeight_=0,this.clipTileContext_=Jn(),this.renderedVisible_=!0,this.gl_=rh(this.canvas_,{antialias:!0,depth:!0,failIfMajorPerformanceCaveat:!0,preserveDrawingBuffer:!1,stencil:!0}),this.context_=new Mh(this.canvas_,this.gl_),v(this.canvas_,Lh.LOST,this.handleWebGLContextLost,this),v(this.canvas_,Lh.RESTORED,this.handleWebGLContextRestored,this),this.textureCache_=new Rs,this.focus_=null,this.tileTextureQueue_=new bn(function(t){var e=t[1],i=t[2],r=e[0]-this.focus_[0],n=e[1]-this.focus_[1];return 65536*Math.log(i)+Math.sqrt(r*r+n*n)/i}.bind(this),function(t){return t[0].getKey()}),this.loadNextTileTexture_=function(t,e){if(!this.tileTextureQueue_.isEmpty()){this.tileTextureQueue_.reprioritize();var i=this.tileTextureQueue_.dequeue(),r=i[0],n=i[3],o=i[4];this.bindTileTexture(r,n,o,Qa,Qa)}return!1}.bind(this),this.textureCacheFrameMarkerCount_=0,this.initializeGL_()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.bindTileTexture=function(t,e,i,r,n){var o=this.getGL(),s=t.getKey();if(this.textureCache_.containsKey(s)){var a=this.textureCache_.get(s);o.bindTexture(eh,a.texture),a.magFilter!=r&&(o.texParameteri(eh,10240,r),a.magFilter=r),a.minFilter!=n&&(o.texParameteri(eh,10241,n),a.minFilter=n)}else{var h=o.createTexture(),l=t;if(o.bindTexture(eh,h),i>0){var u=this.clipTileContext_.canvas,p=this.clipTileContext_;this.clipTileCanvasWidth_!==e[0]||this.clipTileCanvasHeight_!==e[1]?(u.width=e[0],u.height=e[1],this.clipTileCanvasWidth_=e[0],this.clipTileCanvasHeight_=e[1]):p.clearRect(0,0,e[0],e[1]),p.drawImage(l.getImage(),i,i,e[0],e[1],0,0,e[0],e[1]),o.texImage2D(eh,0,6408,6408,5121,u)}else o.texImage2D(eh,0,6408,6408,5121,l.getImage());o.texParameteri(eh,10240,r),o.texParameteri(eh,10241,n),o.texParameteri(eh,$a,33071),o.texParameteri(eh,th,33071),this.textureCache_.set(s,{texture:h,magFilter:r,minFilter:n})}},e.prototype.dispatchRenderEvent=function(t,e){var i=this.getMap();if(i.hasListener(t)){var r=this.context_,n=e.extent,o=e.size,s=e.viewState,a=e.pixelRatio,h=s.resolution,l=s.center,u=s.rotation,p=new ul(r,l,h,u,o,n,a),c=new Cs(t,p,e,null,r);i.dispatchEvent(c)}},e.prototype.disposeInternal=function(){var e=this.getGL();e.isContextLost()||this.textureCache_.forEach(function(t){t&&e.deleteTexture(t.texture)}),this.context_.dispose(),t.prototype.disposeInternal.call(this)},e.prototype.expireCache_=function(t,e){for(var i,r=this.getGL();this.textureCache_.getCount()-this.textureCacheFrameMarkerCount_>1024;){if(i=this.textureCache_.peekLast())r.deleteTexture(i.texture);else{if(+this.textureCache_.peekLastKey()==e.index)break;--this.textureCacheFrameMarkerCount_}this.textureCache_.pop()}},e.prototype.getContext=function(){return this.context_},e.prototype.getGL=function(){return this.gl_},e.prototype.getTileTextureQueue=function(){return this.tileTextureQueue_},e.prototype.handleWebGLContextLost=function(t){t.preventDefault(),this.textureCache_.clear(),this.textureCacheFrameMarkerCount_=0;var e=this.getLayerRenderers();for(var i in e){e[i].handleWebGLContextLost()}},e.prototype.handleWebGLContextRestored=function(){this.initializeGL_(),this.getMap().render()},e.prototype.initializeGL_=function(){var t=this.gl_;t.activeTexture(33984),t.blendFuncSeparate(770,771,1,771),t.disable(2884),t.disable(2929),t.disable(3089),t.disable(2960)},e.prototype.isTileTextureLoaded=function(t){return this.textureCache_.containsKey(t.getKey())},e.prototype.renderFrame=function(t){var e=this.getContext(),i=this.getGL();if(i.isContextLost())return!1;if(!t)return this.renderedVisible_&&(this.canvas_.style.display="none",this.renderedVisible_=!1),!1;this.focus_=t.focus,this.textureCache_.set((-t.index).toString(),null),++this.textureCacheFrameMarkerCount_,this.dispatchRenderEvent(ur.PRECOMPOSE,t);var r=[],n=t.layerStatesArray;q(n,Zs);var o,s,a=t.viewState.resolution;for(o=0,s=n.length;o1024&&t.postRenderFunctions.push(this.expireCache_.bind(this)),this.tileTextureQueue_.isEmpty()||(t.postRenderFunctions.push(this.loadNextTileTexture_),t.animate=!0),this.dispatchRenderEvent(ur.POSTCOMPOSE,t),this.scheduleRemoveUnusedLayerRenderers(t),this.scheduleExpireIconCache(t)},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,r,n,o,s){var a;if(this.getGL().isContextLost())return!1;var h,l=e.viewState,u=e.layerStatesArray;for(h=u.length-1;h>=0;--h){var p=u[h],c=p.layer;if(mo(p,l.resolution)&&o.call(s,c))if(a=this.getLayerRenderer(c).forEachFeatureAtCoordinate(t,e,i,r))return a}},e.prototype.hasFeatureAtCoordinate=function(t,e,i,r,n){var o=!1;if(this.getGL().isContextLost())return!1;var s,a=e.viewState,h=e.layerStatesArray;for(s=h.length-1;s>=0;--s){var l=h[s],u=l.layer;if(mo(l,a.resolution)&&r.call(n,u))if(o=this.getLayerRenderer(u).hasFeatureAtCoordinate(t,e))return!0}return o},e.prototype.forEachLayerAtPixel=function(t,e,i,r,n,o,s){if(this.getGL().isContextLost())return!1;var a,h,l=e.viewState,u=e.layerStatesArray;for(h=u.length-1;h>=0;--h){var p=u[h],c=p.layer;if(mo(p,l.resolution)&&o.call(n,c))if(a=this.getLayerRenderer(c).forEachLayerAtPixel(t,e,r,n))return a}},e}(qs),vl=function(t){function e(e,i,r){t.call(this);var n=r||{};this.tileCoord=e,this.state=i,this.interimTile=null,this.key="",this.transition_=void 0===n.transition?250:n.transition,this.transitionStarts_={}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.changed=function(){this.dispatchEvent(M.CHANGE)},e.prototype.getKey=function(){return this.key+"/"+this.tileCoord},e.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==On.LOADED)return t;t=t.interimTile}while(t);return this},e.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==On.LOADED){t.interimTile=null;break}t.getState()==On.LOADING?e=t:t.getState()==On.IDLE?e.interimTile=t.interimTile:e=t,t=e.interimTile}while(t)}},e.prototype.getTileCoord=function(){return this.tileCoord},e.prototype.getState=function(){return this.state},e.prototype.setState=function(t){this.state=t,this.changed()},e.prototype.load=function(){},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var i=this.transitionStarts_[t];if(i){if(-1===i)return 1}else i=e,this.transitionStarts_[t]=i;var r=e-i+1e3/60;return r>=this.transition_?1:Vn(r/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}(b);function ml(){var t=Jn(1,1);return t.fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas}var xl=function(t){function e(e,i,r,n,o,s){t.call(this,e,i,s),this.crossOrigin_=n,this.src_=r,this.image_=new Image,null!==n&&(this.image_.crossOrigin=n),this.imageListenerKeys_=null,this.tileLoadFunction_=o}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.state==On.LOADING&&(this.unlistenImage_(),this.image_=ml()),this.interimTile&&this.interimTile.dispose(),this.state=On.ABORT,this.changed(),t.prototype.disposeInternal.call(this)},e.prototype.getImage=function(){return this.image_},e.prototype.getKey=function(){return this.src_},e.prototype.handleImageError_=function(){this.state=On.ERROR,this.unlistenImage_(),this.image_=ml(),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=On.LOADED:this.state=On.EMPTY,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==On.ERROR&&(this.state=On.IDLE,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==On.IDLE&&(this.state=On.LOADING,this.changed(),this.imageListenerKeys_=[m(this.image_,M.ERROR,this.handleImageError_,this),m(this.image_,M.LOAD,this.handleImageLoad_,this)],this.tileLoadFunction_(this,this.src_))},e.prototype.unlistenImage_=function(){this.imageListenerKeys_.forEach(E),this.imageListenerKeys_=null},e}(vl);function El(t,e,i,r){return void 0!==r?(r[0]=t,r[1]=e,r[2]=i,r):[t,e,i]}function Sl(t,e,i){return t+"/"+e+"/"+i}function Tl(t){return Sl(t[0],t[1],t[2])}function Cl(t){return(t[1]<0||i&&0===o)})}(this.resolutions_,function(t,e){return e-t},!0),17),!t.origins)for(var i=0,r=this.resolutions_.length-1;i=this.minZoom;){if(o=2===this.zoomFactor_?oa(s=Math.floor(s/2),s,a=Math.floor(a/2),a,r):this.getTileRangeForExtentAndZ(h,l,r),e.call(i,l,o))return!0;--l}return!1},Ol.prototype.getExtent=function(){return this.extent_},Ol.prototype.getMaxZoom=function(){return this.maxZoom},Ol.prototype.getMinZoom=function(){return this.minZoom},Ol.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},Ol.prototype.getResolution=function(t){return this.resolutions_[t]},Ol.prototype.getResolutions=function(){return this.resolutions_},Ol.prototype.getTileCoordChildTileRange=function(t,e,i){if(t[0]i||i>e.getMaxZoom())return!1;var o,s=e.getExtent();return!(o=s?e.getTileRangeForExtentAndZ(s,i):e.getFullTileRange(i))||o.containsXY(r,n)}(t,r)?t:null},e.prototype.refresh=function(){this.tileCache.clear(),this.changed()},e.prototype.useTile=function(t,e,i,r){},e}(Il),kl=function(t){function e(e,i){t.call(this,e),this.tile=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P),jl=Dl,Ul=new lh("precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor = texture2D(u_texture, v_texCoord);\n}\n"),Yl=new uh("varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nuniform vec4 u_tileOffset;\n\nvoid main(void) {\n gl_Position = vec4(a_position * u_tileOffset.xy + u_tileOffset.zw, 0., 1.);\n v_texCoord = a_texCoord;\n}\n\n\n"),Bl=function(t,e){this.u_tileOffset=t.getUniformLocation(e,"u_tileOffset"),this.u_texture=t.getUniformLocation(e,"u_texture"),this.a_position=t.getAttribLocation(e,"a_position"),this.a_texCoord=t.getAttribLocation(e,"a_texCoord")},Vl=function(t){function e(e,i){t.call(this,e,i),this.fragmentShader_=Ul,this.vertexShader_=Yl,this.locations_=null,this.renderArrayBuffer_=new Th([0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0]),this.renderedTileRange_=null,this.renderedFramebufferExtent_=null,this.renderedRevision_=-1,this.tmpSize_=[0,0]}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.mapRenderer.getContext().deleteBuffer(this.renderArrayBuffer_),t.prototype.disposeInternal.call(this)},e.prototype.createLoadedTileFinder=function(t,e,i){var r=this.mapRenderer;return function(n,o){return t.forEachLoadedTile(e,n,o,function(t){var e=r.isTileTextureLoaded(t);return e&&(i[n]||(i[n]={}),i[n][t.tileCoord.toString()]=t),e})}},e.prototype.handleWebGLContextLost=function(){t.prototype.handleWebGLContextLost.call(this),this.locations_=null},e.prototype.prepareFrame=function(t,e,i){var r=this.mapRenderer,n=i.getGL(),o=t.viewState,s=o.projection,a=this.getLayer(),h=a.getSource();if(!(h instanceof jl))return!0;var l,u=h.getTileGridForProjection(s),p=u.getZForResolution(o.resolution),c=u.getResolution(p),d=h.getTilePixelSize(p,t.pixelRatio,s),f=d[0]/ho(u.getTileSize(p),this.tmpSize_)[0],_=c/f,g=h.getTilePixelRatio(f)*h.getGutterForProjection(s),y=o.center,v=t.extent,m=u.getTileRangeForExtentAndZ(v,p);if(this.renderedTileRange_&&this.renderedTileRange_.equals(m)&&this.renderedRevision_==h.getRevision())l=this.renderedFramebufferExtent_;else{var x=m.getSize(),E=function(t){return Y(00?i.call(r,this.getLayer(),h):void 0}},e}(fl);Vl.handles=function(t){return t.getType()===Ss.TILE},Vl.create=function(t,e){return new Vl(t,e)};var Xl=Vl,zl=function(t){function e(e,i){t.call(this,e,i),this.dirty_=!1,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=[1/0,1/0,-1/0,-1/0],this.renderedRenderOrder_=null,this.replayGroup_=null,this.layerState_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.composeFrame=function(t,e,i){this.layerState_=e;var r=t.viewState,n=this.replayGroup_,o=t.size,s=t.pixelRatio,a=this.mapRenderer.getGL();n&&!n.isEmpty()&&(a.enable(a.SCISSOR_TEST),a.scissor(0,0,o[0]*s,o[1]*s),n.replay(i,r.center,r.resolution,r.rotation,o,s,e.opacity,e.managed?t.skippedFeatureUids:{}),a.disable(a.SCISSOR_TEST))},e.prototype.disposeInternal=function(){var e=this.replayGroup_;if(e){var i=this.mapRenderer.getContext();e.getDeleteResourcesFunction(i)(),this.replayGroup_=null}t.prototype.disposeInternal.call(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,r,n){if(this.replayGroup_&&this.layerState_){var s=this.mapRenderer.getContext(),a=e.viewState,h=this.getLayer(),l=this.layerState_,u={};return this.replayGroup_.forEachFeatureAtCoordinate(t,s,a.center,a.resolution,a.rotation,e.size,e.pixelRatio,l.opacity,{},function(t){var e=o(t);if(!(e in u))return u[e]=!0,r.call(n,t,h)})}},e.prototype.hasFeatureAtCoordinate=function(t,e){if(this.replayGroup_&&this.layerState_){var i=this.mapRenderer.getContext(),r=e.viewState,n=this.layerState_;return this.replayGroup_.hasFeatureAtCoordinate(t,i,r.center,r.resolution,r.rotation,e.size,e.pixelRatio,n.opacity,e.skippedFeatureUids)}return!1},e.prototype.forEachLayerAtPixel=function(t,e,i,r){var n=De(e.pixelToCoordinateTransform,t.slice());return this.hasFeatureAtCoordinate(n,e)?i.call(r,this.getLayer(),null):void 0},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.prepareFrame=function(t,e,i){var r=this.getLayer(),n=r.getSource(),o=t.viewHints[kn],s=t.viewHints[jn],a=r.getUpdateWhileAnimating(),h=r.getUpdateWhileInteracting();if(!this.dirty_&&!a&&o||!h&&s)return!0;var l=t.extent,u=t.viewState,p=u.projection,c=u.resolution,d=t.pixelRatio,f=r.getRevision(),_=r.getRenderBuffer(),g=r.getRenderOrder();void 0===g&&(g=Da);var y=et(l,_*c);if(!this.dirty_&&this.renderedResolution_==c&&this.renderedRevision_==f&&this.renderedRenderOrder_==g&&ot(this.renderedExtent_,y))return!0;this.replayGroup_&&t.postRenderFunctions.push(this.replayGroup_.getDeleteResourcesFunction(i)),this.dirty_=!1;var v=new ll(ja(c,d),y,r.getRenderBuffer());n.loadFeatures(y,c,p);var m=function(t){var e,i=t.getStyleFunction()||r.getStyleFunction();if(i&&(e=i(t,c)),e){var n=this.renderFeature(t,c,d,e,v);this.dirty_=this.dirty_||n}}.bind(this);if(g){var x=[];n.forEachFeatureInExtent(y,function(t){x.push(t)}),x.sort(g),x.forEach(m.bind(this))}else n.forEachFeatureInExtent(y,m);return v.finish(i),this.renderedResolution_=c,this.renderedRevision_=f,this.renderedRenderOrder_=g,this.renderedExtent_=y,this.replayGroup_=v,!0},e.prototype.renderFeature=function(t,e,i,r,n){if(!r)return!1;var o=!1;if(Array.isArray(r))for(var s=r.length-1;s>=0;--s)o=Ua(n,t,r[s],ka(e,i),this.handleStyleImageChange_,this)||o;else o=Ua(n,t,r,ka(e,i),this.handleStyleImageChange_,this)||o;return o},e}(fl);zl.handles=function(t){return t.getType()===Ss.VECTOR},zl.create=function(t,e){return new zl(t,e)};var Wl=zl,Kl=function(t){function e(e){(e=u({},e)).controls||(e.controls=wo()),e.interactions||(e.interactions=ys()),t.call(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createRenderer=function(){var t=new yl(this);return t.registerLayerRenderers([gl,Xl,Wl]),t},e}(lo),Hl={ARRAY_BUFFER:"arraybuffer",JSON:"json",TEXT:"text",XML:"xml"};function Zl(t,e,i,r){return function(n,o,s){var a=new XMLHttpRequest;a.open("GET","function"==typeof t?t(n,o,s):t,!0),e.getType()==Hl.ARRAY_BUFFER&&(a.responseType="arraybuffer"),a.onload=function(t){if(!a.status||a.status>=200&&a.status<300){var n,o=e.getType();o==Hl.JSON||o==Hl.TEXT?n=a.responseText:o==Hl.XML?(n=a.responseXML)||(n=(new DOMParser).parseFromString(a.responseText,"application/xml")):o==Hl.ARRAY_BUFFER&&(n=a.response),n?i.call(this,e.readFeatures(n,{featureProjection:s}),e.readProjection(n),e.getLastExtent()):r.call(this)}else r.call(this)}.bind(this),a.onerror=function(){r.call(this)}.bind(this),a.send()}}function ql(t,e){return Zl(t,e,function(t,e){"function"==typeof this.addFeatures&&this.addFeatures(t)},I)}function Jl(t,e){return[[-1/0,-1/0,1/0,1/0]]}var Ql=document.implementation.createDocument("","",null),$l="http://www.w3.org/2001/XMLSchema-instance";function tu(t,e){return Ql.createElementNS(t,e)}function eu(t,e){return function t(e,i,r){if(e.nodeType==Node.CDATA_SECTION_NODE||e.nodeType==Node.TEXT_NODE)i?r.push(String(e.nodeValue).replace(/(\r\n|\r|\n)/g,"")):r.push(e.nodeValue);else{var n;for(n=e.firstChild;n;n=n.nextSibling)t(n,i,r)}return r}(t,e,[]).join("")}function iu(t){return"documentElement"in t}function ru(t){return(new DOMParser).parseFromString(t,"application/xml")}function nu(t,e){return function(i,r){var n=t.call(void 0!==e?e:this,i,r);void 0!==n&&K(r[r.length-1],n)}}function ou(t,e){return function(i,r){var n=t.call(void 0!==e?e:this,i,r);void 0!==n&&r[r.length-1].push(n)}}function su(t,e){return function(i,r){var n=t.call(void 0!==e?e:this,i,r);void 0!==n&&(r[r.length-1]=n)}}function au(t,e,i){return function(r,n){var o=t.call(void 0!==i?i:this,r,n);if(void 0!==o){var s=n[n.length-1],a=void 0!==e?e:r.localName;(a in s?s[a]:s[a]=[]).push(o)}}}function hu(t,e,i){return function(r,n){var o=t.call(void 0!==i?i:this,r,n);void 0!==o&&(n[n.length-1][void 0!==e?e:r.localName]=o)}}function lu(t,e){return function(i,r,n){t.call(void 0!==e?e:this,i,r,n),n[n.length-1].node.appendChild(i)}}function uu(t,e){var i,r;return function(e,n,o){if(void 0===i){i={};var s={};s[e.localName]=t,i[e.namespaceURI]=s,r=pu(e.localName)}yu(i,r,n,o)}}function pu(t,e){var i=t;return function(t,r,n){var o=r[r.length-1].node,s=i;return void 0===s&&(s=n),tu(void 0!==e?e:o.namespaceURI,s)}}var cu=pu();function du(t,e){for(var i=e.length,r=new Array(i),n=0;n0)||H(h,function(i){return e.Identifier==i.TileMatrix||-1===e.Identifier.indexOf(":")&&t.Identifier+":"+e.Identifier===i.TileMatrix})){n.push(e.Identifier);var i=28e-5*e.ScaleDenominator/p,l=e.TileWidth,u=e.TileHeight;c?o.push([e.TopLeftCorner[1],e.TopLeftCorner[0]]):o.push(e.TopLeftCorner),r.push(i),s.push(l==u?l:[l,u]),a.push([e.MatrixWidth,-e.MatrixHeight])}}),new mu({extent:e,origins:o,resolutions:r,matrixIds:n,tileSizes:s,sizes:a})}var Su=function(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale};Su.prototype.clone=function(){return new Su({opacity:this.getOpacity(),scale:this.getScale(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},Su.prototype.getOpacity=function(){return this.opacity_},Su.prototype.getRotateWithView=function(){return this.rotateWithView_},Su.prototype.getRotation=function(){return this.rotation_},Su.prototype.getScale=function(){return this.scale_},Su.prototype.getSnapToPixel=function(){return!1},Su.prototype.getAnchor=function(){return r()},Su.prototype.getImage=function(t){return r()},Su.prototype.getHitDetectionImage=function(t){return r()},Su.prototype.getImageState=function(){return r()},Su.prototype.getImageSize=function(){return r()},Su.prototype.getHitDetectionImageSize=function(){return r()},Su.prototype.getOrigin=function(){return r()},Su.prototype.getSize=function(){return r()},Su.prototype.setOpacity=function(t){this.opacity_=t},Su.prototype.setRotateWithView=function(t){this.rotateWithView_=t},Su.prototype.setRotation=function(t){this.rotation_=t},Su.prototype.setScale=function(t){this.scale_=t},Su.prototype.setSnapToPixel=function(t){},Su.prototype.listenImageChange=function(t,e){return r()},Su.prototype.load=function(){r()},Su.prototype.unlistenImageChange=function(t,e){r()};var Tu=Su,Cu=function(t){function e(e){var i=void 0!==e.rotateWithView&&e.rotateWithView;t.call(this,{opacity:1,rotateWithView:i,rotation:void 0!==e.rotation?e.rotation:0,scale:1}),this.checksums_=null,this.canvas_=null,this.hitDetectionCanvas_=null,this.fill_=void 0!==e.fill?e.fill:null,this.origin_=[0,0],this.points_=e.points,this.radius_=void 0!==e.radius?e.radius:e.radius1,this.radius2_=e.radius2,this.angle_=void 0!==e.angle?e.angle:0,this.stroke_=void 0!==e.stroke?e.stroke:null,this.anchor_=null,this.size_=null,this.imageSize_=null,this.hitDetectionImageSize_=null,this.atlasManager_=e.atlasManager,this.render_(this.atlasManager_)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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(),atlasManager:this.atlasManager_});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 xs.LOADED},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){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t,e){},e.prototype.render_=function(t){var e,i,r="",n="",o=0,s=null,a=0,h=0;this.stroke_&&(null===(i=this.stroke_.getColor())&&(i=Ls),i=Ys(i),void 0===(h=this.stroke_.getWidth())&&(h=1),s=this.stroke_.getLineDash(),a=this.stroke_.getLineDashOffset(),ki||(s=null,a=0),void 0===(n=this.stroke_.getLineJoin())&&(n="round"),void 0===(r=this.stroke_.getLineCap())&&(r="round"),void 0===(o=this.stroke_.getMiterLimit())&&(o=10));var l=2*(this.radius_+h)+1,u={strokeStyle:i,strokeWidth:h,size:l,lineCap:r,lineDash:s,lineDashOffset:a,lineJoin:n,miterLimit:o};if(void 0===t){var p=Jn(l,l);this.canvas_=p.canvas,e=l=this.canvas_.width,this.draw_(u,p,0,0),this.createHitDetectionCanvas_(u)}else{l=Math.round(l);var c,d=!this.fill_;d&&(c=this.drawHitDetectionCanvas_.bind(this,u));var f=this.getChecksum(),_=t.add(f,l,l,this.draw_.bind(this,u),c);this.canvas_=_.image,this.origin_=[_.offsetX,_.offsetY],e=_.image.width,d?(this.hitDetectionCanvas_=_.hitImage,this.hitDetectionImageSize_=[_.hitImage.width,_.hitImage.height]):(this.hitDetectionCanvas_=this.canvas_,this.hitDetectionImageSize_=[e,e])}this.anchor_=[l/2,l/2],this.size_=[l,l],this.imageSize_=[e,e]},e.prototype.draw_=function(t,e,i,r){var n,o,s;e.setTransform(1,0,0,1,0,0),e.translate(i,r),e.beginPath();var a=this.points_;if(a===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var h=void 0!==this.radius2_?this.radius2_:this.radius_;for(h!==this.radius_&&(a*=2),n=0;n<=a;n++)o=2*n*Math.PI/a-Math.PI/2+this.angle_,s=n%2==0?this.radius_:h,e.lineTo(t.size/2+s*Math.cos(o),t.size/2+s*Math.sin(o))}if(this.fill_){var l=this.fill_.getColor();null===l&&(l=ws),e.fillStyle=Ys(l),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,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.fill_)this.hitDetectionCanvas_=this.canvas_;else{var e=Jn(t.size,t.size);this.hitDetectionCanvas_=e.canvas,this.drawHitDetectionCanvas_(t,e,0,0)}},e.prototype.drawHitDetectionCanvas_=function(t,e,i,r){e.setTransform(1,0,0,1,0,0),e.translate(i,r),e.beginPath();var n=this.points_;if(n===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o,s,a,h=void 0!==this.radius2_?this.radius2_:this.radius_;for(h!==this.radius_&&(n*=2),o=0;o<=n;o++)a=2*o*Math.PI/n-Math.PI/2+this.angle_,s=o%2==0?this.radius_:h,e.lineTo(t.size/2+s*Math.cos(a),t.size/2+s*Math.sin(a))}e.fillStyle=dr(ws),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.prototype.getChecksum=function(){var t=this.stroke_?this.stroke_.getChecksum():"-",e=this.fill_?this.fill_.getChecksum():"-";if(!this.checksums_||t!=this.checksums_[1]||e!=this.checksums_[2]||this.radius_!=this.checksums_[3]||this.radius2_!=this.checksums_[4]||this.angle_!=this.checksums_[5]||this.points_!=this.checksums_[6]){var i="r"+t+e+(void 0!==this.radius_?this.radius_.toString():"-")+(void 0!==this.radius2_?this.radius2_.toString():"-")+(void 0!==this.angle_?this.angle_.toString():"-")+(void 0!==this.points_?this.points_.toString():"-");this.checksums_=[i,t,e,this.radius_,this.radius2_,this.angle_,this.points_]}return this.checksums_[0]},e}(Tu),Ru=function(t){function e(e){var i=e||{};t.call(this,{points:1/0,fill:i.fill,radius:i.radius,stroke:i.stroke,atlasManager:i.atlasManager})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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(),atlasManager:this.atlasManager_});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.setRadius=function(t){this.radius_=t,this.render_(this.atlasManager_)},e}(Cu),wu={FRACTION:"fraction",PIXELS:"pixels"},Iu=function(t){function e(e,i,r,n,o,s){t.call(this),this.hitDetectionImage_=null,this.image_=e||new Image,null!==n&&(this.image_.crossOrigin=n),this.canvas_=s?document.createElement("canvas"):null,this.color_=s,this.imageListenerKeys_=null,this.imageState_=o,this.size_=r,this.src_=i,this.tainted_}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===xs.LOADED){this.tainted_=!1;var t=Jn(1,1);try{t.drawImage(this.image_,0,0),t.getImageData(0,0,1,1)}catch(t){this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(M.CHANGE)},e.prototype.handleImageError_=function(){this.imageState_=xs.ERROR,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=xs.LOADED,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],i=this.size_[1],r=Jn(e,i);r.fillRect(0,0,e,i),this.hitDetectionImage_=r.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_==xs.IDLE){this.imageState_=xs.LOADING,this.imageListenerKeys_=[m(this.image_,M.ERROR,this.handleImageError_,this),m(this.image_,M.LOAD,this.handleImageLoad_,this)];try{this.image_.src=this.src_}catch(t){this.handleImageError_()}}},e.prototype.replaceColor_=function(){if(this.color_&&!this.isTainted_()){this.canvas_.width=this.image_.width,this.canvas_.height=this.image_.height;var t=this.canvas_.getContext("2d");t.drawImage(this.image_,0,0);for(var e=t.getImageData(0,0,this.image_.width,this.image_.height),i=e.data,r=this.color_[0]/255,n=this.color_[1]/255,o=this.color_[2]/255,s=0,a=i.length;s0,6);var p=void 0!==i.src?xs.IDLE:xs.LOADED;this.color_=void 0!==i.color?_r(i.color):null,this.iconImage_=function(t,e,i,r,n,o){var s=Ks.get(e,r,o);return s||(s=new Iu(t,e,i,r,n,o),Ks.set(e,r,o,s)),s}(h,u,l,this.crossOrigin_,p,this.color_),this.offset_=void 0!==i.offset?i.offset:[0,0],this.offsetOrigin_=void 0!==i.offsetOrigin?i.offsetOrigin:Lu.TOP_LEFT,this.origin_=null,this.size_=void 0!==i.size?i.size:null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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_==wu.FRACTION||this.anchorYUnits_==wu.FRACTION){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==wu.FRACTION&&(t[0]*=e[0]),this.anchorYUnits_==wu.FRACTION&&(t[1]*=e[1])}if(this.anchorOrigin_!=Lu.TOP_LEFT){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=Lu.TOP_RIGHT&&this.anchorOrigin_!=Lu.BOTTOM_RIGHT||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=Lu.BOTTOM_LEFT&&this.anchorOrigin_!=Lu.BOTTOM_RIGHT||(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_;if(this.offsetOrigin_!=Lu.TOP_LEFT){var e=this.getSize(),i=this.iconImage_.getSize();if(!e||!i)return null;t=t.slice(),this.offsetOrigin_!=Lu.TOP_RIGHT&&this.offsetOrigin_!=Lu.BOTTOM_RIGHT||(t[0]=i[0]-e[0]-t[0]),this.offsetOrigin_!=Lu.BOTTOM_LEFT&&this.offsetOrigin_!=Lu.BOTTOM_RIGHT||(t[1]=i[1]-e[1]-t[1])}return 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,e){return v(this.iconImage_,M.CHANGE,t,e)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t,e){x(this.iconImage_,M.CHANGE,t,e)},e}(Tu),Pu=function(t){var e=t||{};this.geometry_=null,this.geometryFunction_=Au,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};Pu.prototype.clone=function(){var t=this.getGeometry();return t&&"object"==typeof t&&(t=t.clone()),new Pu({geometry:t,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()})},Pu.prototype.getRenderer=function(){return this.renderer_},Pu.prototype.setRenderer=function(t){this.renderer_=t},Pu.prototype.getGeometry=function(){return this.geometry_},Pu.prototype.getGeometryFunction=function(){return this.geometryFunction_},Pu.prototype.getFill=function(){return this.fill_},Pu.prototype.setFill=function(t){this.fill_=t},Pu.prototype.getImage=function(){return this.image_},Pu.prototype.setImage=function(t){this.image_=t},Pu.prototype.getStroke=function(){return this.stroke_},Pu.prototype.setStroke=function(t){this.stroke_=t},Pu.prototype.getText=function(){return this.text_},Pu.prototype.setText=function(t){this.text_=t},Pu.prototype.getZIndex=function(){return this.zIndex_},Pu.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_=Au,this.geometry_=t},Pu.prototype.setZIndex=function(t){this.zIndex_=t};var bu=null;function Mu(t,e){if(!bu){var i=new mr({color:"rgba(255,255,255,0.4)"}),r=new Er({color:"#3399CC",width:1.25});bu=[new Pu({image:new Ru({fill:i,stroke:r,radius:5}),fill:i,stroke:r})]}return bu}function Fu(){var t={},e=[255,255,255,1],i=[0,153,255,1];return t[Nt.POLYGON]=[new Pu({fill:new mr({color:[255,255,255,.5]})})],t[Nt.MULTI_POLYGON]=t[Nt.POLYGON],t[Nt.LINE_STRING]=[new Pu({stroke:new Er({color:e,width:5})}),new Pu({stroke:new Er({color:i,width:3})})],t[Nt.MULTI_LINE_STRING]=t[Nt.LINE_STRING],t[Nt.CIRCLE]=t[Nt.POLYGON].concat(t[Nt.LINE_STRING]),t[Nt.POINT]=[new Pu({image:new Ru({radius:6,fill:new mr({color:i}),stroke:new Er({color:e,width:1.5})}),zIndex:1/0})],t[Nt.MULTI_POINT]=t[Nt.POINT],t[Nt.GEOMETRY_COLLECTION]=t[Nt.POLYGON].concat(t[Nt.LINE_STRING],t[Nt.POINT]),t}function Au(t){return t.getGeometry()}var Nu=Pu;function Gu(t,e){var i=/\{z\}/g,r=/\{x\}/g,n=/\{y\}/g,o=/\{-y\}/g;return function(s,a,h){return s?t.replace(i,s[0].toString()).replace(r,s[1].toString()).replace(n,function(){return(-s[2]-1).toString()}).replace(o,function(){var t=s[0],i=e.getFullTileRange(t);return Y(i,55),(i.getHeight()+s[2]).toString()}):void 0}}function Du(t,e){for(var i=t.length,r=new Array(i),n=0;n0&&(o/=l)}return o}function Vu(t,e,i,r){var n=i-t,o=r-e,s=Math.sqrt(n*n+o*o);return[Math.round(i+n/s),Math.round(r+o/s)]}function Xu(t,e,i,r,n,o,s,a,h,l,u){var p=Jn(Math.round(i*t),Math.round(i*e));if(0===h.length)return p.canvas;p.scale(i,i);var c=[1/0,1/0,-1/0,-1/0];h.forEach(function(t,e,i){ft(c,t.extent)});var d=Ot(c),f=Rt(c),_=Jn(Math.round(i*d/r),Math.round(i*f/r)),g=i/r;h.forEach(function(t,e,i){var r=t.extent[0]-c[0],n=-(t.extent[3]-c[3]),o=Ot(t.extent),s=Rt(t.extent);_.drawImage(t.image,l,l,t.image.width-2*l,t.image.height-2*l,r*g,n*g,o*g,s*g)});var y=It(s);return a.getTriangles().forEach(function(t,e,n){var s=t.source,a=t.target,h=s[0][0],l=s[0][1],u=s[1][0],d=s[1][1],f=s[2][0],g=s[2][1],v=(a[0][0]-y[0])/o,m=-(a[0][1]-y[1])/o,x=(a[1][0]-y[0])/o,E=-(a[1][1]-y[1])/o,S=(a[2][0]-y[0])/o,T=-(a[2][1]-y[1])/o,C=h,R=l;h=0,l=0;var w=function(t){for(var e=t.length,i=0;in&&(n=s,r=o)}if(0===n)return null;var a=t[r];t[r]=t[i],t[i]=a;for(var h=i+1;h=0;c--){p[c]=t[c][e]/t[c][c];for(var d=c-1;d>=0;d--)t[d][e]-=t[d][c]*p[c]}return p}([[u-=C,d-=R,0,0,x-v],[f-=C,g-=R,0,0,S-v],[0,0,u,d,E-m],[0,0,f,g,T-m]]);if(w){p.save(),p.beginPath();var I=(v+x+S)/3,L=(m+E+T)/3,O=Vu(I,L,v,m),P=Vu(I,L,x,E),b=Vu(I,L,S,T);p.moveTo(P[0],P[1]),p.lineTo(O[0],O[1]),p.lineTo(b[0],b[1]),p.clip(),p.transform(w[0],w[2],w[1],w[3],v,m),p.translate(c[0]-C,c[3]-R),p.scale(r/i,-r/i),p.drawImage(_.canvas,0,0),p.restore()}}),u&&(p.save(),p.strokeStyle="black",p.lineWidth=1,a.getTriangles().forEach(function(t,e,i){var r=t.target,n=(r[0][0]-y[0])/o,s=-(r[0][1]-y[1])/o,a=(r[1][0]-y[0])/o,h=-(r[1][1]-y[1])/o,l=(r[2][0]-y[0])/o,u=-(r[2][1]-y[1])/o;p.beginPath(),p.moveTo(a,h),p.lineTo(n,s),p.lineTo(l,u),p.closePath(),p.stroke()}),p.restore()),p.canvas}var zu=function(t,e,i,r,n){this.sourceProj_=t,this.targetProj_=e;var o={},s=Oe(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return o[e]||(o[e]=s(t)),o[e]},this.maxSourceExtent_=r,this.errorThresholdSquared_=n*n,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!r&&!!this.sourceProj_.getExtent()&&Ot(r)==Ot(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?Ot(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?Ot(this.targetProj_.getExtent()):null;var a=It(i),h=Lt(i),l=St(i),u=Et(i),p=this.transformInv_(a),c=this.transformInv_(h),d=this.transformInv_(l),f=this.transformInv_(u);if(this.addQuad_(a,h,l,u,p,c,d,f,10),this.wrapsXInSource_){var _=1/0;this.triangles_.forEach(function(t,e,i){_=Math.min(_,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])-_>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]-_>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-_>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-_>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var i=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-i.5&&u<1,d=!1;if(h>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)d=Ot(tt([t,e,i,r]))/this.targetWorldWidth_>.25||d;!c&&this.sourceProj_.isGlobal()&&u&&(d=u>.25||d)}if(d||!this.maxSourceExtent_||Pt(l,this.maxSourceExtent_)){if(!(d||isFinite(n[0])&&isFinite(n[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(a[0])&&isFinite(a[1]))){if(!(h>0))return;d=!0}if(h>0){if(!d){var f,_=[(t[0]+i[0])/2,(t[1]+i[1])/2],g=this.transformInv_(_);if(c)f=(Xt(n[0],p)+Xt(s[0],p))/2-Xt(g[0],p);else f=(n[0]+s[0])/2-g[0];var y=(n[1]+s[1])/2-g[1];d=f*f+y*y>this.errorThresholdSquared_}if(d){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){var v=[(e[0]+i[0])/2,(e[1]+i[1])/2],m=this.transformInv_(v),x=[(r[0]+t[0])/2,(r[1]+t[1])/2],E=this.transformInv_(x);this.addQuad_(t,e,v,x,n,o,m,E,h-1),this.addQuad_(x,v,i,r,E,m,s,a,h-1)}else{var S=[(t[0]+e[0])/2,(t[1]+e[1])/2],T=this.transformInv_(S),C=[(i[0]+r[0])/2,(i[1]+r[1])/2],R=this.transformInv_(C);this.addQuad_(t,S,C,r,n,T,R,a,h-1),this.addQuad_(S,e,i,C,T,o,s,R,h-1)}return}}if(c){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}this.addTriangle_(t,i,r,n,s,a),this.addTriangle_(t,e,i,n,o,s)}},zu.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach(function(e,i,r){var n=e.source;_t(t,n[0]),_t(t,n[1]),_t(t,n[2])}),t},zu.prototype.getTriangles=function(){return this.triangles_};var Wu=zu,Ku=function(t){function e(e,i,r,n,o,s,a,h,l,u,p){t.call(this,o,On.IDLE),this.renderEdges_=void 0!==p&&p,this.pixelRatio_=a,this.gutter_=h,this.canvas_=null,this.sourceTileGrid_=i,this.targetTileGrid_=n,this.wrappedTileCoord_=s||o,this.sourceTiles_=[],this.sourcesListenerKeys_=null,this.sourceZ_=0;var c=n.getTileCoordExtent(this.wrappedTileCoord_),d=this.targetTileGrid_.getExtent(),f=this.sourceTileGrid_.getExtent(),_=d?wt(c,d):c;if(0!==xt(_)){var g=e.getExtent();g&&(f=f?wt(f,g):g);var y=n.getResolution(this.wrappedTileCoord_[0]),v=Bu(e,r,Tt(_),y);if(!isFinite(v)||v<=0)this.state=On.EMPTY;else{var m=void 0!==u?u:vs;if(this.triangulation_=new Wu(e,r,_,f,v*m),0!==this.triangulation_.getTriangles().length){this.sourceZ_=i.getZForResolution(v);var x=this.triangulation_.calculateSourceExtent();if(f&&(e.canWrapX()?(x[1]=kt(x[1],f[1],f[3]),x[3]=kt(x[3],f[1],f[3])):x=wt(x,f)),xt(x)){for(var E=i.getTileRangeForExtentAndZ(x,this.sourceZ_),S=E.minX;S<=E.maxX;S++)for(var T=E.minY;T<=E.maxY;T++){var C=l(this.sourceZ_,S,T,a);C&&this.sourceTiles_.push(C)}0===this.sourceTiles_.length&&(this.state=On.EMPTY)}else this.state=On.EMPTY}else this.state=On.EMPTY}}else this.state=On.EMPTY}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.state==On.LOADING&&this.unlistenSources_(),t.prototype.disposeInternal.call(this)},e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,i,r){e&&e.getState()==On.LOADED&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=On.ERROR;else{var e=this.wrappedTileCoord_[0],i=this.targetTileGrid_.getTileSize(e),r="number"==typeof i?i:i[0],n="number"==typeof i?i:i[1],o=this.targetTileGrid_.getResolution(e),s=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=Xu(r,n,this.pixelRatio_,s,this.sourceTileGrid_.getExtent(),o,a,this.triangulation_,t,this.gutter_,this.renderEdges_),this.state=On.LOADED}this.changed()},e.prototype.load=function(){if(this.state==On.IDLE){this.state=On.LOADING,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,i,r){var n=e.getState();if(n==On.IDLE||n==On.LOADING){t++;var o=v(e,M.CHANGE,function(i){var r=e.getState();r!=On.LOADED&&r!=On.ERROR&&r!=On.EMPTY||(E(o),0===--t&&(this.unlistenSources_(),this.reproject_()))},this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach(function(t,e,i){t.getState()==On.IDLE&&t.load()}),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(E),this.sourcesListenerKeys_=null},e}(vl),Hu="tileloadstart",Zu="tileloadend",qu="tileloaderror",Ju=function(t){function e(e){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}),this.generateTileUrlFunction_=!e.tileUrlFunction,this.tileLoadFunction=e.tileLoadFunction,this.tileUrlFunction=e.tileUrlFunction?e.tileUrlFunction.bind(this):ju,this.urls=null,e.urls?this.setUrls(e.urls):e.url&&this.setUrl(e.url),e.tileUrlFunction&&this.setTileUrlFunction(e.tileUrlFunction,this.key_),this.tileLoadingKeys_={}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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,i=t.target,r=o(i),n=i.getState();n==On.LOADING?(this.tileLoadingKeys_[r]=!0,e=Hu):r in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[r],e=n==On.ERROR?qu:n==On.LOADED||n==On.ABORT?Zu:void 0),void 0!=e&&this.dispatchEvent(new kl(e,i))},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=this.urls=Uu(t);this.setUrls(e)},e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(Du(t,this.tileGrid),e):this.setKey(e)},e.prototype.useTile=function(t,e,i){var r=Sl(t,e,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},e}(jl);function Qu(t,e){t.getImage().src=e}var $u=function(t){function e(e){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:Qu,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible}),this.crossOrigin=void 0!==e.crossOrigin?e.crossOrigin:null,this.tileClass=void 0!==e.tileClass?e.tileClass:xl,this.tileCacheForProjection={},this.tileGridForProjection={},this.reprojectionErrorThreshold_=e.reprojectionErrorThreshold,this.renderReprojectionEdges_=!1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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 i=this.getTileCacheForProjection(t);for(var r in this.tileCache.expireCache(this.tileCache==i?e:{}),this.tileCacheForProjection){var n=this.tileCacheForProjection[r];n.expireCache(n==i?e:{})}},e.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Ie(this.getProjection(),t)?0:this.getGutter()},e.prototype.getGutter=function(){return 0},e.prototype.getOpaque=function(e){return!(this.getProjection()&&e&&!Ie(this.getProjection(),e))&&t.prototype.getOpaque.call(this,e)},e.prototype.getTileGridForProjection=function(t){var e=this.getProjection();if(!this.tileGrid||e&&!Ie(e,t)){var i=o(t);return i in this.tileGridForProjection||(this.tileGridForProjection[i]=bl(t)),this.tileGridForProjection[i]}return this.tileGrid},e.prototype.getTileCacheForProjection=function(t){var e=this.getProjection();if(!e||Ie(e,t))return this.tileCache;var i=o(t);return i in this.tileCacheForProjection||(this.tileCacheForProjection[i]=new Rl(this.tileCache.highWaterMark)),this.tileCacheForProjection[i]},e.prototype.createTile_=function(t,e,i,r,n,o){var s=[t,e,i],a=this.getTileCoordForTileUrlFunction(s,n),h=a?this.tileUrlFunction(a,r,n):void 0,l=new this.tileClass(s,void 0!==h?On.IDLE:On.EMPTY,void 0!==h?h:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return l.key=o,v(l,M.CHANGE,this.handleTileChange,this),l},e.prototype.getTile=function(t,e,i,r,n){var o=this.getProjection();if(o&&n&&!Ie(o,n)){var s,a=this.getTileCacheForProjection(n),h=[t,e,i],l=Tl(h);a.containsKey(l)&&(s=a.get(l));var u=this.getKey();if(s&&s.key==u)return s;var p=this.getTileGridForProjection(o),c=this.getTileGridForProjection(n),d=this.getTileCoordForTileUrlFunction(h,n),f=new Ku(o,p,n,c,h,d,this.getTilePixelRatio(r),this.getGutter(),function(t,e,i,r){return this.getTileInternal(t,e,i,r,o)}.bind(this),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_);return f.key=u,s?(f.interimTile=s,f.refreshInterimChain(),a.replace(l,f)):a.set(l,f),f}return this.getTileInternal(t,e,i,r,o||n)},e.prototype.getTileInternal=function(t,e,i,r,n){var o=null,s=Sl(t,e,i),a=this.getKey();if(this.tileCache.containsKey(s)){if((o=this.tileCache.get(s)).key!=a){var h=o;o=this.createTile_(t,e,i,r,n,a),h.getState()==On.IDLE?o.interimTile=h.interimTile:o.interimTile=h,o.refreshInterimChain(),this.tileCache.replace(s,o)}}else o=this.createTile_(t,e,i,r,n,a),this.tileCache.set(s,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 i=Ee(t);if(i){var r=o(i);r in this.tileGridForProjection||(this.tileGridForProjection[r]=e)}},e}(Ju),tp=function(t){function e(e){var i=void 0!==e.hidpi&&e.hidpi;t.call(this,{cacheSize:e.cacheSize,crossOrigin:"anonymous",opaque:!0,projection:Ee("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:ro.LOADING,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:i?2:1,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition}),this.hidpi_=i,this.culture_=void 0!==e.culture?e.culture:"en-us",this.maxZoom_=void 0!==e.maxZoom?e.maxZoom:-1,this.apiKey_=e.key,this.imagerySet_=e.imagerySet,Yu("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+this.apiKey_+"&c="+this.culture_,this.handleImageryMetadataResponse.bind(this),void 0,"jsonp")}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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],i=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,r=Gl(this.getProjection()),n=this.hidpi_?2:1,o=e.imageWidth==e.imageHeight?e.imageWidth/n:[e.imageWidth/n,e.imageHeight/n],s=Fl({extent:r,minZoom:e.zoomMin,maxZoom:i,tileSize:o});this.tileGrid=s;var a=this.culture_,h=this.hidpi_;if(this.tileUrlFunction=ku(e.imageUrlSubdomains.map(function(t){var i=[0,0,0],r=e.imageUrl.replace("{subdomain}",t).replace("{culture}",a);return function(t,e,n){if(t){El(t[0],t[1],-t[2]-1,i);var o=r;return h&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",function(t){var e,i,r=t[0],n=new Array(r),o=1<>=1;return n.join("")}(i))}}})),e.imageryProviders){var l=Le(Ee("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var i=[],r=t.viewState,n=this.getTileGrid().getTileCoordForCoordAndResolution(r.center,r.resolution)[0];return e.imageryProviders.map(function(e){for(var r=!1,o=e.coverageAreas,s=0,a=o.length;s=h.zoomMin&&n<=h.zoomMax){var u=h.bbox;if(Pt(Ft([u[1],u[0],u[3],u[2]],l),t.extent)){r=!0;break}}}r&&i.push(e.attribution)}),i.push('Terms of Use'),i}.bind(this))}this.setState(ro.READY)}else this.setState(ro.ERROR)},e}($u),ep=function(t){function e(e){var i=e||{},r=void 0!==i.projection?i.projection:"EPSG:3857",n=void 0!==i.tileGrid?i.tileGrid:Fl({extent:Gl(r),maxZoom:i.maxZoom,minZoom:i.minZoom,tileSize:i.tileSize});t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,crossOrigin:i.crossOrigin,opaque:i.opaque,projection:r,reprojectionErrorThreshold:i.reprojectionErrorThreshold,tileGrid:n,tileLoadFunction:i.tileLoadFunction,tilePixelRatio:i.tilePixelRatio,tileUrlFunction:i.tileUrlFunction,url:i.url,urls:i.urls,wrapX:void 0===i.wrapX||i.wrapX,transition:i.transition,attributionsCollapsible:i.attributionsCollapsible})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}($u),ip=function(t){function e(e){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.account_=e.account,this.mapId_=e.map||"",this.config_=e.config||{},this.templateCache_={},this.initializeMap_()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getConfig=function(){return this.config_},e.prototype.updateConfig=function(t){u(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 i=new XMLHttpRequest;i.addEventListener("load",this.handleInitResponse_.bind(this,t)),i.addEventListener("error",this.handleInitError_.bind(this)),i.open("POST",e),i.setRequestHeader("Content-type","application/json"),i.send(JSON.stringify(this.config_))}},e.prototype.handleInitResponse_=function(t,e){var i=e.target;if(!i.status||i.status>=200&&i.status<300){var r;try{r=JSON.parse(i.responseText)}catch(t){return void this.setState(ro.ERROR)}this.applyTemplate_(r),this.templateCache_[t]=r,this.setState(ro.READY)}else this.setState(ro.ERROR)},e.prototype.handleInitError_=function(t){this.setState(ro.ERROR)},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}(ep),rp={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature"},np=function(t){function e(e,i){t.call(this,e),this.feature=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P),op=function(t){function e(e){var i=e||{};t.call(this,{attributions:i.attributions,projection:void 0,state:ro.READY,wrapX:void 0===i.wrapX||i.wrapX}),this.loader_=I,this.format_=i.format,this.overlaps_=void 0==i.overlaps||i.overlaps,this.url_=i.url,void 0!==i.loader?this.loader_=i.loader:void 0!==this.url_&&(Y(this.format_,7),this.loader_=ql(this.url_,this.format_)),this.strategy_=void 0!==i.strategy?i.strategy:Jl;var r,n,o=void 0===i.useSpatialIndex||i.useSpatialIndex;this.featuresRtree_=o?new tl:null,this.loadedExtentsRtree_=new tl,this.nullGeometryFeatures_={},this.idIndex_={},this.undefIdIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null,Array.isArray(i.features)?n=i.features:i.features&&(n=(r=i.features).getArray()),o||void 0!==r||(r=new U(n)),void 0!==n&&this.addFeaturesInternal(n),void 0!==r&&this.bindFeaturesCollection_(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=o(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var i=t.getGeometry();if(i){var r=i.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(r,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new np(rp.ADDFEATURE,t))}},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[v(e,M.CHANGE,this.handleFeatureChange_,this),v(e,l,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var i=!0,r=e.getId();return void 0!==r?r.toString()in this.idIndex_?i=!1:this.idIndex_[r.toString()]=e:(Y(!(t in this.undefIdIndex_),30),this.undefIdIndex_[t]=e),i},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],i=[],r=[],n=0,s=t.length;n=0;--i){var r=this.geometryFunction(t[i]);r?Hi(e,r.getCoordinates()):t.splice(i,1)}tr(e,1/t.length);var n=new B(new ci(e));return n.set("features",t),n},e}(op),ap=function(t){function e(e,i,r,n,o,s){var a=e.getExtent(),h=i.getExtent(),l=h?wt(r,h):r,u=Bu(e,i,Tt(l),n),p=new Wu(e,i,l,a,u*vs),c=s(p.calculateSourceExtent(),u,o),d=xs.LOADED;c&&(d=xs.IDLE);var f=c?c.getPixelRatio():1;t.call(this,r,n,f,d),this.targetProj_=i,this.maxSourceExtent_=a,this.triangulation_=p,this.targetResolution_=n,this.targetExtent_=r,this.sourceImage_=c,this.sourcePixelRatio_=f,this.canvas_=null,this.sourceListenerKey_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.state==xs.LOADING&&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==xs.LOADED){var e=Ot(this.targetExtent_)/this.targetResolution_,i=Rt(this.targetExtent_)/this.targetResolution_;this.canvas_=Xu(e,i,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==xs.IDLE){this.state=xs.LOADING,this.changed();var t=this.sourceImage_.getState();t==xs.LOADED||t==xs.ERROR?this.reproject_():(this.sourceListenerKey_=v(this.sourceImage_,M.CHANGE,function(t){var e=this.sourceImage_.getState();e!=xs.LOADED&&e!=xs.ERROR||(this.unlistenSource_(),this.reproject_())},this),this.sourceImage_.load())}},e.prototype.unlistenSource_=function(){E(this.sourceListenerKey_),this.sourceListenerKey_=null},e}(ms),hp="imageloadstart",lp="imageloadend",up="imageloaderror",pp=function(t){function e(e,i){t.call(this,e),this.image=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P);function cp(t,e){t.getImage().src=e}var dp=function(t){function e(e){t.call(this,{attributions:e.attributions,projection:e.projection,state:e.state}),this.resolutions_=void 0!==e.resolutions?e.resolutions:null,this.reprojectedImage_=null,this.reprojectedRevision_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.findNearestResolution=function(t){if(this.resolutions_){var e=z(this.resolutions_,t,0);t=this.resolutions_[e]}return t},e.prototype.getImage=function(t,e,i,r){var n=this.getProjection();if(n&&r&&!Ie(n,r)){if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&Ie(this.reprojectedImage_.getProjection(),r)&&this.reprojectedImage_.getResolution()==e&&dt(this.reprojectedImage_.getExtent(),t))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new ap(n,r,t,e,i,function(t,e,i){return this.getImageInternal(t,e,i,n)}.bind(this)),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}return n&&(r=n),this.getImageInternal(t,e,i,r)},e.prototype.getImageInternal=function(t,e,i,n){return r()},e.prototype.handleImageChange=function(t){var e=t.target;switch(e.getState()){case xs.LOADING:this.loading=!0,this.dispatchEvent(new pp(hp,e));break;case xs.LOADED:this.loading=!1,this.dispatchEvent(new pp(lp,e));break;case xs.ERROR:this.loading=!1,this.dispatchEvent(new pp(up,e))}},e}(Il),fp=function(t){function e(e,i,r,n,o,s){t.call(this,e,i,r,xs.IDLE),this.src_=n,this.image_=new Image,null!==o&&(this.image_.crossOrigin=o),this.imageListenerKeys_=null,this.state=xs.IDLE,this.imageLoadFunction_=s}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=xs.ERROR,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=Rt(this.extent)/this.image_.height),this.state=xs.LOADED,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=xs.IDLE&&this.state!=xs.ERROR||(this.state=xs.LOADING,this.changed(),this.imageListenerKeys_=[m(this.image_,M.ERROR,this.handleImageError_,this),m(this.image_,M.LOAD,this.handleImageLoad_,this)],this.imageLoadFunction_(this,this.src_))},e.prototype.setImage=function(t){this.image_=t},e.prototype.unlistenImage_=function(){this.imageListenerKeys_.forEach(E),this.imageListenerKeys_=null},e}(ms);function _p(t,e){var i=[];Object.keys(e).forEach(function(t){null!==e[t]&&void 0!==e[t]&&i.push(t+"="+encodeURIComponent(e[t]))});var r=i.join("&");return(t=-1===(t=t.replace(/[?&]$/,"")).indexOf("?")?t+"?":t+"&")+r}var gp=function(t){function e(e){var i=e||{};t.call(this,{attributions:i.attributions,projection:i.projection,resolutions:i.resolutions}),this.crossOrigin_=void 0!==i.crossOrigin?i.crossOrigin:null,this.hidpi_=void 0===i.hidpi||i.hidpi,this.url_=i.url,this.imageLoadFunction_=void 0!==i.imageLoadFunction?i.imageLoadFunction:cp,this.params_=i.params||{},this.image_=null,this.imageSize_=[0,0],this.renderedRevision_=0,this.ratio_=void 0!==i.ratio?i.ratio:1.5}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,i,r){if(void 0===this.url_)return null;e=this.findNearestResolution(e),i=this.hidpi_?i:1;var n=this.image_;if(n&&this.renderedRevision_==this.getRevision()&&n.getResolution()==e&&n.getPixelRatio()==i&&ot(n.getExtent(),t))return n;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};u(o,this.params_);var s=((t=t.slice())[0]+t[2])/2,a=(t[1]+t[3])/2;if(1!=this.ratio_){var h=this.ratio_*Ot(t)/2,l=this.ratio_*Rt(t)/2;t[0]=s-h,t[1]=a-l,t[2]=s+h,t[3]=a+l}var p=e/i,c=Math.ceil(Ot(t)/p),d=Math.ceil(Rt(t)/p);t[0]=s-p*c/2,t[2]=s+p*c/2,t[1]=a-p*d/2,t[3]=a+p*d/2,this.imageSize_[0]=c,this.imageSize_[1]=d;var f=this.getRequestUrl_(t,this.imageSize_,i,r,o);return this.image_=new fp(t,e,i,f,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),v(this.image_,M.CHANGE,this.handleImageChange,this),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,i,r,n){var o=r.getCode().split(":").pop();n.SIZE=e[0]+","+e[1],n.BBOX=t.join(","),n.BBOXSR=o,n.IMAGESR=o,n.DPI=Math.round(90*i);var s=this.url_,a=s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return a==s&&Y(!1,50),_p(a,n)},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){u(this.params_,t),this.image_=null,this.changed()},e}(dp),yp=function(t){function e(e){var i=e||{};t.call(this,{attributions:i.attributions,projection:i.projection,resolutions:i.resolutions,state:i.state}),this.canvasFunction_=i.canvasFunction,this.canvas_=null,this.renderedRevision_=0,this.ratio_=void 0!==i.ratio?i.ratio:1.5}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getImageInternal=function(t,e,i,r){e=this.findNearestResolution(e);var n=this.canvas_;if(n&&this.renderedRevision_==this.getRevision()&&n.getResolution()==e&&n.getPixelRatio()==i&&ot(n.getExtent(),t))return n;Mt(t=t.slice(),this.ratio_);var o=[Ot(t)/e*i,Rt(t)/e*i],s=this.canvasFunction_.call(this,t,e,i,o,r);return s&&(n=new Es(t,e,i,s)),this.canvas_=n,this.renderedRevision_=this.getRevision(),n},e}(dp);var vp=function(t){function e(e){t.call(this,{projection:e.projection,resolutions:e.resolutions}),this.crossOrigin_=void 0!==e.crossOrigin?e.crossOrigin:null,this.displayDpi_=void 0!==e.displayDpi?e.displayDpi:96,this.params_=e.params||{},this.url_=e.url,this.imageLoadFunction_=void 0!==e.imageLoadFunction?e.imageLoadFunction:cp,this.hidpi_=void 0===e.hidpi||e.hidpi,this.metersPerUnit_=void 0!==e.metersPerUnit?e.metersPerUnit:1,this.ratio_=void 0!==e.ratio?e.ratio:1,this.useOverlay_=void 0!==e.useOverlay&&e.useOverlay,this.image_=null,this.renderedRevision_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,i,r){e=this.findNearestResolution(e),i=this.hidpi_?i:1;var n=this.image_;if(n&&this.renderedRevision_==this.getRevision()&&n.getResolution()==e&&n.getPixelRatio()==i&&ot(n.getExtent(),t))return n;1!=this.ratio_&&Mt(t=t.slice(),this.ratio_);var o=[Ot(t)/e*i,Rt(t)/e*i];if(void 0!==this.url_){var s=this.getUrl(this.url_,this.params_,t,o,r);v(n=new fp(t,e,i,s,this.crossOrigin_,this.imageLoadFunction_),M.CHANGE,this.handleImageChange,this)}else n=null;return this.image_=n,this.renderedRevision_=this.getRevision(),n},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.updateParams=function(t){u(this.params_,t),this.changed()},e.prototype.getUrl=function(t,e,i,r,n){var o=function(t,e,i,r){var n=Ot(t),o=Rt(t),s=e[0],a=e[1],h=.0254/r;return a*n>s*o?n*i/(s*h):o*i/(a*h)}(i,r,this.metersPerUnit_,this.displayDpi_),s=Tt(i),a={OPERATION:this.useOverlay_?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.displayDpi_,SETDISPLAYWIDTH:Math.round(r[0]),SETDISPLAYHEIGHT:Math.round(r[1]),SETVIEWSCALE:o,SETVIEWCENTERX:s[0],SETVIEWCENTERY:s[1]};return u(a,e),_p(t,a)},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e}(dp),mp=function(t){function e(e){var i=void 0!==e.crossOrigin?e.crossOrigin:null,r=void 0!==e.imageLoadFunction?e.imageLoadFunction:cp;t.call(this,{attributions:e.attributions,projection:Ee(e.projection)}),this.url_=e.url,this.imageExtent_=e.imageExtent,this.image_=new fp(this.imageExtent_,void 0,1,this.url_,i,r),this.imageSize_=e.imageSize?e.imageSize:null,v(this.image_,M.CHANGE,this.handleImageChange,this)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getImageExtent=function(){return this.imageExtent_},e.prototype.getImageInternal=function(t,e,i,r){return Pt(t,this.image_.getExtent())?this.image_:null},e.prototype.getUrl=function(){return this.url_},e.prototype.handleImageChange=function(e){if(this.image_.getState()==xs.LOADED){var i,r,n=this.image_.getExtent(),o=this.image_.getImage();this.imageSize_?(i=this.imageSize_[0],r=this.imageSize_[1]):(i=o.width,r=o.height);var s=Rt(n)/r,a=Math.ceil(Ot(n)/s);if(a!=i){var h=Jn(a,r),l=h.canvas;h.drawImage(o,0,0,i,r,0,0,l.width,l.height),this.image_.setImage(l)}}t.prototype.handleImageChange.call(this,e)},e}(dp),xp="1.3.0",Ep="carmentaserver",Sp="geoserver",Tp="mapserver",Cp="qgis",Rp=[101,101],wp=function(t){function e(e){var i=e||{};t.call(this,{attributions:i.attributions,projection:i.projection,resolutions:i.resolutions}),this.crossOrigin_=void 0!==i.crossOrigin?i.crossOrigin:null,this.url_=i.url,this.imageLoadFunction_=void 0!==i.imageLoadFunction?i.imageLoadFunction:cp,this.params_=i.params||{},this.v13_=!0,this.updateV13_(),this.serverType_=i.serverType,this.hidpi_=void 0===i.hidpi||i.hidpi,this.image_=null,this.imageSize_=[0,0],this.renderedRevision_=0,this.ratio_=void 0!==i.ratio?i.ratio:1.5}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getGetFeatureInfoUrl=function(t,e,i,r){if(void 0!==this.url_){var n=Ee(i),o=this.getProjection();o&&o!==n&&(e=Bu(o,n,t,e),t=Pe(t,n,o));var s=Ct(t,e,0,Rp),a={SERVICE:"WMS",VERSION:xp,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};u(a,this.params_,r);var h=Math.floor((t[0]-s[0])/e),l=Math.floor((s[3]-t[1])/e);return a[this.v13_?"I":"X"]=h,a[this.v13_?"J":"Y"]=l,this.getRequestUrl_(s,Rp,1,o||n,a)}},e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,i,r){if(void 0===this.url_)return null;e=this.findNearestResolution(e),1==i||this.hidpi_&&void 0!==this.serverType_||(i=1);var n=e/i,o=Tt(t),s=Ct(o,n,0,[Math.ceil(Ot(t)/n),Math.ceil(Rt(t)/n)]),a=Ct(o,n,0,[Math.ceil(this.ratio_*Ot(t)/n),Math.ceil(this.ratio_*Rt(t)/n)]),h=this.image_;if(h&&this.renderedRevision_==this.getRevision()&&h.getResolution()==e&&h.getPixelRatio()==i&&ot(h.getExtent(),s))return h;var l={SERVICE:"WMS",VERSION:xp,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};u(l,this.params_),this.imageSize_[0]=Math.round(Ot(a)/n),this.imageSize_[1]=Math.round(Rt(a)/n);var p=this.getRequestUrl_(a,this.imageSize_,i,r,l);return this.image_=new fp(a,e,i,p,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),v(this.image_,M.CHANGE,this.handleImageChange,this),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,i,r,n){if(Y(void 0!==this.url_,9),n[this.v13_?"CRS":"SRS"]=r.getCode(),"STYLES"in this.params_||(n.STYLES=""),1!=i)switch(this.serverType_){case Sp:var o=90*i+.5|0;"FORMAT_OPTIONS"in n?n.FORMAT_OPTIONS+=";dpi:"+o:n.FORMAT_OPTIONS="dpi:"+o;break;case Tp:n.MAP_RESOLUTION=90*i;break;case Ep:case Cp:n.DPI=90*i;break;default:Y(!1,8)}n.WIDTH=e[0],n.HEIGHT=e[1];var s,a=r.getAxisOrientation();return s=this.v13_&&"ne"==a.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,n.BBOX=s.join(","),_p(this.url_,n)},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){u(this.params_,t),this.updateV13_(),this.image_=null,this.changed()},e.prototype.updateV13_=function(){var t=this.params_.VERSION||xp;this.v13_=Ki(t,"1.3")>=0},e}(dp),Ip='© OpenStreetMap contributors.',Lp=function(t){function e(e){var i,r=e||{};i=void 0!==r.attributions?r.attributions:[Ip];var n=void 0!==r.crossOrigin?r.crossOrigin:"anonymous",o=void 0!==r.url?r.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";t.call(this,{attributions:i,cacheSize:r.cacheSize,crossOrigin:n,opaque:void 0===r.opaque||r.opaque,maxZoom:void 0!==r.maxZoom?r.maxZoom:19,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileLoadFunction:r.tileLoadFunction,url:o,wrapX:r.wrapX,attributionsCollapsible:!1})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(ep),Op=i(2),Pp=function(t){function e(e){var i=e||{};t.call(this,i),this.type=Ss.IMAGE}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(xo);Pp.prototype.getSource;var bp=Pp,Mp="preload",Fp="useInterimTilesOnError",Ap=function(t){function e(e){var i=e||{},r=u({},i);delete r.preload,delete r.useInterimTilesOnError,t.call(this,r),this.setPreload(void 0!==i.preload?i.preload:0),this.setUseInterimTilesOnError(void 0===i.useInterimTilesOnError||i.useInterimTilesOnError),this.type=Ss.TILE}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getPreload=function(){return this.get(Mp)},e.prototype.setPreload=function(t){this.set(Mp,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(Fp)},e.prototype.setUseInterimTilesOnError=function(t){this.set(Fp,t)},e}(xo);Ap.prototype.getSource;var Np=Ap,Gp="beforeoperations",Dp="afteroperations",kp={PIXEL:"pixel",IMAGE:"image"},jp=function(t){function e(e,i,r){t.call(this,e),this.extent=i.extent,this.resolution=i.viewState.resolution/i.pixelRatio,this.data=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P),Up=null;function Yp(t,e,i){if(!t.prepareFrame(e,i))return null;var r=e.size[0],n=e.size[1];if(Up){var o=Up.canvas;o.width!==r||o.height!==n?Up=Jn(r,n):Up.clearRect(0,0,r,n)}else Up=Jn(r,n);return t.composeFrame(e,i,Up),Up.getImageData(0,0,r,n)}function Bp(t){var e=t,i=t,r=t,n=null;return"function"==typeof e.getTile?n=function(t){var e=new Np({source:t});return new ha(e)}(e):"function"==typeof i.getImage?n=function(t){var e=new bp({source:t});return new ra(e)}(i):r.getType()===Ss.TILE?n=new ha(r):r.getType()!=Ss.IMAGE&&r.getType()!=Ss.VECTOR||(n=new ra(r)),n}var Vp=function(t){function e(e){t.call(this,{projection:null}),this.worker_=null,this.operationType_=void 0!==e.operationType?e.operationType:kp.PIXEL,this.threads_=void 0!==e.threads?e.threads:1,this.renderers_=function(t){for(var e=t.length,i=new Array(e),r=0;rStamen Design, under CC BY 3.0.',Ip],zp={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}},Wp={terrain:{minZoom:4,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:1,maxZoom:16}},Kp=function(t){function e(e){var i=e.layer.indexOf("-"),r=-1==i?e.layer:e.layer.slice(0,i),n=Wp[r],o=zp[e.layer],s=void 0!==e.url?e.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+e.layer+"/{z}/{x}/{y}."+o.extension;t.call(this,{attributions:Xp,cacheSize:e.cacheSize,crossOrigin:"anonymous",maxZoom:void 0!=e.maxZoom?e.maxZoom:n.maxZoom,minZoom:void 0!=e.minZoom?e.minZoom:n.minZoom,opaque:o.opaque,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileLoadFunction:e.tileLoadFunction,url:s,wrapX:e.wrapX})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(ep);function Hp(t,e,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){var n=r.getTileCoordExtent(t,this.tmpExtent_),o=ho(r.getTileSize(t[0]),this.tmpSize);1!=e&&(o=ao(o,e,this.tmpSize));var s={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return u(s,this.params_),this.getRequestUrl_(t,o,n,e,i,s)}}var Zp=function(t){function e(e){var i=e||{};t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,crossOrigin:i.crossOrigin,projection:i.projection,reprojectionErrorThreshold:i.reprojectionErrorThreshold,tileGrid:i.tileGrid,tileLoadFunction:i.tileLoadFunction,tileUrlFunction:Hp,url:i.url,urls:i.urls,wrapX:void 0===i.wrapX||i.wrapX,transition:i.transition}),this.params_=i.params||{},this.tmpExtent_=[1/0,1/0,-1/0,-1/0],this.setKey(this.getKeyForParams_())}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var i in this.params_)e[t++]=i+"-"+this.params_[i];return e.join("/")},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,i,r,n,o){var s=this.urls;if(s){var a,h=n.getCode().split(":").pop();if(o.SIZE=e[0]+","+e[1],o.BBOX=i.join(","),o.BBOXSR=h,o.IMAGESR=h,o.DPI=Math.round(o.DPI?o.DPI*r:90*r),1==s.length)a=s[0];else a=s[Xt(Cl(t),s.length)];return _p(a.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},e.prototype.getTilePixelRatio=function(t){return t},e.prototype.updateParams=function(t){u(this.params_,t),this.setKey(this.getKeyForParams_())},e}($u),qp=function(t){function e(e,i,r){t.call(this,e,On.LOADED),this.tileSize_=i,this.text_=r,this.canvas_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getImage=function(){if(this.canvas_)return this.canvas_;var t=this.tileSize_,e=Jn(t[0],t[1]);return e.strokeStyle="black",e.strokeRect(.5,.5,t[0]+.5,t[1]+.5),e.fillStyle="black",e.textAlign="center",e.textBaseline="middle",e.font="24px sans-serif",e.fillText(this.text_,t[0]/2,t[1]/2),this.canvas_=e.canvas,e.canvas},e.prototype.load=function(){},e}(vl),Jp=function(t){function e(e){t.call(this,{opaque:!1,projection:e.projection,tileGrid:e.tileGrid,wrapX:void 0===e.wrapX||e.wrapX})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getTile=function(t,e,i){var r=Sl(t,e,i);if(this.tileCache.containsKey(r))return this.tileCache.get(r);var n=ho(this.tileGrid.getTileSize(t)),o=[t,e,i],s=this.getTileCoordForTileUrlFunction(o),a=s?this.getTileCoordForTileUrlFunction(s).toString():"",h=new qp(o,n,a);return this.tileCache.set(r,h),h},e}(jl),Qp=function(t){function e(e){if(t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,projection:Ee("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:ro.LOADING,tileLoadFunction:e.tileLoadFunction,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition}),this.tileJSON_=null,e.url)if(e.jsonp)Yu(e.url,this.handleTileJSONResponse.bind(this),this.handleTileJSONError.bind(this));else{var i=new XMLHttpRequest;i.addEventListener("load",this.onXHRLoad_.bind(this)),i.addEventListener("error",this.onXHRError_.bind(this)),i.open("GET",e.url),i.send()}else e.tileJSON?this.handleTileJSONResponse(e.tileJSON):Y(!1,51)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var i;try{i=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTileJSON=function(){return this.tileJSON_},e.prototype.handleTileJSONResponse=function(t){var e,i=Ee("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var n=Le(i,r);e=Ft(t.bounds,n)}var o=t.minzoom||0,s=t.maxzoom||22,a=Fl({extent:Gl(r),maxZoom:s,minZoom:o});if(this.tileGrid=a,this.tileUrlFunction=Du(t.tiles,a),void 0!==t.attribution&&!this.getAttributions()){var h=void 0!==e?e:i.getExtent();this.setAttributions(function(e){return Pt(h,e.extent)?[t.attribution]:null})}this.tileJSON_=t,this.setState(ro.READY)},e.prototype.handleTileJSONError=function(){this.setState(ro.ERROR)},e}($u);function $p(t,e,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);var n=r.getResolution(t[0]),o=r.getTileCoordExtent(t,this.tmpExtent_),s=ho(r.getTileSize(t[0]),this.tmpSize),a=this.gutter_;0!==a&&(s=so(s,a,this.tmpSize),o=et(o,n*a,o)),1!=e&&(s=ao(s,e,this.tmpSize));var h={SERVICE:"WMS",VERSION:xp,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return u(h,this.params_),this.getRequestUrl_(t,s,o,e,i,h)}}var tc=function(t){function e(e){var i=e||{},r=i.params||{},n=!("TRANSPARENT"in r)||r.TRANSPARENT;t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,crossOrigin:i.crossOrigin,opaque:!n,projection:i.projection,reprojectionErrorThreshold:i.reprojectionErrorThreshold,tileClass:i.tileClass,tileGrid:i.tileGrid,tileLoadFunction:i.tileLoadFunction,tileUrlFunction:$p,url:i.url,urls:i.urls,wrapX:void 0===i.wrapX||i.wrapX,transition:i.transition}),this.gutter_=void 0!==i.gutter?i.gutter:0,this.params_=r,this.v13_=!0,this.serverType_=i.serverType,this.hidpi_=void 0===i.hidpi||i.hidpi,this.tmpExtent_=[1/0,1/0,-1/0,-1/0],this.updateV13_(),this.setKey(this.getKeyForParams_())}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getGetFeatureInfoUrl=function(t,e,i,r){var n=Ee(i),o=this.getProjection(),s=this.getTileGrid();s||(s=this.getTileGridForProjection(n));var a=s.getTileCoordForCoordAndResolution(t,e);if(!(s.getResolutions().length<=a[0])){var h=s.getResolution(a[0]),l=s.getTileCoordExtent(a,this.tmpExtent_),p=ho(s.getTileSize(a[0]),this.tmpSize),c=this.gutter_;0!==c&&(p=so(p,c,this.tmpSize),l=et(l,h*c,l)),o&&o!==n&&(h=Bu(o,n,t,h),l=be(l,n,o),t=Pe(t,n,o));var d={SERVICE:"WMS",VERSION:xp,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};u(d,this.params_,r);var f=Math.floor((t[0]-l[0])/h),_=Math.floor((l[3]-t[1])/h);return d[this.v13_?"I":"X"]=f,d[this.v13_?"J":"Y"]=_,this.getRequestUrl_(a,p,l,1,o||n,d)}},e.prototype.getGutter=function(){return this.gutter_},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,i,r,n,o){var s=this.urls;if(s){if(o.WIDTH=e[0],o.HEIGHT=e[1],o[this.v13_?"CRS":"SRS"]=n.getCode(),"STYLES"in this.params_||(o.STYLES=""),1!=r)switch(this.serverType_){case Sp:var a=90*r+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+a:o.FORMAT_OPTIONS="dpi:"+a;break;case Tp:o.MAP_RESOLUTION=90*r;break;case Ep:case Cp:o.DPI=90*r;break;default:Y(!1,52)}var h,l,u=n.getAxisOrientation(),p=i;if(this.v13_&&"ne"==u.substr(0,2))h=i[0],p[0]=i[1],p[1]=h,h=i[2],p[2]=i[3],p[3]=h;if(o.BBOX=p.join(","),1==s.length)l=s[0];else l=s[Xt(Cl(t),s.length)];return _p(l,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 i in this.params_)e[t++]=i+"-"+this.params_[i];return e.join("/")},e.prototype.updateParams=function(t){u(this.params_,t),this.updateV13_(),this.setKey(this.getKeyForParams_())},e.prototype.updateV13_=function(){var t=this.params_.VERSION||xp;this.v13_=Ki(t,"1.3")>=0},e}($u),ec=function(t){function e(e,i,r,n,o,s){t.call(this,e,i),this.src_=r,this.extent_=n,this.preemptive_=o,this.grid_=null,this.keys_=null,this.data_=null,this.jsonp_=s}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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]),i=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),r=this.grid_[Math.floor((1-i)*this.grid_.length)];if("string"!=typeof r)return null;var n=r.charCodeAt(Math.floor(e*r.length));n>=93&&n--,n>=35&&n--;var o=null;if((n-=32)in this.keys_){var s=this.keys_[n];o=this.data_&&s in this.data_?this.data_[s]:s}return o},e.prototype.forDataAtCoordinate=function(t,e,i,r){this.state==On.IDLE&&!0===r?(m(this,M.CHANGE,function(r){e.call(i,this.getData(t))},this),this.loadInternal_()):!0===r?setTimeout(function(){e.call(i,this.getData(t))}.bind(this),0):e.call(i,this.getData(t))},e.prototype.getKey=function(){return this.src_},e.prototype.handleError_=function(){this.state=On.ERROR,this.changed()},e.prototype.handleLoad_=function(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=On.EMPTY,this.changed()},e.prototype.loadInternal_=function(){if(this.state==On.IDLE)if(this.state=On.LOADING,this.jsonp_)Yu(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 i;try{i=JSON.parse(e.responseText)}catch(t){return void this.handleError_()}this.handleLoad_(i)}else this.handleError_()},e.prototype.onXHRError_=function(t){this.handleError_()},e.prototype.load=function(){this.preemptive_&&this.loadInternal_()},e}(vl),ic=function(t){function e(e){if(t.call(this,{projection:Ee("EPSG:3857"),state:ro.LOADING}),this.preemptive_=void 0===e.preemptive||e.preemptive,this.tileUrlFunction_=ju,this.template_=void 0,this.jsonp_=e.jsonp||!1,e.url)if(this.jsonp_)Yu(e.url,this.handleTileJSONResponse.bind(this),this.handleTileJSONError.bind(this));else{var i=new XMLHttpRequest;i.addEventListener("load",this.onXHRLoad_.bind(this)),i.addEventListener("error",this.onXHRError_.bind(this)),i.open("GET",e.url),i.send()}else e.tileJSON?this.handleTileJSONResponse(e.tileJSON):Y(!1,51)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var i;try{i=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTemplate=function(){return this.template_},e.prototype.forDataAtCoordinateAndResolution=function(t,e,i,r){if(this.tileGrid){var n=this.tileGrid.getTileCoordForCoordAndResolution(t,e);this.getTile(n[0],n[1],n[2],1,this.getProjection()).forDataAtCoordinate(t,i,null,r)}else!0===r?setTimeout(function(){i(null)},0):i(null)},e.prototype.handleTileJSONError=function(){this.setState(ro.ERROR)},e.prototype.handleTileJSONResponse=function(t){var e,i=Ee("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var n=Le(i,r);e=Ft(t.bounds,n)}var o=t.minzoom||0,s=t.maxzoom||22,a=Fl({extent:Gl(r),maxZoom:s,minZoom:o});this.tileGrid=a,this.template_=t.template;var h=t.grids;if(h){if(this.tileUrlFunction_=Du(h,a),void 0!==t.attribution){var l=void 0!==e?e:i.getExtent();this.setAttributions(function(e){return Pt(l,e.extent)?[t.attribution]:null})}this.setState(ro.READY)}else this.setState(ro.ERROR)},e.prototype.getTile=function(t,e,i,r,n){var o=Sl(t,e,i);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var s=[t,e,i],a=this.getTileCoordForTileUrlFunction(s,n),h=this.tileUrlFunction_(a,r,n),l=new ec(s,void 0!==h?On.IDLE:On.EMPTY,void 0!==h?h:"",this.tileGrid.getTileCoordExtent(s),this.preemptive_,this.jsonp_);return this.tileCache.set(o,l),l},e.prototype.useTile=function(t,e,i){var r=Sl(t,e,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},e}(jl),rc=function(t){function e(i,r,n,o,s,a,h,l,u,p,c,d,f,_,g){if(t.call(this,i,r,{transition:0}),this.context_={},this.loader_,this.replayState_={},this.sourceTiles_=p,this.tileKeys=[],this.extent=null,this.sourceRevision_=n,this.wrappedTileCoord=a,this.loadListenerKeys_=[],this.sourceTileListenerKeys_=[],a){var y=this.extent=u.getTileCoordExtent(a),m=u.getResolution(g),x=l.getZForResolution(m),E=g!=i[0],S=0;if(l.forEachTileCoord(y,x,function(t){var e=wt(y,l.getTileCoordExtent(t)),i=l.getExtent();if(i&&(e=wt(e,i,e)),Ot(e)/m>=.5&&Rt(e)/m>=.5){++S;var r=t.toString(),n=p[r];if(!n&&!E){var a=h(t,c,d);n=p[r]=new f(t,void 0==a?On.EMPTY:On.IDLE,void 0==a?"":a,o,s),this.sourceTileListenerKeys_.push(v(n,M.CHANGE,_))}!n||E&&n.getState()!=On.LOADED||(n.consumers++,this.tileKeys.push(r))}}.bind(this)),E&&S==this.tileKeys.length&&this.finishLoading_(),g<=i[0]&&this.state!=On.LOADED)for(;g>u.getMinZoom();){var T=new e(i,r,n,o,s,a,h,l,u,p,c,d,f,I,--g);if(T.state==On.LOADED){this.interimTile=T;break}}}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.state=On.ABORT,this.changed(),this.interimTile&&this.interimTile.dispose();for(var e=0,i=this.tileKeys.length;e=0;--i){var r=this.getTile(this.tileKeys[i]).getState();r!=On.LOADED&&--t,r==On.EMPTY&&++e}t==this.tileKeys.length?(this.loadListenerKeys_.forEach(E),this.loadListenerKeys_.length=0,this.setState(On.LOADED)):this.setState(e==this.tileKeys.length?On.EMPTY:On.ERROR)},e}(vl);function nc(t,e){var i=Zl(e,t.getFormat(),t.onLoad.bind(t),t.onError.bind(t));t.setLoader(i)}var oc=[0,0,4096,4096],sc=function(t){function e(e,i,r,n,o,s){t.call(this,e,i,s),this.consumers=0,this.extent_=null,this.format_=n,this.features_=null,this.loader_,this.projection_=null,this.replayGroups_={},this.tileLoadFunction_=o,this.url_=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.features_=null,this.replayGroups_={},this.state=On.ABORT,this.changed(),t.prototype.disposeInternal.call(this)},e.prototype.getExtent=function(){return this.extent_||oc},e.prototype.getFormat=function(){return this.format_},e.prototype.getFeatures=function(){return this.features_},e.prototype.getKey=function(){return this.url_},e.prototype.getProjection=function(){return this.projection_},e.prototype.getReplayGroup=function(t,e){return this.replayGroups_[o(t)+","+e]},e.prototype.load=function(){this.state==On.IDLE&&(this.setState(On.LOADING),this.tileLoadFunction_(this,this.url_),this.loader_(null,NaN,null))},e.prototype.onLoad=function(t,e,i){this.setProjection(e),this.setFeatures(t),this.setExtent(i)},e.prototype.onError=function(){this.setState(On.ERROR)},e.prototype.setExtent=function(t){this.extent_=t},e.prototype.setFeatures=function(t){this.features_=t,this.setState(On.LOADED)},e.prototype.setProjection=function(t){this.projection_=t},e.prototype.setReplayGroup=function(t,e,i){this.replayGroups_[o(t)+","+e]=i},e.prototype.setLoader=function(t){this.loader_=t},e}(vl),ac=function(t){function e(e){var i=e.projection||"EPSG:3857",r=e.extent||Gl(i),n=e.tileGrid||Fl({extent:r,maxZoom:e.maxZoom||22,minZoom:e.minZoom,tileSize:e.tileSize||512});t.call(this,{attributions:e.attributions,cacheSize:void 0!==e.cacheSize?e.cacheSize:128,opaque:!1,projection:i,state:e.state,tileGrid:n,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:nc,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition}),this.format_=e.format?e.format:null,this.sourceTiles_={},this.overlaps_=void 0==e.overlaps||e.overlaps,this.tileClass=e.tileClass?e.tileClass:sc,this.tileGrids_={}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getOverlaps=function(){return this.overlaps_},e.prototype.clear=function(){this.tileCache.clear(),this.sourceTiles_={}},e.prototype.getTile=function(t,e,i,r,n){var o=Sl(t,e,i);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var s=[t,e,i],a=this.getTileCoordForTileUrlFunction(s,n),h=new rc(s,null!==a?On.IDLE:On.EMPTY,this.getRevision(),this.format_,this.tileLoadFunction,a,this.tileUrlFunction,this.tileGrid,this.getTileGridForProjection(n),this.sourceTiles_,r,n,this.tileClass,this.handleTileChange.bind(this),s[0]);return this.tileCache.set(o,h),h},e.prototype.getTileGridForProjection=function(t){var e=t.getCode(),i=this.tileGrids_[e];if(!i){var r=this.tileGrid;i=this.tileGrids_[e]=Nl(t,void 0,r?r.getTileSize(r.getMinZoom()):void 0)}return i},e.prototype.getTilePixelRatio=function(t){return t},e.prototype.getTilePixelSize=function(t,e,i){var r=ho(this.getTileGridForProjection(i).getTileSize(t),this.tmpSize);return[Math.round(r[0]*e),Math.round(r[1]*e)]},e}(Ju),hc={KVP:"KVP",REST:"REST"},lc=function(t){function e(e){var i=void 0!==e.requestEncoding?e.requestEncoding:hc.KVP,r=e.tileGrid,n=e.urls;void 0===n&&void 0!==e.url&&(n=Uu(e.url)),t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,projection:e.projection,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileClass:e.tileClass,tileGrid:r,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:ju,urls:n,wrapX:void 0!==e.wrapX&&e.wrapX,transition:e.transition}),this.version_=void 0!==e.version?e.version:"1.0.0",this.format_=void 0!==e.format?e.format:"image/jpeg",this.dimensions_=void 0!==e.dimensions?e.dimensions:{},this.layer_=e.layer,this.matrixSet_=e.matrixSet,this.style_=e.style,this.requestEncoding_=i,this.setKey(this.getKeyForDimensions_()),n&&n.length>0&&(this.tileUrlFunction=ku(n.map(uc.bind(this))))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.setTileUrlFunction(ku(t.map(uc.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 i in this.dimensions_)e[t++]=i+"-"+this.dimensions_[i];return e.join("/")},e.prototype.updateDimensions=function(t){u(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())},e}($u);function uc(t){var e=this.requestEncoding_,i={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};e==hc.KVP&&u(i,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t=e==hc.KVP?_p(t,i):t.replace(/\{(\w+?)\}/g,function(t,e){return e.toLowerCase()in i?i[e.toLowerCase()]:t});var r=this.tileGrid,n=this.dimensions_;return function(i,o,s){if(i){var a={TileMatrix:r.getMatrixId(i[0]),TileCol:i[1],TileRow:-i[2]-1};u(a,n);var h=t;return h=e==hc.KVP?_p(h,a):h.replace(/\{(\w+?)\}/g,function(t,e){return a[e]})}}}var pc={DEFAULT:"default",TRUNCATED:"truncated"},cc=function(t){function e(e,i,r,n,o,s,a){t.call(this,i,r,n,o,s,a),this.zoomifyImage_=null,this.tileSize_=ho(e.getTileSize(i[0]))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getImage=function(){if(this.zoomifyImage_)return this.zoomifyImage_;var e=t.prototype.getImage.call(this);if(this.state==On.LOADED){var i=this.tileSize_;if(e.width==i[0]&&e.height==i[1])return this.zoomifyImage_=e,e;var r=Jn(i[0],i[1]);return r.drawImage(e,0,0),this.zoomifyImage_=r.canvas,r.canvas}return e},e}(xl),dc=function(t){function e(e){var i=e||{},r=i.size,n=void 0!==i.tierSizeCalculation?i.tierSizeCalculation:pc.DEFAULT,o=r[0],s=r[1],a=i.extent||[0,-r[1],r[0],0],h=[],l=i.tileSize||An,u=l;switch(n){case pc.DEFAULT:for(;o>u||s>u;)h.push([Math.ceil(o/u),Math.ceil(s/u)]),u+=u;break;case pc.TRUNCATED:for(var p=o,c=s;p>u||c>u;)h.push([Math.ceil(p/u),Math.ceil(c/u)]),p>>=1,c>>=1;break;default:Y(!1,53)}h.push([1,1]),h.reverse();for(var d=[1],f=[0],_=1,g=h.length;_0)break}this.source_&&(this.source_.clear(),this.source_.addFeatures(s)),this.dispatchEvent(new Tc(Sc,t,s,n))},e.prototype.registerListeners_=function(){var t=this.getMap();if(t){var e=this.target?this.target:t.getViewport();this.dropListenKeys_=[v(e,M.DROP,Cc,this),v(e,M.DRAGENTER,Rc,this),v(e,M.DRAGOVER,Rc,this),v(e,M.DROP,Rc,this)]}},e.prototype.setActive=function(e){t.prototype.setActive.call(this,e),e?this.registerListeners_():this.unregisterListeners_()},e.prototype.setMap=function(e){this.unregisterListeners_(),t.prototype.setMap.call(this,e),this.getActive()&&this.registerListeners_()},e.prototype.tryReadFeatures_=function(t,e,i){try{return t.readFeatures(e,i)}catch(t){return null}},e.prototype.unregisterListeners_=function(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(E),this.dropListenKeys_=null)},e}(Fo),Ic=function(t){function e(e){var i=e||{};t.call(this,i),this.condition_=i.condition?i.condition:zo,this.lastAngle_=void 0,this.lastMagnitude_=void 0,this.lastScaleDelta_=0,this.duration_=void 0!==i.duration?i.duration:400}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.handleDragEvent=function(t){if(Ko(t)){var e=t.map,i=e.getSize(),r=t.pixel,n=r[0]-i[0]/2,o=i[1]/2-r[1],s=Math.atan2(o,n),a=Math.sqrt(n*n+o*o),h=e.getView();if(h.getConstraints().rotation!==Gn&&void 0!==this.lastAngle_){var l=s-this.lastAngle_;Oo(h,h.getRotation()-l)}if(this.lastAngle_=s,void 0!==this.lastMagnitude_)Mo(h,this.lastMagnitude_*(h.getResolution()/a));void 0!==this.lastMagnitude_&&(this.lastScaleDelta_=this.lastMagnitude_/a),this.lastMagnitude_=a}},e.prototype.handleUpEvent=function(t){if(!Ko(t))return!0;var e=t.map.getView();e.setHint(jn,-1);var i=this.lastScaleDelta_-1;return Lo(e,e.getRotation()),Po(e,e.getResolution(),void 0,this.duration_,i),this.lastScaleDelta_=0,!1},e.prototype.handleDownEvent=function(t){return!!Ko(t)&&(!!this.condition_(t)&&(t.map.getView().setHint(jn,1),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))},e}(qo),Lc=function(t){function e(e,i,r){if(t.call(this),void 0!==r&&void 0===i)this.setFlatCoordinates(r,e);else{var n=i||0;this.setCenterAndRadius(e,n,r)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clone=function(){return new e(this.flatCoordinates.slice(),void 0,this.layout)},e.prototype.closestPointXY=function(t,e,i,r){var n=this.flatCoordinates,o=t-n[0],s=e-n[1],a=o*o+s*s;if(a=e[0]||(t[1]<=e[1]&&t[3]>=e[1]||mt(t,this.intersectsCoordinate,this))}return!1},e.prototype.setCenter=function(t){var e=this.stride,i=this.flatCoordinates[e]-this.flatCoordinates[0],r=t.slice();r[e]=r[0]+i;for(var n=1;n=this.dragVertexDelay_?(this.downPx_=e.pixel,this.shouldHandle_=!this.freehand_,i=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0));return this.freehand_&&e.type===Ar.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(e),r=!1):this.freehand_&&e.type===Ar.POINTERDOWN?r=!1:i?(r=e.type===Ar.POINTERMOVE)&&this.freehand_?r=this.handlePointerMove_(e):(e.pointerEvent.pointerType==Ur||e.type===Ar.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(e):e.type===Ar.DBLCLICK&&(r=!1),t.prototype.handleEvent.call(this,e)&&r},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 Nr(Ar.POINTERMOVE,t.map,t.pointerEvent,!1,t.frameState))}.bind(this),this.dragVertexDelay_),this.downPx_=t.pixel,!0)},e.prototype.handleUpEvent=function(t){var e=!0;this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0),this.handlePointerMove_(t);var i=this.mode_===Ac.CIRCLE;return this.shouldHandle_?(this.finishCoordinate_?this.freehand_||i?this.finishDrawing():this.atFinish_(t)?this.finishCondition_(t)&&this.finishDrawing():this.addToDrawing_(t):(this.startDrawing_(t),this.mode_===Ac.POINT&&this.finishDrawing()),e=!1):this.freehand_&&(this.finishCoordinate_=null,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_,i=t.pixel,r=e[0]-i[0],n=e[1]-i[1],o=r*r+n*n;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 i=!1,r=[this.finishCoordinate_];if(this.mode_===Ac.LINE_STRING)i=this.sketchCoords_.length>this.minPoints_;else if(this.mode_===Ac.POLYGON){var n=this.sketchCoords_;i=n[0].length>this.minPoints_,r=[n[0][0],n[0][n[0].length-2]]}if(i)for(var o=t.map,s=0,a=r.length;s=this.maxPoints_&&(this.freehand_?i.pop():e=!0),i.push(r.slice()),this.geometryFunction_(i,n)):this.mode_===Ac.POLYGON&&((i=this.sketchCoords_[0]).length>=this.maxPoints_&&(this.freehand_?i.pop():e=!0),i.push(r.slice()),e&&(this.finishCoordinate_=i[0]),this.geometryFunction_(this.sketchCoords_,n)),this.updateSketchFeatures_(),e&&this.finishDrawing()},e.prototype.removeLastPoint=function(){if(this.sketchFeature_){var t,e=this.sketchFeature_.getGeometry();this.mode_===Ac.LINE_STRING?((t=this.sketchCoords_).splice(-2,1),this.geometryFunction_(t,e),t.length>=2&&(this.finishCoordinate_=t[t.length-2].slice())):this.mode_===Ac.POLYGON&&((t=this.sketchCoords_[0]).splice(-2,1),this.sketchLine_.getGeometry().setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e)),0===t.length&&(this.finishCoordinate_=null),this.updateSketchFeatures_()}},e.prototype.finishDrawing=function(){var t=this.abortDrawing_();if(t){var e=this.sketchCoords_,i=t.getGeometry();this.mode_===Ac.LINE_STRING?(e.pop(),this.geometryFunction_(e,i)):this.mode_===Ac.POLYGON&&(e[0].pop(),this.geometryFunction_(e,i),e=i.getCoordinates()),this.type_===Nt.MULTI_POINT?t.setGeometry(new bc([e])):this.type_===Nt.MULTI_LINE_STRING?t.setGeometry(new Pc([e])):this.type_===Nt.MULTI_POLYGON&&t.setGeometry(new Fc([e])),this.dispatchEvent(new Dc(Gc,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 t&&(this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0)),t},e.prototype.extend=function(t){var e=t.getGeometry();this.sketchFeature_=t,this.sketchCoords_=e.getCoordinates();var i=this.sketchCoords_[this.sketchCoords_.length-1];this.finishCoordinate_=i.slice(),this.sketchCoords_.push(i.slice()),this.updateSketchFeatures_(),this.dispatchEvent(new Dc(Nc,this.sketchFeature_))},e.prototype.updateSketchFeatures_=function(){var t=[];this.sketchFeature_&&t.push(this.sketchFeature_),this.sketchLine_&&t.push(this.sketchLine_),this.sketchPoint_&&t.push(this.sketchPoint_);var e=this.overlay_.getSource();e.clear(!0),e.addFeatures(t)},e.prototype.updateState_=function(){var t=this.getMap(),e=this.getActive();t&&e||this.abortDrawing_(),this.overlay_.setMap(e?t:null)},e}(qo),jc={EXTENTCHANGED:"extentchanged"},Uc=function(t){function e(e){t.call(this,jc.EXTENTCHANGED),this.extent=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P);function Yc(t){return function(e){return tt([t,e])}}function Bc(t,e){return t[0]==e[0]?function(i){return tt([t,[i[0],e[1]]])}:t[1]==e[1]?function(i){return tt([t,[e[0],i[1]]])}:null}var Vc=function(t){function e(e){var i=e||{};t.call(this,i),this.extent_=null,this.pointerHandler_=null,this.pixelTolerance_=void 0!==i.pixelTolerance?i.pixelTolerance:10,this.snappedToVertex_=!1,this.extentFeature_=null,this.vertexFeature_=null,e||(e={}),this.extentOverlay_=new gc({source:new op({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.boxStyle?e.boxStyle:function(){var t=Fu();return function(e,i){return t[Nt.POLYGON]}}(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.vertexOverlay_=new gc({source:new op({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.pointerStyle?e.pointerStyle:function(){var t=Fu();return function(e,i){return t[Nt.POINT]}}(),updateWhileAnimating:!0,updateWhileInteracting:!0}),e.extent&&this.setExtent(e.extent)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.snapToVertex_=function(t,e){var i=e.getCoordinateFromPixel(t),r=this.getExtent();if(r){var n=function(t){return[[[t[0],t[1]],[t[0],t[3]]],[[t[0],t[3]],[t[2],t[3]]],[[t[2],t[3]],[t[2],t[1]]],[[t[2],t[1]],[t[0],t[1]]]]}(r);n.sort(function(t,e){return rr(i,t)-rr(i,e)});var o=n[0],s=Zi(i,o),a=e.getPixelFromCoordinate(s);if(ir(t,a)<=this.pixelTolerance_){var h=e.getPixelFromCoordinate(o[0]),l=e.getPixelFromCoordinate(o[1]),u=er(a,h),p=er(a,l),c=Math.sqrt(Math.min(u,p));return this.snappedToVertex_=c<=this.pixelTolerance_,this.snappedToVertex_&&(s=u>p?o[1]:o[0]),s}}return null},e.prototype.handlePointerMove_=function(t){var e=t.pixel,i=t.map,r=this.snapToVertex_(e,i);r||(r=i.getCoordinateFromPixel(e)),this.createOrUpdatePointerFeature_(r)},e.prototype.createOrUpdateExtentFeature_=function(t){var e=this.extentFeature_;return e?t?e.setGeometry(Oi(t)):e.setGeometry(void 0):(e=new B(t?Oi(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 B(new ci(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e));return e},e.prototype.handleEvent=function(e){return!e.pointerEvent||(e.type!=Ar.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(e),t.prototype.handleEvent.call(this,e),!1)},e.prototype.handleDownEvent=function(t){var e=t.pixel,i=t.map,r=this.getExtent(),n=this.snapToVertex_(e,i),o=function(t){var e=null,i=null;return t[0]==r[0]?e=r[2]:t[0]==r[2]&&(e=r[0]),t[1]==r[1]?i=r[3]:t[1]==r[3]&&(i=r[1]),null!==e&&null!==i?[e,i]:null};if(n&&r){var s=n[0]==r[0]||n[0]==r[2]?n[0]:null,a=n[1]==r[1]||n[1]==r[3]?n[1]:null;null!==s&&null!==a?this.pointerHandler_=Yc(o(n)):null!==s?this.pointerHandler_=Bc(o([s,r[1]]),o([s,r[3]])):null!==a&&(this.pointerHandler_=Bc(o([r[0],a]),o([r[2],a])))}else n=i.getCoordinateFromPixel(e),this.setExtent([n[0],n[1],n[0],n[1]]),this.pointerHandler_=Yc(n);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.getExtent();return e&&0!==xt(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 this.extent_},e.prototype.setExtent=function(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new Uc(this.extent_))},e}(qo),Xc=1,zc="modifystart",Wc="modifyend",Kc=function(t){function e(e,i,r){t.call(this,e),this.features=i,this.mapBrowserEvent=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P);function Hc(t,e){return t.index-e.index}function Zc(t,e){var i=e.geometry;if(i.getType()===Nt.CIRCLE){var r=i;if(e.index===Xc){var n=er(r.getCenter(),t),o=Math.sqrt(n)-r.getRadius();return o*o}}return rr(t,e.segment)}function qc(t,e){var i=e.geometry;return i.getType()===Nt.CIRCLE&&e.index===Xc?i.getClosestPoint(t):Zi(t,e.segment)}var Jc=function(t){function e(e){var i;if(t.call(this,e),this.condition_=e.condition?e.condition:Ho,this.defaultDeleteCondition_=function(t){return Go(t)&&Vo(t)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:jo,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.modified_=!1,this.rBush_=new tl,this.pixelTolerance_=void 0!==e.pixelTolerance?e.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new gc({source:new op({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:function(){var t=Fu();return function(e,i){return t[Nt.POINT]}}(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.SEGMENT_WRITERS_={Point:this.writePointGeometry_,LineString:this.writeLineStringGeometry_,LinearRing:this.writeLineStringGeometry_,Polygon:this.writePolygonGeometry_,MultiPoint:this.writeMultiPointGeometry_,MultiLineString:this.writeMultiLineStringGeometry_,MultiPolygon:this.writeMultiPolygonGeometry_,Circle:this.writeCircleGeometry_,GeometryCollection:this.writeGeometryCollectionGeometry_},this.source_=null,e.source?(this.source_=e.source,i=new U(this.source_.getFeatures()),v(this.source_,rp.ADDFEATURE,this.handleSourceAdd_,this),v(this.source_,rp.REMOVEFEATURE,this.handleSourceRemove_,this)):i=e.features,!i)throw new Error("The modify interaction requires features or a source");this.features_=i,this.features_.forEach(this.addFeature_.bind(this)),v(this.features_,h.ADD,this.handleFeatureAdd_,this),v(this.features_,h.REMOVE,this.handleFeatureRemove_,this),this.lastPointerEvent_=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.addFeature_=function(t){var e=t.getGeometry();e&&e.getType()in this.SEGMENT_WRITERS_&&this.SEGMENT_WRITERS_[e.getType()].call(this,t,e);var i=this.getMap();i&&i.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,i),v(t,M.CHANGE,this.handleFeatureChange_,this)},e.prototype.willModifyFeatures_=function(t){this.modified_||(this.modified_=!0,this.dispatchEvent(new Kc(zc,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),x(t,M.CHANGE,this.handleFeatureChange_,this)},e.prototype.removeFeatureSegmentData_=function(t){var e=this.rBush_,i=[];e.forEach(function(e){t===e.feature&&i.push(e)});for(var r=i.length-1;r>=0;--r)e.remove(i[r])},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 i=e.getCoordinates(),r={feature:t,geometry:e,segment:[i,i]};this.rBush_.insert(e.getExtent(),r)},e.prototype.writeMultiPointGeometry_=function(t,e){for(var i=e.getCoordinates(),r=0,n=i.length;r=0;--_)this.insertVertex_.apply(this,r[_])}return!!this.vertexFeature_},e.prototype.handleUpEvent=function(t){for(var e=this.dragSegments_.length-1;e>=0;--e){var i=this.dragSegments_[e][0],r=i.geometry;if(r.getType()===Nt.CIRCLE){var n=r.getCenter(),o=i.featureSegments[0],s=i.featureSegments[1];o.segment[0]=o.segment[1]=n,s.segment[0]=s.segment[1]=n,this.rBush_.update(pt(n),o),this.rBush_.update(r.getExtent(),s)}else this.rBush_.update(tt(i.segment),i)}return this.modified_&&(this.dispatchEvent(new Kc(Wc,this.features_,t)),this.modified_=!1),!1},e.prototype.handlePointerMove_=function(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.pixel,t.map)},e.prototype.handlePointerAtPixel_=function(t,e){var i=e.getCoordinateFromPixel(t),r=et(pt(i),e.getView().getResolution()*this.pixelTolerance_),n=this.rBush_.getInExtent(r);if(n.length>0){n.sort(function(t,e){return Zc(i,t)-Zc(i,e)});var s=n[0],a=s.segment,h=qc(i,s),l=e.getPixelFromCoordinate(h),u=ir(t,l);if(u<=this.pixelTolerance_){var p={};if(s.geometry.getType()===Nt.CIRCLE&&s.index===Xc)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(h);else{var c=e.getPixelFromCoordinate(a[0]),d=e.getPixelFromCoordinate(a[1]),f=er(l,c),_=er(l,d);u=Math.sqrt(Math.min(f,_)),this.snappedToVertex_=u<=this.pixelTolerance_,this.snappedToVertex_&&(h=f>_?a[1]:a[0]),this.createOrUpdateVertexFeature_(h);for(var g=1,y=n.length;g=0;--n)p=o((u=(i=c[n])[0]).feature),u.depth&&(p+="-"+u.depth.join("-")),p in d||(d[p]={}),0===i[1]?(d[p].right=u,d[p].index=u.index):1==i[1]&&(d[p].left=u,d[p].index=u.index+1);for(p in d){switch(l=d[p].right,a=d[p].left,h=(s=d[p].index)-1,u=void 0!==a?a:l,h<0&&(h=0),t=e=(r=u.geometry).getCoordinates(),f=!1,r.getType()){case Nt.MULTI_LINE_STRING:e[u.depth[0]].length>2&&(e[u.depth[0]].splice(s,1),f=!0);break;case Nt.LINE_STRING:e.length>2&&(e.splice(s,1),f=!0);break;case Nt.MULTI_POLYGON:t=t[u.depth[1]];case Nt.POLYGON:(t=t[u.depth[0]]).length>4&&(s==t.length-1&&(s=0),t.splice(s,1),f=!0,0===s&&(t.pop(),t.push(t[0]),h=t.length-1))}if(f){this.setGeometryCoordinates_(r,e);var _=[];if(void 0!==a&&(this.rBush_.remove(a),_.push(a.segment[0])),void 0!==l&&(this.rBush_.remove(l),_.push(l.segment[1])),void 0!==a&&void 0!==l){var g={depth:u.depth,feature:u.feature,geometry:u.geometry,index:h,segment:_};this.rBush_.insert(tt(g.segment),g)}this.updateSegmentIndices_(r,s,u.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),c.length=0}}return f},e.prototype.setGeometryCoordinates_=function(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1},e.prototype.updateSegmentIndices_=function(t,e,i,r){this.rBush_.forEachInExtent(t.getExtent(),function(n){n.geometry===t&&(void 0===i||void 0===n.depth||Z(n.depth,i))&&n.index>e&&(n.index+=r)})},e}(qo),Qc={SELECT:"select"},$c=function(t){function e(e,i,r,n){t.call(this,e),this.selected=i,this.deselected=r,this.mapBrowserEvent=n}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(P);function td(t){if(!this.condition_(t))return!0;var e=this.addCondition_(t),i=this.removeCondition_(t),r=this.toggleCondition_(t),n=!e&&!i&&!r,o=t.map,s=this.getFeatures(),a=[],h=[];if(n){p(this.featureLayerAssociation_),o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.filter_(t,e))return h.push(t),this.addFeatureLayerAssociation_(t,e),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var l=s.getLength()-1;l>=0;--l){var u=s.item(l),c=h.indexOf(u);c>-1?h.splice(c,1):(s.remove(u),a.push(u))}0!==h.length&&s.extend(h)}else{o.forEachFeatureAtPixel(t.pixel,function(t,n){if(this.filter_(t,n))return!e&&!r||X(s.getArray(),t)?(i||r)&&X(s.getArray(),t)&&(a.push(t),this.removeFeatureLayerAssociation_(t)):(h.push(t),this.addFeatureLayerAssociation_(t,n)),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var d=a.length-1;d>=0;--d)s.remove(a[d]);s.extend(h)}return(h.length>0||a.length>0)&&this.dispatchEvent(new $c(Qc.SELECT,h,a,t)),Bo(t)}var ed=function(t){function e(e){t.call(this,{handleEvent:td});var i=e||{};this.condition_=i.condition?i.condition:Vo,this.addCondition_=i.addCondition?i.addCondition:Yo,this.removeCondition_=i.removeCondition?i.removeCondition:Yo,this.toggleCondition_=i.toggleCondition?i.toggleCondition:zo,this.multi_=!!i.multi&&i.multi,this.filter_=i.filter?i.filter:R,this.hitTolerance_=i.hitTolerance?i.hitTolerance:0;var r,n=new gc({source:new op({useSpatialIndex:!1,features:i.features,wrapX:i.wrapX}),style:i.style?i.style:function(){var t=Fu();return K(t[Nt.POLYGON],t[Nt.LINE_STRING]),K(t[Nt.GEOMETRY_COLLECTION],t[Nt.LINE_STRING]),function(e,i){return e.getGeometry()?t[e.getGeometry().getType()]:null}}(),updateWhileAnimating:!0,updateWhileInteracting:!0});if(this.featureOverlay_=n,i.layers)if("function"==typeof i.layers)r=i.layers;else{var o=i.layers;r=function(t){return X(o,t)}}else r=R;this.layerFilter_=r,this.featureLayerAssociation_={};var s=this.getFeatures();v(s,h.ADD,this.addFeature_,this),v(s,h.REMOVE,this.removeFeature_,this)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.addFeatureLayerAssociation_=function(t,e){this.featureLayerAssociation_[o(t)]=e},e.prototype.getFeatures=function(){return this.featureOverlay_.getSource().getFeaturesCollection()},e.prototype.getHitTolerance=function(){return this.hitTolerance_},e.prototype.getLayer=function(t){return this.featureLayerAssociation_[o(t)]},e.prototype.getOverlay=function(){return this.featureOverlay_},e.prototype.setHitTolerance=function(t){this.hitTolerance_=t},e.prototype.setMap=function(e){var i=this.getMap(),r=this.getFeatures();i&&r.forEach(i.unskipFeature.bind(i)),t.prototype.setMap.call(this,e),this.featureOverlay_.setMap(e),e&&r.forEach(e.skipFeature.bind(e))},e.prototype.addFeature_=function(t){var e=this.getMap();e&&e.skipFeature(t.element)},e.prototype.removeFeature_=function(t){var e=this.getMap();e&&e.unskipFeature(t.element)},e.prototype.removeFeatureLayerAssociation_=function(t){delete this.featureLayerAssociation_[o(t)]},e}(Fo);function id(t){return t.feature?t.feature:t.element?t.element:void 0}var rd=function(t){function e(e){var i=e||{},r=i;r.handleDownEvent||(r.handleDownEvent=R),r.stopDown||(r.stopDown=w),t.call(this,r),this.source_=i.source?i.source:null,this.vertex_=void 0===i.vertex||i.vertex,this.edge_=void 0===i.edge||i.edge,this.features_=i.features?i.features:null,this.featuresListenerKeys_=[],this.featureChangeListenerKeys_={},this.indexedFeaturesExtents_={},this.pendingFeatures_={},this.pixelCoordinate_=null,this.pixelTolerance_=void 0!==i.pixelTolerance?i.pixelTolerance:10,this.sortByDistance_=function(t,e){var i=rr(this.pixelCoordinate_,t.segment),r=rr(this.pixelCoordinate_,e.segment);return i-r}.bind(this),this.rBush_=new tl,this.SEGMENT_WRITERS_={Point:this.writePointGeometry_,LineString:this.writeLineStringGeometry_,LinearRing:this.writeLineStringGeometry_,Polygon:this.writePolygonGeometry_,MultiPoint:this.writeMultiPointGeometry_,MultiLineString:this.writeMultiLineStringGeometry_,MultiPolygon:this.writeMultiPolygonGeometry_,GeometryCollection:this.writeGeometryCollectionGeometry_,Circle:this.writeCircleGeometry_}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.addFeature=function(t,e){var i=void 0===e||e,r=o(t),n=t.getGeometry();if(n){var s=this.SEGMENT_WRITERS_[n.getType()];s&&(this.indexedFeaturesExtents_[r]=n.getExtent([1/0,1/0,-1/0,-1/0]),s.call(this,t,n))}i&&(this.featureChangeListenerKeys_[r]=v(t,M.CHANGE,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 i=this.snapTo(e.pixel,e.coordinate,e.map);return i.snapped&&(e.coordinate=i.vertex.slice(0,2),e.pixel=i.vertexPixel),t.prototype.handleEvent.call(this,e)},e.prototype.handleFeatureAdd_=function(t){var e=id(t);this.addFeature(e)},e.prototype.handleFeatureRemove_=function(t){var e=id(t);this.removeFeature(e)},e.prototype.handleFeatureChange_=function(t){var e=t.target;if(this.handlingDownUpSequence){var i=o(e);i in this.pendingFeatures_||(this.pendingFeatures_[i]=e)}else this.updateFeature_(e)},e.prototype.handleUpEvent=function(t){var e=c(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1},e.prototype.removeFeature=function(t,e){var i=void 0===e||e,r=o(t),n=this.indexedFeaturesExtents_[r];if(n){var s=this.rBush_,a=[];s.forEachInExtent(n,function(e){t===e.feature&&a.push(e)});for(var h=a.length-1;h>=0;--h)s.remove(a[h])}i&&(E(this.featureChangeListenerKeys_[r]),delete this.featureChangeListenerKeys_[r])},e.prototype.setMap=function(e){var i=this.getMap(),r=this.featuresListenerKeys_,n=this.getFeatures_();i&&(r.forEach(E),r.length=0,n.forEach(this.forEachFeatureRemove_.bind(this))),t.prototype.setMap.call(this,e),e&&(this.features_?r.push(v(this.features_,h.ADD,this.handleFeatureAdd_,this),v(this.features_,h.REMOVE,this.handleFeatureRemove_,this)):this.source_&&r.push(v(this.source_,rp.ADDFEATURE,this.handleFeatureAdd_,this),v(this.source_,rp.REMOVEFEATURE,this.handleFeatureRemove_,this)),n.forEach(this.forEachFeatureAdd_.bind(this)))},e.prototype.snapTo=function(t,e,i){var r=tt([i.getCoordinateFromPixel([t[0]-this.pixelTolerance_,t[1]+this.pixelTolerance_]),i.getCoordinateFromPixel([t[0]+this.pixelTolerance_,t[1]-this.pixelTolerance_])]),n=this.rBush_.getInExtent(r);this.vertex_&&!this.edge_&&(n=n.filter(function(t){return t.feature.getGeometry().getType()!==Nt.CIRCLE}));var o,s,a,h,l=!1,u=null,p=null;if(n.length>0){this.pixelCoordinate_=e,n.sort(this.sortByDistance_);var c=n[0].segment,d=n[0].feature.getGeometry().getType()===Nt.CIRCLE;this.vertex_&&!this.edge_?(o=i.getPixelFromCoordinate(c[0]),s=i.getPixelFromCoordinate(c[1]),a=er(t,o),h=er(t,s),Math.sqrt(Math.min(a,h))<=this.pixelTolerance_&&(l=!0,u=a>h?c[1]:c[0],p=i.getPixelFromCoordinate(u))):this.edge_&&(u=d?function(t,e){var i=e.getRadius(),r=e.getCenter(),n=r[0],o=r[1],s=t[0]-n,a=t[1]-o;0===s&&0===a&&(s=1);var h=Math.sqrt(s*s+a*a);return[n+i*s/h,o+i*a/h]}(e,n[0].feature.getGeometry()):Zi(e,c),ir(t,p=i.getPixelFromCoordinate(u))<=this.pixelTolerance_&&(l=!0,this.vertex_&&!d&&(o=i.getPixelFromCoordinate(c[0]),s=i.getPixelFromCoordinate(c[1]),a=er(p,o),h=er(p,s),Math.sqrt(Math.min(a,h))<=this.pixelTolerance_&&(u=a>h?c[1]:c[0],p=i.getPixelFromCoordinate(u))))),l&&(p=[Math.round(p[0]),Math.round(p[1])])}return{snapped:l,vertex:u,vertexPixel:p}},e.prototype.updateFeature_=function(t){this.removeFeature(t,!1),this.addFeature(t,!1)},e.prototype.writeCircleGeometry_=function(t,e){for(var i=Pi(e).getCoordinates()[0],r=0,n=i.length-1;r=0;i--){var u=o[i][0],p=ot(new pi(u).getExtent(),new pi(h).getExtent());if(p){o[i].push(h),l=!0;break}}l||o.push([h.reverse()])}return o}(r.rings,n);1===o.length?(i=Nt.POLYGON,t.rings=o[0]):(i=Nt.MULTI_POLYGON,t.rings=o)}return dd((0,gd[i])(t),!1,e)}function md(t){var e=At.XY;return!0===t.hasZ&&!0===t.hasM?e=At.XYZM:!0===t.hasZ?e=At.XYZ:!0===t.hasM&&(e=At.XYM),e}function xd(t){var e=t.getLayout();return{hasZ:e===At.XYZ||e===At.XYZM,hasM:e===At.XYM||e===At.XYZM}}function Ed(t,e){return(0,yd[t.getType()])(dd(t,!0,e),e)}yd[Nt.POINT]=function(t,e){var i,r=t.getCoordinates(),n=t.getLayout();n===At.XYZ?i={x:r[0],y:r[1],z:r[2]}:n===At.XYM?i={x:r[0],y:r[1],m:r[2]}:n===At.XYZM?i={x:r[0],y:r[1],z:r[2],m:r[3]}:n===At.XY?i={x:r[0],y:r[1]}:Y(!1,34);return i},yd[Nt.LINE_STRING]=function(t,e){var i=t,r=xd(i);return{hasZ:r.hasZ,hasM:r.hasM,paths:[i.getCoordinates()]}},yd[Nt.POLYGON]=function(t,e){var i=t,r=xd(i);return{hasZ:r.hasZ,hasM:r.hasM,rings:i.getCoordinates(!1)}},yd[Nt.MULTI_POINT]=function(t,e){var i=t,r=xd(i);return{hasZ:r.hasZ,hasM:r.hasM,points:i.getCoordinates()}},yd[Nt.MULTI_LINE_STRING]=function(t,e){var i=t,r=xd(i);return{hasZ:r.hasZ,hasM:r.hasM,paths:i.getCoordinates()}},yd[Nt.MULTI_POLYGON]=function(t,e){for(var i=xd(t),r=t.getCoordinates(!1),n=[],o=0;o=0;s--)n.push(r[o][s]);return{hasZ:i.hasZ,hasM:i.hasM,rings:n}};var Sd=function(t){function e(e){var i=e||{};t.call(this),this.geometryName_=i.geometryName}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.readFeatureFromObject=function(t,e){var i=t,r=vd(i.geometry,e),n=new B;return this.geometryName_&&n.setGeometryName(this.geometryName_),n.setGeometry(r),e&&e.idField&&i.attributes[e.idField]&&n.setId(i.attributes[e.idField]),i.attributes&&n.setProperties(i.attributes),n},e.prototype.readFeaturesFromObject=function(t,e){var i=e||{};if(t.features){var r=[],n=t.features;i.idField=t.objectIdFieldName;for(var o=0,s=n.length;o0?i[0]:null},e.prototype.readFeatureFromNode=function(t,e){return null},e.prototype.readFeatures=function(t,e){if(t){if("string"==typeof t){var i=ru(t);return this.readFeaturesFromDocument(i,e)}return iu(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}return[]},e.prototype.readFeaturesFromDocument=function(t,e){for(var i=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&K(i,this.readFeaturesFromNode(r,e));return i},e.prototype.readFeaturesFromNode=function(t,e){return r()},e.prototype.readGeometry=function(t,e){if(t){if("string"==typeof t){var i=ru(t);return this.readGeometryFromDocument(i,e)}return iu(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=ru(t);return this.readProjectionFromDocument(e)}return iu(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 i=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(i)},e.prototype.writeFeatureNode=function(t,e){return null},e.prototype.writeFeatures=function(t,e){var i=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(i)},e.prototype.writeFeaturesNode=function(t,e){return null},e.prototype.writeGeometry=function(t,e){var i=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(i)},e.prototype.writeGeometryNode=function(t,e){return null},e}(cd),Cd="http://www.opengis.net/gml",Rd=/^[\s\xa0]*$/,wd=function(t){function e(e){t.call(this);var i=e||{};this.featureType=i.featureType,this.featureNS=i.featureNS,this.srsName=i.srsName,this.schemaLocation="",this.FEATURE_COLLECTION_PARSERS={},this.FEATURE_COLLECTION_PARSERS[this.namespace]={featureMember:ou(this.readFeaturesInternal),featureMembers:su(this.readFeaturesInternal)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.readFeaturesInternal=function(t,e){var i=t.localName,r=null;if("FeatureCollection"==i)r=gu([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==i||"featureMember"==i){var n=e[0],o=n.featureType,s=n.featureNS;if(!o&&t.childNodes){o=[],s={};for(var a=0,h=t.childNodes.length;a0){n[a]={_content_:n[a]};for(var l=0;l1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var s=o_[i.namespaceURI],a=du(o,s);return vu(n,s_,cu,a,[e],s,this),i},e}(Td);function g_(t,e){var i=null,r=[0,0],n="start";if(t.getImage()){var o=t.getImage().getImageSize();if(null===o&&(o=Bf),2==o.length){var s=t.getImage().getScale();r[0]=s*o[0]/2,r[1]=-s*o[1]/2,n="left"}}if(null!==t.getText()){var a=t.getText();(i=a.clone()).setFont(a.getFont()||c_.getFont()),i.setScale(a.getScale()||c_.getScale()),i.setFill(a.getFill()||c_.getFill()),i.setStroke(a.getStroke()||u_)}else i=c_.clone();return i.setText(e),i.setOffsetX(r[0]),i.setOffsetY(r[1]),i.setTextAlign(n),new Nu({text:i})}function y_(t){var e=eu(t,!1),i=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e);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 v_(t){for(var e,i=eu(t,!1),r=[],n=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?))?\s*/i;e=n.exec(i);){var o=parseFloat(e[1]),s=parseFloat(e[2]),a=e[3]?parseFloat(e[3]):0;r.push(o,s,a),i=i.substr(e[0].length)}if(""===i)return r}function m_(t){var e=eu(t,!1).trim(),i=t.baseURI;return i&&"about:blank"!=i||(i=window.location.href),i?new URL(e,i).href:e}function x_(t){return bd(t)}var E_=fu($f,{Pair:function(t,e){var i=gu({},q_,t,e);if(!i)return;var r=i.key;if(r&&"normal"==r){var n=i.styleUrl;n&&(e[e.length-1]=n);var o=i.Style;o&&(e[e.length-1]=o)}}});function S_(t,e){return gu(void 0,E_,t,e)}var T_=fu($f,{Icon:hu(function(t,e){var i=gu({},M_,t,e);return i||null}),heading:hu(bd),hotSpot:hu(function(t){var e,i=t.getAttribute("xunits"),r=t.getAttribute("yunits");return e="insetPixels"!==i?"insetPixels"!==r?Lu.BOTTOM_LEFT:Lu.TOP_LEFT:"insetPixels"!==r?Lu.BOTTOM_RIGHT:Lu.TOP_RIGHT,{x:parseFloat(t.getAttribute("x")),xunits:t_[i],y:parseFloat(t.getAttribute("y")),yunits:t_[r],origin:e}}),scale:hu(x_)});var C_=fu($f,{color:hu(y_),scale:hu(x_)});var R_=fu($f,{color:hu(y_),width:hu(bd)});var w_=fu($f,{color:hu(y_),fill:hu(Ld),outline:hu(Ld)});var I_=fu($f,{coordinates:su(v_)});function L_(t,e){return gu(null,I_,t,e)}var O_=fu(Qf,{Track:ou(b_)});var P_=fu($f,{when:function(t,e){var i=e[e.length-1].whens,r=eu(t,!1),n=Date.parse(r);i.push(isNaN(n)?0:n)}},fu(Qf,{coord:function(t,e){var i=e[e.length-1].flatCoordinates,r=eu(t,!1),n=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(r);if(n){var o=parseFloat(n[1]),s=parseFloat(n[2]),a=parseFloat(n[3]);i.push(o,s,a,0)}else i.push(0,0,0,0)}}));function b_(t,e){var i=gu({flatCoordinates:[],whens:[]},P_,t,e);if(i){for(var r=i.flatCoordinates,n=i.whens,o=0,s=Math.min(r.length,n.length);o0,u=h.href;u?r=u:l&&(r=Vf);var p,c=Lu.BOTTOM_LEFT,d=i.hotSpot;d?(n=[d.x,d.y],o=d.xunits,s=d.yunits,c=d.origin):r===Vf?(n=jf,o=Uf,s=Yf):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(r)&&(n=[.5,0],o=wu.FRACTION,s=wu.FRACTION);var f,_=h.x,g=h.y;void 0!==_&&void 0!==g&&(p=[_,g]);var y,v=h.w,m=h.h;void 0!==v&&void 0!==m&&(f=[v,m]);var x=i.heading;void 0!==x&&(y=Vt(x));var E=i.scale;if(l){r==Vf&&(f=Bf,void 0===E&&(E=Xf));var S=new Ou({anchor:n,anchorOrigin:c,anchorXUnits:o,anchorYUnits:s,crossOrigin:"anonymous",offset:p,offsetOrigin:Lu.BOTTOM_LEFT,rotation:y,scale:E,size:f,src:r});a.imageStyle=S}else a.imageStyle=h_}},LabelStyle:function(t,e){var i=gu({},C_,t,e);if(i){var r=e[e.length-1],n=new Rr({fill:new mr({color:"color"in i?i.color:kf}),scale:i.scale});r.textStyle=n}},LineStyle:function(t,e){var i=gu({},R_,t,e);if(i){var r=e[e.length-1],n=new Er({color:"color"in i?i.color:kf,width:"width"in i?i.width:1});r.strokeStyle=n}},PolyStyle:function(t,e){var i=gu({},w_,t,e);if(i){var r=e[e.length-1],n=new mr({color:"color"in i?i.color:kf});r.fillStyle=n;var o=i.fill;void 0!==o&&(r.fill=o);var s=i.outline;void 0!==s&&(r.outline=s)}}});function X_(t,e){var i=gu({},V_,t,e);if(!i)return null;var r,n="fillStyle"in i?i.fillStyle:a_,o=i.fill;void 0===o||o||(n=null),"imageStyle"in i?i.imageStyle!=h_&&(r=i.imageStyle):r=l_;var s="textStyle"in i?i.textStyle:c_,a="strokeStyle"in i?i.strokeStyle:p_,h=i.outline;return void 0===h||h||(a=null),[new Nu({fill:n,image:r,stroke:a,text:s,zIndex:void 0})]}function z_(t,e){var i,r,n,o=e.length,s=new Array(e.length),a=new Array(e.length),h=new Array(e.length);i=r=n=!1;for(var l=0;l0){var a=du(n,s);vu(r,wg,Lg,[{names:s,values:a}],i)}var h=e.getStyleFunction();if(h){var l=h(e,0);if(l){var u=Array.isArray(l)?l[0]:l;this.writeStyles_&&(n.Style=u);var p=u.getText();p&&(n.name=p.getText())}}var c=i[i.length-1].node,d=Ig[c.namespaceURI],f=du(n,d);vu(r,wg,cu,f,i,d);var _=i[0],g=e.getGeometry();g&&(g=dd(g,!0,_)),vu(r,wg,yg,[g],i)}var Pg=fu($f,["extrude","tessellate","altitudeMode","coordinates"]),bg=fu($f,{extrude:lu(Gd),tessellate:lu(Gd),altitudeMode:lu(jd),coordinates:lu(function(t,e,i){var r,n=i[i.length-1],o=n.layout,s=n.stride;o==At.XY||o==At.XYM?r=2:o==At.XYZ||o==At.XYZM?r=3:Y(!1,34);var a=e.length,h="";if(a>0){h+=e[0];for(var l=1;l>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;e.values.push(r)}}function qg(t,e,i){if(1==t)e.id=i.readVarint();else if(2==t)for(var r=i.readVarint()+i.pos;i.pos>3}s--,1===o||2===o?(a+=t.readSVarint(),h+=t.readSVarint(),1===o&&l>u&&(r.push(l),u=l),i.push(a,h),l+=2):7===o?l>u&&(i.push(i[u],i[u+1]),l+=2):Y(!1,59)}l>u&&(r.push(l),u=l)},e.prototype.createFeature_=function(t,e,i){var r,n=e.type;if(0===n)return null;var o=e.id,s=e.properties;s[this.layerName_]=e.layer.name;var a=[],h=[];this.readRawGeometry_(t,e,a,h);var l=function(t,e){var i;1===t?i=1===e?Nt.POINT:Nt.MULTI_POINT:2===t?i=1===e?Nt.LINE_STRING:Nt.MULTI_LINE_STRING:3===t&&(i=Nt.POLYGON);return i}(n,h.length);if(this.featureClass_===Kg)r=new this.featureClass_(l,a,h,s,o);else{var u;if(l==Nt.POLYGON){for(var p=[],c=0,d=0,f=0,_=h.length;f<_;++f){var g=h[f];Si(a,c,g,2)||(p.push(h.slice(d,f)),d=f),c=g}u=p.length>1?new Fc(a,At.XY,p):new Ii(a,At.XY,h)}else u=l===Nt.POINT?new ci(a,At.XY):l===Nt.LINE_STRING?new hr(a,At.XY):l===Nt.POLYGON?new Ii(a,At.XY,h):l===Nt.MULTI_POINT?new bc(a,At.XY):l===Nt.MULTI_LINE_STRING?new Pc(a,At.XY,h):null;r=new(0,this.featureClass_),this.geometryName_&&r.setGeometryName(this.geometryName_);var y=dd(u,!1,this.adaptOptions(i));r.setGeometry(y),r.setId(o),r.setProperties(s)}return r},e.prototype.getLastExtent=function(){return this.extent_},e.prototype.getType=function(){return Hl.ARRAY_BUFFER},e.prototype.readFeatures=function(t,e){var i=this.layers_,r=new Xg.a(t),n=r.readFields(Hg,{}),o=[];for(var s in n)if(!i||-1!=i.indexOf(s)){for(var a=n[s],h=0,l=a.length;h>1):n>>1}return e}(t),n=0,o=r.length;n=32;)e=63+(32|31&t),i+=String.fromCharCode(e),t>>=5;return e=t+63,i+=String.fromCharCode(e)}var cy=function(t){function e(e){t.call(this);var i=e||{};this.dataProjection=Ee("EPSG:4326"),this.factor_=i.factor?i.factor:1e5,this.geometryLayout_=i.geometryLayout?i.geometryLayout:At.XY}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.readFeatureFromText=function(t,e){var i=this.readGeometryFromText(t,e);return new B(i)},e.prototype.readFeaturesFromText=function(t,e){return[this.readFeatureFromText(t,e)]},e.prototype.readGeometryFromText=function(t,e){var i=ze(this.geometryLayout_),r=hy(t,i,this.factor_);sy(r,0,r.length,i,r);var n=ri(r,0,r.length,i);return dd(new hr(n,this.geometryLayout_),!1,this.adaptOptions(e))},e.prototype.writeFeatureText=function(t,e){var i=t.getGeometry();return i?this.writeGeometryText(i,e):(Y(!1,40),"")},e.prototype.writeFeaturesText=function(t,e){return this.writeFeatureText(t[0],e)},e.prototype.writeGeometryText=function(t,e){var i=(t=dd(t,!0,this.adaptOptions(e))).getFlatCoordinates(),r=t.getStride();return sy(i,0,i.length,r,i),ay(i,r,this.factor_)},e}(zf),dy={Point:function(t,e,i){var r=t.coordinates;e&&i&&vy(r,e,i);return new ci(r)},LineString:function(t,e){var i=fy(t.arcs,e);return new hr(i)},Polygon:function(t,e){for(var i=[],r=0,n=t.arcs.length;r0&&n.pop(),r=i>=0?e[i]:e[~i].slice().reverse(),n.push.apply(n,r);for(var a=0,h=n.length;a=2,57)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ey),Ty=function(t){function e(e){t.call(this,"And",Array.prototype.slice.call(arguments))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Sy),Cy=function(t){function e(e,i,r){t.call(this,"BBOX"),this.geometryName=e,this.extent=i,this.srsName=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ey),Ry=function(t){function e(e,i,r,n){t.call(this,e),this.geometryName=i||"the_geom",this.geometry=r,this.srsName=n}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ey),wy=function(t){function e(e,i,r){t.call(this,"Contains",e,i,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ry),Iy=function(t){function e(e,i){t.call(this,e),this.propertyName=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ey),Ly=function(t){function e(e,i,r){t.call(this,"During",e),this.begin=i,this.end=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Iy),Oy=function(t){function e(e,i,r,n){t.call(this,e,i),this.expression=r,this.matchCase=n}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Iy),Py=function(t){function e(e,i,r){t.call(this,"PropertyIsEqualTo",e,i,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Oy),by=function(t){function e(e,i){t.call(this,"PropertyIsGreaterThan",e,i)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Oy),My=function(t){function e(e,i){t.call(this,"PropertyIsGreaterThanOrEqualTo",e,i)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Oy),Fy=function(t){function e(e,i,r){t.call(this,"Intersects",e,i,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ry),Ay=function(t){function e(e,i,r){t.call(this,"PropertyIsBetween",e),this.lowerBoundary=i,this.upperBoundary=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Iy),Ny=function(t){function e(e,i,r,n,o,s){t.call(this,"PropertyIsLike",e),this.pattern=i,this.wildCard=void 0!==r?r:"*",this.singleChar=void 0!==n?n:".",this.escapeChar=void 0!==o?o:"!",this.matchCase=s}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Iy),Gy=function(t){function e(e){t.call(this,"PropertyIsNull",e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Iy),Dy=function(t){function e(e,i){t.call(this,"PropertyIsLessThan",e,i)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Oy),ky=function(t){function e(e,i){t.call(this,"PropertyIsLessThanOrEqualTo",e,i)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Oy),jy=function(t){function e(e){t.call(this,"Not"),this.condition=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ey),Uy=function(t){function e(e,i,r){t.call(this,"PropertyIsNotEqualTo",e,i,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Oy),Yy=function(t){function e(e){t.call(this,"Or",Array.prototype.slice.call(arguments))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Sy),By=function(t){function e(e,i,r){t.call(this,"Within",e,i,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Ry);function Vy(t){var e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(Ty,e))}function Xy(t,e,i){return new Cy(t,e,i)}var zy={"http://www.opengis.net/gml":{boundedBy:hu(Id.prototype.readGeometryElement,"bounds")}},Wy={"http://www.opengis.net/wfs":{totalInserted:hu(Fd),totalUpdated:hu(Fd),totalDeleted:hu(Fd)}},Ky={"http://www.opengis.net/wfs":{TransactionSummary:hu(function(t,e){return gu({},Wy,t,e)},"transactionSummary"),InsertResults:hu(function(t,e){return gu([],ov,t,e)},"insertIds")}},Hy={"http://www.opengis.net/wfs":{PropertyName:lu(jd)}},Zy={"http://www.opengis.net/wfs":{Insert:lu(function(t,e,i){var r=i[i.length-1],n=r.featureType,o=r.featureNS,s=r.gmlVersion,a=tu(o,n);t.appendChild(a),2===s?Zd.prototype.writeFeatureElement(a,e,i):Vd.prototype.writeFeatureElement(a,e,i)}),Update:lu(function(t,e,i){var r=i[i.length-1];Y(void 0!==e.getId(),27);var n=r.featureType,o=r.featurePrefix,s=r.featureNS,a=av(o,n),h=e.getGeometryName();t.setAttribute("typeName",a),t.setAttributeNS(Jy,"xmlns:"+o,s);var l=e.getId();if(void 0!==l){for(var u=e.getKeys(),p=[],c=0,d=u.length;c="a"&&t<="z"||t>="A"&&t<="Z"},Ov.prototype.isNumeric_=function(t,e){return t>="0"&&t<="9"||"."==t&&!(void 0!==e&&e)},Ov.prototype.isWhiteSpace_=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},Ov.prototype.nextChar_=function(){return this.wkt.charAt(++this.index_)},Ov.prototype.nextToken=function(){var t,e=this.nextChar_(),i=this.index_,r=e;if("("==e)t=Sv;else if(","==e)t=Rv;else if(")"==e)t=Tv;else if(this.isNumeric_(e)||"-"==e)t=Cv,r=this.readNumber_();else if(this.isAlpha_(e))t=Ev,r=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(""!==e)throw new Error("Unexpected character: "+e);t=wv}return{position:i,value:r,type:t}},Ov.prototype.readNumber_=function(){var t,e=this.index_,i=!1,r=!1;do{"."==t?i=!0:"e"!=t&&"E"!=t||(r=!0),t=this.nextChar_()}while(this.isNumeric_(t,i)||!r&&("e"==t||"E"==t)||r&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))},Ov.prototype.readText_=function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()};var Pv=function(t){this.lexer_=t,this.token_,this.layout_=At.XY};function bv(t){var e=t.getCoordinates();return 0===e.length?"":e.join(" ")}function Mv(t){for(var e=t.getCoordinates(),i=[],r=0,n=e.length;r0&&(e+=" "+r)}return 0===i.length?e+" "+vv:e+"("+i+")"}var Gv=function(t){function e(e){t.call(this);var i=e||{};this.splitCollection_=void 0!==i.splitCollection&&i.splitCollection}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.parse_=function(t){var e=new Ov(t);return new Pv(e).parse()},e.prototype.readFeatureFromText=function(t,e){var i=this.readGeometryFromText(t,e);if(i){var r=new B;return r.setGeometry(i),r}return null},e.prototype.readFeaturesFromText=function(t,e){for(var i=[],r=this.readGeometryFromText(t,e),n=[],o=0,s=(i=this.splitCollection_&&r.getType()==Nt.GEOMETRY_COLLECTION?r.getGeometriesArray():[r]).length;o.75*u||l>.75*p?this.resetExtent_():ot(o,r)||this.recenter_()}},e.prototype.resetExtent_=function(){var t=this.getMap(),e=this.ovmap_,i=t.getSize(),r=t.getView().calculateExtent(i),n=e.getView(),o=Math.log(7.5)/Math.LN2;Mt(r,1/(.1*Math.pow(2,o/2))),n.fit(r)},e.prototype.recenter_=function(){var t=this.getMap(),e=this.ovmap_,i=t.getView();e.getView().setCenter(i.getCenter())},e.prototype.updateBox_=function(){var t=this.getMap(),e=this.ovmap_;if(t.isRendered()&&e.isRendered()){var i=t.getSize(),r=t.getView(),n=e.getView(),o=r.getRotation(),s=this.boxOverlay_,a=this.boxOverlay_.getElement(),h=r.calculateExtent(i),l=n.getResolution(),u=Et(h),p=Lt(h),c=this.calculateCoordinateRotate_(o,u);s.setPosition(c),a&&(a.style.width=Math.abs((u[0]-p[0])/l)+"px",a.style.height=Math.abs((p[1]-u[1])/l)+"px")}},e.prototype.calculateCoordinateRotate_=function(t,e){var i,r=this.getMap().getView().getCenter();return r&&($i(i=[e[0]-r[0],e[1]-r[1]],t),Hi(i,r)),i},e.prototype.handleClick_=function(t){t.preventDefault(),this.handleToggle_()},e.prototype.handleToggle_=function(){this.element.classList.toggle(yo),this.collapsed_?Qn(this.collapseLabel_,this.label_):Qn(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;var t=this.ovmap_;this.collapsed_||t.isRendered()||(t.updateSize(),this.resetExtent_(),m(t,Rn,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.getOverviewMap=function(){return this.ovmap_},e}(uo),ex="units",ix={DEGREES:"degrees",IMPERIAL:"imperial",NAUTICAL:"nautical",METRIC:"metric",US:"us"},rx=[1,2,5];function nx(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()}var ox=function(t){function e(e){var i=e||{},r=void 0!==i.className?i.className:"ol-scale-line";t.call(this,{element:document.createElement("div"),render:i.render||nx,target:i.target}),this.innerElement_=document.createElement("div"),this.innerElement_.className=r+"-inner",this.element.className=r+" "+fo,this.element.appendChild(this.innerElement_),this.viewState_=null,this.minWidth_=void 0!==i.minWidth?i.minWidth:64,this.renderedVisible_=!1,this.renderedWidth_=void 0,this.renderedHTML_="",v(this,G(ex),this.handleUnitsChanged_,this),this.setUnits(i.units||ix.METRIC)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getUnits=function(){return this.get(ex)},e.prototype.handleUnitsChanged_=function(){this.updateElement_()},e.prototype.setUnits=function(t){this.set(ex,t)},e.prototype.updateElement_=function(){var t=this.viewState_;if(t){var e=t.center,i=t.projection,r=this.getUnits(),n=r==ix.DEGREES?$t.DEGREES:$t.METERS,o=Se(i,t.resolution,e,n);i.getUnits()!=$t.DEGREES&&i.getMetersPerUnit()&&n==$t.METERS&&(o*=i.getMetersPerUnit());var s=this.minWidth_*o,a="";if(r==ix.DEGREES){var h=Qt[$t.DEGREES];i.getUnits()==$t.DEGREES?s*=h:o/=h,s=this.minWidth_)break;++p}var c=l+" "+a;this.renderedHTML_!=c&&(this.innerElement_.innerHTML=c,this.renderedHTML_=c),this.renderedWidth_!=u&&(this.innerElement_.style.width=u+"px",this.renderedWidth_=u),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e}(uo),sx={VERTICAL:0,HORIZONTAL:1};function ax(t){if(t.frameState){this.sliderInitialized_||this.initSlider_();var e=t.frameState.viewState.resolution;e!==this.currentResolution_&&(this.currentResolution_=e,this.setThumbPosition_(e))}}var hx=function(t){function e(e){var i=e||{};t.call(this,{element:document.createElement("div"),render:i.render||ax}),this.dragListenerKeys_=[],this.currentResolution_=void 0,this.direction_=sx.VERTICAL,this.dragging_,this.heightLimit_=0,this.widthLimit_=0,this.previousX_,this.previousY_,this.thumbSize_=null,this.sliderInitialized_=!1,this.duration_=void 0!==i.duration?i.duration:200;var r=void 0!==i.className?i.className:"ol-zoomslider",n=document.createElement("button");n.setAttribute("type","button"),n.className=r+"-thumb "+fo;var o=this.element;o.className=r+" "+fo+" "+go,o.appendChild(n),this.dragger_=new Tn(o),v(this.dragger_,Gr.POINTERDOWN,this.handleDraggerStart_,this),v(this.dragger_,Gr.POINTERMOVE,this.handleDraggerDrag_,this),v(this.dragger_,Gr.POINTERUP,this.handleDraggerEnd_,this),v(o,M.CLICK,this.handleContainerClick_,this),v(n,M.CLICK,O)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.disposeInternal=function(){this.dragger_.dispose(),t.prototype.disposeInternal.call(this)},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,i=t.offsetHeight,r=t.firstElementChild,n=getComputedStyle(r),o=r.offsetWidth+parseFloat(n.marginRight)+parseFloat(n.marginLeft),s=r.offsetHeight+parseFloat(n.marginTop)+parseFloat(n.marginBottom);this.thumbSize_=[o,s],e>i?(this.direction_=sx.HORIZONTAL,this.widthLimit_=e-o):(this.direction_=sx.VERTICAL,this.heightLimit_=i-s),this.sliderInitialized_=!0},e.prototype.handleContainerClick_=function(t){var e=this.getMap().getView(),i=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),r=this.getResolutionForPosition_(i);e.animate({resolution:e.constrainResolution(r),duration:this.duration_,easing:Xn})},e.prototype.handleDraggerStart_=function(t){if(!this.dragging_&&t.originalEvent.target===this.element.firstElementChild&&(this.getMap().getView().setHint(jn,1),this.previousX_=t.clientX,this.previousY_=t.clientY,this.dragging_=!0,0===this.dragListenerKeys_.length)){var e=this.handleDraggerDrag_,i=this.handleDraggerEnd_;this.dragListenerKeys_.push(v(document,M.MOUSEMOVE,e,this),v(document,Gr.POINTERMOVE,e,this),v(document,M.MOUSEUP,i,this),v(document,Gr.POINTERUP,i,this))}},e.prototype.handleDraggerDrag_=function(t){if(this.dragging_){var e=this.element.firstElementChild,i=t.clientX-this.previousX_+parseFloat(e.style.left),r=t.clientY-this.previousY_+parseFloat(e.style.top),n=this.getRelativePosition_(i,r);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_),this.setThumbPosition_(this.currentResolution_),this.previousX_=t.clientX,this.previousY_=t.clientY}},e.prototype.handleDraggerEnd_=function(t){if(this.dragging_){var e=this.getMap().getView();e.setHint(jn,-1),e.animate({resolution:e.constrainResolution(this.currentResolution_),duration:this.duration_,easing:Xn}),this.dragging_=!1,this.previousX_=void 0,this.previousY_=void 0,this.dragListenerKeys_.forEach(E),this.dragListenerKeys_.length=0}},e.prototype.setThumbPosition_=function(t){var e=this.getPositionForResolution_(t),i=this.element.firstElementChild;this.direction_==sx.HORIZONTAL?i.style.left=this.widthLimit_*e+"px":i.style.top=this.heightLimit_*e+"px"},e.prototype.getRelativePosition_=function(t,e){return kt(this.direction_===sx.HORIZONTAL?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 1-this.getMap().getView().getValueForResolutionFunction()(t)},e}(uo),lx=function(t){function e(e){var i=e||{};t.call(this,{element:document.createElement("div"),target:i.target}),this.extent=i.extent?i.extent:null;var r=void 0!==i.className?i.className:"ol-zoom-extent",n=void 0!==i.label?i.label:"E",o=void 0!==i.tipLabel?i.tipLabel:"Fit to extent",s=document.createElement("button");s.setAttribute("type","button"),s.title=o,s.appendChild("string"==typeof n?document.createTextNode(n):n),v(s,M.CLICK,this.handleClick_,this);var a=r+" "+fo+" "+go,h=this.element;h.className=a,h.appendChild(s)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,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.fit(e)},e}(uo),ux={array:{},color:{},colorlike:{},control:{},coordinate:{},easing:{},events:{}};ux.events.condition={},ux.extent={},ux.featureloader={},ux.format={},ux.format.filter={},ux.geom={},ux.has={},ux.interaction={},ux.layer={},ux.loadingstrategy={},ux.proj={},ux.proj.Units={},ux.proj.proj4={},ux.render={},ux.render.canvas={},ux.renderer={},ux.renderer.canvas={},ux.renderer.webgl={},ux.size={},ux.source={},ux.sphere={},ux.style={},ux.style.IconImageCache={},ux.tilegrid={},ux.xml={},ux.Collection=U,ux.Feature=B,ux.Geolocation=zi,ux.Graticule=Or,ux.Kinetic=br,ux.Map=Ha,ux.Object=D,ux.Observable=F,ux.Observable.unByKey=function(t){if(Array.isArray(t))for(var e=0,i=t.length;e180)&&(i[0]=Xt(r+180,360)-180),i},ux.proj.transform=Pe,ux.proj.transformExtent=be,ux.render.VectorContext=Vs,ux.render.canvas.labelCache=Ps,ux.render.toContext=function(t,e){var i=t.canvas,r=e||{},n=r.pixelRatio||Di,o=r.size;o&&(i.width=o[0]*n,i.height=o[1]*n,i.style.width=o[0]+"px",i.style.height=o[1]+"px");var s=[0,0,i.width,i.height],a=je([1,0,0,1,0,0],n,n);return new Xs(t,n,s,a,0)},ux.renderer.canvas.ImageLayer=ra,ux.renderer.canvas.Map=Qs,ux.renderer.canvas.TileLayer=ha,ux.renderer.canvas.VectorLayer=Ba,ux.renderer.canvas.VectorTileLayer=Ka,ux.renderer.webgl.ImageLayer=gl,ux.renderer.webgl.Map=yl,ux.renderer.webgl.TileLayer=Xl,ux.renderer.webgl.VectorLayer=Wl,ux.size.toSize=ho,ux.source.BingMaps=tp,ux.source.CartoDB=ip,ux.source.Cluster=sp,ux.source.Image=dp,ux.source.ImageArcGISRest=gp,ux.source.ImageCanvas=yp,ux.source.ImageMapGuide=vp,ux.source.ImageStatic=mp,ux.source.ImageWMS=wp,ux.source.OSM=Lp,ux.source.OSM.ATTRIBUTION=Ip,ux.source.Raster=Vp,ux.source.Source=Il,ux.source.Stamen=Kp,ux.source.Tile=jl,ux.source.TileArcGISRest=Zp,ux.source.TileDebug=Jp,ux.source.TileImage=$u,ux.source.TileJSON=Qp,ux.source.TileWMS=tc,ux.source.UTFGrid=ic,ux.source.Vector=op,ux.source.VectorTile=ac,ux.source.WMTS=lc,ux.source.WMTS.optionsFromCapabilities=function(t,e){var i=H(t.Contents.Layer,function(t,i,r){return t.Identifier==e.layer});if(null===i)return null;var r,n=t.Contents.TileMatrixSet;(r=i.TileMatrixSetLink.length>1?J(i.TileMatrixSetLink,"projection"in e?function(t,i,r){var o=H(n,function(e){return e.Identifier==t.TileMatrixSet}).SupportedCRS,s=Ee(o.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"))||Ee(o),a=Ee(e.projection);return s&&a?Ie(s,a):o==e.projection}:function(t,i,r){return t.TileMatrixSet==e.matrixSet}):0)<0&&(r=0);var o=i.TileMatrixSetLink[r].TileMatrixSet,s=i.TileMatrixSetLink[r].TileMatrixSetLimits,a=i.Format[0];"format"in e&&(a=e.format),(r=J(i.Style,function(t,i,r){return"style"in e?t.Title==e.style:t.isDefault}))<0&&(r=0);var h=i.Style[r].Identifier,l={};"Dimension"in i&&i.Dimension.forEach(function(t,e,i){var r=t.Identifier,n=t.Default;void 0===n&&(n=t.Value[0]),l[r]=n});var u,p=H(t.Contents.TileMatrixSet,function(t,e,i){return t.Identifier==o}),c=p.SupportedCRS;if(c&&(u=Ee(c.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"))||Ee(c)),"projection"in e){var d=Ee(e.projection);d&&(u&&!Ie(d,u)||(u=d))}var f,_,g=i.WGS84BoundingBox;if(void 0!==g){var y=Ee("EPSG:4326").getExtent();_=g[0]==y[0]&&g[2]==y[2],f=be(g,"EPSG:4326",u);var v=u.getExtent();v&&(ot(v,f)||(f=void 0))}var m=Eu(p,f,s),x=[],E=e.requestEncoding;if(E=void 0!==E?E:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var S=t.OperationsMetadata.GetTile.DCP.HTTP.Get,T=0,C=S.length;T this.filter.maxAltitude) { + return true; + } + return false; +} + +PlaneObject.prototype.updateTail = function() { + + this.tail_update = this.prev_time; + this.tail_track = this.prev_track; + this.tail_rot = this.prev_rot; + this.tail_true = this.prev_true; + this.tail_position = this.prev_position; + + return this.updateTrackPrev(); +} + +PlaneObject.prototype.updateTrackPrev = function() { + + this.prev_position = this.position; + this.prev_time = this.position_time; + this.prev_track = this.track; + this.prev_rot = this.rotation; + this.prev_true = this.true_head; + this.prev_alt = this.altitude; + this.prev_alt_rounded = this.alt_rounded; + this.prev_speed = this.speed; + + return true; +} + +// Appends data to the running track so we can get a visual tail on the plane +// Only useful for a long running browser session. +PlaneObject.prototype.updateTrack = function(now, last) { + if (this.position == null) + return false; + if (this.prev_position && this.position[0] == this.prev_position[0] && this.position[1] == this.prev_position[1]) + return false; + if (this.bad_position && this.position[0] == this.bad_position[0] && this.position[1] == this.bad_position[1]) + return false; + + var projHere = ol.proj.fromLonLat(this.position); + var on_ground = (this.altitude === "ground"); + + if (this.track_linesegs.length == 0) { + // Brand new track + //console.log(this.icao + " new track"); + var newseg = { fixed: new ol.geom.LineString([projHere]), + feature: null, + estimated: false, + ground: on_ground, + altitude: this.alt_rounded, + alt_real: this.altitude, + speed: this.speed, + ts: now, + }; + this.track_linesegs.push(newseg); + this.history_size ++; + this.updateTrackPrev(); + return this.updateTail(); + } + + var projPrev = ol.proj.fromLonLat(this.prev_position); + var lastseg = this.track_linesegs[this.track_linesegs.length - 1]; + + var distance = ol.sphere.getDistance(this.position, this.prev_position); + var derivedMach = (distance/(this.position_time - this.prev_time + 0.4))/343; + var filterSpeed = on_ground ? positionFilterSpeed/10 : positionFilterSpeed; + filterSpeed = (this.speed != null && this.prev_speed != null) ? (positionFilterGsFactor*(Math.max(this.speed, this.prev_speed)+10+(this.dataSource == "mlat")*100)/666) : filterSpeed; + + // ignore the position if the object moves faster than positionFilterSpeed (default Mach 3.5) + // or faster than twice the transmitted groundspeed + if (positionFilter && derivedMach > filterSpeed && this.too_fast < 1) { + this.bad_position = this.position; + this.too_fast++; + if (debugPosFilter) { + console.log(this.icao + " / " + this.name + " ("+ this.dataSource + "): Implausible position filtered: " + this.bad_position[0] + ", " + this.bad_position[1] + " (kts/Mach " + (derivedMach*666).toFixed(0) + " > " + (filterSpeed*666).toFixed(0) + " / " + derivedMach.toFixed(2) + " > " + filterSpeed.toFixed(2) + ") (" + (this.position_time - this.prev_time + 0.2).toFixed(1) + "s)"); + } + this.position = this.prev_position; + this.position_time = this.prev_time; + if (debugPosFilter) { + this.drawRedDot(this.bad_position); + jumpTo = this.icao; + } + return false; + } else { + this.too_fast = Math.max(-5, this.too_fast-0.8); + } + if (positionFilter && this.dataSource == "mlat" && on_ground) { + this.bad_position = this.position; + return true; + } + + if (this.request_rotation_from_track) { + this.rotation = bearingFromLonLat(this.prev_position, this.position); + } + + // Determine if track data are intermittent/stale + // Time difference between two position updates should not be much + // greater than the difference between data inputs + var time_difference = (this.position_time - this.prev_time) - (now - last); + + //var stale_timeout = lastseg.estimated ? 5 : 10; + var stale_timeout = 15; + + // MLAT data are given some more leeway + if (this.dataSource == "mlat") + stale_timeout = 15; + + // On the ground you can't go that quick + if (on_ground) + stale_timeout = 30; + + var est_track = (time_difference > stale_timeout); + + // Also check if the position was already stale when it was exported by dump1090 + // Makes stale check more accurate for example for 30s spaced history points + + est_track = est_track || ((now - this.position_time) > stale_timeout); + + if (est_track) { + + if (!lastseg.estimated) { + // >5s gap in data, create a new estimated segment + //console.log(this.icao + " switching to estimated"); + lastseg.fixed.appendCoordinate(projPrev); + this.track_linesegs.push({ fixed: new ol.geom.LineString([projPrev]), + feature: null, + altitude: 0, + estimated: true, + ts: this.prev_time, + }); + this.history_size += 2; + } else { + // Keep appending to the existing dashed line; keep every point + lastseg.fixed.appendCoordinate(projPrev); + this.history_size++; + } + + return this.updateTail(); + } + + if (lastseg.estimated) { + // We are back to good data (we got two points close in time), switch back to + // solid lines. + lastseg.fixed.appendCoordinate(projPrev); + this.track_linesegs.push({ fixed: new ol.geom.LineString([projPrev]), + feature: null, + estimated: false, + ground: on_ground, + altitude: this.prev_alt_rounded, + alt_real: this.prev_alt, + speed: this.prev_speed, + ts: this.prev_time, + }); + this.history_size += 2; + + return this.updateTail(); + } + + /* + var track_change = this.track != null ? Math.abs(this.tail_track - this.track) : NaN; + track_change = track_change < 180 ? track_change : Math.abs(track_change - 360); + var true_change = this.trueheading != null ? Math.abs(this.tail_true - this.true_heading) : NaN; + true_change = true_change < 180 ? true_change : Math.abs(true_change - 360); + if (!isNaN(true_change)) { + track_change = isNaN(track_change) ? true_change : Math.max(track_change, true_change); + } + */ + var track_change = Math.abs(this.tail_rot - this.rotation); + + var alt_change = Math.abs(this.alt_rounded - lastseg.altitude); + var since_update = this.prev_time - this.tail_update; + var distance_traveled = ol.sphere.getDistance(this.tail_position, this.prev_position); + + if ( + this.prev_alt_rounded !== lastseg.altitude + || this.prev_time > lastseg.ts + 300 + || tempTrails + //lastseg.ground != on_ground + //|| (!on_ground && isNaN(alt_change)) + //|| (alt_change > 700) + //|| (alt_change > 375 && this.alt_rounded < 9000) + //|| (alt_change > 150 && this.alt_rounded < 5500) + ) { + // Create a new segment as the ground state or the altitude changed. + // The new state is only drawn after the state has changed + // and we then get a new position. + + this.logSel("sec_elapsed: " + since_update.toFixed(1) + " alt_change: "+ alt_change.toFixed(0) + " derived_speed(kts/Mach): " + (distance_traveled/since_update*1.94384).toFixed(0) + " / " + (distance_traveled/since_update/343).toFixed(1)); + + lastseg.fixed.appendCoordinate(projPrev); + this.track_linesegs.push({ fixed: new ol.geom.LineString([projPrev]), + feature: null, + estimated: false, + altitude: this.prev_alt_rounded, + alt_real: this.prev_alt, + speed: this.prev_speed, + ground: on_ground, + ts: this.prev_time, + }); + + this.history_size += 2; + + return this.updateTail(); + } + + + // Add current position to the existing track. + // We only retain some points depending on time elapsed and track change + var turn_density = 6.5; + if ( + since_update > 86 || + (!on_ground && since_update > (100/turn_density)/track_change) || + (!on_ground && isNaN(track_change) && since_update > 8) || + (on_ground && since_update > (120/turn_density)/track_change && distance_traveled > 20) || + (on_ground && distance_traveled > 50 && since_update > 5) || + debugAll + ) { + + lastseg.fixed.appendCoordinate(projPrev); + this.history_size ++; + + this.logSel("sec_elapsed: " + since_update.toFixed(1) + " " + (on_ground ? "ground" : "air") + " dist:" + distance_traveled.toFixed(0) + " track_change: "+ track_change.toFixed(1) + " derived_speed(kts/Mach): " + (distance_traveled/since_update*1.94384).toFixed(0) + " / " + (distance_traveled/since_update/343).toFixed(1)); + + return this.updateTail(); + } + + return this.updateTrackPrev(); +}; + +// This is to remove the line from the screen if we deselect the plane +PlaneObject.prototype.clearLines = function() { + if (this.layer.getVisible()) { + this.layer.setVisible(false); + this.layer_labels.setVisible(false); + } +}; + +PlaneObject.prototype.getDataSourceNumber = function() { + // MLAT + if (this.dataSource == "mlat") { + return 3; + } + if (this.dataSource == "uat") + return 2; // UAT + + // Not MLAT, but position reported - ADSB or variants + if (this.dataSource == "tisb") + return 4; // TIS-B + if (this.dataSource == "adsb") + return 1; + + // Otherwise Mode S + return 5; + + // TODO: add support for Mode A/C +}; + +PlaneObject.prototype.getDataSource = function() { + // MLAT + if (this.dataSource == "mlat") { + return 'mlat'; + } + if (this.dataSource == "uat" && this.dataSource != "tisb") + return 'uat'; + + if (this.addrtype) { + return this.addrtype; + } + + if (this.dataSource == "adsb") + return "adsb_icao"; + + if (this.dataSource == "tisb") + return "tisb"; + + // Otherwise Mode S + return 'mode_s'; + + // TODO: add support for Mode A/C +}; + +PlaneObject.prototype.getMarkerColor = function() { + // Emergency squawks override everything else + if (this.squawk in SpecialSquawks) + return SpecialSquawks[this.squawk].markerColor; + + var h, s, l; + + var colorArr = altitudeColor(this.alt_rounded); + + h = colorArr[0]; + s = colorArr[1]; + l = colorArr[2]; + + // If we have not seen a recent position update, change color + if (this.seen_pos > 15 && !globeIndex) { + h += ColorByAlt.stale.h; + s += ColorByAlt.stale.s; + l += ColorByAlt.stale.l; + } + if (this.alt_rounded == "ground") { + l += 15; + } + + // If this marker is selected, change color + if (this.selected && !SelectedAllPlanes && !onlySelected){ + h += ColorByAlt.selected.h; + s += ColorByAlt.selected.s; + l += ColorByAlt.selected.l; + } + + // If this marker is a mlat position, change color + if (this.dataSource == "mlat") { + h += ColorByAlt.mlat.h; + s += ColorByAlt.mlat.s; + l += ColorByAlt.mlat.l; + } + + if (h < 0) { + h = (h % 360) + 360; + } else if (h >= 360) { + h = h % 360; + } + + if (s < 5) s = 5; + else if (s > 95) s = 95; + + if (l < 5) l = 5; + else if (l > 95) l = 95; + + return 'hsl(' + h.toFixed(0) + ',' + s.toFixed(0) + '%,' + l.toFixed(0) + '%)' +} + +function altitudeColor(altitude) { + var h, s, l; + + if (altitude == null) { + h = ColorByAlt.unknown.h; + s = ColorByAlt.unknown.s; + l = ColorByAlt.unknown.l; + } else if (altitude === "ground") { + h = ColorByAlt.ground.h; + s = ColorByAlt.ground.s; + l = ColorByAlt.ground.l; + } else { + s = ColorByAlt.air.s; + + // find the pair of points the current altitude lies between, + // and interpolate the hue between those points + var hpoints = ColorByAlt.air.h; + h = hpoints[0].val; + for (var i = hpoints.length-1; i >= 0; --i) { + if (altitude > hpoints[i].alt) { + if (i == hpoints.length-1) { + h = hpoints[i].val; + } else { + h = hpoints[i].val + (hpoints[i+1].val - hpoints[i].val) * (altitude - hpoints[i].alt) / (hpoints[i+1].alt - hpoints[i].alt) + } + break; + } + } + var lpoints = ColorByAlt.air.l; + lpoints = lpoints.length ? lpoints : [{h:0, val:lpoints}]; + l = lpoints[0].val; + for (var i = lpoints.length-1; i >= 0; --i) { + if (h > lpoints[i].h) { + if (i == lpoints.length-1) { + l = lpoints[i].val; + } else { + l = lpoints[i].val + (lpoints[i+1].val - lpoints[i].val) * (h - lpoints[i].h) / (lpoints[i+1].h - lpoints[i].h) + } + break; + } + } + } + + if (h < 0) { + h = (h % 360) + 360; + } else if (h >= 360) { + h = h % 360; + } + + if (s < 5) s = 5; + else if (s > 95) s = 95; + + if (l < 5) l = 5; + else if (l > 95) l = 95; + + return [h, s, l]; +} + +PlaneObject.prototype.updateIcon = function() { + + var col = this.getMarkerColor(); + var baseMarkerKey = (this.category ? this.category : "A0") + "_" + + this.typeDescription + "_" + this.wtc + "_" + this.icaoType; + + if (!this.baseMarker || this.baseMarkerKey != baseMarkerKey) { + this.baseMarkerKey = baseMarkerKey; + this.baseMarker = getBaseMarker(this.category, this.icaoType, this.typeDescription, this.wtc); + this.shape = this.baseMarker[0]; + this.baseScale = this.baseMarker[1]; + this.baseMarker = shapes[this.shape] + if (!this.baseMarker) + console.log(baseMarkerKey); + } + var outline = (this.shape != 'md11') ? + ' stroke="'+OutlineADSBColor+'" stroke-width="0.4px"' : + ' stroke="'+OutlineADSBColor+'" stroke-width="2px"'; + var add_stroke = (this.selected && !SelectedAllPlanes && !onlySelected) ? outline : ''; + + this.scale = scaleFactor * this.baseScale; + var svgKey = col + '!' + this.shape + '!' + add_stroke; + var labelText = null; + if ( ( (enableLabels && !multiSelect) || (enableLabels && multiSelect && this.selected)) && ( + (ZoomLvl >= labelZoom && this.altitude != "ground") + || (ZoomLvl >= labelZoomGround-2 && this.speed > 18) + || ZoomLvl >= labelZoomGround + || (this.selected && !SelectedAllPlanes) + )) { + if (extendedLabels) { + if (this.altitude && (!this.onGround || (this.speed && this.speed > 15) || (this.selected && !SelectedAllPlanes))) { + labelText = Number(this.speed).toFixed(0).toString().padStart(4, NBSP)+ " " + + this.altitude.toString().padStart(5, NBSP) + " \n " + this.name + " "; + } else { + labelText = " " + this.name + " "; + } + } else { + labelText = " " + this.name + " "; + } + } + var styleKey = svgKey + '!' + labelText + '!' + this.scale; + + if (this.markerStyle == null || this.markerIcon == null || (this.markerSvgKey != svgKey)) { + //console.log(this.icao + " new icon and style " + this.markerSvgKey + " -> " + svgKey); + + this.markerSvgKey = svgKey; + this.rotationCache = this.rotation; + + if (iconCache[svgKey] == undefined) { + var svgKey2 = col + '!' + this.shape + '!' + outline; + var svgKey3 = col + '!' + this.shape + '!' + ''; + var svgURI2 = svgPathToURI(this.baseMarker.svg, OutlineADSBColor, col, outline); + var svgURI3 = svgPathToURI(this.baseMarker.svg, OutlineADSBColor, col, ''); + addToIconCache.push([svgKey2, null, svgURI2]); + addToIconCache.push([svgKey3, null, svgURI3]); + + var svgURI = svgPathToURI(this.baseMarker.svg, OutlineADSBColor, col, add_stroke); + this.markerIcon = new ol.style.Icon({ + scale: this.scale, + imgSize: this.baseMarker.size, + src: svgURI, + rotation: (this.baseMarker.noRotate ? 0 : this.rotation * Math.PI / 180.0), + rotateWithView: (this.baseMarker.noRotate ? false : true), + }); + } else { + this.markerIcon = new ol.style.Icon({ + scale: this.scale, + imgSize: this.baseMarker.size, + img: iconCache[svgKey], + rotation: (this.baseMarker.noRotate ? 0 : this.rotation * Math.PI / 180.0), + rotateWithView: (this.baseMarker.noRotate ? false : true), + }); + } + //iconCache[svgKey] = undefined; // disable caching for testing + } + if (this.styleKey != styleKey) { + this.styleKey = styleKey; + if (labelText) { + this.markerStyle = new ol.style.Style({ + image: this.markerIcon, + text: new ol.style.Text({ + text: labelText , + fill: new ol.style.Fill({color: 'white' }), + backgroundFill: new ol.style.Stroke({color: 'rgba(0,0,0,0.4'}), + textAlign: 'left', + textBaseline: "top", + font: labelFont, + offsetX: (this.baseMarker.size[0]*0.5*0.74*this.scale), + offsetY: (this.baseMarker.size[0]*0.5*0.74*this.scale), + }), + zIndex: this.zIndex, + }); + } else { + this.markerStyle = new ol.style.Style({ + image: this.markerIcon, + zIndex: this.zIndex, + }); + } + this.marker.setStyle(this.markerStyle); + } + + /* + if (this.opacityCache != opacity) { + this.opacityCache = opacity; + this.markerIcon.setOpacity(opacity); + } + */ + + if (this.rotationCache == null || Math.abs(this.rotationCache - this.rotation) > 0.15) { + this.rotationCache = this.rotation; + this.markerIcon.setRotation(this.baseMarker.noRotate ? 0 : this.rotation * Math.PI / 180.0); + } + + if (this.scaleCache != this.scale) { + this.scaleCache = this.scale; + this.markerIcon.setScale(this.scale); + } + + return true; +}; + +PlaneObject.prototype.processTrace = function(data, show) { + if (!data || !data.trace) + return; + const trace = data.trace; + const timeZero = data.timestamp; + this.history_size = 0; + + var tempPlane = {}; + const oldSegs = this.track_linesegs; + this.track_linesegs = []; + + Object.assign(tempPlane, this); + + var _now = timeZero; + var _last = timeZero; + this.prev_position = null; + + for (var i = 0; i < trace.length; i++) { + const state = trace[i]; + const timestamp = timeZero + state[0]; + const lat = state[1]; + const lon = state[2]; + const altitude = state[3]; + const gs = state[4]; + var track = state[5]; + if (track >= 1000) { + track -= 1000; + } + + _now = timestamp; + this.position = [lon, lat]; + this.position_time = _now; + this.last_message_time = _now; + this.altitude = altitude; + this.alt_rounded = calcAltitudeRounded(this.altitude); + this.speed = gs; + this.track = track; + this.rotation = track; + + if (state[5] >= 1000) + _last = _now - 1; + + this.updateTrack(_now, _last); + _last = _now; + } + + for (var i = 0; i < this.trace.length; i++) { + const state = this.trace[i]; + if (_now > state.now) + continue; + + _now = state.now; + this.position = state.position; + this.position_time = _now; + this.altitude = state.altitude; + this.alt_rounded = state.alt_rounded; + this.speed = state.speed; + this.track = state.track; + this.rotation = state.rotation; + + this.updateTrack(_now, _last); + _last = _now; + } + + if (!tempPlane.prev_position) { + tempPlane.prev_position = this.position; + } + + if (now < _now && !show) { + var newSegs = this.track_linesegs; + Object.assign(this, tempPlane); + this.track_linesegs = newSegs; + this.updateTrack(now, _last); + } else { + this.updateMarker(true); + } + if (show) { + this.selected = true; + this.visible = true; + this.updated = true; + } + + console.log(this.history_size + ' ' + trace.length); + this.remakeTrail(); +} + +// Update our data +PlaneObject.prototype.updateData = function(now, last, data, init) { + // get location data first, return early if only those are needed. + + this.updated = true; + var newPos = false; + + var isArray = Array.isArray(data); + // [.hex, .alt_baro, .gs, .track, .lat, .lon, .seen_pos, "mlat"/"tisb"/.type , .flight, .messages] + // 0 1 2 3 4 5 6 7 8 9 + // this format is only valid for chunk loading the history + const alt_baro = isArray? data[1] : data.alt_baro; + const gs = isArray? data[2] : data.gs; + const track = isArray? data[3] : data.track; + const lat = isArray? data[4] : data.lat; + const lon = isArray? data[5] : data.lon; + var seen = isArray? data[6] : data.seen; + const seen_pos = isArray? data[6] : data.seen_pos; + seen = (seen == null) ? 5 : seen; + const type = isArray? data[7] : data.type; + var mlat = isArray? (data[7] == "mlat") : (data.mlat != null && data.mlat.indexOf("lat") >= 0); + var tisb = isArray? (data[7] == "tisb") : (data.tisb != null && data.tisb.indexOf("lat") >= 0); + tisb = tisb || (type && type.substring(0,4) == "tisb"); + const flight = isArray? data[8] : data.flight; + + this.last_message_time = now - seen; + + // remember last known position even if stale + // and some other magic to avoid mlat positions when a current ads-b position is available + if (lat != null && this.hasADSB && this.dataSource != "mlat" && mlat + && (now - this.position_time) < (mlatTimeout + 0.5 * mlatTimeout * this.adsbOnGround)) { + mlat = false; + // don't use MLAT for mlatTimeout (default 30) seconds after getting an ADS-B position + // console.log(this.icao + ': mlat position ignored'); + if (debug && this.prev_position) { + this.drawRedDot([lon, lat]); + } + } else if (lat != null && seen_pos < (now - this.position_time + 2) && !(noMLAT && mlat)) { + this.position = [lon, lat]; + this.position_time = now - seen_pos; + newPos = true; + } + + // remember last known altitude even if stale + var newAlt = null; + if (alt_baro != null) { + newAlt = alt_baro; + this.alt_baro = alt_baro; + } else if (data.altitude != null) { + newAlt = data.altitude; + this.alt_baro = data.altitude; + } else { + this.alt_baro = null; + if (data.alt_geom != null) { + newAlt = data.alt_geom; + } + } + // Filter anything greater than 12000 fpm + + + if (newAlt == null || (newAlt == this.bad_alt)) { + // do nothing + } else if ( + !altitudeFilter + || this.altitude == null + || newAlt == "ground" + || this.altitude == "ground" + || (seen_pos != null && seen_pos < 2) + ) { + this.altitude = newAlt; + this.altitudeTime = now; + } else if ( + this.alt_reliable > 0 && this.altBad(newAlt, this.altitude, this.altitudeTime, data) + && (this.bad_alt == null || this.altBad(newAlt, this.bad_alt, this.bad_altTime, data)) + ) { + // filter this altitude! + this.alt_reliable--; + this.bad_alt = newAlt; + this.bad_altTime = now; + if (debugPosFilter) { + console.log((now%1000).toFixed(0) + ': AltFilter: ' + this.icao + + ' oldAlt: ' + this.altitude + + ' newAlt: ' + newAlt + + ' elapsed: ' + (now-this.altitudeTime).toFixed(0) ); + jumpTo = this.icao; + } + } else { + // good altitude + this.altitude = newAlt; + this.altitudeTime = now; + this.alt_reliable = Math.min(this.alt_reliable + 1, 3); + } + + + + this.alt_rounded = calcAltitudeRounded(this.altitude); + + if (this.altitude == null) { + this.onGround = null; + this.zIndex = -10000; + } else if (this.altitude == "ground") { + this.onGround = true; + this.zIndex = -10000; + } else { + this.onGround = false; + this.zIndex = this.alt_rounded; + } + + // needed for track labels + this.speed = gs; + + // don't expire the track, even display outdated track + if (track != null) { + this.track = track; + this.rotation = track; + this.request_rotation_from_track = false; + } else { + this.request_rotation_from_track = true; + } + // don't expire callsigns + if (flight != null) { + this.flight = flight; + this.name = flight; + } + + + if (mlat && noMLAT) { + this.dataSource = "other"; + } else if (mlat) { + this.dataSource = "mlat"; + } else if (!displayUATasADSB && this.receiver == "uat" && !tisb) { + this.dataSource = "uat"; + } else if (type == "adsb_icao" || type == "adsb_other") { + this.dataSource = "adsb"; + } else if (type && type.substring(0,4) == "adsr") { + this.dataSource = "adsb"; + } else if (type == "adsb_icao_nt") { + this.dataSource = "other"; + } else if (tisb) { + this.dataSource = "tisb"; + } else if (lat != null && type == null) { + this.dataSource = "adsb"; + this.hasADSB = true; + this.adsbOnGround = (alt_baro == "ground"); + } + + if (isArray) { + this.messages = data[9]; + return; + } + + // Update all of our data + + if (this.receiver == "1090") { + const messageRate = (data.messages - this.msgs1090)/(now - last); + this.messageRate = (messageRate + this.messageRateOld)/2; + this.messageRateOld = messageRate; + this.msgs1090 = data.messages; + } else { + const messageRate = (data.messages - this.msgs978)/(now - last); + this.messageRate = (messageRate + this.messageRateOld)/2; + this.messageRateOld = messageRate; + this.msgs978 = data.messages; + } + this.messages = data.messages; + + this.rssi = data.rssi; + + if (data.gs != null) + this.gs = data.gs; + else if (data.speed != null) + this.gs = data.speed; + else + this.gs = null; + + if (data.baro_rate != null) + this.baro_rate = data.baro_rate; + else if (data.vert_rate != null) + this.baro_rate = data.vert_rate; + else + this.baro_rate = null; + + // simple fields + this.alt_geom = data.alt_geom; + this.ias = data.ias; + this.tas = data.tas; + this.track_rate = data.track_rate; + this.mag_heading = data.mag_heading; + this.mach = data.mach; + this.roll = data.roll; + this.nav_altitude = data.nav_altitude; + this.nav_heading = data.nav_heading; + this.nav_modes = data.nav_modes; + this.nac_p = data.nac_p; + this.nac_v = data.nac_v; + this.nic_baro = data.nic_baro; + this.sil_type = data.sil_type; + this.sil = data.sil; + this.nav_qnh = data.nav_qnh; + this.geom_rate = data.geom_rate; + this.rc = data.rc; + this.squawk = data.squawk; + + // fields with more complex behaviour + + if (data.version != null) { + this.version = data.version; + } + if (data.category != null) { + this.category = data.category; + } + + if (data.true_heading != null) + this.true_heading = data.true_heading; + else + this.true_heading = null; + + if (data.type != null) + this.addrtype = data.type; + else + this.addrtype = null; + + // Pick a selected altitude + if (data.nav_altitude_fms != null) { + this.nav_altitude = data.nav_altitude_fms; + } else if (data.nav_altitude_mcp != null){ + this.nav_altitude = data.nav_altitude_mcp; + } else { + this.nav_altitude = null; + } + + // Pick vertical rate from either baro or geom rate + // geometric rate is generally more reliable (smoothed etc) + if (data.geom_rate != null ) { + this.vert_rate = data.geom_rate; + } else if (data.baro_rate != null) { + this.vert_rate = data.baro_rate; + } else if (data.vert_rate != null) { + // legacy from mut v 1.15 + this.vert_rate = data.vert_rate; + } else { + this.vert_rate = null; + } + + this.request_rotation_from_track = false; + if (this.altitude == "ground") { + if (this.true_heading != null) + this.rotation = this.true_heading; + else if (this.mag_heading != null) + this.rotation = this.mag_heading; + } else if (this.track != null) { + this.rotation = this.track; + } else if (this.true_heading != null) { + this.rotation = this.true_heading; + } else if (this.mag_heading != null) { + this.rotation = this.mag_heading; + } else { + this.request_rotation_from_track = true; + } + + if (globeIndex && newPos) { + var state = {}; + state.now = this.position_time; + state.position = this.position; + state.altitude = this.altitude; + state.alt_rounded = this.alt_rounded; + state.speed = this.speed; + state.track = this.track; + state.rotation = this.rotation; + this.trace.push(state); + if (this.trace.length > 35) { + this.trace.slice(-30); + } + } +}; + +PlaneObject.prototype.updateTick = function(redraw) { + if (this.dataSource == "uat") + this.updateFeatures(uat_now, uat_last, redraw); + else + this.updateFeatures(now, last, redraw); +} + +PlaneObject.prototype.updateFeatures = function(now, last, redraw) { + + // recompute seen and seen_pos + this.seen = now - this.last_message_time; + this.seen_pos = now - this.position_time; + + if (this.updated) { + if (this.position && SitePosition) { + this.sitedist = ol.sphere.getDistance(SitePosition, this.position); + } + + if (this.flight && this.flight.trim()) { + this.name = this.flight; + } else if (this.registration) { + this.name = '_' + this.registration; + } else { + this.name = '_' + this.icao.toUpperCase(); + } + this.name = this.name.trim(); + } + if (!this.updated && !this.visible) { + return; + } + + // If no packet in over 58 seconds, clear the plane. + // Only clear the plane if it's not selected individually + if ( + (this.seen < 58 && this.position != null && this.seen_pos < 60) + || (this.selected && !SelectedAllPlanes && !multiSelect) + || (noVanish && this.position != null) + ) { + this.visible = true; + if (SelectedAllPlanes && (!this.isFiltered() || onlySelected)) + this.selected = true; + + if (redraw) { + this.updateLines(); + this.updateMarker(false); // didn't move + } else if (this.updateTrack(now, last)) { + this.updateLines(); + this.updateMarker(true); + } else { + this.updateMarker(false); // didn't move + } + } else { + if (this.visible) { + //console.log("hiding " + this.icao); + this.clearMarker(); + this.clearLines(); + this.visible = false; + this.selected = false; + if (SelectedPlane == this.icao) + selectPlaneByHex(null,false); + } + } + this.updated = false; +}; + +PlaneObject.prototype.clearMarker = function() { + if (this.marker && this.marker.visible) { + PlaneIconFeatures.remove(this.marker); + this.marker.visible = false; + } +}; + +// Update our marker on the map +PlaneObject.prototype.updateMarker = function(moved) { + if (!this.visible || this.position == null || this.isFiltered()) { + this.clearMarker(); + return; + } + if (!this.marker) { + this.marker = new ol.Feature(new ol.geom.Point(ol.proj.fromLonLat(this.position))); + this.marker.hex = this.icao; + PlaneIconFeatures.push(this.marker); + this.marker.visible = true; + } else if (moved) { + this.marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat(this.position))); + } + + this.updateIcon(); + + if (!this.marker.visible) { + this.marker.visible = true; + PlaneIconFeatures.push(this.marker); + } +}; + + +// return the styling of the lines based on altitude +PlaneObject.prototype.altitudeLines = function(segment) { + if (segment.estimated == true || segment.altitude == null) { + if (debugTracks) + return estimateStyle; + else if (filterTracks && this.filter.enabled == true) + return nullStyle; + else if (noVanish) + return estimateStyleSlim; + else + return estimateStyle; + } + var colorArr = altitudeColor(segment.altitude); + //var color = 'hsl(' + colorArr[0].toFixed(0) + ', ' + colorArr[1].toFixed(0) + '%, ' + colorArr[2].toFixed(0) + '%)'; + var color = hslToRgb(colorArr[0], colorArr[1], colorArr[2]); + const lineKey = color + '_' + debugTracks + '_' + noVanish; + + if (lineStyleCache[lineKey]) + return lineStyleCache[lineKey]; + + if (!debugTracks) { + lineStyleCache[lineKey] = new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: color, + width: (2-(noVanish*0.8)) * lineWidth, + }) + }); + } else { + lineStyleCache[lineKey] = [ + new ol.style.Style({ + image: new ol.style.Circle({ + radius: 2 * lineWidth, + fill: new ol.style.Fill({ + color: color + }) + }), + geometry: function(feature) { + return new ol.geom.MultiPoint(feature.getGeometry().getCoordinates()); + } + }), + new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: color, + width: 2 * lineWidth, + }) + }) + ]; + } + return lineStyleCache[lineKey]; +} + +// Update our planes tail line, +PlaneObject.prototype.updateLines = function() { + if (!this.visible || (!this.selected && !SelectedAllPlanes) || this.isFiltered()) + return this.clearLines(); + + if (this.track_linesegs.length == 0) + return; + + if (!this.layer.getVisible()) { + this.layer.setVisible(true); + this.layer_labels.setVisible(true); + } + + // create the new elastic band feature + var lastseg = this.track_linesegs[this.track_linesegs.length - 1]; + var lastfixed = lastseg.fixed.getCoordinateAt(1.0); + var geom = new ol.geom.LineString([lastfixed, ol.proj.fromLonLat(this.position)]); + this.elastic_feature = new ol.Feature(geom); + if (filterTracks && this.altFiltered(lastseg.altitude)) { + this.elastic_feature.setStyle(nullStyle); + } else { + this.elastic_feature.setStyle(this.altitudeLines(lastseg)); + } + + // elastic feature is always at index 0 for each aircraft + this.trail_features.setAt(0, this.elastic_feature); + + // create any missing fixed line features + + for (var i = this.track_linesegs.length-1; i >= 0; i--) { + var seg = this.track_linesegs[i]; + if (seg.feature && (!trackLabels || seg.label)) + break; + + if ((filterTracks && this.altFiltered(seg.altitude)) || this.altitudeLines(seg) == nullStyle) { + seg.feature = true; + } else if (!seg.feature) { + seg.feature = new ol.Feature(seg.fixed); + seg.feature.setStyle(this.altitudeLines(seg)); + seg.feature.hex = this.icao; + this.trail_features.push(seg.feature); + } + + if (filterTracks && this.altFiltered(seg.altitude)) { + seg.label = true; + } else if (trackLabels && !seg.label && seg.alt_real != null) { + seg.label = new ol.Feature(new ol.geom.Point(seg.fixed.getFirstCoordinate())); + const date = new Date(seg.ts * 1000); + const timestamp = date.getHours().toString().padStart(2,'0') + + ":" + date.getMinutes().toString().padStart(2,'0') + + ":" + date.getSeconds().toString().padStart(2,'0'); + const text = + NBSP + Number(seg.speed).toFixed(0).toString().padStart(3, NBSP) + " " + + (seg.alt_real == "ground" ? ("Ground" + NBSP) : (seg.alt_real.toString().padStart(6, NBSP) + NBSP)) + + "\n" + + "".padStart(4, NBSP) + timestamp + "".padStart(4, NBSP) + seg.label.setStyle( + new ol.style.Style({ + text: new ol.style.Text({ + text: text, + fill: new ol.style.Fill({color: 'white' }), + backgroundFill: new ol.style.Stroke({color: 'rgba(0,0,0,0.4'}), + textAlign: 'left', + textBaseline: "top", + font: labelFont, + offsetX: 5, + offsetY: 5, + }), + zIndex: -1, + }) + ); + seg.label.hex = this.icao; + this.trail_labels.push(seg.label); + } + } + + +}; + +PlaneObject.prototype.remakeTrail = function() { + + this.trail_features.clear(); + this.trail_labels.clear(); + for (var i in this.track_linesegs) { + this.track_linesegs[i].feature = undefined; + this.track_linesegs[i].label = undefined; + } + this.elastic_feature = null; + + /* + trailGroup.remove(this.layer); + + this.trail_features = new ol.Collection(); + + this.layer = new ol.layer.Vector({ + name: this.icao, + isTrail: true, + source: new ol.source.Vector({ + features: this.trail_features, + }), + renderOrder: null, + }); + + trailGroup.push(this.layer); + */ + + this.updateTick(true); +} + +PlaneObject.prototype.destroy = function() { + this.clearLines(); + this.clearMarker(); + this.visible = false; + if (this.marker) { + PlaneIconFeatures.remove(this.marker); + } + trailGroup.remove(this.layer); + this.trail_features.clear(); + this.trail_labels.clear(); + if (this.tr) { + this.tr.removeEventListener('click', this.clickListener); + this.tr.removeEventListener('dblclick', this.dblclickListener); + if (this.tr.parentNode) + this.tr.parentNode.removeChild(this.tr); + this.tr = null; + } + if (this.icao == SelectedPlane) + SelectedPlane = null; + for (var key in Object.keys(this)) { + delete this[key]; + } +}; + +function calcAltitudeRounded(altitude) { + if (altitude == null) { + return null; + } else if (altitude == "ground") { + return altitude; + } else if (altitude > 10000) { + return (altitude/1000).toFixed(0)*1000; + } else { + return (altitude/500).toFixed(0)*500; + } +} + +PlaneObject.prototype.drawRedDot = function(bad_position) { + if (debugJump && loadFinished && SelectedPlane != this) { + OLMap.getView().setCenter(ol.proj.fromLonLat(bad_position)); + selectPlaneByHex(this.icao, false); + } + var badFeat = new ol.Feature(new ol.geom.Point(ol.proj.fromLonLat(bad_position))); + badFeat.setStyle(this.dataSource == "mlat" ? badDotMlat : badDot); + this.trail_features.push(badFeat); + var geom = new ol.geom.LineString([ol.proj.fromLonLat(this.prev_position), ol.proj.fromLonLat(bad_position)]); + var lineFeat = new ol.Feature(geom); + lineFeat.setStyle(this.dataSource == "mlat" ? badLineMlat : badLine); + this.trail_features.push(lineFeat); +} + +/** + * Converts an HSL color value to RGB. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes h, s, and l are contained in the set [0, 1] and + * returns r, g, and b in the set [0, 255]. + * + * @param {number} h The hue + * @param {number} s The saturation + * @param {number} l The lightness + * @return {Array} The RGB representation + */ +function hslToRgb(h, s, l){ + var r, g, b; + + h /= 360; + s *= 0.01; + l *= 0.01; + + if(s == 0){ + r = g = b = l; // achromatic + }else{ + var hue2rgb = function hue2rgb(p, q, t){ + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return 'rgb(' + Math.round(r * 255) + ', ' + Math.round(g * 255) + ', ' + Math.round(b * 255) + ')'; +} + +PlaneObject.prototype.altBad = function(newAlt, oldAlt, oldTime, data) { + var max_fpm = 12000; + if (data.geom_rate != null) + max_fpm = 1.3*Math.abs(data.goem_rate) + 5000; + else if (data.baro_rate != null) + max_fpm = 1.3*Math.abs(data.baro_rate) + 5000; + + const delta = Math.abs(newAlt - oldAlt); + const fpm = (delta < 800) ? 0 : (60 * delta / (now - oldTime + 2)); + return fpm > max_fpm; +} +PlaneObject.prototype.getAircraftData = function() { + var req = getAircraftData(this.icao); + req.done(function(data) { + if (data == null) { + //console.log(this.icao + ': Not found in database!'); + return; + } + if (data == "strange") { + //console.log(this.icao + ': Database malfunction!'); + return; + } + + + //console.log(this.icao + ': loaded!'); + + if ("r" in data) { + this.registration = data.r; + } + + if ("t" in data) { + this.icaoType = data.t; + this.icaoTypeCache = this.icaoType; + } + + if ("desc" in data) { + this.typeDescription = data.desc; + } + + if (data.vType != null) { + this.vType = data.vType; + } + + if ("wtc" in data) { + this.wtc = data.wtc; + } + + if ("f" in data) { + this.military = (data["f"][0] == '1'); + this.interesting = (data["f"][1] == '1'); + } + + if (this.selected) { + refreshSelected(); + } + + data = null; + }.bind(this)); + + req.fail(function(jqXHR,textStatus,errorThrown) { + if (textStatus == 'timeout') + this.getAircraftData(); + else + console.log(this.icao + ': Database load error: ' + textStatus + ' at URL: ' + jqXHR.url); + }.bind(this)); +} + + +PlaneObject.prototype.reapTrail = function() { + const oldSegs = this.track_linesegs; + this.track_linesegs = []; + this.history_size = 0; + for (var i in oldSegs) { + const seg = oldSegs[i]; + if (seg.ts + tempTrailsTimeout > now) { + this.history_size += seg.fixed.getCoordinates().length; + this.track_linesegs.push(seg); + } + } + if (this.track_linesegs.length != oldSegs.length) { + this.remakeTrail(); + } +} diff --git a/html/registrations.js b/html/registrations.js new file mode 100644 index 0000000..2681030 --- /dev/null +++ b/html/registrations.js @@ -0,0 +1,320 @@ +// Various reverse-engineered versions of the allocation algorithms +// used by different countries to allocate 24-bit ICAO addresses based +// on the aircraft registration. +// +// These were worked out by looking at the allocation patterns and +// working backwards to an algorithm that generates that pattern, +// spot-checking aircraft to see if it worked. +// YMMV. +"use strict"; + +const registration_from_hexid = (function () { + // hide the guts in a closure + + var limited_alphabet = "ABCDEFGHJKLMNPQRSTUVWXYZ"; // 24 chars; no I, O + var full_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 26 chars + + // handles 3-letter suffixes assigned with a regular pattern + // + // start: first hexid of range + // s1: major stride (interval between different first letters) + // s2: minor stride (interval between different second letters) + // prefix: the registration prefix + // + // optionally: + // alphabet: the alphabet to use (defaults full_alphabet) + // first: the suffix to use at the start of the range (default: AAA) + // last: the last valid suffix in the range (default: ZZZ) + + var stride_mappings = [ + { start: 0x008011, s1: 26*26, s2: 26, prefix: "ZS-" }, + + { start: 0x390000, s1: 1024, s2: 32, prefix: "F-G" }, + { start: 0x398000, s1: 1024, s2: 32, prefix: "F-H" }, + + { start: 0x3C4421, s1: 1024, s2: 32, prefix: "D-A", first: 'AAA', last: 'OZZ' }, + { start: 0x3C0001, s1: 26*26, s2: 26, prefix: "D-A", first: 'PAA', last: 'ZZZ' }, + { start: 0x3C8421, s1: 1024, s2: 32, prefix: "D-B", first: 'AAA', last: 'OZZ' }, + { start: 0x3C2001, s1: 26*26, s2: 26, prefix: "D-B", first: 'PAA', last: 'ZZZ' }, + { start: 0x3CC000, s1: 26*26, s2: 26, prefix: "D-C" }, + { start: 0x3D04A8, s1: 26*26, s2: 26, prefix: "D-E" }, + { start: 0x3D4950, s1: 26*26, s2: 26, prefix: "D-F" }, + { start: 0x3D8DF8, s1: 26*26, s2: 26, prefix: "D-G" }, + { start: 0x3DD2A0, s1: 26*26, s2: 26, prefix: "D-H" }, + { start: 0x3E1748, s1: 26*26, s2: 26, prefix: "D-I" }, + + { start: 0x448421, s1: 1024, s2: 32, prefix: "OO-" }, + { start: 0x458421, s1: 1024, s2: 32, prefix: "OY-" }, + { start: 0x460000, s1: 26*26, s2: 26, prefix: "OH-" }, + { start: 0x468421, s1: 1024, s2: 32, prefix: "SX-" }, + { start: 0x490421, s1: 1024, s2: 32, prefix: "CS-" }, + { start: 0x4A0421, s1: 1024, s2: 32, prefix: "YR-" }, + { start: 0x4B8421, s1: 1024, s2: 32, prefix: "TC-" }, + { start: 0x740421, s1: 1024, s2: 32, prefix: "JY-" }, + { start: 0x760421, s1: 1024, s2: 32, prefix: "AP-" }, + { start: 0x768421, s1: 1024, s2: 32, prefix: "9V-" }, + { start: 0x778421, s1: 1024, s2: 32, prefix: "YK-" }, + { start: 0xC00001, s1: 26*26, s2: 26, prefix: "C-F" }, + { start: 0xC044A9, s1: 26*26, s2: 26, prefix: "C-G" }, + { start: 0xE01041, s1: 4096, s2: 64, prefix: "LV-" } + ]; + + // numeric registrations + // start: start hexid in range + // first: first numeric registration + // count: number of numeric registrations + // template: registration template, trailing characters are replaced with the numeric registration + var numeric_mappings = [ + { start: 0x140000, first: 0, count: 100000, template: "RA-00000" }, + { start: 0x0B03E8, first: 1000, count: 1000, template: "CU-T0000" } + ]; + + // fill in some derived data + for (var i = 0; i < stride_mappings.length; ++i) { + var mapping = stride_mappings[i]; + + if (!mapping.alphabet) { + mapping.alphabet = full_alphabet; + } + + if (mapping.first) { + var c1 = mapping.alphabet.indexOf(mapping.first.charAt(0)); + var c2 = mapping.alphabet.indexOf(mapping.first.charAt(1)); + var c3 = mapping.alphabet.indexOf(mapping.first.charAt(2)); + mapping.offset = c1 * mapping.s1 + c2 * mapping.s2 + c3; + } else { + mapping.offset = 0; + } + + if (mapping.last) { + var c1 = mapping.alphabet.indexOf(mapping.last.charAt(0)); + var c2 = mapping.alphabet.indexOf(mapping.last.charAt(1)); + var c3 = mapping.alphabet.indexOf(mapping.last.charAt(2)); + mapping.end = mapping.start - mapping.offset + + c1 * mapping.s1 + + c2 * mapping.s2 + + c3; + } else { + mapping.end = mapping.start - mapping.offset + + (mapping.alphabet.length - 1) * mapping.s1 + + (mapping.alphabet.length - 1) * mapping.s2 + + (mapping.alphabet.length - 1); + } + } + + for (var i = 0; i < numeric_mappings.length; ++i) { + numeric_mappings[i].end = numeric_mappings[i].start + numeric_mappings[i].count - 1; + } + + function lookup(hexid) { + var hexid = +("0x" + hexid); + if (isNaN(hexid)) { + return null; + } + + var reg; + reg = n_reg(hexid); + if (reg) + return reg; + + reg = ja_reg(hexid); + if (reg) + return reg; + + reg = hl_reg(hexid); + if (reg) + return reg; + + reg = numeric_reg(hexid); + if (reg) + return reg; + + reg = stride_reg(hexid); + if (reg) + return reg; + + return null; + } + + function stride_reg(hexid) { + // try the mappings in stride_mappings + var i; + for (i = 0; i < stride_mappings.length; ++i) { + var mapping = stride_mappings[i]; + if (hexid < mapping.start || hexid > mapping.end) + continue; + + var offset = hexid - mapping.start + mapping.offset; + + var i1 = Math.floor(offset / mapping.s1); + offset = offset % mapping.s1; + var i2 = Math.floor(offset / mapping.s2); + offset = offset % mapping.s2; + var i3 = offset; + + if (i1 < 0 || i1 >= mapping.alphabet.length || + i2 < 0 || i2 >= mapping.alphabet.length || + i3 < 0 || i3 >= mapping.alphabet.length) + continue; + + return mapping.prefix + mapping.alphabet.charAt(i1) + mapping.alphabet.charAt(i2) + mapping.alphabet.charAt(i3); + } + + // nothing + return null; + } + + function numeric_reg(hexid) { + // try the mappings in numeric_mappings + var i; + for (i = 0; i < numeric_mappings.length; ++i) { + var mapping = numeric_mappings[i]; + if (hexid < mapping.start || hexid > mapping.end) + continue; + + var reg = (hexid - mapping.start + mapping.first) + ""; + return mapping.template.substring(0, mapping.template.length - reg.length) + reg; + } + } + + // + // US N-numbers + // + + function n_letters(rem) { + if (rem == 0) + return ""; + + --rem; + return limited_alphabet.charAt(Math.floor(rem / 25)) + n_letter(rem % 25); + } + + function n_letter(rem) { + if (rem == 0) + return ""; + + --rem; + return limited_alphabet.charAt(rem); + } + + function n_reg(hexid) { + var offset = hexid - 0xA00001; + if (offset < 0 || offset >= 915399) { + return null; + } + + var digit1 = Math.floor(offset / 101711) + 1; + var reg = "N" + digit1; + offset = offset % 101711; + if (offset <= 600) { + // Na, NaA .. NaZ, NaAA .. NaZZ + return reg + n_letters(offset); + } + + // Na0* .. Na9* + offset -= 601; + + var digit2 = Math.floor(offset / 10111); + reg += digit2; + offset = offset % 10111; + + if (offset <= 600) { + // Nab, NabA..NabZ, NabAA..NabZZ + return reg + n_letters(offset); + } + + // Nab0* .. Nab9* + offset -= 601; + + var digit3 = Math.floor(offset / 951); + reg += digit3; + offset = offset % 951; + + if (offset <= 600) { + // Nabc, NabcA .. NabcZ, NabcAA .. NabcZZ + return reg + n_letters(offset); + } + + // Nabc0* .. Nabc9* + offset -= 601; + + var digit4 = Math.floor(offset / 35); + reg += digit4.toFixed(0); + offset = offset % 35; + + if (offset <= 24) { + // Nabcd, NabcdA .. NabcdZ + return reg + n_letter(offset); + } + + // Nabcd0 .. Nabcd9 + offset -= 25; + return reg + offset.toFixed(0); + } + + // South Korea + function hl_reg(hexid) { + if (hexid >= 0x71BA00 && hexid <= 0x71bf99) { + return "HL" + (hexid - 0x71BA00 + 0x7200).toString(16); + } + + if (hexid >= 0x71C000 && hexid <= 0x71C099) { + return "HL" + (hexid - 0x71C000 + 0x8000).toString(16); + } + + if (hexid >= 0x71C200 && hexid <= 0x71C299) { + return "HL" + (hexid - 0x71C200 + 0x8200).toString(16); + } + + return null; + } + + // Japan + function ja_reg(hexid) { + var offset = hexid - 0x840000; + if (offset < 0 || offset >= 229840) + return null; + + var reg = "JA"; + + var digit1 = Math.floor(offset / 22984); + if (digit1 < 0 || digit1 > 9) + return null; + reg += digit1; + offset = offset % 22984; + + var digit2 = Math.floor(offset / 916); + if (digit2 < 0 || digit2 > 9) + return null; + reg += digit2; + offset = offset % 916; + + if (offset < 340) { + // 3rd is a digit, 4th is a digit or letter + var digit3 = Math.floor(offset / 34); + reg += digit3; + offset = offset % 34; + + if (offset < 10) { + // 4th is a digit + return reg + offset; + } + + // 4th is a letter + offset -= 10; + return reg + limited_alphabet.charAt(offset); + } + + // 3rd and 4th are letters + offset -= 340; + var letter3 = Math.floor(offset / 24); + return reg + limited_alphabet.charAt(letter3) + limited_alphabet.charAt(offset % 24); + } + + return lookup; +})(); + +// make nodejs happy: +if (typeof module !== 'undefined') { + module.exports = registration_from_hexid; +} diff --git a/html/script.js b/html/script.js new file mode 100644 index 0000000..e21c27d --- /dev/null +++ b/html/script.js @@ -0,0 +1,3093 @@ +// Some global variables are defined in early.js +// early.js takes care of getting some history files while the html page and +// some javascript libraries are still loading, hopefully speeding up loading + +"use strict"; + +// Define our global variables +var OLMap = null; +var StaticFeatures = new ol.Collection(); +var SiteCircleFeatures = new ol.Collection(); +var PlaneIconFeatures = new ol.Collection(); +var trailGroup = new ol.Collection(); +var iconLayer; +var trailLayers; +var iconCache = {}; +var addToIconCache = []; +var lineStyleCache = {}; +var Planes = {}; +var PlanesOrdered = []; +var PlaneFilter = {}; +var SelectedPlane = null; +var SelectedAllPlanes = false; +var HighlightedPlane = null; +var FollowSelected = false; +var infoBoxOriginalPosition = {}; +var customAltitudeColors = true; +var loadtime = "loadtime"; +var loadFinished = false; +var mapResizeTimeout; +var refresh; +var scaleFactor; +var debugTracks = false; +var debugAll = false; +var trackLabels = false; +var fragment; +var grouptype_checkbox; +var multiSelect = false; +var uat_data = null; +var enableLabels = false; +var extendedLabels = false; +var mapIsVisible = true; +var columnVis = Array(30).fill(true); +var emptyStyle = new ol.style.Style({}); +var show_squawk_warning_cache = false; +var tableInView = false; +var historyOutdated = false; +var onlyMLAT = false; +var onlyMilitary = false; +var onlyADSB = false; +var onlySelected = false; +var fetchingPf = false; +var reaping = false; +var debug = false; +var debugJump = false; +var jumpTo = null; +var noMLAT = false; +var noVanish = false; +var sidebarVisible = true; +var filterTracks = false; +var refreshId = 0; +var globeIndexGrid = 0; +var globeIndexNow = {}; +var globeIndexSpecialTiles; +var globeSimLoad = 4; +var lastExtent; +var PendingFetches = 0; +var lastReqestFiles = 0; +var debugCounter = 0; + +var SpecialSquawks = { + '7500' : { cssClass: 'squawk7500', markerColor: 'rgb(255, 85, 85)', text: 'Aircraft Hijacking' }, + '7600' : { cssClass: 'squawk7600', markerColor: 'rgb(0, 255, 255)', text: 'Radio Failure' }, + '7700' : { cssClass: 'squawk7700', markerColor: 'rgb(255, 255, 0)', text: 'General Emergency' } +}; + +// Get current map settings +var CenterLat, CenterLon, ZoomLvl, ZoomLvlCache; +var zoomTimeout; + + +var PlaneRowTemplate = null; +var tableinfoFragment = null; + +var TrackedAircraft = 0; +var TrackedAircraftPositions = 0; +var TrackedHistorySize = 0; + +var SitePosition = null; + +// timestamps +var now=0, last=0, uat_now=0, uat_last=0; +var StaleReceiverCount = 0; +var FetchPending = []; +var FetchPendingUAT = null; + +var MessageCountHistory = []; +var MessageRate = 0; + +var NBSP='\u00a0'; + +var layers; +var layers_group; + +// piaware vs flightfeeder +var isFlightFeeder = false; + + +function processAircraft(ac, init, uat) { + var isArray = Array.isArray(ac); + var hex = isArray ? ac[0] : ac.hex; + var plane = null; + + // Do we already have this plane object in Planes? + // If not make it. + + /* + if ( ac.messages < 2) { + return; + } + */ + + plane = Planes[hex]; + + if (uatNoTISB && !init && uat && ac.type && ac.type.substring(0,4) == "tisb") { + // drop non ADS-B planes from UAT (TIS-B) + return; + } + + if (!plane) { + plane = new PlaneObject(hex); + plane.filter = PlaneFilter; + + if (!init) + setupPlane(hex,plane); + + Planes[hex] = plane; + PlanesOrdered.push(plane); + if (uat) { + plane.receiver = "uat"; + } else { + plane.receiver = "1090"; + } + } + + // Call the function update + if (uat) { + if (plane.receiver == "uat" || ac.seen_pos < 1.8 || init) { + plane.receiver = "uat"; + plane.updateData(uat_now, uat_last, ac, init); + } + } else { + if (plane.receiver == "1090" || ac.seen_pos < 1.8 || init) { + plane.receiver = "1090"; + plane.updateData(now, last, ac, init); + } + } +} + +function processReceiverUpdate(data, init) { + // update now and last + var uat = false; + if (data.uat_978 == "true") { + uat = true; + uat_last = uat_now; + uat_now = data.now; + } else { + if (data.now > now) { + last = now; + now = data.now; + } + } + + // Loop through all the planes in the data packet + var acs = data.aircraft; + + if (!uat && !init && !globeIndex) { + // Detect stats reset + if (MessageCountHistory.length > 0 && MessageCountHistory[MessageCountHistory.length-1].messages > data.messages) { + MessageCountHistory = [{'time' : MessageCountHistory[MessageCountHistory.length-1].time, + 'messages' : 0}]; + } + + // Note the message count in the history + MessageCountHistory.push({ 'time' : now, 'messages' : data.messages}); + // .. and clean up any old values + if ((now - MessageCountHistory[0].time) > 30) + MessageCountHistory.shift(); + + if (MessageCountHistory.length > 1) { + var message_time_delta = MessageCountHistory[MessageCountHistory.length-1].time - MessageCountHistory[0].time; + var message_count_delta = MessageCountHistory[MessageCountHistory.length-1].messages - MessageCountHistory[0].messages; + if (message_time_delta > 0) + MessageRate = message_count_delta / message_time_delta; + } else { + MessageRate = null; + } + } + + for (var j=0; j < acs.length; j++) { + processAircraft(acs[j], init, uat); + } + // jquery stuff might still have references to the json, so null the + // aircraft array to make it easier for the garbage collector. + data.aircraft = null; +} + +function setupPlane(hex, plane) { + + plane.tr = PlaneRowTemplate.cloneNode(true); + + if (hex[0] === '~') { + // Non-ICAO address + plane.tr.cells[0].textContent = hex.substring(1); + $(plane.tr).css('font-style', 'italic'); + } else { + plane.tr.cells[0].textContent = hex; + } + + // set flag image if available + if (ShowFlags && plane.icaorange.flag_image !== null) { + $('img', plane.tr.cells[1]).attr('src', FlagPath + plane.icaorange.flag_image); + $('img', plane.tr.cells[1]).attr('title', plane.icaorange.country); + } else { + $('img', plane.tr.cells[1]).css('display', 'none'); + } + + plane.clickListener = function(h, evt) { + if (evt.srcElement instanceof HTMLAnchorElement) { + evt.stopPropagation(); + return; + } + + if(!mapIsVisible) { + selectPlaneByHex(h, true); + //showMap(); + } else { + selectPlaneByHex(h, false); + } + adjustSelectedInfoBlockPosition(); + evt.preventDefault(); + }.bind(undefined, hex); + + plane.dblclickListener = function(h, evt) { + if(!mapIsVisible) { + showMap(); + } + selectPlaneByHex(h, true); + adjustSelectedInfoBlockPosition(); + evt.preventDefault(); + }.bind(undefined, hex); + + plane.tr.addEventListener('click', plane.clickListener); + plane.tr.addEventListener('dblclick', plane.dblclickListener); +} + +function fetchData() { + clearTimeout(refreshId); + if (noVanish) { + refreshId = setTimeout(fetchData, 5000); + } else { + refreshId = setTimeout(fetchData, RefreshInterval); + } + if (PendingFetches > 0) + return; + for (var i in FetchPending) { + if (FetchPending[i] != null && FetchPending[i].state() == 'pending') { + // don't double up on fetches, let the last one resolve + return; + } + } + FetchPending = []; + if (FetchPendingUAT != null) { + // don't double up on fetches, let the last one resolve + return; + } + + PendingFetches = 1; + + var center = ol.proj.toLonLat(OLMap.getView().getCenter(), OLMap.getView().getProjection()); + localStorage['CenterLon'] = CenterLon = center[0]; + localStorage['CenterLat'] = CenterLat = center[1]; + + var item; + var tryAgain = []; + while(item = addToIconCache.pop()) { + var svgKey = item[0]; + var element = item[1]; + if (iconCache[svgKey] != undefined) { + continue; + } + if (!element) { + element = new Image(); + element.src = item[2]; + item[1] = element; + tryAgain.push(item); + continue; + } + if (!element.complete) { + console.log("moep"); + tryAgain.push(item); + continue; + } + + iconCache[svgKey] = element; + } + addToIconCache = tryAgain; + if (enable_uat) { + FetchPendingUAT = $.ajax({ url: 'chunks/978.json', + timeout: 7000, + dataType: 'json' }); + + FetchPendingUAT.done(function(data) { + uat_data = data; + FetchPendingUAT = null; + }); + FetchPendingUAT.fail(function(jqxhr, status, error) { + FetchPendingUAT = null; + }); + } + buttonActive('#F', FollowSelected); + + var ac_url = []; + if (globeIndex) { + var indexes = globeIndexes(); + var count = 0; + indexes.sort(function(x,y) { + if (!globeIndexNow[x] && !globeIndexNow[y]) + return 0; + if (globeIndexNow[x] == null) + return -1; + if (globeIndexNow[y] == null) + return 1; + return (globeIndexNow[x] - globeIndexNow[y]); + }); + indexes = indexes.slice(0, mapIsVisible ? globeSimLoad : 60); + for (var i in indexes) { + ac_url.push('data/globe_' + indexes[i].toString().padStart(4, '0') + '.json'); + } + } else { + ac_url[0] = 'data/aircraft.json'; + if (uuid != null) { + ac_url[0] = 'data/?feed=' + uuid; + } + } + lastReqestFiles = ac_url.length; + PendingFetches = ac_url.length; + + if (globeIndex) { + clearTimeout(refreshId); + if (mapIsVisible) { + refreshId = setTimeout(fetchData, RefreshInterval); + } else { + refreshId = setTimeout(fetchData, 55000); + } + } + + for (var i in ac_url) { + //console.log(ac_url[i]); + var req = $.ajax({ url: ac_url[i], + timeout: 8000, + dataType: 'json' }); + FetchPending.push(req); + + req.done(function(data) { + if (data == null) { + return; + } + if (globeIndex) { + if (globeIndexNow[data.globeIndex] == null) { + var southWest = ol.proj.fromLonLat([data.west, data.south]); + var south180p = ol.proj.fromLonLat([180, data.south]); + var south180m = ol.proj.fromLonLat([-180, data.south]); + var southEast = ol.proj.fromLonLat([data.east, data.south]); + var northEast = ol.proj.fromLonLat([data.east, data.north]); + var north180p = ol.proj.fromLonLat([180, data.north]); + var north180m = ol.proj.fromLonLat([-180, data.north]); + var northWest = ol.proj.fromLonLat([data.west, data.north]); + const estimateStyle = new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: '#808080', + width: 1, + }) + }); + if (data.west < data.east) { + var tile = new ol.geom.LineString([southWest, southEast, northEast, northWest, southWest]); + var tileFeature = new ol.Feature(tile); + tileFeature.setStyle(estimateStyle); + StaticFeatures.push(tileFeature); + } else { + var west = new ol.geom.LineString([south180p, southWest, northWest, north180p]); + var east = new ol.geom.LineString([south180m, southEast, northEast, north180m]); + var westF = new ol.Feature(west); + var eastF = new ol.Feature(east); + westF.setStyle(estimateStyle); + eastF.setStyle(estimateStyle); + StaticFeatures.push(westF); + StaticFeatures.push(eastF); + } + + + } + globeIndexNow[data.globeIndex] = data.now; + } + + if (data.now >= now || globeIndex) { + processReceiverUpdate(data); + } + if (uat_data && uat_data.now > uat_now) { + processReceiverUpdate(uat_data); + uat_data = null; + } + + PendingFetches--; + + if (PendingFetches < 1) { + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); + refreshClock(new Date(now * 1000)); + } + + // Check for stale receiver data + if (last == now && !globeIndex) { + StaleReceiverCount++; + if (StaleReceiverCount > 5) { + $("#update_error_detail").text("The data from dump1090 hasn't been updated in a while. Maybe dump1090 is no longer running?"); + $("#update_error").css('display','block'); + } + } else if (StaleReceiverCount > 0){ + StaleReceiverCount = 0; + $("#update_error").css('display','none'); + } + }); + + req.fail(function(jqxhr, status, error) { + $("#update_error_detail").text("AJAX call failed (" + status + (error ? (": " + error) : "") + "). Maybe dump1090 is no longer running?"); + $("#update_error").css('display','block'); + StaleReceiverCount++; + PendingFetches--; + }); + } +} + + + +// this function is called from index.html on body load +// kicks off the whole rabbit hole +function initialize() { + + mapOrientation *= (Math.PI/180); // adjust to radians + + if (localStorage['enableLabels'] == 'true'){ + toggleLabels(); + } + if (localStorage['extendedLabels'] == 'true'){ + toggleExtendedLabels(); + } + if (localStorage['trackLabels'] == "true") { + toggleTrackLabels(); + } + if (localStorage['tableInView'] == "true") { + toggleTableInView(true); + } + if (localStorage['debug'] == "true") + debug = true; + if (localStorage['debugPosFilter'] == "true") + debugPosFilter = true; + if (localStorage['noMLAT'] == "true") { + noMLAT = true; + //localStorage['noMLAT'] = "false"; + } + + if (localStorage['noVanish'] == "true") { + noVanish = true; + filterTracks = noVanish; + //localStorage['noVanish'] = "false"; + buttonActive('#P', noVanish); + } + + $.when(configureReceiver).done(function() { + configureReceiver = null; + + // Initialize stuff + init_page(); + + // Wait for history item downloads and append them to the buffer + push_history(); + // this will be needed later + $.getJSON("db/aircraft_types/icao_aircraft_types.json") + .done(function(typeLookupData) { + _aircraft_type_cache = typeLookupData; + }) + }); + +} + +function init_page() { + // Set page basics + document.title = PageName; + + //flightFeederCheck(); + + PlaneRowTemplate = document.getElementById("plane_row_template"); + + $('#clock_div').text(new Date().toLocaleString()); + + + $("#loader").removeClass("hidden"); + + if (ExtendedData || window.location.hash == '#extended') { + $("#extendedData").removeClass("hidden"); + } + + + // Set up map/sidebar splitter + $("#sidebar_container").resizable({ + handles: { + w: '#splitter' + }, + minWidth: 150, + maxWidth: ($(window).innerWidth() *0.8), + }); + + if (localStorage['sidebar_width'] != null) + $('#sidebar_container').width(localStorage['sidebar_width']); + if ($('#sidebar_container').width() > $(window).innerWidth() *0.8) + $('#sidebar_container').width('30%'); + + localStorage['sidebar_width'] = $('#sidebar_container').width(); + /* + // Set up datablock splitter + $('#selected_infoblock').resizable({ + handles: { + s: '#splitter-infoblock' + }, + containment: "#sidebar_container", + minHeight: 50 + }); + */ + + $('#close-button').on('click', function() { + if (SelectedPlane) { + SelectedPlane.selected = null; + SelectedPlane.clearLines(); + SelectedPlane.updateMarker(); + SelectedPlane = null; + refreshSelected(); + refreshHighlighted(); + $('#selected_infoblock').hide(); + refreshTableInfo(); + } + }); + + /* + // this is a little hacky, but the best, most consitent way of doing this. change the margin bottom of the table container to the height of the overlay + $('#selected_infoblock').on('resize', function() { + $('#sidebar_canvas').css('margin-bottom', $('#selected_infoblock').height() + 'px'); + }); +// look at the window resize to resize the pop-up infoblock so it doesn't float off the bottom or go off the top + $(window).on('resize', function() { + var topCalc = ($(window).height() - $('#selected_infoblock').height() - 25); +// check if the top will be less than zero, which will be overlapping/off the screen, and set the top correctly. + if (topCalc < 0) { + topCalc = 0; + $('#selected_infoblock').css('height', ($(window).height() - 25) +'px'); + } + $('#selected_infoblock').css('top', topCalc + 'px'); + }); + */ + +$('#sidebar_container').on('resize', function() { + localStorage['sidebar_width'] = $('#sidebar_container').width(); +}); + + // Set up event handlers for buttons + $("#toggle_sidebar_button").click(toggleSidebarVisibility); + $("#expand_sidebar_button").click(expandSidebar); + $("#show_map_button").click(showMap); + + // Set initial element visibility + $("#show_map_button").hide(); + setColumnVisibility(); + + // Initialize other controls + initializeUnitsSelector(); + + // Set up altitude filter button event handlers and validation options + $("#altitude_filter_form").submit(onFilterByAltitude); + + $("#search_form").submit(onSearch); + + // check if the altitude color values are default to enable the altitude filter + if (ColorByAlt.air.h.length === 3 && ColorByAlt.air.h[0].alt === 2000 && ColorByAlt.air.h[0].val === 20 && ColorByAlt.air.h[1].alt === 10000 && ColorByAlt.air.h[1].val === 140 && ColorByAlt.air.h[2].alt === 40000 && ColorByAlt.air.h[2].val === 300) { + customAltitudeColors = false; + } + + +$("#altitude_filter_reset_button").click(onResetAltitudeFilter); + +$('#settingsCog').on('click', function() { + $('#settings_infoblock').toggle(); +}); + +$('#settings_close').on('click', function() { + $('#settings_infoblock').hide(); +}); + +$('#groundvehicle_filter').on('click', function() { + filterGroundVehicles(true); + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); +}); + +$('#blockedmlat_filter').on('click', function() { + filterBlockedMLAT(true); + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); +}); + +$('#grouptype_checkbox').on('click', function() { + if ($('#grouptype_checkbox').hasClass('settingsCheckboxChecked')) { + sortByDistance(); + } else { + sortByDataSource(); + } + +}); + +/* + $('#altitude_checkbox').on('click', function() { + toggleAltitudeChart(true); + }); + */ + +$('#debugAll_checkbox').on('click', function() { + toggleDebugAll(); +}); + +if (localStorage['debugAll'] === "true") { + debugAll = true; + $('#debugAll_checkbox').addClass('settingsCheckboxChecked'); +} else { + debugAll = false; + $('#debugAll_checkbox').removeClass('settingsCheckboxChecked'); +} + +$('#debug_checkbox').on('click', function() { + toggleDebugTracks(); +}); + +if (localStorage['debugTracks'] === "true") { + debugTracks = true; + $('#debug_checkbox').addClass('settingsCheckboxChecked'); +} else { + debugTracks = false; + $('#debug_checkbox').removeClass('settingsCheckboxChecked'); +} + + +$('#selectall_checkbox').on('click', function() { + if ($('#selectall_checkbox').hasClass('settingsCheckboxChecked')) { + deselectAllPlanes(); + } else { + selectAllPlanes(); + } +}) +$('#mapdim_checkbox').on('click', function() { + toggleMapDim(); +}); + +// Force map to redraw if sidebar container is resized - use a timer to debounce +$("#sidebar_container").on("resize", function() { + clearTimeout(mapResizeTimeout); + mapResizeTimeout = setTimeout(updateMapSize, 10); +}); + +filterGroundVehicles(false); +filterBlockedMLAT(false); +//toggleAltitudeChart(false); + +} + + + +function push_history() { + $("#loader_progress").attr('max',nHistoryItems*2); + for (var i = 0; i < nHistoryItems; i++) { + push_history_item(i); + } + if (globeIndex) { + parse_history(); + } else if (!nHistoryItems) { + parse_history(); + console.log("History loading failed"); + } +} + +function push_history_item(i) { + + $.when(deferHistory[i]) + .done(function(json) { + + if (HistoryChunks) { + if (json && json.files) { + for (var i in json.files) { + PositionHistoryBuffer.push(json.files[i]); + } + } else if (json && json.now) { + PositionHistoryBuffer.push(json); + } + } else { + PositionHistoryBuffer.push(json); + } + + + $("#loader_progress").attr('value',HistoryItemsReturned); + HistoryItemsReturned++; + if (HistoryItemsReturned == nHistoryItems) { + parse_history(); + } + }) + + .fail(function(jqxhr, status, error) { + + //Doesn't matter if it failed, we'll just be missing a data point + $("#loader_progress").attr('value',HistoryItemsReturned); + //console.log(error); + HistoryItemsReturned++; + if (HistoryItemsReturned == nHistoryItems) { + parse_history(); + } + }); +} + + + +function parse_history() { + + if (nHistoryItems) { + console.timeEnd("Downloaded History"); + console.time("Loaded aircraft tracks from History"); + } + + $("#loader").addClass("hidden"); + + for (i in deferHistory) + deferHistory[i] = null; + + initialize_map(); + + if (PositionHistoryBuffer.length > 0) { + + // Sort history by timestamp + console.log("Sorting history: " + PositionHistoryBuffer.length); + PositionHistoryBuffer.sort(function(x,y) { return (y.now - x.now); }); + + // Process history + var data; + var h = 0; + var pruneInt = Math.floor(PositionHistoryBuffer.length/5); + while (data = PositionHistoryBuffer.pop()) { + + // process new data + if (PositionHistoryBuffer.length < 10) { + processReceiverUpdate(data, false); + if (now-new Date().getTime()/1000 > 600) + historyOutdated = true; + } else { + processReceiverUpdate(data, true); + } + + // update aircraft tracks + if (data.uat_978 != "true") { + for (var i = 0; i < PlanesOrdered.length; ++i) { + var plane = PlanesOrdered[i]; + if (plane.dataSource == "uat") + plane.updateTrack(uat_now, uat_last); + else + plane.updateTrack(now, last); + } + } + + + if (h==1) { + console.log("Applied history " + h + " from: " + + (new Date(now * 1000)).toLocaleTimeString()); + } + // prune aircraft list + if(h++ % pruneInt == pruneInt - 1) { + + console.log("Applied history " + h + " from: " + + (new Date(now * 1000)).toLocaleTimeString()); + + reaper(); + } + } + + // Final pass to update all planes to their latest state + console.log("Final history cleanup pass"); + for (var i in PlanesOrdered) { + var plane = PlanesOrdered[i]; + + if (plane.position && SitePosition) + plane.sitedist = ol.sphere.getDistance(SitePosition, plane.position); + + if (uatNoTISB && plane.receiver == "uat" && plane.type && plane.type.substring(0,4) == "tisb") { + plane.last_message_time -= 999; + } + } + + refreshFeatures(); + + + for (var i in PlanesOrdered) + setupPlane(PlanesOrdered[i].icao,PlanesOrdered[i]); + } + + PositionHistoryBuffer = null; + + if (nHistoryItems) + console.timeEnd("Loaded aircraft tracks from History"); + + console.log("Completing init"); + + refreshSelected(); + refreshHighlighted(); + + // Setup our timer to poll from the server. + window.setInterval(reaper, 60000); + if (tempTrails) { + window.setInterval(trailReaper, 10000); + trailReaper(now); + } + if (enable_pf_data) { + window.setInterval(fetchPfData, RefreshInterval*10.314); + } + //window.setInterval(refreshTableInfo, 1000); + window.setInterval(function() {PendingFetches--;}, 10000); + + // And kick off one refresh immediately. + fetchData(); + + updateMapSize(); + + loadFinished = true; + processURLParams(); + + + if (localStorage['sidebar_visible'] == "false") + toggleSidebarVisibility(); + + if (SitePosition) { + sortByDistance(); + } else { + sortByAltitude(); + } +} + +// Make a LineString with 'points'-number points +// that is a closed circle on the sphere such that the +// great circle distance from 'center' to each point is +// 'radius' meters +function make_geodesic_circle(center, radius, points) { + var angularDistance = radius / 6378137.0; + var lon1 = center[0] * Math.PI / 180.0; + var lat1 = center[1] * Math.PI / 180.0; + var geom; + for (var i = 0; i <= points; ++i) { + var bearing = i * 2 * Math.PI / points; + + var lat2 = Math.asin( Math.sin(lat1)*Math.cos(angularDistance) + + Math.cos(lat1)*Math.sin(angularDistance)*Math.cos(bearing) ); + var lon2 = lon1 + Math.atan2(Math.sin(bearing)*Math.sin(angularDistance)*Math.cos(lat1), + Math.cos(angularDistance)-Math.sin(lat1)*Math.sin(lat2)); + + lat2 = lat2 * 180.0 / Math.PI; + lon2 = lon2 * 180.0 / Math.PI; + if (!geom) + geom = new ol.geom.LineString([[lon2, lat2]]); + else + geom.appendCoordinate([lon2, lat2]); + } + return geom; +} + +// Initalizes the map and starts up our timers to call various functions +function initialize_map() { + if (receiverJson && receiverJson.lat != null) { + SiteLat = receiverJson.lat; + SiteLon = receiverJson.lon; + DefaultCenterLat = receiverJson.lat; + DefaultCenterLon = receiverJson.lon; + } + if (receiverJson && receiverJson.globeIndexGrid != null) { + globeIndexGrid = receiverJson.globeIndexGrid; + globeIndex = 1; + globeIndexSpecialTiles = receiverJson.globeIndexSpecialTiles; + toggleTableInView(true); + } + // Load stored map settings if present + CenterLon = Number(localStorage['CenterLon']) || DefaultCenterLon; + CenterLat = Number(localStorage['CenterLat']) || DefaultCenterLat; + ZoomLvl = Number(localStorage['ZoomLvl']) || DefaultZoomLvl; + ZoomLvlCache = ZoomLvl; + if (localStorage['MapType_tar1090']) { + MapType_tar1090 = localStorage['MapType_tar1090']; + } + + // Set SitePosition + if (SiteLat != null && SiteLon != null) { + SitePosition = [SiteLon, SiteLat]; + } else { + SitePosition = null; + PlaneRowTemplate.cells[9].style.display = 'none'; // hide distance column + document.getElementById("distance").style.display = 'none'; // hide distance header + } + + // Maybe hide flag info + if (!ShowFlags) { + PlaneRowTemplate.cells[1].style.display = 'none'; // hide flag column + document.getElementById("flag").style.display = 'none'; // hide flag header + } + + // Initialize OL3 + + layers_group = createBaseLayers(); + layers = layers_group.getLayers(); + + iconLayer = new ol.layer.Vector({ + name: 'ac_positions', + type: 'overlay', + title: 'Aircraft positions', + source: new ol.source.Vector({ + features: PlaneIconFeatures, + }), + }); + + layers.push( + new ol.layer.Vector({ + name: 'site_pos', + type: 'overlay', + title: 'Site position and range rings', + source: new ol.source.Vector({ + features: StaticFeatures, + }) + })); + + trailLayers = new ol.layer.Group({ + name: 'ac_trail', + title: 'Aircraft trails', + type: 'overlay', + layers: trailGroup, + }); + + layers.push(trailLayers); + + layers.push(iconLayer); + + var foundType = false; + var baseCount = 0; + + const dummyLayer = new ol.layer.Vector({ + name: 'dummy', + source: new ol.source.Vector({ + features: new ol.Collection(), + }), + renderOrder: null, + }); + + trailGroup.push(dummyLayer); + + ol.control.LayerSwitcher.forEachRecursive(layers_group, function(lyr) { + if (!lyr.get('name')) + return; + + if (lyr.get('type') === 'base') { + baseCount++; + if (MapType_tar1090 === lyr.get('name')) { + foundType = true; + lyr.setVisible(true); + } else { + lyr.setVisible(false); + } + + lyr.on('change:visible', function(evt) { + if (evt.target.getVisible()) { + MapType_tar1090 = localStorage['MapType_tar1090'] = evt.target.get('name'); + } + }); + } else if (lyr.get('type') === 'overlay') { + var visible = localStorage['layer_' + lyr.get('name')]; + if (visible != undefined) { + // javascript, why must you taunt me with gratuitous type problems + lyr.setVisible(visible === "true"); + } + + lyr.on('change:visible', function(evt) { + localStorage['layer_' + evt.target.get('name')] = evt.target.getVisible(); + }); + } + }) + + if (!foundType) { + ol.control.LayerSwitcher.forEachRecursive(layers_group, function(lyr) { + if (foundType) + return; + if (lyr.get('type') === 'base') { + lyr.setVisible(true); + foundType = true; + } + }); + } + + OLMap = new ol.Map({ + target: 'map_canvas', + layers: layers, + view: new ol.View({ + center: ol.proj.fromLonLat([CenterLon, CenterLat]), + zoom: ZoomLvl, + }), + controls: [new ol.control.Zoom({delta: 1,}), + new ol.control.Rotate(), + new ol.control.Attribution({collapsed: true}), + new ol.control.ScaleLine({units: DisplayUnits}) + ], + loadTilesWhileAnimating: false, + loadTilesWhileInteracting: false, + }); + + OLMap.getView().setRotation(mapOrientation); // adjust orientation + + if (baseCount > 1) { + OLMap.addControl(new ol.control.LayerSwitcher()); + } + + // Listeners for newly created Map + OLMap.getView().on('change:center', function(event) { + if (FollowSelected) { + const center = ol.proj.toLonLat(OLMap.getView().getCenter(), OLMap.getView().getProjection()); + // On manual navigation, disable follow + if (!SelectedPlane || !SelectedPlane.position || + (Math.abs(center[0] - SelectedPlane.position[0]) > 0.0001 && + Math.abs(center[1] - SelectedPlane.position[1]) > 0.0001)){ + FollowSelected = false; + refreshSelected(); + refreshHighlighted(); + } + } + }); + + changeZoom(); + OLMap.getView().on('change:resolution', function(event) { + + ZoomLvl = OLMap.getView().getZoom(); + + // small zoomstep, no need to change aircraft scaling + if (Math.abs(ZoomLvl-ZoomLvlCache) < 0.1) + return; + + ZoomLvlCache = ZoomLvl; + + clearTimeout(zoomTimeout); + zoomTimeout = setTimeout(changeZoom, 20); + + }); + + OLMap.on(['click', 'dblclick'], function(evt) { + var hex = evt.map.forEachFeatureAtPixel( + evt.pixel, + function(feature, layer) { + return feature.hex; + }, + { + layerFilter: function(layer) { + return (layer == iconLayer || layer.get('isTrail') == true); + }, + hitTolerance:5, + } + ); + if (hex) { + selectPlaneByHex(hex, (evt.type === 'dblclick')); + adjustSelectedInfoBlockPosition(); + } else if (!multiSelect) { + deselectAllPlanes(); + } + evt.stopPropagation(); + }); + + + // show the hover box + if (ZoomLvl > 6.5 && enableMouseover) { + OLMap.on('pointermove', onPointermove); + } + + // handle the layer settings pane checkboxes + OLMap.once('postrender', function(e) { + toggleLayer('#nexrad_checkbox', 'nexrad'); + toggleLayer('#sitepos_checkbox', 'site_pos'); + toggleLayer('#actrail_checkbox', 'ac_trail'); + toggleLayer('#acpositions_checkbox', 'ac_positions'); + }); + + // Add home marker if requested + if (SitePosition) { + + if (SiteShow) { + var markerStyle = new ol.style.Style({ + image: new ol.style.Circle({ + radius: 7, + snapToPixel: false, + fill: new ol.style.Fill({color: 'black'}), + stroke: new ol.style.Stroke({ + color: 'white', width: 2 + }) + }) + }); + + var feature = new ol.Feature(new ol.geom.Point(ol.proj.fromLonLat(SitePosition))); + feature.setStyle(markerStyle); + StaticFeatures.push(feature); + } + + if (SiteCircles) { + createSiteCircleFeatures(); + } + } + + if (localStorage['MapDim'] === "true" || MapDim) { + toggleMapDim(true); + } + + window.addEventListener('keydown', function(e) { + if (e.defaultPrevented ) { + return; // Do nothing if the event was already processed + } + if (e.srcElement.nodeName == 'INPUT') { + return; + } + + if( e.ctrlKey || e.altKey || e.metaKey) { + return; + } + var oldCenter, extent, newCenter; + switch (e.key) { + case "c": + case "Esc": + case "Escape": + deselectAllPlanes(); + break; + // zoom and movement + case "q": + zoomOut(); + break; + case "e": + zoomIn(); + break; + case "w": + oldCenter = OLMap.getView().getCenter(); + extent = OLMap.getView().calculateExtent(OLMap.getSize()); + newCenter = [oldCenter[0], (oldCenter[1] + extent[3])/2]; + OLMap.getView().setCenter(newCenter); + FollowSelected = false; + break; + case "s": + oldCenter = OLMap.getView().getCenter(); + extent = OLMap.getView().calculateExtent(OLMap.getSize()); + newCenter = [oldCenter[0], (oldCenter[1] + extent[1])/2]; + OLMap.getView().setCenter(newCenter); + FollowSelected = false; + break; + case "a": + oldCenter = OLMap.getView().getCenter(); + extent = OLMap.getView().calculateExtent(OLMap.getSize()); + newCenter = [(oldCenter[0] + extent[0])/2, oldCenter[1]]; + OLMap.getView().setCenter(newCenter); + FollowSelected = false; + break; + case "d": + oldCenter = OLMap.getView().getCenter(); + extent = OLMap.getView().calculateExtent(OLMap.getSize()); + newCenter = [(oldCenter[0] + extent[2])/2, oldCenter[1]]; + OLMap.getView().setCenter(newCenter); + FollowSelected = false; + break; + // misc + case "b": + toggleMapDim(); + break; + case "m": + toggleMultiSelect(); + break; + case "v": + toggleTableInView(); + break; + case "r": + followRandomPlane(); + break; + case "t": + selectAllPlanes(); + break; + case "h": + resetMap(); + break; + case "f": + toggleFollowSelected(); + break; + // filters + case "M": + onlyMLAT = !onlyMLAT; + break; + case "T": + filterTISB = !filterTISB; + break; + case "u": + toggleMilitary(); + case "A": + onlyADSB = !onlyADSB; + break; + // persistance mode + case "i": + toggleIsolation(); + break; + case "p": + togglePersistence(); + break; + // Labels + case "l": + toggleLabels(); + break; + case "o": + toggleExtendedLabels(); + break; + case "k": + toggleTrackLabels(); + break; + // debug stuff + case "D": + debug = !debug; + localStorage['debug'] = debug; + console.log('debug = ' + debug); + break; + case "P": + debugPosFilter = !debugPosFilter; + localStorage['debugPosFilter'] = debugPosFilter; + console.log('debugPosFilter = ' + debugPosFilter); + break; + case "?": + if (!SelectedPlane) { + console.log("No plane selected"); + break; + } + console.log(SelectedPlane.icao + ": " + SelectedPlane.baseMarkerKey + " " + SelectedPlane.shape); + console.log(SelectedPlane); + break; + case "j": + selectPlaneByHex(jumpTo, true); + break; + case "J": + debugJump = !debugJump; + localStorage['debugJump'] = debugJump; + console.log('debugJump = ' + debugJump); + break; + case "N": + noMLAT = !noMLAT; + localStorage['noMLAT'] = noMLAT; + console.log('noMLAT = ' + noMLAT); + break; + } + }, true); + + // Add terrain-limit rings. To enable this: + // + // create a panorama for your receiver location on heywhatsthat.com + // + // note the "view" value from the URL at the top of the panorama + // i.e. the XXXX in http://www.heywhatsthat.com/?view=XXXX + // + // fetch a json file from the API for the altitudes you want to see: + // + // wget -O /usr/share/dump1090-mutability/html/upintheair.json \ + // 'http://www.heywhatsthat.com/api/upintheair.json?id=XXXX&refraction=0.25&alts=3048,9144' + // + // NB: altitudes are in _meters_, you can specify a list of altitudes + + // kick off an ajax request that will add the rings when it's done + if (!globeIndex) { + var request = $.ajax({ url: 'upintheair.json', + timeout: 15000, + cache: true, + dataType: 'json' }); + request.done(function(data) { + for (var i = 0; i < data.rings.length; ++i) { + var geom = null; + var points = data.rings[i].points; + var altitude = (3.28084 * data.rings[i].alt).toFixed(0); + var color = range_outline_color; + if (range_outline_colored_by_altitude) { + var colorArr = altitudeColor(altitude); + color = 'hsl(' + colorArr[0].toFixed(0) + ',' + colorArr[1].toFixed(0) + '%,' + colorArr[2].toFixed(0) + '%)'; + } + var ringStyle = new ol.style.Style({ + fill: null, + stroke: new ol.style.Stroke({ + color: color, + width: range_outline_width, + }) + }); + if (points.length > 0) { + geom = new ol.geom.LineString([[ points[0][1], points[0][0] ]]); + for (var j = 0; j < points.length; ++j) { + geom.appendCoordinate([ points[j][1], points[j][0] ]); + } + geom.appendCoordinate([ points[0][1], points[0][0] ]); + geom.transform('EPSG:4326', 'EPSG:3857'); + + var feature = new ol.Feature(geom); + feature.setStyle(ringStyle); + StaticFeatures.push(feature); + } + } + }); + + request.fail(function(jqxhr, status, error) { + // no rings available, do nothing + }); + } +} + +function createSiteCircleFeatures() { + // Clear existing circles first + SiteCircleFeatures.forEach(function(circleFeature) { + StaticFeatures.remove(circleFeature); + }); + SiteCircleFeatures.clear(); + + var circleStyle = function(distance) { + return new ol.style.Style({ + fill: null, + stroke: new ol.style.Stroke({ + color: '#000000', + width: 1 + }), + text: new ol.style.Text({ + font: '10px Helvetica Neue, sans-serif', + fill: new ol.style.Fill({ color: '#000' }), + offsetY: -8, + text: format_distance_long(distance, DisplayUnits, 0) + + }) + }); + }; + + var conversionFactor = 1000.0; + if (DisplayUnits === "nautical") { + conversionFactor = 1852.0; + } else if (DisplayUnits === "imperial") { + conversionFactor = 1609.0; + } + + for (var i=0; i < SiteCirclesDistances.length; ++i) { + var distance = SiteCirclesDistances[i] * conversionFactor; + var circle = make_geodesic_circle(SitePosition, distance, 180); + circle.transform('EPSG:4326', 'EPSG:3857'); + var feature = new ol.Feature(circle); + feature.setStyle(circleStyle(distance)); + StaticFeatures.push(feature); + SiteCircleFeatures.push(feature); + } +} + +// This looks for planes to reap out of the master Planes variable +function reaper(all) { + //console.log("Reaping started.."); + if (noVanish) + return; + if (reaping) + return; + reaping = true; + + // Look for planes where we have seen no messages for >300 seconds + var newPlanes = []; + var plane; + while (plane = PlanesOrdered.pop()) { + plane.seen = now - plane.last_message_time; + if (all || plane.seen > 600) { + // Reap it. + //console.log("Removed " + plane.icao); + delete Planes[plane.icao]; + plane.destroy(); + } else { + // Keep it. + newPlanes.push(plane); + } + }; + + PlanesOrdered = newPlanes; + reaping = false; +} + +// Page Title update function +function refreshPageTitle() { + if (!PlaneCountInTitle && !MessageRateInTitle) { + return; + } + + var subtitle = ""; + + if (PlaneCountInTitle) { + subtitle += TrackedAircraftPositions + '/' + TrackedAircraft; + } + + if (MessageRateInTitle && MessageRate != null) { + if (subtitle) subtitle += ' | '; + subtitle += MessageRate.toFixed(1) + '/s'; + } + + document.title = PageName + ' - ' + subtitle; +} + +// Refresh the detail window about the plane +function refreshSelected() { + + + if (!SelectedPlane) { + setSelectedInfoBlockVisibility(); + return; + } + const selected = SelectedPlane; + + if (selected.flight && selected.flight.trim()) { + $('#selected_callsign').text(selected.flight); + } else { + $('#selected_callsign').text('n/a'); + } + if (flightawareLinks) { + $('#selected_flightaware_link').html(getFlightAwareModeSLink(selected.icao, selected.flight, "Visit Flight Page")); + } + + if (selected.registration) { + if (flightawareLinks) { + $('#selected_registration').html(getFlightAwareIdentLink(selected.registration, selected.registration)); + } else { + $('#selected_registration').text(selected.registration); + } + } else { + $('#selected_registration').text("n/a"); + } + + if (selected.icaoType) { + $('#selected_icaotype').text(selected.icaoType); + } else { + $('#selected_icaotype').text("n/a"); + } + + // Not using this logic for the redesigned info panel at the time, but leaving it in if/when adding it back + // var emerg = document.getElementById('selected_emergency'); + // if (selected.squawk in SpecialSquawks) { + // emerg.className = SpecialSquawks[selected.squawk].cssClass; + // emerg.textContent = NBSP + 'Squawking: ' + SpecialSquawks[selected.squawk].text + NBSP ; + // } else { + // emerg.className = 'hidden'; + // } + + $("#selected_altitude1").text(format_altitude_long(selected.altitude, selected.vert_rate, DisplayUnits)); + $("#selected_altitude2").text(format_altitude_long(selected.altitude, selected.vert_rate, DisplayUnits)); + + $('#selected_onground').text(format_onground(selected.altitude)); + + if (selected.squawk === null || selected.squawk === '0000') { + $('#selected_squawk1').text('n/a'); + $('#selected_squawk2').text('n/a'); + } else { + $('#selected_squawk1').text(selected.squawk); + $('#selected_squawk2').text(selected.squawk); + } + + $('#selected_speed1').text(format_speed_long(selected.gs, DisplayUnits)); + $('#selected_speed2').text(format_speed_long(selected.gs, DisplayUnits)); + $('#selected_ias').text(format_speed_long(selected.ias, DisplayUnits)); + $('#selected_tas').text(format_speed_long(selected.tas, DisplayUnits)); + if (selected.geom_rate != null) { + $('#selected_vert_rate').text(format_vert_rate_long(selected.geom_rate, DisplayUnits)); + } else { + $('#selected_vert_rate').text(format_vert_rate_long(selected.baro_rate, DisplayUnits)); + } + $('#selected_baro_rate').text(format_vert_rate_long(selected.baro_rate, DisplayUnits)); + $('#selected_geom_rate').text(format_vert_rate_long(selected.geom_rate, DisplayUnits)); + $('#selected_icao').text(selected.icao.toUpperCase()); + $('#selected_pf_info').text((selected.pfRoute ? selected.pfRoute : "") ); + //+" "+ (selected.pfFlightno ? selected.pfFlightno : "") + $('#airframes_post_icao').attr('value',selected.icao); + $('#selected_track1').text(format_track_long(selected.track)); + $('#selected_track2').text(format_track_brief(selected.track)); + + if (selected.seen != null && selected.seen < 1000000) { + $('#selected_seen').text(selected.seen.toFixed(1)); + } else { + $('#selected_seen').text('n/a'); + } + if (selected.seen_pos != null&& selected.seen_pos < 1000000) { + $('#selected_seen_pos').text(selected.seen_pos.toFixed(1)); + } else { + $('#selected_seen_pos').text('n/a'); + } + + $('#selected_country').text(selected.icaorange.country.replace("special use", "special")); + if (ShowFlags && selected.icaorange.flag_image !== null) { + $('#selected_flag').removeClass('hidden'); + $('#selected_flag img').attr('src', FlagPath + selected.icaorange.flag_image); + $('#selected_flag img').attr('title', selected.icaorange.country); + } else { + $('#selected_flag').addClass('hidden'); + } + + if (selected.position === null) { + $('#selected_position').text('n/a'); + $('#selected_follow').addClass('hidden'); + } else { + + if (selected.seen_pos > -1) { + $('#selected_position').text(format_latlng(selected.position)); + } else { + $('#selected_position').text(format_latlng(selected.position)); + } + + $('#selected_follow').removeClass('hidden'); + if (FollowSelected) { + $('#selected_follow').css('font-weight', 'bold'); + OLMap.getView().setCenter(ol.proj.fromLonLat(selected.position)); + } else { + $('#selected_follow').css('font-weight', 'normal'); + } + } + $('#selected_source').text(format_data_source(selected.getDataSource())); + $('#selected_category').text(selected.category ? selected.category : "n/a"); + $('#selected_sitedist1').text(format_distance_long(selected.sitedist, DisplayUnits)); + $('#selected_sitedist2').text(format_distance_long(selected.sitedist, DisplayUnits)); + $('#selected_rssi1').text(selected.rssi != null ? selected.rssi.toFixed(1) : "n/a"); + $('#selected_message_count').text(selected.messages); + $('#selected_message_rate').text((selected.messageRate != null) ? (selected.messageRate.toFixed(1)) : "n/a"); + if (flightawareLinks) { + $('#selected_photo_link').html(getFlightAwarePhotoLink(selected.registration)); + } + + $('#selected_altitude_geom').text(format_altitude_long(selected.alt_geom, selected.geom_rate, DisplayUnits)); + $('#selected_mag_heading').text(format_track_brief(selected.mag_heading)); + $('#selected_true_heading').text(format_track_brief(selected.true_heading)); + $('#selected_ias').text(format_speed_long(selected.ias, DisplayUnits)); + $('#selected_tas').text(format_speed_long(selected.tas, DisplayUnits)); + if (selected.mach == null) { + $('#selected_mach').text('n/a'); + } else { + $('#selected_mach').text(selected.mach.toFixed(3)); + } + if (selected.roll == null) { + $('#selected_roll').text('n/a'); + } else { + $('#selected_roll').text(selected.roll.toFixed(1)); + } + if (selected.track_rate == null) { + $('#selected_trackrate').text('n/a'); + } else { + $('#selected_trackrate').text(selected.track_rate.toFixed(2)); + } + $('#selected_geom_rate').text(format_vert_rate_long(selected.geom_rate, DisplayUnits)); + if (selected.nav_qnh == null) { + $('#selected_nav_qnh').text("n/a"); + } else { + $('#selected_nav_qnh').text(selected.nav_qnh.toFixed(1) + " hPa"); + } + $('#selected_nav_altitude').text(format_altitude_long(selected.nav_altitude, 0, DisplayUnits)); + $('#selected_nav_heading').text(format_track_long(selected.nav_heading)); + if (selected.nav_modes == null) { + $('#selected_nav_modes').text("n/a"); + } else { + $('#selected_nav_modes').text(selected.nav_modes.join()); + } + if (selected.nic_baro == null) { + $('#selected_nic_baro').text("n/a"); + } else { + if (selected.nic_baro == 1) { + $('#selected_nic_baro').text("cross-checked"); + } else { + $('#selected_nic_baro').text("not cross-checked"); + } + } + + $('#selected_nac_p').text(format_nac_p(selected.nac_p)); + $('#selected_nac_v').text(format_nac_v(selected.nac_v)); + if (selected.rc == null) { + $('#selected_rc').text("n/a"); + } else if (selected.rc == 0) { + $('#selected_rc').text("unknown"); + } else { + $('#selected_rc').text(format_distance_short(selected.rc, DisplayUnits)); + } + + if (selected.sil == null || selected.sil_type == null) { + $('#selected_sil').text("n/a"); + } else { + var sampleRate = ""; + var silDesc = ""; + if (selected.sil_type == "perhour") { + sampleRate = " per flight hour"; + } else if (selected.sil_type == "persample") { + sampleRate = " per sample"; + } + + switch (selected.sil) { + case 0: + silDesc = "> 1×10-3"; + break; + case 1: + silDesc = "≤ 1×10-3"; + break; + case 2: + silDesc = "≤ 1×10-5"; + break; + case 3: + silDesc = "≤ 1×10-7"; + break; + default: + silDesc = "n/a"; + sampleRate = ""; + break; + } + $('#selected_sil').html(silDesc + sampleRate); + } + + if (selected.version == null) { + $('#selected_version').text('none'); + } else if (selected.version == 0) { + $('#selected_version').text('v0 (DO-260)'); + } else if (selected.version == 1) { + $('#selected_version').text('v1 (DO-260A)'); + } else if (selected.version == 2) { + $('#selected_version').text('v2 (DO-260B)'); + } else { + $('#selected_version').text('v' + selected.version); + } + + setSelectedInfoBlockVisibility(); +} + +function refreshHighlighted() { + // this is following nearly identical logic, etc, as the refreshSelected function, but doing less junk for the highlighted pane + var highlighted = false; + + if (!HighlightedPlane || !(highlighted = Planes[HighlightedPlane]) ) { + $('#highlighted_infoblock').hide(); + return; + } + + $('#highlighted_infoblock').show(); + + // Get info box position and size + var infoBox = $('#highlighted_infoblock'); + var infoBoxPosition = infoBox.position(); + if (typeof infoBoxOriginalPosition.top === 'undefined') { + infoBoxOriginalPosition.top = infoBoxPosition.top; + infoBoxOriginalPosition.left = infoBoxPosition.left; + } else { + infoBox.css("left", infoBoxOriginalPosition.left); + infoBox.css("top", infoBoxOriginalPosition.top); + infoBoxPosition = infoBox.position(); + } + var infoBoxExtent = getExtent(infoBoxPosition.left, infoBoxPosition.top, infoBox.outerWidth(), infoBox.outerHeight()); + + // Get map size + var mapCanvas = $('#map_canvas'); + var mapExtent = getExtent(0, 0, mapCanvas.width(), mapCanvas.height()); + + var marker = highlighted.marker; + var geom; + var markerCoordinates; + if (!marker || !(geom = marker.getGeometry()) || !(markerCoordinates = geom.getCoordinates()) ) { + $('#highlighted_infoblock').hide(); + return; + } + var markerPosition = OLMap.getPixelFromCoordinate(markerCoordinates); + + // Check for overlap + //FIXME TODO: figure out this/remove this check + if (true || isPointInsideExtent(markerPosition[0], markerPosition[1], infoBoxExtent)) { + // Array of possible new positions for info box + var candidatePositions = []; + candidatePositions.push( { x: 40, y: 80 } ); + candidatePositions.push( { x: markerPosition[0] + 20, y: markerPosition[1] + 60 } ); + + // Find new position + for (var i = 0; i < candidatePositions.length; i++) { + var candidatePosition = candidatePositions[i]; + var candidateExtent = getExtent(candidatePosition.x, candidatePosition.y, infoBox.outerWidth(), infoBox.outerHeight()); + + if (!isPointInsideExtent(markerPosition[0], markerPosition[1], candidateExtent) && isPointInsideExtent(candidatePosition.x, candidatePosition.y, mapExtent)) { + // Found a new position that doesn't overlap marker - move box to that position + infoBox.css("left", candidatePosition.x); + infoBox.css("top", candidatePosition.y); + } + } + } + + $('#highlighted_callsign').text(highlighted.name); + + if (highlighted.icaoType !== null) { + $('#highlighted_icaotype').text(highlighted.icaoType); + } else { + $('#highlighted_icaotype').text("n/a"); + } + + $('#highlighted_source').text(format_data_source(highlighted.getDataSource())); + + if (highlighted.registration !== null) { + $('#highlighted_registration').text(highlighted.registration); + } else { + $('#highlighted_registration').text("n/a"); + } + + $('#highlighted_speed').text(format_speed_long(highlighted.speed, DisplayUnits)); + + $("#highlighted_altitude").text(format_altitude_long(highlighted.altitude, highlighted.vert_rate, DisplayUnits)); + + $('#highlighted_icao').text(highlighted.icao.toUpperCase()); + + $('#highlighted_pf_route').text((highlighted.pfRoute ? highlighted.pfRoute : "")); + + $('#highlighted_rssi').text(highlighted.rssi != null ? highlighted.rssi.toFixed(1) + ' dBFS' : "n/a"); + +} + +function refreshClock(now_date) { + var hhmm = now_date.getHours().toString().padStart(2,'0') + ":" + now_date.getMinutes().toString().padStart(2,'0'); + var hms = hhmm + ":" + now_date.getSeconds().toString().padStart(2,'0'); + $('#clock_div').text(hms + " " + now_date.toDateString()); +} + +function removeHighlight() { + HighlightedPlane = null; + refreshHighlighted(); +} + +function refreshFeatures() { + for (var i in PlanesOrdered) { + PlanesOrdered[i].updateTick(true); + } +} + +// Refreshes the larger table of all the planes +function refreshTableInfo() { + refreshPageTitle(); + + resortTable(PlanesOrdered); + + //$('#dump1090_infoblock').css('display','block'); + $('#dump1090_total_history').text(TrackedHistorySize); + + if (MessageRate !== null) { + $('#dump1090_message_rate').text(MessageRate.toFixed(1)); + } else { + $('#dump1090_message_rate').text("n/a"); + } + + var show_squawk_warning = false; + + TrackedAircraft = 0; + TrackedAircraftPositions = 0; + TrackedHistorySize = 0; + var nTablePlanes = 0; + + var currExtent; + if (globeIndex) { + currExtent = lastExtent; + } else { + currExtent = OLMap.getView().calculateExtent(OLMap.getSize()); + } + //console.log((currExtent[2]-currExtent[0])/40075016); + const bottomLeft = ol.proj.toLonLat([currExtent[0], currExtent[1]]); + const topRight = ol.proj.toLonLat([currExtent[2], currExtent[3]]); + //console.log([bottomLeft[0], topRight[0]]); + //console.log([bottomLeft[1], topRight[1]]); + //sidebarVisible = $("#sidebar_container").is(":visible"); + + //console.time("updateCells"); + for (var i = 0; i < PlanesOrdered.length; ++i) { + var tableplane = PlanesOrdered[i]; + TrackedHistorySize += tableplane.history_size; + var classes; + + const pos = tableplane.position; + const proj = tableplane.position ? ol.proj.fromLonLat(tableplane.position) : null; + //const tableplane.inView = proj ? ol.extent.containsCoordinate(currExtent, proj) : false; + if (tableInView && sidebarVisible) { + if (pos && currExtent[2]-currExtent[0] > 40075016) { + // all longtitudes in view, only check latitude + tableplane.inView = ( + pos[1] > bottomLeft[1] + && pos[1] < topRight[1] + ) + } else if (pos && bottomLeft[0] < topRight[0]) { + // no wraparound: view not crossing 179 to -180 transition line + tableplane.inView = ( + pos[0] > bottomLeft[0] + && pos[0] < topRight[0] + && pos[1] > bottomLeft[1] + && pos[1] < topRight[1] + ) + } else if (pos && bottomLeft[0] > topRight[0]) { + // wraparound: view crossing 179 to -180 transition line + tableplane.inView = ( + (pos[0] > bottomLeft[0] + || pos[0] < topRight[0]) + && pos[1] > bottomLeft[1] + && pos[1] < topRight[1] + ) + } + } else { + tableplane.inView = true; + } + + + if (globeIndex && tableplane.inView) { + tableplane.updateFeatures(now, last); + } + if (!globeIndex) { + tableplane.updateTick(); + } + + + tableplane.showInTable = false; + classes = "plane_table_row"; + if ((!noVanish && (tableplane.seen == null || (tableplane.seen >= 58 && (!tableplane.selected || SelectedAllPlanes))) || tableplane.isFiltered())) { + tableplane.showInTable = false; + } else if ((mapIsVisible || globeIndex) && tableInView && (!tableplane.inView || !tableplane.visible) && !(tableplane.selected && !SelectedAllPlanes)) { + TrackedAircraft++; + tableplane.showInTable = false; + } else if (globeIndex && ((nTablePlanes > 100 && mapIsVisible) || (nTablePlanes > 15000 && !mapIsVisible))) { + TrackedAircraft++; + tableplane.showInTable = false; + if (tableplane.position != null && (noVanish || tableplane.seen_pos < 60)) { + ++TrackedAircraftPositions; + } + } else { + TrackedAircraft++; + + if (tableplane.position != null && (noVanish || tableplane.seen_pos < 60)) { + ++TrackedAircraftPositions; + } + + if (!sidebarVisible) { + tableplane.showInTable = false; + continue; + } + + nTablePlanes++; + tableplane.showInTable = true; + + if (tableplane.dataSource == "adsb") { + classes += " vPosition"; + } else { + classes += " "; + classes += tableplane.dataSource; + } + + if (tableplane.selected && !SelectedAllPlanes) + classes += " selected"; + + if (tableplane.squawk in SpecialSquawks) { + classes = classes + " " + SpecialSquawks[tableplane.squawk].cssClass; + show_squawk_warning = true; + } + + // ICAO doesn't change + if (flightawareLinks) { + updateCell(tableplane, 2, getFlightAwareModeSLink(tableplane.icao, tableplane.flight, tableplane.name), true); + updateCell(tableplane, 3, getFlightAwareIdentLink(tableplane.registration, tableplane.registration), true); + } else { + updateCell(tableplane, 2, tableplane.name); + updateCell(tableplane, 3, tableplane.registration ? tableplane.registration : ""); + } + updateCell(tableplane, 4, (tableplane.icaoType != null ? tableplane.icaoType : "")); + updateCell(tableplane, 5, (tableplane.squawk != null ? tableplane.squawk : "")); + updateCell(tableplane, 6, format_altitude_brief(tableplane.altitude, tableplane.vert_rate, DisplayUnits)); + updateCell(tableplane, 7, format_speed_brief(tableplane.gs, DisplayUnits)); + updateCell(tableplane, 8, format_vert_rate_brief(tableplane.vert_rate, DisplayUnits)); + updateCell(tableplane, 9, format_distance_brief(tableplane.sitedist, DisplayUnits)); + updateCell(tableplane, 10, format_track_brief(tableplane.track)); + updateCell(tableplane, 11, tableplane.messages); + updateCell(tableplane, 12, tableplane.seen.toFixed(0)); + updateCell(tableplane, 13, (tableplane.rssi != null ? tableplane.rssi.toFixed(1) : "")); + updateCell(tableplane, 14, (tableplane.position != null ? tableplane.position[1].toFixed(4) : "")); + updateCell(tableplane, 15, (tableplane.position != null ? tableplane.position[0].toFixed(4) : "")); + updateCell(tableplane, 16, format_data_source(tableplane.getDataSource())); + //updateCell(tableplane, 17, tableplane.baseMarkerKey); + + + } + if (tableplane.classesCache != classes) { + tableplane.classesCache = classes; + tableplane.tr.className = classes; + } + } + //console.timeEnd("updateCells"); + + if (show_squawk_warning_cache != show_squawk_warning && show_squawk_warning ) { + $("#SpecialSquawkWarning").css('display','block'); + show_squawk_warning_cache = show_squawk_warning; + } + if (show_squawk_warning_cache != show_squawk_warning && !show_squawk_warning ) { + $("#SpecialSquawkWarning").css('display','none'); + show_squawk_warning_cache = show_squawk_warning; + } + + $('#dump1090_total_ac').text(TrackedAircraft); + $('#dump1090_total_ac_positions').text(TrackedAircraftPositions); + + + //console.time("DOM"); + //tableinfoFragment = document.createDocumentFragment(); + var tbody = document.getElementById('tableinfo').tBodies[0]; + for (var i = 0; i < PlanesOrdered.length; ++i) { + tableplane = PlanesOrdered[i]; + if (tableplane.showInTable) { + tbody.appendChild(tableplane.tr); + tableplane.inTable = true; + } else if (tableplane.inTable) { + tbody.removeChild(tableplane.tr); + tableplane.inTable = false; + } + } + //tbody.appendChild(tableinfoFragment); + //console.timeEnd("DOM"); + //console.log(tableinfo); +} + +// +// ---- table sorting ---- +// + +function compareAlpha(xa,ya) { + if (xa === ya) + return 0; + if (xa < ya) + return -1; + return 1; +} +function compareBeta(xa,ya) { + if (xa === ya) + return 0; + if (sortAscending && xa < ya) + return -1; + if (!sortAscending && (xa.replace(/ /g, "").split("").reverse().join("") > ya.replace(/ /g, "").split("").reverse().join(""))) + return -1; + return 1; +} + +function compareNumeric(xf,yf) { + if (Math.abs(xf - yf) < 1e-9) + return 0; + + return xf - yf; +} + +function sortByICAO() { sortBy('icao', compareAlpha, function(x) { return x.icao; }); } +function sortByFlight() { sortBy('flight', compareBeta, function(x) { return x.flight ? x.flight : x.registration; }); } +function sortByRegistration() { sortBy('registration', compareAlpha, function(x) { return x.registration; }); } +function sortByAircraftType() { sortBy('icaoType', compareAlpha, function(x) { return x.icaoType; }); } +function sortBySquawk() { sortBy('squawk', compareAlpha, function(x) { return x.squawk; }); } +function sortByAltitude() { sortBy('altitude',compareNumeric, function(x) { return (x.altitude == "ground" ? -1e9 : x.altitude); }); } +function sortBySpeed() { sortBy('speed', compareNumeric, function(x) { return x.gs; }); } +function sortByVerticalRate() { sortBy('vert_rate', compareNumeric, function(x) { return x.vert_rate; }); } +function sortByDistance() { sortBy('sitedist',compareNumeric, function(x) { return x.sitedist; }); } +function sortByTrack() { sortBy('track', compareNumeric, function(x) { return x.track; }); } +function sortByMsgs() { sortBy('msgs', compareNumeric, function(x) { return x.messages; }); } +function sortBySeen() { sortBy('seen', compareNumeric, function(x) { return x.seen; }); } +function sortByCountry() { sortBy('country', compareAlpha, function(x) { return x.icaorange.country; }); } +function sortByRssi() { sortBy('rssi', compareNumeric, function(x) { return x.rssi; }); } +function sortByLatitude() { sortBy('lat', compareNumeric, function(x) { return (x.position !== null ? x.position[1] : null); }); } +function sortByLongitude() { sortBy('lon', compareNumeric, function(x) { return (x.position !== null ? x.position[0] : null); }); } +function sortByDataSource() { sortBy('data_source', compareNumeric, function(x) { return x.getDataSourceNumber() } ); } +function sortByBaseMarkerKey() { sortBy('base_marker_key', compareAlpha, function(x) { return x.baseMarkerKey; }); } + +var sortId = ''; +var sortCompare = null; +var sortExtract = null; +var sortAscending = true; + +function sortFunction(x,y) { + var xv = x._sort_value; + var yv = y._sort_value; + + // always sort missing values at the end, regardless of + // ascending/descending sort + if (xv == null && yv == null) return x._sort_pos - y._sort_pos; + if (xv == null) return 1; + if (yv == null) return -1; + + var c = sortAscending ? sortCompare(xv,yv) : sortCompare(yv,xv); + if (c !== 0) return c; + + return x._sort_pos - y._sort_pos; +} + +function resortTable(pList) { + // presort by dataSource + if (sortId == "sitedist") { + for (var i = 0; i < pList.length; ++i) { + pList[i]._sort_pos = i; + } + pList.sort(function(x,y) { + const a = x.getDataSourceNumber(); + const b = y.getDataSourceNumber(); + if (a == b) + return (x._sort_pos - y._sort_pos); + + return (a-b); + }); + } + // or distance + else if (sortId == "data_source") { + pList.sort(function(x,y) { + return (x.sitedist - y.sitedist); + }); + } + // or longitude + else { + pList.sort(function(x,y) { + const xlon = x.position ? x.position[0] : 500; + const ylon = y.position ? y.position[0] : 500; + return (xlon - ylon); + }); + } + // number the existing rows so we can do a stable sort + // regardless of whether sort() is stable or not. + // Also extract the sort comparison value. + for (var i = 0; i < pList.length; ++i) { + pList[i]._sort_pos = i; + pList[i]._sort_value = sortExtract(pList[i]); + } + + pList.sort(sortFunction); + // Put selected planes on top, do a stable sort! + // actually that's a bad idea, disable this for now + if (!SelectedAllPlanes && multiSelect) { + for (var i = 0; i < pList.length; ++i) { + pList[i]._sort_pos = i; + } + pList.sort(function(x,y) { + if (x.selected && y.selected) { + return (x._sort_pos - y._sort_pos); + } + if (x.selected) + return -1; + if (y.selected) + return 1; + + return (x._sort_pos - y._sort_pos); + }); + } + +} + +function sortBy(id,sc,se) { + if (id != 'data_source' && grouptype_checkbox) { + $('#grouptype_checkbox').removeClass('settingsCheckboxChecked'); + grouptype_checkbox = false; + } else if (id == 'data_source' && !grouptype_checkbox) { + $('#grouptype_checkbox').addClass('settingsCheckboxChecked'); + grouptype_checkbox = true; + } + if (id === sortId) { + sortAscending = !sortAscending; + PlanesOrdered.reverse(); // this correctly flips the order of rows that compare equal + } else { + sortAscending = true; + } + + sortId = id; + sortCompare = sc; + sortExtract = se; + + refreshTableInfo(); + //resortTable(PlanesTableList); +} + +function selectPlaneByHex(hex,autofollow) { + //console.log("select: " + hex); + // If SelectedPlane has something in it, clear out the selected + if (SelectedAllPlanes) { + deselectAllPlanes(); + } + // already selected plane + var oldPlane = SelectedPlane; + // plane to be selected + var newPlane = Planes[hex]; + + + if (globeIndex) { + if (newPlane) { + var req = $.ajax({ url: 'data/icao_' + newPlane.icao + '.json', + timeout: 5000, + dataType: 'json' }); + req.done(function(data) { + Planes[data.icao].processTrace(data); + refreshSelected(); + }); + + } else { + var req = $.ajax({ url: 'data/icao_' + hex + '.json', + timeout: 5000, + dataType: 'json' }); + req.done(function(data) { + var ac = {}; + ac.hex = data.icao; + console.log(icao); + processAircraft(ac); + Planes[data.icao].processTrace(data, "show"); + console.log(Planes[data.icao]); + selectPlaneByHex(data.icao, true) + refreshSelected(); + }); + + } + } + + if (!multiSelect && oldPlane) { + oldPlane.selected = false; + oldPlane.clearLines(); + oldPlane.updateMarker(); + $(oldPlane.tr).removeClass("selected"); + // scroll the infoblock back to the top for the next plane to be selected + //$('.infoblock-container').scrollTop(0); + } + // multiSelect deselect + if (multiSelect && newPlane && newPlane.selected && !autofollow && !onlySelected) { + newPlane.selected = false; + newPlane.clearLines(); + newPlane.updateMarker(); + $(newPlane.tr).removeClass("selected"); + newPlane = null; + } + + // If we are clicking the same plane, we are deselecting it. + // (unless it was a doubleclick..) + if (oldPlane == newPlane && !autofollow) { + newPlane = null; + } + + if (newPlane) { + // Assign the new selected + SelectedPlane = newPlane; + newPlane.selected = true; + newPlane.updateTick(true); + $(newPlane.tr).addClass("selected"); + newPlane.logSel(newPlane.history_size); + //console.log(newPlane.baseMarkerKey); + } else { + SelectedPlane = null; + } + + if (newPlane && autofollow) { + FollowSelected = true; + if (OLMap.getView().getZoom() < 8) + OLMap.getView().setZoom(8); + } else { + FollowSelected = false; + } + + + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); +} + +function highlightPlaneByHex(hex) { + + if (hex != null) { + HighlightedPlane = hex; + } +} + +// loop through the planes and mark them as selected to show the paths for all planes +function selectAllPlanes() { + HighlightedPlane = null; + // if all planes are already selected, deselect them all + if (SelectedAllPlanes) { + deselectAllPlanes(); + return; + } + buttonActive('#T', true); + // If SelectedPlane has something in it, clear out the selected + if (SelectedPlane != null) { + SelectedPlane.selected = false; + SelectedPlane.clearLines(); + SelectedPlane.updateMarker(); + $(SelectedPlane.tr).removeClass("selected"); + } + + SelectedPlane = null; + SelectedAllPlanes = true; + + refreshFeatures(); + + $('#selectall_checkbox').addClass('settingsCheckboxChecked'); + + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); +} + + +// deselect all the planes +function deselectAllPlanes() { + buttonActive('#T', false); + for(var key in Planes) { + Planes[key].selected = false; + $(Planes[key].tr).removeClass("selected"); + } + $('#selectall_checkbox').removeClass('settingsCheckboxChecked'); + SelectedAllPlanes = false; + SelectedPlane = null; + refreshFeatures(); + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); +} + +function toggleFollowSelected() { + FollowSelected = !FollowSelected; + if (FollowSelected && OLMap.getView().getZoom() < 8) + OLMap.getView().setZoom(8); + refreshSelected(); +} + +function resetMap() { + // Reset localStorage values and map settings + localStorage['CenterLat'] = CenterLat = DefaultCenterLat; + localStorage['CenterLon'] = CenterLon = DefaultCenterLon; + localStorage['ZoomLvl'] = ZoomLvl = DefaultZoomLvl; + + // Set and refresh + OLMap.getView().setZoom(ZoomLvl); + OLMap.getView().setCenter(ol.proj.fromLonLat([CenterLon, CenterLat])); + OLMap.getView().setRotation(mapOrientation); + + //selectPlaneByHex(null,false); + $("#update_error").css('display','none'); +} + +function updateMapSize() { + OLMap.updateSize(); +} + +function toggleSidebarVisibility(e) { + if (e) + e.preventDefault(); + $("#sidebar_container").toggle(); + $("#expand_sidebar_control").toggle(); + $("#toggle_sidebar_button").toggleClass("show_sidebar"); + $("#toggle_sidebar_button").toggleClass("hide_sidebar"); + localStorage['sidebar_visible'] = sidebarVisible = $("#sidebar_container").is(":visible"); + updateMapSize(); +} + +function expandSidebar(e) { + e.preventDefault(); + $("#map_container").hide() + mapIsVisible = false; + $("#toggle_sidebar_control").hide(); + $("#splitter").hide(); + $("#sudo_buttons").hide(); + $("#show_map_button").show(); + $("#sidebar_container").width("100%"); + setColumnVisibility(); + clearTimeout(refreshId); + fetchData(); + refreshTableInfo(); + updateMapSize(); + setSelectedInfoBlockVisibility(); +} + +function showMap() { + $('#sidebar_container').width(localStorage['sidebar_width']).css('margin-left', '0'); + $("#map_container").show() + mapIsVisible = true; + $("#toggle_sidebar_control").show(); + $("#splitter").show(); + $("#sudo_buttons").show(); + $("#show_map_button").hide(); + setColumnVisibility(); + clearTimeout(refreshId); + fetchData(); + refreshTableInfo(); + updateMapSize(); +} + +function showColumn(table, columnId, visible) { + var index = $(columnId).index(); + columnVis[index] = visible; + if (index >= 0) { + var cells = $(table).find("td:nth-child(" + (index + 1).toString() + ")"); + if (visible) { + cells.show(); + } else { + cells.hide(); + } + } +} + +function setColumnVisibility() { + var infoTable = $("#tableinfo"); + + var tbody = document.getElementById('tableinfo').tBodies[0]; + for (var i = 0; i < PlanesOrdered.length; ++i) { + var tableplane = PlanesOrdered[i]; + tbody.appendChild(tableplane.tr); + tableplane.inTable = true; + } + + for (var col in HideCols) { + showColumn(infoTable, HideCols[col], !mapIsVisible); + } +} + +function setSelectedInfoBlockVisibility() { + + if (SelectedPlane) { + $('#selected_infoblock').show(); + if (!mapIsVisible) + $("#sidebar_container").css('margin-left', '140pt'); + //$('#sidebar_canvas').css('margin-bottom', $('#selected_infoblock').height() + 'px'); + } + else { + $('#selected_infoblock').hide(); + if (!mapIsVisible) + $("#sidebar_container").css('margin-left', '0'); + //$('#sidebar_canvas').css('margin-bottom', 0); + } +} + +// Reposition selected plane info box if it overlaps plane marker +function adjustSelectedInfoBlockPosition() { + if (true) + return; // this function is probably obsolete + if (!SelectedPlane || !SelectedPlane.marker) { + return; + } + // Get marker position + var marker = SelectedPlane.marker; + var markerCoordinates = SelectedPlane.marker.getGeometry().getCoordinates(); + var markerPosition = OLMap.getPixelFromCoordinate(markerCoordinates); + + // Get map size + var mapCanvas = $('#map_canvas'); + var mapExtent = getExtent(0, 0, mapCanvas.width(), mapCanvas.height()); + + // Check for overlap + if (isPointInsideExtent(markerPosition[0], markerPosition[1], infoBoxExtent)) { + // Array of possible new positions for info box + var candidatePositions = []; + candidatePositions.push( { x: 40, y: 60 } ); + candidatePositions.push( { x: 40, y: markerPosition[1] + 80 } ); + + // Find new position + for (var i = 0; i < candidatePositions.length; i++) { + var candidatePosition = candidatePositions[i]; + var candidateExtent = getExtent(candidatePosition.x, candidatePosition.y, infoBox.outerWidth(), infoBox.outerHeight()); + + if (!isPointInsideExtent(markerPosition[0], markerPosition[1], candidateExtent) && isPointInsideExtent(candidatePosition.x, candidatePosition.y, mapExtent)) { + // Found a new position that doesn't overlap marker - move box to that position + infoBox.css("left", candidatePosition.x); + infoBox.css("top", candidatePosition.y); + return; + } + } + } +} + +function getExtent(x, y, width, height) { + return { + xMin: x, + yMin: y, + xMax: x + width - 1, + yMax: y + height - 1, + }; +} + +function isPointInsideExtent(x, y, extent) { + return x >= extent.xMin && x <= extent.xMax && y >= extent.yMin && y <= extent.yMax; +} + +function initializeUnitsSelector() { + // Get display unit preferences from local storage + if (!localStorage.getItem('displayUnits')) { + localStorage['displayUnits'] = "nautical"; + } + var displayUnits = localStorage['displayUnits']; + DisplayUnits = displayUnits; + + setAltitudeLegend(displayUnits); + + // Initialize drop-down + var unitsSelector = $("#units_selector"); + unitsSelector.val(displayUnits); + unitsSelector.on("change", onDisplayUnitsChanged); + + $(".altitudeUnit").text(get_unit_label("altitude", DisplayUnits)); + $(".speedUnit").text(get_unit_label("speed", DisplayUnits)); + $(".distanceUnit").text(get_unit_label("distance", DisplayUnits)); + $(".verticalRateUnit").text(get_unit_label("verticalRate", DisplayUnits)); +} + +function onDisplayUnitsChanged(e) { + var displayUnits = e.target.value; + // Save display units to local storage + localStorage['displayUnits'] = displayUnits; + DisplayUnits = displayUnits; + + setAltitudeLegend(displayUnits); + + // Update filters + updatePlaneFilter(); + + // Refresh data + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); + + // Redraw range rings + if (SitePosition !== null && SitePosition !== undefined && SiteCircles) { + createSiteCircleFeatures(); + } + + // Reset map scale line units + OLMap.getControls().forEach(function(control) { + if (control instanceof ol.control.ScaleLine) { + control.setUnits(displayUnits); + } + }); + + $(".altitudeUnit").text(get_unit_label("altitude", DisplayUnits)); + $(".speedUnit").text(get_unit_label("speed", DisplayUnits)); + $(".distanceUnit").text(get_unit_label("distance", DisplayUnits)); + $(".verticalRateUnit").text(get_unit_label("verticalRate", DisplayUnits)); +} + +function setAltitudeLegend(units) { + if (units === 'metric') { + $('#altitude_chart_button').addClass('altitudeMeters'); + } else { + $('#altitude_chart_button').removeClass('altitudeMeters'); + } +} + +function onFilterByAltitude(e) { + e.preventDefault(); + $("#altitude_filter_min").blur(); + $("#altitude_filter_max").blur(); + + updatePlaneFilter(); + + if (SelectedPlane && SelectedPlane.isFiltered()) { + SelectedPlane.selected = false; + SelectedPlane.clearLines(); + SelectedPlane = null; + } + refreshSelected(); + refreshHighlighted(); + refreshTableInfo(); +} + +function filterGroundVehicles(switchFilter) { + if (typeof localStorage['groundVehicleFilter'] === 'undefined') { + localStorage['groundVehicleFilter'] = 'not_filtered'; + } + var groundFilter = localStorage['groundVehicleFilter']; + if (switchFilter === true) { + groundFilter = (groundFilter === 'not_filtered') ? 'filtered' : 'not_filtered'; + } + if (groundFilter === 'not_filtered') { + $('#groundvehicle_filter').addClass('settingsCheckboxChecked'); + } else { + $('#groundvehicle_filter').removeClass('settingsCheckboxChecked'); + } + localStorage['groundVehicleFilter'] = groundFilter; + PlaneFilter.groundVehicles = groundFilter; +} + +function filterBlockedMLAT(switchFilter) { + if (typeof localStorage['blockedMLATFilter'] === 'undefined') { + localStorage['blockedMLATFilter'] = 'not_filtered'; + } + var blockedMLATFilter = localStorage['blockedMLATFilter']; + if (switchFilter === true) { + blockedMLATFilter = (blockedMLATFilter === 'not_filtered') ? 'filtered' : 'not_filtered'; + } + if (blockedMLATFilter === 'not_filtered') { + $('#blockedmlat_filter').addClass('settingsCheckboxChecked'); + } else { + $('#blockedmlat_filter').removeClass('settingsCheckboxChecked'); + } + localStorage['blockedMLATFilter'] = blockedMLATFilter; + PlaneFilter.blockedMLAT = blockedMLATFilter; +} + +function buttonActive(id, state) { + if (state) { + $(id).addClass('activeButton'); + $(id).removeClass('inActiveButton'); + } else { + $(id).addClass('inActiveButton'); + $(id).removeClass('activeButton'); + } +} + +function toggleIsolation() { + onlySelected = !onlySelected; + + buttonActive('#I', onlySelected); + + refreshFeatures(); +} + +function toggleMilitary() { + onlyMilitary = !onlyMilitary; + buttonActive('#U', onlyMilitary); +} + +function togglePersistence() { + noVanish = !noVanish; + filterTracks = noVanish; + + buttonActive('#P', noVanish); + + for (var i in PlanesOrdered) { + PlanesOrdered[i].remakeTrail(); + } + if (!noVanish) + reaper(); + localStorage['noVanish'] = noVanish; + console.log('noVanish = ' + noVanish); +} + +function toggleDebugAll() { + if (localStorage['debugAll'] === "true") { + debugAll = false; + localStorage['debugAll'] = "false"; + $('#debugAll_checkbox').removeClass('settingsCheckboxChecked'); + } else { + debugAll = true; + localStorage['debugAll'] = "true"; + $('#debugAll_checkbox').addClass('settingsCheckboxChecked'); + } +} + +function toggleDebugTracks() { + if (localStorage['debugTracks'] === "true") { + debugTracks = false; + localStorage['debugTracks'] = "false"; + $('#debug_checkbox').removeClass('settingsCheckboxChecked'); + } else { + debugTracks = true; + localStorage['debugTracks'] = "true"; + $('#debug_checkbox').addClass('settingsCheckboxChecked'); + } + for (var i in PlanesOrdered) { + PlanesOrdered[i].remakeTrail(); + } +} + +function dim(evt) { + const dim = 0.3; + const contrast = 0.1; + evt.context.globalCompositeOperation = 'multiply'; + if (evt.context.globalCompositeOperation == 'multiply') { + evt.context.fillStyle = 'rgba(0,0,0,'+dim+')'; + evt.context.fillRect(0, 0, evt.context.canvas.width, evt.context.canvas.height); + } + evt.context.globalCompositeOperation = 'overlay'; + if (evt.context.globalCompositeOperation == 'overlay') { + evt.context.fillStyle = 'rgba(0,0,0,'+contrast+')'; + evt.context.fillRect(0, 0, evt.context.canvas.width, evt.context.canvas.height); + } + evt.context.globalCompositeOperation = 'source-over'; +} + +function toggleMapDim(switchOn) { + if (!switchOn && localStorage['MapDim'] === "true") { + localStorage['MapDim'] = "false"; + MapDim = false; + + ol.control.LayerSwitcher.forEachRecursive(layers_group, function(lyr) { + if (lyr.get('type') != 'base') + return; + ol.Observable.unByKey(lyr.dimKey); + }); + + $('#mapdim_checkbox').removeClass('settingsCheckboxChecked'); + + /* + $('html').css('background-color', '#F8F8F8'); + $('body').css('background-color', '#F8F8F8'); + $('#selected_infoblock').css('background-color', '#F8F8F8'); + $('#highlighted_infoblock').css('background-color', '#F8F8F8'); + $('.altitudeFilterInput').css('background-color', '#F8F8F8'); + */ + } else { + localStorage['MapDim'] = "true"; + MapDim = true; + + ol.control.LayerSwitcher.forEachRecursive(layers_group, function(lyr) { + if (lyr.get('type') != 'base') + return; + lyr.dimKey = lyr.on('postcompose', dim); + }); + + $('#mapdim_checkbox').addClass('settingsCheckboxChecked'); + + } + OLMap.render(); + buttonActive('#B', localStorage['MapDim'] == "true"); +} + +function toggleAltitudeChart(switchToggle) { + if (typeof localStorage['altitudeChart'] === 'undefined') { + localStorage['altitudeChart'] = 'show'; + } + var altitudeChartDisplay = localStorage['altitudeChart']; + if (switchToggle === true) { + altitudeChartDisplay = (altitudeChartDisplay === 'show') ? 'hidden' : 'show'; + } + // if you're using custom colors always hide the chart + if (customAltitudeColors === true) { + altitudeChartDisplay = 'hidden'; + // also hide the control option + $('#altitude_chart_container').hide(); + } + if (altitudeChartDisplay === 'show') { + $('#altitude_checkbox').addClass('settingsCheckboxChecked'); + $('#altitude_chart').show(); + } else { + $('#altitude_checkbox').removeClass('settingsCheckboxChecked'); + $('#altitude_chart').hide(); + } + localStorage['altitudeChart'] = altitudeChartDisplay; +} + +function followRandomPlane() { + var this_one = null; + var tired = 0; + do { + this_one = PlanesOrdered[Math.floor(Math.random()*PlanesOrdered.length)]; + if (tired++ > 1000) + break; + } while (this_one.isFiltered() || !this_one.position || (now - this_one.position_time > 30)); + //console.log(this_one.icao); + selectPlaneByHex(this_one.icao, true); +} + +function toggleTableInView(switchOn) { + if (switchOn || globeIndex) { + tableInView = true; + } else { + tableInView = !tableInView; + refreshTableInfo(); + } + localStorage['tableInView'] = tableInView; + if (tableInView) { + $('#with_positions').text("On Screen:"); + } else { + $('#with_positions').text("With Position:"); + } + buttonActive('#V', tableInView); +} + +function toggleLabels(switchOn) { + enableLabels = !enableLabels; + localStorage['enableLabels'] = enableLabels; + for (var key in PlanesOrdered) { + PlanesOrdered[key].updateMarker(false); + } + buttonActive('#L', enableLabels); +} +function toggleExtendedLabels() { + extendedLabels = !extendedLabels; + localStorage['extendedLabels'] = extendedLabels; + for (var key in PlanesOrdered) { + PlanesOrdered[key].updateMarker(false); + } + buttonActive('#O', extendedLabels); +} + +function toggleTrackLabels() { + trackLabels = !trackLabels; + localStorage['trackLabels'] = trackLabels; + for (var i in PlanesOrdered) { + PlanesOrdered[i].remakeTrail(); + } + buttonActive('#K', trackLabels); +} + +function toggleMultiSelect() { + if (multiSelect) { + multiSelect = false; + var plane = SelectedPlane; + deselectAllPlanes(); + selectPlaneByHex(plane.icao); + } else { + multiSelect = true; + } + buttonActive('#M', multiSelect); +} + +function onSearch(e) { + e.preventDefault(); + const searchTerm = $("#search_input").val().trim(); + $("#search_input").val(""); + $("#search_input").blur(); + findPlanes(searchTerm, true, true, true); + return false; +} + +function onResetAltitudeFilter(e) { + $("#altitude_filter_min").val(""); + $("#altitude_filter_max").val(""); + $("#altitude_filter_min").blur(); + $("#altitude_filter_max").blur(); + + updatePlaneFilter(); + refreshTableInfo(); +} + +function updatePlaneFilter() { + var minAltitude = parseFloat($("#altitude_filter_min").val().trim()); + var maxAltitude = parseFloat($("#altitude_filter_max").val().trim()); + var enabled = false; + + if (minAltitude < -1e6 || minAltitude > 1e6 || isNaN(minAltitude)) + minAltitude = -1e6; + else + enabled = true; + if (maxAltitude < -1e6 || maxAltitude > 1e6 || isNaN(maxAltitude)) + maxAltitude = 1e6; + else + enabled = true; + + PlaneFilter.enabled = enabled; + + if (DisplayUnits == "metric") { + PlaneFilter.minAltitude = minAltitude * 3.2808; + PlaneFilter.maxAltitude = maxAltitude * 3.2808; + } else { + PlaneFilter.minAltitude = minAltitude; + PlaneFilter.maxAltitude = maxAltitude; + } + + if (filterTracks) { + for (var i in PlanesOrdered) { + PlanesOrdered[i].remakeTrail(); + } + } + + refreshFeatures(); +} + +function getFlightAwareIdentLink(ident, linkText) { + if (ident !== null && ident !== "") { + if (!linkText) { + linkText = ident; + } + return "" + linkText + ""; + } + + return ""; +} + +function getFlightAwareModeSLink(code, ident, linkText) { + if (code !== null && code.length > 0 && code[0] !== '~' && code !== "000000") { + if (!linkText) { + linkText = "FlightAware: " + code.toUpperCase(); + } + + var linkHtml = "" + linkText + ""; + return linkHtml; + } + + return ""; +} + +function getFlightAwarePhotoLink(registration) { + if (registration !== null && registration !== "") { + return "See Photos"; + } + + return ""; +} + +// takes in an elemnt jQuery path and the OL3 layer name and toggles the visibility based on clicking it +function toggleLayer(element, layer) { + // set initial checked status + ol.control.LayerSwitcher.forEachRecursive(layers_group, function(lyr) { + if (lyr.get('name') === layer && lyr.getVisible()) { + $(element).addClass('settingsCheckboxChecked'); + } + }); + $(element).on('click', function() { + var visible = false; + if ($(element).hasClass('settingsCheckboxChecked')) { + visible = true; + } + ol.control.LayerSwitcher.forEachRecursive(layers_group, function(lyr) { + if (lyr.get('name') === layer) { + if (visible) { + lyr.setVisible(false); + $(element).removeClass('settingsCheckboxChecked'); + } else { + lyr.setVisible(true); + $(element).addClass('settingsCheckboxChecked'); + } + } + }); + }); +} + +// check status.json if it has a serial number for a flightfeeder +function flightFeederCheck() { + $.ajax('/status.json', { + success: function(data) { + if (data.type === "flightfeeder") { + isFlightFeeder = true; + updatePiAwareOrFlightFeeder(); + } + } + }) +} + +// updates the page to replace piaware with flightfeeder references +function updatePiAwareOrFlightFeeder() { + if (isFlightFeeder) { + $('.piAwareLogo').hide(); + $('.flightfeederLogo').show(); + PageName = 'FlightFeeder SkyAware'; + } else { + $('.flightfeederLogo').hide(); + $('.piAwareLogo').show(); + PageName = 'PiAware SkyAware'; + } + refreshPageTitle(); +} + +function fetchPfData() { + if (fetchingPf) + return; + fetchingPf = true; + for (const i in pf_data) { + const req = $.ajax({ url: pf_data[i], + timeout: 20000, + dataType: 'json' }); + $.when(req).done(function(data) { + for (const i in PlanesOrdered) { + const plane = PlanesOrdered[i]; + const ac = data.aircraft[plane.icao.toUpperCase()]; + if (!ac) { + continue; + } + plane.pfRoute = ac.route; + plane.pfMach = ac.mach; + plane.pfFlightno = ac.flightno; + if (ac.reg && ac.reg != "????" && ac.reg != "z.NO-REG") + plane.registration = ac.reg; + if (ac.type && ac.type != "????" && ac.type != "ZVEH") + plane.icaoType = ac.type; + if (plane.icaoType != plane.icaoTypeCache) { + var typeData = _aircraft_type_cache[plane.icaoType]; + if (typeData) { + plane.typeDescription = typeData.desc; + plane.wtc = typeData.wtc; + } + //console.log(plane.icao +" "+ plane.flight + " was " + plane.icaoTypeCache + " and is now " + plane.icaoType + " " + plane.typeDescription + "-" + plane.wtc); + //console.log(plane.flight); + plane.icaoTypeCache = plane.icaoType; + } + + } + fetchingPf = false; + }); + } +} + + +function bearingFromLonLat(position1, position2) { + // Positions in format [lon in deg, lat in deg] + const lon1 = position1[0]*Math.PI/180; + const lat1 = position1[1]*Math.PI/180; + const lon2 = position2[0]*Math.PI/180; + const lat2 = position2[1]*Math.PI/180; + + const y = Math.sin(lon2-lon1)*Math.cos(lat2); + const x = Math.cos(lat1)*Math.sin(lat2) + - Math.sin(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1); + return (Math.atan2(y, x)* 180 / Math.PI + 360) % 360; +} +function zoomIn() { + OLMap.getView().setZoom((ZoomLvl+1).toFixed()); + changeZoom(); +} + +function zoomOut() { + OLMap.getView().setZoom((ZoomLvl-1).toFixed()); + changeZoom(); +} +function changeZoom() { + localStorage['ZoomLvl'] = ZoomLvl; + scaleFactor = Math.max(markerMinSize, Math.min(markerMaxSize, markerScaleFactor * 0.09 * Math.pow(1.35, ZoomLvl))); + for (var i in PlanesOrdered) { + var plane = PlanesOrdered[i]; + if (plane.markerIcon) { + plane.scaleCache = scaleFactor * plane.baseScale; + plane.markerIcon.setScale(plane.scaleCache); + } + } + if (ZoomLvl > 6.5 && enableMouseover) { + OLMap.on('pointermove', onPointermove); + } else { + OLMap.un('pointermove', onPointermove); + removeHighlight(); + } +} + +function updateCell(plane, cell, newValue, html) { + if (columnVis[cell] && newValue != plane.trCache[cell]) { + plane.trCache[cell] = newValue; + if (html) { + plane.tr.cells[cell].innerHTML = newValue; + } else { + plane.tr.cells[cell].textContent = newValue; + } + } +} +function onPointermove(evt) { + const hex = evt.map.forEachFeatureAtPixel(evt.pixel, + function(feature, layer) { + return feature.hex; + }, + { layerFilter: function(layer) { + return (layer == iconLayer); + }} + ); + + if (hex) { + highlightPlaneByHex(hex); + } else { + removeHighlight(); + } + +} + +function processURLParams(){ + try { + const search = new URLSearchParams(window.location.search); + + const icao = search.get('icao'); + if (icao != null) { + if (Planes[icao.toLowerCase()] || globeIndex) { + console.log('Selected ICAO id: '+ icao); + selectPlaneByHex(icao.toLowerCase(), true) + } else { + console.log('ICAO id not found: ' + icao); + } + } + + var callsign = search.get('callsign'); + findPlanes(callsign, false, true, false); + } catch (error) { + } +} + +function findPlanes(query, byIcao, byCallsign, byReg) { + if (query == null) + return; + query = query.toLowerCase(); + var results = []; + for (var i in PlanesOrdered) { + const plane = PlanesOrdered[i]; + if ( + (byCallsign && plane.flight != null && plane.flight.toLowerCase().match(query)) + || (byIcao && plane.icao.toLowerCase().match(query)) + || (byReg && plane.registration != null && plane.registration.toLowerCase().match(query)) + ) { + if (plane.seen < 70 || noVanish) + results.push(plane); + } + } + if (results.length > 1) { + multiSelect = true; + for (var i in results) { + results[i].selected = true; + results[i].updateTick(true); + } + } else if (results.length == 1) { + selectPlaneByHex(results[0].icao, true); + console.log("query selected: " + query); + } else { + console.log("No match found for query: " + query); + } +} + +function trailReaper() { + for (var i in PlanesOrdered) { + PlanesOrdered[i].reapTrail(); + } +} + +function globeIndexes() { + var proj = OLMap.getView().getProjection(); + if (mapIsVisible || lastExtent == null) { + lastExtent = OLMap.getView().calculateExtent(OLMap.getSize()); + } + var extent = lastExtent; + const bottomLeft = ol.proj.toLonLat([extent[0], extent[1]]); + const topRight = ol.proj.toLonLat([extent[2], extent[3]]); + var x1 = bottomLeft[0]; + var y1 = bottomLeft[1]; + var x2 = topRight[0]; + var y2 = topRight[1]; + if (Math.abs(extent[2] - extent[0]) > 40075016) { + // all longtitudes in view, only check latitude + x1 = -180; + x2 = 180; + } + if (y1 < -90) + y1 = -90; + if (y2 > 90) + y2 = 90; + var indexes = []; + //console.log(x1 + ' ' + x2); + var grid = globeIndexGrid; + + var x3 = (x1 < x2) ? x2 : 300; + var count = 0; + + for (var lon = x1; lon < x3 + grid; lon += grid) { + if (x1 >= x2 && lon > 180) { + lon -= 360; + x3 = x2; + } + if (lon > x3) + lon = x3 + 0.01; + for (var lat = y1; lat < y2 + grid; lat += grid) { + if (lat > y2) + lat = y2 + 0.01; + if (count++ > 2000) { + console.log("globeIndexes fail, lon: " + lon + ", lat: " + lat); + break; + } + var index = globe_index(lat, lon); + //console.log(lat + ' ' + lon + ' ' + index); + if (!indexes.includes(index)) { + indexes.push(index); + } + } + } + return indexes; +} +function globe_index(lat, lon) { + var grid = globeIndexGrid; + + lat = grid * Math.floor((lat + 90) / grid) - 90; + lon = grid * Math.floor((lon + 180) / grid) - 180; + + for (var i = 0; i < globeIndexSpecialTiles.length; i++) { + var tile = globeIndexSpecialTiles[i]; + if (lat >= tile.south && lat < tile.north) { + if (tile.west < tile.east && lon >= tile.west && lon < tile.east) { + return i; + } + if (tile.west > tile.east && (lon >= tile.west || lon < tile.east)) { + return i; + } + } + } + + var i = Math.floor((lat+90) / grid); + var j = Math.floor((lon+180) / grid); + + var lat_multiplier = Math.floor(360 / grid + 1); + return (i * lat_multiplier + j + 1000); +} diff --git a/html/spinny.gif b/html/spinny.gif new file mode 100644 index 0000000000000000000000000000000000000000..7da19c00c0c3308f81247eac37af11b8963bfb69 GIT binary patch literal 80649 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 literal 0 HcmV?d00001 diff --git a/html/style.css b/html/style.css new file mode 100644 index 0000000..9232665 --- /dev/null +++ b/html/style.css @@ -0,0 +1,754 @@ +html, body { + -ms-overflow-style: -ms-autohiding-scrollbar; + margin: 0px; padding: 0px; background-color: #F8F8F8; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 10pt; overflow: hidden; height: 100%; + +} +element { + --fontsize-small: 9pt; +} + +#tableinfo { font-size: 10pt; } + +#layout_container { + display: flex; + height: 100%; +} + +#selected_infoblock { + position: absolute; + left: 0pt; + top: 0px; + width: 140pt; + height: 100%; + overflow: auto; + z-index: 9999; + background-color: #F8F8F8; +} +.infoblock-container { + overflow: auto; + height: 100%; +} +#sidebar_canvas { + padding: 5px; + overflow: auto; +} +#sidebar_container { + display: flex; + flex-direction: column; + width: flex; + left: 0px !important; + height: 100%; +} + + +#map_container { + flex: 1 1 auto; + position: relative; + height: 100%; +} + +#map_canvas { + position: absolute; + width: 100%; + height: 100%; +} + +#toggle_sidebar_control { + display: block; + position: absolute; + top: 3px; + right: 0px; +} + +#toggle_sidebar_button { + cursor: pointer; + float: right; + width: 30px; + height: 36px; + background-size: 24px 25px; + background-repeat: no-repeat; + background-position: 0px; + background-color: transparent; + border: none; +} + +#toggle_sidebar_button.show_sidebar { + background-image: url("images/show_sidebar_active_48x40.png"); +} + +#toggle_sidebar_button.hide_sidebar { + background-image: url("images/hide_sidebar_active_48x40.png"); +} + +#expand_sidebar_control { + display: block; + position: absolute; + top: 55px; + right: 0px; +} + +#expand_sidebar_button { + cursor: pointer; + float: right; + width: 30px; + height: 36px; + background-size: 24px 25px; + background-repeat: no-repeat; + background-position: 0px; + background-color: transparent; + border: none; + background-image: url("images/show_sidebar_active_48x40.png"); +} + + +#splitter { + cursor: ew-resize; + display: block; + position: absolute; + top: 108px; + left: -30px; + float: right; + width: 30px; + height: 30px; + background-size: 30px 30px; + background-repeat: no-repeat; + background-position: 0px; + background-color: transparent; + border: none; + background-image: url("images/toggle-width@2x.png"); + background-size: cover; +} + +#splitter-infoblock { + cursor: ns-resize; + display: inline-block; + position: absolute ; + top: 0px; + right: 0; + margin-left: auto; + width: 24px; + height: 4px; + background-size: 24px 25px; + background-repeat: no-repeat; + background-position: 0px; + border: none; + width: 100%; + border-bottom: #234c75; + background-color: #65819e; + border-bottom-width: 1px; + border-bottom-style: solid; +} +#close-button { + display: inline-block; + position: absolute; + top: 18px; + color: #67b6c3; + right: 30px; + margin-left: auto; + font-size: 75%; + text-decoration: underline; + cursor: pointer; + padding: 3px; + border-radius: 2px; +} + +.ol-zoom-in { + background-image: url("images/zoom-in.png"); + background-size: cover; + color:transparent !important; + width: 19px !important; + height: 19px !important; + background-color: transparent !important; + margin-bottom: 5px !important; +} + +.ol-zoom-out { + background-image: url("images/zoom-out.png"); + background-size: cover; + color:transparent !important; + width: 19px !important; + height: 19px !important; + background-color: transparent !important; +} + +.ol-zoom { + background-color: transparent !important; + left: 10px !important; +} + + + +div#SpecialSquawkWarning { position: absolute; bottom: 25px; right: 430px; border: 2px solid red; + background-color: #FFFFA3; opacity: 0.75; filter:alpha(opacity=75); padding: 5px; + text-align: center; } + +div#update_error { position: absolute; bottom: 25px; left: 25px; border: 2px solid red; + background-color: #FFFFA3; opacity: 0.75; filter:alpha(opacity=75); padding: 5px; + text-align: center; } + +div#loader { z-index: 99; position: absolute; left: 0; top: 0; bottom: 0; right: 0; background: #000; opacity: 0.8; filter: alpha(opacity=80); } +#spinny { width: 128px; height: 128px; position: absolute; top: 50%; left: 50%; margin: -64px 0 0 -64px; } +#loader_progress { width: 250px; height: 20px; position: absolute; top: 50%; left: 50%; margin: 128px 0 0 -125px; } + + +#sudo_buttons { + display: flex; + padding: 0px 40px 0px 40px; + justify-content: space-between; +} + +#units_container, +#altitude_filter_form { + font-size: var(--fontsize-small); + margin: 10px 0px 10px 0px; +} + +.aircraft_table_header { + background-color: #00596b; + color: #FFFFFF; + cursor: pointer; +} +.aircraft_table_header td { + font-size: smaller; + padding: 5px; + text-align: center; +} + +.verticalRateTriangle { + font-family: "Courier New",monospace; +} + +.icaoCodeColumn { + font-family: monospace; + text-transform: uppercase; +} + + +.plane_table_row { + cursor: default; +} +.plane_table_row a:link, a:visited { + color: black; +} +.hidden { display: none; } + +.infoblock_heading { font-size: larger; } +.infoblock_heading a { text-decoration: none; color: blue; font-size: x-small;} + +.dim { opacity: 0.3; filter:alpha(opacity=30); /* For IE8 and earlier */ } + +.pointer { cursor: pointer; } + +.sidebarButton { + background-color: #409EDF; + padding: 4px 15px 4px 15px; + color: #FFFFFF; + font-weight: normal; + font-size: var(--fontsize-small); +} + +.sidebarButton:hover { + background-color: #3c6ea3; +} + +.altitudeFilterInput { + width: 50px; + background-color: #F8F8F8; +} +.searchInput { + width: 80px; + background-color: #F8F8F8; +} + +select.error, textarea.error, input.error { + color: #FF0000; +} + +.layer-switcher { + top: 3px !important; + right: 47px !important; + z-index: 999; +} + +/* new css */ +.rangeRingText +{ + font-weight: bold; + font-size: 8px; + color: #333333; + color: rgb(51, 51, 51); +} + +.dateTime +{ + font-weight: bold; + font-size: 11pt; + line-height: 22pt; + color: #FFFFFF; + color: rgb(255, 255, 255); + text-align: right; + display: inline-block; + padding-right: 20px; + padding-left: 20px; +} + +@media screen and (max-width: 1000px) { + .dateTime { + display: none; + } +} + +.sectionTitle { + width: 100%; + text-transform: uppercase; + text-align: center; + color: #fff; + background: #003f4b; +} + +.section-title-content { + padding: 3px 20px; +} + +.legend +{ + width: 100%; + font-size: 110%; + color: #000000; + color: rgb(0, 0, 0); + display: inline-flex; + justify-content: flex-end; + padding-top: 10px; +} + +.settingsHeading +{ + font-size: 110%; + line-height: 20px; + color: #003f4b; +} + +.settingsText +{ + font-size: 11pt; + line-height: 20px; + text-indent: 16px; + color: rgb(0, 0, 0); +} + +.link +{ + font-size: 10px; + line-height: 20px; + color: #0000C8; + color: rgb(0, 0, 200); + text-decoration: underline; +} + +#header_side { + position: absolute; + right: 0px; + top: 140px; + width: 30pt; + height: flex; + z-index: 9; +} +#header_top { + text-align: right; + position: absolute; + right: 94px; + top: 0px; + width: flex; + height: 30pt; + z-index: 9; +} + +.adsbLogo { + padding-left: 20px; + padding-top: 30px; + padding-bottom: 5px; +} + +.logoContainer { + flex: 1; +} + +.buttonContainer { + display: block; + margin: 1px; + text-align: center; +} +.buttonSpacer { + margin: 6pt; +} + +.buttonText +{ + font-weight: bold; + font-size: 12pt; + line-height: 24pt; + text-align: center; + margin: 3pt; +} + +.activeButton { + color: #000000; +} + +.inActiveButton { + color: #FFFFFF; +} + + +.button { + background-color: #00596b; + width: 22pt; + height: 22pt; + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + display: inline-block; + margin: 2px; + cursor: pointer; + text-align: center; +} +.button-flex { + background: #67b6c3; + width: flex; + height: 22pt; + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + display: inline-block; + margin: 4pt; + margin-top: 8pt; + margin-bottom: 8pt; + cursor: pointer; + text-align: center; +} + +.lightblue-link, .lightblue-link a { + color: #67b6c3; + font-weight: normal; +} + +.buttonTable { + margin-bottom: 0px; +} + +.settingsContainer { + width: 22pt; + height: 22pt; + cursor: pointer; + margin: 3pt; + margin-top: 8pt; + margin-bottom: 8pt; + background-image: url('images/settings-icon.png'); + background-size: 22pt; + background-repeat: no-repeat; + background-position: center; +} + +#highlighted_infoblock { + background-color: #F8F8F8; + position: absolute; + left: 40px; + top: 60px; + min-width: 168px; + padding-right: 5px; + box-shadow: 4px 4px 10px #444444; + cursor: pointer; + z-index: 9999; + display: none; +} + +.highlightedTitle { + height: 50px; + border-bottom: 1px solid #67b6c3; + padding-left: 18px; + padding-top: 18px; + display: inline-block; + width: 83%; +} + +.highlightedInfo { + padding-left: 10px; +} + +.identLarge { + font-size: 24px; + line-height: 24px; + color: #003f4b; + font-weight: lighter; +} + +.identMedium { + font-size: 18px; + line-height: 22px; + color: #003f4b; + font-weight: lighter; +} + +.identSmall { + font-size: 12px; + font-weight: bold; + line-height: 20px; + color: #003f4b; +} + +.highlightedInfo { + padding-bottom: 12px; +} + +.infoRowTitle { +} + +.infoRowContent { +} + +.infoRowFluid { + display: inline-block; +} + +.infoRow { + padding-top: 10px; +} + +.infoRowLine { +} + +.infoRowSpacer { + padding-top: 3px; + padding-bottom: 3px; +} + +.infoHeading { + margin-top: 2px; + margin-bottom: 2px; +} + +.infoHeading sub { + font-weight: normal; +} + +.infoData { + margin-top: 2px; + margin-bottom: 2px; + float: right; + text-align: right; +} + + +.removePadding { + padding: 0; +} + +.rightLink { + float: right; + padding-right: 5px; +} + +.infoBlockTopSection { + padding-top: 14px; + padding-bottom: 14px; + padding-left: 8px; +} + +.infoBlock45pxSection { + height: 45px; + line-height: 45px; + padding-left: 10px; +} + +.infoBlockSection { + padding-top: 8px; + padding-bottom: 8px; + padding-left: 10px; + padding-right: 5px; +} + +.lightGreyBackground { + background-color: #efefef; +} + +#dump1090_infoblock { +} + +.infoBlockTitleText { + font-weight: bold; + color: #003f4b; +} + +.legendBox { + width: 15px; + height: 15px; + border: 1px solid #efefef; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; +} + + +.legendTitle { + line-height: 19px; + display: inline-block; + padding-right: 20px; + padding-left: 5px; +} + +#settings_infoblock { + position: absolute; + top: 60px; + right: 60px; + width: 398px; + min-height: 180px; + box-shadow: 4px 4px 10px #444444; + padding: 20px; + z-index: 9999; + display: none; + background-color: #F8F8F8; +} + +.settingsColumn { + display: table-cell; + width: 199px; +} +.settingsOptionContainer { + display: table; + padding-bottom: 10px; +} + +.settingsCheckbox { + width: 20px; + height: 11px; + background-image: url('images/box-empty.png'); + background-repeat: no-repeat; + background-position: center; + cursor: pointer; +} + +.settingsCheckboxChecked { + background-image: url('images/box-checked.png') !important; +} + +.settingsCloseBox { + position: absolute; + right: 8px; + top: 8px; + background-image: url('images/close-settings.png'); + background-size: cover; + width: 20px; + height: 20px; + cursor: pointer; +} + +.settingsText { + line-height: 20px; + display: table-cell; +} + +#altitude_chart { + float: right; + width: calc(100% - 5px); + max-width: 800px; + right: 5px; + bottom: 35px; + background-color: transparent !important; +} + +/* +#altitude_chart_button { + background-image: url('images/alt_legend_feet.svg'); + background-size: cover; + background-color: transparent; + width: 100%; + height: 0; + padding: 0; + padding-bottom: calc(100% * 56 / 1815); +} + +.altitudeMeters { + background-image: url('images/alt_legend_meters.svg') !important; +} +*/ + +/* remove the blue highlighting around the map buttons */ +.ol-control button { + outline: none; +} + +.bottom-container { + width: 100%; + margin-top: 8px; + padding: 40px 0px; + text-align: center; + background-color: #eee; +} +#selected_flightaware_link a { + background-color: #67b6c3; + color: white; + text-decoration: none; + padding: 4px; + line-height: 16pt; + border-radius: 4px; +} +.bottom-info-container { + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + color: #003f4b; + line-height: 18px; +} +.bottom-info-container img { + vertical-align: middle; +} +.bottom-info-container .bottom-info-text { + vertical-align: middle; + display: inline; +} +.selected_airframe a { + color: #003f4b; +} + +.infoblock-container-small .infoRowFluid { + display: block; +} + +/* Retina 2x images */ +@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + .settingsCloseBox { + background-image: url('images/close-settings@2x.png'); + } + .settingsCheckboxChecked { + background-image: url('images/box-checked@2x.png') !important; + } + .settingsCheckbox { + background-image: url('images/box-empty@2x.png'); + } + .ol-zoom-out { + background-image: url("images/zoom-out@2x.png"); + } + .ol-zoom-in { + background-image: url("images/zoom-in@2x.png"); + } +} + +/* Retina 3x images */ +@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 192dpi) { + .settingsCloseBox { + background-image: url('images/close-settings@3x.png'); + } + .settingsCheckboxChecked { + background-image: url('images/box-checked@3x.png') !important; + } + .settingsCheckbox { + background-image: url('images/box-empty@3x.png'); + } + .ol-zoom-out { + background-image: url("images/zoom-out@3x.png"); + } + .ol-zoom-in { + background-image: url("images/zoom-in@3x.png"); + } +} diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..d69a707 --- /dev/null +++ b/install.sh @@ -0,0 +1,301 @@ +#!/bin/bash +set -e + +srcdir=/run/dump1090-fa +repo="https://github.com/wiedehopf/tar1090" +db_repo="https://github.com/wiedehopf/tar1090-db" +ipath=/usr/local/share/tar1090 +lighttpd=no +nginx=no + +mkdir -p $ipath + +if ! id -u tar1090 &>/dev/null +then + adduser --system --home $ipath --no-create-home --quiet tar1090 +fi + +command_package="git git/jq jq/7za p7zip-full/" +packages="" + +while read -r -d '/' CMD PKG +do + if ! command -v "$CMD" &>/dev/null + then + echo "command $CMD not found, will try to install package $PKG" + packages+="$PKG " + fi +done < <(echo "$command_package") + +if [[ -n "$packages" ]] +then + echo "Installing required packages: $packages" + apt-get update || true + if ! apt-get install -y $packages + then + echo "Failed to install required packages: $packages" + echo "Exiting ..." + exit 1 + fi + hash -r || true +fi + +if [ -d /etc/lighttpd/conf.d/ ] && ! [ -d /etc/lighttpd/conf-enabled/ ] && ! [ -d /etc/lighttpd/conf-available ] && command -v lighttpd &>/dev/null +then + ln -s /etc/lighttpd/conf.d /etc/lighttpd/conf-enabled + mkdir -p /etc/lighttpd/conf-available +fi + +if [ -d /etc/lighttpd/conf-enabled/ ] && [ -d /etc/lighttpd/conf-available ] && command -v lighttpd &>/dev/null +then + lighttpd=yes +fi + +if command -v nginx &>/dev/null +then + nginx=yes +fi + +dir=$(pwd) + +if { ! [ -d "$ipath/git-db" ] && git clone --depth 1 $db_repo $ipath/git-db; } || cd $ipath/git-db +then + cd $ipath/git-db + git checkout -f master + git fetch --depth 1 + git reset --hard origin/master +fi + +cd "$dir" + +if [[ "$1" == "test" ]] +then + rm -r /tmp/tar1090-test 2>/dev/null || true + mkdir -p /tmp/tar1090-test + cp -r ./* /tmp/tar1090-test + cd /tmp/tar1090-test + +elif { ! [ -d "$ipath/git" ] && git clone --depth 1 $repo $ipath/git; } || cd $ipath/git +then + cd $ipath/git + git checkout -f master + git fetch origin master + git reset --hard origin/master + +elif wget --timeout=30 -q -O /tmp/master.zip $repo/archive/master.zip && unzip -q -o master.zip +then + cd /tmp/tar1090-master +else + echo "Unable to download files, exiting! (Maybe try again?)" + exit 1 +fi + +if [[ -n $1 ]] && [ "$1" != "test" ] ; then + srcdir=$1 +elif ! [[ -d /run/dump1090-fa ]] ; then + if [[ -d /run/readsb ]]; then + srcdir=/run/readsb + elif [[ -d /run/dump1090 ]]; then + srcdir=/run/dump1090 + elif [[ -d /run/dump1090-mutability ]]; then + srcdir=/run/dump1090-mutability + elif [[ -d /run/skyaware978 ]]; then + srcdir=/run/skyaware978 + fi +fi + +if [ -f /etc/default/tar1090_instances ]; then + instances=$(/dev/null; then + changed=yes + while read -r srcdir instance; do + if [[ "$instance" != "tar1090" ]]; then + service="tar1090-$instance" + else + service="tar1090" + fi + systemctl stop $service 2>/dev/null || true + done < <(echo "$instances") + cp tar1090.sh $ipath +fi + + +# copy over base files +cp default install.sh uninstall.sh 99-tar1090-webroot.conf LICENSE README.md \ + 95-tar1090-otherport.conf nginx_webroot.conf $ipath + + +services="" +names="" +while read -r srcdir instance +do + if [[ "$instance" != "tar1090" ]]; then + html_path="$ipath/html-$instance" + service="tar1090-$instance" + else + html_path="$ipath/html" + service="tar1090" + fi + services+="$service " + names+="$instance " + + # don't overwrite existing configuration + cp -n default /etc/default/$service + sed -i -e 's/skyview978/skyaware978/' /etc/default/$service + + sed -i.orig -e "s?SOURCE_DIR?$srcdir?g" -e "s?SERVICE?$service?g" -e "s?INSTANCE?$instance?g" -e "s?HTMLPATH?$html_path?g" 88-tar1090.conf + sed -i.orig -e "s?SOURCE_DIR?$srcdir?g" -e "s?SERVICE?$service?g" -e "s?INSTANCE?$instance?g" -e "s?HTMLPATH?$html_path?g" nginx.conf + sed -i.orig -e "s?SOURCE_DIR?$srcdir?g" -e "s?SERVICE?$service?g" tar1090.service + + # keep some stuff around + if [ -f $html_path/defaults*.js ]; then + cp $html_path/config.js /tmp/tar1090_config.js 2>/dev/null || true + fi + cp $html_path/upintheair.json /tmp/tar1090_upintheair.json 2>/dev/null || true + cp $html_path/color*.css /tmp/tar1090_colors.css 2>/dev/null || true + + rm -rf $html_path 2>/dev/null || true + cp -r -T html $html_path + cp -r $ipath/git-db/db $html_path + + mv /tmp/tar1090_config.js $html_path/config.js 2>/dev/null || true + mv /tmp/tar1090_colors.css $html_path/colors.css 2>/dev/null || true + mv /tmp/tar1090_upintheair.json $html_path/upintheair.json 2>/dev/null || true + + epoch=$(date +%s) + # bust cache for all css and js files + + dir=$(pwd) + cd $html_path + + sed -i \ + -e "s/dbloader.js/dbloader_$epoch.js/" \ + -e "s/defaults.js/defaults_$epoch.js/" \ + -e "s/early.js/early_$epoch.js/" \ + -e "s/flags.js/flags_$epoch.js/" \ + -e "s/formatter.js/formatter_$epoch.js/" \ + -e "s/layers.js/layers_$epoch.js/" \ + -e "s/markers.js/markers_$epoch.js/" \ + -e "s/planeObject.js/planeObject_$epoch.js/" \ + -e "s/registrations.js/registrations_$epoch.js/" \ + -e "s/script.js/script_$epoch.js/" \ + -e "s/colors.css/colors_$epoch.css/" \ + -e "s/style.css/style_$epoch.css/" \ + index.html + + sed -i -e "s/tar1090 on github/tar1090 on github ($(date +%y%m%d))/" index.html + + mv dbloader.js dbloader_$epoch.js + mv defaults.js defaults_$epoch.js + mv early.js early_$epoch.js + mv flags.js flags_$epoch.js + mv formatter.js formatter_$epoch.js + mv layers.js layers_$epoch.js + mv markers.js markers_$epoch.js + mv planeObject.js planeObject_$epoch.js + mv registrations.js registrations_$epoch.js + mv script.js script_$epoch.js + mv colors.css colors_$epoch.css + mv style.css style_$epoch.css + + cd "$dir" + + cp nginx.conf $ipath/nginx-$service.conf + + if [[ $lighttpd == yes ]] && ! diff 88-tar1090.conf /etc/lighttpd/conf-enabled/88-$service.conf &>/dev/null + then + changed_lighttpd=yes + cp 88-tar1090.conf /etc/lighttpd/conf-available/88-$service.conf + if [ -f /etc/lighttpd/conf.d/69-skybup.conf ]; then + ln -f -s /etc/lighttpd/conf-available/88-$service.conf /etc/lighttpd/conf-enabled/66-$service.conf + else + ln -f -s /etc/lighttpd/conf-available/88-$service.conf /etc/lighttpd/conf-enabled/88-$service.conf + fi + fi + + if [[ $changed == yes ]] || ! diff tar1090.service /lib/systemd/system/$service.service &>/dev/null + then + cp tar1090.service /lib/systemd/system/$service.service + systemctl enable $service + echo + echo "Restarting $service ..." + systemctl restart $service + fi + + # restore sed modified configuration files + mv 88-tar1090.conf.orig 88-tar1090.conf + mv nginx.conf.orig nginx.conf + mv tar1090.service.orig tar1090.service +done < <(echo "$instances") + + +if [ -d /etc/lighttpd/conf-enabled/ ] +then + while read -r FILE; do + if grep -qs '^server.modules += ( "mod_setenv" )' $FILE; then + if [[ "$FILE" != "/etc/lighttpd/conf-available/87-mod_setenv.conf" ]]; then + changed_lighttpd=yes + fi + fi + sed -i -e 's/^server.modules += ( "mod_setenv" )/#server.modules += ( "mod_setenv" )/' "$FILE" + done < <(find /etc/lighttpd/conf-available/* | grep -v dump1090-fa) + + # add mod_setenv to lighttpd modules, check if it's one too much + if [ -f /etc/lighttpd/conf-enabled/87-mod_setenv.conf ]; then + setenv_file="present" + fi + echo 'server.modules += ( "mod_setenv" )' > /etc/lighttpd/conf-available/87-mod_setenv.conf + if lighttpd -tt -f /etc/lighttpd/lighttpd.conf 2>&1 | grep mod_setenv >/dev/null + then + rm /etc/lighttpd/conf-enabled/87-mod_setenv.conf + if [[ "$setenv_file" == "present" ]]; then + changed_lighttpd=yes + fi + else + if [[ "$setenv_file" != "present" ]]; then + changed_lighttpd=yes + fi + fi +fi + +if [[ $changed_lighttpd == yes ]] && systemctl status lighttpd >/dev/null; then + echo "Restarting lighttpd ..." + systemctl restart lighttpd +fi + +echo -------------- + + +if [[ $nginx == yes ]]; then + echo + echo "To configure nginx for tar1090, please add the following line(s) in the server {} section:" + echo + for service in $services; do + echo "include /usr/local/share/tar1090/nginx-$service.conf;" + done + if [[ "$1" == "test" ]] + then + if [ -d /run/readsb ]; then + sed -i -e 's/dump1090-fa/readsb/g' /usr/local/share/tar1090/nginx_webroot.conf + fi + fi +fi + +echo -------------- + +if [[ $lighttpd == yes ]]; then + for name in $names; do + echo "All done! Webinterface available at http://$(ip route | grep -m1 -o -P 'src \K[0-9,.]*')/$name" + done +elif [[ $nginx == yes ]]; then + for name in $names; do + echo "All done! Webinterface once nginx is configured will be available at http://$(ip route | grep -m1 -o -P 'src \K[0-9,.]*')/$name" + done +else + echo "All done! You'll need to configure your webserver yourself, see /usr/local/share/tar1090/nginx-tar1090.conf for a reference nginx configuration" +fi + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..6b24679 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,53 @@ +# nginx configuration for tar1090 +location /INSTANCE/data/ { + alias SOURCE_DIR/; + location ~ aircraft\.json$ { + add_header Cache-Control "public, max-age=0"; + } + location ~ icao_.*\.json$ { + add_header Cache-Control "public, max-age=10"; + } + location ~ globe_.*\.json$ { + add_header Cache-Control "public, max-age=0"; + } +} + +location /INSTANCE/chunks/ { + alias /run/SERVICE/; + location ~ chunk_.*\.gz$ { + add_header Cache-Control "public, max-age=1209600"; + add_header Content-Type "application/json"; + add_header Content-Encoding "gzip"; + } + location ~ current_.*\.gz$ { + add_header Cache-Control "must-revalidate"; + add_header Content-Type "application/json"; + add_header Content-Encoding "gzip"; + } + location ~ .*\.json$ { + add_header Cache-Control "public, max-age=0"; + } +} + +location /INSTANCE { + alias HTMLPATH/; + try_files $uri $uri/ =404; + location ~ db/.*\.json$ { + add_header Cache-Control "public, max-age=1209600"; + } + location ~ .*\.png$ { + add_header Cache-Control "public, max-age=2419200"; + } + location ~ .*\.gif$ { + add_header Cache-Control "public, max-age=1209600"; + } + location ~ config.js$ { + add_header Cache-Control "must-revalidate"; + } + location ~ .*\.js$ { + add_header Cache-Control "public, max-age=1209600"; + } + location ~ .*\.css$ { + add_header Cache-Control "public, max-age=1209600"; + } +} diff --git a/nginx_webroot.conf b/nginx_webroot.conf new file mode 100644 index 0000000..8c134a0 --- /dev/null +++ b/nginx_webroot.conf @@ -0,0 +1,53 @@ +# nginx configuration for tar1090 for access via / +location /data/ { + alias /run/dump1090-fa/; + location ~ aircraft\.json$ { + add_header Cache-Control "public, max-age=0"; + } + location ~ icao_.*\.json$ { + add_header Cache-Control "public, max-age=10"; + } + location ~ globe_.*\.json$ { + add_header Cache-Control "public, max-age=0"; + } +} + +location /chunks/ { + alias /run/tar1090/; + location ~ chunk_.*\.gz$ { + add_header Cache-Control "public, max-age=1209600"; + add_header Content-Type "application/json"; + add_header Content-Encoding "gzip"; + } + location ~ current_.*\.gz$ { + add_header Cache-Control "must-revalidate"; + add_header Content-Type "application/json"; + add_header Content-Encoding "gzip"; + } + location ~ .*\.json$ { + add_header Cache-Control "public, max-age=0"; + } +} + +location / { + alias /usr/local/share/tar1090/html/; + try_files $uri $uri/ =404; + location ~ db/.*\.json$ { + add_header Cache-Control "public, max-age=86400"; + } + location ~ .*\.png$ { + add_header Cache-Control "public, max-age=1209600"; + } + location ~ .*\.gif$ { + add_header Cache-Control "public, max-age=1209600"; + } + location ~ config.js$ { + add_header Cache-Control "must-revalidate"; + } + location ~ .*\.js$ { + add_header Cache-Control "public, max-age=1209600"; + } + location ~ .*\.css$ { + add_header Cache-Control "public, max-age=1209600"; + } +} diff --git a/tar1090.service b/tar1090.service new file mode 100644 index 0000000..0cf8d26 --- /dev/null +++ b/tar1090.service @@ -0,0 +1,21 @@ +# tar1090 systemd unit file +[Unit] +Description=SERVICE - compress dump1090 json data +Wants=network.target +After=network.target + +[Service] +User=tar1090 +SyslogIdentifier=SERVICE +RuntimeDirectory=SERVICE +RuntimeDirectoryMode=0755 +EnvironmentFile=/usr/local/share/tar1090/default +EnvironmentFile=/etc/default/SERVICE +ExecStart=/usr/local/share/tar1090/tar1090.sh /run/SERVICE SOURCE_DIR "$INTERVAL" "$HISTORY_SIZE" "$CHUNK_SIZE" "$ENABLE_978" "$URL_978" "$INT_978" "$PF_URL" "$COMPRESS_978" +Type=simple +Restart=always +RestartSec=30 +Nice=19 + +[Install] +WantedBy=default.target diff --git a/tar1090.sh b/tar1090.sh new file mode 100755 index 0000000..0f2cb8e --- /dev/null +++ b/tar1090.sh @@ -0,0 +1,216 @@ +#!/bin/bash + +trap "exit" INT TERM +trap "kill 0" EXIT +trap 'echo ERROR on line number $LINENO' ERR + +#set -e + +RUN_DIR=$1 +SRC_DIR=$2 +INTERVAL=$3 +HISTORY_SIZE=$4 +CHUNK_SIZE=$5 + +ENABLE_978=$6 +URL_978=$7 +INT_978=$8 +PF_URL=$9 +COMPRESS_978=${10} + +if ! [[ -d $RUN_DIR && -d $SRC_DIR ]] +then + echo "runtime directory or source directory are not specified or not directories, fatal error!" + echo "minimal Syntax: bash tar1090.sh " + echo "Syntax: bash tar1090.sh " + exit 1 +fi +if [[ -z $HISTORY_SIZE || -z $INTERVAL || -z $CHUNK_SIZE ]] +then + echo "Syntax: bash tar1090.sh " + echo "Missing some settings from environment variables, using defaults:" + echo "history interval: 8 seconds" + echo "history size: 450 entries" + echo "chunk size: 60 entries" + INTERVAL=8 + HISTORY_SIZE=450 + CHUNK_SIZE=60 +fi +if [[ -z $URL_978 ]]; then + ENABLE_978=no +fi +if [[ -z $INT_978 ]]; then + INT_978=1 +fi + + +hist=$((HISTORY_SIZE)) +chunks=$(( hist/CHUNK_SIZE + 1 )) +#increase chunk size to get history size as close as we can +CHUNK_SIZE=$(( CHUNK_SIZE - ( (CHUNK_SIZE - hist % CHUNK_SIZE)/chunks ) )) + +new_chunk() { + if [[ $1 != "refresh" ]]; then + cur_chunk="chunk_$(date +%s%N | head -c-7).gz" + echo "$cur_chunk" >> chunk_list + cp "$1" "$cur_chunk" + fi + for iterator in $(head -n-$chunks chunk_list); do rm -f "$RUN_DIR/$iterator"; done + tail -n$chunks chunk_list > chunk_list.tmp + mv chunk_list.tmp chunk_list + + # construct chunks.json + JSON='{' + + if [ -f pf.json ]; then JSON="$JSON"' "pf_data": "true",'; fi + if [[ "$ENABLE_978" == "yes" ]]; then JSON="$JSON"' "enable_uat": "true",'; fi + + JSON="$JSON"' "chunks": [ ' + JSON="$JSON""$(while read -r i; do echo -n "\"$i\", "; done < chunk_list)" + JSON="$JSON"' "current_large.gz", "current_small.gz" ] }' + + echo "$JSON" > "$RUN_DIR/chunks.json" +} + +prune() { + jq -c <"$1" >"$2" ' + .aircraft |= map(select(has("seen") and .seen < 15)) + | .aircraft[] |= [.hex, + (if .alt_baro != null then .alt_baro elif .altitude != null then .altitude else .alt_geom end), + (if .gs != null then .gs else .tas end), + .track, .lat, .lon, .seen_pos, + (if .mlat != null and (.mlat | contains(["lat"])) then "mlat" + elif .tisb != null and (.tisb | contains(["lat"])) then "tisb" else .type end), + .flight, .messages] + ' +} + +while true +do + cd "$RUN_DIR" || { sleep 30; continue; } + rm -f chunk_list ./chunk_*.gz ./current_*.gz history_*.json latest_*.json || true + + echo "{ \"files\" : [ ] }" | gzip -1 > empty.gz + cp empty.gz current_small.gz + cp empty.gz current_large.gz + + + # integrate original dump1090-fa history on startup so we don't start blank + for i in "$SRC_DIR"/history_*.json + do + FILE=$(basename "$i") + if prune "$i" "$FILE"; then + sed -i -e '$a,' "$FILE" + fi + done + + if sed -e '1i{ "files" : [' -e '$a]}' -e '$d' history_*.json | 7za a -si temp.gz >/dev/null; then + new_chunk temp.gz + else + new_chunk empty.gz + fi + # cleanup + rm -f history_*.json + + i=0 + + while [ -f chunks.json ] + do + cd "$RUN_DIR" || { sleep 30; continue; } + sleep $INTERVAL & + + if ! [ -f empty.gz ]; then + echo "{ \"files\" : [ ] }" | gzip -1 > empty.gz + fi + + date=$(date +%s%N | head -c-7) + + if prune "$SRC_DIR/aircraft.json" "history_$date.json" || + { sleep 0.1 && prune "$SRC_DIR/aircraft.json" "history_$date.json"; } + then + sed -i -e '$a,' "history_$date.json" + else + echo "No aircraft.json found in $SRC_DIR! Try restarting dump1090!" + sleep 60 + continue + fi + + if [[ $ENABLE_978 == "yes" ]] && prune 978.json "history_978_$date.json"; then + sed -i -e '$a,' "history_978_$date.json" + fi + + + if [[ $((i%6)) == 5 ]] + then + sed -e '1i{ "files" : [' -e '$a]}' -e '$d' history_*.json | gzip -4 > temp.gz + mv temp.gz current_large.gz + cp empty.gz current_small.gz + rm -f latest_*.json + else + if [ -f "history_$date.json" ]; then + ln -s "history_$date.json" "latest_$date.json" + fi + if [[ $ENABLE_978 == "yes" ]] && [ -f "history_978_$date.json" ]; then + ln -s "history_978_$date.json" "latest_978_$date.json" || true + fi + sed -e '1i{ "files" : [' -e '$a]}' -e '$d' latest_*.json | gzip -1 > temp.gz + mv temp.gz current_small.gz + fi + + i=$((i+1)) + + if [[ $i == "$CHUNK_SIZE" ]] + then + sed -e '1i{ "files" : [' -e '$a]}' -e '$d' history_*.json | 7za a -si temp.gz >/dev/null + new_chunk temp.gz + cp empty.gz current_small.gz + cp empty.gz current_large.gz + i=0 + rm -f history_*.json latest_*.json + fi + + wait + done + echo "$RUN_DIR/chunks.json was corrupted or removed, restarting history chunk creation!" +done & + +if [[ $(echo "$URL_978" | head -c7) == "FILE://" ]]; then + COMMAND_978="cp $(echo -n "$URL_978" | tail -c+8) 978.tmp" +else + COMMAND_978="wget -T 5 -q -O 978.tmp $URL_978/data/aircraft.json $COMPRESS_978" +fi + +if [[ $ENABLE_978 == "yes" ]]; then + while true + do + sleep $INT_978 & + if cd "$RUN_DIR" && $COMMAND_978; then + sed -i -e 's/"now" \?:/"uat_978":"true","now":/' 978.tmp + mv 978.tmp 978.json + fi + wait + done & +fi + +sleep 10 + +if [[ -n $PF_URL ]]; then + TMP="/tmp/tar1090-tmp.pf.json.$RANDOM$RANDOM" + while true + do + sleep 10 & + if cd "$RUN_DIR" && wget -T 5 -q -O $TMP "$PF_URL" &>/dev/null; then + sed -i -e 's/"user_l[a-z]*":"[0-9,.,-]*",//g' $TMP + mv $TMP pf.json + if ! grep -qs -e pf_data chunks.json; then + new_chunk refresh + fi + else + rm $TMP + sleep 120 + fi + wait + done & +fi + +wait -n diff --git a/uninstall.sh b/uninstall.sh new file mode 100755 index 0000000..7972d3c --- /dev/null +++ b/uninstall.sh @@ -0,0 +1,33 @@ +#!/bin/bash +instance=tar1090 +if [[ -n $1 ]]; then + instance=$1 +else + rm -rf /usr/local/share/tar1090 +fi +echo -------------- +echo "Removing tar1090, instance name $instance!" +echo -------------- + +systemctl stop $instance +systemctl disable $instance + + +#rm -f /etc/default/$instance +echo "Configuration is left to be removed manually, you can use this command:" +echo "sudo rm /etc/default/$instance" +rm -f /lib/systemd/system/$instance.service + +rm -f /etc/lighttpd/conf-available/88-$instance.conf +rm -f /etc/lighttpd/conf-enabled/88-$instance.conf +rm -f /etc/lighttpd/conf-available/99-$instance-webroot.conf +rm -f /etc/lighttpd/conf-enabled/99-$instance-webroot.conf + + +systemctl daemon-reload +systemctl restart lighttpd + + + +echo -------------- +echo "tar1090 is now gone! Shoo shoo!"