diff --git a/dist/iD.min.js b/dist/iD.min.js new file mode 100644 index 0000000000..26aa1edf4f --- /dev/null +++ b/dist/iD.min.js @@ -0,0 +1,125 @@ +(()=>{var YU=Object.create;var o6=Object.defineProperty;var KU=Object.getOwnPropertyDescriptor;var ZU=Object.getOwnPropertyNames;var JU=Object.getPrototypeOf,ez=Object.prototype.hasOwnProperty;var tz=(e,t,r)=>t in e?o6(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var vm=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var St=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s6=(e,t)=>{for(var r in t)o6(e,r,{get:t[r],enumerable:!0})},rz=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ZU(t))!ez.call(e,i)&&i!==r&&o6(e,i,{get:()=>t[i],enumerable:!(n=KU(t,i))||n.enumerable});return e};var xt=(e,t,r)=>(r=e!=null?YU(JU(e)):{},rz(t||!e||!e.__esModule?o6(r,"default",{value:e,enumerable:!0}):r,e));var Je=(e,t,r)=>(tz(e,typeof t!="symbol"?t+"":t,r),r),nz=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var ym=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)};var l6=(e,t,r)=>(nz(e,t,"access private method"),r);var Sf=St(Af=>{Af.remove=mG;var kf=[{base:" ",chars:"\xA0"},{base:"0",chars:"\u07C0"},{base:"A",chars:"\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F"},{base:"AA",chars:"\uA732"},{base:"AE",chars:"\xC6\u01FC\u01E2"},{base:"AO",chars:"\uA734"},{base:"AU",chars:"\uA736"},{base:"AV",chars:"\uA738\uA73A"},{base:"AY",chars:"\uA73C"},{base:"B",chars:"\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0181"},{base:"C",chars:"\u24B8\uFF23\uA73E\u1E08\u0106C\u0108\u010A\u010C\xC7\u0187\u023B"},{base:"D",chars:"\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018A\u0189\u1D05\uA779"},{base:"Dh",chars:"\xD0"},{base:"DZ",chars:"\u01F1\u01C4"},{base:"Dz",chars:"\u01F2\u01C5"},{base:"E",chars:"\u025B\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E\u1D07"},{base:"F",chars:"\uA77C\u24BB\uFF26\u1E1E\u0191\uA77B"},{base:"G",chars:"\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E\u0262"},{base:"H",chars:"\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D"},{base:"I",chars:"\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197"},{base:"J",chars:"\u24BF\uFF2A\u0134\u0248\u0237"},{base:"K",chars:"\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2"},{base:"L",chars:"\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780"},{base:"LJ",chars:"\u01C7"},{base:"Lj",chars:"\u01C8"},{base:"M",chars:"\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C\u03FB"},{base:"N",chars:"\uA7A4\u0220\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u019D\uA790\u1D0E"},{base:"NJ",chars:"\u01CA"},{base:"Nj",chars:"\u01CB"},{base:"O",chars:"\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C"},{base:"OE",chars:"\u0152"},{base:"OI",chars:"\u01A2"},{base:"OO",chars:"\uA74E"},{base:"OU",chars:"\u0222"},{base:"P",chars:"\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754"},{base:"Q",chars:"\u24C6\uFF31\uA756\uA758\u024A"},{base:"R",chars:"\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782"},{base:"S",chars:"\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784"},{base:"T",chars:"\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786"},{base:"Th",chars:"\xDE"},{base:"TZ",chars:"\uA728"},{base:"U",chars:"\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244"},{base:"V",chars:"\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245"},{base:"VY",chars:"\uA760"},{base:"W",chars:"\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72"},{base:"X",chars:"\u24CD\uFF38\u1E8A\u1E8C"},{base:"Y",chars:"\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE"},{base:"Z",chars:"\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762"},{base:"a",chars:"\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251"},{base:"aa",chars:"\uA733"},{base:"ae",chars:"\xE6\u01FD\u01E3"},{base:"ao",chars:"\uA735"},{base:"au",chars:"\uA737"},{base:"av",chars:"\uA739\uA73B"},{base:"ay",chars:"\uA73D"},{base:"b",chars:"\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253\u0182"},{base:"c",chars:"\uFF43\u24D2\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184"},{base:"d",chars:"\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\u018B\u13E7\u0501\uA7AA"},{base:"dh",chars:"\xF0"},{base:"dz",chars:"\u01F3\u01C6"},{base:"e",chars:"\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u01DD"},{base:"f",chars:"\u24D5\uFF46\u1E1F\u0192"},{base:"ff",chars:"\uFB00"},{base:"fi",chars:"\uFB01"},{base:"fl",chars:"\uFB02"},{base:"ffi",chars:"\uFB03"},{base:"ffl",chars:"\uFB04"},{base:"g",chars:"\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\uA77F\u1D79"},{base:"h",chars:"\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265"},{base:"hv",chars:"\u0195"},{base:"i",chars:"\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131"},{base:"j",chars:"\u24D9\uFF4A\u0135\u01F0\u0249"},{base:"k",chars:"\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3"},{base:"l",chars:"\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747\u026D"},{base:"lj",chars:"\u01C9"},{base:"m",chars:"\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F"},{base:"n",chars:"\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u043B\u0509"},{base:"nj",chars:"\u01CC"},{base:"o",chars:"\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\uA74B\uA74D\u0275\u0254\u1D11"},{base:"oe",chars:"\u0153"},{base:"oi",chars:"\u01A3"},{base:"oo",chars:"\uA74F"},{base:"ou",chars:"\u0223"},{base:"p",chars:"\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755\u03C1"},{base:"q",chars:"\u24E0\uFF51\u024B\uA757\uA759"},{base:"r",chars:"\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783"},{base:"s",chars:"\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u0282"},{base:"ss",chars:"\xDF"},{base:"t",chars:"\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787"},{base:"th",chars:"\xFE"},{base:"tz",chars:"\uA729"},{base:"u",chars:"\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289"},{base:"v",chars:"\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C"},{base:"vy",chars:"\uA761"},{base:"w",chars:"\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73"},{base:"x",chars:"\u24E7\uFF58\u1E8B\u1E8D"},{base:"y",chars:"\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF"},{base:"z",chars:"\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763"}],Eh={};for($3=0;$3{"use strict";Object.defineProperty(Cf,"__esModule",{value:!0});var yA=[[1536,1791],[1872,1919],[2208,2303],[64336,65023],[65136,65279],[69216,69247],[126064,126143],[126464,126719]];function hG(e){if(e.length>1)throw new Error("isArabic works on only one-character strings");let t=e.charCodeAt(0);for(let r=0;r=n[0]&&t<=n[1])return!0}return!1}Cf.isArabic=hG;function gG(e){if(e.length>2)throw new Error("isMath works on only one-character strings");let t=e.charCodeAt(0);return t>=1632&&t<=1644||t>=1776&&t<=1785}Cf.isMath=gG});var U3=St(kh=>{"use strict";Object.defineProperty(kh,"__esModule",{value:!0});var vG={alef:{normal:["\u0627"],madda_above:{normal:["\u0627\u0653","\u0622"],isolated:"\uFE81",final:"\uFE82"},hamza_above:{normal:["\u0627\u0654","\u0623"],isolated:"\uFE83",final:"\uFE84"},hamza_below:{normal:["\u0627\u0655","\u0625"],isolated:"\uFE87",final:"\uFE88"},wasla:{normal:"\u0671",isolated:"\uFB50",final:"\uFB51"},wavy_hamza_above:["\u0672"],wavy_hamza_below:["\u0627\u065F","\u0673"],high_hamza:["\u0675","\u0627\u0674"],indic_two_above:["\u0773"],indic_three_above:["\u0774"],fathatan:{normal:["\u0627\u064B"],final:"\uFD3C",isolated:"\uFD3D"},isolated:"\uFE8D",final:"\uFE8E"},beh:{normal:["\u0628"],dotless:["\u066E"],three_dots_horizontally_below:["\u0750"],dot_below_three_dots_above:["\u0751"],three_dots_pointing_upwards_below:["\u0752"],three_dots_pointing_upwards_below_two_dots_above:["\u0753"],two_dots_below_dot_above:["\u0754"],inverted_small_v_below:["\u0755"],small_v:["\u0756"],small_v_below:["\u08A0"],hamza_above:["\u08A1"],small_meem_above:["\u08B6"],isolated:"\uFE8F",final:"\uFE90",initial:"\uFE91",medial:"\uFE92"},"teh marbuta":{normal:["\u0629"],isolated:"\uFE93",final:"\uFE94"},teh:{normal:["\u062A"],ring:["\u067C"],three_dots_above_downwards:["\u067D"],small_teh_above:["\u08B8"],isolated:"\uFE95",final:"\uFE96",initial:"\uFE97",medial:"\uFE98"},theh:{normal:["\u062B"],isolated:"\uFE99",final:"\uFE9A",initial:"\uFE9B",medial:"\uFE9C"},jeem:{normal:["\u062C"],two_dots_above:["\u08A2"],isolated:"\uFE9D",final:"\uFE9E",initial:"\uFE9F",medial:"\uFEA0"},hah:{normal:["\u062D"],hamza_above:["\u0681"],two_dots_vertical_above:["\u0682"],three_dots_above:["\u0685"],two_dots_above:["\u0757"],three_dots_pointing_upwards_below:["\u0758"],small_tah_below:["\u076E"],small_tah_two_dots:["\u076F"],small_tah_above:["\u0772"],indic_four_below:["\u077C"],isolated:"\uFEA1",final:"\uFEA2",initial:"\uFEA3",medial:"\uFEA4"},khah:{normal:["\u062E"],isolated:"\uFEA5",final:"\uFEA6",initial:"\uFEA7",medial:"\uFEA8"},dal:{normal:["\u062F"],ring:["\u0689"],dot_below:["\u068A"],dot_below_small_tah:["\u068B"],three_dots_above_downwards:["\u068F"],four_dots_above:["\u0690"],inverted_v:["\u06EE"],two_dots_vertically_below_small_tah:["\u0759"],inverted_small_v_below:["\u075A"],three_dots_below:["\u08AE"],isolated:"\uFEA9",final:"\uFEAA"},thal:{normal:["\u0630"],isolated:"\uFEAB",final:"\uFEAC"},reh:{normal:["\u0631"],small_v:["\u0692"],ring:["\u0693"],dot_below:["\u0694"],small_v_below:["\u0695"],dot_below_dot_above:["\u0696"],two_dots_above:["\u0697"],four_dots_above:["\u0699"],inverted_v:["\u06EF"],stroke:["\u075B"],two_dots_vertically_above:["\u076B"],hamza_above:["\u076C"],small_tah_two_dots:["\u0771"],loop:["\u08AA"],small_noon_above:["\u08B9"],isolated:"\uFEAD",final:"\uFEAE"},zain:{normal:["\u0632"],inverted_v_above:["\u08B2"],isolated:"\uFEAF",final:"\uFEB0"},seen:{normal:["\u0633"],dot_below_dot_above:["\u069A"],three_dots_below:["\u069B"],three_dots_below_three_dots_above:["\u069C"],four_dots_above:["\u075C"],two_dots_vertically_above:["\u076D"],small_tah_two_dots:["\u0770"],indic_four_above:["\u077D"],inverted_v:["\u077E"],isolated:"\uFEB1",final:"\uFEB2",initial:"\uFEB3",medial:"\uFEB4"},sheen:{normal:["\u0634"],dot_below:["\u06FA"],isolated:"\uFEB5",final:"\uFEB6",initial:"\uFEB7",medial:"\uFEB8"},sad:{normal:["\u0635"],two_dots_below:["\u069D"],three_dots_above:["\u069E"],three_dots_below:["\u08AF"],isolated:"\uFEB9",final:"\uFEBA",initial:"\uFEBB",medial:"\uFEBC"},dad:{normal:["\u0636"],dot_below:["\u06FB"],isolated:"\uFEBD",final:"\uFEBE",initial:"\uFEBF",medial:"\uFEC0"},tah:{normal:["\u0637"],three_dots_above:["\u069F"],two_dots_above:["\u08A3"],isolated:"\uFEC1",final:"\uFEC2",initial:"\uFEC3",medial:"\uFEC4"},zah:{normal:["\u0638"],isolated:"\uFEC5",final:"\uFEC6",initial:"\uFEC7",medial:"\uFEC8"},ain:{normal:["\u0639"],three_dots_above:["\u06A0"],two_dots_above:["\u075D"],three_dots_pointing_downwards_above:["\u075E"],two_dots_vertically_above:["\u075F"],three_dots_below:["\u08B3"],isolated:"\uFEC9",final:"\uFECA",initial:"\uFECB",medial:"\uFECC"},ghain:{normal:["\u063A"],dot_below:["\u06FC"],isolated:"\uFECD",final:"\uFECE",initial:"\uFECF",medial:"\uFED0"},feh:{normal:["\u0641"],dotless:["\u06A1"],dot_moved_below:["\u06A2"],dot_below:["\u06A3"],three_dots_below:["\u06A5"],two_dots_below:["\u0760"],three_dots_pointing_upwards_below:["\u0761"],dot_below_three_dots_above:["\u08A4"],isolated:"\uFED1",final:"\uFED2",initial:"\uFED3",medial:"\uFED4"},qaf:{normal:["\u0642"],dotless:["\u066F"],dot_above:["\u06A7"],three_dots_above:["\u06A8"],dot_below:["\u08A5"],isolated:"\uFED5",final:"\uFED6",initial:"\uFED7",medial:"\uFED8"},kaf:{normal:["\u0643"],swash:["\u06AA"],ring:["\u06AB"],dot_above:["\u06AC"],three_dots_below:["\u06AE"],two_dots_above:["\u077F"],dot_below:["\u08B4"],isolated:"\uFED9",final:"\uFEDA",initial:"\uFEDB",medial:"\uFEDC"},lam:{normal:["\u0644"],small_v:["\u06B5"],dot_above:["\u06B6"],three_dots_above:["\u06B7"],three_dots_below:["\u06B8"],bar:["\u076A"],double_bar:["\u08A6"],isolated:"\uFEDD",final:"\uFEDE",initial:"\uFEDF",medial:"\uFEE0"},meem:{normal:["\u0645"],dot_above:["\u0765"],dot_below:["\u0766"],three_dots_above:["\u08A7"],isolated:"\uFEE1",final:"\uFEE2",initial:"\uFEE3",medial:"\uFEE4"},noon:{normal:["\u0646"],dot_below:["\u06B9"],ring:["\u06BC"],three_dots_above:["\u06BD"],two_dots_below:["\u0767"],small_tah:["\u0768"],small_v:["\u0769"],isolated:"\uFEE5",final:"\uFEE6",initial:"\uFEE7",medial:"\uFEE8"},heh:{normal:["\u0647"],isolated:"\uFEE9",final:"\uFEEA",initial:"\uFEEB",medial:"\uFEEC"},waw:{normal:["\u0648"],hamza_above:{normal:["\u0624","\u0648\u0654"],isolated:"\uFE85",final:"\uFE86"},high_hamza:["\u0676","\u0648\u0674"],ring:["\u06C4"],two_dots_above:["\u06CA"],dot_above:["\u06CF"],indic_two_above:["\u0778"],indic_three_above:["\u0779"],dot_within:["\u08AB"],isolated:"\uFEED",final:"\uFEEE"},alef_maksura:{normal:["\u0649"],hamza_above:["\u0626","\u064A\u0654"],initial:"\uFBE8",medial:"\uFBE9",isolated:"\uFEEF",final:"\uFEF0"},yeh:{normal:["\u064A"],hamza_above:{normal:["\u0626","\u0649\u0654"],isolated:"\uFE89",final:"\uFE8A",initial:"\uFE8B",medial:"\uFE8C"},two_dots_below_hamza_above:["\u08A8"],high_hamza:["\u0678","\u064A\u0674"],tail:["\u06CD"],small_v:["\u06CE"],three_dots_below:["\u06D1"],two_dots_below_dot_above:["\u08A9"],two_dots_below_small_noon_above:["\u08BA"],isolated:"\uFEF1",final:"\uFEF2",initial:"\uFEF3",medial:"\uFEF4"},tteh:{normal:["\u0679"],isolated:"\uFB66",final:"\uFB67",initial:"\uFB68",medial:"\uFB69"},tteheh:{normal:["\u067A"],isolated:"\uFB5E",final:"\uFB5F",initial:"\uFB60",medial:"\uFB61"},beeh:{normal:["\u067B"],isolated:"\uFB52",final:"\uFB53",initial:"\uFB54",medial:"\uFB55"},peh:{normal:["\u067E"],small_meem_above:["\u08B7"],isolated:"\uFB56",final:"\uFB57",initial:"\uFB58",medial:"\uFB59"},teheh:{normal:["\u067F"],isolated:"\uFB62",final:"\uFB63",initial:"\uFB64",medial:"\uFB65"},beheh:{normal:["\u0680"],isolated:"\uFB5A",final:"\uFB5B",initial:"\uFB5C",medial:"\uFB5D"},nyeh:{normal:["\u0683"],isolated:"\uFB76",final:"\uFB77",initial:"\uFB78",medial:"\uFB79"},dyeh:{normal:["\u0684"],isolated:"\uFB72",final:"\uFB73",initial:"\uFB74",medial:"\uFB75"},tcheh:{normal:["\u0686"],dot_above:["\u06BF"],isolated:"\uFB7A",final:"\uFB7B",initial:"\uFB7C",medial:"\uFB7D"},tcheheh:{normal:["\u0687"],isolated:"\uFB7E",final:"\uFB7F",initial:"\uFB80",medial:"\uFB81"},ddal:{normal:["\u0688"],isolated:"\uFB88",final:"\uFB89"},dahal:{normal:["\u068C"],isolated:"\uFB84",final:"\uFB85"},ddahal:{normal:["\u068D"],isolated:"\uFB82",final:"\uFB83"},dul:{normal:["\u068F","\u068E"],isolated:"\uFB86",final:"\uFB87"},rreh:{normal:["\u0691"],isolated:"\uFB8C",final:"\uFB8D"},jeh:{normal:["\u0698"],isolated:"\uFB8A",final:"\uFB8B"},veh:{normal:["\u06A4"],isolated:"\uFB6A",final:"\uFB6B",initial:"\uFB6C",medial:"\uFB6D"},peheh:{normal:["\u06A6"],isolated:"\uFB6E",final:"\uFB6F",initial:"\uFB70",medial:"\uFB71"},keheh:{normal:["\u06A9"],dot_above:["\u0762"],three_dots_above:["\u0763"],three_dots_pointing_upwards_below:["\u0764"],isolated:"\uFB8E",final:"\uFB8F",initial:"\uFB90",medial:"\uFB91"},ng:{normal:["\u06AD"],isolated:"\uFBD3",final:"\uFBD4",initial:"\uFBD5",medial:"\uFBD6"},gaf:{normal:["\u06AF"],ring:["\u06B0"],two_dots_below:["\u06B2"],three_dots_above:["\u06B4"],inverted_stroke:["\u08B0"],isolated:"\uFB92",final:"\uFB93",initial:"\uFB94",medial:"\uFB95"},ngoeh:{normal:["\u06B1"],isolated:"\uFB9A",final:"\uFB9B",initial:"\uFB9C",medial:"\uFB9D"},gueh:{normal:["\u06B3"],isolated:"\uFB96",final:"\uFB97",initial:"\uFB98",medial:"\uFB99"},"noon ghunna":{normal:["\u06BA"],isolated:"\uFB9E",final:"\uFB9F"},rnoon:{normal:["\u06BB"],isolated:"\uFBA0",final:"\uFBA1",initial:"\uFBA2",medial:"\uFBA3"},"heh doachashmee":{normal:["\u06BE"],isolated:"\uFBAA",final:"\uFBAB",initial:"\uFBAC",medial:"\uFBAD"},"heh goal":{normal:["\u06C1"],hamza_above:["\u06C1\u0654","\u06C2"],isolated:"\uFBA6",final:"\uFBA7",initial:"\uFBA8",medial:"\uFBA9"},"teh marbuta goal":{normal:["\u06C3"]},"kirghiz oe":{normal:["\u06C5"],isolated:"\uFBE0",final:"\uFBE1"},oe:{normal:["\u06C6"],isolated:"\uFBD9",final:"\uFBDA"},u:{normal:["\u06C7"],hamza_above:{normal:["\u0677","\u06C7\u0674"],isolated:"\uFBDD"},isolated:"\uFBD7",final:"\uFBD8"},yu:{normal:["\u06C8"],isolated:"\uFBDB",final:"\uFBDC"},"kirghiz yu":{normal:["\u06C9"],isolated:"\uFBE2",final:"\uFBE3"},ve:{normal:["\u06CB"],isolated:"\uFBDE",final:"\uFBDF"},"farsi yeh":{normal:["\u06CC"],indic_two_above:["\u0775"],indic_three_above:["\u0776"],indic_four_above:["\u0777"],isolated:"\uFBFC",final:"\uFBFD",initial:"\uFBFE",medial:"\uFBFF"},e:{normal:["\u06D0"],isolated:"\uFBE4",final:"\uFBE5",initial:"\uFBE6",medial:"\uFBE7"},"yeh barree":{normal:["\u06D2"],hamza_above:{normal:["\u06D2\u0654","\u06D3"],isolated:"\uFBB0",final:"\uFBB1"},indic_two_above:["\u077A"],indic_three_above:["\u077B"],isolated:"\uFBAE",final:"\uFBAF"},ae:{normal:["\u06D5"],isolated:"\u06D5",final:"\uFEEA",yeh_above:{normal:["\u06C0","\u06D5\u0654"],isolated:"\uFBA4",final:"\uFBA5"}},"rohingya yeh":{normal:["\u08AC"]},"low alef":{normal:["\u08AD"]},"straight waw":{normal:["\u08B1"]},"african feh":{normal:["\u08BB"]},"african qaf":{normal:["\u08BC"]},"african noon":{normal:["\u08BD"]}};kh.default=vG});var If=St(Ah=>{"use strict";Object.defineProperty(Ah,"__esModule",{value:!0});var yG={\u0626\u0627:{isolated:"\uFBEA",final:"\uFBEB"},\u0626\u06D5:{isolated:"\uFBEC",final:"\uFBED"},\u0626\u0648:{isolated:"\uFBEE",final:"\uFBEF"},\u0626\u06C7:{isolated:"\uFBF0",final:"\uFBF1"},\u0626\u06C6:{isolated:"\uFBF2",final:"\uFBF3"},\u0626\u06C8:{isolated:"\uFBF4",final:"\uFBF5"},\u0626\u06D0:{isolated:"\uFBF6",final:"\uFBF7",initial:"\uFBF8"},\u0626\u0649:{uighur_kirghiz:{isolated:"\uFBF9",final:"\uFBFA",initial:"\uFBFB"},isolated:"\uFC03",final:"\uFC68"},\u0626\u062C:{isolated:"\uFC00",initial:"\uFC97"},\u0626\u062D:{isolated:"\uFC01",initial:"\uFC98"},\u0626\u0645:{isolated:"\uFC02",final:"\uFC66",initial:"\uFC9A",medial:"\uFCDF"},\u0626\u064A:{isolated:"\uFC04",final:"\uFC69"},\u0628\u062C:{isolated:"\uFC05",initial:"\uFC9C"},\u0628\u062D:{isolated:"\uFC06",initial:"\uFC9D"},\u0628\u062E:{isolated:"\uFC07",initial:"\uFC9E"},\u0628\u0645:{isolated:"\uFC08",final:"\uFC6C",initial:"\uFC9F",medial:"\uFCE1"},\u0628\u0649:{isolated:"\uFC09",final:"\uFC6E"},\u0628\u064A:{isolated:"\uFC0A",final:"\uFC6F"},\u062A\u062C:{isolated:"\uFC0B",initial:"\uFCA1"},\u062A\u062D:{isolated:"\uFC0C",initial:"\uFCA2"},\u062A\u062E:{isolated:"\uFC0D",initial:"\uFCA3"},\u062A\u0645:{isolated:"\uFC0E",final:"\uFC72",initial:"\uFCA4",medial:"\uFCE3"},\u062A\u0649:{isolated:"\uFC0F",final:"\uFC74"},\u062A\u064A:{isolated:"\uFC10",final:"\uFC75"},\u062B\u062C:{isolated:"\uFC11"},\u062B\u0645:{isolated:"\uFC12",final:"\uFC78",initial:"\uFCA6",medial:"\uFCE5"},\u062B\u0649:{isolated:"\uFC13",final:"\uFC7A"},\u062B\u0648:{isolated:"\uFC14"},\u062C\u062D:{isolated:"\uFC15",initial:"\uFCA7"},\u062C\u0645:{isolated:"\uFC16",initial:"\uFCA8"},\u062D\u062C:{isolated:"\uFC17",initial:"\uFCA9"},\u062D\u0645:{isolated:"\uFC18",initial:"\uFCAA"},\u062E\u062C:{isolated:"\uFC19",initial:"\uFCAB"},\u062E\u062D:{isolated:"\uFC1A"},\u062E\u0645:{isolated:"\uFC1B",initial:"\uFCAC"},\u0633\u062C:{isolated:"\uFC1C",initial:"\uFCAD",medial:"\uFD34"},\u0633\u062D:{isolated:"\uFC1D",initial:"\uFCAE",medial:"\uFD35"},\u0633\u062E:{isolated:"\uFC1E",initial:"\uFCAF",medial:"\uFD36"},\u0633\u0645:{isolated:"\uFC1F",initial:"\uFCB0",medial:"\uFCE7"},\u0635\u062D:{isolated:"\uFC20",initial:"\uFCB1"},\u0635\u0645:{isolated:"\uFC21",initial:"\uFCB3"},\u0636\u062C:{isolated:"\uFC22",initial:"\uFCB4"},\u0636\u062D:{isolated:"\uFC23",initial:"\uFCB5"},\u0636\u062E:{isolated:"\uFC24",initial:"\uFCB6"},\u0636\u0645:{isolated:"\uFC25",initial:"\uFCB7"},\u0637\u062D:{isolated:"\uFC26",initial:"\uFCB8"},\u0637\u0645:{isolated:"\uFC27",initial:"\uFD33",medial:"\uFD3A"},\u0638\u0645:{isolated:"\uFC28",initial:"\uFCB9",medial:"\uFD3B"},\u0639\u062C:{isolated:"\uFC29",initial:"\uFCBA"},\u0639\u0645:{isolated:"\uFC2A",initial:"\uFCBB"},\u063A\u062C:{isolated:"\uFC2B",initial:"\uFCBC"},\u063A\u0645:{isolated:"\uFC2C",initial:"\uFCBD"},\u0641\u062C:{isolated:"\uFC2D",initial:"\uFCBE"},\u0641\u062D:{isolated:"\uFC2E",initial:"\uFCBF"},\u0641\u062E:{isolated:"\uFC2F",initial:"\uFCC0"},\u0641\u0645:{isolated:"\uFC30",initial:"\uFCC1"},\u0641\u0649:{isolated:"\uFC31",final:"\uFC7C"},\u0641\u064A:{isolated:"\uFC32",final:"\uFC7D"},\u0642\u062D:{isolated:"\uFC33",initial:"\uFCC2"},\u0642\u0645:{isolated:"\uFC34",initial:"\uFCC3"},\u0642\u0649:{isolated:"\uFC35",final:"\uFC7E"},\u0642\u064A:{isolated:"\uFC36",final:"\uFC7F"},\u0643\u0627:{isolated:"\uFC37",final:"\uFC80"},\u0643\u062C:{isolated:"\uFC38",initial:"\uFCC4"},\u0643\u062D:{isolated:"\uFC39",initial:"\uFCC5"},\u0643\u062E:{isolated:"\uFC3A",initial:"\uFCC6"},\u0643\u0644:{isolated:"\uFC3B",final:"\uFC81",initial:"\uFCC7",medial:"\uFCEB"},\u0643\u0645:{isolated:"\uFC3C",final:"\uFC82",initial:"\uFCC8",medial:"\uFCEC"},\u0643\u0649:{isolated:"\uFC3D",final:"\uFC83"},\u0643\u064A:{isolated:"\uFC3E",final:"\uFC84"},\u0644\u062C:{isolated:"\uFC3F",initial:"\uFCC9"},\u0644\u062D:{isolated:"\uFC40",initial:"\uFCCA"},\u0644\u062E:{isolated:"\uFC41",initial:"\uFCCB"},\u0644\u0645:{isolated:"\uFC42",final:"\uFC85",initial:"\uFCCC",medial:"\uFCED"},\u0644\u0649:{isolated:"\uFC43",final:"\uFC86"},\u0644\u064A:{isolated:"\uFC44",final:"\uFC87"},\u0645\u062C:{isolated:"\uFC45",initial:"\uFCCE"},\u0645\u062D:{isolated:"\uFC46",initial:"\uFCCF"},\u0645\u062E:{isolated:"\uFC47",initial:"\uFCD0"},\u0645\u0645:{isolated:"\uFC48",final:"\uFC89",initial:"\uFCD1"},\u0645\u0649:{isolated:"\uFC49"},\u0645\u064A:{isolated:"\uFC4A"},\u0646\u062C:{isolated:"\uFC4B",initial:"\uFCD2"},\u0646\u062D:{isolated:"\uFC4C",initial:"\uFCD3"},\u0646\u062E:{isolated:"\uFC4D",initial:"\uFCD4"},\u0646\u0645:{isolated:"\uFC4E",final:"\uFC8C",initial:"\uFCD5",medial:"\uFCEE"},\u0646\u0649:{isolated:"\uFC4F",final:"\uFC8E"},\u0646\u064A:{isolated:"\uFC50",final:"\uFC8F"},\u0647\u062C:{isolated:"\uFC51",initial:"\uFCD7"},\u0647\u0645:{isolated:"\uFC52",initial:"\uFCD8"},\u0647\u0649:{isolated:"\uFC53"},\u0647\u064A:{isolated:"\uFC54"},\u064A\u062C:{isolated:"\uFC55",initial:"\uFCDA"},\u064A\u062D:{isolated:"\uFC56",initial:"\uFCDB"},\u064A\u062E:{isolated:"\uFC57",initial:"\uFCDC"},\u064A\u0645:{isolated:"\uFC58",final:"\uFC93",initial:"\uFCDD",medial:"\uFCF0"},\u064A\u0649:{isolated:"\uFC59",final:"\uFC95"},\u064A\u064A:{isolated:"\uFC5A",final:"\uFC96"},\u0630\u0670:{isolated:"\uFC5B"},\u0631\u0670:{isolated:"\uFC5C"},\u0649\u0670:{isolated:"\uFC5D",final:"\uFC90"},"\u064C\u0651":{isolated:"\uFC5E"},"\u064D\u0651":{isolated:"\uFC5F"},"\u064E\u0651":{isolated:"\uFC60"},"\u064F\u0651":{isolated:"\uFC61"},"\u0650\u0651":{isolated:"\uFC62"},"\u0651\u0670":{isolated:"\uFC63"},\u0626\u0631:{final:"\uFC64"},\u0626\u0632:{final:"\uFC65"},\u0626\u0646:{final:"\uFC67"},\u0628\u0631:{final:"\uFC6A"},\u0628\u0632:{final:"\uFC6B"},\u0628\u0646:{final:"\uFC6D"},\u062A\u0631:{final:"\uFC70"},\u062A\u0632:{final:"\uFC71"},\u062A\u0646:{final:"\uFC73"},\u062B\u0631:{final:"\uFC76"},\u062B\u0632:{final:"\uFC77"},\u062B\u0646:{final:"\uFC79"},\u062B\u064A:{final:"\uFC7B"},\u0645\u0627:{final:"\uFC88"},\u0646\u0631:{final:"\uFC8A"},\u0646\u0632:{final:"\uFC8B"},\u0646\u0646:{final:"\uFC8D"},\u064A\u0631:{final:"\uFC91"},\u064A\u0632:{final:"\uFC92"},\u064A\u0646:{final:"\uFC94"},\u0626\u062E:{initial:"\uFC99"},\u0626\u0647:{initial:"\uFC9B",medial:"\uFCE0"},\u0628\u0647:{initial:"\uFCA0",medial:"\uFCE2"},\u062A\u0647:{initial:"\uFCA5",medial:"\uFCE4"},\u0635\u062E:{initial:"\uFCB2"},\u0644\u0647:{initial:"\uFCCD"},\u0646\u0647:{initial:"\uFCD6",medial:"\uFCEF"},\u0647\u0670:{initial:"\uFCD9"},\u064A\u0647:{initial:"\uFCDE",medial:"\uFCF1"},\u062B\u0647:{medial:"\uFCE6"},\u0633\u0647:{medial:"\uFCE8",initial:"\uFD31"},\u0634\u0645:{medial:"\uFCE9",isolated:"\uFD0C",final:"\uFD28",initial:"\uFD30"},\u0634\u0647:{medial:"\uFCEA",initial:"\uFD32"},\u0640\u064E\u0651:{medial:"\uFCF2"},\u0640\u064F\u0651:{medial:"\uFCF3"},\u0640\u0650\u0651:{medial:"\uFCF4"},\u0637\u0649:{isolated:"\uFCF5",final:"\uFD11"},\u0637\u064A:{isolated:"\uFCF6",final:"\uFD12"},\u0639\u0649:{isolated:"\uFCF7",final:"\uFD13"},\u0639\u064A:{isolated:"\uFCF8",final:"\uFD14"},\u063A\u0649:{isolated:"\uFCF9",final:"\uFD15"},\u063A\u064A:{isolated:"\uFCFA",final:"\uFD16"},\u0633\u0649:{isolated:"\uFCFB"},\u0633\u064A:{isolated:"\uFCFC",final:"\uFD18"},\u0634\u0649:{isolated:"\uFCFD",final:"\uFD19"},\u0634\u064A:{isolated:"\uFCFE",final:"\uFD1A"},\u062D\u0649:{isolated:"\uFCFF",final:"\uFD1B"},\u062D\u064A:{isolated:"\uFD00",final:"\uFD1C"},\u062C\u0649:{isolated:"\uFD01",final:"\uFD1D"},\u062C\u064A:{isolated:"\uFD02",final:"\uFD1E"},\u062E\u0649:{isolated:"\uFD03",final:"\uFD1F"},\u062E\u064A:{isolated:"\uFD04",final:"\uFD20"},\u0635\u0649:{isolated:"\uFD05",final:"\uFD21"},\u0635\u064A:{isolated:"\uFD06",final:"\uFD22"},\u0636\u0649:{isolated:"\uFD07",final:"\uFD23"},\u0636\u064A:{isolated:"\uFD08",final:"\uFD24"},\u0634\u062C:{isolated:"\uFD09",final:"\uFD25",initial:"\uFD2D",medial:"\uFD37"},\u0634\u062D:{isolated:"\uFD0A",final:"\uFD26",initial:"\uFD2E",medial:"\uFD38"},\u0634\u062E:{isolated:"\uFD0B",final:"\uFD27",initial:"\uFD2F",medial:"\uFD39"},\u0634\u0631:{isolated:"\uFD0D",final:"\uFD29"},\u0633\u0631:{isolated:"\uFD0E",final:"\uFD2A"},\u0635\u0631:{isolated:"\uFD0F",final:"\uFD2B"},\u0636\u0631:{isolated:"\uFD10",final:"\uFD2C"},\u0633\u0639:{final:"\uFD17"},\u062A\u062C\u0645:{initial:"\uFD50"},\u062A\u062D\u062C:{final:"\uFD51",initial:"\uFD52"},\u062A\u062D\u0645:{initial:"\uFD53"},\u062A\u062E\u0645:{initial:"\uFD54"},\u062A\u0645\u062C:{initial:"\uFD55"},\u062A\u0645\u062D:{initial:"\uFD56"},\u062A\u0645\u062E:{initial:"\uFD57"},\u062C\u0645\u062D:{final:"\uFD58",initial:"\uFD59"},\u062D\u0645\u064A:{final:"\uFD5A"},\u062D\u0645\u0649:{final:"\uFD5B"},\u0633\u062D\u062C:{initial:"\uFD5C"},\u0633\u062C\u062D:{initial:"\uFD5D"},\u0633\u062C\u0649:{final:"\uFD5E"},\u0633\u0645\u062D:{final:"\uFD5F",initial:"\uFD60"},\u0633\u0645\u062C:{initial:"\uFD61"},\u0633\u0645\u0645:{final:"\uFD62",initial:"\uFD63"},\u0635\u062D\u062D:{final:"\uFD64",initial:"\uFD65"},\u0635\u0645\u0645:{final:"\uFD66",initial:"\uFDC5"},\u0634\u062D\u0645:{final:"\uFD67",initial:"\uFD68"},\u0634\u062C\u064A:{final:"\uFD69"},\u0634\u0645\u062E:{final:"\uFD6A",initial:"\uFD6B"},\u0634\u0645\u0645:{final:"\uFD6C",initial:"\uFD6D"},\u0636\u062D\u0649:{final:"\uFD6E"},\u0636\u062E\u0645:{final:"\uFD6F",initial:"\uFD70"},\u0636\u0645\u062D:{final:"\uFD71"},\u0637\u0645\u062D:{initial:"\uFD72"},\u0637\u0645\u0645:{initial:"\uFD73"},\u0637\u0645\u064A:{final:"\uFD74"},\u0639\u062C\u0645:{final:"\uFD75",initial:"\uFDC4"},\u0639\u0645\u0645:{final:"\uFD76",initial:"\uFD77"},\u0639\u0645\u0649:{final:"\uFD78"},\u063A\u0645\u0645:{final:"\uFD79"},\u063A\u0645\u064A:{final:"\uFD7A"},\u063A\u0645\u0649:{final:"\uFD7B"},\u0641\u062E\u0645:{final:"\uFD7C",initial:"\uFD7D"},\u0642\u0645\u062D:{final:"\uFD7E",initial:"\uFDB4"},\u0642\u0645\u0645:{final:"\uFD7F"},\u0644\u062D\u0645:{final:"\uFD80",initial:"\uFDB5"},\u0644\u062D\u064A:{final:"\uFD81"},\u0644\u062D\u0649:{final:"\uFD82"},\u0644\u062C\u062C:{initial:"\uFD83",final:"\uFD84"},\u0644\u062E\u0645:{final:"\uFD85",initial:"\uFD86"},\u0644\u0645\u062D:{final:"\uFD87",initial:"\uFD88"},\u0645\u062D\u062C:{initial:"\uFD89"},\u0645\u062D\u0645:{initial:"\uFD8A"},\u0645\u062D\u064A:{final:"\uFD8B"},\u0645\u062C\u062D:{initial:"\uFD8C"},\u0645\u062C\u0645:{initial:"\uFD8D"},\u0645\u062E\u062C:{initial:"\uFD8E"},\u0645\u062E\u0645:{initial:"\uFD8F"},\u0645\u062C\u062E:{initial:"\uFD92"},\u0647\u0645\u062C:{initial:"\uFD93"},\u0647\u0645\u0645:{initial:"\uFD94"},\u0646\u062D\u0645:{initial:"\uFD95"},\u0646\u062D\u0649:{final:"\uFD96"},\u0646\u062C\u0645:{final:"\uFD97",initial:"\uFD98"},\u0646\u062C\u0649:{final:"\uFD99"},\u0646\u0645\u064A:{final:"\uFD9A"},\u0646\u0645\u0649:{final:"\uFD9B"},\u064A\u0645\u0645:{final:"\uFD9C",initial:"\uFD9D"},\u0628\u062E\u064A:{final:"\uFD9E"},\u062A\u062C\u064A:{final:"\uFD9F"},\u062A\u062C\u0649:{final:"\uFDA0"},\u062A\u062E\u064A:{final:"\uFDA1"},\u062A\u062E\u0649:{final:"\uFDA2"},\u062A\u0645\u064A:{final:"\uFDA3"},\u062A\u0645\u0649:{final:"\uFDA4"},\u062C\u0645\u064A:{final:"\uFDA5"},\u062C\u062D\u0649:{final:"\uFDA6"},\u062C\u0645\u0649:{final:"\uFDA7"},\u0633\u062E\u0649:{final:"\uFDA8"},\u0635\u062D\u064A:{final:"\uFDA9"},\u0634\u062D\u064A:{final:"\uFDAA"},\u0636\u062D\u064A:{final:"\uFDAB"},\u0644\u062C\u064A:{final:"\uFDAC"},\u0644\u0645\u064A:{final:"\uFDAD"},\u064A\u062D\u064A:{final:"\uFDAE"},\u064A\u062C\u064A:{final:"\uFDAF"},\u064A\u0645\u064A:{final:"\uFDB0"},\u0645\u0645\u064A:{final:"\uFDB1"},\u0642\u0645\u064A:{final:"\uFDB2"},\u0646\u062D\u064A:{final:"\uFDB3"},\u0639\u0645\u064A:{final:"\uFDB6"},\u0643\u0645\u064A:{final:"\uFDB7"},\u0646\u062C\u062D:{initial:"\uFDB8",final:"\uFDBD"},\u0645\u062E\u064A:{final:"\uFDB9"},\u0644\u062C\u0645:{initial:"\uFDBA",final:"\uFDBC"},\u0643\u0645\u0645:{final:"\uFDBB",initial:"\uFDC3"},\u062C\u062D\u064A:{final:"\uFDBE"},\u062D\u062C\u064A:{final:"\uFDBF"},\u0645\u062C\u064A:{final:"\uFDC0"},\u0641\u0645\u064A:{final:"\uFDC1"},\u0628\u062D\u064A:{final:"\uFDC2"},\u0633\u062E\u064A:{final:"\uFDC6"},\u0646\u062C\u064A:{final:"\uFDC7"},\u0644\u0622:{isolated:"\uFEF5",final:"\uFEF6"},\u0644\u0623:{isolated:"\uFEF7",final:"\uFEF8"},\u0644\u0625:{isolated:"\uFEF9",final:"\uFEFA"},\u0644\u0627:{isolated:"\uFEFB",final:"\uFEFC"},words:{\u0635\u0644\u06D2:"\uFDF0",\u0642\u0644\u06D2:"\uFDF1",\u0627\u0644\u0644\u0647:"\uFDF2",\u0627\u0643\u0628\u0631:"\uFDF3",\u0645\u062D\u0645\u062F:"\uFDF4",\u0635\u0644\u0639\u0645:"\uFDF5",\u0631\u0633\u0648\u0644:"\uFDF6",\u0639\u0644\u064A\u0647:"\uFDF7",\u0648\u0633\u0644\u0645:"\uFDF8",\u0635\u0644\u0649:"\uFDF9",\u0635\u0644\u0649\u0627\u0644\u0644\u0647\u0639\u0644\u064A\u0647\u0648\u0633\u0644\u0645:"\uFDFA",\u062C\u0644\u062C\u0644\u0627\u0644\u0647:"\uFDFB",\u0631\u06CC\u0627\u0644:"\uFDFC"}};Ah.default=yG});var n0=St(Ao=>{"use strict";Object.defineProperty(Ao,"__esModule",{value:!0});var bG=U3(),bA=If(),xG=Object.keys(bG.default);Ao.letterList=xG;var wG=Object.keys(bA.default);Ao.ligatureList=wG;var _G=Object.keys(bA.default.words);Ao.ligatureWordList=_G;var EG="\u0644\u06B5\u06B6\u06B7\u06B8";Ao.lams=EG;var kG="\u0627\u0622\u0623\u0625\u0671\u0672\u0673\u0675\u0773\u0774";Ao.alefs=kG;var xA="\u0605\u0640\u0670\u0674\u06DF\u06E7\u06E8";Ao.tashkeel=xA;function Z1(e,t){for(var r=e;r<=t;r++)Ao.tashkeel=xA+=String.fromCharCode(r)}Z1(1552,1562);Z1(1611,1631);Z1(1750,1756);Z1(1760,1764);Z1(1770,1773);Z1(2259,2273);Z1(2275,2303);Z1(65136,65151);var wA="\u0627\u0629\u0648\u06C0\u06CF\u06FD\u06FE\u076B\u076C\u0771\u0773\u0774\u0778\u0779\u08E2\u08B1\u08B2\u08B9";Ao.lineBreakers=wA;function Ni(e,t){for(var r=e;r<=t;r++)Ao.lineBreakers=wA+=String.fromCharCode(r)}Ni(1536,1567);Ni(1569,1573);Ni(1583,1586);Ni(1632,1645);Ni(1649,1655);Ni(1672,1689);Ni(1731,1739);Ni(1746,1785);Ni(1881,1883);Ni(2218,2222);Ni(64336,65021);Ni(65152,65276);Ni(69216,69247);Ni(126064,126143);Ni(126464,126719)});var _A=St(Sh=>{"use strict";Object.defineProperty(Sh,"__esModule",{value:!0});var AG=K1(),W4=n0();function SG(e){let t=[],r="";return e.split("").forEach(n=>{AG.isArabic(n)&&(W4.tashkeel.indexOf(n)>-1||r.length&&(W4.lams.indexOf(r)===0&&W4.alefs.indexOf(n)>-1||W4.lams.indexOf(r)>0&&W4.alefs.indexOf(n)===0))?t[t.length-1]+=n:t.push(n),W4.tashkeel.indexOf(n)===-1&&(r=n)}),t}Sh.GlyphSplitter=SG});var kA=St(Ih=>{"use strict";Object.defineProperty(Ih,"__esModule",{value:!0});var EA=K1(),Ch=n0();function CG(e){let t=[],r="";return e.split("").forEach(n=>{EA.isArabic(n)&&EA.isArabic(r)?r.length&&Ch.tashkeel.indexOf(n)>-1?t[t.length-1]+=n:Ch.lineBreakers.indexOf(r)>-1?t.push(n):t[t.length-1]+=n:t.push(n),Ch.tashkeel.indexOf(n)===-1&&(r=n)}),t}Ih.BaselineSplitter=CG});var AA=St(Dh=>{"use strict";Object.defineProperty(Dh,"__esModule",{value:!0});var IG=U3(),Fh=If(),FG=K1(),Q4=n0();function DG(e,t){typeof t>"u"&&(t=!0);let r="";return e.split("").forEach(n=>{if(!FG.isArabic(n)){r+=n;return}for(let i=0;i"u"){let u=Object.keys(l);for(let c=0;c-1){if(f===n){if(t&&l.normal&&["isolated","initial","medial","final"].indexOf(u[c])>-1){typeof l.normal=="object"?r+=l.normal[0]:r+=l.normal;return}r+=n;return}else if(typeof f=="object"&&f.indexOf&&f.indexOf(n)>-1){r+=f[0];return}}}}else if(l===n){if(t&&a.normal&&["isolated","initial","medial","final"].indexOf(o[s])>-1){typeof a.normal=="object"?r+=a.normal[0]:r+=a.normal;return}r+=n;return}else if(typeof l=="object"&&l.indexOf&&l.indexOf(n)>-1){r+=l[0];return}}}for(let i=0;i{"use strict";Object.defineProperty(Th,"__esModule",{value:!0});var TG=U3(),MG=K1(),SA=n0();function NG(e,t){if(!MG.isArabic(e))throw new Error("Not Arabic");if(e==="\u0621")return"\u0621";for(let r=0;r-1){if(i.indexOf(t)>-1)return n[t]}else if(typeof o=="object"&&typeof o.indexOf>"u"){let s=Object.keys(o);for(let l=0;l-1)&&s.indexOf(t)>-1)return o[t]}}}}Th.CharShaper=NG});var IA=St(Ph=>{"use strict";Object.defineProperty(Ph,"__esModule",{value:!0});var Nh=K1(),z3=n0(),CA=Mh(),PG=If();function OG(e){let t="initial",r="";for(let n=0;n-1)r+=e[n];else if(i===" "||z3.lineBreakers.indexOf(e[n])>-1)r+=CA.CharShaper(e[n],t==="initial"?"isolated":"final"),t="initial";else if(z3.lams.indexOf(e[n])>-1&&z3.alefs.indexOf(i)>-1){for(r+=PG.default[e[n]+i][t==="initial"?"isolated":"final"];e[n]!==i;)n++;t="initial"}else r+=CA.CharShaper(e[n],t),t="medial"}return r}Ph.WordShaper=OG});var TA=St(Df=>{"use strict";Object.defineProperty(Df,"__esModule",{value:!0});var FA=U3(),DA=K1(),Ff=n0();function LG(e){if(!DA.isArabic(e))throw new Error("Not an Arabic letter");for(let t=0;t"u"){let o=Object.keys(a);for(let s=0;s-1)return a}}else if(a===e||typeof a=="object"&&a.indexOf&&a.indexOf(e)>-1)return r}return null}}Df.ParentLetter=LG;function RG(e){if(!DA.isArabic(e))throw new Error("Not an Arabic letter");for(let t=0;t"u"){let o=Object.keys(a);for(let s=0;s-1)return r}}else if(a===e||typeof a=="object"&&a.indexOf&&a.indexOf(e)>-1)return r}return null}}Df.GrandparentLetter=RG});var NA=St(Zo=>{"use strict";Object.defineProperty(Zo,"__esModule",{value:!0});var BG=K1();Zo.isArabic=BG.isArabic;var $G=_A();Zo.GlyphSplitter=$G.GlyphSplitter;var UG=kA();Zo.BaselineSplitter=UG.BaselineSplitter;var zG=AA();Zo.Normal=zG.Normal;var qG=Mh();Zo.CharShaper=qG.CharShaper;var VG=IA();Zo.WordShaper=VG.WordShaper;var MA=TA();Zo.ParentLetter=MA.ParentLetter;Zo.GrandparentLetter=MA.GrandparentLetter});var Lh=St((LA,V3)=>{(function(e){"use strict";function t(n){var i=n.replace(/[^0-9.]/g,"").match(/[0-9]*\.|[0-9]+/g)||[];return n={major:+i[0]||0,minor:+i[1]||0,patch:+i[2]||0,build:+i[3]||0},n.isEmpty=!n.major&&!n.minor&&!n.patch&&!n.build,n.parsed=[n.major,n.minor,n.patch,n.build],n.text=n.parsed.join("."),n.compare=r,n}function r(n){typeof n=="string"&&(n=t(n));for(var i=0;i<4;i++)if(this.parsed[i]!==n.parsed[i])return this.parsed[i]>n.parsed[i]?1:-1;return 0}typeof V3=="object"&&V3&&typeof V3.exports=="object"?V3.exports=t:e.parseVersion=t})(LA)});var GA=St((Bh,$h)=>{(function(e,t){typeof Bh=="object"&&typeof $h<"u"?$h.exports=t():typeof define=="function"&&define.amd?define(t):e.quickselect=t()})(Bh,function(){"use strict";function e(i,a,o,s,l){t(i,a,o||0,s||i.length-1,l||n)}function t(i,a,o,s,l){for(;s>o;){if(s-o>600){var u=s-o+1,c=a-o+1,f=Math.log(u),p=.5*Math.exp(2*f/3),d=.5*Math.sqrt(f*p*(u-p)/u)*(c-u/2<0?-1:1),g=Math.max(o,Math.floor(a-c*p/u+d)),x=Math.min(s,Math.floor(a+(u-c)*p/u+d));t(i,a,g,x,l)}var b=i[a],m=o,v=s;for(r(i,o,a),l(i[s],b)>0&&r(i,o,s);m0;)v--}l(i[o],b)===0?r(i,o,v):(v++,r(i,v,s)),v<=a&&(o=v+1),a<=v&&(s=v-1)}}function r(i,a,o){var s=i[a];i[a]=i[o],i[o]=s}function n(i,a){return ia?1:0}return e})});var QA=St((q4e,qh)=>{"use strict";qh.exports=H3;qh.exports.default=H3;var jG=GA();function H3(e,t){if(!(this instanceof H3))return new H3(e,t);this._maxEntries=Math.max(4,e||9),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),t&&this._initFormat(t),this.clear()}H3.prototype={all:function(){return this._all(this.data,[])},search:function(e){var t=this.data,r=[],n=this.toBBox;if(!Nf(e,t))return r;for(var i=[],a,o,s,l;t;){for(a=0,o=t.children.length;a=0&&a[t].children.length>this._maxEntries;)this._split(a,t),t--;this._adjustParentBBoxes(i,a,t)},_split:function(e,t){var r=e[t],n=r.children.length,i=this._minEntries;this._chooseSplitAxis(r,i,n);var a=this._chooseSplitIndex(r,i,n),o=K4(r.children.splice(a,r.children.length-a));o.height=r.height,o.leaf=r.leaf,Y4(r,this.toBBox),Y4(o,this.toBBox),t?e[t-1].children.push(o):this._splitRoot(r,o)},_splitRoot:function(e,t){this.data=K4([e,t]),this.data.height=e.height+1,this.data.leaf=!1,Y4(this.data,this.toBBox)},_chooseSplitIndex:function(e,t,r){var n,i,a,o,s,l,u,c;for(l=u=1/0,n=t;n<=r-t;n++)i=G3(e,0,n,this.toBBox),a=G3(e,n,r,this.toBBox),o=QG(i,a),s=Uh(i)+Uh(a),o=t;l--)u=e.children[l],j3(o,e.leaf?i(u):u),s+=Mf(o);return s},_adjustParentBBoxes:function(e,t,r){for(var n=r;n>=0;n--)j3(t[n],e)},_condense:function(e){for(var t=e.length-1,r;t>=0;t--)e[t].children.length===0?t>0?(r=e[t-1].children,r.splice(r.indexOf(e[t]),1)):this.clear():Y4(e[t],this.toBBox)},_initFormat:function(e){var t=["return a"," - b",";"];this.compareMinX=new Function("a","b",t.join(e[0])),this.compareMinY=new Function("a","b",t.join(e[1])),this.toBBox=new Function("a","return {minX: a"+e[0]+", minY: a"+e[1]+", maxX: a"+e[2]+", maxY: a"+e[3]+"};")}};function HG(e,t,r){if(!r)return t.indexOf(e);for(var n=0;n=e.minX&&t.maxY>=e.minY}function K4(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function WA(e,t,r,n,i){for(var a=[t,r],o;a.length;)r=a.pop(),t=a.pop(),!(r-t<=n)&&(o=t+Math.ceil((r-t)/n/2)*n,jG(e,o,t,r,i),a.push(t,o,o,r))}});var YA=St((V4e,XA)=>{"use strict";XA.exports=Pf;Pf.polyline=Pf;Pf.polygon=XG;function Pf(e,t,r){var n=e.length,i=Z4(e[0],t),a=[],o,s,l,u,c;for(r||(r=[]),o=1;ot[2]&&(r|=2),e[1]t[3]&&(r|=8),r}});var W3=St((G4e,JA)=>{"use strict";var YG=QA(),KG=YA();JA.exports=ZG;function ZG(e){for(var t=[],r=0;r0)return!0;return!1}function ZA(e,t){for(var r=!1,n=0,i=e.length;ne[1]!=r[1]>e[1]&&e[0]<(r[0]-t[0])*(e[1]-t[1])/(r[1]-t[1])+t[0]}function KA(e,t){for(var r={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0,coords:e,props:t},n=0;n{jf.exports.RADIUS=6378137;jf.exports.FLATTENING=1/298.257223563;jf.exports.POLAR_RADIUS=63567523142e-4});var og=St((j2e,ag)=>{var ES=_S();ag.exports.geometry=AS;ag.exports.ring=ig;function AS(e){var t=0,r;switch(e.type){case"Polygon":return kS(e.coordinates);case"MultiPolygon":for(r=0;r0){t+=Math.abs(ig(e[0]));for(var r=1;r2){for(s=0;s{SS.validateCenter=function(t){var r=[2,3];if(!Array.isArray(t)||!r.includes(t.length))throw new Error("ERROR! Center has to be an array of length two or three");var[n,i]=t;if(typeof n!="number"||typeof i!="number")throw new Error(`ERROR! Longitude and Latitude has to be numbers but where ${typeof n} and ${typeof i}`);if(n>180||n<-180)throw new Error(`ERROR! Longitude has to be between -180 and 180 but was ${n}`);if(i>90||i<-90)throw new Error(`ERROR! Latitude has to be between -90 and 90 but was ${i}`)}});var FS=St(IS=>{IS.validateRadius=function(t){if(typeof t!="number")throw new Error(`ERROR! Radius has to be a positive number but was: ${typeof t}`);if(t<=0)throw new Error(`ERROR! Radius has to be a positive number but was: ${t}`)}});var TS=St(DS=>{DS.validateNumberOfEdges=function(t){if(typeof t!="number"){let r=Array.isArray(t)?"array":typeof t;throw new Error(`ERROR! Number of edges has to be a number but was: ${r}`)}if(t<3)throw new Error(`ERROR! Number of edges has to be at least 3 but was: ${t}`)}});var NS=St(MS=>{MS.validateEarthRadius=function(t){if(typeof t!="number"){let r=Array.isArray(t)?"array":typeof t;throw new Error(`ERROR! Earth radius has to be a number but was: ${r}`)}if(t<=0)throw new Error(`ERROR! Earth radius has to be a positive number but was: ${t}`)}});var OS=St(PS=>{PS.validateBearing=function(t){if(typeof t!="number"){let r=Array.isArray(t)?"array":typeof t;throw new Error(`ERROR! Bearing has to be a number but was: ${r}`)}}});var zS=St(s0=>{var LS=CS().validateCenter,RS=FS().validateRadius,BS=TS().validateNumberOfEdges,$S=NS().validateEarthRadius,US=OS().validateBearing;function yj({center:e,radius:t,numberOfEdges:r,earthRadius:n,bearing:i}){LS(e),RS(t),BS(r),$S(n),US(i)}s0.validateCenter=LS;s0.validateRadius=RS;s0.validateNumberOfEdges=BS;s0.validateEarthRadius=$S;s0.validateBearing=US;s0.validateInput=yj});var GS=St((Z2e,VS)=>{"use strict";var{validateInput:bj}=zS(),sg=6378137;function lg(e){return e*Math.PI/180}function qS(e){return e*180/Math.PI}function xj(e,t,r,n){var i=lg(e[1]),a=lg(e[0]),o=t/r,s=Math.asin(Math.sin(i)*Math.cos(o)+Math.cos(i)*Math.sin(o)*Math.cos(n)),l=a+Math.atan2(Math.sin(n)*Math.sin(o)*Math.cos(i),Math.cos(o)-Math.sin(i)*Math.sin(s));return[qS(l),qS(s)]}VS.exports=function(t,r,n){var i=wj(n),a=_j(n),o=kj(n),s=Ej(n);bj({center:t,radius:r,numberOfEdges:i,earthRadius:a,bearing:o});for(var l=lg(o),u=[],c=0;c{(function(){function e(t,r,n){function i(p){return p.map(function(d,g){return g<2?1*d.toFixed(r):1*d.toFixed(n)})}function a(p){return p.map(i)}function o(p){return p.map(a)}function s(p){return p.map(o)}function l(p){if(!p)return{};switch(p.type){case"Point":return p.coordinates=i(p.coordinates),p;case"LineString":case"MultiPoint":return p.coordinates=a(p.coordinates),p;case"Polygon":case"MultiLineString":return p.coordinates=o(p.coordinates),p;case"MultiPolygon":return p.coordinates=s(p.coordinates),p;case"GeometryCollection":return p.geometries=p.geometries.map(l),p;default:return{}}}function u(p){return p.geometry=l(p.geometry),p}function c(p){return p.features=p.features.map(u),p}function f(p){return p.geometries=p.geometries.map(l),p}if(!t)return t;switch(t.type){case"Feature":return u(t);case"GeometryCollection":return f(t);case"FeatureCollection":return c(t);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiPolygon":case"MultiLineString":return l(t);default:return t}}cg.exports=e,cg.exports.parse=e})()});var QS=St((eue,WS)=>{function Wf(e){return typeof e=="object"&&e!==null}function Aj(e,t){Array.isArray(e)?e.forEach(t):Wf(e)&&Object.keys(e).forEach(function(r){var n=e[r];t(n,r)})}function HS(e){var t=0;return Array.isArray(e)||Wf(e)?(Aj(e,function(r){if(Array.isArray(r)||Wf(r)){var n=HS(r);n>t&&(t=n)}}),t+1):t}function Sj(e,t){t=t||{};var r=JSON.stringify([1],null,r2(t,"indent",2)).slice(2,-3),n=r2(t,"margins",!1),i=r2(t,"arrayMargins",!1),a=r2(t,"objectMargins",!1),o=r===""?1/0:r2(t,"maxLength",80),s=r2(t,"maxNesting",1/0);return function l(u,c,f){u&&typeof u.toJSON=="function"&&(u=u.toJSON());var p=JSON.stringify(u);if(p===void 0)return p;var d=o-c.length-f,g=HS(u);if(g<=s&&p.length<=d){var x=Ij(p,{addMargin:n,addArrayMargin:i,addObjectMargin:a});if(x.length<=d)return x}if(Wf(u)){var b=c+r,m=[],v,y=function(w,A){return A===w.length-1?0:1};if(Array.isArray(u)){for(var _=0;_0)return[v[0],r+m.join(`, +`+b),v[1]].join(` +`+c)}return p}(e,"",0)}var Cj=/("(?:[^\\"]|\\.)*")|[:,\][}{]/g;function Ij(e,t){t=t||{};var r={"{":"{","}":"}","[":"[","]":"]",",":", ",":":": "};return(t.addMargin||t.addObjectMargin)&&(r["{"]="{ ",r["}"]=" }"),(t.addMargin||t.addArrayMargin)&&(r["["]="[ ",r["]"]=" ]"),e.replace(Cj,function(n,i){return i?n:r[n]})}function r2(e,t,r){return t in e?e[t]:r}WS.exports=Sj});var LI=St((_g,OI)=>{(function(e){"use strict";function t(B){return parseInt(B)===B}function r(B){if(!t(B.length))return!1;for(var $=0;$255)return!1;return!0}function n(B,$){if(B.buffer&&B.name==="Uint8Array")return $&&(B.slice?B=B.slice():B=Array.prototype.slice.call(B)),B;if(Array.isArray(B)){if(!r(B))throw new Error("Array contains invalid value: "+B);return new Uint8Array(B)}if(t(B.length)&&r(B))return new Uint8Array(B);throw new Error("unsupported array-like object")}function i(B){return new Uint8Array(B)}function a(B,$,z,V,H){(V!=null||H!=null)&&(B.slice?B=B.slice(V,H):B=Array.prototype.slice.call(B,V,H)),$.set(B,z)}var o=function(){function B(z){var V=[],H=0;for(z=encodeURI(z);H191&&Z<224?(V.push(String.fromCharCode((Z&31)<<6|z[H+1]&63)),H+=2):(V.push(String.fromCharCode((Z&15)<<12|(z[H+1]&63)<<6|z[H+2]&63)),H+=3)}return V.join("")}return{toBytes:B,fromBytes:$}}(),s=function(){function B(V){for(var H=[],Z=0;Z>4]+$[oe&15])}return H.join("")}return{toBytes:B,fromBytes:z}}(),l={16:10,24:12,32:14},u=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],c=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],f=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],p=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],d=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],g=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],x=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],b=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],m=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],v=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],y=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],_=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],w=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],A=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],I=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function E(B){for(var $=[],z=0;z>2,this._Ke[Z][$%4]=H[$],this._Kd[B-Z][$%4]=H[$];for(var oe=0,pe=V,ne;pe>16&255]<<24^c[ne>>8&255]<<16^c[ne&255]<<8^c[ne>>24&255]^u[oe]<<24,oe+=1,V!=8)for(var $=1;$>8&255]<<8^c[ne>>16&255]<<16^c[ne>>24&255]<<24;for(var $=V/2+1;$>2,ve=pe%4,this._Ke[ge][ve]=H[$],this._Kd[B-ge][ve]=H[$++],pe++}for(var ge=1;ge>24&255]^w[ne>>16&255]^A[ne>>8&255]^I[ne&255]},k.prototype.encrypt=function(B){if(B.length!=16)throw new Error("invalid plaintext size (must be 16 bytes)");for(var $=this._Ke.length-1,z=[0,0,0,0],V=E(B),H=0;H<4;H++)V[H]^=this._Ke[0][H];for(var Z=1;Z<$;Z++){for(var H=0;H<4;H++)z[H]=p[V[H]>>24&255]^d[V[(H+1)%4]>>16&255]^g[V[(H+2)%4]>>8&255]^x[V[(H+3)%4]&255]^this._Ke[Z][H];V=z.slice()}for(var oe=i(16),pe,H=0;H<4;H++)pe=this._Ke[$][H],oe[4*H]=(c[V[H]>>24&255]^pe>>24)&255,oe[4*H+1]=(c[V[(H+1)%4]>>16&255]^pe>>16)&255,oe[4*H+2]=(c[V[(H+2)%4]>>8&255]^pe>>8)&255,oe[4*H+3]=(c[V[(H+3)%4]&255]^pe)&255;return oe},k.prototype.decrypt=function(B){if(B.length!=16)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var $=this._Kd.length-1,z=[0,0,0,0],V=E(B),H=0;H<4;H++)V[H]^=this._Kd[0][H];for(var Z=1;Z<$;Z++){for(var H=0;H<4;H++)z[H]=b[V[H]>>24&255]^m[V[(H+3)%4]>>16&255]^v[V[(H+2)%4]>>8&255]^y[V[(H+1)%4]&255]^this._Kd[Z][H];V=z.slice()}for(var oe=i(16),pe,H=0;H<4;H++)pe=this._Kd[$][H],oe[4*H]=(f[V[H]>>24&255]^pe>>24)&255,oe[4*H+1]=(f[V[(H+3)%4]>>16&255]^pe>>16)&255,oe[4*H+2]=(f[V[(H+2)%4]>>8&255]^pe>>8)&255,oe[4*H+3]=(f[V[(H+1)%4]&255]^pe)&255;return oe};var S=function(B){if(!(this instanceof S))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new k(B)};S.prototype.encrypt=function(B){if(B=n(B),B.length%16!==0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var $=i(B.length),z=i(16),V=0;VNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var $=15;$>=0;--$)this._counter[$]=B%256,B=parseInt(B/256)},T.prototype.setBytes=function(B){if(B=n(B,!0),B.length!=16)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=B},T.prototype.increment=function(){for(var B=15;B>=0;B--)if(this._counter[B]===255)this._counter[B]=0;else{this._counter[B]++;break}};var M=function(B,$){if(!(this instanceof M))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",$ instanceof T||($=new T($)),this._counter=$,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new k(B)};M.prototype.encrypt=function(B){for(var $=n(B,!0),z=0;z<$.length;z++)this._remainingCounterIndex===16&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),$[z]^=this._remainingCounter[this._remainingCounterIndex++];return $},M.prototype.decrypt=M.prototype.encrypt;function R(B){B=n(B,!0);var $=16-B.length%16,z=i(B.length+$);a(B,z);for(var V=B.length;V16)throw new Error("PKCS#7 padding byte out of range");for(var z=B.length-$,V=0;V<$;V++)if(B[z+V]!==$)throw new Error("PKCS#7 invalid padding byte");var H=i(z);return a(B,H,0,0,z),H}var U={AES:k,Counter:T,ModeOfOperation:{ecb:S,cbc:D,cfb:P,ofb:O,ctr:M},utils:{hex:s,utf8:o},padding:{pkcs7:{pad:R,strip:N}},_arrayTest:{coerceArray:n,createArray:i,copyArray:a}};typeof _g<"u"?OI.exports=U:typeof define=="function"&&define.amd?define([],function(){return U}):(e.aesjs&&(U._aesjs=e.aesjs),e.aesjs=U)})(_g)});var GI=St((VI,v7)=>{(function(e,t){typeof v7=="object"&&v7.exports?v7.exports=t():e.nearley=t()})(VI,function(){function e(l,u,c){return this.id=++e.highestId,this.name=l,this.symbols=u,this.postprocess=c,this}e.highestId=0,e.prototype.toString=function(l){var u=typeof l>"u"?this.symbols.map(s).join(" "):this.symbols.slice(0,l).map(s).join(" ")+" \u25CF "+this.symbols.slice(l).map(s).join(" ");return this.name+" \u2192 "+u};function t(l,u,c,f){this.rule=l,this.dot=u,this.reference=c,this.data=[],this.wantedBy=f,this.isComplete=this.dot===l.symbols.length}t.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},t.prototype.nextState=function(l){var u=new t(this.rule,this.dot+1,this.reference,this.wantedBy);return u.left=this,u.right=l,u.isComplete&&(u.data=u.build(),u.right=void 0),u},t.prototype.build=function(){var l=[],u=this;do l.push(u.right.data),u=u.left;while(u.left);return l.reverse(),l},t.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,a.fail))};function r(l,u){this.grammar=l,this.index=u,this.states=[],this.wants={},this.scannable=[],this.completed={}}r.prototype.process=function(l){for(var u=this.states,c=this.wants,f=this.completed,p=0;p0&&u.push(" ^ "+f+" more lines identical to this"),f=0,u.push(" "+g)),c=g}},a.prototype.getSymbolDisplay=function(l){return o(l)},a.prototype.buildFirstStateStack=function(l,u){if(u.indexOf(l)!==-1)return null;if(l.wantedBy.length===0)return[l];var c=l.wantedBy[0],f=[l].concat(u),p=this.buildFirstStateStack(c,f);return p===null?null:[l].concat(p)},a.prototype.save=function(){var l=this.table[this.current];return l.lexerState=this.lexerState,l},a.prototype.restore=function(l){var u=l.index;this.current=u,this.table[u]=l,this.table.splice(u+1),this.lexerState=l.lexerState,this.results=this.finish()},a.prototype.rewind=function(l){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[l])},a.prototype.finish=function(){var l=[],u=this.grammar.start,c=this.table[this.table.length-1];return c.states.forEach(function(f){f.rule.name===u&&f.dot===f.rule.symbols.length&&f.reference===0&&f.data!==a.fail&&l.push(f)}),l.map(function(f){return f.data})};function o(l){var u=typeof l;if(u==="string")return l;if(u==="object"){if(l.literal)return JSON.stringify(l.literal);if(l instanceof RegExp)return"character matching "+l;if(l.type)return l.type+" token";if(l.test)return"token matching "+String(l.test);throw new Error("Unknown symbol type: "+l)}}function s(l){var u=typeof l;if(u==="string")return l;if(u==="object"){if(l.literal)return JSON.stringify(l.literal);if(l instanceof RegExp)return l.toString();if(l.type)return"%"+l.type;if(l.test)return"<"+String(l.test)+">";throw new Error("Unknown symbol type: "+l)}}return{Parser:a,Grammar:n,Rule:e}})});var YI=St((Dfe,HX)=>{HX.exports={locale:"en-US",date:{approximate:{long:"circa %D",medium:"ca. %D",short:"c. %D"},uncertain:{long:"%D (unspecified)",medium:"%D (?)",short:"%D (?)"}}}});var KI=St((Tfe,WX)=>{WX.exports={locale:"es-ES",date:{approximate:{long:"circa %D",medium:"ca. %D",short:"c. %D"},uncertain:{long:"%D (?)",medium:"%D (?)",short:"%D (?)"}}}});var ZI=St((Mfe,QX)=>{QX.exports={locale:"de-DE",date:{approximate:{long:"circa %D",medium:"ca. %D",short:"ca. %D"},uncertain:{long:"%D (?)",medium:"%D (?)",short:"%D (?)"}}}});var JI=St((Nfe,XX)=>{XX.exports={locale:"fr-FR",date:{approximate:{long:"circa %D",medium:"ca. %D",short:"c. %D"},uncertain:{long:"%D (?)",medium:"%D (?)",short:"%D (?)"}}}});var eF=St((Pfe,YX)=>{YX.exports={locale:"it-IT",date:{approximate:{long:"circa %D",medium:"ca. %D",short:"c. %D"},uncertain:{long:"%D (?)",medium:"%D (?)",short:"%D (?)"}}}});var tF=St((Ofe,KX)=>{KX.exports={locale:"ja-JA",date:{approximate:{long:"%D\u9803",medium:"%D\u9803",short:"%D\u9803"},uncertain:{long:"%D\u9803",medium:"%D\u9803",short:"%D\u9803"}}}});var nF=St((Lfe,rF)=>{var ZX=YI(),JX=KI(),eY=ZI(),tY=JI(),rY=eF(),nY=tF(),Ig=(e,...t)=>{for(let r of t)Cg[`${e}-${r}`]=Cg[e]},Cg={en:ZX,es:JX,de:eY,fr:tY,it:rY,ja:nY};Ig("en","AU","CA","GB","NZ","SA","US");Ig("de","AT","CH","DE");Ig("fr","CH","FR");rF.exports=Cg});var g5=St((y2,h5)=>{(function(){var e,t="4.17.21",r=200,n="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",i="Expected a function",a="Invalid `variable` option passed into `_.template`",o="__lodash_hash_undefined__",s=500,l="__lodash_placeholder__",u=1,c=2,f=4,p=1,d=2,g=1,x=2,b=4,m=8,v=16,y=32,_=64,w=128,A=256,I=512,E=30,k="...",S=800,D=16,P=1,O=2,T=3,M=1/0,R=9007199254740991,N=17976931348623157e292,U=NaN,B=4294967295,$=B-1,z=B>>>1,V=[["ary",w],["bind",g],["bindKey",x],["curry",m],["curryRight",v],["flip",I],["partial",y],["partialRight",_],["rearg",A]],H="[object Arguments]",Z="[object Array]",oe="[object AsyncFunction]",pe="[object Boolean]",ne="[object Date]",ge="[object DOMException]",ve="[object Error]",Oe="[object Function]",tt="[object GeneratorFunction]",Ce="[object Map]",te="[object Number]",le="[object Null]",Se="[object Object]",Ie="[object Promise]",Le="[object Proxy]",We="[object RegExp]",ue="[object Set]",ae="[object String]",Ae="[object Symbol]",we="[object Undefined]",Me="[object WeakMap]",He="[object WeakSet]",Qe="[object ArrayBuffer]",et="[object DataView]",lt="[object Float32Array]",nt="[object Float64Array]",ht="[object Int8Array]",tr="[object Int16Array]",ie="[object Int32Array]",j="[object Uint8Array]",W="[object Uint8ClampedArray]",Y="[object Uint16Array]",ee="[object Uint32Array]",J=/\b__p \+= '';/g,Ee=/\b(__p \+=) '' \+/g,be=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ne=/&(?:amp|lt|gt|quot|#39);/g,Fe=/[&<>"']/g,Ke=RegExp(Ne.source),ye=RegExp(Fe.source),Be=/<%-([\s\S]+?)%>/g,Ze=/<%([\s\S]+?)%>/g,bt=/<%=([\s\S]+?)%>/g,ft=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Rt=/^\w*$/,Dt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wr=/[\\^$.*+?()[\]{}|]/g,dn=RegExp(wr.source),Pr=/^\s+/,Kr=/\s/,mn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Kn=/\{\n\/\* \[wrapped with (.+)\] \*/,hn=/,? & /,si=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,xi=/[()=,{}\[\]\/\s]/,wi=/\\(\\)?/g,_i=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Dr=/\w*$/,ia=/^[-+]0x[0-9a-f]+$/i,e4=/^0b[01]+$/i,ks=/^\[object .+?Constructor\]$/,Fl=/^0o[0-7]+$/i,Tu=/^(?:0|[1-9]\d*)$/,bc=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Dl=/($^)/,b1=/['\n\r\u2028\u2029\\]/g,ji="\\ud800-\\udfff",Tl="\\u0300-\\u036f",Ml="\\ufe20-\\ufe2f",x1="\\u20d0-\\u20ff",t4=Tl+Ml+x1,Xb="\\u2700-\\u27bf",Yb="a-z\\xdf-\\xf6\\xf8-\\xff",HN="\\xac\\xb1\\xd7\\xf7",WN="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",QN="\\u2000-\\u206f",XN=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Kb="A-Z\\xc0-\\xd6\\xd8-\\xde",Zb="\\ufe0e\\ufe0f",Jb=HN+WN+QN+XN,sd="['\u2019]",YN="["+ji+"]",ex="["+Jb+"]",xc="["+t4+"]",tx="\\d+",KN="["+Xb+"]",rx="["+Yb+"]",nx="[^"+ji+Jb+tx+Xb+Yb+Kb+"]",ld="\\ud83c[\\udffb-\\udfff]",ZN="(?:"+xc+"|"+ld+")",ix="[^"+ji+"]",ud="(?:\\ud83c[\\udde6-\\uddff]){2}",cd="[\\ud800-\\udbff][\\udc00-\\udfff]",r4="["+Kb+"]",ax="\\u200d",ox="(?:"+rx+"|"+nx+")",JN="(?:"+r4+"|"+nx+")",sx="(?:"+sd+"(?:d|ll|m|re|s|t|ve))?",lx="(?:"+sd+"(?:D|LL|M|RE|S|T|VE))?",ux=ZN+"?",cx="["+Zb+"]?",eP="(?:"+ax+"(?:"+[ix,ud,cd].join("|")+")"+cx+ux+")*",tP="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",rP="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",fx=cx+ux+eP,nP="(?:"+[KN,ud,cd].join("|")+")"+fx,iP="(?:"+[ix+xc+"?",xc,ud,cd,YN].join("|")+")",aP=RegExp(sd,"g"),oP=RegExp(xc,"g"),fd=RegExp(ld+"(?="+ld+")|"+iP+fx,"g"),sP=RegExp([r4+"?"+rx+"+"+sx+"(?="+[ex,r4,"$"].join("|")+")",JN+"+"+lx+"(?="+[ex,r4+ox,"$"].join("|")+")",r4+"?"+ox+"+"+sx,r4+"+"+lx,rP,tP,tx,nP].join("|"),"g"),lP=RegExp("["+ax+ji+t4+Zb+"]"),uP=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,cP=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],fP=-1,jr={};jr[lt]=jr[nt]=jr[ht]=jr[tr]=jr[ie]=jr[j]=jr[W]=jr[Y]=jr[ee]=!0,jr[H]=jr[Z]=jr[Qe]=jr[pe]=jr[et]=jr[ne]=jr[ve]=jr[Oe]=jr[Ce]=jr[te]=jr[Se]=jr[We]=jr[ue]=jr[ae]=jr[Me]=!1;var zr={};zr[H]=zr[Z]=zr[Qe]=zr[et]=zr[pe]=zr[ne]=zr[lt]=zr[nt]=zr[ht]=zr[tr]=zr[ie]=zr[Ce]=zr[te]=zr[Se]=zr[We]=zr[ue]=zr[ae]=zr[Ae]=zr[j]=zr[W]=zr[Y]=zr[ee]=!0,zr[ve]=zr[Oe]=zr[Me]=!1;var pP={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},dP={"&":"&","<":"<",">":">",'"':""","'":"'"},mP={"&":"&","<":"<",">":">",""":'"',"'":"'"},hP={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},gP=parseFloat,vP=parseInt,px=typeof global=="object"&&global&&global.Object===Object&&global,yP=typeof self=="object"&&self&&self.Object===Object&&self,zn=px||yP||Function("return this")(),pd=typeof y2=="object"&&y2&&!y2.nodeType&&y2,Nl=pd&&typeof h5=="object"&&h5&&!h5.nodeType&&h5,dx=Nl&&Nl.exports===pd,dd=dx&&px.process,Ca=function(){try{var me=Nl&&Nl.require&&Nl.require("util").types;return me||dd&&dd.binding&&dd.binding("util")}catch{}}(),mx=Ca&&Ca.isArrayBuffer,hx=Ca&&Ca.isDate,gx=Ca&&Ca.isMap,vx=Ca&&Ca.isRegExp,yx=Ca&&Ca.isSet,bx=Ca&&Ca.isTypedArray;function aa(me,Re,De){switch(De.length){case 0:return me.call(Re);case 1:return me.call(Re,De[0]);case 2:return me.call(Re,De[0],De[1]);case 3:return me.call(Re,De[0],De[1],De[2])}return me.apply(Re,De)}function bP(me,Re,De,ut){for(var Tt=-1,_r=me==null?0:me.length;++Tt<_r;){var Tn=me[Tt];Re(ut,Tn,De(Tn),me)}return ut}function Ia(me,Re){for(var De=-1,ut=me==null?0:me.length;++De-1}function md(me,Re,De){for(var ut=-1,Tt=me==null?0:me.length;++ut-1;);return De}function Cx(me,Re){for(var De=me.length;De--&&n4(Re,me[De],0)>-1;);return De}function IP(me,Re){for(var De=me.length,ut=0;De--;)me[De]===Re&&++ut;return ut}var FP=yd(pP),DP=yd(dP);function TP(me){return"\\"+hP[me]}function MP(me,Re){return me==null?e:me[Re]}function i4(me){return lP.test(me)}function NP(me){return uP.test(me)}function PP(me){for(var Re,De=[];!(Re=me.next()).done;)De.push(Re.value);return De}function _d(me){var Re=-1,De=Array(me.size);return me.forEach(function(ut,Tt){De[++Re]=[Tt,ut]}),De}function Ix(me,Re){return function(De){return me(Re(De))}}function E1(me,Re){for(var De=-1,ut=me.length,Tt=0,_r=[];++De-1}function wO(h,C){var L=this.__data__,q=Bc(L,h);return q<0?(++this.size,L.push([h,C])):L[q][1]=C,this}As.prototype.clear=vO,As.prototype.delete=yO,As.prototype.get=bO,As.prototype.has=xO,As.prototype.set=wO;function Ss(h){var C=-1,L=h==null?0:h.length;for(this.clear();++C=C?h:C)),h}function Ta(h,C,L,q,Q,K){var re,se=C&u,he=C&c,Ue=C&f;if(L&&(re=Q?L(h,q,Q,K):L(h)),re!==e)return re;if(!Zr(h))return h;var ze=Pt(h);if(ze){if(re=AL(h),!se)return Hi(h,re)}else{var Xe=ui(h),it=Xe==Oe||Xe==tt;if(D1(h))return cw(h,se);if(Xe==Se||Xe==H||it&&!Q){if(re=he||it?{}:Fw(h),!se)return he?mL(h,RO(re,h)):dL(h,Ux(re,h))}else{if(!zr[Xe])return Q?h:{};re=SL(h,Xe,se)}}K||(K=new mo);var vt=K.get(h);if(vt)return vt;K.set(h,re),i_(h)?h.forEach(function(At){re.add(Ta(At,C,L,At,h,K))}):r_(h)&&h.forEach(function(At,nr){re.set(nr,Ta(At,C,L,nr,h,K))});var kt=Ue?he?Qd:Wd:he?Qi:qn,Wt=ze?e:kt(h);return Ia(Wt||h,function(At,nr){Wt&&(nr=At,At=h[nr]),Bu(re,nr,Ta(At,C,L,nr,h,K))}),re}function BO(h){var C=qn(h);return function(L){return zx(L,h,C)}}function zx(h,C,L){var q=L.length;if(h==null)return!q;for(h=Br(h);q--;){var Q=L[q],K=C[Q],re=h[Q];if(re===e&&!(Q in h)||!K(re))return!1}return!0}function qx(h,C,L){if(typeof h!="function")throw new Fa(i);return ju(function(){h.apply(e,L)},C)}function $u(h,C,L,q){var Q=-1,K=wc,re=!0,se=h.length,he=[],Ue=C.length;if(!se)return he;L&&(C=Xr(C,oa(L))),q?(K=md,re=!1):C.length>=r&&(K=Mu,re=!1,C=new Ll(C));e:for(;++QQ?0:Q+L),q=q===e||q>Q?Q:qt(q),q<0&&(q+=Q),q=L>q?0:o_(q);L0&&L(se)?C>1?Zn(se,C-1,L,q,Q):_1(Q,se):q||(Q[Q.length]=se)}return Q}var Fd=gw(),jx=gw(!0);function Ro(h,C){return h&&Fd(h,C,qn)}function Dd(h,C){return h&&jx(h,C,qn)}function Uc(h,C){return w1(C,function(L){return Ts(h[L])})}function Bl(h,C){C=I1(C,h);for(var L=0,q=C.length;h!=null&&LC}function zO(h,C){return h!=null&&Tr.call(h,C)}function qO(h,C){return h!=null&&C in Br(h)}function VO(h,C,L){return h>=li(C,L)&&h=120&&ze.length>=120)?new Ll(re&&ze):e}ze=h[0];var Xe=-1,it=se[0];e:for(;++Xe-1;)se!==h&&Tc.call(se,he,1),Tc.call(h,he,1);return h}function rw(h,C){for(var L=h?C.length:0,q=L-1;L--;){var Q=C[L];if(L==q||Q!==K){var K=Q;Ds(Q)?Tc.call(h,Q,1):Ud(h,Q)}}return h}function Rd(h,C){return h+Pc(Lx()*(C-h+1))}function rL(h,C,L,q){for(var Q=-1,K=Mn(Nc((C-h)/(L||1)),0),re=De(K);K--;)re[q?K:++Q]=h,h+=L;return re}function Bd(h,C){var L="";if(!h||C<1||C>R)return L;do C%2&&(L+=h),C=Pc(C/2),C&&(h+=h);while(C);return L}function Zt(h,C){return tm(Mw(h,C,Xi),h+"")}function nL(h){return $x(m4(h))}function iL(h,C){var L=m4(h);return Kc(L,Rl(C,0,L.length))}function qu(h,C,L,q){if(!Zr(h))return h;C=I1(C,h);for(var Q=-1,K=C.length,re=K-1,se=h;se!=null&&++QQ?0:Q+C),L=L>Q?Q:L,L<0&&(L+=Q),Q=C>L?0:L-C>>>0,C>>>=0;for(var K=De(Q);++q>>1,re=h[K];re!==null&&!la(re)&&(L?re<=C:re=r){var Ue=C?null:yL(h);if(Ue)return Ec(Ue);re=!1,Q=Mu,he=new Ll}else he=C?[]:se;e:for(;++q=q?h:Ma(h,C,L)}var uw=XP||function(h){return zn.clearTimeout(h)};function cw(h,C){if(C)return h.slice();var L=h.length,q=Tx?Tx(L):new h.constructor(L);return h.copy(q),q}function Gd(h){var C=new h.constructor(h.byteLength);return new Fc(C).set(new Fc(h)),C}function uL(h,C){var L=C?Gd(h.buffer):h.buffer;return new h.constructor(L,h.byteOffset,h.byteLength)}function cL(h){var C=new h.constructor(h.source,Dr.exec(h));return C.lastIndex=h.lastIndex,C}function fL(h){return Ru?Br(Ru.call(h)):{}}function fw(h,C){var L=C?Gd(h.buffer):h.buffer;return new h.constructor(L,h.byteOffset,h.length)}function pw(h,C){if(h!==C){var L=h!==e,q=h===null,Q=h===h,K=la(h),re=C!==e,se=C===null,he=C===C,Ue=la(C);if(!se&&!Ue&&!K&&h>C||K&&re&&he&&!se&&!Ue||q&&re&&he||!L&&he||!Q)return 1;if(!q&&!K&&!Ue&&h=se)return he;var Ue=L[q];return he*(Ue=="desc"?-1:1)}}return h.index-C.index}function dw(h,C,L,q){for(var Q=-1,K=h.length,re=L.length,se=-1,he=C.length,Ue=Mn(K-re,0),ze=De(he+Ue),Xe=!q;++se1?L[Q-1]:e,re=Q>2?L[2]:e;for(K=h.length>3&&typeof K=="function"?(Q--,K):e,re&&ki(L[0],L[1],re)&&(K=Q<3?e:K,Q=1),C=Br(C);++q-1?Q[K?C[re]:re]:e}}function bw(h){return Fs(function(C){var L=C.length,q=L,Q=Da.prototype.thru;for(h&&C.reverse();q--;){var K=C[q];if(typeof K!="function")throw new Fa(i);if(Q&&!re&&Xc(K)=="wrapper")var re=new Da([],!0)}for(q=re?q:L;++q1&&dr.reverse(),ze&&hese))return!1;var Ue=K.get(h),ze=K.get(C);if(Ue&&ze)return Ue==C&&ze==h;var Xe=-1,it=!0,vt=L&d?new Ll:e;for(K.set(h,C),K.set(C,h);++Xe1?"& ":"")+C[q],C=C.join(L>2?", ":" "),h.replace(mn,`{ +/* [wrapped with `+C+`] */ +`)}function IL(h){return Pt(h)||zl(h)||!!(Px&&h&&h[Px])}function Ds(h,C){var L=typeof h;return C=C==null?R:C,!!C&&(L=="number"||L!="symbol"&&Tu.test(h))&&h>-1&&h%1==0&&h0){if(++C>=S)return arguments[0]}else C=0;return h.apply(e,arguments)}}function Kc(h,C){var L=-1,q=h.length,Q=q-1;for(C=C===e?q:C;++L1?h[C-1]:e;return L=typeof L=="function"?(h.pop(),L):e,Gw(h,L)});function jw(h){var C=X(h);return C.__chain__=!0,C}function $R(h,C){return C(h),h}function Zc(h,C){return C(h)}var UR=Fs(function(h){var C=h.length,L=C?h[0]:0,q=this.__wrapped__,Q=function(K){return Id(K,h)};return C>1||this.__actions__.length||!(q instanceof cr)||!Ds(L)?this.thru(Q):(q=q.slice(L,+L+(C?1:0)),q.__actions__.push({func:Zc,args:[Q],thisArg:e}),new Da(q,this.__chain__).thru(function(K){return C&&!K.length&&K.push(e),K}))});function zR(){return jw(this)}function qR(){return new Da(this.value(),this.__chain__)}function VR(){this.__values__===e&&(this.__values__=a_(this.value()));var h=this.__index__>=this.__values__.length,C=h?e:this.__values__[this.__index__++];return{done:h,value:C}}function GR(){return this}function jR(h){for(var C,L=this;L instanceof Rc;){var q=Bw(L);q.__index__=0,q.__values__=e,C?Q.__wrapped__=q:C=q;var Q=q;L=L.__wrapped__}return Q.__wrapped__=h,C}function HR(){var h=this.__wrapped__;if(h instanceof cr){var C=h;return this.__actions__.length&&(C=new cr(this)),C=C.reverse(),C.__actions__.push({func:Zc,args:[rm],thisArg:e}),new Da(C,this.__chain__)}return this.thru(rm)}function WR(){return sw(this.__wrapped__,this.__actions__)}var QR=Gc(function(h,C,L){Tr.call(h,L)?++h[L]:Cs(h,L,1)});function XR(h,C,L){var q=Pt(h)?xx:$O;return L&&ki(h,C,L)&&(C=e),q(h,Et(C,3))}function YR(h,C){var L=Pt(h)?w1:Gx;return L(h,Et(C,3))}var KR=yw($w),ZR=yw(Uw);function JR(h,C){return Zn(Jc(h,C),1)}function eB(h,C){return Zn(Jc(h,C),M)}function tB(h,C,L){return L=L===e?1:qt(L),Zn(Jc(h,C),L)}function Hw(h,C){var L=Pt(h)?Ia:S1;return L(h,Et(C,3))}function Ww(h,C){var L=Pt(h)?xP:Vx;return L(h,Et(C,3))}var rB=Gc(function(h,C,L){Tr.call(h,L)?h[L].push(C):Cs(h,L,[C])});function nB(h,C,L,q){h=Wi(h)?h:m4(h),L=L&&!q?qt(L):0;var Q=h.length;return L<0&&(L=Mn(Q+L,0)),i6(h)?L<=Q&&h.indexOf(C,L)>-1:!!Q&&n4(h,C,L)>-1}var iB=Zt(function(h,C,L){var q=-1,Q=typeof C=="function",K=Wi(h)?De(h.length):[];return S1(h,function(re){K[++q]=Q?aa(C,re,L):Uu(re,C,L)}),K}),aB=Gc(function(h,C,L){Cs(h,L,C)});function Jc(h,C){var L=Pt(h)?Xr:Yx;return L(h,Et(C,3))}function oB(h,C,L,q){return h==null?[]:(Pt(C)||(C=C==null?[]:[C]),L=q?e:L,Pt(L)||(L=L==null?[]:[L]),ew(h,C,L))}var sB=Gc(function(h,C,L){h[L?0:1].push(C)},function(){return[[],[]]});function lB(h,C,L){var q=Pt(h)?hd:kx,Q=arguments.length<3;return q(h,Et(C,4),L,Q,S1)}function uB(h,C,L){var q=Pt(h)?wP:kx,Q=arguments.length<3;return q(h,Et(C,4),L,Q,Vx)}function cB(h,C){var L=Pt(h)?w1:Gx;return L(h,r6(Et(C,3)))}function fB(h){var C=Pt(h)?$x:nL;return C(h)}function pB(h,C,L){(L?ki(h,C,L):C===e)?C=1:C=qt(C);var q=Pt(h)?PO:iL;return q(h,C)}function dB(h){var C=Pt(h)?OO:oL;return C(h)}function mB(h){if(h==null)return 0;if(Wi(h))return i6(h)?a4(h):h.length;var C=ui(h);return C==Ce||C==ue?h.size:Pd(h).length}function hB(h,C,L){var q=Pt(h)?gd:sL;return L&&ki(h,C,L)&&(C=e),q(h,Et(C,3))}var gB=Zt(function(h,C){if(h==null)return[];var L=C.length;return L>1&&ki(h,C[0],C[1])?C=[]:L>2&&ki(C[0],C[1],C[2])&&(C=[C[0]]),ew(h,Zn(C,1),[])}),e6=YP||function(){return zn.Date.now()};function vB(h,C){if(typeof C!="function")throw new Fa(i);return h=qt(h),function(){if(--h<1)return C.apply(this,arguments)}}function Qw(h,C,L){return C=L?e:C,C=h&&C==null?h.length:C,Is(h,w,e,e,e,e,C)}function Xw(h,C){var L;if(typeof C!="function")throw new Fa(i);return h=qt(h),function(){return--h>0&&(L=C.apply(this,arguments)),h<=1&&(C=e),L}}var im=Zt(function(h,C,L){var q=g;if(L.length){var Q=E1(L,p4(im));q|=y}return Is(h,q,C,L,Q)}),Yw=Zt(function(h,C,L){var q=g|x;if(L.length){var Q=E1(L,p4(Yw));q|=y}return Is(C,q,h,L,Q)});function Kw(h,C,L){C=L?e:C;var q=Is(h,m,e,e,e,e,e,C);return q.placeholder=Kw.placeholder,q}function Zw(h,C,L){C=L?e:C;var q=Is(h,v,e,e,e,e,e,C);return q.placeholder=Zw.placeholder,q}function Jw(h,C,L){var q,Q,K,re,se,he,Ue=0,ze=!1,Xe=!1,it=!0;if(typeof h!="function")throw new Fa(i);C=Pa(C)||0,Zr(L)&&(ze=!!L.leading,Xe="maxWait"in L,K=Xe?Mn(Pa(L.maxWait)||0,C):K,it="trailing"in L?!!L.trailing:it);function vt(vn){var go=q,Ns=Q;return q=Q=e,Ue=vn,re=h.apply(Ns,go),re}function kt(vn){return Ue=vn,se=ju(nr,C),ze?vt(vn):re}function Wt(vn){var go=vn-he,Ns=vn-Ue,y_=C-go;return Xe?li(y_,K-Ns):y_}function At(vn){var go=vn-he,Ns=vn-Ue;return he===e||go>=C||go<0||Xe&&Ns>=K}function nr(){var vn=e6();if(At(vn))return dr(vn);se=ju(nr,Wt(vn))}function dr(vn){return se=e,it&&q?vt(vn):(q=Q=e,re)}function ua(){se!==e&&uw(se),Ue=0,q=he=Q=se=e}function Ai(){return se===e?re:dr(e6())}function ca(){var vn=e6(),go=At(vn);if(q=arguments,Q=this,he=vn,go){if(se===e)return kt(he);if(Xe)return uw(se),se=ju(nr,C),vt(he)}return se===e&&(se=ju(nr,C)),re}return ca.cancel=ua,ca.flush=Ai,ca}var yB=Zt(function(h,C){return qx(h,1,C)}),bB=Zt(function(h,C,L){return qx(h,Pa(C)||0,L)});function xB(h){return Is(h,I)}function t6(h,C){if(typeof h!="function"||C!=null&&typeof C!="function")throw new Fa(i);var L=function(){var q=arguments,Q=C?C.apply(this,q):q[0],K=L.cache;if(K.has(Q))return K.get(Q);var re=h.apply(this,q);return L.cache=K.set(Q,re)||K,re};return L.cache=new(t6.Cache||Ss),L}t6.Cache=Ss;function r6(h){if(typeof h!="function")throw new Fa(i);return function(){var C=arguments;switch(C.length){case 0:return!h.call(this);case 1:return!h.call(this,C[0]);case 2:return!h.call(this,C[0],C[1]);case 3:return!h.call(this,C[0],C[1],C[2])}return!h.apply(this,C)}}function wB(h){return Xw(2,h)}var _B=lL(function(h,C){C=C.length==1&&Pt(C[0])?Xr(C[0],oa(Et())):Xr(Zn(C,1),oa(Et()));var L=C.length;return Zt(function(q){for(var Q=-1,K=li(q.length,L);++Q=C}),zl=Wx(function(){return arguments}())?Wx:function(h){return on(h)&&Tr.call(h,"callee")&&!Nx.call(h,"callee")},Pt=De.isArray,RB=mx?oa(mx):jO;function Wi(h){return h!=null&&n6(h.length)&&!Ts(h)}function gn(h){return on(h)&&Wi(h)}function BB(h){return h===!0||h===!1||on(h)&&Ei(h)==pe}var D1=ZP||gm,$B=hx?oa(hx):HO;function UB(h){return on(h)&&h.nodeType===1&&!Hu(h)}function zB(h){if(h==null)return!0;if(Wi(h)&&(Pt(h)||typeof h=="string"||typeof h.splice=="function"||D1(h)||d4(h)||zl(h)))return!h.length;var C=ui(h);if(C==Ce||C==ue)return!h.size;if(Gu(h))return!Pd(h).length;for(var L in h)if(Tr.call(h,L))return!1;return!0}function qB(h,C){return zu(h,C)}function VB(h,C,L){L=typeof L=="function"?L:e;var q=L?L(h,C):e;return q===e?zu(h,C,e,L):!!q}function om(h){if(!on(h))return!1;var C=Ei(h);return C==ve||C==ge||typeof h.message=="string"&&typeof h.name=="string"&&!Hu(h)}function GB(h){return typeof h=="number"&&Ox(h)}function Ts(h){if(!Zr(h))return!1;var C=Ei(h);return C==Oe||C==tt||C==oe||C==Le}function t_(h){return typeof h=="number"&&h==qt(h)}function n6(h){return typeof h=="number"&&h>-1&&h%1==0&&h<=R}function Zr(h){var C=typeof h;return h!=null&&(C=="object"||C=="function")}function on(h){return h!=null&&typeof h=="object"}var r_=gx?oa(gx):QO;function jB(h,C){return h===C||Nd(h,C,Yd(C))}function HB(h,C,L){return L=typeof L=="function"?L:e,Nd(h,C,Yd(C),L)}function WB(h){return n_(h)&&h!=+h}function QB(h){if(TL(h))throw new Tt(n);return Qx(h)}function XB(h){return h===null}function YB(h){return h==null}function n_(h){return typeof h=="number"||on(h)&&Ei(h)==te}function Hu(h){if(!on(h)||Ei(h)!=Se)return!1;var C=Dc(h);if(C===null)return!0;var L=Tr.call(C,"constructor")&&C.constructor;return typeof L=="function"&&L instanceof L&&Sc.call(L)==HP}var sm=vx?oa(vx):XO;function KB(h){return t_(h)&&h>=-R&&h<=R}var i_=yx?oa(yx):YO;function i6(h){return typeof h=="string"||!Pt(h)&&on(h)&&Ei(h)==ae}function la(h){return typeof h=="symbol"||on(h)&&Ei(h)==Ae}var d4=bx?oa(bx):KO;function ZB(h){return h===e}function JB(h){return on(h)&&ui(h)==Me}function e$(h){return on(h)&&Ei(h)==He}var t$=Qc(Od),r$=Qc(function(h,C){return h<=C});function a_(h){if(!h)return[];if(Wi(h))return i6(h)?po(h):Hi(h);if(Nu&&h[Nu])return PP(h[Nu]());var C=ui(h),L=C==Ce?_d:C==ue?Ec:m4;return L(h)}function Ms(h){if(!h)return h===0?h:0;if(h=Pa(h),h===M||h===-M){var C=h<0?-1:1;return C*N}return h===h?h:0}function qt(h){var C=Ms(h),L=C%1;return C===C?L?C-L:C:0}function o_(h){return h?Rl(qt(h),0,B):0}function Pa(h){if(typeof h=="number")return h;if(la(h))return U;if(Zr(h)){var C=typeof h.valueOf=="function"?h.valueOf():h;h=Zr(C)?C+"":C}if(typeof h!="string")return h===0?h:+h;h=Ax(h);var L=e4.test(h);return L||Fl.test(h)?vP(h.slice(2),L?2:8):ia.test(h)?U:+h}function s_(h){return Bo(h,Qi(h))}function n$(h){return h?Rl(qt(h),-R,R):h===0?h:0}function Sr(h){return h==null?"":sa(h)}var i$=c4(function(h,C){if(Gu(C)||Wi(C)){Bo(C,qn(C),h);return}for(var L in C)Tr.call(C,L)&&Bu(h,L,C[L])}),l_=c4(function(h,C){Bo(C,Qi(C),h)}),a6=c4(function(h,C,L,q){Bo(C,Qi(C),h,q)}),a$=c4(function(h,C,L,q){Bo(C,qn(C),h,q)}),o$=Fs(Id);function s$(h,C){var L=u4(h);return C==null?L:Ux(L,C)}var l$=Zt(function(h,C){h=Br(h);var L=-1,q=C.length,Q=q>2?C[2]:e;for(Q&&ki(C[0],C[1],Q)&&(q=1);++L1),K}),Bo(h,Qd(h),L),q&&(L=Ta(L,u|c|f,bL));for(var Q=C.length;Q--;)Ud(L,C[Q]);return L});function S$(h,C){return c_(h,r6(Et(C)))}var C$=Fs(function(h,C){return h==null?{}:eL(h,C)});function c_(h,C){if(h==null)return{};var L=Xr(Qd(h),function(q){return[q]});return C=Et(C),tw(h,L,function(q,Q){return C(q,Q[0])})}function I$(h,C,L){C=I1(C,h);var q=-1,Q=C.length;for(Q||(Q=1,h=e);++qC){var q=h;h=C,C=q}if(L||h%1||C%1){var Q=Lx();return li(h+Q*(C-h+gP("1e-"+((Q+"").length-1))),C)}return Rd(h,C)}var $$=f4(function(h,C,L){return C=C.toLowerCase(),h+(L?d_(C):C)});function d_(h){return cm(Sr(h).toLowerCase())}function m_(h){return h=Sr(h),h&&h.replace(bc,FP).replace(oP,"")}function U$(h,C,L){h=Sr(h),C=sa(C);var q=h.length;L=L===e?q:Rl(qt(L),0,q);var Q=L;return L-=C.length,L>=0&&h.slice(L,Q)==C}function z$(h){return h=Sr(h),h&&ye.test(h)?h.replace(Fe,DP):h}function q$(h){return h=Sr(h),h&&dn.test(h)?h.replace(wr,"\\$&"):h}var V$=f4(function(h,C,L){return h+(L?"-":"")+C.toLowerCase()}),G$=f4(function(h,C,L){return h+(L?" ":"")+C.toLowerCase()}),j$=vw("toLowerCase");function H$(h,C,L){h=Sr(h),C=qt(C);var q=C?a4(h):0;if(!C||q>=C)return h;var Q=(C-q)/2;return Wc(Pc(Q),L)+h+Wc(Nc(Q),L)}function W$(h,C,L){h=Sr(h),C=qt(C);var q=C?a4(h):0;return C&&q>>0,L?(h=Sr(h),h&&(typeof C=="string"||C!=null&&!sm(C))&&(C=sa(C),!C&&i4(h))?F1(po(h),0,L):h.split(C,L)):[]}var eU=f4(function(h,C,L){return h+(L?" ":"")+cm(C)});function tU(h,C,L){return h=Sr(h),L=L==null?0:Rl(qt(L),0,h.length),C=sa(C),h.slice(L,L+C.length)==C}function rU(h,C,L){var q=X.templateSettings;L&&ki(h,C,L)&&(C=e),h=Sr(h),C=a6({},C,q,kw);var Q=a6({},C.imports,q.imports,kw),K=qn(Q),re=wd(Q,K),se,he,Ue=0,ze=C.interpolate||Dl,Xe="__p += '",it=Ed((C.escape||Dl).source+"|"+ze.source+"|"+(ze===bt?_i:Dl).source+"|"+(C.evaluate||Dl).source+"|$","g"),vt="//# sourceURL="+(Tr.call(C,"sourceURL")?(C.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++fP+"]")+` +`;h.replace(it,function(At,nr,dr,ua,Ai,ca){return dr||(dr=ua),Xe+=h.slice(Ue,ca).replace(b1,TP),nr&&(se=!0,Xe+=`' + +__e(`+nr+`) + +'`),Ai&&(he=!0,Xe+=`'; +`+Ai+`; +__p += '`),dr&&(Xe+=`' + +((__t = (`+dr+`)) == null ? '' : __t) + +'`),Ue=ca+At.length,At}),Xe+=`'; +`;var kt=Tr.call(C,"variable")&&C.variable;if(!kt)Xe=`with (obj) { +`+Xe+` +} +`;else if(xi.test(kt))throw new Tt(a);Xe=(he?Xe.replace(J,""):Xe).replace(Ee,"$1").replace(be,"$1;"),Xe="function("+(kt||"obj")+`) { +`+(kt?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(se?", __e = _.escape":"")+(he?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+Xe+`return __p +}`;var Wt=g_(function(){return _r(K,vt+"return "+Xe).apply(e,re)});if(Wt.source=Xe,om(Wt))throw Wt;return Wt}function nU(h){return Sr(h).toLowerCase()}function iU(h){return Sr(h).toUpperCase()}function aU(h,C,L){if(h=Sr(h),h&&(L||C===e))return Ax(h);if(!h||!(C=sa(C)))return h;var q=po(h),Q=po(C),K=Sx(q,Q),re=Cx(q,Q)+1;return F1(q,K,re).join("")}function oU(h,C,L){if(h=Sr(h),h&&(L||C===e))return h.slice(0,Fx(h)+1);if(!h||!(C=sa(C)))return h;var q=po(h),Q=Cx(q,po(C))+1;return F1(q,0,Q).join("")}function sU(h,C,L){if(h=Sr(h),h&&(L||C===e))return h.replace(Pr,"");if(!h||!(C=sa(C)))return h;var q=po(h),Q=Sx(q,po(C));return F1(q,Q).join("")}function lU(h,C){var L=E,q=k;if(Zr(C)){var Q="separator"in C?C.separator:Q;L="length"in C?qt(C.length):L,q="omission"in C?sa(C.omission):q}h=Sr(h);var K=h.length;if(i4(h)){var re=po(h);K=re.length}if(L>=K)return h;var se=L-a4(q);if(se<1)return q;var he=re?F1(re,0,se).join(""):h.slice(0,se);if(Q===e)return he+q;if(re&&(se+=he.length-se),sm(Q)){if(h.slice(se).search(Q)){var Ue,ze=he;for(Q.global||(Q=Ed(Q.source,Sr(Dr.exec(Q))+"g")),Q.lastIndex=0;Ue=Q.exec(ze);)var Xe=Ue.index;he=he.slice(0,Xe===e?se:Xe)}}else if(h.indexOf(sa(Q),se)!=se){var it=he.lastIndexOf(Q);it>-1&&(he=he.slice(0,it))}return he+q}function uU(h){return h=Sr(h),h&&Ke.test(h)?h.replace(Ne,BP):h}var cU=f4(function(h,C,L){return h+(L?" ":"")+C.toUpperCase()}),cm=vw("toUpperCase");function h_(h,C,L){return h=Sr(h),C=L?e:C,C===e?NP(h)?zP(h):kP(h):h.match(C)||[]}var g_=Zt(function(h,C){try{return aa(h,e,C)}catch(L){return om(L)?L:new Tt(L)}}),fU=Fs(function(h,C){return Ia(C,function(L){L=$o(L),Cs(h,L,im(h[L],h))}),h});function pU(h){var C=h==null?0:h.length,L=Et();return h=C?Xr(h,function(q){if(typeof q[1]!="function")throw new Fa(i);return[L(q[0]),q[1]]}):[],Zt(function(q){for(var Q=-1;++QR)return[];var L=B,q=li(h,B);C=Et(C),h-=B;for(var Q=xd(q,C);++L0||C<0)?new cr(L):(h<0?L=L.takeRight(-h):h&&(L=L.drop(h)),C!==e&&(C=qt(C),L=C<0?L.dropRight(-C):L.take(C-h)),L)},cr.prototype.takeRightWhile=function(h){return this.reverse().takeWhile(h).reverse()},cr.prototype.toArray=function(){return this.take(B)},Ro(cr.prototype,function(h,C){var L=/^(?:filter|find|map|reject)|While$/.test(C),q=/^(?:head|last)$/.test(C),Q=X[q?"take"+(C=="last"?"Right":""):C],K=q||/^find/.test(C);Q&&(X.prototype[C]=function(){var re=this.__wrapped__,se=q?[1]:arguments,he=re instanceof cr,Ue=se[0],ze=he||Pt(re),Xe=function(nr){var dr=Q.apply(X,_1([nr],se));return q&&it?dr[0]:dr};ze&&L&&typeof Ue=="function"&&Ue.length!=1&&(he=ze=!1);var it=this.__chain__,vt=!!this.__actions__.length,kt=K&&!it,Wt=he&&!vt;if(!K&&ze){re=Wt?re:new cr(this);var At=h.apply(re,se);return At.__actions__.push({func:Zc,args:[Xe],thisArg:e}),new Da(At,it)}return kt&&Wt?h.apply(this,se):(At=this.thru(Xe),kt?q?At.value()[0]:At.value():At)})}),Ia(["pop","push","shift","sort","splice","unshift"],function(h){var C=kc[h],L=/^(?:push|sort|unshift)$/.test(h)?"tap":"thru",q=/^(?:pop|shift)$/.test(h);X.prototype[h]=function(){var Q=arguments;if(q&&!this.__chain__){var K=this.value();return C.apply(Pt(K)?K:[],Q)}return this[L](function(re){return C.apply(Pt(re)?re:[],Q)})}}),Ro(cr.prototype,function(h,C){var L=X[C];if(L){var q=L.name+"";Tr.call(l4,q)||(l4[q]=[]),l4[q].push({name:C,func:L})}}),l4[jc(e,x).name]=[{name:"wrapper",func:e}],cr.prototype.clone=uO,cr.prototype.reverse=cO,cr.prototype.value=fO,X.prototype.at=UR,X.prototype.chain=zR,X.prototype.commit=qR,X.prototype.next=VR,X.prototype.plant=jR,X.prototype.reverse=HR,X.prototype.toJSON=X.prototype.valueOf=X.prototype.value=WR,X.prototype.first=X.prototype.head,Nu&&(X.prototype[Nu]=GR),X},k1=qP();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(zn._=k1,define(function(){return k1})):Nl?((Nl.exports=k1)._=k1,pd._=k1):zn._=k1}).call(y2)});var Za=St((tme,LF)=>{"use strict";LF.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,i,a;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(a=Object.keys(t),n=a.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,a[i]))return!1;for(i=n;i--!==0;){var o=a[i];if(!e(t[o],r[o]))return!1}return!0}return t!==t&&r!==r}});var _a=St((Jg,ev)=>{(function(e,t){typeof Jg=="object"&&typeof ev<"u"?ev.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self).RBush=t()})(Jg,function(){"use strict";function e(b,m,v,y,_){(function w(A,I,E,k,S){for(;k>E;){if(k-E>600){var D=k-E+1,P=I-E+1,O=Math.log(D),T=.5*Math.exp(2*O/3),M=.5*Math.sqrt(O*T*(D-T)/D)*(P-D/2<0?-1:1),R=Math.max(E,Math.floor(I-P*T/D+M)),N=Math.min(k,Math.floor(I+(D-P)*T/D+M));w(A,I,R,N,S)}var U=A[I],B=E,$=k;for(t(A,E,I),S(A[k],U)>0&&t(A,E,k);B<$;){for(t(A,B,$),B++,$--;S(A[B],U)<0;)B++;for(;S(A[$],U)>0;)$--}S(A[E],U)===0?t(A,E,$):t(A,++$,k),$<=I&&(E=$+1),I<=$&&(k=$-1)}})(b,m,v||0,y||b.length-1,_||r)}function t(b,m,v){var y=b[m];b[m]=b[v],b[v]=y}function r(b,m){return bm?1:0}var n=function(b){b===void 0&&(b=9),this._maxEntries=Math.max(4,b),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function i(b,m,v){if(!v)return m.indexOf(b);for(var y=0;y=b.minX&&m.maxY>=b.minY}function g(b){return{children:b,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function x(b,m,v,y,_){for(var w=[m,v];w.length;)if(!((v=w.pop())-(m=w.pop())<=y)){var A=m+Math.ceil((v-m)/y/2)*y;e(b,A,m,v,_),w.push(m,A,A,v)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(b){var m=this.data,v=[];if(!d(b,m))return v;for(var y=this.toBBox,_=[];m;){for(var w=0;w=0&&_[m].children.length>this._maxEntries;)this._split(_,m),m--;this._adjustParentBBoxes(y,_,m)},n.prototype._split=function(b,m){var v=b[m],y=v.children.length,_=this._minEntries;this._chooseSplitAxis(v,_,y);var w=this._chooseSplitIndex(v,_,y),A=g(v.children.splice(w,v.children.length-w));A.height=v.height,A.leaf=v.leaf,a(v,this.toBBox),a(A,this.toBBox),m?b[m-1].children.push(A):this._splitRoot(v,A)},n.prototype._splitRoot=function(b,m){this.data=g([b,m]),this.data.height=b.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(b,m,v){for(var y,_,w,A,I,E,k,S=1/0,D=1/0,P=m;P<=v-m;P++){var O=o(b,0,P,this.toBBox),T=o(b,P,v,this.toBBox),M=(_=O,w=T,A=void 0,I=void 0,E=void 0,k=void 0,A=Math.max(_.minX,w.minX),I=Math.max(_.minY,w.minY),E=Math.min(_.maxX,w.maxX),k=Math.min(_.maxY,w.maxY),Math.max(0,E-A)*Math.max(0,k-I)),R=c(O)+c(T);M=m;S--){var D=b.children[S];s(A,b.leaf?_(D):D),I+=f(A)}return I},n.prototype._adjustParentBBoxes=function(b,m,v){for(var y=v;y>=0;y--)s(m[y],b)},n.prototype._condense=function(b){for(var m=b.length-1,v=void 0;m>=0;m--)b[m].children.length===0?m>0?(v=b[m-1].children).splice(v.indexOf(b[m]),1):this.clear():a(b[m],this.toBBox)},n})});var MD=St(bv=>{bv.read=function(e,t,r,n,i){var a,o,s=i*8-n-1,l=(1<>1,c=-7,f=r?i-1:0,p=r?-1:1,d=e[t+f];for(f+=p,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=a*256+e[t+f],f+=p,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+f],f+=p,c-=8);if(a===0)a=1-u;else{if(a===l)return o?NaN:(d?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-u}return(d?-1:1)*o*Math.pow(2,a-n)};bv.write=function(e,t,r,n,i,a){var o,s,l,u=a*8-i-1,c=(1<>1,p=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,g=n?1:-1,x=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?t+=p/l:t+=p*Math.pow(2,1-f),t*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(t*l-1)*Math.pow(2,i),o=o+f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;e[r+d]=s&255,d+=g,s/=256,i-=8);for(o=o<0;e[r+d]=o&255,d+=g,o/=256,u-=8);e[r+d-g]|=x*128}});var d9=St((Ube,RD)=>{"use strict";RD.exports=Ar;var f9=MD();function Ar(e){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(e)?e:new Uint8Array(e||0),this.pos=0,this.type=0,this.length=this.buf.length}Ar.Varint=0;Ar.Fixed64=1;Ar.Bytes=2;Ar.Fixed32=5;var xv=65536*65536,ND=1/xv,CK=12,LD=typeof TextDecoder>"u"?null:new TextDecoder("utf8");Ar.prototype={destroy:function(){this.buf=null},readFields:function(e,t,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=n&7,e(i,t,this),this.pos===a&&this.skip(n)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=p9(this.buf,this.pos);return this.pos+=4,e},readSFixed32:function(){var e=OD(this.buf,this.pos);return this.pos+=4,e},readFixed64:function(){var e=p9(this.buf,this.pos)+p9(this.buf,this.pos+4)*xv;return this.pos+=8,e},readSFixed64:function(){var e=p9(this.buf,this.pos)+OD(this.buf,this.pos+4)*xv;return this.pos+=8,e},readFloat:function(){var e=f9.read(this.buf,this.pos,!0,23,4);return this.pos+=4,e},readDouble:function(){var e=f9.read(this.buf,this.pos,!0,52,8);return this.pos+=8,e},readVarint:function(e){var t=this.buf,r,n;return n=t[this.pos++],r=n&127,n<128||(n=t[this.pos++],r|=(n&127)<<7,n<128)||(n=t[this.pos++],r|=(n&127)<<14,n<128)||(n=t[this.pos++],r|=(n&127)<<21,n<128)?r:(n=t[this.pos],r|=(n&15)<<28,IK(r,e,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var e=this.readVarint();return e%2===1?(e+1)/-2:e/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var e=this.readVarint()+this.pos,t=this.pos;return this.pos=e,e-t>=CK&&LD?qK(this.buf,t,e):zK(this.buf,t,e)},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t},readPackedVarint:function(e,t){if(this.type!==Ar.Bytes)return e.push(this.readVarint(t));var r=l1(this);for(e=e||[];this.pos127;);else if(t===Ar.Bytes)this.pos=this.readVarint()+this.pos;else if(t===Ar.Fixed32)this.pos+=4;else if(t===Ar.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+t)},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t=this.length||16;t268435455||e<0){FK(e,this);return}this.realloc(4),this.buf[this.pos++]=e&127|(e>127?128:0),!(e<=127)&&(this.buf[this.pos++]=(e>>>=7)&127|(e>127?128:0),!(e<=127)&&(this.buf[this.pos++]=(e>>>=7)&127|(e>127?128:0),!(e<=127)&&(this.buf[this.pos++]=e>>>7&127)))},writeSVarint:function(e){this.writeVarint(e<0?-e*2-1:e*2)},writeBoolean:function(e){this.writeVarint(!!e)},writeString:function(e){e=String(e),this.realloc(e.length*4),this.pos++;var t=this.pos;this.pos=VK(this.buf,e,this.pos);var r=this.pos-t;r>=128&&PD(t,r,this),this.pos=t-1,this.writeVarint(r),this.pos+=r},writeFloat:function(e){this.realloc(4),f9.write(this.buf,e,this.pos,!0,23,4),this.pos+=4},writeDouble:function(e){this.realloc(8),f9.write(this.buf,e,this.pos,!0,52,8),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var r=0;r=128&&PD(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(e,t,r){this.writeTag(e,Ar.Bytes),this.writeRawMessage(t,r)},writePackedVarint:function(e,t){t.length&&this.writeMessage(e,MK,t)},writePackedSVarint:function(e,t){t.length&&this.writeMessage(e,NK,t)},writePackedBoolean:function(e,t){t.length&&this.writeMessage(e,LK,t)},writePackedFloat:function(e,t){t.length&&this.writeMessage(e,PK,t)},writePackedDouble:function(e,t){t.length&&this.writeMessage(e,OK,t)},writePackedFixed32:function(e,t){t.length&&this.writeMessage(e,RK,t)},writePackedSFixed32:function(e,t){t.length&&this.writeMessage(e,BK,t)},writePackedFixed64:function(e,t){t.length&&this.writeMessage(e,$K,t)},writePackedSFixed64:function(e,t){t.length&&this.writeMessage(e,UK,t)},writeBytesField:function(e,t){this.writeTag(e,Ar.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,Ar.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,Ar.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,Ar.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,Ar.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,Ar.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,Ar.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,Ar.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,Ar.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,Ar.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,!!t)}};function IK(e,t,r){var n=r.buf,i,a;if(a=n[r.pos++],i=(a&112)>>4,a<128||(a=n[r.pos++],i|=(a&127)<<3,a<128)||(a=n[r.pos++],i|=(a&127)<<10,a<128)||(a=n[r.pos++],i|=(a&127)<<17,a<128)||(a=n[r.pos++],i|=(a&127)<<24,a<128)||(a=n[r.pos++],i|=(a&1)<<31,a<128))return L2(e,i,t);throw new Error("Expected varint not more than 10 bytes")}function l1(e){return e.type===Ar.Bytes?e.readVarint()+e.pos:e.pos+1}function L2(e,t,r){return r?t*4294967296+(e>>>0):(t>>>0)*4294967296+(e>>>0)}function FK(e,t){var r,n;if(e>=0?(r=e%4294967296|0,n=e/4294967296|0):(r=~(-e%4294967296),n=~(-e/4294967296),r^4294967295?r=r+1|0:(r=0,n=n+1|0)),e>=18446744073709552e3||e<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");t.realloc(10),DK(r,n,t),TK(n,t)}function DK(e,t,r){r.buf[r.pos++]=e&127|128,e>>>=7,r.buf[r.pos++]=e&127|128,e>>>=7,r.buf[r.pos++]=e&127|128,e>>>=7,r.buf[r.pos++]=e&127|128,e>>>=7,r.buf[r.pos]=e&127}function TK(e,t){var r=(e&7)<<4;t.buf[t.pos++]|=r|((e>>>=3)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127)))))}function PD(e,t,r){var n=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.floor(Math.log(t)/(Math.LN2*7));r.realloc(n);for(var i=r.pos-1;i>=e;i--)r.buf[i+n]=r.buf[i]}function MK(e,t){for(var r=0;r>>8,e[r+2]=t>>>16,e[r+3]=t>>>24}function OD(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16)+(e[t+3]<<24)}function zK(e,t,r){for(var n="",i=t;i239?4:a>223?3:a>191?2:1;if(i+s>r)break;var l,u,c;s===1?a<128&&(o=a):s===2?(l=e[i+1],(l&192)===128&&(o=(a&31)<<6|l&63,o<=127&&(o=null))):s===3?(l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(o=(a&15)<<12|(l&63)<<6|u&63,(o<=2047||o>=55296&&o<=57343)&&(o=null))):s===4&&(l=e[i+1],u=e[i+2],c=e[i+3],(l&192)===128&&(u&192)===128&&(c&192)===128&&(o=(a&15)<<18|(l&63)<<12|(u&63)<<6|c&63,(o<=65535||o>=1114112)&&(o=null))),o===null?(o=65533,s=1):o>65535&&(o-=65536,n+=String.fromCharCode(o>>>10&1023|55296),o=56320|o&1023),n+=String.fromCharCode(o),i+=s}return n}function qK(e,t,r){return LD.decode(e.subarray(t,r))}function VK(e,t,r){for(var n=0,i,a;n55295&&i<57344)if(a)if(i<56320){e[r++]=239,e[r++]=191,e[r++]=189,a=i;continue}else i=a-55296<<10|i-56320|65536,a=null;else{i>56319||n+1===t.length?(e[r++]=239,e[r++]=191,e[r++]=189):a=i;continue}else a&&(e[r++]=239,e[r++]=191,e[r++]=189,a=null);i<128?e[r++]=i:(i<2048?e[r++]=i>>6|192:(i<65536?e[r++]=i>>12|224:(e[r++]=i>>18|240,e[r++]=i>>12&63|128),e[r++]=i>>6&63|128),e[r++]=i&63|128)}return r}});var $D=St((zbe,BD)=>{"use strict";BD.exports=B2;function B2(e,t){this.x=e,this.y=t}B2.prototype={clone:function(){return new B2(this.x,this.y)},add:function(e){return this.clone()._add(e)},sub:function(e){return this.clone()._sub(e)},multByPoint:function(e){return this.clone()._multByPoint(e)},divByPoint:function(e){return this.clone()._divByPoint(e)},mult:function(e){return this.clone()._mult(e)},div:function(e){return this.clone()._div(e)},rotate:function(e){return this.clone()._rotate(e)},rotateAround:function(e,t){return this.clone()._rotateAround(e,t)},matMult:function(e){return this.clone()._matMult(e)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(e){return this.x===e.x&&this.y===e.y},dist:function(e){return Math.sqrt(this.distSqr(e))},distSqr:function(e){var t=e.x-this.x,r=e.y-this.y;return t*t+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith:function(e){return this.angleWithSep(e.x,e.y)},angleWithSep:function(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult:function(e){var t=e[0]*this.x+e[1]*this.y,r=e[2]*this.x+e[3]*this.y;return this.x=t,this.y=r,this},_add:function(e){return this.x+=e.x,this.y+=e.y,this},_sub:function(e){return this.x-=e.x,this.y-=e.y,this},_mult:function(e){return this.x*=e,this.y*=e,this},_div:function(e){return this.x/=e,this.y/=e,this},_multByPoint:function(e){return this.x*=e.x,this.y*=e.y,this},_divByPoint:function(e){return this.x/=e.x,this.y/=e.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var e=this.y;return this.y=this.x,this.x=-e,this},_rotate:function(e){var t=Math.cos(e),r=Math.sin(e),n=t*this.x-r*this.y,i=r*this.x+t*this.y;return this.x=n,this.y=i,this},_rotateAround:function(e,t){var r=Math.cos(e),n=Math.sin(e),i=t.x+r*(this.x-t.x)-n*(this.y-t.y),a=t.y+n*(this.x-t.x)+r*(this.y-t.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}};B2.convert=function(e){return e instanceof B2?e:Array.isArray(e)?new B2(e[0],e[1]):e}});var wv=St((qbe,UD)=>{"use strict";var GK=$D();UD.exports=$2;function $2(e,t,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=e,this._geometry=-1,this._keys=n,this._values=i,e.readFields(jK,this,t)}function jK(e,t,r){e==1?t.id=r.readVarint():e==2?HK(r,t):e==3?t.type=r.readVarint():e==4&&(t._geometry=r.pos)}function HK(e,t){for(var r=e.readVarint()+e.pos;e.pos>3}if(n--,r===1||r===2)i+=e.readSVarint(),a+=e.readSVarint(),r===1&&(s&&o.push(s),s=[]),s.push(new GK(i,a));else if(r===7)s&&s.push(s[0].clone());else throw new Error("unknown command "+r)}return s&&o.push(s),o};$2.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,u=-1/0;e.pos>3}if(n--,r===1||r===2)i+=e.readSVarint(),a+=e.readSVarint(),is&&(s=i),au&&(u=a);else if(r!==7)throw new Error("unknown command "+r)}return[o,l,s,u]};$2.prototype.toGeoJSON=function(e,t,r){var n=this.extent*Math.pow(2,r),i=this.extent*e,a=this.extent*t,o=this.loadGeometry(),s=$2.types[this.type],l,u;function c(d){for(var g=0;g{"use strict";var XK=wv();qD.exports=zD;function zD(e,t){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(YK,this,t),this.length=this._features.length}function YK(e,t,r){e===15?t.version=r.readVarint():e===1?t.name=r.readString():e===5?t.extent=r.readVarint():e===2?t._features.push(r.pos):e===3?t._keys.push(r.readString()):e===4&&t._values.push(KK(r))}function KK(e){for(var t=null,r=e.readVarint()+e.pos;e.pos>3;t=n===1?e.readString():n===2?e.readFloat():n===3?e.readDouble():n===4?e.readVarint64():n===5?e.readVarint():n===6?e.readSVarint():n===7?e.readBoolean():null}return t}zD.prototype.feature=function(e){if(e<0||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new XK(this._pbf,t,this.extent,this._keys,this._values)}});var GD=St((Gbe,VD)=>{"use strict";var ZK=_v();VD.exports=JK;function JK(e,t){this.layers=e.readFields(eZ,{},t)}function eZ(e,t,r){if(e===3){var n=new ZK(r,r.readVarint()+r.pos);n.length&&(t[n.name]=n)}}});var h9=St((jbe,m9)=>{m9.exports.VectorTile=GD();m9.exports.VectorTileFeature=wv();m9.exports.VectorTileLayer=_v()});var iy=St((cAe,aT)=>{"use strict";aT.exports=function(e,t){t||(t={}),typeof t=="function"&&(t={cmp:t});var r=typeof t.cycles=="boolean"?t.cycles:!1,n=t.cmp&&function(a){return function(o){return function(s,l){var u={key:s,value:o[s]},c={key:l,value:o[l]};return a(u,c)}}}(t.cmp),i=[];return function a(o){if(o&&o.toJSON&&typeof o.toJSON=="function"&&(o=o.toJSON()),o!==void 0){if(typeof o=="number")return isFinite(o)?""+o:"null";if(typeof o!="object")return JSON.stringify(o);var s,l;if(Array.isArray(o)){for(l="[",s=0;s{gu.exports=pJ;gu.exports.pair=mJ;gu.exports.format=Qy;gu.exports.formatPair=dJ;gu.exports.coordToDMS=CM;function pJ(e,t){var r=Xy(e,t);return r===null?null:r.val}function dJ(e){return Qy(e.lat,"lat")+" "+Qy(e.lon,"lon")}function Qy(e,t){var r=CM(e,t);return r.whole+"\xB0 "+(r.minutes?r.minutes+"' ":"")+(r.seconds?r.seconds+'" ':"")+r.dir}function CM(e,t){var r={lat:["N","S"],lon:["E","W"]}[t]||"",n=r[e>=0?0:1],i=Math.abs(e),a=Math.floor(i),o=i-a,s=o*60,l=Math.floor(s),u=Math.floor((s-l)*60);return{whole:a,minutes:l,seconds:u,dir:n}}function Xy(e,t){if(t||(t="NSEW"),typeof e!="string")return null;e=e.toUpperCase();var r=/^[\s\,]*([NSEW])?\s*([\-|\—|\―]?[0-9.]+)[°º˚]?\s*(?:([0-9.]+)['’′‘]\s*)?(?:([0-9.]+)(?:''|"|”|″)\s*)?([NSEW])?/,n=e.match(r);if(!n)return null;var i=n[0],a;if(n[1]&&n[5]?(a=n[1],i=i.slice(0,-1)):a=n[1]||n[5],a&&t.indexOf(a)===-1)return null;var o=n[2]?parseFloat(n[2]):0,s=n[3]?parseFloat(n[3])/60:0,l=n[4]?parseFloat(n[4])/3600:0,u=o<0?-1:1;return(a==="S"||a==="W")&&(u*=-1),{val:(Math.abs(o)+s+l)*u,dim:a,matched:i,remain:e.slice(i.length)}}function mJ(e,t){e=e.trim();var r=Xy(e,t);if(!r)return null;e=r.remain.trim();var n=Xy(e,t);return!n||n.remain?null:r.dim?hJ(r.val,n.val,r.dim):[r.val,n.val]}function hJ(e,t,r){if(r==="N"||r==="S")return[e,t];if(r==="W"||r==="E")return[t,e]}});var TN=St((Ab,Sb)=>{(function(e,t){typeof Ab=="object"&&typeof Sb<"u"?Sb.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.polygonClipping=t())})(Ab,function(){"use strict";function e(ie,j){var W={label:0,sent:function(){if(J[0]&1)throw J[1];return J[1]},trys:[],ops:[]},Y,ee,J,Ee;return Ee={next:be(0),throw:be(1),return:be(2)},typeof Symbol=="function"&&(Ee[Symbol.iterator]=function(){return this}),Ee;function be(Fe){return function(Ke){return Ne([Fe,Ke])}}function Ne(Fe){if(Y)throw new TypeError("Generator is already executing.");for(;W;)try{if(Y=1,ee&&(J=Fe[0]&2?ee.return:Fe[0]?ee.throw||((J=ee.return)&&J.call(ee),0):ee.next)&&!(J=J.call(ee,Fe[1])).done)return J;switch(ee=0,J&&(Fe=[Fe[0]&2,J.value]),Fe[0]){case 0:case 1:J=Fe;break;case 4:return W.label++,{value:Fe[1],done:!1};case 5:W.label++,ee=Fe[1],Fe=[0];continue;case 7:Fe=W.ops.pop(),W.trys.pop();continue;default:if(J=W.trys,!(J=J.length>0&&J[J.length-1])&&(Fe[0]===6||Fe[0]===2)){W=0;continue}if(Fe[0]===3&&(!J||Fe[1]>J[0]&&Fe[1]j?1:ie0){if(j.right===null)break;if(W(ie,j.right.key)>0){var be=j.right;if(j.right=be.left,be.left=j,j=be,j.right===null)break}ee.right=j,ee=j,j=j.right}else break}return ee.right=j.left,J.left=j.right,j.left=Y.right,j.right=Y.left,j}function i(ie,j,W,Y){var ee=new t(ie,j);if(W===null)return ee.left=ee.right=null,ee;W=n(ie,W,Y);var J=Y(ie,W.key);return J<0?(ee.left=W.left,ee.right=W,W.left=null):J>=0&&(ee.right=W.right,ee.left=W,W.right=null),ee}function a(ie,j,W){var Y=null,ee=null;if(j){j=n(ie,j,W);var J=W(j.key,ie);J===0?(Y=j.left,ee=j.right):J<0?(ee=j.right,j.right=null,Y=j):(Y=j.left,j.left=null,ee=j)}return{left:Y,right:ee}}function o(ie,j,W){return j===null?ie:(ie===null||(j=n(ie.key,j,W),j.left=ie),j)}function s(ie,j,W,Y,ee){if(ie){Y(""+j+(W?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ")+ee(ie)+` +`);var J=j+(W?" ":"\u2502 ");ie.left&&s(ie.left,J,!1,Y,ee),ie.right&&s(ie.right,J,!0,Y,ee)}}var l=function(){function ie(j){j===void 0&&(j=r),this._root=null,this._size=0,this._comparator=j}return ie.prototype.insert=function(j,W){return this._size++,this._root=i(j,W,this._root,this._comparator)},ie.prototype.add=function(j,W){var Y=new t(j,W);this._root===null&&(Y.left=Y.right=null,this._size++,this._root=Y);var ee=this._comparator,J=n(j,this._root,ee),Ee=ee(j,J.key);return Ee===0?this._root=J:(Ee<0?(Y.left=J.left,Y.right=J,J.left=null):Ee>0&&(Y.right=J.right,Y.left=J,J.right=null),this._size++,this._root=Y),this._root},ie.prototype.remove=function(j){this._root=this._remove(j,this._root,this._comparator)},ie.prototype._remove=function(j,W,Y){var ee;if(W===null)return null;W=n(j,W,Y);var J=Y(j,W.key);return J===0?(W.left===null?ee=W.right:(ee=n(j,W.left,Y),ee.right=W.right),this._size--,ee):W},ie.prototype.pop=function(){var j=this._root;if(j){for(;j.left;)j=j.left;return this._root=n(j.key,this._root,this._comparator),this._root=this._remove(j.key,this._root,this._comparator),{key:j.key,data:j.data}}return null},ie.prototype.findStatic=function(j){for(var W=this._root,Y=this._comparator;W;){var ee=Y(j,W.key);if(ee===0)return W;ee<0?W=W.left:W=W.right}return null},ie.prototype.find=function(j){return this._root&&(this._root=n(j,this._root,this._comparator),this._comparator(j,this._root.key)!==0)?null:this._root},ie.prototype.contains=function(j){for(var W=this._root,Y=this._comparator;W;){var ee=Y(j,W.key);if(ee===0)return!0;ee<0?W=W.left:W=W.right}return!1},ie.prototype.forEach=function(j,W){for(var Y=this._root,ee=[],J=!1;!J;)Y!==null?(ee.push(Y),Y=Y.left):ee.length!==0?(Y=ee.pop(),j.call(W,Y),Y=Y.right):J=!0;return this},ie.prototype.range=function(j,W,Y,ee){for(var J=[],Ee=this._comparator,be=this._root,Ne;J.length!==0||be;)if(be)J.push(be),be=be.left;else{if(be=J.pop(),Ne=Ee(be.key,W),Ne>0)break;if(Ee(be.key,j)>=0&&Y.call(ee,be))return this;be=be.right}return this},ie.prototype.keys=function(){var j=[];return this.forEach(function(W){var Y=W.key;return j.push(Y)}),j},ie.prototype.values=function(){var j=[];return this.forEach(function(W){var Y=W.data;return j.push(Y)}),j},ie.prototype.min=function(){return this._root?this.minNode(this._root).key:null},ie.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},ie.prototype.minNode=function(j){if(j===void 0&&(j=this._root),j)for(;j.left;)j=j.left;return j},ie.prototype.maxNode=function(j){if(j===void 0&&(j=this._root),j)for(;j.right;)j=j.right;return j},ie.prototype.at=function(j){for(var W=this._root,Y=!1,ee=0,J=[];!Y;)if(W)J.push(W),W=W.left;else if(J.length>0){if(W=J.pop(),ee===j)return W;ee++,W=W.right}else Y=!0;return null},ie.prototype.next=function(j){var W=this._root,Y=null;if(j.right){for(Y=j.right;Y.left;)Y=Y.left;return Y}for(var ee=this._comparator;W;){var J=ee(j.key,W.key);if(J===0)break;J<0?(Y=W,W=W.left):W=W.right}return Y},ie.prototype.prev=function(j){var W=this._root,Y=null;if(j.left!==null){for(Y=j.left;Y.right;)Y=Y.right;return Y}for(var ee=this._comparator;W;){var J=ee(j.key,W.key);if(J===0)break;J<0?W=W.left:(Y=W,W=W.right)}return Y},ie.prototype.clear=function(){return this._root=null,this._size=0,this},ie.prototype.toList=function(){return f(this._root)},ie.prototype.load=function(j,W,Y){W===void 0&&(W=[]),Y===void 0&&(Y=!1);var ee=j.length,J=this._comparator;if(Y&&g(j,W,0,ee-1,J),this._root===null)this._root=u(j,W,0,ee),this._size=ee;else{var Ee=d(this.toList(),c(j,W),J);ee=this._size+ee,this._root=p({head:Ee},0,ee)}return this},ie.prototype.isEmpty=function(){return this._root===null},Object.defineProperty(ie.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),Object.defineProperty(ie.prototype,"root",{get:function(){return this._root},enumerable:!0,configurable:!0}),ie.prototype.toString=function(j){j===void 0&&(j=function(Y){return String(Y.key)});var W=[];return s(this._root,"",!0,function(Y){return W.push(Y)},j),W.join("")},ie.prototype.update=function(j,W,Y){var ee=this._comparator,J=a(j,this._root,ee),Ee=J.left,be=J.right;ee(j,W)<0?be=i(W,Y,be,ee):Ee=i(W,Y,Ee,ee),this._root=o(Ee,be,ee)},ie.prototype.split=function(j){return a(j,this._root,this._comparator)},ie.prototype[Symbol.iterator]=function(){var j,W,Y;return e(this,function(ee){switch(ee.label){case 0:j=this._root,W=[],Y=!1,ee.label=1;case 1:return Y?[3,6]:j===null?[3,2]:(W.push(j),j=j.left,[3,5]);case 2:return W.length===0?[3,4]:(j=W.pop(),[4,j]);case 3:return ee.sent(),j=j.right,[3,5];case 4:Y=!0,ee.label=5;case 5:return[3,1];case 6:return[2]}})},ie}();function u(ie,j,W,Y){var ee=Y-W;if(ee>0){var J=W+Math.floor(ee/2),Ee=ie[J],be=j[J],Ne=new t(Ee,be);return Ne.left=u(ie,j,W,J),Ne.right=u(ie,j,J+1,Y),Ne}return null}function c(ie,j){for(var W=new t(null,null),Y=W,ee=0;ee0?(j=J=J.next=W.pop(),j=j.right):Y=!0;return J.next=null,ee.next}function p(ie,j,W){var Y=W-j;if(Y>0){var ee=j+Math.floor(Y/2),J=p(ie,j,ee),Ee=ie.head;return Ee.left=J,ie.head=ie.head.next,Ee.right=p(ie,ee+1,W),Ee}return null}function d(ie,j,W){for(var Y=new t(null,null),ee=Y,J=ie,Ee=j;J!==null&&Ee!==null;)W(J.key,Ee.key)<0?(ee.next=J,J=J.next):(ee.next=Ee,Ee=Ee.next),ee=ee.next;return J!==null?ee.next=J:Ee!==null&&(ee.next=Ee),Y.next}function g(ie,j,W,Y,ee){if(!(W>=Y)){for(var J=ie[W+Y>>1],Ee=W-1,be=Y+1;;){do Ee++;while(ee(ie[Ee],J)<0);do be--;while(ee(ie[be],J)>0);if(Ee>=be)break;var Ne=ie[Ee];ie[Ee]=ie[be],ie[be]=Ne,Ne=j[Ee],j[Ee]=j[be],j[be]=Ne}g(ie,j,W,be,ee),g(ie,j,be+1,Y,ee)}}let x=(ie,j)=>ie.ll.x<=j.x&&j.x<=ie.ur.x&&ie.ll.y<=j.y&&j.y<=ie.ur.y,b=(ie,j)=>{if(j.ur.x{if(-mFe==Ke>-Fe?(J=Fe,Fe=j[++ye]):(J=Ke,Ke=Y[++Be]);let Ze=0;if(yeFe==Ke>-Fe?(Ee=Fe+J,be=J-(Ee-Fe),Fe=j[++ye]):(Ee=Ke+J,be=J-(Ee-Ke),Ke=Y[++Be]),J=Ee,be!==0&&(ee[Ze++]=be);yeFe==Ke>-Fe?(Ee=J+Fe,Ne=Ee-J,be=J-(Ee-Ne)+(Fe-Ne),Fe=j[++ye]):(Ee=J+Ke,Ne=Ee-J,be=J-(Ee-Ne)+(Ke-Ne),Ke=Y[++Be]),J=Ee,be!==0&&(ee[Ze++]=be);for(;ye=ia||-Dr>=ia||(ye=ie-si,be=ie-(si+ye)+(ye-ee),ye=W-xi,Fe=W-(xi+ye)+(ye-ee),ye=j-wi,Ne=j-(wi+ye)+(ye-J),ye=Y-_i,Ke=Y-(_i+ye)+(ye-J),be===0&&Ne===0&&Fe===0&&Ke===0)||(ia=M*Ee+k*Math.abs(Dr),Dr+=si*Ke+_i*be-(wi*Fe+xi*Ne),Dr>=ia||-Dr>=ia))return Dr;Pr=be*_i,Be=E*be,Ze=Be-(Be-be),bt=be-Ze,Be=E*_i,ft=Be-(Be-_i),Rt=_i-ft,Kr=bt*Rt-(Pr-Ze*ft-bt*ft-Ze*Rt),mn=Ne*xi,Be=E*Ne,Ze=Be-(Be-Ne),bt=Ne-Ze,Be=E*xi,ft=Be-(Be-xi),Rt=xi-ft,Kn=bt*Rt-(mn-Ze*ft-bt*ft-Ze*Rt),Dt=Kr-Kn,ye=Kr-Dt,$[0]=Kr-(Dt+ye)+(ye-Kn),wr=Pr+Dt,ye=wr-Pr,dn=Pr-(wr-ye)+(Dt-ye),Dt=dn-mn,ye=dn-Dt,$[1]=dn-(Dt+ye)+(ye-mn),hn=wr+Dt,ye=hn-wr,$[2]=wr-(hn-ye)+(Dt-ye),$[3]=hn;let e4=S(4,R,4,$,N);Pr=si*Ke,Be=E*si,Ze=Be-(Be-si),bt=si-Ze,Be=E*Ke,ft=Be-(Be-Ke),Rt=Ke-ft,Kr=bt*Rt-(Pr-Ze*ft-bt*ft-Ze*Rt),mn=wi*Fe,Be=E*wi,Ze=Be-(Be-wi),bt=wi-Ze,Be=E*Fe,ft=Be-(Be-Fe),Rt=Fe-ft,Kn=bt*Rt-(mn-Ze*ft-bt*ft-Ze*Rt),Dt=Kr-Kn,ye=Kr-Dt,$[0]=Kr-(Dt+ye)+(ye-Kn),wr=Pr+Dt,ye=wr-Pr,dn=Pr-(wr-ye)+(Dt-ye),Dt=dn-mn,ye=dn-Dt,$[1]=dn-(Dt+ye)+(ye-mn),hn=wr+Dt,ye=hn-wr,$[2]=wr-(hn-ye)+(Dt-ye),$[3]=hn;let ks=S(e4,N,4,$,U);Pr=be*Ke,Be=E*be,Ze=Be-(Be-be),bt=be-Ze,Be=E*Ke,ft=Be-(Be-Ke),Rt=Ke-ft,Kr=bt*Rt-(Pr-Ze*ft-bt*ft-Ze*Rt),mn=Ne*Fe,Be=E*Ne,Ze=Be-(Be-Ne),bt=Ne-Ze,Be=E*Fe,ft=Be-(Be-Fe),Rt=Fe-ft,Kn=bt*Rt-(mn-Ze*ft-bt*ft-Ze*Rt),Dt=Kr-Kn,ye=Kr-Dt,$[0]=Kr-(Dt+ye)+(ye-Kn),wr=Pr+Dt,ye=wr-Pr,dn=Pr-(wr-ye)+(Dt-ye),Dt=dn-mn,ye=dn-Dt,$[1]=dn-(Dt+ye)+(ye-mn),hn=wr+Dt,ye=hn-wr,$[2]=wr-(hn-ye)+(Dt-ye),$[3]=hn;let Fl=S(ks,U,4,$,B);return B[Fl-1]}function V(ie,j,W,Y,ee,J){let Ee=(j-J)*(W-ee),be=(ie-ee)*(Y-J),Ne=Ee-be,Fe=Math.abs(Ee+be);return Math.abs(Ne)>=O*Fe?Ne:-z(ie,j,W,Y,ee,J,Fe)}let H=(ie,j)=>ie.x*j.y-ie.y*j.x,Z=(ie,j)=>ie.x*j.x+ie.y*j.y,oe=(ie,j,W)=>{let Y=V(ie.x,ie.y,j.x,j.y,W.x,W.y);return Y>0?-1:Y<0?1:0},pe=ie=>Math.sqrt(Z(ie,ie)),ne=(ie,j,W)=>{let Y={x:j.x-ie.x,y:j.y-ie.y},ee={x:W.x-ie.x,y:W.y-ie.y};return H(ee,Y)/pe(ee)/pe(Y)},ge=(ie,j,W)=>{let Y={x:j.x-ie.x,y:j.y-ie.y},ee={x:W.x-ie.x,y:W.y-ie.y};return Z(ee,Y)/pe(ee)/pe(Y)},ve=(ie,j,W)=>j.y===0?null:{x:ie.x+j.x/j.y*(W-ie.y),y:W},Oe=(ie,j,W)=>j.x===0?null:{x:W,y:ie.y+j.y/j.x*(W-ie.x)},tt=(ie,j,W,Y)=>{if(j.x===0)return Oe(W,Y,ie.x);if(Y.x===0)return Oe(ie,j,W.x);if(j.y===0)return ve(W,Y,ie.y);if(Y.y===0)return ve(ie,j,W.y);let ee=H(j,Y);if(ee==0)return null;let J={x:W.x-ie.x,y:W.y-ie.y},Ee=H(J,j)/ee,be=H(J,Y)/ee,Ne=ie.x+be*j.x,Fe=W.x+Ee*Y.x,Ke=ie.y+be*j.y,ye=W.y+Ee*Y.y,Be=(Ne+Fe)/2,Ze=(Ke+ye)/2;return{x:Be,y:Ze}};class Ce{static compare(j,W){let Y=Ce.comparePoints(j.point,W.point);return Y!==0?Y:(j.point!==W.point&&j.link(W),j.isLeft!==W.isLeft?j.isLeft?1:-1:le.compare(j.segment,W.segment))}static comparePoints(j,W){return j.xW.x?1:j.yW.y?1:0}constructor(j,W){j.events===void 0?j.events=[this]:j.events.push(this),this.point=j,this.isLeft=W}link(j){if(j.point===this.point)throw new Error("Tried to link already linked events");let W=j.point.events;for(let Y=0,ee=W.length;Y{let J=ee.otherSE;W.set(ee,{sine:ne(this.point,j.point,J.point),cosine:ge(this.point,j.point,J.point)})};return(ee,J)=>{W.has(ee)||Y(ee),W.has(J)||Y(J);let{sine:Ee,cosine:be}=W.get(ee),{sine:Ne,cosine:Fe}=W.get(J);return Ee>=0&&Ne>=0?beFe?-1:0:Ee<0&&Ne<0?beFe?1:0:NeEe?1:0}}}let te=0;class le{static compare(j,W){let Y=j.leftSE.point.x,ee=W.leftSE.point.x,J=j.rightSE.point.x,Ee=W.rightSE.point.x;if(Eebe&&Ne>Fe)return-1;let ye=j.comparePoint(W.leftSE.point);if(ye<0)return 1;if(ye>0)return-1;let Be=W.comparePoint(j.rightSE.point);return Be!==0?Be:-1}if(Y>ee){if(beNe&&be>Ke)return 1;let ye=W.comparePoint(j.leftSE.point);if(ye!==0)return ye;let Be=j.comparePoint(W.rightSE.point);return Be<0?1:Be>0?-1:1}if(beNe)return 1;if(JEe){let ye=j.comparePoint(W.rightSE.point);if(ye<0)return 1;if(ye>0)return-1}if(J!==Ee){let ye=Fe-be,Be=J-Y,Ze=Ke-Ne,bt=Ee-ee;if(ye>Be&&Zebt)return-1}return J>Ee?1:JKe?1:j.idW.id?1:0}constructor(j,W,Y,ee){this.id=++te,this.leftSE=j,j.segment=this,j.otherSE=W,this.rightSE=W,W.segment=this,W.otherSE=j,this.rings=Y,this.windings=ee}static fromRing(j,W,Y){let ee,J,Ee,be=Ce.comparePoints(j,W);if(be<0)ee=j,J=W,Ee=1;else if(be>0)ee=W,J=j,Ee=-1;else throw new Error(`Tried to create degenerate segment at [${j.x}, ${j.y}]`);let Ne=new Ce(ee,!0),Fe=new Ce(J,!1);return new le(Ne,Fe,[Y],[Ee])}replaceRightSE(j){this.rightSE=j,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){let j=this.leftSE.point.y,W=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:jW?j:W}}}vector(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}isAnEndpoint(j){return j.x===this.leftSE.point.x&&j.y===this.leftSE.point.y||j.x===this.rightSE.point.x&&j.y===this.rightSE.point.y}comparePoint(j){if(this.isAnEndpoint(j))return 0;let W=this.leftSE.point,Y=this.rightSE.point,ee=this.vector();if(W.x===Y.x)return j.x===W.x?0:j.x0&&be.swapEvents(),Ce.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),Y&&(ee.checkForConsuming(),J.checkForConsuming()),W}swapEvents(){let j=this.rightSE;this.rightSE=this.leftSE,this.leftSE=j,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let W=0,Y=this.windings.length;W0){let J=W;W=Y,Y=J}if(W.prev===Y){let J=W;W=Y,Y=J}for(let J=0,Ee=Y.rings.length;Jee.length===1&&ee[0].isSubject;this._isInResult=Y(j)!==Y(W);break}default:throw new Error(`Unrecognized operation type found ${Qe.type}`)}return this._isInResult}}class Se{constructor(j,W,Y){if(!Array.isArray(j)||j.length===0)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=W,this.isExterior=Y,this.segments=[],typeof j[0][0]!="number"||typeof j[0][1]!="number")throw new Error("Input geometry is not a valid Polygon or MultiPolygon");let ee=A.round(j[0][0],j[0][1]);this.bbox={ll:{x:ee.x,y:ee.y},ur:{x:ee.x,y:ee.y}};let J=ee;for(let Ee=1,be=j.length;Eethis.bbox.ur.x&&(this.bbox.ur.x=Ne.x),Ne.y>this.bbox.ur.y&&(this.bbox.ur.y=Ne.y),J=Ne)}(ee.x!==J.x||ee.y!==J.y)&&this.segments.push(le.fromRing(J,ee,this))}getSweepEvents(){let j=[];for(let W=0,Y=this.segments.length;Wthis.bbox.ur.x&&(this.bbox.ur.x=J.bbox.ur.x),J.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=J.bbox.ur.y),this.interiorRings.push(J)}this.multiPoly=W}getSweepEvents(){let j=this.exteriorRing.getSweepEvents();for(let W=0,Y=this.interiorRings.length;Wthis.bbox.ur.x&&(this.bbox.ur.x=J.bbox.ur.x),J.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=J.bbox.ur.y),this.polys.push(J)}this.isSubject=W}getSweepEvents(){let j=[];for(let W=0,Y=this.polys.length;W0&&(j=Ee)}let W=j.segment.prevInResult(),Y=W?W.prevInResult():null;for(;;){if(!W)return null;if(!Y)return W.ringOut;if(Y.ringOut!==W.ringOut)return Y.ringOut.enclosingRing()!==W.ringOut?W.ringOut:W.ringOut.enclosingRing();W=Y.prevInResult(),Y=W?W.prevInResult():null}}}class ue{constructor(j){this.exteriorRing=j,j.poly=this,this.interiorRings=[]}addInterior(j){this.interiorRings.push(j),j.poly=this}getGeom(){let j=[this.exteriorRing.getGeom()];if(j[0]===null)return null;for(let W=0,Y=this.interiorRings.length;W1&&arguments[1]!==void 0?arguments[1]:le.compare;this.queue=j,this.tree=new l(W),this.segments=[]}process(j){let W=j.segment,Y=[];if(j.consumedBy)return j.isLeft?this.queue.remove(j.otherSE):this.tree.remove(W),Y;let ee=j.isLeft?this.tree.add(W):this.tree.find(W);if(!ee)throw new Error(`Unable to find segment #${W.id} [${W.leftSE.point.x}, ${W.leftSE.point.y}] -> [${W.rightSE.point.x}, ${W.rightSE.point.y}] in SweepLine tree.`);let J=ee,Ee=ee,be,Ne;for(;be===void 0;)J=this.tree.prev(J),J===null?be=null:J.key.consumedBy===void 0&&(be=J.key);for(;Ne===void 0;)Ee=this.tree.next(Ee),Ee===null?Ne=null:Ee.key.consumedBy===void 0&&(Ne=Ee.key);if(j.isLeft){let Fe=null;if(be){let ye=be.getIntersection(W);if(ye!==null&&(W.isAnEndpoint(ye)||(Fe=ye),!be.isAnEndpoint(ye))){let Be=this._splitSafely(be,ye);for(let Ze=0,bt=Be.length;Ze0?(this.tree.remove(W),Y.push(j)):(this.segments.push(W),W.prev=be)}else{if(be&&Ne){let Fe=be.getIntersection(Ne);if(Fe!==null){if(!be.isAnEndpoint(Fe)){let Ke=this._splitSafely(be,Fe);for(let ye=0,Be=Ke.length;yewe)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big).")}let Ee=new Ae(J),be=J.size,Ne=J.pop();for(;Ne;){let ye=Ne.key;if(J.size===be){let Ze=ye.segment;throw new Error(`Unable to pop() ${ye.isLeft?"left":"right"} SweepEvent [${ye.point.x}, ${ye.point.y}] from segment #${Ze.id} [${Ze.leftSE.point.x}, ${Ze.leftSE.point.y}] -> [${Ze.rightSE.point.x}, ${Ze.rightSE.point.y}] from queue.`)}if(J.size>we)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big).");if(Ee.segments.length>Me)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments).");let Be=Ee.process(ye);for(let Ze=0,bt=Be.length;Ze1?j-1:0),Y=1;Y1?j-1:0),Y=1;Y1?j-1:0),Y=1;Y1?j-1:0),Y=1;Y-1});var b_,w_;function h4(e){if(typeof e!="string"&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||e==="")throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function xm(e){return typeof e!="string"&&(e=String(e)),e}function wm(e){var t={next:function(){var r=e.shift();return{done:r===void 0,value:r}}};return Si.iterable&&(t[Symbol.iterator]=function(){return t}),t}function Nn(e){this.map={},e instanceof Nn?e.forEach(function(t,r){this.append(r,t)},this):Array.isArray(e)?e.forEach(function(t){if(t.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+t.length);this.append(t[0],t[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}Nn.prototype.append=function(e,t){e=h4(e),t=xm(t);var r=this.map[e];this.map[e]=r?r+", "+t:t};Nn.prototype.delete=function(e){delete this.map[h4(e)]};Nn.prototype.get=function(e){return e=h4(e),this.has(e)?this.map[e]:null};Nn.prototype.has=function(e){return this.map.hasOwnProperty(h4(e))};Nn.prototype.set=function(e,t){this.map[h4(e)]=xm(t)};Nn.prototype.forEach=function(e,t){for(var r in this.map)this.map.hasOwnProperty(r)&&e.call(t,this.map[r],r,this)};Nn.prototype.keys=function(){var e=[];return this.forEach(function(t,r){e.push(r)}),wm(e)};Nn.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),wm(e)};Nn.prototype.entries=function(){var e=[];return this.forEach(function(t,r){e.push([r,t])}),wm(e)};Si.iterable&&(Nn.prototype[Symbol.iterator]=Nn.prototype.entries);function bm(e){if(!e._noBody){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}}function __(e){return new Promise(function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}})}function az(e){var t=new FileReader,r=__(t);return t.readAsArrayBuffer(e),r}function oz(e){var t=new FileReader,r=__(t),n=/charset=([A-Za-z0-9_-]+)/.exec(e.type),i=n?n[1]:"utf-8";return t.readAsText(e,i),r}function sz(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?t:e}function Vl(e,t){if(!(this instanceof Vl))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t=t||{};var r=t.body;if(e instanceof Vl){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new Nn(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,!r&&e._bodyInit!=null&&(r=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"same-origin",(t.headers||!this.headers)&&(this.headers=new Nn(t.headers)),this.method=uz(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal||function(){if("AbortController"in Jn){var a=new AbortController;return a.signal}}(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&r)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(r),(this.method==="GET"||this.method==="HEAD")&&(t.cache==="no-store"||t.cache==="no-cache")){var n=/([?&])_=[^&]*/;if(n.test(this.url))this.url=this.url.replace(n,"$1_="+new Date().getTime());else{var i=/\?/;this.url+=(i.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}Vl.prototype.clone=function(){return new Vl(this,{body:this._bodyInit})};function cz(e){var t=new FormData;return e.trim().split("&").forEach(function(r){if(r){var n=r.split("="),i=n.shift().replace(/\+/g," "),a=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(a))}}),t}function fz(e){var t=new Nn,r=e.replace(/\r?\n[\t ]+/g," ");return r.split("\r").map(function(n){return n.indexOf(` +`)===0?n.substr(1,n.length):n}).forEach(function(n){var i=n.split(":"),a=i.shift().trim();if(a){var o=i.join(":").trim();try{t.append(a,o)}catch(s){console.warn("Response "+s.message)}}}),t}E_.call(Vl.prototype);function Uo(e,t){if(!(this instanceof Uo))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(t||(t={}),this.type="default",this.status=t.status===void 0?200:t.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText===void 0?"":""+t.statusText,this.headers=new Nn(t.headers),this.url=t.url||"",this._initBody(e)}E_.call(Uo.prototype);Uo.prototype.clone=function(){return new Uo(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Nn(this.headers),url:this.url})};Uo.error=function(){var e=new Uo(null,{status:200,statusText:""});return e.ok=!1,e.status=0,e.type="error",e};var pz=[301,302,303,307,308];Uo.redirect=function(e,t){if(pz.indexOf(t)===-1)throw new RangeError("Invalid status code");return new Uo(null,{status:t,headers:{location:e}})};var ql=Jn.DOMException;try{new ql}catch{ql=function(t,r){this.message=t,this.name=r;var n=Error(t);this.stack=n.stack},ql.prototype=Object.create(Error.prototype),ql.prototype.constructor=ql}function k_(e,t){return new Promise(function(r,n){var i=new Vl(e,t);if(i.signal&&i.signal.aborted)return n(new ql("Aborted","AbortError"));var a=new XMLHttpRequest;function o(){a.abort()}a.onload=function(){var u={statusText:a.statusText,headers:fz(a.getAllResponseHeaders()||"")};i.url.indexOf("file://")===0&&(a.status<200||a.status>599)?u.status=200:u.status=a.status,u.url="responseURL"in a?a.responseURL:u.headers.get("X-Request-URL");var c="response"in a?a.response:a.responseText;setTimeout(function(){r(new Uo(c,u))},0)},a.onerror=function(){setTimeout(function(){n(new TypeError("Network request failed"))},0)},a.ontimeout=function(){setTimeout(function(){n(new TypeError("Network request timed out"))},0)},a.onabort=function(){setTimeout(function(){n(new ql("Aborted","AbortError"))},0)};function s(u){try{return u===""&&Jn.location.href?Jn.location.href:u}catch{return u}}if(a.open(i.method,s(i.url),!0),i.credentials==="include"?a.withCredentials=!0:i.credentials==="omit"&&(a.withCredentials=!1),"responseType"in a&&(Si.blob?a.responseType="blob":Si.arrayBuffer&&(a.responseType="arraybuffer")),t&&typeof t.headers=="object"&&!(t.headers instanceof Nn||Jn.Headers&&t.headers instanceof Jn.Headers)){var l=[];Object.getOwnPropertyNames(t.headers).forEach(function(u){l.push(h4(u)),a.setRequestHeader(u,xm(t.headers[u]))}),i.headers.forEach(function(u,c){l.indexOf(c)===-1&&a.setRequestHeader(c,u)})}else i.headers.forEach(function(u,c){a.setRequestHeader(c,u)});i.signal&&(i.signal.addEventListener("abort",o),a.onreadystatechange=function(){a.readyState===4&&i.signal.removeEventListener("abort",o)}),a.send(typeof i._bodyInit>"u"?null:i._bodyInit)})}k_.polyfill=!0;Jn.fetch||(Jn.fetch=k_,Jn.Headers=Nn,Jn.Request=Vl,Jn.Response=Uo);(function(e){typeof define=="function"&&define.amd?define(e):e()})(function(){"use strict";function e(m,v){if(!(m instanceof v))throw new TypeError("Cannot call a class as a function")}function t(m,v){for(var y=0;y"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function s(m){if(m===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return m}function l(m,v){if(v&&(typeof v=="object"||typeof v=="function"))return v;if(v!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return s(m)}function u(m){var v=o();return function(){var _=i(m),w;if(v){var A=i(this).constructor;w=Reflect.construct(_,arguments,A)}else w=_.apply(this,arguments);return l(this,w)}}function c(m,v){for(;!Object.prototype.hasOwnProperty.call(m,v)&&(m=i(m),m!==null););return m}function f(){return typeof Reflect<"u"&&Reflect.get?f=Reflect.get.bind():f=function(v,y,_){var w=c(v,y);if(w){var A=Object.getOwnPropertyDescriptor(w,y);return A.get?A.get.call(arguments.length<3?v:_):A.value}},f.apply(this,arguments)}var p=function(){function m(){e(this,m),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return r(m,[{key:"addEventListener",value:function(y,_,w){y in this.listeners||(this.listeners[y]=[]),this.listeners[y].push({callback:_,options:w})}},{key:"removeEventListener",value:function(y,_){if(y in this.listeners){for(var w=this.listeners[y],A=0,I=w.length;A"u")w=new Error("This operation was aborted"),w.name="AbortError";else try{w=new DOMException("signal is aborted without reason")}catch{w=new Error("This operation was aborted"),w.name="AbortError"}this.signal.reason=w,this.signal.dispatchEvent(_)}},{key:"toString",value:function(){return"[object AbortController]"}}]),m}();typeof Symbol<"u"&&Symbol.toStringTag&&(g.prototype[Symbol.toStringTag]="AbortController",d.prototype[Symbol.toStringTag]="AbortSignal");function x(m){return m.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):typeof m.Request=="function"&&!m.Request.prototype.hasOwnProperty("signal")||!m.AbortController}function b(m){typeof m=="function"&&(m={fetch:m});var v=m,y=v.fetch,_=v.Request,w=_===void 0?y.Request:_,A=v.AbortController,I=v.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL,E=I===void 0?!1:I;if(!x({fetch:y,Request:w,AbortController:A,__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL:E}))return{fetch:y,Request:k};var k=w;(k&&!k.prototype.hasOwnProperty("signal")||E)&&(k=function(O,T){var M;T&&T.signal&&(M=T.signal,delete T.signal);var R=new w(O,T);return M&&Object.defineProperty(R,"signal",{writable:!1,enumerable:!1,configurable:!0,value:M}),R},k.prototype=w.prototype);var S=y,D=function(O,T){var M=k&&k.prototype.isPrototypeOf(O)?O.signal:T?T.signal:void 0;if(M){var R;try{R=new DOMException("Aborted","AbortError")}catch{R=new Error("Aborted"),R.name="AbortError"}if(M.aborted)return Promise.reject(R);var N=new Promise(function(U,B){M.addEventListener("abort",function(){return B(R)},{once:!0})});return T&&T.signal&&delete T.signal,Promise.race([N,S(O,T)])}return S(O,T)};return{fetch:D,Request:k}}(function(m){if(x(m)){if(!m.fetch){console.warn("fetch() is not available, cannot install abortcontroller-polyfill");return}var v=b(m),y=v.fetch,_=v.Request;m.fetch=y,m.Request=_,Object.defineProperty(m,"AbortController",{writable:!0,enumerable:!1,configurable:!0,value:g}),Object.defineProperty(m,"AbortSignal",{writable:!0,enumerable:!1,configurable:!0,value:d})}})(typeof self<"u"?self:global)});var Qb={};s6(Qb,{LocationManager:()=>t5,QAItem:()=>Fr,actionAddEntity:()=>Vn,actionAddMember:()=>B7,actionAddMidpoint:()=>nn,actionAddVertex:()=>Ya,actionChangeMember:()=>ul,actionChangePreset:()=>cl,actionChangeTags:()=>sr,actionCircularize:()=>$7,actionConnect:()=>fl,actionCopyEntities:()=>w2,actionDeleteMember:()=>pl,actionDeleteMultiple:()=>i1,actionDeleteNode:()=>ss,actionDeleteRelation:()=>xn,actionDeleteWay:()=>Ka,actionDiscardTags:()=>v0,actionDisconnect:()=>b5,actionExtract:()=>_2,actionJoin:()=>U7,actionMerge:()=>z7,actionMergeNodes:()=>xa,actionMergePolygon:()=>V7,actionMergeRemoteChanges:()=>A2,actionMove:()=>ls,actionMoveMember:()=>G7,actionMoveNode:()=>ml,actionNoop:()=>Bn,actionOrthogonalize:()=>hl,actionReflect:()=>X7,actionRestrictTurn:()=>S2,actionReverse:()=>Oa,actionRevert:()=>x5,actionRotate:()=>j7,actionScale:()=>H7,actionSplit:()=>a1,actionStraightenNodes:()=>W7,actionStraightenWay:()=>Q7,actionUnrestrictTurn:()=>w5,actionUpgradeTags:()=>Y7,behaviorAddWay:()=>yu,behaviorBreathe:()=>eo,behaviorDrag:()=>D2,behaviorDraw:()=>us,behaviorDrawWay:()=>q2,behaviorEdit:()=>Ja,behaviorHash:()=>jp,behaviorHover:()=>pi,behaviorLasso:()=>lo,behaviorOperation:()=>xr,behaviorPaste:()=>F2,behaviorSelect:()=>so,coreContext:()=>jM,coreDifference:()=>fs,coreFileFetcher:()=>Rh,coreGraph:()=>Rn,coreHistory:()=>x9,coreLocalizer:()=>Tg,coreTree:()=>b9,coreUploader:()=>E9,coreValidator:()=>_9,d3:()=>ete,debug:()=>v5,dmsCoordinatePair:()=>as,dmsMatcher:()=>D7,fileFetcher:()=>dt,geoAngle:()=>En,geoChooseEdge:()=>On,geoEdgeEqual:()=>q6,geoExtent:()=>Pe,geoGetSmallestSurroundingRectangle:()=>P4,geoHasLineIntersections:()=>V6,geoHasSelfIntersections:()=>Ra,geoLatToMeters:()=>l3,geoLineIntersection:()=>Ba,geoLonToMeters:()=>Xl,geoMetersToLat:()=>ti,geoMetersToLon:()=>Pn,geoMetersToOffset:()=>S4,geoOffsetToMeters:()=>C4,geoOrthoCalcScore:()=>vf,geoOrthoCanOrthogonalize:()=>z4,geoOrthoMaxOffsetAngle:()=>hA,geoOrthoNormalizedDotProduct:()=>t0,geoPathHasIntersections:()=>ih,geoPathIntersections:()=>M4,geoPathLength:()=>$s,geoPointInPolygon:()=>Wo,geoPolygonContainsPolygon:()=>N4,geoPolygonIntersectsPolygon:()=>Qo,geoRawMercator:()=>Mi,geoRotate:()=>U1,geoScaleToZoom:()=>hr,geoSphericalClosestNode:()=>I4,geoSphericalDistance:()=>Vt,geoVecAdd:()=>qr,geoVecAngle:()=>Ho,geoVecCross:()=>$1,geoVecDot:()=>Ki,geoVecEqual:()=>en,geoVecFloor:()=>wE,geoVecInterp:()=>ar,geoVecLength:()=>_t,geoVecLengthSquare:()=>D4,geoVecNormalize:()=>B1,geoVecNormalizedDot:()=>T4,geoVecProject:()=>z6,geoVecScale:()=>ma,geoVecSubtract:()=>rr,geoViewportEdge:()=>z1,geoZoomToScale:()=>jn,likelyRawNumberFormat:()=>h1,localizer:()=>fe,locationManager:()=>An,modeAddArea:()=>Y8,modeAddLine:()=>K8,modeAddNote:()=>rp,modeAddPoint:()=>Z8,modeBrowse:()=>Ge,modeDragNode:()=>to,modeDragNote:()=>oo,modeDrawArea:()=>vu,modeDrawLine:()=>ro,modeMove:()=>I2,modeRotate:()=>r9,modeSave:()=>ip,modeSelect:()=>rt,modeSelectData:()=>dp,modeSelectError:()=>pp,modeSelectNote:()=>xs,operationCircularize:()=>b0,operationContinue:()=>$b,operationCopy:()=>gc,operationDelete:()=>di,operationDisconnect:()=>Ub,operationDowngrade:()=>vc,operationExtract:()=>zb,operationMerge:()=>qb,operationMove:()=>E0,operationOrthogonalize:()=>x0,operationPaste:()=>yc,operationReflectLong:()=>_0,operationReflectShort:()=>w0,operationReverse:()=>Vb,operationRotate:()=>A5,operationSplit:()=>Gb,operationStraighten:()=>jb,osmAreaKeys:()=>qs,osmChangeset:()=>wa,osmEntity:()=>qe,osmFlowingWaterwayTagValues:()=>G4,osmInferRestriction:()=>E2,osmIntersection:()=>q7,osmIsInterestingTag:()=>H1,osmJoinWays:()=>fi,osmLanes:()=>R7,osmLifecyclePrefixes:()=>W1,osmNode:()=>Yt,osmNodeGeometriesForTags:()=>X1,osmNote:()=>Nr,osmOneWayTags:()=>ko,osmPavedTags:()=>R3,osmPointTags:()=>q4,osmRailwayTrackTagValues:()=>wf,osmRelation:()=>Cn,osmRemoveLifecyclePrefix:()=>L3,osmRoutableHighwayTagValues:()=>za,osmSetAreaKeys:()=>yf,osmSetPointTags:()=>bf,osmSetVertexTags:()=>xf,osmTagSuggestingArea:()=>Q1,osmTimelessFeatureTagValues:()=>j4,osmTurn:()=>dl,osmVertexTags:()=>V4,osmWay:()=>Or,prefs:()=>Te,presetCategory:()=>Mg,presetCollection:()=>ai,presetField:()=>Ng,presetIndex:()=>NF,presetManager:()=>$e,presetPreset:()=>g0,rendererBackground:()=>S9,rendererBackgroundSource:()=>mi,rendererFeatures:()=>C9,rendererMap:()=>p8,rendererPhotos:()=>d8,rendererTileLayer:()=>yl,serviceImproveOSM:()=>sv,serviceKartaview:()=>ab,serviceKeepRight:()=>av,serviceMapRules:()=>Tv,serviceMapilio:()=>Bb,serviceMapillary:()=>Dv,serviceNominatim:()=>tb,serviceNsi:()=>ib,serviceOsm:()=>M2,serviceOsmWikibase:()=>xb,serviceOsmose:()=>yv,serviceStreetside:()=>wb,serviceTaginfo:()=>kb,serviceVectorTile:()=>Ib,serviceVegbilder:()=>cb,serviceWikidata:()=>Tb,serviceWikipedia:()=>Nb,services:()=>de,svgAreas:()=>T9,svgData:()=>H2,svgDebug:()=>W2,svgDefs:()=>O9,svgGeolocate:()=>Io,svgIcon:()=>ce,svgKartaviewImages:()=>Po,svgKeepRight:()=>L9,svgLabels:()=>R9,svgLayers:()=>uu,svgLines:()=>cu,svgMapilioImages:()=>Oo,svgMapillaryImages:()=>Mo,svgMapillarySigns:()=>No,svgMarkerSegments:()=>z5,svgMidpoints:()=>u8,svgNotes:()=>s8,svgOsm:()=>o8,svgPassiveVertex:()=>U5,svgPath:()=>an,svgPointTransform:()=>ur,svgPoints:()=>c8,svgRelationMemberTags:()=>I9,svgSegmentWay:()=>G2,svgStreetside:()=>Do,svgTagClasses:()=>ra,svgTagPattern:()=>D9,svgTouch:()=>l8,svgTurns:()=>f8,svgVegbilder:()=>To,svgVertices:()=>fu,t:()=>F,uiAccount:()=>m8,uiAttribution:()=>h8,uiChangesetEditor:()=>B8,uiCmd:()=>st,uiCombobox:()=>Ht,uiCommit:()=>z8,uiCommitWarnings:()=>U8,uiConfirm:()=>bs,uiConflicts:()=>q8,uiContributors:()=>g8,uiCurtain:()=>k8,uiDataEditor:()=>Au,uiDataHeader:()=>F8,uiDisclosure:()=>q0,uiEditMenu:()=>v8,uiEntityEditor:()=>X8,uiFeatureInfo:()=>y8,uiFeatureList:()=>mp,uiField:()=>Vi,uiFieldAccess:()=>$y,uiFieldAddress:()=>Uy,uiFieldCheck:()=>V0,uiFieldColour:()=>qi,uiFieldCombo:()=>zi,uiFieldDate:()=>zy,uiFieldDefaultCheck:()=>V0,uiFieldDirectionalCombo:()=>M8,uiFieldEmail:()=>qi,uiFieldHelp:()=>T8,uiFieldIdentifier:()=>qi,uiFieldLanes:()=>N8,uiFieldLocalized:()=>qy,uiFieldManyCombo:()=>zi,uiFieldMultiCombo:()=>zi,uiFieldNetworkCombo:()=>zi,uiFieldNumber:()=>qi,uiFieldOnewayCheck:()=>V0,uiFieldRadio:()=>ic,uiFieldRestrictions:()=>P8,uiFieldRoadheight:()=>Vy,uiFieldRoadspeed:()=>Gy,uiFieldSemiCombo:()=>zi,uiFieldStructureRadio:()=>ic,uiFieldTel:()=>qi,uiFieldText:()=>qi,uiFieldTextarea:()=>jy,uiFieldTypeCombo:()=>zi,uiFieldUrl:()=>qi,uiFieldWikidata:()=>Hy,uiFieldWikipedia:()=>O8,uiFields:()=>L8,uiFlash:()=>b8,uiFormFields:()=>hu,uiFullScreen:()=>x8,uiGeolocate:()=>w8,uiImproveOsmComments:()=>ap,uiImproveOsmDetails:()=>op,uiImproveOsmEditor:()=>_u,uiImproveOsmHeader:()=>sp,uiInfo:()=>E8,uiInfoPanels:()=>_8,uiInit:()=>Ap,uiInspector:()=>gp,uiIntro:()=>kl,uiIssuesInfo:()=>A8,uiKeepRightDetails:()=>lp,uiKeepRightEditor:()=>Eu,uiKeepRightHeader:()=>up,uiLasso:()=>vp,uiLengthIndicator:()=>ys,uiLoading:()=>c1,uiMapInMap:()=>z0,uiModal:()=>Oi,uiNoteComments:()=>J8,uiNoteEditor:()=>xu,uiNoteHeader:()=>ep,uiNoteReport:()=>tp,uiNotice:()=>S8,uiPaneBackground:()=>Tp,uiPaneHelp:()=>Mp,uiPaneIssues:()=>Lp,uiPaneMapData:()=>Vp,uiPanePreferences:()=>Gp,uiPanelBackground:()=>Oy,uiPanelHistory:()=>Ly,uiPanelLocation:()=>Ry,uiPanelMeasurement:()=>By,uiPopover:()=>du,uiPresetIcon:()=>G0,uiPresetList:()=>hp,uiRestore:()=>C8,uiScale:()=>I8,uiSectionBackgroundDisplayOptions:()=>Sp,uiSectionBackgroundList:()=>Ip,uiSectionBackgroundOffset:()=>Fp,uiSectionChanges:()=>$8,uiSectionDataLayers:()=>Bp,uiSectionDateRange:()=>qp,uiSectionEntityIssues:()=>V8,uiSectionFeatureType:()=>G8,uiSectionMapFeatures:()=>$p,uiSectionMapStyleOptions:()=>Up,uiSectionOverlayList:()=>Dp,uiSectionPhotoOverlays:()=>zp,uiSectionPresetFields:()=>j8,uiSectionPrivacy:()=>ku,uiSectionRawMemberEditor:()=>H8,uiSectionRawMembershipEditor:()=>W8,uiSectionRawTagEditor:()=>Sl,uiSectionSelectionList:()=>Q8,uiSectionValidationIssues:()=>ac,uiSectionValidationOptions:()=>Np,uiSectionValidationRules:()=>Pp,uiSectionValidationStatus:()=>Op,uiSettingsCustomBackground:()=>Cp,uiSettingsCustomData:()=>Rp,uiSidebar:()=>kp,uiSourceSubfield:()=>R8,uiSourceSwitch:()=>yp,uiSpinner:()=>bp,uiSplash:()=>xp,uiStatus:()=>wp,uiSuccess:()=>np,uiTagReference:()=>vs,uiToggle:()=>gs,uiTooltip:()=>Ye,uiVersion:()=>_p,uiViewOnKeepRight:()=>cp,uiViewOnOSM:()=>bu,uiZoom:()=>Ep,utilAesDecrypt:()=>c0,utilAesEncrypt:()=>BI,utilArrayChunk:()=>r0,utilArrayDifference:()=>$r,utilArrayFlatten:()=>Y1,utilArrayGroupBy:()=>Ir,utilArrayIdentical:()=>kn,utilArrayIntersection:()=>Wr,utilArrayUnion:()=>or,utilArrayUniq:()=>ot,utilArrayUniqBy:()=>H4,utilAsyncMap:()=>TF,utilCleanOsmString:()=>os,utilCleanTags:()=>o5,utilCombinedTags:()=>N7,utilCompareIDs:()=>O7,utilDatesOverlap:()=>is,utilDeepMemberSelector:()=>M7,utilDetect:()=>br,utilDisplayLabel:()=>wt,utilDisplayName:()=>kr,utilDisplayNameForPath:()=>d5,utilDisplayType:()=>ta,utilEDTFFromOSMDateString:()=>p2,utilEditDistance:()=>g2,utilEntityAndDeepMemberIDs:()=>d0,utilEntityOrDeepMemberSelector:()=>p5,utilEntityOrMemberSelector:()=>e1,utilEntityRoot:()=>h2,utilEntitySelector:()=>ba,utilFastMouse:()=>rn,utilFunctor:()=>zt,utilGetAllNodes:()=>vr,utilGetSetValue:()=>je,utilHashcode:()=>t1,utilHighlightEntities:()=>Ct,utilKeybinding:()=>at,utilNoAuto:()=>pt,utilNormalizeDateString:()=>Qa,utilObjectOmit:()=>Wn,utilOldestID:()=>n1,utilPrefixCSSProperty:()=>m0,utilPrefixDOMProperty:()=>P7,utilQsString:()=>yt,utilRebind:()=>ke,utilSafeClassName:()=>h0,utilSessionMutex:()=>F7,utilSetTransform:()=>ii,utilStringQs:()=>pr,utilTagDiff:()=>sl,utilTagText:()=>T7,utilTiler:()=>Mr,utilTotalExtent:()=>Er,utilTriggerEvent:()=>d2,utilUnicodeCharsCount:()=>r1,utilUnicodeCharsTruncated:()=>m5,utilUniqueDomId:()=>Qn,utilWrap:()=>v2,validationAlmostJunction:()=>Nv,validationCloseNodes:()=>Pv,validationCrossingWays:()=>Ov,validationDisconnectedWay:()=>Lv,validationFormatting:()=>Bv,validationHelpRequest:()=>$v,validationImpossibleOneway:()=>Uv,validationIncompatibleSource:()=>zv,validationMaprules:()=>qv,validationMismatchedDates:()=>Vv,validationMismatchedGeometry:()=>jv,validationMissingRole:()=>Hv,validationMissingStartDate:()=>Rv,validationMissingTag:()=>Wv,validationMutuallyExclusiveTags:()=>Qv,validationOutdatedTags:()=>Xv,validationPrivateData:()=>Yv,validationSuspiciousName:()=>Kv,validationUnsquareWay:()=>Zv});function Vn(e){return function(t){return t.replace(e)}}function Oa(e,t){var r=/^.*(_|:)?(description|name|note|website|ref|source|comment|watch|attribution)(_|:)?/,n=/^([+\-]?)(?=[\d.])/,i=/direction$/,a=/^turn:lanes:?/,o=[[/:right$/,":left"],[/:left$/,":right"],[/:forward$/,":backward"],[/:backward$/,":forward"],[/:right:/,":left:"],[/:left:/,":right:"],[/:forward:/,":backward:"],[/:backward:/,":forward:"]],s={left:"right",right:"left",up:"down",down:"up",forward:"backward",backward:"forward",forwards:"backward",backwards:"forward"};let l={side:[{highway:"cyclist_waiting_aid"}]};var u={forward:"backward",backward:"forward",forwards:"backward",backwards:"forward"},c={yes:"-1",1:"-1","-1":"yes"},f={N:"S",NNE:"SSW",NE:"SW",ENE:"WSW",E:"W",ESE:"WNW",SE:"NW",SSE:"NNW",S:"N",SSW:"NNE",SW:"NE",WSW:"ENE",W:"E",WNW:"ESE",NW:"SE",NNW:"SSE"};function p(m){for(var v=0;v{if(f[w])return f[w];var A=Number(w);return isFinite(A)?(A<180?A+=180:A-=180,A.toString()):s[w]||w}).join(";"):l[m]&&l[m].some(w=>Object.keys(w).every(A=>{let I=w[A];return _[A]&&(I==="*"||_[A]===I)}))?v:s[v]||v}function g(m,v){for(var y=0;yt?1:e>=t?0:NaN}function T1(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Gl(e){let t,r,n;e.length!==2?(t=Ci,r=(s,l)=>Ci(e(s),l),n=(s,l)=>e(s)-l):(t=e===Ci||e===T1?e:dz,r=e,n=e);function i(s,l,u=0,c=s.length){if(u>>1;r(s[f],l)<0?u=f+1:c=f}while(u>>1;r(s[f],l)<=0?u=f+1:c=f}while(uu&&n(s[f-1],l)>-n(s[f],l)?f-1:f}return{left:i,center:o,right:a}}function dz(){return 0}function u6(e){return e===null?NaN:+e}function*A_(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var S_=Gl(Ci),C_=S_.right,mz=S_.left,hz=Gl(u6).center,Wu=C_;var sn=class{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){let r=this._partials,n=0;for(let i=0;i0){for(o=t[--r];r>0&&(n=o,i=t[--r],o=n+i,a=i-(o-n),!a););r>0&&(a<0&&t[r-1]<0||a>0&&t[r-1]>0)&&(i=a*2,n=o+i,i==n-o&&(o=n))}return o}};function I_(e=Ci){if(e===Ci)return _m;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function _m(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Em=Math.sqrt(50),km=Math.sqrt(10),Am=Math.sqrt(2);function c6(e,t,r){var n,i=-1,a,o,s;if(t=+t,e=+e,r=+r,e===t&&r>0)return[e];if((n=t0){let l=Math.round(e/s),u=Math.round(t/s);for(l*st&&--u,o=new Array(a=u-l+1);++it&&--u,o=new Array(a=u-l+1);++i=0?(a>=Em?10:a>=km?5:a>=Am?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=Em?10:a>=km?5:a>=Am?2:1)}function Sm(e,t,r){var n=Math.abs(t-e)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=Em?i*=10:a>=km?i*=5:a>=Am&&(i*=2),t=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r=i)&&(r=i)}return r}function d6(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}function m6(e,t,r=0,n=e.length-1,i){for(i=i===void 0?_m:I_(i);n>r;){if(n-r>600){let l=n-r+1,u=t-r+1,c=Math.log(l),f=.5*Math.exp(2*c/3),p=.5*Math.sqrt(c*f*(l-f)/l)*(u-l/2<0?-1:1),d=Math.max(r,Math.floor(t-u*f/l+p)),g=Math.min(n,Math.floor(t+(l-u)*f/l+p));m6(e,t,d,g,i)}let a=e[t],o=r,s=n;for(Qu(e,r,t),i(e[n],a)>0&&Qu(e,r,n);o0;)--s}i(e[r],a)===0?Qu(e,r,s):(++s,Qu(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function Qu(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function Cm(e,t,r){if(e=Float64Array.from(A_(e,r)),!!(n=e.length)){if((t=+t)<=0||n<2)return d6(e);if(t>=1)return p6(e);var n,i=(n-1)*t,a=Math.floor(i),o=p6(m6(e,a).subarray(0,a+1)),s=d6(e.subarray(a+1));return o+(s-o)*(i-a)}}function h6(e,t){return Cm(e,.5,t)}function*gz(e){for(let t of e)yield*t}function g4(e){return Array.from(gz(e))}function g6(e,t=vz){let r=[],n,i=!1;for(let a of e)i&&r.push(t(n,a)),n=a,i=!0;return r}function vz(e,t){return[e,t]}function M1(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n0?1:e<0?-1:0},Ii=Math.sqrt,N_=Math.tan;function P_(e){return e>1?0:e<-1?Qt:Math.acos(e)}function Ps(e){return e>1?Gn:e<-1?-Gn:Math.asin(e)}function Cr(){}function y6(e,t){e&&L_.hasOwnProperty(e.type)&&L_[e.type](e,t)}var O_={Feature:function(e,t){y6(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=er(t),o=ir(t),s=Tm*o,l=Dm*a+s*er(i),u=s*n*ir(i);Xu.add(fa(u,l)),Fm=e,Dm=a,Tm=o}function zo(e){return b6=new sn,ei(e,vo),b6*2}function jl(e){return[fa(e[1],e[0]),Ps(e[2])]}function La(e){var t=e[0],r=e[1],n=er(r);return[n*er(t),n*ir(t),ir(r)]}function Yu(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Os(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function x6(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function Ku(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Hl(e){var t=Ii(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var Jr,Yi,un,da,Wl,G_,j_,y4,Zu,N1,Rs,Ls={point:Mm,lineStart:z_,lineEnd:q_,polygonStart:function(){Ls.point=W_,Ls.lineStart=wz,Ls.lineEnd=_z,Zu=new sn,vo.polygonStart()},polygonEnd:function(){vo.polygonEnd(),Ls.point=Mm,Ls.lineStart=z_,Ls.lineEnd=q_,Xu<0?(Jr=-(un=180),Yi=-(da=90)):Zu>Jt?da=90:Zu<-Jt&&(Yi=-90),Rs[0]=Jr,Rs[1]=un},sphere:function(){Jr=-(un=180),Yi=-(da=90)}};function Mm(e,t){N1.push(Rs=[Jr=e,un=e]),tda&&(da=t)}function H_(e,t){var r=La([e*Xt,t*Xt]);if(y4){var n=Os(y4,r),i=[n[1],-n[0],0],a=Os(i,n);Hl(a),a=jl(a);var o=e-Wl,s=o>0?1:-1,l=a[0]*ln*s,u,c=fr(o)>180;c^(s*Wlda&&(da=u)):(l=(l+360)%360-180,c^(s*Wlda&&(da=t))),c?epa(Jr,un)&&(un=e):pa(e,un)>pa(Jr,un)&&(Jr=e):un>=Jr?(eun&&(un=e)):e>Wl?pa(Jr,e)>pa(Jr,un)&&(un=e):pa(e,un)>pa(Jr,un)&&(Jr=e)}else N1.push(Rs=[Jr=e,un=e]);tda&&(da=t),y4=r,Wl=e}function z_(){Ls.point=H_}function q_(){Rs[0]=Jr,Rs[1]=un,Ls.point=Mm,y4=null}function W_(e,t){if(y4){var r=e-Wl;Zu.add(fr(r)>180?r+(r>0?360:-360):r)}else G_=e,j_=t;vo.point(e,t),H_(e,t)}function wz(){vo.lineStart()}function _z(){W_(G_,j_),vo.lineEnd(),fr(Zu)>Jt&&(Jr=-(un=180)),Rs[0]=Jr,Rs[1]=un,y4=null}function pa(e,t){return(t-=e)<0?t+360:t}function Ez(e,t){return e[0]-t[0]}function V_(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tpa(n[0],n[1])&&(n[1]=i[1]),pa(i[0],n[1])>pa(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,r=a.length-1,t=0,n=a[r];t<=r;n=i,++t)i=a[t],(s=pa(n[1],i[0]))>o&&(o=s,Jr=i[0],un=n[1])}return N1=Rs=null,Jr===1/0||Yi===1/0?[[NaN,NaN],[NaN,NaN]]:[[Jr,Yi],[un,da]]}function Ju(e,t){function r(n,i){return n=e(n,i),t(n[0],n[1])}return e.invert&&t.invert&&(r.invert=function(n,i){return n=t.invert(n,i),n&&e.invert(n[0],n[1])}),r}function Nm(e,t){return[fr(e)>Qt?e+Math.round(-e/yn)*yn:e,t]}Nm.invert=Nm;function Pm(e,t,r){return(e%=yn)?t||r?Ju(X_(e),Y_(t,r)):X_(e):t||r?Y_(t,r):Nm}function Q_(e){return function(t,r){return t+=e,[t>Qt?t-yn:t<-Qt?t+yn:t,r]}}function X_(e){var t=Q_(e);return t.invert=Q_(-e),t}function Y_(e,t){var r=er(e),n=ir(e),i=er(t),a=ir(t);function o(s,l){var u=er(l),c=er(s)*u,f=ir(s)*u,p=ir(l),d=p*r+c*n;return[fa(f*i-d*a,c*r-p*n),Ps(d*i+f*a)]}return o.invert=function(s,l){var u=er(l),c=er(s)*u,f=ir(s)*u,p=ir(l),d=p*i-f*a;return[fa(f*i+p*a,c*r+d*n),Ps(d*r-c*n)]},o}function K_(e){e=Pm(e[0]*Xt,e[1]*Xt,e.length>2?e[2]*Xt:0);function t(r){return r=e(r[0]*Xt,r[1]*Xt),r[0]*=ln,r[1]*=ln,r}return t.invert=function(r){return r=e.invert(r[0]*Xt,r[1]*Xt),r[0]*=ln,r[1]*=ln,r},t}function J_(e,t,r,n,i,a){if(r){var o=er(t),s=ir(t),l=n*r;i==null?(i=t+n*yn,a=t-l/2):(i=Z_(o,i),a=Z_(o,a),(n>0?ia)&&(i+=n*yn));for(var u,c=i;n>0?c>a:c1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function x4(e,t){return fr(e[0]-t[0])=0;--s)i.point((f=c[s])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}p=p.o,c=p.z,d=!d}while(!p.v);i.lineEnd()}}}function eE(e){if(t=e.length){for(var t,r=0,n=e[0],i;++r=0?1:-1,S=k*E,D=S>Qt,P=b*A;if(l.add(fa(P*k*ir(S),m*I+P*er(S))),o+=D?E+k*yn:E,D^g>=r^_>=r){var O=Os(La(d),La(y));Hl(O);var T=Os(a,O);Hl(T);var M=(D^E>=0?-1:1)*Ps(T[2]);(n>M||n===M&&(O[0]||O[1]))&&(s+=D^E>=0?1:-1)}}return(o<-Jt||o0){for(l||(i.polygonStart(),l=!0),i.lineStart(),A=0;A1&&_&2&&w.push(w.pop().concat(w.shift())),c.push(w.filter(kz))}}return p}}function kz(e){return e.length>1}function Az(e,t){return((e=e.x)[0]<0?e[1]-Gn-Jt:Gn-e[1])-((t=t.x)[0]<0?t[1]-Gn-Jt:Gn-t[1])}var Lm=k6(function(){return!0},Sz,Iz,[-Qt,-Gn]);function Sz(e){var t=NaN,r=NaN,n=NaN,i;return{lineStart:function(){e.lineStart(),i=1},point:function(a,o){var s=a>0?Qt:-Qt,l=fr(a-t);fr(l-Qt)0?Gn:-Gn),e.point(n,r),e.lineEnd(),e.lineStart(),e.point(s,r),e.point(a,r),i=0):n!==s&&l>=Qt&&(fr(t-n)Jt?v6((ir(t)*(a=er(n))*ir(r)-ir(n)*(i=er(t))*ir(e))/(i*a*o)):(t+n)/2}function Iz(e,t,r,n){var i;if(e==null)i=r*Gn,n.point(-Qt,i),n.point(0,i),n.point(Qt,i),n.point(Qt,0),n.point(Qt,-i),n.point(0,-i),n.point(-Qt,-i),n.point(-Qt,0),n.point(-Qt,i);else if(fr(e[0]-t[0])>Jt){var a=e[0]0,i=fr(t)>Jt;function a(c,f,p,d){J_(d,e,r,p,c,f)}function o(c,f){return er(c)*er(f)>t}function s(c){var f,p,d,g,x;return{lineStart:function(){g=d=!1,x=1},point:function(b,m){var v=[b,m],y,_=o(b,m),w=n?_?0:u(b,m):_?u(b+(b<0?Qt:-Qt),m):0;if(!f&&(g=d=_)&&c.lineStart(),_!==d&&(y=l(f,v),(!y||x4(f,y)||x4(v,y))&&(v[2]=1)),_!==d)x=0,_?(c.lineStart(),y=l(v,f),c.point(y[0],y[1])):(y=l(f,v),c.point(y[0],y[1],2),c.lineEnd()),f=y;else if(i&&f&&n^_){var A;!(w&p)&&(A=l(v,f,!0))&&(x=0,n?(c.lineStart(),c.point(A[0][0],A[0][1]),c.point(A[1][0],A[1][1]),c.lineEnd()):(c.point(A[1][0],A[1][1]),c.lineEnd(),c.lineStart(),c.point(A[0][0],A[0][1],3)))}_&&(!f||!x4(f,v))&&c.point(v[0],v[1]),f=v,d=_,p=w},lineEnd:function(){d&&c.lineEnd(),f=null},clean:function(){return x|(g&&d)<<1}}}function l(c,f,p){var d=La(c),g=La(f),x=[1,0,0],b=Os(d,g),m=Yu(b,b),v=b[0],y=m-v*v;if(!y)return!p&&c;var _=t*m/y,w=-t*v/y,A=Os(x,b),I=Ku(x,_),E=Ku(b,w);x6(I,E);var k=A,S=Yu(I,k),D=Yu(k,k),P=S*S-D*(Yu(I,I)-1);if(!(P<0)){var O=Ii(P),T=Ku(k,(-S-O)/D);if(x6(T,I),T=jl(T),!p)return T;var M=c[0],R=f[0],N=c[1],U=f[1],B;R0^T[1]<(fr(T[0]-M)Qt^(M<=T[0]&&T[0]<=R)){var H=Ku(k,(-S+O)/D);return x6(H,I),[T,jl(H)]}}}function u(c,f){var p=n?e:Qt-e,d=0;return c<-p?d|=1:c>p&&(d|=2),f<-p?d|=4:f>p&&(d|=8),d}return k6(o,s,a,n?[0,-e]:[-Qt,e-Qt])}function nE(e,t,r,n,i,a){var o=e[0],s=e[1],l=t[0],u=t[1],c=0,f=1,p=l-o,d=u-s,g;if(g=r-o,!(!p&&g>0)){if(g/=p,p<0){if(g0){if(g>f)return;g>c&&(c=g)}if(g=i-o,!(!p&&g<0)){if(g/=p,p<0){if(g>f)return;g>c&&(c=g)}else if(p>0){if(g0)){if(g/=d,d<0){if(g0){if(g>f)return;g>c&&(c=g)}if(g=a-s,!(!d&&g<0)){if(g/=d,d<0){if(g>f)return;g>c&&(c=g)}else if(d>0){if(g0&&(e[0]=o+c*p,e[1]=s+c*d),f<1&&(t[0]=o+f*p,t[1]=s+f*d),!0}}}}}var e3=1e9,A6=-e3;function t3(e,t,r,n){function i(u,c){return e<=u&&u<=r&&t<=c&&c<=n}function a(u,c,f,p){var d=0,g=0;if(u==null||(d=o(u,f))!==(g=o(c,f))||l(u,c)<0^f>0)do p.point(d===0||d===3?e:r,d>1?n:t);while((d=(d+f+4)%4)!==g);else p.point(c[0],c[1])}function o(u,c){return fr(u[0]-e)0?0:3:fr(u[0]-r)0?2:1:fr(u[1]-t)0?1:0:c>0?3:2}function s(u,c){return l(u.x,c.x)}function l(u,c){var f=o(u,1),p=o(c,1);return f!==p?f-p:f===0?c[1]-u[1]:f===1?u[0]-c[0]:f===2?u[1]-c[1]:c[0]-u[0]}return function(u){var c=u,f=w6(),p,d,g,x,b,m,v,y,_,w,A,I={point:E,lineStart:P,lineEnd:O,polygonStart:S,polygonEnd:D};function E(M,R){i(M,R)&&c.point(M,R)}function k(){for(var M=0,R=0,N=d.length;Rn&&(Z-V)*(n-H)>(oe-H)*(e-V)&&++M:oe<=n&&(Z-V)*(n-H)<(oe-H)*(e-V)&&--M;return M}function S(){c=f,p=[],d=[],A=!0}function D(){var M=k(),R=A&&M,N=(p=g4(p)).length;(R||N)&&(u.polygonStart(),R&&(u.lineStart(),a(null,null,1,u),u.lineEnd()),N&&E6(p,s,M,a,u),u.polygonEnd()),c=u,p=d=g=null}function P(){I.point=T,d&&d.push(g=[]),w=!0,_=!1,v=y=NaN}function O(){p&&(T(x,b),m&&_&&f.rejoin(),p.push(f.result())),I.point=E,_&&c.lineEnd()}function T(M,R){var N=i(M,R);if(d&&g.push([M,R]),w)x=M,b=R,m=N,w=!1,N&&(c.lineStart(),c.point(M,R));else if(N&&_)c.point(M,R);else{var U=[v=Math.max(A6,Math.min(e3,v)),y=Math.max(A6,Math.min(e3,y))],B=[M=Math.max(A6,Math.min(e3,M)),R=Math.max(A6,Math.min(e3,R))];nE(U,B,e,t,r,n)?(_||(c.lineStart(),c.point(U[0],U[1])),c.point(B[0],B[1]),N||c.lineEnd(),A=!1):N&&(c.lineStart(),c.point(M,R),A=!1)}v=M,y=R,_=N}return I}}var Rm,Bm,S6,C6,w4={sphere:Cr,point:Cr,lineStart:Fz,lineEnd:Cr,polygonStart:Cr,polygonEnd:Cr};function Fz(){w4.point=Tz,w4.lineEnd=Dz}function Dz(){w4.point=w4.lineEnd=Cr}function Tz(e,t){e*=Xt,t*=Xt,Bm=e,S6=ir(t),C6=er(t),w4.point=Mz}function Mz(e,t){e*=Xt,t*=Xt;var r=ir(t),n=er(t),i=fr(e-Bm),a=er(i),o=ir(i),s=n*o,l=C6*r-S6*n*a,u=S6*r+C6*n*a;Rm.add(fa(Ii(s*s+l*l),u)),Bm=e,S6=r,C6=n}function $m(e){return Rm=new sn,ei(e,w4),+Rm}var P1=e=>e;var Um=new sn,zm=new sn,iE,aE,qm,Vm,O1={point:Cr,lineStart:Cr,lineEnd:Cr,polygonStart:function(){O1.lineStart=Nz,O1.lineEnd=Oz},polygonEnd:function(){O1.lineStart=O1.lineEnd=O1.point=Cr,Um.add(fr(zm)),zm=new sn},result:function(){var e=Um/2;return Um=new sn,e}};function Nz(){O1.point=Pz}function Pz(e,t){O1.point=oE,iE=qm=e,aE=Vm=t}function oE(e,t){zm.add(Vm*e-qm*t),qm=e,Vm=t}function Oz(){oE(iE,aE)}var Gm=O1;var _4=1/0,I6=_4,r3=-_4,F6=r3,Lz={point:Rz,lineStart:Cr,lineEnd:Cr,polygonStart:Cr,polygonEnd:Cr,result:function(){var e=[[_4,I6],[r3,F6]];return r3=F6=-(I6=_4=1/0),e}};function Rz(e,t){e<_4&&(_4=e),e>r3&&(r3=e),tF6&&(F6=t)}var E4=Lz;var jm=0,Hm=0,n3=0,D6=0,T6=0,k4=0,Wm=0,Qm=0,i3=0,uE,cE,qo,Vo,yo={point:Ql,lineStart:sE,lineEnd:lE,polygonStart:function(){yo.lineStart=Uz,yo.lineEnd=zz},polygonEnd:function(){yo.point=Ql,yo.lineStart=sE,yo.lineEnd=lE},result:function(){var e=i3?[Wm/i3,Qm/i3]:k4?[D6/k4,T6/k4]:n3?[jm/n3,Hm/n3]:[NaN,NaN];return jm=Hm=n3=D6=T6=k4=Wm=Qm=i3=0,e}};function Ql(e,t){jm+=e,Hm+=t,++n3}function sE(){yo.point=Bz}function Bz(e,t){yo.point=$z,Ql(qo=e,Vo=t)}function $z(e,t){var r=e-qo,n=t-Vo,i=Ii(r*r+n*n);D6+=i*(qo+e)/2,T6+=i*(Vo+t)/2,k4+=i,Ql(qo=e,Vo=t)}function lE(){yo.point=Ql}function Uz(){yo.point=qz}function zz(){fE(uE,cE)}function qz(e,t){yo.point=fE,Ql(uE=qo=e,cE=Vo=t)}function fE(e,t){var r=e-qo,n=t-Vo,i=Ii(r*r+n*n);D6+=i*(qo+e)/2,T6+=i*(Vo+t)/2,k4+=i,i=Vo*e-qo*t,Wm+=i*(qo+e),Qm+=i*(Vo+t),i3+=i*3,Ql(qo=e,Vo=t)}var Xm=yo;function M6(e){this._context=e}M6.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._context.moveTo(e,t),this._point=1;break}case 1:{this._context.lineTo(e,t);break}default:{this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,yn);break}}},result:Cr};var Km=new sn,Ym,pE,dE,a3,o3,N6={point:Cr,lineStart:function(){N6.point=Vz},lineEnd:function(){Ym&&mE(pE,dE),N6.point=Cr},polygonStart:function(){Ym=!0},polygonEnd:function(){Ym=null},result:function(){var e=+Km;return Km=new sn,e}};function Vz(e,t){N6.point=mE,pE=a3=e,dE=o3=t}function mE(e,t){a3-=e,o3-=t,Km.add(Ii(a3*a3+o3*o3)),a3=e,o3=t}var Zm=N6;function P6(){this._string=[]}P6.prototype={_radius:4.5,_circle:hE(4.5),pointRadius:function(e){return(e=+e)!==this._radius&&(this._radius=e,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._string.push("M",e,",",t),this._point=1;break}case 1:{this._string.push("L",e,",",t);break}default:{this._circle==null&&(this._circle=hE(this._radius)),this._string.push("M",e,",",t,this._circle);break}}},result:function(){if(this._string.length){var e=this._string.join("");return this._string=[],e}else return null}};function hE(e){return"m0,"+e+"a"+e+","+e+" 0 1,1 0,"+-2*e+"a"+e+","+e+" 0 1,1 0,"+2*e+"z"}function Fi(e,t){var r=4.5,n,i;function a(o){return o&&(typeof r=="function"&&i.pointRadius(+r.apply(this,arguments)),ei(o,n(i))),i.result()}return a.area=function(o){return ei(o,n(Gm)),Gm.result()},a.measure=function(o){return ei(o,n(Zm)),Zm.result()},a.bounds=function(o){return ei(o,n(E4)),E4.result()},a.centroid=function(o){return ei(o,n(Xm)),Xm.result()},a.projection=function(o){return arguments.length?(n=o==null?(e=null,P1):(e=o).stream,a):e},a.context=function(o){return arguments.length?(i=o==null?(t=null,new P6):new M6(t=o),typeof r!="function"&&i.pointRadius(r),a):t},a.pointRadius=function(o){return arguments.length?(r=typeof o=="function"?o:(i.pointRadius(+o),+o),a):r},a.projection(e).context(t)}function eh(e){return{stream:L1(e)}}function L1(e){return function(t){var r=new Jm;for(var n in e)r[n]=e[n];return r.stream=t,r}}function Jm(){}Jm.prototype={constructor:Jm,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function th(e,t,r){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),n!=null&&e.clipExtent(null),ei(r,e.stream(E4)),t(E4.result()),n!=null&&e.clipExtent(n),e}function s3(e,t,r){return th(e,function(n){var i=t[1][0]-t[0][0],a=t[1][1]-t[0][1],o=Math.min(i/(n[1][0]-n[0][0]),a/(n[1][1]-n[0][1])),s=+t[0][0]+(i-o*(n[1][0]+n[0][0]))/2,l=+t[0][1]+(a-o*(n[1][1]+n[0][1]))/2;e.scale(150*o).translate([s,l])},r)}function O6(e,t,r){return s3(e,[[0,0],t],r)}function L6(e,t,r){return th(e,function(n){var i=+t,a=i/(n[1][0]-n[0][0]),o=(i-a*(n[1][0]+n[0][0]))/2,s=-a*n[0][1];e.scale(150*a).translate([o,s])},r)}function R6(e,t,r){return th(e,function(n){var i=+t,a=i/(n[1][1]-n[0][1]),o=-a*n[0][0],s=(i-a*(n[1][1]+n[0][1]))/2;e.scale(150*a).translate([o,s])},r)}var gE=16,Gz=er(30*Xt);function rh(e,t){return+t?Hz(e,t):jz(e)}function jz(e){return L1({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}function Hz(e,t){function r(n,i,a,o,s,l,u,c,f,p,d,g,x,b){var m=u-n,v=c-i,y=m*m+v*v;if(y>4*t&&x--){var _=o+p,w=s+d,A=l+g,I=Ii(_*_+w*w+A*A),E=Ps(A/=I),k=fr(fr(A)-1)t||fr((m*O+v*T)/y-.5)>.3||o*p+s*d+l*g2?M[2]%360*Xt:0,O()):[s*ln,l*ln,u*ln]},D.angle=function(M){return arguments.length?(f=M%360*Xt,O()):f*ln},D.reflectX=function(M){return arguments.length?(p=M?-1:1,O()):p<0},D.reflectY=function(M){return arguments.length?(d=M?-1:1,O()):d<0},D.precision=function(M){return arguments.length?(A=rh(I,w=M*M),T()):Ii(w)},D.fitExtent=function(M,R){return s3(D,M,R)},D.fitSize=function(M,R){return O6(D,M,R)},D.fitWidth=function(M,R){return L6(D,M,R)},D.fitHeight=function(M,R){return R6(D,M,R)};function O(){var M=vE(r,0,0,p,d,f).apply(null,t(a,o)),R=vE(r,n-M[0],i-M[1],p,d,f);return c=Pm(s,l,u),I=Ju(t,R),E=Ju(c,I),A=rh(I,w),T()}function T(){return k=S=null,D}return function(){return t=e.apply(this,arguments),D.invert=t.invert&&P,O()}}function R1(e,t){return[e,T_(N_((Gn+t)/2))]}R1.invert=function(e,t){return[e,2*v6(D_(t))-Gn]};function nh(){return Yz(R1).scale(961/yn)}function Yz(e){var t=A4(e),r=t.center,n=t.scale,i=t.translate,a=t.clipExtent,o=null,s,l,u;t.scale=function(f){return arguments.length?(n(f),c()):n()},t.translate=function(f){return arguments.length?(i(f),c()):i()},t.center=function(f){return arguments.length?(r(f),c()):r()},t.clipExtent=function(f){return arguments.length?(f==null?o=s=l=u=null:(o=+f[0][0],s=+f[0][1],l=+f[1][0],u=+f[1][1]),c()):o==null?null:[[o,s],[l,u]]};function c(){var f=Qt*n(),p=t(K_(t.rotate()).invert([0,0]));return a(o==null?[[p[0]-f,p[1]-f],[p[0]+f,p[1]+f]]:e===R1?[[Math.max(p[0]-f,o),s],[Math.min(p[0]+f,l),u]]:[[o,Math.max(p[1]-f,s)],[l,Math.min(p[1]+f,u)]])}return c()}function B6(){var e=1,t=0,r=0,n=1,i=1,a=0,o,s,l=null,u,c,f,p=1,d=1,g=L1({point:function(_,w){var A=y([_,w]);this.stream.point(A[0],A[1])}}),x=P1,b,m;function v(){return p=e*n,d=e*i,b=m=null,y}function y(_){var w=_[0]*p,A=_[1]*d;if(a){var I=A*o-w*s;w=w*o+A*s,A=I}return[w+t,A+r]}return y.invert=function(_){var w=_[0]-t,A=_[1]-r;if(a){var I=A*o+w*s;w=w*o-A*s,A=I}return[w/p,A/d]},y.stream=function(_){return b&&m===_?b:b=g(x(m=_))},y.postclip=function(_){return arguments.length?(x=_,l=u=c=f=null,v()):x},y.clipExtent=function(_){return arguments.length?(x=_==null?(l=u=c=f=null,P1):t3(l=+_[0][0],u=+_[0][1],c=+_[1][0],f=+_[1][1]),v()):l==null?null:[[l,u],[c,f]]},y.scale=function(_){return arguments.length?(e=+_,v()):e},y.translate=function(_){return arguments.length?(t=+_[0],r=+_[1],v()):[t,r]},y.angle=function(_){return arguments.length?(a=_%360*Xt,s=ir(a),o=er(a),v()):a*ln},y.reflectX=function(_){return arguments.length?(n=_?-1:1,v()):n<0},y.reflectY=function(_){return arguments.length?(i=_?-1:1,v()):i<0},y.fitExtent=function(_,w){return s3(y,_,w)},y.fitSize=function(_,w){return O6(y,_,w)},y.fitWidth=function(_,w){return L6(y,_,w)},y.fitHeight=function(_,w){return R6(y,_,w)},y}var Go=2*Math.PI,$6=6378137,U6=63567523e-1;function l3(e){return e*(Go*U6/360)}function Xl(e,t){return Math.abs(t)>=90?0:e*(Go*$6/360)*Math.abs(Math.cos(t*(Math.PI/180)))}function ti(e){return e/(Go*U6/360)}function Pn(e,t){return Math.abs(t)>=90?0:e/(Go*$6/360)/Math.abs(Math.cos(t*(Math.PI/180)))}function S4(e,t){return t=t||256,[e[0]*t/(Go*$6),-e[1]*t/(Go*U6)]}function C4(e,t){return t=t||256,[e[0]*Go*$6/t,-e[1]*Go*U6/t]}function Vt(e,t){var r=Xl(e[0]-t[0],(e[1]+t[1])/2),n=l3(e[1]-t[1]);return Math.sqrt(r*r+n*n)}function hr(e,t){t=t||256;var r=Math.log(t)*Math.LOG2E;return Math.log(e*Go)/Math.LN2-r}function jn(e,t){return t=t||256,t*Math.pow(2,e)/Go}function I4(e,t){var r=1/0,n,i;for(var a in e)n=Vt(e[a].loc,t),n=this[0][0]&&e[0][1]>=this[0][1]&&e[1][0]<=this[1][0]&&e[1][1]<=this[1][1]},intersects:function(e){return e instanceof Pe||(e=new Pe(e)),e[0][0]<=this[1][0]&&e[0][1]<=this[1][1]&&e[1][0]>=this[0][0]&&e[1][1]>=this[0][1]},intersection:function(e){return this.intersects(e)?new Pe([Math.max(e[0][0],this[0][0]),Math.max(e[0][1],this[0][1])],[Math.min(e[1][0],this[1][0]),Math.min(e[1][1],this[1][1])]):new Pe},percentContainedIn:function(e){e instanceof Pe||(e=new Pe(e));var t=this.intersection(e).area(),r=this.area();return t===1/0||r===1/0?0:t===0||r===0?e.contains(this)?1:0:t/r},padByMeters:function(e){var t=ti(e),r=Pn(e,this.center()[1]);return Pe([this[0][0]-r,this[0][1]-t],[this[1][0]+r,this[1][1]+t])},toParam:function(){return this.rectangle().join(",")},split:function(){let e=this.center();return[Pe(this[0],e),Pe([e[0],this[0][1]],[this[1][0],e[1]]),Pe(e,this[1]),Pe([this[0][0],e[1]],[e[0],this[1][1]])]}});function F4(e){for(var t=-1,r=e.length,n,i=e[r-1],a=0;++t1&&bE(e[r[n-2]],e[r[n-1]],e[i])<=0;)--n;r[n++]=i}return r.slice(0,n)}function Bs(e){if((r=e.length)<3)return null;var t,r,n=new Array(r),i=new Array(r);for(t=0;t=0;--t)u.push(e[n[a[t]][2]]);for(t=+s;t1?c=t[a+1]:c=[o[0]+u*s[0],o[1]+u*s[1]];var f=_t(c,e);f1?x=a[c+1]:x=[f[0]+g*p[0],f[1]+g*p[1]];var b=i(x,t);b=0&&f<=1&&c>=0&&c<=1)return ar(r,n,f)}return null}function M4(e,t){for(var r=[],n=0;nn!=c>n&&r<(u-s)*(n-l)/(c-l)+s;f&&(i=!i)}return i}function N4(e,t){return t.every(function(r){return Wo(r,e)})}function Qo(e,t,r){function n(i,a){return a.some(function(o){return Wo(o,i)})}return n(e,t)||!!r&&ih(e,t)}function P4(e){for(var t=Bs(e),r=jo(t),n=1/0,i=[],a=0,o=t[0],s=0;s<=t.length-1;s++){var l=s===t.length-1?t[0]:t[s+1],u=Math.atan2(l[1]-o[1],l[0]-o[0]),c=U1(t,-u,r),f=c.reduce(function(d,g){return d.extend(Pe(g))},Pe()),p=f.area();pt[0]-r[1]&&(n=-10),e[0]t[1]-r[2]&&(i=-10),e[1]{}};function EE(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}G6.prototype=EE.prototype={constructor:G6,on:function(e,t){var r=this._,n=Jz(e+"",r),i,a=-1,o=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),ah.hasOwnProperty(t)?{space:ah[t],local:e}:e}function tq(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===j6&&t.documentElement.namespaceURI===j6?t.createElement(e):t.createElementNS(r,e)}}function rq(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function H6(e){var t=Us(e);return(t.local?rq:tq)(t)}function nq(){}function Yl(e){return e==null?nq:function(){return this.querySelector(e)}}function kE(e){typeof e!="function"&&(e=Yl(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i=y&&(y=v+1);!(w=b[y])&&++y=0;)(o=n[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function LE(e){e||(e=gq);function t(f,p){return f&&p?e(f.__data__,p.__data__):!f-!p}for(var r=this._groups,n=r.length,i=new Array(n),a=0;at?1:e>=t?0:NaN}function RE(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function BE(){return Array.from(this)}function $E(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?Eq:typeof t=="function"?Aq:kq)(e,t,r==null?"":r)):q1(this.node(),e)}function q1(e,t){return e.style.getPropertyValue(t)||X6(e).getComputedStyle(e,null).getPropertyValue(t)}function Sq(e){return function(){delete this[e]}}function Cq(e,t){return function(){this[e]=t}}function Iq(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function jE(e,t){return arguments.length>1?this.each((t==null?Sq:typeof t=="function"?Iq:Cq)(e,t)):this.node()[e]}function HE(e){return e.trim().split(/^|\s+/)}function oh(e){return e.classList||new WE(e)}function WE(e){this._node=e,this._names=HE(e.getAttribute("class")||"")}WE.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function QE(e,t){for(var r=oh(e),n=-1,i=t.length;++n=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function Hq(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,i=t.length,a;r()=>e;function v3(e,{sourceEvent:t,subject:r,target:n,identifier:i,active:a,x:o,y:s,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}v3.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Kq(e){return!e.ctrlKey&&!e.button}function Zq(){return this.parentNode}function Jq(e,t){return t==null?{x:e.x,y:e.y}:t}function eV(){return navigator.maxTouchPoints||"ontouchstart"in this}function y3(){var e=Kq,t=Zq,r=Jq,n=eV,i={},a=xe("start","drag","end"),o=0,s,l,u,c,f=0;function p(_){_.on("mousedown.drag",d).filter(n).on("touchstart.drag",b).on("touchmove.drag",m,pk).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(_,w){if(!(c||!e.call(this,_,w))){var A=y(this,t.call(this,_,w),_,w,"mouse");A&&(G(_.view).on("mousemove.drag",g,Kl).on("mouseup.drag",x,Kl),m3(_.view),Y6(_),u=!1,s=_.clientX,l=_.clientY,A("start",_))}}function g(_){if(V1(_),!u){var w=_.clientX-s,A=_.clientY-l;u=w*w+A*A>f}i.mouse("drag",_)}function x(_){G(_.view).on("mousemove.drag mouseup.drag",null),h3(_.view,u),V1(_),i.mouse("end",_)}function b(_,w){if(e.call(this,_,w)){var A=_.changedTouches,I=t.call(this,_,w),E=A.length,k,S;for(k=0;k>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Z6(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Z6(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=rV.exec(e))?new Zi(t[1],t[2],t[3],1):(t=nV.exec(e))?new Zi(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=iV.exec(e))?Z6(t[1],t[2],t[3],t[4]):(t=aV.exec(e))?Z6(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=oV.exec(e))?bk(t[1],t[2]/100,t[3]/100,1):(t=sV.exec(e))?bk(t[1],t[2]/100,t[3]/100,t[4]):dk.hasOwnProperty(e)?gk(dk[e]):e==="transparent"?new Zi(NaN,NaN,NaN,0):null}function gk(e){return new Zi(e>>16&255,e>>8&255,e&255,1)}function Z6(e,t,r,n){return n<=0&&(e=t=r=NaN),new Zi(e,t,r,n)}function cV(e){return e instanceof w3||(e=wo(e)),e?(e=e.rgb(),new Zi(e.r,e.g,e.b,e.opacity)):new Zi}function L4(e,t,r,n){return arguments.length===1?cV(e):new Zi(e,t,r,n==null?1:n)}function Zi(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}K6(Zi,L4,lh(w3,{brighter(e){return e=e==null?ef:Math.pow(ef,e),new Zi(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?b3:Math.pow(b3,e),new Zi(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Zi(Jl(this.r),Jl(this.g),Jl(this.b),tf(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:vk,formatHex:vk,formatHex8:fV,formatRgb:yk,toString:yk}));function vk(){return`#${Zl(this.r)}${Zl(this.g)}${Zl(this.b)}`}function fV(){return`#${Zl(this.r)}${Zl(this.g)}${Zl(this.b)}${Zl((isNaN(this.opacity)?1:this.opacity)*255)}`}function yk(){let e=tf(this.opacity);return`${e===1?"rgb(":"rgba("}${Jl(this.r)}, ${Jl(this.g)}, ${Jl(this.b)}${e===1?")":`, ${e})`}`}function tf(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Jl(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Zl(e){return e=Jl(e),(e<16?"0":"")+e.toString(16)}function bk(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new xo(e,t,r,n)}function wk(e){if(e instanceof xo)return new xo(e.h,e.s,e.l,e.opacity);if(e instanceof w3||(e=wo(e)),!e)return new xo;if(e instanceof xo)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(t===a?o=(r-n)/s+(r0&&l<1?0:o,new xo(o,s,l,e.opacity)}function _k(e,t,r,n){return arguments.length===1?wk(e):new xo(e,t,r,n==null?1:n)}function xo(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}K6(xo,_k,lh(w3,{brighter(e){return e=e==null?ef:Math.pow(ef,e),new xo(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?b3:Math.pow(b3,e),new xo(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Zi(uh(e>=240?e-240:e+120,i,n),uh(e,i,n),uh(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new xo(xk(this.h),J6(this.s),J6(this.l),tf(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=tf(this.opacity);return`${e===1?"hsl(":"hsla("}${xk(this.h)}, ${J6(this.s)*100}%, ${J6(this.l)*100}%${e===1?")":`, ${e})`}`}}));function xk(e){return e=(e||0)%360,e<0?e+360:e}function J6(e){return Math.max(0,Math.min(1,e||0))}function uh(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}function ch(e,t,r,n,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*i)/6}function Ek(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],o=n>0?e[n-1]:2*i-a,s=n()=>e;function pV(e,t){return function(r){return e+r*t}}function dV(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Ak(e){return(e=+e)==1?rf:function(t,r){return r-t?dV(t,r,e):_3(isNaN(t)?r:t)}}function rf(e,t){var r=t-e;return r?pV(e,r):_3(isNaN(e)?t:e)}var Yo=function e(t){var r=Ak(t);function n(i,a){var o=r((i=L4(i)).r,(a=L4(a)).r),s=r(i.g,a.g),l=r(i.b,a.b),u=rf(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=l(c),i.opacity=u(c),i+""}}return n.gamma=e,n}(1);function Sk(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),o,s;for(o=0;or&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:Vr(n,i)})),r=fh.lastIndex;return r180?c+=360:c-u>180&&(u+=360),p.push({i:f.push(i(f)+"rotate(",null,n)-2,x:Vr(u,c)})):c&&f.push(i(f)+"rotate("+c+n)}function s(u,c,f,p){u!==c?p.push({i:f.push(i(f)+"skewX(",null,n)-2,x:Vr(u,c)}):c&&f.push(i(f)+"skewX("+c+n)}function l(u,c,f,p,d,g){if(u!==f||c!==p){var x=d.push(i(d)+"scale(",null,",",null,")");g.push({i:x-4,x:Vr(u,f)},{i:x-2,x:Vr(c,p)})}else(f!==1||p!==1)&&d.push(i(d)+"scale("+f+","+p+")")}return function(u,c){var f=[],p=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,f,p),o(u.rotate,c.rotate,f,p),s(u.skewX,c.skewX,f,p),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,p),u=c=null,function(d){for(var g=-1,x=p.length,b;++g=0&&e._call.call(void 0,t),e=e._next;--R4}function Rk(){e0=(sf=I3.now())+lf,R4=S3=0;try{uf()}finally{R4=0,EV(),e0=0}}function _V(){var e=I3.now(),t=e-sf;t>Bk&&(lf-=t,sf=e)}function EV(){for(var e,t=of,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:of=r);C3=e,yh(n)}function yh(e){if(!R4){S3&&(S3=clearTimeout(S3));var t=e-e0;t>24?(e<1/0&&(S3=setTimeout(Rk,e-I3.now()-lf)),A3&&(A3=clearInterval(A3))):(A3||(sf=I3.now(),A3=setInterval(_V,Bk)),R4=1,$k(Rk))}}function B4(e,t,r){var n=new F3;return t=t==null?0:+t,n.restart(i=>{n.stop(),e(i+t)},t,r),n}var kV=xe("start","end","cancel","interrupt"),AV=[],qk=0,Uk=1,ff=2,cf=3,zk=4,pf=5,T3=6;function j1(e,t,r,n,i,a){var o=e.__transition;if(!o)e.__transition={};else if(r in o)return;SV(e,r,{name:t,index:n,group:i,on:kV,tween:AV,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:qk})}function M3(e,t){var r=Ln(e,t);if(r.state>qk)throw new Error("too late; already scheduled");return r}function ri(e,t){var r=Ln(e,t);if(r.state>cf)throw new Error("too late; already running");return r}function Ln(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function SV(e,t,r){var n=e.__transition,i;n[t]=r,r.timer=G1(a,0,r.time);function a(u){r.state=Uk,r.timer.restart(o,r.delay,r.time),r.delay<=u&&o(u-r.delay)}function o(u){var c,f,p,d;if(r.state!==Uk)return l();for(c in n)if(d=n[c],d.name===r.name){if(d.state===cf)return B4(o);d.state===zk?(d.state=T3,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete n[c]):+cff&&n.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function HV(e,t,r){var n,i,a=jV(t)?M3:ri;return function(){var o=a(this,e),s=o.on;s!==n&&(i=(n=s).copy()).on(t,r),o.on=i}}function Jk(e,t){var r=this._id;return arguments.length<2?Ln(this.node(),r).on.on(e):this.each(HV(r,e,t))}function WV(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function eA(){return this.on("end.remove",WV(this._id))}function tA(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Yl(e));for(var n=this._groups,i=n.length,a=new Array(i),o=0;o+e;function hf(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var oG={time:null,delay:0,duration:250,ease:hf};function sG(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function pA(e){var t,r;e instanceof Di?(t=e._id,e=e._name):(t=mf(),(r=oG).time=D3(),e=e==null?null:e+"");for(var n=this._groups,i=n.length,a=0;a()=>e;function bh(e,{sourceEvent:t,target:r,transform:n,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:n,enumerable:!0,configurable:!0},_:{value:i}})}function Ti(e,t,r){this.k=e,this.x=t,this.y=r}Ti.prototype={constructor:Ti,scale:function(e){return e===1?this:new Ti(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Ti(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Yr=new Ti(1,0,0);xh.prototype=Ti.prototype;function xh(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Yr;return e.__zoom}function gf(e){e.stopImmediatePropagation()}function U4(e){e.preventDefault(),e.stopImmediatePropagation()}function lG(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function uG(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function dA(){return this.__zoom||Yr}function cG(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function fG(){return navigator.maxTouchPoints||"ontouchstart"in this}function pG(e,t,r){var n=e.invertX(t[0][0])-r[0][0],i=e.invertX(t[1][0])-r[1][0],a=e.invertY(t[0][1])-r[0][1],o=e.invertY(t[1][1])-r[1][1];return e.translate(i>n?(n+i)/2:Math.min(0,n)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function Eo(){var e=lG,t=uG,r=pG,n=cG,i=fG,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,l=k3,u=xe("start","zoom","end"),c,f,p,d=500,g=150,x=0,b=10;function m(T){T.property("__zoom",dA).on("wheel.zoom",E,{passive:!1}).on("mousedown.zoom",k).on("dblclick.zoom",S).filter(i).on("touchstart.zoom",D).on("touchmove.zoom",P).on("touchend.zoom touchcancel.zoom",O).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(T,M,R,N){var U=T.selection?T.selection():T;U.property("__zoom",dA),T!==U?w(T,M,R,N):U.interrupt().each(function(){A(this,arguments).event(N).start().zoom(null,typeof M=="function"?M.apply(this,arguments):M).end()})},m.scaleBy=function(T,M,R,N){m.scaleTo(T,function(){var U=this.__zoom.k,B=typeof M=="function"?M.apply(this,arguments):M;return U*B},R,N)},m.scaleTo=function(T,M,R,N){m.transform(T,function(){var U=t.apply(this,arguments),B=this.__zoom,$=R==null?_(U):typeof R=="function"?R.apply(this,arguments):R,z=B.invert($),V=typeof M=="function"?M.apply(this,arguments):M;return r(y(v(B,V),$,z),U,o)},R,N)},m.translateBy=function(T,M,R,N){m.transform(T,function(){return r(this.__zoom.translate(typeof M=="function"?M.apply(this,arguments):M,typeof R=="function"?R.apply(this,arguments):R),t.apply(this,arguments),o)},null,N)},m.translateTo=function(T,M,R,N,U){m.transform(T,function(){var B=t.apply(this,arguments),$=this.__zoom,z=N==null?_(B):typeof N=="function"?N.apply(this,arguments):N;return r(Yr.translate(z[0],z[1]).scale($.k).translate(typeof M=="function"?-M.apply(this,arguments):-M,typeof R=="function"?-R.apply(this,arguments):-R),B,o)},N,U)};function v(T,M){return M=Math.max(a[0],Math.min(a[1],M)),M===T.k?T:new Ti(M,T.x,T.y)}function y(T,M,R){var N=M[0]-R[0]*T.k,U=M[1]-R[1]*T.k;return N===T.x&&U===T.y?T:new Ti(T.k,N,U)}function _(T){return[(+T[0][0]+ +T[1][0])/2,(+T[0][1]+ +T[1][1])/2]}function w(T,M,R,N){T.on("start.zoom",function(){A(this,arguments).event(N).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event(N).end()}).tween("zoom",function(){var U=this,B=arguments,$=A(U,B).event(N),z=t.apply(U,B),V=R==null?_(z):typeof R=="function"?R.apply(U,B):R,H=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),Z=U.__zoom,oe=typeof M=="function"?M.apply(U,B):M,pe=l(Z.invert(V).concat(H/Z.k),oe.invert(V).concat(H/oe.k));return function(ne){if(ne===1)ne=oe;else{var ge=pe(ne),ve=H/ge[2];ne=new Ti(ve,V[0]-ge[0]*ve,V[1]-ge[1]*ve)}$.zoom(null,ne)}})}function A(T,M,R){return!R&&T.__zooming||new I(T,M)}function I(T,M){this.that=T,this.args=M,this.active=0,this.sourceEvent=null,this.extent=t.apply(T,M),this.taps=0}I.prototype={event:function(T){return T&&(this.sourceEvent=T),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(T,M){return this.mouse&&T!=="mouse"&&(this.mouse[1]=M.invert(this.mouse[0])),this.touch0&&T!=="touch"&&(this.touch0[1]=M.invert(this.touch0[0])),this.touch1&&T!=="touch"&&(this.touch1[1]=M.invert(this.touch1[0])),this.that.__zoom=M,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(T){var M=G(this.that).datum();u.call(T,this.that,new bh(T,{sourceEvent:this.sourceEvent,target:m,type:T,transform:this.that.__zoom,dispatch:u}),M)}};function E(T,...M){if(!e.apply(this,arguments))return;var R=A(this,M).event(T),N=this.__zoom,U=Math.max(a[0],Math.min(a[1],N.k*Math.pow(2,n.apply(this,arguments)))),B=$a(T);if(R.wheel)(R.mouse[0][0]!==B[0]||R.mouse[0][1]!==B[1])&&(R.mouse[1]=N.invert(R.mouse[0]=B)),clearTimeout(R.wheel);else{if(N.k===U)return;R.mouse=[B,N.invert(B)],_o(this),R.start()}U4(T),R.wheel=setTimeout($,g),R.zoom("mouse",r(y(v(N,U),R.mouse[0],R.mouse[1]),R.extent,o));function $(){R.wheel=null,R.end()}}function k(T,...M){if(p||!e.apply(this,arguments))return;var R=T.currentTarget,N=A(this,M,!0).event(T),U=G(T.view).on("mousemove.zoom",V,!0).on("mouseup.zoom",H,!0),B=$a(T,R),$=T.clientX,z=T.clientY;m3(T.view),gf(T),N.mouse=[B,this.__zoom.invert(B)],_o(this),N.start();function V(Z){if(U4(Z),!N.moved){var oe=Z.clientX-$,pe=Z.clientY-z;N.moved=oe*oe+pe*pe>x}N.event(Z).zoom("mouse",r(y(N.that.__zoom,N.mouse[0]=$a(Z,R),N.mouse[1]),N.extent,o))}function H(Z){U.on("mousemove.zoom mouseup.zoom",null),h3(Z.view,N.moved),U4(Z),N.event(Z).end()}}function S(T,...M){if(e.apply(this,arguments)){var R=this.__zoom,N=$a(T.changedTouches?T.changedTouches[0]:T,this),U=R.invert(N),B=R.k*(T.shiftKey?.5:2),$=r(y(v(R,B),N,U),t.apply(this,M),o);U4(T),s>0?G(this).transition().duration(s).call(w,$,N,T):G(this).call(m.transform,$,N,T)}}function D(T,...M){if(e.apply(this,arguments)){var R=T.touches,N=R.length,U=A(this,M,T.changedTouches.length===N).event(T),B,$,z,V;for(gf(T),$=0;$n?e:null}function vf(e,t,r,n){for(var i=0,a=t?0:1,o=t?e.length:e.length-1,s=e.map(function(x){return x.coord}),l=Math.cos((90-n)*Math.PI/180),u=Math.cos(n*Math.PI/180),c=a;c45&&(f=90-f),!(f>=r)&&f>n&&(n=f)}return n===-1/0?null:n}function z4(e,t,r,n,i){for(var a=null,o=t?0:1,s=t?e.length:e.length-1,l=Math.cos((90-n)*Math.PI/180),u=Math.cos(n*Math.PI/180),c=o;c0)return 1;a=0}}return a}function H1(e){return e!=="attribution"&&e!=="created_by"&&e!=="source"&&e!=="odbl"&&e.indexOf("source:")!==0&&e.indexOf("source_ref")!==0&&e.indexOf("tiger:")!==0}var W1={proposed:!0,planned:!0,construction:!0,disused:!0,abandoned:!0,was:!0,dismantled:!0,razed:!0,demolished:!0,destroyed:!0,removed:!0,obliterated:!0,intermittent:!0};function L3(e){let t=e.split(":");return t.length===1?e:t[0]in W1?e.slice(t[0].length+1):e}var qs={};function yf(e){qs=e}var O3={highway:{elevator:!0,rest_area:!0,services:!0},public_transport:{platform:!0},railway:{platform:!0,roundhouse:!0,station:!0,traverser:!0,turntable:!0,wash:!0},waterway:{dam:!0},amenity:{bicycle_parking:!0}};function Q1(e){if(e.area==="yes")return{area:"yes"};if(e.area==="no")return null;var t={};for(var r in e){let n=L3(r);if(n in qs&&!(e[r]in qs[n])||n in O3&&e[r]in O3[n])return t[r]=e[r],t}return null}var dG={};function gA(e){dG=e}var q4={};function bf(e){q4=e}var V4={};function xf(e){V4=e}function X1(e){var t={};for(var r in e)if(q4[r]&&(q4[r]["*"]||q4[r][e[r]])&&(t.point=!0),V4[r]&&(V4[r]["*"]||V4[r][e[r]])&&(t.vertex=!0),t.point&&t.vertex)break;return t}var ko={aerialway:{chair_lift:!0,drag_lift:!0,"j-bar":!0,magic_carpet:!0,mixed_lift:!0,platter:!0,rope_tow:!0,"t-bar":!0,zip_line:!0},highway:{motorway:!0},junction:{circular:!0,roundabout:!0},man_made:{goods_conveyor:!0,"piste:halfpipe":!0},"piste:type":{downhill:!0,sled:!0,yes:!0},"seamark:type":{"two-way_route":!0,recommended_traffic_lane:!0,separation_lane:!0,separation_roundabout:!0},waterway:{canal:!0,ditch:!0,drain:!0,fish_pass:!0,pressurised:!0,river:!0,spillway:!0,stream:!0,tidal_channel:!0}},R3={surface:{paved:!0,asphalt:!0,concrete:!0,chipseal:!0,"concrete:lanes":!0,"concrete:plates":!0},tracktype:{grade1:!0}},wh={surface:{cobblestone:!0,"cobblestone:flattened":!0,unhewn_cobblestone:!0,sett:!0,paving_stones:!0,metal:!0,wood:!0}},B3={natural:{cliff:!0,coastline:"coastline"},barrier:{retaining_wall:!0,kerb:!0,guard_rail:!0,city_wall:!0},man_made:{embankment:!0,quay:!0},waterway:{weir:!0}},za={motorway:!0,trunk:!0,primary:!0,secondary:!0,tertiary:!0,residential:!0,motorway_link:!0,trunk_link:!0,primary_link:!0,secondary_link:!0,tertiary_link:!0,unclassified:!0,road:!0,service:!0,track:!0,living_street:!0,bus_guideway:!0,busway:!0,path:!0,footway:!0,cycleway:!0,bridleway:!0,pedestrian:!0,corridor:!0,steps:!0},Vs={path:!0,footway:!0,cycleway:!0,bridleway:!0,pedestrian:!0,corridor:!0,steps:!0},wf={rail:!0,light_rail:!0,tram:!0,subway:!0,monorail:!0,funicular:!0,miniature:!0,narrow_gauge:!0,disused:!0,preserved:!0},G4={canal:!0,ditch:!0,drain:!0,fish_pass:!0,river:!0,stream:!0,tidal_channel:!0},_f=/network|taxon|genus|species|brand|grape_variety|royal_cypher|listed_status|booth|rating|stars|:output|_hours|_times|_ref|manufacturer|country|target|brewery|cai_scale|traffic_sign/;function Ko(e){return!(!e.match(/^(#([0-9a-fA-F]{3}){1,2}|\w+)$/)||!CSS.supports("color",e)||["unset","inherit","initial","revert"].includes(e))}var vA=[["noname","name"],["noref","ref"],["nohousenumber","addr:housenumber"],["noaddress","addr:housenumber"],["noaddress","addr:housename"],["noaddress","addr:unit"],["addr:nostreet","addr:street"]],j4={wood:!0,wetland:!0,beach:!0,cave_entrance:!0,peak:!0,cliff:!0,coastline:!0,tree_row:!0,water:!0,scrub:!0,grassland:!0,heath:!0,bare_rock:!0,glacier:!0,stream:!0,river:!0,pond:!0,basin:!0,lake:!0};function kn(e,t){if(e===t)return!0;var r=e.length;if(r!==t.length)return!1;for(;r--;)if(e[r]!==t[r])return!1;return!0}function $r(e,t){var r=new Set(t);return Array.from(new Set(e)).filter(function(n){return!r.has(n)})}function Wr(e,t){var r=new Set(t);return Array.from(new Set(e)).filter(function(n){return r.has(n)})}function or(e,t){var r=new Set(e);return t.forEach(function(n){r.add(n)}),Array.from(r)}function ot(e){return Array.from(new Set(e))}function r0(e,t){if(!t||t<0)return[e.slice()];var r=new Array(Math.ceil(e.length/t));return Array.from(r,function(n,i){return e.slice(i*t,i*t+t)})}function Y1(e){return e.reduce(function(t,r){return t.concat(r)},[])}function Ir(e,t){return e.reduce(function(r,n){var i=typeof t=="function"?t(n):n[t];return(r[i]=r[i]||[]).push(n),r},{})}function H4(e,t){var r=new Set;return e.reduce(function(n,i){var a=typeof t=="function"?t(i):i[t];return a&&!r.has(a)&&(r.add(a),n.push(i)),n},[])}var Pg=xt(Sf());var PA=xt(NA()),Oh=/[\u0590-\u05FF\u0600-\u06FF\u0750-\u07BF\u08A0–\u08BF]/;function OA(e){var t="",r=[],n=/[\u0600-\u06FF]/g,i=/[\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06ED]/g,a=/[\u0660-\u066C\u06F0-\u06F9]+/g,o=/[\u07A6-\u07B0]/,s=/[\u0591-\u05bd\u05bf\u05c1-\u05c5\u05c7]/;n.test(e)&&(e=(0,PA.WordShaper)(e));for(var l=0;l=64336&&u.charCodeAt(0)<=65023||u.charCodeAt(0)>=65136&&u.charCodeAt(0)<=65279?r.push(u):u===" "&&r.length?r=[r.reverse().join("")+" "]:(t+=r.reverse().join("")+u,r=[]))}return t+=r.reverse().join(""),t}var X4;try{X4=localStorage}catch{}X4=X4||(()=>{let e={};return{getItem:t=>e[t],setItem:(t,r)=>e[t]=r,removeItem:t=>delete e[t]}})();var q3={};function Te(e,t){try{return t===void 0?X4.getItem(e):(t===null?X4.removeItem(e):X4.setItem(e,t),q3[e]&&q3[e].forEach(r=>r(t)),!0)}catch{return typeof console<"u"&&console.error("localStorage quota exceeded"),!1}}Te.onChange=function(e,t){q3[e]=q3[e]||[],q3[e].push(t)};var VA=xt(Lh());var Jo="https://cdn.jsdelivr.net/npm/@openstreetmap/id-tagging-schema@{presets_version}/",Tf="https://cdn.jsdelivr.net/npm/osm-community-index@{version}/",BA="https://cdn.jsdelivr.net/npm/wmf-sitematrix@{version}/",$A="https://cdn.jsdelivr.net/npm/name-suggestion-index@{version}/",RA={live:{url:"https://www.openhistoricalmap.org",apiUrl:"https://www.openhistoricalmap.org",client_id:"0tmNTmd0Jo1dQp4AUmMBLtGiD9YpMuXzHefitcuVStc",client_secret:"BTlNrNxIPitHdL4sP2clHw5KLoee9aKkA7dQbc0Bj7Q"},dev:{url:"https://api06.dev.openstreetmap.org",client_id:"Ee1wWJ6UlpERbF6BfTNOpwn0R8k_06mvMXdDUkeHMgw",client_secret:"OnfWFC-JkZNHyYdr_viNn_h_RTZXRslKcUxllOXqf5g"}},J1=[];J1.push(RA.live),J1.push(RA.dev);var UA="https://taginfo.openstreetmap.org/api/4/",zA="https://nominatim.openstreetmap.org/",qA=!0;var Gs={name:"@openhistoricalmap/id",version:"2.29.1",description:"The OpenHistoricalMap fork of a friendly editor for OpenStreetMap",main:"dist/iD.min.js",repository:{type:"git",url:"git+https://github.com/OpenHistoricalMap/iD"},homepage:"https://github.com/OpenHistoricalMap/iD",bugs:"https://github.com/OpenHistoricalMap/issues/issues",keywords:["editor","openhistoricalmap"],license:"ISC",scripts:{all:"run-s clean build dist",build:"run-s build:css build:data build:js","build:css":"node scripts/build_css.js","build:data":"shx mkdir -p dist/data && node scripts/build_data.js","build:stats":"node config/esbuild.config.mjs --stats && esbuild-visualizer --metadata dist/esbuild.json --exclude *.png --filename docs/statistics.html && shx rm dist/esbuild.json","build:js":"node config/esbuild.config.mjs","build:js:watch":"node config/esbuild.config.mjs --watch",clean:"shx rm -f dist/esbuild.json dist/*.js dist/*.map dist/*.css dist/img/*.svg",dist:"run-p dist:**","dist:mapillary":"shx mkdir -p dist/mapillary-js && shx cp -R node_modules/mapillary-js/dist/* dist/mapillary-js/","dist:pannellum":"shx mkdir -p dist/pannellum && shx cp -R node_modules/pannellum/build/* dist/pannellum/","dist:min":"node config/esbuild.config.min.mjs","dist:svg:iD":'svg-sprite --symbol --symbol-dest . --shape-id-generator "iD-%s" --symbol-sprite dist/img/iD-sprite.svg "svg/iD-sprite/**/*.svg"',"dist:svg:community":'svg-sprite --symbol --symbol-dest . --shape-id-generator "community-%s" --symbol-sprite dist/img/community-sprite.svg node_modules/osm-community-index/dist/img/*.svg',"dist:svg:fa":"svg-sprite --symbol --symbol-dest . --symbol-sprite dist/img/fa-sprite.svg svg/fontawesome/*.svg","dist:svg:maki":'svg-sprite --symbol --symbol-dest . --shape-id-generator "maki-%s" --symbol-sprite dist/img/maki-sprite.svg node_modules/@mapbox/maki/icons/*.svg',"dist:svg:mapillary:signs":"svg-sprite --symbol --symbol-dest . --symbol-sprite dist/img/mapillary-sprite.svg node_modules/@rapideditor/mapillary_sprite_source/package_signs/*.svg","dist:svg:mapillary:objects":"svg-sprite --symbol --symbol-dest . --symbol-sprite dist/img/mapillary-object-sprite.svg node_modules/@rapideditor/mapillary_sprite_source/package_objects/*.svg","dist:svg:roentgen":'svg-sprite --shape-id-generator "roentgen-%s" --shape-dim-width 16 --shape-dim-height 16 --symbol --symbol-dest . --symbol-sprite dist/img/roentgen-sprite.svg svg/roentgen/*.svg',"dist:svg:temaki":'svg-sprite --symbol --symbol-dest . --shape-id-generator "temaki-%s" --symbol-sprite dist/img/temaki-sprite.svg node_modules/@rapideditor/temaki/icons/*.svg',imagery:"node scripts/update_imagery.js",lint:"eslint config scripts test/spec modules","lint:fix":"eslint scripts test/spec modules --fix",start:"run-s start:watch","start:single-build":"run-p build:js start:server","start:watch":"run-p build:js:watch start:server","start:server":"node scripts/server.js",test:"npm-run-all -s lint build test:spec","test:spec":"karma start config/karma.conf.js",translations:"node scripts/update_locales.js"},dependencies:{"@mapbox/geojson-area":"^0.2.2","@mapbox/sexagesimal":"1.2.0","@mapbox/vector-tile":"^1.3.1","@rapideditor/country-coder":"~5.2.2","@rapideditor/location-conflation":"~1.3.0","@tmcw/togeojson":"^5.8.1","@turf/bbox":"^6.0.0","@turf/bbox-clip":"^6.0.0","abortcontroller-polyfill":"^1.7.5","aes-js":"^3.1.2","alif-toolkit":"^1.2.9","core-js-bundle":"^3.36.1",diacritics:"1.3.0",edtf:"^4.7.1",exifr:"^7.1.3","fast-deep-equal":"~3.1.1","fast-json-stable-stringify":"2.1.0","lodash-es":"~4.17.15",marked:"~12.0.1","node-diff3":"~3.1.0","osm-auth":"~2.4.0",pannellum:"2.5.6",pbf:"^3.2.1","polygon-clipping":"~0.15.7",rbush:"3.0.1","whatwg-fetch":"^3.6.20","which-polygon":"2.2.1"},devDependencies:{"@fortawesome/fontawesome-svg-core":"~6.5.1","@fortawesome/free-brands-svg-icons":"~6.5.2","@fortawesome/free-regular-svg-icons":"~6.5.1","@fortawesome/free-solid-svg-icons":"~6.5.1","@mapbox/maki":"^8.0.1","@openstreetmap/id-tagging-schema":"^6.7.2","@rapideditor/mapillary_sprite_source":"^1.8.0","@rapideditor/temaki":"^5.8.0","@transifex/api":"^7.1.0",autoprefixer:"^10.4.19",browserslist:"^4.23.0","browserslist-to-esbuild":"^2.1.1",chai:"^4.4.1",chalk:"^4.1.2","cldr-core":"^44.0.1","cldr-localenames-full":"^44.1.0","concat-files":"^0.1.1",d3:"~7.9.0",dotenv:"^16.4.5","editor-layer-index":"github:osmlab/editor-layer-index#gh-pages",esbuild:"^0.20.2","esbuild-visualizer":"^0.6.0",eslint:"^8.57.0","fetch-mock":"^9.11.0",gaze:"^1.1.3",glob:"^10.3.12",happen:"^0.3.2","js-yaml":"^4.0.0","json-stringify-pretty-compact":"^3.0.0",karma:"^6.4.3","karma-chrome-launcher":"^3.2.0","karma-coverage":"2.1.1","karma-mocha":"^2.0.1","karma-remap-istanbul":"^0.6.0","mapillary-js":"4.1.2",minimist:"^1.2.8",mocha:"^10.4.0","name-suggestion-index":"~6.0","npm-run-all":"^4.0.0","ohm-editor-layer-index":"github:openhistoricalmap/ohm-editor-layer-index#dist","osm-community-index":"~5.6.2",postcss:"^8.4.38","postcss-selector-prepend":"^0.5.0",shelljs:"^0.8.0",shx:"^0.3.0",sinon:"^11.1.2","sinon-chai":"^3.7.0",smash:"0.0","static-server":"^2.2.1","svg-sprite":"2.0.4",vparse:"~1.1.0"},engines:{node:">=18"},browserslist:["> 0.3%, last 6 major versions, not dead, Firefox ESR, maintained node versions"]};var dt=Rh();function Rh(){let e=Gs.dependencies["osm-community-index"]||Gs.devDependencies["osm-community-index"],t=(0,VA.default)(e),r=`${t.major}.${t.minor}`,n=Gs.devDependencies["@openstreetmap/id-tagging-schema"],i={},a={},o={address_formats:"data/address_formats.min.json",imagery:"data/imagery.min.json",intro_graph:"data/intro_graph.min.json",keepRight:"data/keepRight.min.json",languages:"data/languages.min.json",locales:"locales/index.min.json",phone_formats:"data/phone_formats.min.json",qa_data:"data/qa_data.min.json",shortcuts:"data/shortcuts.min.json",territory_languages:"data/territory_languages.min.json",oci_defaults:Tf.replace("{version}",r)+"dist/defaults.min.json",oci_features:Tf.replace("{version}",r)+"dist/featureCollection.min.json",oci_resources:Tf.replace("{version}",r)+"dist/resources.min.json",presets_package:Jo.replace("{presets_version}",n)+"package.json",deprecated:Jo+"dist/deprecated.min.json",discarded:Jo+"dist/discarded.min.json",preset_categories:Jo+"dist/preset_categories.min.json",preset_defaults:Jo+"dist/preset_defaults.min.json",preset_fields:Jo+"dist/fields.min.json",preset_presets:Jo+"dist/presets.min.json",wayback:"https://www.arcgis.com/sharing/rest/content/groups/0f3189e1d1414edfad860b697b7d8311?f=json",wmf_sitematrix:BA.replace("{version}","0.1")+"wikipedia.min.json"},s={};i.cache=()=>s,i.get=f=>{if(s[f])return Promise.resolve(s[f]);let p=o[f],d=p&&i.asset(p);return d?d.includes("{presets_version}")?i.get("presets_package").then(g=>{let x=g.version;return l(d.replace("{presets_version}",x),f)}):l(d):Promise.reject(`Unknown data file for "${f}"`)};function l(f,p){let d=a[f];return d||(a[f]=d=fetch(f).then(g=>{if(!g.ok||!g.json)throw new Error(g.status+" "+g.statusText);if(!(g.status===204||g.status===205))return g.json()}).then(g=>{if(delete a[f],!g)throw new Error(`No data loaded for "${p}"`);return s[p]=g,g}).catch(g=>{throw delete a[f],g})),d}i.fileMap=function(f){return arguments.length?(o=f,i):o};let u="";i.assetPath=function(f){return arguments.length?(u=f,i):u};let c={};return i.assetMap=function(f){return arguments.length?(c=f,i):c},i.asset=f=>{if(/^http(s)?:\/\//i.test(f))return f;let p=u+f;return c[p]||p},i}var eS=xt(W3(),1),tj={type:"FeatureCollection",features:[{type:"Feature",properties:{wikidata:"Q21",nameEn:"England",aliases:["GB-ENG"],country:"GB",groups:["Q23666","Q3336843","154","150","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44"]},geometry:{type:"MultiPolygon",coordinates:[[[[-6.03913,51.13217],[-7.74976,48.64773],[1.17405,50.74239],[2.18458,51.52087],[2.56575,51.85301],[.792,57.56437],[-2.30613,55.62698],[-2.17058,55.45916],[-2.6095,55.28488],[-2.63532,55.19452],[-3.02906,55.04606],[-3.09361,54.94924],[-3.38407,54.94278],[-4.1819,54.57861],[-3.5082,53.54318],[-3.08228,53.25526],[-3.03675,53.25092],[-2.92329,53.19383],[-2.92022,53.17685],[-2.98598,53.15589],[-2.90649,53.10964],[-2.87469,53.12337],[-2.89131,53.09374],[-2.83133,52.99184],[-2.7251,52.98389],[-2.72221,52.92969],[-2.80549,52.89428],[-2.85897,52.94487],[-2.92401,52.93836],[-2.97243,52.9651],[-3.13576,52.895],[-3.15744,52.84947],[-3.16105,52.79599],[-3.08734,52.77504],[-3.01001,52.76636],[-2.95581,52.71794],[-3.01724,52.72083],[-3.04398,52.65435],[-3.13648,52.58208],[-3.12926,52.5286],[-3.09746,52.53077],[-3.08662,52.54811],[-3.00929,52.57774],[-2.99701,52.551],[-3.03603,52.49969],[-3.13359,52.49174],[-3.22971,52.45344],[-3.22754,52.42526],[-3.04687,52.34504],[-2.95364,52.3501],[-2.99701,52.323],[-3.00785,52.2753],[-3.09289,52.20546],[-3.12638,52.08114],[-2.97111,51.90456],[-2.8818,51.93196],[-2.78742,51.88833],[-2.74277,51.84367],[-2.66234,51.83555],[-2.66336,51.59504],[-3.20563,51.31615],[-6.03913,51.13217]]]]}},{type:"Feature",properties:{wikidata:"Q22",nameEn:"Scotland",aliases:["GB-SCT"],country:"GB",groups:["Q23666","Q3336843","154","150","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44"]},geometry:{type:"MultiPolygon",coordinates:[[[[.792,57.56437],[-.3751,61.32236],[-14.78497,57.60709],[-6.82333,55.83103],[-4.69044,54.3629],[-3.38407,54.94278],[-3.09361,54.94924],[-3.02906,55.04606],[-2.63532,55.19452],[-2.6095,55.28488],[-2.17058,55.45916],[-2.30613,55.62698],[.792,57.56437]]]]}},{type:"Feature",properties:{wikidata:"Q25",nameEn:"Wales",aliases:["GB-WLS"],country:"GB",groups:["Q23666","Q3336843","154","150","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44"]},geometry:{type:"MultiPolygon",coordinates:[[[[-3.5082,53.54318],[-5.37267,53.63269],[-6.03913,51.13217],[-3.20563,51.31615],[-2.66336,51.59504],[-2.66234,51.83555],[-2.74277,51.84367],[-2.78742,51.88833],[-2.8818,51.93196],[-2.97111,51.90456],[-3.12638,52.08114],[-3.09289,52.20546],[-3.00785,52.2753],[-2.99701,52.323],[-2.95364,52.3501],[-3.04687,52.34504],[-3.22754,52.42526],[-3.22971,52.45344],[-3.13359,52.49174],[-3.03603,52.49969],[-2.99701,52.551],[-3.00929,52.57774],[-3.08662,52.54811],[-3.09746,52.53077],[-3.12926,52.5286],[-3.13648,52.58208],[-3.04398,52.65435],[-3.01724,52.72083],[-2.95581,52.71794],[-3.01001,52.76636],[-3.08734,52.77504],[-3.16105,52.79599],[-3.15744,52.84947],[-3.13576,52.895],[-2.97243,52.9651],[-2.92401,52.93836],[-2.85897,52.94487],[-2.80549,52.89428],[-2.72221,52.92969],[-2.7251,52.98389],[-2.83133,52.99184],[-2.89131,53.09374],[-2.87469,53.12337],[-2.90649,53.10964],[-2.98598,53.15589],[-2.92022,53.17685],[-2.92329,53.19383],[-3.03675,53.25092],[-3.08228,53.25526],[-3.5082,53.54318]]]]}},{type:"Feature",properties:{wikidata:"Q26",nameEn:"Northern Ireland",aliases:["GB-NIR"],country:"GB",groups:["Q22890","Q3336843","154","150","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44"]},geometry:{type:"MultiPolygon",coordinates:[[[[-6.34755,55.49206],[-7.2471,55.06933],[-7.34464,55.04688],[-7.4033,55.00391],[-7.40004,54.94498],[-7.44404,54.9403],[-7.4473,54.87003],[-7.47626,54.83084],[-7.54508,54.79401],[-7.54671,54.74606],[-7.64449,54.75265],[-7.75041,54.7103],[-7.83352,54.73854],[-7.93293,54.66603],[-7.70315,54.62077],[-7.8596,54.53671],[-7.99812,54.54427],[-8.04538,54.48941],[-8.179,54.46763],[-8.04555,54.36292],[-7.87101,54.29299],[-7.8596,54.21779],[-7.81397,54.20159],[-7.69501,54.20731],[-7.55812,54.12239],[-7.4799,54.12239],[-7.44567,54.1539],[-7.32834,54.11475],[-7.30553,54.11869],[-7.34005,54.14698],[-7.29157,54.17191],[-7.28017,54.16714],[-7.29687,54.1354],[-7.29493,54.12013],[-7.26316,54.13863],[-7.25012,54.20063],[-7.14908,54.22732],[-7.19145,54.31296],[-7.02034,54.4212],[-6.87775,54.34682],[-6.85179,54.29176],[-6.81583,54.22791],[-6.74575,54.18788],[-6.70175,54.20218],[-6.6382,54.17071],[-6.66264,54.0666],[-6.62842,54.03503],[-6.47849,54.06947],[-6.36605,54.07234],[-6.36279,54.11248],[-6.32694,54.09337],[-6.29003,54.11278],[-6.26218,54.09785],[-5.83481,53.87749],[-4.69044,54.3629],[-6.34755,55.49206]]]]}},{type:"Feature",properties:{wikidata:"Q35",nameEn:"Denmark",country:"DK",groups:["EU","154","150","UN"],callingCodes:["45"]},geometry:{type:"MultiPolygon",coordinates:[[[[12.16597,56.60205],[10.40861,58.38489],[7.28637,57.35913],[8.02459,55.09613],[8.45719,55.06747],[8.55769,54.91837],[8.63979,54.91069],[8.76387,54.8948],[8.81178,54.90518],[8.92795,54.90452],[9.04629,54.87249],[9.14275,54.87421],[9.20571,54.85841],[9.24631,54.84726],[9.23445,54.83432],[9.2474,54.8112],[9.32771,54.80602],[9.33849,54.80233],[9.36496,54.81749],[9.38532,54.83968],[9.41213,54.84254],[9.43155,54.82586],[9.4659,54.83131],[9.58937,54.88785],[9.62734,54.88057],[9.61187,54.85548],[9.73563,54.8247],[9.89314,54.84171],[10.16755,54.73883],[10.31111,54.65968],[11.00303,54.63689],[11.90309,54.38543],[12.85844,54.82438],[13.93395,54.84044],[15.36991,54.73263],[15.79951,55.54655],[14.89259,55.5623],[14.28399,55.1553],[12.84405,55.13257],[12.60345,55.42675],[12.88472,55.63369],[12.6372,55.91371],[12.65312,56.04345],[12.07466,56.29488],[12.16597,56.60205]]]]}},{type:"Feature",properties:{wikidata:"Q55",nameEn:"Netherlands",country:"NL",groups:["EU","155","150","UN"],callingCodes:["31"]},geometry:{type:"MultiPolygon",coordinates:[[[[5.45168,54.20039],[2.56575,51.85301],[3.36263,51.37112],[3.38696,51.33436],[3.35847,51.31572],[3.38289,51.27331],[3.41704,51.25933],[3.43488,51.24135],[3.52698,51.2458],[3.51502,51.28697],[3.58939,51.30064],[3.78999,51.25766],[3.78783,51.2151],[3.90125,51.20371],[3.97889,51.22537],[4.01957,51.24504],[4.05165,51.24171],[4.16721,51.29348],[4.24024,51.35371],[4.21923,51.37443],[4.33265,51.37687],[4.34086,51.35738],[4.39292,51.35547],[4.43777,51.36989],[4.38064,51.41965],[4.39747,51.43316],[4.38122,51.44905],[4.47736,51.4778],[4.5388,51.48184],[4.54675,51.47265],[4.52846,51.45002],[4.53521,51.4243],[4.57489,51.4324],[4.65442,51.42352],[4.72935,51.48424],[4.74578,51.48937],[4.77321,51.50529],[4.78803,51.50284],[4.84139,51.4799],[4.82409,51.44736],[4.82946,51.4213],[4.78314,51.43319],[4.76577,51.43046],[4.77229,51.41337],[4.78941,51.41102],[4.84988,51.41502],[4.90016,51.41404],[4.92152,51.39487],[5.00393,51.44406],[5.0106,51.47167],[5.03281,51.48679],[5.04774,51.47022],[5.07891,51.4715],[5.10456,51.43163],[5.07102,51.39469],[5.13105,51.34791],[5.13377,51.31592],[5.16222,51.31035],[5.2002,51.32243],[5.24244,51.30495],[5.22542,51.26888],[5.23814,51.26064],[5.26461,51.26693],[5.29716,51.26104],[5.33886,51.26314],[5.347,51.27502],[5.41672,51.26248],[5.4407,51.28169],[5.46519,51.2849],[5.48476,51.30053],[5.515,51.29462],[5.5569,51.26544],[5.5603,51.22249],[5.65145,51.19788],[5.65528,51.18736],[5.70344,51.1829],[5.74617,51.18928],[5.77735,51.17845],[5.77697,51.1522],[5.82564,51.16753],[5.85508,51.14445],[5.80798,51.11661],[5.8109,51.10861],[5.83226,51.10585],[5.82921,51.09328],[5.79903,51.09371],[5.79835,51.05834],[5.77258,51.06196],[5.75961,51.03113],[5.77688,51.02483],[5.76242,50.99703],[5.71864,50.96092],[5.72875,50.95428],[5.74752,50.96202],[5.75927,50.95601],[5.74644,50.94723],[5.72545,50.92312],[5.72644,50.91167],[5.71626,50.90796],[5.69858,50.91046],[5.67886,50.88142],[5.64504,50.87107],[5.64009,50.84742],[5.65259,50.82309],[5.70118,50.80764],[5.68995,50.79641],[5.70107,50.7827],[5.68091,50.75804],[5.69469,50.75529],[5.72216,50.76398],[5.73904,50.75674],[5.74356,50.7691],[5.76533,50.78159],[5.77513,50.78308],[5.80673,50.7558],[5.84548,50.76542],[5.84888,50.75448],[5.88734,50.77092],[5.89129,50.75125],[5.89132,50.75124],[5.95942,50.7622],[5.97545,50.75441],[6.01976,50.75398],[6.02624,50.77453],[5.97497,50.79992],[5.98404,50.80988],[6.00462,50.80065],[6.02328,50.81694],[6.01921,50.84435],[6.05623,50.8572],[6.05702,50.85179],[6.07431,50.84674],[6.07693,50.86025],[6.08805,50.87223],[6.07486,50.89307],[6.09297,50.92066],[6.01615,50.93367],[6.02697,50.98303],[5.95282,50.98728],[5.90296,50.97356],[5.90493,51.00198],[5.87849,51.01969],[5.86735,51.05182],[5.9134,51.06736],[5.9541,51.03496],[5.98292,51.07469],[6.16706,51.15677],[6.17384,51.19589],[6.07889,51.17038],[6.07889,51.24432],[6.16977,51.33169],[6.22674,51.36135],[6.22641,51.39948],[6.20654,51.40049],[6.21724,51.48568],[6.18017,51.54096],[6.09055,51.60564],[6.11759,51.65609],[6.02767,51.6742],[6.04091,51.71821],[5.95003,51.7493],[5.98665,51.76944],[5.94568,51.82786],[5.99848,51.83195],[6.06705,51.86136],[6.10337,51.84829],[6.16902,51.84094],[6.11551,51.89769],[6.15349,51.90439],[6.21443,51.86801],[6.29872,51.86801],[6.30593,51.84998],[6.40704,51.82771],[6.38815,51.87257],[6.47179,51.85395],[6.50231,51.86313],[6.58556,51.89386],[6.68386,51.91861],[6.72319,51.89518],[6.82357,51.96711],[6.83035,51.9905],[6.68128,52.05052],[6.76117,52.11895],[6.83984,52.11728],[6.97189,52.20329],[6.9897,52.2271],[7.03729,52.22695],[7.06365,52.23789],[7.02703,52.27941],[7.07044,52.37805],[7.03417,52.40237],[6.99041,52.47235],[6.94293,52.43597],[6.69507,52.488],[6.71641,52.62905],[6.77307,52.65375],[7.04557,52.63318],[7.07253,52.81083],[7.21694,53.00742],[7.17898,53.13817],[7.22681,53.18165],[7.21679,53.20058],[7.19052,53.31866],[7.00198,53.32672],[6.91025,53.44221],[5.45168,54.20039]],[[4.93295,51.44945],[4.95244,51.45207],[4.9524,51.45014],[4.93909,51.44632],[4.93295,51.44945]],[[4.91493,51.4353],[4.91935,51.43634],[4.92227,51.44252],[4.91811,51.44621],[4.92287,51.44741],[4.92811,51.4437],[4.92566,51.44273],[4.92815,51.43856],[4.92879,51.44161],[4.93544,51.44634],[4.94025,51.44193],[4.93416,51.44185],[4.93471,51.43861],[4.94265,51.44003],[4.93986,51.43064],[4.92952,51.42984],[4.92652,51.43329],[4.91493,51.4353]]]]}},{type:"Feature",properties:{wikidata:"Q782",nameEn:"Hawaii",aliases:["US-HI"],country:"US",groups:["Q35657","061","009","UN"],roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[-177.8563,29.18961],[-179.49839,27.86265],[-151.6784,9.55515],[-154.05867,45.51124],[-177.5224,27.7635],[-177.8563,29.18961]]]]}},{type:"Feature",properties:{wikidata:"Q797",nameEn:"Alaska",aliases:["US-AK"],country:"US",groups:["Q35657","021","003","019","UN"],roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[169.34848,52.47228],[180,51.0171],[179.84401,55.10087],[169.34848,52.47228]]],[[[-168.95635,65.98512],[-169.03888,65.48473],[-172.76104,63.77445],[-179.55295,57.62081],[-179.55295,50.81807],[-133.92876,54.62289],[-130.61931,54.70835],[-130.64499,54.76912],[-130.44184,54.85377],[-130.27203,54.97174],[-130.18765,55.07744],[-130.08035,55.21556],[-129.97513,55.28029],[-130.15373,55.74895],[-130.00857,55.91344],[-130.00093,56.00325],[-130.10173,56.12178],[-130.33965,56.10849],[-130.77769,56.36185],[-131.8271,56.62247],[-133.38523,58.42773],[-133.84645,58.73543],[-134.27175,58.8634],[-134.48059,59.13231],[-134.55699,59.1297],[-134.7047,59.2458],[-135.00267,59.28745],[-135.03069,59.56208],[-135.48007,59.79937],[-136.31566,59.59083],[-136.22381,59.55526],[-136.33727,59.44466],[-136.47323,59.46617],[-136.52365,59.16752],[-136.82619,59.16198],[-137.4925,58.89415],[-137.60623,59.24465],[-138.62145,59.76431],[-138.71149,59.90728],[-139.05365,59.99655],[-139.20603,60.08896],[-139.05831,60.35205],[-139.68991,60.33693],[-139.98024,60.18027],[-140.45648,60.30919],[-140.5227,60.22077],[-141.00116,60.30648],[-140.97446,84.39275],[-168.25765,71.99091],[-168.95635,65.98512]]]]}},{type:"Feature",properties:{wikidata:"Q3492",nameEn:"Sumatra",aliases:["ID-SM"],country:"ID",groups:["035","142","UN"],driveSide:"left",callingCodes:["62"]},geometry:{type:"MultiPolygon",coordinates:[[[[109.82788,2.86812],[110.90339,7.52694],[105.01437,3.24936],[104.56723,1.44271],[104.34728,1.33529],[104.12282,1.27714],[104.03085,1.26954],[103.74084,1.12902],[103.66049,1.18825],[103.56591,1.19719],[103.03657,1.30383],[96.11174,6.69841],[74.28481,-3.17525],[102.92489,-8.17146],[106.32259,-5.50116],[106.38511,-5.16715],[109.17017,-4.07401],[109.3962,-2.07276],[108.50935,-2.01066],[107.94791,1.06924],[109.82788,2.86812]]]]}},{type:"Feature",properties:{wikidata:"Q3757",nameEn:"Java",aliases:["ID-JW"],country:"ID",groups:["035","142","UN"],driveSide:"left",callingCodes:["62"]},geometry:{type:"MultiPolygon",coordinates:[[[[109.17017,-4.07401],[106.38511,-5.16715],[106.32259,-5.50116],[102.92489,-8.17146],[116.22542,-10.49172],[114.39575,-8.2889],[114.42235,-8.09762],[114.92859,-7.49253],[116.33992,-7.56171],[116.58433,-5.30385],[109.17017,-4.07401]]]]}},{type:"Feature",properties:{wikidata:"Q3795",nameEn:"Kalimantan",aliases:["ID-KA"],country:"ID",groups:["Q36117","035","142","UN"],driveSide:"left",callingCodes:["62"]},geometry:{type:"MultiPolygon",coordinates:[[[[120.02464,2.83703],[118.06469,4.16638],[117.67641,4.16535],[117.47313,4.18857],[117.25801,4.35108],[115.90217,4.37708],[115.58276,3.93499],[115.53713,3.14776],[115.11343,2.82879],[115.1721,2.49671],[114.80706,2.21665],[114.80706,1.92351],[114.57892,1.5],[114.03788,1.44787],[113.64677,1.23933],[113.01448,1.42832],[113.021,1.57819],[112.48648,1.56516],[112.2127,1.44135],[112.15679,1.17004],[111.94553,1.12016],[111.82846,.99349],[111.55434,.97864],[111.22979,1.08326],[110.62374,.873],[110.49182,.88088],[110.35354,.98869],[109.66397,1.60425],[109.66397,1.79972],[109.57923,1.80624],[109.53794,1.91771],[109.62558,1.99182],[109.82788,2.86812],[107.94791,1.06924],[108.50935,-2.01066],[109.3962,-2.07276],[109.17017,-4.07401],[116.58433,-5.30385],[120.02464,2.83703]]]]}},{type:"Feature",properties:{wikidata:"Q3803",nameEn:"Lesser Sunda Islands",aliases:["ID-NU"],country:"ID",groups:["035","142","UN"],driveSide:"left",callingCodes:["62"]},geometry:{type:"MultiPolygon",coordinates:[[[[116.96967,-8.01483],[114.92859,-7.49253],[114.42235,-8.09762],[114.39575,-8.2889],[116.22542,-10.49172],[122.14954,-11.52517],[125.68138,-9.85176],[125.09025,-9.46406],[124.97892,-9.19281],[125.04044,-9.17093],[125.09434,-9.19669],[125.18907,-9.16434],[125.18632,-9.03142],[125.11764,-8.96359],[124.97742,-9.08128],[124.94011,-8.85617],[124.46701,-9.13002],[124.45971,-9.30263],[124.38554,-9.3582],[124.35258,-9.43002],[124.3535,-9.48493],[124.28115,-9.50453],[124.28115,-9.42189],[124.21247,-9.36904],[124.14517,-9.42324],[124.10539,-9.41206],[124.04286,-9.34243],[124.04628,-9.22671],[124.33472,-9.11416],[124.92337,-8.75859],[125.87688,-7.49892],[116.96967,-8.01483]]]]}},{type:"Feature",properties:{wikidata:"Q3812",nameEn:"Sulawesi",aliases:["ID-SL"],country:"ID",groups:["035","142","UN"],driveSide:"left",callingCodes:["62"]},geometry:{type:"MultiPolygon",coordinates:[[[[128.34321,3.90322],[126.69413,6.02692],[119.56457,.90759],[116.58433,-5.30385],[116.33992,-7.56171],[116.96967,-8.01483],[125.87688,-7.49892],[123.78965,-.86805],[128.34321,3.90322]]]]}},{type:"Feature",properties:{wikidata:"Q3827",nameEn:"Maluku Islands",aliases:["ID-ML"],country:"ID",groups:["035","142","UN"],driveSide:"left",callingCodes:["62"]},geometry:{type:"MultiPolygon",coordinates:[[[[129.63187,2.21409],[128.34321,3.90322],[123.78965,-.86805],[125.87688,-7.49892],[125.58506,-7.95311],[125.87691,-8.31789],[127.42116,-8.22471],[127.55165,-9.05052],[135.49042,-9.2276],[135.35517,-5.01442],[132.8312,-4.70282],[130.8468,-2.61103],[128.40647,-2.30349],[129.71519,-.24692],[129.63187,2.21409]]]]}},{type:"Feature",properties:{wikidata:"Q3845",nameEn:"Western New Guinea",aliases:["ID-PP"],country:"ID",groups:["035","142","UN"],driveSide:"left",callingCodes:["62"]},geometry:{type:"MultiPolygon",coordinates:[[[[135.49042,-9.2276],[141.01842,-9.35091],[141.01763,-6.90181],[140.90448,-6.85033],[140.85295,-6.72996],[140.99813,-6.3233],[141.02352,.08993],[129.63187,2.21409],[129.71519,-.24692],[128.40647,-2.30349],[130.8468,-2.61103],[132.8312,-4.70282],[135.35517,-5.01442],[135.49042,-9.2276]]]]}},{type:"Feature",properties:{wikidata:"Q5765",nameEn:"Balearic Islands",aliases:["ES-IB"],country:"ES",groups:["EU","039","150","UN"],callingCodes:["34 971"]},geometry:{type:"MultiPolygon",coordinates:[[[[-2.27707,35.35051],[5.10072,39.89531],[3.75438,42.33445],[-2.27707,35.35051]]]]}},{type:"Feature",properties:{wikidata:"Q5823",nameEn:"Ceuta",aliases:["ES-CE"],country:"ES",groups:["EA","EU","015","002","UN"],level:"subterritory",callingCodes:["34"]},geometry:{type:"MultiPolygon",coordinates:[[[[-5.38491,35.92591],[-5.37338,35.88417],[-5.35844,35.87375],[-5.34379,35.8711],[-5.21179,35.90091],[-5.38491,35.92591]]]]}},{type:"Feature",properties:{wikidata:"Q5831",nameEn:"Melilla",aliases:["ES-ML"],country:"ES",groups:["EA","EU","015","002","UN"],level:"subterritory",callingCodes:["34"]},geometry:{type:"MultiPolygon",coordinates:[[[[-2.91909,35.33927],[-2.96038,35.31609],[-2.96648,35.30475],[-2.96978,35.29459],[-2.97035,35.28852],[-2.96507,35.28801],[-2.96826,35.28296],[-2.96516,35.27967],[-2.95431,35.2728],[-2.95065,35.26576],[-2.93893,35.26737],[-2.92272,35.27509],[-2.91909,35.33927]]]]}},{type:"Feature",properties:{wikidata:"Q7835",nameEn:"Crimea",country:"RU",groups:["151","150","UN"],level:"subterritory",callingCodes:["7"]},geometry:{type:"MultiPolygon",coordinates:[[[[33.5,44],[36.4883,45.0488],[36.475,45.2411],[36.5049,45.3136],[36.6545,45.3417],[36.6645,45.4514],[35.0498,45.7683],[34.9601,45.7563],[34.7991,45.8101],[34.8015,45.9005],[34.7548,45.907],[34.6668,45.9714],[34.6086,45.9935],[34.5589,45.9935],[34.5201,45.951],[34.4873,45.9427],[34.4415,45.9599],[34.4122,46.0025],[34.3391,46.0611],[34.2511,46.0532],[34.181,46.068],[34.1293,46.1049],[34.0731,46.1177],[34.0527,46.1084],[33.9155,46.1594],[33.8523,46.1986],[33.7972,46.2048],[33.7405,46.1855],[33.646,46.2303],[33.6152,46.2261],[33.6385,46.1415],[33.6147,46.1356],[33.5732,46.1032],[33.5909,46.0601],[33.5597,46.0307],[31.5,45.5],[33.5,44]]]]}},{type:"Feature",properties:{wikidata:"Q12837",nameEn:"Iberia",level:"sharedLandform"},geometry:null},{type:"Feature",properties:{wikidata:"Q14056",nameEn:"Jan Mayen",aliases:["NO-22"],country:"NO",groups:["SJ","154","150","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[-9.18243,72.23144],[-10.71459,70.09565],[-5.93364,70.76368],[-9.18243,72.23144]]]]}},{type:"Feature",properties:{wikidata:"Q19188",nameEn:"Mainland China",country:"CN",groups:["030","142","UN"],callingCodes:["86"]},geometry:{type:"MultiPolygon",coordinates:[[[[125.6131,53.07229],[125.17522,53.20225],[124.46078,53.21881],[123.86158,53.49391],[123.26989,53.54843],[122.85966,53.47395],[122.35063,53.49565],[121.39213,53.31888],[120.85633,53.28499],[120.0451,52.7359],[120.04049,52.58773],[120.46454,52.63811],[120.71673,52.54099],[120.61346,52.32447],[120.77337,52.20805],[120.65907,51.93544],[120.10963,51.671],[119.13553,50.37412],[119.38598,50.35162],[119.27996,50.13348],[119.11003,50.00276],[118.61623,49.93809],[117.82343,49.52696],[117.48208,49.62324],[117.27597,49.62544],[116.71193,49.83813],[116.03781,48.87014],[116.06565,48.81716],[115.78876,48.51781],[115.811,48.25699],[115.52082,48.15367],[115.57128,47.91988],[115.94296,47.67741],[116.21879,47.88505],[116.4465,47.83662],[116.67405,47.89039],[116.9723,47.87285],[117.37875,47.63627],[117.50181,47.77216],[117.80196,48.01661],[118.03676,48.00982],[118.11009,48.04],[118.22677,48.03853],[118.29654,48.00246],[118.55766,47.99277],[118.7564,47.76947],[119.12343,47.66458],[119.13995,47.53997],[119.35892,47.48104],[119.31964,47.42617],[119.54918,47.29505],[119.56019,47.24874],[119.62403,47.24575],[119.71209,47.19192],[119.85518,46.92196],[119.91242,46.90091],[119.89261,46.66423],[119.80455,46.67631],[119.77373,46.62947],[119.68127,46.59015],[119.65265,46.62342],[119.42827,46.63783],[119.32827,46.61433],[119.24978,46.64761],[119.10448,46.65516],[119.00541,46.74273],[118.92616,46.72765],[118.89974,46.77139],[118.8337,46.77742],[118.78747,46.68689],[118.30534,46.73519],[117.69554,46.50991],[117.60748,46.59771],[117.41782,46.57862],[117.36609,46.36335],[116.83166,46.38637],[116.75551,46.33083],[116.58612,46.30211],[116.26678,45.96479],[116.24012,45.8778],[116.27366,45.78637],[116.16989,45.68603],[115.60329,45.44717],[114.94546,45.37377],[114.74612,45.43585],[114.54801,45.38337],[114.5166,45.27189],[113.70918,44.72891],[112.74662,44.86297],[112.4164,45.06858],[111.98695,45.09074],[111.76275,44.98032],[111.40498,44.3461],[111.96289,43.81596],[111.93776,43.68709],[111.79758,43.6637],[111.59087,43.51207],[111.0149,43.3289],[110.4327,42.78293],[110.08401,42.6411],[109.89402,42.63111],[109.452,42.44842],[109.00679,42.45302],[108.84489,42.40246],[107.57258,42.40898],[107.49681,42.46221],[107.29755,42.41395],[107.24774,42.36107],[106.76517,42.28741],[105.0123,41.63188],[104.51667,41.66113],[104.52258,41.8706],[103.92804,41.78246],[102.72403,42.14675],[102.07645,42.22519],[101.80515,42.50074],[100.84979,42.67087],[100.33297,42.68231],[99.50671,42.56535],[97.1777,42.7964],[96.37926,42.72055],[96.35658,42.90363],[95.89543,43.2528],[95.52594,43.99353],[95.32891,44.02407],[95.39772,44.2805],[95.01191,44.25274],[94.71959,44.35284],[94.10003,44.71016],[93.51161,44.95964],[91.64048,45.07408],[90.89169,45.19667],[90.65114,45.49314],[90.70907,45.73437],[91.03026,46.04194],[90.99672,46.14207],[90.89639,46.30711],[91.07696,46.57315],[91.0147,46.58171],[91.03649,46.72916],[90.84035,46.99525],[90.76108,46.99399],[90.48542,47.30438],[90.48854,47.41826],[90.33598,47.68303],[90.10871,47.7375],[90.06512,47.88177],[89.76624,47.82745],[89.55453,48.0423],[89.0711,47.98528],[88.93186,48.10263],[88.8011,48.11302],[88.58316,48.21893],[88.58939,48.34531],[87.96361,48.58478],[88.0788,48.71436],[87.73822,48.89582],[87.88171,48.95853],[87.81333,49.17354],[87.48983,49.13794],[87.478,49.07403],[87.28386,49.11626],[86.87238,49.12432],[86.73568,48.99918],[86.75343,48.70331],[86.38069,48.46064],[85.73581,48.3939],[85.5169,48.05493],[85.61067,47.49753],[85.69696,47.2898],[85.54294,47.06171],[85.22443,47.04816],[84.93995,46.87399],[84.73077,47.01394],[83.92184,46.98912],[83.04622,47.19053],[82.21792,45.56619],[82.58474,45.40027],[82.51374,45.1755],[81.73278,45.3504],[80.11169,45.03352],[79.8987,44.89957],[80.38384,44.63073],[80.40229,44.23319],[80.40031,44.10986],[80.75156,43.44948],[80.69718,43.32589],[80.77771,43.30065],[80.78817,43.14235],[80.62913,43.141],[80.3735,43.01557],[80.58999,42.9011],[80.38169,42.83142],[80.26886,42.8366],[80.16892,42.61137],[80.26841,42.23797],[80.17807,42.21166],[80.17842,42.03211],[79.92977,42.04113],[78.3732,41.39603],[78.15757,41.38565],[78.12873,41.23091],[77.81287,41.14307],[77.76206,41.01574],[77.52723,41.00227],[77.3693,41.0375],[77.28004,41.0033],[76.99302,41.0696],[76.75681,40.95354],[76.5261,40.46114],[76.33659,40.3482],[75.96168,40.38064],[75.91361,40.2948],[75.69663,40.28642],[75.5854,40.66874],[75.22834,40.45382],[75.08243,40.43945],[74.82013,40.52197],[74.78168,40.44886],[74.85996,40.32857],[74.69875,40.34668],[74.35063,40.09742],[74.25533,40.13191],[73.97049,40.04378],[73.83006,39.76136],[73.9051,39.75073],[73.92354,39.69565],[73.94683,39.60733],[73.87018,39.47879],[73.59831,39.46425],[73.59241,39.40843],[73.5004,39.38402],[73.55396,39.3543],[73.54572,39.27567],[73.60638,39.24534],[73.75823,39.023],[73.81728,39.04007],[73.82964,38.91517],[73.7445,38.93867],[73.7033,38.84782],[73.80656,38.66449],[73.79806,38.61106],[73.97933,38.52945],[74.17022,38.65504],[74.51217,38.47034],[74.69619,38.42947],[74.69894,38.22155],[74.80331,38.19889],[74.82665,38.07359],[74.9063,38.03033],[74.92416,37.83428],[75.00935,37.77486],[74.8912,37.67576],[74.94338,37.55501],[75.06011,37.52779],[75.15899,37.41443],[75.09719,37.37297],[75.12328,37.31839],[74.88887,37.23275],[74.80605,37.21565],[74.49981,37.24518],[74.56453,37.03023],[75.13839,37.02622],[75.40481,36.95382],[75.45562,36.71971],[75.72737,36.7529],[75.92391,36.56986],[76.0324,36.41198],[76.00906,36.17511],[75.93028,36.13136],[76.15325,35.9264],[76.14913,35.82848],[76.33453,35.84296],[76.50961,35.8908],[76.77323,35.66062],[76.84539,35.67356],[76.96624,35.5932],[77.44277,35.46132],[77.70232,35.46244],[77.80532,35.52058],[78.11664,35.48022],[78.03466,35.3785],[78.00033,35.23954],[78.22692,34.88771],[78.18435,34.7998],[78.27781,34.61484],[78.54964,34.57283],[78.56475,34.50835],[78.74465,34.45174],[79.05364,34.32482],[78.99802,34.3027],[78.91769,34.15452],[78.66225,34.08858],[78.65657,34.03195],[78.73367,34.01121],[78.77349,33.73871],[78.67599,33.66445],[78.73636,33.56521],[79.15252,33.17156],[79.14016,33.02545],[79.46562,32.69668],[79.26768,32.53277],[79.13174,32.47766],[79.0979,32.38051],[78.99322,32.37948],[78.96713,32.33655],[78.7831,32.46873],[78.73916,32.69438],[78.38897,32.53938],[78.4645,32.45367],[78.49609,32.2762],[78.68754,32.10256],[78.74404,32.00384],[78.78036,31.99478],[78.69933,31.78723],[78.84516,31.60631],[78.71032,31.50197],[78.77898,31.31209],[78.89344,31.30481],[79.01931,31.42817],[79.14016,31.43403],[79.30694,31.17357],[79.59884,30.93943],[79.93255,30.88288],[80.20721,30.58541],[80.54504,30.44936],[80.83343,30.32023],[81.03953,30.20059],[81.12842,30.01395],[81.24362,30.0126],[81.29032,30.08806],[81.2623,30.14596],[81.33355,30.15303],[81.39928,30.21862],[81.41018,30.42153],[81.5459,30.37688],[81.62033,30.44703],[81.99082,30.33423],[82.10135,30.35439],[82.10757,30.23745],[82.19475,30.16884],[82.16984,30.0692],[82.38622,30.02608],[82.5341,29.9735],[82.73024,29.81695],[83.07116,29.61957],[83.28131,29.56813],[83.44787,29.30513],[83.63156,29.16249],[83.82303,29.30513],[83.97559,29.33091],[84.18107,29.23451],[84.24801,29.02783],[84.2231,28.89571],[84.47528,28.74023],[84.62317,28.73887],[84.85511,28.58041],[85.06059,28.68562],[85.19135,28.62825],[85.18668,28.54076],[85.10729,28.34092],[85.38127,28.28336],[85.4233,28.32996],[85.59765,28.30529],[85.60854,28.25045],[85.69105,28.38475],[85.71907,28.38064],[85.74864,28.23126],[85.84672,28.18187],[85.90743,28.05144],[85.97813,27.99023],[85.94946,27.9401],[86.06309,27.90021],[86.12069,27.93047],[86.08333,28.02121],[86.088,28.09264],[86.18607,28.17364],[86.22966,27.9786],[86.42736,27.91122],[86.51609,27.96623],[86.56265,28.09569],[86.74181,28.10638],[86.75582,28.04182],[87.03757,27.94835],[87.11696,27.84104],[87.56996,27.84517],[87.72718,27.80938],[87.82681,27.95248],[88.13378,27.88015],[88.1278,27.95417],[88.25332,27.9478],[88.54858,28.06057],[88.63235,28.12356],[88.83559,28.01936],[88.88091,27.85192],[88.77517,27.45415],[88.82981,27.38814],[88.91901,27.32483],[88.93678,27.33777],[88.96947,27.30319],[89.00216,27.32532],[88.95355,27.4106],[88.97213,27.51671],[89.0582,27.60985],[89.12825,27.62502],[89.59525,28.16433],[89.79762,28.23979],[90.13387,28.19178],[90.58842,28.02838],[90.69894,28.07784],[91.20019,27.98715],[91.25779,28.07509],[91.46327,28.0064],[91.48973,27.93903],[91.5629,27.84823],[91.6469,27.76358],[91.84722,27.76325],[91.87057,27.7195],[92.27432,27.89077],[92.32101,27.79363],[92.42538,27.80092],[92.7275,27.98662],[92.73025,28.05814],[92.65472,28.07632],[92.67486,28.15018],[92.93075,28.25671],[93.14635,28.37035],[93.18069,28.50319],[93.44621,28.67189],[93.72797,28.68821],[94.35897,29.01965],[94.2752,29.11687],[94.69318,29.31739],[94.81353,29.17804],[95.0978,29.14446],[95.11291,29.09527],[95.2214,29.10727],[95.26122,29.07727],[95.3038,29.13847],[95.41091,29.13007],[95.50842,29.13487],[95.72086,29.20797],[95.75149,29.32063],[95.84899,29.31464],[96.05361,29.38167],[96.31316,29.18643],[96.18682,29.11087],[96.20467,29.02325],[96.3626,29.10607],[96.61391,28.72742],[96.40929,28.51526],[96.48895,28.42955],[96.6455,28.61657],[96.85561,28.4875],[96.88445,28.39452],[96.98882,28.32564],[97.1289,28.3619],[97.34547,28.21385],[97.41729,28.29783],[97.47085,28.2688],[97.50518,28.49716],[97.56835,28.55628],[97.70705,28.5056],[97.79632,28.33168],[97.90069,28.3776],[98.15337,28.12114],[98.13964,27.9478],[98.32641,27.51385],[98.42529,27.55404],[98.43353,27.67086],[98.69582,27.56499],[98.7333,26.85615],[98.77547,26.61994],[98.72741,26.36183],[98.67797,26.24487],[98.7329,26.17218],[98.66884,26.09165],[98.63128,26.15492],[98.57085,26.11547],[98.60763,26.01512],[98.70818,25.86241],[98.63128,25.79937],[98.54064,25.85129],[98.40606,25.61129],[98.31268,25.55307],[98.25774,25.6051],[98.16848,25.62739],[98.18084,25.56298],[98.12591,25.50722],[98.14925,25.41547],[97.92541,25.20815],[97.83614,25.2715],[97.77023,25.11492],[97.72216,25.08508],[97.72903,24.91332],[97.79949,24.85655],[97.76481,24.8289],[97.73127,24.83015],[97.70181,24.84557],[97.64354,24.79171],[97.56648,24.76475],[97.56383,24.75535],[97.5542,24.74943],[97.54675,24.74202],[97.56525,24.72838],[97.56286,24.54535],[97.52757,24.43748],[97.60029,24.4401],[97.66998,24.45288],[97.7098,24.35658],[97.65624,24.33781],[97.66723,24.30027],[97.71941,24.29652],[97.76799,24.26365],[97.72998,24.2302],[97.72799,24.18883],[97.75305,24.16902],[97.72903,24.12606],[97.62363,24.00506],[97.5247,23.94032],[97.64667,23.84574],[97.72302,23.89288],[97.79456,23.94836],[97.79416,23.95663],[97.84328,23.97603],[97.86545,23.97723],[97.88811,23.97446],[97.8955,23.97758],[97.89676,23.97931],[97.89683,23.98389],[97.88814,23.98605],[97.88414,23.99405],[97.88616,24.00463],[97.90998,24.02094],[97.93951,24.01953],[97.98691,24.03897],[97.99583,24.04932],[98.04709,24.07616],[98.05302,24.07408],[98.05671,24.07961],[98.0607,24.07812],[98.06703,24.08028],[98.07806,24.07988],[98.20666,24.11406],[98.54476,24.13119],[98.59256,24.08371],[98.85319,24.13042],[98.87998,24.15624],[98.89632,24.10612],[98.67797,23.9644],[98.68209,23.80492],[98.79607,23.77947],[98.82933,23.72921],[98.81775,23.694],[98.88396,23.59555],[98.80294,23.5345],[98.82877,23.47908],[98.87683,23.48995],[98.92104,23.36946],[98.87573,23.33038],[98.93958,23.31414],[98.92515,23.29535],[98.88597,23.18656],[99.05975,23.16382],[99.04601,23.12215],[99.25741,23.09025],[99.34127,23.13099],[99.52214,23.08218],[99.54218,22.90014],[99.43537,22.94086],[99.45654,22.85726],[99.31243,22.73893],[99.38247,22.57544],[99.37972,22.50188],[99.28771,22.4105],[99.17318,22.18025],[99.19176,22.16983],[99.1552,22.15874],[99.33166,22.09656],[99.47585,22.13345],[99.85351,22.04183],[99.96612,22.05965],[99.99084,21.97053],[99.94003,21.82782],[99.98654,21.71064],[100.04956,21.66843],[100.12679,21.70539],[100.17486,21.65306],[100.10757,21.59945],[100.12542,21.50365],[100.1625,21.48704],[100.18447,21.51898],[100.25863,21.47043],[100.35201,21.53176],[100.42892,21.54325],[100.4811,21.46148],[100.57861,21.45637],[100.72143,21.51898],[100.87265,21.67396],[101.11744,21.77659],[101.15156,21.56129],[101.2124,21.56422],[101.19349,21.41959],[101.26912,21.36482],[101.2229,21.23271],[101.29326,21.17254],[101.54563,21.25668],[101.6068,21.23329],[101.59491,21.18621],[101.60886,21.17947],[101.66977,21.20004],[101.70548,21.14911],[101.7622,21.14813],[101.79266,21.19025],[101.76745,21.21571],[101.83887,21.20983],[101.84412,21.25291],[101.74014,21.30967],[101.74224,21.48276],[101.7727,21.51794],[101.7475,21.5873],[101.80001,21.57461],[101.83257,21.61562],[101.74555,21.72852],[101.7791,21.83019],[101.62566,21.96574],[101.57525,22.13026],[101.60675,22.13513],[101.53638,22.24794],[101.56789,22.28876],[101.61306,22.27515],[101.68973,22.46843],[101.7685,22.50337],[101.86828,22.38397],[101.90714,22.38688],[101.91344,22.44417],[101.98487,22.42766],[102.03633,22.46164],[102.1245,22.43372],[102.14099,22.40092],[102.16621,22.43336],[102.26428,22.41321],[102.25339,22.4607],[102.41061,22.64184],[102.38415,22.67919],[102.42618,22.69212],[102.46665,22.77108],[102.51802,22.77969],[102.57095,22.7036],[102.60675,22.73376],[102.8636,22.60735],[102.9321,22.48659],[103.0722,22.44775],[103.07843,22.50097],[103.17961,22.55705],[103.15782,22.59873],[103.18895,22.64471],[103.28079,22.68063],[103.32282,22.8127],[103.43179,22.75816],[103.43646,22.70648],[103.52675,22.59155],[103.57812,22.65764],[103.56255,22.69499],[103.64506,22.79979],[103.87904,22.56683],[103.93286,22.52703],[103.94513,22.52553],[103.95191,22.5134],[103.96352,22.50584],[103.96783,22.51173],[103.97384,22.50634],[103.99247,22.51958],[104.01088,22.51823],[104.03734,22.72945],[104.11384,22.80363],[104.27084,22.8457],[104.25683,22.76534],[104.35593,22.69353],[104.47225,22.75813],[104.58122,22.85571],[104.60457,22.81841],[104.65283,22.83419],[104.72755,22.81984],[104.77114,22.90017],[104.84942,22.93631],[104.86765,22.95178],[104.8334,23.01484],[104.79478,23.12934],[104.87382,23.12854],[104.87992,23.17141],[104.91435,23.18666],[104.9486,23.17235],[104.96532,23.20463],[104.98712,23.19176],[105.07002,23.26248],[105.11672,23.25247],[105.17276,23.28679],[105.22569,23.27249],[105.32376,23.39684],[105.40782,23.28107],[105.42805,23.30824],[105.49966,23.20669],[105.56037,23.16806],[105.57594,23.075],[105.72382,23.06641],[105.8726,22.92756],[105.90119,22.94168],[105.99568,22.94178],[106.00179,22.99049],[106.19705,22.98475],[106.27022,22.87722],[106.34961,22.86718],[106.49749,22.91164],[106.51306,22.94891],[106.55976,22.92311],[106.60179,22.92884],[106.6516,22.86862],[106.6734,22.89587],[106.71387,22.88296],[106.71128,22.85982],[106.78422,22.81532],[106.81271,22.8226],[106.83685,22.8098],[106.82404,22.7881],[106.76293,22.73491],[106.72321,22.63606],[106.71698,22.58432],[106.65316,22.5757],[106.61269,22.60301],[106.58395,22.474],[106.55665,22.46498],[106.57221,22.37],[106.55976,22.34841],[106.6516,22.33977],[106.69986,22.22309],[106.67495,22.1885],[106.6983,22.15102],[106.70142,22.02409],[106.68274,21.99811],[106.69276,21.96013],[106.72551,21.97923],[106.74345,22.00965],[106.81038,21.97934],[106.9178,21.97357],[106.92714,21.93459],[106.97228,21.92592],[106.99252,21.95191],[107.05634,21.92303],[107.06101,21.88982],[107.00964,21.85948],[107.02615,21.81981],[107.10771,21.79879],[107.20734,21.71493],[107.24625,21.7077],[107.29296,21.74674],[107.35834,21.6672],[107.35989,21.60063],[107.38636,21.59774],[107.41593,21.64839],[107.47197,21.6672],[107.49532,21.62958],[107.49065,21.59774],[107.54047,21.5934],[107.56537,21.61945],[107.66967,21.60787],[107.80355,21.66141],[107.86114,21.65128],[107.90006,21.5905],[107.92652,21.58906],[107.95232,21.5388],[107.96774,21.53601],[107.97074,21.54072],[107.97383,21.53961],[107.97932,21.54503],[108.02926,21.54997],[108.0569,21.53604],[108.10003,21.47338],[108.00365,17.98159],[111.60491,13.57105],[118.41371,24.06775],[118.11703,24.39734],[118.28244,24.51231],[118.35291,24.51645],[118.42453,24.54644],[118.6333,24.46259],[119.42295,25.0886],[119.98511,25.37624],[119.78816,26.2348],[120.0693,26.3959],[120.5128,26.536],[121.03532,26.8787],[123.5458,31.01942],[122.29378,31.76513],[122.80525,33.30571],[123.85601,37.49093],[123.90497,38.79949],[124.17532,39.8232],[124.23201,39.9248],[124.35029,39.95639],[124.37089,40.03004],[124.3322,40.05573],[124.38556,40.11047],[124.40719,40.13655],[124.86913,40.45387],[125.71172,40.85223],[125.76869,40.87908],[126.00335,40.92835],[126.242,41.15454],[126.53189,41.35206],[126.60631,41.65565],[126.90729,41.79955],[127.17841,41.59714],[127.29712,41.49473],[127.92943,41.44291],[128.02633,41.42103],[128.03311,41.39232],[128.12967,41.37931],[128.18546,41.41279],[128.20061,41.40895],[128.30716,41.60322],[128.15119,41.74568],[128.04487,42.01769],[128.94007,42.03537],[128.96068,42.06657],[129.15178,42.17224],[129.22285,42.26491],[129.22423,42.3553],[129.28541,42.41574],[129.42882,42.44702],[129.54701,42.37254],[129.60482,42.44461],[129.72541,42.43739],[129.75294,42.59409],[129.77183,42.69435],[129.7835,42.76521],[129.80719,42.79218],[129.83277,42.86746],[129.85261,42.96494],[129.8865,43.00395],[129.95082,43.01051],[129.96409,42.97306],[130.12957,42.98361],[130.09764,42.91425],[130.26095,42.9027],[130.23068,42.80125],[130.2385,42.71127],[130.41826,42.6011],[130.44361,42.54849],[130.50123,42.61636],[130.55143,42.52158],[130.62107,42.58413],[130.56576,42.68925],[130.40213,42.70788],[130.44361,42.76205],[130.66524,42.84753],[131.02438,42.86518],[131.02668,42.91246],[131.135,42.94114],[131.10274,43.04734],[131.20414,43.13654],[131.19031,43.21385],[131.30324,43.39498],[131.29402,43.46695],[131.19492,43.53047],[131.21105,43.82383],[131.26176,43.94011],[131.23583,43.96085],[131.25484,44.03131],[131.30365,44.04262],[131.1108,44.70266],[130.95639,44.85154],[131.48415,44.99513],[131.68466,45.12374],[131.66852,45.2196],[131.76532,45.22609],[131.86903,45.33636],[131.99417,45.2567],[132.83978,45.05916],[132.96373,45.0212],[133.12293,45.1332],[133.09279,45.25693],[133.19419,45.51913],[133.41083,45.57723],[133.48457,45.86203],[133.60442,45.90053],[133.67569,45.9759],[133.72695,46.05576],[133.68047,46.14697],[133.88097,46.25066],[133.91496,46.4274],[133.84104,46.46681],[134.03538,46.75668],[134.20016,47.33458],[134.50898,47.4812],[134.7671,47.72051],[134.55508,47.98651],[134.67098,48.1564],[134.75328,48.36763],[134.49516,48.42884],[132.66989,47.96491],[132.57309,47.71741],[131.90448,47.68011],[131.2635,47.73325],[131.09871,47.6852],[130.95985,47.6957],[130.90915,47.90623],[130.65103,48.10052],[130.84462,48.30942],[130.52147,48.61745],[130.66946,48.88251],[130.43232,48.90844],[130.2355,48.86741],[129.85416,49.11067],[129.67598,49.29596],[129.50685,49.42398],[129.40398,49.44194],[129.35317,49.3481],[129.23232,49.40353],[129.11153,49.36813],[128.72896,49.58676],[127.83476,49.5748],[127.53516,49.84306],[127.49299,50.01251],[127.60515,50.23503],[127.37384,50.28393],[127.36009,50.43787],[127.28765,50.46585],[127.36335,50.58306],[127.28165,50.72075],[127.14586,50.91152],[126.93135,51.0841],[126.90369,51.3238],[126.68349,51.70607],[126.44606,51.98254],[126.558,52.13738],[125.6131,53.07229]],[[113.56865,22.20973],[113.57123,22.20416],[113.60504,22.20464],[113.63011,22.10782],[113.57191,22.07696],[113.54839,22.10909],[113.54942,22.14519],[113.54093,22.15497],[113.52659,22.18271],[113.53552,22.20607],[113.53301,22.21235],[113.53591,22.21369],[113.54093,22.21314],[113.54333,22.21688],[113.5508,22.21672],[113.56865,22.20973]],[[114.50148,22.15017],[113.92195,22.13873],[113.83338,22.1826],[113.81621,22.2163],[113.86771,22.42972],[114.03113,22.5065],[114.05438,22.5026],[114.05729,22.51104],[114.06272,22.51617],[114.07267,22.51855],[114.07817,22.52997],[114.08606,22.53276],[114.09048,22.53716],[114.09692,22.53435],[114.1034,22.5352],[114.11181,22.52878],[114.11656,22.53415],[114.12665,22.54003],[114.13823,22.54319],[114.1482,22.54091],[114.15123,22.55163],[114.1597,22.56041],[114.17247,22.55944],[114.18338,22.55444],[114.20655,22.55706],[114.22185,22.55343],[114.22888,22.5436],[114.25154,22.55977],[114.44998,22.55977],[114.50148,22.15017]]]]}},{type:"Feature",properties:{wikidata:"Q22890",nameEn:"Ireland",level:"sharedLandform"},geometry:null},{type:"Feature",properties:{wikidata:"Q23666",nameEn:"Great Britain",country:"GB",level:"sharedLandform"},geometry:null},{type:"Feature",properties:{wikidata:"Q23681",nameEn:"Northern Cyprus",groups:["Q644636","145","142"],driveSide:"left",callingCodes:["90 392"]},geometry:{type:"MultiPolygon",coordinates:[[[[33.67678,35.03866],[33.67742,35.05963],[33.68474,35.06602],[33.69095,35.06237],[33.70861,35.07644],[33.7161,35.07279],[33.70209,35.04882],[33.71482,35.03722],[33.73824,35.05321],[33.76106,35.04253],[33.78581,35.05104],[33.82067,35.07826],[33.84168,35.06823],[33.8541,35.07201],[33.87479,35.08881],[33.87097,35.09389],[33.87622,35.10457],[33.87224,35.12293],[33.88561,35.12449],[33.88943,35.12007],[33.88737,35.11408],[33.89853,35.11377],[33.91789,35.08688],[33.91299,35.07579],[33.90247,35.07686],[33.89485,35.06873],[33.88367,35.07877],[33.85261,35.0574],[33.8355,35.05777],[33.82051,35.0667],[33.8012,35.04786],[33.81524,35.04192],[33.83055,35.02865],[33.82875,35.01685],[33.84045,35.00616],[33.85216,35.00579],[33.85891,35.001],[33.85621,34.98956],[33.83505,34.98108],[33.84811,34.97075],[33.86432,34.97592],[33.90075,34.96623],[33.98684,34.76642],[35.48515,34.70851],[35.51152,36.10954],[32.82353,35.70297],[32.46489,35.48584],[32.60361,35.16647],[32.64864,35.19967],[32.70947,35.18328],[32.70779,35.14127],[32.85733,35.07742],[32.86406,35.1043],[32.94471,35.09422],[33.01192,35.15639],[33.08249,35.17319],[33.11105,35.15639],[33.15138,35.19504],[33.27068,35.16815],[33.3072,35.16816],[33.31955,35.18096],[33.35056,35.18328],[33.34964,35.17803],[33.35596,35.17942],[33.35612,35.17402],[33.36569,35.17479],[33.3717,35.1788],[33.37248,35.18698],[33.38575,35.2018],[33.4076,35.20062],[33.41675,35.16325],[33.46813,35.10564],[33.48136,35.0636],[33.47825,35.04103],[33.45178,35.02078],[33.45256,35.00288],[33.47666,35.00701],[33.48915,35.06594],[33.53975,35.08151],[33.57478,35.06049],[33.567,35.04803],[33.59658,35.03635],[33.61215,35.0527],[33.63765,35.03869],[33.67678,35.03866]]]]}},{type:"Feature",properties:{wikidata:"Q25231",nameEn:"Svalbard",aliases:["NO-21"],country:"NO",groups:["SJ","154","150","UN"],level:"subterritory",callingCodes:["47 79"]},geometry:{type:"MultiPolygon",coordinates:[[[[-7.49892,77.24208],[32.07813,72.01005],[36.85549,84.09565],[-7.49892,77.24208]]]]}},{type:"Feature",properties:{wikidata:"Q25263",nameEn:"Azores",aliases:["PT-20"],country:"PT",groups:["Q3320166","Q2914565","Q105472","EU","039","150","UN"],callingCodes:["351"]},geometry:{type:"MultiPolygon",coordinates:[[[[-23.12984,40.26428],[-36.43765,41.39418],[-22.54767,33.34416],[-23.12984,40.26428]]]]}},{type:"Feature",properties:{wikidata:"Q25359",nameEn:"Navassa Island",aliases:["UM-76"],country:"US",groups:["UM","Q1352230","029","003","419","019","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft"},geometry:{type:"MultiPolygon",coordinates:[[[[-74.7289,18.71009],[-75.71816,18.46438],[-74.76465,18.06252],[-74.7289,18.71009]]]]}},{type:"Feature",properties:{wikidata:"Q25396",nameEn:"Bonaire",aliases:["BQ-BO","NL-BQ1"],country:"NL",groups:["Q1451600","BQ","029","003","419","019","UN"],level:"subterritory",callingCodes:["599 7"]},geometry:{type:"MultiPolygon",coordinates:[[[[-67.89186,12.4116],[-68.90012,12.62309],[-68.33524,11.78151],[-68.01417,11.77722],[-67.89186,12.4116]]]]}},{type:"Feature",properties:{wikidata:"Q25528",nameEn:"Saba",aliases:["BQ-SA","NL-BQ2"],country:"NL",groups:["Q1451600","BQ","029","003","419","019","UN"],level:"subterritory",callingCodes:["599 4"]},geometry:{type:"MultiPolygon",coordinates:[[[[-63.07669,17.79659],[-63.81314,17.95045],[-63.22932,17.32592],[-63.07669,17.79659]]]]}},{type:"Feature",properties:{wikidata:"Q26180",nameEn:"Sint Eustatius",aliases:["BQ-SE","NL-BQ3"],country:"NL",groups:["Q1451600","BQ","029","003","419","019","UN"],level:"subterritory",callingCodes:["599 3"]},geometry:{type:"MultiPolygon",coordinates:[[[[-63.07669,17.79659],[-63.34999,16.94218],[-62.76692,17.64353],[-63.07669,17.79659]]]]}},{type:"Feature",properties:{wikidata:"Q26253",nameEn:"Madeira",aliases:["PT-30"],country:"PT",groups:["Q3320166","Q2914565","Q105472","EU","039","150","UN"],callingCodes:["351"]},geometry:{type:"MultiPolygon",coordinates:[[[[-19.30302,33.65304],[-16.04789,29.65076],[-11.68307,33.12333],[-19.30302,33.65304]]]]}},{type:"Feature",properties:{wikidata:"Q26927",nameEn:"Lakshadweep",aliases:["IN-LD"],country:"IN",groups:["034","142","UN"],driveSide:"left",callingCodes:["91"]},geometry:{type:"MultiPolygon",coordinates:[[[[67.64074,11.57295],[76.59015,5.591],[72.67494,13.58102],[67.64074,11.57295]]]]}},{type:"Feature",properties:{wikidata:"Q27329",nameEn:"Asian Russia",country:"RU",groups:["142","UN"],callingCodes:["7"]},geometry:{type:"MultiPolygon",coordinates:[[[[-179.99933,64.74703],[-172.76104,63.77445],[-169.03888,65.48473],[-168.95635,65.98512],[-168.25765,71.99091],[-179.9843,71.90735],[-179.99933,64.74703]]],[[[59.99809,51.98263],[60.19925,51.99173],[60.48915,52.15175],[60.72581,52.15538],[60.78201,52.22067],[61.05417,52.35096],[60.98021,52.50068],[60.84709,52.52228],[60.84118,52.63912],[60.71693,52.66245],[60.71989,52.75923],[61.05842,52.92217],[61.23462,53.03227],[62.0422,52.96105],[62.12799,52.99133],[62.14574,53.09626],[61.19024,53.30536],[61.14291,53.41481],[61.29082,53.50992],[61.37957,53.45887],[61.57185,53.50112],[61.55706,53.57144],[60.90626,53.62937],[61.22574,53.80268],[61.14283,53.90063],[60.99796,53.93699],[61.26863,53.92797],[61.3706,54.08464],[61.47603,54.08048],[61.56941,53.95703],[61.65318,54.02445],[62.03913,53.94768],[62.00966,54.04134],[62.38535,54.03961],[62.45931,53.90737],[62.56876,53.94047],[62.58651,54.05871],[63.80604,54.27079],[63.91224,54.20013],[64.02715,54.22679],[63.97686,54.29763],[64.97216,54.4212],[65.11033,54.33028],[65.24663,54.35721],[65.20174,54.55216],[68.21308,54.98645],[68.26661,55.09226],[68.19206,55.18823],[68.90865,55.38148],[69.34224,55.36344],[69.74917,55.35545],[70.19179,55.1476],[70.76493,55.3027],[70.96009,55.10558],[71.08288,54.71253],[71.24185,54.64965],[71.08706,54.33376],[71.10379,54.13326],[71.96141,54.17736],[72.17477,54.36303],[72.43415,53.92685],[72.71026,54.1161],[73.37963,53.96132],[73.74778,54.07194],[73.68921,53.86522],[73.25412,53.61532],[73.39218,53.44623],[75.07405,53.80831],[75.43398,53.98652],[75.3668,54.07439],[76.91052,54.4677],[76.82266,54.1798],[76.44076,54.16017],[76.54243,53.99329],[77.90383,53.29807],[79.11255,52.01171],[80.08138,50.77658],[80.4127,50.95581],[80.44819,51.20855],[80.80318,51.28262],[81.16999,51.15662],[81.06091,50.94833],[81.41248,50.97524],[81.46581,50.77658],[81.94999,50.79307],[82.55443,50.75412],[83.14607,51.00796],[83.8442,50.87375],[84.29385,50.27257],[84.99198,50.06793],[85.24047,49.60239],[86.18709,49.50259],[86.63674,49.80136],[86.79056,49.74787],[86.61307,49.60239],[86.82606,49.51796],[87.03071,49.25142],[87.31465,49.23603],[87.28386,49.11626],[87.478,49.07403],[87.48983,49.13794],[87.81333,49.17354],[87.98977,49.18147],[88.15543,49.30314],[88.17223,49.46934],[88.42449,49.48821],[88.82499,49.44808],[89.70687,49.72535],[89.59711,49.90851],[91.86048,50.73734],[92.07173,50.69585],[92.44714,50.78762],[93.01109,50.79001],[92.99595,50.63183],[94.30823,50.57498],[94.39258,50.22193],[94.49477,50.17832],[94.6121,50.04239],[94.97166,50.04725],[95.02465,49.96941],[95.74757,49.97915],[95.80056,50.04239],[96.97388,49.88413],[97.24639,49.74737],[97.56811,49.84265],[97.56432,49.92801],[97.76871,49.99861],[97.85197,49.91339],[98.29481,50.33561],[98.31373,50.4996],[98.06393,50.61262],[97.9693,50.78044],[98.01472,50.86652],[97.83305,51.00248],[98.05257,51.46696],[98.22053,51.46579],[98.33222,51.71832],[98.74142,51.8637],[98.87768,52.14563],[99.27888,51.96876],[99.75578,51.90108],[99.89203,51.74903],[100.61116,51.73028],[101.39085,51.45753],[101.5044,51.50467],[102.14032,51.35566],[102.32194,50.67982],[102.71178,50.38873],[103.70343,50.13952],[105.32528,50.4648],[106.05562,50.40582],[106.07865,50.33474],[106.47156,50.31909],[106.49628,50.32436],[106.51122,50.34408],[106.58373,50.34044],[106.80326,50.30177],[107.00007,50.1977],[107.1174,50.04239],[107.36407,49.97612],[107.96116,49.93191],[107.95387,49.66659],[108.27937,49.53167],[108.53969,49.32325],[109.18017,49.34709],[109.51325,49.22859],[110.24373,49.16676],[110.39891,49.25083],[110.64493,49.1816],[113.02647,49.60772],[113.20216,49.83356],[114.325,50.28098],[114.9703,50.19254],[115.26068,49.97367],[115.73602,49.87688],[116.22402,50.04477],[116.62502,49.92919],[116.71193,49.83813],[117.27597,49.62544],[117.48208,49.62324],[117.82343,49.52696],[118.61623,49.93809],[119.11003,50.00276],[119.27996,50.13348],[119.38598,50.35162],[119.13553,50.37412],[120.10963,51.671],[120.65907,51.93544],[120.77337,52.20805],[120.61346,52.32447],[120.71673,52.54099],[120.46454,52.63811],[120.04049,52.58773],[120.0451,52.7359],[120.85633,53.28499],[121.39213,53.31888],[122.35063,53.49565],[122.85966,53.47395],[123.26989,53.54843],[123.86158,53.49391],[124.46078,53.21881],[125.17522,53.20225],[125.6131,53.07229],[126.558,52.13738],[126.44606,51.98254],[126.68349,51.70607],[126.90369,51.3238],[126.93135,51.0841],[127.14586,50.91152],[127.28165,50.72075],[127.36335,50.58306],[127.28765,50.46585],[127.36009,50.43787],[127.37384,50.28393],[127.60515,50.23503],[127.49299,50.01251],[127.53516,49.84306],[127.83476,49.5748],[128.72896,49.58676],[129.11153,49.36813],[129.23232,49.40353],[129.35317,49.3481],[129.40398,49.44194],[129.50685,49.42398],[129.67598,49.29596],[129.85416,49.11067],[130.2355,48.86741],[130.43232,48.90844],[130.66946,48.88251],[130.52147,48.61745],[130.84462,48.30942],[130.65103,48.10052],[130.90915,47.90623],[130.95985,47.6957],[131.09871,47.6852],[131.2635,47.73325],[131.90448,47.68011],[132.57309,47.71741],[132.66989,47.96491],[134.49516,48.42884],[134.75328,48.36763],[134.67098,48.1564],[134.55508,47.98651],[134.7671,47.72051],[134.50898,47.4812],[134.20016,47.33458],[134.03538,46.75668],[133.84104,46.46681],[133.91496,46.4274],[133.88097,46.25066],[133.68047,46.14697],[133.72695,46.05576],[133.67569,45.9759],[133.60442,45.90053],[133.48457,45.86203],[133.41083,45.57723],[133.19419,45.51913],[133.09279,45.25693],[133.12293,45.1332],[132.96373,45.0212],[132.83978,45.05916],[131.99417,45.2567],[131.86903,45.33636],[131.76532,45.22609],[131.66852,45.2196],[131.68466,45.12374],[131.48415,44.99513],[130.95639,44.85154],[131.1108,44.70266],[131.30365,44.04262],[131.25484,44.03131],[131.23583,43.96085],[131.26176,43.94011],[131.21105,43.82383],[131.19492,43.53047],[131.29402,43.46695],[131.30324,43.39498],[131.19031,43.21385],[131.20414,43.13654],[131.10274,43.04734],[131.135,42.94114],[131.02668,42.91246],[131.02438,42.86518],[130.66524,42.84753],[130.44361,42.76205],[130.40213,42.70788],[130.56576,42.68925],[130.62107,42.58413],[130.55143,42.52158],[130.56835,42.43281],[130.60805,42.4317],[130.64181,42.41422],[130.66367,42.38024],[130.65022,42.32281],[131.95041,41.5445],[140.9182,45.92937],[145.82343,44.571],[145.23667,43.76813],[153.94307,38.42848],[180,62.52334],[180,71.53642],[155.31937,81.93282],[76.13964,83.37843],[64.18965,69.94255],[66.1708,67.61252],[61.98014,65.72191],[60.74386,64.95767],[59.63945,64.78384],[59.80579,64.13948],[59.24834,63.01859],[59.61398,62.44915],[59.36223,61.3882],[59.50685,60.91162],[58.3853,59.487],[59.15636,59.14682],[59.40376,58.45822],[58.71104,58.07475],[58.81412,57.71602],[58.13789,57.68097],[58.07604,57.08308],[57.28024,56.87898],[57.51527,56.08729],[59.28419,56.15739],[59.49035,55.60486],[58.81825,55.03378],[57.25137,55.26262],[57.14829,54.84204],[57.95234,54.39672],[59.95217,54.85853],[59.70487,54.14846],[58.94336,53.953],[58.79644,52.43392],[59.22409,52.28437],[59.25033,52.46803],[60.17516,52.39457],[60.17253,52.25814],[59.91279,52.06924],[59.99809,51.98263]]]]}},{type:"Feature",properties:{wikidata:"Q34366",nameEn:"Tasmania",aliases:["AU-TAS"],country:"AU",groups:["053","009","UN"],driveSide:"left",callingCodes:["61"]},geometry:{type:"MultiPolygon",coordinates:[[[[123.64533,-39.13605],[159.69067,-56.28945],[159.74028,-39.1978],[123.64533,-39.13605]]]]}},{type:"Feature",properties:{wikidata:"Q34497",nameEn:"Saint Helena",aliases:["SH-HL"],country:"GB",groups:["SH","BOTS","011","202","002","UN"],level:"subterritory",driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["290"]},geometry:{type:"MultiPolygon",coordinates:[[[[-8.3824,-13.9131],[-6.17428,-19.07236],[-3.29308,-15.22647],[-8.3824,-13.9131]]]]}},{type:"Feature",properties:{wikidata:"Q35657",nameEn:"US States",country:"US",level:"subcountryGroup"},geometry:null},{type:"Feature",properties:{wikidata:"Q36117",nameEn:"Borneo",level:"sharedLandform"},geometry:null},{type:"Feature",properties:{wikidata:"Q36678",nameEn:"West Bank",country:"PS",groups:["145","142"],callingCodes:["970"]},geometry:{type:"MultiPolygon",coordinates:[[[[35.47672,31.49578],[35.55941,31.76535],[35.52758,31.9131],[35.54375,31.96587],[35.52012,32.04076],[35.57111,32.21877],[35.55807,32.38674],[35.42078,32.41562],[35.41048,32.43706],[35.41598,32.45593],[35.42034,32.46009],[35.40224,32.50136],[35.35212,32.52047],[35.30685,32.51024],[35.29306,32.50947],[35.25049,32.52453],[35.2244,32.55289],[35.15937,32.50466],[35.10882,32.4757],[35.10024,32.47856],[35.09236,32.47614],[35.08564,32.46948],[35.07059,32.4585],[35.05423,32.41754],[35.05311,32.4024],[35.0421,32.38242],[35.05142,32.3667],[35.04243,32.35008],[35.01772,32.33863],[35.01119,32.28684],[35.02939,32.2671],[35.01841,32.23981],[34.98885,32.20758],[34.95703,32.19522],[34.96009,32.17503],[34.99039,32.14626],[34.98507,32.12606],[34.99437,32.10962],[34.9863,32.09551],[35.00261,32.027],[34.98682,31.96935],[35.00124,31.93264],[35.03489,31.92448],[35.03978,31.89276],[35.03489,31.85919],[34.99712,31.85569],[34.9724,31.83352],[35.01978,31.82944],[35.05617,31.85685],[35.07677,31.85627],[35.14174,31.81325],[35.18603,31.80901],[35.18169,31.82542],[35.19461,31.82687],[35.21469,31.81835],[35.216,31.83894],[35.21128,31.863],[35.20381,31.86716],[35.20673,31.88151],[35.20791,31.8821],[35.20945,31.8815],[35.21016,31.88237],[35.21276,31.88153],[35.2136,31.88241],[35.22014,31.88264],[35.22294,31.87889],[35.22567,31.86745],[35.22817,31.8638],[35.2249,31.85433],[35.2304,31.84222],[35.24816,31.8458],[35.25753,31.8387],[35.251,31.83085],[35.26404,31.82567],[35.25573,31.81362],[35.26058,31.79064],[35.25225,31.7678],[35.26319,31.74846],[35.25182,31.73945],[35.24981,31.72543],[35.2438,31.7201],[35.24315,31.71244],[35.23972,31.70896],[35.22392,31.71899],[35.21937,31.71578],[35.20538,31.72388],[35.18023,31.72067],[35.16478,31.73242],[35.15474,31.73352],[35.15119,31.73634],[35.13931,31.73012],[35.12933,31.7325],[35.11895,31.71454],[35.10782,31.71594],[35.08226,31.69107],[35.00879,31.65426],[34.95249,31.59813],[34.9415,31.55601],[34.94356,31.50743],[34.93258,31.47816],[34.89756,31.43891],[34.87833,31.39321],[34.88932,31.37093],[34.92571,31.34337],[35.02459,31.35979],[35.13033,31.3551],[35.22921,31.37445],[35.39675,31.49572],[35.47672,31.49578]]]]}},{type:"Feature",properties:{wikidata:"Q37362",nameEn:"Akrotiri and Dhekelia",aliases:["SBA"],country:"GB"},geometry:null},{type:"Feature",properties:{wikidata:"Q38095",nameEn:"Gal\xE1pagos Islands",aliases:["EC-W"],country:"EC",groups:["005","419","019","UN"],callingCodes:["593"]},geometry:{type:"MultiPolygon",coordinates:[[[[-93.12365,2.64343],[-92.46744,-2.52874],[-87.07749,-.8849],[-93.12365,2.64343]]]]}},{type:"Feature",properties:{wikidata:"Q39760",nameEn:"Gaza Strip",country:"PS",groups:["145","142"],callingCodes:["970"]},geometry:{type:"MultiPolygon",coordinates:[[[[34.052,31.46619],[34.21853,31.32363],[34.23572,31.2966],[34.24012,31.29591],[34.26742,31.21998],[34.29417,31.24194],[34.36523,31.28963],[34.37381,31.30598],[34.36505,31.36404],[34.40077,31.40926],[34.48892,31.48365],[34.56797,31.54197],[34.48681,31.59711],[34.29262,31.70393],[34.052,31.46619]]]]}},{type:"Feature",properties:{wikidata:"Q40888",nameEn:"Andaman and Nicobar Islands",aliases:["IN-AN"],country:"IN",groups:["034","142","UN"],driveSide:"left",callingCodes:["91"]},geometry:{type:"MultiPolygon",coordinates:[[[[94.42132,5.96581],[94.6371,13.81803],[86.7822,13.41052],[94.42132,5.96581]]]]}},{type:"Feature",properties:{wikidata:"Q41684",nameEn:"Stewart Island",country:"NZ",groups:["053","009","UN"],driveSide:"left",callingCodes:["64"]},geometry:{type:"MultiPolygon",coordinates:[[[[166.59185,-47.61313],[169.70504,-47.56021],[167.52103,-46.41337],[166.59185,-47.61313]]]]}},{type:"Feature",properties:{wikidata:"Q43296",nameEn:"Wake Island",aliases:["WK","WAK","WKUM","872","UM-79"],country:"US",groups:["UM","Q1352230","057","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[167.34779,18.97692],[166.67967,20.14834],[165.82549,18.97692],[167.34779,18.97692]]]]}},{type:"Feature",properties:{wikidata:"Q46275",nameEn:"New Zealand Subantarctic Islands",country:"NZ",groups:["Q851132","053","009","UN"],driveSide:"left"},geometry:{type:"MultiPolygon",coordinates:[[[[164.30551,-47.88072],[161.96603,-56.07661],[179.49541,-50.04657],[179.49541,-47.2902],[169.91032,-47.66283],[164.30551,-47.88072]]]]}},{type:"Feature",properties:{wikidata:"Q46395",nameEn:"British Overseas Territories",aliases:["BOTS","UKOTS"],country:"GB",level:"subcountryGroup"},geometry:null},{type:"Feature",properties:{wikidata:"Q46772",nameEn:"Kerguelen Islands",country:"FR",groups:["EU","TF","Q1451600","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[61.9216,-49.39746],[70.67507,-51.14192],[74.25129,-45.45074],[61.9216,-49.39746]]]]}},{type:"Feature",properties:{wikidata:"Q46879",nameEn:"Baker Island",aliases:["UM-81"],country:"US",groups:["UM","Q1352230","061","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft"},geometry:{type:"MultiPolygon",coordinates:[[[[-175.33482,-1.40631],[-175.31323,.5442],[-177.91421,.39582],[-175.33482,-1.40631]]]]}},{type:"Feature",properties:{wikidata:"Q47863",nameEn:"Midway Atoll",aliases:["MI","MID","MIUM","488","UM-71"],country:"US",groups:["UM","Q1352230","061","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[-176.29741,29.09786],[-177.77531,29.29793],[-177.5224,27.7635],[-176.29741,29.09786]]]]}},{type:"Feature",properties:{wikidata:"Q62218",nameEn:"Jarvis Island",aliases:["UM-86"],country:"US",groups:["UM","Q1352230","061","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft"},geometry:{type:"MultiPolygon",coordinates:[[[[-160.42921,-1.4364],[-159.12443,.19975],[-160.38779,.30331],[-160.42921,-1.4364]]]]}},{type:"Feature",properties:{wikidata:"Q105472",nameEn:"Macaronesia",level:"sharedLandform"},geometry:null},{type:"Feature",properties:{wikidata:"Q114935",nameEn:"Kermadec Islands",country:"NZ",groups:["Q851132","053","009","UN"],driveSide:"left",callingCodes:["64"]},geometry:{type:"MultiPolygon",coordinates:[[[[-174.40891,-29.09438],[-180,-24.21376],[-179.96512,-35.00791],[-174.40891,-29.09438]]]]}},{type:"Feature",properties:{wikidata:"Q115459",nameEn:"Chatham Islands",aliases:["NZ-CIT"],country:"NZ",groups:["Q851132","053","009","UN"],driveSide:"left",callingCodes:["64"]},geometry:{type:"MultiPolygon",coordinates:[[[[-179.93224,-45.18423],[-172.47015,-45.17912],[-176.30998,-41.38382],[-179.93224,-45.18423]]]]}},{type:"Feature",properties:{wikidata:"Q118863",nameEn:"North Island",country:"NZ",groups:["053","009","UN"],driveSide:"left",callingCodes:["64"]},geometry:{type:"MultiPolygon",coordinates:[[[[179.49541,-47.2902],[179.49541,-36.79303],[174.17679,-32.62487],[170.27492,-36.38133],[174.58663,-40.80446],[174.46634,-41.55028],[179.49541,-47.2902]]]]}},{type:"Feature",properties:{wikidata:"Q120755",nameEn:"South Island",country:"NZ",groups:["053","009","UN"],driveSide:"left",callingCodes:["64"]},geometry:{type:"MultiPolygon",coordinates:[[[[169.70504,-47.56021],[179.49541,-47.2902],[174.46634,-41.55028],[174.58663,-40.80446],[170.27492,-36.38133],[166.56976,-39.94841],[164.8365,-46.0205],[167.52103,-46.41337],[169.70504,-47.56021]]]]}},{type:"Feature",properties:{wikidata:"Q123076",nameEn:"Palmyra Atoll",aliases:["UM-95"],country:"US",groups:["UM","Q1352230","061","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[-161.06795,5.2462],[-161.0731,7.1291],[-163.24478,5.24198],[-161.06795,5.2462]]]]}},{type:"Feature",properties:{wikidata:"Q130574",nameEn:"Chafarinas Islands",country:"ES",groups:["EU","Q191011","015","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[-2.40316,35.16893],[-2.43262,35.20652],[-2.45965,35.16527],[-2.40316,35.16893]]]]}},{type:"Feature",properties:{wikidata:"Q130895",nameEn:"Kingman Reef",aliases:["UM-89"],country:"US",groups:["UM","Q1352230","061","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft"},geometry:{type:"MultiPolygon",coordinates:[[[[-161.0731,7.1291],[-163.16627,7.15036],[-163.24478,5.24198],[-161.0731,7.1291]]]]}},{type:"Feature",properties:{wikidata:"Q131008",nameEn:"Johnston Atoll",aliases:["JT","JTN","JTUM","396","UM-67"],country:"US",groups:["UM","Q1352230","061","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[-170.65691,16.57199],[-168.87689,16.01159],[-169.2329,17.4933],[-170.65691,16.57199]]]]}},{type:"Feature",properties:{wikidata:"Q131305",nameEn:"Howland Island",aliases:["UM-84"],country:"US",groups:["UM","Q1352230","061","009","UN"],level:"subterritory",roadSpeedUnit:"mph",roadHeightUnit:"ft"},geometry:{type:"MultiPolygon",coordinates:[[[[-177.91421,.39582],[-175.31323,.5442],[-176.74464,2.28109],[-177.91421,.39582]]]]}},{type:"Feature",properties:{wikidata:"Q133888",nameEn:"Ashmore and Cartier Islands",country:"AU",groups:["053","009","UN"],driveSide:"left",callingCodes:["61"]},geometry:{type:"MultiPolygon",coordinates:[[[[123.7463,-11.1783],[120.6877,-13.59408],[125.29076,-12.33139],[123.7463,-11.1783]]]]}},{type:"Feature",properties:{wikidata:"Q153732",nameEn:"Mariana Islands",level:"sharedLandform"},geometry:null},{type:"Feature",properties:{wikidata:"Q172216",nameEn:"Coral Sea Islands",country:"AU",groups:["053","009","UN"],driveSide:"left",callingCodes:["61"]},geometry:{type:"MultiPolygon",coordinates:[[[[159.77159,-28.41151],[156.73836,-14.50464],[145.2855,-9.62524],[147.69992,-17.5933],[152.93188,-20.92631],[154.02855,-24.43238],[159.77159,-28.41151]]]]}},{type:"Feature",properties:{wikidata:"Q179313",nameEn:"Alderney",country:"GB",groups:["GG","830","Q185086","154","150","UN"],level:"subterritory",driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44 01481"]},geometry:{type:"MultiPolygon",coordinates:[[[[-2.36485,49.48223],[-2.09454,49.46288],[-2.02963,49.91866],[-2.49556,49.79012],[-2.36485,49.48223]]]]}},{type:"Feature",properties:{wikidata:"Q185086",nameEn:"Crown Dependencies",country:"GB",level:"subcountryGroup"},geometry:null},{type:"Feature",properties:{wikidata:"Q190571",nameEn:"Scattered Islands",country:"FR",groups:["EU","TF","Q1451600","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[53.53458,-16.36909],[54.96649,-16.28353],[54.61476,-15.02273],[53.53458,-16.36909]]],[[[38.55969,-20.75596],[40.68027,-23.38889],[43.52893,-15.62903],[38.55969,-20.75596]]],[[[47.03092,-11.05648],[47.11593,-12.08552],[47.96702,-11.46447],[47.03092,-11.05648]]]]}},{type:"Feature",properties:{wikidata:"Q191011",nameEn:"Plazas de soberan\xEDa",country:"ES"},geometry:null},{type:"Feature",properties:{wikidata:"Q191146",nameEn:"Pe\xF1\xF3n de V\xE9lez de la Gomera",country:"ES",groups:["EU","Q191011","015","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[-4.30191,35.17419],[-4.30112,35.17058],[-4.29436,35.17149],[-4.30191,35.17419]]]]}},{type:"Feature",properties:{wikidata:"Q201698",nameEn:"Crozet Islands",country:"FR",groups:["EU","TF","Q1451600","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[55.03425,-43.65017],[46.31615,-46.28749],[54.5587,-47.93013],[55.03425,-43.65017]]]]}},{type:"Feature",properties:{wikidata:"Q578170",nameEn:"Contiguous United States",aliases:["CONUS"],country:"US",groups:["Q35657","021","003","019","UN"],roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[-97.13927,25.96583],[-96.92418,25.97377],[-80.57035,24.0565],[-78.91214,27.76553],[-61.98255,37.34815],[-67.16117,44.20069],[-66.93432,44.82597],[-66.96824,44.83078],[-66.98249,44.87071],[-66.96824,44.90965],[-67.0216,44.95333],[-67.11316,45.11176],[-67.15965,45.16179],[-67.19603,45.16771],[-67.20349,45.1722],[-67.22751,45.16344],[-67.27039,45.1934],[-67.29748,45.18173],[-67.29754,45.14865],[-67.34927,45.122],[-67.48201,45.27351],[-67.42394,45.37969],[-67.50578,45.48971],[-67.42144,45.50584],[-67.43815,45.59162],[-67.6049,45.60725],[-67.80705,45.69528],[-67.80653,45.80022],[-67.75654,45.82324],[-67.80961,45.87531],[-67.75196,45.91814],[-67.78111,45.9392],[-67.78578,47.06473],[-67.87993,47.10377],[-67.94843,47.1925],[-68.23244,47.35712],[-68.37458,47.35851],[-68.38332,47.28723],[-68.57914,47.28431],[-68.60575,47.24659],[-68.70125,47.24399],[-68.89222,47.1807],[-69.05039,47.2456],[-69.05073,47.30076],[-69.05148,47.42012],[-69.22119,47.46461],[-69.99966,46.69543],[-70.05812,46.41768],[-70.18547,46.35357],[-70.29078,46.18832],[-70.23855,46.1453],[-70.31025,45.96424],[-70.24694,45.95138],[-70.25976,45.89675],[-70.41523,45.79497],[-70.38934,45.73215],[-70.54019,45.67291],[-70.68516,45.56964],[-70.72651,45.49771],[-70.62518,45.42286],[-70.65383,45.37592],[-70.78372,45.43269],[-70.82638,45.39828],[-70.80236,45.37444],[-70.84816,45.22698],[-70.89864,45.2398],[-70.91169,45.29849],[-70.95193,45.33895],[-71.0107,45.34819],[-71.01866,45.31573],[-71.08364,45.30623],[-71.14568,45.24128],[-71.19723,45.25438],[-71.22338,45.25184],[-71.29371,45.29996],[-71.37133,45.24624],[-71.44252,45.2361],[-71.40364,45.21382],[-71.42778,45.12624],[-71.48735,45.07784],[-71.50067,45.01357],[-73.35025,45.00942],[-74.32699,44.99029],[-74.66689,45.00646],[-74.8447,45.00606],[-74.99101,44.98051],[-75.01363,44.95608],[-75.2193,44.87821],[-75.41441,44.76614],[-75.76813,44.51537],[-75.8217,44.43176],[-75.95947,44.34463],[-76.00018,44.34896],[-76.16285,44.28262],[-76.1664,44.23051],[-76.244,44.19643],[-76.31222,44.19894],[-76.35324,44.13493],[-76.43859,44.09393],[-76.79706,43.63099],[-79.25796,43.54052],[-79.06921,43.26183],[-79.05512,43.25375],[-79.05544,43.21224],[-79.05002,43.20133],[-79.05384,43.17418],[-79.04652,43.16396],[-79.0427,43.13934],[-79.06881,43.12029],[-79.05671,43.10937],[-79.07486,43.07845],[-79.01055,43.06659],[-78.99941,43.05612],[-79.02424,43.01983],[-79.02074,42.98444],[-78.98126,42.97],[-78.96312,42.95509],[-78.93224,42.95229],[-78.90905,42.93022],[-78.90712,42.89733],[-78.93684,42.82887],[-82.67862,41.67615],[-83.11184,41.95671],[-83.14962,42.04089],[-83.12724,42.2376],[-83.09837,42.28877],[-83.07837,42.30978],[-83.02253,42.33045],[-82.82964,42.37355],[-82.64242,42.55594],[-82.58873,42.54984],[-82.57583,42.5718],[-82.51858,42.611],[-82.51063,42.66025],[-82.46613,42.76615],[-82.4826,42.8068],[-82.45331,42.93139],[-82.4253,42.95423],[-82.4146,42.97626],[-82.42469,42.992],[-82.48419,45.30225],[-83.59589,45.82131],[-83.43746,45.99749],[-83.57017,46.105],[-83.83329,46.12169],[-83.90453,46.05922],[-83.95399,46.05634],[-84.1096,46.23987],[-84.09756,46.25512],[-84.11615,46.2681],[-84.11254,46.32329],[-84.13451,46.39218],[-84.11196,46.50248],[-84.12885,46.53068],[-84.17723,46.52753],[-84.1945,46.54061],[-84.2264,46.53337],[-84.26351,46.49508],[-84.29893,46.49127],[-84.34174,46.50683],[-84.42101,46.49853],[-84.4481,46.48972],[-84.47607,46.45225],[-84.55635,46.45974],[-84.85871,46.88881],[-88.37033,48.30586],[-89.48837,48.01412],[-89.57972,48.00023],[-89.77248,48.02607],[-89.89974,47.98109],[-90.07418,48.11043],[-90.56312,48.09488],[-90.56444,48.12184],[-90.75045,48.09143],[-90.87588,48.2484],[-91.08016,48.18096],[-91.25025,48.08522],[-91.43248,48.04912],[-91.45829,48.07454],[-91.58025,48.04339],[-91.55649,48.10611],[-91.70451,48.11805],[-91.71231,48.19875],[-91.86125,48.21278],[-91.98929,48.25409],[-92.05339,48.35958],[-92.14732,48.36578],[-92.202,48.35252],[-92.26662,48.35651],[-92.30939,48.31251],[-92.27167,48.25046],[-92.37185,48.22259],[-92.48147,48.36609],[-92.45588,48.40624],[-92.50712,48.44921],[-92.65606,48.43471],[-92.71323,48.46081],[-92.69927,48.49573],[-92.62747,48.50278],[-92.6342,48.54133],[-92.7287,48.54005],[-92.94973,48.60866],[-93.25391,48.64266],[-93.33946,48.62787],[-93.3712,48.60599],[-93.39758,48.60364],[-93.40693,48.60948],[-93.44472,48.59147],[-93.47022,48.54357],[-93.66382,48.51845],[-93.79267,48.51631],[-93.80939,48.52439],[-93.80676,48.58232],[-93.83288,48.62745],[-93.85769,48.63284],[-94.23215,48.65202],[-94.25104,48.65729],[-94.25172,48.68404],[-94.27153,48.70232],[-94.4174,48.71049],[-94.44258,48.69223],[-94.53826,48.70216],[-94.54885,48.71543],[-94.58903,48.71803],[-94.69335,48.77883],[-94.69669,48.80918],[-94.70486,48.82365],[-94.70087,48.8339],[-94.687,48.84077],[-94.75017,49.09931],[-94.77355,49.11998],[-94.82487,49.29483],[-94.8159,49.32299],[-94.85381,49.32492],[-94.95681,49.37035],[-94.99532,49.36579],[-95.01419,49.35647],[-95.05825,49.35311],[-95.12903,49.37056],[-95.15357,49.384],[-95.15355,48.9996],[-123.32163,49.00419],[-123.0093,48.83186],[-123.0093,48.76586],[-123.26565,48.6959],[-123.15614,48.35395],[-123.50039,48.21223],[-125.03842,48.53282],[-133.98258,38.06389],[-118.48109,32.5991],[-117.1243,32.53427],[-115.88053,32.63624],[-114.71871,32.71894],[-114.76736,32.64094],[-114.80584,32.62028],[-114.81141,32.55543],[-114.79524,32.55731],[-114.82011,32.49609],[-111.07523,31.33232],[-108.20979,31.33316],[-108.20899,31.78534],[-106.529,31.784],[-106.52266,31.77509],[-106.51251,31.76922],[-106.50962,31.76155],[-106.50111,31.75714],[-106.48815,31.74769],[-106.47298,31.75054],[-106.46726,31.75998],[-106.45244,31.76523],[-106.43419,31.75478],[-106.41773,31.75196],[-106.38003,31.73151],[-106.3718,31.71165],[-106.34864,31.69663],[-106.33419,31.66303],[-106.30305,31.62154],[-106.28084,31.56173],[-106.24612,31.54193],[-106.23711,31.51262],[-106.20346,31.46305],[-106.09025,31.40569],[-106.00363,31.39181],[-104.77674,30.4236],[-104.5171,29.64671],[-104.3969,29.57105],[-104.39363,29.55396],[-104.37752,29.54255],[-103.15787,28.93865],[-102.60596,29.8192],[-101.47277,29.7744],[-101.05686,29.44738],[-101.01128,29.36947],[-100.96725,29.3477],[-100.94579,29.34523],[-100.94056,29.33371],[-100.87982,29.296],[-100.79696,29.24688],[-100.67294,29.09744],[-100.63689,28.90812],[-100.59809,28.88197],[-100.52313,28.75598],[-100.5075,28.74066],[-100.51222,28.70679],[-100.50029,28.66117],[-99.55409,27.61314],[-99.51478,27.55836],[-99.52955,27.49747],[-99.50208,27.50021],[-99.48045,27.49016],[-99.482,27.47128],[-99.49744,27.43746],[-99.53573,27.30926],[-99.08477,26.39849],[-99.03053,26.41249],[-99.00546,26.3925],[-98.35126,26.15129],[-98.30491,26.10475],[-98.27075,26.09457],[-98.24603,26.07191],[-97.97017,26.05232],[-97.95155,26.0625],[-97.66511,26.01708],[-97.52025,25.88518],[-97.49828,25.89877],[-97.45669,25.86874],[-97.42511,25.83969],[-97.37332,25.83854],[-97.35946,25.92189],[-97.13927,25.96583]]]]}},{type:"Feature",properties:{wikidata:"Q620634",nameEn:"Bir Tawil",groups:["015","002"],level:"territory"},geometry:{type:"MultiPolygon",coordinates:[[[[33.17563,22.00405],[33.57251,21.72406],[33.99686,21.76784],[34.0765,22.00501],[33.17563,22.00405]]]]}},{type:"Feature",properties:{wikidata:"Q639185",nameEn:"Peros Banhos",country:"GB",groups:["IO","BOTS","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[72.12587,-4.02588],[70.1848,-6.37445],[72.09518,-5.61768],[72.12587,-4.02588]]]]}},{type:"Feature",properties:{wikidata:"Q644636",nameEn:"Cyprus",level:"sharedLandform"},geometry:null},{type:"Feature",properties:{wikidata:"Q851132",nameEn:"New Zealand Outlying Islands",country:"NZ",level:"subcountryGroup"},geometry:null},{type:"Feature",properties:{wikidata:"Q875134",nameEn:"European Russia",country:"RU",groups:["151","150","UN"],callingCodes:["7"]},geometry:{type:"MultiPolygon",coordinates:[[[[18.57853,55.25302],[19.64312,54.45423],[19.8038,54.44203],[20.63871,54.3706],[21.41123,54.32395],[22.79705,54.36264],[22.7253,54.41732],[22.70208,54.45312],[22.67788,54.532],[22.71293,54.56454],[22.68021,54.58486],[22.7522,54.63525],[22.74225,54.64339],[22.75467,54.6483],[22.73397,54.66604],[22.73631,54.72952],[22.87317,54.79492],[22.85083,54.88711],[22.76422,54.92521],[22.68723,54.9811],[22.65451,54.97037],[22.60075,55.01863],[22.58907,55.07085],[22.47688,55.04408],[22.31562,55.0655],[22.14267,55.05345],[22.11697,55.02131],[22.06087,55.02935],[22.02582,55.05078],[22.03984,55.07888],[21.99543,55.08691],[21.96505,55.07353],[21.85521,55.09493],[21.64954,55.1791],[21.55605,55.20311],[21.51095,55.18507],[21.46766,55.21115],[21.38446,55.29348],[21.35465,55.28427],[21.26425,55.24456],[20.95181,55.27994],[20.60454,55.40986],[18.57853,55.25302]]],[[[26.32936,60.00121],[26.90044,59.63819],[27.85643,59.58538],[28.04187,59.47017],[28.19061,59.39962],[28.21137,59.38058],[28.20537,59.36491],[28.19284,59.35791],[28.14215,59.28934],[28.00689,59.28351],[27.90911,59.24353],[27.87978,59.18097],[27.80482,59.1116],[27.74429,58.98351],[27.36366,58.78381],[27.55489,58.39525],[27.48541,58.22615],[27.62393,58.09462],[27.67282,57.92627],[27.81841,57.89244],[27.78526,57.83963],[27.56689,57.83356],[27.50171,57.78842],[27.52615,57.72843],[27.3746,57.66834],[27.40393,57.62125],[27.31919,57.57672],[27.34698,57.52242],[27.56832,57.53728],[27.52453,57.42826],[27.86101,57.29402],[27.66511,56.83921],[27.86101,56.88204],[28.04768,56.59004],[28.13526,56.57989],[28.10069,56.524],[28.19057,56.44637],[28.16599,56.37806],[28.23716,56.27588],[28.15217,56.16964],[28.30571,56.06035],[28.36888,56.05805],[28.37987,56.11399],[28.43068,56.09407],[28.5529,56.11705],[28.68337,56.10173],[28.63668,56.07262],[28.73418,55.97131],[29.08299,56.03427],[29.21717,55.98971],[29.44692,55.95978],[29.3604,55.75862],[29.51283,55.70294],[29.61446,55.77716],[29.80672,55.79569],[29.97975,55.87281],[30.12136,55.8358],[30.27776,55.86819],[30.30987,55.83592],[30.48257,55.81066],[30.51346,55.78982],[30.51037,55.76568],[30.63344,55.73079],[30.67464,55.64176],[30.72957,55.66268],[30.7845,55.58514],[30.86003,55.63169],[30.93419,55.6185],[30.95204,55.50667],[30.90123,55.46621],[30.93144,55.3914],[30.8257,55.3313],[30.81946,55.27931],[30.87944,55.28223],[30.97369,55.17134],[31.02071,55.06167],[31.00972,55.02783],[30.94243,55.03964],[30.9081,55.02232],[30.95754,54.98609],[30.93144,54.9585],[30.81759,54.94064],[30.8264,54.90062],[30.75165,54.80699],[30.95479,54.74346],[30.97127,54.71967],[31.0262,54.70698],[30.98226,54.68872],[30.99187,54.67046],[31.19339,54.66947],[31.21399,54.63113],[31.08543,54.50361],[31.22945,54.46585],[31.3177,54.34067],[31.30791,54.25315],[31.57002,54.14535],[31.89599,54.0837],[31.88744,54.03653],[31.85019,53.91801],[31.77028,53.80015],[31.89137,53.78099],[32.12621,53.81586],[32.36663,53.7166],[32.45717,53.74039],[32.50112,53.68594],[32.40499,53.6656],[32.47777,53.5548],[32.74968,53.45597],[32.73257,53.33494],[32.51725,53.28431],[32.40773,53.18856],[32.15368,53.07594],[31.82373,53.10042],[31.787,53.18033],[31.62496,53.22886],[31.56316,53.19432],[31.40523,53.21406],[31.36403,53.13504],[31.3915,53.09712],[31.33519,53.08805],[31.32283,53.04101],[31.24147,53.031],[31.35667,52.97854],[31.592,52.79011],[31.57277,52.71613],[31.50406,52.69707],[31.63869,52.55361],[31.56316,52.51518],[31.61397,52.48843],[31.62084,52.33849],[31.57971,52.32146],[31.70735,52.26711],[31.6895,52.1973],[31.77877,52.18636],[31.7822,52.11406],[31.81722,52.09955],[31.85018,52.11305],[31.96141,52.08015],[31.92159,52.05144],[32.08813,52.03319],[32.23331,52.08085],[32.2777,52.10266],[32.34044,52.1434],[32.33083,52.23685],[32.38988,52.24946],[32.3528,52.32842],[32.54781,52.32423],[32.69475,52.25535],[32.85405,52.27888],[32.89937,52.2461],[33.18913,52.3754],[33.51323,52.35779],[33.48027,52.31499],[33.55718,52.30324],[33.78789,52.37204],[34.05239,52.20132],[34.11199,52.14087],[34.09413,52.00835],[34.41136,51.82793],[34.42922,51.72852],[34.07765,51.67065],[34.17599,51.63253],[34.30562,51.5205],[34.22048,51.4187],[34.33446,51.363],[34.23009,51.26429],[34.31661,51.23936],[34.38802,51.2746],[34.6613,51.25053],[34.6874,51.18],[34.82472,51.17483],[34.97304,51.2342],[35.14058,51.23162],[35.12685,51.16191],[35.20375,51.04723],[35.31774,51.08434],[35.40837,51.04119],[35.32598,50.94524],[35.39307,50.92145],[35.41367,50.80227],[35.47704,50.77274],[35.48116,50.66405],[35.39464,50.64751],[35.47463,50.49247],[35.58003,50.45117],[35.61711,50.35707],[35.73659,50.35489],[35.80388,50.41356],[35.8926,50.43829],[36.06893,50.45205],[36.20763,50.3943],[36.30101,50.29088],[36.47817,50.31457],[36.58371,50.28563],[36.56655,50.2413],[36.64571,50.218],[36.69377,50.26982],[36.91762,50.34963],[37.08468,50.34935],[37.48204,50.46079],[37.47243,50.36277],[37.62486,50.29966],[37.62879,50.24481],[37.61113,50.21976],[37.75807,50.07896],[37.79515,50.08425],[37.90776,50.04194],[38.02999,49.94482],[38.02999,49.90592],[38.21675,49.98104],[38.18517,50.08161],[38.32524,50.08866],[38.35408,50.00664],[38.65688,49.97176],[38.68677,50.00904],[38.73311,49.90238],[38.90477,49.86787],[38.9391,49.79524],[39.1808,49.88911],[39.27968,49.75976],[39.44496,49.76067],[39.59142,49.73758],[39.65047,49.61761],[39.84548,49.56064],[40.13249,49.61672],[40.16683,49.56865],[40.03636,49.52321],[40.03087,49.45452],[40.1141,49.38798],[40.14912,49.37681],[40.18331,49.34996],[40.22176,49.25683],[40.01988,49.1761],[39.93437,49.05709],[39.6836,49.05121],[39.6683,48.99454],[39.71353,48.98959],[39.72649,48.9754],[39.74874,48.98675],[39.78368,48.91596],[39.98967,48.86901],[40.03636,48.91957],[40.08168,48.87443],[39.97182,48.79398],[39.79466,48.83739],[39.73104,48.7325],[39.71765,48.68673],[39.67226,48.59368],[39.79764,48.58668],[39.84548,48.57821],[39.86196,48.46633],[39.88794,48.44226],[39.94847,48.35055],[39.84136,48.33321],[39.84273,48.30947],[39.90041,48.3049],[39.91465,48.26743],[39.95248,48.29972],[39.9693,48.29904],[39.97325,48.31399],[39.99241,48.31768],[40.00752,48.22445],[39.94847,48.22811],[39.83724,48.06501],[39.88256,48.04482],[39.77544,48.04206],[39.82213,47.96396],[39.73935,47.82876],[38.87979,47.87719],[38.79628,47.81109],[38.76379,47.69346],[38.35062,47.61631],[38.28679,47.53552],[38.28954,47.39255],[38.22225,47.30788],[38.33074,47.30508],[38.32112,47.2585],[38.23049,47.2324],[38.22955,47.12069],[38.3384,46.98085],[38.12112,46.86078],[37.62608,46.82615],[35.23066,45.79231],[35.04991,45.76827],[36.6645,45.4514],[36.6545,45.3417],[36.5049,45.3136],[36.475,45.2411],[36.4883,45.0488],[33.5943,44.03313],[39.81147,43.06294],[40.0078,43.38551],[40.00853,43.40578],[40.01552,43.42025],[40.01007,43.42411],[40.03312,43.44262],[40.04445,43.47776],[40.10657,43.57344],[40.65957,43.56212],[41.64935,43.22331],[42.40563,43.23226],[42.66667,43.13917],[42.75889,43.19651],[43.03322,43.08883],[43.0419,43.02413],[43.81453,42.74297],[43.73119,42.62043],[43.95517,42.55396],[44.54202,42.75699],[44.70002,42.74679],[44.80941,42.61277],[44.88754,42.74934],[45.15318,42.70598],[45.36501,42.55268],[45.78692,42.48358],[45.61676,42.20768],[46.42738,41.91323],[46.5332,41.87389],[46.58924,41.80547],[46.75269,41.8623],[46.8134,41.76252],[47.00955,41.63583],[46.99554,41.59743],[47.03757,41.55434],[47.10762,41.59044],[47.34579,41.27884],[47.49004,41.26366],[47.54504,41.20275],[47.62288,41.22969],[47.75831,41.19455],[47.87973,41.21798],[48.07587,41.49957],[48.22064,41.51472],[48.2878,41.56221],[48.40277,41.60441],[48.42301,41.65444],[48.55078,41.77917],[48.5867,41.84306],[48.80971,41.95365],[49.2134,44.84989],[49.88945,46.04554],[49.32259,46.26944],[49.16518,46.38542],[48.54988,46.56267],[48.51142,46.69268],[49.01136,46.72716],[48.52326,47.4102],[48.45173,47.40818],[48.15348,47.74545],[47.64973,47.76559],[47.41689,47.83687],[47.38731,47.68176],[47.12107,47.83687],[47.11516,48.27188],[46.49011,48.43019],[46.78392,48.95352],[47.00857,49.04921],[47.04658,49.19834],[46.78398,49.34026],[46.9078,49.86707],[47.18319,49.93721],[47.34589,50.09308],[47.30448,50.30894],[47.58551,50.47867],[48.10044,50.09242],[48.24519,49.86099],[48.42564,49.82283],[48.68352,49.89546],[48.90782,50.02281],[48.57946,50.63278],[48.86936,50.61589],[49.12673,50.78639],[49.41959,50.85927],[49.39001,51.09396],[49.76866,51.11067],[49.97277,51.2405],[50.26859,51.28677],[50.59695,51.61859],[51.26254,51.68466],[51.301,51.48799],[51.77431,51.49536],[51.8246,51.67916],[52.36119,51.74161],[52.54329,51.48444],[53.46165,51.49445],[53.69299,51.23466],[54.12248,51.11542],[54.46331,50.85554],[54.41894,50.61214],[54.55797,50.52006],[54.71476,50.61214],[54.56685,51.01958],[54.72067,51.03261],[55.67774,50.54508],[56.11398,50.7471],[56.17906,50.93204],[57.17302,51.11253],[57.44221,50.88354],[57.74986,50.93017],[57.75578,51.13852],[58.3208,51.15151],[58.87974,50.70852],[59.48928,50.64216],[59.51886,50.49937],[59.81172,50.54451],[60.01288,50.8163],[60.17262,50.83312],[60.31914,50.67705],[60.81833,50.6629],[61.4431,50.80679],[61.56889,51.23679],[61.6813,51.25716],[61.55114,51.32746],[61.50677,51.40687],[60.95655,51.48615],[60.92401,51.61124],[60.5424,51.61675],[60.36787,51.66815],[60.50986,51.7964],[60.09867,51.87135],[59.99809,51.98263],[59.91279,52.06924],[60.17253,52.25814],[60.17516,52.39457],[59.25033,52.46803],[59.22409,52.28437],[58.79644,52.43392],[58.94336,53.953],[59.70487,54.14846],[59.95217,54.85853],[57.95234,54.39672],[57.14829,54.84204],[57.25137,55.26262],[58.81825,55.03378],[59.49035,55.60486],[59.28419,56.15739],[57.51527,56.08729],[57.28024,56.87898],[58.07604,57.08308],[58.13789,57.68097],[58.81412,57.71602],[58.71104,58.07475],[59.40376,58.45822],[59.15636,59.14682],[58.3853,59.487],[59.50685,60.91162],[59.36223,61.3882],[59.61398,62.44915],[59.24834,63.01859],[59.80579,64.13948],[59.63945,64.78384],[60.74386,64.95767],[61.98014,65.72191],[66.1708,67.61252],[64.18965,69.94255],[76.13964,83.37843],[36.85549,84.09565],[32.07813,72.01005],[31.59909,70.16571],[30.84095,69.80584],[30.95011,69.54699],[30.52662,69.54699],[30.16363,69.65244],[29.97205,69.41623],[29.27631,69.2811],[29.26623,69.13794],[29.0444,69.0119],[28.91738,69.04774],[28.45957,68.91417],[28.78224,68.86696],[28.43941,68.53366],[28.62982,68.19816],[29.34179,68.06655],[29.66955,67.79872],[30.02041,67.67523],[29.91155,67.51507],[28.9839,66.94139],[29.91155,66.13863],[30.16363,65.66935],[29.97205,65.70256],[29.74013,65.64025],[29.84096,65.56945],[29.68972,65.31803],[29.61914,65.23791],[29.8813,65.22101],[29.84096,65.1109],[29.61914,65.05993],[29.68972,64.80789],[30.05271,64.79072],[30.12329,64.64862],[30.01238,64.57513],[30.06279,64.35782],[30.4762,64.25728],[30.55687,64.09036],[30.25437,63.83364],[29.98213,63.75795],[30.49637,63.46666],[31.23244,63.22239],[31.29294,63.09035],[31.58535,62.91642],[31.38369,62.66284],[31.10136,62.43042],[29.01829,61.17448],[28.82816,61.1233],[28.47974,60.93365],[27.77352,60.52722],[27.71177,60.3893],[27.44953,60.22766],[26.32936,60.00121]]]]}},{type:"Feature",properties:{wikidata:"Q1083368",nameEn:"Mainland Finland",country:"FI",groups:["EU","154","150","UN"],callingCodes:["358"]},geometry:{type:"MultiPolygon",coordinates:[[[[29.12697,69.69193],[28.36883,69.81658],[28.32849,69.88605],[27.97558,69.99671],[27.95542,70.0965],[27.57226,70.06215],[27.05802,69.92069],[26.64461,69.96565],[26.40261,69.91377],[25.96904,69.68397],[25.69679,69.27039],[25.75729,68.99383],[25.61613,68.89602],[25.42455,68.90328],[25.12206,68.78684],[25.10189,68.63307],[24.93048,68.61102],[24.90023,68.55579],[24.74898,68.65143],[24.18432,68.73936],[24.02299,68.81601],[23.781,68.84514],[23.68017,68.70276],[23.13064,68.64684],[22.53321,68.74393],[22.38367,68.71561],[22.27276,68.89514],[21.63833,69.27485],[21.27827,69.31281],[21.00732,69.22755],[20.98641,69.18809],[21.11099,69.10291],[21.05775,69.0356],[20.72171,69.11874],[20.55258,69.06069],[20.78802,69.03087],[20.91658,68.96764],[20.85104,68.93142],[20.90649,68.89696],[21.03001,68.88969],[22.00429,68.50692],[22.73028,68.40881],[23.10336,68.26551],[23.15377,68.14759],[23.26469,68.15134],[23.40081,68.05545],[23.65793,67.9497],[23.45627,67.85297],[23.54701,67.59306],[23.39577,67.46974],[23.75372,67.43688],[23.75372,67.29914],[23.54701,67.25435],[23.58735,67.20752],[23.56214,67.17038],[23.98563,66.84149],[23.98059,66.79585],[23.89488,66.772],[23.85959,66.56434],[23.63776,66.43568],[23.67591,66.3862],[23.64982,66.30603],[23.71339,66.21299],[23.90497,66.15802],[24.15791,65.85385],[24.14798,65.83466],[24.15107,65.81427],[24.14112,65.39731],[20.15877,63.06556],[19.23413,60.61414],[20.96741,60.71528],[21.15143,60.54555],[21.08159,60.20167],[21.02509,60.12142],[21.35468,59.67511],[20.5104,59.15546],[26.32936,60.00121],[27.44953,60.22766],[27.71177,60.3893],[27.77352,60.52722],[28.47974,60.93365],[28.82816,61.1233],[29.01829,61.17448],[31.10136,62.43042],[31.38369,62.66284],[31.58535,62.91642],[31.29294,63.09035],[31.23244,63.22239],[30.49637,63.46666],[29.98213,63.75795],[30.25437,63.83364],[30.55687,64.09036],[30.4762,64.25728],[30.06279,64.35782],[30.01238,64.57513],[30.12329,64.64862],[30.05271,64.79072],[29.68972,64.80789],[29.61914,65.05993],[29.84096,65.1109],[29.8813,65.22101],[29.61914,65.23791],[29.68972,65.31803],[29.84096,65.56945],[29.74013,65.64025],[29.97205,65.70256],[30.16363,65.66935],[29.91155,66.13863],[28.9839,66.94139],[29.91155,67.51507],[30.02041,67.67523],[29.66955,67.79872],[29.34179,68.06655],[28.62982,68.19816],[28.43941,68.53366],[28.78224,68.86696],[28.45957,68.91417],[28.91738,69.04774],[28.81248,69.11997],[28.8629,69.22395],[29.31664,69.47994],[29.12697,69.69193]]]]}},{type:"Feature",properties:{wikidata:"Q1184963",nameEn:"Alhucemas Islands",country:"ES",groups:["EU","Q191011","015","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[-3.90602,35.21494],[-3.88372,35.20767],[-3.89343,35.22728],[-3.90602,35.21494]]]]}},{type:"Feature",properties:{wikidata:"Q1298289",nameEn:"Egmont Islands",country:"GB",groups:["IO","BOTS","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[70.1848,-6.37445],[70.67958,-8.2663],[72.17991,-6.68509],[70.1848,-6.37445]]]]}},{type:"Feature",properties:{wikidata:"Q1352230",nameEn:"US Territories",country:"US",level:"subcountryGroup"},geometry:null},{type:"Feature",properties:{wikidata:"Q1451600",nameEn:"Overseas Countries and Territories of the EU",aliases:["OCT"],level:"subunion"},geometry:null},{type:"Feature",properties:{wikidata:"Q1544253",nameEn:"Great Chagos Bank",country:"GB",groups:["IO","BOTS","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[70.1848,-6.37445],[72.17991,-6.68509],[73.20573,-5.20727],[70.1848,-6.37445]]]]}},{type:"Feature",properties:{wikidata:"Q1585511",nameEn:"Salomon Atoll",country:"GB",groups:["IO","BOTS","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[72.09518,-5.61768],[73.20573,-5.20727],[72.12587,-4.02588],[72.09518,-5.61768]]]]}},{type:"Feature",properties:{wikidata:"Q1681727",nameEn:"Saint-Paul and Amsterdam",country:"FR",groups:["EU","TF","Q1451600","014","202","002","UN"],level:"subterritory"},geometry:{type:"MultiPolygon",coordinates:[[[[76.31747,-42.16264],[80.15867,-36.04977],[71.22311,-38.75287],[76.31747,-42.16264]]]]}},{type:"Feature",properties:{wikidata:"Q1901211",nameEn:"East Malaysia",country:"MY",groups:["Q36117","035","142","UN"],driveSide:"left",callingCodes:["60"]},geometry:{type:"MultiPolygon",coordinates:[[[[110.90339,7.52694],[109.82788,2.86812],[109.62558,1.99182],[109.53794,1.91771],[109.57923,1.80624],[109.66397,1.79972],[109.66397,1.60425],[110.35354,.98869],[110.49182,.88088],[110.62374,.873],[111.22979,1.08326],[111.55434,.97864],[111.82846,.99349],[111.94553,1.12016],[112.15679,1.17004],[112.2127,1.44135],[112.48648,1.56516],[113.021,1.57819],[113.01448,1.42832],[113.64677,1.23933],[114.03788,1.44787],[114.57892,1.5],[114.80706,1.92351],[114.80706,2.21665],[115.1721,2.49671],[115.11343,2.82879],[115.53713,3.14776],[115.58276,3.93499],[115.90217,4.37708],[117.25801,4.35108],[117.47313,4.18857],[117.67641,4.16535],[118.06469,4.16638],[118.93936,4.09009],[119.52945,5.35672],[117.98544,6.27477],[117.93857,6.89845],[117.17735,7.52841],[116.79524,7.43869],[115.02521,5.35005],[115.16236,5.01011],[115.15092,4.87604],[115.20737,4.8256],[115.27819,4.63661],[115.2851,4.42295],[115.36346,4.33563],[115.31275,4.30806],[115.09978,4.39123],[115.07737,4.53418],[115.04064,4.63706],[115.02278,4.74137],[115.02955,4.82087],[115.05038,4.90275],[114.99417,4.88201],[114.96982,4.81146],[114.88841,4.81905],[114.8266,4.75062],[114.77303,4.72871],[114.83189,4.42387],[114.88039,4.4257],[114.78539,4.12205],[114.64211,4.00694],[114.49922,4.13108],[114.4416,4.27588],[114.32176,4.2552],[114.32176,4.34942],[114.26876,4.49878],[114.15813,4.57],[114.07448,4.58441],[114.10166,4.76112],[110.90339,7.52694]]]]}},{type:"Feature",properties:{wikidata:"Q1973345",nameEn:"Peninsular Malaysia",country:"MY",groups:["035","142","UN"],driveSide:"left",callingCodes:["60"]},geometry:{type:"MultiPolygon",coordinates:[[[[102.46318,7.22462],[102.09086,6.23546],[102.08127,6.22679],[102.07732,6.193],[102.09182,6.14161],[102.01835,6.05407],[101.99209,6.04075],[101.97114,6.01992],[101.9714,6.00575],[101.94712,5.98421],[101.92819,5.85511],[101.91776,5.84269],[101.89188,5.8386],[101.80144,5.74505],[101.75074,5.79091],[101.69773,5.75881],[101.58019,5.93534],[101.25524,5.78633],[101.25755,5.71065],[101.14062,5.61613],[100.98815,5.79464],[101.02708,5.91013],[101.087,5.9193],[101.12388,6.11411],[101.06165,6.14161],[101.12618,6.19431],[101.10313,6.25617],[100.85884,6.24929],[100.81045,6.45086],[100.74822,6.46231],[100.74361,6.50811],[100.66986,6.45086],[100.43027,6.52389],[100.42351,6.51762],[100.41791,6.5189],[100.41152,6.52299],[100.35413,6.54932],[100.31929,6.65413],[100.32607,6.65933],[100.32671,6.66526],[100.31884,6.66423],[100.31618,6.66781],[100.30828,6.66462],[100.29651,6.68439],[100.19511,6.72559],[100.12,6.42105],[100.0756,6.4045],[99.91873,6.50233],[99.50117,6.44501],[99.31854,5.99868],[99.75778,3.86466],[103.03657,1.30383],[103.56591,1.19719],[103.62738,1.35255],[103.67468,1.43166],[103.7219,1.46108],[103.74161,1.4502],[103.76395,1.45183],[103.81181,1.47953],[103.86383,1.46288],[103.89565,1.42841],[103.93384,1.42926],[104.00131,1.42405],[104.02277,1.4438],[104.04622,1.44691],[104.07348,1.43322],[104.08871,1.42015],[104.09162,1.39694],[104.08072,1.35998],[104.12282,1.27714],[104.34728,1.33529],[104.56723,1.44271],[105.01437,3.24936],[102.46318,7.22462]]]]}},{type:"Feature",properties:{wikidata:"Q2093907",nameEn:"Three Kings Islands",country:"NZ",groups:["Q851132","053","009","UN"],driveSide:"left"},geometry:{type:"MultiPolygon",coordinates:[[[[174.17679,-32.62487],[170.93268,-32.97889],[171.97383,-34.64644],[174.17679,-32.62487]]]]}},{type:"Feature",properties:{wikidata:"Q2298216",nameEn:"Solander Islands",country:"NZ",groups:["Q851132","053","009","UN"],driveSide:"left"},geometry:{type:"MultiPolygon",coordinates:[[[[167.39068,-46.49187],[166.5534,-46.39484],[166.84561,-46.84889],[167.39068,-46.49187]]]]}},{type:"Feature",properties:{wikidata:"Q2872203",nameEn:"Mainland Australia",country:"AU",groups:["053","009","UN"],level:"subcountryGroup",driveSide:"left",callingCodes:["61"]},geometry:{type:"MultiPolygon",coordinates:[[[[88.16419,-23.49578],[123.64533,-39.13605],[159.74028,-39.1978],[159.76765,-29.76946],[154.02855,-24.43238],[152.93188,-20.92631],[147.69992,-17.5933],[145.2855,-9.62524],[143.87386,-9.02382],[143.29772,-9.33993],[142.48658,-9.36754],[142.19246,-9.15378],[141.88934,-9.36111],[141.01842,-9.35091],[135.49042,-9.2276],[127.55165,-9.05052],[125.29076,-12.33139],[88.16419,-23.49578]]]]}},{type:"Feature",properties:{wikidata:"Q2914565",nameEn:"Autonomous Regions of Portugal",country:"PT",level:"subcountryGroup"},geometry:null},{type:"Feature",properties:{wikidata:"Q2915956",nameEn:"Mainland Portugal",country:"PT",groups:["Q12837","EU","039","150","UN"],level:"subcountryGroup",callingCodes:["351"]},geometry:{type:"MultiPolygon",coordinates:[[[[-10.39881,36.12218],[-7.37282,36.96896],[-7.39769,37.16868],[-7.41133,37.20314],[-7.41854,37.23813],[-7.43227,37.25152],[-7.43974,37.38913],[-7.46878,37.47127],[-7.51759,37.56119],[-7.41981,37.75729],[-7.33441,37.81193],[-7.27314,37.90145],[-7.24544,37.98884],[-7.12648,38.00296],[-7.10366,38.04404],[-7.05966,38.01966],[-7.00375,38.01914],[-6.93418,38.21454],[-7.09389,38.17227],[-7.15581,38.27597],[-7.32529,38.44336],[-7.265,38.61674],[-7.26174,38.72107],[-7.03848,38.87221],[-7.051,38.907],[-6.95211,39.0243],[-6.97004,39.07619],[-7.04011,39.11919],[-7.10692,39.10275],[-7.14929,39.11287],[-7.12811,39.17101],[-7.23566,39.20132],[-7.23403,39.27579],[-7.3149,39.34857],[-7.2927,39.45847],[-7.49477,39.58794],[-7.54121,39.66717],[-7.33507,39.64569],[-7.24707,39.66576],[-7.01613,39.66877],[-6.97492,39.81488],[-6.91463,39.86618],[-6.86737,40.01986],[-6.94233,40.10716],[-7.00589,40.12087],[-7.02544,40.18564],[-7.00426,40.23169],[-6.86085,40.26776],[-6.86085,40.2976],[-6.80218,40.33239],[-6.78426,40.36468],[-6.84618,40.42177],[-6.84944,40.46394],[-6.7973,40.51723],[-6.80218,40.55067],[-6.84292,40.56801],[-6.79567,40.65955],[-6.82826,40.74603],[-6.82337,40.84472],[-6.79892,40.84842],[-6.80707,40.88047],[-6.84292,40.89771],[-6.8527,40.93958],[-6.9357,41.02888],[-6.913,41.03922],[-6.88843,41.03027],[-6.84781,41.02692],[-6.80942,41.03629],[-6.79241,41.05397],[-6.75655,41.10187],[-6.77319,41.13049],[-6.69711,41.1858],[-6.68286,41.21641],[-6.65046,41.24725],[-6.55937,41.24417],[-6.38551,41.35274],[-6.38553,41.38655],[-6.3306,41.37677],[-6.26777,41.48796],[-6.19128,41.57638],[-6.29863,41.66432],[-6.44204,41.68258],[-6.49907,41.65823],[-6.54633,41.68623],[-6.56426,41.74219],[-6.51374,41.8758],[-6.56752,41.88429],[-6.5447,41.94371],[-6.58544,41.96674],[-6.61967,41.94008],[-6.75004,41.94129],[-6.76959,41.98734],[-6.81196,41.99097],[-6.82174,41.94493],[-6.94396,41.94403],[-6.95537,41.96553],[-6.98144,41.9728],[-7.01078,41.94977],[-7.07596,41.94977],[-7.08574,41.97401],[-7.14115,41.98855],[-7.18549,41.97515],[-7.18677,41.88793],[-7.32366,41.8406],[-7.37092,41.85031],[-7.42864,41.80589],[-7.42854,41.83262],[-7.44759,41.84451],[-7.45566,41.86488],[-7.49803,41.87095],[-7.52737,41.83939],[-7.62188,41.83089],[-7.58603,41.87944],[-7.65774,41.88308],[-7.69848,41.90977],[-7.84188,41.88065],[-7.88055,41.84571],[-7.88751,41.92553],[-7.90707,41.92432],[-7.92336,41.8758],[-7.9804,41.87337],[-8.01136,41.83453],[-8.0961,41.81024],[-8.16455,41.81753],[-8.16944,41.87944],[-8.19551,41.87459],[-8.2185,41.91237],[-8.16232,41.9828],[-8.08796,42.01398],[-8.08847,42.05767],[-8.11729,42.08537],[-8.18178,42.06436],[-8.19406,42.12141],[-8.18947,42.13853],[-8.1986,42.15402],[-8.22406,42.1328],[-8.24681,42.13993],[-8.2732,42.12396],[-8.29809,42.106],[-8.32161,42.10218],[-8.33912,42.08358],[-8.36353,42.09065],[-8.38323,42.07683],[-8.40143,42.08052],[-8.42512,42.07199],[-8.44123,42.08218],[-8.48185,42.0811],[-8.52837,42.07658],[-8.5252,42.06264],[-8.54563,42.0537],[-8.58086,42.05147],[-8.59493,42.05708],[-8.63791,42.04691],[-8.64626,42.03668],[-8.65832,42.02972],[-8.6681,41.99703],[-8.69071,41.98862],[-8.7478,41.96282],[-8.74606,41.9469],[-8.75712,41.92833],[-8.81794,41.90375],[-8.87157,41.86488],[-11.19304,41.83075],[-10.39881,36.12218]]]]}},{type:"Feature",properties:{wikidata:"Q3311985",nameEn:"Guernsey",country:"GB",groups:["GG","830","Q185086","154","150","UN"],level:"subterritory",driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44 01481"]},geometry:{type:"MultiPolygon",coordinates:[[[[-2.49556,49.79012],[-3.28154,49.57329],[-2.65349,49.15373],[-2.36485,49.48223],[-2.49556,49.79012]]]]}},{type:"Feature",properties:{wikidata:"Q3320166",nameEn:"Outermost Regions of the EU",aliases:["OMR"],level:"subunion"},geometry:null},{type:"Feature",properties:{wikidata:"Q3336843",nameEn:"Countries of the United Kingdom",aliases:["GB-UKM"],country:"GB",level:"subcountryGroup"},geometry:null},{type:"Feature",properties:{wikidata:"Q6736667",nameEn:"Mainland India",country:"IN",groups:["034","142","UN"],driveSide:"left",callingCodes:["91"]},geometry:{type:"MultiPolygon",coordinates:[[[[89.08044,21.41871],[89.07114,22.15335],[88.9367,22.58527],[88.94614,22.66941],[88.9151,22.75228],[88.96713,22.83346],[88.87063,22.95235],[88.88327,23.03885],[88.86377,23.08759],[88.99148,23.21134],[88.71133,23.2492],[88.79254,23.46028],[88.79351,23.50535],[88.74841,23.47361],[88.56507,23.64044],[88.58087,23.87105],[88.66189,23.87607],[88.73743,23.91751],[88.6976,24.14703],[88.74841,24.1959],[88.68801,24.31464],[88.50934,24.32474],[88.12296,24.51301],[88.08786,24.63232],[88.00683,24.66477],[88.15515,24.85806],[88.14004,24.93529],[88.21832,24.96642],[88.27325,24.88796],[88.33917,24.86803],[88.46277,25.07468],[88.44766,25.20149],[88.94067,25.18534],[89.00463,25.26583],[89.01105,25.30303],[88.85278,25.34679],[88.81296,25.51546],[88.677,25.46959],[88.4559,25.59227],[88.45103,25.66245],[88.242,25.80811],[88.13138,25.78773],[88.08804,25.91334],[88.16581,26.0238],[88.1844,26.14417],[88.34757,26.22216],[88.35153,26.29123],[88.51649,26.35923],[88.48749,26.45855],[88.36938,26.48683],[88.35153,26.45241],[88.33093,26.48929],[88.41196,26.63837],[88.4298,26.54489],[88.62144,26.46783],[88.69485,26.38353],[88.67837,26.26291],[88.78961,26.31093],[88.85004,26.23211],[89.05328,26.2469],[88.91321,26.37984],[88.92357,26.40711],[88.95612,26.4564],[89.08899,26.38845],[89.15869,26.13708],[89.35953,26.0077],[89.53515,26.00382],[89.57101,25.9682],[89.63968,26.22595],[89.70201,26.15138],[89.73581,26.15818],[89.77865,26.08387],[89.77728,26.04254],[89.86592,25.93115],[89.80585,25.82489],[89.84388,25.70042],[89.86129,25.61714],[89.81208,25.37244],[89.84086,25.31854],[89.83371,25.29548],[89.87629,25.28337],[89.90478,25.31038],[90.1155,25.22686],[90.40034,25.1534],[90.65042,25.17788],[90.87427,25.15799],[91.25517,25.20677],[91.63648,25.12846],[92.0316,25.1834],[92.33957,25.07593],[92.39147,25.01471],[92.49887,24.88796],[92.38626,24.86055],[92.25854,24.9191],[92.15796,24.54435],[92.11662,24.38997],[91.96603,24.3799],[91.89258,24.14674],[91.82596,24.22345],[91.76004,24.23848],[91.73257,24.14703],[91.65292,24.22095],[91.63782,24.1132],[91.55542,24.08687],[91.37414,24.10693],[91.35741,23.99072],[91.29587,24.0041],[91.22308,23.89616],[91.25192,23.83463],[91.15579,23.6599],[91.28293,23.37538],[91.36453,23.06612],[91.40848,23.07117],[91.4035,23.27522],[91.46615,23.2328],[91.54993,23.01051],[91.61571,22.93929],[91.7324,23.00043],[91.81634,23.08001],[91.76417,23.26619],[91.84789,23.42235],[91.95642,23.47361],[91.95093,23.73284],[92.04706,23.64229],[92.15417,23.73409],[92.26541,23.70392],[92.38214,23.28705],[92.37665,22.9435],[92.5181,22.71441],[92.60029,22.1522],[92.56616,22.13554],[92.60949,21.97638],[92.67532,22.03547],[92.70416,22.16017],[92.86208,22.05456],[92.89504,21.95143],[92.93899,22.02656],[92.99804,21.98964],[92.99255,22.05965],[93.04885,22.20595],[93.15734,22.18687],[93.14224,22.24535],[93.19991,22.25425],[93.18206,22.43716],[93.13537,22.45873],[93.11477,22.54374],[93.134,22.59573],[93.09417,22.69459],[93.134,22.92498],[93.12988,23.05772],[93.2878,23.00464],[93.38478,23.13698],[93.36862,23.35426],[93.38781,23.36139],[93.39981,23.38828],[93.38805,23.4728],[93.43475,23.68299],[93.3908,23.7622],[93.3908,23.92925],[93.36059,23.93176],[93.32351,24.04468],[93.34735,24.10151],[93.41415,24.07854],[93.46633,23.97067],[93.50616,23.94432],[93.62871,24.00922],[93.75952,24.0003],[93.80279,23.92549],[93.92089,23.95812],[94.14081,23.83333],[94.30215,24.23752],[94.32362,24.27692],[94.45279,24.56656],[94.50729,24.59281],[94.5526,24.70764],[94.60204,24.70889],[94.73937,25.00545],[94.74212,25.13606],[94.57458,25.20318],[94.68032,25.47003],[94.80117,25.49359],[95.18556,26.07338],[95.11428,26.1019],[95.12801,26.38397],[95.05798,26.45408],[95.23513,26.68499],[95.30339,26.65372],[95.437,26.7083],[95.81603,27.01335],[95.93002,27.04149],[96.04949,27.19428],[96.15591,27.24572],[96.40779,27.29818],[96.55761,27.29928],[96.73888,27.36638],[96.88445,27.25046],[96.85287,27.2065],[96.89132,27.17474],[97.14675,27.09041],[97.17422,27.14052],[96.91431,27.45752],[96.90112,27.62149],[97.29919,27.92233],[97.35824,27.87256],[97.38845,28.01329],[97.35412,28.06663],[97.31292,28.06784],[97.34547,28.21385],[97.1289,28.3619],[96.98882,28.32564],[96.88445,28.39452],[96.85561,28.4875],[96.6455,28.61657],[96.48895,28.42955],[96.40929,28.51526],[96.61391,28.72742],[96.3626,29.10607],[96.20467,29.02325],[96.18682,29.11087],[96.31316,29.18643],[96.05361,29.38167],[95.84899,29.31464],[95.75149,29.32063],[95.72086,29.20797],[95.50842,29.13487],[95.41091,29.13007],[95.3038,29.13847],[95.26122,29.07727],[95.2214,29.10727],[95.11291,29.09527],[95.0978,29.14446],[94.81353,29.17804],[94.69318,29.31739],[94.2752,29.11687],[94.35897,29.01965],[93.72797,28.68821],[93.44621,28.67189],[93.18069,28.50319],[93.14635,28.37035],[92.93075,28.25671],[92.67486,28.15018],[92.65472,28.07632],[92.73025,28.05814],[92.7275,27.98662],[92.42538,27.80092],[92.32101,27.79363],[92.27432,27.89077],[91.87057,27.7195],[91.84722,27.76325],[91.6469,27.76358],[91.55819,27.6144],[91.65007,27.48287],[92.01132,27.47352],[92.12019,27.27829],[92.04702,27.26861],[92.03457,27.07334],[92.11863,26.893],[92.05523,26.8692],[91.83181,26.87318],[91.50067,26.79223],[90.67715,26.77215],[90.48504,26.8594],[90.39271,26.90704],[90.30402,26.85098],[90.04535,26.72422],[89.86124,26.73307],[89.63369,26.74402],[89.42349,26.83727],[89.3901,26.84225],[89.38319,26.85963],[89.37913,26.86224],[89.1926,26.81329],[89.12825,26.81661],[89.09554,26.89089],[88.95807,26.92668],[88.92301,26.99286],[88.8714,26.97488],[88.86984,27.10937],[88.74219,27.144],[88.91901,27.32483],[88.82981,27.38814],[88.77517,27.45415],[88.88091,27.85192],[88.83559,28.01936],[88.63235,28.12356],[88.54858,28.06057],[88.25332,27.9478],[88.1278,27.95417],[88.13378,27.88015],[88.1973,27.85067],[88.19107,27.79285],[88.04008,27.49223],[88.07277,27.43007],[88.01646,27.21612],[88.01587,27.21388],[87.9887,27.11045],[88.11719,26.98758],[88.13422,26.98705],[88.12302,26.95324],[88.19107,26.75516],[88.1659,26.68177],[88.16452,26.64111],[88.09963,26.54195],[88.09414,26.43732],[88.00895,26.36029],[87.90115,26.44923],[87.89085,26.48565],[87.84193,26.43663],[87.7918,26.46737],[87.76004,26.40711],[87.67893,26.43501],[87.66803,26.40294],[87.59175,26.38342],[87.55274,26.40596],[87.51571,26.43106],[87.46566,26.44058],[87.37314,26.40815],[87.34568,26.34787],[87.26568,26.37294],[87.26587,26.40592],[87.24682,26.4143],[87.18863,26.40558],[87.14751,26.40542],[87.09147,26.45039],[87.0707,26.58571],[87.04691,26.58685],[87.01559,26.53228],[86.95912,26.52076],[86.94543,26.52076],[86.82898,26.43919],[86.76797,26.45892],[86.74025,26.42386],[86.69124,26.45169],[86.62686,26.46891],[86.61313,26.48658],[86.57073,26.49825],[86.54258,26.53819],[86.49726,26.54218],[86.31564,26.61925],[86.26235,26.61886],[86.22513,26.58863],[86.13596,26.60651],[86.02729,26.66756],[85.8492,26.56667],[85.85126,26.60866],[85.83126,26.61134],[85.76907,26.63076],[85.72315,26.67471],[85.73483,26.79613],[85.66239,26.84822],[85.61621,26.86721],[85.59461,26.85161],[85.5757,26.85955],[85.56471,26.84133],[85.47752,26.79292],[85.34302,26.74954],[85.21159,26.75933],[85.18046,26.80519],[85.19291,26.86909],[85.15883,26.86966],[85.02635,26.85381],[85.05592,26.88991],[85.00536,26.89523],[84.97186,26.9149],[84.96687,26.95599],[84.85754,26.98984],[84.82913,27.01989],[84.793,26.9968],[84.64496,27.04669],[84.69166,27.21294],[84.62161,27.33885],[84.29315,27.39],[84.25735,27.44941],[84.21376,27.45218],[84.10791,27.52399],[84.02229,27.43836],[83.93306,27.44939],[83.86182,27.4241],[83.85595,27.35797],[83.61288,27.47013],[83.39495,27.4798],[83.38872,27.39276],[83.35136,27.33885],[83.29999,27.32778],[83.2673,27.36235],[83.27197,27.38309],[83.19413,27.45632],[82.94938,27.46036],[82.93261,27.50328],[82.74119,27.49838],[82.70378,27.72122],[82.46405,27.6716],[82.06554,27.92222],[81.97214,27.93322],[81.91223,27.84995],[81.47867,28.08303],[81.48179,28.12148],[81.38683,28.17638],[81.32923,28.13521],[81.19847,28.36284],[81.03471,28.40054],[80.55142,28.69182],[80.50575,28.6706],[80.52443,28.54897],[80.44504,28.63098],[80.37188,28.63371],[80.12125,28.82346],[80.06957,28.82763],[80.05743,28.91479],[80.18085,29.13649],[80.23178,29.11626],[80.26602,29.13938],[80.24112,29.21414],[80.28626,29.20327],[80.31428,29.30784],[80.24322,29.44299],[80.37939,29.57098],[80.41858,29.63581],[80.38428,29.68513],[80.36803,29.73865],[80.41554,29.79451],[80.43458,29.80466],[80.48997,29.79566],[80.56247,29.86661],[80.57179,29.91422],[80.60226,29.95732],[80.67076,29.95732],[80.8778,30.13384],[80.86673,30.17321],[80.91143,30.22173],[80.92547,30.17193],[81.03953,30.20059],[80.83343,30.32023],[80.54504,30.44936],[80.20721,30.58541],[79.93255,30.88288],[79.59884,30.93943],[79.30694,31.17357],[79.14016,31.43403],[79.01931,31.42817],[78.89344,31.30481],[78.77898,31.31209],[78.71032,31.50197],[78.84516,31.60631],[78.69933,31.78723],[78.78036,31.99478],[78.74404,32.00384],[78.68754,32.10256],[78.49609,32.2762],[78.4645,32.45367],[78.38897,32.53938],[78.73916,32.69438],[78.7831,32.46873],[78.96713,32.33655],[78.99322,32.37948],[79.0979,32.38051],[79.13174,32.47766],[79.26768,32.53277],[79.46562,32.69668],[79.14016,33.02545],[79.15252,33.17156],[78.73636,33.56521],[78.67599,33.66445],[78.77349,33.73871],[78.73367,34.01121],[78.65657,34.03195],[78.66225,34.08858],[78.91769,34.15452],[78.99802,34.3027],[79.05364,34.32482],[78.74465,34.45174],[78.56475,34.50835],[78.54964,34.57283],[78.27781,34.61484],[78.18435,34.7998],[78.22692,34.88771],[78.00033,35.23954],[78.03466,35.3785],[78.11664,35.48022],[77.80532,35.52058],[77.70232,35.46244],[77.44277,35.46132],[76.96624,35.5932],[76.84539,35.67356],[76.77323,35.66062],[76.75475,35.52617],[76.85088,35.39754],[76.93465,35.39866],[77.11796,35.05419],[76.99251,34.93349],[76.87193,34.96906],[76.74514,34.92488],[76.74377,34.84039],[76.67648,34.76371],[76.47186,34.78965],[76.15463,34.6429],[76.04614,34.67566],[75.75438,34.51827],[75.38009,34.55021],[75.01479,34.64629],[74.6663,34.703],[74.58083,34.77386],[74.31239,34.79626],[74.12897,34.70073],[73.96423,34.68244],[73.93401,34.63386],[73.93951,34.57169],[73.89419,34.54568],[73.88732,34.48911],[73.74999,34.3781],[73.74862,34.34183],[73.8475,34.32935],[73.90517,34.35317],[73.98208,34.2522],[73.90677,34.10504],[73.88732,34.05105],[73.91341,34.01235],[74.21554,34.03853],[74.25262,34.01577],[74.26086,33.92237],[74.14001,33.83002],[74.05898,33.82089],[74.00891,33.75437],[73.96423,33.73071],[73.98968,33.66155],[73.97367,33.64061],[74.03576,33.56718],[74.10115,33.56392],[74.18121,33.4745],[74.17983,33.3679],[74.08782,33.26232],[74.01366,33.25199],[74.02144,33.18908],[74.15374,33.13477],[74.17571,33.07495],[74.31854,33.02891],[74.34875,32.97823],[74.31227,32.92795],[74.41467,32.90563],[74.45312,32.77755],[74.6289,32.75561],[74.64675,32.82604],[74.7113,32.84219],[74.65345,32.71225],[74.69542,32.66792],[74.64424,32.60985],[74.65251,32.56416],[74.67431,32.56676],[74.68362,32.49298],[74.84725,32.49075],[74.97634,32.45367],[75.03265,32.49538],[75.28259,32.36556],[75.38046,32.26836],[75.25649,32.10187],[75.00793,32.03786],[74.9269,32.0658],[74.86236,32.04485],[74.79919,31.95983],[74.58907,31.87824],[74.47771,31.72227],[74.57498,31.60382],[74.61517,31.55698],[74.59319,31.50197],[74.64713,31.45605],[74.59773,31.4136],[74.53223,31.30321],[74.51629,31.13829],[74.56023,31.08303],[74.60281,31.10419],[74.60006,31.13711],[74.6852,31.12771],[74.67971,31.05479],[74.5616,31.04153],[73.88993,30.36305],[73.95736,30.28466],[73.97225,30.19829],[73.80299,30.06969],[73.58665,30.01848],[73.3962,29.94707],[73.28094,29.56646],[73.05886,29.1878],[73.01337,29.16422],[72.94272,29.02487],[72.40402,28.78283],[72.29495,28.66367],[72.20329,28.3869],[71.9244,28.11555],[71.89921,27.96035],[70.79054,27.68423],[70.60927,28.02178],[70.37307,28.01208],[70.12502,27.8057],[70.03136,27.56627],[69.58519,27.18109],[69.50904,26.74892],[69.88555,26.56836],[70.05584,26.60398],[70.17532,26.55362],[70.17532,26.24118],[70.08193,26.08094],[70.0985,25.93238],[70.2687,25.71156],[70.37444,25.67443],[70.53649,25.68928],[70.60378,25.71898],[70.67382,25.68186],[70.66695,25.39314],[70.89148,25.15064],[70.94002,24.92843],[71.09405,24.69017],[70.97594,24.60904],[71.00341,24.46038],[71.12838,24.42662],[71.04461,24.34657],[70.94985,24.3791],[70.85784,24.30903],[70.88393,24.27398],[70.71502,24.23517],[70.57906,24.27774],[70.5667,24.43787],[70.11712,24.30915],[70.03428,24.172],[69.73335,24.17007],[69.59579,24.29777],[69.29778,24.28712],[69.19341,24.25646],[69.07806,24.29777],[68.97781,24.26021],[68.90914,24.33156],[68.7416,24.31904],[68.74643,23.97027],[68.39339,23.96838],[68.20763,23.85849],[68.11329,23.53945],[76.59015,5.591],[79.50447,8.91876],[79.42124,9.80115],[80.48418,10.20786],[89.08044,21.41871]]]]}},{type:"Feature",properties:{wikidata:"Q9143535",nameEn:"Akrotiri",country:"GB",groups:["Q644636","Q37362","BOTS","145","142","UN"],level:"subterritory",driveSide:"left",callingCodes:["357"]},geometry:{type:"MultiPolygon",coordinates:[[[[32.86014,34.70585],[32.82717,34.70622],[32.79433,34.67883],[32.76136,34.68318],[32.75515,34.64985],[32.74412,34.43926],[33.26744,34.49942],[33.0138,34.64424],[32.96968,34.64046],[32.96718,34.63446],[32.95891,34.62919],[32.95323,34.64075],[32.95471,34.64528],[32.94976,34.65204],[32.94796,34.6587],[32.95325,34.66462],[32.97079,34.66112],[32.97736,34.65277],[32.99014,34.65518],[32.98668,34.67268],[32.99135,34.68061],[32.95539,34.68471],[32.94683,34.67907],[32.94379,34.67111],[32.93693,34.67027],[32.93449,34.66241],[32.92807,34.66736],[32.93043,34.67091],[32.91398,34.67343],[32.9068,34.66102],[32.86167,34.68734],[32.86014,34.70585]]]]}},{type:"Feature",properties:{wikidata:"Q9206745",nameEn:"Dhekelia",country:"GB",groups:["Q644636","Q37362","BOTS","145","142","UN"],level:"subterritory",driveSide:"left",callingCodes:["357"]},geometry:{type:"MultiPolygon",coordinates:[[[[33.70575,34.97947],[33.83531,34.73974],[33.98684,34.76642],[33.90075,34.96623],[33.86432,34.97592],[33.84811,34.97075],[33.83505,34.98108],[33.85621,34.98956],[33.85891,35.001],[33.85216,35.00579],[33.84045,35.00616],[33.82875,35.01685],[33.83055,35.02865],[33.81524,35.04192],[33.8012,35.04786],[33.82051,35.0667],[33.8355,35.05777],[33.85261,35.0574],[33.88367,35.07877],[33.89485,35.06873],[33.90247,35.07686],[33.91299,35.07579],[33.91789,35.08688],[33.89853,35.11377],[33.88737,35.11408],[33.88943,35.12007],[33.88561,35.12449],[33.87224,35.12293],[33.87622,35.10457],[33.87097,35.09389],[33.87479,35.08881],[33.8541,35.07201],[33.84168,35.06823],[33.82067,35.07826],[33.78581,35.05104],[33.76106,35.04253],[33.73824,35.05321],[33.71482,35.03722],[33.70209,35.04882],[33.7161,35.07279],[33.70861,35.07644],[33.69095,35.06237],[33.68474,35.06602],[33.67742,35.05963],[33.67678,35.03866],[33.69938,35.03123],[33.69731,35.01754],[33.71514,35.00294],[33.70639,34.99303],[33.70575,34.97947]],[[33.77312,34.9976],[33.77553,34.99518],[33.78516,34.99582],[33.79191,34.98914],[33.78917,34.98854],[33.78571,34.98951],[33.78318,34.98699],[33.78149,34.98854],[33.77843,34.988],[33.7778,34.98981],[33.76738,34.99188],[33.76605,34.99543],[33.75682,34.99916],[33.75994,35.00113],[33.77312,34.9976]],[[33.74144,35.01053],[33.7343,35.01178],[33.73781,35.02181],[33.74265,35.02329],[33.74983,35.02274],[33.7492,35.01319],[33.74144,35.01053]]]]}},{type:"Feature",properties:{wikidata:"Q16390686",nameEn:"Peninsular Spain",country:"ES",groups:["Q12837","EU","039","150","UN"],callingCodes:["34"]},geometry:{type:"MultiPolygon",coordinates:[[[[3.75438,42.33445],[3.17156,42.43545],[3.11379,42.43646],[3.10027,42.42621],[3.08167,42.42748],[3.03734,42.47363],[2.96518,42.46692],[2.94283,42.48174],[2.92107,42.4573],[2.88413,42.45938],[2.86983,42.46843],[2.85675,42.45444],[2.84335,42.45724],[2.77464,42.41046],[2.75497,42.42578],[2.72056,42.42298],[2.65311,42.38771],[2.6747,42.33974],[2.57934,42.35808],[2.55516,42.35351],[2.54382,42.33406],[2.48457,42.33933],[2.43508,42.37568],[2.43299,42.39423],[2.38504,42.39977],[2.25551,42.43757],[2.20578,42.41633],[2.16599,42.42314],[2.12789,42.41291],[2.11621,42.38393],[2.06241,42.35906],[2.00488,42.35399],[1.96482,42.37787],[1.9574,42.42401],[1.94084,42.43039],[1.94061,42.43333],[1.94292,42.44316],[1.93663,42.45439],[1.88853,42.4501],[1.83037,42.48395],[1.76335,42.48863],[1.72515,42.50338],[1.70571,42.48867],[1.66826,42.50779],[1.65674,42.47125],[1.58933,42.46275],[1.57953,42.44957],[1.55937,42.45808],[1.55073,42.43299],[1.5127,42.42959],[1.44529,42.43724],[1.43838,42.47848],[1.41648,42.48315],[1.46661,42.50949],[1.44759,42.54431],[1.41245,42.53539],[1.4234,42.55959],[1.44529,42.56722],[1.42512,42.58292],[1.44197,42.60217],[1.35562,42.71944],[1.15928,42.71407],[1.0804,42.78569],[.98292,42.78754],[.96166,42.80629],[.93089,42.79154],[.711,42.86372],[.66121,42.84021],[.65421,42.75872],[.67873,42.69458],[.40214,42.69779],[.36251,42.72282],[.29407,42.67431],[.25336,42.7174],[.17569,42.73424],[-.02468,42.68513],[-.10519,42.72761],[-.16141,42.79535],[-.17939,42.78974],[-.3122,42.84788],[-.38833,42.80132],[-.41319,42.80776],[-.44334,42.79939],[-.50863,42.82713],[-.55497,42.77846],[-.67637,42.88303],[-.69837,42.87945],[-.72608,42.89318],[-.73422,42.91228],[-.72037,42.92541],[-.75478,42.96916],[-.81652,42.95166],[-.97133,42.96239],[-1.00963,42.99279],[-1.10333,43.0059],[-1.22881,43.05534],[-1.25244,43.04164],[-1.30531,43.06859],[-1.30052,43.09581],[-1.27118,43.11961],[-1.32209,43.1127],[-1.34419,43.09665],[-1.35272,43.02658],[-1.44067,43.047],[-1.47555,43.08372],[-1.41562,43.12815],[-1.3758,43.24511],[-1.40942,43.27272],[-1.45289,43.27049],[-1.50992,43.29481],[-1.55963,43.28828],[-1.57674,43.25269],[-1.61341,43.25269],[-1.63052,43.28591],[-1.62481,43.30726],[-1.69407,43.31378],[-1.73074,43.29481],[-1.7397,43.32979],[-1.75079,43.3317],[-1.75334,43.34107],[-1.77068,43.34396],[-1.78714,43.35476],[-1.78332,43.36399],[-1.79319,43.37497],[-1.77289,43.38957],[-1.81005,43.59738],[-10.14298,44.17365],[-11.19304,41.83075],[-8.87157,41.86488],[-8.81794,41.90375],[-8.75712,41.92833],[-8.74606,41.9469],[-8.7478,41.96282],[-8.69071,41.98862],[-8.6681,41.99703],[-8.65832,42.02972],[-8.64626,42.03668],[-8.63791,42.04691],[-8.59493,42.05708],[-8.58086,42.05147],[-8.54563,42.0537],[-8.5252,42.06264],[-8.52837,42.07658],[-8.48185,42.0811],[-8.44123,42.08218],[-8.42512,42.07199],[-8.40143,42.08052],[-8.38323,42.07683],[-8.36353,42.09065],[-8.33912,42.08358],[-8.32161,42.10218],[-8.29809,42.106],[-8.2732,42.12396],[-8.24681,42.13993],[-8.22406,42.1328],[-8.1986,42.15402],[-8.18947,42.13853],[-8.19406,42.12141],[-8.18178,42.06436],[-8.11729,42.08537],[-8.08847,42.05767],[-8.08796,42.01398],[-8.16232,41.9828],[-8.2185,41.91237],[-8.19551,41.87459],[-8.16944,41.87944],[-8.16455,41.81753],[-8.0961,41.81024],[-8.01136,41.83453],[-7.9804,41.87337],[-7.92336,41.8758],[-7.90707,41.92432],[-7.88751,41.92553],[-7.88055,41.84571],[-7.84188,41.88065],[-7.69848,41.90977],[-7.65774,41.88308],[-7.58603,41.87944],[-7.62188,41.83089],[-7.52737,41.83939],[-7.49803,41.87095],[-7.45566,41.86488],[-7.44759,41.84451],[-7.42854,41.83262],[-7.42864,41.80589],[-7.37092,41.85031],[-7.32366,41.8406],[-7.18677,41.88793],[-7.18549,41.97515],[-7.14115,41.98855],[-7.08574,41.97401],[-7.07596,41.94977],[-7.01078,41.94977],[-6.98144,41.9728],[-6.95537,41.96553],[-6.94396,41.94403],[-6.82174,41.94493],[-6.81196,41.99097],[-6.76959,41.98734],[-6.75004,41.94129],[-6.61967,41.94008],[-6.58544,41.96674],[-6.5447,41.94371],[-6.56752,41.88429],[-6.51374,41.8758],[-6.56426,41.74219],[-6.54633,41.68623],[-6.49907,41.65823],[-6.44204,41.68258],[-6.29863,41.66432],[-6.19128,41.57638],[-6.26777,41.48796],[-6.3306,41.37677],[-6.38553,41.38655],[-6.38551,41.35274],[-6.55937,41.24417],[-6.65046,41.24725],[-6.68286,41.21641],[-6.69711,41.1858],[-6.77319,41.13049],[-6.75655,41.10187],[-6.79241,41.05397],[-6.80942,41.03629],[-6.84781,41.02692],[-6.88843,41.03027],[-6.913,41.03922],[-6.9357,41.02888],[-6.8527,40.93958],[-6.84292,40.89771],[-6.80707,40.88047],[-6.79892,40.84842],[-6.82337,40.84472],[-6.82826,40.74603],[-6.79567,40.65955],[-6.84292,40.56801],[-6.80218,40.55067],[-6.7973,40.51723],[-6.84944,40.46394],[-6.84618,40.42177],[-6.78426,40.36468],[-6.80218,40.33239],[-6.86085,40.2976],[-6.86085,40.26776],[-7.00426,40.23169],[-7.02544,40.18564],[-7.00589,40.12087],[-6.94233,40.10716],[-6.86737,40.01986],[-6.91463,39.86618],[-6.97492,39.81488],[-7.01613,39.66877],[-7.24707,39.66576],[-7.33507,39.64569],[-7.54121,39.66717],[-7.49477,39.58794],[-7.2927,39.45847],[-7.3149,39.34857],[-7.23403,39.27579],[-7.23566,39.20132],[-7.12811,39.17101],[-7.14929,39.11287],[-7.10692,39.10275],[-7.04011,39.11919],[-6.97004,39.07619],[-6.95211,39.0243],[-7.051,38.907],[-7.03848,38.87221],[-7.26174,38.72107],[-7.265,38.61674],[-7.32529,38.44336],[-7.15581,38.27597],[-7.09389,38.17227],[-6.93418,38.21454],[-7.00375,38.01914],[-7.05966,38.01966],[-7.10366,38.04404],[-7.12648,38.00296],[-7.24544,37.98884],[-7.27314,37.90145],[-7.33441,37.81193],[-7.41981,37.75729],[-7.51759,37.56119],[-7.46878,37.47127],[-7.43974,37.38913],[-7.43227,37.25152],[-7.41854,37.23813],[-7.41133,37.20314],[-7.39769,37.16868],[-7.37282,36.96896],[-7.2725,35.73269],[-5.10878,36.05227],[-2.27707,35.35051],[3.75438,42.33445]],[[-5.27801,36.14942],[-5.34064,36.03744],[-5.40526,36.15488],[-5.34536,36.15501],[-5.33822,36.15272],[-5.27801,36.14942]]],[[[1.99838,42.44682],[2.01564,42.45171],[1.99216,42.46208],[1.98579,42.47486],[1.99766,42.4858],[1.98916,42.49351],[1.98022,42.49569],[1.97697,42.48568],[1.97227,42.48487],[1.97003,42.48081],[1.96215,42.47854],[1.95606,42.45785],[1.96125,42.45364],[1.98378,42.44697],[1.99838,42.44682]]]]}},{type:"Feature",properties:{wikidata:"Q98059339",nameEn:"Mainland Norway",country:"NO",groups:["154","150","UN"],callingCodes:["47"]},geometry:{type:"MultiPolygon",coordinates:[[[[10.40861,58.38489],[10.64958,58.89391],[11.08911,58.98745],[11.15367,59.07862],[11.34459,59.11672],[11.4601,58.99022],[11.45199,58.89604],[11.65732,58.90177],[11.8213,59.24985],[11.69297,59.59442],[11.92112,59.69531],[11.87121,59.86039],[12.15641,59.8926],[12.36317,59.99259],[12.52003,60.13846],[12.59133,60.50559],[12.2277,61.02442],[12.69115,61.06584],[12.86939,61.35427],[12.57707,61.56547],[12.40595,61.57226],[12.14746,61.7147],[12.29187,62.25699],[12.07085,62.6297],[12.19919,63.00104],[11.98529,63.27487],[12.19919,63.47935],[12.14928,63.59373],[12.74105,64.02171],[13.23411,64.09087],[13.98222,64.00953],[14.16051,64.18725],[14.11117,64.46674],[13.64276,64.58402],[14.50926,65.31786],[14.53778,66.12399],[15.05113,66.15572],[15.49318,66.28509],[15.37197,66.48217],[16.35589,67.06419],[16.39154,67.21653],[16.09922,67.4364],[16.12774,67.52106],[16.38441,67.52923],[16.7409,67.91037],[17.30416,68.11591],[17.90787,67.96537],[18.13836,68.20874],[18.1241,68.53721],[18.39503,68.58672],[18.63032,68.50849],[18.97255,68.52416],[19.93508,68.35911],[20.22027,68.48759],[19.95647,68.55546],[20.22027,68.67246],[20.33435,68.80174],[20.28444,68.93283],[20.0695,69.04469],[20.55258,69.06069],[20.72171,69.11874],[21.05775,69.0356],[21.11099,69.10291],[20.98641,69.18809],[21.00732,69.22755],[21.27827,69.31281],[21.63833,69.27485],[22.27276,68.89514],[22.38367,68.71561],[22.53321,68.74393],[23.13064,68.64684],[23.68017,68.70276],[23.781,68.84514],[24.02299,68.81601],[24.18432,68.73936],[24.74898,68.65143],[24.90023,68.55579],[24.93048,68.61102],[25.10189,68.63307],[25.12206,68.78684],[25.42455,68.90328],[25.61613,68.89602],[25.75729,68.99383],[25.69679,69.27039],[25.96904,69.68397],[26.40261,69.91377],[26.64461,69.96565],[27.05802,69.92069],[27.57226,70.06215],[27.95542,70.0965],[27.97558,69.99671],[28.32849,69.88605],[28.36883,69.81658],[29.12697,69.69193],[29.31664,69.47994],[28.8629,69.22395],[28.81248,69.11997],[28.91738,69.04774],[29.0444,69.0119],[29.26623,69.13794],[29.27631,69.2811],[29.97205,69.41623],[30.16363,69.65244],[30.52662,69.54699],[30.95011,69.54699],[30.84095,69.80584],[31.59909,70.16571],[32.07813,72.01005],[-11.60274,67.73467],[7.28637,57.35913],[10.40861,58.38489]]]]}},{type:"Feature",properties:{wikidata:"Q98543636",nameEn:"Mainland Ecuador",country:"EC",groups:["005","419","019","UN"],callingCodes:["593"]},geometry:{type:"MultiPolygon",coordinates:[[[[-84.52388,-3.36941],[-80.30602,-3.39149],[-80.20647,-3.431],[-80.24123,-3.46124],[-80.24586,-3.48677],[-80.23651,-3.48652],[-80.22629,-3.501],[-80.20535,-3.51667],[-80.21642,-3.5888],[-80.19848,-3.59249],[-80.18741,-3.63994],[-80.19926,-3.68894],[-80.13232,-3.90317],[-80.46386,-4.01342],[-80.4822,-4.05477],[-80.45023,-4.20938],[-80.32114,-4.21323],[-80.46386,-4.41516],[-80.39256,-4.48269],[-80.13945,-4.29786],[-79.79722,-4.47558],[-79.59402,-4.46848],[-79.26248,-4.95167],[-79.1162,-4.97774],[-79.01659,-5.01481],[-78.85149,-4.66795],[-78.68394,-4.60754],[-78.34362,-3.38633],[-78.24589,-3.39907],[-78.22642,-3.51113],[-78.14324,-3.47653],[-78.19369,-3.36431],[-77.94147,-3.05454],[-76.6324,-2.58397],[-76.05203,-2.12179],[-75.57429,-1.55961],[-75.3872,-.9374],[-75.22862,-.95588],[-75.22862,-.60048],[-75.53615,-.19213],[-75.60169,-.18708],[-75.61997,-.10012],[-75.40192,-.17196],[-75.25764,-.11943],[-75.82927,.09578],[-76.23441,.42294],[-76.41215,.38228],[-76.4094,.24015],[-76.89177,.24736],[-77.52001,.40782],[-77.49984,.64476],[-77.67815,.73863],[-77.66416,.81604],[-77.68613,.83029],[-77.7148,.85003],[-77.85677,.80197],[-78.42749,1.15389],[-78.87137,1.47457],[-82.12561,4.00341],[-84.52388,-3.36941]]]]}},{type:"Feature",properties:{m49:"001",wikidata:"Q2",nameEn:"World",aliases:["Earth","Planet"],level:"world"},geometry:null},{type:"Feature",properties:{m49:"002",wikidata:"Q15",nameEn:"Africa",level:"region"},geometry:null},{type:"Feature",properties:{m49:"003",wikidata:"Q49",nameEn:"North America",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"005",wikidata:"Q18",nameEn:"South America",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{m49:"009",wikidata:"Q538",nameEn:"Oceania",level:"region"},geometry:null},{type:"Feature",properties:{m49:"011",wikidata:"Q4412",nameEn:"Western Africa",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{m49:"013",wikidata:"Q27611",nameEn:"Central America",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{m49:"014",wikidata:"Q27407",nameEn:"Eastern Africa",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{m49:"015",wikidata:"Q27381",nameEn:"Northern Africa",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"017",wikidata:"Q27433",nameEn:"Middle Africa",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{m49:"018",wikidata:"Q27394",nameEn:"Southern Africa",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{m49:"019",wikidata:"Q828",nameEn:"Americas",level:"region"},geometry:null},{type:"Feature",properties:{m49:"021",wikidata:"Q2017699",nameEn:"Northern America",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"029",wikidata:"Q664609",nameEn:"Caribbean",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{m49:"030",wikidata:"Q27231",nameEn:"Eastern Asia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"034",wikidata:"Q771405",nameEn:"Southern Asia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"035",wikidata:"Q11708",nameEn:"South-eastern Asia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"039",wikidata:"Q27449",nameEn:"Southern Europe",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"053",wikidata:"Q45256",nameEn:"Australia and New Zealand",aliases:["Australasia"],level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"054",wikidata:"Q37394",nameEn:"Melanesia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"057",wikidata:"Q3359409",nameEn:"Micronesia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"061",wikidata:"Q35942",nameEn:"Polynesia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"142",wikidata:"Q48",nameEn:"Asia",level:"region"},geometry:null},{type:"Feature",properties:{m49:"143",wikidata:"Q27275",nameEn:"Central Asia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"145",wikidata:"Q27293",nameEn:"Western Asia",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"150",wikidata:"Q46",nameEn:"Europe",level:"region"},geometry:null},{type:"Feature",properties:{m49:"151",wikidata:"Q27468",nameEn:"Eastern Europe",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"154",wikidata:"Q27479",nameEn:"Northern Europe",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"155",wikidata:"Q27496",nameEn:"Western Europe",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"202",wikidata:"Q132959",nameEn:"Sub-Saharan Africa",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"419",wikidata:"Q72829598",nameEn:"Latin America and the Caribbean",level:"subregion"},geometry:null},{type:"Feature",properties:{m49:"680",wikidata:"Q3405693",nameEn:"Sark",country:"GB",groups:["GG","830","Q185086","154","150","UN"],level:"subterritory",driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44 01481"]},geometry:{type:"MultiPolygon",coordinates:[[[[-2.36485,49.48223],[-2.65349,49.15373],[-2.09454,49.46288],[-2.36485,49.48223]]]]}},{type:"Feature",properties:{m49:"830",wikidata:"Q42314",nameEn:"Channel Islands",level:"intermediateRegion"},geometry:null},{type:"Feature",properties:{iso1A2:"AC",iso1A3:"ASC",wikidata:"Q46197",nameEn:"Ascension Island",aliases:["SH-AC"],country:"GB",groups:["SH","BOTS","011","202","002","UN"],isoStatus:"excRes",driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["247"]},geometry:{type:"MultiPolygon",coordinates:[[[[-14.82771,-8.70814],[-13.33271,-8.07391],[-14.91926,-6.63386],[-14.82771,-8.70814]]]]}},{type:"Feature",properties:{iso1A2:"AD",iso1A3:"AND",iso1N3:"020",wikidata:"Q228",nameEn:"Andorra",groups:["Q12837","039","150","UN"],callingCodes:["376"]},geometry:{type:"MultiPolygon",coordinates:[[[[1.72515,42.50338],[1.73683,42.55492],[1.7858,42.57698],[1.72588,42.59098],[1.73452,42.61515],[1.68267,42.62533],[1.6625,42.61982],[1.63485,42.62957],[1.60085,42.62703],[1.55418,42.65669],[1.50867,42.64483],[1.48043,42.65203],[1.46718,42.63296],[1.47986,42.61346],[1.44197,42.60217],[1.42512,42.58292],[1.44529,42.56722],[1.4234,42.55959],[1.41245,42.53539],[1.44759,42.54431],[1.46661,42.50949],[1.41648,42.48315],[1.43838,42.47848],[1.44529,42.43724],[1.5127,42.42959],[1.55073,42.43299],[1.55937,42.45808],[1.57953,42.44957],[1.58933,42.46275],[1.65674,42.47125],[1.66826,42.50779],[1.70571,42.48867],[1.72515,42.50338]]]]}},{type:"Feature",properties:{iso1A2:"AE",iso1A3:"ARE",iso1N3:"784",wikidata:"Q878",nameEn:"United Arab Emirates",groups:["145","142","UN"],callingCodes:["971"]},geometry:{type:"MultiPolygon",coordinates:[[[[56.26534,25.62825],[56.25341,25.61443],[56.26636,25.60643],[56.25365,25.60211],[56.20473,25.61119],[56.18363,25.65508],[56.14826,25.66351],[56.13579,25.73524],[56.17416,25.77239],[56.13963,25.82765],[56.19334,25.9795],[56.15498,26.06828],[56.08666,26.05038],[55.81777,26.18798],[55.14145,25.62624],[53.97892,24.64436],[52.82259,25.51697],[52.35509,25.00368],[52.02277,24.75635],[51.83108,24.71675],[51.58834,24.66608],[51.41644,24.39615],[51.58871,24.27256],[51.59617,24.12041],[52.56622,22.94341],[55.13599,22.63334],[55.2137,22.71065],[55.22634,23.10378],[55.57358,23.669],[55.48677,23.94946],[55.73301,24.05994],[55.8308,24.01633],[56.01799,24.07426],[55.95472,24.2172],[55.83367,24.20193],[55.77658,24.23476],[55.76558,24.23227],[55.75257,24.23466],[55.75382,24.2466],[55.75939,24.26114],[55.76781,24.26209],[55.79145,24.27914],[55.80747,24.31069],[55.83395,24.32776],[55.83271,24.41521],[55.76461,24.5287],[55.83271,24.68567],[55.83408,24.77858],[55.81348,24.80102],[55.81116,24.9116],[55.85094,24.96858],[55.90849,24.96771],[55.96316,25.00857],[56.05715,24.95727],[56.05106,24.87461],[55.97467,24.89639],[55.97836,24.87673],[56.03535,24.81161],[56.06128,24.74457],[56.13684,24.73699],[56.20062,24.78565],[56.20568,24.85063],[56.30269,24.88334],[56.34873,24.93205],[56.3227,24.97284],[56.86325,25.03856],[56.82555,25.7713],[56.26534,25.62825]],[[56.26062,25.33108],[56.3005,25.31815],[56.3111,25.30107],[56.35172,25.30681],[56.34438,25.26653],[56.27628,25.23404],[56.24341,25.22867],[56.20872,25.24104],[56.20838,25.25668],[56.24465,25.27505],[56.25008,25.28843],[56.23362,25.31253],[56.26062,25.33108]]],[[[56.28423,25.26344],[56.29379,25.2754],[56.28102,25.28486],[56.2716,25.27916],[56.27086,25.26128],[56.28423,25.26344]]]]}},{type:"Feature",properties:{iso1A2:"AF",iso1A3:"AFG",iso1N3:"004",wikidata:"Q889",nameEn:"Afghanistan",groups:["034","142","UN"],callingCodes:["93"]},geometry:{type:"MultiPolygon",coordinates:[[[[70.61526,38.34774],[70.60407,38.28046],[70.54673,38.24541],[70.4898,38.12546],[70.17206,37.93276],[70.1863,37.84296],[70.27694,37.81258],[70.28243,37.66706],[70.15015,37.52519],[69.95971,37.5659],[69.93362,37.61378],[69.84435,37.60616],[69.80041,37.5746],[69.51888,37.5844],[69.44954,37.4869],[69.36645,37.40462],[69.45022,37.23315],[69.39529,37.16752],[69.25152,37.09426],[69.03274,37.25174],[68.96407,37.32603],[68.88168,37.33368],[68.91189,37.26704],[68.80889,37.32494],[68.81438,37.23862],[68.6798,37.27906],[68.61851,37.19815],[68.41888,37.13906],[68.41201,37.10402],[68.29253,37.10621],[68.27605,37.00977],[68.18542,37.02074],[68.02194,36.91923],[67.87917,37.0591],[67.7803,37.08978],[67.78329,37.1834],[67.51868,37.26102],[67.2581,37.17216],[67.2224,37.24545],[67.13039,37.27168],[67.08232,37.35469],[66.95598,37.40162],[66.64699,37.32958],[66.55743,37.35409],[66.30993,37.32409],[65.72274,37.55438],[65.64137,37.45061],[65.64263,37.34388],[65.51778,37.23881],[64.97945,37.21913],[64.61141,36.6351],[64.62514,36.44311],[64.57295,36.34362],[64.43288,36.24401],[64.05385,36.10433],[63.98519,36.03773],[63.56496,35.95106],[63.53475,35.90881],[63.29579,35.85985],[63.12276,35.86208],[63.10318,35.81782],[63.23262,35.67487],[63.10079,35.63024],[63.12276,35.53196],[63.0898,35.43131],[62.90853,35.37086],[62.74098,35.25432],[62.62288,35.22067],[62.48006,35.28796],[62.29878,35.13312],[62.29191,35.25964],[62.15871,35.33278],[62.05709,35.43803],[61.97743,35.4604],[61.77693,35.41341],[61.58742,35.43803],[61.27371,35.61482],[61.18187,35.30249],[61.0991,35.27845],[61.12831,35.09938],[61.06926,34.82139],[61.00197,34.70631],[60.99922,34.63064],[60.72316,34.52857],[60.91321,34.30411],[60.66502,34.31539],[60.50209,34.13992],[60.5838,33.80793],[60.5485,33.73422],[60.57762,33.59772],[60.69573,33.56054],[60.91133,33.55596],[60.88908,33.50219],[60.56485,33.12944],[60.86191,32.22565],[60.84541,31.49561],[61.70929,31.37391],[61.80569,31.16167],[61.80957,31.12576],[61.83257,31.0452],[61.8335,30.97669],[61.78268,30.92724],[61.80829,30.84224],[60.87231,29.86514],[62.47751,29.40782],[63.5876,29.50456],[64.12966,29.39157],[64.19796,29.50407],[64.62116,29.58903],[65.04005,29.53957],[66.24175,29.85181],[66.36042,29.9583],[66.23609,30.06321],[66.34869,30.404],[66.28413,30.57001],[66.39194,30.9408],[66.42645,30.95309],[66.58175,30.97532],[66.68166,31.07597],[66.72561,31.20526],[66.83273,31.26867],[67.04147,31.31561],[67.03323,31.24519],[67.29964,31.19586],[67.78854,31.33203],[67.7748,31.4188],[67.62374,31.40473],[67.58323,31.52772],[67.72056,31.52304],[67.86887,31.63536],[68.00071,31.6564],[68.1655,31.82691],[68.25614,31.80357],[68.27605,31.75863],[68.44222,31.76446],[68.57475,31.83158],[68.6956,31.75687],[68.79997,31.61665],[68.91078,31.59687],[68.95995,31.64822],[69.00939,31.62249],[69.11514,31.70782],[69.20577,31.85957],[69.3225,31.93186],[69.27032,32.14141],[69.27932,32.29119],[69.23599,32.45946],[69.2868,32.53938],[69.38155,32.56601],[69.44747,32.6678],[69.43649,32.7302],[69.38018,32.76601],[69.47082,32.85834],[69.5436,32.8768],[69.49854,32.88843],[69.49004,33.01509],[69.57656,33.09911],[69.71526,33.09911],[69.79766,33.13247],[69.85259,33.09451],[70.02563,33.14282],[70.07369,33.22557],[70.13686,33.21064],[70.32775,33.34496],[70.17062,33.53535],[70.20141,33.64387],[70.14785,33.6553],[70.14236,33.71701],[70.00503,33.73528],[69.85671,33.93719],[69.87307,33.9689],[69.90203,34.04194],[70.54336,33.9463],[70.88119,33.97933],[71.07345,34.06242],[71.06933,34.10564],[71.09307,34.11961],[71.09453,34.13524],[71.13078,34.16503],[71.12815,34.26619],[71.17662,34.36769],[71.02401,34.44835],[71.0089,34.54568],[71.11602,34.63047],[71.08718,34.69034],[71.28356,34.80882],[71.29472,34.87728],[71.50329,34.97328],[71.49917,35.00478],[71.55273,35.02615],[71.52938,35.09023],[71.67495,35.21262],[71.5541,35.28776],[71.54294,35.31037],[71.65435,35.4479],[71.49917,35.6267],[71.55273,35.71483],[71.37969,35.95865],[71.19505,36.04134],[71.60491,36.39429],[71.80267,36.49924],[72.18135,36.71838],[72.6323,36.84601],[73.82685,36.91421],[74.04856,36.82648],[74.43389,37.00977],[74.53739,36.96224],[74.56453,37.03023],[74.49981,37.24518],[74.80605,37.21565],[74.88887,37.23275],[74.8294,37.3435],[74.68383,37.3948],[74.56161,37.37734],[74.41055,37.3948],[74.23339,37.41116],[74.20308,37.34208],[73.8564,37.26158],[73.82552,37.22659],[73.64974,37.23643],[73.61129,37.27469],[73.76647,37.33913],[73.77197,37.4417],[73.29633,37.46495],[73.06884,37.31729],[72.79693,37.22222],[72.66381,37.02014],[72.54095,37.00007],[72.31676,36.98115],[71.83229,36.68084],[71.67083,36.67346],[71.57195,36.74943],[71.51502,36.89128],[71.48481,36.93218],[71.46923,36.99925],[71.45578,37.03094],[71.43097,37.05855],[71.44127,37.11856],[71.4494,37.18137],[71.4555,37.21418],[71.47386,37.2269],[71.48339,37.23937],[71.4824,37.24921],[71.48536,37.26017],[71.50674,37.31502],[71.49821,37.31975],[71.4862,37.33405],[71.47685,37.40281],[71.49612,37.4279],[71.5256,37.47971],[71.50616,37.50733],[71.49693,37.53527],[71.5065,37.60912],[71.51972,37.61945],[71.54186,37.69691],[71.55234,37.73209],[71.53053,37.76534],[71.54324,37.77104],[71.55752,37.78677],[71.59255,37.79956],[71.58843,37.92425],[71.51565,37.95349],[71.32871,37.88564],[71.296,37.93403],[71.2809,37.91995],[71.24969,37.93031],[71.27278,37.96496],[71.27622,37.99946],[71.28922,38.01272],[71.29878,38.04429],[71.36444,38.15358],[71.37803,38.25641],[71.33869,38.27335],[71.33114,38.30339],[71.21291,38.32797],[71.1451,38.40106],[71.10957,38.40671],[71.10592,38.42077],[71.09542,38.42517],[71.0556,38.40176],[71.03545,38.44779],[70.98693,38.48862],[70.92728,38.43021],[70.88719,38.46826],[70.84376,38.44688],[70.82538,38.45394],[70.81697,38.44507],[70.80521,38.44447],[70.79766,38.44944],[70.78702,38.45031],[70.78581,38.45502],[70.77132,38.45548],[70.75455,38.4252],[70.72485,38.4131],[70.69807,38.41861],[70.67438,38.40597],[70.6761,38.39144],[70.69189,38.37031],[70.64966,38.34999],[70.61526,38.34774]]]]}},{type:"Feature",properties:{iso1A2:"AG",iso1A3:"ATG",iso1N3:"028",wikidata:"Q781",nameEn:"Antigua and Barbuda",groups:["029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 268"]},geometry:{type:"MultiPolygon",coordinates:[[[[-61.66959,18.6782],[-62.58307,16.68909],[-62.1023,16.97277],[-61.23098,16.62484],[-61.66959,18.6782]]]]}},{type:"Feature",properties:{iso1A2:"AI",iso1A3:"AIA",iso1N3:"660",wikidata:"Q25228",nameEn:"Anguilla",country:"GB",groups:["BOTS","029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 264"]},geometry:{type:"MultiPolygon",coordinates:[[[[-63.79029,19.11219],[-63.35989,18.06012],[-62.62718,18.26185],[-63.79029,19.11219]]]]}},{type:"Feature",properties:{iso1A2:"AL",iso1A3:"ALB",iso1N3:"008",wikidata:"Q222",nameEn:"Albania",groups:["039","150","UN"],callingCodes:["355"]},geometry:{type:"MultiPolygon",coordinates:[[[[20.07761,42.55582],[20.01834,42.54622],[20.00842,42.5109],[19.9324,42.51699],[19.82333,42.46581],[19.76549,42.50237],[19.74731,42.57422],[19.77375,42.58517],[19.73244,42.66299],[19.65972,42.62774],[19.4836,42.40831],[19.42352,42.36546],[19.42,42.33019],[19.28623,42.17745],[19.40687,42.10024],[19.37548,42.06835],[19.36867,42.02564],[19.37691,41.96977],[19.34601,41.95675],[19.33812,41.90669],[19.37451,41.8842],[19.37597,41.84849],[19.26406,41.74971],[19.0384,40.35325],[19.95905,39.82857],[19.97622,39.78684],[19.92466,39.69533],[19.98042,39.6504],[20.00957,39.69227],[20.05189,39.69112],[20.12956,39.65805],[20.15988,39.652],[20.22376,39.64532],[20.22707,39.67459],[20.27412,39.69884],[20.31961,39.72799],[20.29152,39.80421],[20.30804,39.81563],[20.38572,39.78516],[20.41475,39.81437],[20.41546,39.82832],[20.31135,39.99438],[20.37911,39.99058],[20.42373,40.06777],[20.48487,40.06271],[20.51297,40.08168],[20.55593,40.06524],[20.61081,40.07866],[20.62566,40.0897],[20.67162,40.09433],[20.71789,40.27739],[20.78234,40.35803],[20.7906,40.42726],[20.83688,40.47882],[20.94925,40.46625],[20.96908,40.51526],[21.03932,40.56299],[21.05833,40.66586],[20.98134,40.76046],[20.95752,40.76982],[20.98396,40.79109],[20.97887,40.85475],[20.97693,40.90103],[20.94305,40.92399],[20.83671,40.92752],[20.81567,40.89662],[20.73504,40.9081],[20.71634,40.91781],[20.65558,41.08009],[20.63454,41.0889],[20.59832,41.09066],[20.58546,41.11179],[20.59715,41.13644],[20.51068,41.2323],[20.49432,41.33679],[20.52119,41.34381],[20.55976,41.4087],[20.51301,41.442],[20.49039,41.49277],[20.45331,41.51436],[20.45809,41.5549],[20.52103,41.56473],[20.55508,41.58113],[20.51769,41.65975],[20.52937,41.69292],[20.51301,41.72433],[20.53405,41.78099],[20.57144,41.7897],[20.55976,41.87068],[20.59524,41.8818],[20.57946,41.91593],[20.63069,41.94913],[20.59434,42.03879],[20.55633,42.08173],[20.56955,42.12097],[20.48857,42.25444],[20.3819,42.3029],[20.34479,42.32656],[20.24399,42.32168],[20.21797,42.41237],[20.17127,42.50469],[20.07761,42.55582]]]]}},{type:"Feature",properties:{iso1A2:"AM",iso1A3:"ARM",iso1N3:"051",wikidata:"Q399",nameEn:"Armenia",groups:["145","142","UN"],callingCodes:["374"]},geometry:{type:"MultiPolygon",coordinates:[[[[45.0133,41.29747],[44.93493,41.25685],[44.81437,41.30371],[44.80053,41.25949],[44.81749,41.23488],[44.84358,41.23088],[44.89911,41.21366],[44.87887,41.20195],[44.82084,41.21513],[44.72814,41.20338],[44.61462,41.24018],[44.59322,41.1933],[44.46791,41.18204],[44.34417,41.2382],[44.34337,41.20312],[44.32139,41.2079],[44.18148,41.24644],[44.16591,41.19141],[43.84835,41.16329],[43.74717,41.1117],[43.67712,41.13398],[43.4717,41.12611],[43.44984,41.0988],[43.47319,41.02251],[43.58683,40.98961],[43.67712,40.93084],[43.67712,40.84846],[43.74872,40.7365],[43.7425,40.66805],[43.63664,40.54159],[43.54791,40.47413],[43.60862,40.43267],[43.59928,40.34019],[43.71136,40.16673],[43.65221,40.14889],[43.65688,40.11199],[43.92307,40.01787],[44.1057,40.03555],[44.1778,40.02845],[44.26973,40.04866],[44.46635,39.97733],[44.61845,39.8281],[44.75779,39.7148],[44.88354,39.74432],[44.92869,39.72157],[45.06604,39.79277],[45.18554,39.67846],[45.17464,39.58614],[45.21784,39.58074],[45.23535,39.61373],[45.30385,39.61373],[45.29606,39.57654],[45.46992,39.49888],[45.70547,39.60174],[45.80804,39.56716],[45.83,39.46487],[45.79225,39.3695],[45.99774,39.28931],[46.02303,39.09978],[46.06973,39.0744],[46.14785,38.84206],[46.20601,38.85262],[46.34059,38.92076],[46.53497,38.86548],[46.51805,38.94982],[46.54296,39.07078],[46.44022,39.19636],[46.52584,39.18912],[46.54141,39.15895],[46.58032,39.21204],[46.63481,39.23013],[46.56476,39.24942],[46.50093,39.33736],[46.43244,39.35181],[46.37795,39.42039],[46.4013,39.45405],[46.53051,39.47809],[46.51027,39.52373],[46.57721,39.54414],[46.57098,39.56694],[46.52117,39.58734],[46.42465,39.57534],[46.40286,39.63651],[46.18493,39.60533],[45.96543,39.78859],[45.82533,39.82925],[45.7833,39.9475],[45.60895,39.97733],[45.59806,40.0131],[45.78642,40.03218],[45.83779,39.98925],[45.97944,40.181],[45.95609,40.27846],[45.65098,40.37696],[45.42994,40.53804],[45.45484,40.57707],[45.35366,40.65979],[45.4206,40.7424],[45.55914,40.78366],[45.60584,40.87436],[45.40814,40.97904],[45.44083,41.01663],[45.39725,41.02603],[45.35677,40.99784],[45.28859,41.03757],[45.26162,41.0228],[45.25897,41.0027],[45.1994,41.04518],[45.16493,41.05068],[45.1634,41.08082],[45.1313,41.09369],[45.12923,41.06059],[45.06784,41.05379],[45.08028,41.10917],[45.19942,41.13299],[45.1969,41.168],[45.11811,41.19967],[45.05201,41.19211],[45.02932,41.2101],[45.05497,41.2464],[45.0133,41.29747]],[[45.21324,40.9817],[45.21219,40.99001],[45.20518,40.99348],[45.19312,40.98998],[45.18382,41.0066],[45.20625,41.01484],[45.23487,41.00226],[45.23095,40.97828],[45.21324,40.9817]],[[45.00864,41.03411],[44.9903,41.05657],[44.96031,41.06345],[44.95383,41.07553],[44.97169,41.09176],[45.00864,41.09407],[45.03406,41.07931],[45.04517,41.06653],[45.03792,41.03938],[45.00864,41.03411]]],[[[45.50279,40.58424],[45.56071,40.64765],[45.51825,40.67382],[45.47927,40.65023],[45.50279,40.58424]]]]}},{type:"Feature",properties:{iso1A2:"AO",iso1A3:"AGO",iso1N3:"024",wikidata:"Q916",nameEn:"Angola",groups:["017","202","002","UN"],callingCodes:["244"]},geometry:{type:"MultiPolygon",coordinates:[[[[16.55507,-5.85631],[13.04371,-5.87078],[12.42245,-6.07585],[11.95767,-5.94705],[12.20376,-5.76338],[12.26557,-5.74031],[12.52318,-5.74353],[12.52301,-5.17481],[12.53599,-5.1618],[12.53586,-5.14658],[12.51589,-5.1332],[12.49815,-5.14058],[12.46297,-5.09408],[12.60251,-5.01715],[12.63465,-4.94632],[12.70868,-4.95505],[12.8733,-4.74346],[13.11195,-4.67745],[13.09648,-4.63739],[12.91489,-4.47907],[12.87096,-4.40315],[12.76844,-4.38709],[12.64835,-4.55937],[12.40964,-4.60609],[12.32324,-4.78415],[12.25587,-4.79437],[12.20901,-4.75642],[12.16068,-4.90089],[12.00924,-5.02627],[11.50888,-5.33417],[10.5065,-17.25284],[11.75063,-17.25013],[12.07076,-17.15165],[12.52111,-17.24495],[12.97145,-16.98567],[13.36212,-16.98048],[13.95896,-17.43141],[14.28743,-17.38814],[18.39229,-17.38927],[18.84226,-17.80375],[21.14283,-17.94318],[21.42741,-18.02787],[23.47474,-17.62877],[23.20038,-17.47563],[22.17217,-16.50269],[22.00323,-16.18028],[21.97988,-13.00148],[24.03339,-12.99091],[23.90937,-12.844],[24.06672,-12.29058],[23.98804,-12.13149],[24.02603,-11.15368],[24.00027,-10.89356],[23.86868,-11.02856],[23.45631,-10.946],[23.16602,-11.10577],[22.54205,-11.05784],[22.25951,-11.24911],[22.17954,-10.85884],[22.32604,-10.76291],[22.19039,-9.94628],[21.84856,-9.59871],[21.79824,-7.29628],[20.56263,-7.28566],[20.61689,-6.90876],[20.31846,-6.91953],[20.30218,-6.98955],[19.5469,-7.00195],[19.33698,-7.99743],[18.33635,-8.00126],[17.5828,-8.13784],[16.96282,-7.21787],[16.55507,-5.85631]]]]}},{type:"Feature",properties:{iso1A2:"AQ",iso1A3:"ATA",iso1N3:"010",wikidata:"Q51",nameEn:"Antarctica",level:"region",callingCodes:["672"]},geometry:{type:"MultiPolygon",coordinates:[[[[180,-60],[-180,-60],[-180,-90],[180,-90],[180,-60]]]]}},{type:"Feature",properties:{iso1A2:"AR",iso1A3:"ARG",iso1N3:"032",wikidata:"Q414",nameEn:"Argentina",aliases:["RA"],groups:["005","419","019","UN"],callingCodes:["54"]},geometry:{type:"MultiPolygon",coordinates:[[[[-72.31343,-50.58411],[-72.33873,-51.59954],[-71.99889,-51.98018],[-69.97824,-52.00845],[-68.41683,-52.33516],[-68.60702,-52.65781],[-68.60733,-54.9125],[-68.01394,-54.8753],[-67.46182,-54.92205],[-67.11046,-54.94199],[-66.07313,-55.19618],[-63.67376,-55.11859],[-54.78916,-36.21945],[-57.83001,-34.69099],[-58.34425,-34.15035],[-58.44442,-33.84033],[-58.40475,-33.11777],[-58.1224,-32.98842],[-58.22362,-32.52416],[-58.10036,-32.25338],[-58.20252,-31.86966],[-58.00076,-31.65016],[-58.0023,-31.53084],[-58.07569,-31.44916],[-57.98127,-31.3872],[-57.9908,-31.34924],[-57.86729,-31.06352],[-57.89476,-30.95994],[-57.8024,-30.77193],[-57.89115,-30.49572],[-57.64859,-30.35095],[-57.61478,-30.25165],[-57.65132,-30.19229],[-57.09386,-29.74211],[-56.81251,-29.48154],[-56.62789,-29.18073],[-56.57295,-29.11357],[-56.54171,-29.11447],[-56.05265,-28.62651],[-56.00458,-28.60421],[-56.01729,-28.51223],[-55.65418,-28.18304],[-55.6262,-28.17124],[-55.33303,-27.94661],[-55.16872,-27.86224],[-55.1349,-27.89759],[-54.90805,-27.73149],[-54.90159,-27.63132],[-54.67657,-27.57214],[-54.50416,-27.48232],[-54.41888,-27.40882],[-54.19268,-27.30751],[-54.19062,-27.27639],[-54.15978,-27.2889],[-53.80144,-27.09844],[-53.73372,-26.6131],[-53.68269,-26.33359],[-53.64505,-26.28089],[-53.64186,-26.25976],[-53.64632,-26.24798],[-53.63881,-26.25075],[-53.63739,-26.2496],[-53.65237,-26.23289],[-53.65018,-26.19501],[-53.73968,-26.10012],[-53.73391,-26.07006],[-53.7264,-26.0664],[-53.73086,-26.05842],[-53.73511,-26.04211],[-53.83691,-25.94849],[-53.90831,-25.55513],[-54.52926,-25.62846],[-54.5502,-25.58915],[-54.59398,-25.59224],[-54.62063,-25.91213],[-54.60664,-25.9691],[-54.67359,-25.98607],[-54.69333,-26.37705],[-54.70732,-26.45099],[-54.80868,-26.55669],[-55.00584,-26.78754],[-55.06351,-26.80195],[-55.16948,-26.96068],[-55.25243,-26.93808],[-55.39611,-26.97679],[-55.62322,-27.1941],[-55.59094,-27.32444],[-55.74475,-27.44485],[-55.89195,-27.3467],[-56.18313,-27.29851],[-56.85337,-27.5165],[-58.04205,-27.2387],[-58.59549,-27.29973],[-58.65321,-27.14028],[-58.3198,-26.83443],[-58.1188,-26.16704],[-57.87176,-25.93604],[-57.57431,-25.47269],[-57.80821,-25.13863],[-58.25492,-24.92528],[-58.33055,-24.97099],[-59.33886,-24.49935],[-59.45482,-24.34787],[-60.03367,-24.00701],[-60.28163,-24.04436],[-60.99754,-23.80934],[-61.0782,-23.62932],[-61.9756,-23.0507],[-62.22768,-22.55807],[-62.51761,-22.37684],[-62.64455,-22.25091],[-62.8078,-22.12534],[-62.81124,-21.9987],[-63.66482,-21.99918],[-63.68113,-22.0544],[-63.70963,-21.99934],[-63.93287,-21.99934],[-64.22918,-22.55807],[-64.31489,-22.88824],[-64.35108,-22.73282],[-64.4176,-22.67692],[-64.58888,-22.25035],[-64.67174,-22.18957],[-64.90014,-22.12136],[-64.99524,-22.08255],[-65.47435,-22.08908],[-65.57743,-22.07675],[-65.58694,-22.09794],[-65.61166,-22.09504],[-65.7467,-22.10105],[-65.9261,-21.93335],[-66.04832,-21.9187],[-66.03836,-21.84829],[-66.24077,-21.77837],[-66.29714,-22.08741],[-66.7298,-22.23644],[-67.18382,-22.81525],[-66.99632,-22.99839],[-67.33563,-24.04237],[-68.24825,-24.42596],[-68.56909,-24.69831],[-68.38372,-25.08636],[-68.57622,-25.32505],[-68.38372,-26.15353],[-68.56909,-26.28146],[-68.59048,-26.49861],[-68.27677,-26.90626],[-68.43363,-27.08414],[-68.77586,-27.16029],[-69.22504,-27.95042],[-69.66709,-28.44055],[-69.80969,-29.07185],[-69.99507,-29.28351],[-69.8596,-30.26131],[-70.14479,-30.36595],[-70.55832,-31.51559],[-69.88099,-33.34489],[-69.87386,-34.13344],[-70.49416,-35.24145],[-70.38008,-36.02375],[-70.95047,-36.4321],[-71.24279,-37.20264],[-70.89532,-38.6923],[-71.37826,-38.91474],[-71.92726,-40.72714],[-71.74901,-42.11711],[-72.15541,-42.15941],[-72.14828,-42.85321],[-71.64206,-43.64774],[-71.81318,-44.38097],[-71.16436,-44.46244],[-71.26418,-44.75684],[-72.06985,-44.81756],[-71.35687,-45.22075],[-71.75614,-45.61611],[-71.68577,-46.55385],[-71.94152,-47.13595],[-72.50478,-47.80586],[-72.27662,-48.28727],[-72.54042,-48.52392],[-72.56894,-48.81116],[-73.09655,-49.14342],[-73.45156,-49.79461],[-73.55259,-49.92488],[-73.15765,-50.78337],[-72.31343,-50.58411]]]]}},{type:"Feature",properties:{iso1A2:"AS",iso1A3:"ASM",iso1N3:"016",wikidata:"Q16641",nameEn:"American Samoa",aliases:["US-AS"],country:"US",groups:["Q1352230","061","009","UN"],roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1 684"]},geometry:{type:"MultiPolygon",coordinates:[[[[-171.39864,-10.21587],[-170.99605,-15.1275],[-166.32598,-15.26169],[-171.39864,-10.21587]]]]}},{type:"Feature",properties:{iso1A2:"AT",iso1A3:"AUT",iso1N3:"040",wikidata:"Q40",nameEn:"Austria",groups:["EU","155","150","UN"],callingCodes:["43"]},geometry:{type:"MultiPolygon",coordinates:[[[[15.34823,48.98444],[15.28305,48.98831],[15.26177,48.95766],[15.16358,48.94278],[15.15534,48.99056],[14.99878,49.01444],[14.97612,48.96983],[14.98917,48.90082],[14.95072,48.79101],[14.98032,48.77959],[14.9782,48.7766],[14.98112,48.77524],[14.9758,48.76857],[14.95641,48.75915],[14.94773,48.76268],[14.81545,48.7874],[14.80821,48.77711],[14.80584,48.73489],[14.72756,48.69502],[14.71794,48.59794],[14.66762,48.58215],[14.60808,48.62881],[14.56139,48.60429],[14.4587,48.64695],[14.43076,48.58855],[14.33909,48.55852],[14.20691,48.5898],[14.09104,48.5943],[14.01482,48.63788],[14.06151,48.66873],[13.84023,48.76988],[13.82266,48.75544],[13.81863,48.73257],[13.79337,48.71375],[13.81791,48.69832],[13.81283,48.68426],[13.81901,48.6761],[13.82609,48.62345],[13.80038,48.59487],[13.80519,48.58026],[13.76921,48.55324],[13.7513,48.5624],[13.74816,48.53058],[13.72802,48.51208],[13.66113,48.53558],[13.65186,48.55092],[13.62508,48.55501],[13.59705,48.57013],[13.57535,48.55912],[13.51291,48.59023],[13.50131,48.58091],[13.50663,48.57506],[13.46967,48.55157],[13.45214,48.56472],[13.43695,48.55776],[13.45727,48.51092],[13.42527,48.45711],[13.43929,48.43386],[13.40709,48.37292],[13.30897,48.31575],[13.26039,48.29422],[13.18093,48.29577],[13.126,48.27867],[13.0851,48.27711],[13.02083,48.25689],[12.95306,48.20629],[12.87126,48.20318],[12.84475,48.16556],[12.836,48.1647],[12.8362,48.15876],[12.82673,48.15245],[12.80676,48.14979],[12.78595,48.12445],[12.7617,48.12796],[12.74973,48.10885],[12.76141,48.07373],[12.8549,48.01122],[12.87476,47.96195],[12.91683,47.95647],[12.9211,47.95135],[12.91985,47.94069],[12.92668,47.93879],[12.93419,47.94063],[12.93642,47.94436],[12.93886,47.94046],[12.94163,47.92927],[13.00588,47.84374],[12.98543,47.82896],[12.96311,47.79957],[12.93202,47.77302],[12.94371,47.76281],[12.9353,47.74788],[12.91711,47.74026],[12.90274,47.72513],[12.91333,47.7178],[12.92969,47.71094],[12.98578,47.7078],[13.01382,47.72116],[13.07692,47.68814],[13.09562,47.63304],[13.06407,47.60075],[13.06641,47.58577],[13.04537,47.58183],[13.05355,47.56291],[13.03252,47.53373],[13.04537,47.49426],[12.9998,47.46267],[12.98344,47.48716],[12.9624,47.47452],[12.85256,47.52741],[12.84672,47.54556],[12.80699,47.54477],[12.77427,47.58025],[12.82101,47.61493],[12.76492,47.64485],[12.77777,47.66689],[12.7357,47.6787],[12.6071,47.6741],[12.57438,47.63238],[12.53816,47.63553],[12.50076,47.62293],[12.44117,47.6741],[12.43883,47.6977],[12.37222,47.68433],[12.336,47.69534],[12.27991,47.68827],[12.26004,47.67725],[12.24017,47.69534],[12.26238,47.73544],[12.2542,47.7433],[12.22571,47.71776],[12.18303,47.70065],[12.16217,47.70105],[12.16769,47.68167],[12.18347,47.66663],[12.18507,47.65984],[12.19895,47.64085],[12.20801,47.61082],[12.20398,47.60667],[12.18568,47.6049],[12.17737,47.60121],[12.18145,47.61019],[12.17824,47.61506],[12.13734,47.60639],[12.05788,47.61742],[12.02282,47.61033],[12.0088,47.62451],[11.85572,47.60166],[11.84052,47.58354],[11.63934,47.59202],[11.60681,47.57881],[11.58811,47.55515],[11.58578,47.52281],[11.52618,47.50939],[11.4362,47.51413],[11.38128,47.47465],[11.4175,47.44621],[11.33804,47.44937],[11.29597,47.42566],[11.27844,47.39956],[11.22002,47.3964],[11.25157,47.43277],[11.20482,47.43198],[11.12536,47.41222],[11.11835,47.39719],[10.97111,47.39561],[10.97111,47.41617],[10.98513,47.42882],[10.92437,47.46991],[10.93839,47.48018],[10.90918,47.48571],[10.87061,47.4786],[10.86945,47.5015],[10.91268,47.51334],[10.88814,47.53701],[10.77596,47.51729],[10.7596,47.53228],[10.6965,47.54253],[10.68832,47.55752],[10.63456,47.5591],[10.60337,47.56755],[10.56912,47.53584],[10.48849,47.54057],[10.47329,47.58552],[10.43473,47.58394],[10.44992,47.5524],[10.4324,47.50111],[10.44291,47.48453],[10.46278,47.47901],[10.47446,47.43318],[10.4359,47.41183],[10.4324,47.38494],[10.39851,47.37623],[10.33424,47.30813],[10.23257,47.27088],[10.17531,47.27167],[10.17648,47.29149],[10.2147,47.31014],[10.19998,47.32832],[10.23757,47.37609],[10.22774,47.38904],[10.2127,47.38019],[10.17648,47.38889],[10.16362,47.36674],[10.11805,47.37228],[10.09819,47.35724],[10.06897,47.40709],[10.1052,47.4316],[10.09001,47.46005],[10.07131,47.45531],[10.03859,47.48927],[10.00003,47.48216],[9.96029,47.53899],[9.92407,47.53111],[9.87733,47.54688],[9.87499,47.52953],[9.8189,47.54688],[9.82591,47.58158],[9.80254,47.59419],[9.76748,47.5934],[9.72736,47.53457],[9.55125,47.53629],[9.56312,47.49495],[9.58208,47.48344],[9.59482,47.46305],[9.60205,47.46165],[9.60484,47.46358],[9.60841,47.47178],[9.62158,47.45858],[9.62475,47.45685],[9.6423,47.45599],[9.65728,47.45383],[9.65863,47.44847],[9.64483,47.43842],[9.6446,47.43233],[9.65043,47.41937],[9.65136,47.40504],[9.6629,47.39591],[9.67334,47.39191],[9.67445,47.38429],[9.6711,47.37824],[9.66243,47.37136],[9.65427,47.36824],[9.62476,47.36639],[9.59978,47.34671],[9.58513,47.31334],[9.55857,47.29919],[9.54773,47.2809],[9.53116,47.27029],[9.56766,47.24281],[9.55176,47.22585],[9.56981,47.21926],[9.58264,47.20673],[9.56539,47.17124],[9.62623,47.14685],[9.63395,47.08443],[9.61216,47.07732],[9.60717,47.06091],[9.87935,47.01337],[9.88266,46.93343],[9.98058,46.91434],[10.10715,46.84296],[10.22675,46.86942],[10.24128,46.93147],[10.30031,46.92093],[10.36933,47.00212],[10.48376,46.93891],[10.47197,46.85698],[10.54783,46.84505],[10.66405,46.87614],[10.75753,46.82258],[10.72974,46.78972],[11.00764,46.76896],[11.10618,46.92966],[11.33355,46.99862],[11.50739,47.00644],[11.74789,46.98484],[12.19254,47.09331],[12.21781,47.03996],[12.11675,47.01241],[12.2006,46.88854],[12.27591,46.88651],[12.38708,46.71529],[12.59992,46.6595],[12.94445,46.60401],[13.27627,46.56059],[13.64088,46.53438],[13.7148,46.5222],[13.89837,46.52331],[14.00422,46.48474],[14.04002,46.49117],[14.12097,46.47724],[14.15989,46.43327],[14.28326,46.44315],[14.314,46.43327],[14.42608,46.44614],[14.45877,46.41717],[14.52176,46.42617],[14.56463,46.37208],[14.5942,46.43434],[14.66892,46.44936],[14.72185,46.49974],[14.81836,46.51046],[14.83549,46.56614],[14.86419,46.59411],[14.87129,46.61],[14.92283,46.60848],[14.96002,46.63459],[14.98024,46.6009],[15.01451,46.641],[15.14215,46.66131],[15.23711,46.63994],[15.41235,46.65556],[15.45514,46.63697],[15.46906,46.61321],[15.54431,46.6312],[15.55333,46.64988],[15.54533,46.66985],[15.59826,46.68908],[15.62317,46.67947],[15.63255,46.68069],[15.6365,46.6894],[15.6543,46.69228],[15.6543,46.70616],[15.67411,46.70735],[15.69523,46.69823],[15.72279,46.69548],[15.73823,46.70011],[15.76771,46.69863],[15.78518,46.70712],[15.8162,46.71897],[15.87691,46.7211],[15.94864,46.68769],[15.98512,46.68463],[15.99988,46.67947],[16.04036,46.6549],[16.04347,46.68694],[16.02808,46.71094],[15.99769,46.7266],[15.98432,46.74991],[15.99126,46.78199],[15.99054,46.82772],[16.05786,46.83927],[16.10983,46.867],[16.19904,46.94134],[16.22403,46.939],[16.27594,46.9643],[16.28202,47.00159],[16.51369,47.00084],[16.43936,47.03548],[16.52176,47.05747],[16.46134,47.09395],[16.52863,47.13974],[16.44932,47.14418],[16.46442,47.16845],[16.4523,47.18812],[16.42801,47.18422],[16.41739,47.20649],[16.43663,47.21127],[16.44142,47.25079],[16.47782,47.25918],[16.45104,47.41181],[16.49908,47.39416],[16.52414,47.41007],[16.57152,47.40868],[16.6718,47.46139],[16.64821,47.50155],[16.71059,47.52692],[16.64193,47.63114],[16.58699,47.61772],[16.4222,47.66537],[16.55129,47.72268],[16.53514,47.73837],[16.54779,47.75074],[16.61183,47.76171],[16.65679,47.74197],[16.72089,47.73469],[16.7511,47.67878],[16.82938,47.68432],[16.86509,47.72268],[16.87538,47.68895],[17.08893,47.70928],[17.05048,47.79377],[17.07039,47.81129],[17.00997,47.86245],[17.08275,47.87719],[17.11022,47.92461],[17.09786,47.97336],[17.16001,48.00636],[17.07039,48.0317],[17.09168,48.09366],[17.05735,48.14179],[17.02919,48.13996],[16.97701,48.17385],[16.89461,48.31332],[16.90903,48.32519],[16.84243,48.35258],[16.83317,48.38138],[16.83588,48.3844],[16.8497,48.38321],[16.85204,48.44968],[16.94611,48.53614],[16.93955,48.60371],[16.90354,48.71541],[16.79779,48.70998],[16.71883,48.73806],[16.68518,48.7281],[16.67008,48.77699],[16.46134,48.80865],[16.40915,48.74576],[16.37345,48.729],[16.06034,48.75436],[15.84404,48.86921],[15.78087,48.87644],[15.75341,48.8516],[15.6921,48.85973],[15.61622,48.89541],[15.51357,48.91549],[15.48027,48.94481],[15.34823,48.98444]]]]}},{type:"Feature",properties:{iso1A2:"AU",iso1A3:"AUS",iso1N3:"036",wikidata:"Q408",nameEn:"Australia"},geometry:null},{type:"Feature",properties:{iso1A2:"AW",iso1A3:"ABW",iso1N3:"533",wikidata:"Q21203",nameEn:"Aruba",aliases:["NL-AW"],country:"NL",groups:["Q1451600","029","003","419","019","UN"],callingCodes:["297"]},geometry:{type:"MultiPolygon",coordinates:[[[[-70.00823,12.98375],[-70.35625,12.58277],[-69.60231,12.17],[-70.00823,12.98375]]]]}},{type:"Feature",properties:{iso1A2:"AX",iso1A3:"ALA",iso1N3:"248",wikidata:"Q5689",nameEn:"\xC5land Islands",country:"FI",groups:["EU","154","150","UN"],callingCodes:["358 18","358 457"]},geometry:{type:"MultiPolygon",coordinates:[[[[19.08191,60.19152],[20.5104,59.15546],[21.35468,59.67511],[21.02509,60.12142],[21.08159,60.20167],[21.15143,60.54555],[20.96741,60.71528],[19.23413,60.61414],[19.08191,60.19152]]]]}},{type:"Feature",properties:{iso1A2:"AZ",iso1A3:"AZE",iso1N3:"031",wikidata:"Q227",nameEn:"Azerbaijan",groups:["145","142","UN"],callingCodes:["994"]},geometry:{type:"MultiPolygon",coordinates:[[[[46.42738,41.91323],[46.3984,41.84399],[46.30863,41.79133],[46.23962,41.75811],[46.20538,41.77205],[46.17891,41.72094],[46.19759,41.62327],[46.24429,41.59883],[46.26531,41.63339],[46.28182,41.60089],[46.3253,41.60912],[46.34039,41.5947],[46.34126,41.57454],[46.29794,41.5724],[46.33925,41.4963],[46.40307,41.48464],[46.4669,41.43331],[46.63658,41.37727],[46.72375,41.28609],[46.66148,41.20533],[46.63969,41.09515],[46.55096,41.1104],[46.48558,41.0576],[46.456,41.09984],[46.37661,41.10805],[46.27698,41.19011],[46.13221,41.19479],[45.95786,41.17956],[45.80842,41.2229],[45.69946,41.29545],[45.75705,41.35157],[45.71035,41.36208],[45.68389,41.3539],[45.45973,41.45898],[45.4006,41.42402],[45.31352,41.47168],[45.26285,41.46433],[45.1797,41.42231],[45.09867,41.34065],[45.0133,41.29747],[45.05497,41.2464],[45.02932,41.2101],[45.05201,41.19211],[45.11811,41.19967],[45.1969,41.168],[45.19942,41.13299],[45.08028,41.10917],[45.06784,41.05379],[45.12923,41.06059],[45.1313,41.09369],[45.1634,41.08082],[45.16493,41.05068],[45.1994,41.04518],[45.25897,41.0027],[45.26162,41.0228],[45.28859,41.03757],[45.35677,40.99784],[45.39725,41.02603],[45.44083,41.01663],[45.40814,40.97904],[45.60584,40.87436],[45.55914,40.78366],[45.4206,40.7424],[45.35366,40.65979],[45.45484,40.57707],[45.42994,40.53804],[45.65098,40.37696],[45.95609,40.27846],[45.97944,40.181],[45.83779,39.98925],[45.78642,40.03218],[45.59806,40.0131],[45.60895,39.97733],[45.7833,39.9475],[45.82533,39.82925],[45.96543,39.78859],[46.18493,39.60533],[46.40286,39.63651],[46.42465,39.57534],[46.52117,39.58734],[46.57098,39.56694],[46.57721,39.54414],[46.51027,39.52373],[46.53051,39.47809],[46.4013,39.45405],[46.37795,39.42039],[46.43244,39.35181],[46.50093,39.33736],[46.56476,39.24942],[46.63481,39.23013],[46.58032,39.21204],[46.54141,39.15895],[46.52584,39.18912],[46.44022,39.19636],[46.54296,39.07078],[46.51805,38.94982],[46.53497,38.86548],[46.75752,39.03231],[46.83822,39.13143],[46.92539,39.16644],[46.95341,39.13505],[47.05771,39.20143],[47.05927,39.24846],[47.31301,39.37492],[47.38978,39.45999],[47.50099,39.49615],[47.84774,39.66285],[47.98977,39.70999],[48.34264,39.42935],[48.37385,39.37584],[48.15984,39.30028],[48.12404,39.25208],[48.15361,39.19419],[48.31239,39.09278],[48.33884,39.03022],[48.28437,38.97186],[48.08627,38.94434],[48.07734,38.91616],[48.01409,38.90333],[48.02581,38.82705],[48.24773,38.71883],[48.3146,38.59958],[48.45084,38.61013],[48.58793,38.45076],[48.62217,38.40198],[48.70001,38.40564],[48.78979,38.45026],[48.81072,38.44853],[48.84969,38.45015],[48.88288,38.43975],[52.39847,39.43556],[48.80971,41.95365],[48.5867,41.84306],[48.55078,41.77917],[48.42301,41.65444],[48.40277,41.60441],[48.2878,41.56221],[48.22064,41.51472],[48.07587,41.49957],[47.87973,41.21798],[47.75831,41.19455],[47.62288,41.22969],[47.54504,41.20275],[47.49004,41.26366],[47.34579,41.27884],[47.10762,41.59044],[47.03757,41.55434],[46.99554,41.59743],[47.00955,41.63583],[46.8134,41.76252],[46.75269,41.8623],[46.58924,41.80547],[46.5332,41.87389],[46.42738,41.91323]],[[45.50279,40.58424],[45.47927,40.65023],[45.51825,40.67382],[45.56071,40.64765],[45.50279,40.58424]]],[[[45.00864,41.03411],[45.03792,41.03938],[45.04517,41.06653],[45.03406,41.07931],[45.00864,41.09407],[44.97169,41.09176],[44.95383,41.07553],[44.96031,41.06345],[44.9903,41.05657],[45.00864,41.03411]]],[[[45.21324,40.9817],[45.23095,40.97828],[45.23487,41.00226],[45.20625,41.01484],[45.18382,41.0066],[45.19312,40.98998],[45.20518,40.99348],[45.21219,40.99001],[45.21324,40.9817]]],[[[45.46992,39.49888],[45.29606,39.57654],[45.30385,39.61373],[45.23535,39.61373],[45.21784,39.58074],[45.17464,39.58614],[45.18554,39.67846],[45.06604,39.79277],[44.92869,39.72157],[44.88354,39.74432],[44.75779,39.7148],[44.80977,39.65768],[44.81043,39.62677],[44.88916,39.59653],[44.96746,39.42998],[45.05932,39.36435],[45.08751,39.35052],[45.16168,39.21952],[45.30489,39.18333],[45.40148,39.09007],[45.40452,39.07224],[45.44811,39.04927],[45.44966,38.99243],[45.6131,38.964],[45.6155,38.94304],[45.65172,38.95199],[45.83883,38.90768],[45.90266,38.87739],[45.94624,38.89072],[46.00228,38.87376],[46.06766,38.87861],[46.14785,38.84206],[46.06973,39.0744],[46.02303,39.09978],[45.99774,39.28931],[45.79225,39.3695],[45.83,39.46487],[45.80804,39.56716],[45.70547,39.60174],[45.46992,39.49888]]]]}},{type:"Feature",properties:{iso1A2:"BA",iso1A3:"BIH",iso1N3:"070",wikidata:"Q225",nameEn:"Bosnia and Herzegovina",groups:["039","150","UN"],callingCodes:["387"]},geometry:{type:"MultiPolygon",coordinates:[[[[17.84826,45.04489],[17.66571,45.13408],[17.59104,45.10816],[17.51469,45.10791],[17.47589,45.12656],[17.45615,45.12523],[17.4498,45.16119],[17.41229,45.13335],[17.33573,45.14521],[17.32092,45.16246],[17.26815,45.18444],[17.25131,45.14957],[17.24325,45.146],[17.18438,45.14764],[17.0415,45.20759],[16.9385,45.22742],[16.92405,45.27607],[16.83804,45.18951],[16.81137,45.18434],[16.78219,45.19002],[16.74845,45.20393],[16.64962,45.20714],[16.60194,45.23042],[16.56559,45.22307],[16.5501,45.2212],[16.52982,45.22713],[16.49155,45.21153],[16.4634,45.14522],[16.40023,45.1147],[16.38309,45.05955],[16.38219,45.05139],[16.3749,45.05206],[16.35863,45.03529],[16.35404,45.00241],[16.29036,44.99732],[16.12153,45.09616],[15.98412,45.23088],[15.83512,45.22459],[15.76371,45.16508],[15.78842,45.11519],[15.74585,45.0638],[15.78568,44.97401],[15.74723,44.96818],[15.76096,44.87045],[15.79472,44.8455],[15.72584,44.82334],[15.8255,44.71501],[15.89348,44.74964],[16.05828,44.61538],[16.00884,44.58605],[16.03012,44.55572],[16.10566,44.52586],[16.16814,44.40679],[16.12969,44.38275],[16.21346,44.35231],[16.18688,44.27012],[16.36864,44.08263],[16.43662,44.07523],[16.43629,44.02826],[16.50528,44.0244],[16.55472,43.95326],[16.70922,43.84887],[16.75316,43.77157],[16.80736,43.76011],[17.00585,43.58037],[17.15828,43.49376],[17.24411,43.49376],[17.29699,43.44542],[17.25579,43.40353],[17.286,43.33065],[17.46986,43.16559],[17.64268,43.08595],[17.70879,42.97223],[17.5392,42.92787],[17.6444,42.88641],[17.68151,42.92725],[17.7948,42.89556],[17.80854,42.9182],[17.88201,42.83668],[18.24318,42.6112],[18.36197,42.61423],[18.43735,42.55921],[18.49778,42.58409],[18.53751,42.57376],[18.55504,42.58409],[18.52232,42.62279],[18.57373,42.64429],[18.54841,42.68328],[18.54603,42.69171],[18.55221,42.69045],[18.56789,42.72074],[18.47324,42.74992],[18.45921,42.81682],[18.47633,42.85829],[18.4935,42.86433],[18.49661,42.89306],[18.49076,42.95553],[18.52232,43.01451],[18.66254,43.03928],[18.64735,43.14766],[18.66605,43.2056],[18.71747,43.2286],[18.6976,43.25243],[18.76538,43.29838],[18.85342,43.32426],[18.84794,43.33735],[18.83912,43.34795],[18.90911,43.36383],[18.95819,43.32899],[18.95001,43.29327],[19.00844,43.24988],[19.04233,43.30008],[19.08206,43.29668],[19.08673,43.31453],[19.04071,43.397],[19.01078,43.43854],[18.96053,43.45042],[18.95469,43.49367],[18.91379,43.50299],[19.01078,43.55806],[19.04934,43.50384],[19.13933,43.5282],[19.15685,43.53943],[19.22807,43.5264],[19.24774,43.53061],[19.2553,43.5938],[19.33426,43.58833],[19.36653,43.60921],[19.41941,43.54056],[19.42696,43.57987],[19.50455,43.58385],[19.5176,43.71403],[19.3986,43.79668],[19.23465,43.98764],[19.24363,44.01502],[19.38439,43.96611],[19.52515,43.95573],[19.56498,43.99922],[19.61836,44.01464],[19.61991,44.05254],[19.57467,44.04716],[19.55999,44.06894],[19.51167,44.08158],[19.47321,44.1193],[19.48386,44.14332],[19.47338,44.15034],[19.43905,44.13088],[19.40927,44.16722],[19.3588,44.18353],[19.34773,44.23244],[19.32464,44.27185],[19.26945,44.26957],[19.23306,44.26097],[19.20508,44.2917],[19.18328,44.28383],[19.16741,44.28648],[19.13332,44.31492],[19.13556,44.338],[19.11547,44.34218],[19.1083,44.3558],[19.11865,44.36712],[19.10298,44.36924],[19.10365,44.37795],[19.10704,44.38249],[19.10749,44.39421],[19.11785,44.40313],[19.14681,44.41463],[19.14837,44.45253],[19.12278,44.50132],[19.13369,44.52521],[19.16699,44.52197],[19.26388,44.65412],[19.32543,44.74058],[19.36722,44.88164],[19.18183,44.92055],[19.01994,44.85493],[18.8704,44.85097],[18.76347,44.90669],[18.76369,44.93707],[18.80661,44.93561],[18.78357,44.97741],[18.65723,45.07544],[18.47939,45.05871],[18.41896,45.11083],[18.32077,45.1021],[18.24387,45.13699],[18.1624,45.07654],[18.03121,45.12632],[18.01594,45.15163],[17.99479,45.14958],[17.97834,45.13831],[17.97336,45.12245],[17.93706,45.08016],[17.87148,45.04645],[17.84826,45.04489]]]]}},{type:"Feature",properties:{iso1A2:"BB",iso1A3:"BRB",iso1N3:"052",wikidata:"Q244",nameEn:"Barbados",groups:["029","003","419","019","UN"],driveSide:"left",callingCodes:["1 246"]},geometry:{type:"MultiPolygon",coordinates:[[[[-58.56442,13.24471],[-59.80731,13.87556],[-59.82929,12.70644],[-58.56442,13.24471]]]]}},{type:"Feature",properties:{iso1A2:"BD",iso1A3:"BGD",iso1N3:"050",wikidata:"Q902",nameEn:"Bangladesh",groups:["034","142","UN"],driveSide:"left",callingCodes:["880"]},geometry:{type:"MultiPolygon",coordinates:[[[[89.15869,26.13708],[89.08899,26.38845],[88.95612,26.4564],[88.92357,26.40711],[88.91321,26.37984],[89.05328,26.2469],[88.85004,26.23211],[88.78961,26.31093],[88.67837,26.26291],[88.69485,26.38353],[88.62144,26.46783],[88.4298,26.54489],[88.41196,26.63837],[88.33093,26.48929],[88.35153,26.45241],[88.36938,26.48683],[88.48749,26.45855],[88.51649,26.35923],[88.35153,26.29123],[88.34757,26.22216],[88.1844,26.14417],[88.16581,26.0238],[88.08804,25.91334],[88.13138,25.78773],[88.242,25.80811],[88.45103,25.66245],[88.4559,25.59227],[88.677,25.46959],[88.81296,25.51546],[88.85278,25.34679],[89.01105,25.30303],[89.00463,25.26583],[88.94067,25.18534],[88.44766,25.20149],[88.46277,25.07468],[88.33917,24.86803],[88.27325,24.88796],[88.21832,24.96642],[88.14004,24.93529],[88.15515,24.85806],[88.00683,24.66477],[88.08786,24.63232],[88.12296,24.51301],[88.50934,24.32474],[88.68801,24.31464],[88.74841,24.1959],[88.6976,24.14703],[88.73743,23.91751],[88.66189,23.87607],[88.58087,23.87105],[88.56507,23.64044],[88.74841,23.47361],[88.79351,23.50535],[88.79254,23.46028],[88.71133,23.2492],[88.99148,23.21134],[88.86377,23.08759],[88.88327,23.03885],[88.87063,22.95235],[88.96713,22.83346],[88.9151,22.75228],[88.94614,22.66941],[88.9367,22.58527],[89.07114,22.15335],[89.08044,21.41871],[92.47409,20.38654],[92.26071,21.05697],[92.17752,21.17445],[92.20087,21.337],[92.37939,21.47764],[92.43158,21.37025],[92.55105,21.3856],[92.60187,21.24615],[92.68152,21.28454],[92.59775,21.6092],[92.62187,21.87037],[92.60949,21.97638],[92.56616,22.13554],[92.60029,22.1522],[92.5181,22.71441],[92.37665,22.9435],[92.38214,23.28705],[92.26541,23.70392],[92.15417,23.73409],[92.04706,23.64229],[91.95093,23.73284],[91.95642,23.47361],[91.84789,23.42235],[91.76417,23.26619],[91.81634,23.08001],[91.7324,23.00043],[91.61571,22.93929],[91.54993,23.01051],[91.46615,23.2328],[91.4035,23.27522],[91.40848,23.07117],[91.36453,23.06612],[91.28293,23.37538],[91.15579,23.6599],[91.25192,23.83463],[91.22308,23.89616],[91.29587,24.0041],[91.35741,23.99072],[91.37414,24.10693],[91.55542,24.08687],[91.63782,24.1132],[91.65292,24.22095],[91.73257,24.14703],[91.76004,24.23848],[91.82596,24.22345],[91.89258,24.14674],[91.96603,24.3799],[92.11662,24.38997],[92.15796,24.54435],[92.25854,24.9191],[92.38626,24.86055],[92.49887,24.88796],[92.39147,25.01471],[92.33957,25.07593],[92.0316,25.1834],[91.63648,25.12846],[91.25517,25.20677],[90.87427,25.15799],[90.65042,25.17788],[90.40034,25.1534],[90.1155,25.22686],[89.90478,25.31038],[89.87629,25.28337],[89.83371,25.29548],[89.84086,25.31854],[89.81208,25.37244],[89.86129,25.61714],[89.84388,25.70042],[89.80585,25.82489],[89.86592,25.93115],[89.77728,26.04254],[89.77865,26.08387],[89.73581,26.15818],[89.70201,26.15138],[89.63968,26.22595],[89.57101,25.9682],[89.53515,26.00382],[89.35953,26.0077],[89.15869,26.13708]]]]}},{type:"Feature",properties:{iso1A2:"BE",iso1A3:"BEL",iso1N3:"056",wikidata:"Q31",nameEn:"Belgium",groups:["EU","155","150","UN"],callingCodes:["32"]},geometry:{type:"MultiPolygon",coordinates:[[[[4.93295,51.44945],[4.93909,51.44632],[4.9524,51.45014],[4.95244,51.45207],[4.93295,51.44945]]],[[[4.91493,51.4353],[4.92652,51.43329],[4.92952,51.42984],[4.93986,51.43064],[4.94265,51.44003],[4.93471,51.43861],[4.93416,51.44185],[4.94025,51.44193],[4.93544,51.44634],[4.92879,51.44161],[4.92815,51.43856],[4.92566,51.44273],[4.92811,51.4437],[4.92287,51.44741],[4.91811,51.44621],[4.92227,51.44252],[4.91935,51.43634],[4.91493,51.4353]]],[[[4.82946,51.4213],[4.82409,51.44736],[4.84139,51.4799],[4.78803,51.50284],[4.77321,51.50529],[4.74578,51.48937],[4.72935,51.48424],[4.65442,51.42352],[4.57489,51.4324],[4.53521,51.4243],[4.52846,51.45002],[4.54675,51.47265],[4.5388,51.48184],[4.47736,51.4778],[4.38122,51.44905],[4.39747,51.43316],[4.38064,51.41965],[4.43777,51.36989],[4.39292,51.35547],[4.34086,51.35738],[4.33265,51.37687],[4.21923,51.37443],[4.24024,51.35371],[4.16721,51.29348],[4.05165,51.24171],[4.01957,51.24504],[3.97889,51.22537],[3.90125,51.20371],[3.78783,51.2151],[3.78999,51.25766],[3.58939,51.30064],[3.51502,51.28697],[3.52698,51.2458],[3.43488,51.24135],[3.41704,51.25933],[3.38289,51.27331],[3.35847,51.31572],[3.38696,51.33436],[3.36263,51.37112],[2.56575,51.85301],[2.18458,51.52087],[2.55904,51.07014],[2.57551,51.00326],[2.63074,50.94746],[2.59093,50.91751],[2.63331,50.81457],[2.71165,50.81295],[2.81056,50.71773],[2.8483,50.72276],[2.86985,50.7033],[2.87937,50.70298],[2.88504,50.70656],[2.90069,50.69263],[2.91036,50.6939],[2.90873,50.702],[2.95019,50.75138],[2.96778,50.75242],[3.00537,50.76588],[3.04314,50.77674],[3.09163,50.77717],[3.10614,50.78303],[3.11206,50.79416],[3.11987,50.79188],[3.1257,50.78603],[3.15017,50.79031],[3.16476,50.76843],[3.18339,50.74981],[3.18811,50.74025],[3.20064,50.73547],[3.19017,50.72569],[3.20845,50.71662],[3.22042,50.71019],[3.24593,50.71389],[3.26063,50.70086],[3.26141,50.69151],[3.2536,50.68977],[3.264,50.67668],[3.23951,50.6585],[3.2729,50.60718],[3.28575,50.52724],[3.37693,50.49538],[3.44629,50.51009],[3.47385,50.53397],[3.51564,50.5256],[3.49509,50.48885],[3.5683,50.50192],[3.58361,50.49049],[3.61014,50.49568],[3.64426,50.46275],[3.66153,50.45165],[3.67494,50.40239],[3.67262,50.38663],[3.65709,50.36873],[3.66976,50.34563],[3.71009,50.30305],[3.70987,50.3191],[3.73911,50.34809],[3.84314,50.35219],[3.90781,50.32814],[3.96771,50.34989],[4.0268,50.35793],[4.0689,50.3254],[4.10237,50.31247],[4.10957,50.30234],[4.11954,50.30425],[4.13665,50.25609],[4.16808,50.25786],[4.15524,50.2833],[4.17347,50.28838],[4.17861,50.27443],[4.20651,50.27333],[4.21945,50.25539],[4.15524,50.21103],[4.16014,50.19239],[4.13561,50.13078],[4.20147,50.13535],[4.23101,50.06945],[4.16294,50.04719],[4.13508,50.01976],[4.14239,49.98034],[4.20532,49.95803],[4.31963,49.97043],[4.35051,49.95315],[4.43488,49.94122],[4.51098,49.94659],[4.5414,49.96911],[4.68695,49.99685],[4.70064,50.09384],[4.75237,50.11314],[4.82438,50.16878],[4.83279,50.15331],[4.88602,50.15182],[4.8382,50.06738],[4.78827,49.95609],[4.88529,49.9236],[4.85134,49.86457],[4.86965,49.82271],[4.85464,49.78995],[4.96714,49.79872],[5.09249,49.76193],[5.14545,49.70287],[5.26232,49.69456],[5.31465,49.66846],[5.33039,49.6555],[5.30214,49.63055],[5.3137,49.61225],[5.33851,49.61599],[5.34837,49.62889],[5.3974,49.61596],[5.43713,49.5707],[5.46734,49.52648],[5.46541,49.49825],[5.55001,49.52729],[5.60909,49.51228],[5.64505,49.55146],[5.75649,49.54321],[5.7577,49.55915],[5.77435,49.56298],[5.79195,49.55228],[5.81838,49.54777],[5.84143,49.5533],[5.84692,49.55663],[5.8424,49.56082],[5.87256,49.57539],[5.86986,49.58756],[5.84971,49.58674],[5.84826,49.5969],[5.8762,49.60898],[5.87609,49.62047],[5.88393,49.62802],[5.88552,49.63507],[5.90599,49.63853],[5.90164,49.6511],[5.9069,49.66377],[5.86175,49.67862],[5.86527,49.69291],[5.88677,49.70951],[5.86503,49.72739],[5.84193,49.72161],[5.82562,49.72395],[5.83149,49.74729],[5.82245,49.75048],[5.78871,49.7962],[5.75409,49.79239],[5.74953,49.81428],[5.74364,49.82058],[5.74844,49.82435],[5.7404,49.83452],[5.74076,49.83823],[5.74975,49.83933],[5.74953,49.84709],[5.75884,49.84811],[5.74567,49.85368],[5.75861,49.85631],[5.75269,49.8711],[5.78415,49.87922],[5.73621,49.89796],[5.77314,49.93646],[5.77291,49.96056],[5.80833,49.96451],[5.81163,49.97142],[5.83467,49.97823],[5.83968,49.9892],[5.82331,49.99662],[5.81866,50.01286],[5.8551,50.02683],[5.86904,50.04614],[5.85474,50.06342],[5.8857,50.07824],[5.89488,50.11476],[5.95929,50.13295],[5.96453,50.17259],[6.02488,50.18283],[6.03093,50.16362],[6.06406,50.15344],[6.08577,50.17246],[6.12028,50.16374],[6.1137,50.13668],[6.1379,50.12964],[6.15298,50.14126],[6.14132,50.14971],[6.14588,50.17106],[6.18739,50.1822],[6.18364,50.20815],[6.16853,50.2234],[6.208,50.25179],[6.28797,50.27458],[6.29949,50.30887],[6.32488,50.32333],[6.35701,50.31139],[6.40641,50.32425],[6.40785,50.33557],[6.3688,50.35898],[6.34406,50.37994],[6.36852,50.40776],[6.37219,50.45397],[6.34005,50.46083],[6.3465,50.48833],[6.30809,50.50058],[6.26637,50.50272],[6.22335,50.49578],[6.20599,50.52089],[6.19193,50.5212],[6.18716,50.52653],[6.19579,50.5313],[6.19735,50.53576],[6.17802,50.54179],[6.17739,50.55875],[6.20281,50.56952],[6.22581,50.5907],[6.24005,50.58732],[6.24888,50.59869],[6.2476,50.60392],[6.26957,50.62444],[6.17852,50.6245],[6.11707,50.72231],[6.04428,50.72861],[6.0406,50.71848],[6.0326,50.72647],[6.03889,50.74618],[6.01976,50.75398],[5.97545,50.75441],[5.95942,50.7622],[5.89132,50.75124],[5.89129,50.75125],[5.88734,50.77092],[5.84888,50.75448],[5.84548,50.76542],[5.80673,50.7558],[5.77513,50.78308],[5.76533,50.78159],[5.74356,50.7691],[5.73904,50.75674],[5.72216,50.76398],[5.69469,50.75529],[5.68091,50.75804],[5.70107,50.7827],[5.68995,50.79641],[5.70118,50.80764],[5.65259,50.82309],[5.64009,50.84742],[5.64504,50.87107],[5.67886,50.88142],[5.69858,50.91046],[5.71626,50.90796],[5.72644,50.91167],[5.72545,50.92312],[5.74644,50.94723],[5.75927,50.95601],[5.74752,50.96202],[5.72875,50.95428],[5.71864,50.96092],[5.76242,50.99703],[5.77688,51.02483],[5.75961,51.03113],[5.77258,51.06196],[5.79835,51.05834],[5.79903,51.09371],[5.82921,51.09328],[5.83226,51.10585],[5.8109,51.10861],[5.80798,51.11661],[5.85508,51.14445],[5.82564,51.16753],[5.77697,51.1522],[5.77735,51.17845],[5.74617,51.18928],[5.70344,51.1829],[5.65528,51.18736],[5.65145,51.19788],[5.5603,51.22249],[5.5569,51.26544],[5.515,51.29462],[5.48476,51.30053],[5.46519,51.2849],[5.4407,51.28169],[5.41672,51.26248],[5.347,51.27502],[5.33886,51.26314],[5.29716,51.26104],[5.26461,51.26693],[5.23814,51.26064],[5.22542,51.26888],[5.24244,51.30495],[5.2002,51.32243],[5.16222,51.31035],[5.13377,51.31592],[5.13105,51.34791],[5.07102,51.39469],[5.10456,51.43163],[5.07891,51.4715],[5.04774,51.47022],[5.03281,51.48679],[5.0106,51.47167],[5.00393,51.44406],[4.92152,51.39487],[4.90016,51.41404],[4.84988,51.41502],[4.78941,51.41102],[4.77229,51.41337],[4.76577,51.43046],[4.78314,51.43319],[4.82946,51.4213]]]]}},{type:"Feature",properties:{iso1A2:"BF",iso1A3:"BFA",iso1N3:"854",wikidata:"Q965",nameEn:"Burkina Faso",groups:["011","202","002","UN"],callingCodes:["226"]},geometry:{type:"MultiPolygon",coordinates:[[[[.23859,15.00135],[.06588,14.96961],[-.24673,15.07805],[-.72004,15.08655],[-1.05875,14.7921],[-1.32166,14.72774],[-1.68083,14.50023],[-1.97945,14.47709],[-1.9992,14.19011],[-2.10223,14.14878],[-2.47587,14.29671],[-2.66175,14.14713],[-2.84667,14.05532],[-2.90831,13.81174],[-2.88189,13.64921],[-3.26407,13.70699],[-3.28396,13.5422],[-3.23599,13.29035],[-3.43507,13.27272],[-3.4313,13.1588],[-3.54454,13.1781],[-3.7911,13.36665],[-3.96282,13.38164],[-3.90558,13.44375],[-3.96501,13.49778],[-4.34477,13.12927],[-4.21819,12.95722],[-4.238,12.71467],[-4.47356,12.71252],[-4.41412,12.31922],[-4.57703,12.19875],[-4.54841,12.1385],[-4.62546,12.13204],[-4.62987,12.06531],[-4.70692,12.06746],[-4.72893,12.01579],[-5.07897,11.97918],[-5.26389,11.84778],[-5.40258,11.8327],[-5.26389,11.75728],[-5.29251,11.61715],[-5.22867,11.60421],[-5.20665,11.43811],[-5.25509,11.36905],[-5.25949,11.24816],[-5.32553,11.21578],[-5.32994,11.13371],[-5.49284,11.07538],[-5.41579,10.84628],[-5.47083,10.75329],[-5.46643,10.56074],[-5.51058,10.43177],[-5.39602,10.2929],[-5.12465,10.29788],[-4.96453,9.99923],[-4.96621,9.89132],[-4.6426,9.70696],[-4.31392,9.60062],[-4.25999,9.76012],[-3.69703,9.94279],[-3.31779,9.91125],[-3.27228,9.84981],[-3.19306,9.93781],[-3.16609,9.85147],[-3.00765,9.74019],[-2.93012,9.57403],[-2.76494,9.40778],[-2.68802,9.49343],[-2.76534,9.56589],[-2.74174,9.83172],[-2.83108,10.40252],[-2.94232,10.64281],[-2.83373,11.0067],[-.67143,10.99811],[-.61937,10.91305],[-.44298,11.04292],[-.42391,11.11661],[-.38219,11.12596],[-.35955,11.07801],[-.28566,11.12713],[-.27374,11.17157],[-.13493,11.14075],[.50388,11.01011],[.48852,10.98561],[.50521,10.98035],[.4958,10.93269],[.66104,10.99964],[.91245,10.99597],[.9813,11.08876],[1.03409,11.04719],[1.42823,11.46822],[2.00988,11.42227],[2.29983,11.68254],[2.39723,11.89473],[2.05785,12.35539],[2.26349,12.41915],[.99167,13.10727],[.99253,13.37515],[1.18873,13.31771],[1.21217,13.37853],[1.24516,13.33968],[1.28509,13.35488],[1.24429,13.39373],[1.20088,13.38951],[1.02813,13.46635],[.99514,13.5668],[.77637,13.64442],[.77377,13.6866],[.61924,13.68491],[.38051,14.05575],[.16936,14.51654],[.23859,15.00135]]]]}},{type:"Feature",properties:{iso1A2:"BG",iso1A3:"BGR",iso1N3:"100",wikidata:"Q219",nameEn:"Bulgaria",groups:["EU","151","150","UN"],callingCodes:["359"]},geometry:{type:"MultiPolygon",coordinates:[[[[23.05288,43.79494],[22.85314,43.84452],[22.83753,43.88055],[22.87873,43.9844],[23.01674,44.01946],[23.04988,44.07694],[22.67173,44.21564],[22.61711,44.16938],[22.61688,44.06534],[22.41449,44.00514],[22.35558,43.81281],[22.41043,43.69566],[22.47582,43.6558],[22.53397,43.47225],[22.82036,43.33665],[22.89727,43.22417],[23.00806,43.19279],[22.98104,43.11199],[22.89521,43.03625],[22.78397,42.98253],[22.74826,42.88701],[22.54302,42.87774],[22.43309,42.82057],[22.4997,42.74144],[22.43983,42.56851],[22.55669,42.50144],[22.51961,42.3991],[22.47498,42.3915],[22.45919,42.33822],[22.34773,42.31725],[22.38136,42.30339],[22.47251,42.20393],[22.50289,42.19527],[22.51224,42.15457],[22.67701,42.06614],[22.86749,42.02275],[22.90254,41.87587],[22.96682,41.77137],[23.01239,41.76527],[23.03342,41.71034],[22.95513,41.63265],[22.96331,41.35782],[22.93334,41.34104],[23.1833,41.31755],[23.21953,41.33773],[23.22771,41.37106],[23.31301,41.40525],[23.33639,41.36317],[23.40416,41.39999],[23.52453,41.40262],[23.63203,41.37632],[23.67644,41.41139],[23.76525,41.40175],[23.80148,41.43943],[23.89613,41.45257],[23.91483,41.47971],[23.96975,41.44118],[24.06908,41.46132],[24.06323,41.53222],[24.10063,41.54796],[24.18126,41.51735],[24.27124,41.57682],[24.30513,41.51297],[24.52599,41.56808],[24.61129,41.42278],[24.71529,41.41928],[24.8041,41.34913],[24.82514,41.4035],[24.86136,41.39298],[24.90928,41.40876],[24.942,41.38685],[25.11611,41.34212],[25.28322,41.23411],[25.48187,41.28506],[25.52394,41.2798],[25.55082,41.31667],[25.61042,41.30614],[25.66183,41.31316],[25.70507,41.29209],[25.8266,41.34563],[25.87919,41.30526],[26.12926,41.35878],[26.16548,41.42278],[26.20288,41.43943],[26.14796,41.47533],[26.176,41.50072],[26.17951,41.55409],[26.14328,41.55496],[26.15146,41.60828],[26.07083,41.64584],[26.06148,41.70345],[26.16841,41.74858],[26.21325,41.73223],[26.22888,41.74139],[26.2654,41.71544],[26.30255,41.70925],[26.35957,41.71149],[26.32952,41.73637],[26.33589,41.76802],[26.36952,41.82265],[26.53968,41.82653],[26.57961,41.90024],[26.56051,41.92995],[26.62996,41.97644],[26.79143,41.97386],[26.95638,42.00741],[27.03277,42.0809],[27.08486,42.08735],[27.19251,42.06028],[27.22376,42.10152],[27.27411,42.10409],[27.45478,41.96591],[27.52379,41.93756],[27.55191,41.90928],[27.69949,41.97515],[27.81235,41.94803],[27.83492,41.99709],[27.91479,41.97902],[28.02971,41.98066],[28.32297,41.98371],[29.24336,43.70874],[28.23293,43.76],[27.99558,43.84193],[27.92008,44.00761],[27.73468,43.95326],[27.64542,44.04958],[27.60834,44.01206],[27.39757,44.0141],[27.26845,44.12602],[26.95141,44.13555],[26.62712,44.05698],[26.38764,44.04356],[26.10115,43.96908],[26.05584,43.90925],[25.94911,43.85745],[25.72792,43.69263],[25.39528,43.61866],[25.17144,43.70261],[25.10718,43.6831],[24.96682,43.72693],[24.73542,43.68523],[24.62281,43.74082],[24.50264,43.76314],[24.35364,43.70211],[24.18149,43.68218],[23.73978,43.80627],[23.61687,43.79289],[23.4507,43.84936],[23.26772,43.84843],[23.05288,43.79494]]]]}},{type:"Feature",properties:{iso1A2:"BH",iso1A3:"BHR",iso1N3:"048",wikidata:"Q398",nameEn:"Bahrain",groups:["145","142","UN"],callingCodes:["973"]},geometry:{type:"MultiPolygon",coordinates:[[[[50.93865,26.30758],[50.71771,26.73086],[50.38162,26.53976],[50.26923,26.08243],[50.302,25.87592],[50.57069,25.57887],[50.80824,25.54641],[50.7801,25.595],[50.86149,25.6965],[50.81266,25.88946],[50.93865,26.30758]]]]}},{type:"Feature",properties:{iso1A2:"BI",iso1A3:"BDI",iso1N3:"108",wikidata:"Q967",nameEn:"Burundi",groups:["014","202","002","UN"],callingCodes:["257"]},geometry:{type:"MultiPolygon",coordinates:[[[[30.54501,-2.41404],[30.42933,-2.31064],[30.14034,-2.43626],[29.95911,-2.33348],[29.88237,-2.75105],[29.36805,-2.82933],[29.32234,-2.6483],[29.0562,-2.58632],[29.04081,-2.7416],[29.00167,-2.78523],[29.00404,-2.81978],[29.0505,-2.81774],[29.09119,-2.87871],[29.09797,-2.91935],[29.16037,-2.95457],[29.17258,-2.99385],[29.25633,-3.05471],[29.21463,-3.3514],[29.23708,-3.75856],[29.43673,-4.44845],[29.63827,-4.44681],[29.75109,-4.45836],[29.77289,-4.41733],[29.82885,-4.36153],[29.88172,-4.35743],[30.03323,-4.26631],[30.22042,-4.01738],[30.45915,-3.56532],[30.84165,-3.25152],[30.83823,-2.97837],[30.6675,-2.98987],[30.57926,-2.89791],[30.4987,-2.9573],[30.40662,-2.86151],[30.52747,-2.65841],[30.41789,-2.66266],[30.54501,-2.41404]]]]}},{type:"Feature",properties:{iso1A2:"BJ",iso1A3:"BEN",iso1N3:"204",wikidata:"Q962",nameEn:"Benin",aliases:["DY"],groups:["011","202","002","UN"],callingCodes:["229"]},geometry:{type:"MultiPolygon",coordinates:[[[[3.59375,11.70269],[3.48187,11.86092],[3.31613,11.88495],[3.25352,12.01467],[2.83978,12.40585],[2.6593,12.30631],[2.37783,12.24804],[2.39657,12.10952],[2.45824,11.98672],[2.39723,11.89473],[2.29983,11.68254],[2.00988,11.42227],[1.42823,11.46822],[1.03409,11.04719],[.9813,11.08876],[.91245,10.99597],[.8804,10.803],[.80358,10.71459],[.77666,10.37665],[1.35507,9.99525],[1.36624,9.5951],[1.33675,9.54765],[1.41746,9.3226],[1.5649,9.16941],[1.61838,9.0527],[1.64249,6.99562],[1.55877,6.99737],[1.61812,6.74843],[1.58105,6.68619],[1.76906,6.43189],[1.79826,6.28221],[1.62913,6.24075],[1.67336,6.02702],[2.74181,6.13349],[2.70566,6.38038],[2.70464,6.50831],[2.74334,6.57291],[2.7325,6.64057],[2.78204,6.70514],[2.78823,6.76356],[2.73405,6.78508],[2.74024,6.92802],[2.71702,6.95722],[2.76965,7.13543],[2.74489,7.42565],[2.79442,7.43486],[2.78668,7.5116],[2.73405,7.5423],[2.73095,7.7755],[2.67523,7.87825],[2.77907,9.06924],[3.08017,9.10006],[3.14147,9.28375],[3.13928,9.47167],[3.25093,9.61632],[3.34726,9.70696],[3.32099,9.78032],[3.35383,9.83641],[3.54429,9.87739],[3.66908,10.18136],[3.57275,10.27185],[3.6844,10.46351],[3.78292,10.40538],[3.84243,10.59316],[3.71505,11.13015],[3.49175,11.29765],[3.59375,11.70269]]]]}},{type:"Feature",properties:{iso1A2:"BL",iso1A3:"BLM",iso1N3:"652",wikidata:"Q25362",nameEn:"Saint-Barth\xE9lemy",country:"FR",groups:["EU","Q1451600","029","003","419","019","UN"],callingCodes:["590"]},geometry:{type:"MultiPolygon",coordinates:[[[[-62.62718,18.26185],[-63.1055,17.86651],[-62.34423,17.49165],[-62.62718,18.26185]]]]}},{type:"Feature",properties:{iso1A2:"BM",iso1A3:"BMU",iso1N3:"060",wikidata:"Q23635",nameEn:"Bermuda",country:"GB",groups:["BOTS","021","003","019","UN"],driveSide:"left",callingCodes:["1 441"]},geometry:{type:"MultiPolygon",coordinates:[[[[-63.20987,32.6953],[-65.31453,32.68437],[-65.63955,31.43417],[-63.20987,32.6953]]]]}},{type:"Feature",properties:{iso1A2:"BN",iso1A3:"BRN",iso1N3:"096",wikidata:"Q921",nameEn:"Brunei",groups:["Q36117","035","142","UN"],driveSide:"left",callingCodes:["673"]},geometry:{type:"MultiPolygon",coordinates:[[[[115.16236,5.01011],[115.02521,5.35005],[114.10166,4.76112],[114.07448,4.58441],[114.15813,4.57],[114.26876,4.49878],[114.32176,4.34942],[114.32176,4.2552],[114.4416,4.27588],[114.49922,4.13108],[114.64211,4.00694],[114.78539,4.12205],[114.88039,4.4257],[114.83189,4.42387],[114.77303,4.72871],[114.8266,4.75062],[114.88841,4.81905],[114.96982,4.81146],[114.99417,4.88201],[115.05038,4.90275],[115.02955,4.82087],[115.02278,4.74137],[115.04064,4.63706],[115.07737,4.53418],[115.09978,4.39123],[115.31275,4.30806],[115.36346,4.33563],[115.2851,4.42295],[115.27819,4.63661],[115.20737,4.8256],[115.15092,4.87604],[115.16236,5.01011]]]]}},{type:"Feature",properties:{iso1A2:"BO",iso1A3:"BOL",iso1N3:"068",wikidata:"Q750",nameEn:"Bolivia",groups:["005","419","019","UN"],callingCodes:["591"]},geometry:{type:"MultiPolygon",coordinates:[[[[-63.90248,-12.52544],[-64.22539,-12.45267],[-64.30708,-12.46398],[-64.99778,-11.98604],[-65.30027,-11.48749],[-65.28141,-10.86289],[-65.35402,-10.78685],[-65.37923,-10.35141],[-65.29019,-9.86253],[-65.40615,-9.63894],[-65.56244,-9.84266],[-65.68343,-9.75323],[-67.17784,-10.34016],[-68.71533,-11.14749],[-68.7651,-11.0496],[-68.75179,-11.03688],[-68.75265,-11.02383],[-68.74802,-11.00891],[-69.42792,-10.93451],[-69.47839,-10.95254],[-69.57156,-10.94555],[-68.98115,-11.8979],[-68.65044,-12.50689],[-68.85615,-12.87769],[-68.8864,-13.40792],[-69.05265,-13.68546],[-68.88135,-14.18639],[-69.36254,-14.94634],[-69.14856,-15.23478],[-69.40336,-15.61358],[-69.20291,-16.16668],[-69.09986,-16.22693],[-68.96238,-16.194],[-68.79464,-16.33272],[-68.98358,-16.42165],[-69.04027,-16.57214],[-69.00853,-16.66769],[-69.16896,-16.72233],[-69.62883,-17.28142],[-69.46863,-17.37466],[-69.46897,-17.4988],[-69.46623,-17.60518],[-69.34126,-17.72753],[-69.28671,-17.94844],[-69.07496,-18.03715],[-69.14807,-18.16893],[-69.07432,-18.28259],[-68.94987,-18.93302],[-68.87082,-19.06003],[-68.80602,-19.08355],[-68.61989,-19.27584],[-68.41218,-19.40499],[-68.66761,-19.72118],[-68.54611,-19.84651],[-68.57132,-20.03134],[-68.74273,-20.08817],[-68.7276,-20.46178],[-68.44023,-20.62701],[-68.55383,-20.7355],[-68.53957,-20.91542],[-68.40403,-20.94562],[-68.18816,-21.28614],[-67.85114,-22.87076],[-67.54284,-22.89771],[-67.18382,-22.81525],[-66.7298,-22.23644],[-66.29714,-22.08741],[-66.24077,-21.77837],[-66.03836,-21.84829],[-66.04832,-21.9187],[-65.9261,-21.93335],[-65.7467,-22.10105],[-65.61166,-22.09504],[-65.58694,-22.09794],[-65.57743,-22.07675],[-65.47435,-22.08908],[-64.99524,-22.08255],[-64.90014,-22.12136],[-64.67174,-22.18957],[-64.58888,-22.25035],[-64.4176,-22.67692],[-64.35108,-22.73282],[-64.31489,-22.88824],[-64.22918,-22.55807],[-63.93287,-21.99934],[-63.70963,-21.99934],[-63.68113,-22.0544],[-63.66482,-21.99918],[-62.81124,-21.9987],[-62.8078,-22.12534],[-62.64455,-22.25091],[-62.2757,-21.06657],[-62.26883,-20.55311],[-61.93912,-20.10053],[-61.73723,-19.63958],[-60.00638,-19.2981],[-59.06965,-19.29148],[-58.23216,-19.80058],[-58.16225,-20.16193],[-57.8496,-19.98346],[-58.14215,-19.76276],[-57.78463,-19.03259],[-57.71113,-19.03161],[-57.69134,-19.00544],[-57.71995,-18.97546],[-57.71995,-18.89573],[-57.76764,-18.90087],[-57.56807,-18.25655],[-57.48237,-18.24219],[-57.69877,-17.8431],[-57.73949,-17.56095],[-57.90082,-17.44555],[-57.99661,-17.5273],[-58.32935,-17.28195],[-58.5058,-16.80958],[-58.30918,-16.3699],[-58.32431,-16.25861],[-58.41506,-16.32636],[-60.16069,-16.26479],[-60.23797,-15.50267],[-60.58224,-15.09887],[-60.23968,-15.09515],[-60.27887,-14.63021],[-60.46037,-14.22496],[-60.48053,-13.77981],[-61.05527,-13.50054],[-61.81151,-13.49564],[-63.76259,-12.42952],[-63.90248,-12.52544]]]]}},{type:"Feature",properties:{iso1A2:"BQ",iso1A3:"BES",iso1N3:"535",wikidata:"Q27561",nameEn:"Caribbean Netherlands",country:"NL"},geometry:null},{type:"Feature",properties:{iso1A2:"BR",iso1A3:"BRA",iso1N3:"076",wikidata:"Q155",nameEn:"Brazil",groups:["005","419","019","UN"],callingCodes:["55"]},geometry:{type:"MultiPolygon",coordinates:[[[[-59.69361,4.34069],[-59.78878,4.45637],[-60.15953,4.53456],[-60.04189,4.69801],[-59.98129,5.07097],[-60.20944,5.28754],[-60.32352,5.21299],[-60.73204,5.20931],[-60.5802,4.94312],[-60.86539,4.70512],[-60.98303,4.54167],[-61.15703,4.49839],[-61.31457,4.54167],[-61.29675,4.44216],[-61.48569,4.43149],[-61.54629,4.2822],[-62.13094,4.08309],[-62.44822,4.18621],[-62.57656,4.04754],[-62.74411,4.03331],[-62.7655,3.73099],[-62.98296,3.59935],[-63.21111,3.96219],[-63.4464,3.9693],[-63.42233,3.89995],[-63.50611,3.83592],[-63.67099,4.01731],[-63.70218,3.91417],[-63.86082,3.94796],[-63.99183,3.90172],[-64.14512,4.12932],[-64.57648,4.12576],[-64.72977,4.28931],[-64.84028,4.24665],[-64.48379,3.7879],[-64.02908,2.79797],[-64.0257,2.48156],[-63.39114,2.4317],[-63.39827,2.16098],[-64.06135,1.94722],[-64.08274,1.64792],[-64.34654,1.35569],[-64.38932,1.5125],[-65.11657,1.12046],[-65.57288,.62856],[-65.50158,.92086],[-65.6727,1.01353],[-66.28507,.74585],[-66.85795,1.22998],[-67.08222,1.17441],[-67.15784,1.80439],[-67.299,1.87494],[-67.40488,2.22258],[-67.9292,1.82455],[-68.18632,2.00091],[-68.26699,1.83463],[-68.18128,1.72881],[-69.38621,1.70865],[-69.53746,1.76408],[-69.83491,1.69353],[-69.82987,1.07864],[-69.26017,1.06856],[-69.14422,.84172],[-69.20976,.57958],[-69.47696,.71065],[-70.04162,.55437],[-70.03658,-.19681],[-69.603,-.51947],[-69.59796,-.75136],[-69.4215,-1.01853],[-69.43395,-1.42219],[-69.94708,-4.2431],[-70.00888,-4.37833],[-70.11305,-4.27281],[-70.19582,-4.3607],[-70.33236,-4.15214],[-70.77601,-4.15717],[-70.96814,-4.36915],[-71.87003,-4.51661],[-72.64391,-5.0391],[-72.83973,-5.14765],[-73.24579,-6.05764],[-73.12983,-6.43852],[-73.73986,-6.87919],[-73.77011,-7.28944],[-73.96938,-7.58465],[-73.65485,-7.77897],[-73.76576,-7.89884],[-72.92886,-9.04074],[-73.21498,-9.40904],[-72.72216,-9.41397],[-72.31883,-9.5184],[-72.14742,-9.98049],[-71.23394,-9.9668],[-70.53373,-9.42628],[-70.58453,-9.58303],[-70.55429,-9.76692],[-70.62487,-9.80666],[-70.64134,-11.0108],[-70.51395,-10.92249],[-70.38791,-11.07096],[-69.90896,-10.92744],[-69.57835,-10.94051],[-69.57156,-10.94555],[-69.47839,-10.95254],[-69.42792,-10.93451],[-68.74802,-11.00891],[-68.75265,-11.02383],[-68.75179,-11.03688],[-68.7651,-11.0496],[-68.71533,-11.14749],[-67.17784,-10.34016],[-65.68343,-9.75323],[-65.56244,-9.84266],[-65.40615,-9.63894],[-65.29019,-9.86253],[-65.37923,-10.35141],[-65.35402,-10.78685],[-65.28141,-10.86289],[-65.30027,-11.48749],[-64.99778,-11.98604],[-64.30708,-12.46398],[-64.22539,-12.45267],[-63.90248,-12.52544],[-63.76259,-12.42952],[-61.81151,-13.49564],[-61.05527,-13.50054],[-60.48053,-13.77981],[-60.46037,-14.22496],[-60.27887,-14.63021],[-60.23968,-15.09515],[-60.58224,-15.09887],[-60.23797,-15.50267],[-60.16069,-16.26479],[-58.41506,-16.32636],[-58.32431,-16.25861],[-58.30918,-16.3699],[-58.5058,-16.80958],[-58.32935,-17.28195],[-57.99661,-17.5273],[-57.90082,-17.44555],[-57.73949,-17.56095],[-57.69877,-17.8431],[-57.48237,-18.24219],[-57.56807,-18.25655],[-57.76764,-18.90087],[-57.71995,-18.89573],[-57.71995,-18.97546],[-57.69134,-19.00544],[-57.71113,-19.03161],[-57.78463,-19.03259],[-58.14215,-19.76276],[-57.8496,-19.98346],[-58.16225,-20.16193],[-57.84536,-20.93155],[-57.93492,-21.65505],[-57.88239,-21.6868],[-57.94642,-21.73799],[-57.98625,-22.09157],[-56.6508,-22.28387],[-56.5212,-22.11556],[-56.45893,-22.08072],[-56.23206,-22.25347],[-55.8331,-22.29008],[-55.74941,-22.46436],[-55.741,-22.52018],[-55.72366,-22.5519],[-55.6986,-22.56268],[-55.68742,-22.58407],[-55.62493,-22.62765],[-55.63849,-22.95122],[-55.5446,-23.22811],[-55.52288,-23.2595],[-55.5555,-23.28237],[-55.43585,-23.87157],[-55.44117,-23.9185],[-55.41784,-23.9657],[-55.12292,-23.99669],[-55.0518,-23.98666],[-55.02691,-23.97317],[-54.6238,-23.83078],[-54.32807,-24.01865],[-54.28207,-24.07305],[-54.4423,-25.13381],[-54.62033,-25.46026],[-54.60196,-25.48397],[-54.59509,-25.53696],[-54.59398,-25.59224],[-54.5502,-25.58915],[-54.52926,-25.62846],[-53.90831,-25.55513],[-53.83691,-25.94849],[-53.73511,-26.04211],[-53.73086,-26.05842],[-53.7264,-26.0664],[-53.73391,-26.07006],[-53.73968,-26.10012],[-53.65018,-26.19501],[-53.65237,-26.23289],[-53.63739,-26.2496],[-53.63881,-26.25075],[-53.64632,-26.24798],[-53.64186,-26.25976],[-53.64505,-26.28089],[-53.68269,-26.33359],[-53.73372,-26.6131],[-53.80144,-27.09844],[-54.15978,-27.2889],[-54.19062,-27.27639],[-54.19268,-27.30751],[-54.41888,-27.40882],[-54.50416,-27.48232],[-54.67657,-27.57214],[-54.90159,-27.63132],[-54.90805,-27.73149],[-55.1349,-27.89759],[-55.16872,-27.86224],[-55.33303,-27.94661],[-55.6262,-28.17124],[-55.65418,-28.18304],[-56.01729,-28.51223],[-56.00458,-28.60421],[-56.05265,-28.62651],[-56.54171,-29.11447],[-56.57295,-29.11357],[-56.62789,-29.18073],[-56.81251,-29.48154],[-57.09386,-29.74211],[-57.65132,-30.19229],[-57.22502,-30.26121],[-56.90236,-30.02578],[-56.49267,-30.39471],[-56.4795,-30.3899],[-56.4619,-30.38457],[-55.87388,-31.05053],[-55.58866,-30.84117],[-55.5634,-30.8686],[-55.55373,-30.8732],[-55.55218,-30.88193],[-55.54572,-30.89051],[-55.53431,-30.89714],[-55.53276,-30.90218],[-55.52712,-30.89997],[-55.51862,-30.89828],[-55.50841,-30.9027],[-55.50821,-30.91349],[-54.17384,-31.86168],[-53.76024,-32.0751],[-53.39572,-32.58596],[-53.37671,-32.57005],[-53.1111,-32.71147],[-53.53459,-33.16843],[-53.52794,-33.68908],[-53.44031,-33.69344],[-53.39593,-33.75169],[-53.37138,-33.74313],[-52.83257,-34.01481],[-28.34015,-20.99094],[-28.99601,1.86593],[-51.35485,4.8383],[-51.63798,4.51394],[-51.61983,4.14596],[-51.79599,3.89336],[-51.82312,3.85825],[-51.85573,3.83427],[-52.31787,3.17896],[-52.6906,2.37298],[-52.96539,2.1881],[-53.78743,2.34412],[-54.16286,2.10779],[-54.6084,2.32856],[-55.01919,2.564],[-55.71493,2.40342],[-55.96292,2.53188],[-56.13054,2.27723],[-55.92159,2.05236],[-55.89863,1.89861],[-55.99278,1.83137],[-56.47045,1.95135],[-56.7659,1.89509],[-57.07092,1.95304],[-57.09109,2.01854],[-57.23981,1.95808],[-57.35073,1.98327],[-57.55743,1.69605],[-57.77281,1.73344],[-57.97336,1.64566],[-58.01873,1.51966],[-58.33887,1.58014],[-58.4858,1.48399],[-58.53571,1.29154],[-58.84229,1.17749],[-58.92072,1.31293],[-59.25583,1.40559],[-59.74066,1.87596],[-59.7264,2.27497],[-59.91177,2.36759],[-59.99733,2.92312],[-59.79769,3.37162],[-59.86899,3.57089],[-59.51963,3.91951],[-59.73353,4.20399],[-59.69361,4.34069]]]]}},{type:"Feature",properties:{iso1A2:"BS",iso1A3:"BHS",iso1N3:"044",wikidata:"Q778",nameEn:"The Bahamas",groups:["029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 242"]},geometry:{type:"MultiPolygon",coordinates:[[[[-72.98446,20.4801],[-71.70065,25.7637],[-78.91214,27.76553],[-80.65727,23.71953],[-72.98446,20.4801]]]]}},{type:"Feature",properties:{iso1A2:"BT",iso1A3:"BTN",iso1N3:"064",wikidata:"Q917",nameEn:"Bhutan",groups:["034","142","UN"],driveSide:"left",callingCodes:["975"]},geometry:{type:"MultiPolygon",coordinates:[[[[91.6469,27.76358],[91.5629,27.84823],[91.48973,27.93903],[91.46327,28.0064],[91.25779,28.07509],[91.20019,27.98715],[90.69894,28.07784],[90.58842,28.02838],[90.13387,28.19178],[89.79762,28.23979],[89.59525,28.16433],[89.12825,27.62502],[89.0582,27.60985],[88.97213,27.51671],[88.95355,27.4106],[89.00216,27.32532],[88.96947,27.30319],[88.93678,27.33777],[88.91901,27.32483],[88.74219,27.144],[88.86984,27.10937],[88.8714,26.97488],[88.92301,26.99286],[88.95807,26.92668],[89.09554,26.89089],[89.12825,26.81661],[89.1926,26.81329],[89.37913,26.86224],[89.38319,26.85963],[89.3901,26.84225],[89.42349,26.83727],[89.63369,26.74402],[89.86124,26.73307],[90.04535,26.72422],[90.30402,26.85098],[90.39271,26.90704],[90.48504,26.8594],[90.67715,26.77215],[91.50067,26.79223],[91.83181,26.87318],[92.05523,26.8692],[92.11863,26.893],[92.03457,27.07334],[92.04702,27.26861],[92.12019,27.27829],[92.01132,27.47352],[91.65007,27.48287],[91.55819,27.6144],[91.6469,27.76358]]]]}},{type:"Feature",properties:{iso1A2:"BV",iso1A3:"BVT",iso1N3:"074",wikidata:"Q23408",nameEn:"Bouvet Island",country:"NO",groups:["005","419","019","UN"]},geometry:{type:"MultiPolygon",coordinates:[[[[4.54042,-54.0949],[2.28941,-54.13089],[3.35353,-55.17558],[4.54042,-54.0949]]]]}},{type:"Feature",properties:{iso1A2:"BW",iso1A3:"BWA",iso1N3:"072",wikidata:"Q963",nameEn:"Botswana",groups:["018","202","002","UN"],driveSide:"left",callingCodes:["267"]},geometry:{type:"MultiPolygon",coordinates:[[[[25.26433,-17.79571],[25.16882,-17.78253],[25.05895,-17.84452],[24.95586,-17.79674],[24.73364,-17.89338],[24.71887,-17.9218],[24.6303,-17.9863],[24.57485,-18.07151],[24.40577,-17.95726],[24.19416,-18.01919],[23.61088,-18.4881],[23.29618,-17.99855],[23.0996,-18.00075],[21.45556,-18.31795],[20.99904,-18.31743],[20.99751,-22.00026],[19.99912,-21.99991],[19.99817,-24.76768],[20.02809,-24.78725],[20.03678,-24.81004],[20.29826,-24.94869],[20.64795,-25.47827],[20.86081,-26.14892],[20.61754,-26.4692],[20.63275,-26.78181],[20.68596,-26.9039],[20.87031,-26.80047],[21.13353,-26.86661],[21.37869,-26.82083],[21.69322,-26.86152],[21.7854,-26.79199],[21.77114,-26.69015],[21.83291,-26.65959],[21.90703,-26.66808],[22.06192,-26.61882],[22.21206,-26.3773],[22.41921,-26.23078],[22.56365,-26.19668],[22.70808,-25.99186],[22.86012,-25.50572],[23.03497,-25.29971],[23.47588,-25.29971],[23.9244,-25.64286],[24.18287,-25.62916],[24.36531,-25.773],[24.44703,-25.73021],[24.67319,-25.81749],[24.8946,-25.80723],[25.01718,-25.72507],[25.12266,-25.75931],[25.33076,-25.76616],[25.58543,-25.6343],[25.6643,-25.4491],[25.69661,-25.29284],[25.72702,-25.25503],[25.88571,-24.87802],[25.84295,-24.78661],[25.8515,-24.75727],[26.39409,-24.63468],[26.46346,-24.60358],[26.51667,-24.47219],[26.84165,-24.24885],[26.99749,-23.65486],[27.33768,-23.40917],[27.52393,-23.37952],[27.6066,-23.21894],[27.74154,-23.2137],[27.93539,-23.04941],[27.93729,-22.96194],[28.04752,-22.90243],[28.04562,-22.8394],[28.34874,-22.5694],[28.63287,-22.55887],[28.91889,-22.44299],[29.0151,-22.22907],[29.10881,-22.21202],[29.15268,-22.21399],[29.18974,-22.18599],[29.21955,-22.17771],[29.37703,-22.19581],[29.3533,-22.18363],[29.24648,-22.05967],[29.1974,-22.07472],[29.14501,-22.07275],[29.08495,-22.04867],[29.04108,-22.00563],[29.02191,-21.95665],[29.02191,-21.90647],[29.04023,-21.85864],[29.07763,-21.81877],[28.58114,-21.63455],[28.49942,-21.66634],[28.29416,-21.59037],[28.01669,-21.57624],[27.91407,-21.31621],[27.69171,-21.08409],[27.72972,-20.51735],[27.69361,-20.48531],[27.28865,-20.49873],[27.29831,-20.28935],[27.21278,-20.08244],[26.72246,-19.92707],[26.17227,-19.53709],[25.96226,-19.08152],[25.99837,-19.02943],[25.94326,-18.90362],[25.82353,-18.82808],[25.79217,-18.6355],[25.68859,-18.56165],[25.53465,-18.39041],[25.39972,-18.12691],[25.31799,-18.07091],[25.23909,-17.90832],[25.26433,-17.79571]]]]}},{type:"Feature",properties:{iso1A2:"BY",iso1A3:"BLR",iso1N3:"112",wikidata:"Q184",nameEn:"Belarus",groups:["151","150","UN"],callingCodes:["375"]},geometry:{type:"MultiPolygon",coordinates:[[[[28.15217,56.16964],[27.97865,56.11849],[27.63065,55.89687],[27.61683,55.78558],[27.3541,55.8089],[27.27804,55.78299],[27.1559,55.85032],[26.97153,55.8102],[26.87448,55.7172],[26.76872,55.67658],[26.71802,55.70645],[26.64888,55.70515],[26.63231,55.67968],[26.63167,55.57887],[26.55094,55.5093],[26.5522,55.40277],[26.44937,55.34832],[26.5709,55.32572],[26.6714,55.33902],[26.80929,55.31642],[26.83266,55.30444],[26.835,55.28182],[26.73017,55.24226],[26.72983,55.21788],[26.68075,55.19787],[26.69243,55.16718],[26.54753,55.14181],[26.51481,55.16051],[26.46249,55.12814],[26.35121,55.1525],[26.30628,55.12536],[26.23202,55.10439],[26.26941,55.08032],[26.20397,54.99729],[26.13386,54.98924],[26.05907,54.94631],[25.99129,54.95705],[25.89462,54.93438],[25.74122,54.80108],[25.75977,54.57252],[25.68045,54.5321],[25.64813,54.48704],[25.62203,54.4656],[25.63371,54.42075],[25.5376,54.33158],[25.55425,54.31591],[25.68513,54.31727],[25.78553,54.23327],[25.78563,54.15747],[25.71084,54.16704],[25.64875,54.1259],[25.54724,54.14925],[25.51452,54.17799],[25.56823,54.25212],[25.509,54.30267],[25.35559,54.26544],[25.22705,54.26271],[25.19199,54.219],[25.0728,54.13419],[24.991,54.14241],[24.96894,54.17589],[24.77131,54.11091],[24.85311,54.02862],[24.74279,53.96663],[24.69185,53.96543],[24.69652,54.01901],[24.62275,54.00217],[24.44411,53.90076],[24.34128,53.90076],[24.19638,53.96405],[23.98837,53.92554],[23.95098,53.9613],[23.81309,53.94205],[23.80543,53.89558],[23.71726,53.93379],[23.61677,53.92691],[23.51284,53.95052],[23.62004,53.60942],[23.81995,53.24131],[23.85657,53.22923],[23.91393,53.16469],[23.87548,53.0831],[23.92184,53.02079],[23.94689,52.95919],[23.91805,52.94016],[23.93763,52.71332],[23.73615,52.6149],[23.58296,52.59868],[23.45112,52.53774],[23.34141,52.44845],[23.18196,52.28812],[23.20071,52.22848],[23.47859,52.18215],[23.54314,52.12148],[23.61,52.11264],[23.64066,52.07626],[23.68733,51.9906],[23.61523,51.92066],[23.62691,51.78208],[23.53198,51.74298],[23.57053,51.55938],[23.56236,51.53673],[23.62751,51.50512],[23.6736,51.50255],[23.60906,51.62122],[23.7766,51.66809],[23.91118,51.63316],[23.8741,51.59734],[23.99907,51.58369],[24.13075,51.66979],[24.3163,51.75063],[24.29021,51.80841],[24.37123,51.88222],[24.98784,51.91273],[25.20228,51.97143],[25.46163,51.92205],[25.73673,51.91973],[25.80574,51.94556],[25.83217,51.92587],[26.00408,51.92967],[26.19084,51.86781],[26.39367,51.87315],[26.46962,51.80501],[26.69759,51.82284],[26.80043,51.75777],[26.9489,51.73788],[26.99422,51.76933],[27.20602,51.77291],[27.20948,51.66713],[27.26613,51.65957],[27.24828,51.60161],[27.47212,51.61184],[27.51058,51.5854],[27.55727,51.63486],[27.71932,51.60672],[27.67125,51.50854],[27.76052,51.47604],[27.85253,51.62293],[27.91844,51.61952],[27.95827,51.56065],[28.10658,51.57857],[28.23452,51.66988],[28.37592,51.54505],[28.47051,51.59734],[28.64429,51.5664],[28.69161,51.44695],[28.73143,51.46236],[28.75615,51.41442],[28.78224,51.45294],[28.76027,51.48802],[28.81795,51.55552],[28.95528,51.59222],[28.99098,51.56833],[29.1187,51.65872],[29.16402,51.64679],[29.20659,51.56918],[29.25603,51.57089],[29.25191,51.49828],[29.32881,51.37843],[29.42357,51.4187],[29.49773,51.39814],[29.54372,51.48372],[29.7408,51.53417],[29.77376,51.4461],[30.17888,51.51025],[30.34642,51.42555],[30.36153,51.33984],[30.56203,51.25655],[30.64992,51.35014],[30.51946,51.59649],[30.68804,51.82806],[30.76443,51.89739],[30.90897,52.00699],[30.95589,52.07775],[31.13332,52.1004],[31.25142,52.04131],[31.38326,52.12991],[31.7822,52.11406],[31.77877,52.18636],[31.6895,52.1973],[31.70735,52.26711],[31.57971,52.32146],[31.62084,52.33849],[31.61397,52.48843],[31.56316,52.51518],[31.63869,52.55361],[31.50406,52.69707],[31.57277,52.71613],[31.592,52.79011],[31.35667,52.97854],[31.24147,53.031],[31.32283,53.04101],[31.33519,53.08805],[31.3915,53.09712],[31.36403,53.13504],[31.40523,53.21406],[31.56316,53.19432],[31.62496,53.22886],[31.787,53.18033],[31.82373,53.10042],[32.15368,53.07594],[32.40773,53.18856],[32.51725,53.28431],[32.73257,53.33494],[32.74968,53.45597],[32.47777,53.5548],[32.40499,53.6656],[32.50112,53.68594],[32.45717,53.74039],[32.36663,53.7166],[32.12621,53.81586],[31.89137,53.78099],[31.77028,53.80015],[31.85019,53.91801],[31.88744,54.03653],[31.89599,54.0837],[31.57002,54.14535],[31.30791,54.25315],[31.3177,54.34067],[31.22945,54.46585],[31.08543,54.50361],[31.21399,54.63113],[31.19339,54.66947],[30.99187,54.67046],[30.98226,54.68872],[31.0262,54.70698],[30.97127,54.71967],[30.95479,54.74346],[30.75165,54.80699],[30.8264,54.90062],[30.81759,54.94064],[30.93144,54.9585],[30.95754,54.98609],[30.9081,55.02232],[30.94243,55.03964],[31.00972,55.02783],[31.02071,55.06167],[30.97369,55.17134],[30.87944,55.28223],[30.81946,55.27931],[30.8257,55.3313],[30.93144,55.3914],[30.90123,55.46621],[30.95204,55.50667],[30.93419,55.6185],[30.86003,55.63169],[30.7845,55.58514],[30.72957,55.66268],[30.67464,55.64176],[30.63344,55.73079],[30.51037,55.76568],[30.51346,55.78982],[30.48257,55.81066],[30.30987,55.83592],[30.27776,55.86819],[30.12136,55.8358],[29.97975,55.87281],[29.80672,55.79569],[29.61446,55.77716],[29.51283,55.70294],[29.3604,55.75862],[29.44692,55.95978],[29.21717,55.98971],[29.08299,56.03427],[28.73418,55.97131],[28.63668,56.07262],[28.68337,56.10173],[28.5529,56.11705],[28.43068,56.09407],[28.37987,56.11399],[28.36888,56.05805],[28.30571,56.06035],[28.15217,56.16964]]]]}},{type:"Feature",properties:{iso1A2:"BZ",iso1A3:"BLZ",iso1N3:"084",wikidata:"Q242",nameEn:"Belize",groups:["013","003","419","019","UN"],roadSpeedUnit:"mph",callingCodes:["501"]},geometry:{type:"MultiPolygon",coordinates:[[[[-88.3268,18.49048],[-88.48242,18.49164],[-88.71505,18.0707],[-88.8716,17.89535],[-89.03839,18.0067],[-89.15105,17.95104],[-89.14985,17.81563],[-89.15025,17.04813],[-89.22683,15.88619],[-89.17418,15.90898],[-89.02415,15.9063],[-88.95358,15.88698],[-88.40779,16.09624],[-86.92368,17.61462],[-87.84815,18.18511],[-87.85693,18.18266],[-87.86657,18.19971],[-87.87604,18.18313],[-87.90671,18.15213],[-88.03165,18.16657],[-88.03238,18.41778],[-88.26593,18.47617],[-88.29909,18.47591],[-88.3268,18.49048]]]]}},{type:"Feature",properties:{iso1A2:"CA",iso1A3:"CAN",iso1N3:"124",wikidata:"Q16",nameEn:"Canada",groups:["021","003","019","UN"],callingCodes:["1"]},geometry:{type:"MultiPolygon",coordinates:[[[[-67.20349,45.1722],[-67.19603,45.16771],[-67.15965,45.16179],[-67.11316,45.11176],[-67.0216,44.95333],[-66.96824,44.90965],[-66.98249,44.87071],[-66.96824,44.83078],[-66.93432,44.82597],[-67.16117,44.20069],[-61.98255,37.34815],[-56.27503,47.39728],[-53.12387,41.40385],[-46.37635,57.3249],[-77.52957,77.23408],[-68.21821,80.48551],[-49.33696,84.57952],[-140.97446,84.39275],[-141.00116,60.30648],[-140.5227,60.22077],[-140.45648,60.30919],[-139.98024,60.18027],[-139.68991,60.33693],[-139.05831,60.35205],[-139.20603,60.08896],[-139.05365,59.99655],[-138.71149,59.90728],[-138.62145,59.76431],[-137.60623,59.24465],[-137.4925,58.89415],[-136.82619,59.16198],[-136.52365,59.16752],[-136.47323,59.46617],[-136.33727,59.44466],[-136.22381,59.55526],[-136.31566,59.59083],[-135.48007,59.79937],[-135.03069,59.56208],[-135.00267,59.28745],[-134.7047,59.2458],[-134.55699,59.1297],[-134.48059,59.13231],[-134.27175,58.8634],[-133.84645,58.73543],[-133.38523,58.42773],[-131.8271,56.62247],[-130.77769,56.36185],[-130.33965,56.10849],[-130.10173,56.12178],[-130.00093,56.00325],[-130.00857,55.91344],[-130.15373,55.74895],[-129.97513,55.28029],[-130.08035,55.21556],[-130.18765,55.07744],[-130.27203,54.97174],[-130.44184,54.85377],[-130.64499,54.76912],[-130.61931,54.70835],[-133.92876,54.62289],[-133.36909,48.51151],[-125.03842,48.53282],[-123.50039,48.21223],[-123.15614,48.35395],[-123.26565,48.6959],[-123.0093,48.76586],[-123.0093,48.83186],[-123.32163,49.00419],[-95.15355,48.9996],[-95.15357,49.384],[-95.12903,49.37056],[-95.05825,49.35311],[-95.01419,49.35647],[-94.99532,49.36579],[-94.95681,49.37035],[-94.85381,49.32492],[-94.8159,49.32299],[-94.82487,49.29483],[-94.77355,49.11998],[-94.75017,49.09931],[-94.687,48.84077],[-94.70087,48.8339],[-94.70486,48.82365],[-94.69669,48.80918],[-94.69335,48.77883],[-94.58903,48.71803],[-94.54885,48.71543],[-94.53826,48.70216],[-94.44258,48.69223],[-94.4174,48.71049],[-94.27153,48.70232],[-94.25172,48.68404],[-94.25104,48.65729],[-94.23215,48.65202],[-93.85769,48.63284],[-93.83288,48.62745],[-93.80676,48.58232],[-93.80939,48.52439],[-93.79267,48.51631],[-93.66382,48.51845],[-93.47022,48.54357],[-93.44472,48.59147],[-93.40693,48.60948],[-93.39758,48.60364],[-93.3712,48.60599],[-93.33946,48.62787],[-93.25391,48.64266],[-92.94973,48.60866],[-92.7287,48.54005],[-92.6342,48.54133],[-92.62747,48.50278],[-92.69927,48.49573],[-92.71323,48.46081],[-92.65606,48.43471],[-92.50712,48.44921],[-92.45588,48.40624],[-92.48147,48.36609],[-92.37185,48.22259],[-92.27167,48.25046],[-92.30939,48.31251],[-92.26662,48.35651],[-92.202,48.35252],[-92.14732,48.36578],[-92.05339,48.35958],[-91.98929,48.25409],[-91.86125,48.21278],[-91.71231,48.19875],[-91.70451,48.11805],[-91.55649,48.10611],[-91.58025,48.04339],[-91.45829,48.07454],[-91.43248,48.04912],[-91.25025,48.08522],[-91.08016,48.18096],[-90.87588,48.2484],[-90.75045,48.09143],[-90.56444,48.12184],[-90.56312,48.09488],[-90.07418,48.11043],[-89.89974,47.98109],[-89.77248,48.02607],[-89.57972,48.00023],[-89.48837,48.01412],[-88.37033,48.30586],[-84.85871,46.88881],[-84.55635,46.45974],[-84.47607,46.45225],[-84.4481,46.48972],[-84.42101,46.49853],[-84.34174,46.50683],[-84.29893,46.49127],[-84.26351,46.49508],[-84.2264,46.53337],[-84.1945,46.54061],[-84.17723,46.52753],[-84.12885,46.53068],[-84.11196,46.50248],[-84.13451,46.39218],[-84.11254,46.32329],[-84.11615,46.2681],[-84.09756,46.25512],[-84.1096,46.23987],[-83.95399,46.05634],[-83.90453,46.05922],[-83.83329,46.12169],[-83.57017,46.105],[-83.43746,45.99749],[-83.59589,45.82131],[-82.48419,45.30225],[-82.42469,42.992],[-82.4146,42.97626],[-82.4253,42.95423],[-82.45331,42.93139],[-82.4826,42.8068],[-82.46613,42.76615],[-82.51063,42.66025],[-82.51858,42.611],[-82.57583,42.5718],[-82.58873,42.54984],[-82.64242,42.55594],[-82.82964,42.37355],[-83.02253,42.33045],[-83.07837,42.30978],[-83.09837,42.28877],[-83.12724,42.2376],[-83.14962,42.04089],[-83.11184,41.95671],[-82.67862,41.67615],[-78.93684,42.82887],[-78.90712,42.89733],[-78.90905,42.93022],[-78.93224,42.95229],[-78.96312,42.95509],[-78.98126,42.97],[-79.02074,42.98444],[-79.02424,43.01983],[-78.99941,43.05612],[-79.01055,43.06659],[-79.07486,43.07845],[-79.05671,43.10937],[-79.06881,43.12029],[-79.0427,43.13934],[-79.04652,43.16396],[-79.05384,43.17418],[-79.05002,43.20133],[-79.05544,43.21224],[-79.05512,43.25375],[-79.06921,43.26183],[-79.25796,43.54052],[-76.79706,43.63099],[-76.43859,44.09393],[-76.35324,44.13493],[-76.31222,44.19894],[-76.244,44.19643],[-76.1664,44.23051],[-76.16285,44.28262],[-76.00018,44.34896],[-75.95947,44.34463],[-75.8217,44.43176],[-75.76813,44.51537],[-75.41441,44.76614],[-75.2193,44.87821],[-75.01363,44.95608],[-74.99101,44.98051],[-74.8447,45.00606],[-74.66689,45.00646],[-74.32699,44.99029],[-73.35025,45.00942],[-71.50067,45.01357],[-71.48735,45.07784],[-71.42778,45.12624],[-71.40364,45.21382],[-71.44252,45.2361],[-71.37133,45.24624],[-71.29371,45.29996],[-71.22338,45.25184],[-71.19723,45.25438],[-71.14568,45.24128],[-71.08364,45.30623],[-71.01866,45.31573],[-71.0107,45.34819],[-70.95193,45.33895],[-70.91169,45.29849],[-70.89864,45.2398],[-70.84816,45.22698],[-70.80236,45.37444],[-70.82638,45.39828],[-70.78372,45.43269],[-70.65383,45.37592],[-70.62518,45.42286],[-70.72651,45.49771],[-70.68516,45.56964],[-70.54019,45.67291],[-70.38934,45.73215],[-70.41523,45.79497],[-70.25976,45.89675],[-70.24694,45.95138],[-70.31025,45.96424],[-70.23855,46.1453],[-70.29078,46.18832],[-70.18547,46.35357],[-70.05812,46.41768],[-69.99966,46.69543],[-69.22119,47.46461],[-69.05148,47.42012],[-69.05073,47.30076],[-69.05039,47.2456],[-68.89222,47.1807],[-68.70125,47.24399],[-68.60575,47.24659],[-68.57914,47.28431],[-68.38332,47.28723],[-68.37458,47.35851],[-68.23244,47.35712],[-67.94843,47.1925],[-67.87993,47.10377],[-67.78578,47.06473],[-67.78111,45.9392],[-67.75196,45.91814],[-67.80961,45.87531],[-67.75654,45.82324],[-67.80653,45.80022],[-67.80705,45.69528],[-67.6049,45.60725],[-67.43815,45.59162],[-67.42144,45.50584],[-67.50578,45.48971],[-67.42394,45.37969],[-67.48201,45.27351],[-67.34927,45.122],[-67.29754,45.14865],[-67.29748,45.18173],[-67.27039,45.1934],[-67.22751,45.16344],[-67.20349,45.1722]]]]}},{type:"Feature",properties:{iso1A2:"CC",iso1A3:"CCK",iso1N3:"166",wikidata:"Q36004",nameEn:"Cocos (Keeling) Islands",country:"AU",groups:["053","009","UN"],driveSide:"left",callingCodes:["61"]},geometry:{type:"MultiPolygon",coordinates:[[[[96.61846,-10.82438],[96.02343,-12.68334],[97.93979,-12.33309],[96.61846,-10.82438]]]]}},{type:"Feature",properties:{iso1A2:"CD",iso1A3:"COD",iso1N3:"180",wikidata:"Q974",nameEn:"Democratic Republic of the Congo",aliases:["ZR"],groups:["017","202","002","UN"],callingCodes:["243"]},geometry:{type:"MultiPolygon",coordinates:[[[[27.44012,5.07349],[27.09575,5.22305],[26.93064,5.13535],[26.85579,5.03887],[26.74572,5.10685],[26.48595,5.04984],[26.13371,5.25594],[25.86073,5.19455],[25.53271,5.37431],[25.34558,5.29101],[25.31256,5.03668],[24.71816,4.90509],[24.46719,5.0915],[23.38847,4.60013],[22.94817,4.82392],[22.89094,4.79321],[22.84691,4.69887],[22.78526,4.71423],[22.6928,4.47285],[22.60915,4.48821],[22.5431,4.22041],[22.45504,4.13039],[22.27682,4.11347],[22.10721,4.20723],[21.6405,4.317],[21.55904,4.25553],[21.25744,4.33676],[21.21341,4.29285],[21.11214,4.33895],[21.08793,4.39603],[20.90383,4.44877],[20.60184,4.42394],[18.62755,3.47564],[18.63857,3.19342],[18.10683,2.26876],[18.08034,1.58553],[17.85887,1.04327],[17.86989,.58873],[17.95255,.48128],[17.93877,.32424],[17.81204,.23884],[17.66051,-.26535],[17.72112,-.52707],[17.32438,-.99265],[16.97999,-1.12762],[16.70724,-1.45815],[16.50336,-1.8795],[16.16173,-2.16586],[16.22785,-2.59528],[16.1755,-3.25014],[16.21407,-3.2969],[15.89448,-3.9513],[15.53081,-4.042],[15.48121,-4.22062],[15.41785,-4.28381],[15.32693,-4.27282],[15.25411,-4.31121],[15.1978,-4.32388],[14.83101,-4.80838],[14.67948,-4.92093],[14.5059,-4.84956],[14.41499,-4.8825],[14.37366,-4.56125],[14.47284,-4.42941],[14.3957,-4.36623],[14.40672,-4.28381],[13.9108,-4.50906],[13.81162,-4.41842],[13.71794,-4.44864],[13.70417,-4.72601],[13.50305,-4.77818],[13.41764,-4.89897],[13.11182,-4.5942],[13.09648,-4.63739],[13.11195,-4.67745],[12.8733,-4.74346],[12.70868,-4.95505],[12.63465,-4.94632],[12.60251,-5.01715],[12.46297,-5.09408],[12.49815,-5.14058],[12.51589,-5.1332],[12.53586,-5.14658],[12.53599,-5.1618],[12.52301,-5.17481],[12.52318,-5.74353],[12.26557,-5.74031],[12.20376,-5.76338],[11.95767,-5.94705],[12.42245,-6.07585],[13.04371,-5.87078],[16.55507,-5.85631],[16.96282,-7.21787],[17.5828,-8.13784],[18.33635,-8.00126],[19.33698,-7.99743],[19.5469,-7.00195],[20.30218,-6.98955],[20.31846,-6.91953],[20.61689,-6.90876],[20.56263,-7.28566],[21.79824,-7.29628],[21.84856,-9.59871],[22.19039,-9.94628],[22.32604,-10.76291],[22.17954,-10.85884],[22.25951,-11.24911],[22.54205,-11.05784],[23.16602,-11.10577],[23.45631,-10.946],[23.86868,-11.02856],[24.00027,-10.89356],[24.34528,-11.06816],[24.42612,-11.44975],[25.34069,-11.19707],[25.33058,-11.65767],[26.01777,-11.91488],[26.88687,-12.01868],[27.04351,-11.61312],[27.22541,-11.60323],[27.21025,-11.76157],[27.59932,-12.22123],[28.33199,-12.41375],[29.01918,-13.41353],[29.60531,-13.21685],[29.65078,-13.41844],[29.81551,-13.44683],[29.8139,-12.14898],[29.48404,-12.23604],[29.4992,-12.43843],[29.18592,-12.37921],[28.48357,-11.87532],[28.37241,-11.57848],[28.65032,-10.65133],[28.62795,-9.92942],[28.68532,-9.78],[28.56208,-9.49122],[28.51627,-9.44726],[28.52636,-9.35379],[28.36562,-9.30091],[28.38526,-9.23393],[28.9711,-8.66935],[28.88917,-8.4831],[30.79243,-8.27382],[30.2567,-7.14121],[29.52552,-6.2731],[29.43673,-4.44845],[29.23708,-3.75856],[29.21463,-3.3514],[29.25633,-3.05471],[29.17258,-2.99385],[29.16037,-2.95457],[29.09797,-2.91935],[29.09119,-2.87871],[29.0505,-2.81774],[29.00404,-2.81978],[29.00167,-2.78523],[29.04081,-2.7416],[29.00357,-2.70596],[28.94346,-2.69124],[28.89793,-2.66111],[28.90226,-2.62385],[28.89288,-2.55848],[28.87943,-2.55165],[28.86193,-2.53185],[28.86209,-2.5231],[28.87497,-2.50887],[28.88846,-2.50493],[28.89342,-2.49017],[28.89132,-2.47557],[28.86846,-2.44866],[28.86826,-2.41888],[28.89601,-2.37321],[28.95642,-2.37321],[29.00051,-2.29001],[29.105,-2.27043],[29.17562,-2.12278],[29.11847,-1.90576],[29.24458,-1.69663],[29.24323,-1.66826],[29.36322,-1.50887],[29.45038,-1.5054],[29.53062,-1.40499],[29.59061,-1.39016],[29.58388,-.89821],[29.63006,-.8997],[29.62708,-.71055],[29.67176,-.55714],[29.67474,-.47969],[29.65091,-.46777],[29.72687,-.08051],[29.7224,.07291],[29.77454,.16675],[29.81922,.16824],[29.87284,.39166],[29.97413,.52124],[29.95477,.64486],[29.98307,.84295],[30.1484,.89805],[30.22139,.99635],[30.24671,1.14974],[30.48503,1.21675],[31.30127,2.11006],[31.28042,2.17853],[31.20148,2.2217],[31.1985,2.29462],[31.12104,2.27676],[31.07934,2.30207],[31.06593,2.35862],[30.96911,2.41071],[30.91102,2.33332],[30.83059,2.42559],[30.74271,2.43601],[30.75612,2.5863],[30.8857,2.83923],[30.8574,2.9508],[30.77101,3.04897],[30.84251,3.26908],[30.93486,3.40737],[30.94081,3.50847],[30.85153,3.48867],[30.85997,3.5743],[30.80713,3.60506],[30.78512,3.67097],[30.56277,3.62703],[30.57378,3.74567],[30.55396,3.84451],[30.47691,3.83353],[30.27658,3.95653],[30.22374,3.93896],[30.1621,4.10586],[30.06964,4.13221],[29.79666,4.37809],[29.82087,4.56246],[29.49726,4.7007],[29.43341,4.50101],[29.22207,4.34297],[29.03054,4.48784],[28.8126,4.48784],[28.6651,4.42638],[28.20719,4.35614],[27.79551,4.59976],[27.76469,4.79284],[27.65462,4.89375],[27.56656,4.89375],[27.44012,5.07349]]]]}},{type:"Feature",properties:{iso1A2:"CF",iso1A3:"CAF",iso1N3:"140",wikidata:"Q929",nameEn:"Central African Republic",groups:["017","202","002","UN"],callingCodes:["236"]},geometry:{type:"MultiPolygon",coordinates:[[[[22.87758,10.91915],[22.45889,11.00246],[21.72139,10.64136],[21.71479,10.29932],[21.63553,10.217],[21.52766,10.2105],[21.34934,9.95907],[21.26348,9.97642],[20.82979,9.44696],[20.36748,9.11019],[19.06421,9.00367],[18.86388,8.87971],[19.11044,8.68172],[18.79783,8.25929],[18.67455,8.22226],[18.62612,8.14163],[18.64153,8.08714],[18.6085,8.05009],[18.02731,8.01085],[17.93926,7.95853],[17.67288,7.98905],[16.8143,7.53971],[16.6668,7.67281],[16.658,7.75353],[16.59415,7.76444],[16.58315,7.88657],[16.41583,7.77971],[16.40703,7.68809],[15.79942,7.44149],[15.73118,7.52006],[15.49743,7.52179],[15.23397,7.25135],[15.04717,6.77085],[14.96311,6.75693],[14.79966,6.39043],[14.80122,6.34866],[14.74206,6.26356],[14.56149,6.18928],[14.43073,6.08867],[14.42917,6.00508],[14.49455,5.91683],[14.60974,5.91838],[14.62375,5.70466],[14.58951,5.59777],[14.62531,5.51411],[14.52724,5.28319],[14.57083,5.23979],[14.65489,5.21343],[14.73383,4.6135],[15.00825,4.41458],[15.08609,4.30282],[15.10644,4.1362],[15.17482,4.05131],[15.07686,4.01805],[15.73522,3.24348],[15.77725,3.26835],[16.05449,3.02306],[16.08252,2.45708],[16.19357,2.21537],[16.50126,2.84739],[16.46701,2.92512],[16.57598,3.47999],[16.68283,3.54257],[17.01746,3.55136],[17.35649,3.63045],[17.46876,3.70515],[17.60966,3.63705],[17.83421,3.61068],[17.85842,3.53378],[18.05656,3.56893],[18.14902,3.54476],[18.17323,3.47665],[18.24148,3.50302],[18.2723,3.57992],[18.39558,3.58212],[18.49245,3.63924],[18.58711,3.49423],[18.62755,3.47564],[20.60184,4.42394],[20.90383,4.44877],[21.08793,4.39603],[21.11214,4.33895],[21.21341,4.29285],[21.25744,4.33676],[21.55904,4.25553],[21.6405,4.317],[22.10721,4.20723],[22.27682,4.11347],[22.45504,4.13039],[22.5431,4.22041],[22.60915,4.48821],[22.6928,4.47285],[22.78526,4.71423],[22.84691,4.69887],[22.89094,4.79321],[22.94817,4.82392],[23.38847,4.60013],[24.46719,5.0915],[24.71816,4.90509],[25.31256,5.03668],[25.34558,5.29101],[25.53271,5.37431],[25.86073,5.19455],[26.13371,5.25594],[26.48595,5.04984],[26.74572,5.10685],[26.85579,5.03887],[26.93064,5.13535],[27.09575,5.22305],[27.44012,5.07349],[27.26886,5.25876],[27.23017,5.37167],[27.28621,5.56382],[27.22705,5.62889],[27.22705,5.71254],[26.51721,6.09655],[26.58259,6.1987],[26.32729,6.36272],[26.38022,6.63493],[25.90076,7.09549],[25.37461,7.33024],[25.35281,7.42595],[25.20337,7.50312],[25.20649,7.61115],[25.29214,7.66675],[25.25319,7.8487],[24.98855,7.96588],[24.85156,8.16933],[24.35965,8.26177],[24.13238,8.36959],[24.25691,8.69288],[23.51905,8.71749],[23.59065,8.99743],[23.44744,8.99128],[23.4848,9.16959],[23.56263,9.19418],[23.64358,9.28637],[23.64981,9.44303],[23.62179,9.53823],[23.69155,9.67566],[23.67164,9.86923],[23.3128,10.45214],[23.02221,10.69235],[22.87758,10.91915]]]]}},{type:"Feature",properties:{iso1A2:"CG",iso1A3:"COG",iso1N3:"178",wikidata:"Q971",nameEn:"Republic of the Congo",groups:["017","202","002","UN"],callingCodes:["242"]},geometry:{type:"MultiPolygon",coordinates:[[[[18.62755,3.47564],[18.58711,3.49423],[18.49245,3.63924],[18.39558,3.58212],[18.2723,3.57992],[18.24148,3.50302],[18.17323,3.47665],[18.14902,3.54476],[18.05656,3.56893],[17.85842,3.53378],[17.83421,3.61068],[17.60966,3.63705],[17.46876,3.70515],[17.35649,3.63045],[17.01746,3.55136],[16.68283,3.54257],[16.57598,3.47999],[16.46701,2.92512],[16.50126,2.84739],[16.19357,2.21537],[16.15568,2.18955],[16.08563,2.19733],[16.05294,1.9811],[16.14634,1.70259],[16.02647,1.65591],[16.02959,1.76483],[15.48942,1.98265],[15.34776,1.91264],[15.22634,2.03243],[15.00996,1.98887],[14.61145,2.17866],[13.29457,2.16106],[13.13461,1.57238],[13.25447,1.32339],[13.15519,1.23368],[13.89582,1.4261],[14.25186,1.39842],[14.48179,.9152],[14.26066,.57255],[14.10909,.58563],[13.88648,.26652],[13.90632,-.2287],[14.06862,-.20826],[14.2165,-.38261],[14.41887,-.44799],[14.52569,-.57818],[14.41838,-1.89412],[14.25932,-1.97624],[14.23518,-2.15671],[14.16202,-2.23916],[14.23829,-2.33715],[14.10442,-2.49268],[13.85846,-2.46935],[13.92073,-2.35581],[13.75884,-2.09293],[13.47977,-2.43224],[13.02759,-2.33098],[12.82172,-1.91091],[12.61312,-1.8129],[12.44656,-1.92025],[12.47925,-2.32626],[12.04895,-2.41704],[11.96866,-2.33559],[11.74605,-2.39936],[11.57637,-2.33379],[11.64487,-2.61865],[11.5359,-2.85654],[11.64798,-2.81146],[11.80365,-3.00424],[11.70558,-3.0773],[11.70227,-3.17465],[11.96554,-3.30267],[11.8318,-3.5812],[11.92719,-3.62768],[11.87083,-3.71571],[11.68608,-3.68942],[11.57949,-3.52798],[11.48764,-3.51089],[11.22301,-3.69888],[11.12647,-3.94169],[10.75913,-4.39519],[11.50888,-5.33417],[12.00924,-5.02627],[12.16068,-4.90089],[12.20901,-4.75642],[12.25587,-4.79437],[12.32324,-4.78415],[12.40964,-4.60609],[12.64835,-4.55937],[12.76844,-4.38709],[12.87096,-4.40315],[12.91489,-4.47907],[13.09648,-4.63739],[13.11182,-4.5942],[13.41764,-4.89897],[13.50305,-4.77818],[13.70417,-4.72601],[13.71794,-4.44864],[13.81162,-4.41842],[13.9108,-4.50906],[14.40672,-4.28381],[14.3957,-4.36623],[14.47284,-4.42941],[14.37366,-4.56125],[14.41499,-4.8825],[14.5059,-4.84956],[14.67948,-4.92093],[14.83101,-4.80838],[15.1978,-4.32388],[15.25411,-4.31121],[15.32693,-4.27282],[15.41785,-4.28381],[15.48121,-4.22062],[15.53081,-4.042],[15.89448,-3.9513],[16.21407,-3.2969],[16.1755,-3.25014],[16.22785,-2.59528],[16.16173,-2.16586],[16.50336,-1.8795],[16.70724,-1.45815],[16.97999,-1.12762],[17.32438,-.99265],[17.72112,-.52707],[17.66051,-.26535],[17.81204,.23884],[17.93877,.32424],[17.95255,.48128],[17.86989,.58873],[17.85887,1.04327],[18.08034,1.58553],[18.10683,2.26876],[18.63857,3.19342],[18.62755,3.47564]]]]}},{type:"Feature",geometry:{type:"MultiPolygon",coordinates:[[[[8.72809,47.69282],[8.72617,47.69651],[8.73671,47.7169],[8.70543,47.73121],[8.74251,47.75168],[8.71778,47.76571],[8.68985,47.75686],[8.68022,47.78599],[8.65292,47.80066],[8.64425,47.76398],[8.62408,47.7626],[8.61657,47.79998],[8.56415,47.80633],[8.56814,47.78001],[8.48868,47.77215],[8.45771,47.7493],[8.44807,47.72426],[8.40569,47.69855],[8.4211,47.68407],[8.40473,47.67499],[8.41346,47.66676],[8.42264,47.66667],[8.44711,47.65379],[8.4667,47.65747],[8.46605,47.64103],[8.49656,47.64709],[8.5322,47.64687],[8.52801,47.66059],[8.56141,47.67088],[8.57683,47.66158],[8.6052,47.67258],[8.61113,47.66332],[8.62884,47.65098],[8.62049,47.63757],[8.60412,47.63735],[8.61471,47.64514],[8.60701,47.65271],[8.59545,47.64298],[8.60348,47.61204],[8.57586,47.59537],[8.55756,47.62394],[8.51686,47.63476],[8.50747,47.61897],[8.45578,47.60121],[8.46637,47.58389],[8.48949,47.588],[8.49431,47.58107],[8.43235,47.56617],[8.39477,47.57826],[8.38273,47.56608],[8.35512,47.57014],[8.32735,47.57133],[8.30277,47.58607],[8.29524,47.5919],[8.29722,47.60603],[8.2824,47.61225],[8.26313,47.6103],[8.25863,47.61571],[8.23809,47.61204],[8.22577,47.60385],[8.22011,47.6181],[8.20617,47.62141],[8.19378,47.61636],[8.1652,47.5945],[8.14947,47.59558],[8.13823,47.59147],[8.13662,47.58432],[8.11543,47.5841],[8.10395,47.57918],[8.10002,47.56504],[8.08557,47.55768],[8.06663,47.56374],[8.04383,47.55443],[8.02136,47.55096],[8.00113,47.55616],[7.97581,47.55493],[7.95682,47.55789],[7.94494,47.54511],[7.91251,47.55031],[7.90673,47.57674],[7.88664,47.58854],[7.84412,47.5841],[7.81901,47.58798],[7.79486,47.55691],[7.75261,47.54599],[7.71961,47.54219],[7.69642,47.53297],[7.68101,47.53232],[7.6656,47.53752],[7.66174,47.54554],[7.65083,47.54662],[7.63338,47.56256],[7.67655,47.56435],[7.68904,47.57133],[7.67115,47.5871],[7.68486,47.59601],[7.69385,47.60099],[7.68229,47.59905],[7.67395,47.59212],[7.64599,47.59695],[7.64213,47.5944],[7.64309,47.59151],[7.61929,47.57683],[7.60459,47.57869],[7.60523,47.58519],[7.58945,47.59017],[7.58386,47.57536],[7.56684,47.57785],[7.56548,47.57617],[7.55689,47.57232],[7.55652,47.56779],[7.53634,47.55553],[7.52831,47.55347],[7.51723,47.54578],[7.50873,47.54546],[7.49691,47.53821],[7.50588,47.52856],[7.51904,47.53515],[7.53199,47.5284],[7.5229,47.51644],[7.49804,47.51798],[7.51076,47.49651],[7.47534,47.47932],[7.43356,47.49712],[7.42923,47.48628],[7.4583,47.47216],[7.4462,47.46264],[7.43088,47.45846],[7.40308,47.43638],[7.35603,47.43432],[7.33526,47.44186],[7.24669,47.4205],[7.17026,47.44312],[7.19583,47.49455],[7.16249,47.49025],[7.12781,47.50371],[7.07425,47.48863],[7.0231,47.50522],[6.98425,47.49432],[7.0024,47.45264],[6.93953,47.43388],[6.93744,47.40714],[6.88542,47.37262],[6.87959,47.35335],[7.03125,47.36996],[7.0564,47.35134],[7.05305,47.33304],[6.94316,47.28747],[6.95108,47.26428],[6.9508,47.24338],[6.8489,47.15933],[6.76788,47.1208],[6.68823,47.06616],[6.71531,47.0494],[6.43341,46.92703],[6.46456,46.88865],[6.43216,46.80336],[6.45209,46.77502],[6.38351,46.73171],[6.27135,46.68251],[6.11084,46.57649],[6.1567,46.54402],[6.07269,46.46244],[6.08427,46.44305],[6.06407,46.41676],[6.09926,46.40768],[6.15016,46.3778],[6.15985,46.37721],[6.16987,46.36759],[6.15738,46.3491],[6.13876,46.33844],[6.1198,46.31157],[6.11697,46.29547],[6.1013,46.28512],[6.11926,46.2634],[6.12446,46.25059],[6.10071,46.23772],[6.08563,46.24651],[6.07072,46.24085],[6.0633,46.24583],[6.05029,46.23518],[6.04602,46.23127],[6.03342,46.2383],[6.02461,46.23313],[5.97542,46.21525],[5.96515,46.19638],[5.99573,46.18587],[5.98846,46.17046],[5.98188,46.17392],[5.97508,46.15863],[5.9641,46.14412],[5.95781,46.12925],[5.97893,46.13303],[5.9871,46.14499],[6.01791,46.14228],[6.03614,46.13712],[6.04564,46.14031],[6.05203,46.15191],[6.07491,46.14879],[6.09199,46.15191],[6.09926,46.14373],[6.13397,46.1406],[6.15305,46.15194],[6.18116,46.16187],[6.18871,46.16644],[6.18707,46.17999],[6.19552,46.18401],[6.19807,46.18369],[6.20539,46.19163],[6.21114,46.1927],[6.21273,46.19409],[6.21603,46.19507],[6.21844,46.19837],[6.22222,46.19888],[6.22175,46.20045],[6.23544,46.20714],[6.23913,46.20511],[6.24821,46.20531],[6.26007,46.21165],[6.27694,46.21566],[6.29663,46.22688],[6.31041,46.24417],[6.29474,46.26221],[6.26749,46.24745],[6.24952,46.26255],[6.23775,46.27822],[6.25137,46.29014],[6.24826,46.30175],[6.21981,46.31304],[6.25432,46.3632],[6.53358,46.45431],[6.82312,46.42661],[6.8024,46.39171],[6.77152,46.34784],[6.86052,46.28512],[6.78968,46.14058],[6.89321,46.12548],[6.87868,46.03855],[6.93862,46.06502],[7.00946,45.9944],[7.04151,45.92435],[7.10685,45.85653],[7.56343,45.97421],[7.85949,45.91485],[7.9049,45.99945],[7.98881,45.99867],[8.02906,46.10331],[8.11383,46.11577],[8.16866,46.17817],[8.08814,46.26692],[8.31162,46.38044],[8.30648,46.41587],[8.42464,46.46367],[8.46317,46.43712],[8.45032,46.26869],[8.62242,46.12112],[8.75697,46.10395],[8.80778,46.10085],[8.85617,46.0748],[8.79414,46.00913],[8.78585,45.98973],[8.79362,45.99207],[8.8319,45.9879],[8.85121,45.97239],[8.86688,45.96135],[8.88904,45.95465],[8.93649,45.86775],[8.94372,45.86587],[8.93504,45.86245],[8.91129,45.8388],[8.94737,45.84285],[8.9621,45.83707],[8.99663,45.83466],[9.00324,45.82055],[9.0298,45.82127],[9.03279,45.82865],[9.03793,45.83548],[9.03505,45.83976],[9.04059,45.8464],[9.04546,45.84968],[9.06642,45.8761],[9.09065,45.89906],[8.99257,45.9698],[9.01618,46.04928],[9.24503,46.23616],[9.29226,46.32717],[9.25502,46.43743],[9.28136,46.49685],[9.36128,46.5081],[9.40487,46.46621],[9.45936,46.50873],[9.46117,46.37481],[9.57015,46.2958],[9.71273,46.29266],[9.73086,46.35071],[9.95249,46.38045],[10.07055,46.21668],[10.14439,46.22992],[10.17862,46.25626],[10.10506,46.3372],[10.165,46.41051],[10.03715,46.44479],[10.10307,46.61003],[10.23674,46.63484],[10.25309,46.57432],[10.46136,46.53164],[10.49375,46.62049],[10.44686,46.64162],[10.40475,46.63671],[10.38659,46.67847],[10.47197,46.85698],[10.48376,46.93891],[10.36933,47.00212],[10.30031,46.92093],[10.24128,46.93147],[10.22675,46.86942],[10.10715,46.84296],[9.98058,46.91434],[9.88266,46.93343],[9.87935,47.01337],[9.60717,47.06091],[9.55721,47.04762],[9.54041,47.06495],[9.47548,47.05257],[9.47139,47.06402],[9.51362,47.08505],[9.52089,47.10019],[9.51044,47.13727],[9.48774,47.17402],[9.4891,47.19346],[9.50318,47.22153],[9.52406,47.24959],[9.53116,47.27029],[9.54773,47.2809],[9.55857,47.29919],[9.58513,47.31334],[9.59978,47.34671],[9.62476,47.36639],[9.65427,47.36824],[9.66243,47.37136],[9.6711,47.37824],[9.67445,47.38429],[9.67334,47.39191],[9.6629,47.39591],[9.65136,47.40504],[9.65043,47.41937],[9.6446,47.43233],[9.64483,47.43842],[9.65863,47.44847],[9.65728,47.45383],[9.6423,47.45599],[9.62475,47.45685],[9.62158,47.45858],[9.60841,47.47178],[9.60484,47.46358],[9.60205,47.46165],[9.59482,47.46305],[9.58208,47.48344],[9.56312,47.49495],[9.55125,47.53629],[9.25619,47.65939],[9.18203,47.65598],[9.17593,47.65399],[9.1755,47.65584],[9.1705,47.65513],[9.15181,47.66904],[9.13845,47.66389],[9.09891,47.67801],[9.02093,47.6868],[8.94093,47.65596],[8.89946,47.64769],[8.87625,47.65441],[8.87383,47.67045],[8.85065,47.68209],[8.86989,47.70504],[8.82002,47.71458],[8.80663,47.73821],[8.77309,47.72059],[8.76965,47.7075],[8.79966,47.70222],[8.79511,47.67462],[8.75856,47.68969],[8.72809,47.69282]],[[8.95861,45.96485],[8.96668,45.98436],[8.97741,45.98317],[8.97604,45.96151],[8.95861,45.96485]],[[8.70847,47.68904],[8.68985,47.69552],[8.66837,47.68437],[8.65769,47.68928],[8.67508,47.6979],[8.66416,47.71367],[8.70237,47.71453],[8.71773,47.69088],[8.70847,47.68904]]]]},properties:{iso1A2:"CH",iso1A3:"CHE",iso1N3:"756",wikidata:"Q39",nameEn:"Switzerland",groups:["155","150","UN"],callingCodes:["41"]}},{type:"Feature",properties:{iso1A2:"CI",iso1A3:"CIV",iso1N3:"384",wikidata:"Q1008",nameEn:"C\xF4te d'Ivoire",groups:["011","202","002","UN"],callingCodes:["225"]},geometry:{type:"MultiPolygon",coordinates:[[[[-7.52774,3.7105],[-3.34019,4.17519],[-3.10675,5.08515],[-3.11073,5.12675],[-3.063,5.13665],[-2.96554,5.10397],[-2.95261,5.12477],[-2.75502,5.10657],[-2.73074,5.1364],[-2.77625,5.34621],[-2.72737,5.34789],[-2.76614,5.60963],[-2.85378,5.65156],[-2.93132,5.62137],[-2.96671,5.6415],[-2.95323,5.71865],[-3.01896,5.71697],[-3.25999,6.62521],[-3.21954,6.74407],[-3.23327,6.81744],[-2.95438,7.23737],[-2.97822,7.27165],[-2.92339,7.60847],[-2.79467,7.86002],[-2.78395,7.94974],[-2.74819,7.92613],[-2.67787,8.02055],[-2.61232,8.02645],[-2.62901,8.11495],[-2.49037,8.20872],[-2.58243,8.7789],[-2.66357,9.01771],[-2.77799,9.04949],[-2.69814,9.22717],[-2.68802,9.49343],[-2.76494,9.40778],[-2.93012,9.57403],[-3.00765,9.74019],[-3.16609,9.85147],[-3.19306,9.93781],[-3.27228,9.84981],[-3.31779,9.91125],[-3.69703,9.94279],[-4.25999,9.76012],[-4.31392,9.60062],[-4.6426,9.70696],[-4.96621,9.89132],[-4.96453,9.99923],[-5.12465,10.29788],[-5.39602,10.2929],[-5.51058,10.43177],[-5.65135,10.46767],[-5.78124,10.43952],[-5.99478,10.19694],[-6.18851,10.24244],[-6.1731,10.46983],[-6.24795,10.74248],[-6.325,10.68624],[-6.40646,10.69922],[-6.42847,10.5694],[-6.52974,10.59104],[-6.63541,10.66893],[-6.68164,10.35074],[-6.93921,10.35291],[-7.01186,10.25111],[-6.97444,10.21644],[-7.00966,10.15794],[-7.0603,10.14711],[-7.13331,10.24877],[-7.3707,10.24677],[-7.44555,10.44602],[-7.52261,10.4655],[-7.54462,10.40921],[-7.63048,10.46334],[-7.92107,10.15577],[-7.97971,10.17117],[-8.01225,10.1021],[-8.11921,10.04577],[-8.15652,9.94288],[-8.09434,9.86936],[-8.14657,9.55062],[-8.03463,9.39604],[-7.85056,9.41812],[-7.90777,9.20456],[-7.73862,9.08422],[-7.92518,8.99332],[-7.95503,8.81146],[-7.69882,8.66148],[-7.65653,8.36873],[-7.92518,8.50652],[-8.22991,8.48438],[-8.2411,8.24196],[-8.062,8.16071],[-7.98675,8.20134],[-7.99919,8.11023],[-7.94695,8.00925],[-8.06449,8.04989],[-8.13414,7.87991],[-8.09931,7.78626],[-8.21374,7.54466],[-8.4003,7.6285],[-8.47114,7.55676],[-8.41935,7.51203],[-8.37458,7.25794],[-8.29249,7.1691],[-8.31736,6.82837],[-8.59456,6.50612],[-8.48652,6.43797],[-8.45666,6.49977],[-8.38453,6.35887],[-8.3298,6.36381],[-8.17557,6.28222],[-8.00642,6.31684],[-7.90692,6.27728],[-7.83478,6.20309],[-7.8497,6.08932],[-7.79747,6.07696],[-7.78254,5.99037],[-7.70294,5.90625],[-7.67309,5.94337],[-7.48155,5.80974],[-7.46165,5.84934],[-7.43677,5.84687],[-7.43926,5.74787],[-7.37209,5.61173],[-7.43428,5.42355],[-7.36463,5.32944],[-7.46165,5.26256],[-7.48901,5.14118],[-7.55369,5.08667],[-7.53876,4.94294],[-7.59349,4.8909],[-7.53259,4.35145],[-7.52774,3.7105]]]]}},{type:"Feature",properties:{iso1A2:"CK",iso1A3:"COK",iso1N3:"184",wikidata:"Q26988",nameEn:"Cook Islands",country:"NZ",groups:["061","009","UN"],driveSide:"left",callingCodes:["682"]},geometry:{type:"MultiPolygon",coordinates:[[[[-168.15106,-10.26955],[-156.45576,-31.75456],[-156.48634,-15.52824],[-156.50903,-7.4975],[-168.15106,-10.26955]]]]}},{type:"Feature",properties:{iso1A2:"CL",iso1A3:"CHL",iso1N3:"152",wikidata:"Q298",nameEn:"Chile",groups:["005","419","019","UN"],callingCodes:["56"]},geometry:{type:"MultiPolygon",coordinates:[[[[-68.60702,-52.65781],[-68.41683,-52.33516],[-69.97824,-52.00845],[-71.99889,-51.98018],[-72.33873,-51.59954],[-72.31343,-50.58411],[-73.15765,-50.78337],[-73.55259,-49.92488],[-73.45156,-49.79461],[-73.09655,-49.14342],[-72.56894,-48.81116],[-72.54042,-48.52392],[-72.27662,-48.28727],[-72.50478,-47.80586],[-71.94152,-47.13595],[-71.68577,-46.55385],[-71.75614,-45.61611],[-71.35687,-45.22075],[-72.06985,-44.81756],[-71.26418,-44.75684],[-71.16436,-44.46244],[-71.81318,-44.38097],[-71.64206,-43.64774],[-72.14828,-42.85321],[-72.15541,-42.15941],[-71.74901,-42.11711],[-71.92726,-40.72714],[-71.37826,-38.91474],[-70.89532,-38.6923],[-71.24279,-37.20264],[-70.95047,-36.4321],[-70.38008,-36.02375],[-70.49416,-35.24145],[-69.87386,-34.13344],[-69.88099,-33.34489],[-70.55832,-31.51559],[-70.14479,-30.36595],[-69.8596,-30.26131],[-69.99507,-29.28351],[-69.80969,-29.07185],[-69.66709,-28.44055],[-69.22504,-27.95042],[-68.77586,-27.16029],[-68.43363,-27.08414],[-68.27677,-26.90626],[-68.59048,-26.49861],[-68.56909,-26.28146],[-68.38372,-26.15353],[-68.57622,-25.32505],[-68.38372,-25.08636],[-68.56909,-24.69831],[-68.24825,-24.42596],[-67.33563,-24.04237],[-66.99632,-22.99839],[-67.18382,-22.81525],[-67.54284,-22.89771],[-67.85114,-22.87076],[-68.18816,-21.28614],[-68.40403,-20.94562],[-68.53957,-20.91542],[-68.55383,-20.7355],[-68.44023,-20.62701],[-68.7276,-20.46178],[-68.74273,-20.08817],[-68.57132,-20.03134],[-68.54611,-19.84651],[-68.66761,-19.72118],[-68.41218,-19.40499],[-68.61989,-19.27584],[-68.80602,-19.08355],[-68.87082,-19.06003],[-68.94987,-18.93302],[-69.07432,-18.28259],[-69.14807,-18.16893],[-69.07496,-18.03715],[-69.28671,-17.94844],[-69.34126,-17.72753],[-69.46623,-17.60518],[-69.46897,-17.4988],[-69.66483,-17.65083],[-69.79087,-17.65563],[-69.82868,-17.72048],[-69.75305,-17.94605],[-69.81607,-18.12582],[-69.96732,-18.25992],[-70.16394,-18.31737],[-70.31267,-18.31258],[-70.378,-18.3495],[-70.59118,-18.35072],[-113.52687,-26.52828],[-68.11646,-58.14883],[-66.07313,-55.19618],[-67.11046,-54.94199],[-67.46182,-54.92205],[-68.01394,-54.8753],[-68.60733,-54.9125],[-68.60702,-52.65781]]]]}},{type:"Feature",properties:{iso1A2:"CM",iso1A3:"CMR",iso1N3:"120",wikidata:"Q1009",nameEn:"Cameroon",groups:["017","202","002","UN"],callingCodes:["237"]},geometry:{type:"MultiPolygon",coordinates:[[[[14.83314,12.62963],[14.55058,12.78256],[14.56101,12.91036],[14.46881,13.08259],[14.08251,13.0797],[14.20204,12.53405],[14.17523,12.41916],[14.22215,12.36533],[14.4843,12.35223],[14.6474,12.17466],[14.61612,11.7798],[14.55207,11.72001],[14.64591,11.66166],[14.6124,11.51283],[14.17821,11.23831],[13.97489,11.30258],[13.78945,11.00154],[13.7403,11.00593],[13.70753,10.94451],[13.73434,10.9255],[13.54964,10.61236],[13.5705,10.53183],[13.43644,10.13326],[13.34111,10.12299],[13.25025,10.03647],[13.25323,10.00127],[13.286,9.9822],[13.27409,9.93232],[13.24132,9.91031],[13.25025,9.86042],[13.29941,9.8296],[13.25472,9.76795],[13.22642,9.57266],[13.02385,9.49334],[12.85628,9.36698],[12.91958,9.33905],[12.90022,9.11411],[12.81085,8.91992],[12.79,8.75361],[12.71701,8.7595],[12.68722,8.65938],[12.44146,8.6152],[12.4489,8.52536],[12.26123,8.43696],[12.24782,8.17904],[12.19271,8.10826],[12.20909,7.97553],[11.99908,7.67302],[12.01844,7.52981],[11.93205,7.47812],[11.84864,7.26098],[11.87396,7.09398],[11.63117,6.9905],[11.55818,6.86186],[11.57755,6.74059],[11.51499,6.60892],[11.42264,6.5882],[11.42041,6.53789],[11.09495,6.51717],[11.09644,6.68437],[10.94302,6.69325],[10.8179,6.83377],[10.83727,6.9358],[10.60789,7.06885],[10.59746,7.14719],[10.57214,7.16345],[10.53639,6.93432],[10.21466,6.88996],[10.15135,7.03781],[9.86314,6.77756],[9.77824,6.79088],[9.70674,6.51717],[9.51757,6.43874],[8.84209,5.82562],[8.88156,5.78857],[8.83687,5.68483],[8.92029,5.58403],[8.78027,5.1243],[8.60302,4.87353],[8.34397,4.30689],[9.22018,3.72052],[9.81162,2.33797],[9.82123,2.35097],[9.83754,2.32428],[9.83238,2.29079],[9.84716,2.24676],[9.89012,2.20457],[9.90749,2.20049],[9.991,2.16561],[11.3561,2.17217],[11.37116,2.29975],[13.28534,2.25716],[13.29457,2.16106],[14.61145,2.17866],[15.00996,1.98887],[15.22634,2.03243],[15.34776,1.91264],[15.48942,1.98265],[16.02959,1.76483],[16.02647,1.65591],[16.14634,1.70259],[16.05294,1.9811],[16.08563,2.19733],[16.15568,2.18955],[16.19357,2.21537],[16.08252,2.45708],[16.05449,3.02306],[15.77725,3.26835],[15.73522,3.24348],[15.07686,4.01805],[15.17482,4.05131],[15.10644,4.1362],[15.08609,4.30282],[15.00825,4.41458],[14.73383,4.6135],[14.65489,5.21343],[14.57083,5.23979],[14.52724,5.28319],[14.62531,5.51411],[14.58951,5.59777],[14.62375,5.70466],[14.60974,5.91838],[14.49455,5.91683],[14.42917,6.00508],[14.43073,6.08867],[14.56149,6.18928],[14.74206,6.26356],[14.80122,6.34866],[14.79966,6.39043],[14.96311,6.75693],[15.04717,6.77085],[15.23397,7.25135],[15.49743,7.52179],[15.56964,7.58936],[15.59272,7.7696],[15.50743,7.79302],[15.20426,8.50892],[15.09484,8.65982],[14.83566,8.80557],[14.35707,9.19611],[14.37094,9.2954],[13.97544,9.6365],[14.01793,9.73169],[14.1317,9.82413],[14.20411,10.00055],[14.4673,10.00264],[14.80082,9.93818],[14.95722,9.97926],[15.05999,9.94845],[15.14043,9.99246],[15.24618,9.99246],[15.41408,9.92876],[15.68761,9.99344],[15.50535,10.1098],[15.30874,10.31063],[15.23724,10.47764],[15.14936,10.53915],[15.15532,10.62846],[15.06737,10.80921],[15.09127,10.87431],[15.04957,11.02347],[15.10021,11.04101],[15.0585,11.40481],[15.13149,11.5537],[15.06595,11.71126],[15.11579,11.79313],[15.04808,11.8731],[15.05786,12.0608],[15.0349,12.10698],[15.00146,12.1223],[14.96952,12.0925],[14.89019,12.16593],[14.90827,12.3269],[14.83314,12.62963]]]]}},{type:"Feature",properties:{iso1A2:"CN",iso1A3:"CHN",iso1N3:"156",wikidata:"Q148",nameEn:"People's Republic of China"},geometry:null},{type:"Feature",properties:{iso1A2:"CO",iso1A3:"COL",iso1N3:"170",wikidata:"Q739",nameEn:"Colombia",groups:["005","419","019","UN"],callingCodes:["57"]},geometry:{type:"MultiPolygon",coordinates:[[[[-71.19849,12.65801],[-81.58685,18.0025],[-82.06974,14.49418],[-82.56142,11.91792],[-78.79327,9.93766],[-77.58292,9.22278],[-77.32389,8.81247],[-77.45064,8.49991],[-77.17257,7.97422],[-77.57185,7.51147],[-77.72514,7.72348],[-77.72157,7.47612],[-77.81426,7.48319],[-77.89178,7.22681],[-78.06168,7.07793],[-82.12561,4.00341],[-78.87137,1.47457],[-78.42749,1.15389],[-77.85677,.80197],[-77.7148,.85003],[-77.68613,.83029],[-77.66416,.81604],[-77.67815,.73863],[-77.49984,.64476],[-77.52001,.40782],[-76.89177,.24736],[-76.4094,.24015],[-76.41215,.38228],[-76.23441,.42294],[-75.82927,.09578],[-75.25764,-.11943],[-75.18513,-.0308],[-74.42701,-.50218],[-74.26675,-.97229],[-73.65312,-1.26222],[-72.92587,-2.44514],[-71.75223,-2.15058],[-70.94377,-2.23142],[-70.04609,-2.73906],[-70.71396,-3.7921],[-70.52393,-3.87553],[-70.3374,-3.79505],[-69.94708,-4.2431],[-69.43395,-1.42219],[-69.4215,-1.01853],[-69.59796,-.75136],[-69.603,-.51947],[-70.03658,-.19681],[-70.04162,.55437],[-69.47696,.71065],[-69.20976,.57958],[-69.14422,.84172],[-69.26017,1.06856],[-69.82987,1.07864],[-69.83491,1.69353],[-69.53746,1.76408],[-69.38621,1.70865],[-68.18128,1.72881],[-68.26699,1.83463],[-68.18632,2.00091],[-67.9292,1.82455],[-67.40488,2.22258],[-67.299,1.87494],[-67.15784,1.80439],[-67.08222,1.17441],[-66.85795,1.22998],[-67.21967,2.35778],[-67.65696,2.81691],[-67.85862,2.79173],[-67.85862,2.86727],[-67.30945,3.38393],[-67.50067,3.75812],[-67.62671,3.74303],[-67.85358,4.53249],[-67.83341,5.31104],[-67.59141,5.5369],[-67.63914,5.64963],[-67.58558,5.84537],[-67.43513,5.98835],[-67.4625,6.20625],[-67.60654,6.2891],[-69.41843,6.1072],[-70.10716,6.96516],[-70.7596,7.09799],[-71.03941,6.98163],[-71.37234,7.01588],[-71.42212,7.03854],[-71.44118,7.02116],[-71.82441,7.04314],[-72.04895,7.03837],[-72.19437,7.37034],[-72.43132,7.40034],[-72.47415,7.48928],[-72.45321,7.57232],[-72.47827,7.65604],[-72.46763,7.79518],[-72.44454,7.86031],[-72.46183,7.90682],[-72.45806,7.91141],[-72.47042,7.92306],[-72.48183,7.92909],[-72.48801,7.94329],[-72.47213,7.96106],[-72.39137,8.03534],[-72.35163,8.01163],[-72.36987,8.19976],[-72.4042,8.36513],[-72.65474,8.61428],[-72.77415,9.10165],[-72.94052,9.10663],[-73.02119,9.27584],[-73.36905,9.16636],[-72.98085,9.85253],[-72.88002,10.44309],[-72.4767,11.1117],[-72.24983,11.14138],[-71.9675,11.65536],[-71.3275,11.85],[-70.92579,11.96275],[-71.19849,12.65801]]]]}},{type:"Feature",properties:{iso1A2:"CP",iso1A3:"CPT",wikidata:"Q161258",nameEn:"Clipperton Island",country:"FR",groups:["EU","013","003","019","UN"],isoStatus:"excRes"},geometry:{type:"MultiPolygon",coordinates:[[[[-110.36279,9.79626],[-108.755,9.84085],[-109.04145,11.13245],[-110.36279,9.79626]]]]}},{type:"Feature",properties:{iso1A2:"CR",iso1A3:"CRI",iso1N3:"188",wikidata:"Q800",nameEn:"Costa Rica",groups:["013","003","419","019","UN"],callingCodes:["506"]},geometry:{type:"MultiPolygon",coordinates:[[[[-83.68276,11.01562],[-83.66597,10.79916],[-83.90838,10.71161],[-84.68197,11.07568],[-84.92439,10.9497],[-85.60529,11.22607],[-85.71223,11.06868],[-86.14524,11.09059],[-87.41779,5.02401],[-82.94503,7.93865],[-82.89978,8.04083],[-82.89137,8.05755],[-82.88641,8.10219],[-82.9388,8.26634],[-83.05209,8.33394],[-82.93056,8.43465],[-82.8679,8.44042],[-82.8382,8.48117],[-82.83322,8.52464],[-82.83975,8.54755],[-82.82739,8.60153],[-82.8794,8.6981],[-82.92068,8.74832],[-82.91377,8.774],[-82.88253,8.83331],[-82.72126,8.97125],[-82.93516,9.07687],[-82.93516,9.46741],[-82.84871,9.4973],[-82.87919,9.62645],[-82.77206,9.59573],[-82.66667,9.49746],[-82.61345,9.49881],[-82.56507,9.57279],[-82.51044,9.65379],[-83.54024,10.96805],[-83.68276,11.01562]]]]}},{type:"Feature",properties:{iso1A2:"CU",iso1A3:"CUB",iso1N3:"192",wikidata:"Q241",nameEn:"Cuba",groups:["029","003","419","019","UN"],callingCodes:["53"]},geometry:{type:"MultiPolygon",coordinates:[[[[-73.62304,20.6935],[-82.02215,24.23074],[-85.77883,21.92705],[-74.81171,18.82201],[-73.62304,20.6935]]]]}},{type:"Feature",properties:{iso1A2:"CV",iso1A3:"CPV",iso1N3:"132",wikidata:"Q1011",nameEn:"Cape Verde",groups:["Q105472","011","202","002","UN"],callingCodes:["238"]},geometry:{type:"MultiPolygon",coordinates:[[[[-28.81604,14.57305],[-20.39702,14.12816],[-23.37101,19.134],[-28.81604,14.57305]]]]}},{type:"Feature",properties:{iso1A2:"CW",iso1A3:"CUW",iso1N3:"531",wikidata:"Q25279",nameEn:"Cura\xE7ao",aliases:["NL-CW"],country:"NL",groups:["Q1451600","029","003","419","019","UN"],callingCodes:["599"]},geometry:{type:"MultiPolygon",coordinates:[[[[-68.90012,12.62309],[-69.59009,12.46019],[-68.99639,11.79035],[-68.33524,11.78151],[-68.90012,12.62309]]]]}},{type:"Feature",properties:{iso1A2:"CX",iso1A3:"CXR",iso1N3:"162",wikidata:"Q31063",nameEn:"Christmas Island",country:"AU",groups:["053","009","UN"],driveSide:"left",callingCodes:["61"]},geometry:{type:"MultiPolygon",coordinates:[[[[105.66835,-9.31927],[104.67494,-11.2566],[106.66176,-11.14349],[105.66835,-9.31927]]]]}},{type:"Feature",properties:{iso1A2:"CY",iso1A3:"CYP",iso1N3:"196",wikidata:"Q229",nameEn:"Republic of Cyprus",groups:["Q644636","EU","145","142","UN"],driveSide:"left",callingCodes:["357"]},geometry:{type:"MultiPolygon",coordinates:[[[[32.46489,35.48584],[30.15137,34.08517],[32.74412,34.43926],[32.75515,34.64985],[32.76136,34.68318],[32.79433,34.67883],[32.82717,34.70622],[32.86014,34.70585],[32.86167,34.68734],[32.9068,34.66102],[32.91398,34.67343],[32.93043,34.67091],[32.92807,34.66736],[32.93449,34.66241],[32.93693,34.67027],[32.94379,34.67111],[32.94683,34.67907],[32.95539,34.68471],[32.99135,34.68061],[32.98668,34.67268],[32.99014,34.65518],[32.97736,34.65277],[32.97079,34.66112],[32.95325,34.66462],[32.94796,34.6587],[32.94976,34.65204],[32.95471,34.64528],[32.95323,34.64075],[32.95891,34.62919],[32.96718,34.63446],[32.96968,34.64046],[33.0138,34.64424],[33.26744,34.49942],[33.83531,34.73974],[33.70575,34.97947],[33.70639,34.99303],[33.71514,35.00294],[33.69731,35.01754],[33.69938,35.03123],[33.67678,35.03866],[33.63765,35.03869],[33.61215,35.0527],[33.59658,35.03635],[33.567,35.04803],[33.57478,35.06049],[33.53975,35.08151],[33.48915,35.06594],[33.47666,35.00701],[33.45256,35.00288],[33.45178,35.02078],[33.47825,35.04103],[33.48136,35.0636],[33.46813,35.10564],[33.41675,35.16325],[33.4076,35.20062],[33.38575,35.2018],[33.37248,35.18698],[33.3717,35.1788],[33.36569,35.17479],[33.35612,35.17402],[33.35596,35.17942],[33.34964,35.17803],[33.35056,35.18328],[33.31955,35.18096],[33.3072,35.16816],[33.27068,35.16815],[33.15138,35.19504],[33.11105,35.15639],[33.08249,35.17319],[33.01192,35.15639],[32.94471,35.09422],[32.86406,35.1043],[32.85733,35.07742],[32.70779,35.14127],[32.70947,35.18328],[32.64864,35.19967],[32.60361,35.16647],[32.46489,35.48584]]],[[[33.74144,35.01053],[33.7492,35.01319],[33.74983,35.02274],[33.74265,35.02329],[33.73781,35.02181],[33.7343,35.01178],[33.74144,35.01053]]],[[[33.77312,34.9976],[33.75994,35.00113],[33.75682,34.99916],[33.76605,34.99543],[33.76738,34.99188],[33.7778,34.98981],[33.77843,34.988],[33.78149,34.98854],[33.78318,34.98699],[33.78571,34.98951],[33.78917,34.98854],[33.79191,34.98914],[33.78516,34.99582],[33.77553,34.99518],[33.77312,34.9976]]]]}},{type:"Feature",properties:{iso1A2:"CZ",iso1A3:"CZE",iso1N3:"203",wikidata:"Q213",nameEn:"Czechia",groups:["EU","151","150","UN"],callingCodes:["420"]},geometry:{type:"MultiPolygon",coordinates:[[[[14.82803,50.86966],[14.79139,50.81438],[14.70661,50.84096],[14.61993,50.86049],[14.63434,50.8883],[14.65259,50.90513],[14.64802,50.93241],[14.58024,50.91443],[14.56374,50.922],[14.59702,50.96148],[14.59908,50.98685],[14.58215,50.99306],[14.56432,51.01008],[14.53438,51.00374],[14.53321,51.01679],[14.49873,51.02242],[14.50809,51.0427],[14.49991,51.04692],[14.49154,51.04382],[14.49202,51.02286],[14.45827,51.03712],[14.41335,51.02086],[14.30098,51.05515],[14.25665,50.98935],[14.28776,50.97718],[14.32353,50.98556],[14.32793,50.97379],[14.30251,50.96606],[14.31422,50.95243],[14.39848,50.93866],[14.38691,50.89907],[14.30098,50.88448],[14.27123,50.89386],[14.24314,50.88761],[14.22331,50.86049],[14.02982,50.80662],[13.98864,50.8177],[13.89113,50.78533],[13.89444,50.74142],[13.82942,50.7251],[13.76316,50.73487],[13.70204,50.71771],[13.65977,50.73096],[13.52474,50.70394],[13.53748,50.67654],[13.5226,50.64721],[13.49742,50.63133],[13.46413,50.60102],[13.42189,50.61243],[13.37485,50.64931],[13.37805,50.627],[13.32264,50.60317],[13.32594,50.58009],[13.29454,50.57904],[13.25158,50.59268],[13.19043,50.50237],[13.13424,50.51709],[13.08301,50.50132],[13.0312,50.50944],[13.02038,50.4734],[13.02147,50.44763],[12.98433,50.42016],[12.94058,50.40944],[12.82465,50.45738],[12.73476,50.43237],[12.73044,50.42268],[12.70731,50.39948],[12.67261,50.41949],[12.51356,50.39694],[12.48747,50.37278],[12.49214,50.35228],[12.48256,50.34784],[12.46643,50.35527],[12.43722,50.33774],[12.43371,50.32506],[12.39924,50.32302],[12.40158,50.29521],[12.36594,50.28289],[12.35425,50.23993],[12.33263,50.24367],[12.32445,50.20442],[12.33847,50.19432],[12.32596,50.17146],[12.29232,50.17524],[12.28063,50.19544],[12.28755,50.22429],[12.23943,50.24594],[12.24791,50.25525],[12.26953,50.25189],[12.25119,50.27079],[12.20823,50.2729],[12.18013,50.32146],[12.10907,50.32041],[12.13716,50.27396],[12.09287,50.25032],[12.19335,50.19997],[12.21484,50.16399],[12.1917,50.13434],[12.2073,50.10315],[12.23709,50.10213],[12.27433,50.0771],[12.26111,50.06331],[12.30798,50.05719],[12.49908,49.97305],[12.47264,49.94222],[12.55197,49.92094],[12.48256,49.83575],[12.46603,49.78882],[12.40489,49.76321],[12.4462,49.70233],[12.52553,49.68415],[12.53544,49.61888],[12.56188,49.6146],[12.60155,49.52887],[12.64782,49.52565],[12.64121,49.47628],[12.669,49.42935],[12.71227,49.42363],[12.75854,49.3989],[12.78168,49.34618],[12.88414,49.33541],[12.88249,49.35479],[12.94859,49.34079],[13.03618,49.30417],[13.02957,49.27399],[13.05883,49.26259],[13.17665,49.16713],[13.17019,49.14339],[13.20405,49.12303],[13.23689,49.11412],[13.28242,49.1228],[13.39479,49.04812],[13.40802,48.98851],[13.50221,48.93752],[13.50552,48.97441],[13.58319,48.96899],[13.61624,48.9462],[13.67739,48.87886],[13.73854,48.88538],[13.76994,48.83537],[13.78977,48.83319],[13.8096,48.77877],[13.84023,48.76988],[14.06151,48.66873],[14.01482,48.63788],[14.09104,48.5943],[14.20691,48.5898],[14.33909,48.55852],[14.43076,48.58855],[14.4587,48.64695],[14.56139,48.60429],[14.60808,48.62881],[14.66762,48.58215],[14.71794,48.59794],[14.72756,48.69502],[14.80584,48.73489],[14.80821,48.77711],[14.81545,48.7874],[14.94773,48.76268],[14.95641,48.75915],[14.9758,48.76857],[14.98112,48.77524],[14.9782,48.7766],[14.98032,48.77959],[14.95072,48.79101],[14.98917,48.90082],[14.97612,48.96983],[14.99878,49.01444],[15.15534,48.99056],[15.16358,48.94278],[15.26177,48.95766],[15.28305,48.98831],[15.34823,48.98444],[15.48027,48.94481],[15.51357,48.91549],[15.61622,48.89541],[15.6921,48.85973],[15.75341,48.8516],[15.78087,48.87644],[15.84404,48.86921],[16.06034,48.75436],[16.37345,48.729],[16.40915,48.74576],[16.46134,48.80865],[16.67008,48.77699],[16.68518,48.7281],[16.71883,48.73806],[16.79779,48.70998],[16.90354,48.71541],[16.93955,48.60371],[17.00215,48.70887],[17.11202,48.82925],[17.19355,48.87602],[17.29054,48.85546],[17.3853,48.80936],[17.45671,48.85004],[17.5295,48.81117],[17.7094,48.86721],[17.73126,48.87885],[17.77944,48.92318],[17.87831,48.92679],[17.91814,49.01784],[18.06885,49.03157],[18.1104,49.08624],[18.15022,49.24518],[18.18456,49.28909],[18.36446,49.3267],[18.4139,49.36517],[18.4084,49.40003],[18.44686,49.39467],[18.54848,49.47059],[18.53063,49.49022],[18.57183,49.51162],[18.6144,49.49824],[18.67757,49.50895],[18.74761,49.492],[18.84521,49.51672],[18.84786,49.5446],[18.80479,49.6815],[18.72838,49.68163],[18.69817,49.70473],[18.62676,49.71983],[18.62943,49.74603],[18.62645,49.75002],[18.61368,49.75426],[18.61278,49.7618],[18.57183,49.83334],[18.60341,49.86256],[18.57045,49.87849],[18.57697,49.91565],[18.54299,49.92537],[18.54495,49.9079],[18.53423,49.89906],[18.41604,49.93498],[18.33562,49.94747],[18.33278,49.92415],[18.31914,49.91565],[18.27794,49.93863],[18.27107,49.96779],[18.21752,49.97309],[18.20241,49.99958],[18.10628,50.00223],[18.07898,50.04535],[18.03212,50.06574],[18.00396,50.04954],[18.04585,50.03311],[18.04585,50.01194],[18.00191,50.01723],[17.86886,49.97452],[17.77669,50.02253],[17.7506,50.07896],[17.6888,50.12037],[17.66683,50.10275],[17.59404,50.16437],[17.70528,50.18812],[17.76296,50.23382],[17.72176,50.25665],[17.74648,50.29966],[17.69292,50.32859],[17.67764,50.28977],[17.58889,50.27837],[17.3702,50.28123],[17.34548,50.2628],[17.34273,50.32947],[17.27681,50.32246],[17.19991,50.3654],[17.19579,50.38817],[17.14498,50.38117],[17.1224,50.39494],[16.89229,50.45117],[16.85933,50.41093],[16.90877,50.38642],[16.94448,50.31281],[16.99803,50.30316],[17.02138,50.27772],[16.99803,50.25753],[17.02825,50.23118],[17.00353,50.21449],[16.98018,50.24172],[16.8456,50.20834],[16.7014,50.09659],[16.63137,50.1142],[16.55446,50.16613],[16.56407,50.21009],[16.42674,50.32509],[16.39379,50.3207],[16.3622,50.34875],[16.36495,50.37679],[16.30289,50.38292],[16.28118,50.36891],[16.22821,50.41054],[16.21585,50.40627],[16.19526,50.43291],[16.31413,50.50274],[16.34572,50.49575],[16.44597,50.58041],[16.33611,50.66579],[16.23174,50.67101],[16.20839,50.63096],[16.10265,50.66405],[16.02437,50.60046],[15.98317,50.61528],[16.0175,50.63009],[15.97219,50.69799],[15.87331,50.67188],[15.81683,50.75666],[15.73186,50.73885],[15.43798,50.80833],[15.3803,50.77187],[15.36656,50.83956],[15.2773,50.8907],[15.27043,50.97724],[15.2361,50.99886],[15.1743,50.9833],[15.16744,51.01959],[15.11937,50.99021],[15.10152,51.01095],[15.06218,51.02269],[15.03895,51.0123],[15.02433,51.0242],[14.96419,50.99108],[15.01088,50.97984],[14.99852,50.86817],[14.82803,50.86966]]]]}},{type:"Feature",properties:{iso1A2:"DE",iso1A3:"DEU",iso1N3:"276",wikidata:"Q183",nameEn:"Germany",groups:["EU","155","150","UN"],callingCodes:["49"]},geometry:{type:"MultiPolygon",coordinates:[[[[8.70847,47.68904],[8.71773,47.69088],[8.70237,47.71453],[8.66416,47.71367],[8.67508,47.6979],[8.65769,47.68928],[8.66837,47.68437],[8.68985,47.69552],[8.70847,47.68904]]],[[[8.72617,47.69651],[8.72809,47.69282],[8.75856,47.68969],[8.79511,47.67462],[8.79966,47.70222],[8.76965,47.7075],[8.77309,47.72059],[8.80663,47.73821],[8.82002,47.71458],[8.86989,47.70504],[8.85065,47.68209],[8.87383,47.67045],[8.87625,47.65441],[8.89946,47.64769],[8.94093,47.65596],[9.02093,47.6868],[9.09891,47.67801],[9.13845,47.66389],[9.15181,47.66904],[9.1705,47.65513],[9.1755,47.65584],[9.17593,47.65399],[9.18203,47.65598],[9.25619,47.65939],[9.55125,47.53629],[9.72736,47.53457],[9.76748,47.5934],[9.80254,47.59419],[9.82591,47.58158],[9.8189,47.54688],[9.87499,47.52953],[9.87733,47.54688],[9.92407,47.53111],[9.96029,47.53899],[10.00003,47.48216],[10.03859,47.48927],[10.07131,47.45531],[10.09001,47.46005],[10.1052,47.4316],[10.06897,47.40709],[10.09819,47.35724],[10.11805,47.37228],[10.16362,47.36674],[10.17648,47.38889],[10.2127,47.38019],[10.22774,47.38904],[10.23757,47.37609],[10.19998,47.32832],[10.2147,47.31014],[10.17648,47.29149],[10.17531,47.27167],[10.23257,47.27088],[10.33424,47.30813],[10.39851,47.37623],[10.4324,47.38494],[10.4359,47.41183],[10.47446,47.43318],[10.46278,47.47901],[10.44291,47.48453],[10.4324,47.50111],[10.44992,47.5524],[10.43473,47.58394],[10.47329,47.58552],[10.48849,47.54057],[10.56912,47.53584],[10.60337,47.56755],[10.63456,47.5591],[10.68832,47.55752],[10.6965,47.54253],[10.7596,47.53228],[10.77596,47.51729],[10.88814,47.53701],[10.91268,47.51334],[10.86945,47.5015],[10.87061,47.4786],[10.90918,47.48571],[10.93839,47.48018],[10.92437,47.46991],[10.98513,47.42882],[10.97111,47.41617],[10.97111,47.39561],[11.11835,47.39719],[11.12536,47.41222],[11.20482,47.43198],[11.25157,47.43277],[11.22002,47.3964],[11.27844,47.39956],[11.29597,47.42566],[11.33804,47.44937],[11.4175,47.44621],[11.38128,47.47465],[11.4362,47.51413],[11.52618,47.50939],[11.58578,47.52281],[11.58811,47.55515],[11.60681,47.57881],[11.63934,47.59202],[11.84052,47.58354],[11.85572,47.60166],[12.0088,47.62451],[12.02282,47.61033],[12.05788,47.61742],[12.13734,47.60639],[12.17824,47.61506],[12.18145,47.61019],[12.17737,47.60121],[12.18568,47.6049],[12.20398,47.60667],[12.20801,47.61082],[12.19895,47.64085],[12.18507,47.65984],[12.18347,47.66663],[12.16769,47.68167],[12.16217,47.70105],[12.18303,47.70065],[12.22571,47.71776],[12.2542,47.7433],[12.26238,47.73544],[12.24017,47.69534],[12.26004,47.67725],[12.27991,47.68827],[12.336,47.69534],[12.37222,47.68433],[12.43883,47.6977],[12.44117,47.6741],[12.50076,47.62293],[12.53816,47.63553],[12.57438,47.63238],[12.6071,47.6741],[12.7357,47.6787],[12.77777,47.66689],[12.76492,47.64485],[12.82101,47.61493],[12.77427,47.58025],[12.80699,47.54477],[12.84672,47.54556],[12.85256,47.52741],[12.9624,47.47452],[12.98344,47.48716],[12.9998,47.46267],[13.04537,47.49426],[13.03252,47.53373],[13.05355,47.56291],[13.04537,47.58183],[13.06641,47.58577],[13.06407,47.60075],[13.09562,47.63304],[13.07692,47.68814],[13.01382,47.72116],[12.98578,47.7078],[12.92969,47.71094],[12.91333,47.7178],[12.90274,47.72513],[12.91711,47.74026],[12.9353,47.74788],[12.94371,47.76281],[12.93202,47.77302],[12.96311,47.79957],[12.98543,47.82896],[13.00588,47.84374],[12.94163,47.92927],[12.93886,47.94046],[12.93642,47.94436],[12.93419,47.94063],[12.92668,47.93879],[12.91985,47.94069],[12.9211,47.95135],[12.91683,47.95647],[12.87476,47.96195],[12.8549,48.01122],[12.76141,48.07373],[12.74973,48.10885],[12.7617,48.12796],[12.78595,48.12445],[12.80676,48.14979],[12.82673,48.15245],[12.8362,48.15876],[12.836,48.1647],[12.84475,48.16556],[12.87126,48.20318],[12.95306,48.20629],[13.02083,48.25689],[13.0851,48.27711],[13.126,48.27867],[13.18093,48.29577],[13.26039,48.29422],[13.30897,48.31575],[13.40709,48.37292],[13.43929,48.43386],[13.42527,48.45711],[13.45727,48.51092],[13.43695,48.55776],[13.45214,48.56472],[13.46967,48.55157],[13.50663,48.57506],[13.50131,48.58091],[13.51291,48.59023],[13.57535,48.55912],[13.59705,48.57013],[13.62508,48.55501],[13.65186,48.55092],[13.66113,48.53558],[13.72802,48.51208],[13.74816,48.53058],[13.7513,48.5624],[13.76921,48.55324],[13.80519,48.58026],[13.80038,48.59487],[13.82609,48.62345],[13.81901,48.6761],[13.81283,48.68426],[13.81791,48.69832],[13.79337,48.71375],[13.81863,48.73257],[13.82266,48.75544],[13.84023,48.76988],[13.8096,48.77877],[13.78977,48.83319],[13.76994,48.83537],[13.73854,48.88538],[13.67739,48.87886],[13.61624,48.9462],[13.58319,48.96899],[13.50552,48.97441],[13.50221,48.93752],[13.40802,48.98851],[13.39479,49.04812],[13.28242,49.1228],[13.23689,49.11412],[13.20405,49.12303],[13.17019,49.14339],[13.17665,49.16713],[13.05883,49.26259],[13.02957,49.27399],[13.03618,49.30417],[12.94859,49.34079],[12.88249,49.35479],[12.88414,49.33541],[12.78168,49.34618],[12.75854,49.3989],[12.71227,49.42363],[12.669,49.42935],[12.64121,49.47628],[12.64782,49.52565],[12.60155,49.52887],[12.56188,49.6146],[12.53544,49.61888],[12.52553,49.68415],[12.4462,49.70233],[12.40489,49.76321],[12.46603,49.78882],[12.48256,49.83575],[12.55197,49.92094],[12.47264,49.94222],[12.49908,49.97305],[12.30798,50.05719],[12.26111,50.06331],[12.27433,50.0771],[12.23709,50.10213],[12.2073,50.10315],[12.1917,50.13434],[12.21484,50.16399],[12.19335,50.19997],[12.09287,50.25032],[12.13716,50.27396],[12.10907,50.32041],[12.18013,50.32146],[12.20823,50.2729],[12.25119,50.27079],[12.26953,50.25189],[12.24791,50.25525],[12.23943,50.24594],[12.28755,50.22429],[12.28063,50.19544],[12.29232,50.17524],[12.32596,50.17146],[12.33847,50.19432],[12.32445,50.20442],[12.33263,50.24367],[12.35425,50.23993],[12.36594,50.28289],[12.40158,50.29521],[12.39924,50.32302],[12.43371,50.32506],[12.43722,50.33774],[12.46643,50.35527],[12.48256,50.34784],[12.49214,50.35228],[12.48747,50.37278],[12.51356,50.39694],[12.67261,50.41949],[12.70731,50.39948],[12.73044,50.42268],[12.73476,50.43237],[12.82465,50.45738],[12.94058,50.40944],[12.98433,50.42016],[13.02147,50.44763],[13.02038,50.4734],[13.0312,50.50944],[13.08301,50.50132],[13.13424,50.51709],[13.19043,50.50237],[13.25158,50.59268],[13.29454,50.57904],[13.32594,50.58009],[13.32264,50.60317],[13.37805,50.627],[13.37485,50.64931],[13.42189,50.61243],[13.46413,50.60102],[13.49742,50.63133],[13.5226,50.64721],[13.53748,50.67654],[13.52474,50.70394],[13.65977,50.73096],[13.70204,50.71771],[13.76316,50.73487],[13.82942,50.7251],[13.89444,50.74142],[13.89113,50.78533],[13.98864,50.8177],[14.02982,50.80662],[14.22331,50.86049],[14.24314,50.88761],[14.27123,50.89386],[14.30098,50.88448],[14.38691,50.89907],[14.39848,50.93866],[14.31422,50.95243],[14.30251,50.96606],[14.32793,50.97379],[14.32353,50.98556],[14.28776,50.97718],[14.25665,50.98935],[14.30098,51.05515],[14.41335,51.02086],[14.45827,51.03712],[14.49202,51.02286],[14.49154,51.04382],[14.49991,51.04692],[14.50809,51.0427],[14.49873,51.02242],[14.53321,51.01679],[14.53438,51.00374],[14.56432,51.01008],[14.58215,50.99306],[14.59908,50.98685],[14.59702,50.96148],[14.56374,50.922],[14.58024,50.91443],[14.64802,50.93241],[14.65259,50.90513],[14.63434,50.8883],[14.61993,50.86049],[14.70661,50.84096],[14.79139,50.81438],[14.82803,50.86966],[14.81664,50.88148],[14.89681,50.9422],[14.89252,50.94999],[14.92942,50.99744],[14.95529,51.04552],[14.97938,51.07742],[14.98229,51.11354],[14.99689,51.12205],[14.99079,51.14284],[14.99646,51.14365],[15.00083,51.14974],[14.99414,51.15813],[14.99311,51.16249],[15.0047,51.16874],[15.01242,51.21285],[15.04288,51.28387],[14.98008,51.33449],[14.96899,51.38367],[14.9652,51.44793],[14.94749,51.47155],[14.73219,51.52922],[14.72652,51.53902],[14.73047,51.54606],[14.71125,51.56209],[14.7727,51.61263],[14.75759,51.62318],[14.75392,51.67445],[14.69065,51.70842],[14.66386,51.73282],[14.64625,51.79472],[14.60493,51.80473],[14.59089,51.83302],[14.6588,51.88359],[14.6933,51.9044],[14.70601,51.92944],[14.7177,51.94048],[14.72163,51.95188],[14.71836,51.95606],[14.7139,51.95643],[14.70488,51.97679],[14.71339,52.00337],[14.76026,52.06624],[14.72971,52.09167],[14.6917,52.10283],[14.67683,52.13936],[14.70616,52.16927],[14.68344,52.19612],[14.71319,52.22144],[14.70139,52.25038],[14.58149,52.28007],[14.56378,52.33838],[14.55228,52.35264],[14.54423,52.42568],[14.63056,52.48993],[14.60081,52.53116],[14.6289,52.57136],[14.61073,52.59847],[14.22071,52.81175],[14.13806,52.82392],[14.12256,52.84311],[14.15873,52.87715],[14.14056,52.95786],[14.25954,53.00264],[14.35044,53.05829],[14.38679,53.13669],[14.36696,53.16444],[14.37853,53.20405],[14.40662,53.21098],[14.45125,53.26241],[14.44133,53.27427],[14.4215,53.27724],[14.35209,53.49506],[14.3273,53.50587],[14.30416,53.55499],[14.31904,53.61581],[14.2853,53.63392],[14.28477,53.65955],[14.27133,53.66613],[14.2836,53.67721],[14.26782,53.69866],[14.27249,53.74464],[14.21323,53.8664],[14.20823,53.90776],[14.18544,53.91258],[14.20647,53.91671],[14.22634,53.9291],[14.20811,54.12784],[13.93395,54.84044],[12.85844,54.82438],[11.90309,54.38543],[11.00303,54.63689],[10.31111,54.65968],[10.16755,54.73883],[9.89314,54.84171],[9.73563,54.8247],[9.61187,54.85548],[9.62734,54.88057],[9.58937,54.88785],[9.4659,54.83131],[9.43155,54.82586],[9.41213,54.84254],[9.38532,54.83968],[9.36496,54.81749],[9.33849,54.80233],[9.32771,54.80602],[9.2474,54.8112],[9.23445,54.83432],[9.24631,54.84726],[9.20571,54.85841],[9.14275,54.87421],[9.04629,54.87249],[8.92795,54.90452],[8.81178,54.90518],[8.76387,54.8948],[8.63979,54.91069],[8.55769,54.91837],[8.45719,55.06747],[8.02459,55.09613],[5.45168,54.20039],[6.91025,53.44221],[7.00198,53.32672],[7.19052,53.31866],[7.21679,53.20058],[7.22681,53.18165],[7.17898,53.13817],[7.21694,53.00742],[7.07253,52.81083],[7.04557,52.63318],[6.77307,52.65375],[6.71641,52.62905],[6.69507,52.488],[6.94293,52.43597],[6.99041,52.47235],[7.03417,52.40237],[7.07044,52.37805],[7.02703,52.27941],[7.06365,52.23789],[7.03729,52.22695],[6.9897,52.2271],[6.97189,52.20329],[6.83984,52.11728],[6.76117,52.11895],[6.68128,52.05052],[6.83035,51.9905],[6.82357,51.96711],[6.72319,51.89518],[6.68386,51.91861],[6.58556,51.89386],[6.50231,51.86313],[6.47179,51.85395],[6.38815,51.87257],[6.40704,51.82771],[6.30593,51.84998],[6.29872,51.86801],[6.21443,51.86801],[6.15349,51.90439],[6.11551,51.89769],[6.16902,51.84094],[6.10337,51.84829],[6.06705,51.86136],[5.99848,51.83195],[5.94568,51.82786],[5.98665,51.76944],[5.95003,51.7493],[6.04091,51.71821],[6.02767,51.6742],[6.11759,51.65609],[6.09055,51.60564],[6.18017,51.54096],[6.21724,51.48568],[6.20654,51.40049],[6.22641,51.39948],[6.22674,51.36135],[6.16977,51.33169],[6.07889,51.24432],[6.07889,51.17038],[6.17384,51.19589],[6.16706,51.15677],[5.98292,51.07469],[5.9541,51.03496],[5.9134,51.06736],[5.86735,51.05182],[5.87849,51.01969],[5.90493,51.00198],[5.90296,50.97356],[5.95282,50.98728],[6.02697,50.98303],[6.01615,50.93367],[6.09297,50.92066],[6.07486,50.89307],[6.08805,50.87223],[6.07693,50.86025],[6.07431,50.84674],[6.05702,50.85179],[6.05623,50.8572],[6.01921,50.84435],[6.02328,50.81694],[6.00462,50.80065],[5.98404,50.80988],[5.97497,50.79992],[6.02624,50.77453],[6.01976,50.75398],[6.03889,50.74618],[6.0326,50.72647],[6.0406,50.71848],[6.04428,50.72861],[6.11707,50.72231],[6.17852,50.6245],[6.26957,50.62444],[6.2476,50.60392],[6.24888,50.59869],[6.24005,50.58732],[6.22581,50.5907],[6.20281,50.56952],[6.17739,50.55875],[6.17802,50.54179],[6.19735,50.53576],[6.19579,50.5313],[6.18716,50.52653],[6.19193,50.5212],[6.20599,50.52089],[6.22335,50.49578],[6.26637,50.50272],[6.30809,50.50058],[6.3465,50.48833],[6.34005,50.46083],[6.37219,50.45397],[6.36852,50.40776],[6.34406,50.37994],[6.3688,50.35898],[6.40785,50.33557],[6.40641,50.32425],[6.35701,50.31139],[6.32488,50.32333],[6.29949,50.30887],[6.28797,50.27458],[6.208,50.25179],[6.16853,50.2234],[6.18364,50.20815],[6.18739,50.1822],[6.14588,50.17106],[6.14132,50.14971],[6.15298,50.14126],[6.1379,50.12964],[6.12055,50.09171],[6.11274,50.05916],[6.13458,50.04141],[6.13044,50.02929],[6.14666,50.02207],[6.13794,50.01466],[6.13273,50.02019],[6.1295,50.01849],[6.13806,50.01056],[6.14948,50.00908],[6.14147,49.99563],[6.1701,49.98518],[6.16466,49.97086],[6.17872,49.9537],[6.18554,49.95622],[6.18045,49.96611],[6.19089,49.96991],[6.19856,49.95053],[6.22094,49.94955],[6.22608,49.929],[6.21882,49.92403],[6.22926,49.92096],[6.23496,49.89972],[6.26146,49.88203],[6.28874,49.87592],[6.29692,49.86685],[6.30963,49.87021],[6.32303,49.85133],[6.32098,49.83728],[6.33585,49.83785],[6.34267,49.84974],[6.36576,49.85032],[6.40022,49.82029],[6.42521,49.81591],[6.42905,49.81091],[6.44131,49.81443],[6.45425,49.81164],[6.47111,49.82263],[6.48718,49.81267],[6.50647,49.80916],[6.51215,49.80124],[6.52121,49.81338],[6.53122,49.80666],[6.52169,49.79787],[6.50534,49.78952],[6.51669,49.78336],[6.51056,49.77515],[6.51828,49.76855],[6.51646,49.75961],[6.50174,49.75292],[6.50193,49.73291],[6.51805,49.72425],[6.51397,49.72058],[6.50261,49.72718],[6.49535,49.72645],[6.49694,49.72205],[6.5042,49.71808],[6.50647,49.71353],[6.49785,49.71118],[6.48014,49.69767],[6.46048,49.69092],[6.44654,49.67799],[6.42937,49.66857],[6.42726,49.66078],[6.43768,49.66021],[6.4413,49.65722],[6.41861,49.61723],[6.39822,49.60081],[6.385,49.59946],[6.37464,49.58886],[6.38342,49.5799],[6.38024,49.57593],[6.36676,49.57813],[6.35825,49.57053],[6.38228,49.55855],[6.38072,49.55171],[6.35666,49.52931],[6.36788,49.50377],[6.36907,49.48931],[6.36778,49.46937],[6.38352,49.46463],[6.39168,49.4667],[6.40274,49.46546],[6.42432,49.47683],[6.55404,49.42464],[6.533,49.40748],[6.60091,49.36864],[6.58807,49.35358],[6.572,49.35027],[6.60186,49.31055],[6.66583,49.28065],[6.69274,49.21661],[6.71843,49.2208],[6.73256,49.20486],[6.71137,49.18808],[6.73765,49.16375],[6.78265,49.16793],[6.83385,49.15162],[6.84703,49.15734],[6.86225,49.18185],[6.85016,49.19354],[6.85119,49.20038],[6.83555,49.21249],[6.85939,49.22376],[6.89298,49.20863],[6.91875,49.22261],[6.93831,49.2223],[6.94028,49.21641],[6.95963,49.203],[6.97273,49.2099],[7.01318,49.19018],[7.03459,49.19096],[7.0274,49.17042],[7.03178,49.15734],[7.04662,49.13724],[7.04409,49.12123],[7.04843,49.11422],[7.05548,49.11185],[7.06642,49.11415],[7.07162,49.1255],[7.09007,49.13094],[7.07859,49.15031],[7.10715,49.15631],[7.10384,49.13787],[7.12504,49.14253],[7.1358,49.1282],[7.1593,49.1204],[7.23473,49.12971],[7.29514,49.11426],[7.3195,49.14231],[7.35995,49.14399],[7.3662,49.17308],[7.44052,49.18354],[7.44455,49.16765],[7.49473,49.17],[7.49172,49.13915],[7.53012,49.09818],[7.56416,49.08136],[7.62575,49.07654],[7.63618,49.05428],[7.75948,49.04562],[7.79557,49.06583],[7.86386,49.03499],[7.93641,49.05544],[7.97783,49.03161],[8.14189,48.97833],[8.22604,48.97352],[8.20031,48.95856],[8.19989,48.95825],[8.12813,48.87985],[8.10253,48.81829],[8.06802,48.78957],[8.0326,48.79017],[8.01534,48.76085],[7.96994,48.75606],[7.96812,48.72491],[7.89002,48.66317],[7.84098,48.64217],[7.80057,48.5857],[7.80167,48.54758],[7.80647,48.51239],[7.76833,48.48945],[7.73109,48.39192],[7.74562,48.32736],[7.69022,48.30018],[7.6648,48.22219],[7.57137,48.12292],[7.56966,48.03265],[7.62302,47.97898],[7.55673,47.87371],[7.52921,47.77747],[7.54761,47.72912],[7.53722,47.71635],[7.51266,47.70197],[7.51915,47.68335],[7.52067,47.66437],[7.53384,47.65115],[7.5591,47.63849],[7.57423,47.61628],[7.58851,47.60794],[7.59301,47.60058],[7.58945,47.59017],[7.60523,47.58519],[7.60459,47.57869],[7.61929,47.57683],[7.64309,47.59151],[7.64213,47.5944],[7.64599,47.59695],[7.67395,47.59212],[7.68229,47.59905],[7.69385,47.60099],[7.68486,47.59601],[7.67115,47.5871],[7.68904,47.57133],[7.67655,47.56435],[7.63338,47.56256],[7.65083,47.54662],[7.66174,47.54554],[7.6656,47.53752],[7.68101,47.53232],[7.69642,47.53297],[7.71961,47.54219],[7.75261,47.54599],[7.79486,47.55691],[7.81901,47.58798],[7.84412,47.5841],[7.88664,47.58854],[7.90673,47.57674],[7.91251,47.55031],[7.94494,47.54511],[7.95682,47.55789],[7.97581,47.55493],[8.00113,47.55616],[8.02136,47.55096],[8.04383,47.55443],[8.06663,47.56374],[8.08557,47.55768],[8.10002,47.56504],[8.10395,47.57918],[8.11543,47.5841],[8.13662,47.58432],[8.13823,47.59147],[8.14947,47.59558],[8.1652,47.5945],[8.19378,47.61636],[8.20617,47.62141],[8.22011,47.6181],[8.22577,47.60385],[8.23809,47.61204],[8.25863,47.61571],[8.26313,47.6103],[8.2824,47.61225],[8.29722,47.60603],[8.29524,47.5919],[8.30277,47.58607],[8.32735,47.57133],[8.35512,47.57014],[8.38273,47.56608],[8.39477,47.57826],[8.43235,47.56617],[8.49431,47.58107],[8.48949,47.588],[8.46637,47.58389],[8.45578,47.60121],[8.50747,47.61897],[8.51686,47.63476],[8.55756,47.62394],[8.57586,47.59537],[8.60348,47.61204],[8.59545,47.64298],[8.60701,47.65271],[8.61471,47.64514],[8.60412,47.63735],[8.62049,47.63757],[8.62884,47.65098],[8.61113,47.66332],[8.6052,47.67258],[8.57683,47.66158],[8.56141,47.67088],[8.52801,47.66059],[8.5322,47.64687],[8.49656,47.64709],[8.46605,47.64103],[8.4667,47.65747],[8.44711,47.65379],[8.42264,47.66667],[8.41346,47.66676],[8.40473,47.67499],[8.4211,47.68407],[8.40569,47.69855],[8.44807,47.72426],[8.45771,47.7493],[8.48868,47.77215],[8.56814,47.78001],[8.56415,47.80633],[8.61657,47.79998],[8.62408,47.7626],[8.64425,47.76398],[8.65292,47.80066],[8.68022,47.78599],[8.68985,47.75686],[8.71778,47.76571],[8.74251,47.75168],[8.70543,47.73121],[8.73671,47.7169],[8.72617,47.69651]]]]}},{type:"Feature",properties:{iso1A2:"DG",iso1A3:"DGA",wikidata:"Q184851",nameEn:"Diego Garcia",country:"GB",groups:["IO","BOTS","014","202","002","UN"],isoStatus:"excRes",callingCodes:["246"]},geometry:{type:"MultiPolygon",coordinates:[[[[73.14823,-7.76302],[73.09982,-6.07324],[71.43792,-7.73904],[73.14823,-7.76302]]]]}},{type:"Feature",properties:{iso1A2:"DJ",iso1A3:"DJI",iso1N3:"262",wikidata:"Q977",nameEn:"Djibouti",groups:["014","202","002","UN"],callingCodes:["253"]},geometry:{type:"MultiPolygon",coordinates:[[[[43.90659,12.3823],[43.90659,12.3823],[43.32909,12.59711],[43.29075,12.79154],[42.86195,12.58747],[42.7996,12.42629],[42.6957,12.36201],[42.46941,12.52661],[42.4037,12.46478],[41.95461,11.81157],[41.82878,11.72361],[41.77727,11.49902],[41.8096,11.33606],[41.80056,10.97127],[42.06302,10.92599],[42.13691,10.97586],[42.42669,10.98493],[42.62989,11.09711],[42.75111,11.06992],[42.79037,10.98493],[42.95776,10.98533],[43.90659,12.3823]]]]}},{type:"Feature",properties:{iso1A2:"DK",iso1A3:"DNK",iso1N3:"208",wikidata:"Q756617",nameEn:"Kingdom of Denmark"},geometry:null},{type:"Feature",properties:{iso1A2:"DM",iso1A3:"DMA",iso1N3:"212",wikidata:"Q784",nameEn:"Dominica",groups:["029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 767"]},geometry:{type:"MultiPolygon",coordinates:[[[[-61.32485,14.91445],[-60.86656,15.82603],[-61.95646,15.5094],[-61.32485,14.91445]]]]}},{type:"Feature",properties:{iso1A2:"DO",iso1A3:"DOM",iso1N3:"214",wikidata:"Q786",nameEn:"Dominican Republic",groups:["029","003","419","019","UN"],callingCodes:["1 809","1 829","1 849"]},geometry:{type:"MultiPolygon",coordinates:[[[[-67.87844,21.7938],[-72.38946,20.27111],[-71.77419,19.73128],[-71.75865,19.70231],[-71.7429,19.58445],[-71.71449,19.55364],[-71.71268,19.53374],[-71.6802,19.45008],[-71.69448,19.37866],[-71.77766,19.33823],[-71.73229,19.26686],[-71.62642,19.21212],[-71.65337,19.11759],[-71.69938,19.10916],[-71.71088,19.08353],[-71.74088,19.0437],[-71.88102,18.95007],[-71.77766,18.95007],[-71.72624,18.87802],[-71.71885,18.78423],[-71.82556,18.62551],[-71.95412,18.64939],[-72.00201,18.62312],[-71.88102,18.50125],[-71.90875,18.45821],[-71.69952,18.34101],[-71.78271,18.18302],[-71.75465,18.14405],[-71.74994,18.11115],[-71.73783,18.07177],[-71.75671,18.03456],[-72.29523,17.48026],[-68.39466,16.14167],[-67.87844,21.7938]]]]}},{type:"Feature",properties:{iso1A2:"DZ",iso1A3:"DZA",iso1N3:"012",wikidata:"Q262",nameEn:"Algeria",groups:["015","002","UN"],callingCodes:["213"]},geometry:{type:"MultiPolygon",coordinates:[[[[8.59123,37.14286],[5.10072,39.89531],[-2.27707,35.35051],[-2.21248,35.08532],[-2.21445,35.04378],[-2.04734,34.93218],[-1.97833,34.93218],[-1.97469,34.886],[-1.73707,34.74226],[-1.84569,34.61907],[-1.69788,34.48056],[-1.78042,34.39018],[-1.64666,34.10405],[-1.73494,33.71721],[-1.59508,33.59929],[-1.67067,33.27084],[-1.46249,33.0499],[-1.54244,32.95499],[-1.37794,32.73628],[-.9912,32.52467],[-1.24998,32.32993],[-1.24453,32.1917],[-1.15735,32.12096],[-1.22829,32.07832],[-2.46166,32.16603],[-2.93873,32.06557],[-2.82784,31.79459],[-3.66314,31.6339],[-3.66386,31.39202],[-3.77647,31.31912],[-3.77103,31.14984],[-3.54944,31.0503],[-3.65418,30.85566],[-3.64735,30.67539],[-4.31774,30.53229],[-4.6058,30.28343],[-5.21671,29.95253],[-5.58831,29.48103],[-5.72121,29.52322],[-5.75616,29.61407],[-6.69965,29.51623],[-6.78351,29.44634],[-6.95824,29.50924],[-7.61585,29.36252],[-8.6715,28.71194],[-8.66879,27.6666],[-8.66674,27.31569],[-4.83423,24.99935],[1.15698,21.12843],[1.20992,20.73533],[3.24648,19.81703],[3.12501,19.1366],[3.36082,18.9745],[4.26651,19.14224],[5.8153,19.45101],[7.38361,20.79165],[7.48273,20.87258],[11.96886,23.51735],[11.62498,24.26669],[11.41061,24.21456],[10.85323,24.5595],[10.33159,24.5465],[10.02432,24.98124],[10.03146,25.35635],[9.38834,26.19288],[9.51696,26.39148],[9.89569,26.57696],[9.78136,29.40961],[9.3876,30.16738],[9.55544,30.23971],[9.07483,32.07865],[8.35999,32.50101],[8.31895,32.83483],[8.1179,33.05086],[8.11433,33.10175],[7.83028,33.18851],[7.73687,33.42114],[7.54088,33.7726],[7.52851,34.06493],[7.66174,34.20167],[7.74207,34.16492],[7.81242,34.21841],[7.86264,34.3987],[8.20482,34.57575],[8.29655,34.72798],[8.25189,34.92009],[8.30727,34.95378],[8.3555,35.10007],[8.47318,35.23376],[8.30329,35.29884],[8.36086,35.47774],[8.35371,35.66373],[8.26472,35.73669],[8.2626,35.91733],[8.40731,36.42208],[8.18936,36.44939],[8.16167,36.48817],[8.47609,36.66607],[8.46537,36.7706],[8.57613,36.78062],[8.67706,36.8364],[8.62972,36.86499],[8.64044,36.9401],[8.59123,37.14286]]]]}},{type:"Feature",properties:{iso1A2:"EA",wikidata:"Q28868874",nameEn:"Ceuta, Melilla",country:"ES",level:"territory",isoStatus:"excRes"},geometry:null},{type:"Feature",properties:{iso1A2:"EC",iso1A3:"ECU",iso1N3:"218",wikidata:"Q736",nameEn:"Ecuador"},geometry:null},{type:"Feature",properties:{iso1A2:"EE",iso1A3:"EST",iso1N3:"233",wikidata:"Q191",nameEn:"Estonia",aliases:["EW"],groups:["EU","154","150","UN"],callingCodes:["372"]},geometry:{type:"MultiPolygon",coordinates:[[[[26.32936,60.00121],[20.5104,59.15546],[19.84909,57.57876],[22.80496,57.87798],[23.20055,57.56697],[24.26221,57.91787],[24.3579,57.87471],[25.19484,58.0831],[25.28237,57.98539],[25.29581,58.08288],[25.73499,57.90193],[26.05949,57.84744],[26.0324,57.79037],[26.02456,57.78342],[26.027,57.78158],[26.0266,57.77441],[26.02069,57.77169],[26.02415,57.76865],[26.03332,57.7718],[26.0543,57.76105],[26.08098,57.76619],[26.2029,57.7206],[26.1866,57.6849],[26.29253,57.59244],[26.46527,57.56885],[26.54675,57.51813],[26.90364,57.62823],[27.34698,57.52242],[27.31919,57.57672],[27.40393,57.62125],[27.3746,57.66834],[27.52615,57.72843],[27.50171,57.78842],[27.56689,57.83356],[27.78526,57.83963],[27.81841,57.89244],[27.67282,57.92627],[27.62393,58.09462],[27.48541,58.22615],[27.55489,58.39525],[27.36366,58.78381],[27.74429,58.98351],[27.80482,59.1116],[27.87978,59.18097],[27.90911,59.24353],[28.00689,59.28351],[28.14215,59.28934],[28.19284,59.35791],[28.20537,59.36491],[28.21137,59.38058],[28.19061,59.39962],[28.04187,59.47017],[27.85643,59.58538],[26.90044,59.63819],[26.32936,60.00121]]]]}},{type:"Feature",properties:{iso1A2:"EG",iso1A3:"EGY",iso1N3:"818",wikidata:"Q79",nameEn:"Egypt",groups:["015","002","UN"],callingCodes:["20"]},geometry:{type:"MultiPolygon",coordinates:[[[[33.62659,31.82938],[26.92891,33.39516],[24.8458,31.39877],[25.01077,30.73861],[24.71117,30.17441],[24.99968,29.24574],[24.99885,21.99535],[33.17563,22.00405],[34.0765,22.00501],[37.8565,22.00903],[34.4454,27.91479],[34.8812,29.36878],[34.92298,29.45305],[34.26742,31.21998],[34.24012,31.29591],[34.23572,31.2966],[34.21853,31.32363],[34.052,31.46619],[33.62659,31.82938]]]]}},{type:"Feature",properties:{iso1A2:"EH",iso1A3:"ESH",iso1N3:"732",wikidata:"Q6250",nameEn:"Western Sahara",groups:["015","002"],callingCodes:["212"]},geometry:{type:"MultiPolygon",coordinates:[[[[-8.66879,27.6666],[-8.77527,27.66663],[-8.71787,26.9898],[-9.08698,26.98639],[-9.56957,26.90042],[-9.81998,26.71379],[-10.68417,26.90984],[-11.35695,26.8505],[-11.23622,26.72023],[-11.38635,26.611],[-11.62052,26.05229],[-12.06001,26.04442],[-12.12281,25.13682],[-12.92147,24.39502],[-13.00628,24.01923],[-13.75627,23.77231],[-14.10361,22.75501],[-14.1291,22.41636],[-14.48112,22.00886],[-14.47329,21.63839],[-14.78487,21.36587],[-16.44269,21.39745],[-16.9978,21.36239],[-17.02707,21.34022],[-17.21511,21.34226],[-17.35589,20.80492],[-17.0471,20.76408],[-17.0695,20.85742],[-17.06781,20.92697],[-17.0396,20.9961],[-17.0357,21.05368],[-16.99806,21.12142],[-16.95474,21.33997],[-13.01525,21.33343],[-13.08438,22.53866],[-13.15313,22.75649],[-13.10753,22.89493],[-13.00412,23.02297],[-12.5741,23.28975],[-12.36213,23.3187],[-12.14969,23.41935],[-12.00251,23.4538],[-12.0002,25.9986],[-8.66721,25.99918],[-8.66674,27.31569],[-8.66879,27.6666]]]]}},{type:"Feature",properties:{iso1A2:"ER",iso1A3:"ERI",iso1N3:"232",wikidata:"Q986",nameEn:"Eritrea",groups:["014","202","002","UN"],callingCodes:["291"]},geometry:{type:"MultiPolygon",coordinates:[[[[40.99158,15.81743],[39.63762,18.37348],[38.57727,17.98125],[38.45916,17.87167],[38.37133,17.66269],[38.13362,17.53906],[37.50967,17.32199],[37.42694,17.04041],[36.99777,17.07172],[36.92193,16.23451],[36.76371,15.80831],[36.69761,15.75323],[36.54276,15.23478],[36.44337,15.14963],[36.54376,14.25597],[36.56536,14.26177],[36.55659,14.28237],[36.63364,14.31172],[36.85787,14.32201],[37.01622,14.2561],[37.09486,14.27155],[37.13206,14.40746],[37.3106,14.44657],[37.47319,14.2149],[37.528,14.18413],[37.91287,14.89447],[38.0364,14.72745],[38.25562,14.67287],[38.3533,14.51323],[38.45748,14.41445],[38.78306,14.4754],[38.98058,14.54895],[39.02834,14.63717],[39.16074,14.65187],[39.14772,14.61827],[39.19547,14.56996],[39.23888,14.56365],[39.26927,14.48801],[39.2302,14.44598],[39.2519,14.40393],[39.37685,14.54402],[39.52756,14.49011],[39.50585,14.55735],[39.58182,14.60987],[39.76632,14.54264],[39.9443,14.41024],[40.07236,14.54264],[40.14649,14.53969],[40.21128,14.39342],[40.25686,14.41445],[40.9167,14.11152],[41.25097,13.60787],[41.62864,13.38626],[42.05841,12.80912],[42.21469,12.75832],[42.2798,12.6355],[42.4037,12.46478],[42.46941,12.52661],[42.6957,12.36201],[42.7996,12.42629],[42.86195,12.58747],[43.29075,12.79154],[40.99158,15.81743]]]]}},{type:"Feature",properties:{iso1A2:"ES",iso1A3:"ESP",iso1N3:"724",wikidata:"Q29",nameEn:"Spain"},geometry:null},{type:"Feature",properties:{iso1A2:"ET",iso1A3:"ETH",iso1N3:"231",wikidata:"Q115",nameEn:"Ethiopia",groups:["014","202","002","UN"],callingCodes:["251"]},geometry:{type:"MultiPolygon",coordinates:[[[[42.4037,12.46478],[42.2798,12.6355],[42.21469,12.75832],[42.05841,12.80912],[41.62864,13.38626],[41.25097,13.60787],[40.9167,14.11152],[40.25686,14.41445],[40.21128,14.39342],[40.14649,14.53969],[40.07236,14.54264],[39.9443,14.41024],[39.76632,14.54264],[39.58182,14.60987],[39.50585,14.55735],[39.52756,14.49011],[39.37685,14.54402],[39.2519,14.40393],[39.2302,14.44598],[39.26927,14.48801],[39.23888,14.56365],[39.19547,14.56996],[39.14772,14.61827],[39.16074,14.65187],[39.02834,14.63717],[38.98058,14.54895],[38.78306,14.4754],[38.45748,14.41445],[38.3533,14.51323],[38.25562,14.67287],[38.0364,14.72745],[37.91287,14.89447],[37.528,14.18413],[37.47319,14.2149],[37.3106,14.44657],[37.13206,14.40746],[37.09486,14.27155],[37.01622,14.2561],[36.85787,14.32201],[36.63364,14.31172],[36.55659,14.28237],[36.56536,14.26177],[36.54376,14.25597],[36.44653,13.95666],[36.48824,13.83954],[36.38993,13.56459],[36.24545,13.36759],[36.13374,12.92665],[36.16651,12.88019],[36.14268,12.70879],[36.01458,12.72478],[35.70476,12.67101],[35.24302,11.91132],[35.11492,11.85156],[35.05832,11.71158],[35.09556,11.56278],[34.95704,11.24448],[35.01215,11.19626],[34.93172,10.95946],[34.97789,10.91559],[34.97491,10.86147],[34.86916,10.78832],[34.86618,10.74588],[34.77532,10.69027],[34.77383,10.74588],[34.59062,10.89072],[34.4372,10.781],[34.2823,10.53508],[34.34783,10.23914],[34.32102,10.11599],[34.22718,10.02506],[34.20484,9.9033],[34.13186,9.7492],[34.08717,9.55243],[34.10229,9.50238],[34.14304,9.04654],[34.14453,8.60204],[34.01346,8.50041],[33.89579,8.4842],[33.87195,8.41938],[33.71407,8.3678],[33.66938,8.44442],[33.54575,8.47094],[33.3119,8.45474],[33.19721,8.40317],[33.1853,8.29264],[33.18083,8.13047],[33.08401,8.05822],[33.0006,7.90333],[33.04944,7.78989],[33.24637,7.77939],[33.32531,7.71297],[33.44745,7.7543],[33.71407,7.65983],[33.87642,7.5491],[34.02984,7.36449],[34.03878,7.27437],[34.01495,7.25664],[34.19369,7.12807],[34.19369,7.04382],[34.35753,6.91963],[34.47669,6.91076],[34.53925,6.82794],[34.53776,6.74808],[34.65096,6.72589],[34.77459,6.5957],[34.87736,6.60161],[35.01738,6.46991],[34.96227,6.26415],[35.00546,5.89387],[35.12611,5.68937],[35.13058,5.62118],[35.31188,5.50106],[35.29938,5.34042],[35.50792,5.42431],[35.8576,5.33413],[35.81968,5.10757],[35.82118,4.77382],[35.9419,4.61933],[35.95449,4.53244],[36.03924,4.44406],[36.84474,4.44518],[37.07724,4.33503],[38.14168,3.62487],[38.45812,3.60445],[38.52336,3.62551],[38.91938,3.51198],[39.07736,3.5267],[39.19954,3.47834],[39.49444,3.45521],[39.51551,3.40895],[39.55132,3.39634],[39.58339,3.47434],[39.76808,3.67058],[39.86043,3.86974],[40.77498,4.27683],[41.1754,3.94079],[41.89488,3.97375],[42.07619,4.17667],[42.55853,4.20518],[42.84526,4.28357],[42.97746,4.44032],[43.04177,4.57923],[43.40263,4.79289],[44.02436,4.9451],[44.98104,4.91821],[47.97917,8.00124],[47.92477,8.00111],[46.99339,7.9989],[44.19222,8.93028],[43.32613,9.59205],[43.23518,9.84605],[43.0937,9.90579],[42.87643,10.18441],[42.69452,10.62672],[42.95776,10.98533],[42.79037,10.98493],[42.75111,11.06992],[42.62989,11.09711],[42.42669,10.98493],[42.13691,10.97586],[42.06302,10.92599],[41.80056,10.97127],[41.8096,11.33606],[41.77727,11.49902],[41.82878,11.72361],[41.95461,11.81157],[42.4037,12.46478]]]]}},{type:"Feature",properties:{iso1A2:"EU",iso1A3:"EUE",wikidata:"Q458",nameEn:"European Union",level:"union",isoStatus:"excRes"},geometry:null},{type:"Feature",properties:{iso1A2:"FI",iso1A3:"FIN",iso1N3:"246",wikidata:"Q33",nameEn:"Finland",aliases:["SF"]},geometry:null},{type:"Feature",properties:{iso1A2:"FJ",iso1A3:"FJI",iso1N3:"242",wikidata:"Q712",nameEn:"Fiji",groups:["054","009","UN"],driveSide:"left",callingCodes:["679"]},geometry:{type:"MultiPolygon",coordinates:[[[[174.245,-23.1974],[179.99999,-22.5],[179.99999,-11.5],[174,-11.5],[174.245,-23.1974]]],[[[-176.76826,-14.95183],[-180,-14.96041],[-180,-22.90585],[-176.74538,-22.89767],[-176.76826,-14.95183]]]]}},{type:"Feature",properties:{iso1A2:"FK",iso1A3:"FLK",iso1N3:"238",wikidata:"Q9648",nameEn:"Falkland Islands",country:"GB",groups:["BOTS","005","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["500"]},geometry:{type:"MultiPolygon",coordinates:[[[[-63.67376,-55.11859],[-54.56126,-51.26248],[-61.26735,-50.63919],[-63.67376,-55.11859]]]]}},{type:"Feature",properties:{iso1A2:"FM",iso1A3:"FSM",iso1N3:"583",wikidata:"Q702",nameEn:"Federated States of Micronesia",groups:["057","009","UN"],roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["691"]},geometry:{type:"MultiPolygon",coordinates:[[[[138.20583,13.3783],[136.27107,6.73747],[156.88247,-1.39237],[165.19726,6.22546],[138.20583,13.3783]]]]}},{type:"Feature",properties:{iso1A2:"FO",iso1A3:"FRO",iso1N3:"234",wikidata:"Q4628",nameEn:"Faroe Islands",country:"DK",groups:["154","150","UN"],callingCodes:["298"]},geometry:{type:"MultiPolygon",coordinates:[[[[-8.51774,62.35338],[-6.51083,60.95272],[-5.70102,62.77194],[-8.51774,62.35338]]]]}},{type:"Feature",properties:{iso1A2:"FR",iso1A3:"FRA",iso1N3:"250",wikidata:"Q142",nameEn:"France"},geometry:null},{type:"Feature",properties:{iso1A2:"FX",iso1A3:"FXX",iso1N3:"249",wikidata:"Q212429",nameEn:"Metropolitan France",country:"FR",groups:["EU","155","150","UN"],isoStatus:"excRes",callingCodes:["33"]},geometry:{type:"MultiPolygon",coordinates:[[[[2.55904,51.07014],[2.18458,51.52087],[1.17405,50.74239],[-2.02963,49.91866],[-2.09454,49.46288],[-1.83944,49.23037],[-2.00491,48.86706],[-2.65349,49.15373],[-6.28985,48.93406],[-1.81005,43.59738],[-1.77289,43.38957],[-1.79319,43.37497],[-1.78332,43.36399],[-1.78714,43.35476],[-1.77068,43.34396],[-1.75334,43.34107],[-1.75079,43.3317],[-1.7397,43.32979],[-1.73074,43.29481],[-1.69407,43.31378],[-1.62481,43.30726],[-1.63052,43.28591],[-1.61341,43.25269],[-1.57674,43.25269],[-1.55963,43.28828],[-1.50992,43.29481],[-1.45289,43.27049],[-1.40942,43.27272],[-1.3758,43.24511],[-1.41562,43.12815],[-1.47555,43.08372],[-1.44067,43.047],[-1.35272,43.02658],[-1.34419,43.09665],[-1.32209,43.1127],[-1.27118,43.11961],[-1.30052,43.09581],[-1.30531,43.06859],[-1.25244,43.04164],[-1.22881,43.05534],[-1.10333,43.0059],[-1.00963,42.99279],[-.97133,42.96239],[-.81652,42.95166],[-.75478,42.96916],[-.72037,42.92541],[-.73422,42.91228],[-.72608,42.89318],[-.69837,42.87945],[-.67637,42.88303],[-.55497,42.77846],[-.50863,42.82713],[-.44334,42.79939],[-.41319,42.80776],[-.38833,42.80132],[-.3122,42.84788],[-.17939,42.78974],[-.16141,42.79535],[-.10519,42.72761],[-.02468,42.68513],[.17569,42.73424],[.25336,42.7174],[.29407,42.67431],[.36251,42.72282],[.40214,42.69779],[.67873,42.69458],[.65421,42.75872],[.66121,42.84021],[.711,42.86372],[.93089,42.79154],[.96166,42.80629],[.98292,42.78754],[1.0804,42.78569],[1.15928,42.71407],[1.35562,42.71944],[1.44197,42.60217],[1.47986,42.61346],[1.46718,42.63296],[1.48043,42.65203],[1.50867,42.64483],[1.55418,42.65669],[1.60085,42.62703],[1.63485,42.62957],[1.6625,42.61982],[1.68267,42.62533],[1.73452,42.61515],[1.72588,42.59098],[1.7858,42.57698],[1.73683,42.55492],[1.72515,42.50338],[1.76335,42.48863],[1.83037,42.48395],[1.88853,42.4501],[1.93663,42.45439],[1.94292,42.44316],[1.94061,42.43333],[1.94084,42.43039],[1.9574,42.42401],[1.96482,42.37787],[2.00488,42.35399],[2.06241,42.35906],[2.11621,42.38393],[2.12789,42.41291],[2.16599,42.42314],[2.20578,42.41633],[2.25551,42.43757],[2.38504,42.39977],[2.43299,42.39423],[2.43508,42.37568],[2.48457,42.33933],[2.54382,42.33406],[2.55516,42.35351],[2.57934,42.35808],[2.6747,42.33974],[2.65311,42.38771],[2.72056,42.42298],[2.75497,42.42578],[2.77464,42.41046],[2.84335,42.45724],[2.85675,42.45444],[2.86983,42.46843],[2.88413,42.45938],[2.92107,42.4573],[2.94283,42.48174],[2.96518,42.46692],[3.03734,42.47363],[3.08167,42.42748],[3.10027,42.42621],[3.11379,42.43646],[3.17156,42.43545],[3.75438,42.33445],[7.60802,41.05927],[10.09675,41.44089],[9.56115,43.20816],[7.50102,43.51859],[7.42422,43.72209],[7.40903,43.7296],[7.41113,43.73156],[7.41291,43.73168],[7.41298,43.73311],[7.41233,43.73439],[7.42062,43.73977],[7.42299,43.74176],[7.42443,43.74087],[7.42809,43.74396],[7.43013,43.74895],[7.43624,43.75014],[7.43708,43.75197],[7.4389,43.75151],[7.4379,43.74963],[7.47823,43.73341],[7.53006,43.78405],[7.50423,43.84345],[7.49355,43.86551],[7.51162,43.88301],[7.56075,43.89932],[7.56858,43.94506],[7.60771,43.95772],[7.65266,43.9763],[7.66848,43.99943],[7.6597,44.03009],[7.72508,44.07578],[7.66878,44.12795],[7.68694,44.17487],[7.63245,44.17877],[7.62155,44.14881],[7.36364,44.11882],[7.34547,44.14359],[7.27827,44.1462],[7.16929,44.20352],[7.00764,44.23736],[6.98221,44.28289],[6.89171,44.36637],[6.88784,44.42043],[6.94504,44.43112],[6.86233,44.49834],[6.85507,44.53072],[6.96042,44.62129],[6.95133,44.66264],[7.00582,44.69364],[7.07484,44.68073],[7.00401,44.78782],[7.02217,44.82519],[6.93499,44.8664],[6.90774,44.84322],[6.75518,44.89915],[6.74519,44.93661],[6.74791,45.01939],[6.66981,45.02324],[6.62803,45.11175],[6.7697,45.16044],[6.85144,45.13226],[6.96706,45.20841],[7.07074,45.21228],[7.13115,45.25386],[7.10572,45.32924],[7.18019,45.40071],[7.00037,45.509],[6.98948,45.63869],[6.80785,45.71864],[6.80785,45.83265],[6.95315,45.85163],[7.04151,45.92435],[7.00946,45.9944],[6.93862,46.06502],[6.87868,46.03855],[6.89321,46.12548],[6.78968,46.14058],[6.86052,46.28512],[6.77152,46.34784],[6.8024,46.39171],[6.82312,46.42661],[6.53358,46.45431],[6.25432,46.3632],[6.21981,46.31304],[6.24826,46.30175],[6.25137,46.29014],[6.23775,46.27822],[6.24952,46.26255],[6.26749,46.24745],[6.29474,46.26221],[6.31041,46.24417],[6.29663,46.22688],[6.27694,46.21566],[6.26007,46.21165],[6.24821,46.20531],[6.23913,46.20511],[6.23544,46.20714],[6.22175,46.20045],[6.22222,46.19888],[6.21844,46.19837],[6.21603,46.19507],[6.21273,46.19409],[6.21114,46.1927],[6.20539,46.19163],[6.19807,46.18369],[6.19552,46.18401],[6.18707,46.17999],[6.18871,46.16644],[6.18116,46.16187],[6.15305,46.15194],[6.13397,46.1406],[6.09926,46.14373],[6.09199,46.15191],[6.07491,46.14879],[6.05203,46.15191],[6.04564,46.14031],[6.03614,46.13712],[6.01791,46.14228],[5.9871,46.14499],[5.97893,46.13303],[5.95781,46.12925],[5.9641,46.14412],[5.97508,46.15863],[5.98188,46.17392],[5.98846,46.17046],[5.99573,46.18587],[5.96515,46.19638],[5.97542,46.21525],[6.02461,46.23313],[6.03342,46.2383],[6.04602,46.23127],[6.05029,46.23518],[6.0633,46.24583],[6.07072,46.24085],[6.08563,46.24651],[6.10071,46.23772],[6.12446,46.25059],[6.11926,46.2634],[6.1013,46.28512],[6.11697,46.29547],[6.1198,46.31157],[6.13876,46.33844],[6.15738,46.3491],[6.16987,46.36759],[6.15985,46.37721],[6.15016,46.3778],[6.09926,46.40768],[6.06407,46.41676],[6.08427,46.44305],[6.07269,46.46244],[6.1567,46.54402],[6.11084,46.57649],[6.27135,46.68251],[6.38351,46.73171],[6.45209,46.77502],[6.43216,46.80336],[6.46456,46.88865],[6.43341,46.92703],[6.71531,47.0494],[6.68823,47.06616],[6.76788,47.1208],[6.8489,47.15933],[6.9508,47.24338],[6.95108,47.26428],[6.94316,47.28747],[7.05305,47.33304],[7.0564,47.35134],[7.03125,47.36996],[6.87959,47.35335],[6.88542,47.37262],[6.93744,47.40714],[6.93953,47.43388],[7.0024,47.45264],[6.98425,47.49432],[7.0231,47.50522],[7.07425,47.48863],[7.12781,47.50371],[7.16249,47.49025],[7.19583,47.49455],[7.17026,47.44312],[7.24669,47.4205],[7.33526,47.44186],[7.35603,47.43432],[7.40308,47.43638],[7.43088,47.45846],[7.4462,47.46264],[7.4583,47.47216],[7.42923,47.48628],[7.43356,47.49712],[7.47534,47.47932],[7.51076,47.49651],[7.49804,47.51798],[7.5229,47.51644],[7.53199,47.5284],[7.51904,47.53515],[7.50588,47.52856],[7.49691,47.53821],[7.50873,47.54546],[7.51723,47.54578],[7.52831,47.55347],[7.53634,47.55553],[7.55652,47.56779],[7.55689,47.57232],[7.56548,47.57617],[7.56684,47.57785],[7.58386,47.57536],[7.58945,47.59017],[7.59301,47.60058],[7.58851,47.60794],[7.57423,47.61628],[7.5591,47.63849],[7.53384,47.65115],[7.52067,47.66437],[7.51915,47.68335],[7.51266,47.70197],[7.53722,47.71635],[7.54761,47.72912],[7.52921,47.77747],[7.55673,47.87371],[7.62302,47.97898],[7.56966,48.03265],[7.57137,48.12292],[7.6648,48.22219],[7.69022,48.30018],[7.74562,48.32736],[7.73109,48.39192],[7.76833,48.48945],[7.80647,48.51239],[7.80167,48.54758],[7.80057,48.5857],[7.84098,48.64217],[7.89002,48.66317],[7.96812,48.72491],[7.96994,48.75606],[8.01534,48.76085],[8.0326,48.79017],[8.06802,48.78957],[8.10253,48.81829],[8.12813,48.87985],[8.19989,48.95825],[8.20031,48.95856],[8.22604,48.97352],[8.14189,48.97833],[7.97783,49.03161],[7.93641,49.05544],[7.86386,49.03499],[7.79557,49.06583],[7.75948,49.04562],[7.63618,49.05428],[7.62575,49.07654],[7.56416,49.08136],[7.53012,49.09818],[7.49172,49.13915],[7.49473,49.17],[7.44455,49.16765],[7.44052,49.18354],[7.3662,49.17308],[7.35995,49.14399],[7.3195,49.14231],[7.29514,49.11426],[7.23473,49.12971],[7.1593,49.1204],[7.1358,49.1282],[7.12504,49.14253],[7.10384,49.13787],[7.10715,49.15631],[7.07859,49.15031],[7.09007,49.13094],[7.07162,49.1255],[7.06642,49.11415],[7.05548,49.11185],[7.04843,49.11422],[7.04409,49.12123],[7.04662,49.13724],[7.03178,49.15734],[7.0274,49.17042],[7.03459,49.19096],[7.01318,49.19018],[6.97273,49.2099],[6.95963,49.203],[6.94028,49.21641],[6.93831,49.2223],[6.91875,49.22261],[6.89298,49.20863],[6.85939,49.22376],[6.83555,49.21249],[6.85119,49.20038],[6.85016,49.19354],[6.86225,49.18185],[6.84703,49.15734],[6.83385,49.15162],[6.78265,49.16793],[6.73765,49.16375],[6.71137,49.18808],[6.73256,49.20486],[6.71843,49.2208],[6.69274,49.21661],[6.66583,49.28065],[6.60186,49.31055],[6.572,49.35027],[6.58807,49.35358],[6.60091,49.36864],[6.533,49.40748],[6.55404,49.42464],[6.42432,49.47683],[6.40274,49.46546],[6.39168,49.4667],[6.38352,49.46463],[6.36778,49.46937],[6.3687,49.4593],[6.28818,49.48465],[6.27875,49.503],[6.25029,49.50609],[6.2409,49.51408],[6.19543,49.50536],[6.17386,49.50934],[6.15366,49.50226],[6.16115,49.49297],[6.14321,49.48796],[6.12814,49.49365],[6.12346,49.4735],[6.10325,49.4707],[6.09845,49.46351],[6.10072,49.45268],[6.08373,49.45594],[6.07887,49.46399],[6.05553,49.46663],[6.04176,49.44801],[6.02743,49.44845],[6.02648,49.45451],[5.97693,49.45513],[5.96876,49.49053],[5.94224,49.49608],[5.94128,49.50034],[5.86571,49.50015],[5.83389,49.52152],[5.83467,49.52717],[5.84466,49.53027],[5.83648,49.5425],[5.81664,49.53775],[5.80871,49.5425],[5.81838,49.54777],[5.79195,49.55228],[5.77435,49.56298],[5.7577,49.55915],[5.75649,49.54321],[5.64505,49.55146],[5.60909,49.51228],[5.55001,49.52729],[5.46541,49.49825],[5.46734,49.52648],[5.43713,49.5707],[5.3974,49.61596],[5.34837,49.62889],[5.33851,49.61599],[5.3137,49.61225],[5.30214,49.63055],[5.33039,49.6555],[5.31465,49.66846],[5.26232,49.69456],[5.14545,49.70287],[5.09249,49.76193],[4.96714,49.79872],[4.85464,49.78995],[4.86965,49.82271],[4.85134,49.86457],[4.88529,49.9236],[4.78827,49.95609],[4.8382,50.06738],[4.88602,50.15182],[4.83279,50.15331],[4.82438,50.16878],[4.75237,50.11314],[4.70064,50.09384],[4.68695,49.99685],[4.5414,49.96911],[4.51098,49.94659],[4.43488,49.94122],[4.35051,49.95315],[4.31963,49.97043],[4.20532,49.95803],[4.14239,49.98034],[4.13508,50.01976],[4.16294,50.04719],[4.23101,50.06945],[4.20147,50.13535],[4.13561,50.13078],[4.16014,50.19239],[4.15524,50.21103],[4.21945,50.25539],[4.20651,50.27333],[4.17861,50.27443],[4.17347,50.28838],[4.15524,50.2833],[4.16808,50.25786],[4.13665,50.25609],[4.11954,50.30425],[4.10957,50.30234],[4.10237,50.31247],[4.0689,50.3254],[4.0268,50.35793],[3.96771,50.34989],[3.90781,50.32814],[3.84314,50.35219],[3.73911,50.34809],[3.70987,50.3191],[3.71009,50.30305],[3.66976,50.34563],[3.65709,50.36873],[3.67262,50.38663],[3.67494,50.40239],[3.66153,50.45165],[3.64426,50.46275],[3.61014,50.49568],[3.58361,50.49049],[3.5683,50.50192],[3.49509,50.48885],[3.51564,50.5256],[3.47385,50.53397],[3.44629,50.51009],[3.37693,50.49538],[3.28575,50.52724],[3.2729,50.60718],[3.23951,50.6585],[3.264,50.67668],[3.2536,50.68977],[3.26141,50.69151],[3.26063,50.70086],[3.24593,50.71389],[3.22042,50.71019],[3.20845,50.71662],[3.19017,50.72569],[3.20064,50.73547],[3.18811,50.74025],[3.18339,50.74981],[3.16476,50.76843],[3.15017,50.79031],[3.1257,50.78603],[3.11987,50.79188],[3.11206,50.79416],[3.10614,50.78303],[3.09163,50.77717],[3.04314,50.77674],[3.00537,50.76588],[2.96778,50.75242],[2.95019,50.75138],[2.90873,50.702],[2.91036,50.6939],[2.90069,50.69263],[2.88504,50.70656],[2.87937,50.70298],[2.86985,50.7033],[2.8483,50.72276],[2.81056,50.71773],[2.71165,50.81295],[2.63331,50.81457],[2.59093,50.91751],[2.63074,50.94746],[2.57551,51.00326],[2.55904,51.07014]],[[1.99838,42.44682],[1.98378,42.44697],[1.96125,42.45364],[1.95606,42.45785],[1.96215,42.47854],[1.97003,42.48081],[1.97227,42.48487],[1.97697,42.48568],[1.98022,42.49569],[1.98916,42.49351],[1.99766,42.4858],[1.98579,42.47486],[1.99216,42.46208],[2.01564,42.45171],[1.99838,42.44682]]]]}},{type:"Feature",properties:{iso1A2:"GA",iso1A3:"GAB",iso1N3:"266",wikidata:"Q1000",nameEn:"Gabon",groups:["017","202","002","UN"],callingCodes:["241"]},geometry:{type:"MultiPolygon",coordinates:[[[[13.29457,2.16106],[13.28534,2.25716],[11.37116,2.29975],[11.3561,2.17217],[11.35307,1.00251],[9.79648,1.0019],[9.75065,1.06753],[9.66433,1.06723],[7.24416,-.64092],[10.75913,-4.39519],[11.12647,-3.94169],[11.22301,-3.69888],[11.48764,-3.51089],[11.57949,-3.52798],[11.68608,-3.68942],[11.87083,-3.71571],[11.92719,-3.62768],[11.8318,-3.5812],[11.96554,-3.30267],[11.70227,-3.17465],[11.70558,-3.0773],[11.80365,-3.00424],[11.64798,-2.81146],[11.5359,-2.85654],[11.64487,-2.61865],[11.57637,-2.33379],[11.74605,-2.39936],[11.96866,-2.33559],[12.04895,-2.41704],[12.47925,-2.32626],[12.44656,-1.92025],[12.61312,-1.8129],[12.82172,-1.91091],[13.02759,-2.33098],[13.47977,-2.43224],[13.75884,-2.09293],[13.92073,-2.35581],[13.85846,-2.46935],[14.10442,-2.49268],[14.23829,-2.33715],[14.16202,-2.23916],[14.23518,-2.15671],[14.25932,-1.97624],[14.41838,-1.89412],[14.52569,-.57818],[14.41887,-.44799],[14.2165,-.38261],[14.06862,-.20826],[13.90632,-.2287],[13.88648,.26652],[14.10909,.58563],[14.26066,.57255],[14.48179,.9152],[14.25186,1.39842],[13.89582,1.4261],[13.15519,1.23368],[13.25447,1.32339],[13.13461,1.57238],[13.29457,2.16106]]]]}},{type:"Feature",properties:{iso1A2:"GB",iso1A3:"GBR",iso1N3:"826",wikidata:"Q145",ccTLD:".uk",nameEn:"United Kingdom",aliases:["UK"]},geometry:null},{type:"Feature",properties:{iso1A2:"GD",iso1A3:"GRD",iso1N3:"308",wikidata:"Q769",nameEn:"Grenada",aliases:["WG"],groups:["029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 473"]},geometry:{type:"MultiPolygon",coordinates:[[[[-62.64026,12.69984],[-61.77886,11.36496],[-59.94058,12.34011],[-62.64026,12.69984]]]]}},{type:"Feature",properties:{iso1A2:"GE",iso1A3:"GEO",iso1N3:"268",wikidata:"Q230",nameEn:"Georgia",groups:["145","142","UN"],callingCodes:["995"]},geometry:{type:"MultiPolygon",coordinates:[[[[46.42738,41.91323],[45.61676,42.20768],[45.78692,42.48358],[45.36501,42.55268],[45.15318,42.70598],[44.88754,42.74934],[44.80941,42.61277],[44.70002,42.74679],[44.54202,42.75699],[43.95517,42.55396],[43.73119,42.62043],[43.81453,42.74297],[43.0419,43.02413],[43.03322,43.08883],[42.75889,43.19651],[42.66667,43.13917],[42.40563,43.23226],[41.64935,43.22331],[40.65957,43.56212],[40.10657,43.57344],[40.04445,43.47776],[40.03312,43.44262],[40.01007,43.42411],[40.01552,43.42025],[40.00853,43.40578],[40.0078,43.38551],[39.81147,43.06294],[40.89217,41.72528],[41.54366,41.52185],[41.7148,41.4932],[41.7124,41.47417],[41.81939,41.43621],[41.95134,41.52466],[42.26387,41.49346],[42.51772,41.43606],[42.59202,41.58183],[42.72794,41.59714],[42.84471,41.58912],[42.78995,41.50126],[42.84899,41.47265],[42.8785,41.50516],[43.02956,41.37891],[43.21707,41.30331],[43.13373,41.25503],[43.1945,41.25242],[43.23096,41.17536],[43.36118,41.2028],[43.44973,41.17666],[43.4717,41.12611],[43.67712,41.13398],[43.74717,41.1117],[43.84835,41.16329],[44.16591,41.19141],[44.18148,41.24644],[44.32139,41.2079],[44.34337,41.20312],[44.34417,41.2382],[44.46791,41.18204],[44.59322,41.1933],[44.61462,41.24018],[44.72814,41.20338],[44.82084,41.21513],[44.87887,41.20195],[44.89911,41.21366],[44.84358,41.23088],[44.81749,41.23488],[44.80053,41.25949],[44.81437,41.30371],[44.93493,41.25685],[45.0133,41.29747],[45.09867,41.34065],[45.1797,41.42231],[45.26285,41.46433],[45.31352,41.47168],[45.4006,41.42402],[45.45973,41.45898],[45.68389,41.3539],[45.71035,41.36208],[45.75705,41.35157],[45.69946,41.29545],[45.80842,41.2229],[45.95786,41.17956],[46.13221,41.19479],[46.27698,41.19011],[46.37661,41.10805],[46.456,41.09984],[46.48558,41.0576],[46.55096,41.1104],[46.63969,41.09515],[46.66148,41.20533],[46.72375,41.28609],[46.63658,41.37727],[46.4669,41.43331],[46.40307,41.48464],[46.33925,41.4963],[46.29794,41.5724],[46.34126,41.57454],[46.34039,41.5947],[46.3253,41.60912],[46.28182,41.60089],[46.26531,41.63339],[46.24429,41.59883],[46.19759,41.62327],[46.17891,41.72094],[46.20538,41.77205],[46.23962,41.75811],[46.30863,41.79133],[46.3984,41.84399],[46.42738,41.91323]]]]}},{type:"Feature",properties:{iso1A2:"GF",iso1A3:"GUF",iso1N3:"254",wikidata:"Q3769",nameEn:"French Guiana",country:"FR",groups:["Q3320166","EU","005","419","019","UN"],callingCodes:["594"]},geometry:{type:"MultiPolygon",coordinates:[[[[-51.35485,4.8383],[-53.7094,6.2264],[-54.01074,5.68785],[-54.01877,5.52789],[-54.26916,5.26909],[-54.4717,4.91964],[-54.38444,4.13222],[-54.19367,3.84387],[-54.05128,3.63557],[-53.98914,3.627],[-53.9849,3.58697],[-54.28534,2.67798],[-54.42864,2.42442],[-54.6084,2.32856],[-54.16286,2.10779],[-53.78743,2.34412],[-52.96539,2.1881],[-52.6906,2.37298],[-52.31787,3.17896],[-51.85573,3.83427],[-51.82312,3.85825],[-51.79599,3.89336],[-51.61983,4.14596],[-51.63798,4.51394],[-51.35485,4.8383]]]]}},{type:"Feature",properties:{iso1A2:"GG",iso1A3:"GGY",iso1N3:"831",wikidata:"Q25230",nameEn:"Bailiwick of Guernsey",country:"GB"},geometry:null},{type:"Feature",properties:{iso1A2:"GH",iso1A3:"GHA",iso1N3:"288",wikidata:"Q117",nameEn:"Ghana",groups:["011","202","002","UN"],callingCodes:["233"]},geometry:{type:"MultiPolygon",coordinates:[[[[-.13493,11.14075],[-.27374,11.17157],[-.28566,11.12713],[-.35955,11.07801],[-.38219,11.12596],[-.42391,11.11661],[-.44298,11.04292],[-.61937,10.91305],[-.67143,10.99811],[-2.83373,11.0067],[-2.94232,10.64281],[-2.83108,10.40252],[-2.74174,9.83172],[-2.76534,9.56589],[-2.68802,9.49343],[-2.69814,9.22717],[-2.77799,9.04949],[-2.66357,9.01771],[-2.58243,8.7789],[-2.49037,8.20872],[-2.62901,8.11495],[-2.61232,8.02645],[-2.67787,8.02055],[-2.74819,7.92613],[-2.78395,7.94974],[-2.79467,7.86002],[-2.92339,7.60847],[-2.97822,7.27165],[-2.95438,7.23737],[-3.23327,6.81744],[-3.21954,6.74407],[-3.25999,6.62521],[-3.01896,5.71697],[-2.95323,5.71865],[-2.96671,5.6415],[-2.93132,5.62137],[-2.85378,5.65156],[-2.76614,5.60963],[-2.72737,5.34789],[-2.77625,5.34621],[-2.73074,5.1364],[-2.75502,5.10657],[-2.95261,5.12477],[-2.96554,5.10397],[-3.063,5.13665],[-3.11073,5.12675],[-3.10675,5.08515],[-3.34019,4.17519],[1.07031,5.15655],[1.27574,5.93551],[1.19771,6.11522],[1.19966,6.17069],[1.09187,6.17074],[1.05969,6.22998],[1.03108,6.24064],[.99652,6.33779],[.89283,6.33779],[.71048,6.53083],[.74862,6.56517],[.63659,6.63857],[.6497,6.73682],[.58176,6.76049],[.57406,6.80348],[.52853,6.82921],[.56508,6.92971],[.52098,6.94391],[.52217,6.9723],[.59606,7.01252],[.65327,7.31643],[.62943,7.41099],[.57223,7.39326],[.52455,7.45354],[.51979,7.58706],[.58295,7.62368],[.62943,7.85751],[.58891,8.12779],[.6056,8.13959],[.61156,8.18324],[.5913,8.19622],[.63897,8.25873],[.73432,8.29529],[.64731,8.48866],[.47211,8.59945],[.37319,8.75262],[.52455,8.87746],[.45424,9.04581],[.56388,9.40697],[.49118,9.48339],[.36485,9.49749],[.33148,9.44812],[.25758,9.42696],[.2254,9.47869],[.31241,9.50337],[.30406,9.521],[.2409,9.52335],[.23851,9.57389],[.38153,9.58682],[.36008,9.6256],[.29334,9.59387],[.26712,9.66437],[.28261,9.69022],[.32313,9.6491],[.34816,9.66907],[.34816,9.71607],[.32075,9.72781],[.36366,10.03309],[.41252,10.02018],[.41371,10.06361],[.35293,10.09412],[.39584,10.31112],[.33028,10.30408],[.29453,10.41546],[.18846,10.4096],[.12886,10.53149],[-.05945,10.63458],[-.09141,10.7147],[-.07327,10.71845],[-.07183,10.76794],[-.0228,10.81916],[-.02685,10.8783],[-.00908,10.91644],[-.0063,10.96417],[.03355,10.9807],[.02395,11.06229],[.00342,11.08317],[-.00514,11.10763],[-.0275,11.11202],[-.05733,11.08628],[-.14462,11.10811],[-.13493,11.14075]]]]}},{type:"Feature",properties:{iso1A2:"GI",iso1A3:"GIB",iso1N3:"292",wikidata:"Q1410",nameEn:"Gibraltar",country:"GB",groups:["Q12837","BOTS","039","150","UN"],callingCodes:["350"]},geometry:{type:"MultiPolygon",coordinates:[[[[-5.34064,36.03744],[-5.27801,36.14942],[-5.33822,36.15272],[-5.34536,36.15501],[-5.40526,36.15488],[-5.34064,36.03744]]]]}},{type:"Feature",properties:{iso1A2:"GL",iso1A3:"GRL",iso1N3:"304",wikidata:"Q223",nameEn:"Greenland",country:"DK",groups:["Q1451600","021","003","019","UN"],callingCodes:["299"]},geometry:{type:"MultiPolygon",coordinates:[[[[-49.33696,84.57952],[-68.21821,80.48551],[-77.52957,77.23408],[-46.37635,57.3249],[-9.68082,72.73731],[-5.7106,84.28058],[-49.33696,84.57952]]]]}},{type:"Feature",properties:{iso1A2:"GM",iso1A3:"GMB",iso1N3:"270",wikidata:"Q1005",nameEn:"The Gambia",groups:["011","202","002","UN"],callingCodes:["220"]},geometry:{type:"MultiPolygon",coordinates:[[[[-15.14917,13.57989],[-14.36795,13.23033],[-13.79409,13.34472],[-13.8955,13.59126],[-14.34721,13.46578],[-14.93719,13.80173],[-15.36504,13.79313],[-15.47902,13.58758],[-17.43598,13.59273],[-17.43966,13.04579],[-16.74676,13.06025],[-16.69343,13.16791],[-15.80355,13.16729],[-15.80478,13.34832],[-15.26908,13.37768],[-15.14917,13.57989]]]]}},{type:"Feature",properties:{iso1A2:"GN",iso1A3:"GIN",iso1N3:"324",wikidata:"Q1006",nameEn:"Guinea",groups:["011","202","002","UN"],callingCodes:["224"]},geometry:{type:"MultiPolygon",coordinates:[[[[-11.37536,12.40788],[-11.46267,12.44559],[-11.91331,12.42008],[-12.35415,12.32758],[-12.87336,12.51892],[-13.06603,12.49342],[-13.05296,12.64003],[-13.70523,12.68013],[-13.7039,12.60313],[-13.65089,12.49515],[-13.64168,12.42764],[-13.70851,12.24978],[-13.92745,12.24077],[-13.94589,12.16869],[-13.7039,12.00869],[-13.7039,11.70195],[-14.09799,11.63649],[-14.26623,11.67486],[-14.31513,11.60713],[-14.51173,11.49708],[-14.66677,11.51188],[-14.77786,11.36323],[-14.95993,10.99244],[-15.07174,10.89557],[-15.96748,10.162],[-14.36218,8.64107],[-13.29911,9.04245],[-13.18586,9.0925],[-13.08953,9.0409],[-12.94095,9.26335],[-12.76788,9.3133],[-12.47254,9.86834],[-12.24262,9.92386],[-12.12634,9.87203],[-11.91023,9.93927],[-11.89624,9.99763],[-11.2118,10.00098],[-10.6534,9.29919],[-10.74484,9.07998],[-10.5783,9.06386],[-10.56197,8.81225],[-10.47707,8.67669],[-10.61422,8.5314],[-10.70565,8.29235],[-10.63934,8.35326],[-10.54891,8.31174],[-10.37257,8.48941],[-10.27575,8.48711],[-10.203,8.47991],[-10.14579,8.52665],[-10.05375,8.50697],[-10.05873,8.42578],[-9.77763,8.54633],[-9.47415,8.35195],[-9.50898,8.18455],[-9.41445,8.02448],[-9.44928,7.9284],[-9.35724,7.74111],[-9.37465,7.62032],[-9.48161,7.37122],[-9.41943,7.41809],[-9.305,7.42056],[-9.20798,7.38109],[-9.18311,7.30461],[-9.09107,7.1985],[-8.93435,7.2824],[-8.85724,7.26019],[-8.8448,7.35149],[-8.72789,7.51429],[-8.67814,7.69428],[-8.55874,7.70167],[-8.55874,7.62525],[-8.47114,7.55676],[-8.4003,7.6285],[-8.21374,7.54466],[-8.09931,7.78626],[-8.13414,7.87991],[-8.06449,8.04989],[-7.94695,8.00925],[-7.99919,8.11023],[-7.98675,8.20134],[-8.062,8.16071],[-8.2411,8.24196],[-8.22991,8.48438],[-7.92518,8.50652],[-7.65653,8.36873],[-7.69882,8.66148],[-7.95503,8.81146],[-7.92518,8.99332],[-7.73862,9.08422],[-7.90777,9.20456],[-7.85056,9.41812],[-8.03463,9.39604],[-8.14657,9.55062],[-8.09434,9.86936],[-8.15652,9.94288],[-8.11921,10.04577],[-8.01225,10.1021],[-7.97971,10.17117],[-7.9578,10.2703],[-8.10207,10.44649],[-8.22711,10.41722],[-8.32614,10.69273],[-8.2667,10.91762],[-8.35083,11.06234],[-8.66923,10.99397],[-8.40058,11.37466],[-8.80854,11.66715],[-8.94784,12.34842],[-9.13689,12.50875],[-9.38067,12.48446],[-9.32097,12.29009],[-9.63938,12.18312],[-9.714,12.0226],[-10.30604,12.24634],[-10.71897,11.91552],[-10.80355,12.1053],[-10.99758,12.24634],[-11.24136,12.01286],[-11.50006,12.17826],[-11.37536,12.40788]]]]}},{type:"Feature",properties:{iso1A2:"GP",iso1A3:"GLP",iso1N3:"312",wikidata:"Q17012",nameEn:"Guadeloupe",country:"FR",groups:["Q3320166","EU","029","003","419","019","UN"],callingCodes:["590"]},geometry:{type:"MultiPolygon",coordinates:[[[[-60.03183,16.1129],[-61.60296,16.73066],[-63.00549,15.26166],[-60.03183,16.1129]]]]}},{type:"Feature",properties:{iso1A2:"GQ",iso1A3:"GNQ",iso1N3:"226",wikidata:"Q983",nameEn:"Equatorial Guinea",groups:["017","202","002","UN"],callingCodes:["240"]},geometry:{type:"MultiPolygon",coordinates:[[[[9.22018,3.72052],[8.34397,4.30689],[7.71762,.6674],[3.35016,-3.29031],[9.66433,1.06723],[9.75065,1.06753],[9.79648,1.0019],[11.35307,1.00251],[11.3561,2.17217],[9.991,2.16561],[9.90749,2.20049],[9.89012,2.20457],[9.84716,2.24676],[9.83238,2.29079],[9.83754,2.32428],[9.82123,2.35097],[9.81162,2.33797],[9.22018,3.72052]]]]}},{type:"Feature",properties:{iso1A2:"GR",iso1A3:"GRC",iso1N3:"300",wikidata:"Q41",nameEn:"Greece",aliases:["EL"],groups:["EU","039","150","UN"],callingCodes:["30"]},geometry:{type:"MultiPolygon",coordinates:[[[[26.03489,40.73051],[26.0754,40.72772],[26.08638,40.73214],[26.12495,40.74283],[26.12854,40.77339],[26.15685,40.80709],[26.21351,40.83298],[26.20856,40.86048],[26.26169,40.9168],[26.29441,40.89119],[26.28623,40.93005],[26.32259,40.94042],[26.35894,40.94292],[26.33297,40.98388],[26.3606,41.02027],[26.31928,41.07386],[26.32259,41.24929],[26.39861,41.25053],[26.5209,41.33993],[26.5837,41.32131],[26.62997,41.34613],[26.61767,41.42281],[26.59742,41.48058],[26.59196,41.60491],[26.5209,41.62592],[26.47958,41.67037],[26.35957,41.71149],[26.30255,41.70925],[26.2654,41.71544],[26.22888,41.74139],[26.21325,41.73223],[26.16841,41.74858],[26.06148,41.70345],[26.07083,41.64584],[26.15146,41.60828],[26.14328,41.55496],[26.17951,41.55409],[26.176,41.50072],[26.14796,41.47533],[26.20288,41.43943],[26.16548,41.42278],[26.12926,41.35878],[25.87919,41.30526],[25.8266,41.34563],[25.70507,41.29209],[25.66183,41.31316],[25.61042,41.30614],[25.55082,41.31667],[25.52394,41.2798],[25.48187,41.28506],[25.28322,41.23411],[25.11611,41.34212],[24.942,41.38685],[24.90928,41.40876],[24.86136,41.39298],[24.82514,41.4035],[24.8041,41.34913],[24.71529,41.41928],[24.61129,41.42278],[24.52599,41.56808],[24.30513,41.51297],[24.27124,41.57682],[24.18126,41.51735],[24.10063,41.54796],[24.06323,41.53222],[24.06908,41.46132],[23.96975,41.44118],[23.91483,41.47971],[23.89613,41.45257],[23.80148,41.43943],[23.76525,41.40175],[23.67644,41.41139],[23.63203,41.37632],[23.52453,41.40262],[23.40416,41.39999],[23.33639,41.36317],[23.31301,41.40525],[23.22771,41.37106],[23.21953,41.33773],[23.1833,41.31755],[22.93334,41.34104],[22.81199,41.3398],[22.76408,41.32225],[22.74538,41.16321],[22.71266,41.13945],[22.65306,41.18168],[22.62852,41.14385],[22.58295,41.11568],[22.5549,41.13065],[22.42285,41.11921],[22.26744,41.16409],[22.17629,41.15969],[22.1424,41.12449],[22.06527,41.15617],[21.90869,41.09191],[21.91102,41.04786],[21.7556,40.92525],[21.69601,40.9429],[21.57448,40.86076],[21.53007,40.90759],[21.41555,40.9173],[21.35595,40.87578],[21.25779,40.86165],[21.21105,40.8855],[21.15262,40.85546],[20.97887,40.85475],[20.98396,40.79109],[20.95752,40.76982],[20.98134,40.76046],[21.05833,40.66586],[21.03932,40.56299],[20.96908,40.51526],[20.94925,40.46625],[20.83688,40.47882],[20.7906,40.42726],[20.78234,40.35803],[20.71789,40.27739],[20.67162,40.09433],[20.62566,40.0897],[20.61081,40.07866],[20.55593,40.06524],[20.51297,40.08168],[20.48487,40.06271],[20.42373,40.06777],[20.37911,39.99058],[20.31135,39.99438],[20.41546,39.82832],[20.41475,39.81437],[20.38572,39.78516],[20.30804,39.81563],[20.29152,39.80421],[20.31961,39.72799],[20.27412,39.69884],[20.22707,39.67459],[20.22376,39.64532],[20.15988,39.652],[20.12956,39.65805],[20.05189,39.69112],[20.00957,39.69227],[19.98042,39.6504],[19.92466,39.69533],[19.97622,39.78684],[19.95905,39.82857],[19.0384,40.35325],[19.20409,39.7532],[22.5213,33.45682],[29.73302,35.92555],[29.69611,36.10365],[29.61805,36.14179],[29.61002,36.1731],[29.48192,36.18377],[29.30783,36.01033],[28.23708,36.56812],[27.95037,36.46155],[27.89482,36.69898],[27.46117,36.53789],[27.24613,36.71622],[27.45627,36.9008],[27.20312,36.94571],[27.14757,37.32],[26.95583,37.64989],[26.99377,37.69034],[27.16428,37.72343],[27.05537,37.9131],[26.21136,38.17558],[26.24183,38.44695],[26.32173,38.48731],[26.21136,38.65436],[26.61814,38.81372],[26.70773,39.0312],[26.43357,39.43096],[25.94257,39.39358],[25.61285,40.17161],[26.04292,40.3958],[25.94795,40.72797],[26.03489,40.73051]]]]}},{type:"Feature",properties:{iso1A2:"GS",iso1A3:"SGS",iso1N3:"239",wikidata:"Q35086",nameEn:"South Georgia and South Sandwich Islands",country:"GB",groups:["BOTS","005","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["500"]},geometry:{type:"MultiPolygon",coordinates:[[[[-35.26394,-43.68272],[-53.39656,-59.87088],[-22.31757,-59.85974],[-35.26394,-43.68272]]]]}},{type:"Feature",properties:{iso1A2:"GT",iso1A3:"GTM",iso1N3:"320",wikidata:"Q774",nameEn:"Guatemala",groups:["013","003","419","019","UN"],callingCodes:["502"]},geometry:{type:"MultiPolygon",coordinates:[[[[-89.14985,17.81563],[-90.98678,17.81655],[-90.99199,17.25192],[-91.43809,17.25373],[-91.04436,16.92175],[-90.69064,16.70697],[-90.61212,16.49832],[-90.40499,16.40524],[-90.44567,16.07573],[-91.73182,16.07371],[-92.20983,15.26077],[-92.0621,15.07406],[-92.1454,14.98143],[-92.1423,14.88647],[-92.18161,14.84147],[-92.1454,14.6804],[-92.2261,14.53423],[-92.37213,14.39277],[-90.55276,12.8866],[-90.11344,13.73679],[-90.10505,13.85104],[-89.88937,14.0396],[-89.81807,14.07073],[-89.76103,14.02923],[-89.73251,14.04133],[-89.75569,14.07073],[-89.70756,14.1537],[-89.61844,14.21937],[-89.52397,14.22628],[-89.50614,14.26084],[-89.58814,14.33165],[-89.57441,14.41637],[-89.39028,14.44561],[-89.34776,14.43013],[-89.35189,14.47553],[-89.23719,14.58046],[-89.15653,14.57802],[-89.13132,14.71582],[-89.23467,14.85596],[-89.15149,14.97775],[-89.18048,14.99967],[-89.15149,15.07392],[-88.97343,15.14039],[-88.32467,15.63665],[-88.31459,15.66942],[-88.24022,15.69247],[-88.22552,15.72294],[-88.20359,16.03858],[-88.40779,16.09624],[-88.95358,15.88698],[-89.02415,15.9063],[-89.17418,15.90898],[-89.22683,15.88619],[-89.15025,17.04813],[-89.14985,17.81563]]]]}},{type:"Feature",properties:{iso1A2:"GU",iso1A3:"GUM",iso1N3:"316",wikidata:"Q16635",nameEn:"Guam",aliases:["US-GU"],country:"US",groups:["Q1352230","Q153732","057","009","UN"],roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1 671"]},geometry:{type:"MultiPolygon",coordinates:[[[[146.25931,13.85876],[143.82485,13.92273],[144.61642,12.82462],[146.25931,13.85876]]]]}},{type:"Feature",properties:{iso1A2:"GW",iso1A3:"GNB",iso1N3:"624",wikidata:"Q1007",nameEn:"Guinea-Bissau",groups:["011","202","002","UN"],callingCodes:["245"]},geometry:{type:"MultiPolygon",coordinates:[[[[-14.31513,11.60713],[-14.26623,11.67486],[-14.09799,11.63649],[-13.7039,11.70195],[-13.7039,12.00869],[-13.94589,12.16869],[-13.92745,12.24077],[-13.70851,12.24978],[-13.64168,12.42764],[-13.65089,12.49515],[-13.7039,12.60313],[-13.70523,12.68013],[-15.17582,12.6847],[-15.67302,12.42974],[-16.20591,12.46157],[-16.38191,12.36449],[-16.70562,12.34803],[-17.4623,11.92379],[-15.96748,10.162],[-15.07174,10.89557],[-14.95993,10.99244],[-14.77786,11.36323],[-14.66677,11.51188],[-14.51173,11.49708],[-14.31513,11.60713]]]]}},{type:"Feature",properties:{iso1A2:"GY",iso1A3:"GUY",iso1N3:"328",wikidata:"Q734",nameEn:"Guyana",groups:["005","419","019","UN"],driveSide:"left",callingCodes:["592"]},geometry:{type:"MultiPolygon",coordinates:[[[[-56.84822,6.73257],[-59.54058,8.6862],[-59.98508,8.53046],[-59.85562,8.35213],[-59.80661,8.28906],[-59.83156,8.23261],[-59.97059,8.20791],[-60.02407,8.04557],[-60.38056,7.8302],[-60.51959,7.83373],[-60.64793,7.56877],[-60.71923,7.55817],[-60.59802,7.33194],[-60.63367,7.25061],[-60.54098,7.14804],[-60.44116,7.20817],[-60.28074,7.1162],[-60.39419,6.94847],[-60.54873,6.8631],[-61.13632,6.70922],[-61.20762,6.58174],[-61.15058,6.19558],[-61.4041,5.95304],[-60.73204,5.20931],[-60.32352,5.21299],[-60.20944,5.28754],[-59.98129,5.07097],[-60.04189,4.69801],[-60.15953,4.53456],[-59.78878,4.45637],[-59.69361,4.34069],[-59.73353,4.20399],[-59.51963,3.91951],[-59.86899,3.57089],[-59.79769,3.37162],[-59.99733,2.92312],[-59.91177,2.36759],[-59.7264,2.27497],[-59.74066,1.87596],[-59.25583,1.40559],[-58.92072,1.31293],[-58.84229,1.17749],[-58.53571,1.29154],[-58.4858,1.48399],[-58.33887,1.58014],[-58.01873,1.51966],[-57.97336,1.64566],[-57.77281,1.73344],[-57.55743,1.69605],[-57.35073,1.98327],[-57.23981,1.95808],[-57.09109,2.01854],[-57.07092,1.95304],[-56.7659,1.89509],[-56.47045,1.95135],[-56.55439,2.02003],[-56.70519,2.02964],[-57.35891,3.32121],[-58.0307,3.95513],[-57.8699,4.89394],[-57.37442,5.0208],[-57.22536,5.15605],[-57.31629,5.33714],[-56.84822,6.73257]]]]}},{type:"Feature",properties:{iso1A2:"HK",iso1A3:"HKG",iso1N3:"344",wikidata:"Q8646",nameEn:"Hong Kong",country:"CN",groups:["030","142","UN"],driveSide:"left",callingCodes:["852"]},geometry:{type:"MultiPolygon",coordinates:[[[[113.92195,22.13873],[114.50148,22.15017],[114.44998,22.55977],[114.25154,22.55977],[114.22888,22.5436],[114.22185,22.55343],[114.20655,22.55706],[114.18338,22.55444],[114.17247,22.55944],[114.1597,22.56041],[114.15123,22.55163],[114.1482,22.54091],[114.13823,22.54319],[114.12665,22.54003],[114.11656,22.53415],[114.11181,22.52878],[114.1034,22.5352],[114.09692,22.53435],[114.09048,22.53716],[114.08606,22.53276],[114.07817,22.52997],[114.07267,22.51855],[114.06272,22.51617],[114.05729,22.51104],[114.05438,22.5026],[114.03113,22.5065],[113.86771,22.42972],[113.81621,22.2163],[113.83338,22.1826],[113.92195,22.13873]]]]}},{type:"Feature",properties:{iso1A2:"HM",iso1A3:"HMD",iso1N3:"334",wikidata:"Q131198",nameEn:"Heard Island and McDonald Islands",country:"AU",groups:["053","009","UN"],driveSide:"left"},geometry:{type:"MultiPolygon",coordinates:[[[[71.08716,-53.87687],[75.44182,-53.99822],[72.87012,-51.48322],[71.08716,-53.87687]]]]}},{type:"Feature",properties:{iso1A2:"HN",iso1A3:"HND",iso1N3:"340",wikidata:"Q783",nameEn:"Honduras",groups:["013","003","419","019","UN"],callingCodes:["504"]},geometry:{type:"MultiPolygon",coordinates:[[[[-83.86109,17.73736],[-88.20359,16.03858],[-88.22552,15.72294],[-88.24022,15.69247],[-88.31459,15.66942],[-88.32467,15.63665],[-88.97343,15.14039],[-89.15149,15.07392],[-89.18048,14.99967],[-89.15149,14.97775],[-89.23467,14.85596],[-89.13132,14.71582],[-89.15653,14.57802],[-89.23719,14.58046],[-89.35189,14.47553],[-89.34776,14.43013],[-89.04187,14.33644],[-88.94608,14.20207],[-88.85785,14.17763],[-88.815,14.11652],[-88.73182,14.10919],[-88.70661,14.04317],[-88.49738,13.97224],[-88.48982,13.86458],[-88.25791,13.91108],[-88.23018,13.99915],[-88.07641,13.98447],[-88.00331,13.86948],[-87.7966,13.91353],[-87.68821,13.80829],[-87.73106,13.75443],[-87.78148,13.52906],[-87.71657,13.50577],[-87.72115,13.46083],[-87.73841,13.44169],[-87.77354,13.45767],[-87.83467,13.44655],[-87.84675,13.41078],[-87.80177,13.35689],[-87.73714,13.32715],[-87.69751,13.25228],[-87.55124,13.12523],[-87.37107,12.98646],[-87.06306,13.00892],[-87.03785,12.98682],[-86.93197,13.05313],[-86.93383,13.18677],[-86.87066,13.30641],[-86.71267,13.30348],[-86.76812,13.79605],[-86.35219,13.77157],[-86.14801,14.04317],[-86.00685,14.08474],[-86.03458,13.99181],[-85.75477,13.8499],[-85.73964,13.9698],[-85.45762,14.11304],[-85.32149,14.2562],[-85.18602,14.24929],[-85.1575,14.53934],[-84.90082,14.80489],[-84.82596,14.82212],[-84.70119,14.68078],[-84.48373,14.63249],[-84.10584,14.76353],[-83.89551,14.76697],[-83.62101,14.89448],[-83.49268,15.01158],[-83.13724,15.00002],[-83.04763,15.03256],[-82.06974,14.49418],[-81.58685,18.0025],[-83.86109,17.73736]]]]}},{type:"Feature",properties:{iso1A2:"HR",iso1A3:"HRV",iso1N3:"191",wikidata:"Q224",nameEn:"Croatia",groups:["EU","039","150","UN"],callingCodes:["385"]},geometry:{type:"MultiPolygon",coordinates:[[[[17.6444,42.88641],[17.5392,42.92787],[17.70879,42.97223],[17.64268,43.08595],[17.46986,43.16559],[17.286,43.33065],[17.25579,43.40353],[17.29699,43.44542],[17.24411,43.49376],[17.15828,43.49376],[17.00585,43.58037],[16.80736,43.76011],[16.75316,43.77157],[16.70922,43.84887],[16.55472,43.95326],[16.50528,44.0244],[16.43629,44.02826],[16.43662,44.07523],[16.36864,44.08263],[16.18688,44.27012],[16.21346,44.35231],[16.12969,44.38275],[16.16814,44.40679],[16.10566,44.52586],[16.03012,44.55572],[16.00884,44.58605],[16.05828,44.61538],[15.89348,44.74964],[15.8255,44.71501],[15.72584,44.82334],[15.79472,44.8455],[15.76096,44.87045],[15.74723,44.96818],[15.78568,44.97401],[15.74585,45.0638],[15.78842,45.11519],[15.76371,45.16508],[15.83512,45.22459],[15.98412,45.23088],[16.12153,45.09616],[16.29036,44.99732],[16.35404,45.00241],[16.35863,45.03529],[16.3749,45.05206],[16.38219,45.05139],[16.38309,45.05955],[16.40023,45.1147],[16.4634,45.14522],[16.49155,45.21153],[16.52982,45.22713],[16.5501,45.2212],[16.56559,45.22307],[16.60194,45.23042],[16.64962,45.20714],[16.74845,45.20393],[16.78219,45.19002],[16.81137,45.18434],[16.83804,45.18951],[16.92405,45.27607],[16.9385,45.22742],[17.0415,45.20759],[17.18438,45.14764],[17.24325,45.146],[17.25131,45.14957],[17.26815,45.18444],[17.32092,45.16246],[17.33573,45.14521],[17.41229,45.13335],[17.4498,45.16119],[17.45615,45.12523],[17.47589,45.12656],[17.51469,45.10791],[17.59104,45.10816],[17.66571,45.13408],[17.84826,45.04489],[17.87148,45.04645],[17.93706,45.08016],[17.97336,45.12245],[17.97834,45.13831],[17.99479,45.14958],[18.01594,45.15163],[18.03121,45.12632],[18.1624,45.07654],[18.24387,45.13699],[18.32077,45.1021],[18.41896,45.11083],[18.47939,45.05871],[18.65723,45.07544],[18.78357,44.97741],[18.80661,44.93561],[18.76369,44.93707],[18.76347,44.90669],[18.8704,44.85097],[19.01994,44.85493],[18.98957,44.90645],[19.02871,44.92541],[19.06853,44.89915],[19.15573,44.95409],[19.05205,44.97692],[19.1011,45.01191],[19.07952,45.14668],[19.14063,45.12972],[19.19144,45.17863],[19.43589,45.17137],[19.41941,45.23475],[19.28208,45.23813],[19.10774,45.29547],[18.97446,45.37528],[18.99918,45.49333],[19.08364,45.48804],[19.07471,45.53086],[18.94562,45.53712],[18.88776,45.57253],[18.96691,45.66731],[18.90305,45.71863],[18.85783,45.85493],[18.81394,45.91329],[18.80211,45.87995],[18.6792,45.92057],[18.57483,45.80772],[18.44368,45.73972],[18.12439,45.78905],[18.08869,45.76511],[17.99805,45.79671],[17.87377,45.78522],[17.66545,45.84207],[17.56821,45.93728],[17.35672,45.95209],[17.14592,46.16697],[16.8903,46.28122],[16.8541,46.36255],[16.7154,46.39523],[16.6639,46.45203],[16.59527,46.47524],[16.52604,46.47831],[16.5007,46.49644],[16.44036,46.5171],[16.38771,46.53608],[16.37193,46.55008],[16.29793,46.5121],[16.26733,46.51505],[16.26759,46.50566],[16.23961,46.49653],[16.25124,46.48067],[16.27398,46.42875],[16.27329,46.41467],[16.30162,46.40437],[16.30233,46.37837],[16.18824,46.38282],[16.14859,46.40547],[16.05281,46.39141],[16.05065,46.3833],[16.07314,46.36458],[16.07616,46.3463],[15.97965,46.30652],[15.79284,46.25811],[15.78817,46.21719],[15.75479,46.20336],[15.75436,46.21969],[15.67395,46.22478],[15.6434,46.21396],[15.64904,46.19229],[15.59909,46.14761],[15.6083,46.11992],[15.62317,46.09103],[15.72977,46.04682],[15.71246,46.01196],[15.70327,46.00015],[15.70636,45.92116],[15.67967,45.90455],[15.68383,45.88867],[15.68232,45.86819],[15.70411,45.8465],[15.66662,45.84085],[15.64185,45.82915],[15.57952,45.84953],[15.52234,45.82195],[15.47325,45.8253],[15.47531,45.79802],[15.40836,45.79491],[15.25423,45.72275],[15.30872,45.69014],[15.34919,45.71623],[15.4057,45.64727],[15.38952,45.63682],[15.34214,45.64702],[15.34695,45.63382],[15.31027,45.6303],[15.27747,45.60504],[15.29837,45.5841],[15.30249,45.53224],[15.38188,45.48752],[15.33051,45.45258],[15.27758,45.46678],[15.16862,45.42309],[15.05187,45.49079],[15.02385,45.48533],[14.92266,45.52788],[14.90554,45.47769],[14.81992,45.45913],[14.80124,45.49515],[14.71718,45.53442],[14.68605,45.53006],[14.69694,45.57366],[14.59576,45.62812],[14.60977,45.66403],[14.57397,45.67165],[14.53816,45.6205],[14.5008,45.60852],[14.49769,45.54424],[14.36693,45.48642],[14.32487,45.47142],[14.27681,45.4902],[14.26611,45.48239],[14.24239,45.50607],[14.22371,45.50388],[14.20348,45.46896],[14.07116,45.48752],[14.00578,45.52352],[13.96063,45.50825],[13.99488,45.47551],[13.97309,45.45258],[13.90771,45.45149],[13.88124,45.42637],[13.81742,45.43729],[13.7785,45.46787],[13.67398,45.4436],[13.62902,45.45898],[13.56979,45.4895],[13.45644,45.59464],[13.05142,45.33128],[13.12821,44.48877],[16.15283,42.18525],[18.45131,42.21682],[18.54128,42.39171],[18.52152,42.42302],[18.43588,42.48556],[18.44307,42.51077],[18.43735,42.55921],[18.36197,42.61423],[18.24318,42.6112],[17.88201,42.83668],[17.80854,42.9182],[17.7948,42.89556],[17.68151,42.92725],[17.6444,42.88641]]]]}},{type:"Feature",properties:{iso1A2:"HT",iso1A3:"HTI",iso1N3:"332",wikidata:"Q790",nameEn:"Haiti",aliases:["RH"],groups:["029","003","419","019","UN"],callingCodes:["509"]},geometry:{type:"MultiPolygon",coordinates:[[[[-71.71885,18.78423],[-71.72624,18.87802],[-71.77766,18.95007],[-71.88102,18.95007],[-71.74088,19.0437],[-71.71088,19.08353],[-71.69938,19.10916],[-71.65337,19.11759],[-71.62642,19.21212],[-71.73229,19.26686],[-71.77766,19.33823],[-71.69448,19.37866],[-71.6802,19.45008],[-71.71268,19.53374],[-71.71449,19.55364],[-71.7429,19.58445],[-71.75865,19.70231],[-71.77419,19.73128],[-72.38946,20.27111],[-73.37289,20.43199],[-74.7289,18.71009],[-74.76465,18.06252],[-72.29523,17.48026],[-71.75671,18.03456],[-71.73783,18.07177],[-71.74994,18.11115],[-71.75465,18.14405],[-71.78271,18.18302],[-71.69952,18.34101],[-71.90875,18.45821],[-71.88102,18.50125],[-72.00201,18.62312],[-71.95412,18.64939],[-71.82556,18.62551],[-71.71885,18.78423]]]]}},{type:"Feature",properties:{iso1A2:"HU",iso1A3:"HUN",iso1N3:"348",wikidata:"Q28",nameEn:"Hungary",groups:["EU","151","150","UN"],callingCodes:["36"]},geometry:{type:"MultiPolygon",coordinates:[[[[21.72525,48.34628],[21.67134,48.3989],[21.6068,48.50365],[21.44063,48.58456],[21.11516,48.49546],[20.83248,48.5824],[20.5215,48.53336],[20.29943,48.26104],[20.24312,48.2784],[19.92452,48.1283],[19.63338,48.25006],[19.52489,48.19791],[19.47957,48.09437],[19.28182,48.08336],[19.23924,48.0595],[19.01952,48.07052],[18.82176,48.04206],[18.76134,47.97499],[18.76821,47.87469],[18.8506,47.82308],[18.74074,47.8157],[18.66521,47.76772],[18.56496,47.76588],[18.29305,47.73541],[18.02938,47.75665],[17.71215,47.7548],[17.23699,48.02094],[17.16001,48.00636],[17.09786,47.97336],[17.11022,47.92461],[17.08275,47.87719],[17.00997,47.86245],[17.07039,47.81129],[17.05048,47.79377],[17.08893,47.70928],[16.87538,47.68895],[16.86509,47.72268],[16.82938,47.68432],[16.7511,47.67878],[16.72089,47.73469],[16.65679,47.74197],[16.61183,47.76171],[16.54779,47.75074],[16.53514,47.73837],[16.55129,47.72268],[16.4222,47.66537],[16.58699,47.61772],[16.64193,47.63114],[16.71059,47.52692],[16.64821,47.50155],[16.6718,47.46139],[16.57152,47.40868],[16.52414,47.41007],[16.49908,47.39416],[16.45104,47.41181],[16.47782,47.25918],[16.44142,47.25079],[16.43663,47.21127],[16.41739,47.20649],[16.42801,47.18422],[16.4523,47.18812],[16.46442,47.16845],[16.44932,47.14418],[16.52863,47.13974],[16.46134,47.09395],[16.52176,47.05747],[16.43936,47.03548],[16.51369,47.00084],[16.28202,47.00159],[16.27594,46.9643],[16.22403,46.939],[16.19904,46.94134],[16.10983,46.867],[16.14365,46.8547],[16.15711,46.85434],[16.21892,46.86961],[16.2365,46.87775],[16.2941,46.87137],[16.34547,46.83836],[16.3408,46.80641],[16.31303,46.79838],[16.30966,46.7787],[16.37816,46.69975],[16.42641,46.69228],[16.41863,46.66238],[16.38594,46.6549],[16.39217,46.63673],[16.50139,46.56684],[16.52885,46.53303],[16.52604,46.5051],[16.59527,46.47524],[16.6639,46.45203],[16.7154,46.39523],[16.8541,46.36255],[16.8903,46.28122],[17.14592,46.16697],[17.35672,45.95209],[17.56821,45.93728],[17.66545,45.84207],[17.87377,45.78522],[17.99805,45.79671],[18.08869,45.76511],[18.12439,45.78905],[18.44368,45.73972],[18.57483,45.80772],[18.6792,45.92057],[18.80211,45.87995],[18.81394,45.91329],[18.99712,45.93537],[19.01284,45.96529],[19.0791,45.96458],[19.10388,46.04015],[19.14543,45.9998],[19.28826,45.99694],[19.52473,46.1171],[19.56113,46.16824],[19.66007,46.19005],[19.81491,46.1313],[19.93508,46.17553],[20.01816,46.17696],[20.03533,46.14509],[20.09713,46.17315],[20.26068,46.12332],[20.28324,46.1438],[20.35573,46.16629],[20.45377,46.14405],[20.49718,46.18721],[20.63863,46.12728],[20.76085,46.21002],[20.74574,46.25467],[20.86797,46.28884],[21.06572,46.24897],[21.16872,46.30118],[21.28061,46.44941],[21.26929,46.4993],[21.33214,46.63035],[21.43926,46.65109],[21.5151,46.72147],[21.48935,46.7577],[21.52028,46.84118],[21.59307,46.86935],[21.59581,46.91628],[21.68645,46.99595],[21.648,47.03902],[21.78395,47.11104],[21.94463,47.38046],[22.01055,47.37767],[22.03389,47.42508],[22.00917,47.50492],[22.31816,47.76126],[22.41979,47.7391],[22.46559,47.76583],[22.67247,47.7871],[22.76617,47.8417],[22.77991,47.87211],[22.89849,47.95851],[22.84276,47.98602],[22.87847,48.04665],[22.81804,48.11363],[22.73427,48.12005],[22.66835,48.09162],[22.58733,48.10813],[22.59007,48.15121],[22.49806,48.25189],[22.38133,48.23726],[22.2083,48.42534],[22.14689,48.4005],[21.83339,48.36242],[21.8279,48.33321],[21.72525,48.34628]]]]}},{type:"Feature",properties:{iso1A2:"IC",wikidata:"Q5813",nameEn:"Canary Islands",country:"ES",groups:["Q3320166","Q105472","EU","039","150","UN"],isoStatus:"excRes",callingCodes:["34"]},geometry:{type:"MultiPolygon",coordinates:[[[[-12.00985,30.24121],[-25.3475,27.87574],[-14.43883,27.02969],[-12.00985,30.24121]]]]}},{type:"Feature",properties:{iso1A2:"ID",iso1A3:"IDN",iso1N3:"360",wikidata:"Q252",nameEn:"Indonesia",aliases:["RI"]},geometry:null},{type:"Feature",geometry:{type:"MultiPolygon",coordinates:[[[[-6.26218,54.09785],[-6.29003,54.11278],[-6.32694,54.09337],[-6.36279,54.11248],[-6.36605,54.07234],[-6.47849,54.06947],[-6.62842,54.03503],[-6.66264,54.0666],[-6.6382,54.17071],[-6.70175,54.20218],[-6.74575,54.18788],[-6.81583,54.22791],[-6.85179,54.29176],[-6.87775,54.34682],[-7.02034,54.4212],[-7.19145,54.31296],[-7.14908,54.22732],[-7.25012,54.20063],[-7.26316,54.13863],[-7.29493,54.12013],[-7.29687,54.1354],[-7.28017,54.16714],[-7.29157,54.17191],[-7.34005,54.14698],[-7.30553,54.11869],[-7.32834,54.11475],[-7.44567,54.1539],[-7.4799,54.12239],[-7.55812,54.12239],[-7.69501,54.20731],[-7.81397,54.20159],[-7.8596,54.21779],[-7.87101,54.29299],[-8.04555,54.36292],[-8.179,54.46763],[-8.04538,54.48941],[-7.99812,54.54427],[-7.8596,54.53671],[-7.70315,54.62077],[-7.93293,54.66603],[-7.83352,54.73854],[-7.75041,54.7103],[-7.64449,54.75265],[-7.54671,54.74606],[-7.54508,54.79401],[-7.47626,54.83084],[-7.4473,54.87003],[-7.44404,54.9403],[-7.40004,54.94498],[-7.4033,55.00391],[-7.34464,55.04688],[-7.2471,55.06933],[-6.34755,55.49206],[-7.75229,55.93854],[-11.75,54],[-11,51],[-6.03913,51.13217],[-5.37267,53.63269],[-6.26218,54.09785]]]]},properties:{iso1A2:"IE",iso1A3:"IRL",iso1N3:"372",wikidata:"Q27",nameEn:"Republic of Ireland",groups:["EU","Q22890","154","150","UN"],driveSide:"left",callingCodes:["353"]}},{type:"Feature",properties:{iso1A2:"IL",iso1A3:"ISR",iso1N3:"376",wikidata:"Q801",nameEn:"Israel",groups:["145","142","UN"],callingCodes:["972"]},geometry:{type:"MultiPolygon",coordinates:[[[[34.052,31.46619],[34.29262,31.70393],[34.48681,31.59711],[34.56797,31.54197],[34.48892,31.48365],[34.40077,31.40926],[34.36505,31.36404],[34.37381,31.30598],[34.36523,31.28963],[34.29417,31.24194],[34.26742,31.21998],[34.92298,29.45305],[34.97718,29.54294],[34.98207,29.58147],[35.02147,29.66343],[35.14108,30.07374],[35.19183,30.34636],[35.16218,30.43535],[35.19595,30.50297],[35.21379,30.60401],[35.29311,30.71365],[35.33456,30.81224],[35.33984,30.8802],[35.41371,30.95565],[35.43658,31.12444],[35.40316,31.25535],[35.47672,31.49578],[35.39675,31.49572],[35.22921,31.37445],[35.13033,31.3551],[35.02459,31.35979],[34.92571,31.34337],[34.88932,31.37093],[34.87833,31.39321],[34.89756,31.43891],[34.93258,31.47816],[34.94356,31.50743],[34.9415,31.55601],[34.95249,31.59813],[35.00879,31.65426],[35.08226,31.69107],[35.10782,31.71594],[35.11895,31.71454],[35.12933,31.7325],[35.13931,31.73012],[35.15119,31.73634],[35.15474,31.73352],[35.16478,31.73242],[35.18023,31.72067],[35.20538,31.72388],[35.21937,31.71578],[35.22392,31.71899],[35.23972,31.70896],[35.24315,31.71244],[35.2438,31.7201],[35.24981,31.72543],[35.25182,31.73945],[35.26319,31.74846],[35.25225,31.7678],[35.26058,31.79064],[35.25573,31.81362],[35.26404,31.82567],[35.251,31.83085],[35.25753,31.8387],[35.24816,31.8458],[35.2304,31.84222],[35.2249,31.85433],[35.22817,31.8638],[35.22567,31.86745],[35.22294,31.87889],[35.22014,31.88264],[35.2136,31.88241],[35.21276,31.88153],[35.21016,31.88237],[35.20945,31.8815],[35.20791,31.8821],[35.20673,31.88151],[35.20381,31.86716],[35.21128,31.863],[35.216,31.83894],[35.21469,31.81835],[35.19461,31.82687],[35.18169,31.82542],[35.18603,31.80901],[35.14174,31.81325],[35.07677,31.85627],[35.05617,31.85685],[35.01978,31.82944],[34.9724,31.83352],[34.99712,31.85569],[35.03489,31.85919],[35.03978,31.89276],[35.03489,31.92448],[35.00124,31.93264],[34.98682,31.96935],[35.00261,32.027],[34.9863,32.09551],[34.99437,32.10962],[34.98507,32.12606],[34.99039,32.14626],[34.96009,32.17503],[34.95703,32.19522],[34.98885,32.20758],[35.01841,32.23981],[35.02939,32.2671],[35.01119,32.28684],[35.01772,32.33863],[35.04243,32.35008],[35.05142,32.3667],[35.0421,32.38242],[35.05311,32.4024],[35.05423,32.41754],[35.07059,32.4585],[35.08564,32.46948],[35.09236,32.47614],[35.10024,32.47856],[35.10882,32.4757],[35.15937,32.50466],[35.2244,32.55289],[35.25049,32.52453],[35.29306,32.50947],[35.30685,32.51024],[35.35212,32.52047],[35.40224,32.50136],[35.42034,32.46009],[35.41598,32.45593],[35.41048,32.43706],[35.42078,32.41562],[35.55807,32.38674],[35.55494,32.42687],[35.57485,32.48669],[35.56614,32.64393],[35.59813,32.65159],[35.61669,32.67999],[35.66527,32.681],[35.68467,32.70715],[35.75983,32.74803],[35.78745,32.77938],[35.83758,32.82817],[35.84021,32.8725],[35.87012,32.91976],[35.89298,32.9456],[35.87188,32.98028],[35.84802,33.1031],[35.81911,33.11077],[35.81911,33.1336],[35.84285,33.16673],[35.83846,33.19397],[35.81647,33.2028],[35.81295,33.24841],[35.77513,33.27342],[35.813,33.3172],[35.77477,33.33609],[35.62019,33.27278],[35.62283,33.24226],[35.58502,33.26653],[35.58326,33.28381],[35.56523,33.28969],[35.55555,33.25844],[35.54544,33.25513],[35.54808,33.236],[35.5362,33.23196],[35.54228,33.19865],[35.52573,33.11921],[35.50335,33.114],[35.50272,33.09056],[35.448,33.09264],[35.43059,33.06659],[35.35223,33.05617],[35.31429,33.10515],[35.1924,33.08743],[35.10645,33.09318],[34.78515,33.20368],[33.62659,31.82938],[34.052,31.46619]]]]}},{type:"Feature",properties:{iso1A2:"IM",iso1A3:"IMN",iso1N3:"833",wikidata:"Q9676",nameEn:"Isle of Man",country:"GB",groups:["Q185086","154","150","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44 01624","44 07624","44 07524","44 07924"]},geometry:{type:"MultiPolygon",coordinates:[[[[-3.98763,54.07351],[-4.1819,54.57861],[-5.6384,53.81157],[-3.98763,54.07351]]]]}},{type:"Feature",properties:{iso1A2:"IN",iso1A3:"IND",iso1N3:"356",wikidata:"Q668",nameEn:"India"},geometry:null},{type:"Feature",properties:{iso1A2:"IO",iso1A3:"IOT",iso1N3:"086",wikidata:"Q43448",nameEn:"British Indian Ocean Territory",country:"GB"},geometry:null},{type:"Feature",properties:{iso1A2:"IQ",iso1A3:"IRQ",iso1N3:"368",wikidata:"Q796",nameEn:"Iraq",groups:["145","142","UN"],callingCodes:["964"]},geometry:{type:"MultiPolygon",coordinates:[[[[42.78887,37.38615],[42.56725,37.14878],[42.35724,37.10998],[42.36697,37.0627],[41.81736,36.58782],[41.40058,36.52502],[41.28864,36.35368],[41.2564,36.06012],[41.37027,35.84095],[41.38184,35.62502],[41.26569,35.42708],[41.21654,35.1508],[41.2345,34.80049],[41.12388,34.65742],[40.97676,34.39788],[40.64314,34.31604],[38.79171,33.37328],[39.08202,32.50304],[38.98762,32.47694],[39.04251,32.30203],[39.26157,32.35555],[39.29903,32.23259],[40.01521,32.05667],[42.97601,30.72204],[42.97796,30.48295],[44.72255,29.19736],[46.42415,29.05947],[46.5527,29.10283],[46.89695,29.50584],[47.15166,30.01044],[47.37192,30.10421],[47.7095,30.10453],[48.01114,29.98906],[48.06782,30.02906],[48.17332,30.02448],[48.40479,29.85763],[48.59531,29.66815],[48.83867,29.78572],[48.61441,29.93675],[48.51011,29.96238],[48.44785,30.00148],[48.4494,30.04456],[48.43384,30.08233],[48.38869,30.11062],[48.38714,30.13485],[48.41671,30.17254],[48.41117,30.19846],[48.26393,30.3408],[48.24385,30.33846],[48.21279,30.31644],[48.19425,30.32796],[48.18321,30.39703],[48.14585,30.44133],[48.02443,30.4789],[48.03221,30.9967],[47.68219,31.00004],[47.6804,31.39086],[47.86337,31.78422],[47.64771,32.07666],[47.52474,32.15972],[47.57144,32.20583],[47.37529,32.47808],[47.17218,32.45393],[46.46788,32.91992],[46.32298,32.9731],[46.17198,32.95612],[46.09103,32.98354],[46.15175,33.07229],[46.03966,33.09577],[46.05367,33.13097],[46.11905,33.11924],[46.20623,33.20395],[45.99919,33.5082],[45.86687,33.49263],[45.96183,33.55751],[45.89801,33.63661],[45.77814,33.60938],[45.50261,33.94968],[45.42789,33.9458],[45.41077,33.97421],[45.47264,34.03099],[45.56176,34.15088],[45.58667,34.30147],[45.53552,34.35148],[45.49171,34.3439],[45.46697,34.38221],[45.43879,34.45949],[45.51883,34.47692],[45.53219,34.60441],[45.59074,34.55558],[45.60224,34.55057],[45.73923,34.54416],[45.70031,34.69277],[45.65672,34.7222],[45.68284,34.76624],[45.70031,34.82322],[45.73641,34.83975],[45.79682,34.85133],[45.78904,34.91135],[45.86532,34.89858],[45.89477,34.95805],[45.87864,35.03441],[45.92173,35.0465],[45.92203,35.09538],[45.93108,35.08148],[45.94756,35.09188],[46.06508,35.03699],[46.07747,35.0838],[46.11763,35.07551],[46.19116,35.11097],[46.15642,35.1268],[46.16229,35.16984],[46.19738,35.18536],[46.18457,35.22561],[46.11367,35.23729],[46.15474,35.2883],[46.13152,35.32548],[46.05358,35.38568],[45.98453,35.49848],[46.01518,35.52012],[45.97584,35.58132],[46.03028,35.57416],[46.01307,35.59756],[46.0165,35.61501],[45.99452,35.63574],[46.0117,35.65059],[46.01631,35.69139],[46.23736,35.71414],[46.34166,35.78363],[46.32921,35.82655],[46.17198,35.8013],[46.08325,35.8581],[45.94711,35.82218],[45.89784,35.83708],[45.81442,35.82107],[45.76145,35.79898],[45.6645,35.92872],[45.60018,35.96069],[45.55245,35.99943],[45.46594,36.00042],[45.38275,35.97156],[45.33916,35.99424],[45.37652,36.06222],[45.37312,36.09917],[45.32235,36.17383],[45.30038,36.27769],[45.26261,36.3001],[45.27394,36.35846],[45.23953,36.43257],[45.11811,36.40751],[45.00759,36.5402],[45.06985,36.62645],[45.06985,36.6814],[45.01537,36.75128],[44.84725,36.77622],[44.83479,36.81362],[44.90173,36.86096],[44.91199,36.91468],[44.89862,37.01897],[44.81611,37.04383],[44.75229,37.11958],[44.78319,37.1431],[44.76698,37.16162],[44.63179,37.19229],[44.42631,37.05825],[44.38117,37.05825],[44.35315,37.04955],[44.35937,37.02843],[44.30645,36.97373],[44.25975,36.98119],[44.18503,37.09551],[44.22239,37.15756],[44.27998,37.16501],[44.2613,37.25055],[44.13521,37.32486],[44.02002,37.33229],[43.90949,37.22453],[43.84878,37.22205],[43.82699,37.19477],[43.8052,37.22825],[43.7009,37.23692],[43.63085,37.21957],[43.56702,37.25675],[43.50787,37.24436],[43.33508,37.33105],[43.30083,37.30629],[43.11403,37.37436],[42.93705,37.32015],[42.78887,37.38615]]]]}},{type:"Feature",properties:{iso1A2:"IR",iso1A3:"IRN",iso1N3:"364",wikidata:"Q794",nameEn:"Iran",groups:["034","142","UN"],callingCodes:["98"]},geometry:{type:"MultiPolygon",coordinates:[[[[44.96746,39.42998],[44.88916,39.59653],[44.81043,39.62677],[44.71806,39.71124],[44.65422,39.72163],[44.6137,39.78393],[44.47298,39.68788],[44.48111,39.61579],[44.41849,39.56659],[44.42832,39.4131],[44.37921,39.4131],[44.29818,39.378],[44.22452,39.4169],[44.03667,39.39223],[44.1043,39.19842],[44.20946,39.13975],[44.18863,38.93881],[44.30322,38.81581],[44.26155,38.71427],[44.28065,38.6465],[44.32058,38.62752],[44.3207,38.49799],[44.3119,38.37887],[44.38309,38.36117],[44.44386,38.38295],[44.50115,38.33939],[44.42476,38.25763],[44.22509,37.88859],[44.3883,37.85433],[44.45948,37.77065],[44.55498,37.783],[44.62096,37.71985],[44.56887,37.6429],[44.61401,37.60165],[44.58449,37.45018],[44.81021,37.2915],[44.75986,37.21549],[44.7868,37.16644],[44.78319,37.1431],[44.75229,37.11958],[44.81611,37.04383],[44.89862,37.01897],[44.91199,36.91468],[44.90173,36.86096],[44.83479,36.81362],[44.84725,36.77622],[45.01537,36.75128],[45.06985,36.6814],[45.06985,36.62645],[45.00759,36.5402],[45.11811,36.40751],[45.23953,36.43257],[45.27394,36.35846],[45.26261,36.3001],[45.30038,36.27769],[45.32235,36.17383],[45.37312,36.09917],[45.37652,36.06222],[45.33916,35.99424],[45.38275,35.97156],[45.46594,36.00042],[45.55245,35.99943],[45.60018,35.96069],[45.6645,35.92872],[45.76145,35.79898],[45.81442,35.82107],[45.89784,35.83708],[45.94711,35.82218],[46.08325,35.8581],[46.17198,35.8013],[46.32921,35.82655],[46.34166,35.78363],[46.23736,35.71414],[46.01631,35.69139],[46.0117,35.65059],[45.99452,35.63574],[46.0165,35.61501],[46.01307,35.59756],[46.03028,35.57416],[45.97584,35.58132],[46.01518,35.52012],[45.98453,35.49848],[46.05358,35.38568],[46.13152,35.32548],[46.15474,35.2883],[46.11367,35.23729],[46.18457,35.22561],[46.19738,35.18536],[46.16229,35.16984],[46.15642,35.1268],[46.19116,35.11097],[46.11763,35.07551],[46.07747,35.0838],[46.06508,35.03699],[45.94756,35.09188],[45.93108,35.08148],[45.92203,35.09538],[45.92173,35.0465],[45.87864,35.03441],[45.89477,34.95805],[45.86532,34.89858],[45.78904,34.91135],[45.79682,34.85133],[45.73641,34.83975],[45.70031,34.82322],[45.68284,34.76624],[45.65672,34.7222],[45.70031,34.69277],[45.73923,34.54416],[45.60224,34.55057],[45.59074,34.55558],[45.53219,34.60441],[45.51883,34.47692],[45.43879,34.45949],[45.46697,34.38221],[45.49171,34.3439],[45.53552,34.35148],[45.58667,34.30147],[45.56176,34.15088],[45.47264,34.03099],[45.41077,33.97421],[45.42789,33.9458],[45.50261,33.94968],[45.77814,33.60938],[45.89801,33.63661],[45.96183,33.55751],[45.86687,33.49263],[45.99919,33.5082],[46.20623,33.20395],[46.11905,33.11924],[46.05367,33.13097],[46.03966,33.09577],[46.15175,33.07229],[46.09103,32.98354],[46.17198,32.95612],[46.32298,32.9731],[46.46788,32.91992],[47.17218,32.45393],[47.37529,32.47808],[47.57144,32.20583],[47.52474,32.15972],[47.64771,32.07666],[47.86337,31.78422],[47.6804,31.39086],[47.68219,31.00004],[48.03221,30.9967],[48.02443,30.4789],[48.14585,30.44133],[48.18321,30.39703],[48.19425,30.32796],[48.21279,30.31644],[48.24385,30.33846],[48.26393,30.3408],[48.41117,30.19846],[48.41671,30.17254],[48.38714,30.13485],[48.38869,30.11062],[48.43384,30.08233],[48.4494,30.04456],[48.44785,30.00148],[48.51011,29.96238],[48.61441,29.93675],[48.83867,29.78572],[49.98877,27.87827],[50.37726,27.89227],[54.39838,25.68383],[55.14145,25.62624],[55.81777,26.18798],[56.2644,26.58649],[56.68954,26.76645],[56.79239,26.41236],[56.82555,25.7713],[56.86325,25.03856],[61.46682,24.57869],[61.6433,25.27541],[61.683,25.66638],[61.83968,25.7538],[61.83831,26.07249],[61.89391,26.26251],[62.05117,26.31647],[62.21304,26.26601],[62.31484,26.528],[62.77352,26.64099],[63.1889,26.65072],[63.18688,26.83844],[63.25005,26.84212],[63.25005,27.08692],[63.32283,27.14437],[63.19649,27.25674],[62.80604,27.22412],[62.79684,27.34381],[62.84905,27.47627],[62.7638,28.02992],[62.79412,28.28108],[62.59499,28.24842],[62.40259,28.42703],[61.93581,28.55284],[61.65978,28.77937],[61.53765,29.00507],[61.31508,29.38903],[60.87231,29.86514],[61.80829,30.84224],[61.78268,30.92724],[61.8335,30.97669],[61.83257,31.0452],[61.80957,31.12576],[61.80569,31.16167],[61.70929,31.37391],[60.84541,31.49561],[60.86191,32.22565],[60.56485,33.12944],[60.88908,33.50219],[60.91133,33.55596],[60.69573,33.56054],[60.57762,33.59772],[60.5485,33.73422],[60.5838,33.80793],[60.50209,34.13992],[60.66502,34.31539],[60.91321,34.30411],[60.72316,34.52857],[60.99922,34.63064],[61.00197,34.70631],[61.06926,34.82139],[61.12831,35.09938],[61.0991,35.27845],[61.18187,35.30249],[61.27371,35.61482],[61.22719,35.67038],[61.26152,35.80749],[61.22444,35.92879],[61.12007,35.95992],[61.22719,36.12759],[61.1393,36.38782],[61.18187,36.55348],[61.14516,36.64644],[60.34767,36.63214],[60.00768,37.04102],[59.74678,37.12499],[59.55178,37.13594],[59.39385,37.34257],[59.39797,37.47892],[59.33507,37.53146],[59.22905,37.51161],[58.9338,37.67374],[58.6921,37.64548],[58.5479,37.70526],[58.47786,37.6433],[58.39959,37.63134],[58.22999,37.6856],[58.21399,37.77281],[57.79534,37.89299],[57.35042,37.98546],[57.37236,38.09321],[57.21169,38.28965],[57.03453,38.18717],[56.73928,38.27887],[56.62255,38.24005],[56.43303,38.26054],[56.32454,38.18502],[56.33278,38.08132],[55.97847,38.08024],[55.76561,38.12238],[55.44152,38.08564],[55.13412,37.94705],[54.851,37.75739],[54.77684,37.62264],[54.81804,37.61285],[54.77822,37.51597],[54.67247,37.43532],[54.58664,37.45809],[54.36211,37.34912],[54.24565,37.32047],[53.89734,37.3464],[48.88288,38.43975],[48.84969,38.45015],[48.81072,38.44853],[48.78979,38.45026],[48.70001,38.40564],[48.62217,38.40198],[48.58793,38.45076],[48.45084,38.61013],[48.3146,38.59958],[48.24773,38.71883],[48.02581,38.82705],[48.01409,38.90333],[48.07734,38.91616],[48.08627,38.94434],[48.28437,38.97186],[48.33884,39.03022],[48.31239,39.09278],[48.15361,39.19419],[48.12404,39.25208],[48.15984,39.30028],[48.37385,39.37584],[48.34264,39.42935],[47.98977,39.70999],[47.84774,39.66285],[47.50099,39.49615],[47.38978,39.45999],[47.31301,39.37492],[47.05927,39.24846],[47.05771,39.20143],[46.95341,39.13505],[46.92539,39.16644],[46.83822,39.13143],[46.75752,39.03231],[46.53497,38.86548],[46.34059,38.92076],[46.20601,38.85262],[46.14785,38.84206],[46.06766,38.87861],[46.00228,38.87376],[45.94624,38.89072],[45.90266,38.87739],[45.83883,38.90768],[45.65172,38.95199],[45.6155,38.94304],[45.6131,38.964],[45.44966,38.99243],[45.44811,39.04927],[45.40452,39.07224],[45.40148,39.09007],[45.30489,39.18333],[45.16168,39.21952],[45.08751,39.35052],[45.05932,39.36435],[44.96746,39.42998]]]]}},{type:"Feature",properties:{iso1A2:"IS",iso1A3:"ISL",iso1N3:"352",wikidata:"Q189",nameEn:"Iceland",groups:["154","150","UN"],callingCodes:["354"]},geometry:{type:"MultiPolygon",coordinates:[[[[-33.15676,62.62995],[-8.25539,63.0423],[-15.70914,69.67442],[-33.15676,62.62995]]]]}},{type:"Feature",properties:{iso1A2:"IT",iso1A3:"ITA",iso1N3:"380",wikidata:"Q38",nameEn:"Italy",groups:["EU","039","150","UN"],callingCodes:["39"]},geometry:{type:"MultiPolygon",coordinates:[[[[8.95861,45.96485],[8.97604,45.96151],[8.97741,45.98317],[8.96668,45.98436],[8.95861,45.96485]]],[[[7.63035,43.57419],[9.56115,43.20816],[10.09675,41.44089],[7.60802,41.05927],[7.89009,38.19924],[11.2718,37.6713],[12.13667,34.20326],[14.02721,36.53141],[17.67657,35.68918],[18.83516,40.36999],[16.15283,42.18525],[13.12821,44.48877],[13.05142,45.33128],[13.45644,45.59464],[13.6076,45.64761],[13.7198,45.59352],[13.74587,45.59811],[13.78445,45.5825],[13.84106,45.58185],[13.86771,45.59898],[13.8695,45.60835],[13.9191,45.6322],[13.87933,45.65207],[13.83422,45.68703],[13.83332,45.70855],[13.8235,45.7176],[13.66986,45.79955],[13.59784,45.8072],[13.58858,45.83503],[13.57563,45.8425],[13.58644,45.88173],[13.59565,45.89446],[13.60857,45.89907],[13.61931,45.91782],[13.63815,45.93607],[13.6329,45.94894],[13.64307,45.98326],[13.63458,45.98947],[13.62074,45.98388],[13.58903,45.99009],[13.56759,45.96991],[13.52963,45.96588],[13.50104,45.98078],[13.47474,46.00546],[13.49702,46.01832],[13.50998,46.04498],[13.49568,46.04839],[13.50104,46.05986],[13.57072,46.09022],[13.64053,46.13587],[13.66472,46.17392],[13.64451,46.18966],[13.56682,46.18703],[13.56114,46.2054],[13.47587,46.22725],[13.42218,46.20758],[13.37671,46.29668],[13.44808,46.33507],[13.43418,46.35992],[13.47019,46.3621],[13.5763,46.40915],[13.5763,46.42613],[13.59777,46.44137],[13.68684,46.43881],[13.7148,46.5222],[13.64088,46.53438],[13.27627,46.56059],[12.94445,46.60401],[12.59992,46.6595],[12.38708,46.71529],[12.27591,46.88651],[12.2006,46.88854],[12.11675,47.01241],[12.21781,47.03996],[12.19254,47.09331],[11.74789,46.98484],[11.50739,47.00644],[11.33355,46.99862],[11.10618,46.92966],[11.00764,46.76896],[10.72974,46.78972],[10.75753,46.82258],[10.66405,46.87614],[10.54783,46.84505],[10.47197,46.85698],[10.38659,46.67847],[10.40475,46.63671],[10.44686,46.64162],[10.49375,46.62049],[10.46136,46.53164],[10.25309,46.57432],[10.23674,46.63484],[10.10307,46.61003],[10.03715,46.44479],[10.165,46.41051],[10.10506,46.3372],[10.17862,46.25626],[10.14439,46.22992],[10.07055,46.21668],[9.95249,46.38045],[9.73086,46.35071],[9.71273,46.29266],[9.57015,46.2958],[9.46117,46.37481],[9.45936,46.50873],[9.40487,46.46621],[9.36128,46.5081],[9.28136,46.49685],[9.25502,46.43743],[9.29226,46.32717],[9.24503,46.23616],[9.01618,46.04928],[8.99257,45.9698],[9.09065,45.89906],[9.06642,45.8761],[9.04546,45.84968],[9.04059,45.8464],[9.03505,45.83976],[9.03793,45.83548],[9.03279,45.82865],[9.0298,45.82127],[9.00324,45.82055],[8.99663,45.83466],[8.9621,45.83707],[8.94737,45.84285],[8.91129,45.8388],[8.93504,45.86245],[8.94372,45.86587],[8.93649,45.86775],[8.88904,45.95465],[8.86688,45.96135],[8.85121,45.97239],[8.8319,45.9879],[8.79362,45.99207],[8.78585,45.98973],[8.79414,46.00913],[8.85617,46.0748],[8.80778,46.10085],[8.75697,46.10395],[8.62242,46.12112],[8.45032,46.26869],[8.46317,46.43712],[8.42464,46.46367],[8.30648,46.41587],[8.31162,46.38044],[8.08814,46.26692],[8.16866,46.17817],[8.11383,46.11577],[8.02906,46.10331],[7.98881,45.99867],[7.9049,45.99945],[7.85949,45.91485],[7.56343,45.97421],[7.10685,45.85653],[7.04151,45.92435],[6.95315,45.85163],[6.80785,45.83265],[6.80785,45.71864],[6.98948,45.63869],[7.00037,45.509],[7.18019,45.40071],[7.10572,45.32924],[7.13115,45.25386],[7.07074,45.21228],[6.96706,45.20841],[6.85144,45.13226],[6.7697,45.16044],[6.62803,45.11175],[6.66981,45.02324],[6.74791,45.01939],[6.74519,44.93661],[6.75518,44.89915],[6.90774,44.84322],[6.93499,44.8664],[7.02217,44.82519],[7.00401,44.78782],[7.07484,44.68073],[7.00582,44.69364],[6.95133,44.66264],[6.96042,44.62129],[6.85507,44.53072],[6.86233,44.49834],[6.94504,44.43112],[6.88784,44.42043],[6.89171,44.36637],[6.98221,44.28289],[7.00764,44.23736],[7.16929,44.20352],[7.27827,44.1462],[7.34547,44.14359],[7.36364,44.11882],[7.62155,44.14881],[7.63245,44.17877],[7.68694,44.17487],[7.66878,44.12795],[7.72508,44.07578],[7.6597,44.03009],[7.66848,43.99943],[7.65266,43.9763],[7.60771,43.95772],[7.56858,43.94506],[7.56075,43.89932],[7.51162,43.88301],[7.49355,43.86551],[7.50423,43.84345],[7.53006,43.78405],[7.63035,43.57419]],[[12.45181,41.90056],[12.44834,41.90095],[12.44582,41.90194],[12.44815,41.90326],[12.44984,41.90545],[12.45091,41.90625],[12.45543,41.90738],[12.45561,41.90629],[12.45762,41.9058],[12.45755,41.9033],[12.45826,41.90281],[12.45834,41.90174],[12.4577,41.90115],[12.45691,41.90125],[12.45626,41.90172],[12.45435,41.90143],[12.45446,41.90028],[12.45181,41.90056]],[[12.45648,43.89369],[12.44184,43.90498],[12.41641,43.89991],[12.40935,43.9024],[12.41233,43.90956],[12.40733,43.92379],[12.41551,43.92984],[12.41165,43.93769],[12.40506,43.94325],[12.40415,43.95485],[12.41414,43.95273],[12.42005,43.9578],[12.43662,43.95698],[12.44684,43.96597],[12.46205,43.97463],[12.47853,43.98052],[12.49406,43.98492],[12.50678,43.99113],[12.51463,43.99122],[12.5154,43.98508],[12.51064,43.98165],[12.51109,43.97201],[12.50622,43.97131],[12.50875,43.96198],[12.50655,43.95796],[12.51427,43.94897],[12.51553,43.94096],[12.50496,43.93017],[12.50269,43.92363],[12.49724,43.92248],[12.49247,43.91774],[12.49429,43.90973],[12.48771,43.89706],[12.45648,43.89369]]]]}},{type:"Feature",properties:{iso1A2:"JE",iso1A3:"JEY",iso1N3:"832",wikidata:"Q785",nameEn:"Bailiwick of Jersey",country:"GB",groups:["830","Q185086","154","150","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["44 01534"]},geometry:{type:"MultiPolygon",coordinates:[[[[-2.00491,48.86706],[-1.83944,49.23037],[-2.09454,49.46288],[-2.65349,49.15373],[-2.00491,48.86706]]]]}},{type:"Feature",properties:{iso1A2:"JM",iso1A3:"JAM",iso1N3:"388",wikidata:"Q766",nameEn:"Jamaica",aliases:["JA"],groups:["029","003","419","019","UN"],driveSide:"left",callingCodes:["1 876","1 658"]},geometry:{type:"MultiPolygon",coordinates:[[[[-74.09729,17.36817],[-78.9741,19.59515],[-78.34606,16.57862],[-74.09729,17.36817]]]]}},{type:"Feature",properties:{iso1A2:"JO",iso1A3:"JOR",iso1N3:"400",wikidata:"Q810",nameEn:"Jordan",groups:["145","142","UN"],callingCodes:["962"]},geometry:{type:"MultiPolygon",coordinates:[[[[39.04251,32.30203],[38.98762,32.47694],[39.08202,32.50304],[38.79171,33.37328],[36.83946,32.31293],[36.40959,32.37908],[36.23948,32.50108],[36.20875,32.49529],[36.20379,32.52751],[36.08074,32.51463],[36.02239,32.65911],[35.96633,32.66237],[35.93307,32.71966],[35.88405,32.71321],[35.75983,32.74803],[35.68467,32.70715],[35.66527,32.681],[35.61669,32.67999],[35.59813,32.65159],[35.56614,32.64393],[35.57485,32.48669],[35.55494,32.42687],[35.55807,32.38674],[35.57111,32.21877],[35.52012,32.04076],[35.54375,31.96587],[35.52758,31.9131],[35.55941,31.76535],[35.47672,31.49578],[35.40316,31.25535],[35.43658,31.12444],[35.41371,30.95565],[35.33984,30.8802],[35.33456,30.81224],[35.29311,30.71365],[35.21379,30.60401],[35.19595,30.50297],[35.16218,30.43535],[35.19183,30.34636],[35.14108,30.07374],[35.02147,29.66343],[34.98207,29.58147],[34.97718,29.54294],[34.92298,29.45305],[34.8812,29.36878],[36.07081,29.18469],[36.50005,29.49696],[36.75083,29.86903],[37.4971,29.99949],[37.66395,30.33245],[37.99354,30.49998],[36.99791,31.50081],[38.99233,31.99721],[39.29903,32.23259],[39.26157,32.35555],[39.04251,32.30203]]]]}},{type:"Feature",properties:{iso1A2:"JP",iso1A3:"JPN",iso1N3:"392",wikidata:"Q17",nameEn:"Japan",groups:["030","142","UN"],driveSide:"left",callingCodes:["81"]},geometry:{type:"MultiPolygon",coordinates:[[[[145.82361,43.38904],[145.23667,43.76813],[145.82343,44.571],[140.9182,45.92937],[133.61399,37.41],[129.2669,34.87122],[122.26612,25.98197],[123.92912,17.8782],[155.16731,23.60141],[145.82361,43.38904]]]]}},{type:"Feature",properties:{iso1A2:"KE",iso1A3:"KEN",iso1N3:"404",wikidata:"Q114",nameEn:"Kenya",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["254"]},geometry:{type:"MultiPolygon",coordinates:[[[[35.9419,4.61933],[35.51424,4.61643],[35.42366,4.76969],[35.47843,4.91872],[35.30992,4.90402],[35.34151,5.02364],[34.47601,4.72162],[33.9873,4.23316],[34.06046,4.15235],[34.15429,3.80464],[34.45815,3.67385],[34.44922,3.51627],[34.39112,3.48802],[34.41794,3.44342],[34.40006,3.37949],[34.45815,3.18319],[34.56242,3.11478],[34.60114,2.93034],[34.65774,2.8753],[34.73967,2.85447],[34.78137,2.76223],[34.77244,2.70272],[34.95267,2.47209],[34.90947,2.42447],[34.98692,1.97348],[34.9899,1.6668],[34.92734,1.56109],[34.87819,1.5596],[34.7918,1.36752],[34.82606,1.30944],[34.82606,1.26626],[34.80223,1.22754],[34.67562,1.21265],[34.58029,1.14712],[34.57427,1.09868],[34.52369,1.10692],[34.43349,.85254],[34.40041,.80266],[34.31516,.75693],[34.27345,.63182],[34.20196,.62289],[34.13493,.58118],[34.11408,.48884],[34.08727,.44713],[34.10067,.36372],[33.90936,.10581],[33.98449,-.13079],[33.9264,-.54188],[33.93107,-.99298],[34.02286,-1.00779],[34.03084,-1.05101],[34.0824,-1.02264],[37.67199,-3.06222],[37.71745,-3.304],[37.5903,-3.42735],[37.63099,-3.50723],[37.75036,-3.54243],[37.81321,-3.69179],[39.21631,-4.67835],[39.44306,-4.93877],[39.62121,-4.68136],[41.75542,-1.85308],[41.56362,-1.66375],[41.56,-1.59812],[41.00099,-.83068],[40.98767,2.82959],[41.31368,3.14314],[41.89488,3.97375],[41.1754,3.94079],[40.77498,4.27683],[39.86043,3.86974],[39.76808,3.67058],[39.58339,3.47434],[39.55132,3.39634],[39.51551,3.40895],[39.49444,3.45521],[39.19954,3.47834],[39.07736,3.5267],[38.91938,3.51198],[38.52336,3.62551],[38.45812,3.60445],[38.14168,3.62487],[37.07724,4.33503],[36.84474,4.44518],[36.03924,4.44406],[35.95449,4.53244],[35.9419,4.61933]]]]}},{type:"Feature",properties:{iso1A2:"KG",iso1A3:"KGZ",iso1N3:"417",wikidata:"Q813",nameEn:"Kyrgyzstan",groups:["143","142","UN"],callingCodes:["996"]},geometry:{type:"MultiPolygon",coordinates:[[[[74.88756,42.98612],[74.75,42.99029],[74.70331,43.02519],[74.64615,43.05881],[74.57491,43.13702],[74.22489,43.24657],[73.55634,43.03071],[73.50992,42.82356],[73.44393,42.43098],[71.88792,42.83578],[71.62405,42.76613],[71.53272,42.8014],[71.2724,42.77853],[71.22785,42.69248],[71.17807,42.67381],[71.15232,42.60486],[70.97717,42.50147],[70.85973,42.30188],[70.94483,42.26238],[71.13263,42.28356],[71.28719,42.18033],[70.69777,41.92554],[70.17682,41.5455],[70.48909,41.40335],[70.67586,41.47953],[70.78572,41.36419],[70.77885,41.24813],[70.86263,41.23833],[70.9615,41.16393],[71.02193,41.19494],[71.11806,41.15359],[71.25813,41.18796],[71.27187,41.11015],[71.34877,41.16807],[71.40198,41.09436],[71.46148,41.13958],[71.43814,41.19644],[71.46688,41.31883],[71.57227,41.29175],[71.6787,41.42111],[71.65914,41.49599],[71.73054,41.54713],[71.71132,41.43012],[71.76625,41.4466],[71.83914,41.3546],[71.91457,41.2982],[71.85964,41.19081],[72.07249,41.11739],[72.10745,41.15483],[72.16433,41.16483],[72.17594,41.15522],[72.14864,41.13363],[72.1792,41.10621],[72.21061,41.05607],[72.17594,41.02377],[72.18339,40.99571],[72.324,41.03381],[72.34026,41.04539],[72.34757,41.06104],[72.36138,41.04384],[72.38511,41.02785],[72.45206,41.03018],[72.48742,40.97136],[72.55109,40.96046],[72.59136,40.86947],[72.68157,40.84942],[72.84291,40.85512],[72.94454,40.8094],[73.01869,40.84681],[73.13267,40.83512],[73.13412,40.79122],[73.0612,40.76678],[72.99133,40.76457],[72.93296,40.73089],[72.8722,40.71111],[72.85372,40.7116],[72.84754,40.67229],[72.80137,40.67856],[72.74866,40.60873],[72.74894,40.59592],[72.75982,40.57273],[72.74862,40.57131],[72.74768,40.58051],[72.73995,40.58409],[72.69579,40.59778],[72.66713,40.59076],[72.66713,40.5219],[72.47795,40.5532],[72.40517,40.61917],[72.34406,40.60144],[72.41714,40.55736],[72.38384,40.51535],[72.41513,40.50856],[72.44191,40.48222],[72.40346,40.4007],[72.24368,40.46091],[72.18648,40.49893],[71.96401,40.31907],[72.05464,40.27586],[71.85002,40.25647],[71.82646,40.21872],[71.73054,40.14818],[71.71719,40.17886],[71.69621,40.18492],[71.70569,40.20391],[71.68386,40.26984],[71.61931,40.26775],[71.61725,40.20615],[71.51549,40.22986],[71.51215,40.26943],[71.4246,40.28619],[71.36663,40.31593],[71.13042,40.34106],[71.05901,40.28765],[70.95789,40.28761],[70.9818,40.22392],[70.80495,40.16813],[70.7928,40.12797],[70.65827,40.0981],[70.65946,39.9878],[70.58912,39.95211],[70.55033,39.96619],[70.47557,39.93216],[70.57384,39.99394],[70.58297,40.00891],[70.01283,40.23288],[69.67001,40.10639],[69.64704,40.12165],[69.57615,40.10524],[69.55555,40.12296],[69.53794,40.11833],[69.53855,40.0887],[69.5057,40.03277],[69.53615,39.93991],[69.43557,39.92877],[69.43134,39.98431],[69.35649,40.01994],[69.26938,39.8127],[69.3594,39.52516],[69.68677,39.59281],[69.87491,39.53882],[70.11111,39.58223],[70.2869,39.53141],[70.44757,39.60128],[70.64087,39.58792],[70.7854,39.38933],[71.06418,39.41586],[71.08752,39.50704],[71.49814,39.61397],[71.55856,39.57588],[71.5517,39.45722],[71.62688,39.44056],[71.76816,39.45456],[71.80164,39.40631],[71.7522,39.32031],[71.79202,39.27355],[71.90601,39.27674],[72.04059,39.36704],[72.09689,39.26823],[72.17242,39.2661],[72.23834,39.17248],[72.33173,39.33093],[72.62027,39.39696],[72.85934,39.35116],[73.18454,39.35536],[73.31912,39.38615],[73.45096,39.46677],[73.59831,39.46425],[73.87018,39.47879],[73.94683,39.60733],[73.92354,39.69565],[73.9051,39.75073],[73.83006,39.76136],[73.97049,40.04378],[74.25533,40.13191],[74.35063,40.09742],[74.69875,40.34668],[74.85996,40.32857],[74.78168,40.44886],[74.82013,40.52197],[75.08243,40.43945],[75.22834,40.45382],[75.5854,40.66874],[75.69663,40.28642],[75.91361,40.2948],[75.96168,40.38064],[76.33659,40.3482],[76.5261,40.46114],[76.75681,40.95354],[76.99302,41.0696],[77.28004,41.0033],[77.3693,41.0375],[77.52723,41.00227],[77.76206,41.01574],[77.81287,41.14307],[78.12873,41.23091],[78.15757,41.38565],[78.3732,41.39603],[79.92977,42.04113],[80.17842,42.03211],[80.17807,42.21166],[79.97364,42.42816],[79.52921,42.44778],[79.19763,42.804],[78.91502,42.76839],[78.48469,42.89649],[75.82823,42.94848],[75.72174,42.79672],[75.29966,42.86183],[75.22619,42.85528],[74.88756,42.98612]],[[70.74189,39.86319],[70.63105,39.77923],[70.59667,39.83542],[70.54998,39.85137],[70.52631,39.86989],[70.53651,39.89155],[70.74189,39.86319]],[[71.86463,39.98598],[71.84316,39.95582],[71.7504,39.93701],[71.71511,39.96348],[71.78838,40.01404],[71.86463,39.98598]],[[71.21139,40.03369],[71.1427,39.95026],[71.23067,39.93581],[71.16101,39.88423],[71.10531,39.91354],[71.04979,39.89808],[71.10501,39.95568],[71.09063,39.99],[71.11668,39.99291],[71.11037,40.01984],[71.01035,40.05481],[71.00236,40.18154],[71.06305,40.1771],[71.12218,40.03052],[71.21139,40.03369]]]]}},{type:"Feature",properties:{iso1A2:"KH",iso1A3:"KHM",iso1N3:"116",wikidata:"Q424",nameEn:"Cambodia",groups:["035","142","UN"],callingCodes:["855"]},geometry:{type:"MultiPolygon",coordinates:[[[[105.87328,11.55953],[105.81645,11.56876],[105.80867,11.60536],[105.8507,11.66635],[105.88962,11.67854],[105.95188,11.63738],[106.00792,11.7197],[106.02038,11.77457],[106.06708,11.77761],[106.13158,11.73283],[106.18539,11.75171],[106.26478,11.72122],[106.30525,11.67549],[106.37219,11.69836],[106.44691,11.66787],[106.45158,11.68616],[106.41577,11.76999],[106.44535,11.8279],[106.44068,11.86294],[106.4687,11.86751],[106.4111,11.97413],[106.70687,11.96956],[106.79405,12.0807],[106.92325,12.06548],[106.99953,12.08983],[107.15831,12.27547],[107.34511,12.33327],[107.42917,12.24657],[107.4463,12.29373],[107.55059,12.36824],[107.5755,12.52177],[107.55993,12.7982],[107.49611,12.88926],[107.49144,13.01215],[107.62843,13.3668],[107.61909,13.52577],[107.53503,13.73908],[107.45252,13.78897],[107.46498,13.91593],[107.44318,13.99751],[107.38247,13.99147],[107.35757,14.02319],[107.37158,14.07906],[107.33577,14.11832],[107.40427,14.24509],[107.39493,14.32655],[107.44941,14.41552],[107.48521,14.40346],[107.52569,14.54665],[107.52102,14.59034],[107.55371,14.628],[107.54361,14.69092],[107.47238,14.61523],[107.44435,14.52785],[107.37897,14.54443],[107.3276,14.58812],[107.29803,14.58963],[107.26534,14.54292],[107.256,14.48716],[107.21241,14.48716],[107.17038,14.41782],[107.09722,14.3937],[107.03962,14.45099],[107.04585,14.41782],[106.98825,14.36806],[106.9649,14.3198],[106.90574,14.33639],[106.8497,14.29416],[106.80767,14.31226],[106.73762,14.42687],[106.63333,14.44194],[106.59908,14.50977],[106.57106,14.50525],[106.54148,14.59565],[106.50723,14.58963],[106.45898,14.55045],[106.47766,14.50977],[106.43874,14.52032],[106.40916,14.45249],[106.32355,14.44043],[106.25194,14.48415],[106.21302,14.36203],[106.00131,14.36957],[105.99509,14.32734],[106.02311,14.30623],[106.04801,14.20363],[106.10872,14.18401],[106.11962,14.11307],[106.18656,14.06324],[106.16632,14.01794],[106.10094,13.98471],[106.10405,13.9137],[105.90791,13.92881],[105.78182,14.02247],[105.78338,14.08438],[105.5561,14.15684],[105.44869,14.10703],[105.36775,14.09948],[105.2759,14.17496],[105.20894,14.34967],[105.17748,14.34432],[105.14012,14.23873],[105.08408,14.20402],[105.02804,14.23722],[104.97667,14.38806],[104.69335,14.42726],[104.55014,14.36091],[104.27616,14.39861],[103.93836,14.3398],[103.70175,14.38052],[103.71109,14.4348],[103.53518,14.42575],[103.39353,14.35639],[103.16469,14.33075],[102.93275,14.19044],[102.91251,14.01531],[102.77864,13.93374],[102.72727,13.77806],[102.56848,13.69366],[102.5481,13.6589],[102.58635,13.6286],[102.62483,13.60883],[102.57573,13.60461],[102.5358,13.56933],[102.44601,13.5637],[102.36859,13.57488],[102.33828,13.55613],[102.361,13.50551],[102.35563,13.47307],[102.35692,13.38274],[102.34611,13.35618],[102.36001,13.31142],[102.36146,13.26006],[102.43422,13.09061],[102.46011,13.08057],[102.52275,12.99813],[102.48694,12.97537],[102.49335,12.92711],[102.53053,12.77506],[102.4994,12.71736],[102.51963,12.66117],[102.57567,12.65358],[102.7796,12.43781],[102.78116,12.40284],[102.73134,12.37091],[102.70176,12.1686],[102.77026,12.06815],[102.78427,11.98746],[102.83957,11.8519],[102.90973,11.75613],[102.91449,11.65512],[102.52395,11.25257],[102.47649,9.66162],[103.99198,10.48391],[104.43778,10.42386],[104.47963,10.43046],[104.49869,10.4057],[104.59018,10.53073],[104.87933,10.52833],[104.95094,10.64003],[105.09571,10.72722],[105.02722,10.89236],[105.08326,10.95656],[105.11449,10.96332],[105.34011,10.86179],[105.42884,10.96878],[105.50045,10.94586],[105.77751,11.03671],[105.86376,10.89839],[105.84603,10.85873],[105.93403,10.83853],[105.94535,10.9168],[106.06708,10.8098],[106.18539,10.79451],[106.14301,10.98176],[106.20095,10.97795],[106.1757,11.07301],[106.1527,11.10476],[106.10444,11.07879],[105.86782,11.28343],[105.88962,11.43605],[105.87328,11.55953]]]]}},{type:"Feature",properties:{iso1A2:"KI",iso1A3:"KIR",iso1N3:"296",wikidata:"Q710",nameEn:"Kiribati",groups:["057","009","UN"],driveSide:"left",callingCodes:["686"]},geometry:{type:"MultiPolygon",coordinates:[[[[169,3.9],[169,-3.5],[178,-3.5],[178,3.9],[169,3.9]]],[[[-161.06795,5.2462],[-158.12991,-1.86122],[-175.33482,-1.40631],[-175.31804,-7.54825],[-156.50903,-7.4975],[-156.48634,-15.52824],[-135.59706,-4.70473],[-161.06795,5.2462]]]]}},{type:"Feature",properties:{iso1A2:"KM",iso1A3:"COM",iso1N3:"174",wikidata:"Q970",nameEn:"Comoros",groups:["014","202","002","UN"],callingCodes:["269"]},geometry:{type:"MultiPolygon",coordinates:[[[[42.63904,-10.02522],[43.28731,-13.97126],[45.4971,-11.75965],[42.63904,-10.02522]]]]}},{type:"Feature",properties:{iso1A2:"KN",iso1A3:"KNA",iso1N3:"659",wikidata:"Q763",nameEn:"St. Kitts and Nevis",groups:["029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 869"]},geometry:{type:"MultiPolygon",coordinates:[[[[-62.29333,17.43155],[-62.76692,17.64353],[-63.09677,17.21372],[-62.63813,16.65446],[-62.29333,17.43155]]]]}},{type:"Feature",properties:{iso1A2:"KP",iso1A3:"PRK",iso1N3:"408",wikidata:"Q423",nameEn:"North Korea",groups:["030","142","UN"],callingCodes:["850"]},geometry:{type:"MultiPolygon",coordinates:[[[[130.26095,42.9027],[130.09764,42.91425],[130.12957,42.98361],[129.96409,42.97306],[129.95082,43.01051],[129.8865,43.00395],[129.85261,42.96494],[129.83277,42.86746],[129.80719,42.79218],[129.7835,42.76521],[129.77183,42.69435],[129.75294,42.59409],[129.72541,42.43739],[129.60482,42.44461],[129.54701,42.37254],[129.42882,42.44702],[129.28541,42.41574],[129.22423,42.3553],[129.22285,42.26491],[129.15178,42.17224],[128.96068,42.06657],[128.94007,42.03537],[128.04487,42.01769],[128.15119,41.74568],[128.30716,41.60322],[128.20061,41.40895],[128.18546,41.41279],[128.12967,41.37931],[128.03311,41.39232],[128.02633,41.42103],[127.92943,41.44291],[127.29712,41.49473],[127.17841,41.59714],[126.90729,41.79955],[126.60631,41.65565],[126.53189,41.35206],[126.242,41.15454],[126.00335,40.92835],[125.76869,40.87908],[125.71172,40.85223],[124.86913,40.45387],[124.40719,40.13655],[124.38556,40.11047],[124.3322,40.05573],[124.37089,40.03004],[124.35029,39.95639],[124.23201,39.9248],[124.17532,39.8232],[123.90497,38.79949],[123.85601,37.49093],[124.67666,38.05679],[124.84224,37.977],[124.87921,37.80827],[125.06408,37.66334],[125.37112,37.62643],[125.81159,37.72949],[126.13074,37.70512],[126.18776,37.74728],[126.19097,37.81462],[126.24402,37.83113],[126.43239,37.84095],[126.46818,37.80873],[126.56709,37.76857],[126.59918,37.76364],[126.66067,37.7897],[126.68793,37.83728],[126.68793,37.9175],[126.67023,37.95852],[126.84961,38.0344],[126.88106,38.10246],[126.95887,38.1347],[126.95338,38.17735],[127.04479,38.25518],[127.15749,38.30722],[127.38727,38.33227],[127.49672,38.30647],[127.55013,38.32257],[128.02917,38.31861],[128.27652,38.41657],[128.31105,38.58462],[128.37487,38.62345],[128.65655,38.61914],[131.95041,41.5445],[130.65022,42.32281],[130.66367,42.38024],[130.64181,42.41422],[130.60805,42.4317],[130.56835,42.43281],[130.55143,42.52158],[130.50123,42.61636],[130.44361,42.54849],[130.41826,42.6011],[130.2385,42.71127],[130.23068,42.80125],[130.26095,42.9027]]]]}},{type:"Feature",properties:{iso1A2:"KR",iso1A3:"KOR",iso1N3:"410",wikidata:"Q884",nameEn:"South Korea",groups:["030","142","UN"],callingCodes:["82"]},geometry:{type:"MultiPolygon",coordinates:[[[[133.11729,37.53115],[128.65655,38.61914],[128.37487,38.62345],[128.31105,38.58462],[128.27652,38.41657],[128.02917,38.31861],[127.55013,38.32257],[127.49672,38.30647],[127.38727,38.33227],[127.15749,38.30722],[127.04479,38.25518],[126.95338,38.17735],[126.95887,38.1347],[126.88106,38.10246],[126.84961,38.0344],[126.67023,37.95852],[126.68793,37.9175],[126.68793,37.83728],[126.66067,37.7897],[126.59918,37.76364],[126.56709,37.76857],[126.46818,37.80873],[126.43239,37.84095],[126.24402,37.83113],[126.19097,37.81462],[126.18776,37.74728],[126.13074,37.70512],[125.81159,37.72949],[125.37112,37.62643],[125.06408,37.66334],[124.87921,37.80827],[124.84224,37.977],[124.67666,38.05679],[123.85601,37.49093],[122.80525,33.30571],[125.99728,32.63328],[129.2669,34.87122],[133.11729,37.53115]]]]}},{type:"Feature",properties:{iso1A2:"KW",iso1A3:"KWT",iso1N3:"414",wikidata:"Q817",nameEn:"Kuwait",groups:["145","142","UN"],callingCodes:["965"]},geometry:{type:"MultiPolygon",coordinates:[[[[49.00421,28.81495],[48.59531,29.66815],[48.40479,29.85763],[48.17332,30.02448],[48.06782,30.02906],[48.01114,29.98906],[47.7095,30.10453],[47.37192,30.10421],[47.15166,30.01044],[46.89695,29.50584],[46.5527,29.10283],[47.46202,29.0014],[47.58376,28.83382],[47.59863,28.66798],[47.70561,28.5221],[48.42991,28.53628],[49.00421,28.81495]]]]}},{type:"Feature",properties:{iso1A2:"KY",iso1A3:"CYM",iso1N3:"136",wikidata:"Q5785",nameEn:"Cayman Islands",country:"GB",groups:["BOTS","029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1 345"]},geometry:{type:"MultiPolygon",coordinates:[[[[-82.11509,19.60401],[-80.36068,18.11751],[-79.32727,20.06742],[-82.11509,19.60401]]]]}},{type:"Feature",properties:{iso1A2:"KZ",iso1A3:"KAZ",iso1N3:"398",wikidata:"Q232",nameEn:"Kazakhstan",groups:["143","142","UN"],callingCodes:["7"]},geometry:{type:"MultiPolygon",coordinates:[[[[68.90865,55.38148],[68.19206,55.18823],[68.26661,55.09226],[68.21308,54.98645],[65.20174,54.55216],[65.24663,54.35721],[65.11033,54.33028],[64.97216,54.4212],[63.97686,54.29763],[64.02715,54.22679],[63.91224,54.20013],[63.80604,54.27079],[62.58651,54.05871],[62.56876,53.94047],[62.45931,53.90737],[62.38535,54.03961],[62.00966,54.04134],[62.03913,53.94768],[61.65318,54.02445],[61.56941,53.95703],[61.47603,54.08048],[61.3706,54.08464],[61.26863,53.92797],[60.99796,53.93699],[61.14283,53.90063],[61.22574,53.80268],[60.90626,53.62937],[61.55706,53.57144],[61.57185,53.50112],[61.37957,53.45887],[61.29082,53.50992],[61.14291,53.41481],[61.19024,53.30536],[62.14574,53.09626],[62.12799,52.99133],[62.0422,52.96105],[61.23462,53.03227],[61.05842,52.92217],[60.71989,52.75923],[60.71693,52.66245],[60.84118,52.63912],[60.84709,52.52228],[60.98021,52.50068],[61.05417,52.35096],[60.78201,52.22067],[60.72581,52.15538],[60.48915,52.15175],[60.19925,51.99173],[59.99809,51.98263],[60.09867,51.87135],[60.50986,51.7964],[60.36787,51.66815],[60.5424,51.61675],[60.92401,51.61124],[60.95655,51.48615],[61.50677,51.40687],[61.55114,51.32746],[61.6813,51.25716],[61.56889,51.23679],[61.4431,50.80679],[60.81833,50.6629],[60.31914,50.67705],[60.17262,50.83312],[60.01288,50.8163],[59.81172,50.54451],[59.51886,50.49937],[59.48928,50.64216],[58.87974,50.70852],[58.3208,51.15151],[57.75578,51.13852],[57.74986,50.93017],[57.44221,50.88354],[57.17302,51.11253],[56.17906,50.93204],[56.11398,50.7471],[55.67774,50.54508],[54.72067,51.03261],[54.56685,51.01958],[54.71476,50.61214],[54.55797,50.52006],[54.41894,50.61214],[54.46331,50.85554],[54.12248,51.11542],[53.69299,51.23466],[53.46165,51.49445],[52.54329,51.48444],[52.36119,51.74161],[51.8246,51.67916],[51.77431,51.49536],[51.301,51.48799],[51.26254,51.68466],[50.59695,51.61859],[50.26859,51.28677],[49.97277,51.2405],[49.76866,51.11067],[49.39001,51.09396],[49.41959,50.85927],[49.12673,50.78639],[48.86936,50.61589],[48.57946,50.63278],[48.90782,50.02281],[48.68352,49.89546],[48.42564,49.82283],[48.24519,49.86099],[48.10044,50.09242],[47.58551,50.47867],[47.30448,50.30894],[47.34589,50.09308],[47.18319,49.93721],[46.9078,49.86707],[46.78398,49.34026],[47.04658,49.19834],[47.00857,49.04921],[46.78392,48.95352],[46.49011,48.43019],[47.11516,48.27188],[47.12107,47.83687],[47.38731,47.68176],[47.41689,47.83687],[47.64973,47.76559],[48.15348,47.74545],[48.45173,47.40818],[48.52326,47.4102],[49.01136,46.72716],[48.51142,46.69268],[48.54988,46.56267],[49.16518,46.38542],[49.32259,46.26944],[49.88945,46.04554],[49.2134,44.84989],[52.26048,41.69249],[52.47884,41.78034],[52.97575,42.1308],[54.20635,42.38477],[54.95182,41.92424],[55.45471,41.25609],[56.00314,41.32584],[55.97584,44.99322],[55.97584,44.99328],[55.97584,44.99338],[55.97584,44.99343],[55.97584,44.99348],[55.97584,44.99353],[55.97584,44.99359],[55.97584,44.99369],[55.97584,44.99374],[55.97584,44.99384],[55.97584,44.9939],[55.97584,44.994],[55.97584,44.99405],[55.97584,44.99415],[55.97584,44.99421],[55.97584,44.99426],[55.97584,44.99431],[55.97584,44.99436],[55.97584,44.99441],[55.97594,44.99446],[55.97605,44.99452],[55.97605,44.99457],[55.97605,44.99462],[55.97605,44.99467],[55.97605,44.99477],[55.97615,44.99477],[55.97615,44.99483],[55.97615,44.99493],[55.97615,44.99498],[55.97615,44.99503],[55.97615,44.99508],[55.97625,44.99514],[55.97636,44.99519],[55.97636,44.99524],[55.97646,44.99529],[55.97646,44.99534],[55.97656,44.99539],[55.97667,44.99545],[55.97677,44.9955],[55.97677,44.99555],[55.97677,44.9956],[55.97687,44.9956],[55.97698,44.99565],[55.97698,44.9957],[55.97708,44.99576],[55.97718,44.99581],[55.97729,44.99586],[55.97739,44.99586],[55.97739,44.99591],[55.97749,44.99591],[55.9776,44.99591],[55.9777,44.99596],[55.9777,44.99601],[55.9778,44.99607],[55.97791,44.99607],[55.97801,44.99607],[55.97801,44.99612],[55.97811,44.99617],[55.97822,44.99617],[55.97832,44.99622],[55.97842,44.99622],[58.59711,45.58671],[61.01475,44.41383],[62.01711,43.51008],[63.34656,43.64003],[64.53885,43.56941],[64.96464,43.74748],[65.18666,43.48835],[65.53277,43.31856],[65.85194,42.85481],[66.09482,42.93426],[66.00546,41.94455],[66.53302,41.87388],[66.69129,41.1311],[67.9644,41.14611],[67.98511,41.02794],[68.08273,41.08148],[68.1271,41.0324],[67.96736,40.83798],[68.49983,40.56437],[68.63,40.59358],[68.58444,40.91447],[68.49983,40.99669],[68.62221,41.03019],[68.65662,40.93861],[68.73945,40.96989],[68.7217,41.05025],[69.01308,41.22804],[69.05006,41.36183],[69.15137,41.43078],[69.17701,41.43769],[69.18528,41.45175],[69.20439,41.45391],[69.22671,41.46298],[69.23332,41.45847],[69.25059,41.46693],[69.29778,41.43673],[69.35554,41.47211],[69.37468,41.46555],[69.45081,41.46246],[69.39485,41.51518],[69.45751,41.56863],[69.49545,41.545],[70.94483,42.26238],[70.85973,42.30188],[70.97717,42.50147],[71.15232,42.60486],[71.17807,42.67381],[71.22785,42.69248],[71.2724,42.77853],[71.53272,42.8014],[71.62405,42.76613],[71.88792,42.83578],[73.44393,42.43098],[73.50992,42.82356],[73.55634,43.03071],[74.22489,43.24657],[74.57491,43.13702],[74.64615,43.05881],[74.70331,43.02519],[74.75,42.99029],[74.88756,42.98612],[75.22619,42.85528],[75.29966,42.86183],[75.72174,42.79672],[75.82823,42.94848],[78.48469,42.89649],[78.91502,42.76839],[79.19763,42.804],[79.52921,42.44778],[79.97364,42.42816],[80.17807,42.21166],[80.26841,42.23797],[80.16892,42.61137],[80.26886,42.8366],[80.38169,42.83142],[80.58999,42.9011],[80.3735,43.01557],[80.62913,43.141],[80.78817,43.14235],[80.77771,43.30065],[80.69718,43.32589],[80.75156,43.44948],[80.40031,44.10986],[80.40229,44.23319],[80.38384,44.63073],[79.8987,44.89957],[80.11169,45.03352],[81.73278,45.3504],[82.51374,45.1755],[82.58474,45.40027],[82.21792,45.56619],[83.04622,47.19053],[83.92184,46.98912],[84.73077,47.01394],[84.93995,46.87399],[85.22443,47.04816],[85.54294,47.06171],[85.69696,47.2898],[85.61067,47.49753],[85.5169,48.05493],[85.73581,48.3939],[86.38069,48.46064],[86.75343,48.70331],[86.73568,48.99918],[86.87238,49.12432],[87.28386,49.11626],[87.31465,49.23603],[87.03071,49.25142],[86.82606,49.51796],[86.61307,49.60239],[86.79056,49.74787],[86.63674,49.80136],[86.18709,49.50259],[85.24047,49.60239],[84.99198,50.06793],[84.29385,50.27257],[83.8442,50.87375],[83.14607,51.00796],[82.55443,50.75412],[81.94999,50.79307],[81.46581,50.77658],[81.41248,50.97524],[81.06091,50.94833],[81.16999,51.15662],[80.80318,51.28262],[80.44819,51.20855],[80.4127,50.95581],[80.08138,50.77658],[79.11255,52.01171],[77.90383,53.29807],[76.54243,53.99329],[76.44076,54.16017],[76.82266,54.1798],[76.91052,54.4677],[75.3668,54.07439],[75.43398,53.98652],[75.07405,53.80831],[73.39218,53.44623],[73.25412,53.61532],[73.68921,53.86522],[73.74778,54.07194],[73.37963,53.96132],[72.71026,54.1161],[72.43415,53.92685],[72.17477,54.36303],[71.96141,54.17736],[71.10379,54.13326],[71.08706,54.33376],[71.24185,54.64965],[71.08288,54.71253],[70.96009,55.10558],[70.76493,55.3027],[70.19179,55.1476],[69.74917,55.35545],[69.34224,55.36344],[68.90865,55.38148]]]]}},{type:"Feature",properties:{iso1A2:"LA",iso1A3:"LAO",iso1N3:"418",wikidata:"Q819",nameEn:"Laos",groups:["035","142","UN"],callingCodes:["856"]},geometry:{type:"MultiPolygon",coordinates:[[[[102.1245,22.43372],[102.03633,22.46164],[101.98487,22.42766],[101.91344,22.44417],[101.90714,22.38688],[101.86828,22.38397],[101.7685,22.50337],[101.68973,22.46843],[101.61306,22.27515],[101.56789,22.28876],[101.53638,22.24794],[101.60675,22.13513],[101.57525,22.13026],[101.62566,21.96574],[101.7791,21.83019],[101.74555,21.72852],[101.83257,21.61562],[101.80001,21.57461],[101.7475,21.5873],[101.7727,21.51794],[101.74224,21.48276],[101.74014,21.30967],[101.84412,21.25291],[101.83887,21.20983],[101.76745,21.21571],[101.79266,21.19025],[101.7622,21.14813],[101.70548,21.14911],[101.66977,21.20004],[101.60886,21.17947],[101.59491,21.18621],[101.6068,21.23329],[101.54563,21.25668],[101.29326,21.17254],[101.2229,21.23271],[101.26912,21.36482],[101.19349,21.41959],[101.2124,21.56422],[101.15156,21.56129],[101.16198,21.52808],[101.00234,21.39612],[100.80173,21.2934],[100.72716,21.31786],[100.63578,21.05639],[100.55281,21.02796],[100.50974,20.88574],[100.64628,20.88279],[100.60112,20.8347],[100.51079,20.82194],[100.36375,20.82783],[100.1957,20.68247],[100.08404,20.36626],[100.09999,20.31614],[100.09337,20.26293],[100.11785,20.24787],[100.1712,20.24324],[100.16668,20.2986],[100.22076,20.31598],[100.25769,20.3992],[100.33383,20.4028],[100.37439,20.35156],[100.41473,20.25625],[100.44992,20.23644],[100.4537,20.19971],[100.47567,20.19133],[100.51052,20.14928],[100.55218,20.17741],[100.58808,20.15791],[100.5094,19.87904],[100.398,19.75047],[100.49604,19.53504],[100.58219,19.49164],[100.64606,19.55884],[100.77231,19.48324],[100.90302,19.61901],[101.08928,19.59748],[101.26545,19.59242],[101.26991,19.48324],[101.21347,19.46223],[101.20604,19.35296],[101.24911,19.33334],[101.261,19.12717],[101.35606,19.04716],[101.25803,18.89545],[101.22832,18.73377],[101.27585,18.68875],[101.06047,18.43247],[101.18227,18.34367],[101.15108,18.25624],[101.19118,18.2125],[101.1793,18.0544],[101.02185,17.87637],[100.96541,17.57926],[101.15108,17.47586],[101.44667,17.7392],[101.72294,17.92867],[101.78087,18.07559],[101.88485,18.02474],[102.11359,18.21532],[102.45523,17.97106],[102.59234,17.96127],[102.60971,17.95411],[102.61432,17.92273],[102.5896,17.84889],[102.59485,17.83537],[102.68194,17.80151],[102.69946,17.81686],[102.67543,17.84529],[102.68538,17.86653],[102.75954,17.89561],[102.79044,17.93612],[102.81988,17.94233],[102.86323,17.97531],[102.95812,18.0054],[102.9912,17.9949],[103.01998,17.97095],[103.0566,18.00144],[103.07823,18.03833],[103.07343,18.12351],[103.1493,18.17799],[103.14994,18.23172],[103.17093,18.2618],[103.29757,18.30475],[103.23818,18.34875],[103.24779,18.37807],[103.30977,18.4341],[103.41044,18.4486],[103.47773,18.42841],[103.60957,18.40528],[103.699,18.34125],[103.82449,18.33979],[103.85642,18.28666],[103.93916,18.33914],[103.97725,18.33631],[104.06533,18.21656],[104.10927,18.10826],[104.21776,17.99335],[104.2757,17.86139],[104.35432,17.82871],[104.45404,17.66788],[104.69867,17.53038],[104.80061,17.39367],[104.80716,17.19025],[104.73712,17.01404],[104.7373,16.91125],[104.76442,16.84752],[104.7397,16.81005],[104.76099,16.69302],[104.73349,16.565],[104.88057,16.37311],[105.00262,16.25627],[105.06204,16.09792],[105.42001,16.00657],[105.38508,15.987],[105.34115,15.92737],[105.37959,15.84074],[105.42285,15.76971],[105.46573,15.74742],[105.61756,15.68792],[105.60446,15.53301],[105.58191,15.41031],[105.47635,15.3796],[105.4692,15.33709],[105.50662,15.32054],[105.58043,15.32724],[105.46661,15.13132],[105.61162,15.00037],[105.5121,14.80802],[105.53864,14.55731],[105.43783,14.43865],[105.20894,14.34967],[105.2759,14.17496],[105.36775,14.09948],[105.44869,14.10703],[105.5561,14.15684],[105.78338,14.08438],[105.78182,14.02247],[105.90791,13.92881],[106.10405,13.9137],[106.10094,13.98471],[106.16632,14.01794],[106.18656,14.06324],[106.11962,14.11307],[106.10872,14.18401],[106.04801,14.20363],[106.02311,14.30623],[105.99509,14.32734],[106.00131,14.36957],[106.21302,14.36203],[106.25194,14.48415],[106.32355,14.44043],[106.40916,14.45249],[106.43874,14.52032],[106.47766,14.50977],[106.45898,14.55045],[106.50723,14.58963],[106.54148,14.59565],[106.57106,14.50525],[106.59908,14.50977],[106.63333,14.44194],[106.73762,14.42687],[106.80767,14.31226],[106.8497,14.29416],[106.90574,14.33639],[106.9649,14.3198],[106.98825,14.36806],[107.04585,14.41782],[107.03962,14.45099],[107.09722,14.3937],[107.17038,14.41782],[107.21241,14.48716],[107.256,14.48716],[107.26534,14.54292],[107.29803,14.58963],[107.3276,14.58812],[107.37897,14.54443],[107.44435,14.52785],[107.47238,14.61523],[107.54361,14.69092],[107.51579,14.79282],[107.59285,14.87795],[107.48277,14.93751],[107.46516,15.00982],[107.61486,15.0566],[107.61926,15.13949],[107.58844,15.20111],[107.62587,15.2266],[107.60605,15.37524],[107.62367,15.42193],[107.53341,15.40496],[107.50699,15.48771],[107.3815,15.49832],[107.34408,15.62345],[107.27583,15.62769],[107.27143,15.71459],[107.21859,15.74638],[107.21419,15.83747],[107.34188,15.89464],[107.39471,15.88829],[107.46296,16.01106],[107.44975,16.08511],[107.33968,16.05549],[107.25822,16.13587],[107.14595,16.17816],[107.15035,16.26271],[107.09091,16.3092],[107.02597,16.31132],[106.97385,16.30204],[106.96638,16.34938],[106.88067,16.43594],[106.88727,16.52671],[106.84104,16.55415],[106.74418,16.41904],[106.65832,16.47816],[106.66052,16.56892],[106.61477,16.60713],[106.58267,16.6012],[106.59013,16.62259],[106.55485,16.68704],[106.55265,16.86831],[106.52183,16.87884],[106.51963,16.92097],[106.54824,16.92729],[106.55045,17.0031],[106.50862,16.9673],[106.43597,17.01362],[106.31929,17.20509],[106.29287,17.3018],[106.24444,17.24714],[106.18991,17.28227],[106.09019,17.36399],[105.85744,17.63221],[105.76612,17.67147],[105.60381,17.89356],[105.64784,17.96687],[105.46292,18.22008],[105.38366,18.15315],[105.15942,18.38691],[105.10408,18.43533],[105.1327,18.58355],[105.19654,18.64196],[105.12829,18.70453],[104.64617,18.85668],[104.5361,18.97747],[103.87125,19.31854],[104.06058,19.43484],[104.10832,19.51575],[104.05617,19.61743],[104.06498,19.66926],[104.23229,19.70242],[104.41281,19.70035],[104.53169,19.61743],[104.64837,19.62365],[104.68359,19.72729],[104.8355,19.80395],[104.8465,19.91783],[104.9874,20.09573],[104.91695,20.15567],[104.86852,20.14121],[104.61315,20.24452],[104.62195,20.36633],[104.72102,20.40554],[104.66158,20.47774],[104.47886,20.37459],[104.40621,20.3849],[104.38199,20.47155],[104.63957,20.6653],[104.27412,20.91433],[104.11121,20.96779],[103.98024,20.91531],[103.82282,20.8732],[103.73478,20.6669],[103.68633,20.66324],[103.45737,20.82382],[103.38032,20.79501],[103.21497,20.89832],[103.12055,20.89994],[103.03469,21.05821],[102.97745,21.05821],[102.89825,21.24707],[102.80794,21.25736],[102.88939,21.3107],[102.94223,21.46034],[102.86297,21.4255],[102.98846,21.58936],[102.97965,21.74076],[102.86077,21.71213],[102.85637,21.84501],[102.81894,21.83888],[102.82115,21.73667],[102.74189,21.66713],[102.67145,21.65894],[102.62301,21.91447],[102.49092,21.99002],[102.51734,22.02676],[102.18712,22.30403],[102.14099,22.40092],[102.1245,22.43372]]]]}},{type:"Feature",properties:{iso1A2:"LB",iso1A3:"LBN",iso1N3:"422",wikidata:"Q822",nameEn:"Lebanon",aliases:["RL"],groups:["145","142","UN"],callingCodes:["961"]},geometry:{type:"MultiPolygon",coordinates:[[[[35.94816,33.47886],[35.94465,33.52774],[36.05723,33.57904],[35.9341,33.6596],[36.06778,33.82927],[36.14517,33.85118],[36.3967,33.83365],[36.38263,33.86579],[36.28589,33.91981],[36.41078,34.05253],[36.50576,34.05982],[36.5128,34.09916],[36.62537,34.20251],[36.59195,34.2316],[36.58667,34.27667],[36.60778,34.31009],[36.56556,34.31881],[36.53039,34.3798],[36.55853,34.41609],[36.46179,34.46541],[36.4442,34.50165],[36.34745,34.5002],[36.3369,34.52629],[36.39846,34.55672],[36.41429,34.61175],[36.45299,34.59438],[36.46003,34.6378],[36.42941,34.62505],[36.35384,34.65447],[36.35135,34.68516],[36.32399,34.69334],[36.29165,34.62991],[35.98718,34.64977],[35.97386,34.63322],[35.48515,34.70851],[34.78515,33.20368],[35.10645,33.09318],[35.1924,33.08743],[35.31429,33.10515],[35.35223,33.05617],[35.43059,33.06659],[35.448,33.09264],[35.50272,33.09056],[35.50335,33.114],[35.52573,33.11921],[35.54228,33.19865],[35.5362,33.23196],[35.54808,33.236],[35.54544,33.25513],[35.55555,33.25844],[35.56523,33.28969],[35.58326,33.28381],[35.58502,33.26653],[35.62283,33.24226],[35.62019,33.27278],[35.77477,33.33609],[35.81324,33.36354],[35.82577,33.40479],[35.88668,33.43183],[35.94816,33.47886]]]]}},{type:"Feature",properties:{iso1A2:"LC",iso1A3:"LCA",iso1N3:"662",wikidata:"Q760",nameEn:"St. Lucia",aliases:["WL"],groups:["029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 758"]},geometry:{type:"MultiPolygon",coordinates:[[[[-59.95997,14.20285],[-61.69315,14.26451],[-59.94058,12.34011],[-59.95997,14.20285]]]]}},{type:"Feature",properties:{iso1A2:"LI",iso1A3:"LIE",iso1N3:"438",wikidata:"Q347",nameEn:"Liechtenstein",aliases:["FL"],groups:["155","150","UN"],callingCodes:["423"]},geometry:{type:"MultiPolygon",coordinates:[[[[9.60717,47.06091],[9.61216,47.07732],[9.63395,47.08443],[9.62623,47.14685],[9.56539,47.17124],[9.58264,47.20673],[9.56981,47.21926],[9.55176,47.22585],[9.56766,47.24281],[9.53116,47.27029],[9.52406,47.24959],[9.50318,47.22153],[9.4891,47.19346],[9.48774,47.17402],[9.51044,47.13727],[9.52089,47.10019],[9.51362,47.08505],[9.47139,47.06402],[9.47548,47.05257],[9.54041,47.06495],[9.55721,47.04762],[9.60717,47.06091]]]]}},{type:"Feature",properties:{iso1A2:"LK",iso1A3:"LKA",iso1N3:"144",wikidata:"Q854",nameEn:"Sri Lanka",groups:["034","142","UN"],driveSide:"left",callingCodes:["94"]},geometry:{type:"MultiPolygon",coordinates:[[[[76.59015,5.591],[85.15017,5.21497],[80.48418,10.20786],[79.42124,9.80115],[79.50447,8.91876],[76.59015,5.591]]]]}},{type:"Feature",properties:{iso1A2:"LR",iso1A3:"LBR",iso1N3:"430",wikidata:"Q1014",nameEn:"Liberia",groups:["011","202","002","UN"],callingCodes:["231"]},geometry:{type:"MultiPolygon",coordinates:[[[[-8.47114,7.55676],[-8.55874,7.62525],[-8.55874,7.70167],[-8.67814,7.69428],[-8.72789,7.51429],[-8.8448,7.35149],[-8.85724,7.26019],[-8.93435,7.2824],[-9.09107,7.1985],[-9.18311,7.30461],[-9.20798,7.38109],[-9.305,7.42056],[-9.41943,7.41809],[-9.48161,7.37122],[-9.37465,7.62032],[-9.35724,7.74111],[-9.44928,7.9284],[-9.41445,8.02448],[-9.50898,8.18455],[-9.47415,8.35195],[-9.77763,8.54633],[-10.05873,8.42578],[-10.05375,8.50697],[-10.14579,8.52665],[-10.203,8.47991],[-10.27575,8.48711],[-10.30084,8.30008],[-10.31635,8.28554],[-10.29839,8.21283],[-10.35227,8.15223],[-10.45023,8.15627],[-10.51554,8.1393],[-10.57523,8.04829],[-10.60492,8.04072],[-10.60422,7.7739],[-11.29417,7.21576],[-11.4027,6.97746],[-11.50429,6.92704],[-12.15048,6.15992],[-7.52774,3.7105],[-7.53259,4.35145],[-7.59349,4.8909],[-7.53876,4.94294],[-7.55369,5.08667],[-7.48901,5.14118],[-7.46165,5.26256],[-7.36463,5.32944],[-7.43428,5.42355],[-7.37209,5.61173],[-7.43926,5.74787],[-7.43677,5.84687],[-7.46165,5.84934],[-7.48155,5.80974],[-7.67309,5.94337],[-7.70294,5.90625],[-7.78254,5.99037],[-7.79747,6.07696],[-7.8497,6.08932],[-7.83478,6.20309],[-7.90692,6.27728],[-8.00642,6.31684],[-8.17557,6.28222],[-8.3298,6.36381],[-8.38453,6.35887],[-8.45666,6.49977],[-8.48652,6.43797],[-8.59456,6.50612],[-8.31736,6.82837],[-8.29249,7.1691],[-8.37458,7.25794],[-8.41935,7.51203],[-8.47114,7.55676]]]]}},{type:"Feature",properties:{iso1A2:"LS",iso1A3:"LSO",iso1N3:"426",wikidata:"Q1013",nameEn:"Lesotho",groups:["018","202","002","UN"],driveSide:"left",callingCodes:["266"]},geometry:{type:"MultiPolygon",coordinates:[[[[29.33204,-29.45598],[29.44883,-29.3772],[29.40524,-29.21246],[28.68043,-28.58744],[28.65091,-28.57025],[28.40612,-28.6215],[28.30518,-28.69531],[28.2348,-28.69471],[28.1317,-28.7293],[28.02503,-28.85991],[27.98675,-28.8787],[27.9392,-28.84864],[27.88933,-28.88156],[27.8907,-28.91612],[27.75458,-28.89839],[27.55974,-29.18954],[27.5158,-29.2261],[27.54258,-29.25575],[27.48679,-29.29349],[27.45125,-29.29708],[27.47254,-29.31968],[27.4358,-29.33465],[27.33464,-29.48161],[27.01016,-29.65439],[27.09489,-29.72796],[27.22719,-30.00718],[27.29603,-30.05473],[27.32555,-30.14785],[27.40778,-30.14577],[27.37293,-30.19401],[27.36649,-30.27246],[27.38108,-30.33456],[27.45452,-30.32239],[27.56901,-30.42504],[27.56781,-30.44562],[27.62137,-30.50509],[27.6521,-30.51707],[27.67819,-30.53437],[27.69467,-30.55862],[27.74814,-30.60635],[28.12073,-30.68072],[28.2319,-30.28476],[28.399,-30.1592],[28.68627,-30.12885],[28.80222,-30.10579],[28.9338,-30.05072],[29.16548,-29.91706],[29.12553,-29.76266],[29.28545,-29.58456],[29.33204,-29.45598]]]]}},{type:"Feature",properties:{iso1A2:"LT",iso1A3:"LTU",iso1N3:"440",wikidata:"Q37",nameEn:"Lithuania",groups:["EU","154","150","UN"],callingCodes:["370"]},geometry:{type:"MultiPolygon",coordinates:[[[[24.89005,56.46666],[24.83686,56.41565],[24.70022,56.40483],[24.57353,56.31525],[24.58143,56.29125],[24.42746,56.26522],[24.32334,56.30226],[24.13139,56.24881],[24.02657,56.3231],[23.75726,56.37282],[23.49803,56.34307],[23.40486,56.37689],[23.31606,56.3827],[23.17312,56.36795],[23.09531,56.30511],[22.96988,56.41213],[22.83048,56.367],[22.69354,56.36284],[22.56441,56.39305],[22.3361,56.4016],[22.09728,56.42851],[22.00548,56.41508],[21.74558,56.33181],[21.57888,56.31406],[21.49736,56.29106],[21.24644,56.16917],[21.15016,56.07818],[20.68447,56.04073],[20.60454,55.40986],[20.95181,55.27994],[21.26425,55.24456],[21.35465,55.28427],[21.38446,55.29348],[21.46766,55.21115],[21.51095,55.18507],[21.55605,55.20311],[21.64954,55.1791],[21.85521,55.09493],[21.96505,55.07353],[21.99543,55.08691],[22.03984,55.07888],[22.02582,55.05078],[22.06087,55.02935],[22.11697,55.02131],[22.14267,55.05345],[22.31562,55.0655],[22.47688,55.04408],[22.58907,55.07085],[22.60075,55.01863],[22.65451,54.97037],[22.68723,54.9811],[22.76422,54.92521],[22.85083,54.88711],[22.87317,54.79492],[22.73631,54.72952],[22.73397,54.66604],[22.75467,54.6483],[22.74225,54.64339],[22.7522,54.63525],[22.68021,54.58486],[22.71293,54.56454],[22.67788,54.532],[22.70208,54.45312],[22.7253,54.41732],[22.79705,54.36264],[22.83756,54.40827],[23.00584,54.38514],[22.99649,54.35927],[23.05726,54.34565],[23.04323,54.31567],[23.104,54.29794],[23.13905,54.31567],[23.15526,54.31076],[23.15938,54.29894],[23.24656,54.25701],[23.3494,54.25155],[23.39525,54.21672],[23.42418,54.17911],[23.45223,54.17775],[23.49196,54.14764],[23.52702,54.04622],[23.48261,53.98855],[23.51284,53.95052],[23.61677,53.92691],[23.71726,53.93379],[23.80543,53.89558],[23.81309,53.94205],[23.95098,53.9613],[23.98837,53.92554],[24.19638,53.96405],[24.34128,53.90076],[24.44411,53.90076],[24.62275,54.00217],[24.69652,54.01901],[24.69185,53.96543],[24.74279,53.96663],[24.85311,54.02862],[24.77131,54.11091],[24.96894,54.17589],[24.991,54.14241],[25.0728,54.13419],[25.19199,54.219],[25.22705,54.26271],[25.35559,54.26544],[25.509,54.30267],[25.56823,54.25212],[25.51452,54.17799],[25.54724,54.14925],[25.64875,54.1259],[25.71084,54.16704],[25.78563,54.15747],[25.78553,54.23327],[25.68513,54.31727],[25.55425,54.31591],[25.5376,54.33158],[25.63371,54.42075],[25.62203,54.4656],[25.64813,54.48704],[25.68045,54.5321],[25.75977,54.57252],[25.74122,54.80108],[25.89462,54.93438],[25.99129,54.95705],[26.05907,54.94631],[26.13386,54.98924],[26.20397,54.99729],[26.26941,55.08032],[26.23202,55.10439],[26.30628,55.12536],[26.35121,55.1525],[26.46249,55.12814],[26.51481,55.16051],[26.54753,55.14181],[26.69243,55.16718],[26.68075,55.19787],[26.72983,55.21788],[26.73017,55.24226],[26.835,55.28182],[26.83266,55.30444],[26.80929,55.31642],[26.6714,55.33902],[26.5709,55.32572],[26.44937,55.34832],[26.5522,55.40277],[26.55094,55.5093],[26.63167,55.57887],[26.63231,55.67968],[26.58248,55.6754],[26.46661,55.70375],[26.39561,55.71156],[26.18509,55.86813],[26.03815,55.95884],[25.90047,56.0013],[25.85893,56.00188],[25.81773,56.05444],[25.69246,56.08892],[25.68588,56.14725],[25.53621,56.16663],[25.39751,56.15707],[25.23099,56.19147],[25.09325,56.1878],[25.05762,56.26742],[24.89005,56.46666]]]]}},{type:"Feature",properties:{iso1A2:"LU",iso1A3:"LUX",iso1N3:"442",wikidata:"Q32",nameEn:"Luxembourg",groups:["EU","155","150","UN"],callingCodes:["352"]},geometry:{type:"MultiPolygon",coordinates:[[[[6.1379,50.12964],[6.1137,50.13668],[6.12028,50.16374],[6.08577,50.17246],[6.06406,50.15344],[6.03093,50.16362],[6.02488,50.18283],[5.96453,50.17259],[5.95929,50.13295],[5.89488,50.11476],[5.8857,50.07824],[5.85474,50.06342],[5.86904,50.04614],[5.8551,50.02683],[5.81866,50.01286],[5.82331,49.99662],[5.83968,49.9892],[5.83467,49.97823],[5.81163,49.97142],[5.80833,49.96451],[5.77291,49.96056],[5.77314,49.93646],[5.73621,49.89796],[5.78415,49.87922],[5.75269,49.8711],[5.75861,49.85631],[5.74567,49.85368],[5.75884,49.84811],[5.74953,49.84709],[5.74975,49.83933],[5.74076,49.83823],[5.7404,49.83452],[5.74844,49.82435],[5.74364,49.82058],[5.74953,49.81428],[5.75409,49.79239],[5.78871,49.7962],[5.82245,49.75048],[5.83149,49.74729],[5.82562,49.72395],[5.84193,49.72161],[5.86503,49.72739],[5.88677,49.70951],[5.86527,49.69291],[5.86175,49.67862],[5.9069,49.66377],[5.90164,49.6511],[5.90599,49.63853],[5.88552,49.63507],[5.88393,49.62802],[5.87609,49.62047],[5.8762,49.60898],[5.84826,49.5969],[5.84971,49.58674],[5.86986,49.58756],[5.87256,49.57539],[5.8424,49.56082],[5.84692,49.55663],[5.84143,49.5533],[5.81838,49.54777],[5.80871,49.5425],[5.81664,49.53775],[5.83648,49.5425],[5.84466,49.53027],[5.83467,49.52717],[5.83389,49.52152],[5.86571,49.50015],[5.94128,49.50034],[5.94224,49.49608],[5.96876,49.49053],[5.97693,49.45513],[6.02648,49.45451],[6.02743,49.44845],[6.04176,49.44801],[6.05553,49.46663],[6.07887,49.46399],[6.08373,49.45594],[6.10072,49.45268],[6.09845,49.46351],[6.10325,49.4707],[6.12346,49.4735],[6.12814,49.49365],[6.14321,49.48796],[6.16115,49.49297],[6.15366,49.50226],[6.17386,49.50934],[6.19543,49.50536],[6.2409,49.51408],[6.25029,49.50609],[6.27875,49.503],[6.28818,49.48465],[6.3687,49.4593],[6.36778,49.46937],[6.36907,49.48931],[6.36788,49.50377],[6.35666,49.52931],[6.38072,49.55171],[6.38228,49.55855],[6.35825,49.57053],[6.36676,49.57813],[6.38024,49.57593],[6.38342,49.5799],[6.37464,49.58886],[6.385,49.59946],[6.39822,49.60081],[6.41861,49.61723],[6.4413,49.65722],[6.43768,49.66021],[6.42726,49.66078],[6.42937,49.66857],[6.44654,49.67799],[6.46048,49.69092],[6.48014,49.69767],[6.49785,49.71118],[6.50647,49.71353],[6.5042,49.71808],[6.49694,49.72205],[6.49535,49.72645],[6.50261,49.72718],[6.51397,49.72058],[6.51805,49.72425],[6.50193,49.73291],[6.50174,49.75292],[6.51646,49.75961],[6.51828,49.76855],[6.51056,49.77515],[6.51669,49.78336],[6.50534,49.78952],[6.52169,49.79787],[6.53122,49.80666],[6.52121,49.81338],[6.51215,49.80124],[6.50647,49.80916],[6.48718,49.81267],[6.47111,49.82263],[6.45425,49.81164],[6.44131,49.81443],[6.42905,49.81091],[6.42521,49.81591],[6.40022,49.82029],[6.36576,49.85032],[6.34267,49.84974],[6.33585,49.83785],[6.32098,49.83728],[6.32303,49.85133],[6.30963,49.87021],[6.29692,49.86685],[6.28874,49.87592],[6.26146,49.88203],[6.23496,49.89972],[6.22926,49.92096],[6.21882,49.92403],[6.22608,49.929],[6.22094,49.94955],[6.19856,49.95053],[6.19089,49.96991],[6.18045,49.96611],[6.18554,49.95622],[6.17872,49.9537],[6.16466,49.97086],[6.1701,49.98518],[6.14147,49.99563],[6.14948,50.00908],[6.13806,50.01056],[6.1295,50.01849],[6.13273,50.02019],[6.13794,50.01466],[6.14666,50.02207],[6.13044,50.02929],[6.13458,50.04141],[6.11274,50.05916],[6.12055,50.09171],[6.1379,50.12964]]]]}},{type:"Feature",properties:{iso1A2:"LV",iso1A3:"LVA",iso1N3:"428",wikidata:"Q211",nameEn:"Latvia",groups:["EU","154","150","UN"],callingCodes:["371"]},geometry:{type:"MultiPolygon",coordinates:[[[[27.34698,57.52242],[26.90364,57.62823],[26.54675,57.51813],[26.46527,57.56885],[26.29253,57.59244],[26.1866,57.6849],[26.2029,57.7206],[26.08098,57.76619],[26.0543,57.76105],[26.03332,57.7718],[26.02415,57.76865],[26.02069,57.77169],[26.0266,57.77441],[26.027,57.78158],[26.02456,57.78342],[26.0324,57.79037],[26.05949,57.84744],[25.73499,57.90193],[25.29581,58.08288],[25.28237,57.98539],[25.19484,58.0831],[24.3579,57.87471],[24.26221,57.91787],[23.20055,57.56697],[22.80496,57.87798],[19.84909,57.57876],[19.64795,57.06466],[20.68447,56.04073],[21.15016,56.07818],[21.24644,56.16917],[21.49736,56.29106],[21.57888,56.31406],[21.74558,56.33181],[22.00548,56.41508],[22.09728,56.42851],[22.3361,56.4016],[22.56441,56.39305],[22.69354,56.36284],[22.83048,56.367],[22.96988,56.41213],[23.09531,56.30511],[23.17312,56.36795],[23.31606,56.3827],[23.40486,56.37689],[23.49803,56.34307],[23.75726,56.37282],[24.02657,56.3231],[24.13139,56.24881],[24.32334,56.30226],[24.42746,56.26522],[24.58143,56.29125],[24.57353,56.31525],[24.70022,56.40483],[24.83686,56.41565],[24.89005,56.46666],[25.05762,56.26742],[25.09325,56.1878],[25.23099,56.19147],[25.39751,56.15707],[25.53621,56.16663],[25.68588,56.14725],[25.69246,56.08892],[25.81773,56.05444],[25.85893,56.00188],[25.90047,56.0013],[26.03815,55.95884],[26.18509,55.86813],[26.39561,55.71156],[26.46661,55.70375],[26.58248,55.6754],[26.63231,55.67968],[26.64888,55.70515],[26.71802,55.70645],[26.76872,55.67658],[26.87448,55.7172],[26.97153,55.8102],[27.1559,55.85032],[27.27804,55.78299],[27.3541,55.8089],[27.61683,55.78558],[27.63065,55.89687],[27.97865,56.11849],[28.15217,56.16964],[28.23716,56.27588],[28.16599,56.37806],[28.19057,56.44637],[28.10069,56.524],[28.13526,56.57989],[28.04768,56.59004],[27.86101,56.88204],[27.66511,56.83921],[27.86101,57.29402],[27.52453,57.42826],[27.56832,57.53728],[27.34698,57.52242]]]]}},{type:"Feature",properties:{iso1A2:"LY",iso1A3:"LBY",iso1N3:"434",wikidata:"Q1016",nameEn:"Libya",groups:["015","002","UN"],callingCodes:["218"]},geometry:{type:"MultiPolygon",coordinates:[[[[26.92891,33.39516],[11.58941,33.36891],[11.55852,33.1409],[11.51549,33.09826],[11.46037,32.6307],[11.57828,32.48013],[11.53898,32.4138],[11.04234,32.2145],[10.7315,31.97235],[10.62788,31.96629],[10.48497,31.72956],[10.31364,31.72648],[10.12239,31.42098],[10.29516,30.90337],[9.88152,30.34074],[9.76848,30.34366],[9.55544,30.23971],[9.3876,30.16738],[9.78136,29.40961],[9.89569,26.57696],[9.51696,26.39148],[9.38834,26.19288],[10.03146,25.35635],[10.02432,24.98124],[10.33159,24.5465],[10.85323,24.5595],[11.41061,24.21456],[11.62498,24.26669],[11.96886,23.51735],[13.5631,23.16574],[14.22918,22.61719],[14.99751,23.00539],[15.99566,23.49639],[23.99539,19.49944],[23.99715,20.00038],[24.99794,19.99661],[24.99885,21.99535],[24.99968,29.24574],[24.71117,30.17441],[25.01077,30.73861],[24.8458,31.39877],[26.92891,33.39516]]]]}},{type:"Feature",properties:{iso1A2:"MA",iso1A3:"MAR",iso1N3:"504",wikidata:"Q1028",nameEn:"Morocco",groups:["015","002","UN"],callingCodes:["212"]},geometry:{type:"MultiPolygon",coordinates:[[[[-2.27707,35.35051],[-5.10878,36.05227],[-7.2725,35.73269],[-14.43883,27.02969],[-17.27295,21.93519],[-17.21511,21.34226],[-17.02707,21.34022],[-16.9978,21.36239],[-16.44269,21.39745],[-14.78487,21.36587],[-14.47329,21.63839],[-14.48112,22.00886],[-14.1291,22.41636],[-14.10361,22.75501],[-13.75627,23.77231],[-13.00628,24.01923],[-12.92147,24.39502],[-12.12281,25.13682],[-12.06001,26.04442],[-11.62052,26.05229],[-11.38635,26.611],[-11.23622,26.72023],[-11.35695,26.8505],[-10.68417,26.90984],[-9.81998,26.71379],[-9.56957,26.90042],[-9.08698,26.98639],[-8.71787,26.9898],[-8.77527,27.66663],[-8.66879,27.6666],[-8.6715,28.71194],[-7.61585,29.36252],[-6.95824,29.50924],[-6.78351,29.44634],[-6.69965,29.51623],[-5.75616,29.61407],[-5.72121,29.52322],[-5.58831,29.48103],[-5.21671,29.95253],[-4.6058,30.28343],[-4.31774,30.53229],[-3.64735,30.67539],[-3.65418,30.85566],[-3.54944,31.0503],[-3.77103,31.14984],[-3.77647,31.31912],[-3.66386,31.39202],[-3.66314,31.6339],[-2.82784,31.79459],[-2.93873,32.06557],[-2.46166,32.16603],[-1.22829,32.07832],[-1.15735,32.12096],[-1.24453,32.1917],[-1.24998,32.32993],[-.9912,32.52467],[-1.37794,32.73628],[-1.54244,32.95499],[-1.46249,33.0499],[-1.67067,33.27084],[-1.59508,33.59929],[-1.73494,33.71721],[-1.64666,34.10405],[-1.78042,34.39018],[-1.69788,34.48056],[-1.84569,34.61907],[-1.73707,34.74226],[-1.97469,34.886],[-1.97833,34.93218],[-2.04734,34.93218],[-2.21445,35.04378],[-2.21248,35.08532],[-2.27707,35.35051]],[[-2.91909,35.33927],[-2.92272,35.27509],[-2.93893,35.26737],[-2.95065,35.26576],[-2.95431,35.2728],[-2.96516,35.27967],[-2.96826,35.28296],[-2.96507,35.28801],[-2.97035,35.28852],[-2.96978,35.29459],[-2.96648,35.30475],[-2.96038,35.31609],[-2.91909,35.33927]],[[-3.90602,35.21494],[-3.89343,35.22728],[-3.88372,35.20767],[-3.90602,35.21494]],[[-4.30191,35.17419],[-4.29436,35.17149],[-4.30112,35.17058],[-4.30191,35.17419]],[[-2.40316,35.16893],[-2.45965,35.16527],[-2.43262,35.20652],[-2.40316,35.16893]],[[-5.38491,35.92591],[-5.21179,35.90091],[-5.34379,35.8711],[-5.35844,35.87375],[-5.37338,35.88417],[-5.38491,35.92591]]]]}},{type:"Feature",properties:{iso1A2:"MC",iso1A3:"MCO",iso1N3:"492",wikidata:"Q235",nameEn:"Monaco",groups:["155","150","UN"],callingCodes:["377"]},geometry:{type:"MultiPolygon",coordinates:[[[[7.47823,43.73341],[7.4379,43.74963],[7.4389,43.75151],[7.43708,43.75197],[7.43624,43.75014],[7.43013,43.74895],[7.42809,43.74396],[7.42443,43.74087],[7.42299,43.74176],[7.42062,43.73977],[7.41233,43.73439],[7.41298,43.73311],[7.41291,43.73168],[7.41113,43.73156],[7.40903,43.7296],[7.42422,43.72209],[7.47823,43.73341]]]]}},{type:"Feature",properties:{iso1A2:"MD",iso1A3:"MDA",iso1N3:"498",wikidata:"Q217",nameEn:"Moldova",groups:["151","150","UN"],callingCodes:["373"]},geometry:{type:"MultiPolygon",coordinates:[[[[27.74422,48.45926],[27.6658,48.44034],[27.59027,48.46311],[27.5889,48.49224],[27.46942,48.454],[27.44333,48.41209],[27.37741,48.41026],[27.37604,48.44398],[27.32159,48.4434],[27.27855,48.37534],[27.13434,48.37288],[27.08078,48.43214],[27.0231,48.42485],[27.03821,48.37653],[26.93384,48.36558],[26.85556,48.41095],[26.71274,48.40388],[26.82809,48.31629],[26.79239,48.29071],[26.6839,48.35828],[26.62823,48.25804],[26.81161,48.25049],[26.87708,48.19919],[26.94265,48.1969],[26.98042,48.15752],[26.96119,48.13003],[27.04118,48.12522],[27.02985,48.09083],[27.15622,47.98538],[27.1618,47.92391],[27.29069,47.73722],[27.25519,47.71366],[27.32202,47.64009],[27.3979,47.59473],[27.47942,47.48113],[27.55731,47.46637],[27.60263,47.32507],[27.68706,47.28962],[27.73172,47.29248],[27.81892,47.1381],[28.09095,46.97621],[28.12173,46.82283],[28.24808,46.64305],[28.22281,46.50481],[28.25769,46.43334],[28.18902,46.35283],[28.19864,46.31869],[28.10937,46.22852],[28.13684,46.18099],[28.08612,46.01105],[28.13111,45.92819],[28.16568,45.6421],[28.08927,45.6051],[28.18741,45.47358],[28.21139,45.46895],[28.30201,45.54744],[28.41836,45.51715],[28.43072,45.48538],[28.51449,45.49982],[28.49252,45.56716],[28.54196,45.58062],[28.51587,45.6613],[28.47879,45.66994],[28.52823,45.73803],[28.70401,45.78019],[28.69852,45.81753],[28.78503,45.83475],[28.74383,45.96664],[28.98004,46.00385],[29.00613,46.04962],[28.94643,46.09176],[29.06656,46.19716],[28.94953,46.25852],[28.98478,46.31803],[29.004,46.31495],[28.9306,46.45699],[29.01241,46.46177],[29.02409,46.49582],[29.23547,46.55435],[29.24886,46.37912],[29.35357,46.49505],[29.49914,46.45889],[29.5939,46.35472],[29.6763,46.36041],[29.66359,46.4215],[29.74496,46.45605],[29.88329,46.35851],[29.94114,46.40114],[30.09103,46.38694],[30.16794,46.40967],[30.02511,46.45132],[29.88916,46.54302],[29.94409,46.56002],[29.9743,46.75325],[29.94522,46.80055],[29.98814,46.82358],[29.87405,46.88199],[29.75458,46.8604],[29.72986,46.92234],[29.57056,46.94766],[29.62137,47.05069],[29.61038,47.09932],[29.53044,47.07851],[29.49732,47.12878],[29.57696,47.13581],[29.54996,47.24962],[29.59665,47.25521],[29.5733,47.36508],[29.48678,47.36043],[29.47854,47.30366],[29.39889,47.30179],[29.3261,47.44664],[29.18603,47.43387],[29.11743,47.55001],[29.22414,47.60012],[29.22242,47.73607],[29.27255,47.79953],[29.20663,47.80367],[29.27804,47.88893],[29.19839,47.89261],[29.1723,47.99013],[28.9306,47.96255],[28.8414,48.03392],[28.85232,48.12506],[28.69896,48.13106],[28.53921,48.17453],[28.48428,48.0737],[28.42454,48.12047],[28.43701,48.15832],[28.38712,48.17567],[28.34009,48.13147],[28.30609,48.14018],[28.30586,48.1597],[28.34912,48.1787],[28.36996,48.20543],[28.35519,48.24957],[28.32508,48.23384],[28.2856,48.23202],[28.19314,48.20749],[28.17666,48.25963],[28.07504,48.23494],[28.09873,48.3124],[28.04527,48.32661],[27.95883,48.32368],[27.88391,48.36699],[27.87533,48.4037],[27.81902,48.41874],[27.79225,48.44244],[27.74422,48.45926]]]]}},{type:"Feature",properties:{iso1A2:"ME",iso1A3:"MNE",iso1N3:"499",wikidata:"Q236",nameEn:"Montenegro",groups:["039","150","UN"],callingCodes:["382"]},geometry:{type:"MultiPolygon",coordinates:[[[[19.22807,43.5264],[19.15685,43.53943],[19.13933,43.5282],[19.04934,43.50384],[19.01078,43.55806],[18.91379,43.50299],[18.95469,43.49367],[18.96053,43.45042],[19.01078,43.43854],[19.04071,43.397],[19.08673,43.31453],[19.08206,43.29668],[19.04233,43.30008],[19.00844,43.24988],[18.95001,43.29327],[18.95819,43.32899],[18.90911,43.36383],[18.83912,43.34795],[18.84794,43.33735],[18.85342,43.32426],[18.76538,43.29838],[18.6976,43.25243],[18.71747,43.2286],[18.66605,43.2056],[18.64735,43.14766],[18.66254,43.03928],[18.52232,43.01451],[18.49076,42.95553],[18.49661,42.89306],[18.4935,42.86433],[18.47633,42.85829],[18.45921,42.81682],[18.47324,42.74992],[18.56789,42.72074],[18.55221,42.69045],[18.54603,42.69171],[18.54841,42.68328],[18.57373,42.64429],[18.52232,42.62279],[18.55504,42.58409],[18.53751,42.57376],[18.49778,42.58409],[18.43735,42.55921],[18.44307,42.51077],[18.43588,42.48556],[18.52152,42.42302],[18.54128,42.39171],[18.45131,42.21682],[19.26406,41.74971],[19.37597,41.84849],[19.37451,41.8842],[19.33812,41.90669],[19.34601,41.95675],[19.37691,41.96977],[19.36867,42.02564],[19.37548,42.06835],[19.40687,42.10024],[19.28623,42.17745],[19.42,42.33019],[19.42352,42.36546],[19.4836,42.40831],[19.65972,42.62774],[19.73244,42.66299],[19.77375,42.58517],[19.74731,42.57422],[19.76549,42.50237],[19.82333,42.46581],[19.9324,42.51699],[20.00842,42.5109],[20.01834,42.54622],[20.07761,42.55582],[20.0969,42.65559],[20.02915,42.71147],[20.02088,42.74789],[20.04898,42.77701],[20.2539,42.76245],[20.27869,42.81945],[20.35692,42.8335],[20.34528,42.90676],[20.16415,42.97177],[20.14896,42.99058],[20.12325,42.96237],[20.05431,42.99571],[20.04729,43.02732],[19.98887,43.0538],[19.96549,43.11098],[19.92576,43.08539],[19.79255,43.11951],[19.76918,43.16044],[19.64063,43.19027],[19.62661,43.2286],[19.54598,43.25158],[19.52962,43.31623],[19.48171,43.32644],[19.44315,43.38846],[19.22229,43.47926],[19.22807,43.5264]]]]}},{type:"Feature",properties:{iso1A2:"MF",iso1A3:"MAF",iso1N3:"663",wikidata:"Q126125",nameEn:"Saint-Martin",country:"FR",groups:["Q3320166","EU","029","003","419","019","UN"],callingCodes:["590"]},geometry:{type:"MultiPolygon",coordinates:[[[[-62.93924,18.02904],[-62.62718,18.26185],[-63.35989,18.06012],[-63.33064,17.9615],[-63.13502,18.05445],[-63.11042,18.05339],[-63.09686,18.04608],[-63.07759,18.04943],[-63.0579,18.06614],[-63.04039,18.05619],[-63.02323,18.05757],[-62.93924,18.02904]]]]}},{type:"Feature",properties:{iso1A2:"MG",iso1A3:"MDG",iso1N3:"450",wikidata:"Q1019",nameEn:"Madagascar",aliases:["RM"],groups:["014","202","002","UN"],callingCodes:["261"]},geometry:{type:"MultiPolygon",coordinates:[[[[51.93891,-10.85085],[45.84651,-12.77177],[42.14681,-19.63341],[45.80092,-33.00974],[51.93891,-10.85085]]]]}},{type:"Feature",properties:{iso1A2:"MH",iso1A3:"MHL",iso1N3:"584",wikidata:"Q709",nameEn:"Marshall Islands",groups:["057","009","UN"],roadSpeedUnit:"mph",callingCodes:["692"]},geometry:{type:"MultiPolygon",coordinates:[[[[169,3.9],[173.53711,5.70687],[169.29099,15.77133],[159.04653,10.59067],[169,3.9]]]]}},{type:"Feature",properties:{iso1A2:"MK",iso1A3:"MKD",iso1N3:"807",wikidata:"Q221",nameEn:"North Macedonia",groups:["039","150","UN"],callingCodes:["389"]},geometry:{type:"MultiPolygon",coordinates:[[[[22.34773,42.31725],[22.29275,42.34913],[22.29605,42.37477],[22.16384,42.32103],[22.02908,42.29848],[21.94405,42.34669],[21.91595,42.30392],[21.84654,42.3247],[21.77176,42.2648],[21.70111,42.23789],[21.58992,42.25915],[21.52145,42.24465],[21.50823,42.27156],[21.43882,42.2789],[21.43882,42.23609],[21.38428,42.24465],[21.30496,42.1418],[21.29913,42.13954],[21.31983,42.10993],[21.22728,42.08909],[21.16614,42.19815],[21.11491,42.20794],[20.75464,42.05229],[20.76786,41.91839],[20.68523,41.85318],[20.59524,41.8818],[20.55976,41.87068],[20.57144,41.7897],[20.53405,41.78099],[20.51301,41.72433],[20.52937,41.69292],[20.51769,41.65975],[20.55508,41.58113],[20.52103,41.56473],[20.45809,41.5549],[20.45331,41.51436],[20.49039,41.49277],[20.51301,41.442],[20.55976,41.4087],[20.52119,41.34381],[20.49432,41.33679],[20.51068,41.2323],[20.59715,41.13644],[20.58546,41.11179],[20.59832,41.09066],[20.63454,41.0889],[20.65558,41.08009],[20.71634,40.91781],[20.73504,40.9081],[20.81567,40.89662],[20.83671,40.92752],[20.94305,40.92399],[20.97693,40.90103],[20.97887,40.85475],[21.15262,40.85546],[21.21105,40.8855],[21.25779,40.86165],[21.35595,40.87578],[21.41555,40.9173],[21.53007,40.90759],[21.57448,40.86076],[21.69601,40.9429],[21.7556,40.92525],[21.91102,41.04786],[21.90869,41.09191],[22.06527,41.15617],[22.1424,41.12449],[22.17629,41.15969],[22.26744,41.16409],[22.42285,41.11921],[22.5549,41.13065],[22.58295,41.11568],[22.62852,41.14385],[22.65306,41.18168],[22.71266,41.13945],[22.74538,41.16321],[22.76408,41.32225],[22.81199,41.3398],[22.93334,41.34104],[22.96331,41.35782],[22.95513,41.63265],[23.03342,41.71034],[23.01239,41.76527],[22.96682,41.77137],[22.90254,41.87587],[22.86749,42.02275],[22.67701,42.06614],[22.51224,42.15457],[22.50289,42.19527],[22.47251,42.20393],[22.38136,42.30339],[22.34773,42.31725]]]]}},{type:"Feature",properties:{iso1A2:"ML",iso1A3:"MLI",iso1N3:"466",wikidata:"Q912",nameEn:"Mali",groups:["011","202","002","UN"],callingCodes:["223"]},geometry:{type:"MultiPolygon",coordinates:[[[[-4.83423,24.99935],[-6.57191,25.0002],[-5.60725,16.49919],[-5.33435,16.33354],[-5.50165,15.50061],[-9.32979,15.50032],[-9.31106,15.69412],[-9.33314,15.7044],[-9.44673,15.60553],[-9.40447,15.4396],[-10.71721,15.4223],[-10.90932,15.11001],[-11.43483,15.62339],[-11.70705,15.51558],[-11.94903,14.76143],[-12.23936,14.76324],[-11.93043,13.84505],[-12.06897,13.71049],[-11.83345,13.33333],[-11.63025,13.39174],[-11.39935,12.97808],[-11.37536,12.40788],[-11.50006,12.17826],[-11.24136,12.01286],[-10.99758,12.24634],[-10.80355,12.1053],[-10.71897,11.91552],[-10.30604,12.24634],[-9.714,12.0226],[-9.63938,12.18312],[-9.32097,12.29009],[-9.38067,12.48446],[-9.13689,12.50875],[-8.94784,12.34842],[-8.80854,11.66715],[-8.40058,11.37466],[-8.66923,10.99397],[-8.35083,11.06234],[-8.2667,10.91762],[-8.32614,10.69273],[-8.22711,10.41722],[-8.10207,10.44649],[-7.9578,10.2703],[-7.97971,10.17117],[-7.92107,10.15577],[-7.63048,10.46334],[-7.54462,10.40921],[-7.52261,10.4655],[-7.44555,10.44602],[-7.3707,10.24677],[-7.13331,10.24877],[-7.0603,10.14711],[-7.00966,10.15794],[-6.97444,10.21644],[-7.01186,10.25111],[-6.93921,10.35291],[-6.68164,10.35074],[-6.63541,10.66893],[-6.52974,10.59104],[-6.42847,10.5694],[-6.40646,10.69922],[-6.325,10.68624],[-6.24795,10.74248],[-6.1731,10.46983],[-6.18851,10.24244],[-5.99478,10.19694],[-5.78124,10.43952],[-5.65135,10.46767],[-5.51058,10.43177],[-5.46643,10.56074],[-5.47083,10.75329],[-5.41579,10.84628],[-5.49284,11.07538],[-5.32994,11.13371],[-5.32553,11.21578],[-5.25949,11.24816],[-5.25509,11.36905],[-5.20665,11.43811],[-5.22867,11.60421],[-5.29251,11.61715],[-5.26389,11.75728],[-5.40258,11.8327],[-5.26389,11.84778],[-5.07897,11.97918],[-4.72893,12.01579],[-4.70692,12.06746],[-4.62987,12.06531],[-4.62546,12.13204],[-4.54841,12.1385],[-4.57703,12.19875],[-4.41412,12.31922],[-4.47356,12.71252],[-4.238,12.71467],[-4.21819,12.95722],[-4.34477,13.12927],[-3.96501,13.49778],[-3.90558,13.44375],[-3.96282,13.38164],[-3.7911,13.36665],[-3.54454,13.1781],[-3.4313,13.1588],[-3.43507,13.27272],[-3.23599,13.29035],[-3.28396,13.5422],[-3.26407,13.70699],[-2.88189,13.64921],[-2.90831,13.81174],[-2.84667,14.05532],[-2.66175,14.14713],[-2.47587,14.29671],[-2.10223,14.14878],[-1.9992,14.19011],[-1.97945,14.47709],[-1.68083,14.50023],[-1.32166,14.72774],[-1.05875,14.7921],[-.72004,15.08655],[-.24673,15.07805],[.06588,14.96961],[.23859,15.00135],[.72632,14.95898],[.96711,14.98275],[1.31275,15.27978],[3.01806,15.34571],[3.03134,15.42221],[3.50368,15.35934],[4.19893,16.39923],[4.21787,17.00118],[4.26762,17.00432],[4.26651,19.14224],[3.36082,18.9745],[3.12501,19.1366],[3.24648,19.81703],[1.20992,20.73533],[1.15698,21.12843],[-4.83423,24.99935]]]]}},{type:"Feature",properties:{iso1A2:"MM",iso1A3:"MMR",iso1N3:"104",wikidata:"Q836",nameEn:"Myanmar",aliases:["Burma","BU"],groups:["035","142","UN"],callingCodes:["95"]},geometry:{type:"MultiPolygon",coordinates:[[[[92.62187,21.87037],[92.59775,21.6092],[92.68152,21.28454],[92.60187,21.24615],[92.55105,21.3856],[92.43158,21.37025],[92.37939,21.47764],[92.20087,21.337],[92.17752,21.17445],[92.26071,21.05697],[92.47409,20.38654],[92.61042,13.76986],[94.6371,13.81803],[97.63455,9.60854],[98.12555,9.44056],[98.33094,9.91973],[98.47298,9.95782],[98.52291,9.92389],[98.55174,9.92804],[98.7391,10.31488],[98.81944,10.52761],[98.77275,10.62548],[98.78511,10.68351],[98.86819,10.78336],[99.0069,10.85485],[98.99701,10.92962],[99.02337,10.97217],[99.06938,10.94857],[99.32756,11.28545],[99.31573,11.32081],[99.39485,11.3925],[99.47598,11.62434],[99.5672,11.62732],[99.64108,11.78948],[99.64891,11.82699],[99.53424,12.02317],[99.56445,12.14805],[99.47519,12.1353],[99.409,12.60603],[99.29254,12.68921],[99.18905,12.84799],[99.18748,12.9898],[99.10646,13.05804],[99.12225,13.19847],[99.20617,13.20575],[99.16695,13.72621],[98.97356,14.04868],[98.56762,14.37701],[98.24874,14.83013],[98.18821,15.13125],[98.22,15.21327],[98.30446,15.30667],[98.40522,15.25268],[98.41906,15.27103],[98.39351,15.34177],[98.4866,15.39154],[98.56027,15.33471],[98.58598,15.46821],[98.541,15.65406],[98.59853,15.87197],[98.57019,16.04578],[98.69585,16.13353],[98.8376,16.11706],[98.92656,16.36425],[98.84485,16.42354],[98.68074,16.27068],[98.63817,16.47424],[98.57912,16.55983],[98.5695,16.62826],[98.51113,16.64503],[98.51833,16.676],[98.51472,16.68521],[98.51579,16.69433],[98.51043,16.70107],[98.49713,16.69022],[98.50253,16.7139],[98.46994,16.73613],[98.53833,16.81934],[98.49603,16.8446],[98.52624,16.89979],[98.39441,17.06266],[98.34566,17.04822],[98.10439,17.33847],[98.11185,17.36829],[97.91829,17.54504],[97.76407,17.71595],[97.66794,17.88005],[97.73723,17.97912],[97.60841,18.23846],[97.64116,18.29778],[97.56219,18.33885],[97.50383,18.26844],[97.34522,18.54596],[97.36444,18.57138],[97.5258,18.4939],[97.76752,18.58097],[97.73836,18.88478],[97.66487,18.9371],[97.73654,18.9812],[97.73797,19.04261],[97.83479,19.09972],[97.84024,19.22217],[97.78606,19.26769],[97.84186,19.29526],[97.78769,19.39429],[97.88423,19.5041],[97.84715,19.55782],[98.04364,19.65755],[98.03314,19.80941],[98.13829,19.78541],[98.24884,19.67876],[98.51182,19.71303],[98.56065,19.67807],[98.83661,19.80931],[98.98679,19.7419],[99.0735,20.10298],[99.20328,20.12877],[99.416,20.08614],[99.52943,20.14811],[99.5569,20.20676],[99.46077,20.36198],[99.46008,20.39673],[99.68255,20.32077],[99.81096,20.33687],[99.86383,20.44371],[99.88211,20.44488],[99.88451,20.44596],[99.89168,20.44548],[99.89301,20.44311],[99.89692,20.44789],[99.90499,20.4487],[99.91616,20.44986],[99.95721,20.46301],[100.08404,20.36626],[100.1957,20.68247],[100.36375,20.82783],[100.51079,20.82194],[100.60112,20.8347],[100.64628,20.88279],[100.50974,20.88574],[100.55281,21.02796],[100.63578,21.05639],[100.72716,21.31786],[100.80173,21.2934],[101.00234,21.39612],[101.16198,21.52808],[101.15156,21.56129],[101.11744,21.77659],[100.87265,21.67396],[100.72143,21.51898],[100.57861,21.45637],[100.4811,21.46148],[100.42892,21.54325],[100.35201,21.53176],[100.25863,21.47043],[100.18447,21.51898],[100.1625,21.48704],[100.12542,21.50365],[100.10757,21.59945],[100.17486,21.65306],[100.12679,21.70539],[100.04956,21.66843],[99.98654,21.71064],[99.94003,21.82782],[99.99084,21.97053],[99.96612,22.05965],[99.85351,22.04183],[99.47585,22.13345],[99.33166,22.09656],[99.1552,22.15874],[99.19176,22.16983],[99.17318,22.18025],[99.28771,22.4105],[99.37972,22.50188],[99.38247,22.57544],[99.31243,22.73893],[99.45654,22.85726],[99.43537,22.94086],[99.54218,22.90014],[99.52214,23.08218],[99.34127,23.13099],[99.25741,23.09025],[99.04601,23.12215],[99.05975,23.16382],[98.88597,23.18656],[98.92515,23.29535],[98.93958,23.31414],[98.87573,23.33038],[98.92104,23.36946],[98.87683,23.48995],[98.82877,23.47908],[98.80294,23.5345],[98.88396,23.59555],[98.81775,23.694],[98.82933,23.72921],[98.79607,23.77947],[98.68209,23.80492],[98.67797,23.9644],[98.89632,24.10612],[98.87998,24.15624],[98.85319,24.13042],[98.59256,24.08371],[98.54476,24.13119],[98.20666,24.11406],[98.07806,24.07988],[98.06703,24.08028],[98.0607,24.07812],[98.05671,24.07961],[98.05302,24.07408],[98.04709,24.07616],[97.99583,24.04932],[97.98691,24.03897],[97.93951,24.01953],[97.90998,24.02094],[97.88616,24.00463],[97.88414,23.99405],[97.88814,23.98605],[97.89683,23.98389],[97.89676,23.97931],[97.8955,23.97758],[97.88811,23.97446],[97.86545,23.97723],[97.84328,23.97603],[97.79416,23.95663],[97.79456,23.94836],[97.72302,23.89288],[97.64667,23.84574],[97.5247,23.94032],[97.62363,24.00506],[97.72903,24.12606],[97.75305,24.16902],[97.72799,24.18883],[97.72998,24.2302],[97.76799,24.26365],[97.71941,24.29652],[97.66723,24.30027],[97.65624,24.33781],[97.7098,24.35658],[97.66998,24.45288],[97.60029,24.4401],[97.52757,24.43748],[97.56286,24.54535],[97.56525,24.72838],[97.54675,24.74202],[97.5542,24.74943],[97.56383,24.75535],[97.56648,24.76475],[97.64354,24.79171],[97.70181,24.84557],[97.73127,24.83015],[97.76481,24.8289],[97.79949,24.85655],[97.72903,24.91332],[97.72216,25.08508],[97.77023,25.11492],[97.83614,25.2715],[97.92541,25.20815],[98.14925,25.41547],[98.12591,25.50722],[98.18084,25.56298],[98.16848,25.62739],[98.25774,25.6051],[98.31268,25.55307],[98.40606,25.61129],[98.54064,25.85129],[98.63128,25.79937],[98.70818,25.86241],[98.60763,26.01512],[98.57085,26.11547],[98.63128,26.15492],[98.66884,26.09165],[98.7329,26.17218],[98.67797,26.24487],[98.72741,26.36183],[98.77547,26.61994],[98.7333,26.85615],[98.69582,27.56499],[98.43353,27.67086],[98.42529,27.55404],[98.32641,27.51385],[98.13964,27.9478],[98.15337,28.12114],[97.90069,28.3776],[97.79632,28.33168],[97.70705,28.5056],[97.56835,28.55628],[97.50518,28.49716],[97.47085,28.2688],[97.41729,28.29783],[97.34547,28.21385],[97.31292,28.06784],[97.35412,28.06663],[97.38845,28.01329],[97.35824,27.87256],[97.29919,27.92233],[96.90112,27.62149],[96.91431,27.45752],[97.17422,27.14052],[97.14675,27.09041],[96.89132,27.17474],[96.85287,27.2065],[96.88445,27.25046],[96.73888,27.36638],[96.55761,27.29928],[96.40779,27.29818],[96.15591,27.24572],[96.04949,27.19428],[95.93002,27.04149],[95.81603,27.01335],[95.437,26.7083],[95.30339,26.65372],[95.23513,26.68499],[95.05798,26.45408],[95.12801,26.38397],[95.11428,26.1019],[95.18556,26.07338],[94.80117,25.49359],[94.68032,25.47003],[94.57458,25.20318],[94.74212,25.13606],[94.73937,25.00545],[94.60204,24.70889],[94.5526,24.70764],[94.50729,24.59281],[94.45279,24.56656],[94.32362,24.27692],[94.30215,24.23752],[94.14081,23.83333],[93.92089,23.95812],[93.80279,23.92549],[93.75952,24.0003],[93.62871,24.00922],[93.50616,23.94432],[93.46633,23.97067],[93.41415,24.07854],[93.34735,24.10151],[93.32351,24.04468],[93.36059,23.93176],[93.3908,23.92925],[93.3908,23.7622],[93.43475,23.68299],[93.38805,23.4728],[93.39981,23.38828],[93.38781,23.36139],[93.36862,23.35426],[93.38478,23.13698],[93.2878,23.00464],[93.12988,23.05772],[93.134,22.92498],[93.09417,22.69459],[93.134,22.59573],[93.11477,22.54374],[93.13537,22.45873],[93.18206,22.43716],[93.19991,22.25425],[93.14224,22.24535],[93.15734,22.18687],[93.04885,22.20595],[92.99255,22.05965],[92.99804,21.98964],[92.93899,22.02656],[92.89504,21.95143],[92.86208,22.05456],[92.70416,22.16017],[92.67532,22.03547],[92.60949,21.97638],[92.62187,21.87037]]]]}},{type:"Feature",properties:{iso1A2:"MN",iso1A3:"MNG",iso1N3:"496",wikidata:"Q711",nameEn:"Mongolia",groups:["030","142","UN"],callingCodes:["976"]},geometry:{type:"MultiPolygon",coordinates:[[[[102.14032,51.35566],[101.5044,51.50467],[101.39085,51.45753],[100.61116,51.73028],[99.89203,51.74903],[99.75578,51.90108],[99.27888,51.96876],[98.87768,52.14563],[98.74142,51.8637],[98.33222,51.71832],[98.22053,51.46579],[98.05257,51.46696],[97.83305,51.00248],[98.01472,50.86652],[97.9693,50.78044],[98.06393,50.61262],[98.31373,50.4996],[98.29481,50.33561],[97.85197,49.91339],[97.76871,49.99861],[97.56432,49.92801],[97.56811,49.84265],[97.24639,49.74737],[96.97388,49.88413],[95.80056,50.04239],[95.74757,49.97915],[95.02465,49.96941],[94.97166,50.04725],[94.6121,50.04239],[94.49477,50.17832],[94.39258,50.22193],[94.30823,50.57498],[92.99595,50.63183],[93.01109,50.79001],[92.44714,50.78762],[92.07173,50.69585],[91.86048,50.73734],[89.59711,49.90851],[89.70687,49.72535],[88.82499,49.44808],[88.42449,49.48821],[88.17223,49.46934],[88.15543,49.30314],[87.98977,49.18147],[87.81333,49.17354],[87.88171,48.95853],[87.73822,48.89582],[88.0788,48.71436],[87.96361,48.58478],[88.58939,48.34531],[88.58316,48.21893],[88.8011,48.11302],[88.93186,48.10263],[89.0711,47.98528],[89.55453,48.0423],[89.76624,47.82745],[90.06512,47.88177],[90.10871,47.7375],[90.33598,47.68303],[90.48854,47.41826],[90.48542,47.30438],[90.76108,46.99399],[90.84035,46.99525],[91.03649,46.72916],[91.0147,46.58171],[91.07696,46.57315],[90.89639,46.30711],[90.99672,46.14207],[91.03026,46.04194],[90.70907,45.73437],[90.65114,45.49314],[90.89169,45.19667],[91.64048,45.07408],[93.51161,44.95964],[94.10003,44.71016],[94.71959,44.35284],[95.01191,44.25274],[95.39772,44.2805],[95.32891,44.02407],[95.52594,43.99353],[95.89543,43.2528],[96.35658,42.90363],[96.37926,42.72055],[97.1777,42.7964],[99.50671,42.56535],[100.33297,42.68231],[100.84979,42.67087],[101.80515,42.50074],[102.07645,42.22519],[102.72403,42.14675],[103.92804,41.78246],[104.52258,41.8706],[104.51667,41.66113],[105.0123,41.63188],[106.76517,42.28741],[107.24774,42.36107],[107.29755,42.41395],[107.49681,42.46221],[107.57258,42.40898],[108.84489,42.40246],[109.00679,42.45302],[109.452,42.44842],[109.89402,42.63111],[110.08401,42.6411],[110.4327,42.78293],[111.0149,43.3289],[111.59087,43.51207],[111.79758,43.6637],[111.93776,43.68709],[111.96289,43.81596],[111.40498,44.3461],[111.76275,44.98032],[111.98695,45.09074],[112.4164,45.06858],[112.74662,44.86297],[113.70918,44.72891],[114.5166,45.27189],[114.54801,45.38337],[114.74612,45.43585],[114.94546,45.37377],[115.60329,45.44717],[116.16989,45.68603],[116.27366,45.78637],[116.24012,45.8778],[116.26678,45.96479],[116.58612,46.30211],[116.75551,46.33083],[116.83166,46.38637],[117.36609,46.36335],[117.41782,46.57862],[117.60748,46.59771],[117.69554,46.50991],[118.30534,46.73519],[118.78747,46.68689],[118.8337,46.77742],[118.89974,46.77139],[118.92616,46.72765],[119.00541,46.74273],[119.10448,46.65516],[119.24978,46.64761],[119.32827,46.61433],[119.42827,46.63783],[119.65265,46.62342],[119.68127,46.59015],[119.77373,46.62947],[119.80455,46.67631],[119.89261,46.66423],[119.91242,46.90091],[119.85518,46.92196],[119.71209,47.19192],[119.62403,47.24575],[119.56019,47.24874],[119.54918,47.29505],[119.31964,47.42617],[119.35892,47.48104],[119.13995,47.53997],[119.12343,47.66458],[118.7564,47.76947],[118.55766,47.99277],[118.29654,48.00246],[118.22677,48.03853],[118.11009,48.04],[118.03676,48.00982],[117.80196,48.01661],[117.50181,47.77216],[117.37875,47.63627],[116.9723,47.87285],[116.67405,47.89039],[116.4465,47.83662],[116.21879,47.88505],[115.94296,47.67741],[115.57128,47.91988],[115.52082,48.15367],[115.811,48.25699],[115.78876,48.51781],[116.06565,48.81716],[116.03781,48.87014],[116.71193,49.83813],[116.62502,49.92919],[116.22402,50.04477],[115.73602,49.87688],[115.26068,49.97367],[114.9703,50.19254],[114.325,50.28098],[113.20216,49.83356],[113.02647,49.60772],[110.64493,49.1816],[110.39891,49.25083],[110.24373,49.16676],[109.51325,49.22859],[109.18017,49.34709],[108.53969,49.32325],[108.27937,49.53167],[107.95387,49.66659],[107.96116,49.93191],[107.36407,49.97612],[107.1174,50.04239],[107.00007,50.1977],[106.80326,50.30177],[106.58373,50.34044],[106.51122,50.34408],[106.49628,50.32436],[106.47156,50.31909],[106.07865,50.33474],[106.05562,50.40582],[105.32528,50.4648],[103.70343,50.13952],[102.71178,50.38873],[102.32194,50.67982],[102.14032,51.35566]]]]}},{type:"Feature",properties:{iso1A2:"MO",iso1A3:"MAC",iso1N3:"446",wikidata:"Q14773",nameEn:"Macau",aliases:["Macao"],country:"CN",groups:["030","142","UN"],driveSide:"left",callingCodes:["853"]},geometry:{type:"MultiPolygon",coordinates:[[[[113.54942,22.14519],[113.54839,22.10909],[113.57191,22.07696],[113.63011,22.10782],[113.60504,22.20464],[113.57123,22.20416],[113.56865,22.20973],[113.5508,22.21672],[113.54333,22.21688],[113.54093,22.21314],[113.53593,22.2137],[113.53301,22.21235],[113.53552,22.20607],[113.52659,22.18271],[113.54093,22.15497],[113.54942,22.14519]]]]}},{type:"Feature",properties:{iso1A2:"MP",iso1A3:"MNP",iso1N3:"580",wikidata:"Q16644",nameEn:"Northern Mariana Islands",aliases:["US-MP"],country:"US",groups:["Q1352230","Q153732","057","009","UN"],roadSpeedUnit:"mph",callingCodes:["1 670"]},geometry:{type:"MultiPolygon",coordinates:[[[[135.52896,14.32623],[152.19114,13.63487],[145.05972,21.28731],[135.52896,14.32623]]]]}},{type:"Feature",properties:{iso1A2:"MQ",iso1A3:"MTQ",iso1N3:"474",wikidata:"Q17054",nameEn:"Martinique",country:"FR",groups:["Q3320166","EU","029","003","419","019","UN"],callingCodes:["596"]},geometry:{type:"MultiPolygon",coordinates:[[[[-59.95997,14.20285],[-61.07821,15.25109],[-61.69315,14.26451],[-59.95997,14.20285]]]]}},{type:"Feature",properties:{iso1A2:"MR",iso1A3:"MRT",iso1N3:"478",wikidata:"Q1025",nameEn:"Mauritania",groups:["011","202","002","UN"],callingCodes:["222"]},geometry:{type:"MultiPolygon",coordinates:[[[[-5.60725,16.49919],[-6.57191,25.0002],[-4.83423,24.99935],[-8.66674,27.31569],[-8.66721,25.99918],[-12.0002,25.9986],[-12.00251,23.4538],[-12.14969,23.41935],[-12.36213,23.3187],[-12.5741,23.28975],[-13.00412,23.02297],[-13.10753,22.89493],[-13.15313,22.75649],[-13.08438,22.53866],[-13.01525,21.33343],[-16.95474,21.33997],[-16.99806,21.12142],[-17.0357,21.05368],[-17.0396,20.9961],[-17.06781,20.92697],[-17.0695,20.85742],[-17.0471,20.76408],[-17.15288,16.07139],[-16.50854,16.09032],[-16.48967,16.0496],[-16.44814,16.09753],[-16.4429,16.20605],[-16.27016,16.51565],[-15.6509,16.50315],[-15.00557,16.64997],[-14.32144,16.61495],[-13.80075,16.13961],[-13.43135,16.09022],[-13.11029,15.52116],[-12.23936,14.76324],[-11.94903,14.76143],[-11.70705,15.51558],[-11.43483,15.62339],[-10.90932,15.11001],[-10.71721,15.4223],[-9.40447,15.4396],[-9.44673,15.60553],[-9.33314,15.7044],[-9.31106,15.69412],[-9.32979,15.50032],[-5.50165,15.50061],[-5.33435,16.33354],[-5.60725,16.49919]]]]}},{type:"Feature",properties:{iso1A2:"MS",iso1A3:"MSR",iso1N3:"500",wikidata:"Q13353",nameEn:"Montserrat",country:"GB",groups:["BOTS","029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1 664"]},geometry:{type:"MultiPolygon",coordinates:[[[[-61.91508,16.51165],[-62.1023,16.97277],[-62.58307,16.68909],[-61.91508,16.51165]]]]}},{type:"Feature",properties:{iso1A2:"MT",iso1A3:"MLT",iso1N3:"470",wikidata:"Q233",nameEn:"Malta",groups:["EU","039","150","UN"],driveSide:"left",callingCodes:["356"]},geometry:{type:"MultiPolygon",coordinates:[[[[15.70991,35.79901],[14.07544,36.41525],[13.27636,35.20764],[15.70991,35.79901]]]]}},{type:"Feature",properties:{iso1A2:"MU",iso1A3:"MUS",iso1N3:"480",wikidata:"Q1027",nameEn:"Mauritius",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["230"]},geometry:{type:"MultiPolygon",coordinates:[[[[56.09755,-9.55401],[57.50644,-31.92637],[68.4673,-19.15185],[56.09755,-9.55401]]]]}},{type:"Feature",properties:{iso1A2:"MV",iso1A3:"MDV",iso1N3:"462",wikidata:"Q826",nameEn:"Maldives",groups:["034","142","UN"],driveSide:"left",callingCodes:["960"]},geometry:{type:"MultiPolygon",coordinates:[[[[71.9161,8.55531],[72.57428,-3.7623],[76.59015,5.591],[71.9161,8.55531]]]]}},{type:"Feature",properties:{iso1A2:"MW",iso1A3:"MWI",iso1N3:"454",wikidata:"Q1020",nameEn:"Malawi",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["265"]},geometry:{type:"MultiPolygon",coordinates:[[[[33.48052,-9.62442],[33.31581,-9.48554],[33.14925,-9.49322],[32.99397,-9.36712],[32.95389,-9.40138],[33.00476,-9.5133],[33.00256,-9.63053],[33.05485,-9.61316],[33.10163,-9.66525],[33.12144,-9.58929],[33.2095,-9.61099],[33.31517,-9.82364],[33.36581,-9.81063],[33.37902,-9.9104],[33.31297,-10.05133],[33.53863,-10.20148],[33.54797,-10.36077],[33.70675,-10.56896],[33.47636,-10.78465],[33.28022,-10.84428],[33.25998,-10.88862],[33.39697,-11.15296],[33.29267,-11.3789],[33.29267,-11.43536],[33.23663,-11.40637],[33.24252,-11.59302],[33.32692,-11.59248],[33.33937,-11.91252],[33.25998,-12.14242],[33.3705,-12.34931],[33.47636,-12.32498],[33.54485,-12.35996],[33.37517,-12.54085],[33.28177,-12.54692],[33.18837,-12.61377],[33.05917,-12.59554],[32.94397,-12.76868],[32.96733,-12.88251],[33.02181,-12.88707],[32.98289,-13.12671],[33.0078,-13.19492],[32.86113,-13.47292],[32.84176,-13.52794],[32.73683,-13.57682],[32.68436,-13.55769],[32.66468,-13.60019],[32.68654,-13.64268],[32.7828,-13.64805],[32.84528,-13.71576],[32.76962,-13.77224],[32.79015,-13.80755],[32.88985,-13.82956],[32.99042,-13.95689],[33.02977,-14.05022],[33.07568,-13.98447],[33.16749,-13.93992],[33.24249,-14.00019],[33.66677,-14.61306],[33.7247,-14.4989],[33.88503,-14.51652],[33.92898,-14.47929],[34.08588,-14.48893],[34.18733,-14.43823],[34.22355,-14.43607],[34.34453,-14.3985],[34.35843,-14.38652],[34.39277,-14.39467],[34.4192,-14.43191],[34.44641,-14.47746],[34.45053,-14.49873],[34.47628,-14.53363],[34.48932,-14.53646],[34.49636,-14.55091],[34.52366,-14.5667],[34.53962,-14.59776],[34.55112,-14.64494],[34.53516,-14.67782],[34.52057,-14.68263],[34.54503,-14.74672],[34.567,-14.77345],[34.61522,-14.99583],[34.57503,-15.30619],[34.43126,-15.44778],[34.44981,-15.60864],[34.25195,-15.90321],[34.43126,-16.04737],[34.40344,-16.20923],[35.04805,-16.83167],[35.13771,-16.81687],[35.17017,-16.93521],[35.04805,-17.00027],[35.0923,-17.13235],[35.3062,-17.1244],[35.27065,-16.93817],[35.30929,-16.82871],[35.27219,-16.69402],[35.14235,-16.56812],[35.25828,-16.4792],[35.30157,-16.2211],[35.43355,-16.11371],[35.52365,-16.15414],[35.70107,-16.10147],[35.80487,-16.03907],[35.85303,-15.41913],[35.78799,-15.17428],[35.91812,-14.89514],[35.87212,-14.89478],[35.86945,-14.67481],[35.5299,-14.27714],[35.47989,-14.15594],[34.86229,-13.48958],[34.60253,-13.48487],[34.37831,-12.17408],[34.46088,-12.0174],[34.70739,-12.15652],[34.82903,-12.04837],[34.57917,-11.87849],[34.64241,-11.57499],[34.96296,-11.57354],[34.91153,-11.39799],[34.79375,-11.32245],[34.63305,-11.11731],[34.61161,-11.01611],[34.67047,-10.93796],[34.65946,-10.6828],[34.57581,-10.56271],[34.51911,-10.12279],[34.54499,-10.0678],[34.03865,-9.49398],[33.95829,-9.54066],[33.9638,-9.62206],[33.93298,-9.71647],[33.76677,-9.58516],[33.48052,-9.62442]]]]}},{type:"Feature",properties:{iso1A2:"MX",iso1A3:"MEX",iso1N3:"484",wikidata:"Q96",nameEn:"Mexico",groups:["013","003","419","019","UN"],callingCodes:["52"]},geometry:{type:"MultiPolygon",coordinates:[[[[-117.1243,32.53427],[-118.48109,32.5991],[-120.12904,18.41089],[-92.37213,14.39277],[-92.2261,14.53423],[-92.1454,14.6804],[-92.18161,14.84147],[-92.1423,14.88647],[-92.1454,14.98143],[-92.0621,15.07406],[-92.20983,15.26077],[-91.73182,16.07371],[-90.44567,16.07573],[-90.40499,16.40524],[-90.61212,16.49832],[-90.69064,16.70697],[-91.04436,16.92175],[-91.43809,17.25373],[-90.99199,17.25192],[-90.98678,17.81655],[-89.14985,17.81563],[-89.15105,17.95104],[-89.03839,18.0067],[-88.8716,17.89535],[-88.71505,18.0707],[-88.48242,18.49164],[-88.3268,18.49048],[-88.29909,18.47591],[-88.26593,18.47617],[-88.03238,18.41778],[-88.03165,18.16657],[-87.90671,18.15213],[-87.87604,18.18313],[-87.86657,18.19971],[-87.85693,18.18266],[-87.84815,18.18511],[-86.92368,17.61462],[-85.9092,21.8218],[-96.92418,25.97377],[-97.13927,25.96583],[-97.35946,25.92189],[-97.37332,25.83854],[-97.42511,25.83969],[-97.45669,25.86874],[-97.49828,25.89877],[-97.52025,25.88518],[-97.66511,26.01708],[-97.95155,26.0625],[-97.97017,26.05232],[-98.24603,26.07191],[-98.27075,26.09457],[-98.30491,26.10475],[-98.35126,26.15129],[-99.00546,26.3925],[-99.03053,26.41249],[-99.08477,26.39849],[-99.53573,27.30926],[-99.49744,27.43746],[-99.482,27.47128],[-99.48045,27.49016],[-99.50208,27.50021],[-99.52955,27.49747],[-99.51478,27.55836],[-99.55409,27.61314],[-100.50029,28.66117],[-100.51222,28.70679],[-100.5075,28.74066],[-100.52313,28.75598],[-100.59809,28.88197],[-100.63689,28.90812],[-100.67294,29.09744],[-100.79696,29.24688],[-100.87982,29.296],[-100.94056,29.33371],[-100.94579,29.34523],[-100.96725,29.3477],[-101.01128,29.36947],[-101.05686,29.44738],[-101.47277,29.7744],[-102.60596,29.8192],[-103.15787,28.93865],[-104.37752,29.54255],[-104.39363,29.55396],[-104.3969,29.57105],[-104.5171,29.64671],[-104.77674,30.4236],[-106.00363,31.39181],[-106.09025,31.40569],[-106.20346,31.46305],[-106.23711,31.51262],[-106.24612,31.54193],[-106.28084,31.56173],[-106.30305,31.62154],[-106.33419,31.66303],[-106.34864,31.69663],[-106.3718,31.71165],[-106.38003,31.73151],[-106.41773,31.75196],[-106.43419,31.75478],[-106.45244,31.76523],[-106.46726,31.75998],[-106.47298,31.75054],[-106.48815,31.74769],[-106.50111,31.75714],[-106.50962,31.76155],[-106.51251,31.76922],[-106.52266,31.77509],[-106.529,31.784],[-108.20899,31.78534],[-108.20979,31.33316],[-111.07523,31.33232],[-114.82011,32.49609],[-114.79524,32.55731],[-114.81141,32.55543],[-114.80584,32.62028],[-114.76736,32.64094],[-114.71871,32.71894],[-115.88053,32.63624],[-117.1243,32.53427]]]]}},{type:"Feature",properties:{iso1A2:"MY",iso1A3:"MYS",iso1N3:"458",wikidata:"Q833",nameEn:"Malaysia"},geometry:null},{type:"Feature",properties:{iso1A2:"MZ",iso1A3:"MOZ",iso1N3:"508",wikidata:"Q1029",nameEn:"Mozambique",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["258"]},geometry:{type:"MultiPolygon",coordinates:[[[[40.74206,-10.25691],[40.44265,-10.4618],[40.00295,-10.80255],[39.58249,-10.96043],[39.24395,-11.17433],[38.88996,-11.16978],[38.47258,-11.4199],[38.21598,-11.27289],[37.93618,-11.26228],[37.8388,-11.3123],[37.76614,-11.53352],[37.3936,-11.68949],[36.80309,-11.56836],[36.62068,-11.72884],[36.19094,-11.70008],[36.19094,-11.57593],[35.82767,-11.41081],[35.63599,-11.55927],[34.96296,-11.57354],[34.64241,-11.57499],[34.57917,-11.87849],[34.82903,-12.04837],[34.70739,-12.15652],[34.46088,-12.0174],[34.37831,-12.17408],[34.60253,-13.48487],[34.86229,-13.48958],[35.47989,-14.15594],[35.5299,-14.27714],[35.86945,-14.67481],[35.87212,-14.89478],[35.91812,-14.89514],[35.78799,-15.17428],[35.85303,-15.41913],[35.80487,-16.03907],[35.70107,-16.10147],[35.52365,-16.15414],[35.43355,-16.11371],[35.30157,-16.2211],[35.25828,-16.4792],[35.14235,-16.56812],[35.27219,-16.69402],[35.30929,-16.82871],[35.27065,-16.93817],[35.3062,-17.1244],[35.0923,-17.13235],[35.04805,-17.00027],[35.17017,-16.93521],[35.13771,-16.81687],[35.04805,-16.83167],[34.40344,-16.20923],[34.43126,-16.04737],[34.25195,-15.90321],[34.44981,-15.60864],[34.43126,-15.44778],[34.57503,-15.30619],[34.61522,-14.99583],[34.567,-14.77345],[34.54503,-14.74672],[34.52057,-14.68263],[34.53516,-14.67782],[34.55112,-14.64494],[34.53962,-14.59776],[34.52366,-14.5667],[34.49636,-14.55091],[34.48932,-14.53646],[34.47628,-14.53363],[34.45053,-14.49873],[34.44641,-14.47746],[34.4192,-14.43191],[34.39277,-14.39467],[34.35843,-14.38652],[34.34453,-14.3985],[34.22355,-14.43607],[34.18733,-14.43823],[34.08588,-14.48893],[33.92898,-14.47929],[33.88503,-14.51652],[33.7247,-14.4989],[33.66677,-14.61306],[33.24249,-14.00019],[30.22098,-14.99447],[30.41902,-15.62269],[30.42568,-15.9962],[30.91597,-15.99924],[30.97761,-16.05848],[31.13171,-15.98019],[31.30563,-16.01193],[31.42451,-16.15154],[31.67988,-16.19595],[31.90223,-16.34388],[31.91324,-16.41569],[32.02772,-16.43892],[32.28529,-16.43892],[32.42838,-16.4727],[32.71017,-16.59932],[32.69917,-16.66893],[32.78943,-16.70267],[32.97655,-16.70689],[32.91051,-16.89446],[32.84113,-16.92259],[32.96554,-17.11971],[33.00517,-17.30477],[33.0426,-17.3468],[32.96554,-17.48964],[32.98536,-17.55891],[33.0492,-17.60298],[32.94133,-17.99705],[33.03159,-18.35054],[33.02278,-18.4696],[32.88629,-18.51344],[32.88629,-18.58023],[32.95013,-18.69079],[32.9017,-18.7992],[32.82465,-18.77419],[32.70137,-18.84712],[32.73439,-18.92628],[32.69917,-18.94293],[32.72118,-19.02204],[32.84006,-19.0262],[32.87088,-19.09279],[32.85107,-19.29238],[32.77966,-19.36098],[32.78282,-19.47513],[32.84446,-19.48343],[32.84666,-19.68462],[32.95013,-19.67219],[33.06461,-19.77787],[33.01178,-20.02007],[32.93032,-20.03868],[32.85987,-20.16686],[32.85987,-20.27841],[32.66174,-20.56106],[32.55167,-20.56312],[32.48122,-20.63319],[32.51644,-20.91929],[32.37115,-21.133],[32.48236,-21.32873],[32.41234,-21.31246],[31.38336,-22.36919],[31.30611,-22.422],[31.55779,-23.176],[31.56539,-23.47268],[31.67942,-23.60858],[31.70223,-23.72695],[31.77445,-23.90082],[31.87707,-23.95293],[31.90368,-24.18892],[31.9835,-24.29983],[32.03196,-25.10785],[32.01676,-25.38117],[31.97875,-25.46356],[32.00631,-25.65044],[31.92649,-25.84216],[31.974,-25.95387],[32.00916,-25.999],[32.08599,-26.00978],[32.10435,-26.15656],[32.07352,-26.40185],[32.13409,-26.5317],[32.13315,-26.84345],[32.19409,-26.84032],[32.22302,-26.84136],[32.29584,-26.852],[32.35222,-26.86027],[34.51034,-26.91792],[42.99868,-12.65261],[40.74206,-10.25691]]]]}},{type:"Feature",properties:{iso1A2:"NA",iso1A3:"NAM",iso1N3:"516",wikidata:"Q1030",nameEn:"Namibia",groups:["018","202","002","UN"],driveSide:"left",callingCodes:["264"]},geometry:{type:"MultiPolygon",coordinates:[[[[14.28743,-17.38814],[13.95896,-17.43141],[13.36212,-16.98048],[12.97145,-16.98567],[12.52111,-17.24495],[12.07076,-17.15165],[11.75063,-17.25013],[10.5065,-17.25284],[12.51595,-32.27486],[16.45332,-28.63117],[16.46592,-28.57126],[16.59922,-28.53246],[16.90446,-28.057],[17.15405,-28.08573],[17.4579,-28.68718],[18.99885,-28.89165],[19.99882,-28.42622],[19.99817,-24.76768],[19.99912,-21.99991],[20.99751,-22.00026],[20.99904,-18.31743],[21.45556,-18.31795],[23.0996,-18.00075],[23.29618,-17.99855],[23.61088,-18.4881],[24.19416,-18.01919],[24.40577,-17.95726],[24.57485,-18.07151],[24.6303,-17.9863],[24.71887,-17.9218],[24.73364,-17.89338],[24.95586,-17.79674],[25.05895,-17.84452],[25.16882,-17.78253],[25.26433,-17.79571],[25.00198,-17.58221],[24.70864,-17.49501],[24.5621,-17.52963],[24.38712,-17.46818],[24.32811,-17.49082],[24.23619,-17.47489],[23.47474,-17.62877],[21.42741,-18.02787],[21.14283,-17.94318],[18.84226,-17.80375],[18.39229,-17.38927],[14.28743,-17.38814]]]]}},{type:"Feature",properties:{iso1A2:"NC",iso1A3:"NCL",iso1N3:"540",wikidata:"Q33788",nameEn:"New Caledonia",country:"FR",groups:["EU","Q1451600","054","009","UN"],callingCodes:["687"]},geometry:{type:"MultiPolygon",coordinates:[[[[159.77159,-28.41151],[174.245,-23.1974],[156.73836,-14.50464],[159.77159,-28.41151]]]]}},{type:"Feature",properties:{iso1A2:"NE",iso1A3:"NER",iso1N3:"562",wikidata:"Q1032",nameEn:"Niger",aliases:["RN"],groups:["011","202","002","UN"],callingCodes:["227"]},geometry:{type:"MultiPolygon",coordinates:[[[[14.22918,22.61719],[13.5631,23.16574],[11.96886,23.51735],[7.48273,20.87258],[7.38361,20.79165],[5.8153,19.45101],[4.26651,19.14224],[4.26762,17.00432],[4.21787,17.00118],[4.19893,16.39923],[3.50368,15.35934],[3.03134,15.42221],[3.01806,15.34571],[1.31275,15.27978],[.96711,14.98275],[.72632,14.95898],[.23859,15.00135],[.16936,14.51654],[.38051,14.05575],[.61924,13.68491],[.77377,13.6866],[.77637,13.64442],[.99514,13.5668],[1.02813,13.46635],[1.20088,13.38951],[1.24429,13.39373],[1.28509,13.35488],[1.24516,13.33968],[1.21217,13.37853],[1.18873,13.31771],[.99253,13.37515],[.99167,13.10727],[2.26349,12.41915],[2.05785,12.35539],[2.39723,11.89473],[2.45824,11.98672],[2.39657,12.10952],[2.37783,12.24804],[2.6593,12.30631],[2.83978,12.40585],[3.25352,12.01467],[3.31613,11.88495],[3.48187,11.86092],[3.59375,11.70269],[3.61075,11.69181],[3.67988,11.75429],[3.67122,11.80865],[3.63063,11.83042],[3.61955,11.91847],[3.67775,11.97599],[3.63136,12.11826],[3.66364,12.25884],[3.65111,12.52223],[3.94339,12.74979],[4.10006,12.98862],[4.14367,13.17189],[4.14186,13.47586],[4.23456,13.47725],[4.4668,13.68286],[4.87425,13.78],[4.9368,13.7345],[5.07396,13.75052],[5.21026,13.73627],[5.27797,13.75474],[5.35437,13.83567],[5.52957,13.8845],[6.15771,13.64564],[6.27411,13.67835],[6.43053,13.6006],[6.69617,13.34057],[6.94445,12.99825],[7.0521,13.00076],[7.12676,13.02445],[7.22399,13.1293],[7.39241,13.09717],[7.81085,13.34902],[8.07997,13.30847],[8.25185,13.20369],[8.41853,13.06166],[8.49493,13.07519],[8.60431,13.01768],[8.64251,12.93985],[8.97413,12.83661],[9.65995,12.80614],[10.00373,13.18171],[10.19993,13.27129],[10.46731,13.28819],[10.66004,13.36422],[11.4535,13.37773],[11.88236,13.2527],[12.04209,13.14452],[12.16189,13.10056],[12.19315,13.12423],[12.47095,13.06673],[12.58033,13.27805],[12.6793,13.29157],[12.87376,13.48919],[13.05085,13.53984],[13.19844,13.52802],[13.33213,13.71195],[13.6302,13.71094],[13.47559,14.40881],[13.48259,14.46704],[13.68573,14.55276],[13.67878,14.64013],[13.809,14.72915],[13.78991,14.87519],[13.86301,15.04043],[14.37425,15.72591],[15.50373,16.89649],[15.6032,18.77402],[15.75098,19.93002],[15.99632,20.35364],[15.6721,20.70069],[15.59841,20.74039],[15.56004,20.79488],[15.55382,20.86507],[15.57248,20.92138],[15.62515,20.95395],[15.28332,21.44557],[15.20213,21.49365],[15.19692,21.99339],[14.99751,23.00539],[14.22918,22.61719]]]]}},{type:"Feature",properties:{iso1A2:"NF",iso1A3:"NFK",iso1N3:"574",wikidata:"Q31057",nameEn:"Norfolk Island",country:"AU",groups:["053","009","UN"],driveSide:"left",callingCodes:["672 3"]},geometry:{type:"MultiPolygon",coordinates:[[[[169.82316,-28.16667],[166.29505,-28.29175],[167.94076,-30.60745],[169.82316,-28.16667]]]]}},{type:"Feature",properties:{iso1A2:"NG",iso1A3:"NGA",iso1N3:"566",wikidata:"Q1033",nameEn:"Nigeria",groups:["011","202","002","UN"],callingCodes:["234"]},geometry:{type:"MultiPolygon",coordinates:[[[[6.15771,13.64564],[5.52957,13.8845],[5.35437,13.83567],[5.27797,13.75474],[5.21026,13.73627],[5.07396,13.75052],[4.9368,13.7345],[4.87425,13.78],[4.4668,13.68286],[4.23456,13.47725],[4.14186,13.47586],[4.14367,13.17189],[4.10006,12.98862],[3.94339,12.74979],[3.65111,12.52223],[3.66364,12.25884],[3.63136,12.11826],[3.67775,11.97599],[3.61955,11.91847],[3.63063,11.83042],[3.67122,11.80865],[3.67988,11.75429],[3.61075,11.69181],[3.59375,11.70269],[3.49175,11.29765],[3.71505,11.13015],[3.84243,10.59316],[3.78292,10.40538],[3.6844,10.46351],[3.57275,10.27185],[3.66908,10.18136],[3.54429,9.87739],[3.35383,9.83641],[3.32099,9.78032],[3.34726,9.70696],[3.25093,9.61632],[3.13928,9.47167],[3.14147,9.28375],[3.08017,9.10006],[2.77907,9.06924],[2.67523,7.87825],[2.73095,7.7755],[2.73405,7.5423],[2.78668,7.5116],[2.79442,7.43486],[2.74489,7.42565],[2.76965,7.13543],[2.71702,6.95722],[2.74024,6.92802],[2.73405,6.78508],[2.78823,6.76356],[2.78204,6.70514],[2.7325,6.64057],[2.74334,6.57291],[2.70464,6.50831],[2.70566,6.38038],[2.74181,6.13349],[5.87055,3.78489],[8.34397,4.30689],[8.60302,4.87353],[8.78027,5.1243],[8.92029,5.58403],[8.83687,5.68483],[8.88156,5.78857],[8.84209,5.82562],[9.51757,6.43874],[9.70674,6.51717],[9.77824,6.79088],[9.86314,6.77756],[10.15135,7.03781],[10.21466,6.88996],[10.53639,6.93432],[10.57214,7.16345],[10.59746,7.14719],[10.60789,7.06885],[10.83727,6.9358],[10.8179,6.83377],[10.94302,6.69325],[11.09644,6.68437],[11.09495,6.51717],[11.42041,6.53789],[11.42264,6.5882],[11.51499,6.60892],[11.57755,6.74059],[11.55818,6.86186],[11.63117,6.9905],[11.87396,7.09398],[11.84864,7.26098],[11.93205,7.47812],[12.01844,7.52981],[11.99908,7.67302],[12.20909,7.97553],[12.19271,8.10826],[12.24782,8.17904],[12.26123,8.43696],[12.4489,8.52536],[12.44146,8.6152],[12.68722,8.65938],[12.71701,8.7595],[12.79,8.75361],[12.81085,8.91992],[12.90022,9.11411],[12.91958,9.33905],[12.85628,9.36698],[13.02385,9.49334],[13.22642,9.57266],[13.25472,9.76795],[13.29941,9.8296],[13.25025,9.86042],[13.24132,9.91031],[13.27409,9.93232],[13.286,9.9822],[13.25323,10.00127],[13.25025,10.03647],[13.34111,10.12299],[13.43644,10.13326],[13.5705,10.53183],[13.54964,10.61236],[13.73434,10.9255],[13.70753,10.94451],[13.7403,11.00593],[13.78945,11.00154],[13.97489,11.30258],[14.17821,11.23831],[14.6124,11.51283],[14.64591,11.66166],[14.55207,11.72001],[14.61612,11.7798],[14.6474,12.17466],[14.4843,12.35223],[14.22215,12.36533],[14.17523,12.41916],[14.20204,12.53405],[14.08251,13.0797],[13.6302,13.71094],[13.33213,13.71195],[13.19844,13.52802],[13.05085,13.53984],[12.87376,13.48919],[12.6793,13.29157],[12.58033,13.27805],[12.47095,13.06673],[12.19315,13.12423],[12.16189,13.10056],[12.04209,13.14452],[11.88236,13.2527],[11.4535,13.37773],[10.66004,13.36422],[10.46731,13.28819],[10.19993,13.27129],[10.00373,13.18171],[9.65995,12.80614],[8.97413,12.83661],[8.64251,12.93985],[8.60431,13.01768],[8.49493,13.07519],[8.41853,13.06166],[8.25185,13.20369],[8.07997,13.30847],[7.81085,13.34902],[7.39241,13.09717],[7.22399,13.1293],[7.12676,13.02445],[7.0521,13.00076],[6.94445,12.99825],[6.69617,13.34057],[6.43053,13.6006],[6.27411,13.67835],[6.15771,13.64564]]]]}},{type:"Feature",properties:{iso1A2:"NI",iso1A3:"NIC",iso1N3:"558",wikidata:"Q811",nameEn:"Nicaragua",groups:["013","003","419","019","UN"],callingCodes:["505"]},geometry:{type:"MultiPolygon",coordinates:[[[[-83.13724,15.00002],[-83.49268,15.01158],[-83.62101,14.89448],[-83.89551,14.76697],[-84.10584,14.76353],[-84.48373,14.63249],[-84.70119,14.68078],[-84.82596,14.82212],[-84.90082,14.80489],[-85.1575,14.53934],[-85.18602,14.24929],[-85.32149,14.2562],[-85.45762,14.11304],[-85.73964,13.9698],[-85.75477,13.8499],[-86.03458,13.99181],[-86.00685,14.08474],[-86.14801,14.04317],[-86.35219,13.77157],[-86.76812,13.79605],[-86.71267,13.30348],[-86.87066,13.30641],[-86.93383,13.18677],[-86.93197,13.05313],[-87.03785,12.98682],[-87.06306,13.00892],[-87.37107,12.98646],[-87.55124,13.12523],[-87.7346,13.13228],[-88.11443,12.63306],[-86.14524,11.09059],[-85.71223,11.06868],[-85.60529,11.22607],[-84.92439,10.9497],[-84.68197,11.07568],[-83.90838,10.71161],[-83.66597,10.79916],[-83.68276,11.01562],[-82.56142,11.91792],[-82.06974,14.49418],[-83.04763,15.03256],[-83.13724,15.00002]]]]}},{type:"Feature",properties:{iso1A2:"NL",iso1A3:"NLD",iso1N3:"528",wikidata:"Q29999",nameEn:"Kingdom of the Netherlands"},geometry:null},{type:"Feature",properties:{iso1A2:"NO",iso1A3:"NOR",iso1N3:"578",wikidata:"Q20",nameEn:"Norway"},geometry:null},{type:"Feature",properties:{iso1A2:"NP",iso1A3:"NPL",iso1N3:"524",wikidata:"Q837",nameEn:"Nepal",groups:["034","142","UN"],driveSide:"left",callingCodes:["977"]},geometry:{type:"MultiPolygon",coordinates:[[[[88.13378,27.88015],[87.82681,27.95248],[87.72718,27.80938],[87.56996,27.84517],[87.11696,27.84104],[87.03757,27.94835],[86.75582,28.04182],[86.74181,28.10638],[86.56265,28.09569],[86.51609,27.96623],[86.42736,27.91122],[86.22966,27.9786],[86.18607,28.17364],[86.088,28.09264],[86.08333,28.02121],[86.12069,27.93047],[86.06309,27.90021],[85.94946,27.9401],[85.97813,27.99023],[85.90743,28.05144],[85.84672,28.18187],[85.74864,28.23126],[85.71907,28.38064],[85.69105,28.38475],[85.60854,28.25045],[85.59765,28.30529],[85.4233,28.32996],[85.38127,28.28336],[85.10729,28.34092],[85.18668,28.54076],[85.19135,28.62825],[85.06059,28.68562],[84.85511,28.58041],[84.62317,28.73887],[84.47528,28.74023],[84.2231,28.89571],[84.24801,29.02783],[84.18107,29.23451],[83.97559,29.33091],[83.82303,29.30513],[83.63156,29.16249],[83.44787,29.30513],[83.28131,29.56813],[83.07116,29.61957],[82.73024,29.81695],[82.5341,29.9735],[82.38622,30.02608],[82.16984,30.0692],[82.19475,30.16884],[82.10757,30.23745],[82.10135,30.35439],[81.99082,30.33423],[81.62033,30.44703],[81.5459,30.37688],[81.41018,30.42153],[81.39928,30.21862],[81.33355,30.15303],[81.2623,30.14596],[81.29032,30.08806],[81.24362,30.0126],[81.12842,30.01395],[81.03953,30.20059],[80.92547,30.17193],[80.91143,30.22173],[80.86673,30.17321],[80.8778,30.13384],[80.67076,29.95732],[80.60226,29.95732],[80.57179,29.91422],[80.56247,29.86661],[80.48997,29.79566],[80.43458,29.80466],[80.41554,29.79451],[80.36803,29.73865],[80.38428,29.68513],[80.41858,29.63581],[80.37939,29.57098],[80.24322,29.44299],[80.31428,29.30784],[80.28626,29.20327],[80.24112,29.21414],[80.26602,29.13938],[80.23178,29.11626],[80.18085,29.13649],[80.05743,28.91479],[80.06957,28.82763],[80.12125,28.82346],[80.37188,28.63371],[80.44504,28.63098],[80.52443,28.54897],[80.50575,28.6706],[80.55142,28.69182],[81.03471,28.40054],[81.19847,28.36284],[81.32923,28.13521],[81.38683,28.17638],[81.48179,28.12148],[81.47867,28.08303],[81.91223,27.84995],[81.97214,27.93322],[82.06554,27.92222],[82.46405,27.6716],[82.70378,27.72122],[82.74119,27.49838],[82.93261,27.50328],[82.94938,27.46036],[83.19413,27.45632],[83.27197,27.38309],[83.2673,27.36235],[83.29999,27.32778],[83.35136,27.33885],[83.38872,27.39276],[83.39495,27.4798],[83.61288,27.47013],[83.85595,27.35797],[83.86182,27.4241],[83.93306,27.44939],[84.02229,27.43836],[84.10791,27.52399],[84.21376,27.45218],[84.25735,27.44941],[84.29315,27.39],[84.62161,27.33885],[84.69166,27.21294],[84.64496,27.04669],[84.793,26.9968],[84.82913,27.01989],[84.85754,26.98984],[84.96687,26.95599],[84.97186,26.9149],[85.00536,26.89523],[85.05592,26.88991],[85.02635,26.85381],[85.15883,26.86966],[85.19291,26.86909],[85.18046,26.80519],[85.21159,26.75933],[85.34302,26.74954],[85.47752,26.79292],[85.56471,26.84133],[85.5757,26.85955],[85.59461,26.85161],[85.61621,26.86721],[85.66239,26.84822],[85.73483,26.79613],[85.72315,26.67471],[85.76907,26.63076],[85.83126,26.61134],[85.85126,26.60866],[85.8492,26.56667],[86.02729,26.66756],[86.13596,26.60651],[86.22513,26.58863],[86.26235,26.61886],[86.31564,26.61925],[86.49726,26.54218],[86.54258,26.53819],[86.57073,26.49825],[86.61313,26.48658],[86.62686,26.46891],[86.69124,26.45169],[86.74025,26.42386],[86.76797,26.45892],[86.82898,26.43919],[86.94543,26.52076],[86.95912,26.52076],[87.01559,26.53228],[87.04691,26.58685],[87.0707,26.58571],[87.09147,26.45039],[87.14751,26.40542],[87.18863,26.40558],[87.24682,26.4143],[87.26587,26.40592],[87.26568,26.37294],[87.34568,26.34787],[87.37314,26.40815],[87.46566,26.44058],[87.51571,26.43106],[87.55274,26.40596],[87.59175,26.38342],[87.66803,26.40294],[87.67893,26.43501],[87.76004,26.40711],[87.7918,26.46737],[87.84193,26.43663],[87.89085,26.48565],[87.90115,26.44923],[88.00895,26.36029],[88.09414,26.43732],[88.09963,26.54195],[88.16452,26.64111],[88.1659,26.68177],[88.19107,26.75516],[88.12302,26.95324],[88.13422,26.98705],[88.11719,26.98758],[87.9887,27.11045],[88.01587,27.21388],[88.01646,27.21612],[88.07277,27.43007],[88.04008,27.49223],[88.19107,27.79285],[88.1973,27.85067],[88.13378,27.88015]]]]}},{type:"Feature",properties:{iso1A2:"NR",iso1A3:"NRU",iso1N3:"520",wikidata:"Q697",nameEn:"Nauru",groups:["057","009","UN"],driveSide:"left",callingCodes:["674"]},geometry:{type:"MultiPolygon",coordinates:[[[[166.95155,.14829],[166.21778,-.7977],[167.60042,-.88259],[166.95155,.14829]]]]}},{type:"Feature",properties:{iso1A2:"NU",iso1A3:"NIU",iso1N3:"570",wikidata:"Q34020",nameEn:"Niue",country:"NZ",groups:["061","009","UN"],driveSide:"left",callingCodes:["683"]},geometry:{type:"MultiPolygon",coordinates:[[[[-170.83899,-18.53439],[-170.82274,-20.44429],[-168.63096,-18.60489],[-170.83899,-18.53439]]]]}},{type:"Feature",properties:{iso1A2:"NZ",iso1A3:"NZL",iso1N3:"554",wikidata:"Q664",nameEn:"New Zealand"},geometry:null},{type:"Feature",properties:{iso1A2:"OM",iso1A3:"OMN",iso1N3:"512",wikidata:"Q842",nameEn:"Oman",groups:["145","142","UN"],callingCodes:["968"]},geometry:{type:"MultiPolygon",coordinates:[[[[56.82555,25.7713],[56.79239,26.41236],[56.68954,26.76645],[56.2644,26.58649],[55.81777,26.18798],[56.08666,26.05038],[56.15498,26.06828],[56.19334,25.9795],[56.13963,25.82765],[56.17416,25.77239],[56.13579,25.73524],[56.14826,25.66351],[56.18363,25.65508],[56.20473,25.61119],[56.25365,25.60211],[56.26636,25.60643],[56.25341,25.61443],[56.26534,25.62825],[56.82555,25.7713]]],[[[56.26062,25.33108],[56.23362,25.31253],[56.25008,25.28843],[56.24465,25.27505],[56.20838,25.25668],[56.20872,25.24104],[56.24341,25.22867],[56.27628,25.23404],[56.34438,25.26653],[56.35172,25.30681],[56.3111,25.30107],[56.3005,25.31815],[56.26062,25.33108]],[[56.28423,25.26344],[56.27086,25.26128],[56.2716,25.27916],[56.28102,25.28486],[56.29379,25.2754],[56.28423,25.26344]]],[[[61.45114,22.55394],[56.86325,25.03856],[56.3227,24.97284],[56.34873,24.93205],[56.30269,24.88334],[56.20568,24.85063],[56.20062,24.78565],[56.13684,24.73699],[56.06128,24.74457],[56.03535,24.81161],[55.97836,24.87673],[55.97467,24.89639],[56.05106,24.87461],[56.05715,24.95727],[55.96316,25.00857],[55.90849,24.96771],[55.85094,24.96858],[55.81116,24.9116],[55.81348,24.80102],[55.83408,24.77858],[55.83271,24.68567],[55.76461,24.5287],[55.83271,24.41521],[55.83395,24.32776],[55.80747,24.31069],[55.79145,24.27914],[55.76781,24.26209],[55.75939,24.26114],[55.75382,24.2466],[55.75257,24.23466],[55.76558,24.23227],[55.77658,24.23476],[55.83367,24.20193],[55.95472,24.2172],[56.01799,24.07426],[55.8308,24.01633],[55.73301,24.05994],[55.48677,23.94946],[55.57358,23.669],[55.22634,23.10378],[55.2137,22.71065],[55.66469,21.99658],[54.99756,20.00083],[52.00311,19.00083],[52.78009,17.35124],[52.74267,17.29519],[52.81185,17.28568],[57.49095,8.14549],[61.45114,22.55394]]]]}},{type:"Feature",properties:{iso1A2:"PA",iso1A3:"PAN",iso1N3:"591",wikidata:"Q804",nameEn:"Panama",groups:["013","003","419","019","UN"],callingCodes:["507"]},geometry:{type:"MultiPolygon",coordinates:[[[[-77.32389,8.81247],[-77.58292,9.22278],[-78.79327,9.93766],[-82.51044,9.65379],[-82.56507,9.57279],[-82.61345,9.49881],[-82.66667,9.49746],[-82.77206,9.59573],[-82.87919,9.62645],[-82.84871,9.4973],[-82.93516,9.46741],[-82.93516,9.07687],[-82.72126,8.97125],[-82.88253,8.83331],[-82.91377,8.774],[-82.92068,8.74832],[-82.8794,8.6981],[-82.82739,8.60153],[-82.83975,8.54755],[-82.83322,8.52464],[-82.8382,8.48117],[-82.8679,8.44042],[-82.93056,8.43465],[-83.05209,8.33394],[-82.9388,8.26634],[-82.88641,8.10219],[-82.89137,8.05755],[-82.89978,8.04083],[-82.94503,7.93865],[-82.13751,6.97312],[-78.06168,7.07793],[-77.89178,7.22681],[-77.81426,7.48319],[-77.72157,7.47612],[-77.72514,7.72348],[-77.57185,7.51147],[-77.17257,7.97422],[-77.45064,8.49991],[-77.32389,8.81247]]]]}},{type:"Feature",properties:{iso1A2:"PE",iso1A3:"PER",iso1N3:"604",wikidata:"Q419",nameEn:"Peru",groups:["005","419","019","UN"],callingCodes:["51"]},geometry:{type:"MultiPolygon",coordinates:[[[[-74.26675,-.97229],[-74.42701,-.50218],[-75.18513,-.0308],[-75.25764,-.11943],[-75.40192,-.17196],[-75.61997,-.10012],[-75.60169,-.18708],[-75.53615,-.19213],[-75.22862,-.60048],[-75.22862,-.95588],[-75.3872,-.9374],[-75.57429,-1.55961],[-76.05203,-2.12179],[-76.6324,-2.58397],[-77.94147,-3.05454],[-78.19369,-3.36431],[-78.14324,-3.47653],[-78.22642,-3.51113],[-78.24589,-3.39907],[-78.34362,-3.38633],[-78.68394,-4.60754],[-78.85149,-4.66795],[-79.01659,-5.01481],[-79.1162,-4.97774],[-79.26248,-4.95167],[-79.59402,-4.46848],[-79.79722,-4.47558],[-80.13945,-4.29786],[-80.39256,-4.48269],[-80.46386,-4.41516],[-80.32114,-4.21323],[-80.45023,-4.20938],[-80.4822,-4.05477],[-80.46386,-4.01342],[-80.13232,-3.90317],[-80.19926,-3.68894],[-80.18741,-3.63994],[-80.19848,-3.59249],[-80.21642,-3.5888],[-80.20535,-3.51667],[-80.22629,-3.501],[-80.23651,-3.48652],[-80.24586,-3.48677],[-80.24123,-3.46124],[-80.20647,-3.431],[-80.30602,-3.39149],[-84.52388,-3.36941],[-85.71054,-21.15413],[-70.59118,-18.35072],[-70.378,-18.3495],[-70.31267,-18.31258],[-70.16394,-18.31737],[-69.96732,-18.25992],[-69.81607,-18.12582],[-69.75305,-17.94605],[-69.82868,-17.72048],[-69.79087,-17.65563],[-69.66483,-17.65083],[-69.46897,-17.4988],[-69.46863,-17.37466],[-69.62883,-17.28142],[-69.16896,-16.72233],[-69.00853,-16.66769],[-69.04027,-16.57214],[-68.98358,-16.42165],[-68.79464,-16.33272],[-68.96238,-16.194],[-69.09986,-16.22693],[-69.20291,-16.16668],[-69.40336,-15.61358],[-69.14856,-15.23478],[-69.36254,-14.94634],[-68.88135,-14.18639],[-69.05265,-13.68546],[-68.8864,-13.40792],[-68.85615,-12.87769],[-68.65044,-12.50689],[-68.98115,-11.8979],[-69.57156,-10.94555],[-69.57835,-10.94051],[-69.90896,-10.92744],[-70.38791,-11.07096],[-70.51395,-10.92249],[-70.64134,-11.0108],[-70.62487,-9.80666],[-70.55429,-9.76692],[-70.58453,-9.58303],[-70.53373,-9.42628],[-71.23394,-9.9668],[-72.14742,-9.98049],[-72.31883,-9.5184],[-72.72216,-9.41397],[-73.21498,-9.40904],[-72.92886,-9.04074],[-73.76576,-7.89884],[-73.65485,-7.77897],[-73.96938,-7.58465],[-73.77011,-7.28944],[-73.73986,-6.87919],[-73.12983,-6.43852],[-73.24579,-6.05764],[-72.83973,-5.14765],[-72.64391,-5.0391],[-71.87003,-4.51661],[-70.96814,-4.36915],[-70.77601,-4.15717],[-70.33236,-4.15214],[-70.19582,-4.3607],[-70.11305,-4.27281],[-70.00888,-4.37833],[-69.94708,-4.2431],[-70.3374,-3.79505],[-70.52393,-3.87553],[-70.71396,-3.7921],[-70.04609,-2.73906],[-70.94377,-2.23142],[-71.75223,-2.15058],[-72.92587,-2.44514],[-73.65312,-1.26222],[-74.26675,-.97229]]]]}},{type:"Feature",properties:{iso1A2:"PF",iso1A3:"PYF",iso1N3:"258",wikidata:"Q30971",nameEn:"French Polynesia",country:"FR",groups:["EU","Q1451600","061","009","UN"],callingCodes:["689"]},geometry:{type:"MultiPolygon",coordinates:[[[[-135.59706,-4.70473],[-156.48634,-15.52824],[-156.45576,-31.75456],[-133.59543,-28.4709],[-135.59706,-4.70473]]]]}},{type:"Feature",properties:{iso1A2:"PG",iso1A3:"PNG",iso1N3:"598",wikidata:"Q691",nameEn:"Papua New Guinea",groups:["054","009","UN"],driveSide:"left",callingCodes:["675"]},geometry:{type:"MultiPolygon",coordinates:[[[[141.03157,2.12829],[140.99813,-6.3233],[140.85295,-6.72996],[140.90448,-6.85033],[141.01763,-6.90181],[141.01842,-9.35091],[141.88934,-9.36111],[142.19246,-9.15378],[142.48658,-9.36754],[143.29772,-9.33993],[143.87386,-9.02382],[145.2855,-9.62524],[156.73836,-14.50464],[154.74815,-7.33315],[155.60735,-6.92266],[155.69784,-6.92661],[155.92557,-6.84664],[156.03993,-6.65703],[156.03296,-6.55528],[160.43769,-4.17974],[141.03157,2.12829]]]]}},{type:"Feature",properties:{iso1A2:"PH",iso1A3:"PHL",iso1N3:"608",wikidata:"Q928",nameEn:"Philippines",aliases:["PI","RP"],groups:["035","142","UN"],callingCodes:["63"]},geometry:{type:"MultiPolygon",coordinates:[[[[129.19694,7.84182],[121.8109,21.77688],[120.69238,21.52331],[118.82252,14.67191],[115.39742,10.92666],[116.79524,7.43869],[117.17735,7.52841],[117.93857,6.89845],[117.98544,6.27477],[119.52945,5.35672],[118.93936,4.09009],[118.06469,4.16638],[121.14448,2.12444],[129.19694,7.84182]]]]}},{type:"Feature",properties:{iso1A2:"PK",iso1A3:"PAK",iso1N3:"586",wikidata:"Q843",nameEn:"Pakistan",groups:["034","142","UN"],driveSide:"left",callingCodes:["92"]},geometry:{type:"MultiPolygon",coordinates:[[[[75.72737,36.7529],[75.45562,36.71971],[75.40481,36.95382],[75.13839,37.02622],[74.56453,37.03023],[74.53739,36.96224],[74.43389,37.00977],[74.04856,36.82648],[73.82685,36.91421],[72.6323,36.84601],[72.18135,36.71838],[71.80267,36.49924],[71.60491,36.39429],[71.19505,36.04134],[71.37969,35.95865],[71.55273,35.71483],[71.49917,35.6267],[71.65435,35.4479],[71.54294,35.31037],[71.5541,35.28776],[71.67495,35.21262],[71.52938,35.09023],[71.55273,35.02615],[71.49917,35.00478],[71.50329,34.97328],[71.29472,34.87728],[71.28356,34.80882],[71.08718,34.69034],[71.11602,34.63047],[71.0089,34.54568],[71.02401,34.44835],[71.17662,34.36769],[71.12815,34.26619],[71.13078,34.16503],[71.09453,34.13524],[71.09307,34.11961],[71.06933,34.10564],[71.07345,34.06242],[70.88119,33.97933],[70.54336,33.9463],[69.90203,34.04194],[69.87307,33.9689],[69.85671,33.93719],[70.00503,33.73528],[70.14236,33.71701],[70.14785,33.6553],[70.20141,33.64387],[70.17062,33.53535],[70.32775,33.34496],[70.13686,33.21064],[70.07369,33.22557],[70.02563,33.14282],[69.85259,33.09451],[69.79766,33.13247],[69.71526,33.09911],[69.57656,33.09911],[69.49004,33.01509],[69.49854,32.88843],[69.5436,32.8768],[69.47082,32.85834],[69.38018,32.76601],[69.43649,32.7302],[69.44747,32.6678],[69.38155,32.56601],[69.2868,32.53938],[69.23599,32.45946],[69.27932,32.29119],[69.27032,32.14141],[69.3225,31.93186],[69.20577,31.85957],[69.11514,31.70782],[69.00939,31.62249],[68.95995,31.64822],[68.91078,31.59687],[68.79997,31.61665],[68.6956,31.75687],[68.57475,31.83158],[68.44222,31.76446],[68.27605,31.75863],[68.25614,31.80357],[68.1655,31.82691],[68.00071,31.6564],[67.86887,31.63536],[67.72056,31.52304],[67.58323,31.52772],[67.62374,31.40473],[67.7748,31.4188],[67.78854,31.33203],[67.29964,31.19586],[67.03323,31.24519],[67.04147,31.31561],[66.83273,31.26867],[66.72561,31.20526],[66.68166,31.07597],[66.58175,30.97532],[66.42645,30.95309],[66.39194,30.9408],[66.28413,30.57001],[66.34869,30.404],[66.23609,30.06321],[66.36042,29.9583],[66.24175,29.85181],[65.04005,29.53957],[64.62116,29.58903],[64.19796,29.50407],[64.12966,29.39157],[63.5876,29.50456],[62.47751,29.40782],[60.87231,29.86514],[61.31508,29.38903],[61.53765,29.00507],[61.65978,28.77937],[61.93581,28.55284],[62.40259,28.42703],[62.59499,28.24842],[62.79412,28.28108],[62.7638,28.02992],[62.84905,27.47627],[62.79684,27.34381],[62.80604,27.22412],[63.19649,27.25674],[63.32283,27.14437],[63.25005,27.08692],[63.25005,26.84212],[63.18688,26.83844],[63.1889,26.65072],[62.77352,26.64099],[62.31484,26.528],[62.21304,26.26601],[62.05117,26.31647],[61.89391,26.26251],[61.83831,26.07249],[61.83968,25.7538],[61.683,25.66638],[61.6433,25.27541],[61.46682,24.57869],[68.11329,23.53945],[68.20763,23.85849],[68.39339,23.96838],[68.74643,23.97027],[68.7416,24.31904],[68.90914,24.33156],[68.97781,24.26021],[69.07806,24.29777],[69.19341,24.25646],[69.29778,24.28712],[69.59579,24.29777],[69.73335,24.17007],[70.03428,24.172],[70.11712,24.30915],[70.5667,24.43787],[70.57906,24.27774],[70.71502,24.23517],[70.88393,24.27398],[70.85784,24.30903],[70.94985,24.3791],[71.04461,24.34657],[71.12838,24.42662],[71.00341,24.46038],[70.97594,24.60904],[71.09405,24.69017],[70.94002,24.92843],[70.89148,25.15064],[70.66695,25.39314],[70.67382,25.68186],[70.60378,25.71898],[70.53649,25.68928],[70.37444,25.67443],[70.2687,25.71156],[70.0985,25.93238],[70.08193,26.08094],[70.17532,26.24118],[70.17532,26.55362],[70.05584,26.60398],[69.88555,26.56836],[69.50904,26.74892],[69.58519,27.18109],[70.03136,27.56627],[70.12502,27.8057],[70.37307,28.01208],[70.60927,28.02178],[70.79054,27.68423],[71.89921,27.96035],[71.9244,28.11555],[72.20329,28.3869],[72.29495,28.66367],[72.40402,28.78283],[72.94272,29.02487],[73.01337,29.16422],[73.05886,29.1878],[73.28094,29.56646],[73.3962,29.94707],[73.58665,30.01848],[73.80299,30.06969],[73.97225,30.19829],[73.95736,30.28466],[73.88993,30.36305],[74.5616,31.04153],[74.67971,31.05479],[74.6852,31.12771],[74.60006,31.13711],[74.60281,31.10419],[74.56023,31.08303],[74.51629,31.13829],[74.53223,31.30321],[74.59773,31.4136],[74.64713,31.45605],[74.59319,31.50197],[74.61517,31.55698],[74.57498,31.60382],[74.47771,31.72227],[74.58907,31.87824],[74.79919,31.95983],[74.86236,32.04485],[74.9269,32.0658],[75.00793,32.03786],[75.25649,32.10187],[75.38046,32.26836],[75.28259,32.36556],[75.03265,32.49538],[74.97634,32.45367],[74.84725,32.49075],[74.68362,32.49298],[74.67431,32.56676],[74.65251,32.56416],[74.64424,32.60985],[74.69542,32.66792],[74.65345,32.71225],[74.7113,32.84219],[74.64675,32.82604],[74.6289,32.75561],[74.45312,32.77755],[74.41467,32.90563],[74.31227,32.92795],[74.34875,32.97823],[74.31854,33.02891],[74.17571,33.07495],[74.15374,33.13477],[74.02144,33.18908],[74.01366,33.25199],[74.08782,33.26232],[74.17983,33.3679],[74.18121,33.4745],[74.10115,33.56392],[74.03576,33.56718],[73.97367,33.64061],[73.98968,33.66155],[73.96423,33.73071],[74.00891,33.75437],[74.05898,33.82089],[74.14001,33.83002],[74.26086,33.92237],[74.25262,34.01577],[74.21554,34.03853],[73.91341,34.01235],[73.88732,34.05105],[73.90677,34.10504],[73.98208,34.2522],[73.90517,34.35317],[73.8475,34.32935],[73.74862,34.34183],[73.74999,34.3781],[73.88732,34.48911],[73.89419,34.54568],[73.93951,34.57169],[73.93401,34.63386],[73.96423,34.68244],[74.12897,34.70073],[74.31239,34.79626],[74.58083,34.77386],[74.6663,34.703],[75.01479,34.64629],[75.38009,34.55021],[75.75438,34.51827],[76.04614,34.67566],[76.15463,34.6429],[76.47186,34.78965],[76.67648,34.76371],[76.74377,34.84039],[76.74514,34.92488],[76.87193,34.96906],[76.99251,34.93349],[77.11796,35.05419],[76.93465,35.39866],[76.85088,35.39754],[76.75475,35.52617],[76.77323,35.66062],[76.50961,35.8908],[76.33453,35.84296],[76.14913,35.82848],[76.15325,35.9264],[75.93028,36.13136],[76.00906,36.17511],[76.0324,36.41198],[75.92391,36.56986],[75.72737,36.7529]]]]}},{type:"Feature",properties:{iso1A2:"PL",iso1A3:"POL",iso1N3:"616",wikidata:"Q36",nameEn:"Poland",groups:["EU","151","150","UN"],callingCodes:["48"]},geometry:{type:"MultiPolygon",coordinates:[[[[18.57853,55.25302],[14.20811,54.12784],[14.22634,53.9291],[14.20647,53.91671],[14.18544,53.91258],[14.20823,53.90776],[14.21323,53.8664],[14.27249,53.74464],[14.26782,53.69866],[14.2836,53.67721],[14.27133,53.66613],[14.28477,53.65955],[14.2853,53.63392],[14.31904,53.61581],[14.30416,53.55499],[14.3273,53.50587],[14.35209,53.49506],[14.4215,53.27724],[14.44133,53.27427],[14.45125,53.26241],[14.40662,53.21098],[14.37853,53.20405],[14.36696,53.16444],[14.38679,53.13669],[14.35044,53.05829],[14.25954,53.00264],[14.14056,52.95786],[14.15873,52.87715],[14.12256,52.84311],[14.13806,52.82392],[14.22071,52.81175],[14.61073,52.59847],[14.6289,52.57136],[14.60081,52.53116],[14.63056,52.48993],[14.54423,52.42568],[14.55228,52.35264],[14.56378,52.33838],[14.58149,52.28007],[14.70139,52.25038],[14.71319,52.22144],[14.68344,52.19612],[14.70616,52.16927],[14.67683,52.13936],[14.6917,52.10283],[14.72971,52.09167],[14.76026,52.06624],[14.71339,52.00337],[14.70488,51.97679],[14.7139,51.95643],[14.71836,51.95606],[14.72163,51.95188],[14.7177,51.94048],[14.70601,51.92944],[14.6933,51.9044],[14.6588,51.88359],[14.59089,51.83302],[14.60493,51.80473],[14.64625,51.79472],[14.66386,51.73282],[14.69065,51.70842],[14.75392,51.67445],[14.75759,51.62318],[14.7727,51.61263],[14.71125,51.56209],[14.73047,51.54606],[14.72652,51.53902],[14.73219,51.52922],[14.94749,51.47155],[14.9652,51.44793],[14.96899,51.38367],[14.98008,51.33449],[15.04288,51.28387],[15.01242,51.21285],[15.0047,51.16874],[14.99311,51.16249],[14.99414,51.15813],[15.00083,51.14974],[14.99646,51.14365],[14.99079,51.14284],[14.99689,51.12205],[14.98229,51.11354],[14.97938,51.07742],[14.95529,51.04552],[14.92942,50.99744],[14.89252,50.94999],[14.89681,50.9422],[14.81664,50.88148],[14.82803,50.86966],[14.99852,50.86817],[15.01088,50.97984],[14.96419,50.99108],[15.02433,51.0242],[15.03895,51.0123],[15.06218,51.02269],[15.10152,51.01095],[15.11937,50.99021],[15.16744,51.01959],[15.1743,50.9833],[15.2361,50.99886],[15.27043,50.97724],[15.2773,50.8907],[15.36656,50.83956],[15.3803,50.77187],[15.43798,50.80833],[15.73186,50.73885],[15.81683,50.75666],[15.87331,50.67188],[15.97219,50.69799],[16.0175,50.63009],[15.98317,50.61528],[16.02437,50.60046],[16.10265,50.66405],[16.20839,50.63096],[16.23174,50.67101],[16.33611,50.66579],[16.44597,50.58041],[16.34572,50.49575],[16.31413,50.50274],[16.19526,50.43291],[16.21585,50.40627],[16.22821,50.41054],[16.28118,50.36891],[16.30289,50.38292],[16.36495,50.37679],[16.3622,50.34875],[16.39379,50.3207],[16.42674,50.32509],[16.56407,50.21009],[16.55446,50.16613],[16.63137,50.1142],[16.7014,50.09659],[16.8456,50.20834],[16.98018,50.24172],[17.00353,50.21449],[17.02825,50.23118],[16.99803,50.25753],[17.02138,50.27772],[16.99803,50.30316],[16.94448,50.31281],[16.90877,50.38642],[16.85933,50.41093],[16.89229,50.45117],[17.1224,50.39494],[17.14498,50.38117],[17.19579,50.38817],[17.19991,50.3654],[17.27681,50.32246],[17.34273,50.32947],[17.34548,50.2628],[17.3702,50.28123],[17.58889,50.27837],[17.67764,50.28977],[17.69292,50.32859],[17.74648,50.29966],[17.72176,50.25665],[17.76296,50.23382],[17.70528,50.18812],[17.59404,50.16437],[17.66683,50.10275],[17.6888,50.12037],[17.7506,50.07896],[17.77669,50.02253],[17.86886,49.97452],[18.00191,50.01723],[18.04585,50.01194],[18.04585,50.03311],[18.00396,50.04954],[18.03212,50.06574],[18.07898,50.04535],[18.10628,50.00223],[18.20241,49.99958],[18.21752,49.97309],[18.27107,49.96779],[18.27794,49.93863],[18.31914,49.91565],[18.33278,49.92415],[18.33562,49.94747],[18.41604,49.93498],[18.53423,49.89906],[18.54495,49.9079],[18.54299,49.92537],[18.57697,49.91565],[18.57045,49.87849],[18.60341,49.86256],[18.57183,49.83334],[18.61278,49.7618],[18.61368,49.75426],[18.62645,49.75002],[18.62943,49.74603],[18.62676,49.71983],[18.69817,49.70473],[18.72838,49.68163],[18.80479,49.6815],[18.84786,49.5446],[18.84521,49.51672],[18.94536,49.52143],[18.97283,49.49914],[18.9742,49.39557],[19.18019,49.41165],[19.25435,49.53391],[19.36009,49.53747],[19.37795,49.574],[19.45348,49.61583],[19.52626,49.57311],[19.53313,49.52856],[19.57845,49.46077],[19.64162,49.45184],[19.6375,49.40897],[19.72127,49.39288],[19.78581,49.41701],[19.82237,49.27806],[19.75286,49.20751],[19.86409,49.19316],[19.90529,49.23532],[19.98494,49.22904],[20.08238,49.1813],[20.13738,49.31685],[20.21977,49.35265],[20.31453,49.34817],[20.31728,49.39914],[20.39939,49.3896],[20.46422,49.41612],[20.5631,49.375],[20.61666,49.41791],[20.72274,49.41813],[20.77971,49.35383],[20.9229,49.29626],[20.98733,49.30774],[21.09799,49.37176],[21.041,49.41791],[21.12477,49.43666],[21.19756,49.4054],[21.27858,49.45988],[21.43376,49.41433],[21.62328,49.4447],[21.77983,49.35443],[21.82927,49.39467],[21.96385,49.3437],[22.04427,49.22136],[22.56155,49.08865],[22.89122,49.00725],[22.86336,49.10513],[22.72009,49.20288],[22.748,49.32759],[22.69444,49.49378],[22.64534,49.53094],[22.78304,49.65543],[22.80261,49.69098],[22.83179,49.69875],[22.99329,49.84249],[23.28221,50.0957],[23.67635,50.33385],[23.71382,50.38248],[23.79445,50.40481],[23.99563,50.41289],[24.03668,50.44507],[24.07048,50.5071],[24.0996,50.60752],[24.0595,50.71625],[23.95925,50.79271],[23.99254,50.83847],[24.0952,50.83262],[24.14524,50.86128],[24.04576,50.90196],[23.92217,51.00836],[23.90376,51.07697],[23.80678,51.18405],[23.63858,51.32182],[23.69905,51.40871],[23.62751,51.50512],[23.56236,51.53673],[23.57053,51.55938],[23.53198,51.74298],[23.62691,51.78208],[23.61523,51.92066],[23.68733,51.9906],[23.64066,52.07626],[23.61,52.11264],[23.54314,52.12148],[23.47859,52.18215],[23.20071,52.22848],[23.18196,52.28812],[23.34141,52.44845],[23.45112,52.53774],[23.58296,52.59868],[23.73615,52.6149],[23.93763,52.71332],[23.91805,52.94016],[23.94689,52.95919],[23.92184,53.02079],[23.87548,53.0831],[23.91393,53.16469],[23.85657,53.22923],[23.81995,53.24131],[23.62004,53.60942],[23.51284,53.95052],[23.48261,53.98855],[23.52702,54.04622],[23.49196,54.14764],[23.45223,54.17775],[23.42418,54.17911],[23.39525,54.21672],[23.3494,54.25155],[23.24656,54.25701],[23.15938,54.29894],[23.15526,54.31076],[23.13905,54.31567],[23.104,54.29794],[23.04323,54.31567],[23.05726,54.34565],[22.99649,54.35927],[23.00584,54.38514],[22.83756,54.40827],[22.79705,54.36264],[21.41123,54.32395],[20.63871,54.3706],[19.8038,54.44203],[19.64312,54.45423],[18.57853,55.25302]]]]}},{type:"Feature",properties:{iso1A2:"PM",iso1A3:"SPM",iso1N3:"666",wikidata:"Q34617",nameEn:"Saint Pierre and Miquelon",country:"FR",groups:["EU","Q1451600","021","003","019","UN"],callingCodes:["508"]},geometry:{type:"MultiPolygon",coordinates:[[[[-56.72993,46.65575],[-55.90758,46.6223],[-56.27503,47.39728],[-56.72993,46.65575]]]]}},{type:"Feature",properties:{iso1A2:"PN",iso1A3:"PCN",iso1N3:"612",wikidata:"Q35672",nameEn:"Pitcairn Islands",country:"GB",groups:["BOTS","061","009","UN"],driveSide:"left",callingCodes:["64"]},geometry:{type:"MultiPolygon",coordinates:[[[[-133.59543,-28.4709],[-122.0366,-24.55017],[-133.61511,-21.93325],[-133.59543,-28.4709]]]]}},{type:"Feature",properties:{iso1A2:"PR",iso1A3:"PRI",iso1N3:"630",wikidata:"Q1183",nameEn:"Puerto Rico",aliases:["US-PR"],country:"US",groups:["Q1352230","029","003","419","019","UN"],roadSpeedUnit:"mph",callingCodes:["1 787","1 939"]},geometry:{type:"MultiPolygon",coordinates:[[[[-65.27974,17.56928],[-65.02435,18.73231],[-67.99519,18.97186],[-68.23894,17.84663],[-65.27974,17.56928]]]]}},{type:"Feature",properties:{iso1A2:"PS",iso1A3:"PSE",iso1N3:"275",wikidata:"Q219060",nameEn:"Palestine"},geometry:null},{type:"Feature",properties:{iso1A2:"PT",iso1A3:"PRT",iso1N3:"620",wikidata:"Q45",nameEn:"Portugal"},geometry:null},{type:"Feature",properties:{iso1A2:"PW",iso1A3:"PLW",iso1N3:"585",wikidata:"Q695",nameEn:"Palau",groups:["057","009","UN"],roadSpeedUnit:"mph",callingCodes:["680"]},geometry:{type:"MultiPolygon",coordinates:[[[[128.97621,3.08804],[136.39296,1.54187],[136.04605,12.45908],[128.97621,3.08804]]]]}},{type:"Feature",properties:{iso1A2:"PY",iso1A3:"PRY",iso1N3:"600",wikidata:"Q733",nameEn:"Paraguay",groups:["005","419","019","UN"],callingCodes:["595"]},geometry:{type:"MultiPolygon",coordinates:[[[[-58.16225,-20.16193],[-58.23216,-19.80058],[-59.06965,-19.29148],[-60.00638,-19.2981],[-61.73723,-19.63958],[-61.93912,-20.10053],[-62.26883,-20.55311],[-62.2757,-21.06657],[-62.64455,-22.25091],[-62.51761,-22.37684],[-62.22768,-22.55807],[-61.9756,-23.0507],[-61.0782,-23.62932],[-60.99754,-23.80934],[-60.28163,-24.04436],[-60.03367,-24.00701],[-59.45482,-24.34787],[-59.33886,-24.49935],[-58.33055,-24.97099],[-58.25492,-24.92528],[-57.80821,-25.13863],[-57.57431,-25.47269],[-57.87176,-25.93604],[-58.1188,-26.16704],[-58.3198,-26.83443],[-58.65321,-27.14028],[-58.59549,-27.29973],[-58.04205,-27.2387],[-56.85337,-27.5165],[-56.18313,-27.29851],[-55.89195,-27.3467],[-55.74475,-27.44485],[-55.59094,-27.32444],[-55.62322,-27.1941],[-55.39611,-26.97679],[-55.25243,-26.93808],[-55.16948,-26.96068],[-55.06351,-26.80195],[-55.00584,-26.78754],[-54.80868,-26.55669],[-54.70732,-26.45099],[-54.69333,-26.37705],[-54.67359,-25.98607],[-54.60664,-25.9691],[-54.62063,-25.91213],[-54.59398,-25.59224],[-54.59509,-25.53696],[-54.60196,-25.48397],[-54.62033,-25.46026],[-54.4423,-25.13381],[-54.28207,-24.07305],[-54.32807,-24.01865],[-54.6238,-23.83078],[-55.02691,-23.97317],[-55.0518,-23.98666],[-55.12292,-23.99669],[-55.41784,-23.9657],[-55.44117,-23.9185],[-55.43585,-23.87157],[-55.5555,-23.28237],[-55.52288,-23.2595],[-55.5446,-23.22811],[-55.63849,-22.95122],[-55.62493,-22.62765],[-55.68742,-22.58407],[-55.6986,-22.56268],[-55.72366,-22.5519],[-55.741,-22.52018],[-55.74941,-22.46436],[-55.8331,-22.29008],[-56.23206,-22.25347],[-56.45893,-22.08072],[-56.5212,-22.11556],[-56.6508,-22.28387],[-57.98625,-22.09157],[-57.94642,-21.73799],[-57.88239,-21.6868],[-57.93492,-21.65505],[-57.84536,-20.93155],[-58.16225,-20.16193]]]]}},{type:"Feature",properties:{iso1A2:"QA",iso1A3:"QAT",iso1N3:"634",wikidata:"Q846",nameEn:"Qatar",groups:["145","142","UN"],callingCodes:["974"]},geometry:{type:"MultiPolygon",coordinates:[[[[50.92992,24.54396],[51.09638,24.46907],[51.29972,24.50747],[51.39468,24.62785],[51.58834,24.66608],[51.83108,24.71675],[51.83682,26.70231],[50.93865,26.30758],[50.81266,25.88946],[50.86149,25.6965],[50.7801,25.595],[50.80824,25.54641],[50.57069,25.57887],[50.8133,24.74049],[50.92992,24.54396]]]]}},{type:"Feature",properties:{iso1A2:"RE",iso1A3:"REU",iso1N3:"638",wikidata:"Q17070",nameEn:"R\xE9union",country:"FR",groups:["Q3320166","EU","014","202","002","UN"],callingCodes:["262"]},geometry:{type:"MultiPolygon",coordinates:[[[[53.37984,-21.23941],[56.73473,-21.9174],[56.62373,-20.2711],[53.37984,-21.23941]]]]}},{type:"Feature",properties:{iso1A2:"RO",iso1A3:"ROU",iso1N3:"642",wikidata:"Q218",nameEn:"Romania",groups:["EU","151","150","UN"],callingCodes:["40"]},geometry:{type:"MultiPolygon",coordinates:[[[[27.15622,47.98538],[27.02985,48.09083],[27.04118,48.12522],[26.96119,48.13003],[26.98042,48.15752],[26.94265,48.1969],[26.87708,48.19919],[26.81161,48.25049],[26.62823,48.25804],[26.55202,48.22445],[26.33504,48.18418],[26.17711,47.99246],[26.05901,47.9897],[25.77723,47.93919],[25.63878,47.94924],[25.23778,47.89403],[25.11144,47.75203],[24.88896,47.7234],[24.81893,47.82031],[24.70632,47.84428],[24.61994,47.95062],[24.43578,47.97131],[24.34926,47.9244],[24.22566,47.90231],[24.11281,47.91487],[24.06466,47.95317],[24.02999,47.95087],[24.00801,47.968],[23.98553,47.96076],[23.96337,47.96672],[23.94192,47.94868],[23.89352,47.94512],[23.8602,47.9329],[23.80904,47.98142],[23.75188,47.99705],[23.66262,47.98786],[23.63894,48.00293],[23.5653,48.00499],[23.52803,48.01818],[23.4979,47.96858],[23.33577,48.0237],[23.27397,48.08245],[23.15999,48.12188],[23.1133,48.08061],[23.08858,48.00716],[23.0158,47.99338],[22.92241,48.02002],[22.94301,47.96672],[22.89849,47.95851],[22.77991,47.87211],[22.76617,47.8417],[22.67247,47.7871],[22.46559,47.76583],[22.41979,47.7391],[22.31816,47.76126],[22.00917,47.50492],[22.03389,47.42508],[22.01055,47.37767],[21.94463,47.38046],[21.78395,47.11104],[21.648,47.03902],[21.68645,46.99595],[21.59581,46.91628],[21.59307,46.86935],[21.52028,46.84118],[21.48935,46.7577],[21.5151,46.72147],[21.43926,46.65109],[21.33214,46.63035],[21.26929,46.4993],[21.28061,46.44941],[21.16872,46.30118],[21.06572,46.24897],[20.86797,46.28884],[20.74574,46.25467],[20.76085,46.21002],[20.63863,46.12728],[20.49718,46.18721],[20.45377,46.14405],[20.35573,46.16629],[20.28324,46.1438],[20.26068,46.12332],[20.35862,45.99356],[20.54818,45.89939],[20.65645,45.82801],[20.70069,45.7493],[20.77416,45.75601],[20.78446,45.78522],[20.82364,45.77738],[20.80361,45.65875],[20.76798,45.60969],[20.83321,45.53567],[20.77217,45.49788],[20.86026,45.47295],[20.87948,45.42743],[21.09894,45.30144],[21.17612,45.32566],[21.20392,45.2677],[21.29398,45.24148],[21.48278,45.19557],[21.51299,45.15345],[21.4505,45.04294],[21.35855,45.01941],[21.54938,44.9327],[21.56328,44.89502],[21.48202,44.87199],[21.44013,44.87613],[21.35643,44.86364],[21.38802,44.78133],[21.55007,44.77304],[21.60019,44.75208],[21.61942,44.67059],[21.67504,44.67107],[21.71692,44.65349],[21.7795,44.66165],[21.99364,44.63395],[22.08016,44.49844],[22.13234,44.47444],[22.18315,44.48179],[22.30844,44.6619],[22.45301,44.7194],[22.61917,44.61489],[22.69196,44.61587],[22.76749,44.54446],[22.70981,44.51852],[22.61368,44.55719],[22.56493,44.53419],[22.54021,44.47836],[22.45436,44.47258],[22.56012,44.30712],[22.68166,44.28206],[22.67173,44.21564],[23.04988,44.07694],[23.01674,44.01946],[22.87873,43.9844],[22.83753,43.88055],[22.85314,43.84452],[23.05288,43.79494],[23.26772,43.84843],[23.4507,43.84936],[23.61687,43.79289],[23.73978,43.80627],[24.18149,43.68218],[24.35364,43.70211],[24.50264,43.76314],[24.62281,43.74082],[24.73542,43.68523],[24.96682,43.72693],[25.10718,43.6831],[25.17144,43.70261],[25.39528,43.61866],[25.72792,43.69263],[25.94911,43.85745],[26.05584,43.90925],[26.10115,43.96908],[26.38764,44.04356],[26.62712,44.05698],[26.95141,44.13555],[27.26845,44.12602],[27.39757,44.0141],[27.60834,44.01206],[27.64542,44.04958],[27.73468,43.95326],[27.92008,44.00761],[27.99558,43.84193],[28.23293,43.76],[29.24336,43.70874],[30.04414,45.08461],[29.69272,45.19227],[29.65428,45.25629],[29.68175,45.26885],[29.59798,45.38857],[29.42632,45.44545],[29.24779,45.43388],[28.96077,45.33164],[28.94292,45.28045],[28.81383,45.3384],[28.78911,45.24179],[28.71358,45.22631],[28.5735,45.24759],[28.34554,45.32102],[28.28504,45.43907],[28.21139,45.46895],[28.18741,45.47358],[28.08927,45.6051],[28.16568,45.6421],[28.13111,45.92819],[28.08612,46.01105],[28.13684,46.18099],[28.10937,46.22852],[28.19864,46.31869],[28.18902,46.35283],[28.25769,46.43334],[28.22281,46.50481],[28.24808,46.64305],[28.12173,46.82283],[28.09095,46.97621],[27.81892,47.1381],[27.73172,47.29248],[27.68706,47.28962],[27.60263,47.32507],[27.55731,47.46637],[27.47942,47.48113],[27.3979,47.59473],[27.32202,47.64009],[27.25519,47.71366],[27.29069,47.73722],[27.1618,47.92391],[27.15622,47.98538]]]]}},{type:"Feature",properties:{iso1A2:"RS",iso1A3:"SRB",iso1N3:"688",wikidata:"Q403",nameEn:"Serbia",groups:["039","150","UN"],callingCodes:["381"]},geometry:{type:"MultiPolygon",coordinates:[[[[19.66007,46.19005],[19.56113,46.16824],[19.52473,46.1171],[19.28826,45.99694],[19.14543,45.9998],[19.10388,46.04015],[19.0791,45.96458],[19.01284,45.96529],[18.99712,45.93537],[18.81394,45.91329],[18.85783,45.85493],[18.90305,45.71863],[18.96691,45.66731],[18.88776,45.57253],[18.94562,45.53712],[19.07471,45.53086],[19.08364,45.48804],[18.99918,45.49333],[18.97446,45.37528],[19.10774,45.29547],[19.28208,45.23813],[19.41941,45.23475],[19.43589,45.17137],[19.19144,45.17863],[19.14063,45.12972],[19.07952,45.14668],[19.1011,45.01191],[19.05205,44.97692],[19.15573,44.95409],[19.06853,44.89915],[19.02871,44.92541],[18.98957,44.90645],[19.01994,44.85493],[19.18183,44.92055],[19.36722,44.88164],[19.32543,44.74058],[19.26388,44.65412],[19.16699,44.52197],[19.13369,44.52521],[19.12278,44.50132],[19.14837,44.45253],[19.14681,44.41463],[19.11785,44.40313],[19.10749,44.39421],[19.10704,44.38249],[19.10365,44.37795],[19.10298,44.36924],[19.11865,44.36712],[19.1083,44.3558],[19.11547,44.34218],[19.13556,44.338],[19.13332,44.31492],[19.16741,44.28648],[19.18328,44.28383],[19.20508,44.2917],[19.23306,44.26097],[19.26945,44.26957],[19.32464,44.27185],[19.34773,44.23244],[19.3588,44.18353],[19.40927,44.16722],[19.43905,44.13088],[19.47338,44.15034],[19.48386,44.14332],[19.47321,44.1193],[19.51167,44.08158],[19.55999,44.06894],[19.57467,44.04716],[19.61991,44.05254],[19.61836,44.01464],[19.56498,43.99922],[19.52515,43.95573],[19.38439,43.96611],[19.24363,44.01502],[19.23465,43.98764],[19.3986,43.79668],[19.5176,43.71403],[19.50455,43.58385],[19.42696,43.57987],[19.41941,43.54056],[19.36653,43.60921],[19.33426,43.58833],[19.2553,43.5938],[19.24774,43.53061],[19.22807,43.5264],[19.22229,43.47926],[19.44315,43.38846],[19.48171,43.32644],[19.52962,43.31623],[19.54598,43.25158],[19.62661,43.2286],[19.64063,43.19027],[19.76918,43.16044],[19.79255,43.11951],[19.92576,43.08539],[19.96549,43.11098],[19.98887,43.0538],[20.04729,43.02732],[20.05431,42.99571],[20.12325,42.96237],[20.14896,42.99058],[20.16415,42.97177],[20.34528,42.90676],[20.35692,42.8335],[20.40594,42.84853],[20.43734,42.83157],[20.53484,42.8885],[20.48692,42.93208],[20.59929,43.01067],[20.64557,43.00826],[20.69515,43.09641],[20.59929,43.20492],[20.68688,43.21335],[20.73811,43.25068],[20.82145,43.26769],[20.88685,43.21697],[20.83727,43.17842],[20.96287,43.12416],[21.00749,43.13984],[21.05378,43.10707],[21.08952,43.13471],[21.14465,43.11089],[21.16734,42.99694],[21.2041,43.02277],[21.23877,43.00848],[21.23534,42.95523],[21.2719,42.8994],[21.32974,42.90424],[21.36941,42.87397],[21.44047,42.87276],[21.39045,42.74888],[21.47498,42.74695],[21.59154,42.72643],[21.58755,42.70418],[21.6626,42.67813],[21.75025,42.70125],[21.79413,42.65923],[21.75672,42.62695],[21.7327,42.55041],[21.70522,42.54176],[21.7035,42.51899],[21.62556,42.45106],[21.64209,42.41081],[21.62887,42.37664],[21.59029,42.38042],[21.57021,42.3647],[21.53467,42.36809],[21.5264,42.33634],[21.56772,42.30946],[21.58992,42.25915],[21.70111,42.23789],[21.77176,42.2648],[21.84654,42.3247],[21.91595,42.30392],[21.94405,42.34669],[22.02908,42.29848],[22.16384,42.32103],[22.29605,42.37477],[22.29275,42.34913],[22.34773,42.31725],[22.45919,42.33822],[22.47498,42.3915],[22.51961,42.3991],[22.55669,42.50144],[22.43983,42.56851],[22.4997,42.74144],[22.43309,42.82057],[22.54302,42.87774],[22.74826,42.88701],[22.78397,42.98253],[22.89521,43.03625],[22.98104,43.11199],[23.00806,43.19279],[22.89727,43.22417],[22.82036,43.33665],[22.53397,43.47225],[22.47582,43.6558],[22.41043,43.69566],[22.35558,43.81281],[22.41449,44.00514],[22.61688,44.06534],[22.61711,44.16938],[22.67173,44.21564],[22.68166,44.28206],[22.56012,44.30712],[22.45436,44.47258],[22.54021,44.47836],[22.56493,44.53419],[22.61368,44.55719],[22.70981,44.51852],[22.76749,44.54446],[22.69196,44.61587],[22.61917,44.61489],[22.45301,44.7194],[22.30844,44.6619],[22.18315,44.48179],[22.13234,44.47444],[22.08016,44.49844],[21.99364,44.63395],[21.7795,44.66165],[21.71692,44.65349],[21.67504,44.67107],[21.61942,44.67059],[21.60019,44.75208],[21.55007,44.77304],[21.38802,44.78133],[21.35643,44.86364],[21.44013,44.87613],[21.48202,44.87199],[21.56328,44.89502],[21.54938,44.9327],[21.35855,45.01941],[21.4505,45.04294],[21.51299,45.15345],[21.48278,45.19557],[21.29398,45.24148],[21.20392,45.2677],[21.17612,45.32566],[21.09894,45.30144],[20.87948,45.42743],[20.86026,45.47295],[20.77217,45.49788],[20.83321,45.53567],[20.76798,45.60969],[20.80361,45.65875],[20.82364,45.77738],[20.78446,45.78522],[20.77416,45.75601],[20.70069,45.7493],[20.65645,45.82801],[20.54818,45.89939],[20.35862,45.99356],[20.26068,46.12332],[20.09713,46.17315],[20.03533,46.14509],[20.01816,46.17696],[19.93508,46.17553],[19.81491,46.1313],[19.66007,46.19005]]]]}},{type:"Feature",properties:{iso1A2:"RU",iso1A3:"RUS",iso1N3:"643",wikidata:"Q159",nameEn:"Russia"},geometry:null},{type:"Feature",properties:{iso1A2:"RW",iso1A3:"RWA",iso1N3:"646",wikidata:"Q1037",nameEn:"Rwanda",groups:["014","202","002","UN"],callingCodes:["250"]},geometry:{type:"MultiPolygon",coordinates:[[[[30.47194,-1.0555],[30.35212,-1.06896],[30.16369,-1.34303],[29.912,-1.48269],[29.82657,-1.31187],[29.59061,-1.39016],[29.53062,-1.40499],[29.45038,-1.5054],[29.36322,-1.50887],[29.24323,-1.66826],[29.24458,-1.69663],[29.11847,-1.90576],[29.17562,-2.12278],[29.105,-2.27043],[29.00051,-2.29001],[28.95642,-2.37321],[28.89601,-2.37321],[28.86826,-2.41888],[28.86846,-2.44866],[28.89132,-2.47557],[28.89342,-2.49017],[28.88846,-2.50493],[28.87497,-2.50887],[28.86209,-2.5231],[28.86193,-2.53185],[28.87943,-2.55165],[28.89288,-2.55848],[28.90226,-2.62385],[28.89793,-2.66111],[28.94346,-2.69124],[29.00357,-2.70596],[29.04081,-2.7416],[29.0562,-2.58632],[29.32234,-2.6483],[29.36805,-2.82933],[29.88237,-2.75105],[29.95911,-2.33348],[30.14034,-2.43626],[30.42933,-2.31064],[30.54501,-2.41404],[30.83915,-2.35795],[30.89303,-2.08223],[30.80802,-1.91477],[30.84079,-1.64652],[30.71974,-1.43244],[30.57123,-1.33264],[30.50889,-1.16412],[30.45116,-1.10641],[30.47194,-1.0555]]]]}},{type:"Feature",properties:{iso1A2:"SA",iso1A3:"SAU",iso1N3:"682",wikidata:"Q851",nameEn:"Saudi Arabia",groups:["145","142","UN"],callingCodes:["966"]},geometry:{type:"MultiPolygon",coordinates:[[[[40.01521,32.05667],[39.29903,32.23259],[38.99233,31.99721],[36.99791,31.50081],[37.99354,30.49998],[37.66395,30.33245],[37.4971,29.99949],[36.75083,29.86903],[36.50005,29.49696],[36.07081,29.18469],[34.8812,29.36878],[34.4454,27.91479],[37.8565,22.00903],[39.63762,18.37348],[40.99158,15.81743],[42.15205,16.40211],[42.76801,16.40371],[42.94625,16.39721],[42.94351,16.49467],[42.97215,16.51093],[43.11601,16.53166],[43.15274,16.67248],[43.22066,16.65179],[43.21325,16.74416],[43.25857,16.75304],[43.26303,16.79479],[43.24801,16.80613],[43.22956,16.80613],[43.22012,16.83932],[43.18338,16.84852],[43.1398,16.90696],[43.19328,16.94703],[43.1813,16.98438],[43.18233,17.02673],[43.23967,17.03428],[43.17787,17.14717],[43.20156,17.25901],[43.32653,17.31179],[43.22533,17.38343],[43.29185,17.53224],[43.43005,17.56148],[43.70631,17.35762],[44.50126,17.47475],[46.31018,17.20464],[46.76494,17.29151],[47.00571,16.94765],[47.48245,17.10808],[47.58351,17.50366],[48.19996,18.20584],[49.04884,18.59899],[52.00311,19.00083],[54.99756,20.00083],[55.66469,21.99658],[55.2137,22.71065],[55.13599,22.63334],[52.56622,22.94341],[51.59617,24.12041],[51.58871,24.27256],[51.41644,24.39615],[51.58834,24.66608],[51.39468,24.62785],[51.29972,24.50747],[51.09638,24.46907],[50.92992,24.54396],[50.8133,24.74049],[50.57069,25.57887],[50.302,25.87592],[50.26923,26.08243],[50.38162,26.53976],[50.71771,26.73086],[50.37726,27.89227],[49.98877,27.87827],[49.00421,28.81495],[48.42991,28.53628],[47.70561,28.5221],[47.59863,28.66798],[47.58376,28.83382],[47.46202,29.0014],[46.5527,29.10283],[46.42415,29.05947],[44.72255,29.19736],[42.97796,30.48295],[42.97601,30.72204],[40.01521,32.05667]]]]}},{type:"Feature",properties:{iso1A2:"SB",iso1A3:"SLB",iso1N3:"090",wikidata:"Q685",nameEn:"Solomon Islands",groups:["054","009","UN"],driveSide:"left",callingCodes:["677"]},geometry:{type:"MultiPolygon",coordinates:[[[[172.71443,-12.01327],[160.43769,-4.17974],[156.03296,-6.55528],[156.03993,-6.65703],[155.92557,-6.84664],[155.69784,-6.92661],[155.60735,-6.92266],[154.74815,-7.33315],[156.73836,-14.50464],[172.71443,-12.01327]]]]}},{type:"Feature",properties:{iso1A2:"SC",iso1A3:"SYC",iso1N3:"690",wikidata:"Q1042",nameEn:"Seychelles",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["248"]},geometry:{type:"MultiPolygon",coordinates:[[[[43.75112,-10.38913],[54.83239,-10.93575],[66.3222,5.65313],[43.75112,-10.38913]]]]}},{type:"Feature",properties:{iso1A2:"SD",iso1A3:"SDN",iso1N3:"729",wikidata:"Q1049",nameEn:"Sudan",groups:["015","002","UN"],callingCodes:["249"]},geometry:{type:"MultiPolygon",coordinates:[[[[37.8565,22.00903],[34.0765,22.00501],[33.99686,21.76784],[33.57251,21.72406],[33.17563,22.00405],[24.99885,21.99535],[24.99794,19.99661],[23.99715,20.00038],[23.99539,19.49944],[23.99997,15.69575],[23.62785,15.7804],[23.38812,15.69649],[23.10792,15.71297],[22.93201,15.55107],[22.92579,15.47007],[22.99584,15.40105],[22.99584,15.22989],[22.66115,14.86308],[22.70474,14.69149],[22.38562,14.58907],[22.44944,14.24986],[22.55997,14.23024],[22.5553,14.11704],[22.22995,13.96754],[22.08674,13.77863],[22.29689,13.3731],[22.1599,13.19281],[22.02914,13.13976],[21.94819,13.05637],[21.81432,12.81362],[21.89371,12.68001],[21.98711,12.63292],[22.15679,12.66634],[22.22684,12.74682],[22.46345,12.61925],[22.38873,12.45514],[22.50548,12.16769],[22.48369,12.02766],[22.64092,12.07485],[22.54907,11.64372],[22.7997,11.40424],[22.93124,11.41645],[22.97249,11.21955],[22.87758,10.91915],[23.02221,10.69235],[23.3128,10.45214],[23.67164,9.86923],[23.69155,9.67566],[24.09319,9.66572],[24.12744,9.73784],[24.49389,9.79962],[24.84653,9.80643],[24.97739,9.9081],[25.05688,10.06776],[25.0918,10.33718],[25.78141,10.42599],[25.93163,10.38159],[25.93241,10.17941],[26.21338,9.91545],[26.35815,9.57946],[26.70685,9.48735],[27.14427,9.62858],[27.90704,9.61323],[28.99983,9.67155],[29.06988,9.74826],[29.53844,9.75133],[29.54,10.07949],[29.94629,10.29245],[30.00389,10.28633],[30.53005,9.95992],[30.82893,9.71451],[30.84605,9.7498],[31.28504,9.75287],[31.77539,10.28939],[31.99177,10.65065],[32.46967,11.04662],[32.39358,11.18207],[32.39578,11.70208],[32.10079,11.95203],[32.73921,11.95203],[32.73921,12.22757],[33.25876,12.22111],[33.13988,11.43248],[33.26977,10.83632],[33.24645,10.77913],[33.52294,10.64382],[33.66604,10.44254],[33.80913,10.32994],[33.90159,10.17179],[33.96984,10.15446],[33.99185,9.99623],[33.96323,9.80972],[33.9082,9.762],[33.87958,9.49937],[34.10229,9.50238],[34.08717,9.55243],[34.13186,9.7492],[34.20484,9.9033],[34.22718,10.02506],[34.32102,10.11599],[34.34783,10.23914],[34.2823,10.53508],[34.4372,10.781],[34.59062,10.89072],[34.77383,10.74588],[34.77532,10.69027],[34.86618,10.74588],[34.86916,10.78832],[34.97491,10.86147],[34.97789,10.91559],[34.93172,10.95946],[35.01215,11.19626],[34.95704,11.24448],[35.09556,11.56278],[35.05832,11.71158],[35.11492,11.85156],[35.24302,11.91132],[35.70476,12.67101],[36.01458,12.72478],[36.14268,12.70879],[36.16651,12.88019],[36.13374,12.92665],[36.24545,13.36759],[36.38993,13.56459],[36.48824,13.83954],[36.44653,13.95666],[36.54376,14.25597],[36.44337,15.14963],[36.54276,15.23478],[36.69761,15.75323],[36.76371,15.80831],[36.92193,16.23451],[36.99777,17.07172],[37.42694,17.04041],[37.50967,17.32199],[38.13362,17.53906],[38.37133,17.66269],[38.45916,17.87167],[38.57727,17.98125],[39.63762,18.37348],[37.8565,22.00903]]]]}},{type:"Feature",properties:{iso1A2:"SE",iso1A3:"SWE",iso1N3:"752",wikidata:"Q34",nameEn:"Sweden",groups:["EU","154","150","UN"],callingCodes:["46"]},geometry:{type:"MultiPolygon",coordinates:[[[[24.15791,65.85385],[23.90497,66.15802],[23.71339,66.21299],[23.64982,66.30603],[23.67591,66.3862],[23.63776,66.43568],[23.85959,66.56434],[23.89488,66.772],[23.98059,66.79585],[23.98563,66.84149],[23.56214,67.17038],[23.58735,67.20752],[23.54701,67.25435],[23.75372,67.29914],[23.75372,67.43688],[23.39577,67.46974],[23.54701,67.59306],[23.45627,67.85297],[23.65793,67.9497],[23.40081,68.05545],[23.26469,68.15134],[23.15377,68.14759],[23.10336,68.26551],[22.73028,68.40881],[22.00429,68.50692],[21.03001,68.88969],[20.90649,68.89696],[20.85104,68.93142],[20.91658,68.96764],[20.78802,69.03087],[20.55258,69.06069],[20.0695,69.04469],[20.28444,68.93283],[20.33435,68.80174],[20.22027,68.67246],[19.95647,68.55546],[20.22027,68.48759],[19.93508,68.35911],[18.97255,68.52416],[18.63032,68.50849],[18.39503,68.58672],[18.1241,68.53721],[18.13836,68.20874],[17.90787,67.96537],[17.30416,68.11591],[16.7409,67.91037],[16.38441,67.52923],[16.12774,67.52106],[16.09922,67.4364],[16.39154,67.21653],[16.35589,67.06419],[15.37197,66.48217],[15.49318,66.28509],[15.05113,66.15572],[14.53778,66.12399],[14.50926,65.31786],[13.64276,64.58402],[14.11117,64.46674],[14.16051,64.18725],[13.98222,64.00953],[13.23411,64.09087],[12.74105,64.02171],[12.14928,63.59373],[12.19919,63.47935],[11.98529,63.27487],[12.19919,63.00104],[12.07085,62.6297],[12.29187,62.25699],[12.14746,61.7147],[12.40595,61.57226],[12.57707,61.56547],[12.86939,61.35427],[12.69115,61.06584],[12.2277,61.02442],[12.59133,60.50559],[12.52003,60.13846],[12.36317,59.99259],[12.15641,59.8926],[11.87121,59.86039],[11.92112,59.69531],[11.69297,59.59442],[11.8213,59.24985],[11.65732,58.90177],[11.45199,58.89604],[11.4601,58.99022],[11.34459,59.11672],[11.15367,59.07862],[11.08911,58.98745],[10.64958,58.89391],[10.40861,58.38489],[12.16597,56.60205],[12.07466,56.29488],[12.65312,56.04345],[12.6372,55.91371],[12.88472,55.63369],[12.60345,55.42675],[12.84405,55.13257],[14.28399,55.1553],[14.89259,55.5623],[15.79951,55.54655],[19.64795,57.06466],[19.84909,57.57876],[20.5104,59.15546],[19.08191,60.19152],[19.23413,60.61414],[20.15877,63.06556],[24.14112,65.39731],[24.15107,65.81427],[24.14798,65.83466],[24.15791,65.85385]]]]}},{type:"Feature",properties:{iso1A2:"SG",iso1A3:"SGP",iso1N3:"702",wikidata:"Q334",nameEn:"Singapore",groups:["035","142","UN"],driveSide:"left",callingCodes:["65"]},geometry:{type:"MultiPolygon",coordinates:[[[[104.00131,1.42405],[103.93384,1.42926],[103.89565,1.42841],[103.86383,1.46288],[103.81181,1.47953],[103.76395,1.45183],[103.74161,1.4502],[103.7219,1.46108],[103.67468,1.43166],[103.62738,1.35255],[103.56591,1.19719],[103.66049,1.18825],[103.74084,1.12902],[104.03085,1.26954],[104.12282,1.27714],[104.08072,1.35998],[104.09162,1.39694],[104.08871,1.42015],[104.07348,1.43322],[104.04622,1.44691],[104.02277,1.4438],[104.00131,1.42405]]]]}},{type:"Feature",properties:{iso1A2:"SH",iso1A3:"SHN",iso1N3:"654",wikidata:"Q192184",nameEn:"Saint Helena, Ascension and Tristan da Cunha",country:"GB"},geometry:null},{type:"Feature",properties:{iso1A2:"SI",iso1A3:"SVN",iso1N3:"705",wikidata:"Q215",nameEn:"Slovenia",groups:["EU","039","150","UN"],callingCodes:["386"]},geometry:{type:"MultiPolygon",coordinates:[[[[16.50139,46.56684],[16.39217,46.63673],[16.38594,46.6549],[16.41863,46.66238],[16.42641,46.69228],[16.37816,46.69975],[16.30966,46.7787],[16.31303,46.79838],[16.3408,46.80641],[16.34547,46.83836],[16.2941,46.87137],[16.2365,46.87775],[16.21892,46.86961],[16.15711,46.85434],[16.14365,46.8547],[16.10983,46.867],[16.05786,46.83927],[15.99054,46.82772],[15.99126,46.78199],[15.98432,46.74991],[15.99769,46.7266],[16.02808,46.71094],[16.04347,46.68694],[16.04036,46.6549],[15.99988,46.67947],[15.98512,46.68463],[15.94864,46.68769],[15.87691,46.7211],[15.8162,46.71897],[15.78518,46.70712],[15.76771,46.69863],[15.73823,46.70011],[15.72279,46.69548],[15.69523,46.69823],[15.67411,46.70735],[15.6543,46.70616],[15.6543,46.69228],[15.6365,46.6894],[15.63255,46.68069],[15.62317,46.67947],[15.59826,46.68908],[15.54533,46.66985],[15.55333,46.64988],[15.54431,46.6312],[15.46906,46.61321],[15.45514,46.63697],[15.41235,46.65556],[15.23711,46.63994],[15.14215,46.66131],[15.01451,46.641],[14.98024,46.6009],[14.96002,46.63459],[14.92283,46.60848],[14.87129,46.61],[14.86419,46.59411],[14.83549,46.56614],[14.81836,46.51046],[14.72185,46.49974],[14.66892,46.44936],[14.5942,46.43434],[14.56463,46.37208],[14.52176,46.42617],[14.45877,46.41717],[14.42608,46.44614],[14.314,46.43327],[14.28326,46.44315],[14.15989,46.43327],[14.12097,46.47724],[14.04002,46.49117],[14.00422,46.48474],[13.89837,46.52331],[13.7148,46.5222],[13.68684,46.43881],[13.59777,46.44137],[13.5763,46.42613],[13.5763,46.40915],[13.47019,46.3621],[13.43418,46.35992],[13.44808,46.33507],[13.37671,46.29668],[13.42218,46.20758],[13.47587,46.22725],[13.56114,46.2054],[13.56682,46.18703],[13.64451,46.18966],[13.66472,46.17392],[13.64053,46.13587],[13.57072,46.09022],[13.50104,46.05986],[13.49568,46.04839],[13.50998,46.04498],[13.49702,46.01832],[13.47474,46.00546],[13.50104,45.98078],[13.52963,45.96588],[13.56759,45.96991],[13.58903,45.99009],[13.62074,45.98388],[13.63458,45.98947],[13.64307,45.98326],[13.6329,45.94894],[13.63815,45.93607],[13.61931,45.91782],[13.60857,45.89907],[13.59565,45.89446],[13.58644,45.88173],[13.57563,45.8425],[13.58858,45.83503],[13.59784,45.8072],[13.66986,45.79955],[13.8235,45.7176],[13.83332,45.70855],[13.83422,45.68703],[13.87933,45.65207],[13.9191,45.6322],[13.8695,45.60835],[13.86771,45.59898],[13.84106,45.58185],[13.78445,45.5825],[13.74587,45.59811],[13.7198,45.59352],[13.6076,45.64761],[13.45644,45.59464],[13.56979,45.4895],[13.62902,45.45898],[13.67398,45.4436],[13.7785,45.46787],[13.81742,45.43729],[13.88124,45.42637],[13.90771,45.45149],[13.97309,45.45258],[13.99488,45.47551],[13.96063,45.50825],[14.00578,45.52352],[14.07116,45.48752],[14.20348,45.46896],[14.22371,45.50388],[14.24239,45.50607],[14.26611,45.48239],[14.27681,45.4902],[14.32487,45.47142],[14.36693,45.48642],[14.49769,45.54424],[14.5008,45.60852],[14.53816,45.6205],[14.57397,45.67165],[14.60977,45.66403],[14.59576,45.62812],[14.69694,45.57366],[14.68605,45.53006],[14.71718,45.53442],[14.80124,45.49515],[14.81992,45.45913],[14.90554,45.47769],[14.92266,45.52788],[15.02385,45.48533],[15.05187,45.49079],[15.16862,45.42309],[15.27758,45.46678],[15.33051,45.45258],[15.38188,45.48752],[15.30249,45.53224],[15.29837,45.5841],[15.27747,45.60504],[15.31027,45.6303],[15.34695,45.63382],[15.34214,45.64702],[15.38952,45.63682],[15.4057,45.64727],[15.34919,45.71623],[15.30872,45.69014],[15.25423,45.72275],[15.40836,45.79491],[15.47531,45.79802],[15.47325,45.8253],[15.52234,45.82195],[15.57952,45.84953],[15.64185,45.82915],[15.66662,45.84085],[15.70411,45.8465],[15.68232,45.86819],[15.68383,45.88867],[15.67967,45.90455],[15.70636,45.92116],[15.70327,46.00015],[15.71246,46.01196],[15.72977,46.04682],[15.62317,46.09103],[15.6083,46.11992],[15.59909,46.14761],[15.64904,46.19229],[15.6434,46.21396],[15.67395,46.22478],[15.75436,46.21969],[15.75479,46.20336],[15.78817,46.21719],[15.79284,46.25811],[15.97965,46.30652],[16.07616,46.3463],[16.07314,46.36458],[16.05065,46.3833],[16.05281,46.39141],[16.14859,46.40547],[16.18824,46.38282],[16.30233,46.37837],[16.30162,46.40437],[16.27329,46.41467],[16.27398,46.42875],[16.25124,46.48067],[16.23961,46.49653],[16.26759,46.50566],[16.26733,46.51505],[16.29793,46.5121],[16.37193,46.55008],[16.38771,46.53608],[16.44036,46.5171],[16.5007,46.49644],[16.52604,46.47831],[16.59527,46.47524],[16.52604,46.5051],[16.52885,46.53303],[16.50139,46.56684]]]]}},{type:"Feature",properties:{iso1A2:"SJ",iso1A3:"SJM",iso1N3:"744",wikidata:"Q842829",nameEn:"Svalbard and Jan Mayen",country:"NO"},geometry:null},{type:"Feature",properties:{iso1A2:"SK",iso1A3:"SVK",iso1N3:"703",wikidata:"Q214",nameEn:"Slovakia",groups:["EU","151","150","UN"],callingCodes:["421"]},geometry:{type:"MultiPolygon",coordinates:[[[[19.82237,49.27806],[19.78581,49.41701],[19.72127,49.39288],[19.6375,49.40897],[19.64162,49.45184],[19.57845,49.46077],[19.53313,49.52856],[19.52626,49.57311],[19.45348,49.61583],[19.37795,49.574],[19.36009,49.53747],[19.25435,49.53391],[19.18019,49.41165],[18.9742,49.39557],[18.97283,49.49914],[18.94536,49.52143],[18.84521,49.51672],[18.74761,49.492],[18.67757,49.50895],[18.6144,49.49824],[18.57183,49.51162],[18.53063,49.49022],[18.54848,49.47059],[18.44686,49.39467],[18.4084,49.40003],[18.4139,49.36517],[18.36446,49.3267],[18.18456,49.28909],[18.15022,49.24518],[18.1104,49.08624],[18.06885,49.03157],[17.91814,49.01784],[17.87831,48.92679],[17.77944,48.92318],[17.73126,48.87885],[17.7094,48.86721],[17.5295,48.81117],[17.45671,48.85004],[17.3853,48.80936],[17.29054,48.85546],[17.19355,48.87602],[17.11202,48.82925],[17.00215,48.70887],[16.93955,48.60371],[16.94611,48.53614],[16.85204,48.44968],[16.8497,48.38321],[16.83588,48.3844],[16.83317,48.38138],[16.84243,48.35258],[16.90903,48.32519],[16.89461,48.31332],[16.97701,48.17385],[17.02919,48.13996],[17.05735,48.14179],[17.09168,48.09366],[17.07039,48.0317],[17.16001,48.00636],[17.23699,48.02094],[17.71215,47.7548],[18.02938,47.75665],[18.29305,47.73541],[18.56496,47.76588],[18.66521,47.76772],[18.74074,47.8157],[18.8506,47.82308],[18.76821,47.87469],[18.76134,47.97499],[18.82176,48.04206],[19.01952,48.07052],[19.23924,48.0595],[19.28182,48.08336],[19.47957,48.09437],[19.52489,48.19791],[19.63338,48.25006],[19.92452,48.1283],[20.24312,48.2784],[20.29943,48.26104],[20.5215,48.53336],[20.83248,48.5824],[21.11516,48.49546],[21.44063,48.58456],[21.6068,48.50365],[21.67134,48.3989],[21.72525,48.34628],[21.8279,48.33321],[21.83339,48.36242],[22.14689,48.4005],[22.16023,48.56548],[22.21379,48.6218],[22.34151,48.68893],[22.42934,48.92857],[22.48296,48.99172],[22.54338,49.01424],[22.56155,49.08865],[22.04427,49.22136],[21.96385,49.3437],[21.82927,49.39467],[21.77983,49.35443],[21.62328,49.4447],[21.43376,49.41433],[21.27858,49.45988],[21.19756,49.4054],[21.12477,49.43666],[21.041,49.41791],[21.09799,49.37176],[20.98733,49.30774],[20.9229,49.29626],[20.77971,49.35383],[20.72274,49.41813],[20.61666,49.41791],[20.5631,49.375],[20.46422,49.41612],[20.39939,49.3896],[20.31728,49.39914],[20.31453,49.34817],[20.21977,49.35265],[20.13738,49.31685],[20.08238,49.1813],[19.98494,49.22904],[19.90529,49.23532],[19.86409,49.19316],[19.75286,49.20751],[19.82237,49.27806]]]]}},{type:"Feature",properties:{iso1A2:"SL",iso1A3:"SLE",iso1N3:"694",wikidata:"Q1044",nameEn:"Sierra Leone",groups:["011","202","002","UN"],callingCodes:["232"]},geometry:{type:"MultiPolygon",coordinates:[[[[-10.27575,8.48711],[-10.37257,8.48941],[-10.54891,8.31174],[-10.63934,8.35326],[-10.70565,8.29235],[-10.61422,8.5314],[-10.47707,8.67669],[-10.56197,8.81225],[-10.5783,9.06386],[-10.74484,9.07998],[-10.6534,9.29919],[-11.2118,10.00098],[-11.89624,9.99763],[-11.91023,9.93927],[-12.12634,9.87203],[-12.24262,9.92386],[-12.47254,9.86834],[-12.76788,9.3133],[-12.94095,9.26335],[-13.08953,9.0409],[-13.18586,9.0925],[-13.29911,9.04245],[-14.36218,8.64107],[-12.15048,6.15992],[-11.50429,6.92704],[-11.4027,6.97746],[-11.29417,7.21576],[-10.60422,7.7739],[-10.60492,8.04072],[-10.57523,8.04829],[-10.51554,8.1393],[-10.45023,8.15627],[-10.35227,8.15223],[-10.29839,8.21283],[-10.31635,8.28554],[-10.30084,8.30008],[-10.27575,8.48711]]]]}},{type:"Feature",properties:{iso1A2:"SM",iso1A3:"SMR",iso1N3:"674",wikidata:"Q238",nameEn:"San Marino",groups:["039","150","UN"],callingCodes:["378"]},geometry:{type:"MultiPolygon",coordinates:[[[[12.45648,43.89369],[12.48771,43.89706],[12.49429,43.90973],[12.49247,43.91774],[12.49724,43.92248],[12.50269,43.92363],[12.50496,43.93017],[12.51553,43.94096],[12.51427,43.94897],[12.50655,43.95796],[12.50875,43.96198],[12.50622,43.97131],[12.51109,43.97201],[12.51064,43.98165],[12.5154,43.98508],[12.51463,43.99122],[12.50678,43.99113],[12.49406,43.98492],[12.47853,43.98052],[12.46205,43.97463],[12.44684,43.96597],[12.43662,43.95698],[12.42005,43.9578],[12.41414,43.95273],[12.40415,43.95485],[12.40506,43.94325],[12.41165,43.93769],[12.41551,43.92984],[12.40733,43.92379],[12.41233,43.90956],[12.40935,43.9024],[12.41641,43.89991],[12.44184,43.90498],[12.45648,43.89369]]]]}},{type:"Feature",properties:{iso1A2:"SN",iso1A3:"SEN",iso1N3:"686",wikidata:"Q1041",nameEn:"Senegal",groups:["011","202","002","UN"],callingCodes:["221"]},geometry:{type:"MultiPolygon",coordinates:[[[[-14.32144,16.61495],[-15.00557,16.64997],[-15.6509,16.50315],[-16.27016,16.51565],[-16.4429,16.20605],[-16.44814,16.09753],[-16.48967,16.0496],[-16.50854,16.09032],[-17.15288,16.07139],[-18.35085,14.63444],[-17.43598,13.59273],[-15.47902,13.58758],[-15.36504,13.79313],[-14.93719,13.80173],[-14.34721,13.46578],[-13.8955,13.59126],[-13.79409,13.34472],[-14.36795,13.23033],[-15.14917,13.57989],[-15.26908,13.37768],[-15.80478,13.34832],[-15.80355,13.16729],[-16.69343,13.16791],[-16.74676,13.06025],[-17.43966,13.04579],[-17.4623,11.92379],[-16.70562,12.34803],[-16.38191,12.36449],[-16.20591,12.46157],[-15.67302,12.42974],[-15.17582,12.6847],[-13.70523,12.68013],[-13.05296,12.64003],[-13.06603,12.49342],[-12.87336,12.51892],[-12.35415,12.32758],[-11.91331,12.42008],[-11.46267,12.44559],[-11.37536,12.40788],[-11.39935,12.97808],[-11.63025,13.39174],[-11.83345,13.33333],[-12.06897,13.71049],[-11.93043,13.84505],[-12.23936,14.76324],[-13.11029,15.52116],[-13.43135,16.09022],[-13.80075,16.13961],[-14.32144,16.61495]]]]}},{type:"Feature",properties:{iso1A2:"SO",iso1A3:"SOM",iso1N3:"706",wikidata:"Q1045",nameEn:"Somalia",groups:["014","202","002","UN"],callingCodes:["252"]},geometry:{type:"MultiPolygon",coordinates:[[[[51.12877,12.56479],[43.90659,12.3823],[42.95776,10.98533],[42.69452,10.62672],[42.87643,10.18441],[43.0937,9.90579],[43.23518,9.84605],[43.32613,9.59205],[44.19222,8.93028],[46.99339,7.9989],[47.92477,8.00111],[47.97917,8.00124],[44.98104,4.91821],[44.02436,4.9451],[43.40263,4.79289],[43.04177,4.57923],[42.97746,4.44032],[42.84526,4.28357],[42.55853,4.20518],[42.07619,4.17667],[41.89488,3.97375],[41.31368,3.14314],[40.98767,2.82959],[41.00099,-.83068],[41.56,-1.59812],[41.56362,-1.66375],[41.75542,-1.85308],[57.49095,8.14549],[51.12877,12.56479]]]]}},{type:"Feature",properties:{iso1A2:"SR",iso1A3:"SUR",iso1N3:"740",wikidata:"Q730",nameEn:"Suriname",groups:["005","419","019","UN"],driveSide:"left",callingCodes:["597"]},geometry:{type:"MultiPolygon",coordinates:[[[[-54.26916,5.26909],[-54.01877,5.52789],[-54.01074,5.68785],[-53.7094,6.2264],[-56.84822,6.73257],[-57.31629,5.33714],[-57.22536,5.15605],[-57.37442,5.0208],[-57.8699,4.89394],[-58.0307,3.95513],[-57.35891,3.32121],[-56.70519,2.02964],[-56.55439,2.02003],[-56.47045,1.95135],[-55.99278,1.83137],[-55.89863,1.89861],[-55.92159,2.05236],[-56.13054,2.27723],[-55.96292,2.53188],[-55.71493,2.40342],[-55.01919,2.564],[-54.6084,2.32856],[-54.42864,2.42442],[-54.28534,2.67798],[-53.9849,3.58697],[-53.98914,3.627],[-54.05128,3.63557],[-54.19367,3.84387],[-54.38444,4.13222],[-54.4717,4.91964],[-54.26916,5.26909]]]]}},{type:"Feature",properties:{iso1A2:"SS",iso1A3:"SSD",iso1N3:"728",wikidata:"Q958",nameEn:"South Sudan",groups:["014","202","002","UN"],callingCodes:["211"]},geometry:{type:"MultiPolygon",coordinates:[[[[34.10229,9.50238],[33.87958,9.49937],[33.9082,9.762],[33.96323,9.80972],[33.99185,9.99623],[33.96984,10.15446],[33.90159,10.17179],[33.80913,10.32994],[33.66604,10.44254],[33.52294,10.64382],[33.24645,10.77913],[33.26977,10.83632],[33.13988,11.43248],[33.25876,12.22111],[32.73921,12.22757],[32.73921,11.95203],[32.10079,11.95203],[32.39578,11.70208],[32.39358,11.18207],[32.46967,11.04662],[31.99177,10.65065],[31.77539,10.28939],[31.28504,9.75287],[30.84605,9.7498],[30.82893,9.71451],[30.53005,9.95992],[30.00389,10.28633],[29.94629,10.29245],[29.54,10.07949],[29.53844,9.75133],[29.06988,9.74826],[28.99983,9.67155],[27.90704,9.61323],[27.14427,9.62858],[26.70685,9.48735],[26.35815,9.57946],[26.21338,9.91545],[25.93241,10.17941],[25.93163,10.38159],[25.78141,10.42599],[25.0918,10.33718],[25.05688,10.06776],[24.97739,9.9081],[24.84653,9.80643],[24.49389,9.79962],[24.12744,9.73784],[24.09319,9.66572],[23.69155,9.67566],[23.62179,9.53823],[23.64981,9.44303],[23.64358,9.28637],[23.56263,9.19418],[23.4848,9.16959],[23.44744,8.99128],[23.59065,8.99743],[23.51905,8.71749],[24.25691,8.69288],[24.13238,8.36959],[24.35965,8.26177],[24.85156,8.16933],[24.98855,7.96588],[25.25319,7.8487],[25.29214,7.66675],[25.20649,7.61115],[25.20337,7.50312],[25.35281,7.42595],[25.37461,7.33024],[25.90076,7.09549],[26.38022,6.63493],[26.32729,6.36272],[26.58259,6.1987],[26.51721,6.09655],[27.22705,5.71254],[27.22705,5.62889],[27.28621,5.56382],[27.23017,5.37167],[27.26886,5.25876],[27.44012,5.07349],[27.56656,4.89375],[27.65462,4.89375],[27.76469,4.79284],[27.79551,4.59976],[28.20719,4.35614],[28.6651,4.42638],[28.8126,4.48784],[29.03054,4.48784],[29.22207,4.34297],[29.43341,4.50101],[29.49726,4.7007],[29.82087,4.56246],[29.79666,4.37809],[30.06964,4.13221],[30.1621,4.10586],[30.22374,3.93896],[30.27658,3.95653],[30.47691,3.83353],[30.55396,3.84451],[30.57378,3.74567],[30.56277,3.62703],[30.78512,3.67097],[30.80713,3.60506],[30.85997,3.5743],[30.85153,3.48867],[30.97601,3.693],[31.16666,3.79853],[31.29476,3.8015],[31.50478,3.67814],[31.50776,3.63652],[31.72075,3.74354],[31.81459,3.82083],[31.86821,3.78664],[31.96205,3.6499],[31.95907,3.57408],[32.05187,3.589],[32.08491,3.56287],[32.08866,3.53543],[32.19888,3.50867],[32.20782,3.6053],[32.41337,3.748],[32.72021,3.77327],[32.89746,3.81339],[33.02852,3.89296],[33.18356,3.77812],[33.51264,3.75068],[33.9873,4.23316],[34.47601,4.72162],[35.34151,5.02364],[35.30992,4.90402],[35.47843,4.91872],[35.42366,4.76969],[35.51424,4.61643],[35.9419,4.61933],[35.82118,4.77382],[35.81968,5.10757],[35.8576,5.33413],[35.50792,5.42431],[35.29938,5.34042],[35.31188,5.50106],[35.13058,5.62118],[35.12611,5.68937],[35.00546,5.89387],[34.96227,6.26415],[35.01738,6.46991],[34.87736,6.60161],[34.77459,6.5957],[34.65096,6.72589],[34.53776,6.74808],[34.53925,6.82794],[34.47669,6.91076],[34.35753,6.91963],[34.19369,7.04382],[34.19369,7.12807],[34.01495,7.25664],[34.03878,7.27437],[34.02984,7.36449],[33.87642,7.5491],[33.71407,7.65983],[33.44745,7.7543],[33.32531,7.71297],[33.24637,7.77939],[33.04944,7.78989],[33.0006,7.90333],[33.08401,8.05822],[33.18083,8.13047],[33.1853,8.29264],[33.19721,8.40317],[33.3119,8.45474],[33.54575,8.47094],[33.66938,8.44442],[33.71407,8.3678],[33.87195,8.41938],[33.89579,8.4842],[34.01346,8.50041],[34.14453,8.60204],[34.14304,9.04654],[34.10229,9.50238]]]]}},{type:"Feature",properties:{iso1A2:"ST",iso1A3:"STP",iso1N3:"678",wikidata:"Q1039",nameEn:"S\xE3o Tom\xE9 and Principe",groups:["017","202","002","UN"],callingCodes:["239"]},geometry:{type:"MultiPolygon",coordinates:[[[[4.34149,1.91417],[6.6507,-.28606],[7.9035,1.92304],[4.34149,1.91417]]]]}},{type:"Feature",properties:{iso1A2:"SV",iso1A3:"SLV",iso1N3:"222",wikidata:"Q792",nameEn:"El Salvador",groups:["013","003","419","019","UN"],callingCodes:["503"]},geometry:{type:"MultiPolygon",coordinates:[[[[-89.34776,14.43013],[-89.39028,14.44561],[-89.57441,14.41637],[-89.58814,14.33165],[-89.50614,14.26084],[-89.52397,14.22628],[-89.61844,14.21937],[-89.70756,14.1537],[-89.75569,14.07073],[-89.73251,14.04133],[-89.76103,14.02923],[-89.81807,14.07073],[-89.88937,14.0396],[-90.10505,13.85104],[-90.11344,13.73679],[-90.55276,12.8866],[-88.11443,12.63306],[-87.7346,13.13228],[-87.55124,13.12523],[-87.69751,13.25228],[-87.73714,13.32715],[-87.80177,13.35689],[-87.84675,13.41078],[-87.83467,13.44655],[-87.77354,13.45767],[-87.73841,13.44169],[-87.72115,13.46083],[-87.71657,13.50577],[-87.78148,13.52906],[-87.73106,13.75443],[-87.68821,13.80829],[-87.7966,13.91353],[-88.00331,13.86948],[-88.07641,13.98447],[-88.23018,13.99915],[-88.25791,13.91108],[-88.48982,13.86458],[-88.49738,13.97224],[-88.70661,14.04317],[-88.73182,14.10919],[-88.815,14.11652],[-88.85785,14.17763],[-88.94608,14.20207],[-89.04187,14.33644],[-89.34776,14.43013]]]]}},{type:"Feature",properties:{iso1A2:"SX",iso1A3:"SXM",iso1N3:"534",wikidata:"Q26273",nameEn:"Sint Maarten",aliases:["NL-SX"],country:"NL",groups:["Q1451600","029","003","419","019","UN"],callingCodes:["1 721"]},geometry:{type:"MultiPolygon",coordinates:[[[[-63.33064,17.9615],[-63.1055,17.86651],[-62.93924,18.02904],[-63.02323,18.05757],[-63.04039,18.05619],[-63.0579,18.06614],[-63.07759,18.04943],[-63.09686,18.04608],[-63.11042,18.05339],[-63.13502,18.05445],[-63.33064,17.9615]]]]}},{type:"Feature",properties:{iso1A2:"SY",iso1A3:"SYR",iso1N3:"760",wikidata:"Q858",nameEn:"Syria",groups:["145","142","UN"],callingCodes:["963"]},geometry:{type:"MultiPolygon",coordinates:[[[[42.23683,37.2863],[42.21548,37.28026],[42.20454,37.28715],[42.22381,37.30238],[42.22257,37.31395],[42.2112,37.32491],[42.19301,37.31323],[42.18225,37.28569],[42.00894,37.17209],[41.515,37.08084],[41.21937,37.07665],[40.90856,37.13147],[40.69136,37.0996],[39.81589,36.75538],[39.21538,36.66834],[39.03217,36.70911],[38.74042,36.70629],[38.55908,36.84429],[38.38859,36.90064],[38.21064,36.91842],[37.81974,36.76055],[37.68048,36.75065],[37.49103,36.66904],[37.47253,36.63243],[37.21988,36.6736],[37.16177,36.66069],[37.10894,36.6704],[37.08279,36.63495],[37.02088,36.66422],[37.01647,36.69512],[37.04619,36.71101],[37.04399,36.73483],[36.99886,36.74012],[36.99557,36.75997],[36.66727,36.82901],[36.61581,36.74629],[36.62681,36.71189],[36.57398,36.65186],[36.58829,36.58295],[36.54206,36.49539],[36.6081,36.33772],[36.65653,36.33861],[36.68672,36.23677],[36.6125,36.22592],[36.50463,36.2419],[36.4617,36.20461],[36.39206,36.22088],[36.37474,36.01163],[36.33956,35.98687],[36.30099,36.00985],[36.28338,36.00273],[36.29769,35.96086],[36.27678,35.94839],[36.25366,35.96264],[36.19973,35.95195],[36.17441,35.92076],[36.1623,35.80925],[36.14029,35.81015],[36.13919,35.83692],[36.11827,35.85923],[35.99829,35.88242],[36.01844,35.92403],[36.00514,35.94113],[35.98499,35.94107],[35.931,35.92109],[35.51152,36.10954],[35.48515,34.70851],[35.97386,34.63322],[35.98718,34.64977],[36.29165,34.62991],[36.32399,34.69334],[36.35135,34.68516],[36.35384,34.65447],[36.42941,34.62505],[36.46003,34.6378],[36.45299,34.59438],[36.41429,34.61175],[36.39846,34.55672],[36.3369,34.52629],[36.34745,34.5002],[36.4442,34.50165],[36.46179,34.46541],[36.55853,34.41609],[36.53039,34.3798],[36.56556,34.31881],[36.60778,34.31009],[36.58667,34.27667],[36.59195,34.2316],[36.62537,34.20251],[36.5128,34.09916],[36.50576,34.05982],[36.41078,34.05253],[36.28589,33.91981],[36.38263,33.86579],[36.3967,33.83365],[36.14517,33.85118],[36.06778,33.82927],[35.9341,33.6596],[36.05723,33.57904],[35.94465,33.52774],[35.94816,33.47886],[35.88668,33.43183],[35.82577,33.40479],[35.81324,33.36354],[35.77477,33.33609],[35.813,33.3172],[35.77513,33.27342],[35.81295,33.24841],[35.81647,33.2028],[35.83846,33.19397],[35.84285,33.16673],[35.81911,33.1336],[35.81911,33.11077],[35.84802,33.1031],[35.87188,32.98028],[35.89298,32.9456],[35.87012,32.91976],[35.84021,32.8725],[35.83758,32.82817],[35.78745,32.77938],[35.75983,32.74803],[35.88405,32.71321],[35.93307,32.71966],[35.96633,32.66237],[36.02239,32.65911],[36.08074,32.51463],[36.20379,32.52751],[36.20875,32.49529],[36.23948,32.50108],[36.40959,32.37908],[36.83946,32.31293],[38.79171,33.37328],[40.64314,34.31604],[40.97676,34.39788],[41.12388,34.65742],[41.2345,34.80049],[41.21654,35.1508],[41.26569,35.42708],[41.38184,35.62502],[41.37027,35.84095],[41.2564,36.06012],[41.28864,36.35368],[41.40058,36.52502],[41.81736,36.58782],[42.36697,37.0627],[42.35724,37.10998],[42.32313,37.17814],[42.34735,37.22548],[42.2824,37.2798],[42.26039,37.27017],[42.23683,37.2863]]]]}},{type:"Feature",properties:{iso1A2:"SZ",iso1A3:"SWZ",iso1N3:"748",wikidata:"Q1050",nameEn:"Eswatini",aliases:["Swaziland"],groups:["018","202","002","UN"],driveSide:"left",callingCodes:["268"]},geometry:{type:"MultiPolygon",coordinates:[[[[31.86881,-25.99973],[31.4175,-25.71886],[31.31237,-25.7431],[31.13073,-25.91558],[30.95819,-26.26303],[30.78927,-26.48271],[30.81101,-26.84722],[30.88826,-26.79622],[30.97757,-26.92706],[30.96088,-27.0245],[31.15027,-27.20151],[31.49834,-27.31549],[31.97592,-27.31675],[31.97463,-27.11057],[32.00893,-26.8096],[32.09664,-26.80721],[32.13315,-26.84345],[32.13409,-26.5317],[32.07352,-26.40185],[32.10435,-26.15656],[32.08599,-26.00978],[32.00916,-25.999],[31.974,-25.95387],[31.86881,-25.99973]]]]}},{type:"Feature",properties:{iso1A2:"TA",iso1A3:"TAA",wikidata:"Q220982",nameEn:"Tristan da Cunha",aliases:["SH-TA"],country:"GB",groups:["SH","BOTS","011","202","002","UN"],isoStatus:"excRes",driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["290 8","44 20"]},geometry:{type:"MultiPolygon",coordinates:[[[[-13.38232,-34.07258],[-16.67337,-41.9188],[-5.88482,-41.4829],[-13.38232,-34.07258]]]]}},{type:"Feature",properties:{iso1A2:"TC",iso1A3:"TCA",iso1N3:"796",wikidata:"Q18221",nameEn:"Turks and Caicos Islands",country:"GB",groups:["BOTS","029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1 649"]},geometry:{type:"MultiPolygon",coordinates:[[[[-71.70065,25.7637],[-72.98446,20.4801],[-69.80718,21.35956],[-71.70065,25.7637]]]]}},{type:"Feature",properties:{iso1A2:"TD",iso1A3:"TCD",iso1N3:"148",wikidata:"Q657",nameEn:"Chad",groups:["017","202","002","UN"],callingCodes:["235"]},geometry:{type:"MultiPolygon",coordinates:[[[[23.99539,19.49944],[15.99566,23.49639],[14.99751,23.00539],[15.19692,21.99339],[15.20213,21.49365],[15.28332,21.44557],[15.62515,20.95395],[15.57248,20.92138],[15.55382,20.86507],[15.56004,20.79488],[15.59841,20.74039],[15.6721,20.70069],[15.99632,20.35364],[15.75098,19.93002],[15.6032,18.77402],[15.50373,16.89649],[14.37425,15.72591],[13.86301,15.04043],[13.78991,14.87519],[13.809,14.72915],[13.67878,14.64013],[13.68573,14.55276],[13.48259,14.46704],[13.47559,14.40881],[13.6302,13.71094],[14.08251,13.0797],[14.46881,13.08259],[14.56101,12.91036],[14.55058,12.78256],[14.83314,12.62963],[14.90827,12.3269],[14.89019,12.16593],[14.96952,12.0925],[15.00146,12.1223],[15.0349,12.10698],[15.05786,12.0608],[15.04808,11.8731],[15.11579,11.79313],[15.06595,11.71126],[15.13149,11.5537],[15.0585,11.40481],[15.10021,11.04101],[15.04957,11.02347],[15.09127,10.87431],[15.06737,10.80921],[15.15532,10.62846],[15.14936,10.53915],[15.23724,10.47764],[15.30874,10.31063],[15.50535,10.1098],[15.68761,9.99344],[15.41408,9.92876],[15.24618,9.99246],[15.14043,9.99246],[15.05999,9.94845],[14.95722,9.97926],[14.80082,9.93818],[14.4673,10.00264],[14.20411,10.00055],[14.1317,9.82413],[14.01793,9.73169],[13.97544,9.6365],[14.37094,9.2954],[14.35707,9.19611],[14.83566,8.80557],[15.09484,8.65982],[15.20426,8.50892],[15.50743,7.79302],[15.59272,7.7696],[15.56964,7.58936],[15.49743,7.52179],[15.73118,7.52006],[15.79942,7.44149],[16.40703,7.68809],[16.41583,7.77971],[16.58315,7.88657],[16.59415,7.76444],[16.658,7.75353],[16.6668,7.67281],[16.8143,7.53971],[17.67288,7.98905],[17.93926,7.95853],[18.02731,8.01085],[18.6085,8.05009],[18.64153,8.08714],[18.62612,8.14163],[18.67455,8.22226],[18.79783,8.25929],[19.11044,8.68172],[18.86388,8.87971],[19.06421,9.00367],[20.36748,9.11019],[20.82979,9.44696],[21.26348,9.97642],[21.34934,9.95907],[21.52766,10.2105],[21.63553,10.217],[21.71479,10.29932],[21.72139,10.64136],[22.45889,11.00246],[22.87758,10.91915],[22.97249,11.21955],[22.93124,11.41645],[22.7997,11.40424],[22.54907,11.64372],[22.64092,12.07485],[22.48369,12.02766],[22.50548,12.16769],[22.38873,12.45514],[22.46345,12.61925],[22.22684,12.74682],[22.15679,12.66634],[21.98711,12.63292],[21.89371,12.68001],[21.81432,12.81362],[21.94819,13.05637],[22.02914,13.13976],[22.1599,13.19281],[22.29689,13.3731],[22.08674,13.77863],[22.22995,13.96754],[22.5553,14.11704],[22.55997,14.23024],[22.44944,14.24986],[22.38562,14.58907],[22.70474,14.69149],[22.66115,14.86308],[22.99584,15.22989],[22.99584,15.40105],[22.92579,15.47007],[22.93201,15.55107],[23.10792,15.71297],[23.38812,15.69649],[23.62785,15.7804],[23.99997,15.69575],[23.99539,19.49944]]]]}},{type:"Feature",properties:{iso1A2:"TF",iso1A3:"ATF",iso1N3:"260",wikidata:"Q129003",nameEn:"French Southern Territories",country:"FR",groups:["EU","UN"]},geometry:null},{type:"Feature",properties:{iso1A2:"TG",iso1A3:"TGO",iso1N3:"768",wikidata:"Q945",nameEn:"Togo",groups:["011","202","002","UN"],callingCodes:["228"]},geometry:{type:"MultiPolygon",coordinates:[[[[.50388,11.01011],[-.13493,11.14075],[-.14462,11.10811],[-.05733,11.08628],[-.0275,11.11202],[-.00514,11.10763],[.00342,11.08317],[.02395,11.06229],[.03355,10.9807],[-.0063,10.96417],[-.00908,10.91644],[-.02685,10.8783],[-.0228,10.81916],[-.07183,10.76794],[-.07327,10.71845],[-.09141,10.7147],[-.05945,10.63458],[.12886,10.53149],[.18846,10.4096],[.29453,10.41546],[.33028,10.30408],[.39584,10.31112],[.35293,10.09412],[.41371,10.06361],[.41252,10.02018],[.36366,10.03309],[.32075,9.72781],[.34816,9.71607],[.34816,9.66907],[.32313,9.6491],[.28261,9.69022],[.26712,9.66437],[.29334,9.59387],[.36008,9.6256],[.38153,9.58682],[.23851,9.57389],[.2409,9.52335],[.30406,9.521],[.31241,9.50337],[.2254,9.47869],[.25758,9.42696],[.33148,9.44812],[.36485,9.49749],[.49118,9.48339],[.56388,9.40697],[.45424,9.04581],[.52455,8.87746],[.37319,8.75262],[.47211,8.59945],[.64731,8.48866],[.73432,8.29529],[.63897,8.25873],[.5913,8.19622],[.61156,8.18324],[.6056,8.13959],[.58891,8.12779],[.62943,7.85751],[.58295,7.62368],[.51979,7.58706],[.52455,7.45354],[.57223,7.39326],[.62943,7.41099],[.65327,7.31643],[.59606,7.01252],[.52217,6.9723],[.52098,6.94391],[.56508,6.92971],[.52853,6.82921],[.57406,6.80348],[.58176,6.76049],[.6497,6.73682],[.63659,6.63857],[.74862,6.56517],[.71048,6.53083],[.89283,6.33779],[.99652,6.33779],[1.03108,6.24064],[1.05969,6.22998],[1.09187,6.17074],[1.19966,6.17069],[1.19771,6.11522],[1.27574,5.93551],[1.67336,6.02702],[1.62913,6.24075],[1.79826,6.28221],[1.76906,6.43189],[1.58105,6.68619],[1.61812,6.74843],[1.55877,6.99737],[1.64249,6.99562],[1.61838,9.0527],[1.5649,9.16941],[1.41746,9.3226],[1.33675,9.54765],[1.36624,9.5951],[1.35507,9.99525],[.77666,10.37665],[.80358,10.71459],[.8804,10.803],[.91245,10.99597],[.66104,10.99964],[.4958,10.93269],[.50521,10.98035],[.48852,10.98561],[.50388,11.01011]]]]}},{type:"Feature",properties:{iso1A2:"TH",iso1A3:"THA",iso1N3:"764",wikidata:"Q869",nameEn:"Thailand",groups:["035","142","UN"],driveSide:"left",callingCodes:["66"]},geometry:{type:"MultiPolygon",coordinates:[[[[100.08404,20.36626],[99.95721,20.46301],[99.91616,20.44986],[99.90499,20.4487],[99.89692,20.44789],[99.89301,20.44311],[99.89168,20.44548],[99.88451,20.44596],[99.88211,20.44488],[99.86383,20.44371],[99.81096,20.33687],[99.68255,20.32077],[99.46008,20.39673],[99.46077,20.36198],[99.5569,20.20676],[99.52943,20.14811],[99.416,20.08614],[99.20328,20.12877],[99.0735,20.10298],[98.98679,19.7419],[98.83661,19.80931],[98.56065,19.67807],[98.51182,19.71303],[98.24884,19.67876],[98.13829,19.78541],[98.03314,19.80941],[98.04364,19.65755],[97.84715,19.55782],[97.88423,19.5041],[97.78769,19.39429],[97.84186,19.29526],[97.78606,19.26769],[97.84024,19.22217],[97.83479,19.09972],[97.73797,19.04261],[97.73654,18.9812],[97.66487,18.9371],[97.73836,18.88478],[97.76752,18.58097],[97.5258,18.4939],[97.36444,18.57138],[97.34522,18.54596],[97.50383,18.26844],[97.56219,18.33885],[97.64116,18.29778],[97.60841,18.23846],[97.73723,17.97912],[97.66794,17.88005],[97.76407,17.71595],[97.91829,17.54504],[98.11185,17.36829],[98.10439,17.33847],[98.34566,17.04822],[98.39441,17.06266],[98.52624,16.89979],[98.49603,16.8446],[98.53833,16.81934],[98.46994,16.73613],[98.50253,16.7139],[98.49713,16.69022],[98.51043,16.70107],[98.51579,16.69433],[98.51472,16.68521],[98.51833,16.676],[98.51113,16.64503],[98.5695,16.62826],[98.57912,16.55983],[98.63817,16.47424],[98.68074,16.27068],[98.84485,16.42354],[98.92656,16.36425],[98.8376,16.11706],[98.69585,16.13353],[98.57019,16.04578],[98.59853,15.87197],[98.541,15.65406],[98.58598,15.46821],[98.56027,15.33471],[98.4866,15.39154],[98.39351,15.34177],[98.41906,15.27103],[98.40522,15.25268],[98.30446,15.30667],[98.22,15.21327],[98.18821,15.13125],[98.24874,14.83013],[98.56762,14.37701],[98.97356,14.04868],[99.16695,13.72621],[99.20617,13.20575],[99.12225,13.19847],[99.10646,13.05804],[99.18748,12.9898],[99.18905,12.84799],[99.29254,12.68921],[99.409,12.60603],[99.47519,12.1353],[99.56445,12.14805],[99.53424,12.02317],[99.64891,11.82699],[99.64108,11.78948],[99.5672,11.62732],[99.47598,11.62434],[99.39485,11.3925],[99.31573,11.32081],[99.32756,11.28545],[99.06938,10.94857],[99.02337,10.97217],[98.99701,10.92962],[99.0069,10.85485],[98.86819,10.78336],[98.78511,10.68351],[98.77275,10.62548],[98.81944,10.52761],[98.7391,10.31488],[98.55174,9.92804],[98.52291,9.92389],[98.47298,9.95782],[98.33094,9.91973],[98.12555,9.44056],[97.63455,9.60854],[97.19814,8.18901],[99.31854,5.99868],[99.50117,6.44501],[99.91873,6.50233],[100.0756,6.4045],[100.12,6.42105],[100.19511,6.72559],[100.29651,6.68439],[100.30828,6.66462],[100.31618,6.66781],[100.31884,6.66423],[100.32671,6.66526],[100.32607,6.65933],[100.31929,6.65413],[100.35413,6.54932],[100.41152,6.52299],[100.41791,6.5189],[100.42351,6.51762],[100.43027,6.52389],[100.66986,6.45086],[100.74361,6.50811],[100.74822,6.46231],[100.81045,6.45086],[100.85884,6.24929],[101.10313,6.25617],[101.12618,6.19431],[101.06165,6.14161],[101.12388,6.11411],[101.087,5.9193],[101.02708,5.91013],[100.98815,5.79464],[101.14062,5.61613],[101.25755,5.71065],[101.25524,5.78633],[101.58019,5.93534],[101.69773,5.75881],[101.75074,5.79091],[101.80144,5.74505],[101.89188,5.8386],[101.91776,5.84269],[101.92819,5.85511],[101.94712,5.98421],[101.9714,6.00575],[101.97114,6.01992],[101.99209,6.04075],[102.01835,6.05407],[102.09182,6.14161],[102.07732,6.193],[102.08127,6.22679],[102.09086,6.23546],[102.46318,7.22462],[102.47649,9.66162],[102.52395,11.25257],[102.91449,11.65512],[102.90973,11.75613],[102.83957,11.8519],[102.78427,11.98746],[102.77026,12.06815],[102.70176,12.1686],[102.73134,12.37091],[102.78116,12.40284],[102.7796,12.43781],[102.57567,12.65358],[102.51963,12.66117],[102.4994,12.71736],[102.53053,12.77506],[102.49335,12.92711],[102.48694,12.97537],[102.52275,12.99813],[102.46011,13.08057],[102.43422,13.09061],[102.36146,13.26006],[102.36001,13.31142],[102.34611,13.35618],[102.35692,13.38274],[102.35563,13.47307],[102.361,13.50551],[102.33828,13.55613],[102.36859,13.57488],[102.44601,13.5637],[102.5358,13.56933],[102.57573,13.60461],[102.62483,13.60883],[102.58635,13.6286],[102.5481,13.6589],[102.56848,13.69366],[102.72727,13.77806],[102.77864,13.93374],[102.91251,14.01531],[102.93275,14.19044],[103.16469,14.33075],[103.39353,14.35639],[103.53518,14.42575],[103.71109,14.4348],[103.70175,14.38052],[103.93836,14.3398],[104.27616,14.39861],[104.55014,14.36091],[104.69335,14.42726],[104.97667,14.38806],[105.02804,14.23722],[105.08408,14.20402],[105.14012,14.23873],[105.17748,14.34432],[105.20894,14.34967],[105.43783,14.43865],[105.53864,14.55731],[105.5121,14.80802],[105.61162,15.00037],[105.46661,15.13132],[105.58043,15.32724],[105.50662,15.32054],[105.4692,15.33709],[105.47635,15.3796],[105.58191,15.41031],[105.60446,15.53301],[105.61756,15.68792],[105.46573,15.74742],[105.42285,15.76971],[105.37959,15.84074],[105.34115,15.92737],[105.38508,15.987],[105.42001,16.00657],[105.06204,16.09792],[105.00262,16.25627],[104.88057,16.37311],[104.73349,16.565],[104.76099,16.69302],[104.7397,16.81005],[104.76442,16.84752],[104.7373,16.91125],[104.73712,17.01404],[104.80716,17.19025],[104.80061,17.39367],[104.69867,17.53038],[104.45404,17.66788],[104.35432,17.82871],[104.2757,17.86139],[104.21776,17.99335],[104.10927,18.10826],[104.06533,18.21656],[103.97725,18.33631],[103.93916,18.33914],[103.85642,18.28666],[103.82449,18.33979],[103.699,18.34125],[103.60957,18.40528],[103.47773,18.42841],[103.41044,18.4486],[103.30977,18.4341],[103.24779,18.37807],[103.23818,18.34875],[103.29757,18.30475],[103.17093,18.2618],[103.14994,18.23172],[103.1493,18.17799],[103.07343,18.12351],[103.07823,18.03833],[103.0566,18.00144],[103.01998,17.97095],[102.9912,17.9949],[102.95812,18.0054],[102.86323,17.97531],[102.81988,17.94233],[102.79044,17.93612],[102.75954,17.89561],[102.68538,17.86653],[102.67543,17.84529],[102.69946,17.81686],[102.68194,17.80151],[102.59485,17.83537],[102.5896,17.84889],[102.61432,17.92273],[102.60971,17.95411],[102.59234,17.96127],[102.45523,17.97106],[102.11359,18.21532],[101.88485,18.02474],[101.78087,18.07559],[101.72294,17.92867],[101.44667,17.7392],[101.15108,17.47586],[100.96541,17.57926],[101.02185,17.87637],[101.1793,18.0544],[101.19118,18.2125],[101.15108,18.25624],[101.18227,18.34367],[101.06047,18.43247],[101.27585,18.68875],[101.22832,18.73377],[101.25803,18.89545],[101.35606,19.04716],[101.261,19.12717],[101.24911,19.33334],[101.20604,19.35296],[101.21347,19.46223],[101.26991,19.48324],[101.26545,19.59242],[101.08928,19.59748],[100.90302,19.61901],[100.77231,19.48324],[100.64606,19.55884],[100.58219,19.49164],[100.49604,19.53504],[100.398,19.75047],[100.5094,19.87904],[100.58808,20.15791],[100.55218,20.17741],[100.51052,20.14928],[100.47567,20.19133],[100.4537,20.19971],[100.44992,20.23644],[100.41473,20.25625],[100.37439,20.35156],[100.33383,20.4028],[100.25769,20.3992],[100.22076,20.31598],[100.16668,20.2986],[100.1712,20.24324],[100.11785,20.24787],[100.09337,20.26293],[100.09999,20.31614],[100.08404,20.36626]]]]}},{type:"Feature",properties:{iso1A2:"TJ",iso1A3:"TJK",iso1N3:"762",wikidata:"Q863",nameEn:"Tajikistan",groups:["143","142","UN"],callingCodes:["992"]},geometry:{type:"MultiPolygon",coordinates:[[[[70.45251,41.04438],[70.38028,41.02014],[70.36655,40.90296],[69.69434,40.62615],[69.59441,40.70181],[69.53021,40.77621],[69.38327,40.7918],[69.32834,40.70233],[69.3455,40.57988],[69.2643,40.57506],[69.21063,40.54469],[69.27066,40.49274],[69.28525,40.41894],[69.30774,40.36102],[69.33794,40.34819],[69.32833,40.29794],[69.30808,40.2821],[69.24817,40.30357],[69.25229,40.26362],[69.30104,40.24502],[69.30448,40.18774],[69.2074,40.21488],[69.15659,40.2162],[69.04544,40.22904],[68.85832,40.20885],[68.84357,40.18604],[68.79276,40.17555],[68.77902,40.20492],[68.5332,40.14826],[68.52771,40.11676],[68.62796,40.07789],[69.01523,40.15771],[69.01935,40.11466],[68.96579,40.06949],[68.84906,40.04952],[68.93695,39.91167],[68.88889,39.87163],[68.63071,39.85265],[68.61972,39.68905],[68.54166,39.53929],[68.12053,39.56317],[67.70992,39.66156],[67.62889,39.60234],[67.44899,39.57799],[67.46547,39.53564],[67.39681,39.52505],[67.46822,39.46146],[67.45998,39.315],[67.36522,39.31287],[67.33226,39.23739],[67.67833,39.14479],[67.68915,39.00775],[68.09704,39.02589],[68.19743,38.85985],[68.06948,38.82115],[68.12877,38.73677],[68.05598,38.71641],[68.0807,38.64136],[68.05873,38.56087],[68.11366,38.47169],[68.06274,38.39435],[68.13289,38.40822],[68.40343,38.19484],[68.27159,37.91477],[68.12635,37.93],[67.81566,37.43107],[67.8474,37.31594],[67.78329,37.1834],[67.7803,37.08978],[67.87917,37.0591],[68.02194,36.91923],[68.18542,37.02074],[68.27605,37.00977],[68.29253,37.10621],[68.41201,37.10402],[68.41888,37.13906],[68.61851,37.19815],[68.6798,37.27906],[68.81438,37.23862],[68.80889,37.32494],[68.91189,37.26704],[68.88168,37.33368],[68.96407,37.32603],[69.03274,37.25174],[69.25152,37.09426],[69.39529,37.16752],[69.45022,37.23315],[69.36645,37.40462],[69.44954,37.4869],[69.51888,37.5844],[69.80041,37.5746],[69.84435,37.60616],[69.93362,37.61378],[69.95971,37.5659],[70.15015,37.52519],[70.28243,37.66706],[70.27694,37.81258],[70.1863,37.84296],[70.17206,37.93276],[70.4898,38.12546],[70.54673,38.24541],[70.60407,38.28046],[70.61526,38.34774],[70.64966,38.34999],[70.69189,38.37031],[70.6761,38.39144],[70.67438,38.40597],[70.69807,38.41861],[70.72485,38.4131],[70.75455,38.4252],[70.77132,38.45548],[70.78581,38.45502],[70.78702,38.45031],[70.79766,38.44944],[70.80521,38.44447],[70.81697,38.44507],[70.82538,38.45394],[70.84376,38.44688],[70.88719,38.46826],[70.92728,38.43021],[70.98693,38.48862],[71.03545,38.44779],[71.0556,38.40176],[71.09542,38.42517],[71.10592,38.42077],[71.10957,38.40671],[71.1451,38.40106],[71.21291,38.32797],[71.33114,38.30339],[71.33869,38.27335],[71.37803,38.25641],[71.36444,38.15358],[71.29878,38.04429],[71.28922,38.01272],[71.27622,37.99946],[71.27278,37.96496],[71.24969,37.93031],[71.2809,37.91995],[71.296,37.93403],[71.32871,37.88564],[71.51565,37.95349],[71.58843,37.92425],[71.59255,37.79956],[71.55752,37.78677],[71.54324,37.77104],[71.53053,37.76534],[71.55234,37.73209],[71.54186,37.69691],[71.51972,37.61945],[71.5065,37.60912],[71.49693,37.53527],[71.50616,37.50733],[71.5256,37.47971],[71.49612,37.4279],[71.47685,37.40281],[71.4862,37.33405],[71.49821,37.31975],[71.50674,37.31502],[71.48536,37.26017],[71.4824,37.24921],[71.48339,37.23937],[71.47386,37.2269],[71.4555,37.21418],[71.4494,37.18137],[71.44127,37.11856],[71.43097,37.05855],[71.45578,37.03094],[71.46923,36.99925],[71.48481,36.93218],[71.51502,36.89128],[71.57195,36.74943],[71.67083,36.67346],[71.83229,36.68084],[72.31676,36.98115],[72.54095,37.00007],[72.66381,37.02014],[72.79693,37.22222],[73.06884,37.31729],[73.29633,37.46495],[73.77197,37.4417],[73.76647,37.33913],[73.61129,37.27469],[73.64974,37.23643],[73.82552,37.22659],[73.8564,37.26158],[74.20308,37.34208],[74.23339,37.41116],[74.41055,37.3948],[74.56161,37.37734],[74.68383,37.3948],[74.8294,37.3435],[74.88887,37.23275],[75.12328,37.31839],[75.09719,37.37297],[75.15899,37.41443],[75.06011,37.52779],[74.94338,37.55501],[74.8912,37.67576],[75.00935,37.77486],[74.92416,37.83428],[74.9063,38.03033],[74.82665,38.07359],[74.80331,38.19889],[74.69894,38.22155],[74.69619,38.42947],[74.51217,38.47034],[74.17022,38.65504],[73.97933,38.52945],[73.79806,38.61106],[73.80656,38.66449],[73.7033,38.84782],[73.7445,38.93867],[73.82964,38.91517],[73.81728,39.04007],[73.75823,39.023],[73.60638,39.24534],[73.54572,39.27567],[73.55396,39.3543],[73.5004,39.38402],[73.59241,39.40843],[73.59831,39.46425],[73.45096,39.46677],[73.31912,39.38615],[73.18454,39.35536],[72.85934,39.35116],[72.62027,39.39696],[72.33173,39.33093],[72.23834,39.17248],[72.17242,39.2661],[72.09689,39.26823],[72.04059,39.36704],[71.90601,39.27674],[71.79202,39.27355],[71.7522,39.32031],[71.80164,39.40631],[71.76816,39.45456],[71.62688,39.44056],[71.5517,39.45722],[71.55856,39.57588],[71.49814,39.61397],[71.08752,39.50704],[71.06418,39.41586],[70.7854,39.38933],[70.64087,39.58792],[70.44757,39.60128],[70.2869,39.53141],[70.11111,39.58223],[69.87491,39.53882],[69.68677,39.59281],[69.3594,39.52516],[69.26938,39.8127],[69.35649,40.01994],[69.43134,39.98431],[69.43557,39.92877],[69.53615,39.93991],[69.5057,40.03277],[69.53855,40.0887],[69.53794,40.11833],[69.55555,40.12296],[69.57615,40.10524],[69.64704,40.12165],[69.67001,40.10639],[70.01283,40.23288],[70.58297,40.00891],[70.57384,39.99394],[70.47557,39.93216],[70.55033,39.96619],[70.58912,39.95211],[70.65946,39.9878],[70.65827,40.0981],[70.7928,40.12797],[70.80495,40.16813],[70.9818,40.22392],[70.8607,40.217],[70.62342,40.17396],[70.56394,40.26421],[70.57149,40.3442],[70.37511,40.38605],[70.32626,40.45174],[70.49871,40.52503],[70.80009,40.72825],[70.45251,41.04438]]],[[[70.68112,40.90612],[70.6158,40.97661],[70.56077,41.00642],[70.54223,40.98787],[70.57501,40.98941],[70.6721,40.90555],[70.68112,40.90612]]],[[[70.74189,39.86319],[70.53651,39.89155],[70.52631,39.86989],[70.54998,39.85137],[70.59667,39.83542],[70.63105,39.77923],[70.74189,39.86319]]]]}},{type:"Feature",properties:{iso1A2:"TK",iso1A3:"TKL",iso1N3:"772",wikidata:"Q36823",nameEn:"Tokelau",country:"NZ",groups:["061","009","UN"],driveSide:"left",callingCodes:["690"]},geometry:{type:"MultiPolygon",coordinates:[[[[-168.251,-9.44289],[-174.18635,-7.80441],[-174.17993,-10.13616],[-168.251,-9.44289]]]]}},{type:"Feature",properties:{iso1A2:"TL",iso1A3:"TLS",iso1N3:"626",wikidata:"Q574",nameEn:"East Timor",aliases:["Timor-Leste","TP"],groups:["035","142","UN"],driveSide:"left",callingCodes:["670"]},geometry:{type:"MultiPolygon",coordinates:[[[[124.46701,-9.13002],[124.94011,-8.85617],[124.97742,-9.08128],[125.11764,-8.96359],[125.18632,-9.03142],[125.18907,-9.16434],[125.09434,-9.19669],[125.04044,-9.17093],[124.97892,-9.19281],[125.09025,-9.46406],[125.68138,-9.85176],[127.55165,-9.05052],[127.42116,-8.22471],[125.87691,-8.31789],[125.58506,-7.95311],[124.92337,-8.75859],[124.33472,-9.11416],[124.04628,-9.22671],[124.04286,-9.34243],[124.10539,-9.41206],[124.14517,-9.42324],[124.21247,-9.36904],[124.28115,-9.42189],[124.28115,-9.50453],[124.3535,-9.48493],[124.35258,-9.43002],[124.38554,-9.3582],[124.45971,-9.30263],[124.46701,-9.13002]]]]}},{type:"Feature",properties:{iso1A2:"TM",iso1A3:"TKM",iso1N3:"795",wikidata:"Q874",nameEn:"Turkmenistan",groups:["143","142","UN"],callingCodes:["993"]},geometry:{type:"MultiPolygon",coordinates:[[[[60.5078,41.21694],[60.06581,41.4363],[60.18117,41.60082],[60.06032,41.76287],[60.08504,41.80997],[60.33223,41.75058],[59.95046,41.97966],[60.0356,42.01028],[60.04659,42.08982],[59.96419,42.1428],[60.00539,42.212],[59.94633,42.27655],[59.4341,42.29738],[59.2955,42.37064],[59.17317,42.52248],[58.93422,42.5407],[58.6266,42.79314],[58.57991,42.64988],[58.27504,42.69632],[58.14321,42.62159],[58.29427,42.56497],[58.51674,42.30348],[58.40688,42.29535],[58.3492,42.43335],[57.99214,42.50021],[57.90975,42.4374],[57.92897,42.24047],[57.84932,42.18555],[57.6296,42.16519],[57.30275,42.14076],[57.03633,41.92043],[56.96218,41.80383],[57.03359,41.41777],[57.13796,41.36625],[57.03423,41.25435],[56.00314,41.32584],[55.45471,41.25609],[54.95182,41.92424],[54.20635,42.38477],[52.97575,42.1308],[52.47884,41.78034],[52.26048,41.69249],[51.7708,40.29239],[53.89734,37.3464],[54.24565,37.32047],[54.36211,37.34912],[54.58664,37.45809],[54.67247,37.43532],[54.77822,37.51597],[54.81804,37.61285],[54.77684,37.62264],[54.851,37.75739],[55.13412,37.94705],[55.44152,38.08564],[55.76561,38.12238],[55.97847,38.08024],[56.33278,38.08132],[56.32454,38.18502],[56.43303,38.26054],[56.62255,38.24005],[56.73928,38.27887],[57.03453,38.18717],[57.21169,38.28965],[57.37236,38.09321],[57.35042,37.98546],[57.79534,37.89299],[58.21399,37.77281],[58.22999,37.6856],[58.39959,37.63134],[58.47786,37.6433],[58.5479,37.70526],[58.6921,37.64548],[58.9338,37.67374],[59.22905,37.51161],[59.33507,37.53146],[59.39797,37.47892],[59.39385,37.34257],[59.55178,37.13594],[59.74678,37.12499],[60.00768,37.04102],[60.34767,36.63214],[61.14516,36.64644],[61.18187,36.55348],[61.1393,36.38782],[61.22719,36.12759],[61.12007,35.95992],[61.22444,35.92879],[61.26152,35.80749],[61.22719,35.67038],[61.27371,35.61482],[61.58742,35.43803],[61.77693,35.41341],[61.97743,35.4604],[62.05709,35.43803],[62.15871,35.33278],[62.29191,35.25964],[62.29878,35.13312],[62.48006,35.28796],[62.62288,35.22067],[62.74098,35.25432],[62.90853,35.37086],[63.0898,35.43131],[63.12276,35.53196],[63.10079,35.63024],[63.23262,35.67487],[63.10318,35.81782],[63.12276,35.86208],[63.29579,35.85985],[63.53475,35.90881],[63.56496,35.95106],[63.98519,36.03773],[64.05385,36.10433],[64.43288,36.24401],[64.57295,36.34362],[64.62514,36.44311],[64.61141,36.6351],[64.97945,37.21913],[65.51778,37.23881],[65.64263,37.34388],[65.64137,37.45061],[65.72274,37.55438],[66.30993,37.32409],[66.55743,37.35409],[66.52303,37.39827],[66.65761,37.45497],[66.52852,37.58568],[66.53676,37.80084],[66.67684,37.96776],[66.56697,38.0435],[66.41042,38.02403],[66.24013,38.16238],[65.83913,38.25733],[65.55873,38.29052],[64.32576,38.98691],[64.19086,38.95561],[63.70778,39.22349],[63.6913,39.27666],[62.43337,39.98528],[62.34273,40.43206],[62.11751,40.58242],[61.87856,41.12257],[61.4446,41.29407],[61.39732,41.19873],[61.33199,41.14946],[61.22212,41.14946],[61.03261,41.25691],[60.5078,41.21694]]]]}},{type:"Feature",properties:{iso1A2:"TN",iso1A3:"TUN",iso1N3:"788",wikidata:"Q948",nameEn:"Tunisia",groups:["015","002","UN"],callingCodes:["216"]},geometry:{type:"MultiPolygon",coordinates:[[[[11.2718,37.6713],[7.89009,38.19924],[8.59123,37.14286],[8.64044,36.9401],[8.62972,36.86499],[8.67706,36.8364],[8.57613,36.78062],[8.46537,36.7706],[8.47609,36.66607],[8.16167,36.48817],[8.18936,36.44939],[8.40731,36.42208],[8.2626,35.91733],[8.26472,35.73669],[8.35371,35.66373],[8.36086,35.47774],[8.30329,35.29884],[8.47318,35.23376],[8.3555,35.10007],[8.30727,34.95378],[8.25189,34.92009],[8.29655,34.72798],[8.20482,34.57575],[7.86264,34.3987],[7.81242,34.21841],[7.74207,34.16492],[7.66174,34.20167],[7.52851,34.06493],[7.54088,33.7726],[7.73687,33.42114],[7.83028,33.18851],[8.11433,33.10175],[8.1179,33.05086],[8.31895,32.83483],[8.35999,32.50101],[9.07483,32.07865],[9.55544,30.23971],[9.76848,30.34366],[9.88152,30.34074],[10.29516,30.90337],[10.12239,31.42098],[10.31364,31.72648],[10.48497,31.72956],[10.62788,31.96629],[10.7315,31.97235],[11.04234,32.2145],[11.53898,32.4138],[11.57828,32.48013],[11.46037,32.6307],[11.51549,33.09826],[11.55852,33.1409],[11.58941,33.36891],[11.2718,37.6713]]]]}},{type:"Feature",properties:{iso1A2:"TO",iso1A3:"TON",iso1N3:"776",wikidata:"Q678",nameEn:"Tonga",groups:["061","009","UN"],driveSide:"left",callingCodes:["676"]},geometry:{type:"MultiPolygon",coordinates:[[[[-176.74538,-22.89767],[-180,-22.90585],[-180,-24.21376],[-173.10761,-24.19665],[-173.13438,-14.94228],[-176.76826,-14.95183],[-176.74538,-22.89767]]]]}},{type:"Feature",properties:{iso1A2:"TR",iso1A3:"TUR",iso1N3:"792",wikidata:"Q43",nameEn:"Turkey",groups:["145","142","UN"],callingCodes:["90"]},geometry:{type:"MultiPolygon",coordinates:[[[[41.54366,41.52185],[40.89217,41.72528],[34.8305,42.4581],[28.32297,41.98371],[28.02971,41.98066],[27.91479,41.97902],[27.83492,41.99709],[27.81235,41.94803],[27.69949,41.97515],[27.55191,41.90928],[27.52379,41.93756],[27.45478,41.96591],[27.27411,42.10409],[27.22376,42.10152],[27.19251,42.06028],[27.08486,42.08735],[27.03277,42.0809],[26.95638,42.00741],[26.79143,41.97386],[26.62996,41.97644],[26.56051,41.92995],[26.57961,41.90024],[26.53968,41.82653],[26.36952,41.82265],[26.33589,41.76802],[26.32952,41.73637],[26.35957,41.71149],[26.47958,41.67037],[26.5209,41.62592],[26.59196,41.60491],[26.59742,41.48058],[26.61767,41.42281],[26.62997,41.34613],[26.5837,41.32131],[26.5209,41.33993],[26.39861,41.25053],[26.32259,41.24929],[26.31928,41.07386],[26.3606,41.02027],[26.33297,40.98388],[26.35894,40.94292],[26.32259,40.94042],[26.28623,40.93005],[26.29441,40.89119],[26.26169,40.9168],[26.20856,40.86048],[26.21351,40.83298],[26.15685,40.80709],[26.12854,40.77339],[26.12495,40.74283],[26.08638,40.73214],[26.0754,40.72772],[26.03489,40.73051],[25.94795,40.72797],[26.04292,40.3958],[25.61285,40.17161],[25.94257,39.39358],[26.43357,39.43096],[26.70773,39.0312],[26.61814,38.81372],[26.21136,38.65436],[26.32173,38.48731],[26.24183,38.44695],[26.21136,38.17558],[27.05537,37.9131],[27.16428,37.72343],[26.99377,37.69034],[26.95583,37.64989],[27.14757,37.32],[27.20312,36.94571],[27.45627,36.9008],[27.24613,36.71622],[27.46117,36.53789],[27.89482,36.69898],[27.95037,36.46155],[28.23708,36.56812],[29.30783,36.01033],[29.48192,36.18377],[29.61002,36.1731],[29.61805,36.14179],[29.69611,36.10365],[29.73302,35.92555],[32.82353,35.70297],[35.51152,36.10954],[35.931,35.92109],[35.98499,35.94107],[36.00514,35.94113],[36.01844,35.92403],[35.99829,35.88242],[36.11827,35.85923],[36.13919,35.83692],[36.14029,35.81015],[36.1623,35.80925],[36.17441,35.92076],[36.19973,35.95195],[36.25366,35.96264],[36.27678,35.94839],[36.29769,35.96086],[36.28338,36.00273],[36.30099,36.00985],[36.33956,35.98687],[36.37474,36.01163],[36.39206,36.22088],[36.4617,36.20461],[36.50463,36.2419],[36.6125,36.22592],[36.68672,36.23677],[36.65653,36.33861],[36.6081,36.33772],[36.54206,36.49539],[36.58829,36.58295],[36.57398,36.65186],[36.62681,36.71189],[36.61581,36.74629],[36.66727,36.82901],[36.99557,36.75997],[36.99886,36.74012],[37.04399,36.73483],[37.04619,36.71101],[37.01647,36.69512],[37.02088,36.66422],[37.08279,36.63495],[37.10894,36.6704],[37.16177,36.66069],[37.21988,36.6736],[37.47253,36.63243],[37.49103,36.66904],[37.68048,36.75065],[37.81974,36.76055],[38.21064,36.91842],[38.38859,36.90064],[38.55908,36.84429],[38.74042,36.70629],[39.03217,36.70911],[39.21538,36.66834],[39.81589,36.75538],[40.69136,37.0996],[40.90856,37.13147],[41.21937,37.07665],[41.515,37.08084],[42.00894,37.17209],[42.18225,37.28569],[42.19301,37.31323],[42.2112,37.32491],[42.22257,37.31395],[42.22381,37.30238],[42.20454,37.28715],[42.21548,37.28026],[42.23683,37.2863],[42.26039,37.27017],[42.2824,37.2798],[42.34735,37.22548],[42.32313,37.17814],[42.35724,37.10998],[42.56725,37.14878],[42.78887,37.38615],[42.93705,37.32015],[43.11403,37.37436],[43.30083,37.30629],[43.33508,37.33105],[43.50787,37.24436],[43.56702,37.25675],[43.63085,37.21957],[43.7009,37.23692],[43.8052,37.22825],[43.82699,37.19477],[43.84878,37.22205],[43.90949,37.22453],[44.02002,37.33229],[44.13521,37.32486],[44.2613,37.25055],[44.27998,37.16501],[44.22239,37.15756],[44.18503,37.09551],[44.25975,36.98119],[44.30645,36.97373],[44.35937,37.02843],[44.35315,37.04955],[44.38117,37.05825],[44.42631,37.05825],[44.63179,37.19229],[44.76698,37.16162],[44.78319,37.1431],[44.7868,37.16644],[44.75986,37.21549],[44.81021,37.2915],[44.58449,37.45018],[44.61401,37.60165],[44.56887,37.6429],[44.62096,37.71985],[44.55498,37.783],[44.45948,37.77065],[44.3883,37.85433],[44.22509,37.88859],[44.42476,38.25763],[44.50115,38.33939],[44.44386,38.38295],[44.38309,38.36117],[44.3119,38.37887],[44.3207,38.49799],[44.32058,38.62752],[44.28065,38.6465],[44.26155,38.71427],[44.30322,38.81581],[44.18863,38.93881],[44.20946,39.13975],[44.1043,39.19842],[44.03667,39.39223],[44.22452,39.4169],[44.29818,39.378],[44.37921,39.4131],[44.42832,39.4131],[44.41849,39.56659],[44.48111,39.61579],[44.47298,39.68788],[44.6137,39.78393],[44.65422,39.72163],[44.71806,39.71124],[44.81043,39.62677],[44.80977,39.65768],[44.75779,39.7148],[44.61845,39.8281],[44.46635,39.97733],[44.26973,40.04866],[44.1778,40.02845],[44.1057,40.03555],[43.92307,40.01787],[43.65688,40.11199],[43.65221,40.14889],[43.71136,40.16673],[43.59928,40.34019],[43.60862,40.43267],[43.54791,40.47413],[43.63664,40.54159],[43.7425,40.66805],[43.74872,40.7365],[43.67712,40.84846],[43.67712,40.93084],[43.58683,40.98961],[43.47319,41.02251],[43.44984,41.0988],[43.4717,41.12611],[43.44973,41.17666],[43.36118,41.2028],[43.23096,41.17536],[43.1945,41.25242],[43.13373,41.25503],[43.21707,41.30331],[43.02956,41.37891],[42.8785,41.50516],[42.84899,41.47265],[42.78995,41.50126],[42.84471,41.58912],[42.72794,41.59714],[42.59202,41.58183],[42.51772,41.43606],[42.26387,41.49346],[41.95134,41.52466],[41.81939,41.43621],[41.7124,41.47417],[41.7148,41.4932],[41.54366,41.52185]]]]}},{type:"Feature",properties:{iso1A2:"TT",iso1A3:"TTO",iso1N3:"780",wikidata:"Q754",nameEn:"Trinidad and Tobago",groups:["029","003","419","019","UN"],driveSide:"left",callingCodes:["1 868"]},geometry:{type:"MultiPolygon",coordinates:[[[[-61.62505,11.18974],[-62.08693,10.04435],[-60.89962,9.81445],[-60.07172,11.77667],[-61.62505,11.18974]]]]}},{type:"Feature",properties:{iso1A2:"TV",iso1A3:"TUV",iso1N3:"798",wikidata:"Q672",nameEn:"Tuvalu",groups:["061","009","UN"],driveSide:"left",callingCodes:["688"]},geometry:{type:"MultiPolygon",coordinates:[[[[174,-5],[174,-11.5],[179.99999,-11.5],[179.99999,-5],[174,-5]]]]}},{type:"Feature",properties:{iso1A2:"TW",iso1A3:"TWN",iso1N3:"158",wikidata:"Q865",nameEn:"Taiwan",aliases:["RC"],groups:["030","142"],callingCodes:["886"]},geometry:{type:"MultiPolygon",coordinates:[[[[121.8109,21.77688],[122.26612,25.98197],[120.5128,26.536],[120.0693,26.3959],[119.78816,26.2348],[119.98511,25.37624],[119.42295,25.0886],[118.6333,24.46259],[118.42453,24.54644],[118.35291,24.51645],[118.28244,24.51231],[118.11703,24.39734],[120.69238,21.52331],[121.8109,21.77688]]]]}},{type:"Feature",properties:{iso1A2:"TZ",iso1A3:"TZA",iso1N3:"834",wikidata:"Q924",nameEn:"Tanzania",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["255"]},geometry:{type:"MultiPolygon",coordinates:[[[[30.80408,-.99911],[30.76635,-.9852],[30.70631,-1.01175],[30.64166,-1.06601],[30.47194,-1.0555],[30.45116,-1.10641],[30.50889,-1.16412],[30.57123,-1.33264],[30.71974,-1.43244],[30.84079,-1.64652],[30.80802,-1.91477],[30.89303,-2.08223],[30.83915,-2.35795],[30.54501,-2.41404],[30.41789,-2.66266],[30.52747,-2.65841],[30.40662,-2.86151],[30.4987,-2.9573],[30.57926,-2.89791],[30.6675,-2.98987],[30.83823,-2.97837],[30.84165,-3.25152],[30.45915,-3.56532],[30.22042,-4.01738],[30.03323,-4.26631],[29.88172,-4.35743],[29.82885,-4.36153],[29.77289,-4.41733],[29.75109,-4.45836],[29.63827,-4.44681],[29.43673,-4.44845],[29.52552,-6.2731],[30.2567,-7.14121],[30.79243,-8.27382],[31.00796,-8.58615],[31.37533,-8.60769],[31.57147,-8.70619],[31.57147,-8.81388],[31.71158,-8.91386],[31.81587,-8.88618],[31.94663,-8.93846],[31.94196,-9.02303],[31.98866,-9.07069],[32.08206,-9.04609],[32.16146,-9.05993],[32.25486,-9.13371],[32.43543,-9.11988],[32.49147,-9.14754],[32.53661,-9.24281],[32.75611,-9.28583],[32.76233,-9.31963],[32.95389,-9.40138],[32.99397,-9.36712],[33.14925,-9.49322],[33.31581,-9.48554],[33.48052,-9.62442],[33.76677,-9.58516],[33.93298,-9.71647],[33.9638,-9.62206],[33.95829,-9.54066],[34.03865,-9.49398],[34.54499,-10.0678],[34.51911,-10.12279],[34.57581,-10.56271],[34.65946,-10.6828],[34.67047,-10.93796],[34.61161,-11.01611],[34.63305,-11.11731],[34.79375,-11.32245],[34.91153,-11.39799],[34.96296,-11.57354],[35.63599,-11.55927],[35.82767,-11.41081],[36.19094,-11.57593],[36.19094,-11.70008],[36.62068,-11.72884],[36.80309,-11.56836],[37.3936,-11.68949],[37.76614,-11.53352],[37.8388,-11.3123],[37.93618,-11.26228],[38.21598,-11.27289],[38.47258,-11.4199],[38.88996,-11.16978],[39.24395,-11.17433],[39.58249,-10.96043],[40.00295,-10.80255],[40.44265,-10.4618],[40.74206,-10.25691],[40.14328,-4.64201],[39.62121,-4.68136],[39.44306,-4.93877],[39.21631,-4.67835],[37.81321,-3.69179],[37.75036,-3.54243],[37.63099,-3.50723],[37.5903,-3.42735],[37.71745,-3.304],[37.67199,-3.06222],[34.0824,-1.02264],[34.03084,-1.05101],[34.02286,-1.00779],[33.93107,-.99298],[30.80408,-.99911]]]]}},{type:"Feature",properties:{iso1A2:"UA",iso1A3:"UKR",iso1N3:"804",wikidata:"Q212",nameEn:"Ukraine",groups:["151","150","UN"],callingCodes:["380"]},geometry:{type:"MultiPolygon",coordinates:[[[[33.57318,46.10317],[33.61467,46.13561],[33.63854,46.14147],[33.61517,46.22615],[33.646,46.23028],[33.74047,46.18555],[33.79715,46.20482],[33.85234,46.19863],[33.91549,46.15938],[34.05272,46.10838],[34.07311,46.11769],[34.12929,46.10494],[34.181,46.06804],[34.25111,46.0532],[34.33912,46.06114],[34.41221,46.00245],[34.44155,45.95995],[34.48729,45.94267],[34.52011,45.95097],[34.55889,45.99347],[34.60861,45.99347],[34.66679,45.97136],[34.75479,45.90705],[34.80153,45.90047],[34.79905,45.81009],[34.96015,45.75634],[35.23066,45.79231],[37.62608,46.82615],[38.12112,46.86078],[38.3384,46.98085],[38.22955,47.12069],[38.23049,47.2324],[38.32112,47.2585],[38.33074,47.30508],[38.22225,47.30788],[38.28954,47.39255],[38.28679,47.53552],[38.35062,47.61631],[38.76379,47.69346],[38.79628,47.81109],[38.87979,47.87719],[39.73935,47.82876],[39.82213,47.96396],[39.77544,48.04206],[39.88256,48.04482],[39.83724,48.06501],[39.94847,48.22811],[40.00752,48.22445],[39.99241,48.31768],[39.97325,48.31399],[39.9693,48.29904],[39.95248,48.29972],[39.91465,48.26743],[39.90041,48.3049],[39.84273,48.30947],[39.84136,48.33321],[39.94847,48.35055],[39.88794,48.44226],[39.86196,48.46633],[39.84548,48.57821],[39.79764,48.58668],[39.67226,48.59368],[39.71765,48.68673],[39.73104,48.7325],[39.79466,48.83739],[39.97182,48.79398],[40.08168,48.87443],[40.03636,48.91957],[39.98967,48.86901],[39.78368,48.91596],[39.74874,48.98675],[39.72649,48.9754],[39.71353,48.98959],[39.6683,48.99454],[39.6836,49.05121],[39.93437,49.05709],[40.01988,49.1761],[40.22176,49.25683],[40.18331,49.34996],[40.14912,49.37681],[40.1141,49.38798],[40.03087,49.45452],[40.03636,49.52321],[40.16683,49.56865],[40.13249,49.61672],[39.84548,49.56064],[39.65047,49.61761],[39.59142,49.73758],[39.44496,49.76067],[39.27968,49.75976],[39.1808,49.88911],[38.9391,49.79524],[38.90477,49.86787],[38.73311,49.90238],[38.68677,50.00904],[38.65688,49.97176],[38.35408,50.00664],[38.32524,50.08866],[38.18517,50.08161],[38.21675,49.98104],[38.02999,49.90592],[38.02999,49.94482],[37.90776,50.04194],[37.79515,50.08425],[37.75807,50.07896],[37.61113,50.21976],[37.62879,50.24481],[37.62486,50.29966],[37.47243,50.36277],[37.48204,50.46079],[37.08468,50.34935],[36.91762,50.34963],[36.69377,50.26982],[36.64571,50.218],[36.56655,50.2413],[36.58371,50.28563],[36.47817,50.31457],[36.30101,50.29088],[36.20763,50.3943],[36.06893,50.45205],[35.8926,50.43829],[35.80388,50.41356],[35.73659,50.35489],[35.61711,50.35707],[35.58003,50.45117],[35.47463,50.49247],[35.39464,50.64751],[35.48116,50.66405],[35.47704,50.77274],[35.41367,50.80227],[35.39307,50.92145],[35.32598,50.94524],[35.40837,51.04119],[35.31774,51.08434],[35.20375,51.04723],[35.12685,51.16191],[35.14058,51.23162],[34.97304,51.2342],[34.82472,51.17483],[34.6874,51.18],[34.6613,51.25053],[34.38802,51.2746],[34.31661,51.23936],[34.23009,51.26429],[34.33446,51.363],[34.22048,51.4187],[34.30562,51.5205],[34.17599,51.63253],[34.07765,51.67065],[34.42922,51.72852],[34.41136,51.82793],[34.09413,52.00835],[34.11199,52.14087],[34.05239,52.20132],[33.78789,52.37204],[33.55718,52.30324],[33.48027,52.31499],[33.51323,52.35779],[33.18913,52.3754],[32.89937,52.2461],[32.85405,52.27888],[32.69475,52.25535],[32.54781,52.32423],[32.3528,52.32842],[32.38988,52.24946],[32.33083,52.23685],[32.34044,52.1434],[32.2777,52.10266],[32.23331,52.08085],[32.08813,52.03319],[31.92159,52.05144],[31.96141,52.08015],[31.85018,52.11305],[31.81722,52.09955],[31.7822,52.11406],[31.38326,52.12991],[31.25142,52.04131],[31.13332,52.1004],[30.95589,52.07775],[30.90897,52.00699],[30.76443,51.89739],[30.68804,51.82806],[30.51946,51.59649],[30.64992,51.35014],[30.56203,51.25655],[30.36153,51.33984],[30.34642,51.42555],[30.17888,51.51025],[29.77376,51.4461],[29.7408,51.53417],[29.54372,51.48372],[29.49773,51.39814],[29.42357,51.4187],[29.32881,51.37843],[29.25191,51.49828],[29.25603,51.57089],[29.20659,51.56918],[29.16402,51.64679],[29.1187,51.65872],[28.99098,51.56833],[28.95528,51.59222],[28.81795,51.55552],[28.76027,51.48802],[28.78224,51.45294],[28.75615,51.41442],[28.73143,51.46236],[28.69161,51.44695],[28.64429,51.5664],[28.47051,51.59734],[28.37592,51.54505],[28.23452,51.66988],[28.10658,51.57857],[27.95827,51.56065],[27.91844,51.61952],[27.85253,51.62293],[27.76052,51.47604],[27.67125,51.50854],[27.71932,51.60672],[27.55727,51.63486],[27.51058,51.5854],[27.47212,51.61184],[27.24828,51.60161],[27.26613,51.65957],[27.20948,51.66713],[27.20602,51.77291],[26.99422,51.76933],[26.9489,51.73788],[26.80043,51.75777],[26.69759,51.82284],[26.46962,51.80501],[26.39367,51.87315],[26.19084,51.86781],[26.00408,51.92967],[25.83217,51.92587],[25.80574,51.94556],[25.73673,51.91973],[25.46163,51.92205],[25.20228,51.97143],[24.98784,51.91273],[24.37123,51.88222],[24.29021,51.80841],[24.3163,51.75063],[24.13075,51.66979],[23.99907,51.58369],[23.8741,51.59734],[23.91118,51.63316],[23.7766,51.66809],[23.60906,51.62122],[23.6736,51.50255],[23.62751,51.50512],[23.69905,51.40871],[23.63858,51.32182],[23.80678,51.18405],[23.90376,51.07697],[23.92217,51.00836],[24.04576,50.90196],[24.14524,50.86128],[24.0952,50.83262],[23.99254,50.83847],[23.95925,50.79271],[24.0595,50.71625],[24.0996,50.60752],[24.07048,50.5071],[24.03668,50.44507],[23.99563,50.41289],[23.79445,50.40481],[23.71382,50.38248],[23.67635,50.33385],[23.28221,50.0957],[22.99329,49.84249],[22.83179,49.69875],[22.80261,49.69098],[22.78304,49.65543],[22.64534,49.53094],[22.69444,49.49378],[22.748,49.32759],[22.72009,49.20288],[22.86336,49.10513],[22.89122,49.00725],[22.56155,49.08865],[22.54338,49.01424],[22.48296,48.99172],[22.42934,48.92857],[22.34151,48.68893],[22.21379,48.6218],[22.16023,48.56548],[22.14689,48.4005],[22.2083,48.42534],[22.38133,48.23726],[22.49806,48.25189],[22.59007,48.15121],[22.58733,48.10813],[22.66835,48.09162],[22.73427,48.12005],[22.81804,48.11363],[22.87847,48.04665],[22.84276,47.98602],[22.89849,47.95851],[22.94301,47.96672],[22.92241,48.02002],[23.0158,47.99338],[23.08858,48.00716],[23.1133,48.08061],[23.15999,48.12188],[23.27397,48.08245],[23.33577,48.0237],[23.4979,47.96858],[23.52803,48.01818],[23.5653,48.00499],[23.63894,48.00293],[23.66262,47.98786],[23.75188,47.99705],[23.80904,47.98142],[23.8602,47.9329],[23.89352,47.94512],[23.94192,47.94868],[23.96337,47.96672],[23.98553,47.96076],[24.00801,47.968],[24.02999,47.95087],[24.06466,47.95317],[24.11281,47.91487],[24.22566,47.90231],[24.34926,47.9244],[24.43578,47.97131],[24.61994,47.95062],[24.70632,47.84428],[24.81893,47.82031],[24.88896,47.7234],[25.11144,47.75203],[25.23778,47.89403],[25.63878,47.94924],[25.77723,47.93919],[26.05901,47.9897],[26.17711,47.99246],[26.33504,48.18418],[26.55202,48.22445],[26.62823,48.25804],[26.6839,48.35828],[26.79239,48.29071],[26.82809,48.31629],[26.71274,48.40388],[26.85556,48.41095],[26.93384,48.36558],[27.03821,48.37653],[27.0231,48.42485],[27.08078,48.43214],[27.13434,48.37288],[27.27855,48.37534],[27.32159,48.4434],[27.37604,48.44398],[27.37741,48.41026],[27.44333,48.41209],[27.46942,48.454],[27.5889,48.49224],[27.59027,48.46311],[27.6658,48.44034],[27.74422,48.45926],[27.79225,48.44244],[27.81902,48.41874],[27.87533,48.4037],[27.88391,48.36699],[27.95883,48.32368],[28.04527,48.32661],[28.09873,48.3124],[28.07504,48.23494],[28.17666,48.25963],[28.19314,48.20749],[28.2856,48.23202],[28.32508,48.23384],[28.35519,48.24957],[28.36996,48.20543],[28.34912,48.1787],[28.30586,48.1597],[28.30609,48.14018],[28.34009,48.13147],[28.38712,48.17567],[28.43701,48.15832],[28.42454,48.12047],[28.48428,48.0737],[28.53921,48.17453],[28.69896,48.13106],[28.85232,48.12506],[28.8414,48.03392],[28.9306,47.96255],[29.1723,47.99013],[29.19839,47.89261],[29.27804,47.88893],[29.20663,47.80367],[29.27255,47.79953],[29.22242,47.73607],[29.22414,47.60012],[29.11743,47.55001],[29.18603,47.43387],[29.3261,47.44664],[29.39889,47.30179],[29.47854,47.30366],[29.48678,47.36043],[29.5733,47.36508],[29.59665,47.25521],[29.54996,47.24962],[29.57696,47.13581],[29.49732,47.12878],[29.53044,47.07851],[29.61038,47.09932],[29.62137,47.05069],[29.57056,46.94766],[29.72986,46.92234],[29.75458,46.8604],[29.87405,46.88199],[29.98814,46.82358],[29.94522,46.80055],[29.9743,46.75325],[29.94409,46.56002],[29.88916,46.54302],[30.02511,46.45132],[30.16794,46.40967],[30.09103,46.38694],[29.94114,46.40114],[29.88329,46.35851],[29.74496,46.45605],[29.66359,46.4215],[29.6763,46.36041],[29.5939,46.35472],[29.49914,46.45889],[29.35357,46.49505],[29.24886,46.37912],[29.23547,46.55435],[29.02409,46.49582],[29.01241,46.46177],[28.9306,46.45699],[29.004,46.31495],[28.98478,46.31803],[28.94953,46.25852],[29.06656,46.19716],[28.94643,46.09176],[29.00613,46.04962],[28.98004,46.00385],[28.74383,45.96664],[28.78503,45.83475],[28.69852,45.81753],[28.70401,45.78019],[28.52823,45.73803],[28.47879,45.66994],[28.51587,45.6613],[28.54196,45.58062],[28.49252,45.56716],[28.51449,45.49982],[28.43072,45.48538],[28.41836,45.51715],[28.30201,45.54744],[28.21139,45.46895],[28.28504,45.43907],[28.34554,45.32102],[28.5735,45.24759],[28.71358,45.22631],[28.78911,45.24179],[28.81383,45.3384],[28.94292,45.28045],[28.96077,45.33164],[29.24779,45.43388],[29.42632,45.44545],[29.59798,45.38857],[29.68175,45.26885],[29.65428,45.25629],[29.69272,45.19227],[30.04414,45.08461],[31.62627,45.50633],[33.54017,46.0123],[33.59087,46.06013],[33.57318,46.10317]]]]}},{type:"Feature",properties:{iso1A2:"UG",iso1A3:"UGA",iso1N3:"800",wikidata:"Q1036",nameEn:"Uganda",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["256"]},geometry:{type:"MultiPolygon",coordinates:[[[[33.93107,-.99298],[33.9264,-.54188],[33.98449,-.13079],[33.90936,.10581],[34.10067,.36372],[34.08727,.44713],[34.11408,.48884],[34.13493,.58118],[34.20196,.62289],[34.27345,.63182],[34.31516,.75693],[34.40041,.80266],[34.43349,.85254],[34.52369,1.10692],[34.57427,1.09868],[34.58029,1.14712],[34.67562,1.21265],[34.80223,1.22754],[34.82606,1.26626],[34.82606,1.30944],[34.7918,1.36752],[34.87819,1.5596],[34.92734,1.56109],[34.9899,1.6668],[34.98692,1.97348],[34.90947,2.42447],[34.95267,2.47209],[34.77244,2.70272],[34.78137,2.76223],[34.73967,2.85447],[34.65774,2.8753],[34.60114,2.93034],[34.56242,3.11478],[34.45815,3.18319],[34.40006,3.37949],[34.41794,3.44342],[34.39112,3.48802],[34.44922,3.51627],[34.45815,3.67385],[34.15429,3.80464],[34.06046,4.15235],[33.9873,4.23316],[33.51264,3.75068],[33.18356,3.77812],[33.02852,3.89296],[32.89746,3.81339],[32.72021,3.77327],[32.41337,3.748],[32.20782,3.6053],[32.19888,3.50867],[32.08866,3.53543],[32.08491,3.56287],[32.05187,3.589],[31.95907,3.57408],[31.96205,3.6499],[31.86821,3.78664],[31.81459,3.82083],[31.72075,3.74354],[31.50776,3.63652],[31.50478,3.67814],[31.29476,3.8015],[31.16666,3.79853],[30.97601,3.693],[30.85153,3.48867],[30.94081,3.50847],[30.93486,3.40737],[30.84251,3.26908],[30.77101,3.04897],[30.8574,2.9508],[30.8857,2.83923],[30.75612,2.5863],[30.74271,2.43601],[30.83059,2.42559],[30.91102,2.33332],[30.96911,2.41071],[31.06593,2.35862],[31.07934,2.30207],[31.12104,2.27676],[31.1985,2.29462],[31.20148,2.2217],[31.28042,2.17853],[31.30127,2.11006],[30.48503,1.21675],[30.24671,1.14974],[30.22139,.99635],[30.1484,.89805],[29.98307,.84295],[29.95477,.64486],[29.97413,.52124],[29.87284,.39166],[29.81922,.16824],[29.77454,.16675],[29.7224,.07291],[29.72687,-.08051],[29.65091,-.46777],[29.67474,-.47969],[29.67176,-.55714],[29.62708,-.71055],[29.63006,-.8997],[29.58388,-.89821],[29.59061,-1.39016],[29.82657,-1.31187],[29.912,-1.48269],[30.16369,-1.34303],[30.35212,-1.06896],[30.47194,-1.0555],[30.64166,-1.06601],[30.70631,-1.01175],[30.76635,-.9852],[30.80408,-.99911],[33.93107,-.99298]]]]}},{type:"Feature",properties:{iso1A2:"UM",iso1A3:"UMI",iso1N3:"581",wikidata:"Q16645",nameEn:"United States Minor Outlying Islands",country:"US"},geometry:null},{type:"Feature",properties:{iso1A2:"UN",wikidata:"Q1065",nameEn:"United Nations",level:"unitedNations",isoStatus:"excRes"},geometry:null},{type:"Feature",properties:{iso1A2:"US",iso1A3:"USA",iso1N3:"840",wikidata:"Q30",nameEn:"United States of America"},geometry:null},{type:"Feature",properties:{iso1A2:"UY",iso1A3:"URY",iso1N3:"858",wikidata:"Q77",nameEn:"Uruguay",groups:["005","419","019","UN"],callingCodes:["598"]},geometry:{type:"MultiPolygon",coordinates:[[[[-57.65132,-30.19229],[-57.61478,-30.25165],[-57.64859,-30.35095],[-57.89115,-30.49572],[-57.8024,-30.77193],[-57.89476,-30.95994],[-57.86729,-31.06352],[-57.9908,-31.34924],[-57.98127,-31.3872],[-58.07569,-31.44916],[-58.0023,-31.53084],[-58.00076,-31.65016],[-58.20252,-31.86966],[-58.10036,-32.25338],[-58.22362,-32.52416],[-58.1224,-32.98842],[-58.40475,-33.11777],[-58.44442,-33.84033],[-58.34425,-34.15035],[-57.83001,-34.69099],[-54.78916,-36.21945],[-52.83257,-34.01481],[-53.37138,-33.74313],[-53.39593,-33.75169],[-53.44031,-33.69344],[-53.52794,-33.68908],[-53.53459,-33.16843],[-53.1111,-32.71147],[-53.37671,-32.57005],[-53.39572,-32.58596],[-53.76024,-32.0751],[-54.17384,-31.86168],[-55.50821,-30.91349],[-55.50841,-30.9027],[-55.51862,-30.89828],[-55.52712,-30.89997],[-55.53276,-30.90218],[-55.53431,-30.89714],[-55.54572,-30.89051],[-55.55218,-30.88193],[-55.55373,-30.8732],[-55.5634,-30.8686],[-55.58866,-30.84117],[-55.87388,-31.05053],[-56.4619,-30.38457],[-56.4795,-30.3899],[-56.49267,-30.39471],[-56.90236,-30.02578],[-57.22502,-30.26121],[-57.65132,-30.19229]]]]}},{type:"Feature",properties:{iso1A2:"UZ",iso1A3:"UZB",iso1N3:"860",wikidata:"Q265",nameEn:"Uzbekistan",groups:["143","142","UN"],callingCodes:["998"]},geometry:{type:"MultiPolygon",coordinates:[[[[65.85194,42.85481],[65.53277,43.31856],[65.18666,43.48835],[64.96464,43.74748],[64.53885,43.56941],[63.34656,43.64003],[62.01711,43.51008],[61.01475,44.41383],[58.59711,45.58671],[55.97842,44.99622],[55.97832,44.99622],[55.97822,44.99617],[55.97811,44.99617],[55.97801,44.99612],[55.97801,44.99607],[55.97791,44.99607],[55.9778,44.99607],[55.9777,44.99601],[55.9777,44.99596],[55.9776,44.99591],[55.97749,44.99591],[55.97739,44.99591],[55.97739,44.99586],[55.97729,44.99586],[55.97718,44.99581],[55.97708,44.99576],[55.97698,44.9957],[55.97698,44.99565],[55.97687,44.9956],[55.97677,44.9956],[55.97677,44.99555],[55.97677,44.9955],[55.97667,44.99545],[55.97656,44.99539],[55.97646,44.99534],[55.97646,44.99529],[55.97636,44.99524],[55.97636,44.99519],[55.97625,44.99514],[55.97615,44.99508],[55.97615,44.99503],[55.97615,44.99498],[55.97615,44.99493],[55.97615,44.99483],[55.97615,44.99477],[55.97605,44.99477],[55.97605,44.99467],[55.97605,44.99462],[55.97605,44.99457],[55.97605,44.99452],[55.97594,44.99446],[55.97584,44.99441],[55.97584,44.99436],[55.97584,44.99431],[55.97584,44.99426],[55.97584,44.99421],[55.97584,44.99415],[55.97584,44.99405],[55.97584,44.994],[55.97584,44.9939],[55.97584,44.99384],[55.97584,44.99374],[55.97584,44.99369],[55.97584,44.99359],[55.97584,44.99353],[55.97584,44.99348],[55.97584,44.99343],[55.97584,44.99338],[55.97584,44.99328],[55.97584,44.99322],[56.00314,41.32584],[57.03423,41.25435],[57.13796,41.36625],[57.03359,41.41777],[56.96218,41.80383],[57.03633,41.92043],[57.30275,42.14076],[57.6296,42.16519],[57.84932,42.18555],[57.92897,42.24047],[57.90975,42.4374],[57.99214,42.50021],[58.3492,42.43335],[58.40688,42.29535],[58.51674,42.30348],[58.29427,42.56497],[58.14321,42.62159],[58.27504,42.69632],[58.57991,42.64988],[58.6266,42.79314],[58.93422,42.5407],[59.17317,42.52248],[59.2955,42.37064],[59.4341,42.29738],[59.94633,42.27655],[60.00539,42.212],[59.96419,42.1428],[60.04659,42.08982],[60.0356,42.01028],[59.95046,41.97966],[60.33223,41.75058],[60.08504,41.80997],[60.06032,41.76287],[60.18117,41.60082],[60.06581,41.4363],[60.5078,41.21694],[61.03261,41.25691],[61.22212,41.14946],[61.33199,41.14946],[61.39732,41.19873],[61.4446,41.29407],[61.87856,41.12257],[62.11751,40.58242],[62.34273,40.43206],[62.43337,39.98528],[63.6913,39.27666],[63.70778,39.22349],[64.19086,38.95561],[64.32576,38.98691],[65.55873,38.29052],[65.83913,38.25733],[66.24013,38.16238],[66.41042,38.02403],[66.56697,38.0435],[66.67684,37.96776],[66.53676,37.80084],[66.52852,37.58568],[66.65761,37.45497],[66.52303,37.39827],[66.55743,37.35409],[66.64699,37.32958],[66.95598,37.40162],[67.08232,37.35469],[67.13039,37.27168],[67.2224,37.24545],[67.2581,37.17216],[67.51868,37.26102],[67.78329,37.1834],[67.8474,37.31594],[67.81566,37.43107],[68.12635,37.93],[68.27159,37.91477],[68.40343,38.19484],[68.13289,38.40822],[68.06274,38.39435],[68.11366,38.47169],[68.05873,38.56087],[68.0807,38.64136],[68.05598,38.71641],[68.12877,38.73677],[68.06948,38.82115],[68.19743,38.85985],[68.09704,39.02589],[67.68915,39.00775],[67.67833,39.14479],[67.33226,39.23739],[67.36522,39.31287],[67.45998,39.315],[67.46822,39.46146],[67.39681,39.52505],[67.46547,39.53564],[67.44899,39.57799],[67.62889,39.60234],[67.70992,39.66156],[68.12053,39.56317],[68.54166,39.53929],[68.61972,39.68905],[68.63071,39.85265],[68.88889,39.87163],[68.93695,39.91167],[68.84906,40.04952],[68.96579,40.06949],[69.01935,40.11466],[69.01523,40.15771],[68.62796,40.07789],[68.52771,40.11676],[68.5332,40.14826],[68.77902,40.20492],[68.79276,40.17555],[68.84357,40.18604],[68.85832,40.20885],[69.04544,40.22904],[69.15659,40.2162],[69.2074,40.21488],[69.30448,40.18774],[69.30104,40.24502],[69.25229,40.26362],[69.24817,40.30357],[69.30808,40.2821],[69.32833,40.29794],[69.33794,40.34819],[69.30774,40.36102],[69.28525,40.41894],[69.27066,40.49274],[69.21063,40.54469],[69.2643,40.57506],[69.3455,40.57988],[69.32834,40.70233],[69.38327,40.7918],[69.53021,40.77621],[69.59441,40.70181],[69.69434,40.62615],[70.36655,40.90296],[70.38028,41.02014],[70.45251,41.04438],[70.80009,40.72825],[70.49871,40.52503],[70.32626,40.45174],[70.37511,40.38605],[70.57149,40.3442],[70.56394,40.26421],[70.62342,40.17396],[70.8607,40.217],[70.9818,40.22392],[70.95789,40.28761],[71.05901,40.28765],[71.13042,40.34106],[71.36663,40.31593],[71.4246,40.28619],[71.51215,40.26943],[71.51549,40.22986],[71.61725,40.20615],[71.61931,40.26775],[71.68386,40.26984],[71.70569,40.20391],[71.69621,40.18492],[71.71719,40.17886],[71.73054,40.14818],[71.82646,40.21872],[71.85002,40.25647],[72.05464,40.27586],[71.96401,40.31907],[72.18648,40.49893],[72.24368,40.46091],[72.40346,40.4007],[72.44191,40.48222],[72.41513,40.50856],[72.38384,40.51535],[72.41714,40.55736],[72.34406,40.60144],[72.40517,40.61917],[72.47795,40.5532],[72.66713,40.5219],[72.66713,40.59076],[72.69579,40.59778],[72.73995,40.58409],[72.74768,40.58051],[72.74862,40.57131],[72.75982,40.57273],[72.74894,40.59592],[72.74866,40.60873],[72.80137,40.67856],[72.84754,40.67229],[72.85372,40.7116],[72.8722,40.71111],[72.93296,40.73089],[72.99133,40.76457],[73.0612,40.76678],[73.13412,40.79122],[73.13267,40.83512],[73.01869,40.84681],[72.94454,40.8094],[72.84291,40.85512],[72.68157,40.84942],[72.59136,40.86947],[72.55109,40.96046],[72.48742,40.97136],[72.45206,41.03018],[72.38511,41.02785],[72.36138,41.04384],[72.34757,41.06104],[72.34026,41.04539],[72.324,41.03381],[72.18339,40.99571],[72.17594,41.02377],[72.21061,41.05607],[72.1792,41.10621],[72.14864,41.13363],[72.17594,41.15522],[72.16433,41.16483],[72.10745,41.15483],[72.07249,41.11739],[71.85964,41.19081],[71.91457,41.2982],[71.83914,41.3546],[71.76625,41.4466],[71.71132,41.43012],[71.73054,41.54713],[71.65914,41.49599],[71.6787,41.42111],[71.57227,41.29175],[71.46688,41.31883],[71.43814,41.19644],[71.46148,41.13958],[71.40198,41.09436],[71.34877,41.16807],[71.27187,41.11015],[71.25813,41.18796],[71.11806,41.15359],[71.02193,41.19494],[70.9615,41.16393],[70.86263,41.23833],[70.77885,41.24813],[70.78572,41.36419],[70.67586,41.47953],[70.48909,41.40335],[70.17682,41.5455],[70.69777,41.92554],[71.28719,42.18033],[71.13263,42.28356],[70.94483,42.26238],[69.49545,41.545],[69.45751,41.56863],[69.39485,41.51518],[69.45081,41.46246],[69.37468,41.46555],[69.35554,41.47211],[69.29778,41.43673],[69.25059,41.46693],[69.23332,41.45847],[69.22671,41.46298],[69.20439,41.45391],[69.18528,41.45175],[69.17701,41.43769],[69.15137,41.43078],[69.05006,41.36183],[69.01308,41.22804],[68.7217,41.05025],[68.73945,40.96989],[68.65662,40.93861],[68.62221,41.03019],[68.49983,40.99669],[68.58444,40.91447],[68.63,40.59358],[68.49983,40.56437],[67.96736,40.83798],[68.1271,41.0324],[68.08273,41.08148],[67.98511,41.02794],[67.9644,41.14611],[66.69129,41.1311],[66.53302,41.87388],[66.00546,41.94455],[66.09482,42.93426],[65.85194,42.85481]],[[70.68112,40.90612],[70.6721,40.90555],[70.57501,40.98941],[70.54223,40.98787],[70.56077,41.00642],[70.6158,40.97661],[70.68112,40.90612]]],[[[71.21139,40.03369],[71.12218,40.03052],[71.06305,40.1771],[71.00236,40.18154],[71.01035,40.05481],[71.11037,40.01984],[71.11668,39.99291],[71.09063,39.99],[71.10501,39.95568],[71.04979,39.89808],[71.10531,39.91354],[71.16101,39.88423],[71.23067,39.93581],[71.1427,39.95026],[71.21139,40.03369]]],[[[71.86463,39.98598],[71.78838,40.01404],[71.71511,39.96348],[71.7504,39.93701],[71.84316,39.95582],[71.86463,39.98598]]]]}},{type:"Feature",properties:{iso1A2:"VA",iso1A3:"VAT",iso1N3:"336",wikidata:"Q237",nameEn:"Vatican City",aliases:["Holy See"],groups:["039","150"],callingCodes:["379","39 06"]},geometry:{type:"MultiPolygon",coordinates:[[[[12.45181,41.90056],[12.45446,41.90028],[12.45435,41.90143],[12.45626,41.90172],[12.45691,41.90125],[12.4577,41.90115],[12.45834,41.90174],[12.45826,41.90281],[12.45755,41.9033],[12.45762,41.9058],[12.45561,41.90629],[12.45543,41.90738],[12.45091,41.90625],[12.44984,41.90545],[12.44815,41.90326],[12.44582,41.90194],[12.44834,41.90095],[12.45181,41.90056]]]]}},{type:"Feature",properties:{iso1A2:"VC",iso1A3:"VCT",iso1N3:"670",wikidata:"Q757",nameEn:"St. Vincent and the Grenadines",aliases:["WV"],groups:["029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",callingCodes:["1 784"]},geometry:{type:"MultiPolygon",coordinates:[[[[-62.64026,12.69984],[-59.94058,12.34011],[-61.69315,14.26451],[-62.64026,12.69984]]]]}},{type:"Feature",properties:{iso1A2:"VE",iso1A3:"VEN",iso1N3:"862",wikidata:"Q717",nameEn:"Venezuela",aliases:["YV"],groups:["005","419","019","UN"],callingCodes:["58"]},geometry:{type:"MultiPolygon",coordinates:[[[[-71.22331,13.01387],[-70.92579,11.96275],[-71.3275,11.85],[-71.9675,11.65536],[-72.24983,11.14138],[-72.4767,11.1117],[-72.88002,10.44309],[-72.98085,9.85253],[-73.36905,9.16636],[-73.02119,9.27584],[-72.94052,9.10663],[-72.77415,9.10165],[-72.65474,8.61428],[-72.4042,8.36513],[-72.36987,8.19976],[-72.35163,8.01163],[-72.39137,8.03534],[-72.47213,7.96106],[-72.48801,7.94329],[-72.48183,7.92909],[-72.47042,7.92306],[-72.45806,7.91141],[-72.46183,7.90682],[-72.44454,7.86031],[-72.46763,7.79518],[-72.47827,7.65604],[-72.45321,7.57232],[-72.47415,7.48928],[-72.43132,7.40034],[-72.19437,7.37034],[-72.04895,7.03837],[-71.82441,7.04314],[-71.44118,7.02116],[-71.42212,7.03854],[-71.37234,7.01588],[-71.03941,6.98163],[-70.7596,7.09799],[-70.10716,6.96516],[-69.41843,6.1072],[-67.60654,6.2891],[-67.4625,6.20625],[-67.43513,5.98835],[-67.58558,5.84537],[-67.63914,5.64963],[-67.59141,5.5369],[-67.83341,5.31104],[-67.85358,4.53249],[-67.62671,3.74303],[-67.50067,3.75812],[-67.30945,3.38393],[-67.85862,2.86727],[-67.85862,2.79173],[-67.65696,2.81691],[-67.21967,2.35778],[-66.85795,1.22998],[-66.28507,.74585],[-65.6727,1.01353],[-65.50158,.92086],[-65.57288,.62856],[-65.11657,1.12046],[-64.38932,1.5125],[-64.34654,1.35569],[-64.08274,1.64792],[-64.06135,1.94722],[-63.39827,2.16098],[-63.39114,2.4317],[-64.0257,2.48156],[-64.02908,2.79797],[-64.48379,3.7879],[-64.84028,4.24665],[-64.72977,4.28931],[-64.57648,4.12576],[-64.14512,4.12932],[-63.99183,3.90172],[-63.86082,3.94796],[-63.70218,3.91417],[-63.67099,4.01731],[-63.50611,3.83592],[-63.42233,3.89995],[-63.4464,3.9693],[-63.21111,3.96219],[-62.98296,3.59935],[-62.7655,3.73099],[-62.74411,4.03331],[-62.57656,4.04754],[-62.44822,4.18621],[-62.13094,4.08309],[-61.54629,4.2822],[-61.48569,4.43149],[-61.29675,4.44216],[-61.31457,4.54167],[-61.15703,4.49839],[-60.98303,4.54167],[-60.86539,4.70512],[-60.5802,4.94312],[-60.73204,5.20931],[-61.4041,5.95304],[-61.15058,6.19558],[-61.20762,6.58174],[-61.13632,6.70922],[-60.54873,6.8631],[-60.39419,6.94847],[-60.28074,7.1162],[-60.44116,7.20817],[-60.54098,7.14804],[-60.63367,7.25061],[-60.59802,7.33194],[-60.71923,7.55817],[-60.64793,7.56877],[-60.51959,7.83373],[-60.38056,7.8302],[-60.02407,8.04557],[-59.97059,8.20791],[-59.83156,8.23261],[-59.80661,8.28906],[-59.85562,8.35213],[-59.98508,8.53046],[-59.54058,8.6862],[-60.89962,9.81445],[-62.08693,10.04435],[-61.62505,11.18974],[-63.73917,11.92623],[-63.19938,16.44103],[-67.89186,12.4116],[-68.01417,11.77722],[-68.33524,11.78151],[-68.99639,11.79035],[-71.22331,13.01387]]]]}},{type:"Feature",properties:{iso1A2:"VG",iso1A3:"VGB",iso1N3:"092",wikidata:"Q25305",nameEn:"British Virgin Islands",country:"GB",groups:["BOTS","029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1 284"]},geometry:{type:"MultiPolygon",coordinates:[[[[-64.47127,17.55688],[-63.88746,19.15706],[-65.02435,18.73231],[-64.86027,18.39056],[-64.64673,18.36549],[-64.47127,17.55688]]]]}},{type:"Feature",properties:{iso1A2:"VI",iso1A3:"VIR",iso1N3:"850",wikidata:"Q11703",nameEn:"United States Virgin Islands",aliases:["US-VI"],country:"US",groups:["Q1352230","029","003","419","019","UN"],driveSide:"left",roadSpeedUnit:"mph",roadHeightUnit:"ft",callingCodes:["1 340"]},geometry:{type:"MultiPolygon",coordinates:[[[[-65.02435,18.73231],[-65.27974,17.56928],[-64.47127,17.55688],[-64.64673,18.36549],[-64.86027,18.39056],[-65.02435,18.73231]]]]}},{type:"Feature",properties:{iso1A2:"VN",iso1A3:"VNM",iso1N3:"704",wikidata:"Q881",nameEn:"Vietnam",groups:["035","142","UN"],callingCodes:["84"]},geometry:{type:"MultiPolygon",coordinates:[[[[108.10003,21.47338],[108.0569,21.53604],[108.02926,21.54997],[107.97932,21.54503],[107.97383,21.53961],[107.97074,21.54072],[107.96774,21.53601],[107.95232,21.5388],[107.92652,21.58906],[107.90006,21.5905],[107.86114,21.65128],[107.80355,21.66141],[107.66967,21.60787],[107.56537,21.61945],[107.54047,21.5934],[107.49065,21.59774],[107.49532,21.62958],[107.47197,21.6672],[107.41593,21.64839],[107.38636,21.59774],[107.35989,21.60063],[107.35834,21.6672],[107.29296,21.74674],[107.24625,21.7077],[107.20734,21.71493],[107.10771,21.79879],[107.02615,21.81981],[107.00964,21.85948],[107.06101,21.88982],[107.05634,21.92303],[106.99252,21.95191],[106.97228,21.92592],[106.92714,21.93459],[106.9178,21.97357],[106.81038,21.97934],[106.74345,22.00965],[106.72551,21.97923],[106.69276,21.96013],[106.68274,21.99811],[106.70142,22.02409],[106.6983,22.15102],[106.67495,22.1885],[106.69986,22.22309],[106.6516,22.33977],[106.55976,22.34841],[106.57221,22.37],[106.55665,22.46498],[106.58395,22.474],[106.61269,22.60301],[106.65316,22.5757],[106.71698,22.58432],[106.72321,22.63606],[106.76293,22.73491],[106.82404,22.7881],[106.83685,22.8098],[106.81271,22.8226],[106.78422,22.81532],[106.71128,22.85982],[106.71387,22.88296],[106.6734,22.89587],[106.6516,22.86862],[106.60179,22.92884],[106.55976,22.92311],[106.51306,22.94891],[106.49749,22.91164],[106.34961,22.86718],[106.27022,22.87722],[106.19705,22.98475],[106.00179,22.99049],[105.99568,22.94178],[105.90119,22.94168],[105.8726,22.92756],[105.72382,23.06641],[105.57594,23.075],[105.56037,23.16806],[105.49966,23.20669],[105.42805,23.30824],[105.40782,23.28107],[105.32376,23.39684],[105.22569,23.27249],[105.17276,23.28679],[105.11672,23.25247],[105.07002,23.26248],[104.98712,23.19176],[104.96532,23.20463],[104.9486,23.17235],[104.91435,23.18666],[104.87992,23.17141],[104.87382,23.12854],[104.79478,23.12934],[104.8334,23.01484],[104.86765,22.95178],[104.84942,22.93631],[104.77114,22.90017],[104.72755,22.81984],[104.65283,22.83419],[104.60457,22.81841],[104.58122,22.85571],[104.47225,22.75813],[104.35593,22.69353],[104.25683,22.76534],[104.27084,22.8457],[104.11384,22.80363],[104.03734,22.72945],[104.01088,22.51823],[103.99247,22.51958],[103.97384,22.50634],[103.96783,22.51173],[103.96352,22.50584],[103.95191,22.5134],[103.94513,22.52553],[103.93286,22.52703],[103.87904,22.56683],[103.64506,22.79979],[103.56255,22.69499],[103.57812,22.65764],[103.52675,22.59155],[103.43646,22.70648],[103.43179,22.75816],[103.32282,22.8127],[103.28079,22.68063],[103.18895,22.64471],[103.15782,22.59873],[103.17961,22.55705],[103.07843,22.50097],[103.0722,22.44775],[102.9321,22.48659],[102.8636,22.60735],[102.60675,22.73376],[102.57095,22.7036],[102.51802,22.77969],[102.46665,22.77108],[102.42618,22.69212],[102.38415,22.67919],[102.41061,22.64184],[102.25339,22.4607],[102.26428,22.41321],[102.16621,22.43336],[102.14099,22.40092],[102.18712,22.30403],[102.51734,22.02676],[102.49092,21.99002],[102.62301,21.91447],[102.67145,21.65894],[102.74189,21.66713],[102.82115,21.73667],[102.81894,21.83888],[102.85637,21.84501],[102.86077,21.71213],[102.97965,21.74076],[102.98846,21.58936],[102.86297,21.4255],[102.94223,21.46034],[102.88939,21.3107],[102.80794,21.25736],[102.89825,21.24707],[102.97745,21.05821],[103.03469,21.05821],[103.12055,20.89994],[103.21497,20.89832],[103.38032,20.79501],[103.45737,20.82382],[103.68633,20.66324],[103.73478,20.6669],[103.82282,20.8732],[103.98024,20.91531],[104.11121,20.96779],[104.27412,20.91433],[104.63957,20.6653],[104.38199,20.47155],[104.40621,20.3849],[104.47886,20.37459],[104.66158,20.47774],[104.72102,20.40554],[104.62195,20.36633],[104.61315,20.24452],[104.86852,20.14121],[104.91695,20.15567],[104.9874,20.09573],[104.8465,19.91783],[104.8355,19.80395],[104.68359,19.72729],[104.64837,19.62365],[104.53169,19.61743],[104.41281,19.70035],[104.23229,19.70242],[104.06498,19.66926],[104.05617,19.61743],[104.10832,19.51575],[104.06058,19.43484],[103.87125,19.31854],[104.5361,18.97747],[104.64617,18.85668],[105.12829,18.70453],[105.19654,18.64196],[105.1327,18.58355],[105.10408,18.43533],[105.15942,18.38691],[105.38366,18.15315],[105.46292,18.22008],[105.64784,17.96687],[105.60381,17.89356],[105.76612,17.67147],[105.85744,17.63221],[106.09019,17.36399],[106.18991,17.28227],[106.24444,17.24714],[106.29287,17.3018],[106.31929,17.20509],[106.43597,17.01362],[106.50862,16.9673],[106.55045,17.0031],[106.54824,16.92729],[106.51963,16.92097],[106.52183,16.87884],[106.55265,16.86831],[106.55485,16.68704],[106.59013,16.62259],[106.58267,16.6012],[106.61477,16.60713],[106.66052,16.56892],[106.65832,16.47816],[106.74418,16.41904],[106.84104,16.55415],[106.88727,16.52671],[106.88067,16.43594],[106.96638,16.34938],[106.97385,16.30204],[107.02597,16.31132],[107.09091,16.3092],[107.15035,16.26271],[107.14595,16.17816],[107.25822,16.13587],[107.33968,16.05549],[107.44975,16.08511],[107.46296,16.01106],[107.39471,15.88829],[107.34188,15.89464],[107.21419,15.83747],[107.21859,15.74638],[107.27143,15.71459],[107.27583,15.62769],[107.34408,15.62345],[107.3815,15.49832],[107.50699,15.48771],[107.53341,15.40496],[107.62367,15.42193],[107.60605,15.37524],[107.62587,15.2266],[107.58844,15.20111],[107.61926,15.13949],[107.61486,15.0566],[107.46516,15.00982],[107.48277,14.93751],[107.59285,14.87795],[107.51579,14.79282],[107.54361,14.69092],[107.55371,14.628],[107.52102,14.59034],[107.52569,14.54665],[107.48521,14.40346],[107.44941,14.41552],[107.39493,14.32655],[107.40427,14.24509],[107.33577,14.11832],[107.37158,14.07906],[107.35757,14.02319],[107.38247,13.99147],[107.44318,13.99751],[107.46498,13.91593],[107.45252,13.78897],[107.53503,13.73908],[107.61909,13.52577],[107.62843,13.3668],[107.49144,13.01215],[107.49611,12.88926],[107.55993,12.7982],[107.5755,12.52177],[107.55059,12.36824],[107.4463,12.29373],[107.42917,12.24657],[107.34511,12.33327],[107.15831,12.27547],[106.99953,12.08983],[106.92325,12.06548],[106.79405,12.0807],[106.70687,11.96956],[106.4111,11.97413],[106.4687,11.86751],[106.44068,11.86294],[106.44535,11.8279],[106.41577,11.76999],[106.45158,11.68616],[106.44691,11.66787],[106.37219,11.69836],[106.30525,11.67549],[106.26478,11.72122],[106.18539,11.75171],[106.13158,11.73283],[106.06708,11.77761],[106.02038,11.77457],[106.00792,11.7197],[105.95188,11.63738],[105.88962,11.67854],[105.8507,11.66635],[105.80867,11.60536],[105.81645,11.56876],[105.87328,11.55953],[105.88962,11.43605],[105.86782,11.28343],[106.10444,11.07879],[106.1527,11.10476],[106.1757,11.07301],[106.20095,10.97795],[106.14301,10.98176],[106.18539,10.79451],[106.06708,10.8098],[105.94535,10.9168],[105.93403,10.83853],[105.84603,10.85873],[105.86376,10.89839],[105.77751,11.03671],[105.50045,10.94586],[105.42884,10.96878],[105.34011,10.86179],[105.11449,10.96332],[105.08326,10.95656],[105.02722,10.89236],[105.09571,10.72722],[104.95094,10.64003],[104.87933,10.52833],[104.59018,10.53073],[104.49869,10.4057],[104.47963,10.43046],[104.43778,10.42386],[103.99198,10.48391],[102.47649,9.66162],[104.81582,8.03101],[109.55486,8.10026],[111.60491,13.57105],[108.00365,17.98159],[108.10003,21.47338]]]]}},{type:"Feature",properties:{iso1A2:"VU",iso1A3:"VUT",iso1N3:"548",wikidata:"Q686",nameEn:"Vanuatu",groups:["054","009","UN"],callingCodes:["678"]},geometry:{type:"MultiPolygon",coordinates:[[[[156.73836,-14.50464],[174.245,-23.1974],[172.71443,-12.01327],[156.73836,-14.50464]]]]}},{type:"Feature",properties:{iso1A2:"WF",iso1A3:"WLF",iso1N3:"876",wikidata:"Q35555",nameEn:"Wallis and Futuna",country:"FR",groups:["EU","Q1451600","061","009","UN"],callingCodes:["681"]},geometry:{type:"MultiPolygon",coordinates:[[[[-178.66551,-14.32452],[-176.76826,-14.95183],[-175.59809,-12.61507],[-178.66551,-14.32452]]]]}},{type:"Feature",properties:{iso1A2:"WS",iso1A3:"WSM",iso1N3:"882",wikidata:"Q683",nameEn:"Samoa",groups:["061","009","UN"],driveSide:"left",callingCodes:["685"]},geometry:{type:"MultiPolygon",coordinates:[[[[-173.74402,-14.26669],[-170.99605,-15.1275],[-171.39864,-10.21587],[-173.74402,-14.26669]]]]}},{type:"Feature",properties:{iso1A2:"XK",iso1A3:"XKX",wikidata:"Q1246",nameEn:"Kosovo",aliases:["KV"],groups:["039","150"],isoStatus:"usrAssn",callingCodes:["383"]},geometry:{type:"MultiPolygon",coordinates:[[[[21.39045,42.74888],[21.44047,42.87276],[21.36941,42.87397],[21.32974,42.90424],[21.2719,42.8994],[21.23534,42.95523],[21.23877,43.00848],[21.2041,43.02277],[21.16734,42.99694],[21.14465,43.11089],[21.08952,43.13471],[21.05378,43.10707],[21.00749,43.13984],[20.96287,43.12416],[20.83727,43.17842],[20.88685,43.21697],[20.82145,43.26769],[20.73811,43.25068],[20.68688,43.21335],[20.59929,43.20492],[20.69515,43.09641],[20.64557,43.00826],[20.59929,43.01067],[20.48692,42.93208],[20.53484,42.8885],[20.43734,42.83157],[20.40594,42.84853],[20.35692,42.8335],[20.27869,42.81945],[20.2539,42.76245],[20.04898,42.77701],[20.02088,42.74789],[20.02915,42.71147],[20.0969,42.65559],[20.07761,42.55582],[20.17127,42.50469],[20.21797,42.41237],[20.24399,42.32168],[20.34479,42.32656],[20.3819,42.3029],[20.48857,42.25444],[20.56955,42.12097],[20.55633,42.08173],[20.59434,42.03879],[20.63069,41.94913],[20.57946,41.91593],[20.59524,41.8818],[20.68523,41.85318],[20.76786,41.91839],[20.75464,42.05229],[21.11491,42.20794],[21.16614,42.19815],[21.22728,42.08909],[21.31983,42.10993],[21.29913,42.13954],[21.30496,42.1418],[21.38428,42.24465],[21.43882,42.23609],[21.43882,42.2789],[21.50823,42.27156],[21.52145,42.24465],[21.58992,42.25915],[21.56772,42.30946],[21.5264,42.33634],[21.53467,42.36809],[21.57021,42.3647],[21.59029,42.38042],[21.62887,42.37664],[21.64209,42.41081],[21.62556,42.45106],[21.7035,42.51899],[21.70522,42.54176],[21.7327,42.55041],[21.75672,42.62695],[21.79413,42.65923],[21.75025,42.70125],[21.6626,42.67813],[21.58755,42.70418],[21.59154,42.72643],[21.47498,42.74695],[21.39045,42.74888]]]]}},{type:"Feature",properties:{iso1A2:"YE",iso1A3:"YEM",iso1N3:"887",wikidata:"Q805",nameEn:"Yemen",groups:["145","142","UN"],callingCodes:["967"]},geometry:{type:"MultiPolygon",coordinates:[[[[57.49095,8.14549],[52.81185,17.28568],[52.74267,17.29519],[52.78009,17.35124],[52.00311,19.00083],[49.04884,18.59899],[48.19996,18.20584],[47.58351,17.50366],[47.48245,17.10808],[47.00571,16.94765],[46.76494,17.29151],[46.31018,17.20464],[44.50126,17.47475],[43.70631,17.35762],[43.43005,17.56148],[43.29185,17.53224],[43.22533,17.38343],[43.32653,17.31179],[43.20156,17.25901],[43.17787,17.14717],[43.23967,17.03428],[43.18233,17.02673],[43.1813,16.98438],[43.19328,16.94703],[43.1398,16.90696],[43.18338,16.84852],[43.22012,16.83932],[43.22956,16.80613],[43.24801,16.80613],[43.26303,16.79479],[43.25857,16.75304],[43.21325,16.74416],[43.22066,16.65179],[43.15274,16.67248],[43.11601,16.53166],[42.97215,16.51093],[42.94351,16.49467],[42.94625,16.39721],[42.76801,16.40371],[42.15205,16.40211],[40.99158,15.81743],[43.29075,12.79154],[43.32909,12.59711],[43.90659,12.3823],[51.12877,12.56479],[57.49095,8.14549]]]]}},{type:"Feature",properties:{iso1A2:"YT",iso1A3:"MYT",iso1N3:"175",wikidata:"Q17063",nameEn:"Mayotte",country:"FR",groups:["Q3320166","EU","014","202","002","UN"],callingCodes:["262"]},geometry:{type:"MultiPolygon",coordinates:[[[[43.28731,-13.97126],[45.54824,-13.22353],[45.4971,-11.75965],[43.28731,-13.97126]]]]}},{type:"Feature",properties:{iso1A2:"ZA",iso1A3:"ZAF",iso1N3:"710",wikidata:"Q258",nameEn:"South Africa",groups:["018","202","002","UN"],driveSide:"left",callingCodes:["27"]},geometry:{type:"MultiPolygon",coordinates:[[[[31.30611,-22.422],[31.16344,-22.32599],[31.08932,-22.34884],[30.86696,-22.28907],[30.6294,-22.32599],[30.48686,-22.31368],[30.38614,-22.34533],[30.28351,-22.35587],[30.2265,-22.2961],[30.13147,-22.30841],[29.92242,-22.19408],[29.76848,-22.14128],[29.64609,-22.12917],[29.37703,-22.19581],[29.21955,-22.17771],[29.18974,-22.18599],[29.15268,-22.21399],[29.10881,-22.21202],[29.0151,-22.22907],[28.91889,-22.44299],[28.63287,-22.55887],[28.34874,-22.5694],[28.04562,-22.8394],[28.04752,-22.90243],[27.93729,-22.96194],[27.93539,-23.04941],[27.74154,-23.2137],[27.6066,-23.21894],[27.52393,-23.37952],[27.33768,-23.40917],[26.99749,-23.65486],[26.84165,-24.24885],[26.51667,-24.47219],[26.46346,-24.60358],[26.39409,-24.63468],[25.8515,-24.75727],[25.84295,-24.78661],[25.88571,-24.87802],[25.72702,-25.25503],[25.69661,-25.29284],[25.6643,-25.4491],[25.58543,-25.6343],[25.33076,-25.76616],[25.12266,-25.75931],[25.01718,-25.72507],[24.8946,-25.80723],[24.67319,-25.81749],[24.44703,-25.73021],[24.36531,-25.773],[24.18287,-25.62916],[23.9244,-25.64286],[23.47588,-25.29971],[23.03497,-25.29971],[22.86012,-25.50572],[22.70808,-25.99186],[22.56365,-26.19668],[22.41921,-26.23078],[22.21206,-26.3773],[22.06192,-26.61882],[21.90703,-26.66808],[21.83291,-26.65959],[21.77114,-26.69015],[21.7854,-26.79199],[21.69322,-26.86152],[21.37869,-26.82083],[21.13353,-26.86661],[20.87031,-26.80047],[20.68596,-26.9039],[20.63275,-26.78181],[20.61754,-26.4692],[20.86081,-26.14892],[20.64795,-25.47827],[20.29826,-24.94869],[20.03678,-24.81004],[20.02809,-24.78725],[19.99817,-24.76768],[19.99882,-28.42622],[18.99885,-28.89165],[17.4579,-28.68718],[17.15405,-28.08573],[16.90446,-28.057],[16.59922,-28.53246],[16.46592,-28.57126],[16.45332,-28.63117],[12.51595,-32.27486],[38.88176,-48.03306],[34.51034,-26.91792],[32.35222,-26.86027],[32.29584,-26.852],[32.22302,-26.84136],[32.19409,-26.84032],[32.13315,-26.84345],[32.09664,-26.80721],[32.00893,-26.8096],[31.97463,-27.11057],[31.97592,-27.31675],[31.49834,-27.31549],[31.15027,-27.20151],[30.96088,-27.0245],[30.97757,-26.92706],[30.88826,-26.79622],[30.81101,-26.84722],[30.78927,-26.48271],[30.95819,-26.26303],[31.13073,-25.91558],[31.31237,-25.7431],[31.4175,-25.71886],[31.86881,-25.99973],[31.974,-25.95387],[31.92649,-25.84216],[32.00631,-25.65044],[31.97875,-25.46356],[32.01676,-25.38117],[32.03196,-25.10785],[31.9835,-24.29983],[31.90368,-24.18892],[31.87707,-23.95293],[31.77445,-23.90082],[31.70223,-23.72695],[31.67942,-23.60858],[31.56539,-23.47268],[31.55779,-23.176],[31.30611,-22.422]],[[29.33204,-29.45598],[29.28545,-29.58456],[29.12553,-29.76266],[29.16548,-29.91706],[28.9338,-30.05072],[28.80222,-30.10579],[28.68627,-30.12885],[28.399,-30.1592],[28.2319,-30.28476],[28.12073,-30.68072],[27.74814,-30.60635],[27.69467,-30.55862],[27.67819,-30.53437],[27.6521,-30.51707],[27.62137,-30.50509],[27.56781,-30.44562],[27.56901,-30.42504],[27.45452,-30.32239],[27.38108,-30.33456],[27.36649,-30.27246],[27.37293,-30.19401],[27.40778,-30.14577],[27.32555,-30.14785],[27.29603,-30.05473],[27.22719,-30.00718],[27.09489,-29.72796],[27.01016,-29.65439],[27.33464,-29.48161],[27.4358,-29.33465],[27.47254,-29.31968],[27.45125,-29.29708],[27.48679,-29.29349],[27.54258,-29.25575],[27.5158,-29.2261],[27.55974,-29.18954],[27.75458,-28.89839],[27.8907,-28.91612],[27.88933,-28.88156],[27.9392,-28.84864],[27.98675,-28.8787],[28.02503,-28.85991],[28.1317,-28.7293],[28.2348,-28.69471],[28.30518,-28.69531],[28.40612,-28.6215],[28.65091,-28.57025],[28.68043,-28.58744],[29.40524,-29.21246],[29.44883,-29.3772],[29.33204,-29.45598]]]]}},{type:"Feature",properties:{iso1A2:"ZM",iso1A3:"ZMB",iso1N3:"894",wikidata:"Q953",nameEn:"Zambia",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["260"]},geometry:{type:"MultiPolygon",coordinates:[[[[32.95389,-9.40138],[32.76233,-9.31963],[32.75611,-9.28583],[32.53661,-9.24281],[32.49147,-9.14754],[32.43543,-9.11988],[32.25486,-9.13371],[32.16146,-9.05993],[32.08206,-9.04609],[31.98866,-9.07069],[31.94196,-9.02303],[31.94663,-8.93846],[31.81587,-8.88618],[31.71158,-8.91386],[31.57147,-8.81388],[31.57147,-8.70619],[31.37533,-8.60769],[31.00796,-8.58615],[30.79243,-8.27382],[28.88917,-8.4831],[28.9711,-8.66935],[28.38526,-9.23393],[28.36562,-9.30091],[28.52636,-9.35379],[28.51627,-9.44726],[28.56208,-9.49122],[28.68532,-9.78],[28.62795,-9.92942],[28.65032,-10.65133],[28.37241,-11.57848],[28.48357,-11.87532],[29.18592,-12.37921],[29.4992,-12.43843],[29.48404,-12.23604],[29.8139,-12.14898],[29.81551,-13.44683],[29.65078,-13.41844],[29.60531,-13.21685],[29.01918,-13.41353],[28.33199,-12.41375],[27.59932,-12.22123],[27.21025,-11.76157],[27.22541,-11.60323],[27.04351,-11.61312],[26.88687,-12.01868],[26.01777,-11.91488],[25.33058,-11.65767],[25.34069,-11.19707],[24.42612,-11.44975],[24.34528,-11.06816],[24.00027,-10.89356],[24.02603,-11.15368],[23.98804,-12.13149],[24.06672,-12.29058],[23.90937,-12.844],[24.03339,-12.99091],[21.97988,-13.00148],[22.00323,-16.18028],[22.17217,-16.50269],[23.20038,-17.47563],[23.47474,-17.62877],[24.23619,-17.47489],[24.32811,-17.49082],[24.38712,-17.46818],[24.5621,-17.52963],[24.70864,-17.49501],[25.00198,-17.58221],[25.26433,-17.79571],[25.51646,-17.86232],[25.6827,-17.81987],[25.85738,-17.91403],[25.85892,-17.97726],[26.08925,-17.98168],[26.0908,-17.93021],[26.21601,-17.88608],[26.55918,-17.99638],[26.68403,-18.07411],[26.74314,-18.0199],[26.89926,-17.98756],[27.14196,-17.81398],[27.30736,-17.60487],[27.61377,-17.34378],[27.62795,-17.24365],[27.83141,-16.96274],[28.73725,-16.5528],[28.76199,-16.51575],[28.81454,-16.48611],[28.8501,-16.04537],[28.9243,-15.93987],[29.01298,-15.93805],[29.21955,-15.76589],[29.4437,-15.68702],[29.8317,-15.6126],[30.35574,-15.6513],[30.41902,-15.62269],[30.22098,-14.99447],[33.24249,-14.00019],[33.16749,-13.93992],[33.07568,-13.98447],[33.02977,-14.05022],[32.99042,-13.95689],[32.88985,-13.82956],[32.79015,-13.80755],[32.76962,-13.77224],[32.84528,-13.71576],[32.7828,-13.64805],[32.68654,-13.64268],[32.66468,-13.60019],[32.68436,-13.55769],[32.73683,-13.57682],[32.84176,-13.52794],[32.86113,-13.47292],[33.0078,-13.19492],[32.98289,-13.12671],[33.02181,-12.88707],[32.96733,-12.88251],[32.94397,-12.76868],[33.05917,-12.59554],[33.18837,-12.61377],[33.28177,-12.54692],[33.37517,-12.54085],[33.54485,-12.35996],[33.47636,-12.32498],[33.3705,-12.34931],[33.25998,-12.14242],[33.33937,-11.91252],[33.32692,-11.59248],[33.24252,-11.59302],[33.23663,-11.40637],[33.29267,-11.43536],[33.29267,-11.3789],[33.39697,-11.15296],[33.25998,-10.88862],[33.28022,-10.84428],[33.47636,-10.78465],[33.70675,-10.56896],[33.54797,-10.36077],[33.53863,-10.20148],[33.31297,-10.05133],[33.37902,-9.9104],[33.36581,-9.81063],[33.31517,-9.82364],[33.2095,-9.61099],[33.12144,-9.58929],[33.10163,-9.66525],[33.05485,-9.61316],[33.00256,-9.63053],[33.00476,-9.5133],[32.95389,-9.40138]]]]}},{type:"Feature",properties:{iso1A2:"ZW",iso1A3:"ZWE",iso1N3:"716",wikidata:"Q954",nameEn:"Zimbabwe",groups:["014","202","002","UN"],driveSide:"left",callingCodes:["263"]},geometry:{type:"MultiPolygon",coordinates:[[[[30.41902,-15.62269],[30.35574,-15.6513],[29.8317,-15.6126],[29.4437,-15.68702],[29.21955,-15.76589],[29.01298,-15.93805],[28.9243,-15.93987],[28.8501,-16.04537],[28.81454,-16.48611],[28.76199,-16.51575],[28.73725,-16.5528],[27.83141,-16.96274],[27.62795,-17.24365],[27.61377,-17.34378],[27.30736,-17.60487],[27.14196,-17.81398],[26.89926,-17.98756],[26.74314,-18.0199],[26.68403,-18.07411],[26.55918,-17.99638],[26.21601,-17.88608],[26.0908,-17.93021],[26.08925,-17.98168],[25.85892,-17.97726],[25.85738,-17.91403],[25.6827,-17.81987],[25.51646,-17.86232],[25.26433,-17.79571],[25.23909,-17.90832],[25.31799,-18.07091],[25.39972,-18.12691],[25.53465,-18.39041],[25.68859,-18.56165],[25.79217,-18.6355],[25.82353,-18.82808],[25.94326,-18.90362],[25.99837,-19.02943],[25.96226,-19.08152],[26.17227,-19.53709],[26.72246,-19.92707],[27.21278,-20.08244],[27.29831,-20.28935],[27.28865,-20.49873],[27.69361,-20.48531],[27.72972,-20.51735],[27.69171,-21.08409],[27.91407,-21.31621],[28.01669,-21.57624],[28.29416,-21.59037],[28.49942,-21.66634],[28.58114,-21.63455],[29.07763,-21.81877],[29.04023,-21.85864],[29.02191,-21.90647],[29.02191,-21.95665],[29.04108,-22.00563],[29.08495,-22.04867],[29.14501,-22.07275],[29.1974,-22.07472],[29.24648,-22.05967],[29.3533,-22.18363],[29.37703,-22.19581],[29.64609,-22.12917],[29.76848,-22.14128],[29.92242,-22.19408],[30.13147,-22.30841],[30.2265,-22.2961],[30.28351,-22.35587],[30.38614,-22.34533],[30.48686,-22.31368],[30.6294,-22.32599],[30.86696,-22.28907],[31.08932,-22.34884],[31.16344,-22.32599],[31.30611,-22.422],[31.38336,-22.36919],[32.41234,-21.31246],[32.48236,-21.32873],[32.37115,-21.133],[32.51644,-20.91929],[32.48122,-20.63319],[32.55167,-20.56312],[32.66174,-20.56106],[32.85987,-20.27841],[32.85987,-20.16686],[32.93032,-20.03868],[33.01178,-20.02007],[33.06461,-19.77787],[32.95013,-19.67219],[32.84666,-19.68462],[32.84446,-19.48343],[32.78282,-19.47513],[32.77966,-19.36098],[32.85107,-19.29238],[32.87088,-19.09279],[32.84006,-19.0262],[32.72118,-19.02204],[32.69917,-18.94293],[32.73439,-18.92628],[32.70137,-18.84712],[32.82465,-18.77419],[32.9017,-18.7992],[32.95013,-18.69079],[32.88629,-18.58023],[32.88629,-18.51344],[33.02278,-18.4696],[33.03159,-18.35054],[32.94133,-17.99705],[33.0492,-17.60298],[32.98536,-17.55891],[32.96554,-17.48964],[33.0426,-17.3468],[33.00517,-17.30477],[32.96554,-17.11971],[32.84113,-16.92259],[32.91051,-16.89446],[32.97655,-16.70689],[32.78943,-16.70267],[32.69917,-16.66893],[32.71017,-16.59932],[32.42838,-16.4727],[32.28529,-16.43892],[32.02772,-16.43892],[31.91324,-16.41569],[31.90223,-16.34388],[31.67988,-16.19595],[31.42451,-16.15154],[31.30563,-16.01193],[31.13171,-15.98019],[30.97761,-16.05848],[30.91597,-15.99924],[30.42568,-15.9962],[30.41902,-15.62269]]]]}}]},rj=tj,Gh={},cn={},nj=/(?=(?!^(and|the|of|el|la|de)$))(\b(and|the|of|el|la|de)\b)|[-_ .,'()&[\]/]/gi;function tS(e){let t=e||"";return t.charAt(0)==="."?t.toUpperCase():t.replace(nj,"").toUpperCase()}var js=["subterritory","territory","subcountryGroup","country","sharedLandform","intermediateRegion","subregion","region","subunion","union","unitedNations","world"];ij(rj);function ij(e){let t=["iso1A2","iso1A3","m49","wikidata","emojiFlag","ccTLD","nameEn"],r=[];for(let m of e.features){let v=m.properties;v.id=v.iso1A2||v.m49||v.wikidata,a(m),o(m),s(m),l(m),i(m),g(m),b(m),m.geometry&&r.push(m)}for(let m of e.features)m.properties.groups=m.properties.groups.map(v=>cn[v].properties.id),x(m);for(let m of e.features)c(m),f(m),p(m),d(m),u(m);for(let m of e.features)m.properties.groups.sort((v,y)=>js.indexOf(cn[v].properties.level)-js.indexOf(cn[y].properties.level)),m.properties.members&&m.properties.members.sort((v,y)=>{let _=js.indexOf(cn[v].properties.level)-js.indexOf(cn[y].properties.level);return _===0?e.features.indexOf(cn[v])-e.features.indexOf(cn[y]):_});Gh=(0,eS.default)({type:"FeatureCollection",features:r});function i(m){let v=m.properties;v.groups||(v.groups=[]),m.geometry&&v.country&&v.groups.push(v.country),v.m49!=="001"&&v.groups.push("001")}function a(m){let v=m.properties;!v.m49&&v.iso1N3&&(v.m49=v.iso1N3)}function o(m){let v=m.properties;v.level!=="unitedNations"&&!v.ccTLD&&v.iso1A2&&(v.ccTLD="."+v.iso1A2.toLowerCase())}function s(m){let v=m.properties;!v.isoStatus&&v.iso1A2&&(v.isoStatus="official")}function l(m){let v=m.properties;v.level||(v.country?!v.iso1A2||v.isoStatus==="official"?v.level="territory":v.level="subterritory":v.level="country")}function u(m){let v=m.properties;if(m.geometry||!v.members)return;let y=js.indexOf(v.level),_=[];v.members.forEach((w,A)=>{let E=cn[w].properties.groups.filter(k=>k!==m.properties.id&&yE.indexOf(k)!==-1)}),v.groups=v.groups.concat(_.filter(w=>v.groups.indexOf(w)===-1));for(let w of _){let A=cn[w];A.properties.members.indexOf(v.id)===-1&&A.properties.members.push(v.id)}}function c(m){let v=m.properties;if(m.geometry)v.roadSpeedUnit||(v.roadSpeedUnit="km/h");else if(v.members){let y=Array.from(new Set(v.members.map(_=>{let w=cn[_];if(w.geometry)return w.properties.roadSpeedUnit||"km/h"}).filter(Boolean)));y.length===1&&(v.roadSpeedUnit=y[0])}}function f(m){let v=m.properties;if(m.geometry)v.roadHeightUnit||(v.roadHeightUnit="m");else if(v.members){let y=Array.from(new Set(v.members.map(_=>{let w=cn[_];if(w.geometry)return w.properties.roadHeightUnit||"m"}).filter(Boolean)));y.length===1&&(v.roadHeightUnit=y[0])}}function p(m){let v=m.properties;if(m.geometry)v.driveSide||(v.driveSide="right");else if(v.members){let y=Array.from(new Set(v.members.map(_=>{let w=cn[_];if(w.geometry)return w.properties.driveSide||"right"}).filter(Boolean)));y.length===1&&(v.driveSide=y[0])}}function d(m){let v=m.properties;!m.geometry&&v.members&&(v.callingCodes=Array.from(new Set(v.members.reduce((y,_)=>{let w=cn[_];return w.geometry&&w.properties.callingCodes?y.concat(w.properties.callingCodes):y},[]))))}function g(m){if(!m.properties.iso1A2)return;let v=m.properties.iso1A2.replace(/./g,function(y){return String.fromCodePoint(y.charCodeAt(0)+127397)});m.properties.emojiFlag=v}function x(m){for(let v of m.properties.groups){let y=cn[v];y.properties.members||(y.properties.members=[]),y.properties.members.push(m.properties.id)}}function b(m){let v=[];for(let y of t){let _=m.properties[y];_&&v.push(_)}for(let y of m.properties.aliases||[])v.push(y);for(let y of v){let _=tS(y);cn[_]=m}}}function aj(e){return Array.isArray(e)?e:e.coordinates?e.coordinates:e.geometry.coordinates}function rS(e){let t=aj(e),r=Gh(t);return r?cn[r.id]:null}function oj(e){let t=rS(e);if(!t)return null;let r=t.properties.country||t.properties.iso1A2;return cn[r]||null}var nS={level:void 0,maxLevel:void 0,withProp:void 0};function sj(e,t){let r=t.level||"country",n=t.maxLevel||"world",i=t.withProp,a=js.indexOf(r);if(a===-1)return null;let o=js.indexOf(n);if(o===-1||o{let c=js.indexOf(u.properties.level);return(u.properties.level===r||c>a&&c<=o)&&(!i||u.properties[i])?u:!1})||null}function jh(e){let t;return typeof e=="number"?(t=e.toString(),t.length===1?t="00"+t:t.length===2&&(t="0"+t)):t=tS(e),cn[t]||null}function lj(e){return Gh.bbox(e).map(t=>cn[t.id])}function Hh(e){return typeof e=="object"?rS(e):jh(e)}function Q3(e,t=nS){return typeof e=="object"?sj(e,t):jh(e)}function el(e,t=nS){t.withProp="iso1A2";let r=Q3(e,t);return r&&r.properties.iso1A2||null}function uj(e,t){return aS(e,!1).map(n=>n.properties[t]).filter(Boolean)}function iS(e){return uj(e,"iso1A2")}function aS(e,t){let r;if(Array.isArray(e)&&e.length===4)r=lj(e);else{let i=Hh(e);r=i?[i]:[]}if(!r.length)return[];let n;!t||typeof e=="object"?n=r.slice():n=[];for(let i of r){let a=i.properties;for(let o of a.groups){let s=cn[o];n.indexOf(s)===-1&&n.push(s)}}return n}function cj(e,t){let r=jh(e);if(!r)return[];let n=[];t||n.push(r);let i=r.properties;for(let a of i.members||[])n.push(cn[a]);return n}function oS(e){var n;let t=cj(e,!1);if(t.length===0)return null;let r=[];for(let i of t)((n=i.geometry)==null?void 0:n.type)==="MultiPolygon"&&i.geometry.coordinates&&(r=r.concat(i.geometry.coordinates));return{type:"Feature",properties:t[0].properties,geometry:{type:"MultiPolygon",coordinates:r}}}function sS(e){let t=Hh(e);return t&&t.properties.roadSpeedUnit||null}function lS(e){let t=Hh(e);return t&&t.properties.roadHeightUnit||null}var Of=e=>()=>e;var X3=e=>{let t=e?(r,n)=>n.minus(r).abs().isLessThanOrEqualTo(e):Of(!1);return(r,n)=>t(r,n)?0:r.comparedTo(n)};function uS(e){let t=e?(r,n,i,a,o)=>r.exponentiatedBy(2).isLessThanOrEqualTo(a.minus(n).exponentiatedBy(2).plus(o.minus(i).exponentiatedBy(2)).times(e)):Of(!1);return(r,n,i)=>{let a=r.x,o=r.y,s=i.x,l=i.y,u=o.minus(l).times(n.x.minus(s)).minus(a.minus(s).times(n.y.minus(l)));return t(u,a,o,s,l)?0:u.comparedTo(0)}}var fj=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Wh=Math.ceil,Va=Math.floor,Ji="[BigNumber Error] ",cS=Ji+"Number primitive has more than 15 significant digits: ",So=1e14,Ot=14,Qh=9007199254740991,Xh=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],tl=1e7,Hn=1e9;function fS(e){var t,r,n,i=v.prototype={constructor:v,toString:null,valueOf:null},a=new v(1),o=20,s=4,l=-7,u=21,c=-1e7,f=1e7,p=!1,d=1,g=0,x={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},b="0123456789abcdefghijklmnopqrstuvwxyz",m=!0;function v(E,k){var S,D,P,O,T,M,R,N,U=this;if(!(U instanceof v))return new v(E,k);if(k==null){if(E&&E._isBigNumber===!0){U.s=E.s,!E.c||E.e>f?U.c=U.e=null:E.e=10;T/=10,O++);O>f?U.c=U.e=null:(U.e=O,U.c=[E]);return}N=String(E)}else{if(!fj.test(N=String(E)))return n(U,N,M);U.s=N.charCodeAt(0)==45?(N=N.slice(1),-1):1}(O=N.indexOf("."))>-1&&(N=N.replace(".","")),(T=N.search(/e/i))>0?(O<0&&(O=T),O+=+N.slice(T+1),N=N.substring(0,T)):O<0&&(O=N.length)}else{if(tn(k,2,b.length,"Base"),k==10&&m)return U=new v(E),A(U,o+U.e+1,s);if(N=String(E),M=typeof E=="number"){if(E*0!=0)return n(U,N,M,k);if(U.s=1/E<0?(N=N.slice(1),-1):1,v.DEBUG&&N.replace(/^0\.0*|\./,"").length>15)throw Error(cS+E)}else U.s=N.charCodeAt(0)===45?(N=N.slice(1),-1):1;for(S=b.slice(0,k),O=T=0,R=N.length;TO){O=R;continue}}else if(!P&&(N==N.toUpperCase()&&(N=N.toLowerCase())||N==N.toLowerCase()&&(N=N.toUpperCase()))){P=!0,T=-1,O=0;continue}return n(U,String(E),M,k)}M=!1,N=r(N,k,10,U.s),(O=N.indexOf("."))>-1?N=N.replace(".",""):O=N.length}for(T=0;N.charCodeAt(T)===48;T++);for(R=N.length;N.charCodeAt(--R)===48;);if(N=N.slice(T,++R)){if(R-=T,M&&v.DEBUG&&R>15&&(E>Qh||E!==Va(E)))throw Error(cS+U.s*E);if((O=O-T-1)>f)U.c=U.e=null;else if(O=-Hn&&P<=Hn&&P===Va(P)){if(D[0]===0){if(P===0&&D.length===1)return!0;break e}if(k=(P+1)%Ot,k<1&&(k+=Ot),String(D[0]).length==k){for(k=0;k=So||S!==Va(S))break e;if(S!==0)return!0}}}else if(D===null&&P===null&&(O===null||O===1||O===-1))return!0;throw Error(Ji+"Invalid BigNumber: "+E)},v.maximum=v.max=function(){return _(arguments,-1)},v.minimum=v.min=function(){return _(arguments,1)},v.random=function(){var E=9007199254740992,k=Math.random()*E&2097151?function(){return Va(Math.random()*E)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(S){var D,P,O,T,M,R=0,N=[],U=new v(a);if(S==null?S=o:tn(S,0,Hn),T=Wh(S/Ot),p)if(crypto.getRandomValues){for(D=crypto.getRandomValues(new Uint32Array(T*=2));R>>11),M>=9e15?(P=crypto.getRandomValues(new Uint32Array(2)),D[R]=P[0],D[R+1]=P[1]):(N.push(M%1e14),R+=2);R=T/2}else if(crypto.randomBytes){for(D=crypto.randomBytes(T*=7);R=9e15?crypto.randomBytes(7).copy(D,R):(N.push(M%1e14),R+=7);R=T/7}else throw p=!1,Error(Ji+"crypto unavailable");if(!p)for(;R=10;M/=10,R++);RP-1&&(M[T+1]==null&&(M[T+1]=0),M[T+1]+=M[T]/P|0,M[T]%=P)}return M.reverse()}return function(S,D,P,O,T){var M,R,N,U,B,$,z,V,H=S.indexOf("."),Z=o,oe=s;for(H>=0&&(U=g,g=0,S=S.replace(".",""),V=new v(D),$=V.pow(S.length-H),g=U,V.c=k(Hs(qa($.c),$.e,"0"),10,P,E),V.e=V.c.length),z=k(S,D,P,T?(M=b,E):(M=E,b)),N=U=z.length;z[--U]==0;z.pop());if(!z[0])return M.charAt(0);if(H<0?--N:($.c=z,$.e=N,$.s=O,$=t($,V,Z,oe,P),z=$.c,B=$.r,N=$.e),R=N+Z+1,H=z[R],U=P/2,B=B||R<0||z[R+1]!=null,B=oe<4?(H!=null||B)&&(oe==0||oe==($.s<0?3:2)):H>U||H==U&&(oe==4||B||oe==6&&z[R-1]&1||oe==($.s<0?8:7)),R<1||!z[0])S=B?Hs(M.charAt(1),-Z,M.charAt(0)):M.charAt(0);else{if(z.length=R,B)for(--P;++z[--R]>P;)z[R]=0,R||(++N,z=[1].concat(z));for(U=z.length;!z[--U];);for(H=0,S="";H<=U;S+=M.charAt(z[H++]));S=Hs(S,N,M.charAt(0))}return S}}(),t=function(){function E(D,P,O){var T,M,R,N,U=0,B=D.length,$=P%tl,z=P/tl|0;for(D=D.slice();B--;)R=D[B]%tl,N=D[B]/tl|0,T=z*R+N*$,M=$*R+T%tl*tl+U,U=(M/O|0)+(T/tl|0)+z*N,D[B]=M%O;return U&&(D=[U].concat(D)),D}function k(D,P,O,T){var M,R;if(O!=T)R=O>T?1:-1;else for(M=R=0;MP[M]?1:-1;break}return R}function S(D,P,O,T){for(var M=0;O--;)D[O]-=M,M=D[O]1;D.splice(0,1));}return function(D,P,O,T,M){var R,N,U,B,$,z,V,H,Z,oe,pe,ne,ge,ve,Oe,tt,Ce,te=D.s==P.s?1:-1,le=D.c,Se=P.c;if(!le||!le[0]||!Se||!Se[0])return new v(!D.s||!P.s||(le?Se&&le[0]==Se[0]:!Se)?NaN:le&&le[0]==0||!Se?te*0:te/0);for(H=new v(te),Z=H.c=[],N=D.e-P.e,te=O+N+1,M||(M=So,N=Ga(D.e/Ot)-Ga(P.e/Ot),te=te/Ot|0),U=0;Se[U]==(le[U]||0);U++);if(Se[U]>(le[U]||0)&&N--,te<0)Z.push(1),B=!0;else{for(ve=le.length,tt=Se.length,U=0,te+=2,$=Va(M/(Se[0]+1)),$>1&&(Se=E(Se,$,M),le=E(le,$,M),tt=Se.length,ve=le.length),ge=tt,oe=le.slice(0,tt),pe=oe.length;pe=M/2&&Oe++;do{if($=0,R=k(Se,oe,tt,pe),R<0){if(ne=oe[0],tt!=pe&&(ne=ne*M+(oe[1]||0)),$=Va(ne/Oe),$>1)for($>=M&&($=M-1),z=E(Se,$,M),V=z.length,pe=oe.length;k(z,oe,V,pe)==1;)$--,S(z,tt=10;te/=10,U++);A(H,O+(H.e=U+N*Ot-1)+1,T,B)}else H.e=N,H.r=+B;return H}}();function y(E,k,S,D){var P,O,T,M,R;if(S==null?S=s:tn(S,0,8),!E.c)return E.toString();if(P=E.c[0],T=E.e,k==null)R=qa(E.c),R=D==1||D==2&&(T<=l||T>=u)?Rf(R,T):Hs(R,T,"0");else if(E=A(new v(E),k,S),O=E.e,R=qa(E.c),M=R.length,D==1||D==2&&(k<=O||O<=l)){for(;MM){if(--k>0)for(R+=".";k--;R+="0");}else if(k+=O-M,k>0)for(O+1==M&&(R+=".");k--;R+="0");return E.s<0&&P?"-"+R:R}function _(E,k){for(var S,D,P=1,O=new v(E[0]);P=10;P/=10,D++);return(S=D+S*Ot-1)>f?E.c=E.e=null:S=10;M/=10,P++);if(O=k-P,O<0)O+=Ot,T=k,R=B[N=0],U=Va(R/$[P-T-1]%10);else if(N=Wh((O+1)/Ot),N>=B.length)if(D){for(;B.length<=N;B.push(0));R=U=0,P=1,O%=Ot,T=O-Ot+1}else break e;else{for(R=M=B[N],P=1;M>=10;M/=10,P++);O%=Ot,T=O-Ot+P,U=T<0?0:Va(R/$[P-T-1]%10)}if(D=D||k<0||B[N+1]!=null||(T<0?R:R%$[P-T-1]),D=S<4?(U||D)&&(S==0||S==(E.s<0?3:2)):U>5||U==5&&(S==4||D||S==6&&(O>0?T>0?R/$[P-T]:0:B[N-1])%10&1||S==(E.s<0?8:7)),k<1||!B[0])return B.length=0,D?(k-=E.e+1,B[0]=$[(Ot-k%Ot)%Ot],E.e=-k||0):B[0]=E.e=0,E;if(O==0?(B.length=N,M=1,N--):(B.length=N+1,M=$[Ot-O],B[N]=T>0?Va(R/$[P-T]%$[T])*M:0),D)for(;;)if(N==0){for(O=1,T=B[0];T>=10;T/=10,O++);for(T=B[0]+=M,M=1;T>=10;T/=10,M++);O!=M&&(E.e++,B[0]==So&&(B[0]=1));break}else{if(B[N]+=M,B[N]!=So)break;B[N--]=0,M=1}for(O=B.length;B[--O]===0;B.pop());}E.e>f?E.c=E.e=null:E.e=u?Rf(k,S):Hs(k,S,"0"),E.s<0?"-"+k:k)}return i.absoluteValue=i.abs=function(){var E=new v(this);return E.s<0&&(E.s=1),E},i.comparedTo=function(E,k){return a0(this,new v(E,k))},i.decimalPlaces=i.dp=function(E,k){var S,D,P,O=this;if(E!=null)return tn(E,0,Hn),k==null?k=s:tn(k,0,8),A(new v(O),E+O.e+1,k);if(!(S=O.c))return null;if(D=((P=S.length-1)-Ga(this.e/Ot))*Ot,P=S[P])for(;P%10==0;P/=10,D--);return D<0&&(D=0),D},i.dividedBy=i.div=function(E,k){return t(this,new v(E,k),o,s)},i.dividedToIntegerBy=i.idiv=function(E,k){return t(this,new v(E,k),0,1)},i.exponentiatedBy=i.pow=function(E,k){var S,D,P,O,T,M,R,N,U,B=this;if(E=new v(E),E.c&&!E.isInteger())throw Error(Ji+"Exponent not an integer: "+I(E));if(k!=null&&(k=new v(k)),M=E.e>14,!B.c||!B.c[0]||B.c[0]==1&&!B.e&&B.c.length==1||!E.c||!E.c[0])return U=new v(Math.pow(+I(B),M?E.s*(2-Lf(E)):+I(E))),k?U.mod(k):U;if(R=E.s<0,k){if(k.c?!k.c[0]:!k.s)return new v(NaN);D=!R&&B.isInteger()&&k.isInteger(),D&&(B=B.mod(k))}else{if(E.e>9&&(B.e>0||B.e<-1||(B.e==0?B.c[0]>1||M&&B.c[1]>=24e7:B.c[0]<8e13||M&&B.c[0]<=9999975e7)))return O=B.s<0&&Lf(E)?-0:0,B.e>-1&&(O=1/O),new v(R?1/O:O);g&&(O=Wh(g/Ot+2))}for(M?(S=new v(.5),R&&(E.s=1),N=Lf(E)):(P=Math.abs(+I(E)),N=P%2),U=new v(a);;){if(N){if(U=U.times(B),!U.c)break;O?U.c.length>O&&(U.c.length=O):D&&(U=U.mod(k))}if(P){if(P=Va(P/2),P===0)break;N=P%2}else if(E=E.times(S),A(E,E.e+1,1),E.e>14)N=Lf(E);else{if(P=+I(E),P===0)break;N=P%2}B=B.times(B),O?B.c&&B.c.length>O&&(B.c.length=O):D&&(B=B.mod(k))}return D?U:(R&&(U=a.div(U)),k?U.mod(k):O?A(U,g,s,T):U)},i.integerValue=function(E){var k=new v(this);return E==null?E=s:tn(E,0,8),A(k,k.e+1,E)},i.isEqualTo=i.eq=function(E,k){return a0(this,new v(E,k))===0},i.isFinite=function(){return!!this.c},i.isGreaterThan=i.gt=function(E,k){return a0(this,new v(E,k))>0},i.isGreaterThanOrEqualTo=i.gte=function(E,k){return(k=a0(this,new v(E,k)))===1||k===0},i.isInteger=function(){return!!this.c&&Ga(this.e/Ot)>this.c.length-2},i.isLessThan=i.lt=function(E,k){return a0(this,new v(E,k))<0},i.isLessThanOrEqualTo=i.lte=function(E,k){return(k=a0(this,new v(E,k)))===-1||k===0},i.isNaN=function(){return!this.s},i.isNegative=function(){return this.s<0},i.isPositive=function(){return this.s>0},i.isZero=function(){return!!this.c&&this.c[0]==0},i.minus=function(E,k){var S,D,P,O,T=this,M=T.s;if(E=new v(E,k),k=E.s,!M||!k)return new v(NaN);if(M!=k)return E.s=-k,T.plus(E);var R=T.e/Ot,N=E.e/Ot,U=T.c,B=E.c;if(!R||!N){if(!U||!B)return U?(E.s=-k,E):new v(B?T:NaN);if(!U[0]||!B[0])return B[0]?(E.s=-k,E):new v(U[0]?T:s==3?-0:0)}if(R=Ga(R),N=Ga(N),U=U.slice(),M=R-N){for((O=M<0)?(M=-M,P=U):(N=R,P=B),P.reverse(),k=M;k--;P.push(0));P.reverse()}else for(D=(O=(M=U.length)<(k=B.length))?M:k,M=k=0;k0)for(;k--;U[S++]=0);for(k=So-1;D>M;){if(U[--D]=0;){for(S=0,$=ne[P]%Z,z=ne[P]/Z|0,T=R,O=P+T;O>P;)N=pe[--T]%Z,U=pe[T]/Z|0,M=z*N+U*$,N=$*N+M%Z*Z+V[O]+S,S=(N/H|0)+(M/Z|0)+z*U,V[O--]=N%H;V[O]=S}return S?++D:V.splice(0,1),w(E,V,D)},i.negated=function(){var E=new v(this);return E.s=-E.s||null,E},i.plus=function(E,k){var S,D=this,P=D.s;if(E=new v(E,k),k=E.s,!P||!k)return new v(NaN);if(P!=k)return E.s=-k,D.minus(E);var O=D.e/Ot,T=E.e/Ot,M=D.c,R=E.c;if(!O||!T){if(!M||!R)return new v(P/0);if(!M[0]||!R[0])return R[0]?E:new v(M[0]?D:P*0)}if(O=Ga(O),T=Ga(T),M=M.slice(),P=O-T){for(P>0?(T=O,S=R):(P=-P,S=M),S.reverse();P--;S.push(0));S.reverse()}for(P=M.length,k=R.length,P-k<0&&(S=R,R=M,M=S,k=P),P=0;k;)P=(M[--k]=M[k]+R[k]+P)/So|0,M[k]=So===M[k]?0:M[k]%So;return P&&(M=[P].concat(M),++T),w(E,M,T)},i.precision=i.sd=function(E,k){var S,D,P,O=this;if(E!=null&&E!==!!E)return tn(E,1,Hn),k==null?k=s:tn(k,0,8),A(new v(O),E,k);if(!(S=O.c))return null;if(P=S.length-1,D=P*Ot+1,P=S[P]){for(;P%10==0;P/=10,D--);for(P=S[0];P>=10;P/=10,D++);}return E&&O.e+1>D&&(D=O.e+1),D},i.shiftedBy=function(E){return tn(E,-Qh,Qh),this.times("1e"+E)},i.squareRoot=i.sqrt=function(){var E,k,S,D,P,O=this,T=O.c,M=O.s,R=O.e,N=o+4,U=new v("0.5");if(M!==1||!T||!T[0])return new v(!M||M<0&&(!T||T[0])?NaN:T?O:1/0);if(M=Math.sqrt(+I(O)),M==0||M==1/0?(k=qa(T),(k.length+R)%2==0&&(k+="0"),M=Math.sqrt(+k),R=Ga((R+1)/2)-(R<0||R%2),M==1/0?k="5e"+R:(k=M.toExponential(),k=k.slice(0,k.indexOf("e")+1)+R),S=new v(k)):S=new v(M+""),S.c[0]){for(R=S.e,M=R+N,M<3&&(M=0);;)if(P=S,S=U.times(P.plus(t(O,P,N,1))),qa(P.c).slice(0,M)===(k=qa(S.c)).slice(0,M))if(S.e0&&V>0){for(O=V%M||M,U=z.substr(0,O);O0&&(U+=N+z.slice(O)),$&&(U="-"+U)}D=B?U+(S.decimalSeparator||"")+((R=+S.fractionGroupSize)?B.replace(new RegExp("\\d{"+R+"}\\B","g"),"$&"+(S.fractionGroupSeparator||"")):B):U}return(S.prefix||"")+D+(S.suffix||"")},i.toFraction=function(E){var k,S,D,P,O,T,M,R,N,U,B,$,z=this,V=z.c;if(E!=null&&(M=new v(E),!M.isInteger()&&(M.c||M.s!==1)||M.lt(a)))throw Error(Ji+"Argument "+(M.isInteger()?"out of range: ":"not an integer: ")+I(M));if(!V)return new v(z);for(k=new v(a),N=S=new v(a),D=R=new v(a),$=qa(V),O=k.e=$.length-z.e-1,k.c[0]=Xh[(T=O%Ot)<0?Ot+T:T],E=!E||M.comparedTo(k)>0?O>0?k:N:M,T=f,f=1/0,M=new v($),R.c[0]=0;U=t(M,k,0,1),P=S.plus(U.times(D)),P.comparedTo(E)!=1;)S=D,D=P,N=R.plus(U.times(P=N)),R=P,k=M.minus(U.times(P=k)),M=P;return P=t(E.minus(S),D,0,1),R=R.plus(P.times(N)),S=S.plus(P.times(D)),R.s=N.s=z.s,O=O*2,B=t(N,D,O,s).minus(z).abs().comparedTo(t(R,S,O,s).minus(z).abs())<1?[N,D]:[R,S],f=T,B},i.toNumber=function(){return+I(this)},i.toPrecision=function(E,k){return E!=null&&tn(E,1,Hn),y(this,E,k,2)},i.toString=function(E){var k,S=this,D=S.s,P=S.e;return P===null?D?(k="Infinity",D<0&&(k="-"+k)):k="NaN":(E==null?k=P<=l||P>=u?Rf(qa(S.c),P):Hs(qa(S.c),P,"0"):E===10&&m?(S=A(new v(S),o+P+1,s),k=Hs(qa(S.c),S.e,"0")):(tn(E,2,b.length,"Base"),k=r(Hs(qa(S.c),P,"0"),10,E,D,!0)),D<0&&S.c[0]&&(k="-"+k)),k},i.valueOf=i.toJSON=function(){return I(this)},i._isBigNumber=!0,i[Symbol.toStringTag]="BigNumber",i[Symbol.for("nodejs.util.inspect.custom")]=i.valueOf,e!=null&&v.set(e),v}function Ga(e){var t=e|0;return e>0||e===t?t:t-1}function qa(e){for(var t,r,n=1,i=e.length,a=e[0]+"";nu^r?1:-1;for(s=(l=i.length)<(u=a.length)?l:u,o=0;oa[o]^r?1:-1;return l==u?0:l>u^r?1:-1}function tn(e,t,r,n){if(er||e!==Va(e))throw Error(Ji+(n||"Argument")+(typeof e=="number"?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Lf(e){var t=e.c.length-1;return Ga(e.e/Ot)==t&&e.c[t]%2!=0}function Rf(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function Hs(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(n=e.length,++t>n){for(i=r,t-=n;--t;i+=r);e+=i}else t0){let c=s.left;if(c==null||(u=l(c.key,t),u>0&&(s.left=c.right,c.right=s,s=c,c=s.left,c==null)))break;n==null?i=s:n.left=s,n=s,s=c}else if(u<0){let c=s.right;if(c==null||(u=l(c.key,t),u<0&&(s.right=c.left,c.left=s,s=c,c=s.right,c==null)))break;a==null?o=s:a.right=s,a=s,s=c}else break;return a!=null&&(a.right=s.left,s.left=o),n!=null&&(n.left=s.right,s.right=i),this.root!==s&&(this.root=s,this.splayCount++),u}splayMin(t){let r=t,n=r.left;for(;n!=null;){let i=n;r.left=i.right,i.right=r,r=i,n=r.left}return r}splayMax(t){let r=t,n=r.right;for(;n!=null;){let i=n;r.right=i.left,i.left=r,r=i,n=r.right}return r}_delete(t){if(this.root==null||this.splay(t)!=0)return null;let n=this.root,i=n,a=n.left;if(this.size--,a==null)this.root=n.right;else{let o=n.right;n=this.splayMax(a),n.right=o,this.root=n}return this.modificationCount++,i}addNewRoot(t,r){this.size++,this.modificationCount++;let n=this.root;if(n==null){this.root=t;return}r<0?(t.left=n,t.right=n.right,n.right=null):(t.right=n,t.left=n.left,n.left=null),this.root=t}_first(){let t=this.root;return t==null?null:(this.root=this.splayMin(t),this.root)}_last(){let t=this.root;return t==null?null:(this.root=this.splayMax(t),this.root)}clear(){this.root=null,this.size=0,this.modificationCount++}has(t){return this.validKey(t)&&this.splay(t)==0}defaultCompare(){return(t,r)=>tr?1:0}wrap(){return{getRoot:()=>this.root,setRoot:t=>{this.root=t},getSize:()=>this.size,getModificationCount:()=>this.modificationCount,getSplayCount:()=>this.splayCount,setSplayCount:t=>{this.splayCount=t},splay:t=>this.splay(t),has:t=>this.has(t)}}};var dj,J4=class J4 extends Kh{constructor(r,n){super();Je(this,"root",null);Je(this,"compare");Je(this,"validKey");Je(this,dj,"[object Set]");this.compare=r!=null?r:this.defaultCompare(),this.validKey=n!=null?n:i=>i!=null&&i!=null}delete(r){return this.validKey(r)?this._delete(r)!=null:!1}deleteAll(r){for(let n of r)this.delete(n)}forEach(r){let n=this[Symbol.iterator](),i;for(;i=n.next(),!i.done;)r(i.value,i.value,this)}add(r){let n=this.splay(r);return n!=0&&this.addNewRoot(new o0(r),n),this}addAndReturn(r){let n=this.splay(r);return n!=0&&this.addNewRoot(new o0(r),n),this.root.key}addAll(r){for(let n of r)this.add(n)}isEmpty(){return this.root==null}isNotEmpty(){return this.root!=null}single(){if(this.size==0)throw"Bad state: No element";if(this.size>1)throw"Bad state: Too many element";return this.root.key}first(){if(this.size==0)throw"Bad state: No element";return this._first().key}last(){if(this.size==0)throw"Bad state: No element";return this._last().key}lastBefore(r){if(r==null)throw"Invalid arguments(s)";if(this.root==null)return null;if(this.splay(r)<0)return this.root.key;let i=this.root.left;if(i==null)return null;let a=i.right;for(;a!=null;)i=a,a=i.right;return i.key}firstAfter(r){if(r==null)throw"Invalid arguments(s)";if(this.root==null)return null;if(this.splay(r)>0)return this.root.key;let i=this.root.right;if(i==null)return null;let a=i.left;for(;a!=null;)i=a,a=i.left;return i.key}retainAll(r){let n=new J4(this.compare,this.validKey),i=this.modificationCount;for(let a of r){if(i!=this.modificationCount)throw"Concurrent modification during iteration.";this.validKey(a)&&this.splay(a)==0&&n.add(this.root.key)}n.size!=this.size&&(this.root=n.root,this.size=n.size,this.modificationCount++)}lookup(r){return!this.validKey(r)||this.splay(r)!=0?null:this.root.key}intersection(r){let n=new J4(this.compare,this.validKey);for(let i of this)r.has(i)&&n.add(i);return n}difference(r){let n=new J4(this.compare,this.validKey);for(let i of this)r.has(i)||n.add(i);return n}union(r){let n=this.clone();return n.addAll(r),n}clone(){let r=new J4(this.compare,this.validKey);return r.size=this.size,r.root=this.copyNode(this.root),r}copyNode(r){if(r==null)return null;function n(a,o){let s,l;do{if(s=a.left,l=a.right,s!=null){let u=new o0(s.key);o.left=u,n(s,u)}if(l!=null){let u=new o0(l.key);o.right=u,a=l,o=u}}while(l!=null)}let i=new o0(r.key);return n(r,i),i}toSet(){return this.clone()}entries(){return new Jh(this.wrap())}keys(){return this[Symbol.iterator]()}values(){return this[Symbol.iterator]()}[Symbol.iterator](){return new Zh(this.wrap())}};dj=Symbol.toStringTag;var Ws=J4,Bf=class{constructor(t){Je(this,"tree");Je(this,"path",new Array);Je(this,"modificationCount",null);Je(this,"splayCount");this.tree=t,this.splayCount=t.getSplayCount()}[Symbol.iterator](){return this}next(){return this.moveNext()?{done:!1,value:this.current()}:{done:!0,value:null}}current(){if(!this.path.length)return null;let t=this.path[this.path.length-1];return this.getValue(t)}rebuildPath(t){this.path.splice(0,this.path.length),this.tree.splay(t),this.path.push(this.tree.getRoot()),this.splayCount=this.tree.getSplayCount()}findLeftMostDescendent(t){for(;t!=null;)this.path.push(t),t=t.left}moveNext(){if(this.modificationCount!=this.tree.getModificationCount()){if(this.modificationCount==null){this.modificationCount=this.tree.getModificationCount();let n=this.tree.getRoot();for(;n!=null;)this.path.push(n),n=n.left;return this.path.length>0}throw"Concurrent modification during iteration."}if(!this.path.length)return!1;this.splayCount!=this.tree.getSplayCount()&&this.rebuildPath(this.path[this.path.length-1].key);let t=this.path[this.path.length-1],r=t.right;if(r!=null){for(;r!=null;)this.path.push(r),r=r.left;return!0}for(this.path.pop();this.path.length&&this.path[this.path.length-1].right===t;)t=this.path.pop();return this.path.length>0}},Zh=class extends Bf{getValue(t){return t.key}},Jh=class extends Bf{getValue(t){return[t.key,t.key]}};var pS=e=>e;var dS=e=>{if(e){let t=new Ws(X3(e)),r=new Ws(X3(e)),n=(a,o)=>o.addAndReturn(a),i=a=>({x:n(a.x,t),y:n(a.y,r)});return i({x:new ja(0),y:new ja(0)}),i}return pS};var eg=e=>({set:t=>{ea=eg(t)},reset:()=>eg(e),compare:X3(e),snap:dS(e),orient:uS(e)}),ea=eg();var e2=(e,t)=>e.ll.x.isLessThanOrEqualTo(t.x)&&t.x.isLessThanOrEqualTo(e.ur.x)&&e.ll.y.isLessThanOrEqualTo(t.y)&&t.y.isLessThanOrEqualTo(e.ur.y),Y3=(e,t)=>{if(t.ur.x.isLessThan(e.ll.x)||e.ur.x.isLessThan(t.ll.x)||t.ur.y.isLessThan(e.ll.y)||e.ur.y.isLessThan(t.ll.y))return null;let r=e.ll.x.isLessThan(t.ll.x)?t.ll.x:e.ll.x,n=e.ur.x.isLessThan(t.ur.x)?e.ur.x:t.ur.x,i=e.ll.y.isLessThan(t.ll.y)?t.ll.y:e.ll.y,a=e.ur.y.isLessThan(t.ur.y)?e.ur.y:t.ur.y;return{ll:{x:r,y:i},ur:{x:n,y:a}}};var $f=(e,t)=>e.x.times(t.y).minus(e.y.times(t.x)),gS=(e,t)=>e.x.times(t.x).plus(e.y.times(t.y)),Uf=e=>gS(e,e).sqrt(),vS=(e,t,r)=>{let n={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:r.x.minus(e.x),y:r.y.minus(e.y)};return $f(i,n).div(Uf(i)).div(Uf(n))},yS=(e,t,r)=>{let n={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:r.x.minus(e.x),y:r.y.minus(e.y)};return gS(i,n).div(Uf(i)).div(Uf(n))},mS=(e,t,r)=>t.y.isZero()?null:{x:e.x.plus(t.x.div(t.y).times(r.minus(e.y))),y:r},hS=(e,t,r)=>t.x.isZero()?null:{x:r,y:e.y.plus(t.y.div(t.x).times(r.minus(e.x)))},bS=(e,t,r,n)=>{if(t.x.isZero())return hS(r,n,e.x);if(n.x.isZero())return hS(e,t,r.x);if(t.y.isZero())return mS(r,n,e.y);if(n.y.isZero())return mS(e,t,r.y);let i=$f(t,n);if(i.isZero())return null;let a={x:r.x.minus(e.x),y:r.y.minus(e.y)},o=$f(a,t).div(i),s=$f(a,n).div(i),l=e.x.plus(s.times(t.x)),u=r.x.plus(o.times(n.x)),c=e.y.plus(s.times(t.y)),f=r.y.plus(o.times(n.y)),p=l.plus(u).div(2),d=c.plus(f).div(2);return{x:p,y:d}};var ni=class e{constructor(t,r){Je(this,"point");Je(this,"isLeft");Je(this,"segment");Je(this,"otherSE");Je(this,"consumedBy");t.events===void 0?t.events=[this]:t.events.push(this),this.point=t,this.isLeft=r}static compare(t,r){let n=e.comparePoints(t.point,r.point);return n!==0?n:(t.point!==r.point&&t.link(r),t.isLeft!==r.isLeft?t.isLeft?1:-1:es.compare(t.segment,r.segment))}static comparePoints(t,r){return t.x.isLessThan(r.x)?-1:t.x.isGreaterThan(r.x)?1:t.y.isLessThan(r.y)?-1:t.y.isGreaterThan(r.y)?1:0}link(t){if(t.point===this.point)throw new Error("Tried to link already linked events");let r=t.point.events;for(let n=0,i=r.length;n{let a=i.otherSE;r.set(i,{sine:vS(this.point,t.point,a.point),cosine:yS(this.point,t.point,a.point)})};return(i,a)=>{r.has(i)||n(i),r.has(a)||n(a);let{sine:o,cosine:s}=r.get(i),{sine:l,cosine:u}=r.get(a);return o.isGreaterThanOrEqualTo(0)&&l.isGreaterThanOrEqualTo(0)?s.isLessThan(u)?1:s.isGreaterThan(u)?-1:0:o.isLessThan(0)&&l.isLessThan(0)?s.isLessThan(u)?-1:s.isGreaterThan(u)?1:0:l.isLessThan(o)?-1:l.isGreaterThan(o)?1:0}}};var mj=0,es=class e{constructor(t,r,n,i){Je(this,"id");Je(this,"leftSE");Je(this,"rightSE");Je(this,"rings");Je(this,"windings");Je(this,"ringOut");Je(this,"consumedBy");Je(this,"prev");Je(this,"_prevInResult");Je(this,"_beforeState");Je(this,"_afterState");Je(this,"_isInResult");this.id=++mj,this.leftSE=t,t.segment=this,t.otherSE=r,this.rightSE=r,r.segment=this,r.otherSE=t,this.rings=n,this.windings=i}static compare(t,r){let n=t.leftSE.point.x,i=r.leftSE.point.x,a=t.rightSE.point.x,o=r.rightSE.point.x;if(o.isLessThan(n))return 1;if(a.isLessThan(i))return-1;let s=t.leftSE.point.y,l=r.leftSE.point.y,u=t.rightSE.point.y,c=r.rightSE.point.y;if(n.isLessThan(i)){if(l.isLessThan(s)&&l.isLessThan(u))return 1;if(l.isGreaterThan(s)&&l.isGreaterThan(u))return-1;let f=t.comparePoint(r.leftSE.point);if(f<0)return 1;if(f>0)return-1;let p=r.comparePoint(t.rightSE.point);return p!==0?p:-1}if(n.isGreaterThan(i)){if(s.isLessThan(l)&&s.isLessThan(c))return-1;if(s.isGreaterThan(l)&&s.isGreaterThan(c))return 1;let f=r.comparePoint(t.leftSE.point);if(f!==0)return f;let p=t.comparePoint(r.rightSE.point);return p<0?1:p>0?-1:1}if(s.isLessThan(l))return-1;if(s.isGreaterThan(l))return 1;if(a.isLessThan(o)){let f=r.comparePoint(t.rightSE.point);if(f!==0)return f}if(a.isGreaterThan(o)){let f=t.comparePoint(r.rightSE.point);if(f<0)return 1;if(f>0)return-1}if(!a.eq(o)){let f=u.minus(s),p=a.minus(n),d=c.minus(l),g=o.minus(i);if(f.isGreaterThan(p)&&d.isLessThan(g))return 1;if(f.isLessThan(p)&&d.isGreaterThan(g))return-1}return a.isGreaterThan(o)?1:a.isLessThan(o)||u.isLessThan(c)?-1:u.isGreaterThan(c)?1:t.idr.id?1:0}static fromRing(t,r,n){let i,a,o,s=ni.comparePoints(t,r);if(s<0)i=t,a=r,o=1;else if(s>0)i=r,a=t,o=-1;else throw new Error(`Tried to create degenerate segment at [${t.x}, ${t.y}]`);let l=new ni(i,!0),u=new ni(a,!1);return new e(l,u,[n],[o])}replaceRightSE(t){this.rightSE=t,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){let t=this.leftSE.point.y,r=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:t.isLessThan(r)?t:r},ur:{x:this.rightSE.point.x,y:t.isGreaterThan(r)?t:r}}}vector(){return{x:this.rightSE.point.x.minus(this.leftSE.point.x),y:this.rightSE.point.y.minus(this.leftSE.point.y)}}isAnEndpoint(t){return t.x.eq(this.leftSE.point.x)&&t.y.eq(this.leftSE.point.y)||t.x.eq(this.rightSE.point.x)&&t.y.eq(this.rightSE.point.y)}comparePoint(t){return ea.orient(this.leftSE.point,t,this.rightSE.point)}getIntersection(t){let r=this.bbox(),n=t.bbox(),i=Y3(r,n);if(i===null)return null;let a=this.leftSE.point,o=this.rightSE.point,s=t.leftSE.point,l=t.rightSE.point,u=e2(r,s)&&this.comparePoint(s)===0,c=e2(n,a)&&t.comparePoint(a)===0,f=e2(r,l)&&this.comparePoint(l)===0,p=e2(n,o)&&t.comparePoint(o)===0;if(c&&u)return p&&!f?o:!p&&f?l:null;if(c)return f&&a.x.eq(l.x)&&a.y.eq(l.y)?null:a;if(u)return p&&o.x.eq(s.x)&&o.y.eq(s.y)?null:s;if(p&&f)return null;if(p)return o;if(f)return l;let d=bS(a,this.vector(),s,t.vector());return d===null||!e2(i,d)?null:ea.snap(d)}split(t){let r=[],n=t.events!==void 0,i=new ni(t,!0),a=new ni(t,!1),o=this.rightSE;this.replaceRightSE(a),r.push(a),r.push(i);let s=new e(i,o,this.rings.slice(),this.windings.slice());return ni.comparePoints(s.leftSE.point,s.rightSE.point)>0&&s.swapEvents(),ni.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),n&&(i.checkForConsuming(),a.checkForConsuming()),r}swapEvents(){let t=this.rightSE;this.rightSE=this.leftSE,this.leftSE=t,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let r=0,n=this.windings.length;r0){let a=r;r=n,n=a}if(r.prev===n){let a=r;r=n,n=a}for(let a=0,o=n.rings.length;ai.length===1&&i[0].isSubject;this._isInResult=n(t)!==n(r);break}}return this._isInResult}};var zf=class{constructor(t,r,n){Je(this,"poly");Je(this,"isExterior");Je(this,"segments");Je(this,"bbox");if(!Array.isArray(t)||t.length===0)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=r,this.isExterior=n,this.segments=[],typeof t[0][0]!="number"||typeof t[0][1]!="number")throw new Error("Input geometry is not a valid Polygon or MultiPolygon");let i=ea.snap({x:new ja(t[0][0]),y:new ja(t[0][1])});this.bbox={ll:{x:i.x,y:i.y},ur:{x:i.x,y:i.y}};let a=i;for(let o=1,s=t.length;o0&&(t=l)}let r=t.segment.prevInResult(),n=r?r.prevInResult():null;for(;;){if(!r)return null;if(!n)return r.ringOut;if(n.ringOut!==r.ringOut)return((i=n.ringOut)==null?void 0:i.enclosingRing())!==r.ringOut?r.ringOut:(a=r.ringOut)==null?void 0:a.enclosingRing();r=n.prevInResult(),n=r?r.prevInResult():null}}},Vf=class{constructor(t){Je(this,"exteriorRing");Je(this,"interiorRings");this.exteriorRing=t,t.poly=this,this.interiorRings=[]}addInterior(t){this.interiorRings.push(t),t.poly=this}getGeom(){let t=[this.exteriorRing.getGeom()];if(t[0]===null)return null;for(let r=0,n=this.interiorRings.length;r0?(this.tree.delete(r),n.push(t)):(this.segments.push(r),r.prev=i)}else{if(i&&a){let o=i.getIntersection(a);if(o!==null){if(!i.isAnEndpoint(o)){let s=this._splitSafely(i,o);for(let l=0,u=s.length;lt2.run("union",e,t);var wS=(e,...t)=>t2.run("difference",e,t),V2e=ea.set;var e5=xt(og(),1),KS=xt(GS(),1),ZS=xt(jS(),1),JS=xt(QS(),1),Xf=class{constructor(t){this._cache={},this.strict=!0,t&&t.type==="FeatureCollection"&&Array.isArray(t.features)&&t.features.forEach(n=>{n.properties=n.properties||{};let i=n.properties,a=n.id||i.id;if(!(!a||!/^\S+\.geojson$/i.test(a))){if(a=a.toLowerCase(),n.id=a,i.id=a,!i.area){let o=e5.default.geometry(n.geometry)/1e6;i.area=Number(o.toFixed(2))}this._cache[a]=n}});let r=XS(Q3("Q2"));r.geometry={type:"Polygon",coordinates:[[[-180,-90],[180,-90],[180,90],[-180,90],[-180,-90]]]},r.id="Q2",r.properties.id="Q2",r.properties.area=e5.default.geometry(r.geometry)/1e6,this._cache.Q2=r}validateLocation(t){if(Array.isArray(t)&&(t.length===2||t.length===3)){let r=t[0],n=t[1],i=t[2];if(Number.isFinite(r)&&r>=-180&&r<=180&&Number.isFinite(n)&&n>=-90&&n<=90&&(t.length===2||Number.isFinite(i)&&i>0)){let a="["+t.toString()+"]";return{type:"point",location:t,id:a}}}else if(typeof t=="string"&&/^\S+\.geojson$/i.test(t)){let r=t.toLowerCase();if(this._cache[r])return{type:"geojson",location:t,id:r}}else if(typeof t=="string"||typeof t=="number"){let r=Q3(t);if(r){let n=r.properties.wikidata;return{type:"countrycoder",location:t,id:n}}}if(this.strict)throw new Error(`validateLocation: Invalid location: "${t}".`);return null}resolveLocation(t){let r=this.validateLocation(t);if(!r)return null;let n=r.id;if(this._cache[n])return Object.assign(r,{feature:this._cache[n]});if(r.type==="point"){let i=t[0],a=t[1],o=t[2]||25,s=10,l=3,u=Math.PI*o*o,c=this._cache[n]=(0,ZS.default)({type:"Feature",id:n,properties:{id:n,area:Number(u.toFixed(2))},geometry:(0,KS.default)([i,a],o*1e3,s)},l);return Object.assign(r,{feature:c})}else if(r.type!=="geojson"){if(r.type==="countrycoder"){let i=XS(Q3(n)),a=i.properties;if(Array.isArray(a.members)){let o=oS(n);o.geometry.coordinates=Qf([o],"UNION").geometry.coordinates,i.geometry=o.geometry}if(!a.area){let o=e5.default.geometry(i.geometry)/1e6;a.area=Number(o.toFixed(2))}return i.id=n,a.id=n,this._cache[n]=i,Object.assign(r,{feature:i})}}if(this.strict)throw new Error(`resolveLocation: Couldn't resolve location "${t}".`);return null}validateLocationSet(t){t=t||{};let r=this.validateLocation.bind(this),n=(t.include||[]).map(r).filter(Boolean),i=(t.exclude||[]).map(r).filter(Boolean);if(!n.length){if(this.strict)throw new Error("validateLocationSet: LocationSet includes nothing.");t.include=["Q2"],n=[{type:"countrycoder",location:"Q2",id:"Q2"}]}n.sort(YS);let a="+["+n.map(o=>o.id).join(",")+"]";return i.length&&(i.sort(YS),a+="-["+i.map(o=>o.id).join(",")+"]"),{type:"locationset",locationSet:t,id:a}}resolveLocationSet(t){t=t||{};let r=this.validateLocationSet(t);if(!r)return null;let n=r.id;if(this._cache[n])return Object.assign(r,{feature:this._cache[n]});let i=this.resolveLocation.bind(this),a=(t.include||[]).map(i).filter(Boolean),o=(t.exclude||[]).map(i).filter(Boolean);if(a.length===1&&o.length===0)return Object.assign(r,{feature:a[0].feature});let s=Qf(a.map(f=>f.feature),"UNION"),l=Qf(o.map(f=>f.feature),"UNION"),u=l?Qf([s,l],"DIFFERENCE"):s,c=e5.default.geometry(u.geometry)/1e6;return u.id=n,u.properties={id:n,area:Number(c.toFixed(2))},this._cache[n]=u,Object.assign(r,{feature:u})}stringify(t,r){return(0,JS.default)(t,r)}};function Qf(e,t){if(!Array.isArray(e)||!e.length)return null;let r={UNION:xS,DIFFERENCE:wS}[t],n=e.map(o=>o.geometry.coordinates),i=r.apply(null,n);return{type:"Feature",properties:{},geometry:{type:a(i),coordinates:i}};function a(o){return Array.isArray(o)&&Array.isArray(o[0])&&Array.isArray(o[0][0])&&Array.isArray(o[0][0][0])?"MultiPolygon":"Polygon"}}function XS(e){return JSON.parse(JSON.stringify(e))}function YS(e,t){let r={countrycoder:1,geojson:2,point:3},n=r[e.type],i=r[t.type];return n>i?1:n{let o=Qs.validateLocation(a).id,s=this._resolved.get(o);s||(s=Qs.resolveLocation(a).feature,this._resolved.set(o,s)),i+=s.properties.area;let l=this._locationIncludedIn.get(o);l||(l=new Set,this._locationIncludedIn.set(o,l)),l.add(n)}),(r.exclude||[]).forEach(a=>{let o=Qs.validateLocation(a).id,s=this._resolved.get(o);s||(s=Qs.resolveLocation(a).feature,this._resolved.set(o,s)),i-=s.properties.area;let l=this._locationExcludedIn.get(o);l||(l=new Set,this._locationExcludedIn.set(o,l)),l.add(n)}),this._knownLocationSets.set(n,i)}catch{t.locationSet={include:["Q2"]},t.locationSetID="+[Q2]"}}_resolveLocationSet(t){if(this._validateLocationSet(t),!this._resolved.has(t.locationSetID))try{let r=Qs.resolveLocationSet(t.locationSet),n=r.id;if(t.locationSetID=n,!r.feature.geometry.coordinates.length||!r.feature.properties.area)throw new Error(`locationSet ${n} resolves to an empty feature.`);let i=JSON.parse(JSON.stringify(r.feature));i.id=n,i.properties.id=n,this._resolved.set(n,i)}catch{t.locationSet={include:["Q2"]},t.locationSetID="+[Q2]"}}_rebuildIndex(){this._wp=(0,eC.default)({features:[...this._resolved.values()]})}mergeCustomGeoJSON(t){!t||t.type!=="FeatureCollection"||!Array.isArray(t.features)||t.features.forEach(r=>{r.properties=r.properties||{};let n=r.properties,i=r.id||n.id;if(!(!i||!/^\S+\.geojson$/i.test(i))){if(i=i.toLowerCase(),r.id=i,n.id=i,!n.area){let a=tC.default.geometry(r.geometry)/1e6;n.area=Number(a.toFixed(2))}Qs._cache[i]=r}})}mergeLocationSets(t){return Array.isArray(t)?(t.forEach(r=>this._validateLocationSet(r)),this._rebuildIndex(),Promise.resolve(t)):Promise.reject("nothing to do")}locationSetID(t){let r;try{r=Qs.validateLocationSet(t).id}catch{r="+[Q2]"}return r}feature(t="+[Q2]"){return this._resolved.get(t)||this._resolved.get("+[Q2]")}locationSetsAt(t){let r={},n=this._wp(t,!0)||[],i=this;return n.forEach(a=>{if(a.id[0]!=="+")return;let o=a.id,s=i._knownLocationSets.get(o);s&&(r[o]=s)}),n.forEach(a=>{if(a.id[0]==="+")return;let o=a.id;(i._locationIncludedIn.get(o)||[]).forEach(l=>{let u=i._knownLocationSets.get(l);u&&(r[l]=u)})}),n.forEach(a=>{if(a.id[0]==="+")return;let o=a.id;(i._locationExcludedIn.get(o)||[]).forEach(l=>{delete r[l]})}),r}loco(){return Qs}},An=new t5;var Fj=typeof global=="object"&&global&&global.Object===Object&&global,Yf=Fj;var Dj=typeof self=="object"&&self&&self.Object===Object&&self,Tj=Yf||Dj||Function("return this")(),Sn=Tj;var Mj=Sn.Symbol,Ha=Mj;var rC=Object.prototype,Nj=rC.hasOwnProperty,Pj=rC.toString,r5=Ha?Ha.toStringTag:void 0;function Oj(e){var t=Nj.call(e,r5),r=e[r5];try{e[r5]=void 0;var n=!0}catch{}var i=Pj.call(e);return n&&(t?e[r5]=r:delete e[r5]),i}var nC=Oj;var Lj=Object.prototype,Rj=Lj.toString;function Bj(e){return Rj.call(e)}var iC=Bj;var $j="[object Null]",Uj="[object Undefined]",aC=Ha?Ha.toStringTag:void 0;function zj(e){return e==null?e===void 0?Uj:$j:aC&&aC in Object(e)?nC(e):iC(e)}var ha=zj;function qj(e){return e!=null&&typeof e=="object"}var ga=qj;var Vj="[object Symbol]";function Gj(e){return typeof e=="symbol"||ga(e)&&ha(e)==Vj}var Kf=Gj;function jj(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r-1&&e%1==0&&e-1&&e%1==0&&e<=FH}var r7=DH;function TH(e){return e!=null&&r7(e.length)&&!Zf(e)}var bC=TH;var MH=Object.prototype;function NH(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||MH;return e===r}var xC=NH;function PH(e,t){for(var r=-1,n=Array(e);++r-1}var jC=HW;function WW(e,t){var r=this.__data__,n=rl(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var HC=WW;function i2(e){var t=-1,r=e==null?0:e.length;for(this.clear();++ts))return!1;var u=a.get(e),c=a.get(t);if(u&&c)return u==t&&c==e;var f=-1,p=!0,d=r&PQ?new vI:void 0;for(a.set(e,t),a.set(t,e);++f=t||I<0||f&&E>=a}function m(){var A=m7();if(b(A))return v(A);s=setTimeout(m,x(A))}function v(A){return s=void 0,p&&n?d(A):(n=i=void 0,o)}function y(){s!==void 0&&clearTimeout(s),u=0,n=l=i=s=void 0}function _(){return s===void 0?o:v(m7())}function w(){var A=m7(),I=b(A);if(n=arguments,i=this,l=A,I){if(s===void 0)return g(l);if(f)return clearTimeout(s),s=setTimeout(m,t),d(l)}return s===void 0&&(s=setTimeout(m,t)),o}return w.cancel=y,w.flush=_,w}var Bt=uX;var cX={"&":"&","<":"<",">":">",'"':""","'":"'"},fX=o7(cX),TI=fX;var MI=/[&<>"']/g,pX=RegExp(MI.source);function dX(e){return e=a7(e),e&&pX.test(e)?e.replace(MI,TI):e}var a5=dX;function mX(e,t){return DI(e,t)}var xg=mX;var hX="[object Number]";function gX(e){return typeof e=="number"||ga(e)&&ha(e)==hX}var ts=gX;var vX="Expected a function";function yX(e,t,r){var n=!0,i=!0;if(typeof e!="function")throw new TypeError(vX);return Co(r)&&(n="leading"in r?!!r.leading:n,i="trailing"in r?!!r.trailing:i),Bt(e,t,{leading:n,maxWait:t,trailing:i})}var Lt=yX;var bX={"&":"&","<":"<",">":">",""":'"',"'":"'"},xX=o7(bX),NI=xX;var PI=/&(?:amp|lt|gt|quot|#39);/g,wX=RegExp(PI.source);function _X(e){return e=a7(e),e&&wX.test(e)?e.replace(PI,NI):e}var wg=_X;var $t;function br(e){if($t&&!e)return $t;$t={};let t=navigator.userAgent,r=null;r=t.match(/(edge)\/?\s*(\.?\d+(\.\d+)*)/i),r!==null&&($t.browser=r[1],$t.version=r[2]),$t.browser||(r=t.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i),r!==null&&($t.browser="msie",$t.version=r[1])),$t.browser||(r=t.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i),r!==null&&($t.browser="Opera",$t.version=r[2])),$t.browser||(r=t.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i),r!==null&&($t.browser=r[1],$t.version=r[2],r=t.match(/version\/([\.\d]+)/i),r!==null&&($t.version=r[1]))),$t.browser||($t.browser=navigator.appName,$t.version=navigator.appVersion),$t.version=$t.version.split(/\W/).slice(0,2).join("."),$t.opera=$t.browser.toLowerCase()==="opera"&&Number($t.version)<15,$t.browser.toLowerCase()==="msie"?($t.ie=!0,$t.browser="Internet Explorer",$t.support=!1):($t.ie=!1,$t.support=!0),$t.filedrop=window.FileReader&&"ondrop"in window,/Win/.test(t)?($t.os="win",$t.platform="Windows"):/Mac/.test(t)?($t.os="mac",$t.platform="Macintosh"):/X11/.test(t)||/Linux/.test(t)?($t.os="linux",$t.platform="Linux"):($t.os="win",$t.platform="Unknown"),$t.isMobileWebKit=(/\b(iPad|iPhone|iPod)\b/.test(t)||navigator.platform==="MacIntel"&&"maxTouchPoints"in navigator&&navigator.maxTouchPoints>1)&&/WebKit/.test(t)&&!/Edge/.test(t)&&!window.MSStream,$t.browserLocales=Array.from(new Set([navigator.language].concat(navigator.languages||[]).concat([navigator.userLanguage]).filter(Boolean)));let n=window.top.location,i=n.origin;return i||(i=n.protocol+"//"+n.hostname+(n.port?":"+n.port:"")),$t.host=i+n.pathname,$t}var u0=xt(LI()),RI=[250,157,60,79,142,134,229,129,138,126,210,129,29,71,160,208];function BI(e,t){t=t||RI;let r=u0.default.utils.utf8.toBytes(e),i=new u0.default.ModeOfOperation.ctr(t).encrypt(r);return u0.default.utils.hex.fromBytes(i)}function c0(e,t){t=t||RI;let r=u0.default.utils.hex.toBytes(e),i=new u0.default.ModeOfOperation.ctr(t).decrypt(r);return u0.default.utils.utf8.fromBytes(i)}function o5(e){var t={};for(var r in e)if(r){var n=e[r];n!==void 0&&(t[r]=i(r,n))}return t;function i(a,o){function s(c){return/_hours|_times|:conditional$/.test(c)}function l(c){return/^(description|note|fixme)$/.test(c)}if(l(a))return o;var u=o.split(";").map(function(c){return c.trim()}).join(s(a)?"; ":";");return(a.indexOf("website")!==-1||a.indexOf("email")!==-1||u.indexOf("http")===0)&&(u=u.replace(/[\u200B-\u200F\uFEFF]/g,"")),u}}var S7={};s6(S7,{Century:()=>k7,Date:()=>fn,Decade:()=>E7,Interval:()=>p0,List:()=>f2,Season:()=>u2,Set:()=>A7,Year:()=>_7});function $I(e,t){return UI(!!e,!0,t||`expected "${e}" to be ok`)}function UI(e,t,r){if(e==t||Number.isNaN(e)&&Number.isNaN(t))return!0;throw new Error(r||`expected "${e}" to equal "${t}"`)}$I.equal=UI;var mr=$I;var EX=/^days?$/i,kX=/^months?$/i,AX=/^years?$/i,SX=/^[xX]$/,CX=/[xX]/g,IX=/^[0-9xXdDmMyY]{8}$/,FX="YYYYMMDD".split(""),h7=[31,29,31,30,31,30,31,31,30,31,30,31],{floor:DX,pow:zI,max:g7,min:Eg}=Math,ct=class e{static test(t,r){return this.convert(t)&this.convert(r)}static convert(t=0){if(t=t||0,t instanceof e)return t.value;switch(typeof t){case"number":return t;case"boolean":return t?e.YMD:0;case"string":if(EX.test(t))return e.DAY;if(kX.test(t))return e.MONTH;if(AX.test(t))return e.YEAR;if(IX.test(t))return e.compute(t);default:throw new Error(`invalid value: ${t}`)}}static compute(t){return t.split("").reduce((r,n,i)=>r|(SX.test(n)?zI(2,i):0),0)}static values(t,r=0,n=!0){let i=e.numbers(t,r).split(""),a=[Number(i.slice(0,4).join(""))];return i.length>4&&a.push(Number(i.slice(4,6).join(""))),i.length>6&&a.push(Number(i.slice(6,8).join(""))),n?e.normalize(a):a}static numbers(t,r=0){return t.replace(CX,r)}static normalize(t){return t.length>1&&(t[1]=Eg(11,g7(0,t[1]-1))),t.length>2&&(t[2]=Eg(h7[t[1]]||NaN,g7(1,t[2]))),t}constructor(t=0){this.value=e.convert(t)}test(t=0){return this.value&e.convert(t)}bit(t){return this.value&zI(2,t)}get day(){return this.test(e.DAY)}get month(){return this.test(e.MONTH)}get year(){return this.test(e.YEAR)}add(t){return this.value=this.value|e.convert(t),this}set(t=0){return this.value=e.convert(t),this}mask(t=FX,r=0,n="X"){return t.map((i,a)=>this.bit(r+a)?n:i)}masks(t,r="X"){let n=0;return t.map(i=>{let a=this.mask(i.split(""),n,r);return n=n+a.length,a.join("")})}max([t,r,n]){if(!t)return[];if(t=Number(this.test(e.YEAR)?this.masks([t],"9")[0]:t),!r)return[t];switch(r=Number(r)-1,this.test(e.MONTH)){case e.MONTH:r=11;break;case e.MX:r=r<9?8:11;break;case e.XM:r=(r+1)%10,r=r<3?r+9:r-1;break}if(!n)return[t,r];switch(n=Number(n),this.test(e.DAY)){case e.DAY:n=h7[r];break;case e.DX:n=Eg(h7[r],n+(9-n%10));break;case e.XD:n=n%10,r===1?n=n===9&&!qI(t)?n+10:n+20:(n=n<2?n+30:n+20,n>h7[r]&&(n=n-10));break}return r===1&&n>28&&!qI(t)&&(n=28),[t,r,n]}min([t,r,n]){if(!t)return[];if(t=Number(this.test(e.YEAR)?this.masks([t],"0")[0]:t),r==null)return[t];switch(r=Number(r)-1,this.test(e.MONTH)){case e.MONTH:case e.XM:r=0;break;case e.MX:r=r<9?0:9;break}if(!n)return[t,r];switch(n=Number(n),this.test(e.DAY)){case e.DAY:n=1;break;case e.DX:n=g7(1,DX(n/10)*10);break;case e.XD:n=g7(1,n%10);break}return[t,r,n]}marks(t,r="?"){return t.map((n,i)=>[this.qualified(i*2)?r:"",n,this.qualified(i*2+1)?r:""].join(""))}qualified(t){switch(t){case 1:return this.value===e.YEAR||this.value&e.YEAR&&!(this.value&e.MONTH);case 2:return this.value===e.MONTH||this.value&e.MONTH&&!(this.value&e.YEAR);case 3:return this.value===e.YM;case 4:return this.value===e.DAY||this.value&e.DAY&&this.value!==e.YMD;case 5:return this.value===e.YMD;default:return!1}}qualify(t){return this.value=this.value|e.UA[t],this}toJSON(){return this.value}toString(t="X"){return this.masks(["YYYY","MM","DD"],t).join("-")}};ct.prototype.is=ct.prototype.test;function qI(e){return e%4>0?!1:e%100>0?!0:!(e%400>0)}ct.DAY=ct.D=ct.compute("yyyymmxx");ct.MONTH=ct.M=ct.compute("yyyyxxdd");ct.YEAR=ct.Y=ct.compute("xxxxmmdd");ct.MD=ct.M|ct.D;ct.YMD=ct.Y|ct.MD;ct.YM=ct.Y|ct.M;ct.YYXX=ct.compute("yyxxmmdd");ct.YYYX=ct.compute("yyyxmmdd");ct.XXXX=ct.compute("xxxxmmdd");ct.DX=ct.compute("yyyymmdx");ct.XD=ct.compute("yyyymmxd");ct.MX=ct.compute("yyyymxdd");ct.XM=ct.compute("yyyyxmdd");ct.UA=[ct.YEAR,ct.YEAR,ct.MONTH,ct.YM,ct.DAY,ct.YMD];var HI=xt(GI(),1);var{assign:s5}=Object;function bn(e){return Number(Array.isArray(e)?e.join(""):e)}function Ut(e){return e.join("")}function kg(){return 0}function l5(){return null}function rs(...e){return e.length===1?t=>t[e[0]]:t=>TX(t,e)}function s2(...e){return t=>e.map(r=>t[r])}function TX(e,t=e.keys()){return Array.from(t).reduce((r,n)=>e[n]!==null?r.concat(e[n]):r,[])}function Ks(...e){if(typeof e[e.length-1]=="object")var t=e.pop();return r=>s5(e.reduce((n,i)=>s5(n,r[i]),{}),t)}function Zs(e){return t=>({values:[t[0],t[2]],type:"Interval",level:e})}function va(e="unspecified",t="X",r=!0){return(n,i,a)=>{n=n.join("");let o=n.startsWith("-"),s=n.replace(/-/g,"");if(s.indexOf(t)===-1)return a;let l=ct.values(s,0,r);return o&&(l[0]=-l[0]),{values:l,[e]:ct.compute(s)}}}function ya(e,t=0,r=null){return s5({type:"Date",level:t,values:ct.normalize(e.map(Number))},r)}function l2(e,t=1,r=null){return s5({type:"Year",level:t,values:e.map(Number)},r)}function y7(e,t=0){return{type:"Century",level:t,values:[e]}}function b7(e,t=2){return{type:"Decade",level:t,values:[e]}}function jI(e){let t=e[3];return t==null&&(t=new Date().getTimezoneOffset()),{values:ct.normalize(e[0].map(Number)).concat(e[2]),offset:t,type:"Date",level:0}}function x7(e,t=1){return{type:"Season",level:t,values:e.map(Number)}}function Ag(e){return s5({values:e[1],level:2},e[0],e[2])}function u5(e,t=2){return([r],n,i)=>{let a={uncertain:new ct,approximate:new ct},o=r.map(([s,l,u],c)=>{for(let f in s)a[f].qualify(c*2);for(let f in u)a[f].qualify(1+c*2);return l});return!a.uncertain.value&&!a.approximate.value?i:{...e(o,t),uncertain:a.uncertain.value,approximate:a.approximate.value}}}function Ve(e){return e[0]}var{DAY:hfe,MONTH:gfe,YEAR:vfe,YMD:yfe,YM:bfe,MD:xfe,YYXX:wfe,YYYX:_fe,XXXX:Efe}=ct,MX,NX=[{name:"edtf",symbols:["L0"],postprocess:Ve},{name:"edtf",symbols:["L1"],postprocess:Ve},{name:"edtf",symbols:["L2"],postprocess:Ve},{name:"edtf",symbols:["L3"],postprocess:Ve},{name:"L0",symbols:["date_time"],postprocess:Ve},{name:"L0",symbols:["century"],postprocess:Ve},{name:"L0",symbols:["L0i"],postprocess:Ve},{name:"L0i",symbols:["date_time",{literal:"/"},"date_time"],postprocess:Zs(0)},{name:"century",symbols:["positive_century"],postprocess:e=>y7(e[0])},{name:"century$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"century",symbols:["century$string$1"],postprocess:e=>y7(0)},{name:"century",symbols:[{literal:"-"},"positive_century"],postprocess:e=>y7(-e[1])},{name:"positive_century",symbols:["positive_digit","digit"],postprocess:bn},{name:"positive_century",symbols:[{literal:"0"},"positive_digit"],postprocess:bn},{name:"date_time",symbols:["date"],postprocess:Ve},{name:"date_time",symbols:["datetime"],postprocess:Ve},{name:"date",symbols:["year"],postprocess:e=>ya(e)},{name:"date",symbols:["year_month"],postprocess:e=>ya(e[0])},{name:"date",symbols:["year_month_day"],postprocess:e=>ya(e[0])},{name:"year",symbols:["positive_year"],postprocess:Ve},{name:"year",symbols:["negative_year"],postprocess:Ve},{name:"year$string$1",symbols:[{literal:"0"},{literal:"0"},{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"year",symbols:["year$string$1"],postprocess:Ut},{name:"positive_year",symbols:["positive_digit","digit","digit","digit"],postprocess:Ut},{name:"positive_year",symbols:[{literal:"0"},"positive_digit","digit","digit"],postprocess:Ut},{name:"positive_year$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"positive_year",symbols:["positive_year$string$1","positive_digit","digit"],postprocess:Ut},{name:"positive_year$string$2",symbols:[{literal:"0"},{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"positive_year",symbols:["positive_year$string$2","positive_digit"],postprocess:Ut},{name:"negative_year",symbols:[{literal:"-"},"positive_year"],postprocess:Ut},{name:"year_month",symbols:["year",{literal:"-"},"month"],postprocess:rs(0,2)},{name:"year_month_day",symbols:["year",{literal:"-"},"month_day"],postprocess:rs(0,2)},{name:"month",symbols:["d01_12"],postprocess:Ve},{name:"month_day",symbols:["m31",{literal:"-"},"day"],postprocess:rs(0,2)},{name:"month_day",symbols:["m30",{literal:"-"},"d01_30"],postprocess:rs(0,2)},{name:"month_day$string$1",symbols:[{literal:"0"},{literal:"2"}],postprocess:function(t){return t.join("")}},{name:"month_day",symbols:["month_day$string$1",{literal:"-"},"d01_29"],postprocess:rs(0,2)},{name:"day",symbols:["d01_31"],postprocess:Ve},{name:"datetime$ebnf$1$subexpression$1",symbols:["timezone"],postprocess:Ve},{name:"datetime$ebnf$1",symbols:["datetime$ebnf$1$subexpression$1"],postprocess:Ve},{name:"datetime$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"datetime",symbols:["year_month_day",{literal:"T"},"time","datetime$ebnf$1"],postprocess:jI},{name:"time",symbols:["hours",{literal:":"},"minutes",{literal:":"},"seconds","milliseconds"],postprocess:rs(0,2,4,5)},{name:"time",symbols:["hours",{literal:":"},"minutes"],postprocess:rs(0,2)},{name:"time$string$1",symbols:[{literal:"2"},{literal:"4"},{literal:":"},{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"time$ebnf$1$string$1",symbols:[{literal:":"},{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"time$ebnf$1",symbols:["time$ebnf$1$string$1"],postprocess:Ve},{name:"time$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"time",symbols:["time$string$1","time$ebnf$1"],postprocess:()=>[24,0,0]},{name:"hours",symbols:["d00_23"],postprocess:bn},{name:"minutes",symbols:["d00_59"],postprocess:bn},{name:"seconds",symbols:["d00_59"],postprocess:bn},{name:"milliseconds",symbols:[]},{name:"milliseconds",symbols:[{literal:"."},"d3s"],postprocess:e=>bn(e.slice(1))},{name:"timezone",symbols:[{literal:"Z"}],postprocess:kg},{name:"timezone$subexpression$1",symbols:[{literal:"-"}]},{name:"timezone$subexpression$1",symbols:[{literal:"\u2212"}]},{name:"timezone",symbols:["timezone$subexpression$1","offset"],postprocess:e=>-e[1]},{name:"timezone",symbols:[{literal:"+"},"positive_offset"],postprocess:rs(1)},{name:"positive_offset",symbols:["offset"],postprocess:Ve},{name:"positive_offset$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"positive_offset$ebnf$1",symbols:[{literal:":"}],postprocess:Ve},{name:"positive_offset$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"positive_offset$string$2",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"positive_offset",symbols:["positive_offset$string$1","positive_offset$ebnf$1","positive_offset$string$2"],postprocess:kg},{name:"positive_offset$subexpression$1$string$1",symbols:[{literal:"1"},{literal:"2"}],postprocess:function(t){return t.join("")}},{name:"positive_offset$subexpression$1",symbols:["positive_offset$subexpression$1$string$1"]},{name:"positive_offset$subexpression$1$string$2",symbols:[{literal:"1"},{literal:"3"}],postprocess:function(t){return t.join("")}},{name:"positive_offset$subexpression$1",symbols:["positive_offset$subexpression$1$string$2"]},{name:"positive_offset$ebnf$2",symbols:[{literal:":"}],postprocess:Ve},{name:"positive_offset$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"positive_offset",symbols:["positive_offset$subexpression$1","positive_offset$ebnf$2","minutes"],postprocess:e=>bn(e[0])*60+e[2]},{name:"positive_offset$string$3",symbols:[{literal:"1"},{literal:"4"}],postprocess:function(t){return t.join("")}},{name:"positive_offset$ebnf$3",symbols:[{literal:":"}],postprocess:Ve},{name:"positive_offset$ebnf$3",symbols:[],postprocess:function(e){return null}},{name:"positive_offset$string$4",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"positive_offset",symbols:["positive_offset$string$3","positive_offset$ebnf$3","positive_offset$string$4"],postprocess:()=>840},{name:"positive_offset",symbols:["d00_14"],postprocess:e=>bn(e[0])*60},{name:"offset$ebnf$1",symbols:[{literal:":"}],postprocess:Ve},{name:"offset$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"offset",symbols:["d01_11","offset$ebnf$1","minutes"],postprocess:e=>bn(e[0])*60+e[2]},{name:"offset$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"offset$ebnf$2",symbols:[{literal:":"}],postprocess:Ve},{name:"offset$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"offset",symbols:["offset$string$1","offset$ebnf$2","d01_59"],postprocess:e=>bn(e[2])},{name:"offset$string$2",symbols:[{literal:"1"},{literal:"2"}],postprocess:function(t){return t.join("")}},{name:"offset$ebnf$3",symbols:[{literal:":"}],postprocess:Ve},{name:"offset$ebnf$3",symbols:[],postprocess:function(e){return null}},{name:"offset$string$3",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"offset",symbols:["offset$string$2","offset$ebnf$3","offset$string$3"],postprocess:()=>720},{name:"offset",symbols:["d01_12"],postprocess:e=>bn(e[0])*60},{name:"L1",symbols:["L1d"],postprocess:Ve},{name:"L1",symbols:["L1Y"],postprocess:Ve},{name:"L1",symbols:["L1S"],postprocess:Ve},{name:"L1",symbols:["L1i"],postprocess:Ve},{name:"L1d",symbols:["date_ua"],postprocess:Ve},{name:"L1d",symbols:["L1X"],postprocess:Ks(0,{type:"Date",level:1})},{name:"date_ua",symbols:["date","UA"],postprocess:Ks(0,1,{level:1})},{name:"L1i",symbols:["L1i_date",{literal:"/"},"L1i_date"],postprocess:Zs(1)},{name:"L1i",symbols:["date_time",{literal:"/"},"L1i_date"],postprocess:Zs(1)},{name:"L1i",symbols:["L1i_date",{literal:"/"},"date_time"],postprocess:Zs(1)},{name:"L1i_date",symbols:[],postprocess:l5},{name:"L1i_date",symbols:["date_ua"],postprocess:Ve},{name:"L1i_date",symbols:["INFINITY"],postprocess:Ve},{name:"INFINITY$string$1",symbols:[{literal:"."},{literal:"."}],postprocess:function(t){return t.join("")}},{name:"INFINITY",symbols:["INFINITY$string$1"],postprocess:()=>1/0},{name:"L1X$string$1",symbols:[{literal:"-"},{literal:"X"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"L1X",symbols:["nd4",{literal:"-"},"md","L1X$string$1"],postprocess:va()},{name:"L1X$string$2",symbols:[{literal:"-"},{literal:"X"},{literal:"X"},{literal:"-"},{literal:"X"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"L1X",symbols:["nd4","L1X$string$2"],postprocess:va()},{name:"L1X$string$3",symbols:[{literal:"X"},{literal:"X"},{literal:"X"},{literal:"X"},{literal:"-"},{literal:"X"},{literal:"X"},{literal:"-"},{literal:"X"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"L1X",symbols:["L1X$string$3"],postprocess:va()},{name:"L1X$string$4",symbols:[{literal:"-"},{literal:"X"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"L1X",symbols:["nd4","L1X$string$4"],postprocess:va()},{name:"L1X$string$5",symbols:[{literal:"X"},{literal:"X"},{literal:"X"},{literal:"X"},{literal:"-"},{literal:"X"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"L1X",symbols:["L1X$string$5"],postprocess:va()},{name:"L1X$string$6",symbols:[{literal:"X"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"L1X",symbols:["nd2","L1X$string$6"],postprocess:va()},{name:"L1X",symbols:["nd3",{literal:"X"}],postprocess:va()},{name:"L1X$string$7",symbols:[{literal:"X"},{literal:"X"},{literal:"X"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"L1X",symbols:["L1X$string$7"],postprocess:va()},{name:"L1Y",symbols:[{literal:"Y"},"d5+"],postprocess:e=>l2([bn(e[1])],1)},{name:"L1Y$string$1",symbols:[{literal:"Y"},{literal:"-"}],postprocess:function(t){return t.join("")}},{name:"L1Y",symbols:["L1Y$string$1","d5+"],postprocess:e=>l2([-bn(e[1])],1)},{name:"UA",symbols:[{literal:"?"}],postprocess:()=>({uncertain:!0})},{name:"UA",symbols:[{literal:"~"}],postprocess:()=>({approximate:!0})},{name:"UA",symbols:[{literal:"%"}],postprocess:()=>({approximate:!0,uncertain:!0})},{name:"L1S",symbols:["year",{literal:"-"},"d21_24"],postprocess:e=>x7([e[0],e[2]],1)},{name:"L2",symbols:["L2d"],postprocess:Ve},{name:"L2",symbols:["L2Y"],postprocess:Ve},{name:"L2",symbols:["L2S"],postprocess:Ve},{name:"L2",symbols:["L2D"],postprocess:Ve},{name:"L2",symbols:["L2C"],postprocess:Ve},{name:"L2",symbols:["L2i"],postprocess:Ve},{name:"L2",symbols:["set"],postprocess:Ve},{name:"L2",symbols:["list"],postprocess:Ve},{name:"L2d",symbols:["ua_date"],postprocess:Ve},{name:"L2d",symbols:["L2X"],postprocess:Ks(0,{type:"Date",level:2})},{name:"L2D",symbols:["decade"],postprocess:Ve},{name:"L2D",symbols:["decade","UA"],postprocess:Ks(0,1)},{name:"L2C",symbols:["century"],postprocess:Ve},{name:"L2C",symbols:["century","UA"],postprocess:Ks(0,1,{level:2})},{name:"ua_date",symbols:["ua_year"],postprocess:u5(ya)},{name:"ua_date",symbols:["ua_year_month"],postprocess:u5(ya)},{name:"ua_date",symbols:["ua_year_month_day"],postprocess:u5(ya)},{name:"ua_year",symbols:["UA","year"],postprocess:e=>[e]},{name:"ua_year_month$macrocall$2",symbols:["year"]},{name:"ua_year_month$macrocall$1$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_year_month$macrocall$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_year_month$macrocall$1$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_year_month$macrocall$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_year_month$macrocall$1",symbols:["ua_year_month$macrocall$1$ebnf$1","ua_year_month$macrocall$2","ua_year_month$macrocall$1$ebnf$2"]},{name:"ua_year_month$macrocall$4",symbols:["month"]},{name:"ua_year_month$macrocall$3$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_year_month$macrocall$3$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_year_month$macrocall$3$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_year_month$macrocall$3$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_year_month$macrocall$3",symbols:["ua_year_month$macrocall$3$ebnf$1","ua_year_month$macrocall$4","ua_year_month$macrocall$3$ebnf$2"]},{name:"ua_year_month",symbols:["ua_year_month$macrocall$1",{literal:"-"},"ua_year_month$macrocall$3"],postprocess:s2(0,2)},{name:"ua_year_month_day$macrocall$2",symbols:["year"]},{name:"ua_year_month_day$macrocall$1$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_year_month_day$macrocall$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_year_month_day$macrocall$1$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_year_month_day$macrocall$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_year_month_day$macrocall$1",symbols:["ua_year_month_day$macrocall$1$ebnf$1","ua_year_month_day$macrocall$2","ua_year_month_day$macrocall$1$ebnf$2"]},{name:"ua_year_month_day",symbols:["ua_year_month_day$macrocall$1",{literal:"-"},"ua_month_day"],postprocess:e=>[e[0],...e[2]]},{name:"ua_month_day$macrocall$2",symbols:["m31"]},{name:"ua_month_day$macrocall$1$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$1$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$1",symbols:["ua_month_day$macrocall$1$ebnf$1","ua_month_day$macrocall$2","ua_month_day$macrocall$1$ebnf$2"]},{name:"ua_month_day$macrocall$4",symbols:["day"]},{name:"ua_month_day$macrocall$3$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$3$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$3$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$3$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$3",symbols:["ua_month_day$macrocall$3$ebnf$1","ua_month_day$macrocall$4","ua_month_day$macrocall$3$ebnf$2"]},{name:"ua_month_day",symbols:["ua_month_day$macrocall$1",{literal:"-"},"ua_month_day$macrocall$3"],postprocess:s2(0,2)},{name:"ua_month_day$macrocall$6",symbols:["m30"]},{name:"ua_month_day$macrocall$5$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$5$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$5$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$5$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$5",symbols:["ua_month_day$macrocall$5$ebnf$1","ua_month_day$macrocall$6","ua_month_day$macrocall$5$ebnf$2"]},{name:"ua_month_day$macrocall$8",symbols:["d01_30"]},{name:"ua_month_day$macrocall$7$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$7$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$7$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$7$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$7",symbols:["ua_month_day$macrocall$7$ebnf$1","ua_month_day$macrocall$8","ua_month_day$macrocall$7$ebnf$2"]},{name:"ua_month_day",symbols:["ua_month_day$macrocall$5",{literal:"-"},"ua_month_day$macrocall$7"],postprocess:s2(0,2)},{name:"ua_month_day$macrocall$10$string$1",symbols:[{literal:"0"},{literal:"2"}],postprocess:function(t){return t.join("")}},{name:"ua_month_day$macrocall$10",symbols:["ua_month_day$macrocall$10$string$1"]},{name:"ua_month_day$macrocall$9$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$9$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$9$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$9$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$9",symbols:["ua_month_day$macrocall$9$ebnf$1","ua_month_day$macrocall$10","ua_month_day$macrocall$9$ebnf$2"]},{name:"ua_month_day$macrocall$12",symbols:["d01_29"]},{name:"ua_month_day$macrocall$11$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$11$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$11$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_month_day$macrocall$11$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_month_day$macrocall$11",symbols:["ua_month_day$macrocall$11$ebnf$1","ua_month_day$macrocall$12","ua_month_day$macrocall$11$ebnf$2"]},{name:"ua_month_day",symbols:["ua_month_day$macrocall$9",{literal:"-"},"ua_month_day$macrocall$11"],postprocess:s2(0,2)},{name:"L2X",symbols:["dx4"],postprocess:va()},{name:"L2X",symbols:["dx4",{literal:"-"},"mx"],postprocess:va()},{name:"L2X",symbols:["dx4",{literal:"-"},"mdx"],postprocess:va()},{name:"mdx",symbols:["m31x",{literal:"-"},"d31x"],postprocess:Ut},{name:"mdx",symbols:["m30x",{literal:"-"},"d30x"],postprocess:Ut},{name:"mdx$string$1",symbols:[{literal:"0"},{literal:"2"},{literal:"-"}],postprocess:function(t){return t.join("")}},{name:"mdx",symbols:["mdx$string$1","d29x"],postprocess:Ut},{name:"L2i",symbols:["L2i_date",{literal:"/"},"L2i_date"],postprocess:Zs(2)},{name:"L2i",symbols:["date_time",{literal:"/"},"L2i_date"],postprocess:Zs(2)},{name:"L2i",symbols:["L2i_date",{literal:"/"},"date_time"],postprocess:Zs(2)},{name:"L2i_date",symbols:[],postprocess:l5},{name:"L2i_date",symbols:["ua_date"],postprocess:Ve},{name:"L2i_date",symbols:["L2X"],postprocess:Ve},{name:"L2i_date",symbols:["INFINITY"],postprocess:Ve},{name:"L2Y",symbols:["exp_year"],postprocess:Ve},{name:"L2Y",symbols:["exp_year","significant_digits"],postprocess:Ks(0,1)},{name:"L2Y",symbols:["L1Y","significant_digits"],postprocess:Ks(0,1,{level:2})},{name:"L2Y",symbols:["year","significant_digits"],postprocess:e=>l2([e[0]],2,e[1])},{name:"significant_digits",symbols:[{literal:"S"},"positive_digit"],postprocess:e=>({significant:bn(e[1])})},{name:"exp_year",symbols:[{literal:"Y"},"exp"],postprocess:e=>l2([e[1]],2)},{name:"exp_year$string$1",symbols:[{literal:"Y"},{literal:"-"}],postprocess:function(t){return t.join("")}},{name:"exp_year",symbols:["exp_year$string$1","exp"],postprocess:e=>l2([-e[1]],2)},{name:"exp",symbols:["digits",{literal:"E"},"digits"],postprocess:e=>bn(e[0])*Math.pow(10,bn(e[2]))},{name:"L2S",symbols:["year",{literal:"-"},"d25_41"],postprocess:e=>x7([e[0],e[2]],2)},{name:"decade",symbols:["positive_decade"],postprocess:e=>b7(e[0])},{name:"decade$string$1",symbols:[{literal:"0"},{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"decade",symbols:["decade$string$1"],postprocess:()=>b7(0)},{name:"decade",symbols:[{literal:"-"},"positive_decade"],postprocess:e=>b7(-e[1])},{name:"positive_decade",symbols:["positive_digit","digit","digit"],postprocess:bn},{name:"positive_decade",symbols:[{literal:"0"},"positive_digit","digit"],postprocess:bn},{name:"positive_decade$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"positive_decade",symbols:["positive_decade$string$1","positive_digit"],postprocess:bn},{name:"set",symbols:["LSB","OL","RSB"],postprocess:Ag},{name:"list",symbols:["LLB","OL","RLB"],postprocess:Ag},{name:"LSB",symbols:[{literal:"["}],postprocess:()=>({type:"Set"})},{name:"LSB$string$1",symbols:[{literal:"["},{literal:"."},{literal:"."}],postprocess:function(t){return t.join("")}},{name:"LSB",symbols:["LSB$string$1"],postprocess:()=>({type:"Set",earlier:!0})},{name:"LLB",symbols:[{literal:"{"}],postprocess:()=>({type:"List"})},{name:"LLB$string$1",symbols:[{literal:"{"},{literal:"."},{literal:"."}],postprocess:function(t){return t.join("")}},{name:"LLB",symbols:["LLB$string$1"],postprocess:()=>({type:"List",earlier:!0})},{name:"RSB",symbols:[{literal:"]"}],postprocess:l5},{name:"RSB$string$1",symbols:[{literal:"."},{literal:"."},{literal:"]"}],postprocess:function(t){return t.join("")}},{name:"RSB",symbols:["RSB$string$1"],postprocess:()=>({later:!0})},{name:"RLB",symbols:[{literal:"}"}],postprocess:l5},{name:"RLB$string$1",symbols:[{literal:"."},{literal:"."},{literal:"}"}],postprocess:function(t){return t.join("")}},{name:"RLB",symbols:["RLB$string$1"],postprocess:()=>({later:!0})},{name:"OL",symbols:["LI"],postprocess:e=>[e[0]]},{name:"OL",symbols:["OL","_",{literal:","},"_","LI"],postprocess:e=>[...e[0],e[4]]},{name:"LI",symbols:["date"],postprocess:Ve},{name:"LI",symbols:["ua_date"],postprocess:Ve},{name:"LI",symbols:["L2X"],postprocess:Ve},{name:"LI",symbols:["consecutives"],postprocess:Ve},{name:"consecutives$string$1",symbols:[{literal:"."},{literal:"."}],postprocess:function(t){return t.join("")}},{name:"consecutives",symbols:["year_month_day","consecutives$string$1","year_month_day"],postprocess:e=>[ya(e[0]),ya(e[2])]},{name:"consecutives$string$2",symbols:[{literal:"."},{literal:"."}],postprocess:function(t){return t.join("")}},{name:"consecutives",symbols:["year_month","consecutives$string$2","year_month"],postprocess:e=>[ya(e[0]),ya(e[2])]},{name:"consecutives$string$3",symbols:[{literal:"."},{literal:"."}],postprocess:function(t){return t.join("")}},{name:"consecutives",symbols:["year","consecutives$string$3","year"],postprocess:e=>[ya([e[0]]),ya([e[2]])]},{name:"L3",symbols:["L3i"],postprocess:Ve},{name:"L3",symbols:["L3S"],postprocess:Ve},{name:"L3i",symbols:["L3s",{literal:"/"},"L3s"],postprocess:Zs(3)},{name:"L3s",symbols:["L1S"],postprocess:Ve},{name:"L3s",symbols:["L2S"],postprocess:Ve},{name:"L3s",symbols:["L3S"],postprocess:Ve},{name:"L3S",symbols:["ua_season"],postprocess:u5(x7,3)},{name:"L3S",symbols:["xx_season"],postprocess:Ks(0,{type:"Season",level:3})},{name:"ua_season$macrocall$2",symbols:["year"]},{name:"ua_season$macrocall$1$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_season$macrocall$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_season$macrocall$1$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_season$macrocall$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_season$macrocall$1",symbols:["ua_season$macrocall$1$ebnf$1","ua_season$macrocall$2","ua_season$macrocall$1$ebnf$2"]},{name:"ua_season$macrocall$4",symbols:["d21_41"]},{name:"ua_season$macrocall$3$ebnf$1",symbols:["UA"],postprocess:Ve},{name:"ua_season$macrocall$3$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"ua_season$macrocall$3$ebnf$2",symbols:["UA"],postprocess:Ve},{name:"ua_season$macrocall$3$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"ua_season$macrocall$3",symbols:["ua_season$macrocall$3$ebnf$1","ua_season$macrocall$4","ua_season$macrocall$3$ebnf$2"]},{name:"ua_season",symbols:["ua_season$macrocall$1",{literal:"-"},"ua_season$macrocall$3"],postprocess:s2(0,2)},{name:"xx_season",symbols:["dx4",{literal:"-"},"d21_41"],postprocess:va("unspecified","X",!1)},{name:"digit",symbols:["positive_digit"],postprocess:Ve},{name:"digit",symbols:[{literal:"0"}],postprocess:Ve},{name:"digits",symbols:["digit"],postprocess:Ve},{name:"digits",symbols:["digits","digit"],postprocess:Ut},{name:"nd4",symbols:["d4"]},{name:"nd4",symbols:[{literal:"-"},"d4"],postprocess:Ut},{name:"nd3",symbols:["d3"]},{name:"nd3",symbols:[{literal:"-"},"d3"],postprocess:Ut},{name:"nd2",symbols:["d2"]},{name:"nd2",symbols:[{literal:"-"},"d2"],postprocess:Ut},{name:"d4",symbols:["d2","d2"],postprocess:Ut},{name:"d3",symbols:["d2","digit"],postprocess:Ut},{name:"d2",symbols:["digit","digit"],postprocess:Ut},{name:"d3s",symbols:["digit"],postprocess:Ve},{name:"d3s",symbols:["d2"],postprocess:Ve},{name:"d3s",symbols:["d3"],postprocess:Ve},{name:"d3s",symbols:["d3","digits"],postprocess:rs(0)},{name:"d5+",symbols:["positive_digit","d3","digits"],postprocess:bn},{name:"d1x",symbols:[/[1-9X]/],postprocess:Ve},{name:"dx",symbols:["d1x"],postprocess:Ve},{name:"dx",symbols:[{literal:"0"}],postprocess:Ve},{name:"dx2",symbols:["dx","dx"],postprocess:Ut},{name:"dx4",symbols:["dx2","dx2"],postprocess:Ut},{name:"dx4",symbols:[{literal:"-"},"dx2","dx2"],postprocess:Ut},{name:"md",symbols:["m31"],postprocess:Ve},{name:"md",symbols:["m30"],postprocess:Ve},{name:"md$string$1",symbols:[{literal:"0"},{literal:"2"}],postprocess:function(t){return t.join("")}},{name:"md",symbols:["md$string$1"],postprocess:Ve},{name:"mx",symbols:[{literal:"0"},"d1x"],postprocess:Ut},{name:"mx",symbols:[/[1X]/,/[012X]/],postprocess:Ut},{name:"m31x",symbols:[/[0X]/,/[13578X]/],postprocess:Ut},{name:"m31x",symbols:[/[1X]/,/[02]/],postprocess:Ut},{name:"m31x$string$1",symbols:[{literal:"1"},{literal:"X"}],postprocess:function(t){return t.join("")}},{name:"m31x",symbols:["m31x$string$1"],postprocess:Ve},{name:"m30x",symbols:[/[0X]/,/[469]/],postprocess:Ut},{name:"m30x$string$1",symbols:[{literal:"1"},{literal:"1"}],postprocess:function(t){return t.join("")}},{name:"m30x",symbols:["m30x$string$1"],postprocess:Ut},{name:"d29x",symbols:[{literal:"0"},"d1x"],postprocess:Ut},{name:"d29x",symbols:[/[1-2X]/,"dx"],postprocess:Ut},{name:"d30x",symbols:["d29x"],postprocess:Ut},{name:"d30x$string$1",symbols:[{literal:"3"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"d30x",symbols:["d30x$string$1"],postprocess:Ve},{name:"d31x",symbols:["d30x"],postprocess:Ve},{name:"d31x",symbols:[{literal:"3"},/[1X]/],postprocess:Ut},{name:"positive_digit",symbols:[/[1-9]/],postprocess:Ve},{name:"m31$subexpression$1$string$1",symbols:[{literal:"0"},{literal:"1"}],postprocess:function(t){return t.join("")}},{name:"m31$subexpression$1",symbols:["m31$subexpression$1$string$1"]},{name:"m31$subexpression$1$string$2",symbols:[{literal:"0"},{literal:"3"}],postprocess:function(t){return t.join("")}},{name:"m31$subexpression$1",symbols:["m31$subexpression$1$string$2"]},{name:"m31$subexpression$1$string$3",symbols:[{literal:"0"},{literal:"5"}],postprocess:function(t){return t.join("")}},{name:"m31$subexpression$1",symbols:["m31$subexpression$1$string$3"]},{name:"m31$subexpression$1$string$4",symbols:[{literal:"0"},{literal:"7"}],postprocess:function(t){return t.join("")}},{name:"m31$subexpression$1",symbols:["m31$subexpression$1$string$4"]},{name:"m31$subexpression$1$string$5",symbols:[{literal:"0"},{literal:"8"}],postprocess:function(t){return t.join("")}},{name:"m31$subexpression$1",symbols:["m31$subexpression$1$string$5"]},{name:"m31$subexpression$1$string$6",symbols:[{literal:"1"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"m31$subexpression$1",symbols:["m31$subexpression$1$string$6"]},{name:"m31$subexpression$1$string$7",symbols:[{literal:"1"},{literal:"2"}],postprocess:function(t){return t.join("")}},{name:"m31$subexpression$1",symbols:["m31$subexpression$1$string$7"]},{name:"m31",symbols:["m31$subexpression$1"],postprocess:Ve},{name:"m30$subexpression$1$string$1",symbols:[{literal:"0"},{literal:"4"}],postprocess:function(t){return t.join("")}},{name:"m30$subexpression$1",symbols:["m30$subexpression$1$string$1"]},{name:"m30$subexpression$1$string$2",symbols:[{literal:"0"},{literal:"6"}],postprocess:function(t){return t.join("")}},{name:"m30$subexpression$1",symbols:["m30$subexpression$1$string$2"]},{name:"m30$subexpression$1$string$3",symbols:[{literal:"0"},{literal:"9"}],postprocess:function(t){return t.join("")}},{name:"m30$subexpression$1",symbols:["m30$subexpression$1$string$3"]},{name:"m30$subexpression$1$string$4",symbols:[{literal:"1"},{literal:"1"}],postprocess:function(t){return t.join("")}},{name:"m30$subexpression$1",symbols:["m30$subexpression$1$string$4"]},{name:"m30",symbols:["m30$subexpression$1"],postprocess:Ve},{name:"d01_11",symbols:[{literal:"0"},"positive_digit"],postprocess:Ut},{name:"d01_11",symbols:[{literal:"1"},/[0-1]/],postprocess:Ut},{name:"d01_12",symbols:["d01_11"],postprocess:Ve},{name:"d01_12$string$1",symbols:[{literal:"1"},{literal:"2"}],postprocess:function(t){return t.join("")}},{name:"d01_12",symbols:["d01_12$string$1"],postprocess:Ve},{name:"d01_13",symbols:["d01_12"],postprocess:Ve},{name:"d01_13$string$1",symbols:[{literal:"1"},{literal:"3"}],postprocess:function(t){return t.join("")}},{name:"d01_13",symbols:["d01_13$string$1"],postprocess:Ve},{name:"d00_14$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"d00_14",symbols:["d00_14$string$1"],postprocess:Ve},{name:"d00_14",symbols:["d01_13"],postprocess:Ve},{name:"d00_14$string$2",symbols:[{literal:"1"},{literal:"4"}],postprocess:function(t){return t.join("")}},{name:"d00_14",symbols:["d00_14$string$2"],postprocess:Ve},{name:"d00_23$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"d00_23",symbols:["d00_23$string$1"],postprocess:Ve},{name:"d00_23",symbols:["d01_23"],postprocess:Ve},{name:"d01_23",symbols:[{literal:"0"},"positive_digit"],postprocess:Ut},{name:"d01_23",symbols:[{literal:"1"},"digit"],postprocess:Ut},{name:"d01_23",symbols:[{literal:"2"},/[0-3]/],postprocess:Ut},{name:"d01_29",symbols:[{literal:"0"},"positive_digit"],postprocess:Ut},{name:"d01_29",symbols:[/[1-2]/,"digit"],postprocess:Ut},{name:"d01_30",symbols:["d01_29"],postprocess:Ve},{name:"d01_30$string$1",symbols:[{literal:"3"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"d01_30",symbols:["d01_30$string$1"],postprocess:Ve},{name:"d01_31",symbols:["d01_30"],postprocess:Ve},{name:"d01_31$string$1",symbols:[{literal:"3"},{literal:"1"}],postprocess:function(t){return t.join("")}},{name:"d01_31",symbols:["d01_31$string$1"],postprocess:Ve},{name:"d00_59$string$1",symbols:[{literal:"0"},{literal:"0"}],postprocess:function(t){return t.join("")}},{name:"d00_59",symbols:["d00_59$string$1"],postprocess:Ve},{name:"d00_59",symbols:["d01_59"],postprocess:Ve},{name:"d01_59",symbols:["d01_29"],postprocess:Ve},{name:"d01_59",symbols:[/[345]/,"digit"],postprocess:Ut},{name:"d21_24",symbols:[{literal:"2"},/[1-4]/],postprocess:Ut},{name:"d25_41",symbols:[{literal:"2"},/[5-9]/],postprocess:Ut},{name:"d25_41",symbols:[{literal:"3"},"digit"],postprocess:Ut},{name:"d25_41",symbols:[{literal:"4"},/[01]/],postprocess:Ut},{name:"d21_41",symbols:["d21_24"],postprocess:Ve},{name:"d21_41",symbols:["d25_41"],postprocess:Ve},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1",{literal:" "}],postprocess:function(t){return t[0].concat([t[1]])}},{name:"_",symbols:["_$ebnf$1"]}],PX="edtf",Sg={Lexer:MX,ParserRules:NX,ParserStart:PX};var WI={level:2,types:[],seasonIntervals:!1,seasonUncertainty:!1};function OX(e,t){return e.levelt.level?1:0}function LX(e,t={}){if(!e.length)return e;let{level:r,types:n,seasonIntervals:i,seasonUncertainty:a}={...WI,...t};return e.filter(o=>i&&RX(o)||a&&BX(o)?!0:!(o.level>r||n.length&&!n.includes(o.type)))}function RX({type:e,values:t}){return e==="Interval"&&t[0].type==="Season"}function BX({type:e,level:t}){return e==="Season"&&t>=3}function $X(e){return e.length<2?e[0]:e.sort(OX)[0]}function Js(e,t={}){try{let r=UX(),n=$X(LX(r.feed(e).results,t));if(!n)throw new Error("edtf: No possible parsings (@EOS)");return n}catch(r){throw r.message+=` for "${e}"`,r}}function UX(){return new HI.default.Parser(Sg.ParserRules,Sg.ParserStart)}var gr=class{static get type(){return this.name}static parse(t){return Js(t,{types:[this.type]})}static from(t){return t instanceof this?t:new this(t)}static UTC(...t){let r=Date.UTC(...t);return t[0]>=0&&t[0]<100&&(r=zX(new Date(r))),r}get type(){return this.constructor.type}get edtf(){return this.toEDTF()}get isEDTF(){return!0}toJSON(){return this.toEDTF()}toString(){return this.toEDTF()}toLocaleString(...t){return this.localize(...t)}inspect(){return this.toEDTF()}valueOf(){return this.min}[Symbol.toPrimitive](t){return t==="number"?this.valueOf():this.toEDTF()}covers(t){return this.min<=t.min&&this.max>=t.max}compare(t){if(t.min==null||t.max==null)return null;let[r,n,i,a]=[this.min,this.max,t.min,t.max];return r!==i?r3?0:Number(t))}get precision(){return aF.get(this)}set uncertain(t){oF.set(this,this.bits(t))}get uncertain(){return oF.get(this)}set approximate(t){sF.set(this,this.bits(t))}get approximate(){return sF.get(this)}set unspecified(t){lF.set(this,new ct(t))}get unspecified(){return lF.get(this)}get atomic(){return!(this.precision||this.unspecified.value)}get min(){if(this.unspecified.value&&this.year<0){let t=this.unspecified.max(this.values.map(e.pad));return t[0]=-t[0],new e({values:t}).getTime()}return this.getTime()}get max(){return this.atomic?this.getTime():this.next().getTime()-1}get year(){return this.getUTCFullYear()}get month(){return this.getUTCMonth()}get date(){return this.getUTCDate()}get hours(){return this.getUTCHours()}get minutes(){return this.getUTCMinutes()}get seconds(){return this.getUTCSeconds()}get values(){switch(this.precision){case 1:return[this.year];case 2:return[this.year,this.month];case 3:return[this.year,this.month,this.date];default:return[this.year,this.month,this.date,this.hours,this.minutes,this.seconds]}}next(t=1){let{values:r,unspecified:n,uncertain:i,approximate:a}=this;if(n.value){let o=r[0]<0;r=t<0^o?n.min(r.map(e.pad)):n.max(r.map(e.pad)),o&&(r[0]=-r[0])}return r.push(r.pop()+t),new e({values:r,unspecified:n,uncertain:i,approximate:a})}prev(t=1){return this.next(-t)}*[Symbol.iterator](){let t=this;for(;t<=this.max;)yield t,t=t.next()}toEDTF(){if(!this.precision)return this.toISOString();let t=this.year<0?"-":"",r=this.values.map(e.pad);return this.unspecified.value?t+this.unspecified.masks(r).join("-"):(this.uncertain.value&&(r=this.uncertain.marks(r,"?")),this.approximate.value&&(r=this.approximate.marks(r,"~").map(n=>n.replace(/(~\?)|(\?~)/,"%"))),t+r.join("-"))}format(...t){return f0(this,...t)}static pad(t,r=0){if(!r){let n=fY(t);return n<10?`000${n}`:n<100?`00${n}`:n<1e3?`0${n}`:`${n}`}return r===1&&(t=t+1),t<10?`0${t}`:`${t}`}bits(t){return t===!0&&(t=dY[this.precision]),new ct(t)}};XI(fn,gr);var c5=fn.pad;var{abs:mY}=Math,uF=new WeakMap,cF=new WeakMap,_7=class e extends gr{constructor(t){switch(super(),uF.set(this,[]),typeof t){case"number":this.year=t;break;case"string":t=e.parse(t);case"object":Array.isArray(t)&&(t={values:t}),mr(t!==null),t.type&&mr.equal("Year",t.type),mr(t.values),mr(t.values.length),this.year=t.values[0],this.significant=t.significant;break;case"undefined":this.year=new Date().getUTCFullYear();break;default:throw new RangeError("Invalid year value")}}get year(){return this.values[0]}set year(t){this.values[0]=Number(t)}get significant(){return cF.get(this)}set significant(t){cF.set(this,Number(t))}get values(){return uF.get(this)}get min(){return gr.UTC(this.year,0)}get max(){return gr.UTC(this.year+1,0)-1}toEDTF(){let t=mY(this.year),r=this.significant?`S${this.significant}`:"";return t<=9999?`${this.year<0?"-":""}${c5(this.year)}${r}`:`Y${this.year}${r}`}};var{abs:fF,floor:hY}=Math,pF=new WeakMap,E7=class e extends gr{constructor(t){switch(super(),pF.set(this,[]),this.uncertain=!1,this.approximate=!1,typeof t){case"number":this.decade=t;break;case"string":t=e.parse(t);case"object":Array.isArray(t)&&(t={values:t}),mr(t!==null),t.type&&mr.equal("Decade",t.type),mr(t.values),mr(t.values.length===1),this.decade=t.values[0],this.uncertain=!!t.uncertain,this.approximate=!!t.approximate;break;case"undefined":this.year=new Date().getUTCFullYear();break;default:throw new RangeError("Invalid decade value")}}get decade(){return this.values[0]}set decade(t){t=hY(Number(t)),mr(fF(t)<1e3,`invalid decade: ${t}`),this.values[0]=t}get year(){return this.values[0]*10}set year(t){this.decade=t/10}get values(){return pF.get(this)}get min(){return fn.UTC(this.year,0)}get max(){return fn.UTC(this.year+10,0)-1}toEDTF(){let t=e.pad(this.decade);return this.uncertain&&(t=t+"?"),this.approximate&&(t=(t+"~").replace(/\?~/,"%")),t}static pad(t){let r=fF(t),n=r===t?"":"-";return r<10?`${n}00${r}`:r<100?`${n}0${r}`:`${t}`}};var{abs:dF,floor:gY}=Math,mF=new WeakMap,k7=class e extends gr{constructor(t){switch(super(),mF.set(this,[]),this.uncertain=!1,this.approximate=!1,typeof t){case"number":this.century=t;break;case"string":t=e.parse(t);case"object":Array.isArray(t)&&(t={values:t}),mr(t!==null),t.type&&mr.equal("Century",t.type),mr(t.values),mr(t.values.length===1),this.century=t.values[0],this.uncertain=!!t.uncertain,this.approximate=!!t.approximate;break;case"undefined":this.year=new Date().getUTCFullYear();break;default:throw new RangeError("Invalid century value")}}get century(){return this.values[0]}set century(t){t=gY(Number(t)),mr(dF(t)<100,`invalid century: ${t}`),this.values[0]=t}get year(){return this.values[0]*100}set year(t){this.century=t/100}get values(){return mF.get(this)}get min(){return fn.UTC(this.year,0)}get max(){return fn.UTC(this.year+100,0)-1}toEDTF(){let t=e.pad(this.century);return this.uncertain&&(t=t+"?"),this.approximate&&(t=(t+"~").replace(/\?~/,"%")),t}static pad(t){let r=dF(t),n=r===t?"":"-";return r<10?`${n}0${r}`:`${t}`}};var hF=new WeakMap,gF=new WeakMap,vF=new WeakMap,yF=new WeakMap,u2=class e extends gr{constructor(t){super();let r,n,i;switch(vF.set(this,[]),typeof t){case"number":this.year=t,this.season=arguments[1]||21;break;case"string":t=e.parse(t);case"object":Array.isArray(t)&&(t={values:t}),mr(t!==null),t.type&&mr.equal("Season",t.type),mr(t.values),mr.equal(2,t.values.length),this.year=t.values[0],this.season=t.values[1],{unspecified:i,uncertain:r,approximate:n}=t;break;case"undefined":this.year=new Date().getUTCFullYear(),this.season=21;break;default:throw new RangeError("Invalid season value")}this.unspecified=i,this.uncertain=r,this.approximate=n}get year(){return this.values[0]}set year(t){this.values[0]=Number(t)}get season(){return this.values[1]}set season(t){this.values[1]=bF(Number(t))}get values(){return vF.get(this)}set uncertain(t){gF.set(this,new ct(t))}get uncertain(){return gF.get(this)}set approximate(t){hF.set(this,new ct(t))}get approximate(){return hF.get(this)}set unspecified(t){yF.set(this,new ct(t))}get unspecified(){return yF.get(this)}next(t=1){let{season:r,year:n,unspecified:i,approximate:a,uncertain:o}=this;switch(!0){case(r>=21&&r<=36):[n,r]=Dg(n,r,t,r-(r-21)%4,4);break;case(r>=37&&r<=39):[n,r]=Dg(n,r,t,37,3);break;case(r>=40&&r<=41):[n,r]=Dg(n,r,t,40,2);break;default:throw new RangeError(`Cannot compute next/prev for season ${r}`)}return new e({values:[n,r],approximate:a,uncertain:o,unspecified:i})}prev(t=1){return this.next(-t)}get min(){switch(this.season){case 21:case 25:case 32:case 33:case 40:case 37:return gr.UTC(this.year,0);case 22:case 26:case 31:case 34:return gr.UTC(this.year,3);case 23:case 27:case 30:case 35:case 41:return gr.UTC(this.year,6);case 24:case 28:case 29:case 36:return gr.UTC(this.year,9);case 38:return gr.UTC(this.year,4);case 39:return gr.UTC(this.year,8);default:return gr.UTC(this.year,0)}}get max(){let t=this.unspecified.max([c5(this.year)]);switch(this.season){case 21:case 25:case 32:case 33:return gr.UTC(t,3)-1;case 22:case 26:case 31:case 34:case 40:return gr.UTC(t,6)-1;case 23:case 27:case 30:case 35:return gr.UTC(t,9)-1;case 24:case 28:case 29:case 36:case 41:case 39:return gr.UTC(t+1,0)-1;case 37:return gr.UTC(t,5)-1;case 38:return gr.UTC(t,9)-1;default:return gr.UTC(t+1,0)-1}}toEDTF(){let t=this.year<0?"-":"",r=[c5(this.year),String(this.season)];return this.unspecified.value?t+this.unspecified.masks(r).join("-"):(this.uncertain.value&&(r=this.uncertain.marks(r,"?")),this.approximate.value&&(r=this.approximate.marks(r,"~").map(n=>n.replace(/(~\?)|(\?~)/,"%"))),t+r.join("-"))}};function bF(e){if(isNaN(e)||e<21||e===1/0)throw new RangeError(`invalid division of year: ${e}`);return e}function Dg(e,t,r,n,i){let a=t+r-n;return[e+Math.floor(a/i),bF(n+(a%i+i)%i)]}var xF=new WeakMap,p0=class e extends gr{constructor(...t){switch(super(),xF.set(this,[null,null]),t.length){case 2:this.lower=t[0],this.upper=t[1];break;case 1:switch(typeof t[0]){case"string":t[0]=e.parse(t[0]);case"object":Array.isArray(t[0])&&(t[0]={values:t[0]});{let[r]=t;mr(r!==null),r.type&&mr.equal("Interval",r.type),mr(r.values),mr(r.values.length<3),this.lower=r.values[0],this.upper=r.values[1],this.earlier=r.earlier,this.later=r.later}break;default:this.lower=t[0]}break;case 0:break;default:throw new RangeError(`invalid interval value: ${t}`)}}get lower(){return this.values[0]}set lower(t){if(t==null)return this.values[0]=null;if(t===1/0||t===-1/0)return this.values[0]=1/0;if(t=wF(t),t>=this.upper&&this.upper!=null)throw new RangeError(`invalid lower bound: ${t}`);this.values[0]=t}get upper(){return this.values[1]}set upper(t){if(t==null)return this.values[1]=null;if(t===1/0)return this.values[1]=1/0;if(t=wF(t),this.lower!==null&&this.lower!==1/0&&t<=this.lower)throw new RangeError(`invalid upper bound: ${t}`);this.values[1]=t}get finite(){return this.lower!=null&&this.lower!==1/0&&this.upper!=null&&this.upper!==1/0}*[Symbol.iterator](){if(!this.finite)throw Error("cannot iterate infinite interval");yield*this.lower.through(this.upper)}get values(){return xF.get(this)}get min(){let t=this.lower;return t?t===1/0?-1/0:t.min:null}get max(){let t=this.upper;return t?t===1/0?1/0:t.max:null}toEDTF(){return this.values.map(t=>t===1/0?"..":t?t.edtf:"").join("/")}};function wF(e){try{return fn.from(e)}catch{return u2.from(e)}}var{isArray:c2}=Array,_F=new WeakMap,f2=class extends gr{constructor(...t){if(super(),_F.set(this,[]),t.length>1&&(t=[t]),t.length)switch(typeof t[0]){case"string":t[0]=new.target.parse(t[0]);case"object":c2(t[0])&&(t[0]={values:t[0]});{let[r]=t;mr(r!==null),r.type&&mr.equal(this.type,r.type),mr(r.values),this.concat(...r.values),this.earlier=!!r.earlier,this.later=!!r.later}break;default:throw new RangeError(`invalid ${this.type} value: ${t}`)}}get values(){return _F.get(this)}get length(){return this.values.length}get empty(){return this.length===0}get first(){let t=this.values[0];return c2(t)?t[0]:t}get last(){let t=this.values[this.length-1];return c2(t)?t[0]:t}clear(){return this.values.length=0,this}concat(...t){for(let r of t)this.push(r);return this}push(t){return c2(t)?(mr.equal(2,t.length),this.values.push(t.map(r=>fn.from(r)))):this.values.push(fn.from(t))}*[Symbol.iterator](){for(let t of this.values)c2(t)?yield*t[0].through(t[1]):yield t}get min(){return this.earlier?-1/0:this.empty?0:this.first.min}get max(){return this.later?1/0:this.empty?0:this.last.max}content(){return this.values.map(t=>c2(t)?t.map(r=>r.edtf).join(".."):t.edtf).join(",")}toEDTF(){return this.wrap(this.empty?"":`${this.earlier?"..":""}${this.content()}${this.later?"..":""}`)}wrap(t){return`{${t}}`}};var A7=class extends f2{static parse(t){return Js(t,{types:["Set"]})}get type(){return"Set"}wrap(t){return`[${t}]`}};var vY=/^\d{5,}$/;function ns(...e){if(!e.length)return new fn;if(e.length===1)switch(typeof e[0]){case"object":return new(S7[e[0].type]||fn)(e[0]);case"number":return new fn(e[0]);case"string":if(vY.test(e[0]))return new fn(Number(e[0]))}let t=Js(...e);return new S7[t.type](t)}function kF(e,t){return!(e[1]!==t[1]||e[2]&&t[2]&&e[2]!==t[2]||e[3]&&t[3]&&e[3]!==t[3])}function C7(e,t){return!(e[1]>t[1]||e[2]&&t[2]&&e[2]>t[2]||e[3]&&t[3]&&e[3]>t[3])}function I7(e,t){return!(e[1]i!==a),e.each(n(t,r)))}function at(e){var t={};function r(o,s){var l=!1,u=Object.keys(t).map(function(d){return t[d]}),c,f;for(c=0;c127,m=!0,g.event.key===void 0?m=!1:Array.isArray(g.event.key)?g.event.key.map(function(y){return y.toLowerCase()}).indexOf(b.key.toLowerCase())===-1&&(m=!1):b.key.toLowerCase()!==g.event.key.toLowerCase()&&(m=!1)),!m&&(v||g.event.modifiers.altKey)&&(m=b.keyCode===g.event.keyCode),!(!m||!(b.ctrlKey&&b.altKey)&&(b.ctrlKey!==g.event.modifiers.ctrlKey||b.altKey!==g.event.modifiers.altKey)||b.metaKey!==g.event.modifiers.metaKey||x&&b.shiftKey!==g.event.modifiers.shiftKey)}}function n(o){r(o,!0)}function i(o){var s=G(o.target).node().tagName;s==="INPUT"||s==="SELECT"||s==="TEXTAREA"||r(o,!1)}function a(o){return o=o||G(document),o.on("keydown.capture."+e,n,!0),o.on("keydown.bubble."+e,i,!1),a}return a.unbind=function(o){return t=[],o=o||G(document),o.on("keydown.capture."+e,null),o.on("keydown.bubble."+e,null),a},a.clear=function(){return t={},a},a.off=function(o,s){for(var l=ot([].concat(o)),u=0;u=7){var g=Math.pow(2,d-1),x=Math.pow(2,d-6),b=g-x/2,m=g+x/2-1;return f>=b&&f<=m&&p>=b&&p<=m}return!1}function u(){for(var c=hr(t/(2*Math.PI),r),f=s(Math.round(c),n[0],n[1]),p=0,d=Math.pow(2,f)-1,g=Math.log(r)*Math.LOG2E,x=Math.pow(2,c-f+g),b=[(i[0]-t/2)/x,(i[1]-t/2)/x],m=M1(s(Math.floor(-b[0])-a,p,d+1),s(Math.ceil(e[0]/x-b[0])+a,p,d+1)),v=M1(s(Math.floor(-b[1])-a,p,d+1),s(Math.ceil(e[1]/x-b[1])+a,p,d+1)),y=[],_=0;_=a&&_<=v.length-a&&A>=a&&A<=m.length-a?y.unshift([I,w,f]):y.push([I,w,f])}return y.translate=b,y.scale=x,y}return u.getTiles=function(c){var f=[c.scale()*Math.PI-c.translate()[0],c.scale()*Math.PI-c.translate()[1]];this.size(c.clipExtent()[1]).scale(c.scale()*2*Math.PI).translate(c.translate());var p=u(),d=p.scale;return p.map(function(g){if(o&&l(g))return!1;var x=g[0]*d-f[0],b=g[1]*d-f[1];return{id:g.toString(),xyz:g,extent:Pe(c.invert([x,b+d]),c.invert([x+d,b]))}}).filter(Boolean)},u.getGeoJSON=function(c){var f=u.getTiles(c).map(function(p){return{type:"Feature",properties:{id:p.id,name:p.id},geometry:{type:"Polygon",coordinates:[p.extent.polygon()]}}});return{type:"FeatureCollection",features:f}},u.tileSize=function(c){return arguments.length?(r=c,u):r},u.zoomExtent=function(c){return arguments.length?(n=c,u):n},u.size=function(c){return arguments.length?(e=c,u):e},u.scale=function(c){return arguments.length?(t=c,u):t},u.translate=function(c){return arguments.length?(i=c,u):i},u.margin=function(c){return arguments.length?(a=+c,u):a},u.skipNullIsland=function(c){return arguments.length?(o=c,u):o},u}function d2(e,t,r){e.each(function(){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0);for(var i in r)n[i]=r[i];this.dispatchEvent(n)})}var AF=7;function f5(e,t){var r=e*(t?3.28084:1),n;return t?r>=5280?(r/=5280,n="miles"):n="feet":r>=1e3?(r/=1e3,n="kilometers"):n="meters",F("units."+n,{quantity:r.toLocaleString(fe.localeCode(),{maximumSignificantDigits:4})})}function IF(e,t){var r=fe.localeCode(),n=e*(t?10.7639111056:1),i,a,o,s="",l="";return t?(n>=6969600?(i=n/27878400,s="square_miles"):(i=n,s="square_feet"),n>4356&&n<4356e4&&(a=n/43560,l="acres")):(n>=25e4?(i=n/1e6,s="square_kilometers"):(i=n,s="square_meters"),n>1e3&&n<1e7&&(a=n/1e4,l="hectares")),o=F("units."+s,{quantity:i.toLocaleString(r,{maximumSignificantDigits:4})}),a?F("units.area_pair",{area1:o,area2:F("units."+l,{quantity:a.toLocaleString(r,{maximumSignificantDigits:2})})}):o}function FF(e,t,r){var n=r-t;return((e-t)%n+n)%n+t}function DF(e,t,r){return Math.max(t,Math.min(e,r))}function SF(e,t){e=Number(e),t=Number(t);let r=Math.pow(10,t);return Math.round(e*r)/r}function CF(e,t,r){var n,i=fe.localeCode(),a=Math.floor(Math.abs(e)),o=(Math.abs(e)-a)*60,s=Math.floor(o),l=(o-s)*60,u=SF(l,8),c=SF(u,0);return c===60&&(c=0,s+=1,s===60&&(s=0,a+=1)),n=F("units.arcdegrees",{quantity:a.toLocaleString(i)})+(s!==0||c!==0?F("units.arcminutes",{quantity:s.toLocaleString(i)}):"")+(c!==0?F("units.arcseconds",{quantity:c.toLocaleString(i)}):""),e===0?n:F("units.coordinate",{coordinate:n,direction:F("units."+(e>0?t:r))})}function as(e){return F("units.coordinate_pair",{latitude:CF(DF(e[1],-90,90),"north","south"),longitude:CF(FF(e[0],-180,180),"east","west")})}function m2(e){return F("units.coordinate_pair",{latitude:DF(e[1],-90,90).toFixed(AF),longitude:FF(e[0],-180,180).toFixed(AF)})}function D7(e){let t=[{condition:/^\s*(-?)\s*(\d+)\s+(\d+)\s+(\d+\.?\d*)\s*\,\s*(-?)\s*(\d+)\s+(\d+)\s+(\d+\.?\d*)\s*$/,parser:function(r){let n=this.condition.exec(r),i=+n[2]+ +n[3]/60+ +n[4]/3600,a=+n[6]+ +n[7]/60+ +n[8]/3600,o=n[1]==="-"?-i:i,s=n[5]==="-"?-a:a;return[o,s]}},{condition:/^\s*(-?)\s*(\d+)\s+(\d+\.?\d*)\s*\,\s*(-?)\s*(\d+)\s+(\d+\.?\d*)\s*$/,parser:function(r){let n=this.condition.exec(r),i=+n[2]+ +n[3]/60,a=+n[5]+ +n[6]/60,o=n[1]==="-"?-i:i,s=n[4]==="-"?-a:a;return[o,s]}}];for(let r of t)if(r.condition.test(e))return r.parser(e);return null}var fe=Tg(),F=fe.t;function Tg(){let e={},t={},r={},n={},i="en-US",a=["en-US","en"],o="en",s="ltr",l=!1,u={},c={};e.localeCode=()=>i,e.localeCodes=()=>a,e.languageCode=()=>o,e.textDirection=()=>s,e.usesMetric=()=>l,e.languageNames=()=>u,e.scriptNames=()=>c;let f=[];e.preferredLocaleCodes=function(b){return arguments.length?(typeof b=="string"?f=b.split(/,|;| /gi).filter(Boolean):f=b,e):f};var p;e.ensureLoaded=()=>{if(p)return p;let b=["languages","locales"],m={general:"locales",tagging:Jo+"dist/translations"},v=dt.fileMap();for(let y in m){let _=`locales_index_${y}`;v[_]||(v[_]=m[y]+"/index.min.json"),b.push(_)}return p=Promise.all(b.map(y=>dt.get(y))).then(y=>{t=y[0],r=y[1];let _=y.slice(2),w=(f||[]).concat(br().browserLocales).concat(["en"]);a=d(w),i=a[0];let A=[];return _.forEach((I,E)=>{let k=a.findIndex(function(S){return S==="en"&&I[S]&&I[S].pct===1});a.slice(0,k+1).forEach(function(S){let D=Object.keys(m)[E],P=Object.values(m)[E];I[S]&&A.push(e.loadLocale(S,D,P))})}),Promise.all(A)}).then(()=>{g()}).catch(y=>console.error(y))};function d(b){let m=r,v=[];for(let y in b){let _=b[y];if(m[_]&&v.push(_),_.includes("-")){let w=_.split("-")[0];m[w]&&v.push(w)}}return ot(v)}function g(){if(!i)return;o=i.split("-")[0];let b=r[i]||r[o],m=pr(window.location.hash);m.rtl==="true"?s="rtl":m.rtl==="false"?s="ltr":s=b&&b.rtl?"rtl":"ltr";let v=i;v.toLowerCase()==="en-us"&&(v="en"),u=n.general[v].languageNames||n.general[o].languageNames,c=n.general[v].scriptNames||n.general[o].scriptNames,l=i.slice(-3).toLowerCase()!=="-us"}e.loadLocale=(b,m,v)=>{if(b.toLowerCase()==="en-us"&&(b="en"),n[m]&&n[m][b])return Promise.resolve(b);let y=dt.fileMap(),_=`locale_${m}_${b}`;return y[_]||(y[_]=`${v}/${b}.min.json`),dt.get(_).then(w=>(n[m]||(n[m]={}),n[m][b]=w[b],b))},e.pluralRule=function(b){return x(b,i)};function x(b,m){let v="Intl"in window&&Intl.PluralRules&&new Intl.PluralRules(m);return v?v.select(b):b===1?"one":"other"}return e.tInfo=function(b,m,v){let y=b.trim(),_="general";if(y[0]==="_"){let S=y.split(".");_=S[0].slice(1),y=S.slice(1).join(".")}v=v||i;let w=y.split(".").map(S=>S.replace(//g,".")).reverse(),A=v;A.toLowerCase()==="en-us"&&(A="en");let I=n&&n[_]&&n[_][A];for(;I!==void 0&&w.length;)I=I[w.pop()];if(I!==void 0){if(m){if(typeof I=="object"&&Object.keys(I).length){let S=Object.values(m).find(function(D){return typeof D=="number"});if(S!==void 0){let D=x(S,v);I[D]?I=I[D]:I=Object.values(I)[0]}}if(typeof I=="string")for(let S in m){let D=m[S];typeof D=="number"&&(D.toLocaleString?D=D.toLocaleString(v,{style:"decimal",useGrouping:!0,minimumFractionDigits:0}):D=D.toString());let P=`{${S}}`,O=new RegExp(P,"g");I=I.replace(O,D)}}if(typeof I=="string")return{text:I,locale:v}}let E=a.indexOf(v);if(E>=0&&Eb.find(m=>e.hasTextForStringId(m))||b[b.length-1],e.t=function(b,m,v){return e.tInfo(b,m,v).text},e.t.html=function(b,m,v){m=Object.assign({},m);for(var y in m)typeof m[y]=="string"&&(m[y]=a5(m[y])),typeof m[y]=="object"&&typeof m[y].html=="string"&&(m[y]=m[y].html);let _=e.tInfo(b,m,v);return _.text?`${_.text}`:""},e.t.append=function(b,m,v){let y=function(_){let w=e.tInfo(b,m,v);return _.append("span").attr("class","localized-text").attr("lang",w.locale||"und").text((m&&m.prefix||"")+w.text+(m&&m.suffix||""))};return y.stringId=b,y},e.languageName=(b,m)=>{if(u&&u[b])return u[b];if(m&&m.localOnly)return null;let v=t[b];if(v){if(v.nativeName)return e.t("translate.language_and_code",{language:v.nativeName,code:b});if(v.base&&v.script){let y=v.base;if(u&&u[y]){let _=v.script,w=c&&c[_]||_;return e.t("translate.language_and_code",{language:u[y],code:w})}else if(t[y]&&t[y].nativeName)return e.t("translate.language_and_code",{language:t[y].nativeName,code:b})}}return b},e.floatFormatter=b=>"Intl"in window&&"NumberFormat"in Intl&&"formatToParts"in Intl.NumberFormat.prototype?(m,v)=>m.toLocaleString(b,{minimumFractionDigits:v,maximumFractionDigits:v===void 0?20:v}):(m,v)=>v===void 0?m.toString():m.toFixed(v),e.floatParser=b=>{let m=T=>+T.trim();if(!("Intl"in window&&"NumberFormat"in Intl))return m;let v=new Intl.NumberFormat(b,{maximumFractionDigits:20});if(!("formatToParts"in v))return m;let y=v.formatToParts(-12345.6),_=Array.from({length:10}).map((T,M)=>v.format(M)),w=new Map(_.map((T,M)=>[T,M])),A=y.find(T=>T.type==="literal"),I=A&&new RegExp(`[${A.value}]`,"g"),E=y.find(T=>T.type==="group"),k=E&&new RegExp(`[${E.value}]`,"g"),S=y.find(T=>T.type==="decimal"),D=S&&new RegExp(`[${S.value}]`),P=new RegExp(`[${_.join("")}]`,"g"),O=T=>w.get(T);return T=>(T=T.trim(),I&&(T=T.replace(I,"")),k&&(T=T.replace(k,"")),D&&(T=T.replace(D,".")),T=T.replace(P,O),T?+T:NaN)},e.decimalPlaceCounter=b=>{var m,v,y;if("Intl"in window&&"NumberFormat"in Intl){let _=new Intl.NumberFormat(b,{maximumFractionDigits:20});if("formatToParts"in _){let w=_.formatToParts(-12345.6),A=w.find(k=>k.type==="literal");m=A&&new RegExp(`[${A.value}]`,"g");let I=w.find(k=>k.type==="group");v=I&&new RegExp(`[${I.value}]`,"g");let E=w.find(k=>k.type==="decimal");y=E&&new RegExp(`[${E.value}]`)}}return _=>{_=_.trim(),m&&(_=_.replace(m,"")),v&&(_=_.replace(v,""));let w=_.split(y||".");return w&&w[1]&&w[1].length||0}},e}function ai(e){let r={},n={};return r.collection=e,r.item=i=>{if(n[i])return n[i];let a=r.collection.find(o=>o.id===i);return a&&(n[i]=a),a},r.index=i=>r.collection.findIndex(a=>a.id===i),r.matchGeometry=i=>ai(r.collection.filter(a=>a.matchGeometry(i))),r.matchAllGeometry=i=>ai(r.collection.filter(a=>a&&a.matchAllGeometry(i))),r.matchAnyGeometry=i=>ai(r.collection.filter(a=>i.some(o=>a.matchGeometry(o)))),r.fallback=i=>{let a=i;return a==="vertex"&&(a="point"),r.item(a)},r.search=(i,a,o)=>{if(!i)return r;i=i.toLowerCase().trim();function s(k){let S=k.indexOf(i);return S===0||k[S-1]===" "}function l(k){return k.indexOf(i)===0}function u(k,S){return function(P,O){let T=P[k](),M=O[k]();if(S){let N=U=>U.some(B=>B===i)?U.find(B=>B===i):U.filter(B=>B.includes(i)).sort((B,$)=>B.length-$.length)[0];T=N([T].concat(P[S]())),M=N([M].concat(O[S]()))}if(i===T)return-1;if(i===M)return 1;let R=O.originalScore-P.originalScore;return R!==0||(R=T.indexOf(i)-M.indexOf(i),R!==0)?R:T.length-M.length}}let c=r.collection;if(Array.isArray(o)){let k=An.locationSetsAt(o);c=c.filter(S=>!S.locationSetID||k[S.locationSetID])}let f=c.filter(k=>k.searchable!==!1&&k.suggestion!==!0),p=c.filter(k=>k.suggestion===!0),d=f.filter(k=>s(k.searchName())||k.searchAliases().some(s)).sort(u("searchName","searchAliases")),g=p.filter(k=>l(k.searchName())).sort(u("searchName")),x=f.filter(k=>s(k.searchNameStripped())||k.searchAliasesStripped().some(s)).sort(u("searchNameStripped","searchAliasesStripped")),b=p.filter(k=>l(k.searchNameStripped())).sort(u("searchNameStripped")),m=f.filter(k=>(k.terms()||[]).some(s)),v=p.filter(k=>(k.terms()||[]).some(s)),y=f.filter(k=>Object.values(k.tags||{}).filter(S=>S!=="*").some(s)),_=f.map(k=>({preset:k,dist:g2(i,k.searchName())})).filter(k=>k.dist+Math.min(i.length-k.preset.searchName().length,0)<3).sort((k,S)=>k.dist-S.dist).map(k=>k.preset),w=p.map(k=>({preset:k,dist:g2(i,k.searchName())})).filter(k=>k.dist+Math.min(i.length-k.preset.searchName().length,0)<1).sort((k,S)=>k.dist-S.dist).map(k=>k.preset),A=f.filter(k=>(k.terms()||[]).some(S=>g2(i,S)+Math.min(i.length-S.length,0)<3)),I=[];i.includes("=")&&(I=f.filter(k=>k.tags&&Object.keys(k.tags).some(S=>S+"="+k.tags[S]===i)).concat(f.filter(k=>k.tags&&Object.keys(k.tags).some(S=>s(S+"="+k.tags[S])))));let E=d.concat(g,x,b,m,v,y,_,w,A,I).slice(0,49);return a&&(typeof a=="string"?E.push(r.fallback(a)):a.forEach(k=>E.push(r.fallback(k)))),ai(ot(E))},r}function Mg(e,t,r){let n=Object.assign({},t),i,a;return n.id=e,n.members=ai((t.members||[]).map(o=>r[o]).filter(Boolean)),n.geometry=n.members.collection.reduce((o,s)=>{for(let l in s.geometry){let u=s.geometry[l];o.indexOf(u)===-1&&o.push(u)}return o},[]),n.matchGeometry=o=>n.geometry.indexOf(o)>=0,n.matchAllGeometry=o=>n.members.collection.some(s=>s.matchAllGeometry(o)),n.matchScore=()=>-1,n.name=()=>F(`_tagging.presets.categories.${e}.name`,{default:e}),n.nameLabel=()=>F.append(`_tagging.presets.categories.${e}.name`,{default:e}),n.terms=()=>[],n.searchName=()=>(i||(i=(n.suggestion?n.originalName:n.name()).toLowerCase()),i),n.searchNameStripped=()=>(a||(a=n.searchName(),a.normalize&&(a=a.normalize("NFD")),a=a.replace(/[\u0300-\u036f]/g,"")),a),n.searchAliases=()=>[],n.searchAliasesStripped=()=>[],n}function Ng(e,t,r){r=r||{};let n=Object.assign({},t),i=e;return t.baseKey&&t.index&&(i=t.baseKey+"_multiple"),n.id=e,n.safeid=h0(e),n.matchGeometry=a=>!n.geometry||n.geometry.indexOf(a)!==-1,n.matchAllGeometry=a=>!n.geometry||a.every(o=>n.geometry.indexOf(o)!==-1),n.t=(a,o)=>F(fe.coalesceStringIds([`custom_presets.fields.${i}.${a}`,`_tagging.presets.fields.${i}.${a}`]),o),n.t.html=(a,o)=>F.html(fe.coalesceStringIds([`custom_presets.fields.${i}.${a}`,`_tagging.presets.fields.${i}.${a}`]),o),n.t.append=(a,o)=>F.append(fe.coalesceStringIds([`custom_presets.fields.${i}.${a}`,`_tagging.presets.fields.${i}.${a}`]),o),n.hasTextForStringId=a=>fe.hasTextForStringId(`custom_presets.fields.${i}.${a}`)||fe.hasTextForStringId(`_tagging.presets.fields.${i}.${a}`),n.resolveReference=a=>{let o=/^\{(.*)\}$/,s=(t[a]||"").match(o);if(s){let l=r[s[1]];if(l)return l;console.error(`Unable to resolve referenced field: ${s[1]}`)}return n},n.title=()=>n.overrideLabel||n.resolveReference("label").t("label",{default:e,index:t.index}),n.label=()=>n.overrideLabel?a=>a.text(n.overrideLabel):n.resolveReference("label").t.append("label",{default:e,index:t.index}),n.placeholder=()=>n.resolveReference("placeholder").t("placeholder",{default:""}),n.originalTerms=(n.terms||[]).join(),n.terms=()=>n.resolveReference("label").t("terms",{default:n.originalTerms}).toLowerCase().trim().split(/\s*,+\s*/),n.increment=n.type==="number"?n.increment||1:void 0,n}var MF=xt(g5());function g0(e,t,r,n,i){n=n||{},i=i||{};let a=Object.assign({},t),o=r||!1,s,l,u,c,f=/^\{(.*)\}$/;a.id=e,a.safeid=h0(e),a.originalTerms=(a.terms||[]).join(),a.originalName=a.name||"",a.originalAliases=(a.aliases||[]).join(` +`),a.originalScore=a.matchScore||1,a.originalReference=a.reference||{},a.originalFields=a.fields||[],a.originalMoreFields=a.moreFields||[],a.fields=x=>d("fields",x),a.moreFields=x=>d("moreFields",x),a.tags=a.tags||{},a.addTags=a.addTags||a.tags,a.removeTags=a.removeTags||a.addTags,a.geometry=a.geometry||[],a.matchGeometry=x=>a.geometry.indexOf(x)>=0,a.matchAllGeometry=x=>x.every(a.matchGeometry),a.matchScore=x=>{let b=a.tags,m={},v=0;for(let _ in b)if(m[_]=!0,x[_]===b[_])v+=a.originalScore;else if(b[_]==="*"&&_ in x)v+=a.originalScore/2;else return-1;let y=a.addTags;for(let _ in y)!m[_]&&x[_]===y[_]&&(v+=a.originalScore);return a.searchable===!1&&(v*=.999),v},a.t=(x,b)=>{let m=fe.coalesceStringIds([`custom_presets.presets.${e}.${x}`,`_tagging.presets.presets.${e}.${x}`]);return F(m,b)},a.t.append=(x,b)=>{let m=fe.coalesceStringIds([`custom_presets.presets.${e}.${x}`,`_tagging.presets.presets.${e}.${x}`]);return F.append(m,b)};function p(x){let b=(a[x]||"").match(f);if(b){let m=i[b[1]];if(m)return m;console.error(`Unable to resolve referenced preset: ${b[1]}`)}return a}a.name=()=>p("originalName").t("name",{default:a.originalName||e}),a.nameLabel=()=>p("originalName").t.append("name",{default:a.originalName||e}),a.subtitle=()=>{if(a.suggestion){let x=e.split("/");return x.pop(),F(fe.coalesceStringIds([`custom_presets.presets.${x.join("/")}.name`,`_tagging.presets.presets.${x.join("/")}.name`]))}return null},a.subtitleLabel=()=>{if(a.suggestion){let x=e.split("/");return x.pop(),F.append(fe.coalesceStringIds([`custom_presets.presets.${x.join("/")}.name`,`_tagging.presets.presets.${x.join("/")}.name`]))}return null},a.aliases=()=>p("originalName").t("aliases",{default:a.originalAliases}).trim().split(/\s*[\r\n]+\s*/),a.terms=()=>p("originalName").t("terms",{default:a.originalTerms}).toLowerCase().trim().split(/\s*,+\s*/),a.searchName=()=>(s||(s=(a.suggestion?a.originalName:a.name()).toLowerCase()),s),a.searchNameStripped=()=>(l||(l=g(a.searchName())),l),a.searchAliases=()=>(u||(u=a.aliases().map(x=>x.toLowerCase())),u),a.searchAliasesStripped=()=>(c||(c=a.searchAliases(),c=c.map(g)),c),a.isFallback=()=>{let x=Object.keys(a.tags).length;return x===0||x===1&&a.tags.hasOwnProperty("area")},a.addable=function(x){return arguments.length?(o=x,a):o},a.reference=()=>{let x=a.tags.wikidata||a.tags["flag:wikidata"]||a.tags["brand:wikidata"]||a.tags["network:wikidata"]||a.tags["operator:wikidata"];if(x)return{qid:x};let b=a.originalReference.key||Object.keys(Wn(a.tags,"name"))[0],m=a.originalReference.value||a.tags[b];return m==="*"?{key:b}:{key:b,value:m}},a.unsetTags=(x,b,m,v,y)=>{let _=m?Wn(a.removeTags,m):a.removeTags;return x=Wn(x,Object.keys(_)),b&&!v&&a.fields(y).forEach(w=>{w.matchGeometry(b)&&w.key&&w.default===x[w.key]&&(!m||m.indexOf(w.key)===-1)&&delete x[w.key]}),delete x.area,x},a.setTags=(x,b,m,v)=>{let y=a.addTags;x=Object.assign({},x);for(let _ in y)y[_]==="*"?(a.tags[_]||!x[_])&&(x[_]="yes"):x[_]=y[_];if(!y.hasOwnProperty("area")&&(delete x.area,b==="area")){let _=!0;for(let w in y)if(a.geometry.indexOf("line")===-1&&w in qs||w in O3&&y[w]in O3[w]){_=!1;break}_&&(x.area="yes")}return b&&!m&&a.fields(v).forEach(_=>{_.matchGeometry(b)&&_.key&&!x[_.key]&&_.default&&(x[_.key]=_.default)}),x};function d(x,b){let m=x==="fields"?a.originalFields:a.originalMoreFields,v=[];if(m.forEach(w=>{let A=w.match(f);A!==null?v=v.concat(y(i[A[1]],x)):n[w]?v.push(n[w]):console.log(`Cannot resolve "${w}" found in ${a.id}.${x}`)}),!v.length){let w=a.id.lastIndexOf("/"),A=w&&a.id.substring(0,w);if(A){let I=i[A];if(b){let E=An.locationSetsAt(b);if(I!=null&&I.locationSetID&&!E[I.locationSetID]){let k=Object.keys(i).filter(S=>S.startsWith(A));I=i[k.find(S=>{let D=i[S];return E[D.locationSetID]&&(0,MF.isEqual)(D.tags,I.tags)})]}}v=y(I,x)}}return ot(v);function y(w,A){return w?A==="fields"?w.fields().filter(_):A==="moreFields"?w.moreFields():[]:[]}function _(w){return!(w.key&&a.tags[w.key]!==void 0&&w.type!=="multiCombo"&&w.type!=="semiCombo"&&w.type!=="manyCombo"&&w.type!=="check")}}function g(x){return x.normalize&&(x=x.normalize("NFD")),x=x.replace(/[\u0300-\u036f]/g,""),x}return a}var $e=NF();function bY(e){e.relation&&e.relation.unshift("type/chronology")}function xY(e){e["type/chronology"]={icon:"temaki-clock",fields:["name"],geometry:["relation"],tags:{type:"chronology"}}}function wY(e){if(e.start_date&&(e.start_date.type="date",e.end_date={...e.start_date,key:"end_date"}),e.source){e.source.type="source",e.source.source=!1,e.source.keys=["source","source:url","source:name","source:date"];for(let t=1;t<4;t++){let r="source:"+t.toString(),n="source"+(t-1>0?":"+(t-1).toString():"");e[r]={...e.source,key:r,keys:[r,r+":url",r+":name",r+":date"],baseKey:"source",index:t,prerequisiteTag:{keys:[n,n+":url",n+":name",n+":date"]}}}}e.license={key:"license",type:"combo",universal:!0,snake_case:!1,caseSensitive:!0}}function NF(){let e=xe("favoritePreset","recentsChange"),t=30,r=g0("point",{name:"Point",tags:{},geometry:["point","vertex"],matchScore:.1}),n=g0("line",{name:"Line",tags:{},geometry:["line"],matchScore:.1}),i=g0("area",{name:"Area",tags:{area:"yes"},geometry:["area"],matchScore:.1}),a=g0("relation",{name:"Relation",tags:{},geometry:["relation"],matchScore:.1}),o=ai([r,n,i,a]),s={point:r,line:n,area:i,relation:a},l={point:ai([r]),vertex:ai([r]),line:ai([n]),area:ai([i]),relation:ai([a])},u={},c={},f=[],p=null,d,g,x={point:{},vertex:{},line:{},area:{},relation:{}},b;o.ensureLoaded=()=>b||(b=Promise.all([dt.get("preset_categories"),dt.get("preset_defaults"),dt.get("preset_presets"),dt.get("preset_fields")]).then(w=>{bY(w[1]),xY(w[2]),wY(w[3]),o.merge({categories:w[0],defaults:w[1],presets:w[2],fields:w[3]}),yf(o.areaKeys()),gA(o.lineTags()),bf(o.pointTags()),xf(o.vertexTags())})),o.merge=w=>{let A=[];return w.fields&&Object.keys(w.fields).forEach(I=>{let E=w.fields[I];E?(E=Ng(I,E,u),E.locationSet&&A.push(E),u[I]=E):delete u[I]}),w.presets&&Object.keys(w.presets).forEach(I=>{let E=w.presets[I];if(E){let k=!p||p.has(I);E=g0(I,E,k,u,s),E.locationSet&&A.push(E),s[I]=E}else{let k=s[I];k&&!k.isFallback()&&delete s[I]}}),w.categories&&Object.keys(w.categories).forEach(I=>{let E=w.categories[I];E?(E=Mg(I,E,s),E.locationSet&&A.push(E),c[I]=E):delete c[I]}),o.collection=Object.values(s).concat(Object.values(c)),w.defaults&&Object.keys(w.defaults).forEach(I=>{let E=w.defaults[I];Array.isArray(E)?l[I]=ai(E.map(k=>s[k]||c[k]).filter(Boolean)):delete l[I]}),f=Object.values(u).filter(I=>I.universal),x={point:{},vertex:{},line:{},area:{},relation:{}},o.collection.forEach(I=>{(I.geometry||[]).forEach(E=>{let k=x[E];for(let S in I.tags){k[S]=k[S]||{};let D=I.tags[S];(k[S][D]=k[S][D]||[]).push(I)}})}),w.featureCollection&&Array.isArray(w.featureCollection.features)&&An.mergeCustomGeoJSON(w.featureCollection),A.length&&An.mergeLocationSets(A),o},o.match=(w,A)=>A.transient(w,"presetMatch",()=>{let I=w.geometry(A);I==="vertex"&&w.isOnAddressLine(A)&&(I="point");let E=w.extent(A);return o.matchTags(w.tags,I,E.center())}),o.matchTags=(w,A,I)=>{let E=x[A],k=-1,S,D=[];for(let P in w){let O=[],T=E[P];if(!T)continue;let M=T[w[P]];M&&O.push(...M);let R=T["*"];if(R&&O.push(...R),O.length!==0)for(let N=0;Nk&&(k=B,S=U))}}if(S&&S.locationSetID&&S.locationSetID!=="+[Q2]"&&Array.isArray(I)){let P=An.locationSetsAt(I);if(!P[S.locationSetID]){D.sort((O,T)=>O.scorew.type!=="node"?!1:Object.keys(w.tags).length===0?!0:A.transient(w,"vertexMatch",()=>{if(w.isOnAddressLine(A))return!0;let I=X1(w.tags);return I.vertex?!0:!I.point}),o.areaKeys=()=>{let w={barrier:!0,highway:!0,footway:!0,railway:!0,junction:!0,type:!0},A={},I=o.collection.filter(E=>!E.suggestion&&!E.replacement);return I.forEach(E=>{let k=E.tags&&Object.keys(E.tags),S=k&&k.length&&k[0];S&&(w[S]||E.geometry.indexOf("area")!==-1&&(A[S]=A[S]||{}))}),I.forEach(E=>{let k;for(k in E.addTags){let S=E.addTags[k];k in A&&E.geometry.indexOf("line")!==-1&&S!=="*"&&(A[k][S]=!0)}}),A},o.lineTags=()=>o.collection.filter((w,A)=>{if(A.suggestion||A.replacement||A.searchable===!1)return w;let I=A.tags&&Object.keys(A.tags),E=I&&I.length&&I[0];return E&&A.geometry.indexOf("line")!==-1&&(w[E]=w[E]||[],w[E].push(A.tags)),w},{}),o.pointTags=()=>o.collection.reduce((w,A)=>{if(A.suggestion||A.replacement||A.searchable===!1)return w;let I=A.tags&&Object.keys(A.tags),E=I&&I.length&&I[0];return E&&A.geometry.indexOf("point")!==-1&&(w[E]=w[E]||{},w[E][A.tags[E]]=!0),w},{}),o.vertexTags=()=>o.collection.reduce((w,A)=>{if(A.suggestion||A.replacement||A.searchable===!1)return w;let I=A.tags&&Object.keys(A.tags),E=I&&I.length&&I[0];return E&&A.geometry.indexOf("vertex")!==-1&&(w[E]=w[E]||{},w[E][A.tags[E]]=!0),w},{}),o.field=w=>u[w],o.universal=()=>f,o.defaults=(w,A,I,E,k)=>{let S=[];I&&(S=o.recent().matchGeometry(w).collection.slice(0,4));let D;p?D=Array.from(p).map(function(O){var T=o.item(O);return T&&T.matchGeometry(w)?T:null}).filter(Boolean):D=l[w].collection.concat(o.fallback(w));let P=ai(ot(S.concat(D).concat(k||[])).slice(0,A-1));if(Array.isArray(E)){let O=An.locationSetsAt(E);P.collection=P.collection.filter(T=>!T.locationSetID||O[T.locationSetID])}return P},o.addablePresetIDs=function(w){return arguments.length?(Array.isArray(w)&&(w=new Set(w)),p=w,p?o.collection.forEach(A=>{A.addable&&A.addable(p.has(A.id))}):o.collection.forEach(A=>{A.addable&&A.addable(!0)}),o):p},o.recent=()=>ai(ot(o.getRecents().map(w=>w.preset).filter(w=>w.searchable!==!1)));function m(w,A){let I={};return I.preset=w,I.source=A,I.isFavorite=()=>I.source==="favorite",I.isRecent=()=>I.source==="recent",I.matches=E=>I.preset.id===E.id,I.minified=()=>({pID:I.preset.id}),I}function v(w,A){if(w&&w.pID){let I=o.item(w.pID);return I?m(I,A):null}return null}o.getGenericRibbonItems=()=>["point","line","area"].map(w=>m(o.item(w),"generic")),o.getAddable=()=>p?p.map(w=>{let A=o.item(w);return A?m(A,"addable"):null}).filter(Boolean):[];function y(w){d=w;let A=w.map(I=>I.minified());Te("preset_recents",JSON.stringify(A)),e.call("recentsChange")}o.getRecents=()=>(d||(d=(JSON.parse(Te("preset_recents"))||[]).reduce((w,A)=>{let I=v(A,"recent");return I&&I.preset.addable()&&w.push(I),w},[])),d),o.addRecent=(w,A,I)=>{let E=o.getRecents(),k=o.recentMatching(A),S=E.indexOf(k);I&&(S+=1);let D=m(w,"recent");E.splice(S,0,D),y(E)},o.removeRecent=w=>{let A=o.recentMatching(w);if(A){let I=o.getRecents();I.splice(I.indexOf(A),1),y(I)}},o.recentMatching=w=>{let A=o.getRecents();for(let I in A)if(A[I].matches(w))return A[I];return null},o.moveItem=(w,A,I)=>A===I||A<0||I<0||A>=w.length||I>=w.length?null:(w.splice(I,0,w.splice(A,1)[0]),w),o.moveRecent=(w,A)=>{let I=o.getRecents(),E=I.indexOf(w),k=I.indexOf(A),S=o.moveItem(I,E,k);S&&y(S)},o.setMostRecent=w=>{if(w.searchable===!1)return;let A=o.getRecents(),I=o.recentMatching(w);for(I?A.splice(A.indexOf(I),1):I=m(w,"recent");A.length>=t;)A.pop();A.unshift(I),y(A)};function _(w){g=w;let A=w.map(I=>I.minified());Te("preset_favorites",JSON.stringify(A)),e.call("favoritePreset")}return o.addFavorite=(w,A,I)=>{let E=o.getFavorites(),k=o.favoriteMatching(A),S=E.indexOf(k);I&&(S+=1);let D=m(w,"favorite");E.splice(S,0,D),_(E)},o.toggleFavorite=w=>{let A=o.getFavorites(),I=o.favoriteMatching(w);I?A.splice(A.indexOf(I),1):(A.length===10&&A.pop(),A.push(m(w,"favorite"))),_(A)},o.removeFavorite=w=>{let A=o.favoriteMatching(w);if(A){let I=o.getFavorites();I.splice(I.indexOf(A),1),_(I)}},o.getFavorites=()=>{if(!g){let w=JSON.parse(Te("preset_favorites"));w||(w=[],Te("preset_favorites",JSON.stringify(w))),g=w.reduce((A,I)=>{let E=v(I,"favorite");return E&&E.preset.addable()&&A.push(E),A},[])}return g},o.favoriteMatching=w=>{let A=o.getFavorites();for(let I in A)if(A[I].matches(w))return A[I];return null},ke(o,e,"on")}function T7(e){var t=e&&e.tags||{};return Object.keys(t).map(function(r){return r+"="+t[r]}).join(", ")}function Er(e,t){for(var r=Pe(),n,i,a=0;ap.source!=="startRange")),s||(f=f.filter(p=>p.source!=="endRange")),t=f.map(p=>p.value).join("")}}var r="name:"+fe.languageCode().toLowerCase(),n=e.tags[r]||e.tags.name||"";if(n)return t?`${n} [${t}]`:n;var i={direction:e.tags.direction,from:e.tags.from,network:e.tags.cycle_network||e.tags.network,ref:e.tags.ref,to:e.tags.to,via:e.tags.via},a=[];return i.network&&a.push("network"),i.ref&&a.push("ref"),e.tags.route&&(i.direction?a.push("direction"):i.from&&i.to&&(a.push("from"),a.push("to"),i.via&&a.push("via"))),a.length&&(n=F("inspector.display_name."+a.join("_"),i)),t?`${n} [${t}]`:n}function d5(e){var t=kr(e),r=br().browser.toLowerCase().indexOf("firefox")>-1,n=Number(br().version.split(".")[0])>=96;return!r&&!n&&t&&Oh.test(t)&&(t=OA(t)),t}function ta(e){return{n:F("inspector.node"),w:F("inspector.way"),r:F("inspector.relation")}[e.charAt(0)]}function wt(e,t,r){var n,i=kr(e),a=typeof t=="string"?$e.matchTags(e.tags,t):$e.match(e,t),o=a&&(a.suggestion?a.subtitle():a.name());return r?n=[o,i].filter(Boolean).join(" "):n=i||o,n||ta(e.id)}function h2(e){return{node:"n",way:"w",relation:"r"}[e]}function N7(e,t){var r={},n={},i=new Set,a=e.map(function(s){return t.hasEntity(s)}).filter(Boolean);a.forEach(function(s){var l=Object.keys(s.tags).filter(Boolean);l.forEach(function(u){i.add(u)})}),a.forEach(function(s){i.forEach(function(l){var u=s.tags[l];r.hasOwnProperty(l)?Array.isArray(r[l])?r[l].indexOf(u)===-1&&r[l].push(u):r[l]!==u&&(r[l]=[r[l],u]):r[l]=u;var c=l+"="+u;n[c]||(n[c]=0),n[c]+=1})});for(var o in r)Array.isArray(r[o])&&(r[o]=r[o].sort(function(s,l){var u=u,c=n[u+"="+l],f=n[u+"="+s];return c!==f?c-f:l&&s?s.localeCompare(l):s?1:-1}));return r}function pr(e){for(var t=0;t0},hasInterestingTags:function(){return Object.keys(this.tags).some(H1)},isHighwayIntersection:function(){return!1},isDegenerate:function(){return!0},deprecatedTags:function(e){var t=this.tags;if(Object.keys(t).length===0)return[];var r=[];return e.forEach(function(n){var i=Object.keys(n.old);if(n.replace){var a=Object.keys(n.replace).some(function(s){if(!t[s]||n.old[s])return!1;var l=n.replace[s];return!(l==="*"||l===t[s])});if(a)return}var o=i.every(function(s){if(!t[s])return!1;if(n.old[s]==="*"||n.old[s]===t[s])return!0;var l=t[s].split(";").filter(Boolean);if(l.length===0)return!1;if(l.length>1)return l.indexOf(n.old[s])!==-1;if(t[s]===n.old[s])if(n.replace&&n.old[s]===n.replace[s]){var u=Object.keys(n.replace);return!u.every(function(c){return t[c]===n.replace[c]})}else return!0;return!1});o&&r.push(n)}),r}};function R7(e){if(e.type!=="way"||!e.tags.highway)return null;var t=e.tags,r=e.isOneWay(),n=_Y(t,r),i=EY(t),a=kY(t,r,n),o=a.forward,s=a.backward,l=a.bothways,u={};u.unspecified=Og(t["turn:lanes"]),u.forward=Og(t["turn:lanes:forward"]),u.backward=Og(t["turn:lanes:backward"]);var c={};c.unspecified=Lg(t["maxspeed:lanes"],i),c.forward=Lg(t["maxspeed:lanes:forward"],i),c.backward=Lg(t["maxspeed:lanes:backward"],i);var f={};f.unspecified=Pi(t["psv:lanes"]),f.forward=Pi(t["psv:lanes:forward"]),f.backward=Pi(t["psv:lanes:backward"]);var p={};p.unspecified=Pi(t["bus:lanes"]),p.forward=Pi(t["bus:lanes:forward"]),p.backward=Pi(t["bus:lanes:backward"]);var d={};d.unspecified=Pi(t["taxi:lanes"]),d.forward=Pi(t["taxi:lanes:forward"]),d.backward=Pi(t["taxi:lanes:backward"]);var g={};g.unspecified=Pi(t["hov:lanes"]),g.forward=Pi(t["hov:lanes:forward"]),g.backward=Pi(t["hov:lanes:backward"]);var x={};x.unspecified=Pi(t["hgv:lanes"]),x.forward=Pi(t["hgv:lanes:forward"]),x.backward=Pi(t["hgv:lanes:backward"]);var b={};b.unspecified=Rg(t["bicycleway:lanes"]),b.forward=Rg(t["bicycleway:lanes:forward"]),b.backward=Rg(t["bicycleway:lanes:backward"]);var m={forward:[],backward:[],unspecified:[]};return ll(m,u,"turnLane"),ll(m,c,"maxspeed"),ll(m,f,"psv"),ll(m,p,"bus"),ll(m,d,"taxi"),ll(m,g,"hov"),ll(m,x,"hgv"),ll(m,b,"bicycleway"),{metadata:{count:n,oneway:r,forward:o,backward:s,bothways:l,turnLanes:u,maxspeed:i,maxspeedLanes:c,psvLanes:f,busLanes:p,taxiLanes:d,hovLanes:g,hgvLanes:x,bicyclewayLanes:b},lanes:m}}function _Y(e,t){var r;if(e.lanes&&(r=parseInt(e.lanes,10),r>0))return r;switch(e.highway){case"trunk":case"motorway":r=t?2:4;break;default:r=t?1:2;break}return r}function EY(e){var t=e.maxspeed;if(t){var r=/^([0-9][\.0-9]+?)(?:[ ]?(?:km\/h|kmh|kph|mph|knots))?$/;if(r.test(t))return parseInt(t,10)}}function kY(e,t,r){var n=parseInt(e["lanes:forward"],10),i=parseInt(e["lanes:backward"],10),a=parseInt(e["lanes:both_ways"],10)>0?1:0;return parseInt(e.oneway,10)===-1?(n=0,a=0,i=r):t?(n=r,a=0,i=0):isNaN(n)&&isNaN(i)?(i=Math.floor((r-a)/2),n=r-a-i):isNaN(n)?(i>r-a&&(i=r-a),n=r-a-i):isNaN(i)&&(n>r-a&&(n=r-a),i=r-a-n),{forward:n,backward:i,bothways:a}}function Og(e){if(e){var t=["left","slight_left","sharp_left","through","right","slight_right","sharp_right","reverse","merge_to_left","merge_to_right","none"];return e.split("|").map(function(r){return r===""&&(r="none"),r.split(";").map(function(n){return t.indexOf(n)===-1?"unknown":n})})}}function Lg(e,t){if(e)return e.split("|").map(function(r){if(r==="none")return r;var n=parseInt(r,10);return r===""||n===t?null:isNaN(n)?"unknown":n})}function Pi(e){if(e){var t=["yes","no","designated"];return e.split("|").map(function(r){return r===""&&(r="no"),t.indexOf(r)===-1?"unknown":r})}}function Rg(e){if(e){var t=["yes","no","designated","lane"];return e.split("|").map(function(r){return r===""&&(r="no"),t.indexOf(r)===-1?"unknown":r})}}function ll(e,t,r){t.forward&&t.forward.forEach(function(n,i){e.forward[i]||(e.forward[i]={}),e.forward[i][r]=n}),t.backward&&t.backward.forEach(function(n,i){e.backward[i]||(e.backward[i]={}),e.backward[i][r]=n}),t.unspecified&&t.unspecified.forEach(function(n,i){e.unspecified[i]||(e.unspecified[i]={}),e.unspecified[i][r]=n})}function Or(){if(this instanceof Or)arguments.length&&this.initialize(arguments);else return new Or().initialize(arguments)}qe.way=Or;Or.prototype=Object.create(qe.prototype);Object.assign(Or.prototype,{type:"way",nodes:[],copy:function(e,t){if(t[this.id])return t[this.id];var r=qe.prototype.copy.call(this,e,t),n=this.nodes.map(function(i){return e.entity(i).copy(e,t).id});return r=r.update({nodes:n}),t[this.id]=r,r},extent:function(e){return e.transient(this,"extent",function(){for(var t=Pe(),r=0;r=0},affix:function(e){if(this.nodes[0]===e)return"prefix";if(this.nodes[this.nodes.length-1]===e)return"suffix"},layer:function(){return isFinite(this.tags.layer)?Math.max(-10,Math.min(+this.tags.layer,10)):this.tags.covered==="yes"?-1:this.tags.location==="overground"?1:this.tags.location==="underground"?-1:this.tags.location==="underwater"?-10:this.tags.power==="line"||this.tags.power==="minor_line"||this.tags.aerialway?10:this.tags.bridge?1:this.tags.cutting||this.tags.tunnel||this.tags.waterway?-1:this.tags.man_made==="pipeline"||this.tags.boundary?-10:0},impliedLineWidthMeters:function(){var e={highway:{motorway:5,motorway_link:5,trunk:4.5,trunk_link:4.5,primary:4,secondary:4,tertiary:4,primary_link:4,secondary_link:4,tertiary_link:4,unclassified:4,road:4,living_street:4,bus_guideway:4,busway:4,pedestrian:4,residential:3.5,service:3.5,track:3,cycleway:2.5,bridleway:2,corridor:2,steps:2,path:1.5,footway:1.5},railway:{rail:2.5,light_rail:2.5,tram:2.5,subway:2.5,monorail:2.5,funicular:2.5,disused:2.5,preserved:2.5,miniature:1.5,narrow_gauge:1.5},waterway:{river:50,canal:25,stream:5,tidal_channel:5,fish_pass:2.5,drain:2.5,ditch:1.5}};for(var t in e)if(this.tags[t]&&e[t][this.tags[t]]){var r=e[t][this.tags[t]];if(t==="highway"){var n=this.tags.lanes&&parseInt(this.tags.lanes,10);return n||(n=this.isOneWay()?1:2),r*n}return r}return null},isOneWay:function(){var e={yes:!0,1:!0,"-1":!0,reversible:!0,alternating:!0,no:!1,0:!1};if(e[this.tags.oneway]!==void 0)return e[this.tags.oneway];for(var t in this.tags)if(t in ko&&this.tags[t]in ko[t])return!0;return!1},sidednessIdentifier:function(){for(let e in this.tags){let t=this.tags[e],r=L3(e);if(r in B3&&t in B3[r])return B3[r][t]===!0?r:B3[r][t]}return null},isSided:function(){return this.tags.two_sided==="yes"?!1:this.sidednessIdentifier()!==null},lanes:function(){return R7(this)},isClosed:function(){return this.nodes.length>1&&this.first()===this.last()},isConvex:function(e){if(!this.isClosed()||this.isDegenerate())return null;for(var t=ot(e.childNodes(this)),r=t.map(function(c){return c.loc}),n=0,i=0,a=0;a0?1:u<0?-1:0,n!==0){if(i&&n!==i)return!1;i=n}}return!0},tagSuggestingArea:function(){return Q1(this.tags)},isArea:function(){return this.tags.area==="yes"?!0:!this.isClosed()||this.tags.area==="no"?!1:this.tagSuggestingArea()!==null},isDegenerate:function(){return new Set(this.nodes).size<(this.isArea()?3:2)},areAdjacent:function(e,t){for(var r=0;r0&&e.length>1&&e[r]===t;)e.splice(r,1),r=e.length-1;return e=e.filter(x2),this.update({nodes:e})},addNode:function(e,t){var r=this.nodes.slice(),n=this.isClosed(),i=n?r.length-1:r.length;if(t===void 0&&(t=i),t<0||t>i)throw new RangeError("index "+t+" out of range 0.."+i);if(n){for(var a=this.first(),o=1;o2&&r[o]===a;)r.splice(o,1),t>o&&t--;for(o=r.length-1;o>0&&r.length>1&&r[o]===a;)r.splice(o,1),t>o&&t--,o=r.length-1}return r.splice(t,0,e),r=r.filter(x2),n&&(r.length===1||r[0]!==r[r.length-1])&&r.push(r[0]),this.update({nodes:r})},updateNode:function(e,t){var r=this.nodes.slice(),n=this.isClosed(),i=r.length-1;if(t===void 0||t<0||t>i)throw new RangeError("index "+t+" out of range 0.."+i);if(n){for(var a=this.first(),o=1;o2&&r[o]===a;)r.splice(o,1),t>o&&t--;for(o=r.length-1;o>0&&r.length>1&&r[o]===a;)r.splice(o,1),t===o&&(t=0),o=r.length-1}return r.splice(t,1,e),r=r.filter(x2),n&&(r.length===1||r[0]!==r[r.length-1])&&r.push(r[0]),this.update({nodes:r})},replaceNode:function(e,t){for(var r=this.nodes.slice(),n=this.isClosed(),i=0;i2*Math.PI&&(r.coordinates[0]=r.coordinates[0].reverse(),n=zo(r)),isNaN(n)?0:n})}});function x2(e,t,r){return t===0||e!==r[t-1]}function fi(e,t){function r(g){return t.childNodes(t.entity(g.id))}function n(g){var x=Oa(g.id,{reverseOneway:!0});return o.actions.push(x),g instanceof Or?x(t).entity(g.id):g}e=e.filter(function(g){return g.type==="way"&&t.hasEntity(g.id)});var i,a=!0;for(i=0;i0&&(u+c>=p.length||s.index!==p[u+c].index)&&w(p,s.index,u+c),b.splice(0,v.nodes.length-1)}}var y=[];for(l=0;lf.matchGeometry(s)).map(f=>f.key).filter(Boolean).forEach(f=>c.push(f))),t&&(l=t.unsetTags(l,s,c,!1,u)),r&&(l=r.setTags(l,s,n,u)),a.replace(o.update({tags:l}))}}function sr(e,t){return function(r){var n=r.entity(e);return r.replace(n.update({tags:t}))}}var y5={north:0,n:0,northnortheast:22,nne:22,northeast:45,ne:45,eastnortheast:67,ene:67,east:90,e:90,eastsoutheast:112,ese:112,southeast:135,se:135,southsoutheast:157,sse:157,south:180,s:180,southsouthwest:202,ssw:202,southwest:225,sw:225,westsouthwest:247,wsw:247,west:270,w:270,westnorthwest:292,wnw:292,northwest:315,nw:315,northnorthwest:337,nnw:337};function Yt(){if(this instanceof Yt)arguments.length&&this.initialize(arguments);else return new Yt().initialize(arguments)}qe.node=Yt;Yt.prototype=Object.create(qe.prototype);Object.assign(Yt.prototype,{type:"node",loc:[9999,9999],extent:function(){return new Pe(this.loc)},geometry:function(e){return e.transient(this,"geometry",function(){return e.isPoi(this)?"point":"vertex"})},move:function(e){return this.update({loc:e})},isDegenerate:function(){return!(Array.isArray(this.loc)&&this.loc.length===2&&this.loc[0]>=-180&&this.loc[0]<=180&&this.loc[1]>=-90&&this.loc[1]<=90)},directions:function(e,t){var r,n;if(this.isHighwayIntersection(e)&&(this.tags.stop||"").toLowerCase()==="all")r="all";else{r=(this.tags.direction||"").toLowerCase();var i=/:direction$/i,a=Object.keys(this.tags);for(n=0;n0&&(f[d[n-1]]=!0),u&&n0})},isConnected:function(e){return e.transient(this,"isConnected",function(){var t=e.parentWays(this);if(t.length>1){for(var r in t)if(t[r].geometry(e)==="line"&&t[r].hasInterestingTags())return!0}else if(t.length===1){var n=t[0],i=n.nodes.slice();return n.isClosed()&&i.pop(),i.indexOf(this.id)!==i.lastIndexOf(this.id)}return!1})},parentIntersectionWays:function(e){return e.transient(this,"parentIntersectionWays",function(){return e.parentWays(this).filter(function(t){return(t.tags.highway||t.tags.waterway||t.tags.railway||t.tags.aeroway)&&t.geometry(e)==="line"})})},isIntersection:function(e){return this.parentIntersectionWays(e).length>1},isHighwayIntersection:function(e){return e.transient(this,"isHighwayIntersection",function(){return e.parentWays(this).filter(function(t){return t.tags.highway&&t.geometry(e)==="line"}).length>1})},isOnAddressLine:function(e){return e.transient(this,"isOnAddressLine",function(){return e.parentWays(this).filter(function(t){return t.tags.hasOwnProperty("addr:interpolation")&&t.geometry(e)==="line"}).length>0})},asJXON:function(e){var t={node:{"@id":this.osmId(),"@lon":this.loc[0],"@lat":this.loc[1],"@version":this.version||0,tag:Object.keys(this.tags).map(function(r){return{keyAttributes:{k:r,v:this.tags[r]}}},this)}};return e&&(t.node["@changeset"]=e),t},asGeoJSON:function(){return{type:"Point",coordinates:this.loc}}});function $7(e,t,r){r=(r||20)*Math.PI/180;var n=function(i,a){(a===null||!isFinite(a))&&(a=1),a=Math.min(Math.max(+a,0),1);var o=i.entity(e),s={};i.childNodes(o).forEach(function(Ie){s[Ie.id]||(s[Ie.id]=Ie)}),o.isConvex(i)||(i=n.makeConvex(i));var l=ot(i.childNodes(o)),u=l.filter(function(Ie){return i.parentWays(Ie).length!==1}),c=l.map(function(Ie){return t(Ie.loc)}),f=u.map(function(Ie){return t(Ie.loc)}),p=c.length===2?ar(c[0],c[1],.5):jo(c),d=h6(c,function(Ie){return _t(p,Ie)}),g=F4(c)>0?1:-1,x,b,m,v;if(u.length||(u=[l[0]],f=[c[0]]),u.length===1){var y=l.indexOf(u[0]),_=Math.floor((y+l.length/2)%l.length);u.push(l[_]),f.push(c[_])}for(b=0;b0&&(R=-g*(2*Math.PI-Math.abs(R)));do S++,N=R/(D+S);while(Math.abs(N)>r);for(m=1;m0?1:-1,u=Bs(s),c,f;for(l===-1&&(o.reverse(),s.reverse()),c=0;c.05*f)return!1}for(p=0;pMath.PI&&(y=2*Math.PI-y),y>r+u)return!1}return"already_circular"},n.transitionable=!0,n}function Ka(e){function t(n,i){if(i.parentWays(n).length||i.parentRelations(n).length)return!1;var a=X1(n.tags);return a.point?!1:a.vertex?!0:!n.hasInterestingTags()}var r=function(n){var i=n.entity(e);return n.parentRelations(i).forEach(function(a){a=a.removeMembersWithID(e),n=n.replace(a),a.isDegenerate()&&(n=xn(a.id)(n))}),new Set(i.nodes).forEach(function(a){n=n.replace(i.removeNode(a));var o=n.entity(a);t(o,n)&&(n=n.remove(o))}),n.remove(i)};return r}function i1(e){var t={way:Ka,node:ss,relation:xn},r=function(n){return e.forEach(function(i){n.hasEntity(i)&&(n=t[n.entity(i).type](i)(n))}),n};return r}function xn(e,t){function r(i,a){return!a.parentWays(i).length&&!a.parentRelations(i).length&&!i.hasInterestingTags()&&!t}var n=function(i){var a=i.entity(e);i.parentRelations(a).forEach(function(s){s=s.removeMembersWithID(e),i=i.replace(s),s.isDegenerate()&&(i=xn(s.id)(i))});var o=ot(a.members.map(function(s){return s.id}));return o.forEach(function(s){i=i.replace(a.removeMembersWithID(s));var l=i.entity(s);r(l,i)&&(i=i1([s])(i))}),i.remove(a)};return n}function ss(e){var t=function(r){var n=r.entity(e);return r.parentWays(n).forEach(function(i){i=i.removeNode(e),r=r.replace(i),i.isDegenerate()&&(r=Ka(i.id)(r))}),r.parentRelations(n).forEach(function(i){i=i.removeMembersWithID(e),r=r.replace(i),i.isDegenerate()&&(r=xn(i.id)(r))}),r.remove(n)};return t}function fl(e){var t=function(r){var n,i,a,o,s;e.reverse();var l=[];for(o=0;o0?l:e)),o=0;o{return e.modified().forEach(n),e.created().forEach(n),r;function n(i){let a=Object.keys(i.tags),o=!1,s={};for(let l=0;l1&&r&&r.indexOf(u.id)!==-1&&p===u.nodes.length-1)continue;o.push({wayID:u.id,index:p})}}return s?o:o.slice(1)},i.disabled=function(a){var o=i.connections(a);if(o.length===0)return"not_connected";var s=a.parentWays(a.entity(e)),l={},u;if(s.forEach(function(c){var f=a.parentRelations(c);f.filter(p=>!n[p.tags.type]).forEach(function(p){p.id in l?r?(r.indexOf(c.id)!==-1||r.indexOf(l[p.id])!==-1)&&(u=p):u=p:l[p.id]=c.id})}),u)return"relation"},i.limitWays=function(a){return arguments.length?(r=a,i):r},i}function _2(e,t){var r,n=function(o){var s=o.entity(e);return s.type==="node"?i(s,o):a(s,o)};function i(o,s){r=o.id;var l=Yt({loc:o.loc});return s=s.replace(l),s=s.parentWays(o).reduce(function(u,c){return u.replace(c.replaceNode(e,l.id))},s),s.parentRelations(o).reduce(function(u,c){return u.replace(c.replaceMember(o,l))},s)}function a(o,s){var l=o.geometry(s),u=["source","wheelchair"],c=["area"],f=["architect","building","height","layer","nycdoitt:bin"],p=Fi(t).centroid(o.asGeoJSON(s));p=p&&t.invert(p),(!p||!isFinite(p[0])||!isFinite(p[1]))&&(p=o.extent(s).center());var d={area:!0,corridor:!0,elevator:!0,level:!0,room:!0},g=o.tags.building&&o.tags.building!=="no"||o.tags["building:part"]&&o.tags["building:part"]!=="no",x=l==="area"&&o.tags.indoor&&d[o.tags.indoor],b=Object.assign({},o.tags),m={};for(var v in b)o.type==="relation"&&v==="type"||c.indexOf(v)===-1&&(g&&(f.indexOf(v)!==-1||v.match(/^building:.{1,}/)||v.match(/^roof:.{1,}/))||x&&v==="indoor"||(m[v]=b[v],!(u.indexOf(v)!==-1||v.match(/^addr:.{1,}/))&&(x&&v==="level"||delete b[v])));!g&&!x&&l==="area"&&(b.area="yes");var y=Yt({loc:p,tags:m});return s=s.replace(y),r=y.id,s.replace(o.update({tags:b}))}return n.getExtractedNodeID=function(){return r},n}function U7(e){function t(n){var i=e.map(function(a){return n.entity(a)});return Object.assign({line:[]},Ir(i,function(a){return a.geometry(n)}))}var r=function(n){var i=e.map(n.entity,n),a=n1(i.map(c=>c.id));i.sort(function(c,f){var p=c.isSided(),d=f.isSided();return p&&!d?-1:d&&!p?1:0});var o=fi(i,n),s=o[0];n=o.actions.reduce(function(c,f){return f(c)},n);var l=n.entity(a);l=l.update({nodes:s.nodes.map(function(c){return c.id})}),n=n.replace(l),s.forEach(function(c){c.id!==a&&(n.parentRelations(c).forEach(function(f){n=n.replace(f.replaceMember(c,l))}),l=l.mergeTags(c.tags),n=n.replace(l),n=Ka(c.id)(n))});function u(){if(l.isClosed()){var c=n.parentMultipolygons(l).filter(function(g){return g.members.length===1});if(c.length===1){var f=c[0];for(var p in l.tags)if(f.tags[p]&&f.tags[p]!==l.tags[p])return;l=l.mergeTags(f.tags),n=n.replace(l),n=xn(f.id,!0)(n);var d=Object.assign({},l.tags);l.geometry(n)!=="area"&&(d.area="yes"),delete d.type,l=l.update({tags:d}),n=n.replace(l)}}}return u(),n};return r.resultingWayNodesLength=function(n){return e.reduce(function(i,a){return i+n.entity(a).nodes.length},0)-e.length-1},r.disabled=function(n){var i=t(n);if(e.length<2||e.length!==i.line.length)return"not_eligible";var a=fi(e.map(n.entity,n),n);if(a.length>1)return"not_adjacent";var o,s=function(y){return n.parentRelations(n.entity(y)).filter(_=>!_.isRestriction()&&!_.isConnectivity()).sort((_,w)=>_.id-w.id)},l=s(e[0]);for(o=1;o=0})&&(b=A)});for(var w in y.tags)w in m?m[w]&&H1(w)&&m[w]!==y.tags[w]&&(v=!0):m[w]=y.tags[w]}),b)return b.isRestriction()?"restriction":"connectivity";if(v)return"conflicting_tags"},r}function z7(e){function t(n){var i=e.map(function(a){return n.entity(a)});return Object.assign({point:[],area:[],line:[],relation:[]},Ir(i,function(a){return a.geometry(n)}))}var r=function(n){var i=t(n),a=i.area[0]||i.line[0],o=i.point;if(o.forEach(function(l){a=a.mergeTags(l.tags),n=n.replace(a),n.parentRelations(l).forEach(function(b){n=n.replace(b.replaceMember(l,a))});var u=ot(n.childNodes(a)),c=l;if(!l.isNew()){var f=!1,p=function(b){return!(n.parentWays(b).length>1||n.parentRelations(b).length)},d=function(b){n=n.replace(l.update({tags:b.tags,loc:b.loc})),a=a.replaceNode(b.id,l.id),n=n.replace(a),c=b,f=!0},g,x;for(g=0;g0;){var d=l[0],g=d.member.map(o).filter(Boolean).filter(s);g.length===0?(u[d["@id"]]=d,l.shift()):l=g.concat(l)}}return a.relation=Object.values(u),a}function i(a){return a.asJXON(t)}return{osmChange:{"@version":.6,"@generator":"iD",create:n(r(e.created.map(i),["node","way","relation"])),modify:r(e.modified.map(i),["node","way","relation"]),delete:Object.assign(r(e.deleted.map(i),["relation","way","node"]),{"@if-unused":!0})}}},asGeoJSON:function(){return{}}});function Nr(){if(this instanceof Nr)arguments.length&&this.initialize(arguments);else return new Nr().initialize(arguments)}Nr.id=function(){return Nr.id.next--};Nr.id.next=-1;Object.assign(Nr.prototype,{type:"note",initialize:function(e){for(var t=0;t1&&t.some(function(n){return n.type!=="way"}))},isConnectivity:function(){return!!(this.tags.type&&this.tags.type.match(/^connectivity:?/))},multipolygon:function(e){var t=this.members.filter(function(u){return(u.role||"outer")==="outer"}),r=this.members.filter(function(u){return u.role==="inner"});t=fi(t,e),r=fi(r,e);var n=function(u){return u.nodes.length>2&&u.nodes[0]!==u.nodes[u.nodes.length-1]&&u.nodes.push(u.nodes[0]),u.nodes.map(function(c){return c.loc})};t=t.map(n),r=r.map(n);var i=t.map(function(u){return[zo({type:"Polygon",coordinates:[u]})>2*Math.PI?u.reverse():u]});function a(u){var c,f;for(c=0;cthis[o]=t[o]),this.loc=r,this.service=n,this.itemType=i,this.id=a,this}static id(){return this.nextId--}};Fr.nextId=-1;function a1(e,t){typeof e=="string"&&(e=[e]);var r,n="longest";let i=["roundabout","circular"];var a=[];function o(p,d,g){var x=p.entity(d).loc,b=p.entity(g).loc,m=1e-6;return x&&b?Vt(x,b):m}function s(p,d,g){var x=new Array(p.length),b,m,v=0,y;function _(A){return v2(A,p.length)}for(b=0,m=_(d+1);m!==d;m=_(m+1))b+=o(g,p[m],p[_(m-1)]),x[m]=b;for(b=0,m=_(d-1);m!==d;m=_(m-1))b+=o(g,p[m],p[_(m+1)]),bv&&(y=m,v=w)}return y}function l(p,d){for(var g=0,x=0;xE){g=g.update({nodes:v}),b=b.update({nodes:m});var S=E;E=k,k=S}else g=g.update({nodes:m}),b=b.update({nodes:v});if(g.tags.step_count){var D=Number(g.tags.step_count);if(D&&isFinite(D)&&D>0&&Math.round(D)===D){var P=Object.assign({},g.tags),O=Object.assign({},b.tags),T=E/(E+k),M=Math.round(D*T);P.step_count=M.toString(),O.step_count=(D-M).toString(),g=g.update({tags:P}),b=b.update({tags:O})}}if(p=p.replace(g),p=p.replace(b),p.parentRelations(g).forEach(function(N){if(N.hasFromViaTo()){var U=N.memberByRole("from"),B=N.membersByRole("via"),$=N.memberByRole("to"),z;if(U.id===g.id||$.id===g.id){var V=!1;if(B.length===1&&B[0].type==="node")V=b.contains(B[0].id);else for(z=0;zA===w.nodes[0]||A===w.nodes[w.nodes.length-1]):i.includes(w.tags.junction)&&w.isClosed()?w.nodes.some(A=>A===_.nodes[0]||A===_.nodes[_.nodes.length-1]):_.nodes[0]===w.nodes[0]||_.nodes[0]===w.nodes[w.nodes.length-1]||_.nodes[_.nodes.length-1]===w.nodes[w.nodes.length-1]||_.nodes[_.nodes.length-1]===w.nodes[0]}let m=p.entity(d),v=[],y=m.members;for(let _=0;_0&&p.hasEntity(y[_-1].id)){let S=p.entity(y[_-1].id);S.type==="way"&&(A=b(S,g),E=b(S,x))}if(_2&&p.hasEntity(y[_-2].id)){let S=p.entity(y[_-2].id);if(b(S,g)&&!b(S,x)){v.push({at:_,role:w.role});continue}if(b(S,x)&&!b(S,g)){v.push({at:_+1,role:w.role});continue}}if(_{p=p.replace(m.addMember({id:x.id,type:"way",role:_.role},_.at)),m=p.entity(m.id)}),p}var f=function(p){a=[];for(var d=0,g=0;gp.hasEntity(_.id)))return"parent_incomplete"}else for(let y=0;y0&&p.hasEntity(m.members[y-1].id),w=y1)return"parent_incomplete"}let v=["junction","enforcement"];if(i.includes(x.tags.junction)&&x.isClosed()&&!v.includes(m.tags.type))return"simple_roundabout"}}}},f.limitWays=function(p){return arguments.length?(r=p,f):r},f.keepHistoryOn=function(p){return arguments.length?(n=p,f):n},f}function Rn(e,t){if(!(this instanceof Rn))return new Rn(e,t);if(e instanceof Rn){var r=e.base();this.entities=Object.assign(Object.create(r.entities),e.entities),this._parentWays=Object.assign(Object.create(r.parentWays),e._parentWays),this._parentRels=Object.assign(Object.create(r.parentRels),e._parentRels)}else this.entities=Object.create({}),this._parentWays=Object.create({}),this._parentRels=Object.create({}),this.rebase(e||[],[this]);this.transients={},this._childNodes={},this.frozen=!t}Rn.prototype={hasEntity:function(e){return this.entities[e]},entity:function(e){var t=this.entities[e];if(t||(t=this.entities.__proto__[e]),!t)throw new Error("entity "+e+" not found");return t},geometry:function(e){return this.entity(e).geometry(this)},transient:function(e,t,r){var n=e.id,i=this.transients[n]||(this.transients[n]={});return i[t]!==void 0||(i[t]=r.call(e)),i[t]},parentWays:function(e){var t=this._parentWays[e.id],r=[];return t&&t.forEach(function(n){r.push(this.entity(n))},this),r},isPoi:function(e){var t=this._parentWays[e.id];return!t||t.size===0},isShared:function(e){var t=this._parentWays[e.id];return t&&t.size>1},parentRelations:function(e){var t=this._parentRels[e.id],r=[];return t&&t.forEach(function(n){r.push(this.entity(n))},this),r},parentMultipolygons:function(e){return this.parentRelations(e).filter(function(t){return t.isMultipolygon()})},childNodes:function(e){if(this._childNodes[e.id])return this._childNodes[e.id];if(!e.nodes)return[];for(var t=[],r=0;rr)){var E=!1;for(_=e.parentWays(y),o=0;o<_.length;o++)if(w=_[o],w!==m&&x.indexOf(w)===-1&&l(w)){E=!0;break}E&&c.push(y)}}I&&p.push(g)}p=ot(p),x=ot(x),x.forEach(function(V){e.childNodes(V).forEach(function(H){n=n.replace(H)}),n=n.replace(V),e.parentRelations(V).forEach(function(H){H.isRestriction()&&(H.isValidRestriction(e)?n=n.replace(H):H.isComplete(e)&&A.push(xn(H.id)))})}),x.forEach(function(V){var H=n.entity(V.id);if(H.tags.oneway==="-1"){var Z=Oa(H.id,{reverseOneway:!0});A.push(Z),n=Z(n)}});var k=qe.id.next.way;p.forEach(function(V){var H=a1([V.id]).keepHistoryOn("first");H.disabled(n)||H.ways(n).forEach(function(Z){var oe=a1([V.id]).limitWays([Z.id]).keepHistoryOn("first");A.push(oe),n=oe(n)})}),qe.id.next.way=k,d=p.map(function(V){return V.id}),p=[],x=[],d.forEach(function(V){var H=n.entity(V),Z=n.parentWays(H);p.push(H),x=x.concat(Z)}),p=ot(p),x=ot(x),d=p.map(function(V){return V.id}),b=x.map(function(V){return V.id});function S(V,H){var Z=V.isOneWay(),oe=H.indexOf(V.first())!==-1,pe=H.indexOf(V.last())!==-1,ne=oe&&pe,ge=oe&&!Z||pe,ve=oe||pe&&!Z;return V.update({__first:oe,__last:pe,__from:ge,__via:ne,__to:ve,__oneWay:Z})}x=[],b.forEach(function(V){var H=S(n.entity(V),d);n=n.replace(H),x.push(H)});var D,P=[],O=[];do for(D=!1,c=d.slice(),i=0;i=ne)&&(le.push(te.id),Se=(Se||[]).slice(),te.type==="node"?Oe(te,le,Se):tt(te,le,Se,Ie))}function Oe(te,le,Se){var Ie,Le,We=Z.parentWays(te),ue=[];for(Ie=0;Ie=3)){var Ae=null;for(Le=0;Le2);else{var ie=[];for(o=2;o=3){var We=le.slice();if(Ie&&Ie.direct===!1){for(Le=0;Le1&&(we>r||!te.__via)||(!te.__oneWay&&oe.indexOf(ae.id)!==-1&&le.indexOf(ae.id)===-1&&Me.push(ae),oe.indexOf(Ae.id)!==-1&&le.indexOf(Ae.id)===-1&&Me.push(Ae),Me.forEach(function(He){var Qe=Z.parentRelations(te).filter(function(et){if(!et.isRestriction())return!1;var lt=et.memberByRole("from");if(!lt||lt.id!==te.id)return!1;var nt=/^only_/.test(et.tags.restriction);if(!nt)return!0;var ht=!1,tr=et.membersByRole("via");if(tr.length===1&&tr[0].type==="node")ht=tr[0].id===He.id;else for(var ie=0;ie336)&&u&&c||(f<40||f>319)&&u&&c&&t.from.vertex!==t.to.vertex?"no_u_turn":f<158?"no_right_turn":f>202?"no_left_turn":"no_straight_on"}function V7(e,t){function r(i){var a=e.map(function(s){return i.entity(s)}),o=Ir(a,function(s){return s.type==="way"&&s.isClosed()?"closedWay":s.type==="relation"&&s.isMultipolygon()?"multipolygon":"other"});return Object.assign({closedWay:[],multipolygon:[],other:[]},o)}var n=function(i){for(var a=r(i),o=a.multipolygon.reduce(function(x,b){return x.concat(fi(b.members,i))},[]).concat(a.closedWay.map(function(x){var b=[{id:x.id}];return b.nodes=i.childNodes(x),b})),s=o.map(function(x,b){return o.map(function(m,v){return b===v?null:N4(m.nodes.map(function(y){return y.loc}),x.nodes.map(function(y){return y.loc}))})}),l=[],u=!0;o.length;)p(o),o=o.filter(c),s=s.filter(c).map(f);function c(x,b){return s[b].some(function(m){return m})}function f(x){return x.filter(c)}function p(x){x.forEach(function(b,m){c(b,m)||b.forEach(function(v){l.push({type:"way",id:v.id,role:u?"outer":"inner"})})}),u=!u}var d;if(a.multipolygon.length>0){var g=n1(a.multipolygon.map(x=>x.id));d=a.multipolygon.find(x=>x.id===g)}else d=Cn({id:t,tags:{type:"multipolygon"}});return a.multipolygon.forEach(function(x){x.id!==d.id&&(d=d.mergeTags(x.tags),i=i.remove(x))}),a.closedWay.forEach(function(x){function b(m){return m.id===x.id&&m.role!=="inner"}l.some(b)&&(d=d.mergeTags(x.tags),i=i.replace(x.update({tags:{}})))}),i.replace(d.update({members:l,tags:Wn(d.tags,["area"])}))};return n.disabled=function(i){var a=r(i);if(a.other.length>0||a.closedWay.length+a.multipolygon.length<2)return"not_eligible";if(!a.multipolygon.every(function(s){return s.isComplete(i)}))return"incomplete_relation";if(a.multipolygon.length){if(a.closedWay.some(function(s){return Wr(i.parentMultipolygons(s),a.multipolygon).length}))return"not_eligible"}else{var o=[];if(a.closedWay.forEach(function(s,l){l===0?o=i.parentMultipolygons(s):o=Wr(o,i.parentMultipolygons(s))}),o=o.filter(function(s){return s.members.length===a.closedWay.length}),o.length)return"not_eligible"}},n}var k2=xt(Za());function AY(e,t){let r={};for(let a=0;af));p++);if(pi(l,"a")),RF(t,r).forEach(l=>i(l,"b")),n.sort((l,u)=>l.oStart-u.oStart);let a=[],o=0;function s(l){l>o&&(a.push({stable:!0,buffer:"o",bufferStart:o,bufferLength:l-o,bufferContent:t.slice(o,l)}),o=l)}for(;n.length;){let l=n.shift(),u=l.oStart,c=l.oStart+l.oLength,f=[l];for(s(u);n.length;){let p=n[0],d=p.oStart;if(d>c)break;c=Math.max(c,d+p.oLength),f.push(n.shift())}if(f.length===1){if(l.abLength>0){let p=l.ab==="a"?e:r;a.push({stable:!0,buffer:l.ab,bufferStart:l.abStart,bufferLength:l.abLength,bufferContent:p.slice(l.abStart,l.abStart+l.abLength)})}}else{let p={a:[e.length,-1,t.length,-1],b:[r.length,-1,t.length,-1]};for(;f.length;){l=f.shift();let v=l.oStart,y=v+l.oLength,_=l.abStart,w=_+l.abLength,A=p[l.ab];A[0]=Math.min(_,A[0]),A[1]=Math.max(w,A[1]),A[2]=Math.min(v,A[2]),A[3]=Math.max(y,A[3])}let d=p.a[0]+(u-p.a[2]),g=p.a[1]+(c-p.a[3]),x=p.b[0]+(u-p.b[2]),b=p.b[1]+(c-p.b[3]),m={stable:!1,aStart:d,aLength:g-d,aContent:e.slice(d,g),oStart:u,oLength:c-u,oContent:t.slice(u,c),bStart:x,bLength:b-x,bContent:r.slice(x,b)};a.push(m)}o=c}return s(t.length),a}function BF(e,t,r,n){n=Object.assign({excludeFalseConflicts:!0,stringSeparator:/\s+/},n),typeof e=="string"&&(e=e.split(n.stringSeparator)),typeof t=="string"&&(t=t.split(n.stringSeparator)),typeof r=="string"&&(r=r.split(n.stringSeparator));let a=[],o=SY(e,t,r),s=[];function l(){s.length&&a.push({ok:s}),s=[]}function u(c,f){if(c.length!==f.length)return!1;for(let p=0;p{c.stable?s.push(...c.bufferContent):n.excludeFalseConflicts&&u(c.aContent,c.bContent)?s.push(...c.aContent):(l(),a.push({conflict:{a:c.aContent,aIndex:c.aStart,o:c.oContent,oIndex:c.oStart,b:c.bContent,bIndex:c.bStart}}))}),l(),a}var $F=xt(g5());function A2(e,t,r,n,i){n=n||{};var a="safe",o=[];function s(x){return typeof i=="function"?i(x):(0,$F.escape)(x)}function l(x,b){function m(v,y){var _=1e-6;return Math.abs(v[0]-y[0])<_&&Math.abs(v[1]-y[1])<_}return a==="force_local"||m(b.loc,x.loc)?b:a==="force_remote"?b.update({loc:x.loc}):(o.push(F.html("merge_remote_changes.conflict.location",{user:{html:s(x.user)}})),b)}function u(x,b,m){if(a==="force_local"||(0,k2.default)(m.nodes,b.nodes))return m;if(a==="force_remote")return m.update({nodes:b.nodes});for(var v=o.length,y=x.nodes||[],_=m.nodes||[],w=b.nodes||[],A=[],I=BF(_,y,w,{excludeFalseConflicts:!0}),E=0;E0}for(var _=o.length,w=0;w2||E.isArea()||k.isArea()||n.intersections.push({nodeId:A.id,movedId:E.id,unmovedId:k.id,movedIsEP:m(E,A.id),unmovedIsEP:m(k,A.id)}))}}}n||(n={}),n.ok||(n.moving={},n.intersections=[],n.replacedVertex={},n.startLoc={},n.nodes=[],n.ways=[],g(e),x(n.ways),n.nodes=n.nodes.filter(d),n.ok=!0)}function o(p,d,g,x){var b=g.entity(d),m=g.entity(p),v=b.nodes.indexOf(p),y,_,w;b.isClosed()?(y=b.nodes.length-1,_=(v+y-1)%y,w=(v+y+1)%y):(y=b.nodes.length,_=v-1,w=v+1);var A=g.hasEntity(b.nodes[_]),I=g.hasEntity(b.nodes[w]);if(!A||!I)return g;var E=d+"_"+p,k=n.replacedVertex[E];k||(k=Yt(),n.replacedVertex[E]=k,n.startLoc[k.id]=n.startLoc[p]);var S,D;x?(S=r(n.startLoc[p]),D=r.invert(qr(S,x))):D=n.startLoc[p],k=k.move(D);var P=Math.abs(En(k,A,r)-En(k,I,r))*180/Math.PI;if(P>175&&P<185)return g;var O=[A.loc,k.loc,m.loc,I.loc].map(r),T=[A.loc,m.loc,k.loc,I.loc].map(r),M=$s(O),R=$s(T),N=M<=R?v:w;return b.isClosed()&&N===0&&(N=y),b=b.addNode(k.id,N),g.replace(k).replace(b)}function s(p,d){var g=d.entity(p),x=1e-6,b,m;function v(_,w){return w.parentWays(_).length>1||w.parentRelations(_).length||_.hasInterestingTags()}for(var y=0;y0&&kl?D.push(w):P.push(w)}var R=z(P),N=z(P);for(I=1/0,k=0;k<1e3;k++){for(E=P.map(V),S=0;S1))if(_=f.entity(w.id),p===1&&f.parentWays(_).length===1&&f.parentRelations(_).length===0&&!_.hasInterestingTags())f=ss(_.id)(f);else{var $=z6(w.coord,B);$&&(A=t.invert($.target),f=f.replace(_.move(ar(_.loc,A,p))))}}return f;function z(H){return H.map(function(Z){return{id:Z.id,coord:[Z.coord[0],Z.coord[1]]}})}function V(H,Z,oe){if(!x&&(Z===0||Z===oe.length-1))return[0,0];if(m[oe[Z].id]>1)return[0,0];var pe=oe[(Z-1+oe.length)%oe.length].coord,ne=H.coord,ge=oe[(Z+1)%oe.length].coord,ve=rr(pe,ne),Oe=rr(ge,ne),tt=2*Math.min(_t(ve),_t(Oe));ve=B1(ve),Oe=B1(Oe);var Ce=ve[0]*Oe[0]+ve[1]*Oe[1],te=Math.abs(Ce);if(te_t(u,c);return f?[s,l]:[u,c]}var i=function(a,o){(o===null||!isFinite(o))&&(o=1),o=Math.min(Math.max(+o,0),1);for(var s=e.map(function(v){return a.entity(v)}),l=s.map(function(v){return t(v.loc)}),u=n(l),c=u[0],f=u[1],p=0;pf&&(f=b)}if(f<1e-4)return"straight_enough"},i.transitionable=!0,i}function Q7(e,t){function r(o,s,l){return Ki(o,l,s)/Ki(l,l,s)}function n(o){for(var s=[],l=[],u=[],c=[],f=e.filter(function(w){return o.entity(w).type==="way"}),p=e.filter(function(w){return o.entity(w).type==="node"}),d=0;d1||s.parentRelations(o).length||o.hasInterestingTags()}var a=function(o,s){(s===null||!isFinite(s))&&(s=1),s=Math.min(Math.max(+s,0),1);var l=n(o),u=l.map(function(y){return t(y.loc)}),c=u[0],f=u[u.length-1],p=[],d;for(d=1;df)return"too_bendy";m>d&&(d=m)}var v=s.every(function(y,_){return _===0||_===s.length-1||i(y,o)});if(d<1e-4&&v)return"straight_enough"},a.transitionable=!0,a}function w5(e){return function(t){return xn(e.restrictionID)(t)}}function X7(e,t){var r=!0,n=function(i,a){(a===null||!isFinite(a))&&(a=1),a=Math.min(Math.max(+a,0),1);var o=vr(e,i),s=o.map(function(k){return t(k.loc)}),l=P4(s),u=[(l.poly[0][0]+l.poly[1][0])/2,(l.poly[0][1]+l.poly[1][1])/2],c=[(l.poly[2][0]+l.poly[3][0])/2,(l.poly[2][1]+l.poly[3][1])/2],f=[(l.poly[3][0]+l.poly[4][0])/2,(l.poly[3][1]+l.poly[4][1])/2],p=[(l.poly[1][0]+l.poly[2][0])/2,(l.poly[1][1]+l.poly[2][1])/2],d,g,x=_t(u,c)>_t(f,p);r&&x||!r&&!x?(d=u,g=c):(d=f,g=p);for(var b=g[0]-d[0],m=g[1]-d[1],v=(b*b-m*m)/(b*b+m*m),y=2*b*m/(b*b+m*m),_=0;_=a&&(c.isCancelled=!0,t.call("downcancel",this))}S.pointerType&&S.pointerType!=="mouse"||S.buttons||c||u&&u.pointerType!=="mouse"&&S.timeStamp-u.timeStamp<100||(l=S,t.call("move",this,S,p(S)))}function b(S){c&&c.id===(S.pointerId||"mouse")&&(c.isCancelled||t.call("downcancel",this),c=null)}function m(){s=!1}function v(){s=!0}function y(S){return S.geometry(e.graph())==="vertex"||$e.allowsVertex(S,e.graph())}function _(S,D){var P=p(S),O=P&&P.properties&&P.properties.entity,T=e.mode();if(O&&O.type==="node"&&y(O)){t.call("clickNode",this,O,P);return}else if(O&&O.type==="way"&&(T.id!=="add-point"||T.preset.matchGeometry("vertex"))){var M=On(e.graph().childNodes(O),D,e.projection,e.activeID());if(M){var R=[O.nodes[M.index-1],O.nodes[M.index]];t.call("clickWay",this,M.loc,R,P);return}}else if(T.id!=="add-point"||T.preset.matchGeometry("point")){var N=e.projection.invert(D);t.call("click",this,N,P)}}function w(S){S.preventDefault(),S.stopPropagation();var D=e.map().mouse();if(_5&&Bg){var P=_t(Bg,D);P>o&&(_5=!1)}if(!(_5||s||!l)){Bg=D,_5=!0,G(window).on("keyup.space-block",function(){S.preventDefault(),S.stopPropagation(),_5=!1,G(window).on("keyup.space-block",null)});var O=e.map().mouse()||e.projection(e.map().center());_(S,O)}}function A(S){S.preventDefault(),t.call("undo")}function I(S){S.preventDefault(),t.call("cancel")}function E(S){S.preventDefault(),t.call("finish")}function k(S){return e.install(n),e.install(i),c=null,r.on("\u232B",A).on("\u2326",I).on("\u238B",E).on("\u21A9",E).on("space",w).on("\u2325space",w),S.on("mouseenter.draw",m).on("mouseleave.draw",v).on(f+"down.draw",d).on(f+"move.draw",x),G(window).on(f+"up.draw",g,!0).on("pointercancel.draw",b,!0),G(document).call(r),k}return k.off=function(S){e.ui().sidebar.hover.cancel(),e.uninstall(n),e.uninstall(i),S.on("mouseenter.draw",null).on("mouseleave.draw",null).on(f+"down.draw",null).on(f+"move.draw",null),G(window).on(f+"up.draw",null).on("pointercancel.draw",null),G(document).call(r.unbind)},k.hover=function(){return n},ke(k,t,"on")}var YF=xt(Za());function K7(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function $g(e){return function(){return e}}function Ug(e){return+e}var UF=[0,1];function C2(e){return e}function zg(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:$g(isNaN(t)?NaN:.5)}function CY(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function IY(e,t,r){var n=e[0],i=e[1],a=t[0],o=t[1];return i2?FY:IY,l=u=null,f}function f(p){return p==null||isNaN(p=+p)?a:(l||(l=s(e.map(n),t,r)))(n(o(p)))}return f.invert=function(p){return o(i((u||(u=s(t,e.map(n),Vr)))(p)))},f.domain=function(p){return arguments.length?(e=Array.from(p,Ug),c()):e.slice()},f.range=function(p){return arguments.length?(t=Array.from(p),c()):t.slice()},f.rangeRound=function(p){return t=Array.from(p),r=dh,c()},f.clamp=function(p){return arguments.length?(o=p?!0:C2,c()):o!==C2},f.interpolate=function(p){return arguments.length?(r=p,c()):r},f.unknown=function(p){return arguments.length?(a=p,f):a},function(p,d){return n=p,i=d,c()}}function qg(){return DY()(C2,C2)}function qF(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function y0(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function cs(e){return e=y0(Math.abs(e)),e?e[1]:NaN}function VF(e,t){return function(r,n){for(var i=r.length,a=[],o=0,s=e[0],l=0;i>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),a.push(r.substring(i-=s,i+s)),!((l+=s+1)>n));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function GF(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var TY=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function gl(e){if(!(t=TY.exec(e)))throw new Error("invalid format: "+e);var t;return new Z7({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}gl.prototype=Z7.prototype;function Z7(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Z7.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function jF(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var Vg;function HF(e,t){var r=y0(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(Vg=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=n.length;return a===o?n:a>o?n+new Array(a-o+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+y0(e,Math.max(0,t+a-1))[0]}function Gg(e,t){var r=y0(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var jg={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:qF,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Gg(e*100,t),r:Gg,s:HF,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Hg(e){return e}var WF=Array.prototype.map,QF=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function XF(e){var t=e.grouping===void 0||e.thousands===void 0?Hg:VF(WF.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?Hg:GF(WF.call(e.numerals,String)),o=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(f){f=gl(f);var p=f.fill,d=f.align,g=f.sign,x=f.symbol,b=f.zero,m=f.width,v=f.comma,y=f.precision,_=f.trim,w=f.type;w==="n"?(v=!0,w="g"):jg[w]||(y===void 0&&(y=12),_=!0,w="g"),(b||p==="0"&&d==="=")&&(b=!0,p="0",d="=");var A=x==="$"?r:x==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",I=x==="$"?n:/[%p]/.test(w)?o:"",E=jg[w],k=/[defgprs%]/.test(w);y=y===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function S(D){var P=A,O=I,T,M,R;if(w==="c")O=E(D)+O,D="";else{D=+D;var N=D<0||1/D<0;if(D=isNaN(D)?l:E(Math.abs(D),y),_&&(D=jF(D)),N&&+D==0&&g!=="+"&&(N=!1),P=(N?g==="("?g:s:g==="-"||g==="("?"":g)+P,O=(w==="s"?QF[8+Vg/3]:"")+O+(N&&g==="("?")":""),k){for(T=-1,M=D.length;++TR||R>57){O=(R===46?i+D.slice(T+1):D.slice(T))+O,D=D.slice(0,T);break}}}v&&!b&&(D=t(D,1/0));var U=P.length+D.length+O.length,B=U>1)+P+D+O+B.slice(U);break;default:D=B+P+D+O;break}return a(D)}return S.toString=function(){return f+""},S}function c(f,p){var d=u((f=gl(f),f.type="f",f)),g=Math.max(-8,Math.min(8,Math.floor(cs(p)/3)))*3,x=Math.pow(10,-g),b=QF[8+g/3];return function(m){return d(x*m)+b}}return{format:u,formatPrefix:c}}var J7,e9,t9;Wg({thousands:",",grouping:[3],currency:["$",""]});function Wg(e){return J7=XF(e),e9=J7.format,t9=J7.formatPrefix,J7}function Qg(e){return Math.max(0,-cs(Math.abs(e)))}function Xg(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(cs(t)/3)))*3-cs(Math.abs(e)))}function Yg(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,cs(t)-cs(e))+1}function Kg(e,t,r,n){var i=Sm(e,t,r),a;switch(n=gl(n==null?",f":n),n.type){case"s":{var o=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=Xg(i,o))&&(n.precision=a),t9(n,o)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=Yg(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=Qg(i))&&(n.precision=a-(n.type==="%")*2);break}}return e9(n)}function Zg(e){var t=e.domain;return e.ticks=function(r){var n=t();return c6(n[0],n[n.length-1],r==null?10:r)},e.tickFormat=function(r,n){var i=t();return Kg(i[0],i[i.length-1],r==null?10:r,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,o=n[i],s=n[a],l,u,c=10;for(s0;){if(u=f6(o,s,r),u===l)return n[i]=o,n[a]=s,t(n);if(u>0)o=Math.floor(o/u)*u,s=Math.ceil(s/u)*u;else if(u<0)o=Math.ceil(o*u)/u,s=Math.floor(s*u)/u;else break;l=u}return e},e}function E5(){var e=qg();return e.copy=function(){return zF(e,E5())},K7.apply(e,arguments),Zg(e)}function k5(){var e=0,t=1,r=1,n=[.5],i=[0,1],a;function o(l){return l!=null&&l<=l?i[Wu(n,l,0,r)]:a}function s(){var l=-1;for(n=new Array(r);++l=r?[n[r-1],t]:[n[u-1],n[u]]},o.unknown=function(l){return arguments.length&&(a=l),o},o.thresholds=function(){return n.slice()},o.copy=function(){return k5().domain([e,t]).range(i).unknown(a)},K7.apply(Zg(o),arguments)}function eo(){var e=800,t=4,r=".selected.shadow, .selected .shadow",n=G(null),i="",a={},o=!1,s;function l(g,x,b,m){g=Number(g),x=Number(x);var v=k5().domain([0,1]).range(vh(Vr(g,x),b));return function(y){return String(v(y))+(m||"")}}function u(g){g.style("stroke-opacity",null).style("stroke-width",null).style("fill-opacity",null).style("r",null)}function c(g,x){var b=x==="from"?"to":"from";g.styleTween("stroke-opacity",function(m){return l(a[m.id][b].opacity,a[m.id][x].opacity,t)}).styleTween("stroke-width",function(m){return l(a[m.id][b].width,a[m.id][x].width,t,"px")}).styleTween("fill-opacity",function(m){return l(a[m.id][b].opacity,a[m.id][x].opacity,t)}).styleTween("r",function(m){return l(a[m.id][b].width,a[m.id][x].width,t,"px")})}function f(g){g.call(u).each(function(x){var b=G(this),m=b.node().tagName,v={from:{},to:{}},y,_;m==="circle"?(y=Number(b.style("fill-opacity")||.5),_=Number(b.style("r")||15.5)):(y=Number(b.style("stroke-opacity")||.7),_=Number(b.style("stroke-width")||10)),v.tag=m,v.from.opacity=y*.6,v.to.opacity=y*1.25,v.from.width=_*.7,v.to.width=_*(m==="circle"?1.5:1),a[x.id]=v})}function p(g,x){var b=x==="from"?"to":"from",m=g.selectAll(r),v=g.attr("class");if(o||m.empty()){n.call(u),n=G(null);return}(!(0,YF.default)(m.data(),n.data())||v!==i)&&(n.call(u),i=v,n=m.call(f));var y=!1;n.transition().duration(e).call(c,x).on("end",function(){y||(g.call(p,b),y=!0),G(this).classed("selected")||u(G(this))})}function d(g){o=!1,s=G1(function(){return g.selectAll(r).empty()?!1:(g.call(p,"from"),s.stop(),!0)},20)}return d.restartIfNeeded=function(g){n.empty()&&(g.call(p,"from"),s&&s.stop())},d.off=function(){o=!0,s&&s.stop(),n.interrupt().call(u)},d}function xr(e){var t;function r(i){if(e.map().withinEditableZoom()&&!(t.availableForKeypress&&!t.availableForKeypress())){i.preventDefault();var a=t.disabled();a?e.ui().flash.duration(4e3).iconName("#iD-operation-"+t.id).iconClass("operation disabled").label(t.tooltip())():(e.ui().flash.duration(2e3).iconName("#iD-operation-"+t.id).iconClass("operation").label(t.annotation()||t.title)(),t.point&&t.point(null),t())}}function n(){return t&&t.available()&&e.keybinding().on(t.keys,r),n}return n.off=function(){e.keybinding().off(t.keys)},n.which=function(i){return arguments.length?(t=i,n):t},n}function b0(e,t){var r,n=t.map(o).filter(Boolean),i=n.length===1?"single":"multiple",a=vr(t,e.graph()).map(function(l){return l.loc});function o(l){var u=e.entity(l);return u.type!=="way"||new Set(u.nodes).size<=1?null:(r?r=r.extend(u.extent(e.graph())):r=u.extent(e.graph()),$7(l,e.projection))}var s=function(){if(n.length){var l=function(u,c){return n.forEach(function(f){f.disabled(u)||(u=f(u,c))}),u};l.transitionable=!0,e.perform(l,s.annotation()),window.setTimeout(function(){e.validator().validate()},300)}};return s.available=function(){return n.length&&t.length===n.length},s.disabled=function(){if(!n.length)return"";var l=n.map(function(c){return c.disabled(e.graph())}).filter(Boolean);if(l.length===n.length)return new Set(l).size>1?"multiple_blockers":l[0];if(r.percentContainedIn(e.map().extent())<.8)return"too_large";if(u())return"not_downloaded";if(t.some(e.hasHiddenConnections))return"connected_to_hidden";return!1;function u(){if(e.inIntro())return!1;var c=e.connection();if(c){var f=a.filter(function(p){return!c.isDataLoaded(p)});if(f.length)return f.forEach(function(p){e.loadTileAtLoc(p)}),!0}return!1}},s.tooltip=function(){var l=s.disabled();return l?F.append("operations.circularize."+l+"."+i):F.append("operations.circularize.description."+i)},s.annotation=function(){return F("operations.circularize.annotation.feature",{n:n.length})},s.id="circularize",s.keys=[F("operations.circularize.key")],s.title=F.append("operations.circularize.title"),s.behavior=xr(e).which(s),s}var st=function(e){var t=br();if(t.os==="mac")return e;if(t.os==="win"&&e==="\u2318\u21E7Z")return"Ctrl+Y";for(var r="",n={"\u2318":"Ctrl","\u21E7":"Shift","\u2325":"Alt","\u232B":"Backspace","\u2326":"Delete"},i=0;i0}function c(p){var d=e.entity(p);return d.type==="relation"&&!d.isComplete(e.graph())}function f(p){var d=e.entity(p);if(d.type!=="way")return!1;for(var g=e.graph().parentRelations(d),x=0;x2)return n&&n!=="feature"?null:(n="feature",hl(u,e.projection));if(f==="vertex"){if(n&&n!=="corner")return null;n="corner";var p=e.graph(),d=p.parentWays(c);if(d.length===1){var g=d[0];if(g.nodes.indexOf(u)!==-1)return hl(g.id,e.projection,u)}}return null}var l=function(){if(i.length){var u=function(c,f){return i.forEach(function(p){p.disabled(c)||(c=p(c,f))}),c};u.transitionable=!0,e.perform(u,l.annotation()),window.setTimeout(function(){e.validator().validate()},300)}};return l.available=function(){return i.length&&t.length===i.length},l.disabled=function(){if(!i.length)return"";var u=i.map(function(f){return f.disabled(e.graph())}).filter(Boolean);if(u.length===i.length)return new Set(u).size>1?"multiple_blockers":u[0];if(r&&r.percentContainedIn(e.map().extent())<.8)return"too_large";if(c())return"not_downloaded";if(t.some(e.hasHiddenConnections))return"connected_to_hidden";return!1;function c(){if(e.inIntro())return!1;var f=e.connection();if(f){var p=o.filter(function(d){return!f.isDataLoaded(d)});if(p.length)return p.forEach(function(d){e.loadTileAtLoc(d)}),!0}return!1}},l.tooltip=function(){var u=l.disabled();return u?F.append("operations.orthogonalize."+u+"."+a):F.append("operations.orthogonalize.description."+n+"."+a)},l.annotation=function(){return F("operations.orthogonalize.annotation."+n,{n:i.length})},l.id="orthogonalize",l.keys=[F("operations.orthogonalize.key")],l.title=F.append("operations.orthogonalize.title"),l.behavior=xr(e).which(l),l}function w0(e,t){return KF(e,t,"short")}function _0(e,t){return KF(e,t,"long")}function KF(e,t,r){r=r||"long";var n=t.length===1?"single":"multiple",i=vr(t,e.graph()),a=i.map(function(l){return l.loc}),o=Er(t,e.graph()),s=function(){var l=X7(t,e.projection).useLongAxis(r==="long");e.perform(l,s.annotation()),window.setTimeout(function(){e.validator().validate()},300)};return s.available=function(){return i.length>=3},s.disabled=function(){if(o.percentContainedIn(e.map().extent())<.8)return"too_large";if(l())return"not_downloaded";if(t.some(e.hasHiddenConnections))return"connected_to_hidden";if(t.some(u))return"incomplete_relation";return!1;function l(){if(e.inIntro())return!1;var c=e.connection();if(c){var f=a.filter(function(p){return!c.isDataLoaded(p)});if(f.length)return f.forEach(function(p){e.loadTileAtLoc(p)}),!0}return!1}function u(c){var f=e.entity(c);return f.type==="relation"&&!f.isComplete(e.graph())}},s.tooltip=function(){var l=s.disabled();return l?F.append("operations.reflect."+l+"."+n):F.append("operations.reflect.description."+r+"."+n)},s.annotation=function(){return F("operations.reflect.annotation."+r+".feature",{n:t.length})},s.id="reflect-"+r,s.keys=[F("operations.reflect.key."+r)],s.title=F.append("operations.reflect.title."+r),s.behavior=xr(e).which(s),s}function E0(e,t){var r=t.length===1?"single":"multiple",n=vr(t,e.graph()),i=n.map(function(s){return s.loc}),a=Er(t,e.graph()),o=function(){e.enter(I2(e,t))};return o.available=function(){return t.length>0},o.disabled=function(){if(a.percentContainedIn(e.map().extent())<.8)return"too_large";if(s())return"not_downloaded";if(t.some(e.hasHiddenConnections))return"connected_to_hidden";if(t.some(l))return"incomplete_relation";return!1;function s(){if(e.inIntro())return!1;var u=e.connection();if(u){var c=i.filter(function(f){return!u.isDataLoaded(f)});if(c.length)return c.forEach(function(f){e.loadTileAtLoc(f)}),!0}return!1}function l(u){var c=e.entity(u);return c.type==="relation"&&!c.isComplete(e.graph())}},o.tooltip=function(){var s=o.disabled();return s?F.append("operations.move."+s+"."+r):F.append("operations.move.description."+r)},o.annotation=function(){return t.length===1?F("operations.move.annotation."+e.graph().geometry(t[0])):F("operations.move.annotation.feature",{n:t.length})},o.id="move",o.keys=[F("operations.move.key")],o.title=F.append("operations.move.title"),o.behavior=xr(e).which(o),o.mouseOnly=!0,o}function r9(e,t){var r=4,n={id:"rotate",button:"browse"},i=at("rotate"),a=[Ja(e),b0(e,t).behavior,di(e,t).behavior,E0(e,t).behavior,x0(e,t).behavior,_0(e,t).behavior,w0(e,t).behavior],o=t.length===1?F("operations.rotate.annotation."+e.graph().geometry(t[0])):F("operations.rotate.annotation.feature",{n:t.length}),s,l,u,c,f="PointerEvent"in window?"pointer":"mouse";function p(m){var v;e.graph()!==s?v=e.perform:v=e.replace;var y=e.projection,_=y.transform();if(!u||_.k!==u.k||_.x!==u.x||_.y!==u.y){var w=vr(t,e.graph()),A=w.map(function(S){return y(S.loc)});c=d(A),l=void 0}var I=e.map().mouse(m),E=Math.atan2(I[1]-c[1],I[0]-c[0]);typeof l>"u"&&(l=E);var k=E-l;v(j7(t,c,k,y)),u=_,l=E,s=e.graph()}function d(m){var v;if(m.length===1)v=m[0];else if(m.length===2)v=ar(m[0],m[1],.5);else{var y=Bs(m);y.length===2?v=ar(m[0],m[1],.5):v=jo(Bs(m))}return v}function g(m){m.stopPropagation(),e.replace(Bn(),o),e.enter(rt(e,t))}function x(){s&&e.pop(),e.enter(rt(e,t))}function b(){e.enter(Ge(e))}return n.enter=function(){s=null,e.features().forceVisible(t),a.forEach(e.install);var m;e.surface().on(f+"down.modeRotate",function(v){m=v}),G(window).on(f+"move.modeRotate",p,!0).on(f+"up.modeRotate",function(v){if(m){var y=e.container().select(".main-map").node(),_=rn(y),w=_(m),A=_(v),I=_t(w,A);I<=r&&g(v),m=null}},!0),e.history().on("undone.modeRotate",b),i.on("\u238B",x).on("\u21A9",g),G(document).call(i)},n.exit=function(){a.forEach(e.uninstall),e.surface().on(f+"down.modeRotate",null),G(window).on(f+"move.modeRotate",null,!0).on(f+"up.modeRotate",null,!0),e.history().on("undone.modeRotate",null),G(document).call(i.unbind),e.features().forceVisible([])},n.selectedIDs=function(){return arguments.length?n:t},n}function A5(e,t){var r=t.length===1?"single":"multiple",n=vr(t,e.graph()),i=n.map(function(s){return s.loc}),a=Er(t,e.graph()),o=function(){e.enter(r9(e,t))};return o.available=function(){return n.length>=2},o.disabled=function(){if(a.percentContainedIn(e.map().extent())<.8)return"too_large";if(s())return"not_downloaded";if(t.some(e.hasHiddenConnections))return"connected_to_hidden";if(t.some(l))return"incomplete_relation";return!1;function s(){if(e.inIntro())return!1;var u=e.connection();if(u){var c=i.filter(function(f){return!u.isDataLoaded(f)});if(c.length)return c.forEach(function(f){e.loadTileAtLoc(f)}),!0}return!1}function l(u){var c=e.entity(u);return c.type==="relation"&&!c.isComplete(e.graph())}},o.tooltip=function(){var s=o.disabled();return s?F.append("operations.rotate."+s+"."+r):F.append("operations.rotate.description."+r)},o.annotation=function(){return t.length===1?F("operations.rotate.annotation."+e.graph().geometry(t[0])):F("operations.rotate.annotation.feature",{n:t.length})},o.id="rotate",o.keys=[F("operations.rotate.key")],o.title=F.append("operations.rotate.title"),o.behavior=xr(e).which(o),o.mouseOnly=!0,o}function I2(e,t,r){var n=4,i={id:"move",button:"browse"},a=at("move"),o=[Ja(e),b0(e,t).behavior,di(e,t).behavior,x0(e,t).behavior,_0(e,t).behavior,w0(e,t).behavior,A5(e,t).behavior],s=t.length===1?F("operations.move.annotation."+e.graph().geometry(t[0])):F("operations.move.annotation.feature",{n:t.length}),l,u,c,f,p="PointerEvent"in window?"pointer":"mouse";function d(_){_=_||[0,0];var w;l!==e.graph()?(u={},c=e.map().mouseCoordinates(),w=e.perform):w=e.overwrite;var A=e.map().mouse(),I=e.projection(c),E=rr(rr(A,I),_);w(ls(t,E,e.projection,u)),l=e.graph()}function g(_){f&&window.clearInterval(f),f=window.setInterval(function(){e.map().pan(_),d(_)},50)}function x(){f&&(window.clearInterval(f),f=null)}function b(){d();var _=z1(e.map().mouse(),e.map().dimensions());_?g(_):x()}function m(_){_.stopPropagation(),e.replace(Bn(),s),e.enter(rt(e,t)),x()}function v(){if(r){for(;e.graph()!==r;)e.pop();e.enter(Ge(e))}else l&&e.pop(),e.enter(rt(e,t));x()}function y(){e.enter(Ge(e))}return i.enter=function(){c=e.map().mouseCoordinates(),l=null,u={},e.features().forceVisible(t),o.forEach(e.install);var _;e.surface().on(p+"down.modeMove",function(w){_=w}),G(window).on(p+"move.modeMove",b,!0).on(p+"up.modeMove",function(w){if(_){var A=e.container().select(".main-map").node(),I=rn(A),E=I(_),k=I(w),S=_t(E,k);S<=n&&m(w),_=null}},!0),e.history().on("undone.modeMove",y),a.on("\u238B",v).on("\u21A9",m),G(document).call(a)},i.exit=function(){x(),o.forEach(function(_){e.uninstall(_)}),e.surface().on(p+"down.modeMove",null),G(window).on(p+"move.modeMove",null,!0).on(p+"up.modeMove",null,!0),e.history().on("undone.modeMove",null),G(document).call(a.unbind),e.features().forceVisible([])},i.selectedIDs=function(){return arguments.length?i:t},i}function F2(e){function t(n){if(e.map().withinEditableZoom()){n.preventDefault();var i=e.graph(),a=e.map().mouse(),o=e.projection,s=Pe(o.clipExtent()).polygon();if(Wo(a,s)){var l=e.copyIDs();if(l.length){var u=Pe(),c=e.copyGraph(),f=[],p=w2(l,c);e.perform(p);var d=p.copies(),g=new Set;Object.values(d).forEach(function(A){g.add(A.id)});for(var x in d){var b=c.entity(x),m=d[x];u._extend(b.extent(c));var v=e.graph().parentWays(m),y=v.some(function(A){return g.has(A.id)});y||f.push(m.id)}var _=e.copyLonLat()&&o(e.copyLonLat())||o(u.center()),w=rr(a,_);e.perform(ls(f,w,o)),e.enter(I2(e,f,i))}}}}function r(){return e.keybinding().on(st("\u2318V"),t),r}return r.off=function(){e.keybinding().off(st("\u2318V"))},r}function D2(){var e=xe("start","move","end"),t=1,r=4,n=null,i="",a,o,s,l,u="PointerEvent"in window?"pointer":"mouse",c=m0("UserSelect"),f=function(){var g=bo(),x=g.style(c);return g.style(c,"none"),function(){g.style(c,x)}};function p(g){if(l)return;l=g.pointerId||"mouse",a=this;var x=rn(s||a.parentNode),b,m=x(g),v=!1,y=f();G(window).on(u+"move.drag",_).on(u+"up.drag pointercancel.drag",w,!0),n?(b=n.call(a,o),b=[b[0]-m[0],b[1]-m[1]]):b=[0,0],g.stopPropagation();function _(A){if(l===(A.pointerId||"mouse")){var I=x(A);if(v){m=I,A.stopPropagation(),A.preventDefault();var S=I[0]-m[0],D=I[1]-m[1];e.call("move",this,A,o,[I[0]+b[0],I[1]+b[1]],[S,D])}else{var E=_t(m,I),k=A.pointerType==="pen"?r:t;if(ES5(t,r).then(n=>new DOMParser().parseFromString(n,e))}var T2=tv("application/xml"),PY=tv("text/html"),rv=tv("image/svg+xml");var OY=Mr(),ZF=xe("loaded"),JF=14,nv="https://www.keepright.at",vl={errorTypes:{},localizeStrings:{}},Gr,LY=[30,40,50,60,70,90,100,110,120,130,150,160,170,180,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,208,210,220,230,231,232,270,280,281,282,283,284,285,290,291,292,293,294,295,296,297,298,300,310,311,312,313,320,350,360,370,380,390,400,401,402,410,411,412,413];function rD(e){e&&e.abort()}function RY(e,t){Object.keys(e.inflightTile).forEach(r=>{t.find(i=>r===i.id)||(rD(e.inflightTile[r]),delete e.inflightTile[r])})}function iv(e){return{minX:e.loc[0],minY:e.loc[1],maxX:e.loc[0],maxY:e.loc[1],data:e}}function eD(e,t){Gr.rtree.remove(e,(r,n)=>r.data.id===n.data.id),t&&Gr.rtree.insert(e)}function BY(e){if(!(e instanceof Fr))return;let t={},r=vl.errorTypes[e.whichType];if(!r){console.log("No Template: ",e.whichType),console.log(" ",e.description);return}if(!r.regex)return;let n=new RegExp(r.regex,"i"),i=n.exec(e.description);if(!i){console.log("Unmatched: ",e.whichType),console.log(" ",e.description),console.log(" ",n);return}for(let a=1;a${f}`}}function i(f){return{html:`${f}`}}function a(f){return{html:`${f}`}}function o(f){let p=[];return f.split(", ").forEach(g=>{let x=i("n"+g.slice(1));p.push(x)}),p.join(", ")}function s(f){let p=[];return f.split("),").forEach(g=>{let x=g.match(/\#(\d+)\((.+)\)?/);x!==null&&x.length>2&&p.push(i("w"+x[1])+" "+F("QA.keepRight.errorTypes.231.layer",{layer:x[2]}))}),p.join(", ")}function l(f){let p=[];return f.split(",").forEach(g=>{g=g.split(" ");let x=`"${g[0]}"`,b=g[1].slice(0,1),m=g[2].slice(1);m=i(b+m),p.push(`${x} ${g[1]} ${m}`)}),p.join(", ")}function u(f){if(!f)return"";let p=f.match(/\(including the name (\'.+\')\)/);return p&&p.length?F("QA.keepRight.errorTypes.370.including_the_name",{name:p[1]}):""}function c(f){let p=[];return f.split(",").forEach(g=>{let x=i("n"+g.slice(1));p.push(x)}),p.join(", ")}}var av={title:"keepRight",init(){dt.get("keepRight").then(e=>vl=e),Gr||this.reset(),this.event=ke(this,ZF,"on")},reset(){Gr&&Object.values(Gr.inflightTile).forEach(rD),Gr={data:{},loadedTile:{},inflightTile:{},inflightPost:{},closed:{},rtree:new tD.default}},loadIssues(e){let t={format:"geojson",ch:LY},r=OY.zoomExtent([JF,JF]).getTiles(e);RY(Gr,r),r.forEach(n=>{if(Gr.loadedTile[n.id]||Gr.inflightTile[n.id])return;let[i,a,o,s]=n.extent.rectangle(),l=Object.assign({},t,{left:i,bottom:s,right:o,top:a}),u=`${nv}/export.php?`+yt(l),c=new AbortController;Gr.inflightTile[n.id]=c,Kt(u,{signal:c.signal}).then(f=>{if(delete Gr.inflightTile[n.id],Gr.loadedTile[n.id]=!0,!f||!f.features||!f.features.length)throw new Error("No Data");f.features.forEach(p=>{let{properties:{error_type:d,error_id:g,comment:x=null,object_id:b,object_type:m,schema:v,title:y}}=p,{geometry:{coordinates:_},properties:{description:w=""}}=p,A=vl.errorTypes[d],I=(Math.floor(d/10)*10).toString(),E=A?d:I,k=vl.errorTypes[E];switch(E){case"170":w=`This feature has a FIXME tag: ${w}`;break;case"292":case"293":w=w.replace("A turn-","This turn-");break;case"294":case"295":case"296":case"297":case"298":w=`This turn-restriction~${w}`;break;case"300":w="This highway is missing a maxspeed tag";break;case"411":case"412":case"413":w=`This feature~${w}`;break}let S=!1;do{_=qr(_,S?[1e-5,0]:[0,1e-5]);let O=Pe(_).bbox();S=Gr.rtree.search(O).length}while(S);let D=new Fr(_,this,d,g,{comment:x,description:w,whichType:E,parentIssueType:I,severity:k.severity||"error",objectId:b,objectType:m,schema:v,title:y});D.replacements=BY(D),Gr.data[g]=D,Gr.rtree.insert(iv(D))}),ZF.call("loaded")}).catch(()=>{delete Gr.inflightTile[n.id],Gr.loadedTile[n.id]=!0})})},postUpdate(e,t){if(Gr.inflightPost[e.id])return t({message:"Error update already inflight",status:-2},e);let r={schema:e.schema,id:e.id};e.newStatus&&(r.st=e.newStatus),e.newComment!==void 0&&(r.co=e.newComment);let n=`${nv}/comment.php?`+yt(r),i=new AbortController;Gr.inflightPost[e.id]=i,Kt(n,{signal:i.signal}).finally(()=>{delete Gr.inflightPost[e.id],e.newStatus==="ignore"?this.removeItem(e):e.newStatus==="ignore_t"?(this.removeItem(e),Gr.closed[`${e.schema}:${e.id}`]=!0):e=this.replaceItem(e.update({comment:e.newComment,newComment:void 0,newState:void 0})),t&&t(null,e)})},getItems(e){let t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox();return Gr.rtree.search(i).map(a=>a.data)},getError(e){return Gr.data[e]},replaceItem(e){if(!(!(e instanceof Fr)||!e.id))return Gr.data[e.id]=e,eD(iv(e),!0),e},removeItem(e){!(e instanceof Fr)||!e.id||(delete Gr.data[e.id],eD(iv(e),!1))},issueURL(e){return`${nv}/report_map.php?schema=${e.schema}&error=${e.id}`},getClosedIDs(){return Object.keys(Gr.closed).sort()}};var uD=xt(_a());var UY=Mr(),nD=xe("loaded"),iD=14,n9={ow:"https://grab.community.improve-osm.org/directionOfFlowService",mr:"https://grab.community.improve-osm.org/missingGeoService",tr:"https://grab.community.improve-osm.org/turnRestrictionService"},aD={icons:{}},lr;function cD(e){Object.values(e).forEach(t=>{t&&t.abort()})}function zY(e,t){Object.keys(e.inflightTile).forEach(r=>{t.find(i=>r===i.id)||(cD(e.inflightTile[r]),delete e.inflightTile[r])})}function C5(e){return{minX:e.loc[0],minY:e.loc[1],maxX:e.loc[0],maxY:e.loc[1],data:e}}function oD(e,t){lr.rtree.remove(e,(r,n)=>r.data.id===n.data.id),t&&lr.rtree.insert(e)}function sD(e){return{html:`${e}`}}function i9(e){return{html:`${e}`}}function lD(e){if(e.length){let t=e.reduce((r,n)=>qr(r,[n.lon,n.lat]),[0,0]);return ma(t,1/e.length)}else return[0,0]}function qY(e,t){let r=Math.atan2(t.lon-e.lon,t.lat-e.lat);return r<0&&(r+=2*Math.PI),r*180/Math.PI}function VY(e){let t=45*Math.round(e/45);return F(`QA.improveOSM.directions.${{0:"north",45:"northeast",90:"east",135:"southeast",180:"south",225:"southwest",270:"west",315:"northwest",360:"north"}[t]}`)}function ov(e,t){let r=!1;do{e=qr(e,r?[1e-5,0]:t?[0,1e-5]:[0,0]);let i=Pe(e).bbox();r=lr.rtree.search(i).length}while(r);return e}var sv={title:"improveOSM",init(){dt.get("qa_data").then(e=>aD=e.improveOSM),lr||this.reset(),this.event=ke(this,nD,"on")},reset(){lr&&Object.values(lr.inflightTile).forEach(cD),lr={data:{},loadedTile:{},inflightTile:{},inflightPost:{},closed:{},rtree:new uD.default}},loadIssues(e){let t={client:"iD",status:"OPEN",zoom:"19"},r=UY.zoomExtent([iD,iD]).getTiles(e);zY(lr,r),r.forEach(n=>{if(lr.loadedTile[n.id]||lr.inflightTile[n.id])return;let[i,a,o,s]=n.extent.rectangle(),l=Object.assign({},t,{east:i,south:s,west:o,north:a}),u={};Object.keys(n9).forEach(c=>{let f=Object.assign({},l,c==="mr"?{type:"PARKING,ROAD,BOTH,PATH"}:{confidenceLevel:"C1"}),p=`${n9[c]}/search?`+yt(f),d=new AbortController;u[c]=d,Kt(p,{signal:d.signal}).then(g=>{delete lr.inflightTile[n.id][c],Object.keys(lr.inflightTile[n.id]).length||(delete lr.inflightTile[n.id],lr.loadedTile[n.id]=!0),g.roadSegments&&g.roadSegments.forEach(x=>{let{points:b,wayId:m,fromNodeId:v,toNodeId:y}=x,_=`${m}${v}${y}`,w=b.length/2,A;w%1===0?A=lD([b[w-1],b[w]]):(w=b[Math.floor(w)],A=[w.lon,w.lat]),A=ov(A,!1);let I=new Fr(A,this,c,_,{issueKey:c,identifier:{wayId:m,fromNodeId:v,toNodeId:y},objectId:m,objectType:"way"});I.replacements={percentage:x.percentOfTrips,num_trips:x.numberOfTrips,highway:sD(F("QA.keepRight.error_parts.highway")),from_node:i9("n"+x.fromNodeId),to_node:i9("n"+x.toNodeId)},lr.data[I.id]=I,lr.rtree.insert(C5(I))}),g.tiles&&g.tiles.forEach(x=>{let{type:b,x:m,y:v,numberOfTrips:y}=x,_=b.toLowerCase(),w=`${_}${m}${v}${y}`,A=lD(x.points);A=ov(A,!1);let I=new Fr(A,this,`${c}-${_}`,w,{issueKey:c,identifier:{x:m,y:v}});I.replacements={num_trips:y,geometry_type:F(`QA.improveOSM.geometry_types.${_}`)},y===-1&&(I.desc=F("QA.improveOSM.error_types.mr.description_alt",I.replacements)),lr.data[I.id]=I,lr.rtree.insert(C5(I))}),g.entities&&g.entities.forEach(x=>{let{point:b,id:m,segments:v,numberOfPasses:y,turnType:_}=x,w=`${m.replace(/[,:+#]/g,"_")}`,A=ov([b.lon,b.lat],!0),I=m.split(","),E=I[0],k=I[3],S=I[2].split(":")[1],D=new Fr(A,this,c,w,{issueKey:c,identifier:m,objectId:k,objectType:"node"}),[P,O]=v[0].points,T=VY(qY(P,O));D.replacements={num_passed:y,num_trips:v[0].numberOfTrips,turn_restriction:_.toLowerCase(),from_way:i9("w"+E),to_way:i9("w"+S),travel_direction:T,junction:sD(F("QA.keepRight.error_parts.this_node"))},lr.data[D.id]=D,lr.rtree.insert(C5(D)),nD.call("loaded")})}).catch(()=>{delete lr.inflightTile[n.id][c],Object.keys(lr.inflightTile[n.id]).length||(delete lr.inflightTile[n.id],lr.loadedTile[n.id]=!0)})}),lr.inflightTile[n.id]=u})},getComments(e){if(e.comments)return Promise.resolve(e);let t=e.issueKey,r={};t==="ow"?r=e.identifier:t==="mr"?(r.tileX=e.identifier.x,r.tileY=e.identifier.y):t==="tr"&&(r.targetId=e.identifier);let n=`${n9[t]}/retrieveComments?`+yt(r),i=a=>{e.comments=a.comments?a.comments.reverse():[],this.replaceItem(e)};return Kt(n).then(i).then(()=>e)},postUpdate(e,t){if(!M2.authenticated())return t({message:"Not Authenticated",status:-3},e);if(lr.inflightPost[e.id])return t({message:"Error update already inflight",status:-2},e);M2.userDetails(r.bind(this));function r(n,i){if(n)return t(n,e);let a=e.issueKey,o=`${n9[a]}/comment`,s={username:i.display_name,targetIds:[e.identifier]};e.newStatus&&(s.status=e.newStatus,s.text="status changed"),e.newComment&&(s.text=e.newComment);let l=new AbortController;lr.inflightPost[e.id]=l;let u={method:"POST",signal:l.signal,body:JSON.stringify(s)};Kt(o,u).then(()=>{if(delete lr.inflightPost[e.id],e.newStatus)this.removeItem(e),e.newStatus==="SOLVED"&&(e.issueKey in lr.closed||(lr.closed[e.issueKey]=0),lr.closed[e.issueKey]+=1);else{let c=new Date,f=e.comments?e.comments:[];f.push({username:s.username,text:s.text,timestamp:c.getTime()/1e3}),this.replaceItem(e.update({comments:f,newComment:void 0}))}t&&t(null,e)}).catch(c=>{delete lr.inflightPost[e.id],t&&t(c.message)})}},getItems(e){let t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox();return lr.rtree.search(i).map(a=>a.data)},getError(e){return lr.data[e]},getIcon(e){return aD.icons[e]},replaceItem(e){if(!(!(e instanceof Fr)||!e.id))return lr.data[e.id]=e,oD(C5(e),!0),e},removeItem(e){!(e instanceof Fr)||!e.id||(delete lr.data[e.id],oD(C5(e),!1))},getClosedCounts(){return lr.closed}};var DD=xt(_a());function fv(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var S0=fv();function gD(e){S0=e}var vD=/[&<>"']/,GY=new RegExp(vD.source,"g"),yD=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,jY=new RegExp(yD.source,"g"),HY={"&":"&","<":"<",">":">",'"':""","'":"'"},fD=e=>HY[e];function Ea(e,t){if(t){if(vD.test(e))return e.replace(GY,fD)}else if(yD.test(e))return e.replace(jY,fD);return e}var WY=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function QY(e){return e.replace(WY,(t,r)=>(r=r.toLowerCase(),r==="colon"?":":r.charAt(0)==="#"?r.charAt(1)==="x"?String.fromCharCode(parseInt(r.substring(2),16)):String.fromCharCode(+r.substring(1)):""))}var XY=/(^|[^\[])\^/g;function Lr(e,t){let r=typeof e=="string"?e:e.source;t=t||"";let n={replace:(i,a)=>{let o=typeof a=="string"?a:a.source;return o=o.replace(XY,"$1"),r=r.replace(i,o),n},getRegex:()=>new RegExp(r,t)};return n}function pD(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}var F5={exec:()=>null};function dD(e,t){let r=e.replace(/\|/g,(a,o,s)=>{let l=!1,u=o;for(;--u>=0&&s[u]==="\\";)l=!l;return l?"|":" |"}),n=r.split(/ \|/),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length{let a=i.match(/^\s+/);if(a===null)return i;let[o]=a;return o.length>=n.length?i.slice(n.length):i}).join(` +`)}var N2=class{constructor(t){Je(this,"options");Je(this,"rules");Je(this,"lexer");this.options=t||S0}space(t){let r=this.rules.block.newline.exec(t);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(t){let r=this.rules.block.code.exec(t);if(r){let n=r[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?n:a9(n,` +`)}}}fences(t){let r=this.rules.block.fences.exec(t);if(r){let n=r[0],i=KY(n,r[3]||"");return{type:"code",raw:n,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:i}}}heading(t){let r=this.rules.block.heading.exec(t);if(r){let n=r[2].trim();if(/#$/.test(n)){let i=a9(n,"#");(this.options.pedantic||!i||/ $/.test(i))&&(n=i.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){let r=this.rules.block.hr.exec(t);if(r)return{type:"hr",raw:r[0]}}blockquote(t){let r=this.rules.block.blockquote.exec(t);if(r){let n=a9(r[0].replace(/^ *>[ \t]?/gm,""),` +`),i=this.lexer.state.top;this.lexer.state.top=!0;let a=this.lexer.blockTokens(n);return this.lexer.state.top=i,{type:"blockquote",raw:r[0],tokens:a,text:n}}}list(t){let r=this.rules.block.list.exec(t);if(r){let n=r[1].trim(),i=n.length>1,a={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let o=new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),s="",l="",u=!1;for(;t;){let c=!1;if(!(r=o.exec(t))||this.rules.block.hr.test(t))break;s=r[0],t=t.substring(s.length);let f=r[2].split(` +`,1)[0].replace(/^\t+/,m=>" ".repeat(3*m.length)),p=t.split(` +`,1)[0],d=0;this.options.pedantic?(d=2,l=f.trimStart()):(d=r[2].search(/[^ ]/),d=d>4?1:d,l=f.slice(d),d+=r[1].length);let g=!1;if(!f&&/^ *$/.test(p)&&(s+=p+` +`,t=t.substring(p.length+1),c=!0),!c){let m=new RegExp(`^ {0,${Math.min(3,d-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),v=new RegExp(`^ {0,${Math.min(3,d-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),y=new RegExp(`^ {0,${Math.min(3,d-1)}}(?:\`\`\`|~~~)`),_=new RegExp(`^ {0,${Math.min(3,d-1)}}#`);for(;t;){let w=t.split(` +`,1)[0];if(p=w,this.options.pedantic&&(p=p.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),y.test(p)||_.test(p)||m.test(p)||v.test(t))break;if(p.search(/[^ ]/)>=d||!p.trim())l+=` +`+p.slice(d);else{if(g||f.search(/[^ ]/)>=4||y.test(f)||_.test(f)||v.test(f))break;l+=` +`+p}!g&&!p.trim()&&(g=!0),s+=w+` +`,t=t.substring(w.length+1),f=p.slice(d)}}a.loose||(u?a.loose=!0:/\n *\n *$/.test(s)&&(u=!0));let x=null,b;this.options.gfm&&(x=/^\[[ xX]\] /.exec(l),x&&(b=x[0]!=="[ ] ",l=l.replace(/^\[[ xX]\] +/,""))),a.items.push({type:"list_item",raw:s,task:!!x,checked:b,loose:!1,text:l,tokens:[]}),a.raw+=s}a.items[a.items.length-1].raw=s.trimEnd(),a.items[a.items.length-1].text=l.trimEnd(),a.raw=a.raw.trimEnd();for(let c=0;cd.type==="space"),p=f.length>0&&f.some(d=>/\n.*\n/.test(d.raw));a.loose=p}if(a.loose)for(let c=0;c$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=r[3]?r[3].substring(1,r[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):r[3];return{type:"def",tag:n,raw:r[0],href:i,title:a}}}table(t){let r=this.rules.block.table.exec(t);if(!r||!/[:|]/.test(r[2]))return;let n=dD(r[1]),i=r[2].replace(/^\||\| *$/g,"").split("|"),a=r[3]&&r[3].trim()?r[3].replace(/\n[ \t]*$/,"").split(` +`):[],o={type:"table",raw:r[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let s of i)/^ *-+: *$/.test(s)?o.align.push("right"):/^ *:-+: *$/.test(s)?o.align.push("center"):/^ *:-+ *$/.test(s)?o.align.push("left"):o.align.push(null);for(let s of n)o.header.push({text:s,tokens:this.lexer.inline(s)});for(let s of a)o.rows.push(dD(s,o.header.length).map(l=>({text:l,tokens:this.lexer.inline(l)})));return o}}lheading(t){let r=this.rules.block.lheading.exec(t);if(r)return{type:"heading",raw:r[0],depth:r[2].charAt(0)==="="?1:2,text:r[1],tokens:this.lexer.inline(r[1])}}paragraph(t){let r=this.rules.block.paragraph.exec(t);if(r){let n=r[1].charAt(r[1].length-1)===` +`?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let r=this.rules.block.text.exec(t);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(t){let r=this.rules.inline.escape.exec(t);if(r)return{type:"escape",raw:r[0],text:Ea(r[1])}}tag(t){let r=this.rules.inline.tag.exec(t);if(r)return!this.lexer.state.inLink&&/^/i.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(t){let r=this.rules.inline.link.exec(t);if(r){let n=r[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;let o=a9(n.slice(0,-1),"\\");if((n.length-o.length)%2===0)return}else{let o=YY(r[2],"()");if(o>-1){let l=(r[0].indexOf("!")===0?5:4)+r[1].length+o;r[2]=r[2].substring(0,o),r[0]=r[0].substring(0,l).trim(),r[3]=""}}let i=r[2],a="";if(this.options.pedantic){let o=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i);o&&(i=o[1],a=o[3])}else a=r[3]?r[3].slice(1,-1):"";return i=i.trim(),/^$/.test(n)?i=i.slice(1):i=i.slice(1,-1)),mD(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer)}}reflink(t,r){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){let i=(n[2]||n[1]).replace(/\s+/g," "),a=r[i.toLowerCase()];if(!a){let o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return mD(n,a,n[0],this.lexer)}}emStrong(t,r,n=""){let i=this.rules.inline.emStrongLDelim.exec(t);if(!i||i[3]&&n.match(/[\p{L}\p{N}]/u))return;if(!(i[1]||i[2]||"")||!n||this.rules.inline.punctuation.exec(n)){let o=[...i[0]].length-1,s,l,u=o,c=0,f=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(f.lastIndex=0,r=r.slice(-1*t.length+o);(i=f.exec(r))!=null;){if(s=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!s)continue;if(l=[...s].length,i[3]||i[4]){u+=l;continue}else if((i[5]||i[6])&&o%3&&!((o+l)%3)){c+=l;continue}if(u-=l,u>0)continue;l=Math.min(l,l+u+c);let p=[...i[0]][0].length,d=t.slice(0,o+i.index+p+l);if(Math.min(o,l)%2){let x=d.slice(1,-1);return{type:"em",raw:d,text:x,tokens:this.lexer.inlineTokens(x)}}let g=d.slice(2,-2);return{type:"strong",raw:d,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(t){let r=this.rules.inline.code.exec(t);if(r){let n=r[2].replace(/\n/g," "),i=/[^ ]/.test(n),a=/^ /.test(n)&&/ $/.test(n);return i&&a&&(n=n.substring(1,n.length-1)),n=Ea(n,!0),{type:"codespan",raw:r[0],text:n}}}br(t){let r=this.rules.inline.br.exec(t);if(r)return{type:"br",raw:r[0]}}del(t){let r=this.rules.inline.del.exec(t);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(t){let r=this.rules.inline.autolink.exec(t);if(r){let n,i;return r[2]==="@"?(n=Ea(r[1]),i="mailto:"+n):(n=Ea(r[1]),i=n),{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(t){var n,i;let r;if(r=this.rules.inline.url.exec(t)){let a,o;if(r[2]==="@")a=Ea(r[0]),o="mailto:"+a;else{let s;do s=r[0],r[0]=(i=(n=this.rules.inline._backpedal.exec(r[0]))==null?void 0:n[0])!=null?i:"";while(s!==r[0]);a=Ea(r[0]),r[1]==="www."?o="http://"+r[0]:o=r[0]}return{type:"link",raw:r[0],text:a,href:o,tokens:[{type:"text",raw:a,text:a}]}}}inlineText(t){let r=this.rules.inline.text.exec(t);if(r){let n;return this.lexer.state.inRawBlock?n=r[0]:n=Ea(r[0]),{type:"text",raw:r[0],text:n}}}},ZY=/^(?: *(?:\n|$))+/,JY=/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,eK=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,M5=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,tK=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,bD=/(?:[*+-]|\d{1,9}[.)])/,xD=Lr(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,bD).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),pv=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,rK=/^[^\n]+/,dv=/(?!\s*\])(?:\\.|[^\[\]\\])+/,nK=Lr(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",dv).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),iK=Lr(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,bD).getRegex(),u9="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",mv=/|$))/,aK=Lr("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",mv).replace("tag",u9).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),wD=Lr(pv).replace("hr",M5).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",u9).getRegex(),oK=Lr(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",wD).getRegex(),hv={blockquote:oK,code:JY,def:nK,fences:eK,heading:tK,hr:M5,html:aK,lheading:xD,list:iK,newline:ZY,paragraph:wD,table:F5,text:rK},hD=Lr("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",M5).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",u9).getRegex(),sK={...hv,table:hD,paragraph:Lr(pv).replace("hr",M5).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",hD).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",u9).getRegex()},lK={...hv,html:Lr(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",mv).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:F5,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Lr(pv).replace("hr",M5).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",xD).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},_D=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,uK=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ED=/^( {2,}|\\)\n(?!\s*$)/,cK=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,dK=Lr(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,N5).getRegex(),mK=Lr("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,N5).getRegex(),hK=Lr("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,N5).getRegex(),gK=Lr(/\\([punct])/,"gu").replace(/punct/g,N5).getRegex(),vK=Lr(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),yK=Lr(mv).replace("(?:-->|$)","-->").getRegex(),bK=Lr("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",yK).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),s9=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,xK=Lr(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",s9).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),kD=Lr(/^!?\[(label)\]\[(ref)\]/).replace("label",s9).replace("ref",dv).getRegex(),AD=Lr(/^!?\[(ref)\](?:\[\])?/).replace("ref",dv).getRegex(),wK=Lr("reflink|nolink(?!\\()","g").replace("reflink",kD).replace("nolink",AD).getRegex(),gv={_backpedal:F5,anyPunctuation:gK,autolink:vK,blockSkip:pK,br:ED,code:uK,del:F5,emStrongLDelim:dK,emStrongRDelimAst:mK,emStrongRDelimUnd:hK,escape:_D,link:xK,nolink:AD,punctuation:fK,reflink:kD,reflinkSearch:wK,tag:bK,text:cK,url:F5},_K={...gv,link:Lr(/^!?\[(label)\]\((.*?)\)/).replace("label",s9).getRegex(),reflink:Lr(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",s9).getRegex()},lv={...gv,escape:Lr(_D).replace("])","~|])").getRegex(),url:Lr(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\l+" ".repeat(u.length));let n,i,a,o;for(;t;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(s=>(n=s.call({lexer:this},t,r))?(t=t.substring(n.raw.length),r.push(n),!0):!1))){if(n=this.tokenizer.space(t)){t=t.substring(n.raw.length),n.raw.length===1&&r.length>0?r[r.length-1].raw+=` +`:r.push(n);continue}if(n=this.tokenizer.code(t)){t=t.substring(n.raw.length),i=r[r.length-1],i&&(i.type==="paragraph"||i.type==="text")?(i.raw+=` +`+n.raw,i.text+=` +`+n.text,this.inlineQueue[this.inlineQueue.length-1].src=i.text):r.push(n);continue}if(n=this.tokenizer.fences(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.heading(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.hr(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.blockquote(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.list(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.html(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.def(t)){t=t.substring(n.raw.length),i=r[r.length-1],i&&(i.type==="paragraph"||i.type==="text")?(i.raw+=` +`+n.raw,i.text+=` +`+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=i.text):this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title});continue}if(n=this.tokenizer.table(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.lheading(t)){t=t.substring(n.raw.length),r.push(n);continue}if(a=t,this.options.extensions&&this.options.extensions.startBlock){let s=1/0,l=t.slice(1),u;this.options.extensions.startBlock.forEach(c=>{u=c.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=t.substring(0,s+1))}if(this.state.top&&(n=this.tokenizer.paragraph(a))){i=r[r.length-1],o&&i.type==="paragraph"?(i.raw+=` +`+n.raw,i.text+=` +`+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):r.push(n),o=a.length!==t.length,t=t.substring(n.raw.length);continue}if(n=this.tokenizer.text(t)){t=t.substring(n.raw.length),i=r[r.length-1],i&&i.type==="text"?(i.raw+=` +`+n.raw,i.text+=` +`+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):r.push(n);continue}if(t){let s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(t,r=[]){return this.inlineQueue.push({src:t,tokens:r}),r}inlineTokens(t,r=[]){let n,i,a,o=t,s,l,u;if(this.tokens.links){let c=Object.keys(this.tokens.links);if(c.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(o))!=null;)c.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(o=o.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.blockSkip.exec(o))!=null;)o=o.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(o))!=null;)o=o.slice(0,s.index)+"++"+o.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;t;)if(l||(u=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(c=>(n=c.call({lexer:this},t,r))?(t=t.substring(n.raw.length),r.push(n),!0):!1))){if(n=this.tokenizer.escape(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.tag(t)){t=t.substring(n.raw.length),i=r[r.length-1],i&&n.type==="text"&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(n=this.tokenizer.link(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(n.raw.length),i=r[r.length-1],i&&n.type==="text"&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(n=this.tokenizer.emStrong(t,o,u)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.codespan(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.br(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.del(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.autolink(t)){t=t.substring(n.raw.length),r.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(t))){t=t.substring(n.raw.length),r.push(n);continue}if(a=t,this.options.extensions&&this.options.extensions.startInline){let c=1/0,f=t.slice(1),p;this.options.extensions.startInline.forEach(d=>{p=d.call({lexer:this},f),typeof p=="number"&&p>=0&&(c=Math.min(c,p))}),c<1/0&&c>=0&&(a=t.substring(0,c+1))}if(n=this.tokenizer.inlineText(a)){t=t.substring(n.raw.length),n.raw.slice(-1)!=="_"&&(u=n.raw.slice(-1)),l=!0,i=r[r.length-1],i&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(t){let c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return r}},P2=class{constructor(t){Je(this,"options");this.options=t||S0}code(t,r,n){var a;let i=(a=(r||"").match(/^\S*/))==null?void 0:a[0];return t=t.replace(/\n$/,"")+` +`,i?'
'+(n?t:Ea(t,!0))+`
+`:"
"+(n?t:Ea(t,!0))+`
+`}blockquote(t){return`
+${t}
+`}html(t,r){return t}heading(t,r,n){return`${t} +`}hr(){return`
+`}list(t,r,n){let i=r?"ol":"ul",a=r&&n!==1?' start="'+n+'"':"";return"<"+i+a+`> +`+t+" +`}listitem(t,r,n){return`
  • ${t}
  • +`}checkbox(t){return"'}paragraph(t){return`

    ${t}

    +`}table(t,r){return r&&(r=`${r}`),` + +`+t+` +`+r+`
    +`}tablerow(t){return` +${t} +`}tablecell(t,r){let n=r.header?"th":"td";return(r.align?`<${n} align="${r.align}">`:`<${n}>`)+t+` +`}strong(t){return`${t}`}em(t){return`${t}`}codespan(t){return`${t}`}br(){return"
    "}del(t){return`${t}`}link(t,r,n){let i=pD(t);if(i===null)return n;t=i;let a='
    ",a}image(t,r,n){let i=pD(t);if(i===null)return n;t=i;let a=`${n}0&&p.tokens[0].type==="paragraph"?(p.tokens[0].text=b+" "+p.tokens[0].text,p.tokens[0].tokens&&p.tokens[0].tokens.length>0&&p.tokens[0].tokens[0].type==="text"&&(p.tokens[0].tokens[0].text=b+" "+p.tokens[0].tokens[0].text)):p.tokens.unshift({type:"text",text:b+" "}):x+=b+" "}x+=this.parse(p.tokens,u),c+=this.renderer.listitem(x,g,!!d)}n+=this.renderer.list(c,s,l);continue}case"html":{let o=a;n+=this.renderer.html(o.text,o.block);continue}case"paragraph":{let o=a;n+=this.renderer.paragraph(this.parseInline(o.tokens));continue}case"text":{let o=a,s=o.tokens?this.parseInline(o.tokens):o.text;for(;i+1{let u=s[l].flat(1/0);n=n.concat(this.walkTokens(u,r))}):s.tokens&&(n=n.concat(this.walkTokens(s.tokens,r)))}}return n}use(...t){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let o=r.renderers[a.name];o?r.renderers[a.name]=function(...s){let l=a.renderer.apply(this,s);return l===!1&&(l=o.apply(this,s)),l}:r.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=r[a.level];o?o.unshift(a.tokenizer):r[a.level]=[a.tokenizer],a.start&&(a.level==="block"?r.startBlock?r.startBlock.push(a.start):r.startBlock=[a.start]:a.level==="inline"&&(r.startInline?r.startInline.push(a.start):r.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(r.childTokens[a.name]=a.childTokens)}),i.extensions=r),n.renderer){let a=this.defaults.renderer||new P2(this.defaults);for(let o in n.renderer){if(!(o in a))throw new Error(`renderer '${o}' does not exist`);if(o==="options")continue;let s=o,l=n.renderer[s],u=a[s];a[s]=(...c)=>{let f=l.apply(a,c);return f===!1&&(f=u.apply(a,c)),f||""}}i.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new N2(this.defaults);for(let o in n.tokenizer){if(!(o in a))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let s=o,l=n.tokenizer[s],u=a[s];a[s]=(...c)=>{let f=l.apply(a,c);return f===!1&&(f=u.apply(a,c)),f}}i.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new k0;for(let o in n.hooks){if(!(o in a))throw new Error(`hook '${o}' does not exist`);if(o==="options")continue;let s=o,l=n.hooks[s],u=a[s];k0.passThroughHooks.has(o)?a[s]=c=>{if(this.defaults.async)return Promise.resolve(l.call(a,c)).then(p=>u.call(a,p));let f=l.call(a,c);return u.call(a,f)}:a[s]=(...c)=>{let f=l.apply(a,c);return f===!1&&(f=u.apply(a,c)),f}}i.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,o=n.walkTokens;i.walkTokens=function(s){let l=[];return l.push(o.call(this,s)),a&&(l=l.concat(a.call(this,s))),l}}this.defaults={...this.defaults,...i}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,r){return o1.lex(t,r!=null?r:this.defaults)}parser(t,r){return s1.parse(t,r!=null?r:this.defaults)}};T5=new WeakSet,cv=function(t,r){return(n,i)=>{let a={...i},o={...this.defaults,...a};this.defaults.async===!0&&a.async===!1&&(o.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),o.async=!0);let s=l6(this,l9,SD).call(this,!!o.silent,!!o.async);if(typeof n>"u"||n===null)return s(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(o.hooks&&(o.hooks.options=o),o.async)return Promise.resolve(o.hooks?o.hooks.preprocess(n):n).then(l=>t(l,o)).then(l=>o.hooks?o.hooks.processAllTokens(l):l).then(l=>o.walkTokens?Promise.all(this.walkTokens(l,o.walkTokens)).then(()=>l):l).then(l=>r(l,o)).then(l=>o.hooks?o.hooks.postprocess(l):l).catch(s);try{o.hooks&&(n=o.hooks.preprocess(n));let l=t(n,o);o.hooks&&(l=o.hooks.processAllTokens(l)),o.walkTokens&&this.walkTokens(l,o.walkTokens);let u=r(l,o);return o.hooks&&(u=o.hooks.postprocess(u)),u}catch(l){return s(l)}}},l9=new WeakSet,SD=function(t,r){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,t){let i="

    An error occurred:

    "+Ea(n.message+"",!0)+"
    ";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}};var A0=new uv;function Gt(e,t){return A0.parse(e,t)}Gt.options=Gt.setOptions=function(e){return A0.setOptions(e),Gt.defaults=A0.defaults,gD(Gt.defaults),Gt};Gt.getDefaults=fv;Gt.defaults=S0;Gt.use=function(...e){return A0.use(...e),Gt.defaults=A0.defaults,gD(Gt.defaults),Gt};Gt.walkTokens=function(e,t){return A0.walkTokens(e,t)};Gt.parseInline=A0.parseInline;Gt.Parser=s1;Gt.parser=s1.parse;Gt.Renderer=P2;Gt.TextRenderer=D5;Gt.Lexer=o1;Gt.lexer=o1.lex;Gt.Tokenizer=N2;Gt.Hooks=k0;Gt.parse=Gt;var wbe=Gt.options,_be=Gt.setOptions,Ebe=Gt.use,kbe=Gt.walkTokens,Abe=Gt.parseInline;var Sbe=s1.parse,Cbe=o1.lex;var kK=Mr(),CD=xe("loaded"),ID=14,c9="https://osmose.openstreetmap.fr/api/0.3",O2={icons:{},items:[]},Mt;function TD(e){e&&e.abort()}function AK(e,t){Object.keys(e.inflightTile).forEach(r=>{t.find(i=>r===i.id)||(TD(e.inflightTile[r]),delete e.inflightTile[r])})}function vv(e){return{minX:e.loc[0],minY:e.loc[1],maxX:e.loc[0],maxY:e.loc[1],data:e}}function FD(e,t){Mt.rtree.remove(e,(r,n)=>r.data.id===n.data.id),t&&Mt.rtree.insert(e)}function SK(e){let t=!1;do{e=qr(e,t?[1e-5,0]:[0,1e-5]);let n=Pe(e).bbox();t=Mt.rtree.search(n).length}while(t);return e}var yv={title:"osmose",init(){dt.get("qa_data").then(e=>{O2=e.osmose,O2.items=Object.keys(e.osmose.icons).map(t=>t.split("-")[0]).reduce((t,r)=>t.indexOf(r)!==-1?t:[...t,r],[])}),Mt||this.reset(),this.event=ke(this,CD,"on")},reset(){let e={},t={};Mt&&(Object.values(Mt.inflightTile).forEach(TD),e=Mt.strings,t=Mt.colors),Mt={data:{},loadedTile:{},inflightTile:{},inflightPost:{},closed:{},rtree:new DD.default,strings:e,colors:t}},loadIssues(e){let t={item:O2.items},r=kK.zoomExtent([ID,ID]).getTiles(e);AK(Mt,r),r.forEach(n=>{if(Mt.loadedTile[n.id]||Mt.inflightTile[n.id])return;let[i,a,o]=n.xyz,s=`${c9}/issues/${o}/${i}/${a}.geojson?`+yt(t),l=new AbortController;Mt.inflightTile[n.id]=l,Kt(s,{signal:l.signal}).then(u=>{delete Mt.inflightTile[n.id],Mt.loadedTile[n.id]=!0,u.features&&u.features.forEach(c=>{let{item:f,class:p,uuid:d}=c.properties,g=`${f}-${p}`;if(g in O2.icons){let x=c.geometry.coordinates;x=SK(x);let b=new Fr(x,this,g,d,{item:f});(f===8300||f===8360)&&(b.elems=[]),Mt.data[b.id]=b,Mt.rtree.insert(vv(b))}}),CD.call("loaded")}).catch(()=>{delete Mt.inflightTile[n.id],Mt.loadedTile[n.id]=!0})})},loadIssueDetail(e){if(e.elems!==void 0)return Promise.resolve(e);let t=`${c9}/issue/${e.id}?langs=${fe.localeCode()}`,r=n=>{e.elems=n.elems.map(i=>i.type.substring(0,1)+i.id),e.detail=n.subtitle?Gt(n.subtitle.auto):"",this.replaceItem(e)};return Kt(t).then(r).then(()=>e)},loadStrings(e=fe.localeCode()){let t=Object.keys(O2.icons);if(e in Mt.strings&&Object.keys(Mt.strings[e]).length===t.length)return Promise.resolve(Mt.strings[e]);e in Mt.strings||(Mt.strings[e]={});let r=t.map(n=>{if(n in Mt.strings[e])return null;let i=l=>{let[u={items:[]}]=l.categories,[c={class:[]}]=u.items,[f=null]=c.class;if(!f){console.log(`Osmose strings request (${n}) had unexpected data`);return}let{item:p,color:d}=c;/^#[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}/.test(d)&&(Mt.colors[p]=d);let{title:g,detail:x,fix:b,trap:m}=f,v={};g&&(v.title=g.auto),x&&(v.detail=Gt(x.auto)),m&&(v.trap=Gt(m.auto)),b&&(v.fix=Gt(b.auto)),Mt.strings[e][n]=v},[a,o]=n.split("-"),s=`${c9}/items/${a}/class/${o}?langs=${e}`;return Kt(s).then(i)}).filter(Boolean);return Promise.all(r).then(()=>Mt.strings[e])},getStrings(e,t=fe.localeCode()){return t in Mt.strings?Mt.strings[t][e]:{}},getColor(e){return e in Mt.colors?Mt.colors[e]:"#FFFFFF"},postUpdate(e,t){if(Mt.inflightPost[e.id])return t({message:"Issue update already inflight",status:-2},e);let r=`${c9}/issue/${e.id}/${e.newStatus}`,n=new AbortController,i=()=>{delete Mt.inflightPost[e.id],this.removeItem(e),e.newStatus==="done"&&(e.item in Mt.closed||(Mt.closed[e.item]=0),Mt.closed[e.item]+=1),t&&t(null,e)};Mt.inflightPost[e.id]=n,fetch(r,{signal:n.signal}).then(i).catch(a=>{delete Mt.inflightPost[e.id],t&&t(a.message)})},getItems(e){let t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox();return Mt.rtree.search(i).map(a=>a.data)},getError(e){return Mt.data[e]},getIcon(e){return O2.icons[e]},replaceItem(e){if(!(!(e instanceof Fr)||!e.id))return Mt.data[e.id]=e,FD(vv(e),!0),e},removeItem(e){!(e instanceof Fr)||!e.id||(delete Mt.data[e.id],FD(vv(e),!1))},getClosedCounts(){return Mt.closed},itemURL(e){return`https://osmose.openstreetmap.fr/en/error/${e.id}`}};var Cv=xt(d9()),O5=xt(_a()),Iv=xt(h9());var U2="MLY|4100327730013843|5bb78b81720791946a9a7b956c57b7cf",jD="https://graph.mapillary.com/",Fv="https://tiles.mapillary.com/maps/vtp",tZ=`${Fv}/mly_map_feature_point/2/{z}/{x}/{y}?access_token=${U2}`,rZ=`${Fv}/mly1_public/2/{z}/{x}/{y}?access_token=${U2}`,nZ=`${Fv}/mly_map_feature_traffic_sign/2/{z}/{x}/{y}?access_token=${U2}`,iZ="mapillary-js/mapillary.css",aZ="mapillary-js/mapillary.js",oZ=14,u1=xe("change","loadedImages","loadedSigns","loadedMapFeatures","bearingChanged","imageChanged"),P5,C0,In,g9=!1,Ev,v9=!1,y9=!1,Xn,kv=["all"];function Av(e,t,r,n){Mr().zoomExtent([oZ,r]).skipNullIsland(!0).getTiles(n).forEach(function(o){sZ(e,t,o)})}function sZ(e,t,r){let n=In.requests,i=`${r.id}-${e}`;if(n.loaded[i]||n.inflight[i])return;let a=new AbortController;n.inflight[i]=a;let o=t.replace("{x}",r.xyz[0]).replace("{y}",r.xyz[1]).replace("{z}",r.xyz[2]);fetch(o,{signal:a.signal}).then(function(s){if(!s.ok)throw new Error(s.status+" "+s.statusText);return n.loaded[i]=!0,delete n.inflight[i],s.arrayBuffer()}).then(function(s){if(!s)throw new Error("No Data");lZ(s,r,e),e==="images"?u1.call("loadedImages"):e==="signs"?u1.call("loadedSigns"):e==="points"&&u1.call("loadedMapFeatures")}).catch(function(){n.loaded[i]=!0,delete n.inflight[i]})}function lZ(e,t,r){let n=new Iv.VectorTile(new Cv.default(e)),i,a,o,s,l,u,c;if(n.layers.hasOwnProperty("image")){for(i=[],a=In.images,o=n.layers.image,s=0;s{let a=0;function o(){a+=1,a===2&&n()}let s=G("head");s.selectAll("#ideditor-mapillary-viewercss").data([0]).enter().append("link").attr("id","ideditor-mapillary-viewercss").attr("rel","stylesheet").attr("crossorigin","anonymous").attr("href",e.asset(iZ)).on("load.serviceMapillary",o).on("error.serviceMapillary",function(){i()}),s.selectAll("#ideditor-mapillary-viewerjs").data([0]).enter().append("script").attr("id","ideditor-mapillary-viewerjs").attr("crossorigin","anonymous").attr("src",e.asset(aZ)).on("load.serviceMapillary",o).on("error.serviceMapillary",function(){i()})}).catch(function(){P5=null}).then(function(){r.initViewer(e)}),P5},loadSignResources:function(e){return e.ui().svgDefs.addSprites(["mapillary-sprite"],!1),this},loadObjectResources:function(e){return e.ui().svgDefs.addSprites(["mapillary-object-sprite"],!1),this},resetTags:function(){Xn&&!g9&&Xn.getComponent("tag").removeAll()},showFeatureDetections:function(e){v9=e,!v9&&!y9&&this.resetTags()},showSignDetections:function(e){y9=e,!v9&&!y9&&this.resetTags()},filterViewer:function(e){let t=e.photos().showsPanoramic(),r=e.photos().showsFlat(),n=e.photos().fromDate(),i=e.photos().toDate(),a=["all"];return t||a.push(["!=","cameraType","spherical"]),!r&&t&&a.push(["==","pano",!0]),n&&a.push([">=","capturedAt",new Date(n).getTime()]),i&&a.push([">=","capturedAt",new Date(i).getTime()]),Xn&&Xn.setFilter(a),kv=a,a},showViewer:function(e){let t=e.container().select(".photoviewer").classed("hide",!1);return t.selectAll(".photo-wrapper.mly-wrapper.hide").size()&&Xn&&(t.selectAll(".photo-wrapper:not(.mly-wrapper)").classed("hide",!0),t.selectAll(".photo-wrapper.mly-wrapper").classed("hide",!1),Xn.resize()),this},hideViewer:function(e){C0=null,!g9&&Xn&&Xn.getComponent("sequence").stop();let t=e.container().select(".photoviewer");return t.empty()||t.datum(null),t.classed("hide",!0).selectAll(".photo-wrapper").classed("hide",!0),this.updateUrlImage(null),u1.call("imageChanged"),u1.call("loadedMapFeatures"),u1.call("loadedSigns"),this.setStyles(e,null)},updateUrlImage:function(e){if(!window.mocha){let t=pr(window.location.hash);e?t.photo="mapillary/"+e:delete t.photo,window.location.replace("#"+yt(t,!0))}},highlightDetection:function(e){return e&&(Ev=e.id),this},initViewer:function(e){let t=this;if(!window.mapillary)return;let r={accessToken:U2,component:{cover:!1,keyboard:!1,tag:!0},container:"ideditor-mly"};!mapillary.isSupported()&&mapillary.isFallbackSupported()&&(g9=!0,r.component={cover:!1,direction:!1,imagePlane:!1,keyboard:!1,mouse:!1,sequence:!1,tag:!1,image:!0,navigation:!0}),Xn=new mapillary.Viewer(r),Xn.on("image",n),Xn.on("bearing",i),kv&&Xn.setFilter(kv),e.ui().photoviewer.on("resize.mapillary",function(){Xn&&Xn.resize()});function n(a){t.resetTags();let o=a.image;t.setActiveImage(o),t.setStyles(e,null);let s=[o.originalLngLat.lng,o.originalLngLat.lat];e.map().centerEase(s),t.updateUrlImage(o.id),(v9||y9)&&t.updateDetections(o.id,`${jD}/${o.id}/detections?access_token=${U2}&fields=id,image,geometry,value`),u1.call("imageChanged")}function i(a){u1.call("bearingChanged",void 0,a)}},selectImage:function(e,t){return Xn&&t&&Xn.moveTo(t).catch(function(r){console.error("mly3",r)}),this},getActiveImage:function(){return C0},getDetections:function(e){return HD(`${jD}/${e}/detections?access_token=${U2}&fields=id,value,image`)},setActiveImage:function(e){e?C0={ca:e.originalCompassAngle,id:e.id,loc:[e.originalLngLat.lng,e.originalLngLat.lat],is_pano:e.cameraType==="spherical",sequence_id:e.sequenceId}:C0=null},setStyles:function(e,t){let r=t&&t.id,n=t&&t.sequence_id,i=C0&&C0.sequence_id;return e.container().selectAll(".layer-mapillary .viewfield-group").classed("highlighted",function(a){return a.sequence_id===i||a.id===r}).classed("hovered",function(a){return a.id===r}),e.container().selectAll(".layer-mapillary .sequence").classed("highlighted",function(a){return a.properties.id===n}).classed("currentView",function(a){return a.properties.id===i}),this},updateDetections:function(e,t){if(!Xn||g9||!e)return;let r=In.image_detections;r.forImageId[e]?n(In.image_detections.forImageId[e]):HD(t).then(a=>{a.forEach(function(o){r.forImageId[e]||(r.forImageId[e]=[]),r.forImageId[e].push({geometry:o.geometry,id:o.id,image_id:e,value:o.value})}),n(In.image_detections.forImageId[e]||[])});function n(a){let o=Xn.getComponent("tag");a.forEach(function(s){let l=i(s);l&&o.add([l])})}function i(a){let o=a.value.split("--");if(!o.length)return;let s,l,u=16777215;Ev===a.id&&(u=16776960,l=o[1],(l==="flat"||l==="discrete"||l==="sign")&&(l=o[2]),l=l.replace(/-/g," "),l=l.charAt(0).toUpperCase()+l.slice(1),Ev=null);for(var c=window.atob(a.geometry),f=new Uint8Array(c.length),p=0;pm.map(v=>[v.x/g.extent,v.y/g.extent]));return s=new mapillary.OutlineTag(a.id,new mapillary.PolygonGeometry(b[0]),{text:l,textColor:u,lineColor:u,lineWidth:2,fillColor:u,fillOpacity:.3}),s}},cache:function(){return In}};function Ft(e){this.type=e.type,this.subtype=e.subtype,this.severity=e.severity,this.message=e.message,this.reference=e.reference,this.entityIds=e.entityIds,this.loc=e.loc,this.data=e.data,this.dynamicFixes=e.dynamicFixes,this.hash=e.hash,this.id=t.apply(this),this.key=r.apply(this),this.autoFix=null;function t(){var n=[this.type];if(this.hash&&n.push(this.hash),this.subtype&&n.push(this.subtype),this.entityIds){var i=this.entityIds.slice().sort();n.push.apply(n,i)}return n.join(":")}function r(){return this.id+":"+Date.now().toString()}this.extent=function(n){return this.loc?Pe(this.loc):this.entityIds&&this.entityIds.length?this.entityIds.reduce(function(i,a){return i.extend(n.entity(a).extent(n))},Pe()):null},this.fixes=function(n){var i=this.dynamicFixes?this.dynamicFixes(n):[],a=this;return a.severity==="warning"&&i.push(new mt({title:F.append("issues.fix.ignore_issue.title"),icon:"iD-icon-close",onClick:function(){n.validator().ignoreIssue(this.issue.id)}})),i.forEach(function(o){o.id=o.title.stringId,o.issue=a,o.autoArgs&&(a.autoFix=o)}),i}}function mt(e){this.title=e.title,this.onClick=e.onClick,this.disabledReason=e.disabledReason,this.icon=e.icon,this.entityIds=e.entityIds||[],this.autoArgs=e.autoArgs,this.issue=null}var cZ=function(){return{equals:function(e){return function(t){return Object.keys(e).every(function(r){return e[r]===t[r]})}},notEquals:function(e){return function(t){return Object.keys(e).some(function(r){return e[r]!==t[r]})}},absence:function(e){return function(t){return Object.keys(t).indexOf(e)===-1}},presence:function(e){return function(t){return Object.keys(t).indexOf(e)>-1}},greaterThan:function(e){var t=Object.keys(e)[0],r=e[t];return function(n){return n[t]>r}},greaterThanEqual:function(e){var t=Object.keys(e)[0],r=e[t];return function(n){return n[t]>=r}},lessThan:function(e){var t=Object.keys(e)[0],r=e[t];return function(n){return n[t]0},i=function(o){return Wr(e[o],Object.keys(t[o])).length>0};if(e.hasOwnProperty("area")){if(e.area.indexOf("yes")>-1)return"area";if(e.area.indexOf("no")>-1)return"line"}for(var a in e)if(a in r&&!n(a)||a in t&&i(a))return"area";return"line"},addRule:function(e){var t={checks:this.filterRuleChecks(e),matches:function(r){return this.checks.every(function(n){return n(r.tags)})},inferredGeometry:this.inferGeometry(this.buildTagMap(e),this._areaKeys),geometryMatches:function(r,n){if(r.type==="node"||r.type==="relation")return e.geometry===r.type;if(r.type==="way")return this.inferredGeometry===r.geometry(n)},findIssues:function(r,n,i){if(this.geometryMatches(r,n)&&this.matches(r)){var a=Object.keys(e).indexOf("error")>-1?"error":"warning",o=e[a];i.push(new Ft({type:"maprules",severity:a,message:function(){return o},entityIds:[r.id]}))}}};this._validationRules.push(t)},clearRules:function(){this._validationRules=[]},validationRules:function(){return this._validationRules},ruleChecks:function(){return this._ruleChecks}};var eb=xt(_a());var z2=xt(Za());function fs(e,t){var r={},n={},i={};function a(s){var l=t.entities[s],u=e.entities[s];if(l!==u&&!r[s]){if(!l&&u){r[s]={base:u,head:l},n.deletion=!0;return}if(l&&!u){r[s]={base:u,head:l},n.addition=!0;return}if(l&&u){if(l.members&&u.members&&!(0,z2.default)(l.members,u.members)){r[s]={base:u,head:l},n.geometry=!0,n.properties=!0;return}l.loc&&u.loc&&!en(l.loc,u.loc)&&(r[s]={base:u,head:l},n.geometry=!0),l.nodes&&u.nodes&&!(0,z2.default)(l.nodes,u.nodes)&&(r[s]={base:u,head:l},n.geometry=!0),l.tags&&u.tags&&!(0,z2.default)(l.tags,u.tags)&&(r[s]={base:u,head:l},n.properties=!0)}}}function o(){for(var s=ot(Object.keys(t.entities).concat(Object.keys(e.entities))),l=0;l=0;v--){var y=m[v];y.id in l||g(y,t,"modified")}}},i.complete=function(l){var u={},c,f;for(c in r){f=r[c];var p=f.head,d=f.base,g=p||d,x;if(!(l&&(!p||!p.intersects(l,t))&&(!d||!d.intersects(l,e)))){if(u[c]=p,g.type==="way"){var b=p?p.nodes:[],m=d?d.nodes:[],v;for(v=$r(b,m),x=0;x{a.transition().duration(200).style("opacity",0).remove(),o.transition().duration(200).style("top","0px"),G(document).call(r.unbind)};let o=a.append("div").attr("class","modal fillL");return o.append("input").attr("class","keytrap keytrap-first").on("focus.keytrap",l),t||(a.on("click.remove-modal",u=>{u.target===this&&a.close()}),o.append("button").attr("class","close").attr("title",F("icons.close")).on("click",a.close).call(ce("#iD-icon-close")),r.on("\u232B",a.close).on("\u238B",a.close),G(document).call(r)),o.append("div").attr("class","content"),o.append("input").attr("class","keytrap keytrap-last").on("focus.keytrap",s),i?a.transition().style("opacity",1):a.style("opacity",1),a;function s(){let u=o.select("a, button, input:not(.keytrap), select, textarea").node();u?u.focus():G(this).node().blur()}function l(){let u=o.selectAll("a, button, input:not(.keytrap), select, textarea").nodes();u.length?u[u.length-1].focus():G(this).node().blur()}}function c1(e){let t=G(null),r="",n=!1,i=a=>{t=Oi(a,n);let o=t.select(".content").classed("loading-modal",!0).append("div").attr("class","modal-section fillL");return o.append("img").attr("class","loader").attr("src",e.imagePath("loader-white.gif")),o.append("h3").html(r),t.select("button.close").attr("class","hide"),i};return i.message=function(a){return arguments.length?(r=a,i):r},i.blocking=function(a){return arguments.length?(n=a,i):n},i.close=()=>{t.remove()},i.isShown=()=>t&&!t.empty()&&t.node().parentNode,i}function x9(e){var t=xe("reset","change","merge","restore","undone","redone","storage_error"),r=F7("lock"),n=r.lock()&&!!Te(m("saved_history")),i=150,a=[],o=[],s={},l,u,c,f;function p(y,_){y=Array.prototype.slice.call(y);var w;typeof y[y.length-1]!="function"&&(w=y.pop());for(var A=u[c].graph,I=0;I0&&(c--,u.pop()),u=u.slice(0,c+1);var A=p(y,_);return u.push(A),c++,b(w)}function b(y){var _=fs(y,v.graph());return l||t.call("change",this,_),_}function m(y){return"iD_"+window.location.origin+"_"+y}var v={graph:function(){return u[c].graph},tree:function(){return f},base:function(){return u[0].graph},merge:function(y){var _=u.map(function(w){return w.graph});u[0].graph.rebase(y,_,!1),f.rebase(y,!1),t.call("merge",this,y)},perform:function(){G(document).interrupt("history.perform");var y=!1,_=arguments[0];if((arguments.length===1||arguments.length===2&&typeof arguments[1]!="function")&&(y=!!_.transitionable),y){var w=arguments;G(document).transition("history.perform").duration(i).ease(N3).tween("history.tween",function(){return function(A){A<1&&x([_],A)}}).on("start",function(){d([_],0)}).on("end interrupt",function(){x(w,1)})}else return d(arguments)},replace:function(){return G(document).interrupt("history.perform"),g(arguments,1)},overwrite:function(){return G(document).interrupt("history.perform"),x(arguments,1)},pop:function(y){G(document).interrupt("history.perform");var _=u[c].graph;for((isNaN(+y)||+y<0)&&(y=1);y-- >0&&c>0;)c--,u.pop();return b(_)},undo:function(){G(document).interrupt("history.perform");for(var y=u[c],_=y.graph;c>0&&(c--,!u[c].annotation););return t.call("undone",this,u[c],y),b(_)},redo:function(){G(document).interrupt("history.perform");for(var y=u[c],_=y.graph,w=c;w=0;){if(u[y].annotation)return u[y].annotation;y--}},redoAnnotation:function(){for(var y=c+1;y<=u.length-1;){if(u[y].annotation)return u[y].annotation;y++}},intersects:function(y){return f.intersects(y,u[c].graph)},difference:function(){var y=u[0].graph,_=u[c].graph;return fs(y,_)},changes:function(y){var _=u[0].graph,w=u[c].graph;y&&(w=y(w));var A=fs(_,w);return{modified:A.modified(),created:A.created(),deleted:A.deleted()}},hasChanges:function(){return this.difference().length()>0},imageryUsed:function(y){if(y)return a=y,v;var _=new Set;return u.slice(1,c+1).forEach(function(w){w.imageryUsed.forEach(function(A){A!=="Custom"&&_.add(A)})}),Array.from(_)},photoOverlaysUsed:function(y){if(y)return o=y,v;var _=new Set;return u.slice(1,c+1).forEach(function(w){w.photoOverlaysUsed&&Array.isArray(w.photoOverlaysUsed)&&w.photoOverlaysUsed.forEach(function(A){_.add(A)})}),Array.from(_)},checkpoint:function(y){return s[y]={stack:u,index:c},v},reset:function(y){return y!==void 0&&s.hasOwnProperty(y)?(u=s[y].stack,c=s[y].index):(u=[{graph:Rn()}],c=0,f=b9(u[0].graph),s={}),t.call("reset"),t.call("change"),v},toIntroGraph:function(){var y={n:0,r:0,w:0},_={},w=this.graph(),A={};return Object.values(w.base().entities).forEach(function(E){var k=I(E);A[k.id]=k}),Object.keys(w.entities).forEach(function(E){var k=w.entities[E];if(k){var S=I(k);A[S.id]=S}else delete A[E]}),Object.values(A).forEach(function(E){Array.isArray(E.nodes)&&(E.nodes=E.nodes.map(function(k){return _[k]||k})),Array.isArray(E.members)&&(E.members=E.members.map(function(k){return k.id=_[k.id]||k.id,k}))}),JSON.stringify({dataIntroGraph:A});function I(E){var k=Wn(E,["type","user","v","version","visible"]);k.tags&&!Object.keys(k.tags)&&delete k.tags,Array.isArray(k.loc)&&(k.loc[0]=+k.loc[0].toFixed(6),k.loc[1]=+k.loc[1].toFixed(6));var S=E.id.match(/([nrw])-\d*/);if(S!==null){var D=S[1],P;do P=D+ ++y[D];while(A.hasOwnProperty(P));k.id=_[E.id]=P}return k}},toJSON:function(){if(this.hasChanges()){var y={},_={},w=u[0],A=u.map(function(I){var E=[],k=[];Object.keys(I.graph.entities).forEach(function(D){var P=I.graph.entities[D];if(P){var O=qe.key(P);y[O]=P,E.push(O)}else k.push(D);D in w.graph.entities&&(_[D]=w.graph.entities[D]),P&&P.nodes&&P.nodes.forEach(function(M){M in w.graph.entities&&(_[M]=w.graph.entities[M])});var T=w.graph._parentWays[D];T&&T.forEach(function(M){M in w.graph.entities&&(_[M]=w.graph.entities[M])})});var S={};return E.length&&(S.modified=E),k.length&&(S.deleted=k),I.imageryUsed&&(S.imageryUsed=I.imageryUsed),I.photoOverlaysUsed&&(S.photoOverlaysUsed=I.photoOverlaysUsed),I.annotation&&(S.annotation=I.annotation),I.transform&&(S.transform=I.transform),I.selectedIDs&&(S.selectedIDs=I.selectedIDs),S});return JSON.stringify({version:3,entities:Object.values(y),baseEntities:Object.values(_),stack:A,nextIDs:qe.id.next,index:c,timestamp:new Date().getTime()})}},fromJSON:function(y,_){var w=JSON.parse(y),A=!0;if(qe.id.next=w.nextIDs,c=w.index,w.version===2||w.version===3){var I={};if(w.entities.forEach(function(N){I[qe.key(N)]=qe(N)}),w.version===3){var E=w.baseEntities.map(function(N){return qe(N)}),k=u.map(function(N){return N.graph});if(u[0].graph.rebase(E,k,!0),f.rebase(E,!0),_){var S=e.connection(),D=E.filter(function(N){return N.type==="way"}),P=D.reduce(function(N,U){return or(N,U.nodes)},[]),O=P.filter(function(N){return!u[0].graph.hasEntity(N)});if(O.length&&S){A=!1,e.map().redrawEnable(!1);var T=c1(e).blocking(!0);e.container().call(T);var M=function(N,U){if(!N){var B=Ir(U.data,"visible"),$=B.true||[],z=B.false||[];if($.length){var V=$.map(function(Z){return Z.id}),H=u.map(function(Z){return Z.graph});O=$r(O,V),u[0].graph.rebase($,H,!0),f.rebase($,!0)}z.forEach(function(Z){S.loadEntityVersion(Z.id,+Z.version-1,M)})}(N||!O.length)&&(T.close(),e.map().redrawEnable(!0),t.call("change"),t.call("restore",this))};S.loadMultiple(O,M)}}}u=w.stack.map(function(N){var U={},B;return N.modified&&N.modified.forEach(function($){B=I[$],U[B.id]=B}),N.deleted&&N.deleted.forEach(function($){U[$]=void 0}),{graph:Rn(u[0].graph).load(U),annotation:N.annotation,imageryUsed:N.imageryUsed,photoOverlaysUsed:N.photoOverlaysUsed,transform:N.transform,selectedIDs:N.selectedIDs}})}else u=w.stack.map(function(N){var U={};for(var B in N.entities){var $=N.entities[B];U[B]=$==="undefined"?void 0:qe($)}return N.graph=Rn(u[0].graph).load(U),N});var R=u[c].transform;return R&&e.map().transformEase(R,0),A&&(t.call("change"),t.call("restore",this)),v},lock:function(){return r.lock()},unlock:function(){r.unlock()},save:function(){return r.locked()&&!n&&(Te(m("saved_history"),v.toJSON()||null)||t.call("storage_error")),v},clearSaved:function(){return e.debouncedSave.cancel(),r.locked()&&(n=!1,Te(m("saved_history"),null),Te("comment",null),Te("hashtags",null),Te("source",null)),v},savedHistoryJSON:function(){return Te(m("saved_history"))},hasRestorableChanges:function(){return n},restore:function(){if(r.locked()){n=!1;var y=this.savedHistoryJSON();y&&v.fromJSON(y,!0)}},_getKey:m};return v.reset(),ke(v,t,"on")}var Jv={};s6(Jv,{validationAlmostJunction:()=>Nv,validationCloseNodes:()=>Pv,validationCrossingWays:()=>Ov,validationDisconnectedWay:()=>Lv,validationFormatting:()=>Bv,validationHelpRequest:()=>$v,validationImpossibleOneway:()=>Uv,validationIncompatibleSource:()=>zv,validationMaprules:()=>qv,validationMismatchedDates:()=>Vv,validationMismatchedGeometry:()=>jv,validationMissingRole:()=>Hv,validationMissingStartDate:()=>Rv,validationMissingTag:()=>Wv,validationMutuallyExclusiveTags:()=>Qv,validationOutdatedTags:()=>Xv,validationPrivateData:()=>Yv,validationSuspiciousName:()=>Kv,validationUnsquareWay:()=>Zv});function Nv(e){let t="almost_junction",a=Math.atan(.15);function o(u){return u.type==="way"&&za[u.tags.highway]}function s(u){return u.tags.noexit==="yes"||u.tags.amenity==="parking_entrance"||u.tags.entrance&&u.tags.entrance!=="no"}let l=function(c,f){if(!o(c))return[];if(c.isDegenerate())return[];let p=e.history().tree(),d=v(c),g=[];return d.forEach(E=>{g.push(new Ft({type:t,subtype:"highway-highway",severity:"warning",message:function(k){let S=k.hasEntity(this.entityIds[0]);if(this.entityIds[0]===this.entityIds[2])return S?F.append("issues.almost_junction.self.message",{feature:wt(S,k.graph())}):"";{let D=k.hasEntity(this.entityIds[2]);return S&&D?F.append("issues.almost_junction.message",{feature:wt(S,k.graph()),feature2:wt(D,k.graph())}):""}},reference:b,entityIds:[c.id,E.node.id,E.wid],loc:E.node.loc,hash:JSON.stringify(E.node.loc),data:{midId:E.mid.id,edge:E.edge,cross_loc:E.cross_loc},dynamicFixes:x}))}),g;function x(E){let k=[new mt({icon:"iD-icon-abutment",title:F.append("issues.fix.connect_features.title"),onClick:function(D){let P=F("issues.fix.connect_almost_junction.annotation"),[,O,T]=this.issue.entityIds,M=D.entity(this.issue.data.midId),R=D.entity(O),N=D.entity(T),U=y(R,N);if(U.length>0){let H=_(M,R,U);if(H){D.perform(xa([H.id,R.id],H.loc),P);return}}let B=this.issue.data.edge,$=this.issue.data.cross_loc,z=[D.entity(B[0]),D.entity(B[1])],V=I4(z,$);V.distance<.75?D.perform(xa([V.node.id,R.id],V.node.loc),P):D.perform(nn({loc:$,edge:B},R),P)}})],S=E.hasEntity(this.entityIds[1]);return S&&!S.hasInterestingTags()&&k.push(new mt({icon:"maki-barrier",title:F.append("issues.fix.tag_as_disconnected.title"),onClick:function(D){let P=this.issue.entityIds[1],O=Object.assign({},D.entity(P).tags);O.noexit="yes",D.perform(sr(P,O),F("issues.fix.tag_as_disconnected.annotation"))}})),k.push(new mt({icon:"iD-operation-change-date-range",title:F.append("issues.fix.change_date_range.title")})),k}function b(E){E.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.almost_junction.highway-highway.reference"))}function m(E,k){let S=de.osm;if(S&&!S.isDataLoaded(E.loc)||s(E)||f.parentWays(E).length!==1)return!1;let D=0;for(let P in k.nodes)if(k.nodes[P]===E.id&&(D+=1,D>1))return!1;return!0}function v(E){let k=[];if(E.isClosed())return k;let S;return[0,E.nodes.length-1].forEach(P=>{let O=E.nodes[P],T=f.entity(O);if(!m(T,E))return;let M=I(E,P);M&&(S=f.childNodes(E).slice(),S[P]=S[P].move(M.cross_loc),!Ra(S,O)&&k.push(M))}),k}function y(E,k){return[k.nodes[0],k.nodes[k.nodes.length-1]].map(S=>f.entity(S)).filter(S=>S.id!==E.id&&Vt(E.loc,S.loc)<=4.25)}function _(E,k,S){let D,P=1/0;return S.forEach(O=>{let T=En(E,k,e.projection)+Math.PI,M=En(E,O,e.projection)+Math.PI,R=Math.max(T,M)-Math.min(T,M);Rw)return null}return new Ft({type:t,subtype:"vertices",severity:"warning",message:function(E){var k=E.hasEntity(this.entityIds[0]);return k?F.append("issues.close_nodes.message",{way:wt(k,E.graph())}):""},reference:I,entityIds:[b.id,g.id,x.id],loc:g.loc,dynamicFixes:function(){return[new mt({icon:"iD-icon-plus",title:F.append("issues.fix.merge_points.title"),onClick:function(E){var k=this.issue.entityIds,S=xa([k[1],k[2]]);E.perform(S,F("issues.fix.merge_close_vertices.annotation"))}}),new mt({icon:"iD-operation-disconnect",title:F.append("issues.fix.move_points_apart.title")})]}});function I(E){var k=F("issues.close_nodes.reference");E.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").html(k)}}};return n.type=t,n}var WD=xt(g5());function Ov(e){var t="crossing_ways";function r(y,_){if(l(y,_)===null)for(var w=_.parentRelations(y),A=0;Awt(B.way,_):$==="waterway"?!0:z==="waterway"?!1:$Math.PI&&(Z-=Math.PI),z=z/2/Math.sin(Z)*2,z+=4,z=Math.min(Math.max(z,4),50);function oe(we){return[Xl(we[0],we[1]),l3(we[1])]}function pe(we){var Me=ti(we[1]);return[Pn(we[0],Me),Me]}var ne=oe(B[0].loc),ge=oe(B[1].loc),ve=Ho(ne,ge),Oe=oe(T),tt=_t(ne,ge)/Vt(B[0].loc,B[1].loc);function Ce(we,Me){var He=Me*tt;return pe([Oe[0]+Math.cos(we)*He,Oe[1]+Math.sin(we)*He])}var te=function(we){return Ce(ve,we)},le=function(we){return Ce(ve+Math.PI,we)},Se=.55;function Ie(we,Me,He){var Qe,et=z/2,lt=Vt(T,Me.loc);if(lt-et>Se){var nt=He(et);Qe=Yt(),U=nn({loc:nt,edge:we},Qe)(U)}else{var ht=0;if(Me.parentIntersectionWays(U).forEach(function(W){W.nodes.forEach(function(Y){Y===Me.id&&(Me.id===W.first()&&Me.id!==W.last()||Me.id===W.last()&&Me.id!==W.first()?ht+=1:ht+=2)})}),ht>=3){var tr=lt-Se;if(tr>Se){var ie=He(tr);Qe=Yt(),U=nn({loc:ie,edge:we},Qe)(U)}}}Qe||(Qe=Me);var j=a1([Qe.id]).limitWays(S);return U=j(U),j.getCreatedWayIDs().length&&S.push(j.getCreatedWayIDs()[0]),Qe}var Le=Ie(D,B[1],te),We=Ie([B[0].id,Le.id],B[0],le),ue=S.map(function(we){return U.entity(we)}).find(function(we){return we.nodes.indexOf(Le.id)!==-1&&we.nodes.indexOf(We.id)!==-1}),ae=Object.assign({},ue.tags);if(w==="bridge")ae.bridge="yes",ae.layer="1";else{var Ae="yes";l(ue,U)==="waterway"&&(Ae="culvert"),ae.tunnel=Ae,ae.layer="-1"}return U=sr(ue.id,ae)(U),U};A.perform(R,F("issues.fix."+y+".annotation")),A.enter(rt(A,S))}}}}})}function m(y){var _="connect_features",w="iD-icon-crossing";y.highway==="crossing"&&(_="connect_using_crossing",w="temaki-pedestrian"),y.ford&&(_="connect_using_ford",w="roentgen-ford");let A=new mt({icon:w,title:F.append("issues.fix."+_+".title"),onClick:function(I){var E=this.issue.loc,k=this.issue.data.edges;I.perform(function(D){var P=Yt({loc:E,tags:y});D=D.replace(P);var O=[P.id],T=.75;return k.forEach(function(M){var R=[D.entity(M[0]),D.entity(M[1])],N=I4(R,E);(!N.node.hasInterestingTags()||N.node.isCrossing())&&N.distance1&&(D=xa(O,E)(D)),D},F("issues.fix.connect_crossing_features.annotation"))}});return A._connectionTags=y,A}function v(y){return new mt({icon:"iD-icon-"+(y==="higher"?"up":"down"),title:F.append("issues.fix.tag_this_as_"+y+".title"),onClick:function(_){var w=_.mode();if(!(!w||w.id!=="select")){var A=w.selectedIDs();if(A.length===1){var I=A[0];if(this.issue.entityIds.some(function(D){return D===I})){var E=_.hasEntity(I);if(E){var k=Object.assign({},E.tags),S=k.layer&&Number(k.layer);S&&!isNaN(S)?y==="higher"?S+=1:S-=1:y==="higher"?S=1:S=-1,k.layer=S.toString(),_.perform(sr(E.id,k),F("operations.change_tags.annotation"))}}}}}})}return g.type=t,g}function q2(e,t,r,n){let i=at("drawWay");var a=xe("rejectedSelfIntersection"),o=us(e),s,l,u,c,f,p=!1,d,g=!1;function x(T){d=Yt({loc:T}),e.pauseChangeDispatch(),e.replace(function(R){var N=R.entity(t);return R.replace(d).replace(N.addNode(d.id,s))},f),e.resumeChangeDispatch(),E()}function b(){e.pauseChangeDispatch(),e.replace(function(M){var R=M.entity(t);return M.replace(R.removeNode(d.id)).remove(d)},f),d=void 0,e.resumeChangeDispatch()}function m(T){T.keyCode===at.modifierCodes.alt&&(e.surface().classed("nope")&&e.surface().classed("nope-suppressed",!0),e.surface().classed("nope",!1).classed("nope-disabled",!0))}function v(T){T.keyCode===at.modifierCodes.alt&&(e.surface().classed("nope-suppressed")&&e.surface().classed("nope",!0),e.surface().classed("nope-suppressed",!1).classed("nope-disabled",!1))}function y(T){return T.geometry(e.graph())==="vertex"||$e.allowsVertex(T,e.graph())}function _(T,M){var R=e.map().mouseCoordinates();d||x(R),e.surface().classed("nope-disabled",T.altKey);var N=M&&M.properties&&M.properties.entity&&y(M.properties.entity)&&M.properties.entity.loc,U=M&&M.properties&&M.properties.nodes;if(N)R=N;else if(U){var B=On(U,e.map().mouse(),e.projection,d.id);B&&(R=B.loc)}e.replace(ml(d.id,R),f),d=e.entity(d.id),w(!0)}function w(T){var M=e.surface().classed("nope-disabled"),R=A(T);M?e.surface().classed("nope",!1).classed("nope-suppressed",R):e.surface().classed("nope",R).classed("nope-suppressed",!1)}function A(T){var M=d,R=e.graph().entity(t),N=e.graph().childNodes(R).slice();if(T)R.isClosed()&&N.pop();else if(R.isClosed()){if(N.length<3)return!1;d&&N.splice(-2,1),M=N[N.length-2]}else return!1;return M&&Ra(N,M.id)}function I(){g=!0,e.pauseChangeDispatch();var T;e.graph()===n?T=rt(e,[t]):(e.pop(1),T=r),e.perform(Bn()),e.pop(1),e.resumeChangeDispatch(),e.enter(T)}function E(){d&&e.surface().selectAll("."+d.id).classed("active",!0)}function k(){for(;e.graph()!==n;)e.pop()}var S=function(T){d=void 0,g=!1,l=e.entity(t),typeof s=="number"?c=l.nodes[s]:l.isClosed()?c=l.nodes[l.nodes.length-2]:c=l.nodes[l.nodes.length-1],u=l.geometry(e.graph()),f=F((l.nodes.length===(l.isClosed()?2:1)?"operations.start.annotation.":"operations.continue.annotation.")+u),p=!1,e.pauseChangeDispatch(),e.perform(Bn(),f),e.resumeChangeDispatch(),o.hover().initialNodeID(c),o.on("move",function(){p=!0,_.apply(this,arguments)}).on("down",function(){_.apply(this,arguments)}).on("downcancel",function(){d&&b()}).on("click",S.add).on("clickWay",S.addWay).on("clickNode",S.addNode).on("undo",e.undo).on("cancel",S.cancel).on("finish",S.finish),G(window).on("keydown.drawWay",m).on("keyup.drawWay",v),e.map().dblclickZoomEnable(!1).on("drawn.draw",E),E(),T.call(o),e.history().on("undone.draw",I)};S.off=function(T){g||(e.pauseChangeDispatch(),k(),e.resumeChangeDispatch()),d=void 0,s=void 0,e.map().on("drawn.draw",null),T.call(o.off).selectAll(".active").classed("active",!1),T.classed("nope",!1).classed("nope-suppressed",!1).classed("nope-disabled",!1),G(window).on("keydown.drawWay",null).on("keyup.drawWay",null),e.history().on("undone.draw",null)};function D(T,M,R){if(d?(e.replace(ml(d.id,M),f),d=e.entity(d.id)):x(M),w(!0),T&&T.properties&&T.properties.nope||e.surface().classed("nope")){p||b(),a.call("rejectedSelfIntersection",this);return}e.pauseChangeDispatch(),R(),g=!0,e.resumeChangeDispatch(),e.enter(r)}S.add=function(T,M){D(M,T,function(){})},S.addWay=function(T,M,R){D(R,T,function(){e.replace(nn({loc:T,edge:M},d),f)})},S.addNode=function(T,M){if(T.id===c||l.isClosed()&&T.id===l.first()){S.finish();return}D(M,T.loc,function(){e.replace(function(N){return N=N.replace(N.entity(t).removeNode(d.id)).remove(d),N.replace(N.entity(t).addNode(T.id,s))},f)})};function P(T){return T.every(M=>M.isClosed())?"area":T.every(M=>!M.isClosed())?"line":"generic"}function O(){if(!g)try{let T=l.nodes[0]===l.nodes.slice(-1)[0],[M,R]=l.nodes.slice(T?-3:-2),N=e.history().graph();if(!R||!M||!N.hasEntity(R)||!N.hasEntity(M)){e.ui().flash.duration(4e3).iconName("#iD-icon-no").label(F.append("operations.follow.error.needs_more_initial_nodes"))();return}let U=N.parentWays(N.entity(R)).filter(ne=>ne.id!==t),B=N.parentWays(N.entity(M)).filter(ne=>ne.id!==t),$=P(U);if(U.length!==1||B.length===0){e.ui().flash.duration(4e3).iconName("#iD-icon-no").label(F.append(`operations.follow.error.intersection_of_multiple_ways.${$}`))();return}if(!B.some(ne=>ne.id===U[0].id)){e.ui().flash.duration(4e3).iconName("#iD-icon-no").label(F.append(`operations.follow.error.intersection_of_different_ways.${$}`))();return}let z=U[0],V=z.nodes.indexOf(R),H=z.nodes.indexOf(M),Z=V===z.nodes.length-2&&H===0,oe=V+(V>H&&!Z?1:-1);oe===-1&&(oe=H===1?z.nodes.length-2:1);let pe=N.entity(z.nodes[oe]);S.addNode(pe,{geometry:{type:"Point",coordinates:pe.loc},id:pe.id,properties:{target:!0,entity:pe}})}catch{e.ui().flash.duration(4e3).iconName("#iD-icon-no").label(F.append("operations.follow.error.unknown"))()}}return i.on(F("operations.follow.key"),O),G(document).call(i),S.finish=function(){if(w(!1),e.surface().classed("nope")){a.call("rejectedSelfIntersection",this);return}e.pauseChangeDispatch(),e.pop(1),g=!0,e.resumeChangeDispatch();var T=e.hasEntity(t);if(!T||T.isDegenerate()){S.cancel();return}window.setTimeout(function(){e.map().dblclickZoomEnable(!0)},1e3);var M=!r.isContinuing;e.enter(rt(e,[t]).newFeature(M))},S.cancel=function(){e.pauseChangeDispatch(),k(),e.resumeChangeDispatch(),window.setTimeout(function(){e.map().dblclickZoomEnable(!0)},1e3),e.surface().classed("nope",!1).classed("nope-disabled",!1).classed("nope-suppressed",!1),e.enter(Ge(e))},S.nodeIndex=function(T){return arguments.length?(s=T,S):s},S.activeID=function(){return arguments.length?S:d&&d.id},ke(S,a,"on")}function ro(e,t,r,n,i,a){var o={button:n,id:"draw-line"},s=q2(e,t,o,r).on("rejectedSelfIntersection.modeDrawLine",function(){e.ui().flash.iconName("#iD-icon-no").label(F.append("self_intersection.error.lines"))()});return o.wayID=t,o.isContinuing=a,o.enter=function(){s.nodeIndex(i==="prefix"?0:void 0),e.install(s)},o.exit=function(){e.uninstall(s)},o.selectedIDs=function(){return[t]},o.activeID=function(){return s&&s.activeID()||[]},o}function Lv(){var e="disconnected_way";function t(n){return za[n.tags.highway]}var r=function(i,a){var o=u(i);if(!o)return[];return[new Ft({type:e,subtype:"highway",severity:"warning",message:function(g){var x=this.entityIds.length&&g.hasEntity(this.entityIds[0]),b=x&&wt(x,g.graph());return F.append("issues.disconnected_way.routable.message",{count:this.entityIds.length,highway:b})},reference:l,entityIds:Array.from(o).map(function(g){return g.id}),dynamicFixes:s})];function s(g){var x=[],b=this.entityIds.length===1&&g.hasEntity(this.entityIds[0]);if(b){if(b.type==="way"&&!b.isClosed()){var m=fe.textDirection(),v=d(m,b.first(),"start");v&&x.push(v);var y=d(m,b.last(),"end");y&&x.push(y)}x.length||x.push(new mt({title:F.append("issues.fix.connect_feature.title")})),x.push(new mt({icon:"iD-operation-delete",title:F.append("issues.fix.delete_feature.title"),entityIds:[b.id],onClick:function(_){var w=this.issue.entityIds[0],A=di(_,[w]);A.disabled()||A()}}))}else x.push(new mt({title:F.append("issues.fix.connect_features.title")}));return x}function l(g){g.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.disconnected_way.routable.reference"))}function u(g){var x=new Set,b=[];function m(A){a.parentWays(A).forEach(function(I){!x.has(I)&&p(I,!1)&&(x.add(I),b.push(I))})}if(g.type==="way"&&p(g,!0))x.add(g),b.push(g);else if(g.type==="node"&&f(g))x.add(g),m(g);else return null;for(;b.length;){var v=b.pop(),y=a.childNodes(v);for(var _ in y){var w=y[_];if(c(w))return null;f(w)&&x.add(w),m(w)}}return x}function c(g){var x=de.osm;return!!(x&&!x.isDataLoaded(g.loc)||g.tags.entrance&&g.tags.entrance!=="no"||g.tags.amenity==="parking_entrance")}function f(g){return g.tags.highway==="elevator"}function p(g,x){return t(g)||g.tags.route==="ferry"?!0:a.parentRelations(g).some(function(b){return!!(b.tags.type==="route"&&b.tags.route==="ferry"||b.isMultipolygon()&&t(b)&&(!x||b.memberById(g.id).role!=="inner"))})}function d(g,x,b){var m=a.hasEntity(x);if(!m||m.tags.noexit==="yes")return null;var v=b==="start"&&g==="ltr"||b==="end"&&g==="rtl";return new mt({icon:"iD-operation-continue"+(v?"-left":""),title:F.append("issues.fix.continue_from_"+b+".title"),entityIds:[x],onClick:function(y){var _=this.issue.entityIds[0],w=y.hasEntity(_),A=this.entityIds[0],I=y.hasEntity(A);if(!(!w||!I)){var E=y.map();(!y.editable()||!E.trimmedExtent().contains(I.loc))&&E.zoomToEase(I),y.enter(ro(y,_,y.graph(),"line",w.affix(A),!0))}}})}};return r.type=e,r}function Rv(e){let t="missing_start_date",r=function(i,a){if(i.tags&&(i.tags.start_date||i.tags["start_date:edtf"]))return[];if(Object.keys(i.tags).length===0)return[];if(i.tags&&(i.tags.natural&&j4[i.tags.natural]||i.tags.waterway&&j4[i.tags.waterway]||i.tags.water&&j4[i.tags.water]))return[];var o=e.connection(),s=i.type==="node"&&o&&!o.isDataLoaded(i.loc);if(s||i.geometry(a)==="vertex"||i.hasParentRelations(a))return[];let l=i.id;function u(c){c.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.missing_start_date.reference"))}return[new Ft({type:t,severity:"warning",message:c=>{let f=c.hasEntity(l);return f?F.append("issues.missing_start_date.message",{feature:wt(f,c.graph())}):""},reference:u,entityIds:[l],dynamicFixes:()=>[new mt({title:F.append("issues.fix.add_start_date.title")})]})]};return r.type=t,r}function Bv(){var e="invalid_format",t=function(r){var n=[];function i(f){f.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.invalid_format.date.reference"))}function a(f,p){if(r.tags[f]){var d=Qa(r.tags[f]);d!==null&&r.tags[f]===d.value||n.push(new Ft({type:e,subtype:"date",severity:"error",message:function(g){var x=g.hasEntity(this.entityIds[0]);return x?F.append("issues.invalid_format.date.message_"+p,{feature:wt(x,g.graph())}):""},reference:i,entityIds:[r.id],hash:f+r.tags[f],dynamicFixes:function(){var g=[];let x=[];if(d!==null){let m=d.date.toLocaleDateString(fe.localeCodes(),d.localeOptions);x.push({date:d.value,label:m||d.value})}let b=p2(r.tags[f]);if(b){let m;try{m=ns(b).format(fe.localeCode())}catch{m=b}x.push({edtf:b,label:m})}return g.push(...x.map(m=>new mt({title:F.append("issues.fix.reformat_date.title",{date:m.label}),onClick:function(v){v.perform(function(y){var _=y.hasEntity(r.id);if(!_)return y;var w=Object.assign({},_.tags);return m.date?w[f]=m.date:delete w[f],w[f+":edtf"]=m.edtf,sr(_.id,w)(y)},F("issues.fix.reformat_date.annotation"))}}))),g.push(new mt({icon:"iD-operation-delete",title:F.append("issues.fix.remove_tag.title"),onClick:function(m){m.perform(function(v){var y=v.hasEntity(r.id);if(!y)return v;var _=Object.assign({},y.tags);return delete _[f],sr(y.id,_)(v)},F("issues.fix.remove_tag.annotation"))}})),g}}))}}a("start_date","start"),a("end_date","end");function o(f,p){let d;typeof p.offset=="number"&&p.token?d=F.append("issues.invalid_format.edtf.reference",{token:p.token.value,position:(p.offset+1).toLocaleString(fe.localeCodes())}):p.message&&(d=g=>g.append("span").attr("class","localized-text").attr("lang","en").text(p.message.replace(/^edtf: /,""))),d&&f.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(d)}function s(f,p){if(f+=":edtf",!r.tags[f])return;let d;try{Js(r.tags[f]);return}catch(g){d=g}n.push(new Ft({type:e,subtype:"date",severity:"warning",message:function(g){var x=g.hasEntity(this.entityIds[0]);return x?F.append("issues.invalid_format.edtf.message_"+p,{feature:wt(x,g.graph())}):""},reference:g=>o(g,d),entityIds:[r.id],hash:f+r.tags[f],dynamicFixes:function(){var g=[];return g.push(new mt({icon:"iD-operation-delete",title:F.append("issues.fix.remove_tag.title"),onClick:function(x){x.perform(function(b){var m=b.hasEntity(r.id);if(!m)return b;var v=Object.assign({},m.tags);return delete v[f],sr(m.id,v)(b)},F("issues.fix.remove_tag.annotation"))}})),g}}))}s("start_date","start"),s("end_date","end");function l(f){var p=/^[^\(\)\\,":;<>@\[\]]+@[^\(\)\\,":;<>@\[\]\.]+(?:\.[a-z0-9-]+)*$/i;return!f||p.test(f)}function u(f){f.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.invalid_format.email.reference"))}if(r.tags.email){var c=r.tags.email.split(";").map(function(f){return f.trim()}).filter(function(f){return!l(f)});c.length&&n.push(new Ft({type:e,subtype:"email",severity:"warning",message:function(f){var p=f.hasEntity(this.entityIds[0]);return p?F.append("issues.invalid_format.email.message"+this.data,{feature:wt(p,f.graph()),email:c.join(", ")}):""},reference:u,entityIds:[r.id],hash:c.join(),data:c.length>1?"_multi":""}))}return n};return t.type=e,t}function $v(e){var t="help_request",r=function(i){if(!i.tags.fixme)return[];if(i.version===void 0)return[];if(i.v!==void 0){var a=e.history().base().hasEntity(i.id);if(!a||!a.tags.fixme)return[]}return[new Ft({type:t,subtype:"fixme_tag",severity:"warning",message:function(s){var l=s.hasEntity(this.entityIds[0]);return l?F.append("issues.fixme_tag.message",{feature:wt(l,s.graph(),!0)}):""},dynamicFixes:function(){return[new mt({title:F.append("issues.fix.address_the_concern.title")})]},reference:o,entityIds:[i.id]})];function o(s){s.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.fixme_tag.reference"))}};return r.type=t,r}function Uv(){var e="impossible_oneway",t=function(i,a){if(i.type!=="way"||i.geometry(a)!=="line")return[];if(i.isClosed())return[];if(!l(i))return[];if(!u(i))return[];var o=p(i,i.first()),s=p(i,i.last());return o.concat(s);function l(d){return d.geometry(a)!=="line"?null:za[d.tags.highway]?"highway":G4[d.tags.waterway]?"waterway":null}function u(d){if(d.tags.oneway==="yes")return!0;if(d.tags.oneway)return!1;for(var g in d.tags)if(ko[g]&&ko[g][d.tags[g]])return!0;return!1}function c(d,g){var x=0;for(var b in d.nodes)if(d.nodes[b]===g&&(x+=1,x>1))return!0;return!1}function f(d,g){var x=l(d);if(x==="highway"){if(g.tags.entrance&&g.tags.entrance!=="no"||g.tags.amenity==="parking_entrance")return!0}else if(x==="waterway"){if(g.id===d.first()){if(g.tags.natural==="spring")return!0}else if(g.tags.manhole==="drain")return!0}return a.parentWays(g).some(function(b){return b.id===d.id?!1:x==="highway"?b.geometry(a)==="area"&&za[b.tags.highway]||b.tags.route==="ferry"?!0:a.parentRelations(b).some(function(m){return m.tags.type==="route"&&m.tags.route==="ferry"?!0:m.isMultipolygon()&&za[m.tags.highway]}):x==="waterway"&&(b.tags.natural==="water"||b.tags.natural==="coastline")})}function p(d,g){var x=g===d.first(),b=l(d);if(c(d,g))return[];var m=de.osm;if(!m)return[];var v=a.hasEntity(g);if(!v||!m.isDataLoaded(v.loc))return[];if(f(d,v))return[];var y=a.parentWays(v).filter(function(S){return S.id===d.id?!1:l(S)===b});if(b==="waterway"&&y.length===0)return[];var _=y.filter(function(S){return u(S)});if(_.length{try{l=new URL(l).hostname}catch{}let u=t.find(c=>!(!c.regex.test(l)||c.exceptRegex&&c.exceptRegex.test(l)));return u?new Ft({type:e,severity:"warning",message:c=>{let f=c.hasEntity(o);return f?F.append("issues.incompatible_source.feature.message",{feature:wt(f,c.graph(),!0),value:l}):""},reference:s(u.id),entityIds:[o],hash:l,dynamicFixes:()=>[new mt({title:F.append("issues.fix.remove_proprietary_data.title")})]}):null}).filter(Boolean);function s(l){return function(c){c.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append(`issues.incompatible_source.reference.${l}`))}}};return r.type=e,r}function qv(){var e="maprules",t=function(n,i){if(!de.maprules)return[];for(var a=de.maprules.validationRules(),o=[],s=0;s(l.precision=u,l.edtf.split("T")[0]);if(Number.isFinite(i.min)){let l=ns(i.min),u=(i.lower||i.first||i).precision;a.add(o(l,u))}if(Number.isFinite(i.max)){let l=ns(i.max),u=(i.upper||i.last||i).precision;a.add(o(l,u))}let s=[...a];return s.sort(),s}let n=function(i){let a=[];function o(u){u.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.mismatched_dates.edtf.reference"))}function s(u,c){let f=[],p=r(c);return f.push(...p.map(d=>{let g=Qa(d),x=g.date.toLocaleDateString(fe.languageCode(),g.localeOptions);return new mt({title:F.append("issues.fix.reformat_date.title",{date:x}),onClick:function(b){b.perform(function(m){var v=m.hasEntity(i.id);if(!v)return m;var y=Object.assign({},v.tags);return y[u]=g.value,sr(v.id,y)(m)},F("issues.fix.reformat_date.annotation"))}})})),f.push(new mt({icon:"iD-operation-delete",title:F.append("issues.fix.remove_tag.title"),onClick:function(d){d.perform(function(g){var x=g.hasEntity(i.id);if(!x)return g;var b=Object.assign({},x.tags);return delete b[u],sr(x.id,b)(g)},F("issues.fix.remove_tag.annotation"))}})),f}function l(u,c){if(!i.tags[u]||!i.tags[u+":edtf"])return;let f=i.tags[u],p=t(f),d=t(i.tags[u+":edtf"]);if(!(!p||!d||d.covers(p)||p.covers(d))){if(f.match("^-?[0-9]+-[0-9]{2}-[0-9]{2}$")){let g=t(`${f}T00:00:00/${f}T24:00:00`);if(g&&(d.covers(g)||g.covers(d)))return}a.push(new Ft({type:e,subtype:"date",severity:"warning",message:function(g){let x=g.hasEntity(this.entityIds[0]);return x?F.append("issues.mismatched_dates.edtf.message_"+c,{feature:wt(x,g.graph())}):""},reference:o,entityIds:[i.id],hash:u+i.tags[u+":edtf"],dynamicFixes:()=>s(u,d)}))}}return l("start_date","start"),l("end_date","end"),a};return n.type=e,n.parseEDTF=t,n.getReplacementDates=r,n}var Gv=xt(Za());function jv(){var e="mismatched_geometry";function t(c){if(c.type!=="way"||c.isClosed())return null;var f=c.tagSuggestingArea();if(!f)return null;var p=$e.matchTags(f,"line"),d=$e.matchTags(f,"area");return p&&d&&(0,Gv.default)(p.tags,d.tags)?null:f}function r(c,f){if(c.nodes.length<3)return null;var p=f.childNodes(c),d,g=Vt(p[0].loc,p[p.length-1].loc);if(g<.75&&(d=p.slice(),d.pop(),d.push(d[0]),!Ra(d,d[0].id)))return function(x){var b=x.entity(this.issue.entityIds[0]);x.perform(xa([b.nodes[0],b.nodes[b.nodes.length-1]],p[0].loc),F("issues.fix.connect_endpoints.annotation"))};if(d=p.slice(),d.push(d[0]),!Ra(d,d[0].id))return function(x){var b=this.issue.entityIds[0],m=x.entity(b),v=m.nodes[0],y=m.nodes.length;x.perform(Ya(b,v,y),F("issues.fix.connect_endpoints.annotation"))}}function n(c){var f=t(c);if(!f)return null;var p=!1,d=$e.matchTags(c.tags,"line");if(d){p=!0;var g=Object.keys(f)[0];d.tags[g]&&d.tags[g]==="*"&&(p=!1),Object.keys(d.tags).length===0&&(p=!1)}return new Ft({type:e,subtype:"area_as_line",severity:"warning",message:function(b){var m=b.hasEntity(this.entityIds[0]);return m?F.append("issues.tag_suggests_area.message",{feature:wt(m,"area",!0),tag:T7({tags:f})}):""},reference:x,entityIds:[c.id],hash:JSON.stringify(f),dynamicFixes:function(b){var m=[],v=b.entity(this.entityIds[0]),y=r(v,b.graph());return p||m.push(new mt({title:F.append("issues.fix.connect_endpoints.title"),onClick:y})),m.push(new mt({icon:"iD-operation-delete",title:F.append("issues.fix.remove_tag.title"),onClick:function(_){var w=this.issue.entityIds[0],A=_.entity(w),I=Object.assign({},A.tags);for(var E in f)delete I[E];_.perform(sr(w,I),F("issues.fix.remove_tag.annotation"))}})),m}});function x(b){b.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.tag_suggests_area.reference"))}}function i(c,f){if(c.type!=="node"||Object.keys(c.tags).length===0||c.isOnAddressLine(f))return null;var p=c.geometry(f),d=X1(c.tags);return p==="point"&&!d.point&&d.vertex?new Ft({type:e,subtype:"vertex_as_point",severity:"warning",message:function(g){var x=g.hasEntity(this.entityIds[0]);return x?F.append("issues.vertex_as_point.message",{feature:wt(x,"vertex",!0)}):""},reference:function(x){x.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.vertex_as_point.reference"))},entityIds:[c.id]}):p==="vertex"&&!d.vertex&&d.point?new Ft({type:e,subtype:"point_as_vertex",severity:"warning",message:function(g){var x=g.hasEntity(this.entityIds[0]);return x?F.append("issues.point_as_vertex.message",{feature:wt(x,"point",!0)}):""},reference:function(x){x.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.point_as_vertex.reference"))},entityIds:[c.id],dynamicFixes:s}):null}function a(c,f){if(!c.hasInterestingTags()||c.type!=="node"&&c.type!=="way"||c.type==="node"&&c.isOnAddressLine(f))return null;var p=c.geometry(f),d=c.type==="way"?["point","vertex"]:["line","area"];p==="area"&&d.unshift("line");var g=$e.match(c,f),x=d.find(y=>{var _=$e.matchTags(c.tags,y);if(!g||!_||g===_||(0,Gv.default)(g.tags,_.tags)||_.isFallback())return!1;var w=Object.keys(_.tags)[0];return w==="building"||_.tags[w]==="*"?!1:g.isFallback()||g.tags[w]==="*"});if(!x)return null;var b=x+"_as_"+p;x==="vertex"&&(x="point"),p==="vertex"&&(p="point");var m=x+"_as_"+p,v;return x==="point"?v=s:p==="area"&&x==="line"&&(v=o),new Ft({type:e,subtype:b,severity:"warning",message:function(y){var _=y.hasEntity(this.entityIds[0]);return _?F.append("issues."+m+".message",{feature:wt(_,x,!0)}):""},reference:function(_){_.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.mismatched_geometry.reference"))},entityIds:[c.id],dynamicFixes:v})}function o(c){var f,p=this.entityIds[0],d=c.entity(p),g=Object.assign({},d.tags);return delete g.area,Q1(g)||(f=function(x){var b=this.issue.entityIds[0],m=x.entity(b),v=Object.assign({},m.tags);v.area&&delete v.area,x.perform(sr(b,v),F("issues.fix.convert_to_line.annotation"))}),[new mt({icon:"iD-icon-line",title:F.append("issues.fix.convert_to_line.title"),onClick:f})]}function s(c){var f=this.entityIds[0],p=null;return c.hasHiddenConnections(f)||(p=function(d){var g=this.issue.entityIds[0],x=_2(g,d.projection);d.perform(x,F("operations.extract.annotation",{n:1})),d.enter(rt(d,[x.getExtractedNodeID()]))}),[new mt({icon:"iD-operation-extract",title:F.append("issues.fix.extract_point.title"),onClick:p})]}function l(c,f){if(c.type!=="relation"||!c.isMultipolygon()||c.isDegenerate()||!c.isComplete(f))return[];var p=fi(c.members,f),d=[];for(var g in p){var x=p[g];if(x.nodes){var b=x.nodes[0],m=x.nodes[x.nodes.length-1];if(b!==m){var v=new Ft({type:e,subtype:"unclosed_multipolygon_part",severity:"warning",message:function(_){var w=_.hasEntity(this.entityIds[0]);return w?F.append("issues.unclosed_multipolygon_part.message",{feature:wt(w,_.graph(),!0)}):""},reference:y,loc:x.nodes[0].loc,entityIds:[c.id],hash:x.map(function(_){return _.id}).join()});d.push(v)}}}return d;function y(_){_.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.unclosed_multipolygon_part.reference"))}}var u=function(f,p){var d=i(f,p);if(d)return[d];var g=n(f);if(g)return[g];var x=a(f,p);return x?[x]:l(f,p)};return u.type=e,u}function Hv(){var e="missing_role",t=function(o,s){var l=[];return o.type==="way"?s.parentRelations(o).forEach(function(u){if(u.isMultipolygon()){var c=u.memberById(o.id);c&&r(c)&&l.push(n(o,u,c))}}):o.type==="relation"&&o.isMultipolygon()&&o.indexedMembers().forEach(function(u){var c=s.hasEntity(u.id);c&&r(u)&&l.push(n(c,o,u))}),l};function r(a){return!a.role||!a.role.trim().length}function n(a,o,s){return new Ft({type:e,severity:"warning",message:function(u){var c=u.hasEntity(this.entityIds[1]),f=u.hasEntity(this.entityIds[0]);return c&&f?F.append("issues.missing_role.message",{member:wt(c,u.graph()),relation:wt(f,u.graph())}):""},reference:l,entityIds:[o.id,a.id],data:{member:s},hash:s.index.toString(),dynamicFixes:function(){return[i("inner"),i("outer"),new mt({icon:"iD-operation-delete",title:F.append("issues.fix.remove_from_relation.title"),onClick:function(u){u.perform(pl(this.issue.entityIds[0],this.issue.data.member.index),F("operations.delete_member.annotation",{n:1}))}})]}});function l(u){u.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.missing_role.multipolygon.reference"))}}function i(a){return new mt({title:F.append("issues.fix.set_as_"+a+".title"),onClick:function(o){var s=this.issue.data.member,l={id:this.issue.entityIds[1],type:s.type,role:a};o.perform(ul(this.issue.entityIds[0],l,s.index),F("operations.change_role.annotation",{n:1}))}})}return t.type=e,t}function Wv(e){var t="missing_tag";function r(o){var s=["description","name","note","start_date"],l=Object.keys(o.tags).filter(function(u){return u==="area"||!H1(u)?!1:!s.some(function(c){return u===c||u.indexOf(c+":")===0})});return o.type==="relation"&&l.length===1&&o.tags.type==="multipolygon"?!1:l.length>0}function n(o){return o.type==="way"&&o.tags.highway==="road"}function i(o){return o.type==="relation"&&!o.tags.type}var a=function(s,l){var u,c=e.connection(),f=s.type==="node"&&c&&!c.isDataLoaded(s.loc);if(!f&&s.geometry(l)!=="vertex"&&!s.hasParentRelations(l)&&(Object.keys(s.tags).length===0?u="any":r(s)?i(s)&&(u="relation_type"):u="descriptive"),!u&&n(s)&&(u="highway_classification"),!u)return[];var p=u==="highway_classification"?"unknown_road":"missing_tag."+u,d=u==="highway_classification"?"unknown_road":"missing_tag",g=s.version===void 0||s.v!==void 0,x=g&&u!=="highway_classification"?"error":"warning";return[new Ft({type:t,subtype:u,severity:x,message:function(m){var v=m.hasEntity(this.entityIds[0]);return v?F.append("issues."+p+".message",{feature:wt(v,m.graph())}):""},reference:b,entityIds:[s.id],dynamicFixes:function(m){var v=[],y=u==="highway_classification"?"select_road_type":"select_preset";v.push(new mt({icon:"iD-icon-search",title:F.append("issues.fix."+y+".title"),onClick:function(E){E.ui().sidebar.showPresetList()}}));var _,w=this.entityIds[0],A=di(m,[w]),I=A.disabled();return I||(_=function(E){var k=this.issue.entityIds[0],S=di(E,[k]);S.disabled()||S()}),v.push(new mt({icon:"iD-operation-delete",title:F.append("issues.fix.delete_feature.title"),disabledReason:I?F("operations.delete."+I+".single"):void 0,onClick:_})),v}})];function b(m){m.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues."+d+".reference"))}};return a.type=t,a}function Qv(){let e="mutually_exclusive_tags",t=vA,r=function(i){let a=t.filter(u=>u[0]in i.tags&&u[1]in i.tags).filter(u=>!(u[0].match(/^(addr:)?no[a-z]/)&&i.tags[u[0]]==="no"||u[1].match(/^(addr:)?no[a-z]/)&&i.tags[u[1]]==="no"));Object.keys(i.tags).forEach(u=>{let c="not:"+u;c in i.tags&&i.tags[c].split(";").includes(i.tags[u])&&a.push([c,u,"same_value"]),u.match(/^name:[a-z]+/)&&(c="not:name",c in i.tags&&i.tags[c].split(";").includes(i.tags[u])&&a.push([c,u,"same_value"]))});let o=a.map(u=>{let c=u[2]||"default";return new Ft({type:e,subtype:c,severity:"warning",message:function(f){let p=f.hasEntity(this.entityIds[0]);return p?F.append(`issues.${e}.${c}.message`,{feature:wt(p,f.graph()),tag1:u[0],tag2:u[1]}):""},reference:f=>l(f,u,c),entityIds:[i.id],dynamicFixes:()=>u.slice(0,2).map(f=>s(f))})});function s(u){return new mt({icon:"iD-operation-delete",title:F.append("issues.fix.remove_named_tag.title",{tag:u}),onClick:function(c){let f=this.issue.entityIds[0],p=c.entity(f),d=Object.assign({},p.tags);delete d[u],c.perform(sr(f,d),F("issues.fix.remove_named_tag.annotation",{tag:u}))}})}function l(u,c,f){u.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append(`issues.${e}.${f}.reference`,{tag1:c[0],tag2:c[1]}))}return o};return r.type=e,r}function Xv(){let e="outdated_tags",t=!0,r;dt.get("deprecated").then(a=>r=a).catch(()=>{}).finally(()=>t=!1);function n(a,o){if(!a.hasInterestingTags())return[];let s=$e.match(a,o);if(!s)return[];let l=Object.assign({},a.tags),u="deprecated_tags";if(s.replacement){let E=$e.item(s.replacement);o=cl(a.id,s,E,!0)(o),a=o.entity(a.id),s=E}let c=[];if(r){let E=a.deprecatedTags(r);a.type==="way"&&a.isClosed()&&a.tags.traffic_calming==="island"&&!a.tags.highway&&E.push({old:{traffic_calming:"island"},replace:{"area:highway":"traffic_island"}}),E.length&&(E.forEach(k=>{o=Y7(a.id,k.old,k.replace)(o),c.push({source:"id-tagging-schema--deprecated",data:k})}),a=o.entity(a.id))}let f=Object.assign({},a.tags);s.tags!==s.addTags&&Object.keys(s.addTags).forEach(E=>{f[E]||(s.addTags[E]==="*"?f[E]="yes":s.addTags[E]&&(f[E]=s.addTags[E]),c.push({source:"id-tagging-schema--preset-addTags",data:s}))});let p=de.nsi,d=!1,g;if(p&&(d=p.status()==="loading",!d)){let E=a.extent(o).center();g=p.upgradeTags(f,E),g&&(f=g.newTags,u="noncanonical_brand",c.push({source:"name-suggestion-index",data:g}))}let x=[];x.provisional=t||d;let b=sl(l,f);if(!b.length)return x;let m=b.every(E=>E.type==="+"),v="";g?v="noncanonical_brand.":u==="deprecated_tags"&&m&&(u="incomplete_tags",v="incomplete.");let y=u!=="noncanonical_brand"?[_,F("issues.fix.upgrade_tags.annotation")]:null;return x.push(new Ft({type:e,subtype:u,severity:"warning",message:A,reference:I,entityIds:[a.id],hash:t1(JSON.stringify(b)),dynamicFixes:()=>{let E=[new mt({autoArgs:y,title:F.append("issues.fix.upgrade_tags.title"),onClick:S=>{S.perform(_,F("issues.fix.upgrade_tags.annotation"))}})],k=g&&g.matched;return k&&E.push(new mt({title:F.append("issues.fix.tag_as_not.title",{name:k.displayName}),onClick:S=>{S.perform(w,F("issues.fix.tag_as_not.annotation"))}})),E}})),x;function _(E){let k=E.hasEntity(a.id);if(!k)return E;let S=Object.assign({},k.tags);return b.forEach(D=>{D.type==="-"?delete S[D.key]:D.type==="+"&&(S[D.key]=D.newVal)}),sr(k.id,S)(E)}function w(E){let k=E.hasEntity(a.id);if(!k)return E;let S=g&&g.matched;if(!S)return E;let D=Object.assign({},k.tags),P=S.mainTag,O=`not:${P}`,T=S.tags[P];if(D[O]=T,D[P]===T){let M=S.mainTag.replace("wikidata","wikipedia");delete D[P],delete D[M]}return sr(k.id,D)(E)}function A(E){let k=E.hasEntity(a.id);if(!k)return"";let S=`issues.outdated_tags.${v}message`;return u==="noncanonical_brand"&&m&&(S+="_incomplete"),F.append(S,{feature:wt(k,E.graph(),!0)})}function I(E){let k=E.selectAll(".issue-reference").data([0]).enter();k.append("div").attr("class","issue-reference").call(F.append(`issues.outdated_tags.${v}reference`)),k.append("strong").call(F.append("issues.suggested")),k.append("table").attr("class","tagDiff-table").selectAll(".tagDiff-row").data(b).enter().append("tr").attr("class","tagDiff-row").append("td").attr("class",S=>`tagDiff-cell tagDiff-cell-${S.type==="+"?"add":"remove"}`).html(S=>S.display)}}let i=n;return i.type=e,i}function Yv(){var e="private_data",t={detached:!0,farm:!0,house:!0,houseboat:!0,residential:!0,semidetached_house:!0,static_caravan:!0},r={amenity:!0,craft:!0,historic:!0,leisure:!0,office:!0,shop:!0,tourism:!0},n={"contact:email":!0,"contact:fax":!0,"contact:phone":!0,email:!0,fax:!0,phone:!0},i=function(o){var s=o.tags;if(!s.building||!t[s.building])return[];var l={};for(var u in s){if(r[u])return[];n[u]||(l[u]=s[u])}var c=sl(s,l);if(!c.length)return[];var f=c.length===1?"remove_tag":"remove_tags";return[new Ft({type:e,severity:"warning",message:d,reference:g,entityIds:[o.id],dynamicFixes:function(){return[new mt({icon:"iD-operation-delete",title:F.append("issues.fix."+f+".title"),onClick:function(x){x.perform(p,F("issues.fix.remove_tag.annotation"))}})]}})];function p(x){var b=x.hasEntity(o.id);if(!b)return x;var m=Object.assign({},b.tags);return c.forEach(function(v){v.type==="-"?delete m[v.key]:v.type==="+"&&(m[v.key]=v.newVal)}),sr(b.id,m)(x)}function d(x){var b=x.hasEntity(this.entityIds[0]);return b?F.append("issues.private_data.contact.message",{feature:wt(b,x.graph())}):""}function g(x){var b=x.selectAll(".issue-reference").data([0]).enter();b.append("div").attr("class","issue-reference").call(F.append("issues.private_data.reference")),b.append("strong").call(F.append("issues.suggested")),b.append("table").attr("class","tagDiff-table").selectAll(".tagDiff-row").data(c).enter().append("tr").attr("class","tagDiff-row").append("td").attr("class",function(m){var v=m.type==="+"?"add":"remove";return"tagDiff-cell tagDiff-cell-"+v}).html(function(m){return m.display})}};return i.type=e,i}function Kv(){let e="suspicious_name",t=["aerialway","aeroway","amenity","building","craft","highway","leisure","railway","man_made","office","shop","tourism","waterway"],r=!1;function n(l){let u=de.nsi;return u&&(r=u.status()==="loading",!r)?u.isGenericName(l):!1}function i(l,u){for(let c=0;c=2?g[1]:null,b=c[d];a(b,c)&&(p.provisional=r,p.push(o(u.id,d,b,x)))}return p};return s.type=e,s}function Zv(e){var t="unsquare_way",r=5,n=.05,i=10;function a(s,l){return s.type!=="way"||s.geometry(l)!=="area"?!1:s.tags.building&&s.tags.building!=="no"}var o=function(l,u){if(!a(l,u))return[];if(l.tags.nonsquare==="yes")return[];var c=l.isClosed();if(!c)return[];var f=u.childNodes(l).slice();if(f.length>i+1)return[];var p=de.osm;if(!p||f.some(function(_){return!p.isDataLoaded(_.loc)}))return[];var d=f.some(function(_){return u.parentWays(_).some(function(w){return w.id===l.id?!1:a(w,u)?!0:u.parentRelations(w).some(function(A){return A.isMultipolygon()&&A.tags.building&&A.tags.building!=="no"})})});if(d)return[];var g=Te("validate-square-degrees"),x=isFinite(g)?Number(g):r,b=f.map(function(_){return e.projection(_.loc)});if(!z4(b,c,n,x,!0))return[];var m;if(!l.tags.wikidata){var v=hl(l.id,e.projection,void 0,x);v.transitionable=!1,m=[v,F("operations.orthogonalize.annotation.feature",{n:1})]}return[new Ft({type:t,subtype:"building",severity:"warning",message:function(_){var w=_.hasEntity(this.entityIds[0]);return w?F.append("issues.unsquare_way.message",{feature:wt(w,_.graph())}):""},reference:y,entityIds:[l.id],hash:x,dynamicFixes:function(){return[new mt({icon:"iD-operation-orthogonalize",title:F.append("issues.fix.square_feature.title"),autoArgs:m,onClick:function(_,w){var A=this.issue.entityIds[0];_.perform(hl(A,_.projection,void 0,x),F("operations.orthogonalize.annotation.feature",{n:1})),window.setTimeout(function(){w()},175)}})]}})];function y(_){_.selectAll(".issue-reference").data([0]).enter().append("div").attr("class","issue-reference").call(F.append("issues.unsquare_way.buildings.reference"))}};return o.type=t,o}function _9(e){let t=xe("validated","focusedIssue"),r=ke({},t,"on"),n={},i={},a=new Set,o=new Set,s=w9("base"),l=w9("head"),u={},c=!1,f={},p=new Set,d,g=5e3,x=v(e.initialHashParams.validationError),b=v(e.initialHashParams.validationWarning),m=v(e.initialHashParams.validationDisable);function v(S){let D=[];return(S||"").split(",").forEach(T=>{T=T.trim();let M=T.split("/",2),R=M[0],N=M[1]||"*";!R||!N||D.push({type:O(R),subtype:O(N)})}),D;function O(T){let M=T.replace(/[-\/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*");return new RegExp("^"+M+"$")}}r.init=()=>{Object.values(Jv).forEach(D=>{if(typeof D!="function")return;let P=D(e),O=P.type;n[O]=P});let S=Te("validate-disabledRules");S&&S.split(",").forEach(D=>i[D]=!0)};function y(S){s.queue=[],l.queue=[],Object.keys(f).forEach(D=>{window.cancelIdleCallback(D),f[D]()}),f={},p.forEach(window.clearTimeout),p.clear(),S&&a.clear(),o.clear(),s=w9("base"),l=w9("head"),u={},c=!1}r.reset=()=>{y(!0)},r.resetIgnoredIssues=()=>{a.clear(),t.call("validated")},r.revalidateUnsquare=()=>{_(l),_(s),t.call("validated")};function _(S){let D=n.unsquare_way;if(!S.graph||typeof D!="function")return;S.uncacheIssuesOfType("unsquare_way"),e.history().tree().intersects(Pe([-180,-90],[180,90]),S.graph).filter(O=>O.type==="way"&&O.tags.building&&O.tags.building!=="no").forEach(O=>{let T=D(O,S.graph);T.length&&S.cacheIssues(T)})}r.getIssues=S=>{let D=Object.assign({what:"all",where:"all",includeIgnored:!1,includeDisabledRules:!1},S),P=e.map().extent(),O=new Set,T=[];return l.graph&&l.graph!==s.graph&&Object.values(l.issuesByIssueID).forEach(R=>{let N=(R.entityIds||[]).some(U=>u.hasOwnProperty(U));D.what==="edited"&&!N||M(R)&&(O.add(R.id),T.push(R))}),D.what==="all"&&Object.values(s.issuesByIssueID).forEach(R=>{M(R)&&(O.add(R.id),T.push(R))}),T;function M(R){if(!R||O.has(R.id)||o.has(R.id)||D.includeDisabledRules==="only"&&!i[R.type]||!D.includeDisabledRules&&i[R.type]||D.includeIgnored==="only"&&!a.has(R.id)||!D.includeIgnored&&a.has(R.id)||(R.entityIds||[]).some(N=>!e.hasEntity(N)))return!1;if(D.where==="visible"){let N=R.extent(e.graph());if(!P.intersects(N))return!1}return!0}},r.getResolvedIssues=()=>Array.from(o).map(S=>s.issuesByIssueID[S]).filter(Boolean),r.focusIssue=S=>{let D=e.graph(),P,O,T=S.extent(D);if(T&&(O=T.center()),S.entityIds&&S.entityIds.length&&(P=S.entityIds[0],P&&P.charAt(0)==="r")){let M=d0([P],D),R=M.find(N=>N.charAt(0)==="n"&&D.hasEntity(N));if(!R){let N=M.find(U=>U.charAt(0)==="w"&&D.hasEntity(U));N&&(R=D.entity(N).first())}R&&(O=D.entity(R).loc)}if(O){let M=Math.max(e.map().zoom(),19);e.map().unobscuredCenterZoomEase(O,M)}P&&window.setTimeout(()=>{e.enter(rt(e,[P])),t.call("focusedIssue",this,S)},250)},r.getIssuesBySeverity=S=>{let D=Ir(r.getIssues(S),"severity");return D.error=D.error||[],D.warning=D.warning||[],D},r.getSharedEntityIssues=(S,D)=>{let P=["missing_tag","missing_role","outdated_tags","mismatched_geometry","crossing_ways","almost_junction","disconnected_way","impossible_oneway"],O=r.getIssues(D),T=new Set(S);return O.filter(M=>(M.entityIds||[]).some(R=>T.has(R))).sort((M,R)=>{if(M.type===R.type)return M.idr.getSharedEntityIssues([S],D),r.getRuleKeys=()=>Object.keys(n),r.isRuleEnabled=S=>!i[S],r.toggleRule=S=>{i[S]?delete i[S]:i[S]=!0,Te("validate-disabledRules",Object.keys(i).join(",")),r.validate()},r.disableRules=S=>{i={},S.forEach(D=>i[D]=!0),Te("validate-disabledRules",Object.keys(i).join(",")),r.validate()},r.ignoreIssue=S=>{a.add(S)},r.validate=()=>{let S=e.history().base();l.graph||(l.graph=S),s.graph||(s.graph=S);let D=l.graph,P=e.graph();if(P===D)return c=!0,t.call("validated"),Promise.resolve();if(d)return c=!1,d;l.graph=P,u=e.history().difference().complete();let O=fs(D,P),T=Object.keys(O.complete());return T=l.withAllRelatedEntities(T),T.size?(d=I(T,l).then(()=>A(T)).then(()=>t.call("validated")).catch(()=>{}).then(()=>{d=null,c||r.validate()}),d):(t.call("validated"),Promise.resolve())},e.history().on("restore.validator",r.validate).on("undone.validator",r.validate).on("redone.validator",r.validate).on("reset.validator",()=>{y(!1),r.validate()}),e.on("exit.validator",r.validate),e.history().on("merge.validator",S=>{if(!S)return;let D=e.history().base();l.graph||(l.graph=D),s.graph||(s.graph=D);let P=S.map(O=>O.id);P=s.withAllRelatedEntities(P),I(P,s)});function w(S,D){let P={issues:[],provisional:!1};return Object.keys(n).forEach(O),P;function O(T){let M=n[T];if(typeof M!="function"){console.error("no such validation rule = "+T);return}let R=M(S,D);R.provisional&&(P.provisional=!0),R=R.filter(N),P.issues=P.issues.concat(R);function N(U){let B=U.type,$=U.subtype||"",z;for(z=0;z{let P=s.issuesByEntityID[D];P&&P.forEach(O=>{(s.issuesByIssueID[O].entityIds||[]).some(R=>u.hasOwnProperty(R))&&!l.issuesByIssueID[O]?o.add(O):o.delete(O)})})}function I(S,D){let P=Array.from(S).map(O=>D.queuedEntityIDs.has(O)?null:(D.queuedEntityIDs.add(O),D.uncacheEntityID(O),()=>{D.queuedEntityIDs.delete(O);let T=D.graph;if(!T)return;let M=T.hasEntity(O);if(!M)return;let R=w(M,T);R.provisional&&D.provisionalEntityIDs.add(O),D.cacheIssues(R.issues)})).filter(Boolean);return D.queue=D.queue.concat(r0(P,100)),D.queuePromise||(D.queuePromise=k(D).then(()=>E(D)).catch(()=>{}).finally(()=>D.queuePromise=null)),D.queuePromise}function E(S){if(!S.provisionalEntityIDs.size)return;let D=window.setTimeout(()=>{p.delete(D),S.provisionalEntityIDs.size&&I(Array.from(S.provisionalEntityIDs),S)},g);p.add(D)}function k(S){if(!S.queue.length)return Promise.resolve();let D=S.queue.pop();return new Promise((P,O)=>{let T=window.requestIdleCallback(()=>{delete f[T],D.forEach(M=>M()),P()});f[T]=O}).then(()=>{S.queue.length%25===0&&t.call("validated")}).then(()=>k(S))}return r}function w9(e){let t={which:e,graph:null,queue:[],queuePromise:null,queuedEntityIDs:new Set,provisionalEntityIDs:new Set,issuesByIssueID:{},issuesByEntityID:{}};return t.cacheIssue=r=>{(r.entityIds||[]).forEach(n=>{t.issuesByEntityID[n]||(t.issuesByEntityID[n]=new Set),t.issuesByEntityID[n].add(r.id)}),t.issuesByIssueID[r.id]=r},t.uncacheIssue=r=>{(r.entityIds||[]).forEach(n=>{t.issuesByEntityID[n]&&t.issuesByEntityID[n].delete(r.id)}),delete t.issuesByIssueID[r.id]},t.cacheIssues=r=>{r.forEach(t.cacheIssue)},t.uncacheIssues=r=>{r.forEach(t.uncacheIssue)},t.uncacheIssuesOfType=r=>{let n=Object.values(t.issuesByIssueID).filter(i=>i.type===r);t.uncacheIssues(n)},t.uncacheEntityID=r=>{let n=t.issuesByEntityID[r];n&&n.forEach(i=>{let a=t.issuesByIssueID[i];a?t.uncacheIssue(a):delete t.issuesByIssueID[i]}),delete t.issuesByEntityID[r],t.provisionalEntityIDs.delete(r)},t.withAllRelatedEntities=r=>{let n=new Set;return(r||[]).forEach(i=>{n.add(i);let a=t.issuesByEntityID[i];a&&a.forEach(o=>{let s=t.issuesByIssueID[o];s?(s.entityIds||[]).forEach(l=>n.add(l)):delete t.issuesByIssueID[o]})}),n},t}function E9(e){var t=xe("saveStarted","saveEnded","willAttemptUpload","progressChanged","resultNoChanges","resultErrors","resultConflicts","resultSuccess"),r=!1,n=[],i=[],a,o={};dt.get("discarded").then(function(b){o=b}).catch(function(){});var s=ke({},t,"on");s.isSaving=function(){return r},s.save=function(b,m,v){if(!(r&&!m)){var y=e.connection();if(y){if(!y.authenticated()){y.authenticate(function(w){w||s.save(b,m,v)});return}r||(r=!0,t.call("saveStarted",this));var _=e.history();n=[],i=[],a=_.changes(v0(_.difference(),o)),m||_.perform(Bn()),v?l(b):u(b)}}};function l(b){var m=e.connection();if(!m)return;for(var v=e.history(),y=e.graph(),_=Rn(v.base(),!0),w=v.difference().summary(),A=[],I=0;I'+a5($)+"
    "}function U($){return kr($)||ta($.id)+" "+$.id}function B($,z){if($.version!==z.version)return!1;if($.type==="way")for(var V=or($.nodes,z.nodes),H=0;H{this.time-=this.intervalInMs,t()},r))}clear(){this.pendingHandles.forEach(t=>{clearTimeout(t)}),this.pendingHandles=[],this.time=0}};var QD=window.devicePixelRatio&&window.devicePixelRatio>=2;window.matchMedia(` + (-webkit-min-device-pixel-ratio: 2), /* Safari */ + (min-resolution: 2dppx), /* standard */ + (min-resolution: 192dpi) /* fallback */ + `).addListener(function(){QD=window.devicePixelRatio&&window.devicePixelRatio>=2});function R5(e){if(!e)return null;var t={day:"numeric",month:"short",year:"numeric"},r=new Date(e);return isNaN(r.getTime())?null:r.toLocaleDateString(fe.localeCode(),t)}function XD(e){var t;return(e.start||e.end)&&(t=e.start||"?",e.start!==e.end&&(t+=" - "+(e.end||"?"))),t}function mi(e){var t=Object.assign({},e),r=[0,0],n=t.name,i=t.description,a=!!t.best,o=t.encrypted?c0(t.template):t.template;return t.tileSize=e.tileSize||256,t.zoomExtent=e.zoomExtent||[0,22],t.overzoom=e.overzoom!==!1,t.offset=function(s){return arguments.length?(r=s,t):r},t.nudge=function(s,l){return r[0]+=s[0]/Math.pow(2,l),r[1]+=s[1]/Math.pow(2,l),t},t.name=function(){var s=t.id.replace(/\./g,"");return F("imagery."+s+".name",{default:(0,L5.escape)(n)})},t.label=function(){var s=t.id.replace(/\./g,"");return F.append("imagery."+s+".name",{default:(0,L5.escape)(n)})},t.hasDescription=function(){var s=t.id.replace(/\./g,""),l=fe.tInfo("imagery."+s+".description",{default:(0,L5.escape)(i)}).text;return l!==""},t.description=function(){var s=t.id.replace(/\./g,"");return F.append("imagery."+s+".description",{default:(0,L5.escape)(i)})},t.best=function(){return a},t.area=function(){if(!e.polygon)return Number.MAX_VALUE;var s=zo({type:"MultiPolygon",coordinates:[e.polygon]});return isNaN(s)?0:s},t.imageryUsed=function(){return n||t.id},t.template=function(s){return arguments.length?((t.id==="custom"||t.id==="Bing")&&(o=s),t):o},t.url=function(s){var l=o.replace(/#[\s\S]*/u,"");if(l==="")return l;if((!t.type||t.id==="custom")&&(/SERVICE=WMS|\{(proj|wkid|bbox)\}/.test(l)?(t.type="wms",t.projection="EPSG:3857"):/\{(x|y)\}/.test(l)?t.type="tms":/\{u\}/.test(l)&&(t.type="bing")),t.type==="wms"){var u=function(g,x,b){var m=Math.pow(2,b),v=g/m*Math.PI*2-Math.PI,y=Math.atan(Math.sinh(Math.PI*(1-2*x/m)));switch(t.projection){case"EPSG:4326":return{x:v*180/Math.PI,y:y*180/Math.PI};default:var _=R1(v,y);return{x:2003750834e-2/Math.PI*_[0],y:2003750834e-2/Math.PI*_[1]}}},c=t.tileSize,f=t.projection,p=u(s[0],s[1],s[2]),d=u(s[0]+1,s[1]+1,s[2]);l=l.replace(/\{(\w+)\}/g,function(g,x){switch(x){case"width":case"height":return c;case"proj":return f;case"wkid":return f.replace(/^EPSG:/,"");case"bbox":return f==="EPSG:4326"&&/VERSION=1.3|CRS={proj}/.test(t.template().toUpperCase())?d.y+","+p.x+","+p.y+","+d.x:p.x+","+d.y+","+d.x+","+p.y;case"w":return p.x;case"s":return d.y;case"n":return d.x;case"e":return p.y;default:return g}})}else t.type==="tms"?l=l.replace("{x}",s[0]).replace("{y}",s[1]).replace(/\{[t-]y\}/,Math.pow(2,s[2])-s[1]-1).replace(/\{z(oom)?\}/,s[2]).replace(/\{@2x\}|\{r\}/,QD?"@2x":""):t.type==="bing"&&(l=l.replace("{u}",function(){for(var g="",x=s[2];x>0;x--){var b=0,m=1<s)},t.isLocatorOverlay=function(){return t.id==="mapbox_locator_overlay"},t.isHidden=function(){return t.id==="DigitalGlobe-Premium-vintage"||t.id==="DigitalGlobe-Standard-vintage"},t.copyrightNotices=function(){},t.getMetadata=function(s,l,u){var c={start:R5(t.startDate),end:R5(t.endDate)};c.range=XD(c);var f={vintage:c};u(null,f)},t}mi.Bing=function(e,t){e.template="https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=1&pr=odbl&n=z";var r=mi(e),n=c0("5c875730b09c6b422433e807e1ff060b6536c791dbfffcffc4c6b18a1bdba1f14593d151adb50e19e1be1ab19aef813bf135d0f103475e5c724dec94389e45d0");let i="n";var a="https://dev.virtualearth.net/REST/v1/Imagery/Metadata/AerialOSM?include=ImageryProviders&uriScheme=https&key="+n,o={},s={},l=[],u=new k9(250),c=-1;return Kt(a).then(function(f){let p=f.resourceSets[0].resources[0],d=p.imageUrl,x=p.imageUrlSubdomains.map(b=>b.substring(1)).join(",");d=d.replace("{subdomain}",`t{switch:${x}}`).replace("{quadkey}","{u}"),new URLSearchParams(d).has(i)||(d+=`&${i}=z`),r.template(d),l=p.imageryProviders.map(function(b){return{attribution:b.attribution,areas:b.coverageAreas.map(function(m){return{zoom:[m.zoomMin,m.zoomMax],extent:Pe([m.bbox[1],m.bbox[0]],[m.bbox[3],m.bbox[2]])}})}}),t.call("change")}).catch(function(){}),r.copyrightNotices=function(f,p){return f=Math.min(f,21),l.filter(function(d){return d.areas.some(function(g){return p.intersects(g.extent)&&g.zoom[0]<=f&&g.zoom[1]>=f})}).map(function(d){return d.attribution}).join(", ")},r.getMetadata=function(f,p,d){var g=p.slice(0,3).join("/"),x=Math.min(p[2],21),b=f[1]+","+f[0],m="https://dev.virtualearth.net/REST/v1/Imagery/BasicMetadata/AerialOSM/"+b+"?zl="+x+"&key="+n;if(!s[g]){if(o[g]||(o[g]={}),o[g]&&o[g].metadata)return d(null,o[g].metadata);s[g]=!0,c!==p[2]&&(c=p[2],u.clear()),u.enqueue(()=>{Kt(m).then(function(v){if(delete s[g],!v)throw new Error("Unknown Error");var y={start:R5(v.resourceSets[0].resources[0].vintageStart),end:R5(v.resourceSets[0].resources[0].vintageEnd)};y.range=XD(y);var _={vintage:y};o[g].metadata=_,d&&d(null,_)}).catch(function(v){delete s[g],d&&d(v.message)})})}},r.terms_url="https://blog.openstreetmap.org/2010/11/30/microsoft-imagery-details",r};mi.Esri=function(e){e.template.match(/blankTile/)===null&&(e.template=e.template+"?blankTile=false");var t=mi(e),r={},n={},i;return t.fetchTilemap=function(a){if(!(i&&Vt(a,i)<5e3)){i=a;var o=20,s=t.url([1,2,3]),l=Math.floor((a[0]+180)/360*Math.pow(2,o)),u=Math.floor((1-Math.log(Math.tan(a[1]*Math.PI/180)+1/Math.cos(a[1]*Math.PI/180))/Math.PI)/2*Math.pow(2,o)),c=s.replace(/tile\/[0-9]+\/[0-9]+\/[0-9]+\?blankTile=false/,"tilemap")+"/"+o+"/"+u+"/"+l+"/8/8";Kt(c).then(function(f){if(!f)throw new Error("Unknown Error");for(var p=!0,d=0;dy.attributes).filter(y=>y.MinMapLevel<=c&&y.MaxMapLevel>=c)[0],m){if(m.features&&m.features.length<1)throw new Error("No Results");if(m.error&&m.error.message)throw new Error(m.error.message)}else throw new Error("Unknown Error");var v=R5(m.SRC_DATE2);d={start:v,end:v,range:v},g={vintage:d,source:b(m.NICE_NAME),description:b(m.NICE_DESC),resolution:b(+Number(m.SRC_RES).toFixed(4)),accuracy:b(+Number(m.SRC_ACC).toFixed(4))},isFinite(g.resolution)&&(g.resolution+=" m"),isFinite(g.accuracy)&&(g.accuracy+=" m"),r[u].metadata=g,s&&s(null,g)}).catch(function(m){delete n[u],s&&s(m.message)});function b(m){return String(m).trim()||p}},t};mi.None=function(){var e=mi({id:"none",template:""});return e.name=function(){return F("background.none")},e.label=function(){return F.append("background.none")},e.imageryUsed=function(){return null},e.area=function(){return-1},e};mi.Custom=function(e){var t=mi({id:"custom",template:e});return t.name=function(){return F("background.custom")},t.label=function(){return F.append("background.custom")},t.imageryUsed=function(){var r=t.template();if(r.indexOf("?")!==-1){var n=r.split("?",2),i=pr(n[1]);["access_token","connectId","token","Signature"].forEach(function(a){i[a]&&(i[a]="{apikey}")}),r=n[0]+"?"+yt(i,!0)}return r=r.replace(/token\/(\w+)/,"token/{apikey}").replace(/key=(\w+)/,"key={apikey}"),"Custom ("+r+" )"},t.area=function(){return-2},t};var Li=63710088e-1,cke={centimeters:Li*100,centimetres:Li*100,degrees:Li/111325,feet:Li*3.28084,inches:Li*39.37,kilometers:Li/1e3,kilometres:Li/1e3,meters:Li,metres:Li,miles:Li/1609.344,millimeters:Li*1e3,millimetres:Li*1e3,nauticalmiles:Li/1852,radians:1,yards:Li*1.0936},fke={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:1/1e3,kilometres:1/1e3,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/Li,yards:1.0936133};function B5(e,t,r){r===void 0&&(r={});var n={type:"Feature"};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function YD(e,t,r){r===void 0&&(r={});for(var n=0,i=e;nt[2]&&(r|=2),e[1]t[3]&&(r|=8),r}function $5(e,t){var r=JD(e),n=r.type,i=e.type==="Feature"?e.properties:{},a=r.coordinates;switch(n){case"LineString":case"MultiLineString":{var o=[];return n==="LineString"&&(a=[a]),a.forEach(function(s){eT(s,t,o)}),o.length===1?ey(o[0],i):KD(o,i)}case"Polygon":return YD(rT(a,t),i);case"MultiPolygon":return ZD(a.map(function(s){return rT(s,t)}),i);default:throw new Error("geometry "+n+" not supported")}}function rT(e,t){for(var r=[],n=0,i=e;n0&&((o[0][0]!==o[o.length-1][0]||o[0][1]!==o[o.length-1][1])&&o.push(o[0]),o.length>=4&&r.push(o))}return r}function ry(e,t,r){if(e!==null)for(var n,i,a,o,s,l,u,c=0,f=0,p,d=e.type,g=d==="FeatureCollection",x=d==="Feature",b=g?e.features.length:1,m=0;mr[0]&&(t[0]=r[0]),t[1]>r[1]&&(t[1]=r[1]),t[2]-b[2];m--){var v=c(b,m);if(a[l.url(v)]!==!1)return v}}function p(b,m){for(var v=[],y={},_=0;_{let g=x=>{let b=x.match(/\(Wayback (\d{4})-(\d\d)-(\d\d)\)/);if(b)return new Date(Date.UTC(parseInt(b[1],10),parseInt(b[2],10)-1,parseInt(b[3],10)))};if(!A9){let x=Object.fromEntries(d.items.filter(b=>b.type==="Map Service").map(b=>[(g(b.title)||new Date(b.created)).toISOString().split("T")[0],b.url]));A9=d.items.filter(b=>b.type==="WMTS").map(b=>{let m=g(b.title)||new Date(b.created),v=m&&m.toISOString().split("T")[0],y={min_lon:b.extent[0][0],min_lat:b.extent[0][1],max_lon:b.extent[1][0],max_lat:b.extent[1][1]},_=[[[y.min_lon,y.min_lat],[y.min_lon,y.max_lat],[y.max_lon,y.max_lat],[y.max_lon,y.min_lat],[y.min_lon,y.min_lat]]],w=b.url.replaceAll("{level}","{zoom}").replaceAll("{row}","{y}").replaceAll("{col}","{x}");return{id:"EsriWorldImagery_"+v,name:b.title,type:"tms",template:w,metadata:x[v],startDate:m.toISOString(),endDate:m.toISOString(),polygon:_,terms_text:b.accessInformation,description:b.snippet,default:!0,zoomExtent:[0,22],terms_url:"https://wiki.openstreetmap.org/wiki/Esri",icon:"https://osmlab.github.io/editor-layer-index/sources/world/EsriImageryClarity.png"}})}return dt.get("imagery")}).catch(()=>dt.get("imagery")).then(d=>{if(Ri)return Ri;A9&&d.push(...A9),Ri={imagery:d,features:{}};let g=d.map(m=>{if(!m.polygon)return null;let v=m.polygon.map(_=>[_]),y={type:"Feature",properties:{id:m.id},geometry:{type:"MultiPolygon",coordinates:v}};return Ri.features[m.id]=y,y}).filter(Boolean);Ri.query=(0,iT.default)({type:"FeatureCollection",features:g}),Ri.backgrounds=d.map(m=>m.type==="bing"?mi.Bing(m,t):/^EsriWorldImagery/.test(m.id)?mi.Esri(m):mi(m)),Ri.backgrounds.unshift(mi.None());let x=Te("background-custom-template")||"",b=mi.Custom(x);return Ri.backgrounds.unshift(b),Ri})}function f(d){let g=r.source();if(e.map().zoom()>18&&g&&/^EsriWorldImagery/.test(g.id)){let E=e.map().center();g.fetchTilemap(E)}let x=f.sources(e.map().extent()),b=i;i=!!x.filter(E=>E===g).length,b!==i&&f.updateImagery();let m="";if(o!==1&&(m+=` brightness(${o})`),s!==1&&(m+=` contrast(${s})`),l!==1&&(m+=` saturate(${l})`),u<1){let E=Vr(.5,5)(1-u);m+=` blur(${E}px)`}let v=d.selectAll(".layer-background").data([0]);v=v.enter().insert("div",".layer-data").attr("class","layer layer-background").merge(v),v.style("filter",m||null);let y=v.selectAll(".layer-imagery").data([0]);y.enter().append("div").attr("class","layer layer-imagery").merge(y).call(r);let _="",w="";if(u>1){w="overlay",_="saturate(0) blur(3px) invert(1)";let E=u-1;_+=` contrast(${E})`;let k=Vr(1,.85)(u-1);_+=` brightness(${k})`}let A=v.selectAll(".layer-unsharp-mask").data(u>1?[0]:[]);A.exit().remove(),A.enter().append("div").attr("class","layer layer-mask layer-unsharp-mask").merge(A).call(r).style("filter",_||null).style("mix-blend-mode",w||null);let I=d.selectAll(".layer-overlay").data(a,E=>E.source().name());I.exit().remove(),I.enter().insert("div",".layer-data").attr("class","layer layer-overlay").merge(I).each((E,k,S)=>G(S[k]).call(E))}f.updateImagery=function(){let d=r.source();if(e.inIntro()||!d)return;let g=a.filter(S=>!S.source().isLocatorOverlay()&&!S.source().isHidden()).map(S=>S.source().id).join(","),x=C4(d.offset()),b=.01,m=+x[0].toFixed(2),v=+x[1].toFixed(2),y=pr(window.location.hash),_=d.id;_==="custom"&&(_=`custom:${d.template()}`),_?y.background=_:delete y.background,g?y.overlays=g:delete y.overlays,Math.abs(m)>b||Math.abs(v)>b?y.offset=`${m},${v}`:delete y.offset,window.mocha||window.location.replace("#"+yt(y,!0));let w=[],A=[],I=d.imageryUsed();I&&i&&w.push(I),a.filter(S=>!S.source().isLocatorOverlay()&&!S.source().isHidden()).forEach(S=>w.push(S.source().imageryUsed()));let E=e.layers().layer("data");E&&E.enabled()&&E.hasData()&&w.push(E.getSrc());let k={streetside:"Bing Streetside",mapillary:"Mapillary Images","mapillary-map-features":"Mapillary Map Features","mapillary-signs":"Mapillary Signs",kartaview:"KartaView Images",vegbilder:"Norwegian Road Administration Images",mapilio:"Mapilio Images"};for(let S in k){let D=e.layers().layer(S);D&&D.enabled()&&(A.push(S),w.push(k[S]))}e.history().imageryUsed(w),e.history().photoOverlaysUsed(A)},f.sources=(d,g,x)=>{if(!Ri)return[];let b={};(Ri.query.bbox(d.rectangle(),!0)||[]).forEach(w=>b[w.id]=!0);let m=r.source(),v=e.connection(),y=v&&v.imageryBlocklists()||[];return(y.length!==n.length||y.some((w,A)=>String(w)!==n[A]))&&(Ri.backgrounds.forEach(w=>{w.isBlocked=y.some(A=>A.test(w.template()))}),n=y.map(w=>String(w))),Ri.backgrounds.filter(w=>x&&m===w?!0:w.isBlocked?!1:w.polygon?g&&g<6?!1:b[w.id]:!0)},f.dimensions=d=>{d&&(r.dimensions(d),a.forEach(g=>g.dimensions(d)))},f.baseLayerSource=function(d){if(!arguments.length)return r.source();let g=e.connection();if(!g)return f;let x=g.imageryBlocklists(),b=d.template(),m=!1,v=0,y;for(let _=0;_!d||!Ri?null:Ri.backgrounds.find(g=>g.id&&g.id===d),f.bing=()=>{f.baseLayerSource(f.findSource("Bing"))},f.showsLayer=d=>{let g=r.source();return!d||!g?!1:d.id===g.id||a.some(x=>d.id===x.source().id)},f.overlayLayerSources=()=>a.map(d=>d.source()),f.toggleOverlayLayer=d=>{let g;for(let x=0;x{let x=r.source();return x&&(x.nudge(d,g),t.call("change"),f.updateImagery()),f},f.offset=function(d){let g=r.source();return arguments.length?(g&&(g.offset(d),t.call("change"),f.updateImagery()),f):g&&g.offset()||[0,0]},f.brightness=function(d){return arguments.length?(o=d,e.mode()&&t.call("change"),f):o},f.contrast=function(d){return arguments.length?(s=d,e.mode()&&t.call("change"),f):s},f.saturation=function(d){return arguments.length?(l=d,e.mode()&&t.call("change"),f):l},f.sharpness=function(d){return arguments.length?(u=d,e.mode()&&t.call("change"),f):u};let p;return f.ensureLoaded=()=>p||(p=c()),f.init=()=>{let d=f.ensureLoaded(),g=pr(window.location.hash),x=g.background||g.layer,b=Te("background-last-used");return d.then(m=>{let v=e.map().extent(),y=f.sources(v).filter(k=>k.id!=="none"&&k.id!=="custom"),_=y.length&&y[0],w=!!y.find(k=>k.id&&k.id===b),A;if(!x&&v){let k=v.area();A=y.find(S=>{if(!S.best()||S.overlay)return!1;let D=nT($5({type:"MultiPolygon",coordinates:[S.polygon||[v.polygon()]]},v.rectangle()));return Pe(D.slice(0,2),D.slice(2,4)).area()/k>.5})}if(x&&x.indexOf("custom:")===0){let k=x.replace(/^custom:/,""),S=f.findSource("custom");f.baseLayerSource(S.template(k)),Te("background-custom-template",k)}else f.baseLayerSource(f.findSource(x)||A||w&&f.findSource(b)||f.findSource("Bing")||_||f.findSource("none"));let I=m.backgrounds.find(k=>k.overlay&&k.default);if(I&&f.toggleOverlayLayer(I),(g.overlays||"").split(",").forEach(k=>{k=f.findSource(k),k&&f.toggleOverlayLayer(k)}),g.gpx){let k=e.layers().layer("data");k&&k.url(g.gpx,".gpx")}if(g.offset){let k=g.offset.replace(/;/g,",").split(",").map(S=>!isNaN(S)&&S);k.length===2&&f.offset(S4(k))}}).catch(m=>{console.error(m)})},ke(f,t,"on")}function C9(e){var t=xe("change","redraw"),r=ke({},t,"on"),n=new Set,i={motorway:!0,motorway_link:!0,trunk:!0,trunk_link:!0,primary:!0,primary_link:!0,secondary:!0,secondary_link:!0,tertiary:!0,tertiary_link:!0,residential:!0,unclassified:!0,living_street:!0,busway:!0},a={service:!0,road:!0,track:!0},o={path:!0,footway:!0,cycleway:!0,bridleway:!0,steps:!0,pedestrian:!0},s=1,l={},u={},c=0,f={},p=[],d=[],g={};function x(){if(!window.mocha){var v=pr(window.location.hash),y=r.disabled();y.length?v.disable_features=y.join(","):delete v.disable_features,window.location.replace("#"+yt(v,!0)),Te("disabled-features",y.join(","))}d=r.hidden(),t.call("change"),t.call("redraw")}function b(v,y,_){var w=!0;p.push(v),u[v]={filter:y,enabled:w,count:0,currentMax:_||1/0,defaultMax:_||1/0,enable:function(){this.enabled=!0,this.currentMax=this.defaultMax},disable:function(){this.enabled=!1,this.currentMax=0},hidden:function(){return this.count===0&&!this.enabled||this.count>this.currentMax*s},autoHidden:function(){return this.hidden()&&this.currentMax>0}}}b("points",function(y,_){return _==="point"},200),b("traffic_roads",function(y){return i[y.highway]}),b("service_roads",function(y){return a[y.highway]}),b("paths",function(y){return o[y.highway]}),b("buildings",function(y){return!!y.building&&y.building!=="no"||y.parking==="multi-storey"||y.parking==="sheds"||y.parking==="carports"||y.parking==="garage_boxes"},250),b("building_parts",function(y){return y["building:part"]}),b("indoor",function(y){return y.indoor}),b("landuse",function(y,_){return _==="area"&&!u.buildings.filter(y)&&!u.building_parts.filter(y)&&!u.indoor.filter(y)&&!u.water.filter(y)&&!u.pistes.filter(y)}),b("boundaries",function(y,_){return(_==="line"&&!!y.boundary||_==="relation"&&y.type==="boundary")&&!(i[y.highway]||a[y.highway]||o[y.highway]||y.waterway||y.railway||y.landuse||y.natural||y.building||y.power)}),b("water",function(y){return!!y.waterway||y.natural==="water"||y.natural==="coastline"||y.natural==="bay"||y.landuse==="pond"||y.landuse==="basin"||y.landuse==="reservoir"||y.landuse==="salt_pond"}),b("rail",function(y){return(!!y.railway||y.landuse==="railway")&&!(i[y.highway]||a[y.highway]||o[y.highway])}),b("pistes",function(y){return y["piste:type"]}),b("aerialways",function(y){return y.aerialway&&y.aerialway!=="yes"&&y.aerialway!=="station"}),b("power",function(y){return!!y.power}),b("past_future",function(y){if(i[y.highway]||a[y.highway]||o[y.highway])return!1;for(var _=Object.keys(y),w=0;w<_.length;w++){var A=_[w];if(W1[A]||W1[y[A]])return!0}return!1}),b("others",function(y,_){return _==="line"||_==="area"}),r.features=function(){return u},r.keys=function(){return p},r.enabled=function(v){return arguments.length?u[v]&&u[v].enabled:p.filter(function(y){return u[y].enabled})},r.disabled=function(v){return arguments.length?u[v]&&!u[v].enabled:p.filter(function(y){return!u[y].enabled})},r.hidden=function(v){return arguments.length?u[v]&&u[v].hidden():p.filter(function(y){return u[y].hidden()})},r.autoHidden=function(v){return arguments.length?u[v]&&u[v].autoHidden():p.filter(function(y){return u[y].autoHidden()})},r.enable=function(v){u[v]&&!u[v].enabled&&(u[v].enable(),x())},r.enableAll=function(){var v=!1;for(var y in u)u[y].enabled||(v=!0,u[y].enable());v&&x()},r.disable=function(v){u[v]&&u[v].enabled&&(u[v].disable(),x())},r.disableAll=function(){var v=!1;for(var y in u)u[y].enabled&&(v=!0,u[y].disable());v&&x()},r.toggle=function(v){u[v]&&(function(y){return y.enabled?y.disable():y.enable()}(u[v]),x())},r.redraw=function(){x()},r.resetStats=function(){for(var v=0;vc,r.clear=function(v){for(var y=0;y0&&k.every(function(D){return D.tags.type==="boundary"})){var S=qe.key(k[0]);if(l[S]&&l[S].matches){A=Object.assign({},l[S].matches);continue}}}}u[p[E]].filter(v.tags,_)&&(A[p[E]]=I=!0)}l[w].matches=A}return l[w].matches},r.getParents=function(v,y,_){if(_==="point")return[];var w=qe.key(v);if(l[w]||(l[w]={}),!l[w].parents){var A=[];_==="vertex"?A=y.parentWays(v):A=y.parentRelations(v),l[w].parents=A}return l[w].parents},r.isHiddenPreset=function(v,y){if(!d.length||!v.tags)return!1;var _=v.setTags({},y);for(var w in u)if(u[w].filter(_,y))return d.indexOf(w)!==-1?w:!1;return!1},r.isHiddenFeature=function(v,y,_){if(!v.version||g[v.id])return!1;if(!r.featureFitsDateRange(v))return!0;if(!d.length)return!1;var w=Object.keys(r.getMatches(v,y,_));return w.length&&w.every(function(A){return r.hidden(A)})},r.isHiddenChild=function(v,y,_){if(!v.version||_==="point"||g[v.id])return!1;if(!r.featureFitsDateRange(v))return!0;var w=r.getParents(v,y,_);if(!w.length)return!1;for(var A=0;Ap&&(c=c-p),f>p&&(f=f-p)),o[l]===r)return 0;if(o[u]===r)return 2;if(o[c]===r)return 2;if(o[f]===r)return 0;if(s&&o.indexOf(r)!==-1)return 0}return 1}function z5(e,t,r,n,i){return function(a){var o=0,s=r,l=[],u=B6().clipExtent(e.clipExtent()).stream,c=t.childNodes(a).map(function(d){return d.loc}),f,p;return n(a)&&c.reverse(),ei({type:"LineString",coordinates:c},e.stream(u({lineStart:function(){},lineEnd:function(){f=null},point:function(d,g){if(p=[d,g],f){var x=_t(f,p)-s;if(x>=0){var b=Ho(f,p),m=r*Math.cos(b),v=r*Math.sin(b),y=[f[0]+s*Math.cos(b),f[1]+s*Math.sin(b)],_=[f,y];for(x-=r;x>=0;x-=r)y=qr(y,[m,v]),_.push(y);_.push(p);var w="",A;for(A=0;A<_.length;A++)w+=(A===0?"M":"L")+_[A][0]+","+_[A][1];if(l.push({id:a.id,index:o++,d:w}),i(a)){for(w="",A=_.length-1;A>=0;A--)w+=(A===_.length-1?"M":"L")+_[A][0]+","+_[A][1];l.push({id:a.id,index:o++,d:w})}}s=-x}f=p}}))),l}}function an(e,t,r){var n={},i=r?65:5,a=e.clipExtent(),o=[[a[0][0]-i,a[0][1]-i],[a[1][0]+i,a[1][1]+i]],s=B6().clipExtent(o).stream,l=e.stream,u=Fi().projection({stream:function(f){return l(s(f))}}),c=function(f){return f.id in n?n[f.id]:n[f.id]=u(f.asGeoJSON(t))};return c.geojson=function(f){return f.__featurehash__!==void 0?f.__featurehash__ in n?n[f.__featurehash__]:n[f.__featurehash__]=u(f):u(f)},c}function ur(e){var t=function(r){var n=e(r.loc);return"translate("+n[0]+","+n[1]+")"};return t.geojson=function(r){return t(r.properties.entity)},t}function I9(e){return function(t){var r=t.tags,n=!t.hasInterestingTags();return e.parentRelations(t).forEach(function(i){var a=i.tags.type;(a==="multipolygon"&&n||a==="boundary")&&(r=Object.assign({},i.tags,r))}),r}}function G2(e,t,r){if(r===void 0)return t.transient(e,"waySegments",n);return n();function n(){for(var i=e.nodes.indexOf(r)!==-1,a={passive:[],active:[]},o={},s={},l,u,c=0;c/^[-_a-z0-9]+$/.test(m)).join(" ").trim()},i.tags=function(a){return arguments.length?(n=a,i):n},i}var F9={amenity:{grave_yard:"cemetery",fountain:"water_standing"},landuse:{cemetery:[{religion:"christian",pattern:"cemetery_christian"},{religion:"buddhist",pattern:"cemetery_buddhist"},{religion:"muslim",pattern:"cemetery_muslim"},{religion:"jewish",pattern:"cemetery_jewish"},{pattern:"cemetery"}],construction:"construction",farmland:"farmland",farmyard:"farmyard",forest:[{leaf_type:"broadleaved",pattern:"forest_broadleaved"},{leaf_type:"needleleaved",pattern:"forest_needleleaved"},{leaf_type:"leafless",pattern:"forest_leafless"},{pattern:"forest"}],grave_yard:"cemetery",grass:"grass",landfill:"landfill",meadow:"meadow",military:"construction",orchard:"orchard",quarry:"quarry",vineyard:"vineyard"},leisure:{horse_riding:"farmyard"},natural:{beach:"beach",grassland:"grass",sand:"beach",scrub:"scrub",water:[{water:"pond",pattern:"pond"},{water:"reservoir",pattern:"water_standing"},{pattern:"waves"}],wetland:[{wetland:"marsh",pattern:"wetland_marsh"},{wetland:"swamp",pattern:"wetland_swamp"},{wetland:"bog",pattern:"wetland_bog"},{wetland:"reedbed",pattern:"wetland_reedbed"},{pattern:"wetland"}],wood:[{leaf_type:"broadleaved",pattern:"forest_broadleaved"},{leaf_type:"needleleaved",pattern:"forest_needleleaved"},{leaf_type:"leafless",pattern:"forest_leafless"},{pattern:"forest"}]},golf:{green:"golf_green",tee:"grass",fairway:"grass",rough:"scrub"},surface:{grass:"grass",sand:"beach"}};function D9(e){if(e.building&&e.building!=="no")return null;for(var t in F9){var r=e[t];if(r){if(typeof F9[t]=="string")return"pattern-"+F9[t];var n=F9[t];for(var i in n)if(r===i){var a=n[i];if(typeof a=="string")return"pattern-"+a;for(var o in a){var s=a[o],l=!0;for(var u in s)if(u!=="pattern"){var c=e[u];if(!c||c!==s[u]){l=!1;break}}if(l)return"pattern-"+s.pattern}}}}return null}function T9(e,t){function r(a){var o=D9(a);return o?'url("#ideditor-'+o+'")':""}function n(a,o,s,l){var u=t.getDebug("target")?"pink ":"nocolor ",c=t.getDebug("target")?"red ":"nocolor ",f=an(e).geojson,p=t.activeID(),d=t.history().base(),g={targets:[],nopes:[]};s.forEach(function(_){var w=G2(_,o,p);g.targets.push.apply(g.targets,w.passive),g.nopes.push.apply(g.nopes,w.active)});var x=g.targets.filter(f),b=a.selectAll(".area.target-allowed").filter(function(_){return l(_.properties.entity)}).data(x,function(w){return w.id});b.exit().remove();var m=function(_){var w=_.properties.entity.id;return!d.entities[w]||!(0,q5.default)(o.entities[w].nodes,d.entities[w].nodes)?!1:_.properties.nodes.some(function(A){return!d.entities[A.id]||!(0,q5.default)(o.entities[A.id].loc,d.entities[A.id].loc)})};b.enter().append("path").merge(b).attr("d",f).attr("class",function(_){return"way area target target-allowed "+u+_.id}).classed("segment-edited",m);var v=g.nopes.filter(f),y=a.selectAll(".area.target-nope").filter(function(_){return l(_.properties.entity)}).data(v,function(w){return w.id});y.exit().remove(),y.enter().append("path").merge(y).attr("d",f).attr("class",function(_){return"way area target target-nope "+c+_.id}).classed("segment-edited",m)}function i(a,o,s,l){for(var u=an(e,o,!0),c={},f=t.history().base(),p=0;p{r[n]=i});return r}function sy(e){return(e==null?void 0:e.nodeType)===1}function sT(e){return no(e,"line",t=>Object.assign({},F0(t,"color",n=>({stroke:`#${n}`})),oT(t,"opacity",n=>({"stroke-opacity":n})),oT(t,"width",n=>({"stroke-width":n*96/25.4}))))}function lT(e){let t=[];if(e===null)return t;for(let r of Array.from(e.childNodes)){if(!sy(r))continue;let n=dZ(r.nodeName);if(n==="gpxtpx:TrackPointExtension")t=t.concat(lT(r));else{let i=oi(r);t.push([n,mZ(i)])}}return t}function dZ(e){return["heart","gpxtpx:hr","hr"].includes(e)?"heart":e}function mZ(e){let t=parseFloat(e);return isNaN(t)?e:t}function uT(e){let t=[parseFloat(e.getAttribute("lon")||""),parseFloat(e.getAttribute("lat")||"")];if(isNaN(t[0])||isNaN(t[1]))return null;I0(e,"ele",n=>{t.push(n)});let r=Bi(e,"time");return{coordinates:t,time:r?oi(r):null,extendedValues:lT(Bi(e,"extensions"))}}function ly(e){var i;let t=V5(e,["name","cmt","desc","type","time","keywords"]),r=Array.from(e.getElementsByTagNameNS("http://www.garmin.com/xmlschemas/GpxExtensions/v3","*"));for(let a of r)((i=a.parentNode)==null?void 0:i.parentNode)===e&&(t[a.tagName.replace(":","_")]=oi(a));let n=hi(e,"link");return n.length&&(t.links=n.map(a=>Object.assign({href:a.getAttribute("href")},V5(a,["text","type"])))),t}function cT(e,t){let r=hi(e,t),n=[],i=[],a={};for(let o=0;o1,o=Object.assign({_gpxType:"trk"},ly(e),sT(Bi(e,"extensions")),n.length?{coordinateProperties:{times:a?n:n[0]}}:{});for(let s of i){r.push(s.line),o.coordinateProperties||(o.coordinateProperties={});let l=o.coordinateProperties,u=Object.entries(s.extendedValues);for(let c=0;cnew Array(d.line.length).fill(null))),l[f][c]=p):l[f]=p}}return{type:"Feature",properties:o,geometry:a?{type:"MultiLineString",coordinates:r}:{type:"LineString",coordinates:r[0]}}}function vZ(e){let t=Object.assign(ly(e),V5(e,["sym"])),r=uT(e);return r?{type:"Feature",properties:t,geometry:{type:"Point",coordinates:r.coordinates}}:null}function*yZ(e){for(let t of hi(e,"trk")){let r=gZ(t);r&&(yield r)}for(let t of hi(e,"rte")){let r=hZ(t);r&&(yield r)}for(let t of hi(e,"wpt")){let r=vZ(t);r&&(yield r)}}function fT(e){return{type:"FeatureCollection",features:Array.from(yZ(e))}}function pT(e,t){let r={},n=t=="stroke"||t==="fill"?t:t+"-color";return e[0]==="#"&&(e=e.substring(1)),e.length===6||e.length===3?r[n]="#"+e:e.length===8&&(r[t+"-opacity"]=parseInt(e.substring(0,2),16)/255,r[n]="#"+e.substring(6,8)+e.substring(4,6)+e.substring(2,4)),r}function P9(e,t,r){let n={};return I0(e,t,i=>{n[r]=i}),n}function uy(e,t){return no(e,"color",r=>pT(oi(r),t))}function dT(e){return no(e,"Icon",(t,r)=>(F0(t,"href",n=>{r.icon=n}),r))}function bZ(e){return no(e,"IconStyle",t=>Object.assign(uy(t,"icon"),P9(t,"scale","icon-scale"),P9(t,"heading","icon-heading"),no(t,"hotSpot",r=>{let n=parseFloat(r.getAttribute("x")||""),i=parseFloat(r.getAttribute("y")||""),a=r.getAttribute("xunits")||"",o=r.getAttribute("yunits")||"";return!isNaN(n)&&!isNaN(i)?{"icon-offset":[n,i],"icon-offset-units":[a,o]}:{}}),dT(t)))}function xZ(e){return no(e,"LabelStyle",t=>Object.assign(uy(t,"label"),P9(t,"scale","label-scale")))}function wZ(e){return no(e,"LineStyle",t=>Object.assign(uy(t,"stroke"),P9(t,"width","stroke-width")))}function _Z(e){return no(e,"PolyStyle",(t,r)=>Object.assign(r,no(t,"color",n=>pT(oi(n),"fill")),F0(t,"fill",n=>{if(n==="0")return{"fill-opacity":0}}),F0(t,"outline",n=>{if(n==="0")return{"stroke-opacity":0}})))}function cy(e){return Object.assign({},_Z(e),wZ(e),xZ(e),bZ(e))}var j2=e=>Number(e),ay={string:e=>e,int:j2,uint:j2,short:j2,ushort:j2,float:j2,double:j2,bool:e=>!!e};function mT(e,t){return no(e,"ExtendedData",(r,n)=>{for(let i of hi(r,"Data"))n[i.getAttribute("name")||""]=oi(Bi(i,"value"));for(let i of hi(r,"SimpleData")){let a=i.getAttribute("name")||"",o=t[a]||ay.string;n[a]=o(oi(i))}return n})}function hT(e){let t=Bi(e,"description");for(let r of Array.from((t==null?void 0:t.childNodes)||[]))if(r.nodeType===4)return{description:{"@type":"html",value:oi(r)}};return{}}function gT(e){return no(e,"TimeSpan",t=>({timespan:{begin:oi(Bi(t,"begin")),end:oi(Bi(t,"end"))}}))}function vT(e){return no(e,"TimeStamp",t=>({timestamp:oi(Bi(t,"when"))}))}function yT(e,t){return F0(e,"styleUrl",r=>(r=N9(r),t[r]?Object.assign({styleUrl:r},t[r]):{styleUrl:r}))}var EZ=/\s*/g,kZ=/^\s*|\s*$/g,AZ=/\s+/;function bT(e){return e.replace(EZ,"").split(",").map(parseFloat).filter(t=>!isNaN(t)).slice(0,3)}function oy(e){return e.replace(kZ,"").split(AZ).map(bT).filter(t=>t.length>=2)}function SZ(e){let t=hi(e,"coord");t.length===0&&(t=pZ(e,"coord","*"));let r=t.map(n=>oi(n).split(" ").map(parseFloat));return r.length===0?null:{geometry:r.length>2?{type:"LineString",coordinates:r}:{type:"Point",coordinates:r[0]},times:hi(e,"when").map(n=>oi(n))}}function xT(e){if(e.length===0)return e;let t=e[0],r=e[e.length-1],n=!0;for(let i=0;i=2&&t.push({type:"Point",coordinates:a});break}case"LinearRing":case"LineString":{let a=oy(M9(i));a.length>=2&&t.push({type:"LineString",coordinates:a});break}case"Polygon":{let a=[];for(let o of hi(i,"LinearRing")){let s=xT(oy(M9(o)));s.length>=4&&a.push(s)}a.length&&t.push({type:"Polygon",coordinates:a});break}case"Track":case"gx:Track":{let a=SZ(i);if(!a)break;let{times:o,geometry:s}=a;t.push(s),o.length&&r.push(o);break}}}return{geometries:t,coordTimes:r}}function CZ(e){return e.length===0?null:e.length===1?e[0]:{type:"GeometryCollection",geometries:e}}function IZ(e,t,r,n){var u;let{coordTimes:i,geometries:a}=wT(e),o=CZ(a);if(!o&&n.skipNullGeometry)return null;let s={type:"Feature",geometry:o,properties:Object.assign(V5(e,["name","address","visibility","open","phoneNumber","description"]),hT(e),yT(e,t),cy(e),mT(e,r),gT(e),vT(e),i.length?{coordinateProperties:{times:i.length===1?i[0]:i}}:{})};((u=s.properties)==null?void 0:u.visibility)!==void 0&&(s.properties.visibility=s.properties.visibility!=="0");let l=e.getAttribute("id");return l!==null&&l!==""&&(s.id=l),s}function FZ(e){return Bi(e,"gx:LatLonQuad")?{geometry:{type:"Polygon",coordinates:[xT(oy(M9(e)))]}}:MZ(e)}var DZ=Math.PI/180;function TZ(e,t,r){let n=[(e[0]+e[2])/2,(e[1]+e[3])/2];return[t[0].map(i=>{let a=i[1]-n[1],o=i[0]-n[0],s=Math.sqrt(Math.pow(a,2)+Math.pow(o,2)),l=Math.atan2(a,o)+r*DZ;return[n[0]+Math.cos(l)*s,n[1]+Math.sin(l)*s]})]}function MZ(e){let t=Bi(e,"LatLonBox");if(t){let r=I0(t,"north"),n=I0(t,"west"),i=I0(t,"east"),a=I0(t,"south"),o=I0(t,"rotation");if(typeof r=="number"&&typeof a=="number"&&typeof n=="number"&&typeof i=="number"){let s=[n,a,i,r],l=[[[n,r],[i,r],[i,a],[n,a],[n,r]]];return typeof o=="number"&&(l=TZ(s,l,o)),{bbox:s,geometry:{type:"Polygon",coordinates:l}}}}return null}function NZ(e,t,r,n){var l;let i=FZ(e),a=(i==null?void 0:i.geometry)||null;if(!a&&n.skipNullGeometry)return null;let o={type:"Feature",geometry:a,properties:Object.assign({"@geometry-type":"groundoverlay"},V5(e,["name","address","visibility","open","phoneNumber","description"]),hT(e),yT(e,t),cy(e),dT(e),mT(e,r),gT(e),vT(e))};i!=null&&i.bbox&&(o.bbox=i.bbox),((l=o.properties)==null?void 0:l.visibility)!==void 0&&(o.properties.visibility=o.properties.visibility!=="0");let s=e.getAttribute("id");return s!==null&&s!==""&&(o.id=s),o}function PZ(e){let t=e.getAttribute("id"),r=e.parentNode;return!t&&sy(r)&&r.localName==="CascadingStyle"&&(t=r.getAttribute("kml:id")||r.getAttribute("id")),N9(t||"")}function OZ(e){let t={};for(let r of hi(e,"Style"))t[PZ(r)]=cy(r);for(let r of hi(e,"StyleMap")){let n=N9(r.getAttribute("id")||"");F0(r,"styleUrl",i=>{i=N9(i),t[i]&&(t[n]=t[i])})}return t}function LZ(e){let t={};for(let r of hi(e,"SimpleField"))t[r.getAttribute("name")||""]=ay[r.getAttribute("type")||""]||ay.string;return t}function*RZ(e,t={skipNullGeometry:!1}){let r=OZ(e),n=LZ(e);for(let i of hi(e,"Placemark")){let a=IZ(i,r,n,t);a&&(yield a)}for(let i of hi(e,"GroundOverlay")){let a=NZ(i,r,n,t);a&&(yield a)}}function _T(e,t={skipNullGeometry:!1}){return{type:"FeatureCollection",features:Array.from(RZ(e,t))}}var ET=!1,G5=!1,io;function H2(e,t,r){var n=Lt(function(){r.call("change")},1e3),i=!0,a=br(),o=G(null),s,l,u,c;let f=[".gpx",".kml",".geojson",".json"];function p(){if(ET)return;io={},G5=!0;function O(T){T.stopPropagation(),T.preventDefault(),T.dataTransfer.dropEffect="copy"}t.container().attr("dropzone","copy").on("drop.svgData",function(T){if(T.stopPropagation(),T.preventDefault(),!!a.filedrop){var M=T.dataTransfer.files[0],R=S(M.name);f.includes(R)&&k.fileList(T.dataTransfer.files)}}).on("dragenter.svgData",O).on("dragexit.svgData",O).on("dragover.svgData",O),ET=!0}function d(){return de.vectorTile&&!s?(s=de.vectorTile,s.event.on("loadedData",n)):!de.vectorTile&&s&&(s=null),s}function g(){b(),o.style("opacity",0).transition().duration(250).style("opacity",1).on("end",function(){r.call("change")})}function x(){n.cancel(),o.transition().duration(250).style("opacity",0).on("end",m)}function b(){o.style("display","block")}function m(){o.selectAll(".viewfield-group").remove(),o.style("display","none")}function v(O){if(!O)return null;if(O.type==="FeatureCollection")for(var T=0;Tm.label);f.exit().remove(),f.enter().append("span").attr("class",m=>`debug-legend-item ${m.class}`).text(m=>m.label);let p=n.selectAll(".layer-debug").data(o||l?[0]:[]);p.exit().remove(),p=p.enter().append("g").attr("class","layer-debug").merge(p);let d=t.map().extent();dt.get("imagery").then(m=>{let y=(o&&m.query.bbox(d.rectangle(),!0)||[]).map(w=>w.features[w.id]),_=p.selectAll("path.debug-imagery").data(y);_.exit().remove(),_.enter().append("path").attr("class","debug-imagery debug orange")}).catch(()=>{});let g=t.connection(),x=[];g&&l&&(x=g.caches("get").tile.rtree.all().map(v=>({type:"Feature",properties:{id:v.id},geometry:{type:"Polygon",coordinates:[[[v.minX,v.minY],[v.minX,v.maxY],[v.maxX,v.maxY],[v.maxX,v.minY],[v.minX,v.minY]]]}})));let b=p.selectAll("path.debug-downloaded").data(l?x:[]);b.exit().remove(),b.enter().append("path").attr("class","debug-downloaded debug purple"),p.selectAll("path").attr("d",an(e).geojson)}return r.enabled=function(){return arguments.length?this:t.getDebug("tile")||t.getDebug("collision")||t.getDebug("imagery")||t.getDebug("target")||t.getDebug("downloaded")},r}function O9(e){var t=G(null),r=["iD-sprite","maki-sprite","temaki-sprite","fa-sprite","roentgen-sprite","community-sprite"];function n(a){t=a.append("defs"),t.append("marker").attr("id","ideditor-oneway-marker").attr("viewBox","0 0 10 5").attr("refX",2.5).attr("refY",2.5).attr("markerWidth",2).attr("markerHeight",2).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("class","oneway-marker-path").attr("d","M 5,3 L 0,3 L 0,2 L 5,2 L 5,0 L 10,2.5 L 5,5 z").attr("stroke","none").attr("fill","#000").attr("opacity","0.75");function o(l,u,c){t.append("marker").attr("id","ideditor-sided-marker-"+l).attr("viewBox","0 0 2 2").attr("refX",1).attr("refY",-c).attr("markerWidth",1.5).attr("markerHeight",1.5).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("class","sided-marker-path sided-marker-"+l+"-path").attr("d","M 0,0 L 1,1 L 2,0 z").attr("stroke","none").attr("fill",u)}o("natural","rgb(170, 170, 170)",0),o("coastline","#77dede",1),o("waterway","#77dede",1),o("barrier","#ddd",1),o("man_made","#fff",0),t.append("marker").attr("id","ideditor-viewfield-marker").attr("viewBox","0 0 16 16").attr("refX",8).attr("refY",16).attr("markerWidth",4).attr("markerHeight",4).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("class","viewfield-marker-path").attr("d","M 6,14 C 8,13.4 8,13.4 10,14 L 16,3 C 12,0 4,0 0,3 z").attr("fill","#333").attr("fill-opacity","0.75").attr("stroke","#fff").attr("stroke-width","0.5px").attr("stroke-opacity","0.75"),t.append("marker").attr("id","ideditor-viewfield-marker-wireframe").attr("viewBox","0 0 16 16").attr("refX",8).attr("refY",16).attr("markerWidth",4).attr("markerHeight",4).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("class","viewfield-marker-path").attr("d","M 6,14 C 8,13.4 8,13.4 10,14 L 16,3 C 12,0 4,0 0,3 z").attr("fill","none").attr("stroke","#fff").attr("stroke-width","0.5px").attr("stroke-opacity","0.75");var s=t.selectAll("pattern").data([["beach","dots"],["construction","construction"],["cemetery","cemetery"],["cemetery_christian","cemetery_christian"],["cemetery_buddhist","cemetery_buddhist"],["cemetery_muslim","cemetery_muslim"],["cemetery_jewish","cemetery_jewish"],["farmland","farmland"],["farmyard","farmyard"],["forest","forest"],["forest_broadleaved","forest_broadleaved"],["forest_needleleaved","forest_needleleaved"],["forest_leafless","forest_leafless"],["golf_green","grass"],["grass","grass"],["landfill","landfill"],["meadow","grass"],["orchard","orchard"],["pond","pond"],["quarry","quarry"],["scrub","bushes"],["vineyard","vineyard"],["water_standing","lines"],["waves","waves"],["wetland","wetland"],["wetland_marsh","wetland_marsh"],["wetland_swamp","wetland_swamp"],["wetland_bog","wetland_bog"],["wetland_reedbed","wetland_reedbed"]]).enter().append("pattern").attr("id",function(l){return"ideditor-pattern-"+l[0]}).attr("width",32).attr("height",32).attr("patternUnits","userSpaceOnUse");s.append("rect").attr("x",0).attr("y",0).attr("width",32).attr("height",32).attr("class",function(l){return"pattern-color-"+l[0]}),s.append("image").attr("x",0).attr("y",0).attr("width",32).attr("height",32).attr("xlink:href",function(l){return e.imagePath("pattern/"+l[1]+".png")}),t.selectAll("clipPath").data([12,18,20,32,45]).enter().append("clipPath").attr("id",function(l){return"ideditor-clip-square-"+l}).append("rect").attr("x",0).attr("y",0).attr("width",function(l){return l}).attr("height",function(l){return l}),i(r,!0)}function i(a,o){r=ot(r.concat(a));var s=t.selectAll(".spritesheet").data(r);s.enter().append("g").attr("class",function(l){return"spritesheet spritesheet-"+l}).each(function(l){var u=e.imagePath(l+".svg"),c=G(this).node();rv(u).then(function(f){c.appendChild(G(f.documentElement).attr("id","ideditor-"+l).node()),o&&l!=="iD-sprite"&&G(c).selectAll("path").attr("fill","currentColor")}).catch(function(){})}),s.exit().remove()}return n.addSprites=i,n}var Q2=!1,X2;function L9(e,t,r){let n=Lt(()=>r.call("change"),1e3),i=12,a=G(null),o=G(null),s=!1;function l(b,m){b.attr("class",m).attr("transform","translate(-4, -24)").attr("d","M11.6,6.2H7.1l1.4-5.1C8.6,0.6,8.1,0,7.5,0H2.2C1.7,0,1.3,0.3,1.3,0.8L0,10.2c-0.1,0.6,0.4,1.1,0.9,1.1h4.6l-1.8,7.6C3.6,19.4,4.1,20,4.7,20c0.3,0,0.6-0.2,0.8-0.5l6.9-11.9C12.7,7,12.3,6.2,11.6,6.2z")}function u(){return de.keepRight&&!X2?(X2=de.keepRight,X2.on("loaded",n)):!de.keepRight&&X2&&(X2=null),X2}function c(){s||(s=!0,o.style("display","block"))}function f(){s&&(s=!1,o.style("display","none"),o.selectAll(".qaItem.keepRight").remove(),a.selectAll(".qaItem.keepRight").remove())}function p(){c(),o.style("opacity",0).transition().duration(250).style("opacity",1).on("end interrupt",()=>r.call("change"))}function d(){n.cancel(),o.interrupt(),a.selectAll(".qaItem.keepRight").remove(),o.transition().duration(250).style("opacity",0).on("end interrupt",()=>{f(),r.call("change")})}function g(){if(!s||!Q2)return;let b=u(),m=t.selectedErrorID(),v=b?b.getItems(e):[],y=ur(e),_=o.selectAll(".qaItem.keepRight").data(v,k=>k.id);_.exit().remove();let w=_.enter().append("g").attr("class",k=>`qaItem ${k.service} itemId-${k.id} itemType-${k.parentIssueType}`);if(w.append("ellipse").attr("cx",.5).attr("cy",1).attr("rx",6.5).attr("ry",3).attr("class","stroke"),w.append("path").call(l,"shadow"),w.append("use").attr("class","qaItem-fill").attr("width","20px").attr("height","20px").attr("x","-8px").attr("y","-22px").attr("xlink:href","#iD-icon-bolt"),_.merge(w).sort(E).classed("selected",k=>k.id===m).attr("transform",y),a.empty())return;let A=t.getDebug("target")?"pink ":"nocolor ",I=a.selectAll(".qaItem.keepRight").data(v,k=>k.id);I.exit().remove(),I.enter().append("rect").attr("width","20px").attr("height","20px").attr("x","-8px").attr("y","-22px").merge(I).sort(E).attr("class",k=>`qaItem ${k.service} target ${A} itemId-${k.id}`).attr("transform",y);function E(k,S){return k.id===m?1:S.id===m?-1:k.severity==="error"&&S.severity!=="error"?1:S.severity==="error"&&k.severity!=="error"?-1:S.loc[1]-k.loc[1]}}function x(b){let m=u(),v=t.surface();v&&!v.empty()&&(a=v.selectAll(".data-layer.touch .layer-touch.markers")),o=b.selectAll(".layer-keepRight").data(m?[0]:[]),o.exit().remove(),o=o.enter().append("g").attr("class","layer-keepRight").style("display",Q2?"block":"none").merge(o),Q2&&(m&&~~t.map().zoom()>=i?(c(),m.loadIssues(e),g()):f())}return x.enabled=function(b){return arguments.length?(Q2=b,Q2?p():(d(),t.selectedErrorID()&&t.enter(Ge(t))),r.call("change"),this):Q2},x.supported=()=>!!u(),x}function Io(e){var t=G(null),r;function n(){Io.initialized||(Io.enabled=!1,Io.initialized=!0)}function i(){t.style("display","block")}function a(){t.transition().duration(250).style("opacity",0)}function o(){t.style("opacity",0).transition().duration(250).style("opacity",1)}function s(){t.style("display","none")}function l(p){return ur(e)(p)}function u(p,d){var g=ti(p),x=[d[0],d[1]+g],b=e(x),m=e([d[0],d[1]]);return Math.round(m[1]-b[1]).toString()}function c(){var p={loc:[r.coords.longitude,r.coords.latitude]},d=t.selectAll(".geolocations").selectAll(".geolocation").data([p]);d.exit().remove();var g=d.enter().append("g").attr("class","geolocation");g.append("circle").attr("class","geolocate-radius").attr("dx","0").attr("dy","0").attr("fill","rgb(15,128,225)").attr("fill-opacity","0.3").attr("r","0"),g.append("circle").attr("dx","0").attr("dy","0").attr("fill","rgb(15,128,225)").attr("stroke","white").attr("stroke-width","1.5").attr("r","6"),d.merge(g).attr("transform",l),t.select(".geolocate-radius").attr("r",u(r.coords.accuracy,p.loc))}function f(p){var d=Io.enabled;t=p.selectAll(".layer-geolocate").data([0]),t.exit().remove();var g=t.enter().append("g").attr("class","layer-geolocate").style("display",d?"block":"none");g.append("g").attr("class","geolocations"),t=g.merge(t),d?c():s()}return f.enabled=function(p,d){return arguments.length?(r=p,Io.enabled=d,Io.enabled?(i(),o()):a(),this):Io.enabled},n(),f}var fy=xt(_a());function R9(e,t){var r=Fi(e),n=br(),i=n.ie||n.browser.toLowerCase()==="edge"||n.browser.toLowerCase()==="firefox"&&n.version>=70,a=new fy.default,o=new fy.default,s={},l={},u=[["line","aeroway","*",12],["line","highway","motorway",12],["line","highway","trunk",12],["line","highway","primary",12],["line","highway","secondary",12],["line","highway","tertiary",12],["line","highway","*",12],["line","railway","*",12],["line","waterway","*",12],["area","aeroway","*",12],["area","amenity","*",12],["area","building","*",12],["area","historic","*",12],["area","leisure","*",12],["area","man_made","*",12],["area","natural","*",12],["area","shop","*",12],["area","tourism","*",12],["area","camp_site","*",12],["point","aeroway","*",10],["point","amenity","*",10],["point","building","*",10],["point","historic","*",10],["point","leisure","*",10],["point","man_made","*",10],["point","natural","*",10],["point","shop","*",10],["point","tourism","*",10],["point","camp_site","*",10],["line","ref","*",12],["area","ref","*",12],["point","ref","*",10],["line","name","*",12],["area","name","*",12],["point","name","*",10]];function c(A){var I=["building","landuse","natural"];return I.some(function(E){return A.id.indexOf(E)>=0})}function f(A,I){return function(E,k){return A[k][I]}}function p(A,I,E){var k=s[I];if(k||(k=s[I]={}),k[A])return k[A];if(E)return k[A]=E.getComputedTextLength(),k[A];var S=encodeURIComponent(A).match(/%[CDEFcdef]/g);return S===null?I/3*2*A.length:I/3*(2*A.length+S.length)}function d(A,I,E,k,S){var D=A.selectAll("path").filter(E).data(I,qe.key);D.exit().remove(),D.enter().append("path").style("stroke-width",f(S,"font-size")).attr("id",function(P){return"ideditor-labelpath-"+P.id}).attr("class",k).merge(D).attr("d",f(S,"lineString"))}function g(A,I,E,k,S){var D=A.selectAll("text."+k).filter(E).data(I,qe.key);D.exit().remove(),D.enter().append("text").attr("class",function(P,O){return k+" "+S[O].classes+" "+P.id}).attr("dy",i?"0.35em":null).append("textPath").attr("class","textpath"),A.selectAll("text."+k).selectAll(".textpath").filter(E).data(I,qe.key).attr("startOffset","50%").attr("xlink:href",function(P){return"#ideditor-labelpath-"+P.id}).text(d5)}function x(A,I,E,k,S){var D=A.selectAll("text."+k).filter(E).data(I,qe.key);D.exit().remove(),D.enter().append("text").attr("class",function(P,O){return k+" "+S[O].classes+" "+P.id}).merge(D).attr("x",f(S,"x")).attr("y",f(S,"y")).style("text-anchor",f(S,"textAnchor")).text(kr).each(function(P,O){p(kr(P),S[O].height,this)})}function b(A,I,E,k,S){I=I.filter(D),S=S.filter(D),x(A,I,E,k,S);function D(P,O){return S[O].hasOwnProperty("x")&&S[O].hasOwnProperty("y")}}function m(A,I,E,k,S){var D=A.selectAll("use."+k).filter(E).data(I,qe.key);D.exit().remove(),D.enter().append("use").attr("class","icon "+k).attr("width","17px").attr("height","17px").merge(D).attr("transform",f(S,"transform")).attr("xlink:href",function(P){var O=$e.match(P,t.graph()),T=O&&O.icon;return T?"#"+T:""})}function v(A,I,E){var k="debug "+E+" "+(E==="debug-skipped"?"orange":"yellow"),S=[];t.getDebug("collision")&&(S=I.all().map(function(P){return{type:"Polygon",coordinates:[[[P.minX,P.minY],[P.maxX,P.minY],[P.maxX,P.maxY],[P.minX,P.maxY],[P.minX,P.minY]]]}}));var D=A.selectAll("."+E).data(S);D.exit().remove(),D.enter().append("path").attr("class",k).merge(D).attr("d",Fi())}function y(A,I,E,k,S,D){var P=t.surface().classed("fill-wireframe"),O=hr(e.scale()),T=[],M={},R,N,U,B,$;for(R=0;R=18&&V)?(M[B.id]="point",H=20):(M[B.id]="vertex",H=0);var Z=e(B.loc),oe=10,pe={minX:Z[0]-oe,minY:Z[1]-oe-H,maxX:Z[0]+oe,maxY:Z[1]+oe};Qe(pe,B.id+"P")}$==="vertex"&&($="point");var ne=$==="area"&&$e.match(B,I),ge=ne&&!c(ne)&&ne.icon;if(!(!ge&&!kr(B)))for(U=0;UJ)){var Be=_i(ee,ye,ye+j);if(!(!Be||!Qo(Y,Be,!0))){var Ze=xi(Be);Ze&&(Be=Be.reverse());for(var bt=[],ft=(W+2)/2,Rt=0;Rt-Math.PI/2)}function wi(Dr){return"M"+Dr.join("L")}function _i(Dr,ia,e4){for(var ks=0,Fl,Tu,bc,Dl,b1=0;b1=ia&&(x1=(ia-ks)/Ml,Fl=[ji[0]+x1*(Tl[0]-ji[0]),ji[1]+x1*(Tl[1]-ji[1])],bc=b1+1),!Tu&&ks+Ml>=e4&&(x1=(e4-ks)/Ml,Tu=[ji[0]+x1*(Tl[0]-ji[0]),ji[1]+x1*(Tl[1]-ji[1])],Dl=b1+1),ks+=Ml}var t4=Dr.slice(bc,Dl);return t4.unshift(Fl),t4.push(Tu),t4}}function He(ie,j,W){var Y=r.centroid(ie.asGeoJSON(I)),ee=ie.extent(I),J=e(ee[1])[0]-e(ee[0])[0];if(isNaN(Y[0])||J<20)return;var Ee=$e.match(ie,t.graph()),be=Ee&&Ee.icon,Ne=17,Fe=2,Ke={};if(be){if(ye())return Be(Ne+Fe),Ke}else if(Be(0))return Ke;function ye(){var Ze=Y[0]-Ne/2,bt=Y[1]-Ne/2,ft={minX:Ze,minY:bt,maxX:Ze+Ne,maxY:bt+Ne};return et([ft],ie.id+"I",!0)?(Ke.transform="translate("+Ze+","+bt+")",!0):!1}function Be(Ze){if(j&&J>=j+20){var bt=Y[0],ft=Y[1]+Ze,Rt={minX:bt-j/2-Fe,minY:ft-W/2-Fe,maxX:bt+j/2+Fe,maxY:ft+W/2+Fe};if(et([Rt],ie.id,!0))return Ke.x=bt,Ke.y=ft,Ke.textAnchor="middle",Ke.height=W,!0}return!1}}function Qe(ie,j){ie.id=j;var W=l[j];W&&a.remove(W),l[j]=ie,a.insert(ie)}function et(ie,j,W){for(var Y=!1,ee=0;eeS[0]||J.maxY>S[1]){Y=!0;break}if(a.collides(J)){Y=!0;break}}return l[j]=ie,Y?W&&o.load(ie):a.load(ie),!Y}var lt=A.selectAll(".layer-osm.labels");lt.selectAll(".labels-group").data(["halo","label","debug"]).enter().append("g").attr("class",function(ie){return"labels-group "+ie});var nt=lt.selectAll(".labels-group.halo"),ht=lt.selectAll(".labels-group.label"),tr=lt.selectAll(".labels-group.debug");x(ht,le.point,k,"pointlabel",te.point),x(nt,le.point,k,"pointlabel-halo",te.point),d(lt,le.line,k,"",te.line),g(ht,le.line,k,"linelabel",te.line),g(nt,le.line,k,"linelabel-halo",te.line),b(ht,le.area,k,"arealabel",te.area),b(nt,le.area,k,"arealabel-halo",te.area),m(ht,le.area,k,"areaicon",te.area),m(nt,le.area,k,"areaicon-halo",te.area),v(tr,o,"debug-skipped"),v(tr,a,"debug-drawn"),lt.call(_)}function _(A){var I=A.selectAll(".layer-osm.labels"),E=I.selectAll(".labels-group.halo, .labels-group.label");E.selectAll(".nolabel").classed("nolabel",!1);var k=t.map().mouse(),S=t.graph(),D=t.selectedIDs(),P=[],O,T;if(k){O=20,T={minX:k[0]-O,minY:k[1]-O,maxX:k[0]+O,maxY:k[1]+O};var M=a.search(T).map(function(z){return z.id});P.push.apply(P,M)}for(var R=0;R"u",U9=!(typeof global>"u"||typeof process>"u"||!process.versions||!process.versions.node),e8=J9.Buffer,B9=J9.BigInt,t8=!!e8,$Z=e=>e;function z9(e,t=$Z){if(U9)try{return typeof vm=="function"?Promise.resolve(t(vm(e))):import(e).then(t)}catch{console.warn(`Couldn't load ${e}`)}}var Sy=J9.fetch,UZ=e=>Sy=e;if(!J9.fetch){let e=z9("http",n=>n),t=z9("https",n=>n),r=(n,{headers:i}={})=>new Promise(async(a,o)=>{let{port:s,hostname:l,pathname:u,protocol:c,search:f}=new URL(n),p={method:"GET",hostname:l,path:encodeURI(u)+f,headers:i};s!==""&&(p.port=Number(s));let d=(c==="https:"?await t:await e).request(p,g=>{if(g.statusCode===301||g.statusCode===302){let x=new URL(g.headers.location,n).toString();return r(x,{headers:i}).then(a).catch(o)}a({status:g.statusCode,arrayBuffer:()=>new Promise(x=>{let b=[];g.on("data",m=>b.push(m)),g.on("end",()=>x(Buffer.concat(b)))})})});d.on("error",o),d.end()});UZ(r)}function It(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var q9=e=>BT(e)?void 0:e,zZ=e=>e!==void 0;function BT(e){return e===void 0||(e instanceof Map?e.size===0:Object.values(e).filter(zZ).length===0)}function Dn(e){let t=new Error(e);throw delete t.stack,t}function T0(e){return(e=function(t){for(;t.endsWith("\0");)t=t.slice(0,-1);return t}(e).trim())===""?void 0:e}function hy(e){let t=function(r){let n=0;return r.ifd0.enabled&&(n+=1024),r.exif.enabled&&(n+=2048),r.makerNote&&(n+=2048),r.userComment&&(n+=1024),r.gps.enabled&&(n+=512),r.interop.enabled&&(n+=100),r.ifd1.enabled&&(n+=1024),n+2048}(e);return e.jfif.enabled&&(t+=50),e.xmp.enabled&&(t+=2e4),e.iptc.enabled&&(t+=14e3),e.icc.enabled&&(t+=6e3),t}var gy=e=>String.fromCharCode.apply(null,e),AT=typeof TextDecoder<"u"?new TextDecoder("utf-8"):void 0;function $T(e){return AT?AT.decode(e):t8?Buffer.from(e).toString("utf8"):decodeURIComponent(escape(gy(e)))}var ps=class e{static from(t,r){return t instanceof this&&t.le===r?t:new e(t,void 0,void 0,r)}constructor(t,r=0,n,i){if(typeof i=="boolean"&&(this.le=i),Array.isArray(t)&&(t=new Uint8Array(t)),t===0)this.byteOffset=0,this.byteLength=0;else if(t instanceof ArrayBuffer){n===void 0&&(n=t.byteLength-r);let a=new DataView(t,r,n);this._swapDataView(a)}else if(t instanceof Uint8Array||t instanceof DataView||t instanceof e){n===void 0&&(n=t.byteLength-r),(r+=t.byteOffset)+n>t.byteOffset+t.byteLength&&Dn("Creating view outside of available memory in ArrayBuffer");let a=new DataView(t.buffer,r,n);this._swapDataView(a)}else if(typeof t=="number"){let a=new DataView(new ArrayBuffer(t));this._swapDataView(a)}else Dn("Invalid input argument for BufferView: "+t)}_swapArrayBuffer(t){this._swapDataView(new DataView(t))}_swapBuffer(t){this._swapDataView(new DataView(t.buffer,t.byteOffset,t.byteLength))}_swapDataView(t){this.dataView=t,this.buffer=t.buffer,this.byteOffset=t.byteOffset,this.byteLength=t.byteLength}_lengthToEnd(t){return this.byteLength-t}set(t,r,n=e){return t instanceof DataView||t instanceof e?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer&&(t=new Uint8Array(t)),t instanceof Uint8Array||Dn("BufferView.set(): Invalid data argument."),this.toUint8().set(t,r),new n(this,r,t.byteLength)}subarray(t,r){return r=r||this._lengthToEnd(t),new e(this,t,r)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(t,r){return new Uint8Array(this.buffer,this.byteOffset+t,r)}getString(t=0,r=this.byteLength){return $T(this.getUint8Array(t,r))}getLatin1String(t=0,r=this.byteLength){let n=this.getUint8Array(t,r);return gy(n)}getUnicodeString(t=0,r=this.byteLength){let n=[];for(let i=0;i1e4?by(e,t,"base64"):U9&&e.includes("://")?yy(e,t,"url",P0):U9?by(e,t,"fs"):Y5?yy(e,t,"url",P0):void Dn("Invalid input argument");var r}async function yy(e,t,r,n){return hs.has(r)?by(e,t,r):n?async function(i,a){let o=await a(i);return new ps(o)}(e,n):void Dn(`Parser ${r} is not loaded`)}async function by(e,t,r){let n=new(hs.get(r))(e,t);return await n.read(),n}var P0=e=>Sy(e).then(t=>t.arrayBuffer()),O0=e=>new Promise((t,r)=>{let n=new FileReader;n.onloadend=()=>t(n.result||new ArrayBuffer),n.onerror=r,n.readAsArrayBuffer(e)}),xy=class extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}};function wn(e,t,r){let n=new xy;for(let[i,a]of r)n.set(i,a);if(Array.isArray(t))for(let i of t)e.set(i,n);else e.set(t,n);return n}function L0(e,t,r){let n,i=e.get(t);for(n of r)i.set(n[0],n[1])}var Yn=new Map,Fo=new Map,El=new Map,bl=["chunked","firstChunkSize","firstChunkSizeNode","firstChunkSizeBrowser","chunkSize","chunkLimit"],eu=["jfif","xmp","icc","iptc","ihdr"],R0=["tiff",...eu],pn=["ifd0","ifd1","exif","gps","interop"],xl=[...R0,...pn],wl=["makerNote","userComment"],tu=["translateKeys","translateValues","reviveValues","multiSegment"],_l=[...tu,"sanitize","mergeOutput","silentErrors"],V9=class{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}},D0=class extends V9{get needed(){return this.enabled||this.deps.size>0}constructor(t,r,n,i){if(super(),It(this,"enabled",!1),It(this,"skip",new Set),It(this,"pick",new Set),It(this,"deps",new Set),It(this,"translateKeys",!1),It(this,"translateValues",!1),It(this,"reviveValues",!1),this.key=t,this.enabled=r,this.parse=this.enabled,this.applyInheritables(i),this.canBeFiltered=pn.includes(t),this.canBeFiltered&&(this.dict=Yn.get(t)),n!==void 0)if(Array.isArray(n))this.parse=this.enabled=!0,this.canBeFiltered&&n.length>0&&this.translateTagSet(n,this.pick);else if(typeof n=="object"){if(this.enabled=!0,this.parse=n.parse!==!1,this.canBeFiltered){let{pick:a,skip:o}=n;a&&a.length>0&&this.translateTagSet(a,this.pick),o&&o.length>0&&this.translateTagSet(o,this.skip)}this.applyInheritables(n)}else n===!0||n===!1?this.parse=this.enabled=n:Dn(`Invalid options argument: ${n}`)}applyInheritables(t){let r,n;for(r of tu)n=t[r],n!==void 0&&(this[r]=n)}translateTagSet(t,r){if(this.dict){let n,i,{tagKeys:a,tagValues:o}=this.dict;for(n of t)typeof n=="string"?(i=o.indexOf(n),i===-1&&(i=a.indexOf(Number(n))),i!==-1&&r.add(Number(a[i]))):r.add(n)}else for(let n of t)r.add(n)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,G9(this.pick,this.deps)):this.enabled&&this.pick.size>0&&G9(this.pick,this.deps)}},$i={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},CT=new Map,p1=class extends V9{static useCached(t){let r=CT.get(t);return r!==void 0||(r=new this(t),CT.set(t,r)),r}constructor(t){super(),t===!0?this.setupFromTrue():t===void 0?this.setupFromUndefined():Array.isArray(t)?this.setupFromArray(t):typeof t=="object"?this.setupFromObject(t):Dn(`Invalid options argument ${t}`),this.firstChunkSize===void 0&&(this.firstChunkSize=Y5?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let t;for(t of bl)this[t]=$i[t];for(t of _l)this[t]=$i[t];for(t of wl)this[t]=$i[t];for(t of xl)this[t]=new D0(t,$i[t],void 0,this)}setupFromTrue(){let t;for(t of bl)this[t]=$i[t];for(t of _l)this[t]=$i[t];for(t of wl)this[t]=!0;for(t of xl)this[t]=new D0(t,!0,void 0,this)}setupFromArray(t){let r;for(r of bl)this[r]=$i[r];for(r of _l)this[r]=$i[r];for(r of wl)this[r]=$i[r];for(r of xl)this[r]=new D0(r,!1,void 0,this);this.setupGlobalFilters(t,void 0,pn)}setupFromObject(t){let r;for(r of(pn.ifd0=pn.ifd0||pn.image,pn.ifd1=pn.ifd1||pn.thumbnail,Object.assign(this,t),bl))this[r]=py(t[r],$i[r]);for(r of _l)this[r]=py(t[r],$i[r]);for(r of wl)this[r]=py(t[r],$i[r]);for(r of R0)this[r]=new D0(r,$i[r],t[r],this);for(r of pn)this[r]=new D0(r,$i[r],t[r],this.tiff);this.setupGlobalFilters(t.pick,t.skip,pn,xl),t.tiff===!0?this.batchEnableWithBool(pn,!0):t.tiff===!1?this.batchEnableWithUserValue(pn,t):Array.isArray(t.tiff)?this.setupGlobalFilters(t.tiff,void 0,pn):typeof t.tiff=="object"&&this.setupGlobalFilters(t.tiff.pick,t.tiff.skip,pn)}batchEnableWithBool(t,r){for(let n of t)this[n].enabled=r}batchEnableWithUserValue(t,r){for(let n of t){let i=r[n];this[n].enabled=i!==!1&&i!==void 0}}setupGlobalFilters(t,r,n,i=n){if(t&&t.length){for(let o of i)this[o].enabled=!1;let a=IT(t,n);for(let[o,s]of a)G9(this[o].pick,s),this[o].enabled=!0}else if(r&&r.length){let a=IT(r,n);for(let[o,s]of a)G9(this[o].skip,s)}}filterNestedSegmentTags(){let{ifd0:t,exif:r,xmp:n,iptc:i,icc:a}=this;this.makerNote?r.deps.add(37500):r.skip.add(37500),this.userComment?r.deps.add(37510):r.skip.add(37510),n.enabled||t.skip.add(700),i.enabled||t.skip.add(33723),a.enabled||t.skip.add(34675)}traverseTiffDependencyTree(){let{ifd0:t,exif:r,gps:n,interop:i}=this;i.needed&&(r.deps.add(40965),t.deps.add(40965)),r.needed&&t.deps.add(34665),n.needed&&t.deps.add(34853),this.tiff.enabled=pn.some(a=>this[a].enabled===!0)||this.makerNote||this.userComment;for(let a of pn)this[a].finalizeFilters()}get onlyTiff(){return!eu.map(t=>this[t].enabled).some(t=>t===!0)&&this.tiff.enabled}checkLoadedPlugins(){for(let t of R0)this[t].enabled&&!Fn.has(t)&&vy("segment parser",t)}};function IT(e,t){let r,n,i,a,o=[];for(i of t){for(a of(r=Yn.get(i),n=[],r))(e.includes(a[0])||e.includes(a[1]))&&n.push(a[0]);n.length&&o.push([i,n])}return o}function py(e,t){return e!==void 0?e:t!==void 0?t:void 0}function G9(e,t){for(let r of t)e.add(r)}It(p1,"default",$i);var ms=class{constructor(t){It(this,"parsers",{}),It(this,"output",{}),It(this,"errors",[]),It(this,"pushToErrors",r=>this.errors.push(r)),this.options=p1.useCached(t)}async read(t){this.file=await qZ(t,this.options)}setup(){if(this.fileParser)return;let{file:t}=this,r=t.getUint16(0);for(let[n,i]of ds)if(i.canHandle(t,r))return this.fileParser=new i(this.options,this.file,this.parsers),t[n]=!0;this.file.close&&this.file.close(),Dn("Unknown file format")}async parse(){let{output:t,errors:r}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),r.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&r.length>0&&(t.errors=r),q9(t)}async executeParsers(){let{output:t}=this;await this.fileParser.parse();let r=Object.values(this.parsers).map(async n=>{let i=await n.parse();n.assignToOutput(t,i)});this.options.silentErrors&&(r=r.map(n=>n.catch(this.pushToErrors))),await Promise.all(r)}async extractThumbnail(){this.setup();let{options:t,file:r}=this,n=Fn.get("tiff",t);var i;if(r.tiff?i={start:0,type:"tiff"}:r.jpeg&&(i=await this.fileParser.getOrFindSegment("tiff")),i===void 0)return;let a=await this.fileParser.ensureSegmentChunk(i),o=this.parsers.tiff=new n(a,t,r),s=await o.extractThumbnail();return r.close&&r.close(),s}};async function r8(e,t){let r=new ms(t);return await r.read(e),r.parse()}var VZ=Object.freeze({__proto__:null,parse:r8,Exifr:ms,fileParsers:ds,segmentParsers:Fn,fileReaders:hs,tagKeys:Yn,tagValues:Fo,tagRevivers:El,createDictionary:wn,extendDictionary:L0,fetchUrlAsArrayBuffer:P0,readBlobAsArrayBuffer:O0,chunkedProps:bl,otherSegments:eu,segments:R0,tiffBlocks:pn,segmentsAndBlocks:xl,tiffExtractables:wl,inheritables:tu,allFormatters:_l,Options:p1}),Z2=class{constructor(t,r,n){It(this,"errors",[]),It(this,"ensureSegmentChunk",async i=>{let a=i.start,o=i.size||65536;if(this.file.chunked)if(this.file.available(a,o))i.chunk=this.file.subarray(a,o);else try{i.chunk=await this.file.readChunk(a,o)}catch(s){Dn(`Couldn't read segment: ${JSON.stringify(i)}. ${s.message}`)}else this.file.byteLength>a+o?i.chunk=this.file.subarray(a,o):i.size===void 0?i.chunk=this.file.subarray(a):Dn("Segment unreachable: "+JSON.stringify(i));return i.chunk}),this.extendOptions&&this.extendOptions(t),this.options=t,this.file=r,this.parsers=n}injectSegment(t,r){this.options[t].enabled&&this.createParser(t,r)}createParser(t,r){let n=new(Fn.get(t))(r,this.options,this.file);return this.parsers[t]=n}createParsers(t){for(let r of t){let{type:n,chunk:i}=r,a=this.options[n];if(a&&a.enabled){let o=this.parsers[n];o&&o.append||o||this.createParser(n,i)}}}async readSegments(t){let r=t.map(this.ensureSegmentChunk);await Promise.all(r)}},ka=class{static findPosition(t,r){let n=t.getUint16(r+2)+2,i=typeof this.headerLength=="function"?this.headerLength(t,r,n):this.headerLength,a=r+i,o=n-i;return{offset:r,length:n,headerLength:i,start:a,size:o,end:a+o}}static parse(t,r={}){return new this(t,new p1({[this.type]:r}),t).parse()}normalizeInput(t){return t instanceof ps?t:new ps(t)}constructor(t,r={},n){It(this,"errors",[]),It(this,"raw",new Map),It(this,"handleError",i=>{if(!this.options.silentErrors)throw i;this.errors.push(i.message)}),this.chunk=this.normalizeInput(t),this.file=n,this.type=this.constructor.type,this.globalOptions=this.options=r,this.localOptions=r[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(t,r){let n=El.get(r),i=Fo.get(r),a=Yn.get(r),o=this.options[r],s=o.reviveValues&&!!n,l=o.translateValues&&!!i,u=o.translateKeys&&!!a,c={};for(let[f,p]of t)s&&n.has(f)?p=n.get(f)(p):l&&i.has(f)&&(p=this.translateValue(p,i.get(f))),u&&a.has(f)&&(f=a.get(f)||f),c[f]=p;return c}translateValue(t,r){return r[t]||r.DEFAULT||t}assignToOutput(t,r){this.assignObjectToOutput(t,this.constructor.type,r)}assignObjectToOutput(t,r,n){if(this.globalOptions.mergeOutput)return Object.assign(t,n);t[r]?Object.assign(t[r],n):t[r]=n}};It(ka,"headerLength",4),It(ka,"type",void 0),It(ka,"multiSegment",!1),It(ka,"canHandle",()=>!1);function GZ(e){return e===192||e===194||e===196||e===219||e===221||e===218||e===254}function jZ(e){return e>=224&&e<=239}function HZ(e,t,r){for(let[n,i]of Fn)if(i.canHandle(e,t,r))return n}var j9=class extends Z2{constructor(...t){super(...t),It(this,"appSegments",[]),It(this,"jpegSegments",[]),It(this,"unknownSegments",[])}static canHandle(t,r){return r===65496}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(t){t===!0?(this.findAll=!0,this.wanted=new Set(Fn.keyList())):(t=t===void 0?Fn.keyList().filter(r=>this.options[r].enabled):t.filter(r=>this.options[r].enabled&&Fn.has(r)),this.findAll=!1,this.remaining=new Set(t),this.wanted=new Set(t)),this.unfinishedMultiSegment=!1}async findAppSegments(t=0,r){this.setupSegmentFinderArgs(r);let{file:n,findAll:i,wanted:a,remaining:o}=this;if(!i&&this.file.chunked&&(i=Array.from(a).some(s=>{let l=Fn.get(s),u=this.options[s];return l.multiSegment&&u.multiSegment}),i&&await this.file.readWhole()),t=this.findAppSegmentsInRange(t,n.byteLength),!this.options.onlyTiff&&n.chunked){let s=!1;for(;o.size>0&&!s&&(n.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:l}=n,u=this.appSegments.some(c=>!this.file.available(c.offset||c.start,c.length||c.size));if(s=t>l&&!u?!await n.readNextChunk(t):!await n.readNextChunk(l),(t=this.findAppSegmentsInRange(t,n.byteLength))===void 0)return}}}findAppSegmentsInRange(t,r){r-=2;let n,i,a,o,s,l,{file:u,findAll:c,wanted:f,remaining:p,options:d}=this;for(;tr.multiSegment))return;let t=function(r,n){let i,a,o,s=new Map;for(let l=0;l{let i=Fn.get(r,this.options);return i.handleMultiSegments?{type:r,chunk:i.handleMultiSegments(n)}:n[0]})}getSegment(t){return this.appSegments.find(r=>r.type===t)}async getOrFindSegment(t){let r=this.getSegment(t);return r===void 0&&(await this.findAppSegments(0,[t]),r=this.getSegment(t)),r}};It(j9,"type","jpeg"),ds.set("jpeg",j9);var WZ=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4],wy=class extends ka{parseHeader(){var t=this.chunk.getUint16();t===18761?this.le=!0:t===19789&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(t,r,n=new Map){let{pick:i,skip:a}=this.options[r];i=new Set(i);let o=i.size>0,s=a.size===0,l=this.chunk.getUint16(t);t+=2;for(let u=0;u13)&&Dn(`Invalid TIFF value type. block: ${n.toUpperCase()}, tag: ${r.toString(16)}, type: ${a}, offset ${t}`),t>i.byteLength&&Dn(`Invalid TIFF value offset. block: ${n.toUpperCase()}, tag: ${r.toString(16)}, type: ${a}, offset ${t} is outside of chunk size ${i.byteLength}`),a===1)return i.getUint8Array(t,o);if(a===2)return T0(i.getString(t,o));if(a===7)return i.getUint8Array(t,o);if(o===1)return this.parseTagValue(a,t);{let l=new(function(c){switch(c){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(a))(o),u=s;for(let c=0;ct.byteLength&&Dn(`IFD0 offset points to outside of file. +this.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${t.byteLength}`),t.tiff&&await t.ensureChunk(this.ifd0Offset,hy(this.options));let r=this.parseBlock(this.ifd0Offset,"ifd0");return r.size!==0?(this.exifOffset=r.get(34665),this.interopOffset=r.get(40965),this.gpsOffset=r.get(34853),this.xmp=r.get(700),this.iptc=r.get(33723),this.icc=r.get(34675),this.options.sanitize&&(r.delete(34665),r.delete(40965),r.delete(34853),r.delete(700),r.delete(33723),r.delete(34675)),r):void 0}async parseExifBlock(){if(this.exif||(this.ifd0||await this.parseIfd0Block(),this.exifOffset===void 0))return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,hy(this.options));let t=this.parseBlock(this.exifOffset,"exif");return this.interopOffset||(this.interopOffset=t.get(40965)),this.makerNote=t.get(37500),this.userComment=t.get(37510),this.options.sanitize&&(t.delete(40965),t.delete(37500),t.delete(37510)),this.unpack(t,41728),this.unpack(t,41729),t}unpack(t,r){let n=t.get(r);n&&n.length===1&&t.set(r,n[0])}async parseGpsBlock(){if(this.gps||(this.ifd0||await this.parseIfd0Block(),this.gpsOffset===void 0))return;let t=this.parseBlock(this.gpsOffset,"gps");return t&&t.has(2)&&t.has(4)&&(t.set("latitude",FT(...t.get(2),t.get(1))),t.set("longitude",FT(...t.get(4),t.get(3)))),t}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),this.interopOffset!==void 0||this.exif||await this.parseExifBlock(),this.interopOffset!==void 0))return this.parseBlock(this.interopOffset,"interop")}async parseThumbnailBlock(t=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||t))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,"ifd1"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),this.ifd1===void 0)return;let t=this.ifd1.get(513),r=this.ifd1.get(514);return this.chunk.getUint8Array(t,r)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let t,r,n,i={};for(r of pn)if(t=this[r],!BT(t))if(n=this.canTranslate?this.translateBlock(t,r):Object.fromEntries(t),this.options.mergeOutput){if(r==="ifd1")continue;Object.assign(i,n)}else i[r]=n;return this.makerNote&&(i.makerNote=this.makerNote),this.userComment&&(i.userComment=this.userComment),i}assignToOutput(t,r){if(this.globalOptions.mergeOutput)Object.assign(t,r);else for(let[n,i]of Object.entries(r))this.assignObjectToOutput(t,n,i)}};function FT(e,t,r,n){var i=e+t/60+r/3600;return n!=="S"&&n!=="W"||(i*=-1),i}It(H5,"type","tiff"),It(H5,"headerLength",10),Fn.set("tiff",H5);var QZ=Object.freeze({__proto__:null,default:VZ,Exifr:ms,fileParsers:ds,segmentParsers:Fn,fileReaders:hs,tagKeys:Yn,tagValues:Fo,tagRevivers:El,createDictionary:wn,extendDictionary:L0,fetchUrlAsArrayBuffer:P0,readBlobAsArrayBuffer:O0,chunkedProps:bl,otherSegments:eu,segments:R0,tiffBlocks:pn,segmentsAndBlocks:xl,tiffExtractables:wl,inheritables:tu,allFormatters:_l,Options:p1,parse:r8}),Cy={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},Iy=Object.assign({},Cy,{firstChunkSize:4e4,gps:[1,2,3,4]});async function UT(e){let t=new ms(Iy);await t.read(e);let r=await t.parse();if(r&&r.gps){let{latitude:n,longitude:i}=r.gps;return{latitude:n,longitude:i}}}var Fy=Object.assign({},Cy,{tiff:!1,ifd1:!0,mergeOutput:!1});async function zT(e){let t=new ms(Fy);await t.read(e);let r=await t.extractThumbnail();return r&&t8?e8.from(r):r}async function qT(e){let t=await this.thumbnail(e);if(t!==void 0){let r=new Blob([t]);return URL.createObjectURL(r)}}var Dy=Object.assign({},Cy,{firstChunkSize:4e4,ifd0:[274]});async function Ty(e){let t=new ms(Dy);await t.read(e);let r=await t.parse();if(r&&r.ifd0)return r.ifd0[274]}var My=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}}),M0=!0,N0=!0;if(typeof navigator=="object"){let e=navigator.userAgent;if(e.includes("iPad")||e.includes("iPhone")){let t=e.match(/OS (\d+)_(\d+)/);if(t){let[,r,n]=t;M0=Number(r)+.1*Number(n)<13.4,N0=!1}}else if(e.includes("OS X 10")){let[,t]=e.match(/OS X 10[_.](\d+)/);M0=N0=Number(t)<15}if(e.includes("Chrome/")){let[,t]=e.match(/Chrome\/(\d+)/);M0=N0=Number(t)<81}else if(e.includes("Firefox/")){let[,t]=e.match(/Firefox\/(\d+)/);M0=N0=Number(t)<77}}async function VT(e){let t=await Ty(e);return Object.assign({canvas:M0,css:N0},My[t])}var _y=class extends ps{constructor(...t){super(...t),It(this,"ranges",new Ey),this.byteLength!==0&&this.ranges.add(0,this.byteLength)}_tryExtend(t,r,n){if(t===0&&this.byteLength===0&&n){let i=new DataView(n.buffer||n,n.byteOffset,n.byteLength);this._swapDataView(i)}else{let i=t+r;if(i>this.byteLength){let{dataView:a}=this._extend(i);this._swapDataView(a)}}}_extend(t){let r;r=t8?e8.allocUnsafe(t):new Uint8Array(t);let n=new DataView(r.buffer,r.byteOffset,r.byteLength);return r.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:r,dataView:n}}subarray(t,r,n=!1){return r=r||this._lengthToEnd(t),n&&this._tryExtend(t,r),this.ranges.add(t,r),super.subarray(t,r)}set(t,r,n=!1){n&&this._tryExtend(r,t.byteLength,t);let i=super.set(t,r);return this.ranges.add(r,i.byteLength),i}async ensureChunk(t,r){this.chunked&&(this.ranges.available(t,r)||await this.readChunk(t,r))}available(t,r){return this.ranges.available(t,r)}},Ey=class{constructor(){It(this,"list",[])}get length(){return this.list.length}add(t,r,n=0){let i=t+r,a=this.list.filter(o=>DT(t,o.offset,i)||DT(t,o.end,i));if(a.length>0){t=Math.min(t,...a.map(s=>s.offset)),i=Math.max(i,...a.map(s=>s.end)),r=i-t;let o=a.shift();o.offset=t,o.length=r,o.end=i,this.list=this.list.filter(s=>!a.includes(s))}else this.list.push({offset:t,length:r,end:i})}available(t,r){let n=t+r;return this.list.some(i=>i.offset<=t&&n<=i.end)}};function DT(e,t,r){return e<=t&&t<=r}var J2=class extends _y{constructor(t,r){super(0),It(this,"chunksRead",0),this.input=t,this.options=r}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(t=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let r=this.options.chunkSize,n=await this.readChunk(t,r);return!!n&&n.byteLength===r}async readChunk(t,r){if(this.chunksRead++,(r=this.safeWrapAddress(t,r))!==0)return this._readChunk(t,r)}safeWrapAddress(t,r){return this.size!==void 0&&t+r>this.size?Math.max(0,this.size-t):r}get nextChunkOffset(){if(this.ranges.list.length!==0)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksReadn.kind===r)}parseBoxHead(t){let r=this.file.getUint32(t),n=this.file.getString(t+4,4),i=t+8;return r===1&&(r=this.file.getUint64(t+8),i+=8),{offset:t,length:r,kind:n,start:i}}parseBoxFullHead(t){if(t.version!==void 0)return;let r=this.file.getUint32(t.start);t.version=r>>24,t.start+=4}},H9=class extends ky{static canHandle(t,r){if(r!==0)return!1;let n=t.getUint16(2);if(n>50)return!1;let i=16,a=[];for(;i=2&&(i=r.version===3?4:2,a=this.file.getString(n+i+2,4),a==="Exif"))return this.file.getUintBytes(n,i);o+=r.length}}get8bits(t){let r=this.file.getUint8(t);return[r>>4,15&r]}findExtentInIloc(t,r){this.parseBoxFullHead(t);let n=t.start,[i,a]=this.get8bits(n++),[o,s]=this.get8bits(n++),l=t.version===2?4:2,u=t.version===1||t.version===2?2:0,c=s+i+a,f=t.version===2?4:2,p=this.file.getUintBytes(n,f);for(n+=f;p--;){let d=this.file.getUintBytes(n,l);n+=l+u+2+o;let g=this.file.getUint16(n);if(n+=2,d===r)return g>1&&console.warn(`ILOC box has more than one extent but we're only processing one +Please create an issue at https://github.com/MikeKovarik/exifr with this file`),[this.file.getUintBytes(n+s,i),this.file.getUintBytes(n+s+i,a)];n+=g*c}}},W9=class extends H9{};It(W9,"type","heic");var Q9=class extends H9{};It(Q9,"type","avif"),ds.set("heic",W9),ds.set("avif",Q9),wn(Yn,["ifd0","ifd1"],[[256,"ImageWidth"],[257,"ImageHeight"],[258,"BitsPerSample"],[259,"Compression"],[262,"PhotometricInterpretation"],[270,"ImageDescription"],[271,"Make"],[272,"Model"],[273,"StripOffsets"],[274,"Orientation"],[277,"SamplesPerPixel"],[278,"RowsPerStrip"],[279,"StripByteCounts"],[282,"XResolution"],[283,"YResolution"],[284,"PlanarConfiguration"],[296,"ResolutionUnit"],[301,"TransferFunction"],[305,"Software"],[306,"ModifyDate"],[315,"Artist"],[316,"HostComputer"],[317,"Predictor"],[318,"WhitePoint"],[319,"PrimaryChromaticities"],[513,"ThumbnailOffset"],[514,"ThumbnailLength"],[529,"YCbCrCoefficients"],[530,"YCbCrSubSampling"],[531,"YCbCrPositioning"],[532,"ReferenceBlackWhite"],[700,"ApplicationNotes"],[33432,"Copyright"],[33723,"IPTC"],[34665,"ExifIFD"],[34675,"ICC"],[34853,"GpsIFD"],[330,"SubIFD"],[40965,"InteropIFD"],[40091,"XPTitle"],[40092,"XPComment"],[40093,"XPAuthor"],[40094,"XPKeywords"],[40095,"XPSubject"]]),wn(Yn,"exif",[[33434,"ExposureTime"],[33437,"FNumber"],[34850,"ExposureProgram"],[34852,"SpectralSensitivity"],[34855,"ISO"],[34858,"TimeZoneOffset"],[34859,"SelfTimerMode"],[34864,"SensitivityType"],[34865,"StandardOutputSensitivity"],[34866,"RecommendedExposureIndex"],[34867,"ISOSpeed"],[34868,"ISOSpeedLatitudeyyy"],[34869,"ISOSpeedLatitudezzz"],[36864,"ExifVersion"],[36867,"DateTimeOriginal"],[36868,"CreateDate"],[36873,"GooglePlusUploadCode"],[36880,"OffsetTime"],[36881,"OffsetTimeOriginal"],[36882,"OffsetTimeDigitized"],[37121,"ComponentsConfiguration"],[37122,"CompressedBitsPerPixel"],[37377,"ShutterSpeedValue"],[37378,"ApertureValue"],[37379,"BrightnessValue"],[37380,"ExposureCompensation"],[37381,"MaxApertureValue"],[37382,"SubjectDistance"],[37383,"MeteringMode"],[37384,"LightSource"],[37385,"Flash"],[37386,"FocalLength"],[37393,"ImageNumber"],[37394,"SecurityClassification"],[37395,"ImageHistory"],[37396,"SubjectArea"],[37500,"MakerNote"],[37510,"UserComment"],[37520,"SubSecTime"],[37521,"SubSecTimeOriginal"],[37522,"SubSecTimeDigitized"],[37888,"AmbientTemperature"],[37889,"Humidity"],[37890,"Pressure"],[37891,"WaterDepth"],[37892,"Acceleration"],[37893,"CameraElevationAngle"],[40960,"FlashpixVersion"],[40961,"ColorSpace"],[40962,"ExifImageWidth"],[40963,"ExifImageHeight"],[40964,"RelatedSoundFile"],[41483,"FlashEnergy"],[41486,"FocalPlaneXResolution"],[41487,"FocalPlaneYResolution"],[41488,"FocalPlaneResolutionUnit"],[41492,"SubjectLocation"],[41493,"ExposureIndex"],[41495,"SensingMethod"],[41728,"FileSource"],[41729,"SceneType"],[41730,"CFAPattern"],[41985,"CustomRendered"],[41986,"ExposureMode"],[41987,"WhiteBalance"],[41988,"DigitalZoomRatio"],[41989,"FocalLengthIn35mmFormat"],[41990,"SceneCaptureType"],[41991,"GainControl"],[41992,"Contrast"],[41993,"Saturation"],[41994,"Sharpness"],[41996,"SubjectDistanceRange"],[42016,"ImageUniqueID"],[42032,"OwnerName"],[42033,"SerialNumber"],[42034,"LensInfo"],[42035,"LensMake"],[42036,"LensModel"],[42037,"LensSerialNumber"],[42080,"CompositeImage"],[42081,"CompositeImageCount"],[42082,"CompositeImageExposureTimes"],[42240,"Gamma"],[59932,"Padding"],[59933,"OffsetSchema"],[65e3,"OwnerName"],[65001,"SerialNumber"],[65002,"Lens"],[65100,"RawFile"],[65101,"Converter"],[65102,"WhiteBalance"],[65105,"Exposure"],[65106,"Shadows"],[65107,"Brightness"],[65108,"Contrast"],[65109,"Saturation"],[65110,"Sharpness"],[65111,"Smoothness"],[65112,"MoireFilter"],[40965,"InteropIFD"]]),wn(Yn,"gps",[[0,"GPSVersionID"],[1,"GPSLatitudeRef"],[2,"GPSLatitude"],[3,"GPSLongitudeRef"],[4,"GPSLongitude"],[5,"GPSAltitudeRef"],[6,"GPSAltitude"],[7,"GPSTimeStamp"],[8,"GPSSatellites"],[9,"GPSStatus"],[10,"GPSMeasureMode"],[11,"GPSDOP"],[12,"GPSSpeedRef"],[13,"GPSSpeed"],[14,"GPSTrackRef"],[15,"GPSTrack"],[16,"GPSImgDirectionRef"],[17,"GPSImgDirection"],[18,"GPSMapDatum"],[19,"GPSDestLatitudeRef"],[20,"GPSDestLatitude"],[21,"GPSDestLongitudeRef"],[22,"GPSDestLongitude"],[23,"GPSDestBearingRef"],[24,"GPSDestBearing"],[25,"GPSDestDistanceRef"],[26,"GPSDestDistance"],[27,"GPSProcessingMethod"],[28,"GPSAreaInformation"],[29,"GPSDateStamp"],[30,"GPSDifferential"],[31,"GPSHPositioningError"]]),wn(Fo,["ifd0","ifd1"],[[274,{1:"Horizontal (normal)",2:"Mirror horizontal",3:"Rotate 180",4:"Mirror vertical",5:"Mirror horizontal and rotate 270 CW",6:"Rotate 90 CW",7:"Mirror horizontal and rotate 90 CW",8:"Rotate 270 CW"}],[296,{1:"None",2:"inches",3:"cm"}]]);var W5=wn(Fo,"exif",[[34850,{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"}],[37121,{0:"-",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}],[37383,{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"}],[37384,{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"}],[37385,{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"}],[41495,{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"}],[41728,{1:"Film Scanner",2:"Reflection Print Scanner",3:"Digital Camera"}],[41729,{1:"Directly photographed"}],[41985,{0:"Normal",1:"Custom",2:"HDR (no original saved)",3:"HDR (original saved)",4:"Original (for HDR)",6:"Panorama",7:"Portrait HDR",8:"Portrait"}],[41986,{0:"Auto",1:"Manual",2:"Auto bracket"}],[41987,{0:"Auto",1:"Manual"}],[41990,{0:"Standard",1:"Landscape",2:"Portrait",3:"Night",4:"Other"}],[41991,{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"}],[41996,{0:"Unknown",1:"Macro",2:"Close",3:"Distant"}],[42080,{0:"Unknown",1:"Not a Composite Image",2:"General Composite Image",3:"Composite Image Captured While Shooting"}]]),TT={1:"No absolute unit of measurement",2:"Inch",3:"Centimeter"};W5.set(37392,TT),W5.set(41488,TT);var dy={0:"Normal",1:"Low",2:"High"};function MT(e){return typeof e=="object"&&e.length!==void 0?e[0]:e}function NT(e){let t=Array.from(e).slice(1);return t[1]>15&&(t=t.map(r=>String.fromCharCode(r))),t[2]!=="0"&&t[2]!==0||t.pop(),t.join(".")}function my(e){if(typeof e=="string"){var[t,r,n,i,a,o]=e.trim().split(/[-: ]/g).map(Number),s=new Date(t,r-1,n);return Number.isNaN(i)||Number.isNaN(a)||Number.isNaN(o)||(s.setHours(i),s.setMinutes(a),s.setSeconds(o)),Number.isNaN(+s)?e:s}}function j5(e){if(typeof e=="string")return e;let t=[];if(e[1]===0&&e[e.length-1]===0)for(let r=0;rArray.from(e).join(".")],[7,e=>Array.from(e).join(":")]]);var Q5=class extends ka{static canHandle(t,r){return t.getUint8(r+1)===225&&t.getUint32(r+4)===1752462448&&t.getString(r+4,20)==="http://ns.adobe.com/"}static headerLength(t,r){return t.getString(r+4,34)==="http://ns.adobe.com/xmp/extension/"?79:33}static findPosition(t,r){let n=super.findPosition(t,r);return n.multiSegment=n.extended=n.headerLength===79,n.multiSegment?(n.chunkCount=t.getUint8(r+72),n.chunkNumber=t.getUint8(r+76),t.getUint8(r+77)!==0&&n.chunkNumber++):(n.chunkCount=1/0,n.chunkNumber=-1),n}static handleMultiSegments(t){return t.map(r=>r.chunk.getString()).join("")}normalizeInput(t){return typeof t=="string"?t:ps.from(t).getString()}parse(t=this.chunk){if(!this.localOptions.parse)return t;t=function(a){let o={},s={};for(let l of WT)o[l]=[],s[l]=0;return a.replace(JZ,(l,u,c)=>{if(u==="<"){let f=++s[c];return o[c].push(f),`${l}#${f}`}return`${l}#${o[c].pop()}`})}(t);let r=X9.findAll(t,"rdf","Description");r.length===0&&r.push(new X9("rdf","Description",void 0,t));let n,i={};for(let a of r)for(let o of a.properties)n=ZZ(o.ns,i),GT(o,n);return function(a){let o;for(let s in a)o=a[s]=q9(a[s]),o===void 0&&delete a[s];return q9(a)}(i)}assignToOutput(t,r){if(this.localOptions.parse)for(let[n,i]of Object.entries(r))switch(n){case"tiff":this.assignObjectToOutput(t,"ifd0",i);break;case"exif":this.assignObjectToOutput(t,"exif",i);break;case"xmlns":break;default:this.assignObjectToOutput(t,n,i)}else t.xmp=r}};It(Q5,"type","xmp"),It(Q5,"multiSegment",!0),Fn.set("xmp",Q5);var Ay=class e{static findAll(t){return jT(t,/([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)=("[^"]*"|'[^']*')/gm).map(e.unpackMatch)}static unpackMatch(t){let r=t[1],n=t[2],i=t[3].slice(1,-1);return i=HT(i),new e(r,n,i)}constructor(t,r,n){this.ns=t,this.name=r,this.value=n}serialize(){return this.value}},X9=class e{static findAll(t,r,n){if(r!==void 0||n!==void 0){r=r||"[\\w\\d-]+",n=n||"[\\w\\d-]+";var i=new RegExp(`<(${r}):(${n})(#\\d+)?((\\s+?[\\w\\d-:]+=("[^"]*"|'[^']*'))*\\s*)(\\/>|>([\\s\\S]*?)<\\/\\1:\\2\\3>)`,"gm")}else i=/<([\w\d-]+):([\w\d-]+)(#\d+)?((\s+?[\w\d-:]+=("[^"]*"|'[^']*'))*\s*)(\/>|>([\s\S]*?)<\/\1:\2\3>)/gm;return jT(t,i).map(e.unpackMatch)}static unpackMatch(t){let r=t[1],n=t[2],i=t[4],a=t[8];return new e(r,n,i,a)}constructor(t,r,n,i){this.ns=t,this.name=r,this.attrString=n,this.innerXml=i,this.attrs=Ay.findAll(n),this.children=e.findAll(i),this.value=this.children.length===0?HT(i):void 0,this.properties=[...this.attrs,...this.children]}get isPrimitive(){return this.value!==void 0&&this.attrs.length===0&&this.children.length===0}get isListContainer(){return this.children.length===1&&this.children[0].isList}get isList(){let{ns:t,name:r}=this;return t==="rdf"&&(r==="Seq"||r==="Bag"||r==="Alt")}get isListItem(){return this.ns==="rdf"&&this.name==="li"}serialize(){if(this.properties.length===0&&this.value===void 0)return;if(this.isPrimitive)return this.value;if(this.isListContainer)return this.children[0].serialize();if(this.isList)return KZ(this.children.map(YZ));if(this.isListItem&&this.children.length===1&&this.attrs.length===0)return this.children[0].serialize();let t={};for(let r of this.properties)GT(r,t);return this.value!==void 0&&(t.value=this.value),q9(t)}};function GT(e,t){let r=e.serialize();r!==void 0&&(t[e.name]=r)}var YZ=e=>e.serialize(),KZ=e=>e.length===1?e[0]:e,ZZ=(e,t)=>t[e]?t[e]:t[e]={};function jT(e,t){let r,n=[];if(!e)return n;for(;(r=t.exec(e))!==null;)n.push(r);return n}function HT(e){if(function(n){return n==null||n==="null"||n==="undefined"||n===""||n.trim()===""}(e))return;let t=Number(e);if(!Number.isNaN(t))return t;let r=e.toLowerCase();return r==="true"||r!=="false"&&e.trim()}var WT=["rdf:li","rdf:Seq","rdf:Bag","rdf:Alt","rdf:Description"],JZ=new RegExp(`(<|\\/)(${WT.join("|")})`,"g"),eJ=Object.freeze({__proto__:null,default:XZ,Exifr:ms,fileParsers:ds,segmentParsers:Fn,fileReaders:hs,tagKeys:Yn,tagValues:Fo,tagRevivers:El,createDictionary:wn,extendDictionary:L0,fetchUrlAsArrayBuffer:P0,readBlobAsArrayBuffer:O0,chunkedProps:bl,otherSegments:eu,segments:R0,tiffBlocks:pn,segmentsAndBlocks:xl,tiffExtractables:wl,inheritables:tu,allFormatters:_l,Options:p1,parse:r8,gpsOnlyOptions:Iy,gps:UT,thumbnailOnlyOptions:Fy,thumbnail:zT,thumbnailUrl:qT,orientationOnlyOptions:Dy,orientation:Ty,rotations:My,get rotateCanvas(){return M0},get rotateCss(){return N0},rotation:VT});var OT=z9("fs",e=>e.promises);hs.set("fs",class extends J2{async readWhole(){this.chunked=!1,this.fs=await OT;let e=await this.fs.readFile(this.input);this._swapBuffer(e)}async readChunked(){this.chunked=!0,this.fs=await OT,await this.open(),await this.readChunk(0,this.options.firstChunkSize)}async open(){this.fh===void 0&&(this.fh=await this.fs.open(this.input,"r"),this.size=(await this.fh.stat(this.input)).size)}async _readChunk(e,t){this.fh===void 0&&await this.open(),e+t>this.size&&(t=this.size-e);var r=this.subarray(e,t,!0);return await this.fh.read(r.dataView,0,t,e),r}async close(){if(this.fh){let e=this.fh;this.fh=void 0,await e.close()}}});hs.set("base64",class extends J2{constructor(...e){super(...e),this.input=this.input.replace(/^data:([^;]+);base64,/gim,""),this.size=this.input.length/4*3,this.input.endsWith("==")?this.size-=2:this.input.endsWith("=")&&(this.size-=1)}async _readChunk(e,t){let r,n,i=this.input;e===void 0?(e=0,r=0,n=0):(r=4*Math.floor(e/3),n=e-r/4*3),t===void 0&&(t=this.size);let a=e+t,o=r+4*Math.ceil(a/3);i=i.slice(r,o);let s=Math.min(t,this.size-e);if(t8){let l=e8.from(i,"base64").slice(n,n+s);return this.set(l,e,!0)}{let l=this.subarray(e,s,!0),u=atob(i),c=l.toUint8();for(let f=0;fthis.errors.push(r)),It(this,"metaChunks",[]),It(this,"unknownChunks",[])}static canHandle(t,r){return r===35152&&t.getUint32(0)===2303741511&&t.getUint32(4)===218765834}async parse(){let{file:t}=this;await this.findPngChunksInRange(8,t.byteLength),await this.readSegments(this.metaChunks),this.findIhdr(),this.parseTextChunks(),await this.findExif().catch(this.catchError),await this.findXmp().catch(this.catchError),await this.findIcc().catch(this.catchError)}async findPngChunksInRange(t,r){let{file:n}=this;for(;tr.type==="text");for(let r of t){let[n,i]=this.file.getString(r.start,r.size).split("\0");this.injectKeyValToIhdr(n,i)}}injectKeyValToIhdr(t,r){let n=this.parsers.ihdr;n&&n.raw.set(t,r)}findIhdr(){let t=this.metaChunks.find(r=>r.type==="ihdr");t&&this.options.ihdr.enabled!==!1&&this.createParser("ihdr",t.chunk)}async findExif(){let t=this.metaChunks.find(r=>r.type==="exif");t&&this.injectSegment("tiff",t.chunk)}async findXmp(){let t=this.metaChunks.filter(r=>r.type==="itxt");for(let r of t)r.chunk.getString(0,17)==="XML:com.adobe.xmp"&&this.injectSegment("xmp",r.chunk)}async findIcc(){let t=this.metaChunks.find(s=>s.type==="iccp");if(!t)return;let{chunk:r}=t,n=r.getUint8Array(0,81),i=0;for(;i<80&&n[i]!==0;)i++;let a=i+2,o=r.getString(0,i);if(this.injectKeyValToIhdr("ProfileName",o),U9){let s=await tJ,l=r.getUint8Array(a);l=s.inflateSync(l),this.injectSegment("icc",l)}}};It(K9,"type","png"),ds.set("png",K9),wn(Yn,"interop",[[1,"InteropIndex"],[2,"InteropVersion"],[4096,"RelatedImageFileFormat"],[4097,"RelatedImageWidth"],[4098,"RelatedImageHeight"]]),L0(Yn,"ifd0",[[11,"ProcessingSoftware"],[254,"SubfileType"],[255,"OldSubfileType"],[263,"Thresholding"],[264,"CellWidth"],[265,"CellLength"],[266,"FillOrder"],[269,"DocumentName"],[280,"MinSampleValue"],[281,"MaxSampleValue"],[285,"PageName"],[286,"XPosition"],[287,"YPosition"],[290,"GrayResponseUnit"],[297,"PageNumber"],[321,"HalftoneHints"],[322,"TileWidth"],[323,"TileLength"],[332,"InkSet"],[337,"TargetPrinter"],[18246,"Rating"],[18249,"RatingPercent"],[33550,"PixelScale"],[34264,"ModelTransform"],[34377,"PhotoshopSettings"],[50706,"DNGVersion"],[50707,"DNGBackwardVersion"],[50708,"UniqueCameraModel"],[50709,"LocalizedCameraModel"],[50736,"DNGLensInfo"],[50739,"ShadowScale"],[50740,"DNGPrivateData"],[33920,"IntergraphMatrix"],[33922,"ModelTiePoint"],[34118,"SEMInfo"],[34735,"GeoTiffDirectory"],[34736,"GeoTiffDoubleParams"],[34737,"GeoTiffAsciiParams"],[50341,"PrintIM"],[50721,"ColorMatrix1"],[50722,"ColorMatrix2"],[50723,"CameraCalibration1"],[50724,"CameraCalibration2"],[50725,"ReductionMatrix1"],[50726,"ReductionMatrix2"],[50727,"AnalogBalance"],[50728,"AsShotNeutral"],[50729,"AsShotWhiteXY"],[50730,"BaselineExposure"],[50731,"BaselineNoise"],[50732,"BaselineSharpness"],[50734,"LinearResponseLimit"],[50735,"CameraSerialNumber"],[50741,"MakerNoteSafety"],[50778,"CalibrationIlluminant1"],[50779,"CalibrationIlluminant2"],[50781,"RawDataUniqueID"],[50827,"OriginalRawFileName"],[50828,"OriginalRawFileData"],[50831,"AsShotICCProfile"],[50832,"AsShotPreProfileMatrix"],[50833,"CurrentICCProfile"],[50834,"CurrentPreProfileMatrix"],[50879,"ColorimetricReference"],[50885,"SRawType"],[50898,"PanasonicTitle"],[50899,"PanasonicTitle2"],[50931,"CameraCalibrationSig"],[50932,"ProfileCalibrationSig"],[50933,"ProfileIFD"],[50934,"AsShotProfileName"],[50936,"ProfileName"],[50937,"ProfileHueSatMapDims"],[50938,"ProfileHueSatMapData1"],[50939,"ProfileHueSatMapData2"],[50940,"ProfileToneCurve"],[50941,"ProfileEmbedPolicy"],[50942,"ProfileCopyright"],[50964,"ForwardMatrix1"],[50965,"ForwardMatrix2"],[50966,"PreviewApplicationName"],[50967,"PreviewApplicationVersion"],[50968,"PreviewSettingsName"],[50969,"PreviewSettingsDigest"],[50970,"PreviewColorSpace"],[50971,"PreviewDateTime"],[50972,"RawImageDigest"],[50973,"OriginalRawFileDigest"],[50981,"ProfileLookTableDims"],[50982,"ProfileLookTableData"],[51043,"TimeCodes"],[51044,"FrameRate"],[51058,"TStop"],[51081,"ReelName"],[51089,"OriginalDefaultFinalSize"],[51090,"OriginalBestQualitySize"],[51091,"OriginalDefaultCropSize"],[51105,"CameraLabel"],[51107,"ProfileHueSatMapEncoding"],[51108,"ProfileLookTableEncoding"],[51109,"BaselineExposureOffset"],[51110,"DefaultBlackRender"],[51111,"NewRawImageDigest"],[51112,"RawToPreviewGain"]]);var LT=[[273,"StripOffsets"],[279,"StripByteCounts"],[288,"FreeOffsets"],[289,"FreeByteCounts"],[291,"GrayResponseCurve"],[292,"T4Options"],[293,"T6Options"],[300,"ColorResponseUnit"],[320,"ColorMap"],[324,"TileOffsets"],[325,"TileByteCounts"],[326,"BadFaxLines"],[327,"CleanFaxData"],[328,"ConsecutiveBadFaxLines"],[330,"SubIFD"],[333,"InkNames"],[334,"NumberofInks"],[336,"DotRange"],[338,"ExtraSamples"],[339,"SampleFormat"],[340,"SMinSampleValue"],[341,"SMaxSampleValue"],[342,"TransferRange"],[343,"ClipPath"],[344,"XClipPathUnits"],[345,"YClipPathUnits"],[346,"Indexed"],[347,"JPEGTables"],[351,"OPIProxy"],[400,"GlobalParametersIFD"],[401,"ProfileType"],[402,"FaxProfile"],[403,"CodingMethods"],[404,"VersionYear"],[405,"ModeNumber"],[433,"Decode"],[434,"DefaultImageColor"],[435,"T82Options"],[437,"JPEGTables"],[512,"JPEGProc"],[515,"JPEGRestartInterval"],[517,"JPEGLosslessPredictors"],[518,"JPEGPointTransforms"],[519,"JPEGQTables"],[520,"JPEGDCTables"],[521,"JPEGACTables"],[559,"StripRowCounts"],[999,"USPTOMiscellaneous"],[18247,"XP_DIP_XML"],[18248,"StitchInfo"],[28672,"SonyRawFileType"],[28688,"SonyToneCurve"],[28721,"VignettingCorrection"],[28722,"VignettingCorrParams"],[28724,"ChromaticAberrationCorrection"],[28725,"ChromaticAberrationCorrParams"],[28726,"DistortionCorrection"],[28727,"DistortionCorrParams"],[29895,"SonyCropTopLeft"],[29896,"SonyCropSize"],[32781,"ImageID"],[32931,"WangTag1"],[32932,"WangAnnotation"],[32933,"WangTag3"],[32934,"WangTag4"],[32953,"ImageReferencePoints"],[32954,"RegionXformTackPoint"],[32955,"WarpQuadrilateral"],[32956,"AffineTransformMat"],[32995,"Matteing"],[32996,"DataType"],[32997,"ImageDepth"],[32998,"TileDepth"],[33300,"ImageFullWidth"],[33301,"ImageFullHeight"],[33302,"TextureFormat"],[33303,"WrapModes"],[33304,"FovCot"],[33305,"MatrixWorldToScreen"],[33306,"MatrixWorldToCamera"],[33405,"Model2"],[33421,"CFARepeatPatternDim"],[33422,"CFAPattern2"],[33423,"BatteryLevel"],[33424,"KodakIFD"],[33445,"MDFileTag"],[33446,"MDScalePixel"],[33447,"MDColorTable"],[33448,"MDLabName"],[33449,"MDSampleInfo"],[33450,"MDPrepDate"],[33451,"MDPrepTime"],[33452,"MDFileUnits"],[33589,"AdventScale"],[33590,"AdventRevision"],[33628,"UIC1Tag"],[33629,"UIC2Tag"],[33630,"UIC3Tag"],[33631,"UIC4Tag"],[33918,"IntergraphPacketData"],[33919,"IntergraphFlagRegisters"],[33921,"INGRReserved"],[34016,"Site"],[34017,"ColorSequence"],[34018,"IT8Header"],[34019,"RasterPadding"],[34020,"BitsPerRunLength"],[34021,"BitsPerExtendedRunLength"],[34022,"ColorTable"],[34023,"ImageColorIndicator"],[34024,"BackgroundColorIndicator"],[34025,"ImageColorValue"],[34026,"BackgroundColorValue"],[34027,"PixelIntensityRange"],[34028,"TransparencyIndicator"],[34029,"ColorCharacterization"],[34030,"HCUsage"],[34031,"TrapIndicator"],[34032,"CMYKEquivalent"],[34152,"AFCP_IPTC"],[34232,"PixelMagicJBIGOptions"],[34263,"JPLCartoIFD"],[34306,"WB_GRGBLevels"],[34310,"LeafData"],[34687,"TIFF_FXExtensions"],[34688,"MultiProfiles"],[34689,"SharedData"],[34690,"T88Options"],[34732,"ImageLayer"],[34750,"JBIGOptions"],[34856,"Opto-ElectricConvFactor"],[34857,"Interlace"],[34908,"FaxRecvParams"],[34909,"FaxSubAddress"],[34910,"FaxRecvTime"],[34929,"FedexEDR"],[34954,"LeafSubIFD"],[37387,"FlashEnergy"],[37388,"SpatialFrequencyResponse"],[37389,"Noise"],[37390,"FocalPlaneXResolution"],[37391,"FocalPlaneYResolution"],[37392,"FocalPlaneResolutionUnit"],[37397,"ExposureIndex"],[37398,"TIFF-EPStandardID"],[37399,"SensingMethod"],[37434,"CIP3DataFile"],[37435,"CIP3Sheet"],[37436,"CIP3Side"],[37439,"StoNits"],[37679,"MSDocumentText"],[37680,"MSPropertySetStorage"],[37681,"MSDocumentTextPosition"],[37724,"ImageSourceData"],[40965,"InteropIFD"],[40976,"SamsungRawPointersOffset"],[40977,"SamsungRawPointersLength"],[41217,"SamsungRawByteOrder"],[41218,"SamsungRawUnknown"],[41484,"SpatialFrequencyResponse"],[41485,"Noise"],[41489,"ImageNumber"],[41490,"SecurityClassification"],[41491,"ImageHistory"],[41494,"TIFF-EPStandardID"],[41995,"DeviceSettingDescription"],[42112,"GDALMetadata"],[42113,"GDALNoData"],[44992,"ExpandSoftware"],[44993,"ExpandLens"],[44994,"ExpandFilm"],[44995,"ExpandFilterLens"],[44996,"ExpandScanner"],[44997,"ExpandFlashLamp"],[46275,"HasselbladRawImage"],[48129,"PixelFormat"],[48130,"Transformation"],[48131,"Uncompressed"],[48132,"ImageType"],[48256,"ImageWidth"],[48257,"ImageHeight"],[48258,"WidthResolution"],[48259,"HeightResolution"],[48320,"ImageOffset"],[48321,"ImageByteCount"],[48322,"AlphaOffset"],[48323,"AlphaByteCount"],[48324,"ImageDataDiscard"],[48325,"AlphaDataDiscard"],[50215,"OceScanjobDesc"],[50216,"OceApplicationSelector"],[50217,"OceIDNumber"],[50218,"OceImageLogic"],[50255,"Annotations"],[50459,"HasselbladExif"],[50547,"OriginalFileName"],[50560,"USPTOOriginalContentType"],[50656,"CR2CFAPattern"],[50710,"CFAPlaneColor"],[50711,"CFALayout"],[50712,"LinearizationTable"],[50713,"BlackLevelRepeatDim"],[50714,"BlackLevel"],[50715,"BlackLevelDeltaH"],[50716,"BlackLevelDeltaV"],[50717,"WhiteLevel"],[50718,"DefaultScale"],[50719,"DefaultCropOrigin"],[50720,"DefaultCropSize"],[50733,"BayerGreenSplit"],[50737,"ChromaBlurRadius"],[50738,"AntiAliasStrength"],[50752,"RawImageSegmentation"],[50780,"BestQualityScale"],[50784,"AliasLayerMetadata"],[50829,"ActiveArea"],[50830,"MaskedAreas"],[50935,"NoiseReductionApplied"],[50974,"SubTileBlockSize"],[50975,"RowInterleaveFactor"],[51008,"OpcodeList1"],[51009,"OpcodeList2"],[51022,"OpcodeList3"],[51041,"NoiseProfile"],[51114,"CacheVersion"],[51125,"DefaultUserCrop"],[51157,"NikonNEFInfo"],[65024,"KdcIFD"]];L0(Yn,"ifd0",LT),L0(Yn,"exif",LT),wn(Fo,"gps",[[23,{M:"Magnetic North",T:"True North"}],[25,{K:"Kilometers",M:"Miles",N:"Nautical Miles"}]]);var X5=class extends ka{static canHandle(t,r){return t.getUint8(r+1)===224&&t.getUint32(r+4)===1246120262&&t.getUint8(r+8)===0}parse(){return this.parseTags(),this.translate(),this.output}parseTags(){this.raw=new Map([[0,this.chunk.getUint16(0)],[2,this.chunk.getUint8(2)],[3,this.chunk.getUint16(3)],[5,this.chunk.getUint16(5)],[7,this.chunk.getUint8(7)],[8,this.chunk.getUint8(8)]])}};It(X5,"type","jfif"),It(X5,"headerLength",9),Fn.set("jfif",X5),wn(Yn,"jfif",[[0,"JFIFVersion"],[2,"ResolutionUnit"],[3,"XResolution"],[5,"YResolution"],[7,"ThumbnailWidth"],[8,"ThumbnailHeight"]]);var Z9=class extends ka{parse(){return this.parseTags(),this.translate(),this.output}parseTags(){this.raw=new Map([[0,this.chunk.getUint32(0)],[4,this.chunk.getUint32(4)],[8,this.chunk.getUint8(8)],[9,this.chunk.getUint8(9)],[10,this.chunk.getUint8(10)],[11,this.chunk.getUint8(11)],[12,this.chunk.getUint8(12)],...Array.from(this.raw)])}};It(Z9,"type","ihdr"),Fn.set("ihdr",Z9),wn(Yn,"ihdr",[[0,"ImageWidth"],[4,"ImageHeight"],[8,"BitDepth"],[9,"ColorType"],[10,"Compression"],[11,"Filter"],[12,"Interlace"]]),wn(Fo,"ihdr",[[9,{0:"Grayscale",2:"RGB",3:"Palette",4:"Grayscale with Alpha",6:"RGB with Alpha",DEFAULT:"Unknown"}],[10,{0:"Deflate/Inflate",DEFAULT:"Unknown"}],[11,{0:"Adaptive",DEFAULT:"Unknown"}],[12,{0:"Noninterlaced",1:"Adam7 Interlace",DEFAULT:"Unknown"}]]);var K2=class extends ka{static canHandle(t,r){return t.getUint8(r+1)===226&&t.getUint32(r+4)===1229144927}static findPosition(t,r){let n=super.findPosition(t,r);return n.chunkNumber=t.getUint8(r+16),n.chunkCount=t.getUint8(r+17),n.multiSegment=n.chunkCount>1,n}static handleMultiSegments(t){return function(r){let n=function(i){let a=i[0].constructor,o=0;for(let u of i)o+=u.length;let s=new a(o),l=0;for(let u of i)s.set(u,l),l+=u.length;return s}(r.map(i=>i.chunk.toUint8()));return new ps(n)}(t)}parse(){return this.raw=new Map,this.parseHeader(),this.parseTags(),this.translate(),this.output}parseHeader(){let{raw:t}=this;this.chunk.byteLength<84&&Dn("ICC header is too short");for(let[r,n]of Object.entries(nJ)){r=parseInt(r,10);let i=n(this.chunk,r);i!=="\0\0\0\0"&&t.set(r,i)}}parseTags(){let t,r,n,i,a,{raw:o}=this,s=this.chunk.getUint32(128),l=132,u=this.chunk.byteLength;for(;s--;){if(t=this.chunk.getString(l,4),r=this.chunk.getUint32(l+4),n=this.chunk.getUint32(l+8),i=this.chunk.getString(r,4),r+n>u)return void console.warn("reached the end of the first ICC chunk. Enable options.tiff.multiSegment to read all ICC segments.");a=this.parseTag(i,r,n),a!==void 0&&a!=="\0\0\0\0"&&o.set(t,a),l+=12}}parseTag(t,r,n){switch(t){case"desc":return this.parseDesc(r);case"mluc":return this.parseMluc(r);case"text":return this.parseText(r,n);case"sig ":return this.parseSig(r)}if(!(r+n>this.chunk.byteLength))return this.chunk.getUint8Array(r,n)}parseDesc(t){let r=this.chunk.getUint32(t+8)-1;return T0(this.chunk.getString(t+12,r))}parseText(t,r){return T0(this.chunk.getString(t+8,r-8))}parseSig(t){return T0(this.chunk.getString(t+8,4))}parseMluc(t){let{chunk:r}=this,n=r.getUint32(t+8),i=r.getUint32(t+12),a=t+16,o=[];for(let s=0;s>4,e.getUint8(t+1)%16].map(r=>r.toString(10)).join(".")},12:f1,16:f1,20:f1,24:function(e,t){let r=e.getUint16(t),n=e.getUint16(t+2)-1,i=e.getUint16(t+4),a=e.getUint16(t+6),o=e.getUint16(t+8),s=e.getUint16(t+10);return new Date(Date.UTC(r,n,i,a,o,s))},36:f1,40:f1,48:f1,52:f1,64:(e,t)=>e.getUint32(t),80:f1};function f1(e,t){return T0(e.getString(t,4))}Fn.set("icc",K2),wn(Yn,"icc",[[4,"ProfileCMMType"],[8,"ProfileVersion"],[12,"ProfileClass"],[16,"ColorSpaceData"],[20,"ProfileConnectionSpace"],[24,"ProfileDateTime"],[36,"ProfileFileSignature"],[40,"PrimaryPlatform"],[44,"CMMFlags"],[48,"DeviceManufacturer"],[52,"DeviceModel"],[56,"DeviceAttributes"],[64,"RenderingIntent"],[68,"ConnectionSpaceIlluminant"],[80,"ProfileCreator"],[84,"ProfileID"],["Header","ProfileHeader"],["MS00","WCSProfiles"],["bTRC","BlueTRC"],["bXYZ","BlueMatrixColumn"],["bfd","UCRBG"],["bkpt","MediaBlackPoint"],["calt","CalibrationDateTime"],["chad","ChromaticAdaptation"],["chrm","Chromaticity"],["ciis","ColorimetricIntentImageState"],["clot","ColorantTableOut"],["clro","ColorantOrder"],["clrt","ColorantTable"],["cprt","ProfileCopyright"],["crdi","CRDInfo"],["desc","ProfileDescription"],["devs","DeviceSettings"],["dmdd","DeviceModelDesc"],["dmnd","DeviceMfgDesc"],["dscm","ProfileDescriptionML"],["fpce","FocalPlaneColorimetryEstimates"],["gTRC","GreenTRC"],["gXYZ","GreenMatrixColumn"],["gamt","Gamut"],["kTRC","GrayTRC"],["lumi","Luminance"],["meas","Measurement"],["meta","Metadata"],["mmod","MakeAndModel"],["ncl2","NamedColor2"],["ncol","NamedColor"],["ndin","NativeDisplayInfo"],["pre0","Preview0"],["pre1","Preview1"],["pre2","Preview2"],["ps2i","PS2RenderingIntent"],["ps2s","PostScript2CSA"],["psd0","PostScript2CRD0"],["psd1","PostScript2CRD1"],["psd2","PostScript2CRD2"],["psd3","PostScript2CRD3"],["pseq","ProfileSequenceDesc"],["psid","ProfileSequenceIdentifier"],["psvm","PS2CRDVMSize"],["rTRC","RedTRC"],["rXYZ","RedMatrixColumn"],["resp","OutputResponse"],["rhoc","ReflectionHardcopyOrigColorimetry"],["rig0","PerceptualRenderingIntentGamut"],["rig2","SaturationRenderingIntentGamut"],["rpoc","ReflectionPrintOutputColorimetry"],["sape","SceneAppearanceEstimates"],["scoe","SceneColorimetryEstimates"],["scrd","ScreeningDesc"],["scrn","Screening"],["targ","CharTarget"],["tech","Technology"],["vcgt","VideoCardGamma"],["view","ViewingConditions"],["vued","ViewingCondDesc"],["wtpt","MediaWhitePoint"]]);var $9={"4d2p":"Erdt Systems",AAMA:"Aamazing Technologies",ACER:"Acer",ACLT:"Acolyte Color Research",ACTI:"Actix Sytems",ADAR:"Adara Technology",ADBE:"Adobe",ADI:"ADI Systems",AGFA:"Agfa Graphics",ALMD:"Alps Electric",ALPS:"Alps Electric",ALWN:"Alwan Color Expertise",AMTI:"Amiable Technologies",AOC:"AOC International",APAG:"Apago",APPL:"Apple Computer",AST:"AST","AT&T":"AT&T",BAEL:"BARBIERI electronic",BRCO:"Barco NV",BRKP:"Breakpoint",BROT:"Brother",BULL:"Bull",BUS:"Bus Computer Systems","C-IT":"C-Itoh",CAMR:"Intel",CANO:"Canon",CARR:"Carroll Touch",CASI:"Casio",CBUS:"Colorbus PL",CEL:"Crossfield",CELx:"Crossfield",CGS:"CGS Publishing Technologies International",CHM:"Rochester Robotics",CIGL:"Colour Imaging Group, London",CITI:"Citizen",CL00:"Candela",CLIQ:"Color IQ",CMCO:"Chromaco",CMiX:"CHROMiX",COLO:"Colorgraphic Communications",COMP:"Compaq",COMp:"Compeq/Focus Technology",CONR:"Conrac Display Products",CORD:"Cordata Technologies",CPQ:"Compaq",CPRO:"ColorPro",CRN:"Cornerstone",CTX:"CTX International",CVIS:"ColorVision",CWC:"Fujitsu Laboratories",DARI:"Darius Technology",DATA:"Dataproducts",DCP:"Dry Creek Photo",DCRC:"Digital Contents Resource Center, Chung-Ang University",DELL:"Dell Computer",DIC:"Dainippon Ink and Chemicals",DICO:"Diconix",DIGI:"Digital","DL&C":"Digital Light & Color",DPLG:"Doppelganger",DS:"Dainippon Screen",DSOL:"DOOSOL",DUPN:"DuPont",EPSO:"Epson",ESKO:"Esko-Graphics",ETRI:"Electronics and Telecommunications Research Institute",EVER:"Everex Systems",EXAC:"ExactCODE",Eizo:"Eizo",FALC:"Falco Data Products",FF:"Fuji Photo Film",FFEI:"FujiFilm Electronic Imaging",FNRD:"Fnord Software",FORA:"Fora",FORE:"Forefront Technology",FP:"Fujitsu",FPA:"WayTech Development",FUJI:"Fujitsu",FX:"Fuji Xerox",GCC:"GCC Technologies",GGSL:"Global Graphics Software",GMB:"Gretagmacbeth",GMG:"GMG",GOLD:"GoldStar Technology",GOOG:"Google",GPRT:"Giantprint",GTMB:"Gretagmacbeth",GVC:"WayTech Development",GW2K:"Sony",HCI:"HCI",HDM:"Heidelberger Druckmaschinen",HERM:"Hermes",HITA:"Hitachi America",HP:"Hewlett-Packard",HTC:"Hitachi",HiTi:"HiTi Digital",IBM:"IBM",IDNT:"Scitex",IEC:"Hewlett-Packard",IIYA:"Iiyama North America",IKEG:"Ikegami Electronics",IMAG:"Image Systems",IMI:"Ingram Micro",INTC:"Intel",INTL:"N/A (INTL)",INTR:"Intra Electronics",IOCO:"Iocomm International Technology",IPS:"InfoPrint Solutions Company",IRIS:"Scitex",ISL:"Ichikawa Soft Laboratory",ITNL:"N/A (ITNL)",IVM:"IVM",IWAT:"Iwatsu Electric",Idnt:"Scitex",Inca:"Inca Digital Printers",Iris:"Scitex",JPEG:"Joint Photographic Experts Group",JSFT:"Jetsoft Development",JVC:"JVC Information Products",KART:"Scitex",KFC:"KFC Computek Components",KLH:"KLH Computers",KMHD:"Konica Minolta",KNCA:"Konica",KODA:"Kodak",KYOC:"Kyocera",Kart:"Scitex",LCAG:"Leica",LCCD:"Leeds Colour",LDAK:"Left Dakota",LEAD:"Leading Technology",LEXM:"Lexmark International",LINK:"Link Computer",LINO:"Linotronic",LITE:"Lite-On",Leaf:"Leaf",Lino:"Linotronic",MAGC:"Mag Computronic",MAGI:"MAG Innovision",MANN:"Mannesmann",MICN:"Micron Technology",MICR:"Microtek",MICV:"Microvitec",MINO:"Minolta",MITS:"Mitsubishi Electronics America",MITs:"Mitsuba",MNLT:"Minolta",MODG:"Modgraph",MONI:"Monitronix",MONS:"Monaco Systems",MORS:"Morse Technology",MOTI:"Motive Systems",MSFT:"Microsoft",MUTO:"MUTOH INDUSTRIES",Mits:"Mitsubishi Electric",NANA:"NANAO",NEC:"NEC",NEXP:"NexPress Solutions",NISS:"Nissei Sangyo America",NKON:"Nikon",NONE:"none",OCE:"Oce Technologies",OCEC:"OceColor",OKI:"Oki",OKID:"Okidata",OKIP:"Okidata",OLIV:"Olivetti",OLYM:"Olympus",ONYX:"Onyx Graphics",OPTI:"Optiquest",PACK:"Packard Bell",PANA:"Matsushita Electric Industrial",PANT:"Pantone",PBN:"Packard Bell",PFU:"PFU",PHIL:"Philips Consumer Electronics",PNTX:"HOYA",POne:"Phase One A/S",PREM:"Premier Computer Innovations",PRIN:"Princeton Graphic Systems",PRIP:"Princeton Publishing Labs",QLUX:"Hong Kong",QMS:"QMS",QPCD:"QPcard AB",QUAD:"QuadLaser",QUME:"Qume",RADI:"Radius",RDDx:"Integrated Color Solutions",RDG:"Roland DG",REDM:"REDMS Group",RELI:"Relisys",RGMS:"Rolf Gierling Multitools",RICO:"Ricoh",RNLD:"Edmund Ronald",ROYA:"Royal",RPC:"Ricoh Printing Systems",RTL:"Royal Information Electronics",SAMP:"Sampo",SAMS:"Samsung",SANT:"Jaime Santana Pomares",SCIT:"Scitex",SCRN:"Dainippon Screen",SDP:"Scitex",SEC:"Samsung",SEIK:"Seiko Instruments",SEIk:"Seikosha",SGUY:"ScanGuy.com",SHAR:"Sharp Laboratories",SICC:"International Color Consortium",SONY:"Sony",SPCL:"SpectraCal",STAR:"Star",STC:"Sampo Technology",Scit:"Scitex",Sdp:"Scitex",Sony:"Sony",TALO:"Talon Technology",TAND:"Tandy",TATU:"Tatung",TAXA:"TAXAN America",TDS:"Tokyo Denshi Sekei",TECO:"TECO Information Systems",TEGR:"Tegra",TEKT:"Tektronix",TI:"Texas Instruments",TMKR:"TypeMaker",TOSB:"Toshiba",TOSH:"Toshiba",TOTK:"TOTOKU ELECTRIC",TRIU:"Triumph",TSBT:"Toshiba",TTX:"TTX Computer Products",TVM:"TVM Professional Monitor",TW:"TW Casper",ULSX:"Ulead Systems",UNIS:"Unisys",UTZF:"Utz Fehlau & Sohn",VARI:"Varityper",VIEW:"Viewsonic",VISL:"Visual communication",VIVO:"Vivo Mobile Communication",WANG:"Wang",WLBR:"Wilbur Imaging",WTG2:"Ware To Go",WYSE:"WYSE Technology",XERX:"Xerox",XRIT:"X-Rite",ZRAN:"Zoran",Zebr:"Zebra Technologies",appl:"Apple Computer",bICC:"basICColor",berg:"bergdesign",ceyd:"Integrated Color Solutions",clsp:"MacDermid ColorSpan",ds:"Dainippon Screen",dupn:"DuPont",ffei:"FujiFilm Electronic Imaging",flux:"FluxData",iris:"Scitex",kart:"Scitex",lcms:"Little CMS",lino:"Linotronic",none:"none",ob4d:"Erdt Systems",obic:"Medigraph",quby:"Qubyx Sarl",scit:"Scitex",scrn:"Dainippon Screen",sdp:"Scitex",siwi:"SIWI GRAFIKA",yxym:"YxyMaster"},RT={scnr:"Scanner",mntr:"Monitor",prtr:"Printer",link:"Device Link",abst:"Abstract",spac:"Color Space Conversion Profile",nmcl:"Named Color",cenc:"ColorEncodingSpace profile",mid:"MultiplexIdentification profile",mlnk:"MultiplexLink profile",mvis:"MultiplexVisualization profile",nkpf:"Nikon Input Device Profile (NON-STANDARD!)"};wn(Fo,"icc",[[4,$9],[12,RT],[40,Object.assign({},$9,RT)],[48,$9],[80,$9],[64,{0:"Perceptual",1:"Relative Colorimetric",2:"Saturation",3:"Absolute Colorimetric"}],["tech",{amd:"Active Matrix Display",crt:"Cathode Ray Tube Display",kpcd:"Photo CD",pmd:"Passive Matrix Display",dcam:"Digital Camera",dcpj:"Digital Cinema Projector",dmpc:"Digital Motion Picture Camera",dsub:"Dye Sublimation Printer",epho:"Electrophotographic Printer",esta:"Electrostatic Printer",flex:"Flexography",fprn:"Film Writer",fscn:"Film Scanner",grav:"Gravure",ijet:"Ink Jet Printer",imgs:"Photo Image Setter",mpfr:"Motion Picture Film Recorder",mpfs:"Motion Picture Film Scanner",offs:"Offset Lithography",pjtv:"Projection Television",rpho:"Photographic Paper Printer",rscn:"Reflective Scanner",silk:"Silkscreen",twax:"Thermal Wax Printer",vidc:"Video Camera",vidm:"Video Monitor"}]]);var Y2=class extends ka{static canHandle(t,r,n){return t.getUint8(r+1)===237&&t.getString(r+4,9)==="Photoshop"&&this.containsIptc8bim(t,r,n)!==void 0}static headerLength(t,r,n){let i,a=this.containsIptc8bim(t,r,n);if(a!==void 0)return i=t.getUint8(r+a+7),i%2!=0&&(i+=1),i===0&&(i=4),a+8+i}static containsIptc8bim(t,r,n){for(let i=0;i{e.attr("src",t),e.on("load",()=>{r(e)})})}var n8={init:async function(e,t){return this.event=ke(this,XT,"on"),ru=t.append("div").attr("class","photo-frame plane-frame").classed("hide",!0),J5=ru.append("img").attr("class","plane-photo"),e.ui().photoviewer.on("resize.plane",()=>{Z5=YT(),ru.call(Z5)}),await Promise.resolve(),this},showPhotoFrame:function(e){return e.selectAll(".photo-frame.plane-frame.hide").size()&&(e.selectAll(".photo-frame:not(.plane-frame)").classed("hide",!0),e.selectAll(".photo-frame.plane-frame").classed("hide",!1)),this},hidePhotoFrame:function(e){return e.select("photo-frame.plane-frame").classed("hide",!1),this},selectPhoto:function(e,t){return XT.call("viewerChanged"),KT(J5,""),KT(J5,e.image_path).then(()=>{t||(Z5=YT(),ru.call(Z5),ru.call(Z5.transform,Yr.translate(-Ny/2,0)))}),this},getYaw:function(){return 0}};var ZT=!1,i8=!1,aJ=16;function JT(e,t,r){let n=br(),i=G(null),a,o=[],s=0,l;function u(){if(ZT)return;i8=!0;function _(w){w.stopPropagation(),w.preventDefault(),w.dataTransfer.dropEffect="copy"}t.container().attr("dropzone","copy").on("drop.svgLocalPhotos",function(w){w.stopPropagation(),w.preventDefault(),n.filedrop&&x.fileList(w.dataTransfer.files,A=>{A.length>0&&x.fitZoom(!1)})}).on("dragenter.svgLocalPhotos",_).on("dragexit.svgLocalPhotos",_).on("dragover.svgLocalPhotos",_),ZT=!0}function c(_){if(l)return Promise.resolve(l);let A=_.container().select(".photoviewer").selectAll(".local-photos-wrapper").data([0]).enter().append("div").attr("class","photo-wrapper local-photos-wrapper").classed("hide",!0);return A.append("div").attr("class","photo-attribution photo-attribution-dual fillD"),n8.init(_,A).then(I=>{l=I})}function f(_,w,A){c(t).then(()=>{let E=t.container().select(".photoviewer").datum(w).classed("hide",!1).select(".local-photos-wrapper").classed("hide",!1),k=E.selectAll(".photo-attribution").text("");w.date&&k.append("span").text(w.date.toLocaleString()),w.name&&k.append("span").classed("filename",!0).text(w.name),l.selectPhoto({image_path:""}),w.getSrc().then(S=>{l.selectPhoto({image_path:S}).showPhotoFrame(E),d()})}),A&&t.map().centerEase(w.loc)}function p(_){var w=e(_.loc);return"translate("+w[0]+","+w[1]+")"}function d(_){let w=t.container().select(".photoviewer"),A=w.empty()?void 0:w.datum();t.container().selectAll(".layer-local-photos .viewfield-group").classed("hovered",I=>I.id===(_==null?void 0:_.id)).classed("highlighted",I=>I.id===(_==null?void 0:_.id)||I.id===(A==null?void 0:A.id)).classed("currentView",I=>I.id===(A==null?void 0:A.id))}function g(_){_=_.filter(S=>ci(S.loc)&&ts(S.loc[0])&&ts(S.loc[1]));let w=i.selectAll(".markers").selectAll(".viewfield-group").data(_,function(S){return S.id});w.exit().remove();let A=w.enter().append("g").attr("class","viewfield-group").on("mouseenter",(S,D)=>d(D)).on("mouseleave",()=>d(null)).on("click",f);A.append("g").attr("class","viewfield-scale");let I=w.merge(A).attr("transform",p).select(".viewfield-scale");I.selectAll("circle").data([0]).enter().append("circle").attr("dx","0").attr("dy","0").attr("r","6");let E=t.map().zoom()>=aJ,k=I.selectAll(".viewfield").data(E?[0]:[]);k.exit().remove(),k.enter().insert("path","circle").attr("class","viewfield").attr("transform",function(){var D;let S=this.parentNode.__data__;return`rotate(${Math.round((D=S.direction)!=null?D:0)},0,0),scale(1.5,1.5),translate(-8,-13)`}).attr("d","M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z").style("visibility",function(){let S=this.parentNode.__data__;return ts(S.direction)?"visible":"hidden"})}function x(_){i=_.selectAll(".layer-local-photos").data(o?[0]:[]),i.exit().remove();let w=i.enter().append("g").attr("class","layer-local-photos");w.append("g").attr("class","markers"),i=w.merge(i),o&&g(o)}function b(_){return new Promise((w,A)=>{let I=new FileReader;I.onload=()=>w(I.result),I.onerror=E=>A(E),I.readAsDataURL(_)})}async function m(_,w){let A=[];for(let I of _)try{let E=await QT.parse(I),k={id:s++,name:I.name,getSrc:()=>b(I),file:I,loc:[E.longitude,E.latitude],direction:E.GPSImgDirection,date:E.CreateDate||E.DateTimeOriginal||E.ModifyDate};A.push(k);let S=o.filter(D=>D.name===k.name);if(S.length===0)o.push(k);else{let D=await k.getSrc();(await Promise.allSettled(S.map(O=>O.getSrc()))).some(O=>O.value===D)||o.push(k)}}catch{}typeof w=="function"&&w(A),r.call("change")}x.setFiles=function(_,w){return m(Array.from(_),w),this},x.fileList=function(_,w){return arguments.length?(a=_,!_||!_.length?this:(x.setFiles(a,w),this)):a},x.getPhotos=function(){return o},x.removePhoto=function(_){return o=o.filter(w=>w.id!==_),r.call("change"),o},x.openPhoto=f,x.fitZoom=function(_){let w=o.map(k=>k.loc).filter(k=>ci(k)&&ts(k[0])&&ts(k[1]));if(w.length===0)return;let A=w.map(k=>Pe(k,k)).reduce((k,S)=>k.extend(S)),I=t.map();var E=I.trimmedExtent().polygon();(_!==!1||!Qo(E,w,!0))&&I.centerZoom(A.center(),Math.min(18,I.trimmedExtentZoom(A)))};function v(){i.style("display","block"),i.style("opacity",0).transition().duration(250).style("opacity",1).on("end",function(){r.call("change")})}function y(){i.transition().duration(250).style("opacity",0).on("end",()=>{i.selectAll(".viewfield-group").remove(),i.style("display","none")})}return x.enabled=function(_){return arguments.length?(i8=_,i8?v():y(),r.call("change"),this):i8},x.hasData=function(){return ci(o)&&o.length>0},u(),x}var nu=!1,iu;function eM(e,t,r){let n=Lt(()=>r.call("change"),1e3),i=12,a=G(null),o=G(null),s=!1;function l(b,m){b.attr("class",m).attr("transform","translate(-10, -28)").attr("points","16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6")}function u(){return de.improveOSM&&!iu?(iu=de.improveOSM,iu.on("loaded",n)):!de.improveOSM&&iu&&(iu=null),iu}function c(){s||(s=!0,o.style("display","block"))}function f(){s&&(s=!1,o.style("display","none"),o.selectAll(".qaItem.improveOSM").remove(),a.selectAll(".qaItem.improveOSM").remove())}function p(){c(),o.style("opacity",0).transition().duration(250).style("opacity",1).on("end interrupt",()=>r.call("change"))}function d(){n.cancel(),o.interrupt(),a.selectAll(".qaItem.improveOSM").remove(),o.transition().duration(250).style("opacity",0).on("end interrupt",()=>{f(),r.call("change")})}function g(){if(!s||!nu)return;let b=u(),m=t.selectedErrorID(),v=b?b.getItems(e):[],y=ur(e),_=o.selectAll(".qaItem.improveOSM").data(v,k=>k.id);_.exit().remove();let w=_.enter().append("g").attr("class",k=>`qaItem ${k.service} itemId-${k.id} itemType-${k.itemType}`);if(w.append("polygon").call(l,"shadow"),w.append("ellipse").attr("cx",0).attr("cy",0).attr("rx",4.5).attr("ry",2).attr("class","stroke"),w.append("polygon").attr("fill","currentColor").call(l,"qaItem-fill"),w.append("use").attr("class","icon-annotation").attr("transform","translate(-6, -22)").attr("width","12px").attr("height","12px").attr("xlink:href",k=>k.icon?"#"+k.icon:""),_.merge(w).sort(E).classed("selected",k=>k.id===m).attr("transform",y),a.empty())return;let A=t.getDebug("target")?"pink ":"nocolor ",I=a.selectAll(".qaItem.improveOSM").data(v,k=>k.id);I.exit().remove(),I.enter().append("rect").attr("width","20px").attr("height","30px").attr("x","-10px").attr("y","-28px").merge(I).sort(E).attr("class",k=>`qaItem ${k.service} target ${A} itemId-${k.id}`).attr("transform",y);function E(k,S){return k.id===m?1:S.id===m?-1:S.loc[1]-k.loc[1]}}function x(b){let m=u(),v=t.surface();v&&!v.empty()&&(a=v.selectAll(".data-layer.touch .layer-touch.markers")),o=b.selectAll(".layer-improveOSM").data(m?[0]:[]),o.exit().remove(),o=o.enter().append("g").attr("class","layer-improveOSM").style("display",nu?"block":"none").merge(o),nu&&(m&&~~t.map().zoom()>=i?(c(),m.loadIssues(e),g()):f())}return x.enabled=function(b){return arguments.length?(nu=b,nu?p():(d(),t.selectedErrorID()&&t.enter(Ge(t))),r.call("change"),this):nu},x.supported=()=>!!u(),x}var au=!1,ou;function tM(e,t,r){let n=Lt(()=>r.call("change"),1e3),i=12,a=G(null),o=G(null),s=!1;function l(b,m){b.attr("class",m).attr("transform","translate(-10, -28)").attr("points","16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6")}function u(){return de.osmose&&!ou?(ou=de.osmose,ou.on("loaded",n)):!de.osmose&&ou&&(ou=null),ou}function c(){s||(s=!0,o.style("display","block"))}function f(){s&&(s=!1,o.style("display","none"),o.selectAll(".qaItem.osmose").remove(),a.selectAll(".qaItem.osmose").remove())}function p(){c(),o.style("opacity",0).transition().duration(250).style("opacity",1).on("end interrupt",()=>r.call("change"))}function d(){n.cancel(),o.interrupt(),a.selectAll(".qaItem.osmose").remove(),o.transition().duration(250).style("opacity",0).on("end interrupt",()=>{f(),r.call("change")})}function g(){if(!s||!au)return;let b=u(),m=t.selectedErrorID(),v=b?b.getItems(e):[],y=ur(e),_=o.selectAll(".qaItem.osmose").data(v,k=>k.id);_.exit().remove();let w=_.enter().append("g").attr("class",k=>`qaItem ${k.service} itemId-${k.id} itemType-${k.itemType}`);if(w.append("polygon").call(l,"shadow"),w.append("ellipse").attr("cx",0).attr("cy",0).attr("rx",4.5).attr("ry",2).attr("class","stroke"),w.append("polygon").attr("fill",k=>b.getColor(k.item)).call(l,"qaItem-fill"),w.append("use").attr("class","icon-annotation").attr("transform","translate(-6, -22)").attr("width","12px").attr("height","12px").attr("xlink:href",k=>k.icon?"#"+k.icon:""),_.merge(w).sort(E).classed("selected",k=>k.id===m).attr("transform",y),a.empty())return;let A=t.getDebug("target")?"pink":"nocolor",I=a.selectAll(".qaItem.osmose").data(v,k=>k.id);I.exit().remove(),I.enter().append("rect").attr("width","20px").attr("height","30px").attr("x","-10px").attr("y","-28px").merge(I).sort(E).attr("class",k=>`qaItem ${k.service} target ${A} itemId-${k.id}`).attr("transform",y);function E(k,S){return k.id===m?1:S.id===m?-1:S.loc[1]-k.loc[1]}}function x(b){let m=u(),v=t.surface();v&&!v.empty()&&(a=v.selectAll(".data-layer.touch .layer-touch.markers")),o=b.selectAll(".layer-osmose").data(m?[0]:[]),o.exit().remove(),o=o.enter().append("g").attr("class","layer-osmose").style("display",au?"block":"none").merge(o),au&&(m&&~~t.map().zoom()>=i?(c(),m.loadIssues(e),g()):f())}return x.enabled=function(b){return arguments.length?(au=b,au?u().loadStrings().then(p).catch(m=>{console.log(m)}):(d(),t.selectedErrorID()&&t.enter(Ge(t))),r.call("change"),this):au},x.supported=()=>!!u(),x}function Do(e,t,r){var n=Lt(function(){r.call("change")},1e3),i=14,a=16,o=18,s=G(null),l=0,u=null,c;function f(){Do.initialized||(Do.enabled=!1,Do.initialized=!0)}function p(){return de.streetside&&!c?(c=de.streetside,c.event.on("viewerChanged.svgStreetside",w).on("loadedImages.svgStreetside",n)):!de.streetside&&c&&(c=null),c}function d(){var S=p();S&&(x(),s.style("opacity",0).transition().duration(250).style("opacity",1).on("end",function(){r.call("change")}))}function g(){n.cancel(),s.transition().duration(250).style("opacity",0).on("end",b)}function x(){s.style("display","block")}function b(){s.selectAll(".viewfield-group").remove(),s.style("display","none")}function m(S,D){var P=p();P&&(D.sequenceKey!==u&&(l=0),u=D.sequenceKey,P.ensureViewerLoaded(t).then(function(){P.selectImage(t,D.key).yaw(l).showViewer(t)}),t.map().centerEase(D.loc))}function v(S,D){var P=p();P&&P.setStyles(t,D)}function y(){var S=p();S&&S.setStyles(t,null)}function _(S){var D=ur(e)(S),P=S.ca+l;return P&&(D+=" rotate("+Math.floor(P)+",0,0)"),D}function w(){var S=p();if(S){var D=S.viewer();D&&(l=D.getYaw(),!t.map().isTransformed()&&s.selectAll(".viewfield-group.currentView").attr("transform",_))}}function A(S){var D=t.photos().fromDate(),P=t.photos().toDate(),O=t.photos().usernames();if(D){var T=new Date(D).getTime();S=S.filter(function(R){return new Date(R.captured_at).getTime()>=T})}if(P){var M=new Date(P).getTime();S=S.filter(function(R){return new Date(R.captured_at).getTime()<=M})}return O&&(S=S.filter(function(R){return O.indexOf(R.captured_by)!==-1})),S}function I(S){var D=t.photos().fromDate(),P=t.photos().toDate(),O=t.photos().usernames();if(D){var T=new Date(D).getTime();S=S.filter(function(R){return new Date(R.properties.captured_at).getTime()>=T})}if(P){var M=new Date(P).getTime();S=S.filter(function(R){return new Date(R.properties.captured_at).getTime()<=M})}return O&&(S=S.filter(function(R){return O.indexOf(R.properties.captured_by)!==-1})),S}function E(){var S=t.container().select(".photoviewer"),D=S.empty()?void 0:S.datum(),P=~~t.map().zoom(),O=P>=a,T=P>=o,M=p(),R=[],N=[];t.photos().showsPanoramic()&&(R=M?M.sequences(e):[],N=M&&O?M.bubbles(e):[],R=I(R),N=A(N));var U=s.selectAll(".sequences").selectAll(".sequence").data(R,function(Z){return Z.properties.key});U.exit().remove(),U=U.enter().append("path").attr("class","sequence").merge(U).attr("d",an(e).geojson);var B=s.selectAll(".markers").selectAll(".viewfield-group").data(N,function(Z){return Z.key+(Z.sequenceKey?"v1":"v0")});B.exit().remove();var $=B.enter().append("g").attr("class","viewfield-group").on("mouseenter",v).on("mouseleave",y).on("click",m);$.append("g").attr("class","viewfield-scale");var z=B.merge($).sort(function(Z,oe){return Z===D?1:oe===D?-1:oe.loc[1]-Z.loc[1]}).attr("transform",_).select(".viewfield-scale");z.selectAll("circle").data([0]).enter().append("circle").attr("dx","0").attr("dy","0").attr("r","6");var V=z.selectAll(".viewfield").data(T?[0]:[]);V.exit().remove(),V.enter().insert("path","circle").attr("class","viewfield").attr("transform","scale(1.5,1.5),translate(-8, -13)").attr("d",H);function H(){var Z=this.parentNode.__data__;return Z.pano?"M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0":"M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z"}}function k(S){var D=Do.enabled,P=p();s=S.selectAll(".layer-streetside-images").data(P?[0]:[]),s.exit().remove();var O=s.enter().append("g").attr("class","layer-streetside-images").style("display",D?"block":"none");O.append("g").attr("class","sequences"),O.append("g").attr("class","markers"),s=O.merge(s),D&&(P&&~~t.map().zoom()>=i?(x(),E(),P.loadBubbles(e)):b())}return k.enabled=function(S){return arguments.length?(Do.enabled=S,Do.enabled?(d(),t.photos().on("change.streetside",E)):(g(),t.photos().on("change.streetside",null)),r.call("change"),this):Do.enabled},k.supported=function(){return!!p()},k.rendered=function(S){return S>=i},f(),k}function To(e,t,r){let n=Lt(()=>r.call("change"),1e3),i=14,a=16,o=18,s=G(null),l=0,u;function c(){To.initialized||(To.enabled=!1,To.initialized=!0)}function f(){return de.vegbilder&&!u?(u=de.vegbilder,u.event.on("viewerChanged.svgVegbilder",_).on("loadedImages.svgVegbilder",n)):!de.vegbilder&&u&&(u=null),u}function p(){f()&&(g(),s.style("opacity",0).transition().duration(250).style("opacity",1).on("end",()=>r.call("change")))}function d(){n.cancel(),s.transition().duration(250).style("opacity",0).on("end",x)}function g(){s.style("display","block")}function x(){s.selectAll(".viewfield-group").remove(),s.style("display","none")}function b(k,S){let D=f();D&&(D.ensureViewerLoaded(t).then(()=>{D.selectImage(t,S.key).showViewer(t)}),t.map().centerEase(S.loc))}function m(k,S){let D=f();D&&D.setStyles(t,S)}function v(){let k=f();k&&k.setStyles(t,null)}function y(k,S){let D=ur(e)(k),P=k.ca;return k===S&&(P+=l),P&&(D+=" rotate("+Math.floor(P)+",0,0)"),D}function _(){let k=f();!k||(l=k.photoFrame().getYaw(),t.map().isTransformed())||s.selectAll(".viewfield-group.currentView").attr("transform",D=>y(D,D))}function w(k){let S=t.photos(),D=S.fromDate(),P=S.toDate(),O=S.showsFlat(),T=S.showsPanoramic();if(D){let M=new Date(D);k=k.filter(R=>R.captured_at.getTime()>=M.getTime())}if(P){let M=new Date(P);k=k.filter(R=>R.captured_at.getTime()<=M.getTime())}return T||(k=k.filter(M=>!M.is_sphere)),O||(k=k.filter(M=>M.is_sphere)),k}function A(k){let S=t.photos(),D=S.fromDate(),P=S.toDate(),O=S.showsFlat(),T=S.showsPanoramic();if(D){let M=new Date(D);k=k.filter(({images:R})=>R[0].captured_at.getTime()>=M.getTime())}if(P){let M=new Date(P);k=k.filter(({images:R})=>R[R.length-1].captured_at.getTime()<=M.getTime())}return T||(k=k.filter(({images:M})=>!M[0].is_sphere)),O||(k=k.filter(({images:M})=>M[0].is_sphere)),k}function I(){let k=t.container().select(".photoviewer"),S=k.empty()?void 0:k.datum(),D=~~t.map().zoom(),P=D>=a,O=D>=o,T=f(),M=[],R=[];T&&(T.loadImages(t),M=T.sequences(e),R=P?T.images(e):[],R=w(R),M=A(M));let N=s.selectAll(".sequences").selectAll(".sequence").data(M,H=>H.key);N.exit().remove(),N.enter().append("path").attr("class","sequence").merge(N).attr("d",an(e).geojson);let U=s.selectAll(".markers").selectAll(".viewfield-group").data(R,H=>H.key);U.exit().remove();let B=U.enter().append("g").attr("class","viewfield-group").on("mouseenter",m).on("mouseleave",v).on("click",b);B.append("g").attr("class","viewfield-scale");let $=U.merge(B).sort((H,Z)=>H===S?1:Z===S?-1:Z.loc[1]-H.loc[1]).attr("transform",H=>y(H,S)).select(".viewfield-scale");$.selectAll("circle").data([0]).enter().append("circle").attr("dx","0").attr("dy","0").attr("r","6");let z=$.selectAll(".viewfield").data(O?[0]:[]);z.exit().remove(),z.enter().insert("path","circle").attr("class","viewfield").attr("transform","scale(1.5,1.5),translate(-8, -13)").attr("d",V);function V(){return this.parentNode.__data__.is_sphere?"M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0":"M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z"}}function E(k){let S=To.enabled,D=f();s=k.selectAll(".layer-vegbilder").data(D?[0]:[]),s.exit().remove();let P=s.enter().append("g").attr("class","layer-vegbilder").style("display",S?"block":"none");P.append("g").attr("class","sequences"),P.append("g").attr("class","markers"),s=P.merge(s),S&&(D&&~~t.map().zoom()>=i?(g(),I(),D.loadImages(t)):x())}return E.enabled=function(k){return arguments.length?(To.enabled=k,To.enabled?(p(),t.photos().on("change.vegbilder",I)):(d(),t.photos().on("change.vegbilder",null)),r.call("change"),this):To.enabled},E.supported=function(){return!!f()},E.rendered=function(k){return k>=i},E.validHere=function(k,S){return S>=i-2&&f().validHere(k)},c(),E}function Mo(e,t,r){let n=Lt(function(){r.call("change")},1e3),i=12,a=16,o=18,s=G(null),l;function u(){Mo.initialized||(Mo.enabled=!1,Mo.initialized=!0)}function c(){return de.mapillary&&!l?(l=de.mapillary,l.event.on("loadedImages",n)):!de.mapillary&&l&&(l=null),l}function f(){c()&&(d(),s.style("opacity",0).transition().duration(250).style("opacity",1).on("end",function(){r.call("change")}))}function p(){n.cancel(),s.transition().duration(250).style("opacity",0).on("end",g)}function d(){s.style("display","block")}function g(){s.selectAll(".viewfield-group").remove(),s.style("display","none")}function x(I,E){let k=c();k&&(k.ensureViewerLoaded(t).then(function(){k.selectImage(t,E.id).showViewer(t)}),t.map().centerEase(E.loc))}function b(I,E){let k=c();k&&k.setStyles(t,E)}function m(){let I=c();I&&I.setStyles(t,null)}function v(I){let E=ur(e)(I);return I.ca&&(E+=" rotate("+Math.floor(I.ca)+",0,0)"),E}function y(I){let E=t.photos().showsPanoramic(),k=t.photos().showsFlat(),S=t.photos().fromDate(),D=t.photos().toDate();return(!E||!k)&&(I=I.filter(function(P){return P.is_pano?E:k})),S&&(I=I.filter(function(P){return new Date(P.captured_at).getTime()>=new Date(S).getTime()})),D&&(I=I.filter(function(P){return new Date(P.captured_at).getTime()<=new Date(D).getTime()})),I}function _(I){let E=t.photos().showsPanoramic(),k=t.photos().showsFlat(),S=t.photos().fromDate(),D=t.photos().toDate();return(!E||!k)&&(I=I.filter(function(P){return P.properties.hasOwnProperty("is_pano")?P.properties.is_pano?E:k:!1})),S&&(I=I.filter(function(P){return new Date(P.properties.captured_at).getTime()>=new Date(S).getTime().toString()})),D&&(I=I.filter(function(P){return new Date(P.properties.captured_at).getTime()<=new Date(D).getTime().toString()})),I}function w(){let I=~~t.map().zoom(),E=I>=a,k=I>=o,S=c(),D=S?S.sequences(e):[],P=S&&E?S.images(e):[];P=y(P),D=_(D,S),S.filterViewer(t);let O=s.selectAll(".sequences").selectAll(".sequence").data(D,function(B){return B.properties.id});O.exit().remove(),O=O.enter().append("path").attr("class","sequence").merge(O).attr("d",an(e).geojson);let T=s.selectAll(".markers").selectAll(".viewfield-group").data(P,function(B){return B.id});T.exit().remove();let M=T.enter().append("g").attr("class","viewfield-group").on("mouseenter",b).on("mouseleave",m).on("click",x);M.append("g").attr("class","viewfield-scale");let R=T.merge(M).sort(function(B,$){return $.loc[1]-B.loc[1]}).attr("transform",v).select(".viewfield-scale");R.selectAll("circle").data([0]).enter().append("circle").attr("dx","0").attr("dy","0").attr("r","6");let N=R.selectAll(".viewfield").data(k?[0]:[]);N.exit().remove(),N.enter().insert("path","circle").attr("class","viewfield").classed("pano",function(){return this.parentNode.__data__.is_pano}).attr("transform","scale(1.5,1.5),translate(-8, -13)").attr("d",U);function U(){return this.parentNode.__data__.is_pano?"M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0":"M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z"}}function A(I){let E=Mo.enabled,k=c();s=I.selectAll(".layer-mapillary").data(k?[0]:[]),s.exit().remove();let S=s.enter().append("g").attr("class","layer-mapillary").style("display",E?"block":"none");S.append("g").attr("class","sequences"),S.append("g").attr("class","markers"),s=S.merge(s),E&&(k&&~~t.map().zoom()>=i?(d(),w(),k.loadImages(e)):g())}return A.enabled=function(I){return arguments.length?(Mo.enabled=I,Mo.enabled?(f(),t.photos().on("change.mapillary_images",w)):(p(),t.photos().on("change.mapillary_images",null)),r.call("change"),this):Mo.enabled},A.supported=function(){return!!c()},A.rendered=function(I){return I>=i},u(),A}function a8(e,t){let r=Lt(function(){d()},1e3),n=12,i=18,a=G(null),o,s;function l(){a8.initialized||(a8.initialized=!0)}function u(){return de.mapillary&&!o?(o=de.mapillary,o.event.on("imageChanged",r),o.event.on("bearingChanged",function(x){s=x.bearing,!t.map().isTransformed()&&a.selectAll(".viewfield-group.currentView").filter(function(b){return b.is_pano}).attr("transform",p)})):!de.mapillary&&o&&(o=null),o}function c(){a.style("display","block")}function f(){a.selectAll(".viewfield-group").remove(),a.style("display","none")}function p(x){let b=ur(e)(x);return x.is_pano&&s!==null&&isFinite(s)?b+=" rotate("+Math.floor(s)+",0,0)":x.ca&&(b+=" rotate("+Math.floor(x.ca)+",0,0)"),b}function d(){let b=~~t.map().zoom()>=i,m=u(),v=m&&m.getActiveImage(),y=a.selectAll(".markers").selectAll(".viewfield-group").data(v?[v]:[],function(I){return I.id});y.exit().remove();let _=y.enter().append("g").attr("class","viewfield-group currentView highlighted");_.append("g").attr("class","viewfield-scale");let w=y.merge(_).attr("transform",p).select(".viewfield-scale");w.selectAll("circle").data([0]).enter().append("circle").attr("dx","0").attr("dy","0").attr("r","6");let A=w.selectAll(".viewfield").data(b?[0]:[]);A.exit().remove(),A.enter().insert("path","circle").attr("class","viewfield").attr("transform","scale(1.5,1.5),translate(-8, -13)").attr("d","M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z")}function g(x){let b=u();a=x.selectAll(".layer-mapillary-position").data(b?[0]:[]),a.exit().remove();let m=a.enter().append("g").attr("class","layer-mapillary-position");m.append("g").attr("class","markers"),a=m.merge(a),b&&~~t.map().zoom()>=n?(c(),d()):f()}return g.enabled=function(){return d(),this},g.supported=function(){return!!u()},g.rendered=function(x){return x>=n},l(),g}function No(e,t,r){let n=Lt(function(){r.call("change")},1e3),i=12,a=G(null),o;function s(){No.initialized||(No.enabled=!1,No.initialized=!0)}function l(){return de.mapillary&&!o?(o=de.mapillary,o.event.on("loadedSigns",n)):!de.mapillary&&o&&(o=null),o}function u(){let m=l();m&&(m.loadSignResources(t),f())}function c(){n.cancel(),p()}function f(){a.style("display","block")}function p(){a.selectAll(".icon-sign").remove(),a.style("display","none")}function d(m,v){let y=l();if(!y)return;t.map().centerEase(v.loc);let _=y.getActiveImage()&&y.getActiveImage().id;y.getDetections(v.id).then(w=>{if(w.length){let A=w[0].image.id;A===_?y.highlightDetection(w[0]).selectImage(t,A):y.ensureViewerLoaded(t).then(function(){y.highlightDetection(w[0]).selectImage(t,A).showViewer(t)})}})}function g(m){var v=t.photos().fromDate(),y=t.photos().toDate();if(v){var _=new Date(v).getTime();m=m.filter(function(A){return new Date(A.last_seen_at).getTime()>=_})}if(y){var w=new Date(y).getTime();m=m.filter(function(A){return new Date(A.first_seen_at).getTime()<=w})}return m}function x(){let m=l(),v=m?m.signs(e):[];v=g(v);let y=ur(e),_=a.selectAll(".icon-sign").data(v,function(A){return A.id});_.exit().remove();let w=_.enter().append("g").attr("class","icon-sign icon-detected").on("click",d);w.append("use").attr("width","24px").attr("height","24px").attr("x","-12px").attr("y","-12px").attr("xlink:href",function(A){return"#"+A.value}),w.append("rect").attr("width","24px").attr("height","24px").attr("x","-12px").attr("y","-12px"),_.merge(w).attr("transform",y)}function b(m){let v=No.enabled,y=l();a=m.selectAll(".layer-mapillary-signs").data(y?[0]:[]),a.exit().remove(),a=a.enter().append("g").attr("class","layer-mapillary-signs layer-mapillary-detections").style("display",v?"block":"none").merge(a),v?y&&~~t.map().zoom()>=i?(f(),x(),y.loadSigns(e),y.showSignDetections(!0)):p():y&&y.showSignDetections(!1)}return b.enabled=function(m){return arguments.length?(No.enabled=m,No.enabled?(u(),t.photos().on("change.mapillary_signs",x)):(c(),t.photos().on("change.mapillary_signs",null)),r.call("change"),this):No.enabled},b.supported=function(){return!!l()},b.rendered=function(m){return m>=i},s(),b}function d1(e,t,r){let n=Lt(function(){r.call("change")},1e3),i=12,a=G(null),o;function s(){d1.initialized||(d1.enabled=!1,d1.initialized=!0)}function l(){return de.mapillary&&!o?(o=de.mapillary,o.event.on("loadedMapFeatures",n)):!de.mapillary&&o&&(o=null),o}function u(){let m=l();m&&(m.loadObjectResources(t),f())}function c(){n.cancel(),p()}function f(){a.style("display","block")}function p(){a.selectAll(".icon-map-feature").remove(),a.style("display","none")}function d(m,v){let y=l();if(!y)return;t.map().centerEase(v.loc);let _=y.getActiveImage()&&y.getActiveImage().id;y.getDetections(v.id).then(w=>{if(w.length){let A=w[0].image.id;A===_?y.highlightDetection(w[0]).selectImage(t,A):y.ensureViewerLoaded(t).then(function(){y.highlightDetection(w[0]).selectImage(t,A).showViewer(t)})}})}function g(m){let v=t.photos().fromDate(),y=t.photos().toDate();return v&&(m=m.filter(function(_){return new Date(_.last_seen_at).getTime()>=new Date(v).getTime()})),y&&(m=m.filter(function(_){return new Date(_.first_seen_at).getTime()<=new Date(y).getTime()})),m}function x(){let m=l(),v=m?m.mapFeatures(e):[];v=g(v);let y=ur(e),_=a.selectAll(".icon-map-feature").data(v,function(A){return A.id});_.exit().remove();let w=_.enter().append("g").attr("class","icon-map-feature icon-detected").on("click",d);w.append("title").text(function(A){var I=A.value.replace(/--/g,".").replace(/-/g,"_");return F("mapillary_map_features."+I)}),w.append("use").attr("width","24px").attr("height","24px").attr("x","-12px").attr("y","-12px").attr("xlink:href",function(A){return A.value==="object--billboard"?"#object--sign--advertisement":"#"+A.value}),w.append("rect").attr("width","24px").attr("height","24px").attr("x","-12px").attr("y","-12px"),_.merge(w).attr("transform",y)}function b(m){let v=d1.enabled,y=l();a=m.selectAll(".layer-mapillary-map-features").data(y?[0]:[]),a.exit().remove(),a=a.enter().append("g").attr("class","layer-mapillary-map-features layer-mapillary-detections").style("display",v?"block":"none").merge(a),v?y&&~~t.map().zoom()>=i?(f(),x(),y.loadMapFeatures(e),y.showFeatureDetections(!0)):p():y&&y.showFeatureDetections(!1)}return b.enabled=function(m){return arguments.length?(d1.enabled=m,d1.enabled?(u(),t.photos().on("change.mapillary_map_features",x)):(c(),t.photos().on("change.mapillary_map_features",null)),r.call("change"),this):d1.enabled},b.supported=function(){return!!l()},b.rendered=function(m){return m>=i},s(),b}function Po(e,t,r){var n=Lt(function(){r.call("change")},1e3),i=12,a=16,o=18,s=G(null),l;function u(){Po.initialized||(Po.enabled=!1,Po.initialized=!0)}function c(){return de.kartaview&&!l?(l=de.kartaview,l.event.on("loadedImages",n)):!de.kartaview&&l&&(l=null),l}function f(){var I=c();I&&(d(),s.style("opacity",0).transition().duration(250).style("opacity",1).on("end",function(){r.call("change")}))}function p(){n.cancel(),s.transition().duration(250).style("opacity",0).on("end",g)}function d(){s.style("display","block")}function g(){s.selectAll(".viewfield-group").remove(),s.style("display","none")}function x(I,E){var k=c();k&&(k.ensureViewerLoaded(t).then(function(){k.selectImage(t,E.key).showViewer(t)}),t.map().centerEase(E.loc))}function b(I,E){var k=c();k&&k.setStyles(t,E)}function m(){var I=c();I&&I.setStyles(t,null)}function v(I){var E=ur(e)(I);return I.ca&&(E+=" rotate("+Math.floor(I.ca)+",0,0)"),E}function y(I){var E=t.photos().fromDate(),k=t.photos().toDate(),S=t.photos().usernames();if(E){var D=new Date(E).getTime();I=I.filter(function(O){return new Date(O.captured_at).getTime()>=D})}if(k){var P=new Date(k).getTime();I=I.filter(function(O){return new Date(O.captured_at).getTime()<=P})}return S&&(I=I.filter(function(O){return S.indexOf(O.captured_by)!==-1})),I}function _(I){var E=t.photos().fromDate(),k=t.photos().toDate(),S=t.photos().usernames();if(E){var D=new Date(E).getTime();I=I.filter(function(O){return new Date(O.properties.captured_at).getTime()>=D})}if(k){var P=new Date(k).getTime();I=I.filter(function(O){return new Date(O.properties.captured_at).getTime()<=P})}return S&&(I=I.filter(function(O){return S.indexOf(O.properties.captured_by)!==-1})),I}function w(){var I=t.container().select(".photoviewer"),E=I.empty()?void 0:I.datum(),k=~~t.map().zoom(),S=k>=a,D=k>=o,P=c(),O=[],T=[];t.photos().showsFlat()&&(O=P?P.sequences(e):[],T=P&&S?P.images(e):[],O=_(O),T=y(T));var M=s.selectAll(".sequences").selectAll(".sequence").data(O,function($){return $.properties.key});M.exit().remove(),M=M.enter().append("path").attr("class","sequence").merge(M).attr("d",an(e).geojson);var R=s.selectAll(".markers").selectAll(".viewfield-group").data(T,function($){return $.key});R.exit().remove();var N=R.enter().append("g").attr("class","viewfield-group").on("mouseenter",b).on("mouseleave",m).on("click",x);N.append("g").attr("class","viewfield-scale");var U=R.merge(N).sort(function($,z){return $===E?1:z===E?-1:z.loc[1]-$.loc[1]}).attr("transform",v).select(".viewfield-scale");U.selectAll("circle").data([0]).enter().append("circle").attr("dx","0").attr("dy","0").attr("r","6");var B=U.selectAll(".viewfield").data(D?[0]:[]);B.exit().remove(),B.enter().insert("path","circle").attr("class","viewfield").attr("transform","scale(1.5,1.5),translate(-8, -13)").attr("d","M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z")}function A(I){var E=Po.enabled,k=c();s=I.selectAll(".layer-kartaview").data(k?[0]:[]),s.exit().remove();var S=s.enter().append("g").attr("class","layer-kartaview").style("display",E?"block":"none");S.append("g").attr("class","sequences"),S.append("g").attr("class","markers"),s=S.merge(s),E&&(k&&~~t.map().zoom()>=i?(d(),w(),k.loadImages(e)):g())}return A.enabled=function(I){return arguments.length?(Po.enabled=I,Po.enabled?(f(),t.photos().on("change.kartaview_images",w)):(p(),t.photos().on("change.kartaview_images",null)),r.call("change"),this):Po.enabled},A.supported=function(){return!!c()},A.rendered=function(I){return I>=i},u(),A}function Oo(e,t,r){let n=Lt(function(){r.call("change")},1e3),i=12,a=G(null),o,s=18;function l(){Oo.initialized||(Oo.enabled=!1,Oo.initialized=!0)}function u(){return de.mapilio&&!o?(o=de.mapilio,o.event.on("loadedImages",n)):!de.mapilio&&o&&(o=null),o}function c(){u()&&(d(),a.style("opacity",0).transition().duration(250).style("opacity",1).on("end",function(){r.call("change")}))}function f(){n.cancel(),a.transition().duration(250).style("opacity",0).on("end",g)}function p(_){let w=ur(e)(_);return _.heading&&(w+=" rotate("+Math.floor(_.heading)+",0,0)"),w}function d(){a.style("display","block")}function g(){a.selectAll(".viewfield-group").remove(),a.style("display","none")}function x(_,w){let A=u();A&&(A.ensureViewerLoaded(t,w.id).then(function(){A.selectImage(t,w.id).showViewer(t)}),t.map().centerEase(w.loc))}function b(_,w){let A=u();A&&A.setStyles(t,w)}function m(){let _=u();_&&_.setStyles(t,null)}function v(){let w=~~t.map().zoom()>=s,A=u(),I=A?A.sequences(e):[],E=A?A.images(e):[],k=a.selectAll(".sequences").selectAll(".sequence").data(I,function(M){return M.properties.id});k.exit().remove(),k.enter().append("path").attr("class","sequence").merge(k).attr("d",an(e).geojson);let S=a.selectAll(".markers").selectAll(".viewfield-group").data(E,function(M){return M.id});S.exit().remove();let D=S.enter().append("g").attr("class","viewfield-group").on("mouseenter",b).on("mouseleave",m).on("click",x);D.append("g").attr("class","viewfield-scale");let P=S.merge(D).sort(function(M,R){return R.loc[1]-M.loc[1]}).attr("transform",p).select(".viewfield-scale");P.selectAll("circle").data([0]).enter().append("circle").attr("dx","0").attr("dy","0").attr("r","6");let O=P.selectAll(".viewfield").data(w?[0]:[]);O.exit().remove(),O.enter().insert("path","circle").attr("class","viewfield").attr("transform","scale(1.5,1.5),translate(-8, -13)").attr("d",T);function T(){return this.parentNode.__data__.isPano?"M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0":"M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z"}}function y(_){let w=Oo.enabled,A=u();a=_.selectAll(".layer-mapilio").data(A?[0]:[]),a.exit().remove();let I=a.enter().append("g").attr("class","layer-mapilio").style("display",w?"block":"none");I.append("g").attr("class","sequences"),I.append("g").attr("class","markers"),a=I.merge(a),w&&(A&&~~t.map().zoom()>=i?(d(),v(),A.loadImages(e),A.loadLines(e)):g())}return y.enabled=function(_){return arguments.length?(Oo.enabled=_,Oo.enabled?(c(),t.photos().on("change.mapilio_images",null)):(f(),t.photos().on("change.mapilio_images",null)),r.call("change"),this):Oo.enabled},y.supported=function(){return!!u()},y.rendered=function(_){return _>=i},l(),y}function o8(e,t,r){var n=!0;function i(s){s.selectAll(".layer-osm").data(["covered","areas","lines","points","labels"]).enter().append("g").attr("class",function(l){return"layer-osm "+l}),s.selectAll(".layer-osm.points").selectAll(".points-group").data(["points","midpoints","vertices","turns"]).enter().append("g").attr("class",function(l){return"points-group "+l})}function a(){var s=t.surface().selectAll(".data-layer.osm");s.interrupt(),s.classed("disabled",!1).style("opacity",0).transition().duration(250).style("opacity",1).on("end interrupt",function(){r.call("change")})}function o(){var s=t.surface().selectAll(".data-layer.osm");s.interrupt(),s.transition().duration(250).style("opacity",0).on("end interrupt",function(){s.classed("disabled",!0),r.call("change")})}return i.enabled=function(s){return arguments.length?(n=s,n?a():o(),r.call("change"),this):n},i}var su=!1,lu;function s8(e,t,r){r||(r=xe("change"));var n=Lt(function(){r.call("change")},1e3),i=12,a=G(null),o=G(null),s=!1;function l(b,m){b.attr("class",m).attr("transform","translate(-8, -22)").attr("d","m17.5,0l-15,0c-1.37,0 -2.5,1.12 -2.5,2.5l0,11.25c0,1.37 1.12,2.5 2.5,2.5l3.75,0l0,3.28c0,0.38 0.43,0.6 0.75,0.37l4.87,-3.65l5.62,0c1.37,0 2.5,-1.12 2.5,-2.5l0,-11.25c0,-1.37 -1.12,-2.5 -2.5,-2.5z")}function u(){return de.osm&&!lu?(lu=de.osm,lu.on("loadedNotes",n)):!de.osm&&lu&&(lu=null),lu}function c(){s||(s=!0,o.style("display","block"))}function f(){s&&(s=!1,o.style("display","none"),o.selectAll(".note").remove(),a.selectAll(".note").remove())}function p(){c(),o.style("opacity",0).transition().duration(250).style("opacity",1).on("end interrupt",function(){r.call("change")})}function d(){n.cancel(),o.interrupt(),a.selectAll(".note").remove(),o.transition().duration(250).style("opacity",0).on("end interrupt",function(){f(),r.call("change")})}function g(){if(!s||!su)return;var b=u(),m=t.selectedNoteID(),v=b?b.notes(e):[],y=ur(e),_=o.selectAll(".note").data(v,function(k){return k.status+k.id});_.exit().remove();var w=_.enter().append("g").attr("class",function(k){return"note note-"+k.id+" "+k.status}).classed("new",function(k){return k.id<0});if(w.append("ellipse").attr("cx",.5).attr("cy",1).attr("rx",6.5).attr("ry",3).attr("class","stroke"),w.append("path").call(l,"shadow"),w.append("use").attr("class","note-fill").attr("width","20px").attr("height","20px").attr("x","-8px").attr("y","-22px").attr("xlink:href","#iD-icon-note"),w.selectAll(".icon-annotation").data(function(k){return[k]}).enter().append("use").attr("class","icon-annotation").attr("width","10px").attr("height","10px").attr("x","-3px").attr("y","-19px").attr("xlink:href",function(k){return k.id<0?"#iD-icon-plus":k.status==="open"?"#iD-icon-close":"#iD-icon-apply"}),_.merge(w).sort(E).classed("selected",function(k){var S=t.mode(),D=S&&S.id==="drag-note";return!D&&k.id===m}).attr("transform",y),a.empty())return;var A=t.getDebug("target")?"pink ":"nocolor ",I=a.selectAll(".note").data(v,function(k){return k.id});I.exit().remove(),I.enter().append("rect").attr("width","20px").attr("height","20px").attr("x","-8px").attr("y","-22px").merge(I).sort(E).attr("class",function(k){var S=k.id<0?"new":"";return"note target note-"+k.id+" "+A+S}).attr("transform",y);function E(k,S){return k.id===m?1:S.id===m?-1:S.loc[1]-k.loc[1]}}function x(b){var m=u(),v=t.surface();v&&!v.empty()&&(a=v.selectAll(".data-layer.touch .layer-touch.markers")),o=b.selectAll(".layer-notes").data(m?[0]:[]),o.exit().remove(),o=o.enter().append("g").attr("class","layer-notes").style("display",su?"block":"none").merge(o),su&&(m&&~~t.map().zoom()>=i?(c(),m.loadNotes(e),g()):f())}return x.enabled=function(b){return arguments.length?(su=b,su?p():(d(),t.selectedNoteID()&&t.enter(Ge(t))),r.call("change"),this):su},x}function l8(){function e(t){t.selectAll(".layer-touch").data(["areas","lines","points","turns","markers"]).enter().append("g").attr("class",function(r){return"layer-touch "+r})}return e}function rM(e,t){var r=t.getBoundingClientRect(),n=[r.width,r.height];return e.property("__dimensions__",n),n}function gi(e,t){if(!e||e.empty())return[0,0];var r=e.node(),n=e.property("__dimensions__");return!n||t?rM(e,r):n}function ec(e,t){if(!e||e.empty())return e;var r=e.node();return t===null?(rM(e,r),e):e.property("__dimensions__",[t[0],t[1]]).attr("width",t[0]).attr("height",t[1])}function uu(e,t){var r=xe("change"),n=G(null),i=[{id:"osm",layer:o8(e,t,r)},{id:"notes",layer:s8(e,t,r)},{id:"data",layer:H2(e,t,r)},{id:"keepRight",layer:L9(e,t,r)},{id:"improveOSM",layer:eM(e,t,r)},{id:"osmose",layer:tM(e,t,r)},{id:"streetside",layer:Do(e,t,r)},{id:"mapillary",layer:Mo(e,t,r)},{id:"mapillary-position",layer:a8(e,t,r)},{id:"mapillary-map-features",layer:d1(e,t,r)},{id:"mapillary-signs",layer:No(e,t,r)},{id:"kartaview",layer:Po(e,t,r)},{id:"mapilio",layer:Oo(e,t,r)},{id:"vegbilder",layer:To(e,t,r)},{id:"local-photos",layer:JT(e,t,r)},{id:"debug",layer:W2(e,t,r)},{id:"geolocate",layer:Io(e,t,r)},{id:"touch",layer:l8(e,t,r)}];function a(o){n=o.selectAll(".surface").data([0]),n=n.enter().append("svg").attr("class","surface").merge(n);var s=n.selectAll(".surface-defs").data([0]);s.enter().append("defs").attr("class","surface-defs");var l=n.selectAll(".data-layer").data(i);l.exit().remove(),l.enter().append("g").attr("class",function(u){return"data-layer "+u.id}).merge(l).each(function(u){G(this).call(u.layer)})}return a.all=function(){return i},a.layer=function(o){var s=i.find(function(l){return l.id===o});return s&&s.layer},a.only=function(o){var s=[].concat(o),l=i.map(function(u){return u.id});return a.remove($r(l,s))},a.remove=function(o){var s=[].concat(o);return s.forEach(function(l){i=i.filter(function(u){return u.id!==l})}),r.call("change"),this},a.add=function(o){var s=[].concat(o);return s.forEach(function(l){"id"in l&&"layer"in l&&i.push(l)}),r.call("change"),this},a.dimensions=function(o){return arguments.length?(ec(n,o),this):gi(n)},ke(a,r,"on")}var tc=xt(Za());function cu(e,t){var r=br(),n={motorway:0,motorway_link:1,trunk:2,trunk_link:3,primary:4,primary_link:5,secondary:6,tertiary:7,unclassified:8,residential:9,service:10,busway:11,footway:12};function i(o,s,l,u){var c=t.getDebug("target")?"pink ":"nocolor ",f=t.getDebug("target")?"red ":"nocolor ",p=an(e).geojson,d=t.activeID(),g=t.history().base(),x={targets:[],nopes:[]};l.forEach(function(w){var A=G2(w,s,d);x.targets.push.apply(x.targets,A.passive),x.nopes.push.apply(x.nopes,A.active)});var b=x.targets.filter(p),m=o.selectAll(".line.target-allowed").filter(function(w){return u(w.properties.entity)}).data(b,function(A){return A.id});m.exit().remove();var v=function(w){var A=w.properties.entity.id;return!g.entities[A]||!(0,tc.default)(s.entities[A].nodes,g.entities[A].nodes)?!1:w.properties.nodes.some(function(I){return!g.entities[I.id]||!(0,tc.default)(s.entities[I.id].loc,g.entities[I.id].loc)})};m.enter().append("path").merge(m).attr("d",p).attr("class",function(w){return"way line target target-allowed "+c+w.id}).classed("segment-edited",v);var y=x.nopes.filter(p),_=o.selectAll(".line.target-nope").filter(function(w){return u(w.properties.entity)}).data(y,function(A){return A.id});_.exit().remove(),_.enter().append("path").merge(_).attr("d",p).attr("class",function(w){return"way line target target-nope "+f+w.id}).classed("segment-edited",v)}function a(o,s,l,u){var c=t.history().base();function f(S,D){var P=t.selectedIDs(),O=P.indexOf(S.id)!==-1?20:0,T=P.indexOf(D.id)!==-1?20:0;return S.tags.highway&&(O-=n[S.tags.highway]),D.tags.highway&&(T-=n[D.tags.highway]),O-T}function p(S,D,P){var O=t.mode(),T=O&&/^draw/.test(O.id),M=!T&&P?"selected ":"",R=S.selectAll("path").filter(u).data(d(P),qe.key);return R.exit().remove(),R.enter().append("path").attr("class",function(N){var U="way line";if(!N.hasInterestingTags()){var B=s.parentRelations(N),$=B.filter(function(V){return V.isMultipolygon()});$.length>0&&B.length===$.length&&(U="relation area")}var z=y[N.id]?"old-multipolygon ":"";return U+" "+D+" "+M+z+N.id}).classed("added",function(N){return!c.entities[N.id]}).classed("geometry-edited",function(N){return s.entities[N.id]&&c.entities[N.id]&&!(0,tc.default)(s.entities[N.id].nodes,c.entities[N.id].nodes)}).classed("retagged",function(N){return s.entities[N.id]&&c.entities[N.id]&&!(0,tc.default)(s.entities[N.id].tags,c.entities[N.id].tags)}).call(ra()).merge(R).sort(f).attr("d",x).call(ra().tags(I9(s))),S}function d(S){return function(){var D=this.parentNode.__data__,P=A[D]||[];return P.filter(function(O){return S?t.selectedIDs().indexOf(O.id)!==-1:t.selectedIDs().indexOf(O.id)===-1})}}function g(S,D,P,O,T){var M=S.selectAll("g."+P).data([D]);M=M.enter().append("g").attr("class",P).merge(M);var R=M.selectAll("path").filter(u).data(function(){return O[this.parentNode.__data__]||[]},function(U){return[U.id,U.index]});R.exit().remove(),R=R.enter().append("path").attr("class",D).merge(R).attr("marker-mid",T).attr("d",function(N){return N.d}),r.ie&&R.each(function(){this.parentNode.insertBefore(this,this)})}for(var x=an(e,s),b=[],m={},v={},y={},_=0;_40){var A=ar(y.loc,_.loc,.5),I=null;if(u.intersects(A))I=A;else for(var E=0;E<4;E++)if(A=Ba([y.loc,_.loc],[d[E],d[E+1]]),A&&_t(e(y.loc),e(A))>20&&_t(e(_.loc),e(A))>20){I=A;break}I&&(g[w]={type:"midpoint",id:w,loc:I,edge:[y.id,_.id],parents:[b]})}}}function k(P){if(g[P.id])return!0;for(var O=0;O=18&&_.directions(l,e).length)}var x=f?[]:u.filter(g);x.sort(n);var b=s.selectAll(".layer-osm.points .points-group.points"),m=s.selectAll(".layer-touch.points"),v=b.selectAll("g.point").filter(c).data(x,i);v.exit().remove();var y=v.enter().append("g").attr("class",function(_){return"node point "+_.id}).order();y.append("path").call(r,"shadow"),y.append("ellipse").attr("cx",.5).attr("cy",1).attr("rx",6.5).attr("ry",3).attr("class","stroke"),y.append("path").call(r,"stroke"),y.append("use").attr("transform","translate(-5.5, -20)").attr("class","icon").attr("width","12px").attr("height","12px"),v=v.merge(y).attr("transform",ur(e)).classed("added",function(_){return!d.entities[_.id]}).classed("moved",function(_){return d.entities[_.id]&&!(0,Py.default)(l.entities[_.id].loc,d.entities[_.id].loc)}).classed("retagged",function(_){return d.entities[_.id]&&!(0,Py.default)(l.entities[_.id].tags,d.entities[_.id].tags)}).call(ra()),v.select(".shadow"),v.select(".stroke"),v.select(".icon").attr("xlink:href",function(_){var w=$e.match(_,l),A=w&&w.icon;return A?"#"+A:""}),m.call(a,l,x,c)}return o}function f8(e,t){function r(i){var a=i.u?"-u":"";return i.no?"#iD-turn-no"+a:i.only?"#iD-turn-only"+a:"#iD-turn-yes"+a}function n(i,a,o){function s(x){var b=50,m=a.entity(x.to.way),v=a.childNodes(m).map(function(S){return S.loc}).map(e),y=$s(v),_=y/2,w=a.entity(x.to.node),A=a.entity(x.to.vertex),I=En(A,w,e),E=e(A.loc),k=x.u?0:m.__via?Math.min(_,b):b;return"translate("+(k*Math.cos(I)+E[0])+","+(k*Math.sin(I)+E[1])+") rotate("+I*180/Math.PI+")"}var l=i.selectAll(".layer-osm.points .points-group.turns"),u=i.selectAll(".layer-touch.turns"),c=l.selectAll("g.turn").data(o,function(x){return x.key});c.exit().remove();var f=c.enter().append("g").attr("class",function(x){return"turn "+x.key}),p=f.filter(function(x){return!x.u});p.append("rect").attr("transform","translate(-22, -12)").attr("width","44").attr("height","24"),p.append("use").attr("transform","translate(-22, -12)").attr("width","44").attr("height","24");var d=f.filter(function(x){return x.u});d.append("circle").attr("r","16"),d.append("use").attr("transform","translate(-16, -16)").attr("width","32").attr("height","32"),c=c.merge(f).attr("opacity",function(x){return x.direct===!1?"0.7":null}).attr("transform",s),c.select("use").attr("xlink:href",r),c.select("rect"),c.select("circle");var g=t.getDebug("target")?"pink ":"nocolor ";return c=u.selectAll("g.turn").data(o,function(x){return x.key}),c.exit().remove(),f=c.enter().append("g").attr("class",function(x){return"turn "+x.key}),p=f.filter(function(x){return!x.u}),p.append("rect").attr("class","target "+g).attr("transform","translate(-22, -12)").attr("width","44").attr("height","24"),d=f.filter(function(x){return x.u}),d.append("circle").attr("class","target "+g).attr("r","16"),c=c.merge(f).attr("transform",s),c.select("rect"),c.select("circle"),this}return n}var rc=xt(Za());function fu(e,t){var r={shadow:[6,7.5,7.5,12],stroke:[2.5,3.5,3.5,8],fill:[1,1.5,1.5,1.5]},n,i={},a={},o={},s={},l={},u={};function c(v,y){return y.loc[1]-v.loc[1]}function f(v){var y=t.mode(),_=y&&/^(add|draw|drag|move|rotate)/.test(y.id);return _?v.id:qe.key(v)}function p(v,y,_,w,A){w=w||{selected:{},important:{},hovered:{}};var I={},E={},k=t.surface().classed("fill-wireframe"),S=hr(e.scale()),D=S<17?0:S<18?1:2,P=t.activeID(),O=t.history().base();function T(V){var H=y.entity(V.id);return H.id in I||(I[H.id]=H.hasInterestingTags()&&$e.match(H,y).icon),I[H.id]}function M(V){if(V.id in E)return E[V.id];var H=V.directions(y,e);return E[V.id]=H.length?H:!1,H}function R(V){["shadow","stroke","fill"].forEach(function(H){var Z=r[H];V.selectAll("."+H).each(function(oe){var pe=D&&T(oe),ne=Z[pe?3:D];oe.id!==P&&oe.isEndpoint(y)&&!oe.isConnected(y)&&(ne+=1.5),H==="shadow"&&(u[oe.id]=ne),G(this).attr("r",ne).attr("visibility",pe&&H==="fill"?"hidden":null)})})}_.sort(c);var N=v.selectAll("g.vertex").filter(A).data(_,f);N.exit().remove();var U=N.enter().append("g").attr("class",function(V){return"node vertex "+V.id}).order();U.append("circle").attr("class","shadow"),U.append("circle").attr("class","stroke"),U.filter(function(V){return V.hasInterestingTags()}).append("circle").attr("class","fill"),N=N.merge(U).attr("transform",ur(e)).classed("sibling",function(V){return V.id in w.selected}).classed("shared",function(V){return y.isShared(V)}).classed("endpoint",function(V){return V.isEndpoint(y)}).classed("added",function(V){return!O.entities[V.id]}).classed("moved",function(V){return O.entities[V.id]&&!(0,rc.default)(y.entities[V.id].loc,O.entities[V.id].loc)}).classed("retagged",function(V){return O.entities[V.id]&&!(0,rc.default)(y.entities[V.id].tags,O.entities[V.id].tags)}).call(R);var B=N.selectAll(".icon").data(function(H){return S>=17&&T(H)?[H]:[]},f);B.exit().remove(),B.enter().append("use").attr("class","icon").attr("width","12px").attr("height","12px").attr("transform","translate(-6, -6)").attr("xlink:href",function(V){var H=T(V);return H?"#"+H:""});var $=N.selectAll(".viewfieldgroup").data(function(H){return S>=18&&M(H)?[H]:[]},f);$.exit().remove(),$=$.enter().insert("g",".shadow").attr("class","viewfieldgroup").merge($);var z=$.selectAll(".viewfield").data(M,function(H){return qe.key(H)});z.exit().remove(),z.enter().append("path").attr("class","viewfield").attr("d","M0,0H0").merge(z).attr("marker-start","url(#ideditor-viewfield-marker"+(k?"-wireframe":"")+")").attr("transform",function(V){return"rotate("+V+")"})}function d(v,y,_,w){var A=t.getDebug("target")?"pink ":"nocolor ",I=t.getDebug("target")?"red ":"nocolor ",E=ur(e).geojson,k=t.activeID(),S={targets:[],nopes:[]};_.forEach(function(O){if(k!==O.id){var T=U5(O,y,k);T!==0?S.targets.push({type:"Feature",id:O.id,properties:{target:!0,entity:O},geometry:O.asGeoJSON()}):S.nopes.push({type:"Feature",id:O.id+"-nope",properties:{nope:!0,target:!0,entity:O},geometry:O.asGeoJSON()})}});var D=v.selectAll(".vertex.target-allowed").filter(function(O){return w(O.properties.entity)}).data(S.targets,function(T){return T.id});D.exit().remove(),D.enter().append("circle").attr("r",function(O){return u[O.id]||r.shadow[3]}).merge(D).attr("class",function(O){return"node vertex target target-allowed "+A+O.id}).attr("transform",E);var P=v.selectAll(".vertex.target-nope").filter(function(O){return w(O.properties.entity)}).data(S.nopes,function(T){return T.id});P.exit().remove(),P.enter().append("circle").attr("r",function(O){return u[O.properties.entity.id]||r.shadow[3]}).merge(P).attr("class",function(O){return"node vertex target target-nope "+I+O.id}).attr("transform",E)}function g(v,y,_,w){var A=v.geometry(y);return A==="vertex"||A==="point"&&(_||w>=18&&v.directions(y,e).length)}function x(v,y,_){var w=y.entities[v.id],A=_.entities[v.id];return!A||!w||!(0,rc.default)(A.tags,w.tags)||!(0,rc.default)(A.loc,w.loc)}function b(v,y,_,w){var A={},I={};function E(k){if(!I[k.id]){I[k.id]=!0;var S=k.geometry(y);if(!t.features().isHiddenFeature(k,y,S)){var D;if(k.type==="way")for(D=0;Dn?(n+i)/2:Math.min(0,n)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function iM(){var e=oJ,t=sJ,r=uJ,n=lJ,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],o=k3,s=xe("start","zoom","end"),l=150,u=Yr,c;function f(E){E.on("pointerdown.zoom",w).on("wheel.zoom",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)"),G(window).on("pointermove.zoompan",A).on("pointerup.zoompan pointercancel.zoompan",I)}f.transform=function(E,k,S){var D=E.selection?E.selection():E;E!==D?x(E,k,S):D.interrupt().each(function(){b(this,arguments).start(null).zoom(null,null,typeof k=="function"?k.apply(this,arguments):k).end(null)})},f.scaleBy=function(E,k,S){f.scaleTo(E,function(){var D=u.k,P=typeof k=="function"?k.apply(this,arguments):k;return D*P},S)},f.scaleTo=function(E,k,S){f.transform(E,function(){var D=t.apply(this,arguments),P=u,O=S?typeof S=="function"?S.apply(this,arguments):S:g(D),T=P.invert(O),M=typeof k=="function"?k.apply(this,arguments):k;return r(d(p(P,M),O,T),D,a)},S)},f.translateBy=function(E,k,S){f.transform(E,function(){return r(u.translate(typeof k=="function"?k.apply(this,arguments):k,typeof S=="function"?S.apply(this,arguments):S),t.apply(this,arguments),a)})},f.translateTo=function(E,k,S,D){f.transform(E,function(){var P=t.apply(this,arguments),O=u,T=D?typeof D=="function"?D.apply(this,arguments):D:g(P);return r(Yr.translate(T[0],T[1]).scale(O.k).translate(typeof k=="function"?-k.apply(this,arguments):-k,typeof S=="function"?-S.apply(this,arguments):-S),P,a)},D)};function p(E,k){return k=Math.max(i[0],Math.min(i[1],k)),k===E.k?E:new Ti(k,E.x,E.y)}function d(E,k,S){var D=k[0]-S[0]*E.k,P=k[1]-S[1]*E.k;return D===E.x&&P===E.y?E:new Ti(E.k,D,P)}function g(E){return[(+E[0][0]+ +E[1][0])/2,(+E[0][1]+ +E[1][1])/2]}function x(E,k,S){E.on("start.zoom",function(){b(this,arguments).start(null)}).on("interrupt.zoom end.zoom",function(){b(this,arguments).end(null)}).tween("zoom",function(){var D=this,P=arguments,O=b(D,P),T=t.apply(D,P),M=S?typeof S=="function"?S.apply(D,P):S:g(T),R=Math.max(T[1][0]-T[0][0],T[1][1]-T[0][1]),N=u,U=typeof k=="function"?k.apply(D,P):k,B=o(N.invert(M).concat(R/N.k),U.invert(M).concat(R/U.k));return function($){if($===1)$=U;else{var z=B($),V=R/z[2];$=new Ti(V,M[0]-z[0]*V,M[1]-z[1]*V)}O.zoom(null,null,$)}})}function b(E,k,S){return!S&&c||new m(E,k)}function m(E,k){this.that=E,this.args=k,this.active=0,this.extent=t.apply(E,k)}m.prototype={start:function(E){return++this.active===1&&(c=this,s.call("start",this,E)),this},zoom:function(E,k,S){return this.mouse&&k!=="mouse"&&(this.mouse[1]=S.invert(this.mouse[0])),this.pointer0&&k!=="touch"&&(this.pointer0[1]=S.invert(this.pointer0[0])),this.pointer1&&k!=="touch"&&(this.pointer1[1]=S.invert(this.pointer1[0])),u=S,s.call("zoom",this,E,k,S),this},end:function(E){return--this.active===0&&(c=null,s.call("end",this,E)),this}};function v(E){if(!e.apply(this,arguments))return;var k=b(this,arguments),S=u,D=Math.max(i[0],Math.min(i[1],S.k*Math.pow(2,n.apply(this,arguments)))),P=rn(this)(E);k.wheel?((k.mouse[0][0]!==P[0]||k.mouse[0][1]!==P[1])&&(k.mouse[1]=S.invert(k.mouse[0]=P)),clearTimeout(k.wheel)):(k.mouse=[P,S.invert(P)],_o(this),k.start(E)),E.preventDefault(),E.stopImmediatePropagation(),k.wheel=setTimeout(O,l),k.zoom(E,"mouse",r(d(p(S,D),k.mouse[0],k.mouse[1]),k.extent,a));function O(){k.wheel=null,k.end(E)}}var y=new Set,_;function w(E){if(y.add(E.pointerId),!!e.apply(this,arguments)){var k=b(this,arguments,y.size===1),S;E.stopImmediatePropagation(),_=rn(this);var D=_(E),P=[D,u.invert(D),E.pointerId];k.pointer0?!k.pointer1&&k.pointer0[2]!==P[2]&&(k.pointer1=P):(k.pointer0=P,S=!0),S&&(_o(this),k.start(E))}}function A(E){if(y.has(E.pointerId)&&!(!c||!_)){var k=b(this,arguments),S=k.pointer0&&k.pointer0[2]===E.pointerId,D=!S&&k.pointer1&&k.pointer1[2]===E.pointerId;if((S||D)&&"buttons"in E&&!E.buttons){k.pointer0&&y.delete(k.pointer0[2]),k.pointer1&&y.delete(k.pointer1[2]),k.end(E);return}E.preventDefault(),E.stopImmediatePropagation();var P=_(E),O,T,M;if(S?k.pointer0[0]=P:D&&(k.pointer1[0]=P),O=u,k.pointer1){var R=k.pointer0[0],N=k.pointer0[1],U=k.pointer1[0],B=k.pointer1[1],$=($=U[0]-R[0])*$+($=U[1]-R[1])*$,z=(z=B[0]-N[0])*z+(z=B[1]-N[1])*z;O=p(O,Math.sqrt($/z)),T=[(R[0]+U[0])/2,(R[1]+U[1])/2],M=[(N[0]+B[0])/2,(N[1]+B[1])/2]}else if(k.pointer0)T=k.pointer0[0],M=k.pointer0[1];else return;k.zoom(E,"touch",r(d(O,T,M),k.extent,a))}}function I(E){if(y.has(E.pointerId)&&(y.delete(E.pointerId),!!c)){var k=b(this,arguments);E.stopImmediatePropagation(),k.pointer0&&k.pointer0[2]===E.pointerId?delete k.pointer0:k.pointer1&&k.pointer1[2]===E.pointerId&&delete k.pointer1,k.pointer1&&!k.pointer0&&(k.pointer0=k.pointer1,delete k.pointer1),k.pointer0?k.pointer0[1]=u.invert(k.pointer0[0]):k.end(E)}}return f.wheelDelta=function(E){return arguments.length?(n=zt(+E),f):n},f.filter=function(E){return arguments.length?(e=zt(!!E),f):e},f.extent=function(E){return arguments.length?(t=zt([[+E[0][0],+E[0][1]],[+E[1][0],+E[1][1]]]),f):t},f.scaleExtent=function(E){return arguments.length?(i[0]=+E[0],i[1]=+E[1],f):[i[0],i[1]]},f.translateExtent=function(E){return arguments.length?(a[0][0]=+E[0][0],a[1][0]=+E[1][0],a[0][1]=+E[0][1],a[1][1]=+E[1][1],f):[[a[0][0],a[0][1]],[a[1][0],a[1][1]]]},f.constrain=function(E){return arguments.length?(r=E,f):r},f.interpolate=function(E){return arguments.length?(o=E,f):o},f._transform=function(E){return arguments.length?(u=E,f):u},ke(f,s,"on")}function aM(){var e=xe("doubleUp"),t=500,r=20,n;function i(l){return new Date().getTime()-n.startTime<=t&&_t(n.startLoc,l)<=r}function a(l){if(!(l.ctrlKey||l.button===2)){var u=[l.clientX,l.clientY];n&&!i(u)&&(n=void 0),n?n.pointerId=l.pointerId:n={startLoc:u,startTime:new Date().getTime(),upCount:0,pointerId:l.pointerId}}}function o(l){if(!(l.ctrlKey||l.button===2)&&!(!n||n.pointerId!==l.pointerId)&&(n.upCount+=1,n.upCount===2)){var u=[l.clientX,l.clientY];if(i(u)){var c=rn(this)(l);e.call("doubleUp",this,l,c)}n=void 0}}function s(l){"PointerEvent"in window?l.on("pointerdown.doubleUp",a).on("pointerup.doubleUp",o):l.on("dblclick.doubleUp",function(u){e.call("doubleUp",this,u,rn(this)(u))})}return s.off=function(l){l.on("pointerdown.doubleUp",null).on("pointerup.doubleUp",null).on("dblclick.doubleUp",null)},ke(s,e,"on")}var pu=256,oM=2,sM=24,B0=jn(oM,pu),$0=jn(sM,pu);function m1(e,t,r){return Math.max(t,Math.min(e,r))}function p8(e){var t=xe("move","drawn","crossEditableZoom","hitMinZoom","changeHighlighting","changeAreaFill"),r=e.projection,n=e.curtainProjection,i,a,o,s,l,u,c,f=G(null),p=G(null),d=G(null),g=G(null),x=[1,1],b=!0,m=!0,v,y=r.transform(),_,w=!1,A=0,I,E,k,S=!1,D="PointerEvent"in window?"pointer":"mouse",P="PointerEvent"in window?iM:Eo,O=P().scaleExtent([B0,$0]).interpolate(Ua).filter(U).on("zoom.map",H).on("start.map",function(te){S=te&&(te.type==="pointerdown"||te.sourceEvent&&te.sourceEvent.type==="pointerdown")}).on("end.map",function(){S=!1}),T=aM(),M=Lt(oe,750);function R(){M.cancel()}function N(te){f=te,e.on("change.map",pe);var le=e.connection();le&&le.on("change.map",pe);function Se(Le){var We=e.mode().id;We!=="browse"&&We!=="select"||Le&&N.transformEase(Le)}e.history().on("merge.map",function(){M()}).on("change.map",pe).on("undone.map",function(Le,We){Se(We.transform)}).on("redone.map",function(Le){Se(Le.transform)}),e.background().on("change.map",pe),e.features().on("redraw.map",pe),i.on("change.map",function(){e.background().updateImagery(),pe()}),te.on("wheel.map mousewheel.map",function(Le){Le.preventDefault()}).call(O).call(O.transform,r.transform()).on("dblclick.zoom",null),N.supersurface=p=te.append("div").attr("class","supersurface").call(ii,0,0),d=p.append("div").attr("class","layer layer-data"),N.surface=g=d.call(i).selectAll(".surface"),g.call(c.observe).call(T).on(D+"down.zoom",function(Le){E=Le,Le.button===2&&Le.stopPropagation()},!0).on(D+"up.zoom",function(Le){E=Le,Z()&&pe()}).on(D+"move.map",function(Le){E=Le}).on(D+"over.vertices",function(Le){if(N.editableDataEnabled()&&!w){var We=Le.target.__data__;g.call(o.drawHover,e.graph(),We,N.extent()),t.call("drawn",this,{full:!1})}}).on(D+"out.vertices",function(Le){if(N.editableDataEnabled()&&!w){var We=Le.relatedTarget&&Le.relatedTarget.__data__;g.call(o.drawHover,e.graph(),We,N.extent()),t.call("drawn",this,{full:!1})}});var Ie=br();"GestureEvent"in window&&!Ie.isMobileWebKit&&g.on("gesturestart.surface",function(Le){Le.preventDefault(),v=r.transform()}).on("gesturechange.surface",V),Ce(),T.on("doubleUp.map",function(Le,We){if(b&&!(typeof Le.target.__data__=="object"&&!G(Le.target).classed("fill"))){var ue=Le.shiftKey,ae=r.transform(),Ae=ae.invert(We);ae=ae.scale(ue?.5:2),ae.x=We[0]-Ae[0]*ae.k,ae.y=We[1]-Ae[1]*ae.k,N.transformEase(ae)}}),e.on("enter.map",function(){if(N.editableDataEnabled(!0)&&!w){var Le=e.graph(),We={};e.selectedIDs().forEach(function(Ae){var we=Le.hasEntity(Ae);we&&(We[we.id]=we,we.type==="node"&&Le.parentWays(we).forEach(function(Me){We[Me.id]=Me}))});var ue=Object.values(We),ae=function(Ae){return Ae.id in We};ue=e.features().filter(ue,Le),g.call(o.drawSelected,Le,N.extent()).call(s,Le,ue,ae).call(l,Le,ue,ae).call(u,Le,ue,ae,N.trimmedExtent()),t.call("drawn",this,{full:!1}),M()}}),N.dimensions(gi(te))}function U(te){if(te.type==="mousedown"){for(var le=!1,Se=window.__on,Ie=0;Ie0?1:-1;Me=ie*m1(Math.exp((tr-1)*.75)*4.000244140625,4.000244140625,350.000244140625),Ae.os!=="mac"&&(Me*=5),lt=w?_:y,nt=I(Ie),ht=lt.invert(nt),et=lt.k*Math.pow(2,-Me/500),et=m1(et,B0,$0),He=nt[0]-ht[0]*et,Qe=nt[1]-ht[1]*et}else Ie._scale?(lt=v,nt=I(Ie),ht=lt.invert(nt),et=lt.k*Ie._scale,et=m1(et,B0,$0),He=nt[0]-ht[0]*et,Qe=nt[1]-ht[1]*et):Ie.ctrlKey&&!J(Me)?(Me*=6,lt=w?_:y,nt=I(Ie),ht=lt.invert(nt),et=lt.k*Math.pow(2,-Me/500),et=m1(et,B0,$0),He=nt[0]-ht[0]*et,Qe=nt[1]-ht[1]*et):(Ie.altKey||Ie.shiftKey)&&J(Me)?(lt=w?_:y,nt=I(Ie),ht=lt.invert(nt),et=lt.k*Math.pow(2,-Me/500),et=m1(et,B0,$0),He=nt[0]-ht[0]*et,Qe=nt[1]-ht[1]*et):Ae.os==="mac"&&Ae.browser!=="Firefox"&&!Ie.ctrlKey&&J(we)&&J(Me)&&(ht=r.translate(),He=ht[0]-we,Qe=ht[1]-Me,et=r.scale(),et=m1(et,B0,$0));(He!==We||Qe!==ue||et!==ae)&&(We=He,ue=Qe,ae=et,Le=Yr.translate(He,Qe).scale(et),O._transform?O._transform(Le):f.node().__zoom=Le)}if(y.x===We&&y.y===ue&&y.k===ae)return;if(hr(ae,pu)oM},N.center=function(te){return arguments.length?(ge(te,N.zoom())&&t.call("move",this,N),M(),N):r.invert(B())},N.unobscuredCenterZoomEase=function(te,le){var Se=N.unobscuredOffsetPx(),Ie=Mi().transform(r.transform());Ie.scale(jn(le,pu));var Le=Ie(te),We=[Le[0]+Se[0],Le[1]+Se[1]],ue=Ie.invert(We);N.centerZoomEase(ue,le)},N.unobscuredOffsetPx=function(){var te=e.container().select(".map-panes .map-pane.shown");return te.empty()?[0,0]:[te.node().offsetWidth/2,0]},N.zoom=function(te){return arguments.length?(te=e.minEditableZoom()},N.isInWideSelection=function(){return!N.withinEditableZoom()&&e.selectedIDs().length},N.editableDataEnabled=function(te){var le=e.layers().layer("osm");return!le||!le.enabled()?!1:te||N.withinEditableZoom()},N.notesEditable=function(){var te=e.layers().layer("notes");return!te||!te.enabled()?!1:N.withinEditableZoom()},N.minzoom=function(te){return arguments.length?(A=te,N):A},N.toggleHighlightEdited=function(){g.classed("highlight-edited",!g.classed("highlight-edited")),N.pan([0,0]),t.call("changeHighlighting",this)},N.areaFillOptions=["wireframe","partial","full"],N.activeAreaFill=function(te){return arguments.length?(Te("area-fill",te),te!=="wireframe"&&Te("area-fill-toggle",te),Ce(),N.pan([0,0]),t.call("changeAreaFill",this),N):Te("area-fill")||"partial"},N.toggleWireframe=function(){var te=N.activeAreaFill();te==="wireframe"?te=Te("area-fill-toggle")||"partial":te="wireframe",N.activeAreaFill(te)};function Ce(){var te=N.activeAreaFill();N.areaFillOptions.forEach(function(le){g.classed("fill-"+le,le===te)})}return N.layers=()=>i,N.doubleUpHandler=function(){return T},ke(N,t,"on")}function d8(e){var t=xe("change"),r=["streetside","mapillary","mapillary-map-features","mapillary-signs","kartaview","mapilio","vegbilder"],n=["flat","panoramic"],i=n.slice(),a=["fromDate","toDate"],o,s,l;function u(){}function c(){if(!window.mocha){var d=pr(window.location.hash),g=e.layers().all().filter(function(x){return r.indexOf(x.id)!==-1&&x.layer&&x.layer.supported()&&x.layer.enabled()}).map(function(x){return x.id});g.length?d.photo_overlay=g.join(","):delete d.photo_overlay,window.location.replace("#"+yt(d,!0))}}u.overlayLayerIDs=function(){return r},u.allPhotoTypes=function(){return n},u.dateFilters=function(){return a},u.dateFilterValue=function(d){return d===a[0]?o:s},u.setDateFilter=function(d,g,x){var b=g&&new Date(g);if(b&&!isNaN(b)?g=b.toISOString().slice(0,10):g=null,d===a[0]&&(o=g,o&&s&&new Date(s)b.trim()).filter(Boolean),d.length||(d=null)),l=d,t.call("change",this),g){var x;l&&(x=l.join(",")),f("photo_username",x)}};function f(d,g){if(!window.mocha){var x=pr(window.location.hash);if(g){if(x[d]===g)return;x[d]=g}else{if(!(d in x))return;delete x[d]}window.location.replace("#"+yt(x,!0))}}function p(d){var g=e.layers().layer(d);return g&&g.supported()&&g.enabled()}return u.shouldFilterByDate=function(){return p("mapillary")||p("kartaview")||p("streetside")||p("vegbilder")},u.shouldFilterByPhotoType=function(){return p("mapillary")||p("streetside")&&p("kartaview")||p("vegbilder")},u.shouldFilterByUsername=function(){return!p("mapillary")&&p("kartaview")&&!p("streetside")},u.showsPhotoType=function(d){return u.shouldFilterByPhotoType()?i.indexOf(d)!==-1:!0},u.showsFlat=function(){return u.showsPhotoType("flat")},u.showsPanoramic=function(){return u.showsPhotoType("panoramic")},u.fromDate=function(){return o},u.toDate=function(){return s},u.togglePhotoType=function(d){var g=i.indexOf(d);return g!==-1?i.splice(g,1):i.push(d),t.call("change",this),u},u.usernames=function(){return l},u.init=function(){var d=pr(window.location.hash);if(d.photo_dates){var g=/^(.*)[–_](.*)$/g.exec(d.photo_dates.trim());this.setDateFilter("fromDate",g&&g.length>=2&&g[1],!1),this.setDateFilter("toDate",g&&g.length>=3&&g[2],!1)}if(d.photo_username&&this.setUsernameFilter(d.photo_username,!1),d.photo_overlay){var x=d.photo_overlay.replace(/;/g,",").split(",");x.forEach(function(E){E==="openstreetcam"&&(E="kartaview");var k=r.indexOf(E)!==-1&&e.layers().layer(E);k&&!k.enabled()&&k.enabled(!0)})}if(d.photo){var b=d.photo.replace(/;/g,",").split(","),m=b.length&&b[0].trim(),v=/(.*)\/(.*)/g.exec(m);if(v&&v.length>=3){var y=v[1];y==="openstreetcam"&&(y="kartaview");var _=v[2],w=de[y];if(w&&w.ensureViewerLoaded){var A=r.indexOf(y)!==-1&&e.layers().layer(y);A&&!A.enabled()&&A.enabled(!0);var I=Date.now();w.on("loadedImages.rendererPhotos",function(){if(Date.now()-I>45e3){w.on("loadedImages.rendererPhotos",null);return}w.cachedImage(_)&&(w.on("loadedImages.rendererPhotos",null),w.ensureViewerLoaded(e).then(function(){w.selectImage(e,_).showViewer(e)}))})}}}e.layers().on("change.rendererPhotos",c)},ke(u,t,"on")}function m8(e){let t=e.connection();function r(a){t&&(t.authenticated()?t.userDetails((o,s)=>n(a,s)):n(a,null))}function n(a,o){let s=a.select(".userInfo"),l=a.select(".loginLogout");if(o){s.html("").classed("hide",!1);let u=s.append("a").attr("href",t.userURL(o.display_name)).attr("target","_blank");o.image_url?u.append("img").attr("class","icon pre-text user-icon").attr("src",o.image_url):u.call(ce("#iD-icon-avatar","pre-text light")),u.append("span").attr("class","label").text(o.display_name),l.classed("hide",!1).select("a").text(F("logout")).on("click",c=>{c.preventDefault(),t.logout(),i()})}else s.html("").classed("hide",!0),l.classed("hide",!1).select("a").text(F("login")).on("click",u=>{u.preventDefault(),t.authenticate()})}function i(){if(!t)return;let a=t.getUrlRoot()+"/logout?referer=%2Flogin",o=600,s=550,l=[["width",o],["height",s],["left",window.screen.width/2-o/2],["top",window.screen.height/2-s/2]].map(u=>u.join("=")).join(",");window.open(a,"_blank",l)}return function(a){t&&(a.append("li").attr("class","userInfo").classed("hide",!0),a.append("li").attr("class","loginLogout").classed("hide",!0).append("a").attr("href","#"),t.on("change.account",()=>r(a)),r(a))}}function h8(e){let t=G(null);function r(i,a,o){let s=i.selectAll(`.${o}`).data([0]);s=s.enter().append("div").attr("class",o).merge(s);let l=s.selectAll(".attribution").data(a,c=>c.id);l.exit().remove(),l=l.enter().append("span").attr("class","attribution").each((c,f,p)=>{let d=G(p[f]);if(c.terms_html){d.html(c.terms_html);return}c.terms_url&&(d=d.append("a").attr("href",c.terms_url).attr("target","_blank"));let g=c.id.replace(/\./g,""),x=F(`imagery.${g}.attribution.text`,{default:c.terms_text||c.id||c.name()});c.icon&&!c.overlay&&d.append("img").attr("class","source-image").attr("src",c.icon),d.append("span").attr("class","attribution-text").text(x)}).merge(l);let u=l.selectAll(".copyright-notice").data(c=>{let f=c.copyrightNotices(e.map().zoom(),e.map().extent());return f?[f]:[]});u.exit().remove(),u=u.enter().append("span").attr("class","copyright-notice").merge(u),u.text(String)}function n(){let i=e.background().baseLayerSource();t.call(r,i?[i]:[],"base-layer-attribution");let a=e.map().zoom(),o=e.background().overlayLayerSources()||[];t.call(r,o.filter(s=>s.validZoom(a)),"overlay-layer-attribution")}return function(i){t=i,e.background().on("change.attribution",n),e.map().on("move.attribution",Lt(n,400,{leading:!1})),n()}}function g8(e){var t=e.connection(),r=Bt(function(){o()},1e3),n=4,i=!1,a=G(null);function o(){if(t){var s={},l=e.history().intersects(e.map().extent());l.forEach(function(g){g&&g.user&&(s[g.user]=!0)});var u=Object.keys(s),c=u.slice(0,u.length>n?n-1:n);a.html("").call(ce("#iD-icon-nearby","pre-text light"));var f=G(document.createElement("span"));if(f.selectAll().data(c).enter().append("a").attr("class","user-link").attr("href",function(g){return t.userURL(g)}).attr("target","_blank").text(String),u.length>n){var p=G(document.createElement("span")),d=u.length-n+1;p.append("a").attr("target","_blank").attr("href",function(){return t.changesetsURL(e.map().center(),e.map().zoom())}).text(d),a.append("span").html(F.html("contributors.truncated_list",{n:d,users:{html:f.html()},count:{html:p.html()}}))}else a.append("span").html(F.html("contributors.list",{users:{html:f.html()}}));u.length?i&&a.transition().style("opacity",1):(i=!0,a.transition().style("opacity",0))}}return function(s){t&&(a=s,o(),t.on("loaded.contributors",r),e.map().on("move.contributors",r))}}var cJ=0;function du(e){var t=cJ++,r=G(null),n=function(v){r=v,v.each(p)},i=zt(!1),a=zt("top"),o=zt("center"),s=zt(G(null)),l,u=zt(""),c=zt(!0),f="PointerEvent"in window?"pointer":"mouse";n.displayType=function(v){return arguments.length?(u=zt(v),n):u},n.hasArrow=function(v){return arguments.length?(c=zt(v),n):c},n.placement=function(v){return arguments.length?(a=zt(v),n):a},n.alignment=function(v){return arguments.length?(o=zt(v),n):o},n.scrollContainer=function(v){return arguments.length?(s=zt(v),n):s},n.content=function(v){return arguments.length?(l=v,n):l},n.isShown=function(){var v=r.select(".popover-"+t);return!v.empty()&&v.classed("in")},n.show=function(){r.each(d)},n.updateContent=function(){r.each(g)},n.hide=function(){r.each(b)},n.toggle=function(){r.each(m)},n.destroy=function(v,y){y=y||".popover-"+t,v.on(f+"enter.popover",null).on(f+"leave.popover",null).on(f+"up.popover",null).on(f+"down.popover",null).on("click.popover",null).attr("title",function(){return this.getAttribute("data-original-title")||this.getAttribute("title")}).attr("data-original-title",null).selectAll(y).remove()},n.destroyAny=function(v){v.call(n.destroy,".popover")};function p(){var v=G(this),y=i.apply(this,arguments),_=v.selectAll(".popover-"+t).data([0]),w=_.enter().append("div").attr("class","popover popover-"+t+" "+(e||"")).classed("arrowed",c.apply(this,arguments));w.append("div").attr("class","popover-arrow"),w.append("div").attr("class","popover-inner"),_=w.merge(_),y&&_.classed("fade",!0);var A=u.apply(this,arguments);if(A==="hover"){var I;v.on(f+"enter.popover",function(E){if(E.pointerType){if(E.pointerType!=="mouse"){I=E.timeStamp;return}else if(I&&E.timeStamp-I<1500)return}E.buttons===0&&d.apply(this,arguments)}).on(f+"leave.popover",function(){b.apply(this,arguments)}).on("focus.popover",function(){d.apply(this,arguments)}).on("blur.popover",function(){b.apply(this,arguments)})}else A==="clickFocus"&&(v.on(f+"down.popover",function(E){E.preventDefault(),E.stopPropagation()}).on(f+"up.popover",function(E){E.preventDefault(),E.stopPropagation()}).on("click.popover",m),_.attr("tabindex",0).on("blur.popover",function(){v.each(function(){b.apply(this,arguments)})}))}function d(){var v=G(this),y=v.selectAll(".popover-"+t);y.empty()&&(v.call(n.destroy),v.each(p),y=v.selectAll(".popover-"+t)),y.classed("in",!0);var _=u.apply(this,arguments);_==="clickFocus"&&(v.classed("active",!0),y.node().focus()),v.each(g)}function g(){var v=G(this);l&&v.selectAll(".popover-"+t+" > .popover-inner").call(l.apply(this,arguments)),x.apply(this,arguments),x.apply(this,arguments),x.apply(this,arguments)}function x(){var v=G(this),y=v.selectAll(".popover-"+t),_=s&&s.apply(this,arguments),w=_&&!_.empty()&&_.node(),A=w?w.scrollLeft:0,I=w?w.scrollTop:0,E=a.apply(this,arguments);y.classed("left",!1).classed("right",!1).classed("top",!1).classed("bottom",!1).classed(E,!0);var k=o.apply(this,arguments),S=.5;k==="leading"?S=0:k==="trailing"&&(S=1);var D=N(v.node()),P=N(y.node()),O;switch(E){case"top":O={x:D.x+(D.w-P.w)*S,y:D.y-P.h};break;case"bottom":O={x:D.x+(D.w-P.w)*S,y:D.y+D.h};break;case"left":O={x:D.x-P.w,y:D.y+(D.h-P.h)*S};break;case"right":O={x:D.x+D.w,y:D.y+(D.h-P.h)*S};break}if(O){if(w&&(E==="top"||E==="bottom")){var T=O.x;O.x+P.w>w.offsetWidth-10?O.x=w.offsetWidth-10-P.w:O.x<10&&(O.x=10);var M=v.selectAll(".popover-"+t+" > .popover-arrow"),R=Math.min(Math.max(P.w/2-(O.x-T),10),P.w-10);M.style("left",~~R+"px")}y.style("left",~~O.x+"px").style("top",~~O.y+"px")}else y.style("left",null).style("top",null);function N(U){var B=G(U).style("position");return B==="absolute"||B==="static"?{x:U.offsetLeft-A,y:U.offsetTop-I,w:U.offsetWidth,h:U.offsetHeight}:{x:0,y:0,w:U.offsetWidth,h:U.offsetHeight}}}function b(){var v=G(this);u.apply(this,arguments)==="clickFocus"&&v.classed("active",!1),v.selectAll(".popover-"+t).classed("in",!1)}function m(){G(this).select(".popover-"+t).classed("in")?b.apply(this,arguments):d.apply(this,arguments)}return n}function Ye(e){var t=du((e||"")+" tooltip").displayType("hover"),r=function(){var a=this.getAttribute("data-original-title");return a||(a=this.getAttribute("title"),this.removeAttribute("title"),this.setAttribute("data-original-title",a),a)},n=zt(null),i=zt(null);return t.title=function(a){return arguments.length?(r=zt(a),t):r},t.heading=function(a){return arguments.length?(n=zt(a),t):n},t.keys=function(a){return arguments.length?(i=zt(a),t):i},t.content(function(){var a=n.apply(this,arguments),o=r.apply(this,arguments),s=i.apply(this,arguments),l=typeof a=="function"?a:c=>c.text(a),u=typeof o=="function"?o:c=>c.text(o);return function(c){var f=c.selectAll(".tooltip-heading").data(a?[a]:[]);f.exit().remove(),f.enter().append("div").attr("class","tooltip-heading").merge(f).text("").call(l);var p=c.selectAll(".tooltip-text").data(o?[o]:[]);p.exit().remove(),p.enter().append("div").attr("class","tooltip-text").merge(p).text("").call(u);var d=c.selectAll(".keyhint-wrap").data(s&&s.length?[0]:[]);d.exit().remove();var g=d.enter().append("div").attr("class","keyhint-wrap");g.append("span").call(F.append("tooltip_keyhint")),d=g.merge(d),d.selectAll("kbd.shortcut").data(s&&s.length?s:[]).enter().append("kbd").attr("class","shortcut").text(function(x){return x})}}),t}function v8(e){var t=xe("toggled"),r=G(null),n=[],i=[0,0],a=[0,0],o="",s=85,l=45,u=35,c=!1,f,p,d=4,g=210,x=10,b=[],m=function(y){var _=o.includes("touch")||o.includes("pen"),w=n.filter(function(T){return!_||!T.mouseOnly});if(!w.length)return;b=[],c=_;var A=_,I=A?32:34;A?p=52+Math.min(120,6*Math.max.apply(Math,w.map(function(T){return T.title.length}))):p=44,f=d*2+w.length*I,r=y.append("div").attr("class","edit-menu").classed("touch-menu",_).style("padding",d+"px 0");var E=r.selectAll(".edit-menu-item").data(w),k=E.enter().append("button").attr("class",function(T){return"edit-menu-item edit-menu-item-"+T.id}).style("height",I+"px").on("click",O).on("pointerup",P).on("pointerdown mousedown",function(M){M.stopPropagation()}).on("mouseenter.highlight",function(T,M){!M.relatedEntityIds||G(this).classed("disabled")||Ct(M.relatedEntityIds(),!0,e)}).on("mouseleave.highlight",function(T,M){M.relatedEntityIds&&Ct(M.relatedEntityIds(),!1,e)});k.each(function(T){var M=Ye().heading(()=>T.title).title(T.tooltip).keys([T.keys[0]]);b.push(M),G(this).call(M).append("div").attr("class","icon-wrap").call(ce(T.icon&&T.icon()||"#iD-operation-"+T.id,"operation"))}),A&&k.append("span").attr("class","label").each(function(T){G(this).call(T.title)}),k.merge(E).classed("disabled",function(T){return T.disabled()}),v();var S=e.projection.scale();e.map().on("move.edit-menu",function(){S!==e.projection.scale()&&m.close()}).on("drawn.edit-menu",function(T){T.full&&v()});var D;function P(T){D=T.pointerType}function O(T,M){T.stopPropagation(),M.relatedEntityIds&&Ct(M.relatedEntityIds(),!1,e),M.disabled()?(D==="touch"||D==="pen")&&e.ui().flash.duration(4e3).iconName("#iD-operation-"+M.id).iconClass("operation disabled").label(M.tooltip())():((D==="touch"||D==="pen")&&e.ui().flash.duration(2e3).iconName("#iD-operation-"+M.id).iconClass("operation").label(M.annotation()||M.title)(),M(),m.close()),D=null}t.call("toggled",this,!0)};function v(){if(!r||r.empty())return;var y=e.projection(a),_=e.surfaceRect();if(y[0]<0||y[0]>_.width||y[1]<0||y[1]>_.height){m.close();return}var w=k(_),A=[0,0];A[0]=w?-1*(x+p):x,c?y[1]-f_.height-l?A[1]=-y[1]-f+_.height-l:A[1]=0;var I=qr(y,A);r.style("left",I[0]+"px").style("top",I[1]+"px");var E=S(_,w);b.forEach(function(D){D.placement(E)});function k(D){return fe.textDirection()==="ltr"?y[0]+x+p>D.width-u:!(y[0]-x-pD.width-u?"left":"right":!P||y[0]-x-p-g0){var l=Ye().placement("top").title(function(){return u=>{s.forEach(c=>{u.append("div").call(c)})}});r.append("a").attr("class","chip").attr("href","#").call(F.append("feature_info.hidden_warning",{count:o})).call(l).on("click",function(u){l.hide(),u.preventDefault(),e.ui().togglePanes(e.container().select(".map-panes .map-data-pane"))})}r.classed("hide",!s.length&&!a)}return function(r){t(r),e.features().on("change.feature_info",function(){t(r)})}}function b8(e){var t,r=2e3,n="#iD-icon-no",i="disabled",a=s=>s.text("");function o(){t&&t.stop(),e.container().select(".main-footer-wrap").classed("footer-hide",!0).classed("footer-show",!1),e.container().select(".flash-wrap").classed("footer-hide",!1).classed("footer-show",!0);var s=e.container().select(".flash-wrap").selectAll(".flash-content").data([0]),l=s.enter().append("div").attr("class","flash-content"),u=l.append("svg").attr("class","flash-icon icon").append("g").attr("transform","translate(10,10)");return u.append("circle").attr("r",9),u.append("use").attr("transform","translate(-7,-7)").attr("width","14").attr("height","14"),l.append("div").attr("class","flash-text"),s=s.merge(l),s.selectAll(".flash-icon").attr("class","icon flash-icon "+(i||"")),s.selectAll(".flash-icon use").attr("xlink:href",n),s.selectAll(".flash-text").attr("class","flash-text").call(a),t=B4(function(){t=null,e.container().select(".main-footer-wrap").classed("footer-hide",!1).classed("footer-show",!0),e.container().select(".flash-wrap").classed("footer-hide",!0).classed("footer-show",!1)},r),s}return o.duration=function(s){return arguments.length?(r=s,o):r},o.label=function(s){return arguments.length?(typeof s!="function"?a=l=>l.text(s):a=l=>l.text("").call(s),o):a},o.iconName=function(s){return arguments.length?(n=s,o):n},o.iconClass=function(s){return arguments.length?(i=s,o):i},o}function x8(e){var t=e.container().node();function r(){if(t.requestFullscreen)return t.requestFullscreen;if(t.msRequestFullscreen)return t.msRequestFullscreen;if(t.mozRequestFullScreen)return t.mozRequestFullScreen;if(t.webkitRequestFullscreen)return t.webkitRequestFullscreen}function n(){if(document.exitFullscreen)return document.exitFullscreen;if(document.msExitFullscreen)return document.msExitFullscreen;if(document.mozCancelFullScreen)return document.mozCancelFullScreen;if(document.webkitExitFullscreen)return document.webkitExitFullscreen}function i(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}function a(){return!!r()}function o(s){s.preventDefault(),i()?n().apply(document):r().apply(t)}return function(){if(a()){var s=br(),l=s.os==="mac"?[st("\u2303\u2318F"),"f11"]:["f11"];e.keybinding().on(l,o)}}}function w8(e){var t={enableHighAccuracy:!1,timeout:6e3},r=c1(e).message(F.html("geolocate.locating")).blocking(!0),n=e.layers().layer("geolocate"),i,a,o,s=G(null);function l(){e.inIntro()||(!n.enabled()&&!r.isShown()?(o=setTimeout(f,1e4),e.container().call(r),navigator.geolocation.getCurrentPosition(c,f,t)):(r.close(),n.enabled(null,!1),d()))}function u(){e.enter(Ge(e));var g=e.map();n.enabled(i,!0),d(),g.centerZoomEase(a.center(),Math.min(20,g.extentZoom(a)))}function c(g){i=g;var x=i.coords;a=Pe([x.longitude,x.latitude]).padByMeters(x.accuracy),u(),p()}function f(){i?u():e.ui().flash.label(F.append("geolocate.location_unavailable")).iconName("#iD-icon-geolocate")(),p()}function p(){r.close(),o&&clearTimeout(o),o=void 0}function d(){s.classed("active",n.enabled()),s.attr("aria-pressed",n.enabled())}return function(g){!navigator.geolocation||!navigator.geolocation.getCurrentPosition||(s=g.append("button").on("click",l).attr("aria-pressed",!1).call(ce("#iD-icon-geolocate","light")).call(Ye().placement(fe.textDirection()==="rtl"?"right":"left").title(()=>F.append("geolocate.title")).keys([F("geolocate.key")])),e.keybinding().on(F("geolocate.key"),l))}}function Oy(e){var t=e.background(),r=null,n={},i=["zoom","vintage","source","description","resolution","accuracy"],a=Bt(o,250);function o(c){var f=t.baseLayerSource();if(f){var p=f.id.match(/^DigitalGlobe/i)!==null,d=f.label();r!==d&&(r=d,n={}),c.text("");var g=c.append("ul").attr("class","background-info");g.append("li").call(r),i.forEach(function(_){p&&_==="vintage"||g.append("li").attr("class","background-info-list-"+_).classed("hide",!n[_]).call(F.append("info_panels.background."+_,{suffix:":"})).append("span").attr("class","background-info-span-"+_).text(n[_])}),s(c);var x=e.getDebug("tile")?"hide_tiles":"show_tiles";if(c.append("a").call(F.append("info_panels.background."+x)).attr("href","#").attr("class","button button-toggle-tiles").on("click",function(_){_.preventDefault(),e.setDebug("tile",!e.getDebug("tile")),c.call(o)}),p){var b=f.id+"-vintage",m=e.background().findSource(b),v=e.background().showsLayer(m),y=v?"hide_vintage":"show_vintage";c.append("a").call(F.append("info_panels.background."+y)).attr("href","#").attr("class","button button-toggle-vintage").on("click",function(_){_.preventDefault(),e.background().toggleOverlayLayer(m),c.call(o)})}["DigitalGlobe-Premium","DigitalGlobe-Standard"].forEach(function(_){if(f.id!==_){var w=_+"-vintage",A=e.background().findSource(w);e.background().showsLayer(A)&&e.background().toggleOverlayLayer(A)}})}}var s=Bt(l,250);function l(c){var f=e.container().select(".layer-background img.tile-center");if(!f.empty()){var p=r,d=f.datum(),g=d&&d.length>=3&&d[2]||Math.floor(e.map().zoom()),x=e.map().center();n.zoom=String(g),c.selectAll(".background-info-list-zoom").classed("hide",!1).selectAll(".background-info-span-zoom").text(n.zoom),!(!d||!d.length>=3)&&t.baseLayerSource().getMetadata(x,d,function(b,m){if(!(b||r!==p)){var v=m.vintage;n.vintage=v&&v.range||F("info_panels.background.unknown"),c.selectAll(".background-info-list-vintage").classed("hide",!1).selectAll(".background-info-span-vintage").text(n.vintage),i.forEach(function(y){if(!(y==="zoom"||y==="vintage")){var _=m[y];n[y]=_,c.selectAll(".background-info-list-"+y).classed("hide",!_).selectAll(".background-info-span-"+y).text(_)}})}})}}var u=function(c){c.call(o),e.map().on("drawn.info-background",function(){c.call(a)}).on("move.info-background",function(){c.call(s)})};return u.off=function(){e.map().on("drawn.info-background",null).on("move.info-background",null)},u.id="background",u.label=F.append("info_panels.background.title"),u.key=F("info_panels.background.key"),u}function Ly(e){var t;function r(u){if(!u)return F("info_panels.history.unknown");var c={day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric"},f=new Date(u);return isNaN(f.getTime())?F("info_panels.history.unknown"):f.toLocaleString(fe.localeCode(),c)}function n(u,c){if(!c){u.append("span").call(F.append("info_panels.history.unknown"));return}u.append("span").attr("class","user-name").text(c);var f=u.append("div").attr("class","links");t&&f.append("a").attr("class","user-osm-link").attr("href",t.userURL(c)).attr("target","_blank").call(F.append("info_panels.history.profile_link"))}function i(u,c){if(!c){u.append("span").call(F.append("info_panels.history.unknown"));return}u.append("span").attr("class","changeset-id").text(c);var f=u.append("div").attr("class","links");t&&f.append("a").attr("class","changeset-osm-link").attr("href",t.changesetURL(c)).attr("target","_blank").call(F.append("info_panels.history.changeset_link")),f.append("a").attr("class","changeset-osmcha-link").attr("href","https://osmcha.openhistoricalmap.org/changesets/"+c).attr("target","_blank").text("OSMCha")}function a(u){var c=e.selectedNoteID();t=e.connection();var f,p,d;c&&t?(f=[F.html("note.note")+" "+c],p=t.getNote(c)):(f=e.selectedIDs().filter(function(x){return e.hasEntity(x)}),f.length&&(d=e.entity(f[0])));var g=f.length===1?f[0]:null;u.html(""),g?u.append("h4").attr("class","history-heading").html(g):u.append("h4").attr("class","history-heading").call(F.append("info_panels.selected",{n:f.length})),g&&(d?u.call(s,d):p&&u.call(o,p))}function o(u,c){if(!c||c.isNew()){u.append("div").call(F.append("info_panels.history.note_no_history"));return}var f=u.append("ul");f.append("li").call(F.append("info_panels.history.note_comments",{suffix:":"})).append("span").text(c.comments.length),c.comments.length&&(f.append("li").call(F.append("info_panels.history.note_created_date",{suffix:":"})).append("span").text(r(c.comments[0].date)),f.append("li").call(F.append("info_panels.history.note_created_user",{suffix:":"})).call(n,c.comments[0].user)),t&&u.append("a").attr("class","view-history-on-osm").attr("target","_blank").attr("href",t.noteURL(c)).call(ce("#iD-icon-out-link","inline")).append("span").call(F.append("info_panels.history.note_link_text"))}function s(u,c){if(!c||c.isNew()){u.append("div").call(F.append("info_panels.history.no_history"));return}var f=u.append("div").attr("class","links");t&&f.append("a").attr("class","view-history-on-osm").attr("href",t.historyURL(c)).attr("target","_blank").call(F.append("info_panels.history.history_link"));var p=u.append("ul");p.append("li").call(F.append("info_panels.history.version",{suffix:":"})).append("span").text(c.version),p.append("li").call(F.append("info_panels.history.last_edit",{suffix:":"})).append("span").text(r(c.timestamp)),p.append("li").call(F.append("info_panels.history.edited_by",{suffix:":"})).call(n,c.user),p.append("li").call(F.append("info_panels.history.changeset",{suffix:":"})).call(i,c.changeset)}var l=function(u){u.call(a),e.map().on("drawn.info-history",function(){u.call(a)}),e.on("enter.info-history",function(){u.call(a)})};return l.off=function(){e.map().on("drawn.info-history",null),e.on("enter.info-history",null)},l.id="history",l.label=F.append("info_panels.history.title"),l.key=F("info_panels.history.key"),l}function Ry(e){var t="";function r(o){o.html("");var s=o.append("ul"),l=e.map().mouseCoordinates();l.some(isNaN)&&(l=e.map().center()),s.append("li").text(as(l)).append("li").text(m2(l)),o.append("div").attr("class","location-info").text(t||" "),n(o,l)}var n=Bt(i,250);function i(o,s){de.geocoder?de.geocoder.reverse(s,function(l,u){t=u?u.display_name:F("info_panels.location.unknown_location"),o.selectAll(".location-info").text(t)}):(t=F("info_panels.location.unknown_location"),o.selectAll(".location-info").text(t))}var a=function(o){o.call(r),e.surface().on(("PointerEvent"in window?"pointer":"mouse")+"move.info-location",function(){o.call(r)})};return a.off=function(){e.surface().on(".info-location",null)},a.id="location",a.label=F.append("info_panels.location.title"),a.key=F("info_panels.location.key"),a}function By(e){function t(s){return s*63710071809e-4}function r(s){return s/(4*Math.PI)*510065621724e3}function n(s){if(s.type==="LineString")return s;var l={type:"LineString",coordinates:[]};return s.type==="Polygon"?l.coordinates=s.coordinates[0]:s.type==="MultiPolygon"&&(l.coordinates=s.coordinates[0][0]),l}var i=!fe.usesMetric();function a(s){var l=e.graph(),u=e.selectedNoteID(),c=de.osm,f=fe.localeCode(),p,d,g,x,b,m,v,y=0,_=0,w;if(u&&c){var A=c.getNote(u);p=F.html("note.note")+" "+u,g=A.loc,m="note"}else{var I=e.selectedIDs().filter(function(R){return e.hasEntity(R)}),E=I.map(function(R){return e.entity(R)});if(p=E.length===1?E[0].id:F.html("info_panels.selected",{n:E.length}),E.length){var k=Pe();for(var S in E){var D=E[S];if(k._extend(D.extent(l)),m=D.geometry(l),m==="line"||m==="area"){b=D.type==="relation"||D.isClosed()&&!D.isDegenerate();var P=D.asGeoJSON(l);y+=t($m(n(P))),x=Fi(e.projection).centroid(D.asGeoJSON(l)),x=x&&e.projection.invert(x),(!x||!isFinite(x[0])||!isFinite(x[1]))&&(x=D.extent(l).center()),b&&(_+=r(D.area(l)))}}E.length>1&&(m=null,b=null,x=null),E.length===2&&E[0].type==="node"&&E[1].type==="node"&&(w=Vt(E[0].loc,E[1].loc)),E.length===1&&E[0].type==="node"?g=E[0].loc:v=vr(I,e.graph()).length,!g&&!x&&(d=k.center())}}s.html(""),p&&s.append("h4").attr("class","measurement-heading").html(p);var O=s.append("ul"),T;if(m&&O.append("li").call(F.append("info_panels.measurement.geometry",{suffix:":"})).append("span").html(b?F.html("info_panels.measurement.closed_"+m):F.html("geometry."+m)),v&&O.append("li").call(F.append("info_panels.measurement.node_count",{suffix:":"})).append("span").text(v.toLocaleString(f)),_&&O.append("li").call(F.append("info_panels.measurement.area",{suffix:":"})).append("span").text(IF(_,i)),y&&O.append("li").call(F.append("info_panels.measurement."+(b?"perimeter":"length"),{suffix:":"})).append("span").text(f5(y,i)),typeof w=="number"&&O.append("li").call(F.append("info_panels.measurement.distance",{suffix:":"})).append("span").text(f5(w,i)),g&&(T=O.append("li").call(F.append("info_panels.measurement.location",{suffix:":"})),T.append("span").text(as(g)),T.append("span").text(m2(g))),x&&(T=O.append("li").call(F.append("info_panels.measurement.centroid",{suffix:":"})),T.append("span").text(as(x)),T.append("span").text(m2(x))),d&&(T=O.append("li").call(F.append("info_panels.measurement.center",{suffix:":"})),T.append("span").text(as(d)),T.append("span").text(m2(d))),y||_||typeof w=="number"){var M=i?"imperial":"metric";s.append("a").call(F.append("info_panels.measurement."+M)).attr("href","#").attr("class","button button-toggle-units").on("click",function(R){R.preventDefault(),i=!i,s.call(a)})}}var o=function(s){s.call(a),e.map().on("drawn.info-measurement",function(){s.call(a)}),e.on("enter.info-measurement",function(){s.call(a)})};return o.off=function(){e.map().on("drawn.info-measurement",null),e.on("enter.info-measurement",null)},o.id="measurement",o.label=F.append("info_panels.measurement.title"),o.key=F("info_panels.measurement.key"),o}var _8={background:Oy,history:Ly,location:Ry,measurement:By};function E8(e){var t=Object.keys(_8),r=["measurement"],n={},i={};t.forEach(function(o){n[o]||(n[o]=_8[o](e),i[o]=!1)});function a(o){function s(){var u=t.filter(function(d){return i[d]}).sort(),c=l.selectAll(".panel-container").data(u,function(d){return d});c.exit().style("opacity",1).transition().duration(200).style("opacity",0).on("end",function(d){G(this).call(n[d].off).remove()});var f=c.enter().append("div").attr("class",function(d){return"fillD2 panel-container panel-container-"+d});f.style("opacity",0).transition().duration(200).style("opacity",1);var p=f.append("div").attr("class","panel-title fillD2");p.append("h3").each(function(d){return n[d].label(G(this))}),p.append("button").attr("class","close").attr("title",F("icons.close")).on("click",function(d,g){d.stopImmediatePropagation(),d.preventDefault(),a.toggle(g)}).call(ce("#iD-icon-close")),f.append("div").attr("class",function(d){return"panel-content panel-content-"+d}),l.selectAll(".panel-content").each(function(d){G(this).call(n[d])})}a.toggle=function(u){var c=t.filter(function(f){return i[f]});u?(i[u]=!i[u],c.length===1&&c[0]===u&&(r=[u]),e.container().select("."+u+"-panel-toggle-item").classed("active",i[u]).select("input").property("checked",i[u])):c.length?(r=c,c.forEach(function(f){i[f]=!1})):r.forEach(function(f){i[f]=!0}),s()};var l=o.selectAll(".info-panels").data([0]);l=l.enter().append("div").attr("class","info-panels").merge(l),s(),e.keybinding().on(st("\u2318"+F("info_panels.key")),function(u){u.stopImmediatePropagation(),u.preventDefault(),a.toggle()}),t.forEach(function(u){var c=F("info_panels."+u+".key",{default:null});c&&e.keybinding().on(st("\u2318\u21E7"+c),function(f){f.stopImmediatePropagation(),f.preventDefault(),a.toggle(u)})})}return a}function ao(e,t){var r=t.surfaceRect(),n=t.curtainProjection(e);return{left:n[0]+r.left-40,top:n[1]+r.top-60,width:80,height:90}}function jt(e,t,r){var n;if(e instanceof Array){var i=r.surfaceRect(),a=r.curtainProjection(e);n={left:a[0]+i.left,top:a[1]+i.top}}else n=e;return{left:n.left-t,top:n.top-t,width:(n.width||0)+2*t,height:(n.width||0)+2*t}}function gt(e,t,r){return'"}var U0;function _e(e,t){if(!U0){U0={point_icon:gt("#iD-icon-point","inline"),line_icon:gt("#iD-icon-line","inline"),area_icon:gt("#iD-icon-area","inline"),note_icon:gt("#iD-icon-note","inline add-note"),plus:gt("#iD-icon-plus","inline"),minus:gt("#iD-icon-minus","inline"),layers_icon:gt("#iD-icon-layers","inline"),data_icon:gt("#iD-icon-data","inline"),inspect:gt("#iD-icon-inspect","inline"),help_icon:gt("#iD-icon-help","inline"),undo_icon:gt(fe.textDirection()==="rtl"?"#iD-icon-redo":"#iD-icon-undo","inline"),redo_icon:gt(fe.textDirection()==="rtl"?"#iD-icon-undo":"#iD-icon-redo","inline"),save_icon:gt("#iD-icon-save","inline"),circularize_icon:gt("#iD-operation-circularize","inline operation"),continue_icon:gt("#iD-operation-continue","inline operation"),copy_icon:gt("#iD-operation-copy","inline operation"),delete_icon:gt("#iD-operation-delete","inline operation"),disconnect_icon:gt("#iD-operation-disconnect","inline operation"),downgrade_icon:gt("#iD-operation-downgrade","inline operation"),extract_icon:gt("#iD-operation-extract","inline operation"),merge_icon:gt("#iD-operation-merge","inline operation"),move_icon:gt("#iD-operation-move","inline operation"),orthogonalize_icon:gt("#iD-operation-orthogonalize","inline operation"),paste_icon:gt("#iD-operation-paste","inline operation"),reflect_long_icon:gt("#iD-operation-reflect-long","inline operation"),reflect_short_icon:gt("#iD-operation-reflect-short","inline operation"),reverse_icon:gt("#iD-operation-reverse","inline operation"),rotate_icon:gt("#iD-operation-rotate","inline operation"),split_icon:gt("#iD-operation-split","inline operation"),straighten_icon:gt("#iD-operation-straighten","inline operation"),leftclick:gt("#iD-walkthrough-mouse-left","inline operation"),rightclick:gt("#iD-walkthrough-mouse-right","inline operation"),mousewheel_icon:gt("#iD-walkthrough-mousewheel","inline operation"),tap_icon:gt("#iD-walkthrough-tap","inline operation"),doubletap_icon:gt("#iD-walkthrough-doubletap","inline operation"),longpress_icon:gt("#iD-walkthrough-longpress","inline operation"),touchdrag_icon:gt("#iD-walkthrough-touchdrag","inline operation"),pinch_icon:gt("#iD-walkthrough-pinch-apart","inline operation"),shift:st.display("\u21E7"),alt:st.display("\u2325"),return:st.display("\u21B5"),esc:F.html("shortcuts.key.esc"),space:F.html("shortcuts.key.space"),add_note_key:F.html("modes.add_note.key"),help_key:F.html("help.key"),shortcuts_key:F.html("shortcuts.toggle.key"),save:F.html("save.title"),undo:F.html("undo.title"),redo:F.html("redo.title"),upload:F.html("commit.save"),point:F.html("modes.add_point.title"),line:F.html("modes.add_line.title"),area:F.html("modes.add_area.title"),note:F.html("modes.add_note.label"),circularize:F.html("operations.circularize.title"),continue:F.html("operations.continue.title"),copy:F.html("operations.copy.title"),delete:F.html("operations.delete.title"),disconnect:F.html("operations.disconnect.title"),downgrade:F.html("operations.downgrade.title"),extract:F.html("operations.extract.title"),merge:F.html("operations.merge.title"),move:F.html("operations.move.title"),orthogonalize:F.html("operations.orthogonalize.title"),paste:F.html("operations.paste.title"),reflect_long:F.html("operations.reflect.title.long"),reflect_short:F.html("operations.reflect.title.short"),reverse:F.html("operations.reverse.title"),rotate:F.html("operations.rotate.title"),split:F.html("operations.split.title"),straighten:F.html("operations.straighten.title"),map_data:F.html("map_data.title"),osm_notes:F.html("map_data.layers.notes.title"),fields:F.html("inspector.fields"),tags:F.html("inspector.tags"),relations:F.html("inspector.relations"),new_relation:F.html("inspector.new_relation"),turn_restrictions:F.html("_tagging.presets.fields.restrictions.label"),background_settings:F.html("background.description"),imagery_offset:F.html("background.fix_misalignment"),start_the_walkthrough:F.html("splash.walkthrough"),help:F.html("help.title"),ok:F.html("intro.ok")};for(var r in U0)U0[r]={html:U0[r]}}var n;return t?n=Object.assign(t,U0):n=U0,F.html(e,n).replace(/\`(.*?)\`/g,"$1")}function lM(e){return e.toString().toLowerCase().replace(/\s+/g,"-").replace(/[^\w\-]+/g,"").replace(/\-\-+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}var uM={};function cM(e,t){if(F(e,{default:void 0})===void 0){if(uM.hasOwnProperty(e))return;uM[e]=t;var r=e+": "+t;typeof console<"u"&&console.log(r)}}function fM(e){var t,r=e.tags&&e.tags.name;r&&(t="intro.graph.name."+lM(r),e.tags.name=F(t,{default:r}),cM(t,r));var n=e.tags&&e.tags["addr:street"];if(n){t="intro.graph.name."+lM(n),e.tags["addr:street"]=F(t,{default:n}),cM(t,n);var i=["block_number","city","county","district","hamlet","neighbourhood","postcode","province","quarter","state","subdistrict","suburb"];i.forEach(function(a){var o="intro.graph."+a,s="addr:"+a,l=e.tags&&e.tags[s],u=F(o,{default:l});u&&(u.match(/^<.*>$/)!==null?delete e.tags[s]:e.tags[s]=u)})}return e}function pM(e){for(var t=15,r=Math.cos((90-t)*Math.PI/180),n=Math.cos(t*Math.PI/180),i=0;ir&&u)(.+?)(\*\*)/,"$1$2$3"):s=s.replace(/^(.+?)(\*\*)/,"$1$2"),s=s.replace(/\*\*(.*?)\*\*/g,'$1')),s=s.replace(/\*(.*?)\*/g,"$1"),s=s.replace(/\{br\}/g,"

    "),l.buttonText&&l.buttonCallback&&(s+='
    ");var f="curtain-tooltip popover tooltip arrowed in "+(l.tooltipClass||"");if(r.classed(f,!0).selectAll(".popover-inner").html(s),l.buttonText&&l.buttonCallback){var p=r.selectAll(".button-section .button.action");p.on("click",function(A){A.preventDefault(),l.buttonCallback()})}var d=a(r.node().getBoundingClientRect()),g=e.clientWidth,x=e.clientHeight,b=200,m=5,v,y;if(l.tooltipClass==="intro-mouse"&&(d.height+=80),c.top+c.height>x&&(c.height-=c.top+c.height-x),c.left+c.width>g&&(c.width-=c.left+c.width-g),c.top+c.height<100)v="bottom",y=[c.left+c.width/2-d.width/2,c.top+c.height];else if(c.top>x-140)v="top",y=[c.left+c.width/2-d.width/2,c.top-d.height];else{var _=c.top+c.height/2-d.height/2;fe.textDirection()==="rtl"?c.left-b-m<70?(v="right",y=[c.left+c.width+m,_]):(v="left",y=[c.left-b-m,_]):c.left+c.width+m+b>g-70?(v="left",y=[c.left-b-m,_]):(v="right",y=[c.left+c.width+m,_])}(l.duration!==0||!r.classed(v))&&r.call(gs(!0)),r.style("top",y[1]+"px").style("left",y[0]+"px").attr("class",f+" "+v);var w=0;(v==="left"||v==="right")&&(y[1]<60?w=60-y[1]:y[1]+d.height>x-100&&(w=x-y[1]-d.height-100)),r.selectAll(".popover-inner").style("top",w+"px")}else r.classed("in",!1).call(gs(!1));return i.cut(o,l.duration),r},i.cut=function(o,s){n.datum(o).interrupt();var l;s===0?l=n:l=n.transition().duration(s||600).ease(N3),l.attr("d",function(u){var c=e.clientWidth,f=e.clientHeight,p="M 0,0 L 0,"+f+" L "+c+","+f+"L"+c+",0 Z";return u?p+"M"+u.left+","+u.top+"L"+u.left+","+(u.top+u.height)+"L"+(u.left+u.width)+","+(u.top+u.height)+"L"+(u.left+u.width)+","+u.top+"Z":p})},i.remove=function(){t.remove(),r.remove(),G(window).on("resize.curtain",null)};function a(o){return{top:o.top,right:o.right,bottom:o.bottom,left:o.left,width:o.width,height:o.height}}return i}function dM(e,t){var r=xe("done"),n={title:"intro.welcome.title"};function i(){e.map().centerZoom([-85.63591,41.94285],19),t(".intro-nav-wrap .chapter-welcome",_e("intro.welcome.welcome"),{buttonText:F.html("intro.ok"),buttonCallback:a})}function a(){t(".intro-nav-wrap .chapter-welcome",_e("intro.welcome.practice"),{buttonText:F.html("intro.ok"),buttonCallback:o})}function o(){t(".intro-nav-wrap .chapter-welcome",_e("intro.welcome.words"),{buttonText:F.html("intro.ok"),buttonCallback:s})}function s(){r.call("done"),t(".intro-nav-wrap .chapter-navigation",_e("intro.welcome.chapters",{next:F("intro.navigation.title")}))}return n.enter=function(){i()},n.exit=function(){e.container().select(".curtain-tooltip.intro-mouse").selectAll(".counter").remove()},n.restart=function(){n.exit(),n.enter()},ke(n,r,"on")}function mM(e,t){var r=xe("done"),n=[],i="n2061",a=[-85.63591,41.94285],o="w397",s="n1834",l=[-85.63582,41.94255],u=$e.field("oneway"),c=$e.field("maxspeed"),f={title:"intro.navigation.title"};function p(M,R){n.push(window.setTimeout(M,R))}function d(M){M.stopPropagation(),M.preventDefault()}function g(){var M=e.selectedIDs();return M.length===1&&M[0]===i}function x(){e.enter(Ge(e)),e.history().reset("initial");var M=Ui(a,e.map().center());M&&t(null,null,{duration:0}),e.map().centerZoomEase(a,19,M),p(function(){var N=e.map().center(),U=e.lastPointerType()==="mouse"?"drag":"drag_touch",B=_e("intro.navigation.map_info")+"{br}"+_e("intro.navigation."+U);t(".surface",B),e.map().on("drawn.intro",function(){t(".surface",B,{duration:0})}),e.map().on("move.intro",function(){var $=e.map().center();(N[0]!==$[0]||N[1]!==$[1])&&(e.map().on("move.intro",null),p(function(){R(b)},3e3))})},M+100);function R(N){e.map().on("move.intro drawn.intro",null),N()}}function b(){var M=e.map().zoom(),R=e.lastPointerType()==="mouse"?"zoom":"zoom_touch",N=_e("intro.navigation."+R);t(".surface",N),e.map().on("drawn.intro",function(){t(".surface",N,{duration:0})}),e.map().on("move.intro",function(){e.map().zoom()!==M&&(e.map().on("move.intro",null),p(function(){U(m)},3e3))});function U(B){e.map().on("move.intro drawn.intro",null),B()}}function m(){var M=function(){R(v)};t(".surface",_e("intro.navigation.features"),{buttonText:F.html("intro.ok"),buttonCallback:M}),e.map().on("drawn.intro",function(){t(".surface",_e("intro.navigation.features"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:M})});function R(N){e.map().on("drawn.intro",null),N()}}function v(){var M=function(){R(y)};t(".surface",_e("intro.navigation.points_lines_areas"),{buttonText:F.html("intro.ok"),buttonCallback:M}),e.map().on("drawn.intro",function(){t(".surface",_e("intro.navigation.points_lines_areas"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:M})});function R(N){e.map().on("drawn.intro",null),N()}}function y(){var M=function(){R(_)};t(".surface",_e("intro.navigation.nodes_ways"),{buttonText:F.html("intro.ok"),buttonCallback:M}),e.map().on("drawn.intro",function(){t(".surface",_e("intro.navigation.nodes_ways"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:M})});function R(N){e.map().on("drawn.intro",null),N()}}function _(){e.enter(Ge(e)),e.history().reset("initial");var M=e.hasEntity(i);if(!M)return;t(null,null,{duration:0}),e.map().centerZoomEase(M.loc,19,500),p(function(){var N=e.hasEntity(i);if(N){var U=ao(N.loc,e),B=e.lastPointerType()==="mouse"?"click_townhall":"tap_townhall";t(U,_e("intro.navigation."+B)),e.map().on("move.intro drawn.intro",function(){var $=e.hasEntity(i);if($){var z=ao($.loc,e);t(z,_e("intro.navigation."+B),{duration:0})}}),e.on("enter.intro",function(){g()&&R(w)})}},550),e.history().on("change.intro",function(){e.hasEntity(i)||R(_)});function R(N){e.on("enter.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),N()}}function w(){if(!g())return _();var M=e.hasEntity(i);if(!M)return _();var R=ao(M.loc,e),N=function(){U(A)};t(R,_e("intro.navigation.selected_townhall"),{buttonText:F.html("intro.ok"),buttonCallback:N}),e.map().on("move.intro drawn.intro",function(){var B=e.hasEntity(i);if(B){var $=ao(B.loc,e);t($,_e("intro.navigation.selected_townhall"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:N})}}),e.history().on("change.intro",function(){e.hasEntity(i)||U(_)});function U(B){e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),B()}}function A(){if(!g())return _();e.container().select(".inspector-wrap").on("wheel.intro",d);var M=function(){R(I)};t(".entity-editor-pane",_e("intro.navigation.editor_townhall"),{buttonText:F.html("intro.ok"),buttonCallback:M}),e.on("exit.intro",function(){R(_)}),e.history().on("change.intro",function(){e.hasEntity(i)||R(_)});function R(N){e.on("exit.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),N()}}function I(){if(!g())return _();e.container().select(".inspector-wrap .panewrap").style("right","0%"),e.container().select(".inspector-wrap").on("wheel.intro",d);var M=e.entity(e.selectedIDs()[0]),R=$e.match(M,e.graph()),N=function(){U(E)};t(".entity-editor-pane .section-feature-type",_e("intro.navigation.preset_townhall",{preset:R.name()}),{buttonText:F.html("intro.ok"),buttonCallback:N}),e.on("exit.intro",function(){U(_)}),e.history().on("change.intro",function(){e.hasEntity(i)||U(_)});function U(B){e.on("exit.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),B()}}function E(){if(!g())return _();e.container().select(".inspector-wrap .panewrap").style("right","0%"),e.container().select(".inspector-wrap").on("wheel.intro",d);var M=function(){R(k)};t(".entity-editor-pane .section-preset-fields",_e("intro.navigation.fields_townhall"),{buttonText:F.html("intro.ok"),buttonCallback:M}),e.on("exit.intro",function(){R(_)}),e.history().on("change.intro",function(){e.hasEntity(i)||R(_)});function R(N){e.on("exit.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),N()}}function k(){if(!g())return _();var M=".entity-editor-pane button.close svg use",R=G(M).attr("href")||"#iD-icon-close";t(".entity-editor-pane",_e("intro.navigation.close_townhall",{button:{html:gt(R,"inline")}})),e.on("exit.intro",function(){N(S)}),e.history().on("change.intro",function(){var U=".entity-editor-pane button.close svg use",B=G(U).attr("href")||"#iD-icon-close";t(".entity-editor-pane",_e("intro.navigation.close_townhall",{button:{html:gt(B,"inline")}}),{duration:0})});function N(U){e.on("exit.intro",null),e.history().on("change.intro",null),U()}}function S(){e.enter(Ge(e)),e.history().reset("initial");var M=Ui(l,e.map().center());M&&t(null,null,{duration:0}),e.map().centerZoomEase(l,19,M),p(function(){t(".search-header input",_e("intro.navigation.search_street",{name:F("intro.graph.name.spring-street")})),e.container().select(".search-header input").on("keyup.intro",D)},M+100)}function D(){var M=e.container().select(".feature-list-item:nth-child(0n+2)"),R=M.select(".entity-name"),N=F("intro.graph.name.spring-street");!R.empty()&&R.html()===N&&(t(M.node(),_e("intro.navigation.choose_street",{name:N}),{duration:300}),e.on("exit.intro",function(){U(P)}),e.container().select(".search-header input").on("keydown.intro",d,!0).on("keyup.intro",null));function U(B){e.on("exit.intro",null),e.container().select(".search-header input").on("keydown.intro",null).on("keyup.intro",null),B()}}function P(){if(!e.hasEntity(s)||!e.hasEntity(o))return S();var M=function(){U(O)},R=e.entity(s),N=ao(R.loc,e);N.height=500,t(N,_e("intro.navigation.selected_street",{name:F("intro.graph.name.spring-street")}),{duration:600,buttonText:F.html("intro.ok"),buttonCallback:M}),p(function(){e.map().on("move.intro drawn.intro",function(){var B=e.hasEntity(s);if(B){var $=ao(B.loc,e);$.height=500,t($,_e("intro.navigation.selected_street",{name:F("intro.graph.name.spring-street")}),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:M})}})},600),e.on("enter.intro",function(B){if(!e.hasEntity(o))return U(S);var $=e.selectedIDs();(B.id!=="select"||!$.length||$[0]!==o)&&e.enter(rt(e,[o]))}),e.history().on("change.intro",function(){(!e.hasEntity(s)||!e.hasEntity(o))&&p(function(){U(S)},300)});function U(B){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),e.history().on("change.intro",null),B()}}function O(){var M=".entity-editor-pane button.close svg use",R=G(M).attr("href")||"#iD-icon-close";t(".entity-editor-pane",_e("intro.navigation.street_different_fields")+"{br}"+_e("intro.navigation.editor_street",{button:{html:gt(R,"inline")},field1:u.title(),field2:c.title()})),e.on("exit.intro",function(){N(T)}),e.history().on("change.intro",function(){var U=".entity-editor-pane button.close svg use",B=G(U).attr("href")||"#iD-icon-close";t(".entity-editor-pane",_e("intro.navigation.street_different_fields")+"{br}"+_e("intro.navigation.editor_street",{button:{html:gt(B,"inline")},field1:u.title(),field2:c.title()}),{duration:0})});function N(U){e.on("exit.intro",null),e.history().on("change.intro",null),U()}}function T(){r.call("done"),t(".ideditor",_e("intro.navigation.play",{next:F("intro.points.title")}),{tooltipBox:".intro-nav-wrap .chapter-point",buttonText:F.html("intro.ok"),buttonCallback:function(){t(".ideditor")}})}return f.enter=function(){x()},f.exit=function(){n.forEach(window.clearTimeout),e.on("enter.intro exit.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".search-header input").on("keydown.intro keyup.intro",null)},f.restart=function(){f.exit(),f.enter()},ke(f,r,"on")}function hM(e,t){var r=xe("done"),n=[],i=[-85.63279,41.94394],a=[-85.632422,41.944045],o=$e.item("amenity/cafe"),s=null,l={title:"intro.points.title"};function u(E,k){n.push(window.setTimeout(E,k))}function c(E){E.stopPropagation(),E.preventDefault()}function f(){e.enter(Ge(e)),e.history().reset("initial");var E=Ui(i,e.map().center());E&&t(null,null,{duration:0}),e.map().centerZoomEase(i,19,E),u(function(){var S=t("button.add-point",_e("intro.points.points_info")+"{br}"+_e("intro.points.add_point"));s=null,S.selectAll(".popover-inner").insert("svg","span").attr("class","tooltip-illustration").append("use").attr("xlink:href","#iD-graphic-points"),e.on("enter.intro",function(D){D.id==="add-point"&&k(p)})},E+100);function k(S){e.on("enter.intro",null),S()}}function p(){if(e.mode().id!=="add-point")return l.restart();var E=jt(a,150,e),k=e.lastPointerType()==="mouse"?"place_point":"place_point_touch";t(E,_e("intro.points."+k)),e.map().on("move.intro drawn.intro",function(){E=jt(a,150,e),t(E,_e("intro.points."+k),{duration:0})}),e.on("enter.intro",function(D){if(D.id!=="select")return l.restart();s=e.mode().selectedIDs()[0],e.graph().geometry(s)==="vertex"?(e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),t(E,_e("intro.points.place_point_error"),{buttonText:F.html("intro.ok"),buttonCallback:function(){return l.restart()}})):S(d)});function S(D){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),D()}}function d(){if(e.mode().id!=="select"||!s||!e.hasEntity(s))return f();e.container().select(".inspector-wrap").on("wheel.intro",c),e.container().select(".preset-search-input").on("keydown.intro",null).on("keyup.intro",E),t(".preset-search-input",_e("intro.points.search_cafe",{preset:o.name()})),e.on("enter.intro",function(S){if(!s||!e.hasEntity(s))return k(f);var D=e.selectedIDs();(S.id!=="select"||!D.length||D[0]!==s)&&(e.enter(rt(e,[s])),e.container().select(".inspector-wrap").on("wheel.intro",c),e.container().select(".preset-search-input").on("keydown.intro",null).on("keyup.intro",E),t(".preset-search-input",_e("intro.points.search_cafe",{preset:o.name()})),e.history().on("change.intro",null))});function E(){var S=e.container().select(".preset-list-item:first-child");S.classed("preset-amenity-cafe")&&(e.container().select(".preset-search-input").on("keydown.intro",c,!0).on("keyup.intro",null),t(S.select(".preset-list-button").node(),_e("intro.points.choose_cafe",{preset:o.name()}),{duration:300}),e.history().on("change.intro",function(){k(g)}))}function k(S){e.on("enter.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-search-input").on("keydown.intro keyup.intro",null),S()}}function g(){if(e.mode().id!=="select"||!s||!e.hasEntity(s))return f();u(function(){t(".entity-editor-pane",_e("intro.points.feature_editor"),{tooltipClass:"intro-points-describe",buttonText:F.html("intro.ok"),buttonCallback:function(){E(x)}})},400),e.on("exit.intro",function(){E(m)});function E(k){e.on("exit.intro",null),k()}}function x(){if(e.mode().id!=="select"||!s||!e.hasEntity(s))return f();e.container().select(".inspector-wrap .panewrap").style("right","0%");var E=_e("intro.points.fields_info")+"{br}"+_e("intro.points.add_name");u(function(){var S=e.entity(s);if(S.tags.name){var D=t(".entity-editor-pane",E,{tooltipClass:"intro-points-describe",buttonText:F.html("intro.ok"),buttonCallback:function(){k(b)}});D.select(".instruction").style("display","none")}else t(".entity-editor-pane",E,{tooltipClass:"intro-points-describe"})},400),e.history().on("change.intro",function(){k(b)}),e.on("exit.intro",function(){k(m)});function k(S){e.on("exit.intro",null),e.history().on("change.intro",null),S()}}function b(){e.container().select(".inspector-wrap .panewrap").style("right","0%");var E=".entity-editor-pane button.close svg use",k=G(E).attr("href")||"#iD-icon-close";e.on("exit.intro",function(){S(m)}),t(".entity-editor-pane",_e("intro.points.add_close",{button:{html:gt(k,"inline")}}));function S(D){e.on("exit.intro",null),D()}}function m(){if(!s)return l.restart();var E=e.hasEntity(s);if(!E)return l.restart();var k=$e.match(E,e.graph());e.replace(cl(s,k,o)),e.enter(Ge(e));var S=Ui(E.loc,e.map().center());S&&t(null,null,{duration:0}),e.map().centerEase(E.loc,S),u(function(){var P=ao(E.loc,e);t(P,_e("intro.points.reselect"),{duration:600}),u(function(){e.map().on("move.intro drawn.intro",function(){var O=e.hasEntity(s);if(!O)return l.restart();var T=ao(O.loc,e);t(T,_e("intro.points.reselect"),{duration:0})})},600),e.on("enter.intro",function(O){O.id==="select"&&D(v)})},S+100);function D(P){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),P()}}function v(){if(e.mode().id!=="select"||!s||!e.hasEntity(s))return E(m);e.container().select(".inspector-wrap .panewrap").style("right","0%"),e.on("exit.intro",function(){E(m)}),e.history().on("change.intro",function(){E(y)}),u(function(){t(".entity-editor-pane",_e("intro.points.update"),{tooltipClass:"intro-points-describe"})},400);function E(k){e.on("exit.intro",null),e.history().on("change.intro",null),k()}}function y(){if(e.mode().id!=="select"||!s||!e.hasEntity(s))return E(m);e.container().select(".inspector-wrap .panewrap").style("right","0%"),e.on("exit.intro",function(){E(_)}),u(function(){t(".entity-editor-pane",_e("intro.points.update_close",{button:{html:gt("#iD-icon-close","inline")}}))},500);function E(k){e.on("exit.intro",null),k()}}function _(){if(!s)return l.restart();var E=e.hasEntity(s);if(!E)return l.restart();e.enter(Ge(e));var k=ao(E.loc,e),S=e.lastPointerType()==="mouse"?"rightclick":"edit_menu_touch";t(k,_e("intro.points."+S),{duration:600}),u(function(){e.map().on("move.intro",function(){var P=e.hasEntity(s);if(!P)return l.restart();var O=ao(P.loc,e);t(O,_e("intro.points."+S),{duration:0})})},600),e.on("enter.intro",function(P){if(P.id==="select"){var O=e.selectedIDs();O.length!==1||O[0]!==s||u(function(){var T=vi(e,"delete").node();T&&D(w)},50)}});function D(P){e.on("enter.intro",null),e.map().on("move.intro",null),P()}}function w(){if(!s)return l.restart();var E=e.hasEntity(s);if(!E)return l.restart();var k=vi(e,"delete").node();if(!k)return S(_);t(".edit-menu",_e("intro.points.delete"),{padding:50}),u(function(){e.map().on("move.intro",function(){t(".edit-menu",_e("intro.points.delete"),{duration:0,padding:50})})},300),e.on("exit.intro",function(){if(!s)return l.restart();var D=e.hasEntity(s);if(D)return S(_)}),e.history().on("change.intro",function(D){D.deleted().length&&S(A)});function S(D){e.map().on("move.intro",null),e.history().on("change.intro",null),e.on("exit.intro",null),D()}}function A(){e.history().on("change.intro",function(){E(I)}),t(".top-toolbar button.undo-button",_e("intro.points.undo"));function E(k){e.history().on("change.intro",null),k()}}function I(){r.call("done"),t(".ideditor",_e("intro.points.play",{next:F("intro.areas.title")}),{tooltipBox:".intro-nav-wrap .chapter-area",buttonText:F.html("intro.ok"),buttonCallback:function(){t(".ideditor")}})}return l.enter=function(){f()},l.exit=function(){n.forEach(window.clearTimeout),e.on("enter.intro exit.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",c),e.container().select(".preset-search-input").on("keydown.intro keyup.intro",null)},l.restart=function(){l.exit(),l.enter()},ke(l,r,"on")}function gM(e,t){var r=xe("done"),n=[-85.63552,41.94159],i=$e.item("leisure/playground"),a=$e.field("name"),o=$e.field("description"),s=[],l,u={title:"intro.areas.title"};function c(I,E){s.push(window.setTimeout(I,E))}function f(I){I.stopPropagation(),I.preventDefault()}function p(I,E,k){var S=180*Math.pow(2,e.map().zoom()-19.5),D=jt(I,S,e);t(D,E,k)}function d(){e.enter(Ge(e)),e.history().reset("initial"),l=null;var I=Ui(n,e.map().center());I&&t(null,null,{duration:0}),e.map().centerZoomEase(n,19,I),c(function(){var k=t("button.add-area",_e("intro.areas.add_playground"));k.selectAll(".popover-inner").insert("svg","span").attr("class","tooltip-illustration").append("use").attr("xlink:href","#iD-graphic-areas"),e.on("enter.intro",function(S){S.id==="add-area"&&E(g)})},I+100);function E(k){e.on("enter.intro",null),k()}}function g(){if(e.mode().id!=="add-area")return u.restart();l=null,e.map().zoomEase(19.5,500),c(function(){var E=e.lastPointerType()==="mouse"?"starting_node_click":"starting_node_tap",k=_e("intro.areas.start_playground")+_e("intro.areas."+E);p(n,k,{duration:250}),c(function(){e.map().on("move.intro drawn.intro",function(){p(n,k,{duration:0})}),e.on("enter.intro",function(S){if(S.id!=="draw-area")return u.restart();I(x)})},250)},550);function I(E){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),E()}}function x(){if(e.mode().id!=="draw-area")return u.restart();l=null,p(n,_e("intro.areas.continue_playground"),{duration:250}),c(function(){e.map().on("move.intro drawn.intro",function(){p(n,_e("intro.areas.continue_playground"),{duration:0})})},250),e.on("enter.intro",function(E){if(E.id==="draw-area"){var k=e.hasEntity(e.selectedIDs()[0]);return k&&k.nodes.length>=6?I(b):void 0}else return E.id==="select"?(l=e.selectedIDs()[0],I(m)):u.restart()});function I(E){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),E()}}function b(){if(e.mode().id!=="draw-area")return u.restart();l=null;var I=_e("intro.areas.finish_area_"+(e.lastPointerType()==="mouse"?"click":"tap"))+_e("intro.areas.finish_playground");p(n,I,{duration:250}),c(function(){e.map().on("move.intro drawn.intro",function(){p(n,I,{duration:0})})},250),e.on("enter.intro",function(k){if(k.id!=="draw-area")return k.id==="select"?(l=e.selectedIDs()[0],E(m)):u.restart()});function E(k){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),k()}}function m(){if(!l||!e.hasEntity(l))return d();var I=e.selectedIDs();(e.mode().id!=="select"||!I.length||I[0]!==l)&&e.enter(rt(e,[l])),e.container().select(".inspector-wrap").on("wheel.intro",f),c(function(){e.container().select(".inspector-wrap .panewrap").style("right","-100%"),e.container().select(".preset-search-input").on("keydown.intro",null).on("keyup.intro",E),t(".preset-search-input",_e("intro.areas.search_playground",{preset:i.name()}))},400),e.on("enter.intro",function(S){if(!l||!e.hasEntity(l))return k(d);var D=e.selectedIDs();(S.id!=="select"||!D.length||D[0]!==l)&&(e.enter(rt(e,[l])),e.container().select(".inspector-wrap .panewrap").style("right","-100%"),e.container().select(".inspector-wrap").on("wheel.intro",f),e.container().select(".preset-search-input").on("keydown.intro",null).on("keyup.intro",E),t(".preset-search-input",_e("intro.areas.search_playground",{preset:i.name()})),e.history().on("change.intro",null))});function E(){var S=e.container().select(".preset-list-item:first-child");S.classed("preset-leisure-playground")&&(t(S.select(".preset-list-button").node(),_e("intro.areas.choose_playground",{preset:i.name()}),{duration:300}),e.container().select(".preset-search-input").on("keydown.intro",f,!0).on("keyup.intro",null),e.history().on("change.intro",function(){k(v)}))}function k(S){e.container().select(".inspector-wrap").on("wheel.intro",null),e.on("enter.intro",null),e.history().on("change.intro",null),e.container().select(".preset-search-input").on("keydown.intro keyup.intro",null),S()}}function v(){if(!l||!e.hasEntity(l))return d();var I=e.selectedIDs();if(e.mode().id!=="select"||!I.length||I[0]!==l)return m();if(!e.container().select(".form-field-description").empty())return E(_);e.container().select(".inspector-wrap").on("wheel.intro",f),c(function(){e.container().select(".inspector-wrap .panewrap").style("right","0%");var k=e.entity(l);if(k.tags.description)return E(A);var S=e.container().select(".more-fields").node().getBoundingClientRect();if(S.top>300){var D=e.container().select(".entity-editor-pane .inspector-body"),P=D.node().scrollTop,O=P+(S.top-300);D.transition().duration(250).tween("scroll.inspector",function(){var T=this,M=Vr(P,O);return function(R){T.scrollTop=M(R)}})}c(function(){t(".more-fields .combobox-input",_e("intro.areas.add_field",{name:a.title(),description:o.title()}),{duration:300}),e.container().select(".more-fields .combobox-input").on("click.intro",function(){var T;T=window.setInterval(function(){e.container().select("div.combobox").empty()||(window.clearInterval(T),E(y))},300)})},300)},400),e.on("exit.intro",function(){return E(m)});function E(k){e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".more-fields .combobox-input").on("click.intro",null),e.on("exit.intro",null),k()}}function y(){if(!l||!e.hasEntity(l))return d();var I=e.selectedIDs();if(e.mode().id!=="select"||!I.length||I[0]!==l)return m();if(!e.container().select(".form-field-description").empty())return k(_);if(e.container().select("div.combobox").empty())return k(v);var E;E=window.setInterval(function(){e.container().select("div.combobox").empty()&&(window.clearInterval(E),c(function(){e.container().select(".form-field-description").empty()?k(w):k(_)},300))},300),t("div.combobox",_e("intro.areas.choose_field",{field:o.title()}),{duration:300}),e.on("exit.intro",function(){return k(m)});function k(S){E&&window.clearInterval(E),e.on("exit.intro",null),S()}}function _(){if(!l||!e.hasEntity(l))return d();var I=e.selectedIDs();if(e.mode().id!=="select"||!I.length||I[0]!==l)return m();if(e.container().select(".inspector-wrap .panewrap").style("right","0%"),e.container().select(".form-field-description").empty())return E(w);e.on("exit.intro",function(){E(A)}),t(".entity-editor-pane",_e("intro.areas.describe_playground",{button:{html:gt("#iD-icon-close","inline")}}),{duration:300});function E(k){e.on("exit.intro",null),k()}}function w(){if(!l||!e.hasEntity(l))return d();var I=e.selectedIDs();if(e.mode().id!=="select"||!I.length||I[0]!==l)return m();e.container().select(".inspector-wrap .panewrap").style("right","0%"),t(".entity-editor-pane",_e("intro.areas.retry_add_field",{field:o.title()}),{buttonText:F.html("intro.ok"),buttonCallback:function(){E(v)}}),e.on("exit.intro",function(){return E(m)});function E(k){e.on("exit.intro",null),k()}}function A(){r.call("done"),t(".ideditor",_e("intro.areas.play",{next:F("intro.lines.title")}),{tooltipBox:".intro-nav-wrap .chapter-line",buttonText:F.html("intro.ok"),buttonCallback:function(){t(".ideditor")}})}return u.enter=function(){d()},u.exit=function(){s.forEach(window.clearTimeout),e.on("enter.intro exit.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-search-input").on("keydown.intro keyup.intro",null),e.container().select(".more-fields .combobox-input").on("click.intro",null)},u.restart=function(){u.exit(),u.enter()},ke(u,r,"on")}function vM(e,t){var r=xe("done"),n=[],i=null,a="w646",o=[-85.6297754121684,41.95805253325314],s=[-85.62975395449628,41.95787501510204],l=[-85.62974496187628,41.95742515554585],u=$e.item("category-road_minor"),c=$e.item("highway/residential"),f="w525",p="n2862",d=[-85.62390110349587,41.95397111462291],g=[-85.623867390213,41.95466987786487],x=[-85.62386254803509,41.95430395953872],b="w522",m="w1",v="n3550",y="n5",_=null,w=e.entity(v).loc,A=e.entity(y).loc,I=[-85.6219395542764,41.95228033922477],E=[-85.62219310052491,41.952505413152956],k={title:"intro.lines.title"};function S(ue,ae){n.push(window.setTimeout(ue,ae))}function D(ue){ue.stopPropagation(),ue.preventDefault()}function P(){e.enter(Ge(e)),e.history().reset("initial");var ue=Ui(o,e.map().center());ue&&t(null,null,{duration:0}),e.map().centerZoomEase(o,18.5,ue),S(function(){var Ae=t("button.add-line",_e("intro.lines.add_line"));Ae.selectAll(".popover-inner").insert("svg","span").attr("class","tooltip-illustration").append("use").attr("xlink:href","#iD-graphic-lines"),e.on("enter.intro",function(we){we.id==="add-line"&&ae(O)})},ue+100);function ae(Ae){e.on("enter.intro",null),Ae()}}function O(){if(e.mode().id!=="add-line")return k.restart();i=null;var ue=70*Math.pow(2,e.map().zoom()-18),ae=jt(o,ue,e);ae.height=ae.height+100;var Ae=e.lastPointerType()==="mouse"?"start_line":"start_line_tap",we=_e("intro.lines.missing_road")+"{br}"+_e("intro.lines.line_draw_info")+_e("intro.lines."+Ae);t(ae,we),e.map().on("move.intro drawn.intro",function(){ue=70*Math.pow(2,e.map().zoom()-18),ae=jt(o,ue,e),ae.height=ae.height+100,t(ae,we,{duration:0})}),e.on("enter.intro",function(He){if(He.id!=="draw-line")return k.restart();Me(T)});function Me(He){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),He()}}function T(){if(e.mode().id!=="draw-line")return k.restart();i=e.mode().selectedIDs()[0],e.map().centerEase(s,500),S(function(){var ae=200*Math.pow(2,e.map().zoom()-18.5),Ae=jt(s,ae,e);Ae.height=Ae.height*2,t(Ae,_e("intro.lines.intersect",{name:F("intro.graph.name.flower-street")})),e.map().on("move.intro drawn.intro",function(){ae=200*Math.pow(2,e.map().zoom()-18.5),Ae=jt(s,ae,e),Ae.height=Ae.height*2,t(Ae,_e("intro.lines.intersect",{name:F("intro.graph.name.flower-street")}),{duration:0})})},550),e.history().on("change.intro",function(){M()&&ue(N)}),e.on("enter.intro",function(ae){if(ae.id!=="draw-line")if(ae.id==="select"){ue(R);return}else return k.restart()});function ue(ae){e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.on("enter.intro",null),ae()}}function M(){var ue=i&&e.hasEntity(i);if(!ue)return!1;var ae=e.graph().childNodes(ue);return ae.some(function(Ae){return e.graph().parentWays(Ae).some(function(we){return we.id===a})})}function R(){G(window).on("pointerdown.intro mousedown.intro",D,!0);var ue=jt(l,80,e);t(ue,_e("intro.lines.retry_intersect",{name:F("intro.graph.name.flower-street")})),S(k.restart,3e3)}function N(){if(e.mode().id!=="draw-line")return k.restart();var ue=i&&e.hasEntity(i);if(!ue)return k.restart();e.map().centerEase(l,500);var ae=_e("intro.lines.continue_line")+"{br}"+_e("intro.lines.finish_line_"+(e.lastPointerType()==="mouse"?"click":"tap"))+_e("intro.lines.finish_road");t(".surface",ae),e.on("enter.intro",function(we){if(we.id!=="draw-line")return we.id==="select"?Ae(U):k.restart()});function Ae(we){e.on("enter.intro",null),we()}}function U(){if(e.mode().id!=="select")return k.restart();e.on("exit.intro",function(){return k.restart()});var ue=e.container().select(".preset-category-road_minor .preset-list-button");if(ue.empty())return k.restart();e.container().select(".inspector-wrap").on("wheel.intro",D),S(function(){e.container().select(".inspector-wrap .panewrap").style("right","-100%"),t(ue.node(),_e("intro.lines.choose_category_road",{category:u.name()})),ue.on("click.intro",function(){ae(B)})},400);function ae(Ae){e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-list-button").on("click.intro",null),e.on("exit.intro",null),Ae()}}function B(){if(e.mode().id!=="select")return k.restart();e.on("exit.intro",function(){return k.restart()});var ue=e.container().select(".preset-category-road_minor .subgrid");if(ue.empty())return k.restart();ue.selectAll(":not(.preset-highway-residential) .preset-list-button").on("click.intro",function(){ae($)}),ue.selectAll(".preset-highway-residential .preset-list-button").on("click.intro",function(){ae(z)}),S(function(){t(ue.node(),_e("intro.lines.choose_preset_residential",{preset:c.name()}),{tooltipBox:".preset-highway-residential .preset-list-button",duration:300})},300);function ae(Ae){e.container().select(".preset-list-button").on("click.intro",null),e.on("exit.intro",null),Ae()}}function $(){if(e.mode().id!=="select")return k.restart();e.on("exit.intro",function(){return k.restart()}),e.container().select(".inspector-wrap").on("wheel.intro",D),S(function(){var ae=e.container().select(".entity-editor-pane .preset-list-button");t(ae.node(),_e("intro.lines.retry_preset_residential",{preset:c.name()})),ae.on("click.intro",function(){ue(U)})},500);function ue(ae){e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-list-button").on("click.intro",null),e.on("exit.intro",null),ae()}}function z(){e.on("exit.intro",function(){ue(V)}),S(function(){t(".entity-editor-pane",_e("intro.lines.name_road",{button:{html:gt("#iD-icon-close","inline")}}),{tooltipClass:"intro-lines-name_road"})},500);function ue(ae){e.on("exit.intro",null),ae()}}function V(){e.history().checkpoint("doneAddLine"),S(function(){t(".surface",_e("intro.lines.did_name_road"),{buttonText:F.html("intro.ok"),buttonCallback:function(){ue(H)}})},500);function ue(ae){ae()}}function H(){if(e.history().reset("doneAddLine"),!e.hasEntity(f)||!e.hasEntity(p))return k.restart();var ue=Ui(x,e.map().center());ue&&t(null,null,{duration:0}),e.map().centerZoomEase(x,19,ue),S(function(){var Ae=250*Math.pow(2,e.map().zoom()-19),we=jt(x,Ae,e),Me=function(){ae(Z)};t(we,_e("intro.lines.update_line"),{buttonText:F.html("intro.ok"),buttonCallback:Me}),e.map().on("move.intro drawn.intro",function(){var He=250*Math.pow(2,e.map().zoom()-19),Qe=jt(x,He,e);t(Qe,_e("intro.lines.update_line"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:Me})})},ue+100);function ae(Ae){e.map().on("move.intro drawn.intro",null),Ae()}}function Z(){if(e.history().reset("doneAddLine"),!e.hasEntity(f)||!e.hasEntity(p))return k.restart();var ue=40*Math.pow(2,e.map().zoom()-19),ae=jt(d,ue,e),Ae=_e("intro.lines.add_node"+(e.lastPointerType()==="mouse"?"":"_touch"));t(ae,Ae),e.map().on("move.intro drawn.intro",function(){var Me=40*Math.pow(2,e.map().zoom()-19),He=jt(d,Me,e);t(He,Ae,{duration:0})}),e.history().on("change.intro",function(Me){if(!e.hasEntity(f)||!e.hasEntity(p))return we(H);Me.created().length===1&&S(function(){we(oe)},500)}),e.on("enter.intro",function(Me){Me.id!=="select"&&we(H)});function we(Me){e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.on("enter.intro",null),Me()}}function oe(){if(!e.hasEntity(f)||!e.hasEntity(p))return we(H);var ue=100*Math.pow(2,e.map().zoom()-19),ae=jt(g,ue,e),Ae=_e("intro.lines.start_drag_endpoint"+(e.lastPointerType()==="mouse"?"":"_touch"))+_e("intro.lines.drag_to_intersection");t(ae,Ae),e.map().on("move.intro drawn.intro",function(){if(!e.hasEntity(f)||!e.hasEntity(p))return we(H);var Me=100*Math.pow(2,e.map().zoom()-19),He=jt(g,Me,e);t(He,Ae,{duration:0});var Qe=e.entity(p);Vt(Qe.loc,g)<=4&&we(pe)});function we(Me){e.map().on("move.intro drawn.intro",null),Me()}}function pe(){if(!e.hasEntity(f)||!e.hasEntity(p))return we(H);var ue=100*Math.pow(2,e.map().zoom()-19),ae=jt(g,ue,e),Ae=_e("intro.lines.spot_looks_good")+_e("intro.lines.finish_drag_endpoint"+(e.lastPointerType()==="mouse"?"":"_touch"));t(ae,Ae),e.map().on("move.intro drawn.intro",function(){if(!e.hasEntity(f)||!e.hasEntity(p))return we(H);var Me=100*Math.pow(2,e.map().zoom()-19),He=jt(g,Me,e);t(He,Ae,{duration:0});var Qe=e.entity(p);Vt(Qe.loc,g)>4&&we(oe)}),e.on("enter.intro",function(){we(ne)});function we(Me){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),Me()}}function ne(){if(!e.hasEntity(f)||!e.hasEntity(p))return Ae(H);e.selectedIDs().indexOf(f)===-1&&e.enter(rt(e,[f]));var ue=80*Math.pow(2,e.map().zoom()-19),ae=jt(x,ue,e);t(ae,_e("intro.lines.start_drag_midpoint")),e.map().on("move.intro drawn.intro",function(){if(!e.hasEntity(f)||!e.hasEntity(p))return Ae(H);var we=80*Math.pow(2,e.map().zoom()-19),Me=jt(x,we,e);t(Me,_e("intro.lines.start_drag_midpoint"),{duration:0})}),e.history().on("change.intro",function(we){we.created().length===1&&Ae(ge)}),e.on("enter.intro",function(we){we.id!=="select"&&e.enter(rt(e,[f]))});function Ae(we){e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.on("enter.intro",null),we()}}function ge(){if(!e.hasEntity(f)||!e.hasEntity(p))return we(H);var ue=100*Math.pow(2,e.map().zoom()-19),ae=jt(g,ue,e);ae.height+=400;var Ae=function(){e.history().checkpoint("doneUpdateLine"),we(ve)};t(ae,_e("intro.lines.continue_drag_midpoint"),{buttonText:F.html("intro.ok"),buttonCallback:Ae}),e.map().on("move.intro drawn.intro",function(){if(!e.hasEntity(f)||!e.hasEntity(p))return we(H);var Me=100*Math.pow(2,e.map().zoom()-19),He=jt(g,Me,e);He.height+=400,t(He,_e("intro.lines.continue_drag_midpoint"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:Ae})});function we(Me){e.map().on("move.intro drawn.intro",null),Me()}}function ve(){if(e.history().reset("doneUpdateLine"),e.enter(Ge(e)),!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return k.restart();var ue=Ui(I,e.map().center());ue&&t(null,null,{duration:0}),e.map().centerZoomEase(I,18,ue),S(function(){var Ae=200*Math.pow(2,e.map().zoom()-18),we=jt(I,Ae,e);we.top-=200,we.height+=400;var Me=function(){ae(Oe)};t(we,_e("intro.lines.delete_lines",{street:F("intro.graph.name.12th-avenue")}),{buttonText:F.html("intro.ok"),buttonCallback:Me}),e.map().on("move.intro drawn.intro",function(){var He=200*Math.pow(2,e.map().zoom()-18),Qe=jt(I,He,e);Qe.top-=200,Qe.height+=400,t(Qe,_e("intro.lines.delete_lines",{street:F("intro.graph.name.12th-avenue")}),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:Me})}),e.history().on("change.intro",function(){S(function(){ae(ve)},500)})},ue+100);function ae(Ae){e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),Ae()}}function Oe(){e.history().reset("doneUpdateLine"),e.enter(Ge(e)),e.map().centerZoomEase(w,18,500);var ue=_e("intro.lines.split_street",{street1:F("intro.graph.name.11th-avenue"),street2:F("intro.graph.name.washington-street")})+_e("intro.lines."+(e.lastPointerType()==="mouse"?"rightclick_intersection":"edit_menu_intersection_touch"));S(function(){var Ae=60*Math.pow(2,e.map().zoom()-18),we=jt(w,Ae,e);t(we,ue),e.map().on("move.intro drawn.intro",function(){var Me=60*Math.pow(2,e.map().zoom()-18),He=jt(w,Me,e);t(He,ue,{duration:0})}),e.on("enter.intro",function(Me){if(Me.id==="select"){var He=e.selectedIDs();He.length!==1||He[0]!==v||S(function(){var Qe=vi(e,"split").node();Qe&&ae(tt)},50)}}),e.history().on("change.intro",function(){S(function(){ae(ve)},300)})},600);function ae(Ae){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),e.history().on("change.intro",null),Ae()}}function tt(){if(!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return Ae(ve);var ue=vi(e,"split").node();if(!ue)return Ae(Oe);var ae=!1;_=null,t(".edit-menu",_e("intro.lines.split_intersection",{street:F("intro.graph.name.washington-street")}),{padding:50}),e.map().on("move.intro drawn.intro",function(){var we=vi(e,"split").node();if(!ae&&!we)return Ae(Oe);t(".edit-menu",_e("intro.lines.split_intersection",{street:F("intro.graph.name.washington-street")}),{duration:0,padding:50})}),e.history().on("change.intro",function(we){ae=!0,S(function(){e.history().undoAnnotation()===F("operations.split.annotation.line",{n:1})?(_=we.created()[0].id,Ae(te)):(_=null,Ae(Ce))},300)});function Ae(we){e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),we()}}function Ce(){e.enter(Ge(e)),e.map().centerZoomEase(w,18,500);var ue=function(){we(Oe)},ae=60*Math.pow(2,e.map().zoom()-18),Ae=jt(w,ae,e);t(Ae,_e("intro.lines.retry_split"),{buttonText:F.html("intro.ok"),buttonCallback:ue}),e.map().on("move.intro drawn.intro",function(){var Me=60*Math.pow(2,e.map().zoom()-18),He=jt(w,Me,e);t(He,_e("intro.lines.retry_split"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:ue})});function we(Me){e.map().on("move.intro drawn.intro",null),Me()}}function te(){if(!_||!e.hasEntity(_)||!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return He(Oe);var ue=e.selectedIDs(),ae="intro.lines.did_split_"+(ue.length>1?"multi":"single"),Ae=F("intro.graph.name.washington-street"),we=200*Math.pow(2,e.map().zoom()-18),Me=jt(E,we,e);Me.width=Me.width/2,t(Me,_e(ae,{street1:Ae,street2:Ae}),{duration:500}),S(function(){e.map().centerZoomEase(E,18,500),e.map().on("move.intro drawn.intro",function(){var Qe=200*Math.pow(2,e.map().zoom()-18),et=jt(E,Qe,e);et.width=et.width/2,t(et,_e(ae,{street1:Ae,street2:Ae}),{duration:0})})},600),e.on("enter.intro",function(){var Qe=e.selectedIDs();Qe.length===1&&Qe[0]===_&&He(le)}),e.history().on("change.intro",function(){if(!_||!e.hasEntity(_)||!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return He(Oe)});function He(Qe){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),e.history().on("change.intro",null),Qe()}}function le(){if(!_||!e.hasEntity(_)||!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return we(Oe);var ue=e.selectedIDs(),ae=ue.indexOf(_)!==-1,Ae=ue.indexOf(m)!==-1;if(ae&&Ae)return we(Se);if(!ae&&!Ae)return we(te);e.map().centerZoomEase(E,18,500),S(function(){var Me,He,Qe,et;ae?(Me=F("intro.graph.name.washington-street"),He=F("intro.graph.name.12th-avenue"),Qe=60*Math.pow(2,e.map().zoom()-18),et=jt(A,Qe,e),et.width*=3):(Me=F("intro.graph.name.12th-avenue"),He=F("intro.graph.name.washington-street"),Qe=200*Math.pow(2,e.map().zoom()-18),et=jt(E,Qe,e),et.width/=2),t(et,_e("intro.lines.multi_select",{selected:Me,other1:He})+" "+_e("intro.lines.add_to_selection_"+(e.lastPointerType()==="mouse"?"click":"touch"),{selected:Me,other2:He})),e.map().on("move.intro drawn.intro",function(){ae?(Me=F("intro.graph.name.washington-street"),He=F("intro.graph.name.12th-avenue"),Qe=60*Math.pow(2,e.map().zoom()-18),et=jt(A,Qe,e),et.width*=3):(Me=F("intro.graph.name.12th-avenue"),He=F("intro.graph.name.washington-street"),Qe=200*Math.pow(2,e.map().zoom()-18),et=jt(E,Qe,e),et.width/=2),t(et,_e("intro.lines.multi_select",{selected:Me,other1:He})+" "+_e("intro.lines.add_to_selection_"+(e.lastPointerType()==="mouse"?"click":"touch"),{selected:Me,other2:He}),{duration:0})}),e.on("enter.intro",function(){we(le)}),e.history().on("change.intro",function(){if(!_||!e.hasEntity(_)||!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return we(Oe)})},600);function we(Me){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),e.history().on("change.intro",null),Me()}}function Se(){if(!_||!e.hasEntity(_)||!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return we(Oe);var ue=200*Math.pow(2,e.map().zoom()-18),ae=jt(E,ue,e),Ae=_e("intro.lines.multi_select_success")+_e("intro.lines.multi_"+(e.lastPointerType()==="mouse"?"rightclick":"edit_menu_touch"));t(ae,Ae),e.map().on("move.intro drawn.intro",function(){var Me=200*Math.pow(2,e.map().zoom()-18),He=jt(E,Me,e);t(He,Ae,{duration:0})}),e.ui().editMenu().on("toggled.intro",function(Me){Me&&S(function(){var He=e.selectedIDs();if(He.length===2&&He.indexOf(m)!==-1&&He.indexOf(_)!==-1){var Qe=vi(e,"delete").node();if(!Qe)return;we(Ie)}else return He.length===1&&He.indexOf(_)!==-1?we(le):we(te)},300)}),e.history().on("change.intro",function(){if(!_||!e.hasEntity(_)||!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return we(Oe)});function we(Me){e.map().on("move.intro drawn.intro",null),e.ui().editMenu().on("toggled.intro",null),e.history().on("change.intro",null),Me()}}function Ie(){if(!_||!e.hasEntity(_)||!e.hasEntity(b)||!e.hasEntity(m)||!e.hasEntity(v))return ae(Oe);var ue=vi(e,"delete").node();if(!ue)return ae(Se);t(".edit-menu",_e("intro.lines.multi_delete"),{padding:50}),e.map().on("move.intro drawn.intro",function(){t(".edit-menu",_e("intro.lines.multi_delete"),{duration:0,padding:50})}),e.on("exit.intro",function(){if(e.hasEntity(_)||e.hasEntity(m))return ae(le)}),e.history().on("change.intro",function(){e.hasEntity(_)||e.hasEntity(m)?ae(Le):ae(We)});function ae(Ae){e.map().on("move.intro drawn.intro",null),e.on("exit.intro",null),e.history().on("change.intro",null),Ae()}}function Le(){e.enter(Ge(e));var ue=200*Math.pow(2,e.map().zoom()-18),ae=jt(E,ue,e);t(ae,_e("intro.lines.retry_delete"),{buttonText:F.html("intro.ok"),buttonCallback:function(){Ae(le)}});function Ae(we){we()}}function We(){r.call("done"),t(".ideditor",_e("intro.lines.play",{next:F("intro.buildings.title")}),{tooltipBox:".intro-nav-wrap .chapter-building",buttonText:F.html("intro.ok"),buttonCallback:function(){t(".ideditor")}})}return k.enter=function(){P()},k.exit=function(){n.forEach(window.clearTimeout),G(window).on("pointerdown.intro mousedown.intro",null,!0),e.on("enter.intro exit.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-list-button").on("click.intro",null)},k.restart=function(){k.exit(),k.enter()},ke(k,r,"on")}function yM(e,t){var r=xe("done"),n=[-85.62815,41.95638],i=[-85.62732,41.95347],a=$e.item("category-building"),o=$e.item("building/house"),s=$e.item("man_made/storage_tank"),l=[],u=null,c=null,f={title:"intro.buildings.title"};function p($,z){l.push(window.setTimeout($,z))}function d($){$.stopPropagation(),$.preventDefault()}function g($,z,V){var H=160*Math.pow(2,e.map().zoom()-20),Z=jt($,H,e);t(Z,z,V)}function x($,z,V){var H=190*Math.pow(2,e.map().zoom()-19.5),Z=jt($,H,e);t(Z,z,V)}function b(){e.enter(Ge(e)),e.history().reset("initial"),u=null;var $=Ui(n,e.map().center());$&&t(null,null,{duration:0}),e.map().centerZoomEase(n,19,$),p(function(){var V=t("button.add-area",_e("intro.buildings.add_building"));V.selectAll(".popover-inner").insert("svg","span").attr("class","tooltip-illustration").append("use").attr("xlink:href","#iD-graphic-buildings"),e.on("enter.intro",function(H){H.id==="add-area"&&z(m)})},$+100);function z(V){e.on("enter.intro",null),V()}}function m(){if(e.mode().id!=="add-area")return $(b);u=null,e.map().zoomEase(20,500),p(function(){var z=_e("intro.buildings.start_building")+_e("intro.buildings.building_corner_"+(e.lastPointerType()==="mouse"?"click":"tap"));g(n,z),e.map().on("move.intro drawn.intro",function(){g(n,z,{duration:0})}),e.on("enter.intro",function(V){if(V.id!=="draw-area")return f.restart();$(v)})},550);function $(z){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),z()}}function v(){if(e.mode().id!=="draw-area")return z(b);u=null;var $=_e("intro.buildings.continue_building")+"{br}"+_e("intro.areas.finish_area_"+(e.lastPointerType()==="mouse"?"click":"tap"))+_e("intro.buildings.finish_building");g(n,$),e.map().on("move.intro drawn.intro",function(){g(n,$,{duration:0})}),e.on("enter.intro",function(V){if(V.id!=="draw-area")if(V.id==="select"){var H=e.graph(),Z=e.entity(e.selectedIDs()[0]),oe=H.childNodes(Z),pe=ot(oe).map(function(ne){return e.projection(ne.loc)});return pM(pe)?(u=Z.id,z(_)):z(y)}else return f.restart()});function z(V){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),V()}}function y(){var $=function(){z(b)};g(n,_e("intro.buildings.retry_building"),{buttonText:F.html("intro.ok"),buttonCallback:$}),e.map().on("move.intro drawn.intro",function(){g(n,_e("intro.buildings.retry_building"),{duration:0,buttonText:F.html("intro.ok"),buttonCallback:$})});function z(V){e.map().on("move.intro drawn.intro",null),V()}}function _(){if(!u||!e.hasEntity(u))return b();var $=e.selectedIDs();(e.mode().id!=="select"||!$.length||$[0]!==u)&&e.enter(rt(e,[u])),e.container().select(".inspector-wrap").on("wheel.intro",d),p(function(){e.container().select(".inspector-wrap .panewrap").style("right","-100%");var V=e.container().select(".preset-category-building .preset-list-button");t(V.node(),_e("intro.buildings.choose_category_building",{category:a.name()})),V.on("click.intro",function(){V.on("click.intro",null),z(w)})},400),e.on("enter.intro",function(V){if(!u||!e.hasEntity(u))return z(b);var H=e.selectedIDs();if(V.id!=="select"||!H.length||H[0]!==u)return z(_)});function z(V){e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-list-button").on("click.intro",null),e.on("enter.intro",null),V()}}function w(){if(!u||!e.hasEntity(u))return b();var $=e.selectedIDs();(e.mode().id!=="select"||!$.length||$[0]!==u)&&e.enter(rt(e,[u])),e.container().select(".inspector-wrap").on("wheel.intro",d),p(function(){e.container().select(".inspector-wrap .panewrap").style("right","-100%");var V=e.container().select(".preset-building-house .preset-list-button");t(V.node(),_e("intro.buildings.choose_preset_house",{preset:o.name()}),{duration:300}),V.on("click.intro",function(){V.on("click.intro",null),z(A)})},400),e.on("enter.intro",function(V){if(!u||!e.hasEntity(u))return z(b);var H=e.selectedIDs();if(V.id!=="select"||!H.length||H[0]!==u)return z(_)});function z(V){e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-list-button").on("click.intro",null),e.on("enter.intro",null),V()}}function A(){if(!u||!e.hasEntity(u))return b();var $=e.selectedIDs();(e.mode().id!=="select"||!$.length||$[0]!==u)&&e.enter(rt(e,[u])),e.history().checkpoint("hasHouse"),e.on("exit.intro",function(){z(I)}),p(function(){t(".entity-editor-pane",_e("intro.buildings.close",{button:{html:gt("#iD-icon-close","inline")}}))},500);function z(V){e.on("exit.intro",null),V()}}function I(){if(!u)return f.restart();e.enter(Ge(e)),e.history().reset("hasHouse");var $=e.map().zoom();$<20&&($=20),e.map().centerZoomEase(n,$,500),e.on("enter.intro",function(V){if(V.id==="select"){var H=e.selectedIDs();H.length!==1||H[0]!==u||p(function(){var Z=vi(e,"orthogonalize").node();Z&&z(E)},50)}}),e.map().on("move.intro drawn.intro",function(){var V=_e("intro.buildings."+(e.lastPointerType()==="mouse"?"rightclick_building":"edit_menu_building_touch"));g(n,V,{duration:0})}),e.history().on("change.intro",function(){z(I)});function z(V){e.on("enter.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),V()}}function E(){if(!u)return f.restart();var $=e.hasEntity(u);if(!$)return H(I);var z=vi(e,"orthogonalize").node();if(!z)return H(I);var V=!1;t(".edit-menu",_e("intro.buildings.square_building"),{padding:50}),e.on("enter.intro",function(Z){Z.id==="browse"?H(I):(Z.id==="move"||Z.id==="rotate")&&H(k)}),e.map().on("move.intro",function(){var Z=vi(e,"orthogonalize").node();if(!V&&!Z)return H(I);t(".edit-menu",_e("intro.buildings.square_building"),{duration:0,padding:50})}),e.history().on("change.intro",function(){V=!0,e.history().on("change.intro",null),p(function(){e.history().undoAnnotation()===F("operations.orthogonalize.annotation.feature",{n:1})?H(S):H(k)},500)});function H(Z){e.on("enter.intro",null),e.map().on("move.intro",null),e.history().on("change.intro",null),Z()}}function k(){e.enter(Ge(e)),g(n,_e("intro.buildings.retry_square"),{buttonText:F.html("intro.ok"),buttonCallback:function(){$(I)}});function $(z){z()}}function S(){e.history().checkpoint("doneSquare"),g(n,_e("intro.buildings.done_square"),{buttonText:F.html("intro.ok"),buttonCallback:function(){$(D)}});function $(z){z()}}function D(){e.enter(Ge(e)),e.history().reset("doneSquare"),c=null;var $=Ui(i,e.map().center());$&&t(null,null,{duration:0}),e.map().centerZoomEase(i,19.5,$),p(function(){t("button.add-area",_e("intro.buildings.add_tank")),e.on("enter.intro",function(V){V.id==="add-area"&&z(P)})},$+100);function z(V){e.on("enter.intro",null),V()}}function P(){if(e.mode().id!=="add-area")return $(D);c=null,p(function(){var z=_e("intro.buildings.start_tank")+_e("intro.buildings.tank_edge_"+(e.lastPointerType()==="mouse"?"click":"tap"));x(i,z),e.map().on("move.intro drawn.intro",function(){x(i,z,{duration:0})}),e.on("enter.intro",function(V){if(V.id!=="draw-area")return f.restart();$(O)})},550);function $(z){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),z()}}function O(){if(e.mode().id!=="draw-area")return z(D);c=null;var $=_e("intro.buildings.continue_tank")+"{br}"+_e("intro.areas.finish_area_"+(e.lastPointerType()==="mouse"?"click":"tap"))+_e("intro.buildings.finish_tank");x(i,$),e.map().on("move.intro drawn.intro",function(){x(i,$,{duration:0})}),e.on("enter.intro",function(V){if(V.id!=="draw-area")return V.id==="select"?(c=e.selectedIDs()[0],z(T)):z(D)});function z(V){e.map().on("move.intro drawn.intro",null),e.on("enter.intro",null),V()}}function T(){if(!c||!e.hasEntity(c))return D();var $=e.selectedIDs();(e.mode().id!=="select"||!$.length||$[0]!==c)&&e.enter(rt(e,[c])),e.container().select(".inspector-wrap").on("wheel.intro",d),p(function(){e.container().select(".inspector-wrap .panewrap").style("right","-100%"),e.container().select(".preset-search-input").on("keydown.intro",null).on("keyup.intro",z),t(".preset-search-input",_e("intro.buildings.search_tank",{preset:s.name()}))},400),e.on("enter.intro",function(H){if(!c||!e.hasEntity(c))return V(D);var Z=e.selectedIDs();(H.id!=="select"||!Z.length||Z[0]!==c)&&(e.enter(rt(e,[c])),e.container().select(".inspector-wrap .panewrap").style("right","-100%"),e.container().select(".inspector-wrap").on("wheel.intro",d),e.container().select(".preset-search-input").on("keydown.intro",null).on("keyup.intro",z),t(".preset-search-input",_e("intro.buildings.search_tank",{preset:s.name()})),e.history().on("change.intro",null))});function z(){var H=e.container().select(".preset-list-item:first-child");H.classed("preset-man_made-storage_tank")&&(t(H.select(".preset-list-button").node(),_e("intro.buildings.choose_tank",{preset:s.name()}),{duration:300}),e.container().select(".preset-search-input").on("keydown.intro",d,!0).on("keyup.intro",null),e.history().on("change.intro",function(){V(M)}))}function V(H){e.container().select(".inspector-wrap").on("wheel.intro",null),e.on("enter.intro",null),e.history().on("change.intro",null),e.container().select(".preset-search-input").on("keydown.intro keyup.intro",null),H()}}function M(){if(!c||!e.hasEntity(c))return D();var $=e.selectedIDs();(e.mode().id!=="select"||!$.length||$[0]!==c)&&e.enter(rt(e,[c])),e.history().checkpoint("hasTank"),e.on("exit.intro",function(){z(R)}),p(function(){t(".entity-editor-pane",_e("intro.buildings.close",{button:{html:gt("#iD-icon-close","inline")}}))},500);function z(V){e.on("exit.intro",null),V()}}function R(){if(!c)return $(D);e.enter(Ge(e)),e.history().reset("hasTank"),e.map().centerEase(i,500),p(function(){e.on("enter.intro",function(V){if(V.id==="select"){var H=e.selectedIDs();H.length!==1||H[0]!==c||p(function(){var Z=vi(e,"circularize").node();Z&&$(N)},50)}});var z=_e("intro.buildings."+(e.lastPointerType()==="mouse"?"rightclick_tank":"edit_menu_tank_touch"));x(i,z),e.map().on("move.intro drawn.intro",function(){x(i,z,{duration:0})}),e.history().on("change.intro",function(){$(R)})},600);function $(z){e.on("enter.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),z()}}function N(){if(!c)return f.restart();var $=e.hasEntity(c);if(!$)return H(R);var z=vi(e,"circularize").node();if(!z)return H(R);var V=!1;t(".edit-menu",_e("intro.buildings.circle_tank"),{padding:50}),e.on("enter.intro",function(Z){Z.id==="browse"?H(R):(Z.id==="move"||Z.id==="rotate")&&H(U)}),e.map().on("move.intro",function(){var Z=vi(e,"circularize").node();if(!V&&!Z)return H(R);t(".edit-menu",_e("intro.buildings.circle_tank"),{duration:0,padding:50})}),e.history().on("change.intro",function(){V=!0,e.history().on("change.intro",null),p(function(){e.history().undoAnnotation()===F("operations.circularize.annotation.feature",{n:1})?H(B):H(U)},500)});function H(Z){e.on("enter.intro",null),e.map().on("move.intro",null),e.history().on("change.intro",null),Z()}}function U(){e.enter(Ge(e)),x(i,_e("intro.buildings.retry_circle"),{buttonText:F.html("intro.ok"),buttonCallback:function(){$(R)}});function $(z){z()}}function B(){r.call("done"),t(".ideditor",_e("intro.buildings.play",{next:F("intro.startediting.title")}),{tooltipBox:".intro-nav-wrap .chapter-startEditing",buttonText:F.html("intro.ok"),buttonCallback:function(){t(".ideditor")}})}return f.enter=function(){b()},f.exit=function(){l.forEach(window.clearTimeout),e.on("enter.intro exit.intro",null),e.map().on("move.intro drawn.intro",null),e.history().on("change.intro",null),e.container().select(".inspector-wrap").on("wheel.intro",null),e.container().select(".preset-search-input").on("keydown.intro keyup.intro",null),e.container().select(".more-fields .combobox-input").on("click.intro",null)},f.restart=function(){f.exit(),f.enter()},ke(f,r,"on")}function bM(e,t){var r=xe("done","startEditing"),n=G(null),i={title:"intro.startediting.title"};function a(){t(".map-control.help-control",_e("intro.startediting.help"),{buttonText:F.html("intro.ok"),buttonCallback:function(){o()}})}function o(){t(".map-control.help-control",_e("intro.startediting.shortcuts"),{buttonText:F.html("intro.ok"),buttonCallback:function(){s()}})}function s(){e.container().selectAll(".shaded").remove(),t(".top-toolbar button.save",_e("intro.startediting.save"),{buttonText:F.html("intro.ok"),buttonCallback:function(){l()}})}function l(){e.container().selectAll(".shaded").remove(),n=Oi(e.container()),n.select(".modal").attr("class","modal-splash modal"),n.selectAll(".close").remove();var u=n.select(".content").attr("class","fillL").append("button").attr("class","modal-section huge-modal-button").on("click",function(){n.remove()});u.append("svg").attr("class","illustration").append("use").attr("xlink:href","#iD-logo-walkthrough"),u.append("h2").call(F.append("intro.startediting.start")),r.call("startEditing")}return i.enter=function(){a()},i.exit=function(){n.remove(),e.container().selectAll(".shaded").remove()},ke(i,r,"on")}var fJ={welcome:dM,navigation:mM,point:hM,area:gM,line:vM,building:yM,startEditing:bM},nc=["welcome","navigation","point","area","line","building","startEditing"];function kl(e){let t="EsriWorldImageryClarity",r={},n;function i(o){dt.get("intro_graph").then(s=>{for(let l in s)r[l]||(r[l]=qe(fM(s[l])));o.call(a)}).catch(function(){})}function a(o){e.enter(Ge(e));let s=e.connection(),l=e.history().toJSON(),u=window.location.hash,c=e.map().center(),f=e.map().zoom(),p=e.background().baseLayerSource(),d=e.background().overlayLayerSources(),g=e.container().selectAll(".main-map .layer-background").style("opacity"),x=s&&s.caches(),b=e.history().graph().base().entities;e.ui().sidebar.expand(),e.container().selectAll("button.sidebar-toggle").classed("disabled",!0),e.inIntro(!0),s&&s.toggle(!1).reset(),e.history().reset(),e.history().merge(Object.values(Rn().load(r).entities)),e.history().checkpoint("initial");let m=e.background().findSource(t);m?e.background().baseLayerSource(m):e.background().bing(),d.forEach(D=>e.background().toggleOverlayLayer(D)),e.layers().all().forEach(D=>{typeof D.layer.enabled=="function"&&D.layer.enabled(D.id==="osm")}),e.container().selectAll(".main-map .layer-background").style("opacity",1);let y=k8(e.container().node());o.call(y),Te("walkthrough_started","yes");let w=(Te("walkthrough_progress")||"").split(";").filter(Boolean),A=nc.map((D,P)=>{let O=fJ[D](e,y.reveal).on("done",()=>{if(k.filter(T=>T.title===O.title).classed("finished",!0),P{w.push("startEditing"),Te("walkthrough_progress",ot(w).join(";")),$r(nc,w).length||Te("walkthrough_completed","yes"),y.remove(),I.remove(),e.container().selectAll(".main-map .layer-background").style("opacity",g),e.container().selectAll("button.sidebar-toggle").classed("disabled",!1),s&&s.toggle(!0).reset().caches(x),e.history().reset().merge(Object.values(b)),e.background().baseLayerSource(p),d.forEach(P=>e.background().toggleOverlayLayer(P)),l&&e.history().fromJSON(l,!1),e.map().centerZoom(c,f),window.location.replace(u),e.inIntro(!1)});let I=o.append("div").attr("class","intro-nav-wrap fillD");I.append("svg").attr("class","intro-nav-wrap-logo").append("use").attr("xlink:href","#iD-logo-walkthrough");let k=I.append("div").attr("class","joined").selectAll("button.chapter").data(A).enter().append("button").attr("class",(D,P)=>`chapter chapter-${nc[P]}`).on("click",S);k.append("span").html(D=>F.html(D.title)),k.append("span").attr("class","status").call(ce(fe.textDirection()==="rtl"?"#iD-icon-backward":"#iD-icon-forward","inline")),S(null,A[0]);function S(D,P){n&&n.exit(),e.enter(Ge(e)),n=P,n.enter(),k.classed("next",!1).classed("active",O=>O.title===n.title)}}return i}function A8(e){var t={id:"warnings",count:0,iconID:"iD-icon-alert",descriptionID:"issues.warnings_and_errors"},r={id:"resolved",count:0,iconID:"iD-icon-apply",descriptionID:"issues.user_resolved_issues"};function n(i){var a=[],o=e.validator().getIssues({what:Te("validate-what")||"edited",where:Te("validate-where")||"all"});if(o.length&&(t.count=o.length,a.push(t)),Te("validate-what")==="all"){var s=e.validator().getResolvedIssues();s.length&&(r.count=s.length,a.push(r))}var l=i.selectAll(".chip").data(a,function(c){return c.id});l.exit().remove();var u=l.enter().append("a").attr("class",function(c){return"chip "+c.id+"-count"}).attr("href","#").each(function(c){var f=G(this),p=Ye().placement("top").title(()=>F.append(c.descriptionID));f.call(p).on("click",function(d){d.preventDefault(),p.hide(G(this)),e.ui().togglePanes(e.container().select(".map-panes .issues-pane"))}),f.call(ce("#"+c.iconID))});u.append("span").attr("class","count"),u.merge(l).selectAll("span.count").text(function(c){return c.count.toString()})}return function(i){n(i),e.validator().on("validated.infobox",function(){n(i)})}}function z0(e){function t(r){var n=yl(e),i={},a=Mi(),o=H2(a,e).showLabels(!1),s=W2(a,e),l=Eo().scaleExtent([jn(.5),jn(24)]).on("start",A).on("zoom",I).on("end",E),u=G(null),c=G(null),f=G(null),p=!1,d=!0,g=!1,x=null,b=6,m,v,y,_,w;function A(){g||(y=_=a.transform(),x=null)}function I(O){if(!g){var T=O.transform.x,M=O.transform.y,R=O.transform.k,N=R!==y.k,U=T!==y.x||M!==y.y;if(!(!N&&!U)){x||(x=N?"zoom":"pan");var B=a.transform(),$,z,V;x==="zoom"?(V=R/B.k,$=(v[0]/V-v[0])*V,z=(v[1]/V-v[1])*V):(R=B.k,V=1,$=T-B.x,z=M-B.y),ii(c,$,z,V),ii(f,0,0,V),p=!0,_=Yr.translate(T,M).scale(R);var H=hr(e.projection.scale()),Z=hr(R);b=H-Z,D()}}}function E(){g||x==="pan"&&(k(),x=null,e.map().center(a.invert(v)))}function k(){var O=e.map().center(),T=e.projection.transform(),M=hr(T.k),R=Math.max(M-b,.5),N=jn(R);a.translate([T.x,T.y]).scale(N);var U=a(O),B=x==="pan"?rr([_.x,_.y],[y.x,y.y]):[0,0],$=v[0]-U[0]+T.x+B[0],z=v[1]-U[1]+T.y+B[1];a.translate([$,z]).clipExtent([[0,0],m]),_=a.transform(),p&&(ii(c,0,0),ii(f,0,0),p=!1),l.scaleExtent([jn(.5),jn(M-3)]),g=!0,u.call(l.transform,_),g=!1}function S(){if(clearTimeout(w),!d){k();var O=hr(a.scale());c=u.selectAll(".map-in-map-tiles").data([0]),c=c.enter().append("div").attr("class","map-in-map-tiles").merge(c),n.source(e.background().baseLayerSource()).projection(a).dimensions(m);var T=c.selectAll(".map-in-map-background").data([0]);T.enter().append("div").attr("class","map-in-map-background").merge(T).call(n);for(var M=e.background().overlayLayerSources(),R=[],N=0;N=e.minEditableZoom();r.style("display",a?"none":"block")}e.map().on("move.notice",Bt(i,500)),i()}}function xM(e){var t=xe("resize"),r="PointerEvent"in window?"pointer":"mouse";function n(a){a.append("button").attr("class","thumb-hide").attr("title",F("icons.close")).on("click",function(){de.streetside&&de.streetside.hideViewer(e),de.mapillary&&de.mapillary.hideViewer(e),de.kartaview&&de.kartaview.hideViewer(e),de.mapilio&&de.mapilio.hideViewer(e),de.vegbilder&&de.vegbilder.hideViewer(e)}).append("div").call(ce("#iD-icon-close"));function o(l){l.preventDefault()}a.append("button").attr("class","resize-handle-xy").on("touchstart touchdown touchend",o).on(r+"down",s(a,"resize",t,{resizeOnX:!0,resizeOnY:!0})),a.append("button").attr("class","resize-handle-x").on("touchstart touchdown touchend",o).on(r+"down",s(a,"resize",t,{resizeOnX:!0})),a.append("button").attr("class","resize-handle-y").on("touchstart touchdown touchend",o).on(r+"down",s(a,"resize",t,{resizeOnY:!0}));function s(l,u,c,f){var p=!!f.resizeOnX,d=!!f.resizeOnY,g=f.minHeight||240,x=f.minWidth||320,b,m,v,y,_;function w(E){if(b===(E.pointerId||"mouse")){E.preventDefault(),E.stopPropagation();var k=e.map().dimensions();if(p){var S=k[0],D=A(y+E.clientX-m,x,S);l.style("width",D+"px")}if(d){var P=k[1]-90,O=A(_+v-E.clientY,g,P);l.style("height",O+"px")}c.call(u,l,i(gi(l,!0),l))}}function A(E,k,S){return Math.max(k,Math.min(E,S))}function I(E){b===(E.pointerId||"mouse")&&(E.preventDefault(),E.stopPropagation(),G(window).on("."+u,null))}return function(k){k.preventDefault(),k.stopPropagation(),b=k.pointerId||"mouse",m=k.clientX,v=k.clientY;var S=l.node().getBoundingClientRect();y=S.width,_=S.height,G(window).on(r+"move."+u,w,!1).on(r+"up."+u,I,!1),r==="pointer"&&G(window).on("pointercancel."+u,I,!1)}}}n.onMapResize=function(){var a=e.container().select(".photoviewer"),o=e.container().select(".main-content"),s=gi(o,!0),l=gi(a,!0);if(l[0]>s[0]||l[1]>s[1]-90){var u=[Math.min(l[0],s[0]),Math.min(l[1],s[1]-90)];a.style("width",u[0]+"px").style("height",u[1]+"px"),t.call("resize",a,i(u,a))}};function i(a,o){return[a[0]-parseFloat(o.style("padding-left"))-parseFloat(o.style("padding-right")),a[1]-parseFloat(o.style("padding-top"))-parseFloat(o.style("padding-bottom"))]}return ke(n,t,"on")}function C8(e){return function(t){if(!e.history().hasRestorableChanges())return;let r=Oi(t,!0);r.select(".modal").attr("class","modal fillL");let n=r.select(".content");n.append("div").attr("class","modal-section").append("h3").call(F.append("restore.heading")),n.append("div").attr("class","modal-section").append("p").call(F.append("restore.description"));let i=n.append("div").attr("class","modal-actions"),a=i.append("button").attr("class","restore").on("click",()=>{e.history().restore(),r.remove()});a.append("svg").attr("class","logo logo-restore").append("use").attr("xlink:href","#iD-logo-restore"),a.append("div").call(F.append("restore.restore"));let o=i.append("button").attr("class","reset").on("click",()=>{e.history().clearSaved(),r.remove()});o.append("svg").attr("class","logo logo-reset").append("use").attr("xlink:href","#iD-logo-reset"),o.append("div").call(F.append("restore.reset")),a.node().focus()}}function I8(e){var t=e.projection,r=!fe.usesMetric(),n=180,i=8;function a(s,l){var u=(l[1]+s[1])/2,c=r?3.28084:1,f=Xl(l[0]-s[0],u)*c,p={dist:0,px:0,text:""},d,g,x,b;for(r?d=[528e4,528e3,52800,5280,500,50,5,1]:d=[5e6,5e5,5e4,5e3,500,50,5,1],g=0;g=x){p.dist=Math.floor(f/x)*x;break}else p.dist=+f.toFixed(2);return b=Pn(p.dist/c,u),p.px=Math.round(t([s[0]+b,s[1]])[0]),p.text=f5(p.dist/c,r),p}function o(s){var l=e.map().dimensions(),u=t.invert([0,l[1]]),c=t.invert([n,l[1]]),f=a(u,c);s.select(".scale-path").attr("d","M0.5,0.5v"+i+"h"+f.px+"v-"+i),s.select(".scale-text").style(fe.textDirection()==="ltr"?"left":"right",f.px+16+"px").text(f.text)}return function(s){function l(){r=!r,s.call(o)}var u=s.append("svg").attr("class","scale").on("click",l).append("g").attr("transform","translate(10,11)");u.append("path").attr("class","scale-path"),s.append("div").attr("class","scale-text"),s.call(o),e.map().on("move.scale",function(){o(s)})}}function wM(e){var t=br(),r=0,n,i=G(null),a;function o(l){l.select(".modal").classed("modal-shortcuts",!0);var u=l.select(".content");u.append("div").attr("class","modal-section header").append("h2").call(F.append("shortcuts.title")),dt.get("shortcuts").then(function(c){a=c,u.call(s)}).catch(function(){})}function s(l){if(a){var u=l.selectAll(".wrapper").data([0]),c=u.enter().append("div").attr("class","wrapper modal-section"),f=c.append("div").attr("class","tabs-bar"),p=c.append("div").attr("class","shortcuts-list");u=u.merge(c);var d=f.selectAll(".tab").data(a),g=d.enter().append("a").attr("class","tab").attr("href","#").on("click",function(I,E){I.preventDefault();var k=a.indexOf(E);r=k,s(l)});g.append("span").html(function(I){return F.html(I.text)}),u.selectAll(".tab").classed("active",function(I,E){return E===r});var x=p.selectAll(".shortcut-tab").data(a),b=x.enter().append("div").attr("class",function(I){return"shortcut-tab shortcut-tab-"+I.tab}),m=b.selectAll(".shortcut-column").data(function(I){return I.columns}).enter().append("table").attr("class","shortcut-column"),v=m.selectAll(".shortcut-row").data(function(I){return I.rows}).enter().append("tr").attr("class","shortcut-row"),y=v.filter(function(I){return!I.shortcuts});y.append("td"),y.append("td").attr("class","shortcut-section").append("h3").html(function(I){return F.html(I.text)});var _=v.filter(function(I){return I.shortcuts}),w=_.append("td").attr("class","shortcut-keys"),A=w.filter(function(I){return I.modifiers});A.selectAll("kbd.modifier").data(function(I){return t.os==="win"&&I.text==="shortcuts.editing.commands.redo"?["\u2318"]:t.os!=="mac"&&I.text==="shortcuts.browsing.display_options.fullscreen"?[]:I.modifiers}).enter().each(function(){var I=G(this);I.append("kbd").attr("class","modifier").text(function(E){return st.display(E)}),I.append("span").text("+")}),w.selectAll("kbd.shortcut").data(function(I){var E=I.shortcuts;return t.os==="win"&&I.text==="shortcuts.editing.commands.redo"?E=["Y"]:t.os!=="mac"&&I.text==="shortcuts.browsing.display_options.fullscreen"&&(E=["F11"]),E=E.map(function(k){return st.display(k.indexOf(".")!==-1?F(k):k)}),ot(E).map(function(k){return{shortcut:k,separator:I.separator,suffix:I.suffix}})}).enter().each(function(I,E,k){var S=G(this),D=I.shortcut.toLowerCase().match(/(.*).click/);D&&D[1]?S.call(ce("#iD-walkthrough-mouse-"+D[1],"operation")):I.shortcut.toLowerCase()==="long-press"?S.call(ce("#iD-walkthrough-longpress","longpress operation")):I.shortcut.toLowerCase()==="tap"?S.call(ce("#iD-walkthrough-tap","tap operation")):S.append("kbd").attr("class","shortcut").text(function(P){return P.shortcut}),Ez.bottom){var H=v?v.node():m.node();H.scrollIntoView({behavior:"instant",block:"center"}),N()}var Z=$.selectAll(".combobox-option.selected").node();Z&&Z.scrollIntoView({behavior:"smooth",block:"nearest"})}}function T(){var $=m.property("value"),z=m.property("selectionStart"),V=m.property("selectionEnd");return z&&V&&($=$.substring(0,z)),$}function M($,z){c=!1,x.call(m,$,function(V,H){c||(i=V,V.forEach(function(Z){o[Z.value]=Z}),z&&z(H))})}function R(){if(!l)return;var $=u?T():T().toLowerCase();if(!$||isFinite($))return;let z=[];i.forEach(ne=>{z.push(ne.value),ne.key&&ne.key!==ne.value&&z.push(ne.key)});for(var V=-1,H=0;Ha=>{a.text(""),a.call(ce("#iD-icon-alert","inline")),a.call(F.append("inspector.max_length_reached",{maxChars:e}))}),n=!1,i=function(a){t=a.selectAll("span.length-indicator-wrap").data([0]),t=t.enter().append("span").merge(t).classed("length-indicator-wrap",!0),a.call(r)};return i.update=function(a){let o=r1(os(a,Number.POSITIVE_INFINITY)),s=t.selectAll("span.length-indicator").data([o]);s.enter().append("span").merge(s).classed("length-indicator",!0).classed("limit-reached",l=>l>e).style("border-right-width",l=>`${Math.abs(e-l)*2}px`).style("margin-right",l=>l>e?`${(e-l)*2}px`:0).style("opacity",l=>l>e*.8?Math.min(1,(l/e-.8)/(1-.8)):0).style("pointer-events",l=>l>e*.8?null:"none"),!n&&(o>e?r.show():r.hide())},i.silent=function(a){return arguments.length?(n=a,i):n},i}function zi(e,t){var r=xe("change"),n=e.type==="multiCombo"||e.type==="manyCombo",i=e.type==="networkCombo",a=e.type==="semiCombo",o=e.type!=="manyCombo"&&e.autoSuggestions!==!1,s=e.type!=="manyCombo"&&e.customValues!==!1,l=e.snake_case||e.snake_case===void 0,u=Ht(t,"combo-"+e.safeid).caseSensitive(e.caseSensitive).minItems(1),c=G(null),f=G(null),p=G(null),d=ys(t.maxCharsForTagValue()),g=[],x=[],b=[],m,v,y,_=[];dt.get("deprecated").then(function(ne){_=ne}).catch(function(){}),n&&e.key&&/[^:]$/.test(e.key)&&(e.key+=":");function w(ne){return ne.replace(/\s+/g,"_")}function A(ne){return ne.split(";").map(function(ge){return ge.trim()}).join(";")}function I(ne){ne=A(ne||"");var ge=T(!0).find(function(ve){return ve.key&&A(ve.value)===ne});return ge?ge.key:e.type==="typeCombo"&&!ne?"yes":E(ne)||void 0}function E(ne){return l&&(ne=w(ne)),e.caseSensitive||(ne=ne.toLowerCase()),ne}function k(ne,ge){return ne.hasTextForStringId(`options.${ge}.title`)?`options.${ge}.title`:`options.${ge}`}function S(ne){ne=ne||"";var ge=e.resolveReference("stringsCrossReference");let ve=k(ge,ne);return ge.hasTextForStringId(ve)?ge.t(ve,{default:ne}):e.type==="typeCombo"&&ne.toLowerCase()==="yes"?"":ne}function D(ne){ne=ne||"";var ge=e.resolveReference("stringsCrossReference");let ve=k(ge,ne);return ge.hasTextForStringId(ve)?ge.t.append(ve,{default:ne}):(e.type==="typeCombo"&&ne.toLowerCase()==="yes"&&(ne=""),Oe=>Oe.text(ne))}function P(ne,ge){return ne.filter(function(ve){return!ge.some(function(Oe){return ve.value===Oe.value})})}function O(ne,ge){s||ne.attr("readonly","readonly"),o&&de.taginfo?(ne.call(u.fetcher(N),ge),N("",B)):(ne.call(u,ge),setTimeout(()=>R(B),0))}function T(ne){var ge=e.resolveReference("stringsCrossReference");if(!(e.options||ge.options))return[];let ve;return ne!==!0?ve=e.options||ge.options:ve=[].concat(e.options,ge.options).filter(Boolean),ve.map(function(Oe){let tt=k(ge,Oe);return{key:Oe,value:ge.t(tt,{default:Oe}),title:ge.t(`options.${Oe}.description`,{default:Oe}),display:U(ge.t.append(tt,{default:Oe}),Oe),klass:ge.hasTextForStringId(tt)?"":"raw-option"}})}function M(){return T().length>0}function R(ne,ge){g=T(),ge!==void 0&&(g=g.filter(ge)),g=P(g,x),u.data(g),ne&&ne(g)}function N(ne,ge){var ve=Se=>Se.value.toLowerCase().includes(ne.toLowerCase())||Se.key.toLowerCase().includes(ne.toLowerCase());M()&&R(ge,ve);var Oe=e.resolveReference("stringsCrossReference"),tt=n?"multikeys":"values",Ce=(n?e.key:"")+ne,te=i&&v&&v.indexOf(ne.toLowerCase())===0;te&&(Ce=v+":");var le={debounce:ne!=="",key:e.key,query:Ce};b.length&&(le.geometry=t.graph().geometry(b[0])),de.taginfo[tt](le,function(Se,Ie){if(Se)return;Ie=Ie.filter(ue=>e.type!=="typeCombo"||ue.value!=="yes"),Ie=Ie.filter(ue=>{var ae=ue.value;return n&&(ae=ae.slice(e.key.length)),ae===E(ae)});var Le=qe.deprecatedTagValuesByKey(_)[e.key];Le&&(Ie=Ie.filter(ue=>!Le.includes(ue.value))),te&&(Ie=Ie.filter(ue=>ue.value.toLowerCase().indexOf(v+":")===0));let We=(e.options||Oe.options||[]).filter(ue=>!Ie.some(ae=>ae.value===(n?e.key+ue:ue))).map(ue=>({value:ue}));c.classed("empty-combobox",Ie.length===0),g=Ie.concat(We).map(function(ue){var ae=ue.value;n&&(ae=ae.replace(e.key,""));let Ae=k(Oe,ae);var we=Oe.hasTextForStringId(Ae),Me=Oe.t(Ae,{default:ae});return{key:ae,value:Me,title:Oe.t(`options.${ae}.description`,{default:we?ae:ue.title!==Me?ue.title:""}),display:U(Oe.t.append(Ae,{default:ae}),ae),klass:we?"":"raw-option"}}),g=g.filter(ve),g=P(g,x),ge&&ge(g,M())})}function U(ne,ge){let ve=e.resolveReference("iconsCrossReference");return ve.icons?function(Oe){var tt=Oe.insert("span",":first-child").attr("class","tag-value-icon");ve.icons[ge]&&tt.call(ce(`#${ve.icons[ge]}`)),ne.call(this,Oe)}:ne}function B(ne){if(n||a)y=e.placeholder()||F("inspector.add");else{var ge=ne.map(function(Ce){return Ce.value}).filter(function(Ce){return Ce.length<20}),ve=ge.length>1?ge:ne.map(function(Ce){return Ce.key});y=e.placeholder()||ve.slice(0,3).join(", ")}/(…|\.\.\.)$/.test(y)||(y+="\u2026");var Oe;!n&&!a&&m&&Array.isArray(m[e.key])?Oe=F("inspector.multiple_values"):Oe=y,c.selectAll("input").attr("placeholder",Oe);var tt=!s&&!ne.length;c.selectAll(".chiplist .input-wrap").style("display",tt?"none":null)}function $(){var ne={},ge;if(n||a){var ve;if(n?ve=[I(je(p))]:a&&(ge=I(je(p))||"",ge=ge.replace(/,/g,";"),ve=ge.split(";")),ve=ve.filter(Boolean),!ve.length)return;if(c.classed("active",!1),je(p,""),n)ot(ve).forEach(function(Ce){var te=(e.key||"")+Ce;if(m){var le=m[te];if(typeof le=="string"&&le.toLowerCase()!=="no")return}te=t.cleanTagKey(te),e.keys.push(te),ne[te]="yes"});else if(a){var Oe=x.map(function(Ce){return Ce.key});Oe=Oe.concat(ve),ne[e.key]=t.cleanTagValue(ot(Oe).filter(Boolean).join(";"))}window.setTimeout(function(){p.node().focus()},10)}else{var tt=je(p);if(!tt&&Array.isArray(m[e.key]))return;ge=t.cleanTagValue(I(tt)),ne[e.key]=ge||void 0}r.call("change",this,ne)}function z(ne,ge){ne.preventDefault(),ne.stopPropagation();var ve={};if(n)ve[ge.key]=void 0;else if(a){var Oe=x.map(function(tt){return tt.key===ge.key?null:tt.key}).filter(Boolean);Oe=ot(Oe),ve[e.key]=Oe.length?Oe.join(";"):void 0,d.update(ve[e.key])}r.call("change",this,ve)}function V(ne,ge){ne.preventDefault(),ne.stopPropagation();var ve={};n&&(ve[ge.key]=m[ge.key]==="yes"?"no":"yes"),r.call("change",this,ve)}function H(ne){c=ne.selectAll(".form-field-input-wrap").data([0]);var ge=n||a?"multicombo":"combo";if(c=c.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+ge).merge(c),n||a){c=c.selectAll(".chiplist").data([0]);var ve="chiplist";(e.key==="destination"||e.key==="via")&&(ve+=" full-line-chips"),c=c.enter().append("ul").attr("class",ve).on("click",function(){window.setTimeout(function(){p.node().focus()},10)}).merge(c),f=c.selectAll(".input-wrap").data([0]),f=f.enter().append("li").attr("class","input-wrap").merge(f);var Oe=!s&&!g.length;f.style("display",Oe?"none":null),p=f.selectAll("input").data([0])}else p=c.selectAll("input").data([0]);if(p=p.enter().append("input").attr("type","text").attr("id",e.domId).call(pt).call(O,c).merge(p),a?f.call(d):n||c.call(d),i){var tt=pe(),Ce=tt&&el(tt.center());v=Ce&&Ce.toLowerCase()}p.on("change",$).on("blur",$).on("input",function(){let te=je(p);Z(te),a&&m[e.key]&&(te+=";"+m[e.key]),d.update(te)}),p.on("keydown.field",function(te){switch(te.keyCode){case 13:p.node().blur(),te.stopPropagation();break}}),(n||a)&&(u.on("accept",function(){p.node().blur(),p.node().focus()}),p.on("focus",function(){c.classed("active",!0)})),u.on("cancel",function(){p.node().blur()}).on("update",function(){Z(je(p))})}function Z(ne){ne=I(ne);let ge=c;(e.type==="multiCombo"||e.type==="semiCombo")&&(ge=c.select(".input-wrap"));let ve=e.resolveReference("iconsCrossReference");ve.icons&&(ge.selectAll(".tag-value-icon").remove(),ve.icons[ne]&&ge.selectAll(".tag-value-icon").data([ne]).enter().insert("div","input").attr("class","tag-value-icon").call(ce(`#${ve.icons[ne]}`)))}H.tags=function(ne){m=ne;var ge=e.resolveReference("stringsCrossReference"),ve=Array.isArray(ne[e.key]),Oe=lt=>!ve&<&&!(e.type==="typeCombo"&<==="yes"),tt=lt=>Oe(lt)&&!ge.hasTextForStringId(`options.${lt}`)&&!ge.hasTextForStringId(`options.${lt}.title`),Ce=lt=>Oe(lt)&&!tt(lt),te=!s;if(n||a){x=[];var le;if(n){for(var Se in ne)if(!(e.key&&Se.indexOf(e.key)!==0)&&!(!e.key&&e.keys.indexOf(Se)===-1)){var Ie=ne[Se],Le=e.key?Se.slice(e.key.length):Se;x.push({key:Se,value:S(Le),display:U(D(Le),Le),state:typeof Ie=="string"?Ie.toLowerCase():"",isMixed:Array.isArray(Ie)})}e.key?(e.keys=x.map(function(nt){return nt.key}),le=t.maxCharsForTagKey()-r1(e.key)):le=t.maxCharsForTagKey()}else if(a){var We=[],ue;Array.isArray(ne[e.key])?(ne[e.key].forEach(function(nt){var ht=ot((nt||"").split(";")).filter(Boolean);We=We.concat(ht),ue?ue=ue.filter(tr=>ht.includes(tr)):ue=ht}),We=ot(We).filter(Boolean)):(We=ot((ne[e.key]||"").split(";")).filter(Boolean),ue=We),x=We.map(function(nt){return{key:nt,value:S(nt),display:U(D(nt),nt),isMixed:!ue.includes(nt)}});var ae=r1(ue.join(";"));le=t.maxCharsForTagValue()-ae,ae>0&&(le-=1)}le=Math.max(0,le);var Ae=le<=0||!s&&!g.length;c.selectAll(".chiplist .input-wrap").style("display",Ae?"none":null);var we=a&&!Array.isArray(ne[e.key]),Me=c.selectAll(".chip").data(x);Me.exit().remove();var He=Me.enter().insert("li",".input-wrap").attr("class","chip");He.append("span"),He.append("div").attr("class","field_buttons").append("a").attr("class","remove"),Me=Me.merge(He).order().classed("raw-value",function(nt){var ht=nt.key;return n&&(ht=ht.replace(e.key,"")),!ge.hasTextForStringId("options."+ht)}).classed("draggable",we).classed("mixed",function(nt){return nt.isMixed}).attr("title",function(nt){return nt.isMixed?F("inspector.unshared_value_tooltip"):["yes","no"].includes(nt.state)?null:nt.state}).classed("negated",nt=>nt.state==="no"),a||(Me.selectAll("input[type=checkbox]").remove(),Me.insert("input","span").attr("type","checkbox").property("checked",nt=>nt.state==="yes").property("indeterminate",nt=>nt.isMixed||!["yes","no"].includes(nt.state)).on("click",V)),we&&oe(Me),Me.each(function(nt){let ht=G(this),tr=ht.select("span"),ie=ht.select(".field_buttons"),j=nt.value.trim();if(tr.text(""),j.startsWith("https://")){tr.text(j),ie.select("button").remove(),ie.append("button").call(ce("#iD-icon-out-link")).attr("class","form-field-button foreign-id-permalink").attr("title",()=>F("icons.visit_website")).attr("aria-label",()=>F("icons.visit_website")).on("click",function(W){W.preventDefault(),window.open(j,"_blank")});return}if(nt.display){nt.display(tr);return}tr.text(nt.value)}),Me.select("a.remove").attr("href","#").on("click",z).attr("class","remove").text("\xD7"),Z("")}else{var Qe=ve&&ne[e.key].map(function(lt){return S(lt)}).filter(Boolean);je(p,ve?"":S(ne[e.key])).data([ne[e.key]]).classed("raw-value",tt).classed("known-value",Ce).attr("readonly",te?"readonly":void 0).attr("title",ve?Qe.join(` +`):void 0).attr("placeholder",ve?F("inspector.multiple_values"):y||"").classed("mixed",ve).on("keydown.deleteCapture",function(lt){if(te&&Ce(ne[e.key])&&(lt.keyCode===at.keyCodes["\u232B"]||lt.keyCode===at.keyCodes["\u2326"])){lt.preventDefault(),lt.stopPropagation();var nt={};nt[e.key]=void 0,r.call("change",this,nt)}}),Array.isArray(ne[e.key])||Z(ne[e.key]),ve||d.update(ne[e.key])}let et=()=>{p.data([I(je(p))]).classed("raw-value",tt).classed("known-value",Ce)};p.on("input.refreshStyles",et),u.on("update.refreshStyles",et),et()};function oe(ne){var ge,ve;ne.call(y3().on("start",function(Oe){ge={x:Oe.x,y:Oe.y},ve=null}).on("drag",function(Oe){var tt=Oe.x-ge.x,Ce=Oe.y-ge.y;if(!(!G(this).classed("dragging")&&Math.sqrt(Math.pow(tt,2)+Math.pow(Ce,2))<=5)){var te=ne.nodes().indexOf(this);G(this).classed("dragging",!0),ve=null;var le=null,Se=G(this).node().offsetWidth;e.key==="destination"||e.key==="via"?c.selectAll(".chip").style("transform",function(Ie,Le){var We=G(this).node();return te===Le?"translate("+tt+"px, "+Ce+"px)":Le>te&&Oe.y>We.offsetTop?((ve===null||Le>ve)&&(ve=Le),"translateY(-100%)"):LeWe.offsetLeft&&Oe.yWe.offsetTop&&(ve=Le,le=We.offsetTop)}).style("transform",function(Ie,Le){var We=G(this).node();if(te===Le)return"translate("+tt+"px, "+Ce+"px)";if(We.offsetTop===le){if(Le=ve)return"translateX("+Se+"px)";if(Le>te&&Le<=ve)return"translateX(-"+Se+"px)"}return null})}}).on("end",function(){if(G(this).classed("dragging")){var Oe=ne.nodes().indexOf(this);if(G(this).classed("dragging",!1),c.selectAll(".chip").style("transform",null),typeof ve=="number"){var tt=x[Oe];x.splice(Oe,1),x.splice(ve,0,tt);var Ce={};x.length?Ce[e.key]=x.map(function(te){return te.key}).join(";"):Ce[e.key]=void 0,r.call("change",this,Ce)}ge=void 0,ve=void 0}}))}H.focus=function(){p.node().focus()},H.entityIDs=function(ne){return arguments.length?(b=ne,H):b};function pe(){return b&&b.length&&Er(b,t.graph())}return ke(H,r,"on")}var h1=/^-?(0\.\d*|\d*\.\d{0,2}(\d{4,})?|\d{4,}\.\d{3})$/;function qi(e,t){var r=xe("change"),n=G(null),i=G(null),a=G(null),o=ys(t.maxCharsForTagValue()),s=[],l,u={};let c=e.key.split(":").some(E=>E==="direction"),f=fe.floatFormatter(fe.languageCode()),p=fe.floatParser(fe.languageCode()),d=fe.decimalPlaceCounter(fe.languageCode());e.type==="tel"&&dt.get("phone_formats").then(function(E){u=E,v()}).catch(function(){});function g(){var E=(e.id==="brand"||e.id==="network"||e.id==="operator"||e.id==="flag")&&s.length&&s.some(function(k){var S=t.graph().hasEntity(k);if(!S)return!1;if(S.tags.wikidata)return!0;var D=$e.match(S,t.graph()),P=D&&D.suggestion,O=e.id;return P&&!!S.tags[O]&&!!S.tags[O+":wikidata"]});e.locked(E)}function x(E){g();var k=e.locked();if(a=E.selectAll(".form-field-input-wrap").data([0]),a=a.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(a),n=a.selectAll("input").data([0]),n=n.enter().append("input").attr("type",e.type==="identifier"?"text":e.type).attr("id",e.domId).classed(e.type,!0).call(pt).merge(n),n.classed("disabled",!!k).attr("readonly",k||null).on("input",A(!0)).on("blur",A()).on("change",A()),a.call(o),e.type==="tel")v();else if(e.type==="number"){var S=fe.textDirection()==="rtl";n.attr("type","text");var D=e.increment,P=a.selectAll(".increment, .decrement").data(S?[D,-D]:[-D,D]);P.enter().append("button").attr("class",function(O){var T=O>0?"increment":"decrement";return"form-field-button "+T}).attr("title",function(O){var T=O>0?"increment":"decrement";return F(`inspector.${T}`)}).merge(P).on("click",function(O,T){O.preventDefault();var M=Array.isArray(l[e.key]);if(!M){var R=n.node().value||"0",N=R.split(";");N=N.map(function(U){U=U.trim();let B=h1.test(U);var $=B?parseFloat(U):p(U);if(c){let z=y5[U.toLowerCase()];z!==void 0&&($=z)}return!isFinite($)||($=parseFloat($),!isFinite($))?U:($+=T,c&&($=($%360+360)%360),f(_($),B?U.includes(".")?U.split(".")[1].length:0:d(U)))}),n.node().value=N.join(";"),A()()}})}else e.type==="identifier"&&e.urlFormat&&e.pattern?(n.attr("type","text"),i=a.selectAll(".foreign-id-permalink").data([0]),i=i.enter().append("button").call(ce("#iD-icon-out-link")).attr("class","form-field-button foreign-id-permalink").attr("title",function(){var O=/^https?:\/\/(.{1,}?)\//.exec(e.urlFormat);if(O.length>=2&&O[1]){var T=O[1];return F("icons.view_on",{domain:T})}return""}).merge(i),i.on("click",function(O){O.preventDefault();var T=y();if(T){var M=e.urlFormat.replace(/{value}/,encodeURIComponent(T));window.open(M,"_blank")}}).classed("disabled",()=>!y()).merge(i)):e.type==="url"?(n.attr("type","text"),i=a.selectAll(".foreign-id-permalink").data([0]),i.enter().append("button").call(ce("#iD-icon-out-link")).attr("class","form-field-button foreign-id-permalink").attr("title",()=>F("icons.visit_website")).on("click",function(O){O.preventDefault();let T=y();T&&window.open(T,"_blank")}).merge(i)):e.type==="colour"?(n.attr("type","text"),b()):e.type==="date"&&(n.attr("type","text"),m())}function b(){a.selectAll(".colour-preview").remove();let E=je(n);if(!Ko(E)&&E!==""){a.selectAll("input.colour-selector").remove(),a.selectAll(".form-field-button").remove();return}var k=a.selectAll(".colour-selector").data([0]);k.enter().append("input").attr("type","color").attr("class","colour-selector").on("input",Bt(function(D){D.preventDefault();var P=this.value;Ko(P)&&(je(n,this.value),A()(),b())},100)),a.selectAll("input.colour-selector").attr("value",E);var S=a.selectAll(".colour-preview").data([E]);S=S.enter().append("div").attr("class","form-field-button colour-preview").append("div").style("background-color",D=>D).attr("class","colour-box"),E===""&&(S=S.call(ce("#iD-icon-edit"))),S.on("click",()=>a.select(".colour-selector").node().showPicker())}function m(){function E(T){return T.match(/^[0-9]{4}(-[0-9]{2}(-[0-9]{2})?)?$/)}let k=je(n),S=new Date,D=new Date(S.getTime()-S.getTimezoneOffset()*6e4).toISOString().split("T")[0];if((e.key==="check_date"||e.key==="survey:date")&&k!==D?a.selectAll(".date-set-today").data([0]).enter().append("button").attr("class","form-field-button date-set-today").call(ce("#fas-rotate")).call(Ye().title(()=>F.append("inspector.set_today"))).on("click",()=>{je(n,D),A()(),m()}):a.selectAll(".date-set-today").remove(),!E(k)&&k!==""){a.selectAll("input.date-selector").remove(),a.selectAll(".date-calendar").remove();return}if(br().browser!=="Safari"){var P=a.selectAll(".date-selector").data([0]);P.enter().append("input").attr("type","date").attr("class","date-selector").on("input",Bt(function(T){T.preventDefault();var M=this.value;E(M)&&(je(n,this.value),A()(),m())},100)),a.selectAll("input.date-selector").attr("value",k);var O=a.selectAll(".date-calendar").data([k]);O=O.enter().append("button").attr("class","form-field-button date-calendar").call(ce("#fas-calendar-days")),O.on("click",()=>a.select(".date-selector").node().showPicker())}}function v(){if(!(n.empty()||!Object.keys(u).length)){var E=I(),k=E&&el(E.center()),S=k&&u[k.toLowerCase()];S&&n.attr("placeholder",S)}}function y(){var k;let E=je(n).trim();if(e.type==="url"&&E)try{return new URL(E).href}catch{return null}return e.type==="identifier"&&e.pattern?E&&((k=E.match(new RegExp(e.pattern)))==null?void 0:k[0]):null}function _(E){return e.minValue!==void 0&&(E=Math.max(E,e.minValue)),e.maxValue!==void 0&&(E=Math.min(E,e.maxValue)),E}function w(E){return e.keys?(E=t.selectedIDs().length>1?t.selectedIDs().map(S=>t.graph().entity(S)).map(S=>S.tags):[E],E.map(S=>new Set(e.keys.reduce((D,P)=>D.concat(S[P]),[]).filter(Boolean))).map(S=>S.size===0?new Set([void 0]):S).reduce((S,D)=>new Set([...S,...D]))):new Set([].concat(E[e.key]))}function A(E){return function(){var k={},S=je(n);if(E||(S=t.cleanTagValue(S)),!(!S&&w(l).size>1)){var D=S;if(e.type==="number"&&S){var P=S.split(";");P=P.map(function(O){if(h1.test(O))return O;var T=p(O);let M=d(O);return isFinite(T)?_(T).toFixed(M):O}),S=P.join(";")}E||je(n,D),k[e.key]=S||void 0,e.keys?r.call("change",this,O=>(e.keys.some(T=>O[T])?e.keys.filter(T=>O[T]).forEach(T=>{O[T]=S||void 0}):O[e.key]=S||void 0,O),E):r.call("change",this,k,E)}}}x.entityIDs=function(E){return arguments.length?(s=E,x):s},x.tags=function(E){var N;l=E;let k=w(E),S=k.size>1;var D=k.size===1&&(N=[...k][0])!=null?N:"",P;if(e.type==="number"&&D){var O=D.split(";"),T=je(n).split(";");O.length!==T.length&&(P=!0),O=O.map(function(U){U=U.trim();var B=Number(U);if(!isFinite(B)||U==="")return U;let $=U.includes(".")?U.split(".")[1].length:0;return f(B,$)}),D=O.join(";"),P=(U,B)=>{let $=U.split(";").map(V=>h1.test(V)?parseFloat(V):p(V)),z=B.split(";").map(p);return!xg($,z)}}if(je(n,D,P).attr("title",S?[...k].join(` +`):void 0).attr("placeholder",S?F("inspector.multiple_values"):e.placeholder()||F("inspector.unknown")).classed("mixed",S),e.type==="number"){let U=a.selectAll(".increment, .decrement");if(S)U.attr("disabled","disabled").classed("disabled",!0);else{var M=E[e.key]||"0";let B=M.split(";").some($=>isFinite(Number($))||c&&y5[$.trim().toLowerCase()]);U.attr("disabled",B?null:"disabled").classed("disabled",!B)}}if(e.type==="tel"&&v(),e.type==="colour"&&b(),e.type==="date"&&m(),i&&!i.empty()){var R=!y();i.classed("disabled",R)}S||o.update(E[e.key])},x.focus=function(){var E=n.node();E&&E.focus()};function I(){return s&&s.length&&Er(s,t.graph())}return ke(x,r,"on")}function $y(e,t){var r=xe("change"),n=G(null),i;function a(l){var u=l.selectAll(".form-field-input-wrap").data([0]);u=u.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(u);var c=u.selectAll("ul").data([0]);c=c.enter().append("ul").attr("class","rows").merge(c),n=c.selectAll("li").data(e.keys);var f=n.enter().append("li").attr("class",function(p){return"labeled-input preset-access-"+p});f.append("div").attr("class","label preset-label-access").attr("for",function(p){return"preset-input-access-"+p}).html(function(p){return e.t.html("types."+p)}),f.append("div").attr("class","preset-input-access-wrap").append("input").attr("type","text").attr("class",function(p){return"preset-input-access preset-input-access-"+p}).call(pt).each(function(p){G(this).call(Ht(t,"access-"+p).data(a.options(p)))}),n=n.merge(f),u.selectAll(".preset-input-access").on("change",o).on("blur",o)}function o(l,u){var c={},f=t.cleanTagValue(je(G(this)));!f&&typeof i[u]!="string"||(c[u]=f||void 0,r.call("change",this,c))}a.options=function(l){var u=["yes","no","designated","permissive","destination","customers","private","permit","unknown"];l==="access"&&(u=u.filter(f=>f!=="yes"&&f!=="designated")),l==="bicycle"&&u.splice(u.length-4,0,"dismount");var c=e.resolveReference("stringsCrossReference");return u.map(function(f){return{title:c.t("options."+f+".description"),value:f}})};let s={highway:{footway:{foot:"designated",motor_vehicle:"no"},steps:{foot:"yes",motor_vehicle:"no",bicycle:"no",horse:"no"},pedestrian:{foot:"yes",motor_vehicle:"no"},cycleway:{motor_vehicle:"no",bicycle:"designated"},bridleway:{motor_vehicle:"no",horse:"designated"},path:{foot:"yes",motor_vehicle:"no",bicycle:"yes",horse:"yes"},motorway:{foot:"no",motor_vehicle:"yes",bicycle:"no",horse:"no"},trunk:{motor_vehicle:"yes"},primary:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},secondary:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},tertiary:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},residential:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},unclassified:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},service:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},motorway_link:{foot:"no",motor_vehicle:"yes",bicycle:"no",horse:"no"},trunk_link:{motor_vehicle:"yes"},primary_link:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},secondary_link:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},tertiary_link:{foot:"yes",motor_vehicle:"yes",bicycle:"yes",horse:"yes"},construction:{access:"no"},busway:{access:"no",bus:"designated",emergency:"yes"}},barrier:{bollard:{access:"no",bicycle:"yes",foot:"yes"},bus_trap:{motor_vehicle:"no",psv:"yes",foot:"yes",bicycle:"yes"},city_wall:{access:"no"},coupure:{access:"yes"},cycle_barrier:{motor_vehicle:"no"},ditch:{access:"no"},entrance:{access:"yes"},fence:{access:"no"},hedge:{access:"no"},jersey_barrier:{access:"no"},motorcycle_barrier:{motor_vehicle:"no"},rail_guard:{access:"no"}}};return a.tags=function(l){i=l,je(n.selectAll(".preset-input-access"),function(u){return typeof l[u]=="string"?l[u]:""}).classed("mixed",function(u){return l[u]&&Array.isArray(l[u])}).attr("title",function(u){return l[u]&&Array.isArray(l[u])&&l[u].filter(Boolean).join(` +`)}).attr("placeholder",function(u){if(l[u]&&Array.isArray(l[u]))return F("inspector.multiple_values");if((u==="bicycle"||u==="motor_vehicle")&&l.vehicle&&typeof l.vehicle=="string")return l.vehicle;if(l.access&&typeof l.access=="string")return l.access;function c(f,p){if(typeof l[f]=="string"){if(p[l[f]]&&p[l[f]][u])return p[l[f]][u]}else{var d=l[f].filter(Boolean).map(function(g){return p[g]&&p[g][u]}).filter(Boolean);if(d.length===l[f].length&&new Set(d).size===1)return d[0]}}for(let f in s)if(l[f]){let p=c(f,s[f]);if(p)return p}return u==="access"&&!l.barrier?"yes":e.placeholder()})},a.focus=function(){n.selectAll(".preset-input-access").node().focus()},ke(a,r,"on")}function Uy(e,t){var r=xe("change"),n=G(null),i=G(null),a=$e.field("address"),o=[],s,l,u=[{format:[["housenumber","street"],["city","postcode"]]}];dt.get("address_formats").then(function(I){u=I,n.empty()||n.call(m)}).catch(function(){});function c(I,E,k,S){var D=A(),P=D.center(),O=Pe(P).padByMeters(k),T=t.history().intersects(O).filter(I).map(M=>{let R=Vt(M.extent(t.graph()).center(),P);if(M.geometry(t.graph())==="line"){var N=t.projection([(D[0][0]+D[1][0])/2,(D[0][1]+D[1][1])/2]),U=On(t.graph().childNodes(M),N,t.projection);R=Vt(U.loc,P)}let B=S&&M.tags[S]?M.tags[S]:M.tags.name,$=B;return E==="street"?$=`${a.t("placeholders.street")}: ${$}`:E==="place"&&($=`${a.t("placeholders.place")}: ${$}`),{title:$,value:B,dist:R,type:E,klass:`address-${E}`}}).sort(function(M,R){return M.dist-R.dist});return H4(T,"value")}function f(){function I(E){return E.tags.highway&&E.tags.name&&E.type==="way"}return c(I,"street",200)}function p(){function I(E){return!!(E.tags.name&&(E.tags.place||E.tags.boundary==="administrative"&&E.tags.admin_level>8))}return c(I,"place",200)}function d(){function I(E){return!!(E.tags.name&&(E.tags.boundary==="administrative"&&E.tags.admin_level==="8"||E.tags.border_type==="city"||E.tags.place==="city"||E.tags.place==="town"||E.tags.place==="village")||E.tags[`${e.key}:city`])}return c(I,"city",200,`${e.key}:city`)}function g(){return[...new Set([].concat(x("postcode")).concat(c(I=>I.tags.postal_code,"postcode",200,"postal_code")))]}function x(I){let E=`${e.key}:${I}`;function k(S){return o.indexOf(S.id)===-1&&S.tags[E]}return c(k,I,200,E)}function b(){if(!l)return;for(var I,E=0;E[].concat(f()).concat(p()),M.isAutoStreetPlace=!0,M.id=s[`${e.key}:place`]?"place":"street";break;case"city":R=d;break;case"postcode":R=g;break;default:R=x}G(this).call(Ht(t,`address-${M.isAutoStreetPlace?"street-place":M.id}`).minItems(1).caseSensitive(!0).fetcher(function(N,U){N=N.toLowerCase(),U(R(M.id).filter(B=>B.value.toLowerCase().indexOf(N)!==-1))}).on("accept",function(N){M.isAutoStreetPlace&&(M.id=N?N.type:"street")}))}}i.selectAll("input").on("blur",v()).on("change",v()),i.selectAll("input:not(.combobox-input)").on("input",v(!0)),s&&w(s)}function m(I){n=I,i=I.selectAll(".form-field-input-wrap").data([0]),i=i.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(i);var E=A();if(E){var k;if(t.inIntro())k=F("intro.graph.countrycode");else{var S=E.center();k=el(S)}k&&(l=k.toLowerCase(),b())}}function v(I){return function(){setTimeout(()=>{var E={};i.selectAll("input").each(function(k){var S=e.key+":"+k.id,D=this.value;I||(D=t.cleanTagValue(D)),!(Array.isArray(s[S])&&!D)&&(k.isAutoStreetPlace&&(k.id==="street"?E[`${e.key}:place`]=void 0:k.id==="place"&&(E[`${e.key}:street`]=void 0)),E[S]=D||void 0)}),Object.keys(E).filter(k=>E[k]).forEach(k=>s[k]=E[k]),r.call("change",this,E,I)},0)}}function y(I){return I.attr("placeholder",function(E){return s&&Array.isArray(s[e.key+":"+E.id])?F("inspector.multiple_values"):E.isAutoStreetPlace?`${_("street")} / ${_("place")}`:_(E.id)})}function _(I){if(l){var E=I+"!"+l,k=a.hasTextForStringId("placeholders."+E)?E:I;return a.t("placeholders."+k)}}function w(I){je(i.selectAll("input"),E=>{var k;if(E.isAutoStreetPlace){let S=`${e.key}:street`,D=`${e.key}:place`;I[S]!==void 0||I[D]===void 0?(k=I[S],E.id="street"):(k=I[D],E.id="place")}else k=I[`${e.key}:${E.id}`];return typeof k=="string"?k:""}).attr("title",function(E){var k=I[e.key+":"+E.id];return k&&Array.isArray(k)?k.filter(Boolean).join(` +`):void 0}).classed("mixed",function(E){return Array.isArray(I[e.key+":"+E.id])}).call(y)}function A(){return o&&o.length&&Er(o,t.graph())}return m.entityIDs=function(I){return arguments.length?(o=I,m):o},m.tags=function(I){s=I,w(I)},m.focus=function(){var I=i.selectAll("input").node();I&&I.focus()},ke(m,r,"on")}function zy(e,t){let r=xe("change"),n=G(null),i=G(null),a=G(null),o=G(null),s=G(null),l=[],u,c=G(null),f,p=e.key+":edtf",g=new Intl.DateTimeFormat(fe.localeCodes(),{year:"numeric",era:"short",month:"long",day:"numeric",timeZone:"UTC"}).formatToParts(new Date).map(M=>M.type);function x(M,R){let N=new Intl.DateTimeFormat(fe.localeCodes(),{year:"numeric",era:R,timeZone:"UTC"}),U=new Date(Date.UTC(0,0,1));U.setUTCFullYear(M);let $=N.formatToParts(U).find(z=>z.type==="era");return $&&$.value}let b=x(0,"short"),m=x(1,"short"),v=[{id:"bce",value:b,title:b,display:M=>M.append("span").attr("class","localized-text").text(b||"BCE"),terms:[x(0,"long"),x(0,"narrow")]},{id:"ce",value:m,title:m,display:M=>M.append("span").attr("class","localized-text").text(m||"CE"),terms:[x(1,"long"),x(1,"narrow")]}],y=Ht(t,"date-era").data(v);function _(M,R){let B=new Intl.DateTimeFormat(fe.localeCodes(),{month:R,timeZone:"UTC"}).formatToParts(new Date(Date.UTC(0,M,1))).find($=>$.type==="month");return B&&B.value}let w=Array.from({length:12},(M,R)=>_(R,"long")).filter(M=>M),A=Array.from({length:12},(M,R)=>["numeric","2-digit","long","short","narrow"].map(N=>_(R,N)).filter(N=>N)),I=Ht(t,"date-month").data(w.map((M,R)=>({id:R+1,value:M,title:M,display:N=>N.append("span").attr("class","localized-text").text(M),terms:A[R]}))),E=Ye().title(()=>F.append("inspector.date.edtf")).placement("left");function k(M){f&&!M[p]?f="":f=M[p]}function S(M){c=M;let R=M.selectAll(".form-field-input-wrap").data([0]);R=R.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(R),n=R.selectAll("input.date-year").data([0]),i=R.selectAll("input.date-era").data([0]),a=R.selectAll("input.date-month").data([0]),o=R.selectAll("input.date-day").data([0]),g.forEach(U=>{switch(U){case"year":n=n.enter().append("input").attr("type","number").attr("class","date-main date-year").attr("id",e.domId).call(pt).merge(n);break;case"era":i=i.enter().append("input").attr("type","text").attr("class","date-main date-era").call(y).merge(i);break;case"month":a=a.enter().append("input").attr("type","text").attr("class","date-main date-month").call(I).merge(a);break;case"day":o=o.enter().append("input").attr("type","number").attr("class","date-main date-day").call(pt).merge(o);break}}),n.on("change",P).on("blur",P),i.on("change",P).on("blur",P),a.on("change",P).on("blur",P),o.on("change",P).on("blur",P),u&&f===void 0&&k(u);let N=R.selectAll(".date-add").data([0]);N=N.enter().append("button").attr("class","date-add form-field-button").attr("aria-label",F("icons.plus")).call(ce("#iD-icon-plus")).merge(N),N.classed("disabled",typeof f=="string"||Array.isArray(f)).call(E).on("click",D),s=M.selectAll(".date-edtf").data([0]),s=s.enter().append("div").attr("class","date-edtf").merge(s),s.call(T)}function D(M){M.preventDefault(),typeof f!="string"&&!Array.isArray(f)&&(f="",s.call(T))}function P(){var M={},R=je(n).trim(),N=je(i).trim(),U=je(a).trim(),B=je(o).trim();if(!(!R&&Array.isArray(u[e.key]))){if(!R)M[e.key]=void 0;else{let $="",z=parseInt(t.cleanTagValue(R),10);if(isNaN(z))$=t.cleanTagValue(R);else{N===b?$+="-"+String(z-1).padStart(4,"0"):$+=String(z).padStart(4,"0");let V=t.cleanTagValue(U);if(w.includes(V)){V=w.indexOf(V)+1,$+="-"+String(V).padStart(2,"0");let H=parseInt(t.cleanTagValue(B),10);isNaN(H)||($+="-"+String(H).padStart(2,"0"))}}M[e.key]=$}r.call("change",this,M)}}function O(M,R){let N=t.cleanTagValue(je(G(this)))||void 0;if(!N&&Array.isArray(R.value))return;let U={};U[p]=N,R.value=N,r.call("change",this,U)}function T(M){let R=M.selectAll("div.entry").data(typeof f=="string"||Array.isArray(f)?[f]:[]);R.exit().style("top","0").style("max-height","240px").transition().duration(200).style("opacity","0").style("max-height","0px").remove();let N=R.enter().append("div").attr("class","entry").each(function(){var U=G(this);let B=Qn("edtf"),$=U.append("label").attr("class","field-label").attr("for",B),z=$.append("span").attr("class","label-text");z.append("span").attr("class","label-textvalue").call(F.append("inspector.date.edtf_label")),z.append("span").attr("class","label-textannotation"),$.append("button").attr("class","remove-icon-edtf").attr("title",F("icons.remove")).on("click",function(V){if(V.preventDefault(),f=void 0,p&&p in u){delete u[p];let H={};H[p]=void 0,r.call("change",this,H);return}T(M)}).call(ce("#iD-operation-delete")),U.append("input").attr("type","text").attr("class","date-value").on("blur",O).on("change",O)});N.style("margin-top","0px").style("max-height","0px").style("opacity","0").transition().duration(200).style("margin-top","10px").style("max-height","240px").style("opacity","1").on("end",function(){G(this).style("max-height","").style("overflow","visible")}),R=R.merge(N),R.order(),R.classed("present",!0),je(R.select(".date-value"),function(U){return typeof U=="string"?U:""}).attr("title",function(U){return Array.isArray(U)?U.filter(Boolean).join(` +`):null}).attr("placeholder",function(U){return Array.isArray(U)?F("inspector.multiple_values"):F("inspector.date.edtf_placeholder")}).classed("mixed",function(U){return Array.isArray(U)})}return S.tags=function(M){u=M;var R=M[e.key],N,U,B,$=Array.isArray(R);if(!$&&R){let z=R.match(/^(-?\d+)(?:-(\d\d))?(?:-(\d\d))?$/);z&&z[1]&&(R=parseInt(z[1],10),R<1?(R=-R+1,N=b):N=m,z[2]&&(U=w[parseInt(z[2],10)-1]||z[2]),z[3]&&(B=parseInt(z[3],10)))}je(n,typeof R=="number"||typeof R=="string"?R:"").attr("title",$?R.filter(Boolean).join(` +`):null).attr("placeholder",$?F("inspector.multiple_values"):F("inspector.date.year")).classed("mixed",$),je(i,typeof N=="string"?N:"").attr("placeholder",F("inspector.date.era")),je(a,typeof U=="string"?U:"").attr("placeholder",F("inspector.date.month")),je(o,typeof B=="number"?B:"").attr("placeholder",F("inspector.date.day")),k(M),c.call(S)},S.focus=function(){let M=n.selectAll("input").node();M&&M.focus()},S.entityIDs=function(M){return arguments.length?(l=M,f=void 0,S):l},ke(S,r,"on")}function M8(e,t){var r=xe("change"),n=G(null),i=G(null),a,o={};e.type==="cycleway"&&(e={...e,key:e.keys[0],keys:e.keys.slice(1)});function s(u){function c(d){return d.replace(":","")}i=u.selectAll(".form-field-input-wrap").data([0]),i=i.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(i);var f=i.selectAll("ul").data([0]);f=f.enter().append("ul").attr("class","rows rows-table").merge(f),n=f.selectAll("li").data(e.keys);var p=n.enter().append("li").attr("class",function(d){return"labeled-input preset-directionalcombo-"+c(d)});p.append("div").attr("class","label preset-label-directionalcombo").attr("for",function(d){return"preset-input-directionalcombo-"+c(d)}).html(function(d){return e.t.html("types."+d)}),p.append("div").attr("class","preset-input-directionalcombo-wrap form-field-input-wrap").each(function(d){let g={...e,type:"combo",key:d},x=zi(g,t);x.on("change",b=>l(d,b[d])),o[d]=x,G(this).call(x)}),n=n.merge(p),i.selectAll(".preset-input-directionalcombo").on("change",l).on("blur",l)}function l(u,c){let f=e.key,p=u===e.keys[0]?e.keys[1]:e.keys[0];r.call("change",this,d=>{let g=d[p]||d[f];return c===g?(d[f]=c,delete d[u],delete d[p]):(d[u]=c,delete d[f],d[p]=g),d})}return s.tags=function(u){a=u;let c=e.key;for(let f in o){let p=[...new Set([].concat(a[c]).concat(a[f]).filter(Boolean))];o[f].tags({[f]:p.length>1?p:p[0]})}},s.focus=function(){var u=i.selectAll("input").node();u&&u.focus()},ke(s,r,"on")}function N8(e,t){var r=xe("change"),n=40,i=200,a=[];function o(s){var l=t.entity(a[0]).lanes();if(!t.container().select(".inspector-wrap.inspector-hidden").empty()||!s.node().parentNode){s.call(o.off);return}var u=s.selectAll(".form-field-input-wrap").data([0]);u=u.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(u);var c=u.selectAll(".surface").data([0]),f=gi(u),p=f[0]-l.lanes.length*n*1.5+n*.5;c=c.enter().append("svg").attr("width",f[0]).attr("height",300).attr("class","surface").merge(c);var d=c.selectAll(".lanes").data([0]);d=d.enter().append("g").attr("class","lanes").merge(d),d.attr("transform",function(){return"translate("+p/2+", 0)"});var g=d.selectAll(".lane").data(l.lanes);g.exit().remove();var x=g.enter().append("g").attr("class","lane");x.append("g").append("rect").attr("y",50).attr("width",n).attr("height",i),x.append("g").attr("class","forward").append("text").attr("y",40).attr("x",14).text("\u25B2"),x.append("g").attr("class","bothways").append("text").attr("y",40).attr("x",14).text("\u25B2\u25BC"),x.append("g").attr("class","backward").append("text").attr("y",40).attr("x",14).text("\u25BC"),g=g.merge(x),g.attr("transform",function(b){return"translate("+n*b.index*1.5+", 0)"}),g.select(".forward").style("visibility",function(b){return b.direction==="forward"?"visible":"hidden"}),g.select(".bothways").style("visibility",function(b){return b.direction==="bothways"?"visible":"hidden"}),g.select(".backward").style("visibility",function(b){return b.direction==="backward"?"visible":"hidden"})}return o.entityIDs=function(s){a=s},o.tags=function(){},o.focus=function(){},o.off=function(){},ke(o,r,"on")}N8.supportsMultiselection=!1;var mu=[];function qy(e,t){var r=xe("change","input"),n=de.wikipedia,i=G(null),a=G(null),o=ys(t.maxCharsForTagValue()),s,l;dt.get("languages").then(b).catch(function(){});var u={};dt.get("territory_languages").then(function(D){u=D}).catch(function(){});var c=Ht(t,"localized-lang").fetcher(I).minItems(0),f=G(null),p=[],d=Ye().title(()=>F.append("translate.translate")).placement("left"),g,x=[];function b(D){if(mu.length===0){var P={sr:"sr-Cyrl","sr-Cyrl":!1};for(var O in D)if(P[O]!==!1){var T=O;P[O]&&(T=P[O]),mu.push({localName:fe.languageName(T,{localOnly:!0}),nativeName:D[T].nativeName,code:O,label:fe.languageName(T)})}}}function m(){var D=e.id==="name"&&x.length&&x.some(function(P){var O=t.graph().hasEntity(P);if(!O)return!1;if(O.tags.wikidata||O.tags["name:etymology:wikidata"])return!0;var T=$e.match(O,t.graph());if(T){var M=T.suggestion,R=T.fields(O.extent(t.graph()).center()),N=R.some(function(V){return V.id==="brand"}),U=R.some(function(V){return V.id==="operator"}),B=T.addTags.name,$=T.addTags["brand:wikidata"],z=T.addTags["operator:wikidata"];return M&&B&&($&&!N||z&&!U)}return!1});e.locked(D)}function v(D){var P=p.map(function(N){return N.lang}),O=new Set(P.filter(Boolean));for(var T in D){var M=T.match(/^(.*):([a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-[A-Z]{2})?)$/);if(M&&M[1]===e.key&&M[2]){var R={lang:M[2],value:D[T]};O.has(R.lang)?(p[P.indexOf(R.lang)].value=R.value,O.delete(R.lang)):p.push(R)}}p.forEach(function(N){N.lang&&O.has(N.lang)&&(N.value="")})}function y(D){f=D,m();var P=e.locked(),O=D.selectAll(".form-field-input-wrap").data([0]);O=O.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(O),i=O.selectAll(".localized-main").data([0]),i=i.enter().append("input").attr("type","text").attr("id",e.domId).attr("class","localized-main").call(pt).merge(i),i.classed("disabled",!!P).attr("readonly",P||null).on("input",R(!0)).on("blur",R()).on("change",R()),O.call(o);var T=O.selectAll(".localized-add").data([0]);T=T.enter().append("button").attr("class","localized-add form-field-button").attr("aria-label",F("icons.plus")).call(ce("#iD-icon-plus")).merge(T),T.classed("disabled",!!P).call(P?d.destroy:d).on("click",M),l&&!p.length&&v(l),a=D.selectAll(".localized-multilingual").data([0]),a=a.enter().append("div").attr("class","localized-multilingual").merge(a),a.call(E),a.selectAll("button, input").classed("disabled",!!P).attr("readonly",P||null),D.selectAll(".combobox-caret").classed("nope",!0);function M(N){if(N.preventDefault(),!e.locked()){var U=fe.languageCode().toLowerCase(),B=p.find(function(z){return z.lang===U}),$=U.indexOf("en")>-1;($||B)&&(U="",B=p.find(function(z){return z.lang===U})),B||(p.unshift({lang:U,value:""}),a.call(E))}}function R(N){return function(U){if(e.locked()){U.preventDefault();return}var B=je(G(this));if(N||(B=t.cleanTagValue(B)),!(!B&&Array.isArray(l[e.key]))){var $={};$[e.key]=B||void 0,r.call("change",this,$,N)}}}}function _(D){return e.key+":"+D}function w(D,P){var O={},T=je(G(this)).toLowerCase(),M=mu.find(function(U){return U.label.toLowerCase()===T||U.localName&&U.localName.toLowerCase()===T||U.nativeName&&U.nativeName.toLowerCase()===T});M&&(T=M.code),P.lang&&P.lang!==T&&(O[_(P.lang)]=void 0);var R=T&&t.cleanTagKey(_(T)),N=je(G(this.parentNode).selectAll(".localized-value"));R&&N?O[R]=N:R&&g&&g[P.lang]&&(O[R]=g[P.lang]),P.lang=T,r.call("change",this,O)}function A(D,P){if(P.lang){var O=t.cleanTagValue(je(G(this)))||void 0;if(!(!O&&Array.isArray(P.value))){var T={};T[_(P.lang)]=O,P.value=O,r.call("change",this,T)}}}function I(D,P){var O=D.toLowerCase(),T=[fe.localeCode(),fe.languageCode()];s&&u[s]&&(T=T.concat(u[s]));var M=[];T.forEach(function(R){var N=mu.find(function(U){return U.code===R});N&&M.push(N)}),M=ot(M.concat(mu)),P(M.filter(function(R){return R.label.toLowerCase().indexOf(O)>=0||R.localName&&R.localName.toLowerCase().indexOf(O)>=0||R.nativeName&&R.nativeName.toLowerCase().indexOf(O)>=0||R.code.toLowerCase().indexOf(O)>=0}).map(function(R){return{value:R.label}}))}function E(D){var P=D.selectAll("div.entry").data(p,function(T){return T.lang});P.exit().style("top","0").style("max-height","240px").transition().duration(200).style("opacity","0").style("max-height","0px").remove();var O=P.enter().append("div").attr("class","entry").each(function(T,M){var R=G(this),N=Qn(M),U=R.append("label").attr("class","field-label").attr("for",N),B=U.append("span").attr("class","label-text");B.append("span").attr("class","label-textvalue").call(F.append("translate.localized_translation_label")),B.append("span").attr("class","label-textannotation"),U.append("button").attr("class","remove-icon-multilingual").attr("title",F("icons.remove")).on("click",function($,z){if(!e.locked()){$.preventDefault(),p.splice(p.indexOf(z),1);var V=z.lang&&_(z.lang);if(V&&V in l){delete l[V];var H={};H[V]=void 0,r.call("change",this,H);return}E(D)}}).call(ce("#iD-operation-delete")),R.append("input").attr("class","localized-lang").attr("id",N).attr("type","text").attr("placeholder",F("translate.localized_translation_language")).on("blur",w).on("change",w).call(c),R.append("input").attr("type","text").attr("class","localized-value").on("blur",A).on("change",A)});O.style("margin-top","0px").style("max-height","0px").style("opacity","0").transition().duration(200).style("margin-top","10px").style("max-height","240px").style("opacity","1").on("end",function(){G(this).style("max-height","").style("overflow","visible")}),P=P.merge(O),P.order(),P.classed("present",!0),je(P.select(".localized-lang"),function(T){var M=mu.find(function(R){return R.code===T.lang});return M?M.label:T.lang}),je(P.select(".localized-value"),function(T){return typeof T.value=="string"?T.value:""}).attr("title",function(T){return Array.isArray(T.value)?T.value.filter(Boolean).join(` +`):null}).attr("placeholder",function(T){return Array.isArray(T.value)?F("inspector.multiple_values"):F("translate.localized_translation_name")}).classed("mixed",function(T){return Array.isArray(T.value)})}y.tags=function(D){if(l=D,typeof D.wikipedia=="string"&&!g){g={};var P=D.wikipedia.match(/([^:]+):(.+)/);P&&P[0]&&P[1]&&n.translations(P[1],P[2],function(T,M){T||!M||(g=M)})}var O=Array.isArray(D[e.key]);je(i,typeof D[e.key]=="string"?D[e.key]:"").attr("title",O?D[e.key].filter(Boolean).join(` +`):void 0).attr("placeholder",O?F("inspector.multiple_values"):e.placeholder()).classed("mixed",O),v(D),f.call(y),O||o.update(D[e.key])},y.focus=function(){i.node().focus()},y.entityIDs=function(D){return arguments.length?(x=D,p=[],k(),y):x};function k(){var D=S(),P=D&&el(D.center());s=P&&P.toLowerCase()}function S(){return x&&x.length&&Er(x,t.graph())}return ke(y,r,"on")}function Vy(e,t){var r=xe("change"),n=G(null),i=G(null),a=G(null),o=G(null),s=[],l,u,c=fe.floatFormatter(fe.languageCode()),f=fe.floatParser(fe.languageCode()),p=[{value:"m",title:F("inspector.roadheight.meter")},{value:"ft",title:F("inspector.roadheight.foot")}],d=Ht(t,"roadheight-unit").data(p);function g(v){var y=v.selectAll(".form-field-input-wrap").data([0]);y=y.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(y),i=y.selectAll("input.roadheight-number").data([0]),i=i.enter().append("input").attr("type","text").attr("class","roadheight-number").attr("id",e.domId).call(pt).merge(i),i.on("change",b).on("blur",b);var _=m().center();u=lS(_)==="ft",n=y.selectAll("input.roadheight-unit").data([0]),n=n.enter().append("input").attr("type","text").attr("class","roadheight-unit").call(d).merge(n),n.on("blur",w).on("change",w),a=y.selectAll("input.roadheight-secondary-number").data([0]),a=a.enter().append("input").attr("type","text").attr("class","roadheight-secondary-number").call(pt).merge(a),a.on("change",b).on("blur",b),o=y.selectAll("input.roadheight-secondary-unit").data([0]),o=o.enter().append("input").attr("type","text").call(pt).classed("disabled",!0).classed("roadheight-secondary-unit",!0).attr("readonly","readonly").merge(o);function w(){var A=je(n);A==="m"?u=!1:A==="ft"&&(u=!0),je(n,u?"ft":"m"),x(),b()}}function x(){je(n,u?"ft":"m")}function b(){var v={},y=je(i).trim(),_=je(a).trim();if(!(!y&&!_&&Array.isArray(l[e.key]))){if(!y&&!_)v[e.key]=void 0;else{var w=h1.test(y)?parseFloat(y):f(y);isNaN(w)&&(w=y);var A=h1.test(_)?parseFloat(_):f(_);isNaN(A)&&(A=_),isNaN(w)||isNaN(A)||!u?v[e.key]=t.cleanTagValue(w):(w!==""&&(w=w+"'"),A!==""&&(A=A+'"'),v[e.key]=t.cleanTagValue(w+A))}r.call("change",this,v)}}g.tags=function(v){l=v;var y=v[e.key],_,w=Array.isArray(y);if(!w){if(y&&(y.indexOf("'")>=0||y.indexOf('"')>=0))_=y.match(/(-?[\d.]+)"/),_!==null&&(_=c(parseFloat(_[1]))),y=y.match(/(-?[\d.]+)'/),y!==null&&(y=c(parseFloat(y[1]))),u=!0;else if(y){var A=y;y=parseFloat(A),isNaN(y)?y=A:y=c(y),u=!1}}x();var I=c(0);je(i,typeof y=="string"?y:"").attr("title",w?y.filter(Boolean).join(` +`):null).attr("placeholder",w?F("inspector.multiple_values"):F("inspector.unknown")).classed("mixed",w),je(a,typeof _=="string"?_:"").attr("placeholder",w?F("inspector.multiple_values"):u?I:null).classed("mixed",w).classed("disabled",!u).attr("readonly",u?null:"readonly"),o.attr("value",u?F("inspector.roadheight.inch"):null)},g.focus=function(){i.node().focus()},g.entityIDs=function(v){s=v};function m(){return s&&s.length&&Er(s,t.graph())}return ke(g,r,"on")}function Gy(e,t){var r=xe("change"),n=G(null),i=G(null),a=[],o,s,l=fe.floatFormatter(fe.languageCode()),u=fe.floatParser(fe.languageCode()),c=Ht(t,"roadspeed"),f=Ht(t,"roadspeed-unit").data(["km/h","mph"].map(b)),p=[20,30,40,50,60,70,80,90,100,110,120],d=[5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80];function g(y){var _=y.selectAll(".form-field-input-wrap").data([0]);_=_.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(_),i=_.selectAll("input.roadspeed-number").data([0]),i=i.enter().append("input").attr("type","text").attr("class","roadspeed-number").attr("id",e.domId).call(pt).call(c).merge(i),i.on("change",m).on("blur",m);var w=v().center();s=sS(w)==="mph",n=_.selectAll("input.roadspeed-unit").data([0]),n=n.enter().append("input").attr("type","text").attr("class","roadspeed-unit").attr("aria-label",F("inspector.speed_unit")).call(f).merge(n),n.on("blur",A).on("change",A);function A(){var I=je(n);I==="km/h"?s=!1:I==="mph"&&(s=!0),je(n,s?"mph":"km/h"),x(),m()}}function x(){c.data((s?d:p).map(b)),je(n,s?"mph":"km/h")}function b(y){return{value:l(y),title:l(y)}}function m(){var y={},_=je(i).trim();if(!(!_&&Array.isArray(o[e.key]))){if(!_)y[e.key]=void 0;else{var w=h1.test(_)?parseFloat(_):u(_);isNaN(w)&&(w=_),isNaN(w)||!s?y[e.key]=t.cleanTagValue(w):y[e.key]=t.cleanTagValue(w+" mph")}r.call("change",this,y)}}g.tags=function(y){o=y;var _=y[e.key],w=_,A=Array.isArray(w);A||(_&&_.indexOf("mph")>=0?s=!0:_&&(s=!1),w=parseInt(w,10),isNaN(w)?w=_:w=l(w)),x(),je(i,typeof w=="string"?w:"").attr("title",A?w.filter(Boolean).join(` +`):null).attr("placeholder",A?F("inspector.multiple_values"):e.placeholder()).classed("mixed",A)},g.focus=function(){i.node().focus()},g.entityIDs=function(y){a=y};function v(){return a&&a.length&&Er(a,t.graph())}return ke(g,r,"on")}function ic(e,t){var r=xe("change"),n=G(null),i=G(null),a=G(null),o=G(null),s=(e.options||e.keys).slice(),l,u,c={},f=[];function p(){var v=i.selectAll(".form-field-input-radio label.active input");return!v.empty()&&v.datum()}function d(v){v.classed("preset-radio",!0),i=v.selectAll(".form-field-input-wrap").data([0]);var y=i.enter().append("div").attr("class","form-field-input-wrap form-field-input-radio");y.append("span").attr("class","placeholder"),i=i.merge(y),n=i.selectAll(".placeholder"),a=i.selectAll("label").data(s),y=a.enter().append("label");var _=e.resolveReference("stringsCrossReference");y.append("input").attr("type","radio").attr("name",e.id).attr("value",function(w){return _.t("options."+w,{default:w})}).attr("checked",!1),y.append("span").each(function(w){_.t.append("options."+w,{default:w})(G(this))}),a=a.merge(y),o=a.selectAll("input").on("change",m)}function g(v,y){var _=p()||y.layer!==void 0,w=$e.field(_),A=$e.field("layer"),I=_==="bridge"||_==="tunnel"||y.layer!==void 0,E=v.selectAll(".structure-extras-wrap").data(_?[0]:[]);E.exit().remove(),E=E.enter().append("div").attr("class","structure-extras-wrap").merge(E);var k=E.selectAll("ul").data([0]);k=k.enter().append("ul").attr("class","rows").merge(k),w?((!l||l.id!==_)&&(l=Vi(t,w,f,{wrap:!1}).on("change",x)),l.tags(y)):l=null;var S=k.selectAll(".structure-type-item").data(l?[l]:[],function(T){return T.id});S.exit().remove();var D=S.enter().insert("li",":first-child").attr("class","labeled-input structure-type-item");D.append("div").attr("class","label structure-label-type").attr("for","preset-input-"+_).call(F.append("inspector.radio.structure.type")),D.append("div").attr("class","structure-input-type-wrap"),S=S.merge(D),l&&S.selectAll(".structure-input-type-wrap").call(l.render),A&&I?(u||(u=Vi(t,A,f,{wrap:!1}).on("change",b)),u.tags(y),e.keys=or(e.keys,["layer"])):(u=null,e.keys=e.keys.filter(function(T){return T!=="layer"}));var P=k.selectAll(".structure-layer-item").data(u?[u]:[]);P.exit().remove();var O=P.enter().append("li").attr("class","labeled-input structure-layer-item");O.append("div").attr("class","label structure-label-layer").attr("for","preset-input-layer").call(F.append("inspector.radio.structure.layer")),O.append("div").attr("class","structure-input-layer-wrap"),P=P.merge(O),u&&P.selectAll(".structure-input-layer-wrap").call(u.render)}function x(v,y){var _=p();if(_){var w=v[_];w!=="no"&&(c[_]=w),e.type==="structureRadio"&&((w==="no"||_!=="bridge"&&_!=="tunnel"||_==="tunnel"&&w==="building_passage")&&(v.layer=void 0),v.layer===void 0&&(_==="bridge"&&w!=="no"&&(v.layer="1"),_==="tunnel"&&w!=="no"&&w!=="building_passage"&&(v.layer="-1"))),r.call("change",this,v,y)}}function b(v,y){v.layer==="0"&&(v.layer=void 0),r.call("change",this,v,y)}function m(){var v={},y;e.key&&(v[e.key]=void 0),o.each(function(_){var w=G(this).property("checked");if(w&&(y=_),e.key)w&&(v[e.key]=_);else{var A=c[y]||"yes";v[_]=w?A:void 0}}),e.type==="structureRadio"&&(y==="bridge"?v.layer="1":y==="tunnel"&&v.tunnel!=="building_passage"?v.layer="-1":v.layer=void 0),r.call("change",this,v)}return d.tags=function(v){function y(A){return e.key?v[e.key]===A:typeof v[A]=="string"&&v[A].toLowerCase()!=="no"}function _(A){return e.key?Array.isArray(v[e.key])&&v[e.key].includes(A):Array.isArray(v[A])}o.property("checked",function(A){return y(A)&&(e.key||e.options.filter(y).length===1)}),a.classed("active",function(A){return e.key?Array.isArray(v[e.key])&&v[e.key].includes(A)||v[e.key]===A:Array.isArray(v[A])&&v[A].some(I=>typeof I=="string"&&I.toLowerCase()!=="no")||typeof v[A]=="string"&&v[A].toLowerCase()!=="no"}).classed("mixed",_).attr("title",function(A){return _(A)?F("inspector.unshared_value_tooltip"):null});var w=o.filter(function(){return this.checked});w.empty()?(n.text(""),n.call(F.append("inspector.none"))):(n.text(w.attr("value")),c[w.datum()]=v[w.datum()]),e.type==="structureRadio"&&(v.waterway&&!c.tunnel&&(c.tunnel="culvert"),i.call(g,v))},d.focus=function(){o.node().focus()},d.entityIDs=function(v){return arguments.length?(f=v,c={},d):f},d.isAllowed=function(){return f.length===1},ke(d,r,"on")}function P8(e,t){var r=xe("change"),n=eo(t);Te("turn-restriction-via-way",null);var i=Te("turn-restriction-via-way0"),a=Te("turn-restriction-distance"),o=i!==null?+i:0,s=a?+a:30,l=!1,u=G(null),c=G(null),f,p,d,g,x,b;function m(I){u=I,d&&(t.graph()!==p||!g)&&(p=t.graph(),g=q7(p,d,s));var E=g&&g.vertices.length&&g.vertices.filter(function(O){return O.id===d}).length&&g.ways.length>2;if(G(I.node().parentNode).classed("hide",!E),!E||!t.container().select(".inspector-wrap.inspector-hidden").empty()||!I.node().parentNode||!I.node().parentNode.parentNode){I.call(m.off);return}var k=I.selectAll(".form-field-input-wrap").data([0]);k=k.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(k);var S=k.selectAll(".restriction-container").data([0]),D=S.enter().append("div").attr("class","restriction-container");D.append("div").attr("class","restriction-help"),c=D.merge(S).call(y);var P=k.selectAll(".restriction-controls").data([0]);P.enter().append("div").attr("class","restriction-controls-container").append("div").attr("class","restriction-controls").merge(P).call(v)}function v(I){var E=I.selectAll(".restriction-distance").data([0]);E.exit().remove();var k=E.enter().append("div").attr("class","restriction-control restriction-distance");k.append("span").attr("class","restriction-control-label restriction-distance-label").call(F.append("restriction.controls.distance",{suffix:":"})),k.append("input").attr("class","restriction-distance-input").attr("type","range").attr("min","20").attr("max","50").attr("step","5"),k.append("span").attr("class","restriction-distance-text"),I.selectAll(".restriction-distance-input").property("value",s).on("input",function(){var P=G(this).property("value");s=+P,g=null,c.selectAll(".layer-osm .layer-turns *").remove(),Te("turn-restriction-distance",s),u.call(m)}),I.selectAll(".restriction-distance-text").call(_(s));var S=I.selectAll(".restriction-via-way").data([0]);S.exit().remove();var D=S.enter().append("div").attr("class","restriction-control restriction-via-way");D.append("span").attr("class","restriction-control-label restriction-via-way-label").call(F.append("restriction.controls.via",{suffix:":"})),D.append("input").attr("class","restriction-via-way-input").attr("type","range").attr("min","0").attr("max","2").attr("step","1"),D.append("span").attr("class","restriction-via-way-text"),I.selectAll(".restriction-via-way-input").property("value",o).on("input",function(){var P=G(this).property("value");o=+P,c.selectAll(".layer-osm .layer-turns *").remove(),Te("turn-restriction-via-way0",o),u.call(m)}),I.selectAll(".restriction-via-way-text").call(w(o))}function y(I){if(!g)return;var E=g.graph,k=zt(!0),S=Mi(),D=gi(t.container().select(".sidebar")),P=[D[0]-50,370],O=ma(P,.5),T=22;S.scale(jn(T));for(var M=Pe(),R=0;R1){var U=Math.min(160,Math.max(110,P[0]*.4)),B=160,$=S([M[0][0],M[1][1]]),z=S([M[1][0],M[0][1]]),V=(z[0]-$[0])/(P[0]-U),H=(z[1]-$[1])/(P[1]-B-N),Z=Math.log(Math.abs(V))/Math.LN2,oe=Math.log(Math.abs(H))/Math.LN2;T=T-Math.max(Z,oe),S.scale(jn(T))}var pe=S(M.center());pe[1]=pe[1]-N/2,S.translate(rr(O,pe)).clipExtent([[0,0],P]);var ne=uu(S,t).only(["osm","touch"]).dimensions(P),ge=fu(S,t),ve=cu(S,t),Oe=f8(S,t),tt=I.selectAll(".surface").empty();I.call(ne);var Ce=I.selectAll(".surface").classed("tr",!0);tt&&(l=!0,Ce.call(n)),x&&!E.hasEntity(x)&&(x=null,f=null),Ce.call(ec,P).call(ge,E,g.vertices,k,M,T).call(ve,E,g.ways,k).call(Oe,E,g.turns(x,o)),Ce.on("click.restrictions",le).on("mouseover.restrictions",Se),Ce.selectAll(".selected").classed("selected",!1),Ce.selectAll(".related").classed("related",!1);var te;x&&(te=E.entity(x),Ce.selectAll("."+x).classed("selected",!0).classed("related",!0)),document.addEventListener("resizeWindow",function(){ec(c,null),Ie(1)},!1),We(null);function le(ue){Ce.call(n.off).call(n);var ae=ue.target.__data__,Ae=ae&&ae.properties&&ae.properties.entity;if(Ae&&(ae=Ae),ae instanceof Or&&(ae.__from||ae.__via))x=ae.id,f=null,Ie();else if(ae instanceof dl){var we,Me,He,Qe,et=E2(E,ae,S);if(ae.restrictionID&&!ae.direct)return;if(ae.restrictionID&&!ae.only){var lt={},nt=JSON.parse(JSON.stringify(ae));for(nt.only=!0,et=et.replace(/^no/,"only"),He=g.turns(x,2),Me=[],f=[],Qe=0;Qe=ue)&&t.hasEntity(d)&&(b=ae,c.call(y))}function Le(ue){if(Ce.selectAll(".related").classed("related",!1).classed("allow",!1).classed("restrict",!1).classed("only",!1),Ce.selectAll("."+ue).classed("related",!0),ue)for(var ae=g.turns(ue,o),Ae=0;Ae'+F("restriction.help."+ee)+""}});var we=ue&&ue.properties&&ue.properties.entity;if(we&&(ue=we),x&&(te=E.entity(x),Ce.selectAll("."+x).classed("selected",!0).classed("related",!0)),ue instanceof Or&&ue.__from){te=ue,Le(x?null:te.id),Ce.selectAll("."+te.id).classed("related",!0);var Me=!x||x!==te.id;ae.append("div").html(F.html("restriction.help."+(Me?"select_from_name":"from_name"),{from:Ae.from,fromName:A(te.id,E)}))}else if(ue instanceof dl){var He=E2(E,ue,S),Qe=He.replace(/^(only|no)\_/,""),et=ue.direct===!1?F.html("restriction.help.indirect"):"",lt,nt,ht;if(ue.no?(lt="restrict",nt=F.html("restriction.help.turn.no_"+Qe,{indirect:{html:et}}),ht=F.html("restriction.help.turn.only_"+Qe,{indirect:""})):ue.only?(lt="only",nt=F.html("restriction.help.turn.only_"+Qe,{indirect:{html:et}}),ht=F.html("restriction.help.turn.allowed_"+Qe,{indirect:""})):(lt="allow",nt=F.html("restriction.help.turn.allowed_"+Qe,{indirect:{html:et}}),ht=F.html("restriction.help.turn.no_"+Qe,{indirect:""})),ae.append("div").attr("class","qualifier "+lt).html(nt),ae.append("div").html(F.html("restriction.help.from_name_to_name",{from:Ae.from,fromName:A(ue.from.way,E),to:Ae.to,toName:A(ue.to.way,E)})),ue.via.ways&&ue.via.ways.length){for(var tr=[],ie=0;ie{var k=!fe.usesMetric(),S;if(k){var D={20:70,25:85,30:100,35:115,40:130,45:145,50:160}[I];S={distance:F("units.feet",{quantity:D})}}else S={distance:F("units.meters",{quantity:I})};return E.html("").call(F.append("restriction.controls.distance_up_to",S))}}function w(I){return E=>(E=E.html(""),I===0?E.call(F.append("restriction.controls.via_node_only")):I===1?E.call(F.append("restriction.controls.via_up_to_one")):E.call(F.append("restriction.controls.via_up_to_two")))}function A(I,E){var k=E.entity(I),S=kr(k)||"",D=$e.match(k,E),P=D&&D.name()||ta(k.id);return S||P}return m.entityIDs=function(I){g=null,x=null,f=null,d=I[0]},m.tags=function(){},m.focus=function(){},m.off=function(I){l&&(I.selectAll(".surface").call(n.off).on("click.restrictions",null).on("mouseover.restrictions",null),G(window).on("resize.restrictions",null))},ke(m,r,"on")}P8.supportsMultiselection=!1;function jy(e,t){var r=xe("change"),n=G(null),i=ys(t.maxCharsForTagValue()).silent(e.usage==="changeset"&&e.key==="comment"),a;function o(s){var l=s.selectAll(".form-field-input-wrap").data([0]);l=l.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).style("position","relative").merge(l),n=l.selectAll("textarea").data([0]),n=n.enter().append("textarea").attr("id",e.domId).call(pt).on("input",u(!0)).on("blur",u()).on("change",u()).merge(n),l.call(i);function u(c){return function(){var f=je(n);if(c||(f=t.cleanTagValue(f)),!(!f&&Array.isArray(a[e.key]))){var p={};p[e.key]=f||void 0,r.call("change",this,p,c)}}}}return o.tags=function(s){a=s;var l=Array.isArray(s[e.key]);je(n,!l&&s[e.key]?s[e.key]:"").attr("title",l?s[e.key].filter(Boolean).join(` +`):void 0).attr("placeholder",l?F("inspector.multiple_values"):e.placeholder()||F("inspector.unknown")).classed("mixed",l),l||i.update(s[e.key])},o.focus=function(){n.node().focus()},ke(o,r,"on")}function Hy(e,t){var r=de.wikidata,n=xe("change"),i=G(null),a=G(null),o=null,s=null,l="",u=[],c=e.keys&&e.keys.find(function(v){return v.includes("wikipedia")}),f=e.key==="wikidata"?"name":e.key.split(":")[0],p=Ht(t,"combo-"+e.safeid).caseSensitive(!0).minItems(1);function d(v){i=v;var y=v.selectAll(".form-field-input-wrap").data([0]);y=y.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(y);var _=y.selectAll("ul").data([0]);_=_.enter().append("ul").attr("class","rows").merge(_);var w=_.selectAll("li.wikidata-search").data([0]),A=w.enter().append("li").attr("class","wikidata-search");A.append("input").attr("type","text").attr("id",e.domId).style("flex","1").call(pt).on("focus",function(){var S=G(this).node();S.setSelectionRange(0,S.value.length)}).on("blur",function(){b()}).call(p.fetcher(g)),p.on("accept",function(S){S&&(o=S.id,x())}).on("cancel",function(){b()}),A.append("button").attr("class","form-field-button wiki-link").attr("title",F("icons.view_on",{domain:"wikidata.org"})).call(ce("#iD-icon-out-link")).on("click",function(S){S.preventDefault(),l&&window.open(l,"_blank")}),w=w.merge(A),a=w.select("input");var I=["description","identifier"],E=_.selectAll("li.labeled-input").data(I),k=E.enter().append("li").attr("class",function(S){return"labeled-input preset-wikidata-"+S});k.append("div").attr("class","label").html(function(S){return F.html("wikidata."+S)}),k.append("input").attr("type","text").call(pt).classed("disabled","true").attr("readonly","true"),k.append("button").attr("class","form-field-button").attr("title",F("icons.copy")).call(ce("#iD-operation-copy")).on("click",function(S){S.preventDefault(),G(this.parentNode).select("input").node().select(),document.execCommand("copy")})}function g(v,y){if(!v&&f)for(var _ in u){var w=t.hasEntity(u[_]);if(w.tags[f]){v=w.tags[f];break}}r.itemsForSearchQuery(v,function(A,I){if(A){A!=="No query"&&console.error(A);return}var E=I.map(function(k){return{id:k.id,value:k.display.label.value+" ("+k.id+")",display:S=>S.append("span").attr("class","localized-text").attr("lang",k.display.label.language).text(k.display.label.value),title:k.display.description&&k.display.description.value,terms:k.aliases}});y&&y(E)})}function x(){var v={};v[e.key]=o,n.call("change",this,v);var y=t.graph(),_=u;r.entityByQID(o,function(w,A){if(!w&&t.graph()===y&&A.sitelinks){var I=r.languagesToQuery();["labels","descriptions"].forEach(function(N){if(A[N]){var U=Object.keys(A[N]);if(U.length!==0){var B=U[0];I.indexOf(B)===-1&&I.push(B)}}});var E;if(c){var k;for(var S in I){var D=I[S],P=D.replace("-","_")+"wiki";if(A.sitelinks[P]){k=!0,E=D+":"+A.sitelinks[P].title;break}}if(!k){var O=Object.keys(A.sitelinks).filter(function(N){return N.endsWith("wiki")});if(O.length===0)E=null;else{var T=O[0].slice(0,-4).replace("_","-"),M=A.sitelinks[O[0]].title;E=T+":"+M}}}if(E&&(E=t.cleanTagValue(E)),!(typeof E>"u")){var R=_.map(function(N){var U=t.hasEntity(N);if(!U)return null;var B=Object.assign({},U.tags);if(E===null){if(!B[c])return null;delete B[c]}else B[c]=E;return sr(N,B)}).filter(Boolean);R.length&&t.overwrite(function(U){return R.forEach(function(B){U=B(U)}),U},t.history().undoAnnotation())}}})}function b(){var v="";s&&(v=m(s,"labels"),v.length===0&&(v=s.id.toString())),je(a,v)}d.tags=function(v){var y=Array.isArray(v[e.key]);if(a.attr("title",y?v[e.key].filter(Boolean).join(` +`):null).attr("placeholder",y?F("inspector.multiple_values"):"").classed("mixed",y),o=typeof v[e.key]=="string"&&v[e.key]||"",!/^Q[0-9]*$/.test(o)){_();return}l="https://wikidata.org/wiki/"+o,r.entityByQID(o,function(w,A){if(w){_();return}s=A,b();var I=m(A,"descriptions");i.select("button.wiki-link").classed("disabled",!1),i.select(".preset-wikidata-description").style("display",function(){return I.length>0?"flex":"none"}).select("input").attr("value",I),i.select(".preset-wikidata-identifier").style("display",function(){return A.id?"flex":"none"}).select("input").attr("value",A.id)});function _(){s=null,b(),i.select(".preset-wikidata-description").style("display","none"),i.select(".preset-wikidata-identifier").style("display","none"),i.select("button.wiki-link").classed("disabled",!0),o&&o!==""?l="https://wikidata.org/wiki/Special:Search?search="+o:l=""}};function m(v,y){if(!v[y])return"";var _=v[y],w=Object.keys(_);if(w.length===0)return"";var A=r.languagesToQuery();for(var I in A){var E=A[I],k=_[E];if(k&&k.value&&k.value.length>0)return k.value}return _[w[0]].value}return d.entityIDs=function(v){return arguments.length?(u=v,d):u},d.focus=function(){a.node().focus()},ke(d,n,"on")}function O8(e,t){let r="https://",n="wikipedia.org",i=xe("change"),a=de.wikipedia,o=de.wikidata,s=G(null),l=G(null),u="",c,f,p=[];dt.get("wmf_sitematrix").then(w=>{p=w,f&&_(f)}).catch(()=>{});let d=Ht(t,"wikipedia-lang").fetcher((w,A)=>{let I=w.toLowerCase();A(p.filter(E=>E[0].toLowerCase().indexOf(I)>=0||E[1].toLowerCase().indexOf(I)>=0||E[2].toLowerCase().indexOf(I)>=0).map(E=>({value:E[1]})))}),g=Ht(t,"wikipedia-title").fetcher((w,A)=>{if(!w){w="";for(let E in c){let k=t.hasEntity(c[E]);if(k.tags.name){w=k.tags.name;break}}}(w.length>7?a.search:a.suggestions)(m()[2],w,(E,k)=>{A(k.map(S=>({value:S})))})});function x(w){let A=w.selectAll(".form-field-input-wrap").data([0]);A=A.enter().append("div").attr("class",`form-field-input-wrap form-field-input-${e.type}`).merge(A);let I=A.selectAll(".wiki-lang-container").data([0]);I=I.enter().append("div").attr("class","wiki-lang-container").merge(I),s=I.selectAll("input.wiki-lang").data([0]),s=s.enter().append("input").attr("type","text").attr("class","wiki-lang").attr("placeholder",F("translate.localized_translation_language")).call(pt).call(d).merge(s),s.on("blur",v).on("change",v);let E=A.selectAll(".wiki-title-container").data([0]);E=E.enter().append("div").attr("class","wiki-title-container").merge(E),l=E.selectAll("input.wiki-title").data([0]),l=l.enter().append("input").attr("type","text").attr("class","wiki-title").attr("id",e.domId).call(pt).call(g).merge(l),l.on("blur",function(){y(!0)}).on("change",function(){y(!1)});let k=E.selectAll(".wiki-link").data([0]);k=k.enter().append("button").attr("class","form-field-button wiki-link").attr("title",F("icons.view_on",{domain:n})).call(ce("#iD-icon-out-link")).merge(k),k.on("click",S=>{S.preventDefault(),u&&window.open(u,"_blank")})}function b(w){let A=fe.languageCode().toLowerCase();for(let I in p){let E=p[I];if(E[2]===A)return E}return w?["","",""]:["English","English","en"]}function m(w){let A=je(s).toLowerCase();for(let I in p){let E=p[I];if(E[0].toLowerCase()===A||E[1].toLowerCase()===A||E[2]===A)return E}return b(w)}function v(){je(s,m()[1]),y(!0)}function y(w){let A=je(l),I=A.match(/https?:\/\/([-a-z]+)\.wikipedia\.org\/(?:wiki|\1-[-a-z]+)\/([^#]+)(?:#(.+))?/),E=I&&p.find(P=>I[1]===P[2]),k={};if(E){let P=E[1];if(A=decodeURIComponent(I[2]).replace(/_/g," "),I[3]){let O;O=decodeURIComponent(I[3]),A+="#"+O.replace(/_/g," ")}A=A.slice(0,1).toUpperCase()+A.slice(1),je(s,P),je(l,A)}if(A?k.wikipedia=t.cleanTagValue(m()[2]+":"+A):k.wikipedia=void 0,i.call("change",this,k),w||!A||!m()[2])return;let S=t.graph(),D=c;o.itemsByTitle(m()[2],A,(P,O)=>{if(P||!O||!Object.keys(O).length||t.graph()!==S)return;let T=Object.keys(O),M=T&&T.find(N=>N.match(/^Q\d+$/)),R=D.map(N=>{let U=t.entity(N).tags,B=Object.assign({},U);return B.wikidata!==M?(B.wikidata=M,sr(N,B)):null}).filter(Boolean);R.length&&t.overwrite(function(U){return R.forEach(function(B){U=B(U)}),U},t.history().undoAnnotation())})}x.tags=w=>{f=w,_(w)};function _(w){let A=typeof w[e.key]=="string"?w[e.key]:"",I=A.match(/([^:]+):([^#]+)(?:#(.+))?/),E=I&&I[1],k=I&&I[2],S=I&&I[3],D=E&&p.find(P=>E===P[2]);if(D){let P=D[1];je(s,P),je(l,k+(S?"#"+S:"")),u=`${r}${E}.${n}/wiki/${x.encodePath(k,S)}`}else if(je(l,A),A&&A!==""){je(s,"");let P=b();u=`${r}${P[2]}.${n}/w/index.php?fulltext=1&search=${A}`}else{let P=m(!0);je(s,P[1]),u=""}}return x.encodePath=(w,A)=>{let I=w.replace(/ /g,"_"),E=encodeURIComponent(I),k=x.encodeURIAnchorFragment(A);return`${E}${k}`},x.encodeURIAnchorFragment=w=>{if(!w)return"";let A=w.replace(/ /g,"_");return"#"+encodeURIComponent(A)},x.entityIDs=w=>arguments.length?(c=w,x):c,x.focus=()=>{l.node().focus()},ke(x,i,"on")}O8.supportsMultiselection=!1;function _M(e,t){let r=xe("change"),n=G(null),i={},a=G(null),o,s=e.key,l=s+":",u=[{key:"name"},{key:"url"},{key:"date"}];function c(){o&&(r.call("change",this,o),o=null,a.call(d))}function f(g,x){if(!(typeof x.key!="string"&&!this.value)){var b=l+x.key;o=o||{};var m=t.cleanTagValue(this.value);o[b]=m===""?void 0:m,i[b]=m===""?void 0:m,c()}}function p(){o=o||{};var g=t.cleanTagValue(this.value);o[s]=g===""?void 0:g,i[s]=g===""?void 0:g,c()}function d(g){a=g;var x=g.selectAll(".form-field-input-wrap").data([0]);g.exit().style("top","0").style("max-height","240px").transition().duration(200).style("opacity","0").style("max-height","0px").remove(),x=x.enter().append("div").attr("class","form-field-input-wrap form-field-input-"+e.type).merge(x),x.selectAll("input").data([0]).enter().append("input").attr("class","main-value").attr("type","text").attr("placeholder",F("inspector.source.main_input")).call(pt).on("change",p).on("blur",p);var b=x.selectAll("ul").data([0]);b=b.enter().append("ul").attr("class","rows").merge(b),b=b.merge(b),n=b.selectAll("li.labeled-input-source").data(u),n=n.enter().append("li").attr("class","labeled-input-source"),n.append("input").attr("type","text").attr("class","value").attr("placeholder",function(m){return F("inspector.source."+m.key)}).call(pt).call(je,function(m){return i[l+m.key]}).on("change",f).on("blur",f),n.exit().remove(),je(a.selectAll(".value"),function(m){return i[l+m.key]===void 0?"":i[l+m.key]}),je(a.selectAll(".main-value"),function(){return i[s]===void 0?"":i[s]})}return d.tags=function(g){if(!arguments.length)return i;i=g,a.call(d)},d.focus=function(){var g=a.selectAll("input").node();g&&g.focus()},ke(d,r,"on")}var L8={access:$y,address:Uy,check:V0,colour:qi,combo:zi,cycleway:M8,date:zy,defaultCheck:V0,directionalCombo:M8,email:qi,identifier:qi,lanes:N8,localized:qy,roadheight:Vy,roadspeed:Gy,manyCombo:zi,multiCombo:zi,networkCombo:zi,number:qi,onewayCheck:V0,radio:ic,restrictions:P8,semiCombo:zi,source:_M,structureRadio:ic,tel:qi,text:qi,textarea:jy,typeCombo:zi,url:qi,wikidata:Hy,wikipedia:O8};function R8(e,t,r,n){var i={};let a=G(null),o=t.key+":source",s=r[o];function l(f){let p=f.selectAll("div.entry").data(typeof s=="string"||Array.isArray(s)?[s]:[]);p.exit().style("top","0").style("max-height","240px").transition().duration(200).style("opacity","0").style("max-height","0px").remove();let d=p.enter().append("div").attr("class","entry").each(function(){var g=G(this);let x=Qn("source-"+t.safeid),b=g.append("label").attr("class","field-label").attr("for",x),m=b.append("span").attr("class","label-text");m.append("span").attr("class","label-textvalue").call(F.append("inspector.field_source_label",{field_name:t.title})),m.append("span").attr("class","label-textannotation"),b.append("button").attr("class","remove-icon-source").attr("title",F("icons.remove")).on("click",function(v){v.preventDefault(),s=void 0;let y={};y[o]=void 0,n.call("change",this,y),l(f)}).call(ce("#iD-operation-delete")),g.append("input").attr("type","text").attr("class","field-source-value").on("blur",u).on("change",u)});d.style("margin-top","0px").style("max-height","0px").style("opacity","0").transition().duration(200).style("margin-top","10px").style("max-height","240px").style("opacity","1").on("end",function(){G(this).style("max-height","").style("overflow","visible")}),p=p.merge(d),p.order(),p.classed("present",!0),je(p.select(".field-source-value"),function(g){return typeof g=="string"?g:""}).attr("title",function(g){return Array.isArray(g)?g.filter(Boolean).join(` +`):null}).attr("placeholder",function(g){return Array.isArray(g)?F("inspector.multiple_values"):F("inspector.field_source_placeholder")}).classed("mixed",function(g){return Array.isArray(g)})}function u(f,p){let d=e.cleanTagValue(je(G(this)))||void 0;if(!d&&Array.isArray(p.value))return;let g={};g[o]=d,p.value=d,n.call("change",this,g)}function c(f){f.preventDefault(),typeof s!="string"&&!Array.isArray(s)&&(s=""),a.call(l)}return i.button=function(f,p){f.append("button").attr("class","source-icon").attr("title",function(){return F("inspector.field_source")}).call(ce("#fas-at","inline")),p=p.merge(f),p.select(".field-label > .source-icon").on("click",c)},i.body=function(f){a=f.selectChild().selectAll(".field-source").data([0]),a=a.enter().append("div").attr("class","field-source").merge(a),a.call(l)},i}function Vi(e,t,r,n){n=Object.assign({show:!0,wrap:!0,remove:!0,revert:!0,info:!0},n);var i=xe("change","revert"),a=Object.assign({},t);a.domId=Qn("form-field-"+a.safeid);var o=n.show,s="",l={};n.source=a.source!==void 0?a.source:!0;var u;r&&r.length&&(u=r.reduce(function(v,y){var _=e.graph().entity(y);return v.extend(_.extent(e.graph()))},Pe()));var c=!1,f=Ye().title(()=>F.append("inspector.lock.suggestion",{label:a.title})).placement("bottom");o&&!a.impl&&p();function p(){a.impl=L8[a.type](a,e).on("change",function(v,y){i.call("change",a,v,y)}),r&&(a.entityIDs=r,a.impl.entityIDs&&a.impl.entityIDs(r))}function d(){let v=a.keys||[a.key];return a.type==="directionalCombo"&&a.key&&(v=v.concat(a.key)),v}function g(){return!r||!r.length?!1:r.some(function(v){var y=e.graph().base().entities[v],_=e.graph().entity(v);return d().some(function(w){return y?_.tags[w]!==y.tags[w]:_.tags[w]})})}function x(){return d().some(function(v){if(a.type==="multiCombo"){for(var y in l)if(y.indexOf(v)===0)return!0;return!1}return l[v]!==void 0})}function b(v,y){v.stopPropagation(),v.preventDefault(),!(!r||c)&&i.call("revert",y,d())}function m(v,y){if(v.stopPropagation(),v.preventDefault(),!c){var _={};d().forEach(function(w){_[w]=void 0}),i.call("change",y,_)}}return a.render=function(v){var y=R8(e,a,l,i),_=v.selectAll(".form-field").data([a]),w=_.enter().append("div").attr("class",function(S){return"form-field form-field-"+S.safeid}).classed("nowrap",!n.wrap);if(n.wrap){var A=w.append("label").attr("class","field-label").attr("for",function(S){return S.domId}),I=A.append("span").attr("class","label-text");I.append("span").attr("class","label-textvalue").each(function(S){S.label()(G(this))}),I.append("span").attr("class","label-textannotation"),n.remove&&A.append("button").attr("class","remove-icon").attr("title",F("icons.remove")).call(ce("#iD-operation-delete")),n.revert&&A.append("button").attr("class","modified-icon").attr("title",F("icons.undo")).call(ce(fe.textDirection()==="rtl"?"#iD-icon-redo":"#iD-icon-undo")),n.source&&y.button(A,_)}_=_.merge(w),_.select(".field-label > .remove-icon").on("click",m),_.select(".field-label > .modified-icon").on("click",b),_.each(function(S){var D=G(this);S.impl||p();var P,O;if(n.wrap&&a.type==="restrictions"&&(O=T8(e,"restrictions")),n.wrap&&n.info){var T=S.key||"";S.type==="multiCombo"&&(T=T.replace(/:$/,"")),S.type==="source"&&(T=T.split(":")[0]);var M=S.reference||{key:T,value:l[T]};P=vs(M,e),s==="hover"&&P.showing(!1)}D.call(S.impl),O&&D.call(O.body).select(".field-label").call(O.button),P&&D.call(P.body).select(".field-label").call(P.button),S.impl.tags(l)}),_.classed("locked",c).classed("modified",g()).classed("present",x());var E=_.selectAll(".field-label .label-textannotation"),k=E.selectAll(".icon").data(c?[0]:[]);k.exit().remove(),k.enter().append("svg").attr("class","icon").append("use").attr("xlink:href","#fas-lock"),_.call(c?f:f.destroy),n.source&&y.body(v)},a.state=function(v){return arguments.length?(s=v,a):s},a.tags=function(v){return arguments.length?(l=v,x()&&!o&&(o=!0,a.impl||p()),a):l},a.locked=function(v){return arguments.length?(c=v,a):c},a.show=function(){if(o=!0,a.impl||p(),a.default&&a.key&&l[a.key]!==a.default){var v={};v[a.key]=a.default,i.call("change",this,v)}},a.isShown=function(){return o},a.isAllowed=function(){if(r&&r.length>1&&L8[a.type].supportsMultiselection===!1||a.geometry&&!r.every(function(_){return a.matchGeometry(e.graph().geometry(_))}))return!1;if(r&&u&&a.locationSetID){var v=An.locationSetsAt(u.center());if(!v[a.locationSetID])return!1}var y=a.prerequisiteTag;return!(r&&!x()&&y&&!r.every(function(_){var w=e.graph().entity(_);if(y.keys){let I=E=>E in w.tags;return y.keys.some(I)}if(y.key){var A=w.tags[y.key];if(!A)return!1;if(y.valueNot)return y.valueNot!==A;if(y.value)return y.value===A}else if(y.keyNot&&w.tags[y.keyNot])return!1;return!0}))},a.focus=function(){a.impl&&a.impl.focus()},ke(a,i,"on")}function hu(e){var t=Ht(e,"more-fields").minItems(1),r=[],n="",i="",a="";function o(s){var l=r.filter(function(_){return _.isAllowed()}),u=l.filter(function(_){return _.isShown()}),c=l.filter(function(_){return!_.isShown()}),f=s.selectAll(".form-fields-container").data([0]);f=f.enter().append("div").attr("class","form-fields-container "+(a||"")).merge(f);var p=f.selectAll(".wrap-form-field").data(u,function(_){return _.id+(_.entityIDs?_.entityIDs.join():"")});p.exit().remove();var d=p.enter().append("div").attr("class",function(_){return"wrap-form-field wrap-form-field-"+_.safeid});p=p.merge(d),p.order().each(function(_){G(this).call(_.render)});var g=[],x=c.map(function(_){var w=_.title();g.push(w);var A=_.terms();return _.key&&A.push(_.key),_.keys&&(A=A.concat(_.keys)),{display:_.label(),value:w,title:w,field:_,terms:A}}),b=g.slice(0,3).join(", ")+(g.length>3?"\u2026":""),m=s.selectAll(".more-fields").data(i==="hover"||x.length===0?[]:[0]);m.exit().remove();var v=m.enter().append("div").attr("class","more-fields").append("label");v.append("span").call(F.append("inspector.add_fields")),m=v.merge(m);var y=m.selectAll(".value").data([0]);y.exit().remove(),y=y.enter().append("input").attr("class","value").attr("type","text").attr("placeholder",b).call(pt).merge(y),y.call(je,"").call(t.data(x).on("accept",function(_){if(_){var w=_.field;w.show(),s.call(o),w.focus()}})),n!==b&&(y.attr("placeholder",b),n=b)}return o.fieldsArr=function(s){return arguments.length?(r=s||[],o):r},o.state=function(s){return arguments.length?(i=s,o):i},o.klass=function(s){return arguments.length?(a=s,o):a},o}function B8(e){var t=xe("change"),r=hu(e),n=Ht(e,"comment").caseSensitive(!0),i,a,o;function s(u){l(u)}function l(u){var c=!1;if(!i){c=!0;var f=$e;i=[Vi(e,f.field("comment"),null,{show:!0,revert:!1}),Vi(e,f.field("source"),null,{show:!0,revert:!1}),Vi(e,f.field("hashtags"),null,{show:!1,revert:!1})],i.forEach(function(_){_.on("change",function(w,A){t.call("change",_,void 0,w,A)})})}if(i.forEach(function(_){_.tags(a)}),u.call(r.fieldsArr(i)),c){var p=u.select(".form-field-comment textarea"),d=p.node();d&&(d.focus(),d.select()),d2(p,"blur");var g=e.connection();g&&g.userChangesets(function(_,w){if(!_){var A=w.map(function(I){var E=I.tags.comment;return E?{title:E,value:E}:null}).filter(Boolean);p.call(n.data(H4(A,"title")))}})}let x=[];a.comment.match(/google/i)&&x.push({id:'contains "google"',msg:F.append("commit.google_warning"),link:F("commit.google_warning_link")});let b=e.maxCharsForTagValue();r1(os(a.comment,Number.POSITIVE_INFINITY))>b&&x.push({id:"message too long",msg:F.append("commit.changeset_comment_length_warning",{maxChars:b})});var v=u.select(".form-field-comment").selectAll(".comment-warning").data(x,_=>_.id);v.exit().transition().duration(200).style("opacity",0).remove();var y=v.enter().insert("div",".comment-warning").attr("class","comment-warning field-warning").style("opacity",0);y.call(ce("#iD-icon-alert","inline")).append("span"),y.transition().duration(200).style("opacity",1),v.merge(y).selectAll("div > span").text("").each(function(_){let w=G(this);_.link&&(w=w.append("a").attr("target","_blank").attr("href",_.link)),w.call(_.msg)})}return s.tags=function(u){return arguments.length?(a=u,s):a},s.changesetID=function(u){return arguments.length?(o===u||(o=u,i=null),s):o},ke(s,t,"on")}var AM=xt(Za());var Al=new function(){var e="keyValue",t="keyAttributes",r="@",n=[],i=/^\s*$/,a=/^(?:true|false)$/i;function o(f){return i.test(f)?null:a.test(f)?f.toLowerCase()==="true":isFinite(f)?parseFloat(f):isFinite(Date.parse(f))?new Date(f):f}function s(){}s.prototype.toString=function(){return"null"},s.prototype.valueOf=function(){return null};function l(f){return f===null?new s:f instanceof Object?f:new f.constructor(f)}function u(f,p,d,g){var x=n.length,b=f.hasChildNodes(),m=f.hasAttributes(),v=!!(p&2),y,_,w=0,A="",I=v?{}:!0;if(b)for(var E,k=0;k0)&&A?I[e]=D:!v&&w===0&&A&&(I=D),d&&(v||w>0)&&Object.freeze(I),n.length=x,I}function c(f,p,d){var g,x;d instanceof String||d instanceof Number||d instanceof Boolean?p.appendChild(f.createTextNode(d.toString())):d.constructor===Date&&p.appendChild(f.createTextNode(d.toGMTString()));for(var b in d)if(g=d[b],!(isFinite(b)||g instanceof Function))if(b===e)g!==null&&g!==!0&&p.appendChild(f.createTextNode(g.constructor===Date?g.toGMTString():String(g)));else if(b===t)for(var m in g)p.setAttribute(m,g[m]);else if(b.charAt(0)===r)p.setAttribute(b.slice(1),g);else if(g.constructor===Array)for(var v=0;v1&&typeof p=="number"?p&3:1;return u(f,x,d||!1,arguments.length>3?g:x===3)},this.unbuild=function(f){var p=document.implementation.createDocument("","",null);return c(p,p,f),p},this.stringify=function(f){return new XMLSerializer().serializeToString(Al.unbuild(f))}};function $8(e){var t={};dt.get("discarded").then(function(i){t=i}).catch(function(){});var r=Nt("changes-list",e).label(function(){var i=e.history(),a=i.difference().summary();return F.append("inspector.title_count",{title:F("commit.changes"),count:a.length})}).disclosureContent(n);function n(i){var a=e.history(),o=a.difference().summary(),s=i.selectAll(".commit-section").data([0]),l=s.enter().append("div").attr("class","commit-section");l.append("ul").attr("class","changeset-list"),s=l.merge(s);var u=s.select("ul").selectAll("li").data(o),c=u.enter().append("li").attr("class","change-item"),f=c.append("button").on("mouseover",v).on("mouseout",y).on("click",_);f.each(function(w){G(this).call(ce("#iD-icon-"+w.entity.geometry(w.graph),"pre-text "+w.changeType))}),f.append("span").attr("class","change-type").html(function(w){return F.html("commit."+w.changeType)+" "}),f.append("strong").attr("class","entity-type").text(function(w){var A=$e.match(w.entity,w.graph);return A&&A.name()||ta(w.entity.id)}),f.append("span").attr("class","entity-name").text(function(w){var A=kr(w.entity)||"",I="";return A!==""&&(I+=":"),I+=" "+A}),u=c.merge(u);var p=new wa().update({id:void 0}),d=a.changes(v0(a.difference(),t));delete p.id;var g=Al.stringify(p.osmChangeJXON(d)),x=new Blob([g],{type:"text/xml;charset=utf-8;"}),b="changes.osc",m=s.selectAll(".download-changes").data([0]).enter().append("a").attr("class","download-changes");m.attr("href",window.URL.createObjectURL(x)).attr("download",b),m.call(ce("#iD-icon-load","inline")).append("span").call(F.append("commit.download_changes"));function v(w){w.entity&&e.surface().selectAll(e1([w.entity.id],e.graph())).classed("hover",!0)}function y(){e.surface().selectAll(".hover").classed("hover",!1)}function _(w,A){if(A.changeType!=="deleted"){var I=A.entity;e.map().zoomToEase(I),e.surface().selectAll(e1([I.id],e.graph())).classed("hover",!0)}}}return r}function U8(e){function t(r){var n=e.validator().getIssuesBySeverity({what:"edited",where:"all",includeDisabledRules:!0});for(var i in n){var a=n[i];i!=="error"&&(a=a.filter(function(d){return d.type!=="help_request"}));var o=i+"-section",s=i+"-item",l=r.selectAll("."+o).data(a.length?[0]:[]);l.exit().remove();var u=l.enter().append("div").attr("class","modal-section "+o+" fillL2");u.append("h3").call(i==="warning"?F.append("commit.warnings"):F.append("commit.errors")),u.append("ul").attr("class","changeset-list"),l=u.merge(l);var c=l.select("ul").selectAll("li").data(a,function(d){return d.key});c.exit().remove();var f=c.enter().append("li").attr("class",s),p=f.append("button").on("mouseover",function(d,g){g.entityIds&&e.surface().selectAll(e1(g.entityIds,e.graph())).classed("hover",!0)}).on("mouseout",function(){e.surface().selectAll(".hover").classed("hover",!1)}).on("click",function(d,g){e.validator().focusIssue(g)});p.call(ce("#iD-icon-alert","pre-text")),p.append("strong").attr("class","issue-message"),p.filter(function(d){return d.tooltip}).call(Ye().title(function(d){return d.tooltip}).placement("top")),c=f.merge(c),c.selectAll(".issue-message").text("").each(function(d){return d.message(e)(G(this))})}}return t}var EM=[/^changesets_count$/,/^created_by$/,/^ideditor:/,/^imagery_used$/,/^host$/,/^locale$/,/^warnings:/,/^resolved:/,/^closed:note$/,/^closed:keepright$/,/^closed:improveosm:/,/^closed:osmose:/],kM=/(#[^\u2000-\u206F\u2E00-\u2E7F\s\\'!"#$%()*,.\/:;<=>?@\[\]^`{|}~]+)/g;function z8(e){var t=xe("cancel"),r,n,i=B8(e).on("change",d),a=Sl("changeset-tag-editor",e).on("change",d).readOnlyTags(EM),o=$8(e),s=U8(e);function l(m){n=m,e.changeset||u(),c(),m.call(f)}function u(){var m=+Te("commentDate")||0,v=Date.now(),y=2*86400*1e3;(m>v||v-m>y)&&(Te("comment",null),Te("hashtags",null),Te("source",null)),e.defaultChangesetComment()&&(Te("comment",e.defaultChangesetComment()),Te("commentDate",Date.now())),e.defaultChangesetSource()&&(Te("source",e.defaultChangesetSource()),Te("commentDate",Date.now())),e.defaultChangesetHashtags()&&(Te("hashtags",e.defaultChangesetHashtags()),Te("commentDate",Date.now()));var _=br(),w={comment:Te("comment")||"",created_by:e.cleanTagValue("iD "+e.version),host:e.cleanTagValue(_.host),locale:e.cleanTagValue(fe.localeCode())};g(w,!0);var A=Te("hashtags");A&&(w.hashtags=A);var I=Te("source");I&&(w.source=I);var E=e.history().photoOverlaysUsed();if(E.length){var k=(w.source||"").split(";");k.indexOf("streetlevel imagery")===-1&&k.push("streetlevel imagery"),E.forEach(function(S){k.indexOf(S)===-1&&k.push(S)}),w.source=e.cleanTagValue(k.join(";"))}e.changeset=new wa({tags:w})}function c(){var m=e.connection();if(!m)return;var v=Object.assign({},e.changeset.tags),y=e.cleanTagValue(e.history().imageryUsed().join(";"));v.imagery_used=y||"None";var _=m.getClosedIDs(),w;if(_.length&&(v["closed:note"]=e.cleanTagValue(_.join(";"))),de.keepRight){var A=de.keepRight.getClosedIDs();A.length&&(v["closed:keepright"]=e.cleanTagValue(A.join(";")))}if(de.improveOSM){var I=de.improveOSM.getClosedCounts();for(w in I)v["closed:improveosm:"+w]=e.cleanTagValue(I[w].toString())}if(de.osmose){var E=de.osmose.getClosedCounts();for(w in E)v["closed:osmose:"+w]=e.cleanTagValue(E[w].toString())}for(var k in v)k.match(/(^warnings:)|(^resolved:)/)&&delete v[k];function S(O,T){var M=Ir(O,"type");for(var R in M){var N=M[R];if(N[0].subtype){var U=Ir(N,"subtype");for(var B in U){var $=U[B];v[T+":"+R+":"+B]=e.cleanTagValue($.length.toString())}}else v[T+":"+R]=e.cleanTagValue(N.length.toString())}}var D=e.validator().getIssuesBySeverity({what:"edited",where:"all",includeIgnored:!0,includeDisabledRules:!0}).warning.filter(function(O){return O.type!=="help_request"});S(D,"warnings");var P=e.validator().getResolvedIssues();S(P,"resolved"),e.changeset=e.changeset.update({tags:v})}function f(m){var v=e.connection();if(!v)return;var y=m.selectAll(".header").data([0]),_=y.enter().append("div").attr("class","header fillL");_.append("div").append("h2").call(F.append("commit.title")),_.append("button").attr("class","close").attr("title",F("icons.close")).on("click",function(){t.call("cancel",this)}).call(ce("#iD-icon-close"));var w=m.selectAll(".body").data([0]);w=w.enter().append("div").attr("class","body").merge(w);var A=w.selectAll(".changeset-editor").data([0]);A=A.enter().append("div").attr("class","modal-section changeset-editor").merge(A),A.call(i.changesetID(e.changeset.id).tags(e.changeset.tags)),w.call(s);var I=w.selectAll(".save-section").data([0]);I=I.enter().append("div").attr("class","modal-section save-section fillL").merge(I);var E=I.selectAll(".commit-info").data([0]);E.enter().size()&&(r=null),E=E.enter().append("p").attr("class","commit-info").call(F.append("commit.upload_explanation")).merge(E),v.userDetails(function(z,V){if(!z&&r!==V){r=V;var H=G(document.createElement("div"));V.image_url&&H.append("img").attr("src",V.image_url).attr("class","icon pre-text user-icon"),H.append("a").attr("class","user-info").text(V.display_name).attr("href",v.userURL(V.display_name)).attr("target","_blank"),E.html(F.html("commit.upload_explanation_with_user",{user:{html:H.html()}}))}});var k=I.selectAll(".request-review").data([0]),S=k.enter().append("div").attr("class","request-review"),D=Qn("commit-input-request-review"),P=S.append("label").attr("for",D);P.empty()||P.call(Ye().title(()=>F.append("commit.request_review_info")).placement("top")),P.append("input").attr("type","checkbox").attr("id",D),P.append("span").call(F.append("commit.request_review")),k=k.merge(S);var O=k.selectAll("input").property("checked",x(e.changeset.tags)).on("change",$),T=I.selectAll(".buttons").data([0]),M=T.enter().append("div").attr("class","buttons fillL");M.append("button").attr("class","secondary-action button cancel-button").append("span").attr("class","label").call(F.append("commit.cancel"));var R=M.append("button").attr("class","action button save-button");R.append("span").attr("class","label").call(F.append("commit.save"));var N=p();T=T.merge(M),T.selectAll(".cancel-button").on("click.cancel",function(){t.call("cancel",this)}),T.selectAll(".save-button").classed("disabled",N!==null).on("click.save",function(){if(!G(this).classed("disabled")){this.blur();for(var z in e.changeset.tags)z||delete e.changeset.tags[z];e.uploader().save(e.changeset)}}),Ye().destroyAny(T.selectAll(".save-button")),N&&T.selectAll(".save-button").call(Ye().title(()=>N).placement("top"));var U=w.selectAll(".tag-section.raw-tag-editor").data([0]);U=U.enter().append("div").attr("class","modal-section tag-section raw-tag-editor").merge(U),U.call(a.tags(Object.assign({},e.changeset.tags)).render);var B=w.selectAll(".commit-changes-section").data([0]);B=B.enter().append("div").attr("class","modal-section commit-changes-section").merge(B),B.call(o.render);function $(){var z=O.property("checked");b({review_requested:z?"yes":void 0}),U.call(a.tags(Object.assign({},e.changeset.tags)).render)}}function p(){var m=e.validator().getIssuesBySeverity({what:"edited",where:"all"}).error;if(m.length)return F.append("commit.outstanding_errors_message",{count:m.length});var v=e.changeset&&e.changeset.tags.comment&&e.changeset.tags.comment.trim().length;return v?null:F.append("commit.comment_needed_message")}function d(m,v,y){v.hasOwnProperty("comment")&&(v.comment===void 0&&(v.comment=""),y||(Te("comment",v.comment),Te("commentDate",Date.now()))),v.hasOwnProperty("source")&&(v.source===void 0?Te("source",null):y||(Te("source",v.source),Te("commentDate",Date.now()))),b(v,y),n&&n.call(f)}function g(m,v){var y=w();y.length&&Te("hashtags",null),(!y.length||!v)&&(y=y.concat(A()));var _=new Set;return y.filter(function(I){var E=I.toLowerCase();return _.has(E)?!1:(_.add(E),!0)});function w(){var I=(m.comment||"").replace(/http\S*/g,"").match(kM);return I||[]}function A(){var I=(m.hashtags||"").split(/[,;\s]+/).map(function(E){E[0]!=="#"&&(E="#"+E);var k=E.match(kM);return k&&k[0]}).filter(Boolean);return I||[]}}function x(m){var v=m.review_requested;return v===void 0?!1:(v=v.trim().toLowerCase(),!(v===""||v==="no"))}function b(m,v){var y=Object.assign({},e.changeset.tags);if(Object.keys(m).forEach(function(E){var k=m[E];E=e.cleanTagKey(E),EM.indexOf(E)===-1&&(k===void 0?delete y[E]:v?y[E]=k:y[E]=e.cleanTagValue(k))}),!v){var _=m.hasOwnProperty("comment")&&m.comment!=="",w=g(y,_);w.length?(y.hashtags=e.cleanTagValue(w.join(";")),Te("hashtags",y.hashtags)):(delete y.hashtags,Te("hashtags",null))}if(r&&r.changesets_count!==void 0){var A=parseInt(r.changesets_count,10)+1;if(y.changesets_count=String(A),A<=100){var I;I=Te("walkthrough_completed"),I&&(y["ideditor:walkthrough_completed"]=I),I=Te("walkthrough_progress"),I&&(y["ideditor:walkthrough_progress"]=I),I=Te("walkthrough_started"),I&&(y["ideditor:walkthrough_started"]=I)}}else delete y.changesets_count;(0,AM.default)(e.changeset.tags,y)||(e.changeset=e.changeset.update({tags:y}))}return l.reset=function(){e.changeset=null},ke(l,t,"on")}function bs(e){var t=Oi(e);t.select(".modal").classed("modal-alert",!0);var r=t.select(".content");r.append("div").attr("class","modal-section header"),r.append("div").attr("class","modal-section message-text");var n=r.append("div").attr("class","modal-section buttons cf");return t.okButton=function(){return n.append("button").attr("class","button ok-button action").on("click.confirm",function(){t.remove()}).call(F.append("confirm.okay")).node().focus(),t},t}function q8(e){var t=xe("cancel","save"),r=at("conflicts"),n,i,a;function o(){G(document).call(r.on("\u238B",u,!0))}function s(){G(document).call(r.unbind)}function l(){s(),t.call("save")}function u(){s(),t.call("cancel")}function c(x){o();var b=x.selectAll(".header").data([0]).enter().append("div").attr("class","header fillL");b.append("button").attr("class","fr").attr("title",F("icons.close")).on("click",u).call(ce("#iD-icon-close")),b.append("h2").call(F.append("save.conflict.header"));var m=x.selectAll(".body").data([0]).enter().append("div").attr("class","body fillL"),v=m.append("div").attr("class","conflicts-help").call(F.append("save.conflict.help")),y=new wa;delete y.id;var _=Al.stringify(y.osmChangeJXON(n)),w=new Blob([_],{type:"text/xml;charset=utf-8;"}),A="changes.osc",I=v.selectAll(".download-changes").append("a").attr("class","download-changes");I.attr("href",window.URL.createObjectURL(w)).attr("download",A),I.call(ce("#iD-icon-load","inline")).append("span").call(F.append("save.conflict.download_changes")),m.append("div").attr("class","conflict-container fillL3").call(f,0),m.append("div").attr("class","conflicts-done").attr("opacity",0).style("display","none").call(F.append("save.conflict.done"));var E=m.append("div").attr("class","buttons col12 joined conflicts-buttons");E.append("button").attr("disabled",i.length>1).attr("class","action conflicts-button col6").call(F.append("save.title")).on("click.try_again",l),E.append("button").attr("class","secondary-action conflicts-button col6").call(F.append("confirm.cancel")).on("click.cancel",u)}function f(x,b){b=v2(b,i.length),a=b;var m=G(x.node().parentNode);b===i.length-1&&window.setTimeout(function(){m.select(".conflicts-button").attr("disabled",null),m.select(".conflicts-done").transition().attr("opacity",1).style("display","block")},250);var v=x.selectAll(".conflict").data([i[b]]);v.exit().remove();var y=v.enter().append("div").attr("class","conflict");y.append("h4").attr("class","conflict-count").call(F.append("save.conflict.count",{num:b+1,total:i.length})),y.append("a").attr("class","conflict-description").attr("href","#").text(function(w){return w.name}).on("click",function(w,A){w.preventDefault(),g(A.id)});var _=y.append("div").attr("class","conflict-detail-container");_.append("ul").attr("class","conflict-detail-list").selectAll("li").data(function(w){return w.details||[]}).enter().append("li").attr("class","conflict-detail-item").html(function(w){return w}),_.append("div").attr("class","conflict-choices").call(p),_.append("div").attr("class","conflict-nav-buttons joined cf").selectAll("button").data(["previous","next"]).enter().append("button").attr("class","conflict-nav-button action col6").attr("disabled",function(w,A){return A===0&&b===0||A===1&&b===i.length-1||null}).on("click",function(w,A){w.preventDefault();var I=m.selectAll(".conflict-container"),E=A==="previous"?-1:1;I.selectAll(".conflict").remove(),I.call(f,b+E)}).each(function(w){F.append("save.conflict."+w)(G(this))})}function p(x){var b=x.append("ul").attr("class","layer-list").selectAll("li").data(function(y){return y.choices||[]}),m=b.enter().append("li").attr("class","layer"),v=m.append("label");v.append("input").attr("type","radio").attr("name",function(y){return y.id}).on("change",function(y,_){var w=this.parentNode.parentNode.parentNode;w.__data__.chosen=_.id,d(y,w,_)}),v.append("span").text(function(y){return y.text}),m.merge(b).each(function(y){var _=this.parentNode;_.__data__.chosen===y.id&&d(null,_,y)})}function d(x,b,m){x&&x.preventDefault(),G(b).selectAll("li").classed("active",function(_){return _===m}).selectAll("input").property("checked",function(_){return _===m});var v=Pe(),y;y=e.graph().hasEntity(m.id),y&&v._extend(y.extent(e.graph())),m.action(),y=e.graph().hasEntity(m.id),y&&v._extend(y.extent(e.graph())),g(m.id,v)}function g(x,b){e.surface().selectAll(".hover").classed("hover",!1);var m=e.graph().hasEntity(x);m&&(b?e.map().trimmedExtent(b):e.map().zoomToEase(m),e.surface().selectAll(e1([m.id],e.graph())).classed("hover",!0))}return c.conflictList=function(x){return arguments.length?(i=x,c):i},c.origChanges=function(x){return arguments.length?(n=x,c):n},c.shownEntityIds=function(){return i&&typeof a=="number"?[i[a].id]:[]},ke(c,t,"on")}var Wy=xt(Za());function V8(e){var t=Te("entity-issues.reference.expanded"),r=t===null?!0:t==="true",n=[],i=[],a,o=Nt("entity-issues",e).shouldDisplay(function(){return i.length>0}).label(function(){return F.append("inspector.title_count",{title:F("issues.list_title"),count:i.length})}).disclosureContent(u);e.validator().on("validated.entity_issues",function(){s(),o.reRender()}).on("focusedIssue.entity_issues",function(c){l(c.id)});function s(){i=e.validator().getSharedEntityIssues(n,{includeDisabledRules:!0})}function l(c){a=c,o.selection().selectAll(".issue-container").classed("active",function(f){return f.id===a})}function u(c){c.classed("grouped-items-area",!0),a=i.length>0?i[0].id:null;var f=c.selectAll(".issue-container").data(i,function(w){return w.key});f.exit().remove();var p=f.enter().append("div").attr("class","issue-container"),d=p.append("div").attr("class",function(w){return"issue severity-"+w.severity}).on("mouseover.highlight",function(w,A){var I=A.entityIds.filter(function(E){return n.indexOf(E)===-1});Ct(I,!0,e)}).on("mouseout.highlight",function(w,A){var I=A.entityIds.filter(function(E){return n.indexOf(E)===-1});Ct(I,!1,e)}),g=d.append("div").attr("class","issue-label"),x=g.append("button").attr("class","issue-text").on("click",function(w,A){l(A.id);var I=A.extent(e.graph());if(I){var E=Math.max(e.map().zoom(),19);e.map().unobscuredCenterZoomEase(I.center(),E)}});x.each(function(w){var A="#iD-icon-"+(w.severity==="warning"?"alert":"error");G(this).call(ce(A,"issue-icon"))}),x.append("span").attr("class","issue-message");var b=g.append("button").attr("class","issue-info-button").attr("title",F("icons.information")).call(ce("#iD-icon-inspect"));b.on("click",function(w){w.stopPropagation(),w.preventDefault(),this.blur();var A=G(this.parentNode.parentNode.parentNode),I=A.selectAll(".issue-info"),E=I.classed("expanded");r=!E,Te("entity-issues.reference.expanded",r),E?I.transition().duration(200).style("max-height","0px").style("opacity","0").on("end",function(){I.classed("expanded",!1)}):I.classed("expanded",!0).transition().duration(200).style("max-height","200px").style("opacity","1").on("end",function(){I.style("max-height",null)})}),d.append("ul").attr("class","issue-fix-list"),p.append("div").attr("class","issue-info"+(r?" expanded":"")).style("max-height",r?null:"0").style("opacity",r?"1":"0").each(function(w){typeof w.reference=="function"?G(this).call(w.reference):G(this).call(F.append("inspector.no_documentation_key"))}),f=f.merge(p).classed("active",function(w){return w.id===a}),f.selectAll(".issue-message").text("").each(function(w){return w.message(e)(G(this))});var m=f.selectAll(".issue-fix-list"),v=m.selectAll(".issue-fix-item").data(function(w){return w.fixes?w.fixes(e):[]},function(w){return w.id});v.exit().remove();var y=v.enter().append("li").attr("class","issue-fix-item"),_=y.append("button").on("click",function(w,A){G(this).attr("disabled")||!A.onClick||A.issue.dateLastRanFix&&new Date-A.issue.dateLastRanFix<1e3||(A.issue.dateLastRanFix=new Date,Ct(A.issue.entityIds.concat(A.entityIds),!1,e),new Promise(function(I,E){A.onClick(e,I,E),A.onClick.length<=1&&I()}).then(function(){e.validator().validate()}))}).on("mouseover.highlight",function(w,A){Ct(A.entityIds,!0,e)}).on("mouseout.highlight",function(w,A){Ct(A.entityIds,!1,e)});_.each(function(w){var A=w.icon||"iD-icon-wrench";A.startsWith("maki")&&(A+="-15"),G(this).call(ce("#"+A,"fix-icon"))}),_.append("span").attr("class","fix-message").each(function(w){return w.title(G(this))}),y.merge(v).selectAll("button").classed("actionable",function(w){return w.onClick}).attr("disabled",function(w){return w.onClick?null:"true"}).attr("title",function(w){return w.disabledReason?w.disabledReason:null})}return o.entityIDs=function(c){return arguments.length?((!n||!c||!kn(n,c))&&(n=c,a=null,s()),o):n},o}function G0(){let e,t;function r(g){g.each(d)}function n(g,x){return g.isFallback&&g.isFallback()?x==="vertex"?"":"iD-icon-"+g.id:g.icon?g.icon:x==="line"?"iD-other-line":x==="vertex"?"temaki-vertex":"maki-marker-stroked"}function i(g,x){let b=g.selectAll(".preset-icon-point-border").data(x?[0]:[]);b.exit().remove();let m=b.enter(),v=40,y=40;m.append("svg").attr("class","preset-icon-fill preset-icon-point-border").attr("width",v).attr("height",y).attr("viewBox",`0 0 ${v} ${y}`).append("path").attr("transform","translate(11.5, 8)").attr("d","M 17,8 C 17,13 11,21 8.5,23.5 C 6,21 0,13 0,8 C 0,4 4,-0.5 8.5,-0.5 C 13,-0.5 17,4 17,8 z"),b=m.merge(b)}function a(g,x){let b=g.selectAll(".preset-icon-category-border").data(x?[0]:[]);b.exit().remove();let m=b.enter(),v=60;m.append("svg").attr("class","preset-icon-fill preset-icon-category-border").attr("width",v).attr("height",v).attr("viewBox",`0 0 ${v} ${v}`).append("path").attr("class","area").attr("d","M9.5,7.5 L25.5,7.5 L28.5,12.5 L49.5,12.5 C51.709139,12.5 53.5,14.290861 53.5,16.5 L53.5,43.5 C53.5,45.709139 51.709139,47.5 49.5,47.5 L10.5,47.5 C8.290861,47.5 6.5,45.709139 6.5,43.5 L6.5,12.5 L9.5,7.5 Z"),b=m.merge(b),x&&b.selectAll("path").attr("class",`area ${x.id}`)}function o(g,x){let b=g.selectAll(".preset-icon-fill-vertex").data(x?[0]:[]);b.exit().remove();let m=b.enter(),v=60,y=60;m.append("svg").attr("class","preset-icon-fill preset-icon-fill-vertex").attr("width",v).attr("height",y).attr("viewBox",`0 0 ${v} ${y}`).append("circle").attr("cx",v/2).attr("cy",y/2).attr("r",40/2),b=m.merge(b)}function s(g,x,b){let m=g.selectAll(".preset-icon-fill-area").data(x?[0]:[]);m.exit().remove();let v=m.enter(),y=60,_=y,w=y,A=y*2/3,I=(_-A)/2,E=I+A;v=v.append("svg").attr("class","preset-icon-fill preset-icon-fill-area").attr("width",_).attr("height",w).attr("viewBox",`0 0 ${_} ${w}`),["fill","stroke"].forEach(D=>{v.append("path").attr("d",`M${I} ${I} L${I} ${E} L${E} ${E} L${E} ${I} Z`).attr("class",`area ${D}`)});let k=2.5;[[I,I],[I,E],[E,E],[E,I]].forEach(D=>{v.append("circle").attr("class","vertex").attr("cx",D[0]).attr("cy",D[1]).attr("r",k)});let S=1.25;[[I,_/2],[E,_/2],[w/2,I],[w/2,E]].forEach(D=>{v.append("circle").attr("class","midpoint").attr("cx",D[0]).attr("cy",D[1]).attr("r",S)}),m=v.merge(m),m.selectAll("path.stroke").attr("class",`area stroke ${b}`),m.selectAll("path.fill").attr("class",`area fill ${b}`)}function l(g,x,b){let m=g.selectAll(".preset-icon-line").data(x?[0]:[]);m.exit().remove();let v=m.enter(),y=60,_=y,w=y,A=Math.round(y*.72),I=Math.round(y*.6),E=2.5,k=(_-I)/2,S=k+I;v=v.append("svg").attr("class","preset-icon-line").attr("width",_).attr("height",w).attr("viewBox",`0 0 ${_} ${w}`),["casing","stroke"].forEach(D=>{v.append("path").attr("d",`M${k} ${A} L${S} ${A}`).attr("class",`line ${D}`)}),[[k-1,A],[S+1,A]].forEach(D=>{v.append("circle").attr("class","vertex").attr("cx",D[0]).attr("cy",D[1]).attr("r",E)}),m=v.merge(m),m.selectAll("path.stroke").attr("class",`line stroke ${b}`),m.selectAll("path.casing").attr("class",`line casing ${b}`)}function u(g,x,b){let m=g.selectAll(".preset-icon-route").data(x?[0]:[]);m.exit().remove();let v=m.enter(),y=60,_=y,w=y,A=Math.round(y*.8),I=Math.round(y*.68),E=Math.round(y*.6),k=2,S=(_-E)/2,D=S+E/3,P=D+E/3,O=P+E/3;if(v=v.append("svg").attr("class","preset-icon-route").attr("width",_).attr("height",w).attr("viewBox",`0 0 ${_} ${w}`),["casing","stroke"].forEach(T=>{v.append("path").attr("d",`M${S} ${A} L${D} ${I}`).attr("class",`segment0 line ${T}`),v.append("path").attr("d",`M${D} ${I} L${P} ${A}`).attr("class",`segment1 line ${T}`),v.append("path").attr("d",`M${P} ${A} L${O} ${I}`).attr("class",`segment2 line ${T}`)}),[[S,A],[D,I],[P,A],[O,I]].forEach(T=>{v.append("circle").attr("class","vertex").attr("cx",T[0]).attr("cy",T[1]).attr("r",k)}),m=v.merge(m),x){let T=b.tags.type==="waterway"?"waterway":b.tags.route,M=p[T];for(let R in M){let N=$e.item(M[R]),U=ra().getClassesString(N.tags,"");m.selectAll(`path.stroke.segment${R}`).attr("class",`segment${R} line stroke ${U}`),m.selectAll(`path.casing.segment${R}`).attr("class",`segment${R} line casing ${U}`)}}}function c(g,x,b,m,v,y){let _=x&&/^maki-/.test(x),w=x&&/^temaki-/.test(x),A=x&&/^fa[srb]-/.test(x),I=x&&/^roentgen-/.test(x),E=x&&!(_||w||A||I),k=g.selectAll(".preset-icon").data(x?[0]:[]);k.exit().remove(),k=k.enter().append("div").attr("class","preset-icon").call(ce("")).merge(k),k.attr("class","preset-icon "+(b?b+"-geom":"")).classed("category",v).classed("framed",m).classed("preset-icon-iD",E),k.selectAll("svg").attr("class","icon "+x+" "+(!E&&b!=="line"?"":y)),k.selectAll("use").attr("href","#"+x)}function f(g,x){let b=g.selectAll("img.image-icon").data(x?[0]:[]);b.exit().remove(),b=b.enter().append("img").attr("class","image-icon").on("load",()=>g.classed("showing-img",!0)).on("error",()=>g.classed("showing-img",!1)).merge(b),b.attr("src",x)}let p={bicycle:["highway/cycleway","highway/cycleway","highway/cycleway"],bus:["highway/unclassified","highway/secondary","highway/primary"],trolleybus:["highway/unclassified","highway/secondary","highway/primary"],detour:["highway/tertiary","highway/residential","highway/unclassified"],ferry:["route/ferry","route/ferry","route/ferry"],foot:["highway/footway","highway/footway","highway/footway"],hiking:["highway/path","highway/path","highway/path"],horse:["highway/bridleway","highway/bridleway","highway/bridleway"],light_rail:["railway/light_rail","railway/light_rail","railway/light_rail"],monorail:["railway/monorail","railway/monorail","railway/monorail"],mtb:["highway/path","highway/track","highway/bridleway"],pipeline:["man_made/pipeline","man_made/pipeline","man_made/pipeline"],piste:["piste/downhill","piste/hike","piste/nordic"],power:["power/line","power/line","power/line"],road:["highway/secondary","highway/primary","highway/trunk"],subway:["railway/subway","railway/subway","railway/subway"],train:["railway/rail","railway/rail","railway/rail"],tram:["railway/tram","railway/tram","railway/tram"],railway:["railway/rail","railway/rail","railway/rail"],waterway:["waterway/stream","waterway/stream","waterway/stream"]};function d(){let g=e.apply(this,arguments),x=t?t.apply(this,arguments):null;x==="relation"&&g.tags&&(g.tags.type==="route"&&g.tags.route&&p[g.tags.route]||g.tags.type==="waterway")&&(x="route");let b=Te("preferences.privacy.thirdpartyicons")||"true",m=g.isFallback&&g.isFallback(),v=b==="true"&&g.imageURL,y=n(g,x),_=!g.setTags,w=!1,A=y!==null&&x==="vertex",I=y&&x==="line"&&!m&&!_,E=y&&x==="area"&&!m&&!_,k=y&&x==="route",S=A||E||I||k||_,D=_?{}:g.setTags({},x);for(let M in D)D[M]==="*"&&(D[M]="yes");let P=ra().getClassesString(D,""),T=G(this).selectAll(".preset-icon-container").data([0]);T=T.enter().append("div").attr("class","preset-icon-container").merge(T),T.classed("showing-img",!!v).classed("fallback",m),a(T,_&&g),i(T,w),o(T,A),s(T,E,P),l(T,I,P),u(T,k,g),c(T,y,x,S,_,P),f(T,v)}return r.preset=function(g){return arguments.length?(e=zt(g),r):e},r.geometry=function(g){return arguments.length?(t=zt(g),r):t},r}function G8(e){var t=xe("choose"),r=[],n=[],i,a=Nt("feature-type",e).label(()=>F.append("inspector.feature_type")).disclosureContent(o);function o(l){l.classed("preset-list-item",!0),l.classed("mixed-types",n.length>1);var u=l.selectAll(".preset-list-button-wrap").data([0]).enter().append("div").attr("class","preset-list-button-wrap"),c=u.append("button").attr("class","preset-list-button preset-reset").call(Ye().title(()=>F.append("inspector.back_tooltip")).placement("bottom"));c.append("div").attr("class","preset-icon-container"),c.append("div").attr("class","label").append("div").attr("class","label-inner"),u.append("div").attr("class","accessory-buttons");var f=l.selectAll(".tag-reference-body-wrap").data([0]);f=f.enter().append("div").attr("class","tag-reference-body-wrap").merge(f),i&&(l.selectAll(".preset-list-button-wrap .accessory-buttons").style("display",n.length===1?null:"none").call(i.button),f.style("display",n.length===1?null:"none").call(i.body)),l.selectAll(".preset-reset").on("click",function(){t.call("choose",this,n)}).on("pointerdown pointerup mousedown mouseup",function(b){b.preventDefault(),b.stopPropagation()});var p=s();l.select(".preset-list-item button").call(G0().geometry(n.length===1?p.length===1&&p[0]:null).preset(n.length===1?n[0]:$e.item("point")));var d=n.length===1?[n[0].nameLabel(),n[0].subtitleLabel()].filter(Boolean):[F.append("inspector.multiple_types")],g=l.select(".label-inner"),x=g.selectAll(".namepart").data(d,b=>b.stringId);x.exit().remove(),x.enter().append("div").attr("class","namepart").text("").each(function(b){b(G(this))})}a.entityIDs=function(l){return arguments.length?(r=l,a):r},a.presets=function(l){return arguments.length?(kn(l,n)||(n=l,n.length===1&&(i=vs(n[0].reference(),e).showing(!1))),a):n};function s(){var l={};for(var u in r){var c=e.graph().geometry(r[u]);l[c]||(l[c]=0),l[c]+=1}return Object.keys(l).sort(function(f,p){return l[p]-l[f]})}return ke(a,t,"on")}function j8(e){var t=Nt("preset-fields",e).label(()=>F.append("inspector.fields")).disclosureContent(u),r=xe("change","revert"),n=hu(e),i,a,o=[],s,l;function u(c){if(!a){var f=e.graph(),p=Object.keys(l.reduce(function(E,k){return E[f.entity(k).geometry(f)]=!0,E},{}));let w=l.reduce(function(E,k){var S=e.graph().entity(k);return E.extend(S.extent(e.graph()))},Pe()).center();var d=$e,g=[],x=[],b;o.forEach(function(E){var k=E.fields(w),S=E.moreFields(w);g=or(g,k),x=or(x,S),b?b=b.filter(function(D){return k.indexOf(D)!==-1||S.indexOf(D)!==-1}):b=or(k,S)});var m=g.filter(function(E){return b.indexOf(E)!==-1}),v=x.filter(function(E){return b.indexOf(E)!==-1});a=[];let A=["start_date","end_date","source"];A.forEach(E=>{let k=d.field(E);k&&a.push(Vi(e,k,l))});let I=["source:1","source:2","source:3"];I.forEach(E=>{let k=d.field(E);k&&!a.includes(k)&&a.push(Vi(e,k,l,{show:!1}))}),m.forEach(function(E){!A.includes(E.id)&&!I.includes(E.id)&&E.matchAllGeometry(p)&&a.push(Vi(e,E,l))});var y=l.length===1&&f.hasEntity(l[0]);y&&y.isHighwayIntersection(f)&&d.field("restrictions")&&a.push(Vi(e,d.field("restrictions"),l));var _=or(v,d.universal());_.sort(function(E,k){return E.title().localeCompare(k.title(),fe.localeCode())}),_.forEach(function(E){m.indexOf(E)===-1&&!A.includes(E.id)&&!I.includes(E.id)&&E.matchAllGeometry(p)&&a.push(Vi(e,E,l,{show:!1}))}),a.forEach(function(E){E.on("change",function(k,S){r.call("change",E,l,k,S)}).on("revert",function(k){r.call("revert",E,k)})})}a.forEach(function(w){w.state(i).tags(s)}),c.call(n.fieldsArr(a).state(i).klass("grouped-items-area"))}return t.presets=function(c){return arguments.length?((!o||!c||!kn(o,c))&&(o=c,a=null),t):o},t.state=function(c){return arguments.length?(i=c,t):i},t.tags=function(c){return arguments.length?(s=c,t):s},t.entityIDs=function(c){return arguments.length?((!c||!l||!kn(l,c))&&(l=c,a=null),t):l},ke(t,r,"on")}function H8(e){var t=Nt("raw-member-editor",e).shouldDisplay(function(){if(!n||n.length!==1)return!1;var f=e.hasEntity(n[0]);return f&&f.type==="relation"}).label(function(){var f=e.hasEntity(n[0]);if(!f)return"";var p=f.members.length>i?">":"",d=p+f.members.slice(0,i).length;return F.append("inspector.title_count",{title:F("inspector.members"),count:d})}).disclosureContent(c),r=de.taginfo,n,i=1e3;function a(f,p){f.preventDefault(),G(this).classed("loading",!0),e.loadEntity(p.id,function(){t.reRender()})}function o(f,p){f.preventDefault();var d=e.entity(p.id);e.map().zoomToEase(d),Ct([p.id],!0,e)}function s(f,p){f.preventDefault(),Ct([p.id],!1,e);var d=e.entity(p.id),g=e.map().extent();d.intersects(g,e.graph())||e.map().zoomToEase(d),e.enter(rt(e,[p.id]))}function l(f,p){var d=p.role,g=e.cleanRelationRole(G(this).property("value"));if(d!==g){var x={id:p.id,type:p.type,role:g};e.perform(ul(p.relation.id,x,p.index),F("operations.change_role.annotation",{n:1})),e.validator().validate()}}function u(f,p){Ct([p.id],!1,e),e.perform(pl(p.relation.id,p.index),F("operations.delete_member.annotation",{n:1})),e.hasEntity(p.relation.id)?e.validator().validate():e.enter(Ge(e))}function c(f){var p=n[0],d=[],g=e.entity(p);g.members.slice(0,i).forEach(function(I,E){d.push({index:E,id:I.id,type:I.type,role:I.role,relation:g,member:e.hasEntity(I.id),domId:Qn(p+"-member-"+E)})});var x=f.selectAll(".member-list").data([0]);x=x.enter().append("ul").attr("class","member-list").merge(x);var b=x.selectAll("li").data(d,function(I){return qe.key(I.relation)+","+I.index+","+(I.member?qe.key(I.member):"incomplete")});b.exit().each(A).remove();var m=b.enter().append("li").attr("class","member-row form-field").classed("member-incomplete",function(I){return!I.member});m.each(function(I){var E=G(this),k=E.append("label").attr("class","field-label").attr("for",I.domId);if(I.member){E.on("mouseover",function(){Ct([I.id],!0,e)}).on("mouseout",function(){Ct([I.id],!1,e)});var S=k.append("span").attr("class","label-text").append("a").attr("href","#").on("click",s);S.append("span").attr("class","member-entity-type").text(function(P){var O=$e.match(P.member,e.graph());return O&&O.name()||ta(P.member.id)}),S.append("span").attr("class","member-entity-name").classed("has-colour",P=>P.member.type==="relation"&&P.member.tags.colour&&Ko(P.member.tags.colour)).style("border-color",P=>P.member.type==="relation"&&P.member.tags.colour).text(function(P){return kr(P.member)}),k.append("button").attr("title",F("icons.remove")).attr("class","remove member-delete").call(ce("#iD-operation-delete")),k.append("button").attr("class","member-zoom").attr("title",F("icons.zoom_to")).call(ce("#iD-icon-framed-dot","monochrome")).on("click",o)}else{var D=k.append("span").attr("class","label-text");D.append("span").attr("class","member-entity-type").call(F.append("inspector."+I.type,{id:I.id})),D.append("span").attr("class","member-entity-name").call(F.append("inspector.incomplete",{id:I.id})),k.append("button").attr("class","member-download").attr("title",F("icons.download")).call(ce("#iD-icon-load")).on("click",a)}});var v=m.append("div").attr("class","form-field-input-wrap form-field-input-member");v.append("input").attr("class","member-role").attr("id",function(I){return I.domId}).property("type","text").attr("placeholder",F("inspector.role")).call(pt),r&&v.each(w),b=b.merge(m).order(),b.select("input.member-role").property("value",function(I){return I.role}).on("blur",l).on("change",l),b.select("button.member-delete").on("click",u);var y,_;b.call(y3().on("start",function(I){y={x:I.x,y:I.y},_=null}).on("drag",function(I){var E=I.x-y.x,k=I.y-y.y;if(!(!G(this).classed("dragging")&&Math.sqrt(Math.pow(E,2)+Math.pow(k,2))<=5)){var S=b.nodes().indexOf(this);G(this).classed("dragging",!0),_=null,f.selectAll("li.member-row").style("transform",function(D,P){var O=G(this).node();return S===P?"translate("+E+"px, "+k+"px)":P>S&&I.y>O.offsetTop?((_===null||P>_)&&(_=P),"translateY(-100%)"):Pa-i);for(var n in t)r=pl(e,t[n])(r);return r}}function W8(e){var t=Nt("raw-membership-editor",e).shouldDisplay(function(){return a&&a.length}).label(function(){var v=l(),y=v.length>s?">":"",_=y+v.slice(0,s).length;return F.append("inspector.title_count",{title:F("inspector.relations"),count:_})}).disclosureContent(m),r=de.taginfo,n=Ht(e,"parent-relation").minItems(1).fetcher(b).itemsMouseEnter(function(v,y){y.relation&&Ct([y.relation.id],!0,e)}).itemsMouseLeave(function(v,y){y.relation&&Ct([y.relation.id],!1,e)}),i=!1,a=[],o,s=1e3;function l(){for(var v=[],y=0;y1,w,A,I,E,k,S;for(w=0;w{R.append("b").text(T+" "),R.append("span").classed("has-colour",P.tags.colour&&Ko(P.tags.colour)).style("border-color",P.tags.colour).text(M)}}var S=v&&e.hasEntity(v.toLowerCase());if(S&&S.type==="relation"&&S.id!==w)A.push({relation:S,value:E(S)+" "+S.id,display:k(S)});else{e.history().intersects(e.map().extent()).forEach(function(P){if(!(P.type!=="relation"||P.id===w)){var O=E(P);v&&(O+" "+P.id).toLowerCase().indexOf(v.toLowerCase())===-1||A.push({relation:P,value:O,display:k(P)})}}),A.sort(function(P,O){return Cn.creationOrder(P.relation,O.relation)});var D=Object.values(Ir(A,"value")).filter(function(P){return P.length>1});D.forEach(function(P){P.forEach(function(O){O.value+=" "+O.relation.id})})}A.forEach(function(P){P.title=P.value}),A.unshift(_),y(A)}function m(v){var y=u(),_=v.selectAll(".member-list").data([0]);_=_.enter().append("ul").attr("class","member-list").merge(_);var w=_.selectAll("li.member-row-normal").data(y,function(z){return z.hash});w.exit().each($).remove();var A=w.enter().append("li").attr("class","member-row member-row-normal form-field");A.on("mouseover",function(z,V){Ct([V.relation.id],!0,e)}).on("mouseout",function(z,V){Ct([V.relation.id],!1,e)});var I=A.append("label").attr("class","field-label").attr("for",function(z){return z.domId}),E=I.append("span").attr("class","label-text").append("a").attr("href","#").on("click",c);E.append("span").attr("class","member-entity-type").text(function(z){var V=$e.match(z.relation,e.graph());return V&&V.name()||F.html("inspector.relation")}),E.append("span").attr("class","member-entity-name").classed("has-colour",z=>z.relation.tags.colour&&Ko(z.relation.tags.colour)).style("border-color",z=>z.relation.tags.colour).text(function(z){return kr(z.relation)}),I.append("button").attr("class","members-download").attr("title",F("icons.download")).call(ce("#iD-icon-load")).on("click",g),I.append("button").attr("class","remove member-delete").attr("title",F("icons.remove")).call(ce("#iD-operation-delete")).on("click",x),I.append("button").attr("class","member-zoom").attr("title",F("icons.zoom_to")).call(ce("#iD-icon-framed-dot","monochrome")).on("click",f),w=w.merge(A),w.selectAll("button.members-download").classed("hide",z=>{let V=e.graph();return z.relation.members.every(H=>V.hasEntity(H.id))});var k=A.append("div").attr("class","form-field-input-wrap form-field-input-member");k.append("input").attr("class","member-role").attr("id",function(z){return z.domId}).property("type","text").property("value",function(z){return typeof z.role=="string"?z.role:""}).attr("title",function(z){return Array.isArray(z.role)?z.role.filter(Boolean).join(` +`):z.role}).attr("placeholder",function(z){return Array.isArray(z.role)?F("inspector.multiple_roles"):F("inspector.role")}).classed("mixed",function(z){return Array.isArray(z.role)}).call(pt).on("blur",p).on("change",p),r&&k.each(B);var S=_.selectAll(".member-row-new").data(o?[0]:[]);S.exit().remove();var D=S.enter().append("li").attr("class","member-row member-row-new form-field"),P=D.append("label").attr("class","field-label");P.append("input").attr("placeholder",F("inspector.choose_relation")).attr("type","text").attr("class","member-entity-input").call(pt),P.append("button").attr("class","remove member-delete").attr("title",F("icons.remove")).call(ce("#iD-operation-delete")).on("click",function(){_.selectAll(".member-row-new").remove()});var O=D.append("div").attr("class","form-field-input-wrap form-field-input-member");O.append("input").attr("class","member-role").property("type","text").attr("placeholder",F("inspector.role")).call(pt),S=S.merge(D),S.selectAll(".member-entity-input").on("blur",U).call(n.on("accept",N).on("cancel",U));var T=v.selectAll(".add-row").data([0]),M=T.enter().append("div").attr("class","add-row"),R=M.append("button").attr("class","add-relation").attr("aria-label",F("inspector.add_to_relation"));R.call(ce("#iD-icon-plus","light")),R.call(Ye().title(()=>F.append("inspector.add_to_relation")).placement(fe.textDirection()==="ltr"?"right":"left")),M.append("div").attr("class","space-value"),M.append("div").attr("class","space-buttons"),T=T.merge(M),T.select(".add-relation").on("click",function(){o=!0,t.reRender(),_.selectAll(".member-entity-input").node().focus()});function N(z){if(!z){U();return}z.relation&&Ct([z.relation.id],!1,e);var V=e.cleanRelationRole(_.selectAll(".member-row-new .member-role").property("value"));d(z,V)}function U(){var z=S.selectAll(".member-entity-input");z.property("value",""),e.surface().selectAll(".highlighted").classed("highlighted",!1)}function B(z){var V=G(this),H=V.selectAll("input.member-role"),Z=H.property("value");function oe(pe,ne){for(var ge=[],ve=[],Oe=0;Oe1}).label(function(){return F.append("inspector.title_count",{title:F("inspector.features"),count:t.length})}).disclosureContent(a);e.history().on("change.selectionList",function(o){o&&r.reRender()}),r.entityIDs=function(o){return arguments.length?(t=o,r):t};function n(o,s){e.enter(rt(e,[s.id]))}function i(o,s){var l=t.slice(),u=l.indexOf(s.id);u>-1&&(l.splice(u,1),e.enter(rt(e,l)))}function a(o){var s=o.selectAll(".feature-list").data([0]);s=s.enter().append("ul").attr("class","feature-list").merge(s);var l=t.map(function(p){return e.hasEntity(p)}).filter(Boolean),u=s.selectAll(".feature-list-item").data(l,qe.key);u.exit().remove();var c=u.enter().append("li").attr("class","feature-list-item").each(function(p){G(this).on("mouseover",function(){Ct([p.id],!0,e)}).on("mouseout",function(){Ct([p.id],!1,e)})}),f=c.append("button").attr("class","label").on("click",n);f.append("span").attr("class","entity-geom-icon").call(ce("","pre-text")),f.append("span").attr("class","entity-type"),f.append("span").attr("class","entity-name"),c.append("button").attr("class","close").attr("title",F("icons.deselect")).on("click",i).call(ce("#iD-icon-close")),u=u.merge(c),u.selectAll(".entity-geom-icon use").attr("href",function(){var p=this.parentNode.parentNode.__data__;return"#iD-icon-"+p.geometry(e.graph())}),u.selectAll(".entity-type").text(function(p){return $e.match(p,e.graph()).name()}),u.selectAll(".entity-name").text(function(p){var d=e.entity(p.id);return kr(d)})}return r}function X8(e){var t=xe("choose"),r="select",n=!1,i=!1,a,o,s=[],l,u;function c(g){var x=N7(o,e.graph()),b=g.selectAll(".header").data([0]),m=b.enter().append("div").attr("class","header fillL"),v=fe.textDirection()==="rtl"?"forward":"backward";m.append("button").attr("class","preset-reset preset-choose").attr("title",F("inspector.back_tooltip")).call(ce(`#iD-icon-${v}`)),m.append("button").attr("class","close").attr("title",F("icons.close")).on("click",function(){e.enter(Ge(e))}).call(ce(i?"#iD-icon-apply":"#iD-icon-close")),m.append("h2"),b=b.merge(m),b.selectAll("h2").text("").call(o.length===1?F.append("inspector.edit"):F.append("inspector.edit_features")),b.selectAll(".preset-reset").on("click",function(){t.call("choose",this,s)});var y=g.selectAll(".inspector-body").data([0]),_=y.enter().append("div").attr("class","entity-editor inspector-body sep-top");y=y.merge(_),u||(u=[Q8(e),G8(e).on("choose",function(A){t.call("choose",this,A)}),V8(e),j8(e).on("change",f).on("revert",p),Sl("raw-tag-editor",e).on("change",f),H8(e),W8(e)]),u.forEach(function(A){A.entityIDs&&A.entityIDs(o),A.presets&&A.presets(s),A.tags&&A.tags(x),A.state&&A.state(r),y.call(A.render)}),e.history().on("change.entity-editor",w);function w(A){if(!g.selectAll(".entity-editor").empty()&&r!=="hide"){var I=!A||A.didChange.properties||A.didChange.addition||A.didChange.deletion;if(I&&(o=o.filter(e.hasEntity),!!o.length)){var E=s.length===1&&s[0];d();var k=e.graph();c.modified(a!==k),c(g),E&&s.length===1&&E!==s[0]&&e.container().selectAll(".entity-editor button.preset-reset .label").style("background-color","#fff").transition().duration(750).style("background-color",null)}}}}function f(g,x,b){var m=[];for(var v in g){var y=g[v],_=e.entity(y),w=Object.assign({},_.tags);if(typeof x=="function")w=x(w);else for(var A in x)if(A){var I=x[A];typeof I=="object"?w[A]=w[I.oldKey]:(I!==void 0||w.hasOwnProperty(A))&&(w[A]=I)}b||(w=o5(w)),(0,Wy.default)(_.tags,w)||m.push(sr(y,w))}if(m.length){var E=function(S){return m.forEach(function(D){S=D(S)}),S},k=F("operations.change_tags.annotation");n?e.overwrite(E,k):(e.perform(E,k),n=!!b)}b||e.validator().validate()}function p(g){var x=[];for(var b in o){var m=o[b],v=e.graph().base().entities[m],y={};for(var _ in g){var w=g[_];y[w]=v?v.tags[w]:void 0}var A=e.entity(m),I=Object.assign({},A.tags);for(var E in y)if(E){var k=y[E];(k!==void 0||I.hasOwnProperty(E))&&(I[E]=k)}I=o5(I),(0,Wy.default)(A.tags,I)||x.push(sr(m,I))}if(x.length){var S=function(P){return x.forEach(function(O){P=O(P)}),P},D=F("operations.change_tags.annotation");n?e.overwrite(S,D):(e.perform(S,D),n=!1)}e.validator().validate()}c.modified=function(g){return arguments.length?(i=g,c):i},c.state=function(g){return arguments.length?(r=g,c):r},c.entityIDs=function(g){return arguments.length?(a=e.graph(),n=!1,g&&o&&kn(o,g)?c:(o=g,d(!0),c.modified(!1))):o},c.newFeature=function(g){return arguments.length?(l=g,c):l};function d(g){var x=e.graph(),b={};for(var m in o){var v=x.hasEntity(o[m]);if(!v)return;var y=$e.match(v,x);b[y.id]||(b[y.id]=0),b[y.id]+=1}var _=Object.keys(b).sort(function(A,I){return b[I]-b[A]}).map(function(A){return $e.item(A)});if(!g){var w=s.length===1&&!s[0].isFallback()&&Object.keys(s[0].addTags||{}).length===0;if(w&&_.length===1&&_[0].isFallback())return}c.presets(_)}return c.presets=function(g){return arguments.length?(kn(g,s)||(s=g),c):s},ke(c,t,"on")}var NM=xt(IM());function vu(e,t,r,n){var i={button:n,id:"draw-area"},a=q2(e,t,i,r).on("rejectedSelfIntersection.modeDrawArea",function(){e.ui().flash.iconName("#iD-icon-no").label(F.append("self_intersection.error.areas"))()});return i.wayID=t,i.enter=function(){e.install(a)},i.exit=function(){e.uninstall(a)},i.selectedIDs=function(){return[t]},i.activeID=function(){return a&&a.activeID()||[]},i}function Y8(e,t){t.id="add-area";var r=yu(e).on("start",a).on("startFromWay",o).on("startFromNode",s);function n(l){var u={area:"yes"};return t.preset&&(u=t.preset.setTags(u,"area",!1,l)),u}function i(l){return function(u){return u.replace(u.entity(l).close())}}function a(l){var u=e.graph(),c=Yt({loc:l}),f=Or({tags:n(l)});e.perform(Vn(c),Vn(f),Ya(f.id,c.id),i(f.id)),e.enter(vu(e,f.id,u,t.button))}function o(l,u){var c=e.graph(),f=Yt({loc:l}),p=Or({tags:n(l)});e.perform(Vn(f),Vn(p),Ya(p.id,f.id),i(p.id),nn({loc:l,edge:u},f)),e.enter(vu(e,p.id,c,t.button))}function s(l){var u=e.graph(),c=Or({tags:n(l.loc)});e.perform(Vn(c),Ya(c.id,l.id),i(c.id)),e.enter(vu(e,c.id,u,t.button))}return t.enter=function(){e.install(r)},t.exit=function(){e.uninstall(r)},t}function K8(e,t){t.id="add-line";var r=yu(e).on("start",i).on("startFromWay",a).on("startFromNode",o);function n(s){var l={};return t.preset&&(l=t.preset.setTags(l,"line",!1,s)),l}function i(s){var l=e.graph(),u=Yt({loc:s}),c=Or({tags:n(s)});e.perform(Vn(u),Vn(c),Ya(c.id,u.id)),e.enter(ro(e,c.id,l,t.button))}function a(s,l){var u=e.graph(),c=Yt({loc:s}),f=Or({tags:n(s)});e.perform(Vn(c),Vn(f),Ya(f.id,c.id),nn({loc:s,edge:l},c)),e.enter(ro(e,f.id,u,t.button))}function o(s){var l=e.graph(),u=Or({tags:n(s.loc)});e.perform(Vn(u),Ya(u.id,s.id)),e.enter(ro(e,u.id,l,t.button))}return t.enter=function(){e.install(r)},t.exit=function(){e.uninstall(r)},t}function Z8(e,t){t.id="add-point";var r=us(e).on("click",i).on("clickWay",a).on("clickNode",s).on("cancel",l).on("finish",l);function n(u){var c={};return t.preset&&(c=t.preset.setTags(c,"point",!1,u)),c}function i(u){var c=Yt({loc:u,tags:n(u)});e.perform(Vn(c),F("operations.add.annotation.point")),o(c)}function a(u,c){var f=Yt({tags:n(u)});e.perform(nn({loc:u,edge:c},f),F("operations.add.annotation.vertex")),o(f)}function o(u){e.enter(rt(e,[u.id]).newFeature(!0))}function s(u){let c=n(u.loc);if(Object.keys(c).length===0){o(u);return}var f=Object.assign({},u.tags);for(var p in c)f[p]=c[p];e.perform(sr(u.id,f),F("operations.add.annotation.point")),o(u)}function l(){e.enter(Ge(e))}return t.enter=function(){e.install(r)},t.exit=function(){e.uninstall(r)},t}function J8(){var e;function t(i){if(!e.isNew()){var a=i.selectAll(".comments-container").data([0]);a=a.enter().append("div").attr("class","comments-container").merge(a);var o=a.selectAll(".comment").data(e.comments).enter().append("div").attr("class","comment");o.append("div").attr("class",function(u){return"comment-avatar user-"+u.uid}).call(ce("#iD-icon-avatar","comment-avatar-icon"));var s=o.append("div").attr("class","comment-main"),l=s.append("div").attr("class","comment-metadata");l.append("div").attr("class","comment-author").each(function(u){var c=G(this),f=de.osm;f&&u.user&&(c=c.append("a").attr("class","comment-author-link").attr("href",f.userURL(u.user)).attr("target","_blank")),u.user?c.text(u.user):c.call(F.append("note.anonymous"))}),l.append("div").attr("class","comment-date").html(function(u){return F.html("note.status."+u.action,{when:n(u.date)})}),s.append("div").attr("class","comment-text").html(function(u){return u.html}).selectAll("a").attr("rel","noopener nofollow").attr("target","_blank"),a.call(r)}}function r(i){var a=Te("preferences.privacy.thirdpartyicons")||"true",o=de.osm;if(!(a!=="true"||!o)){var s={};e.comments.forEach(function(l){l.uid&&(s[l.uid]=!0)}),Object.keys(s).forEach(function(l){o.loadUser(l,function(u,c){!c||!c.image_url||i.selectAll(".comment-avatar.user-"+l).html("").append("img").attr("class","icon comment-avatar-icon").attr("src",c.image_url).attr("alt",c.display_name)})})}}function n(i){if(!i)return null;var a={day:"numeric",month:"short",year:"numeric"};i=i.replace(/-/g,"/");var o=new Date(i);return isNaN(o.getTime())?null:o.toLocaleDateString(fe.localeCode(),a)}return t.note=function(i){return arguments.length?(e=i,t):e},t}function ep(){var e;function t(r){var n=r.selectAll(".note-header").data(e?[e]:[],function(o){return o.status+o.id});n.exit().remove();var i=n.enter().append("div").attr("class","note-header"),a=i.append("div").attr("class",function(o){return"note-header-icon "+o.status}).classed("new",function(o){return o.id<0});a.append("div").attr("class","preset-icon-28").call(ce("#iD-icon-note","note-fill")),a.each(function(o){var s;o.id<0?s="#iD-icon-plus":o.status==="open"?s="#iD-icon-close":s="#iD-icon-apply",a.append("div").attr("class","note-icon-annotation").attr("title",F("icons.close")).call(ce(s,"icon-annotation"))}),i.append("div").attr("class","note-header-label").html(function(o){return e.isNew()?F.html("note.new"):F.html("note.note")+" "+o.id+" "+(o.status==="closed"?F.html("note.closed"):"")})}return t.note=function(r){return arguments.length?(e=r,t):e},t}function tp(){var e;function t(r){var n;de.osm&&e instanceof Nr&&!e.isNew()&&(n=de.osm.noteReportURL(e));var i=r.selectAll(".note-report").data(n?[n]:[]);i.exit().remove();var a=i.enter().append("a").attr("class","note-report").attr("target","_blank").attr("href",function(o){return o}).call(ce("#iD-icon-out-link","inline"));a.append("span").call(F.append("note.report"))}return t.note=function(r){return arguments.length?(e=r,t):e},t}function bu(e){var t;function r(n){var i;t instanceof qe?i=e.connection().entityURL(t):t instanceof Nr&&(i=e.connection().noteURL(t));var a=!t||t.isNew()?[]:[t],o=n.selectAll(".view-on-osm").data(a,function(l){return l.id});o.exit().remove();var s=o.enter().append("a").attr("class","view-on-osm").attr("target","_blank").attr("href",i).call(ce("#iD-icon-out-link","inline"));s.append("span").call(F.append("inspector.view_on_osm"))}return r.what=function(n){return arguments.length?(t=n,r):t},r}function xu(e){var t=xe("change"),r=J8(e),n=ep(),i,a;function o(g){var x=g.selectAll(".header").data([0]),b=x.enter().append("div").attr("class","header fillL");b.append("button").attr("class","close").attr("title",F("icons.close")).on("click",function(){e.enter(Ge(e))}).call(ce("#iD-icon-close")),b.append("h2").call(F.append("note.title"));var m=g.selectAll(".body").data([0]);m=m.enter().append("div").attr("class","body").merge(m);var v=m.selectAll(".note-editor").data([0]);v.enter().append("div").attr("class","modal-section note-editor").merge(v).call(n.note(i)).call(r.note(i)).call(s);var y=g.selectAll(".footer").data([0]);y.enter().append("div").attr("class","footer").merge(y).call(bu(e).what(i)).call(tp(e).note(i));var _=de.osm;_&&_.on("change.note-save",function(){g.call(o)})}function s(g){var x=i&&i.id===e.selectedNoteID(),b=g.selectAll(".note-save").data(x?[i]:[],function(w){return w.status+w.id});b.exit().remove();var m=b.enter().append("div").attr("class","note-save save-section cf");m.append("h4").attr("class",".note-save-header").html(function(){return i.isNew()?F.html("note.newDescription"):F.html("note.newComment")});var v=m.append("textarea").attr("class","new-comment-input").attr("placeholder",F("note.inputPlaceholder")).attr("maxlength",1e3).property("value",function(w){return w.newComment}).call(pt).on("keydown.note-input",y).on("input.note-input",_).on("blur.note-input",_);!v.empty()&&a&&v.node().focus(),b=m.merge(b).call(l).call(u);function y(w){if(w.keyCode===13&&w.metaKey){var A=de.osm;if(A){var I=A.authenticated();I&&i.newComment&&(w.preventDefault(),G(this).on("keydown.note-input",null),window.setTimeout(function(){i.isNew()?(b.selectAll(".save-button").node().focus(),f(i)):(b.selectAll(".comment-button").node().focus(),d(i))},10))}}}function _(){var w=G(this),A=w.property("value").trim()||void 0;i=i.update({newComment:A});var I=de.osm;I&&I.replaceNote(i),b.call(u)}}function l(g){var x=g.selectAll(".detail-section").data([0]);x=x.enter().append("div").attr("class","detail-section").merge(x);var b=de.osm;if(b){var m=b.authenticated(),v=x.selectAll(".auth-warning").data(m?[]:[0]);v.exit().transition().duration(200).style("opacity",0).remove();var y=v.enter().insert("div",".tag-reference-body").attr("class","field-warning auth-warning").style("opacity",0);y.call(ce("#iD-icon-alert","inline")),y.append("span").call(F.append("note.login")),y.append("a").attr("target","_blank").call(ce("#iD-icon-out-link","inline")).append("span").call(F.append("login")).on("click.note-login",function(w){w.preventDefault(),b.authenticate()}),y.transition().duration(200).style("opacity",1);var _=x.selectAll(".note-save-prose").data(m?[0]:[]);_.exit().remove(),_=_.enter().append("p").attr("class","note-save-prose").call(F.append("note.upload_explanation")).merge(_),b.userDetails(function(w,A){if(!w){var I=G(document.createElement("div"));A.image_url&&I.append("img").attr("src",A.image_url).attr("class","icon pre-text user-icon"),I.append("a").attr("class","user-info").text(A.display_name).attr("href",b.userURL(A.display_name)).attr("target","_blank"),_.html(F.html("note.upload_explanation_with_user",{user:{html:I.html()}}))}})}}function u(g){var x=de.osm,b=x&&x.authenticated(),m=i&&i.id===e.selectedNoteID(),v=g.selectAll(".buttons").data(m?[i]:[],function(w){return w.status+w.id});v.exit().remove();var y=v.enter().append("div").attr("class","buttons");i.isNew()?(y.append("button").attr("class","button cancel-button secondary-action").call(F.append("confirm.cancel")),y.append("button").attr("class","button save-button action").call(F.append("note.save"))):(y.append("button").attr("class","button status-button action"),y.append("button").attr("class","button comment-button action").call(F.append("note.comment"))),v=v.merge(y),v.select(".cancel-button").on("click.cancel",c),v.select(".save-button").attr("disabled",_).on("click.save",f),v.select(".status-button").attr("disabled",b?null:!0).html(function(w){var A=w.status==="open"?"close":"open",I=w.newComment?"_comment":"";return F.html("note."+A+I)}).on("click.status",p),v.select(".comment-button").attr("disabled",_).on("click.comment",d);function _(w){return b&&w.status==="open"&&w.newComment?null:!0}}function c(g,x){this.blur();var b=de.osm;b&&b.removeNote(x),e.enter(Ge(e)),t.call("change")}function f(g,x){this.blur();var b=de.osm;b&&b.postNoteCreate(x,function(m,v){t.call("change",v)})}function p(g,x){this.blur();var b=de.osm;if(b){var m=x.status==="open"?"closed":"open";b.postNoteUpdate(x,m,function(v,y){t.call("change",y)})}}function d(g,x){this.blur();var b=de.osm;b&&b.postNoteUpdate(x,x.status,function(m,v){t.call("change",v)})}return o.note=function(g){return arguments.length?(i=g,o):i},o.newNote=function(g){return arguments.length?(a=g,o):a},ke(o,t,"on")}function xs(e,t){var r={id:"select-note",button:"browse"},n=at("select-note"),i=xu(e).on("change",function(){e.map().pan([0,0]);var c=s();c&&e.ui().sidebar.show(i.note(c))}),a=[eo(e),pi(e),so(e),lo(e),to(e).behavior,oo(e).behavior],o=!1;function s(){if(de.osm){var c=de.osm.getNote(t);return c||e.enter(Ge(e)),c}}function l(c,f){if(s()){var p=e.surface().selectAll(".layer-notes .note-"+t);if(p.empty()){var d=c&&c.type==="zoom"&&c.sourceEvent;f&&d&&(d.type==="pointermove"||d.type==="mousemove"||d.type==="touchmove")&&e.enter(Ge(e))}else p.classed("selected",!0),e.selectedNoteID(t)}}function u(){e.container().select(".combobox").size()||e.enter(Ge(e))}return r.zoomToSelected=function(){if(de.osm){var c=de.osm.getNote(t);c&&e.map().centerZoomEase(c.loc,20)}},r.newFeature=function(c){return arguments.length?(o=c,r):o},r.enter=function(){var c=s();if(c){a.forEach(e.install),n.on(F("inspector.zoom_to.key"),r.zoomToSelected).on("\u238B",u,!0),G(document).call(n),l();var f=e.ui().sidebar;f.show(i.note(c).newNote(o)),f.expand(f.intersects(c.extent())),e.map().on("drawn.select",l)}},r.exit=function(){a.forEach(e.uninstall),G(document).call(n.unbind),e.surface().selectAll(".layer-notes .selected").classed("selected hover",!1),e.map().on("drawn.select",null),e.ui().sidebar.hide(),e.selectedNoteID(null)},r}function rp(e){var t={id:"add-note",button:"note",description:F.append("modes.add_note.description"),key:F("modes.add_note.key")},r=us(e).on("click",n).on("cancel",i).on("finish",i);function n(a){var o=de.osm;if(o){var s=Nr({loc:a,status:"open",comments:[]});o.replaceNote(s),e.map().pan([0,0]),e.selectedNoteID(s.id).enter(xs(e,s.id).newFeature(!0))}}function i(){e.enter(Ge(e))}return t.enter=function(){e.install(r)},t.exit=function(){e.uninstall(r)},t}var FM=xt(Sf(),1);function Yy(e){return typeof e!="string"?"":FM.default.remove(e.replace(/&/g,"and").replace(/(İ|i̇)/ig,"i").replace(/[\s\-=_!"#%'*{},.\/:;?\(\)\[\]@\\$\^*+<>«»~`’\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2000-\u206f\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e7f\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\ufeff\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g,"").toLowerCase())}function Ky(e,t,r){let n=Object.assign({},e.strings),i=Object.assign({},t[e.type]),a=new RegExp(/(\{\w+\})/,"gi");if(r){if(n.community){let c=Yy(n.community);n.community=r(`_communities.${c}`)}["name","description","extendedDescription"].forEach(c=>{i[c]&&(i[c]=r(`_defaults.${e.type}.${c}`)),n[c]&&(n[c]=r(`${e.id}.${c}`))})}let o={account:e.account,community:n.community,signupUrl:n.signupUrl,url:n.url};o.signupUrl||(o.signupUrl=l(n.signupUrl||i.signupUrl)),o.url||(o.url=l(n.url||i.url));let s={name:l(n.name||i.name),url:l(n.url||i.url),signupUrl:l(n.signupUrl||i.signupUrl),description:l(n.description||i.description),extendedDescription:l(n.extendedDescription||i.extendedDescription)};return s.nameHTML=u(s.url,s.name),s.urlHTML=u(s.url),s.signupUrlHTML=u(s.signupUrl),s.descriptionHTML=l(n.description||i.description,!0),s.extendedDescriptionHTML=l(n.extendedDescription||i.extendedDescription,!0),s;function l(c,f){if(!c)return;let p=c;for(let g in o){let x=`{${g}}`,b=new RegExp(x,"g");if(b.test(p)){let m=o[g];if(m)f&&(g==="signupUrl"||g==="url")&&(m=u(m)),p=p.replace(b,m);else throw new Error(`Cannot resolve token: ${x}`)}}let d=p.match(a);if(d)throw new Error(`Cannot resolve tokens: ${d}`);return f&&e.type==="reddit"&&(p=p.replace(/(\/r\/\w+\/*)/i,g=>u(s.url,g))),p}function u(c,f){if(c)return f=f||c,`${f}`}}var wu=null;function np(e){let r=xe("cancel"),n,i;a();function a(){let c=dt;return Promise.all([c.get("oci_features"),c.get("oci_resources"),c.get("oci_defaults")]).then(f=>{if(wu)return wu;f[0]&&Array.isArray(f[0].features)&&An.mergeCustomGeoJSON(f[0]);let p=f[1].resources;delete p["OSM-Facebook"],delete p["OSM-Twitter"],delete p["OSM-Mastodon"],delete p["OSM-help"],p["OSM-IRC"]&&(p["OSM-IRC"].account="ohm",p["OSM-IRC"].strings.community="OpenHistoricalMap",p["OSM-IRC"].strings.communityID="openhistoricalmap");let d=Object.values(p);return d.length?(d=d.filter(g=>g.type!=="discourse"),d.push({id:"forum",type:"discourse",locationSet:{include:["001"]},order:7,strings:{name:"OpenHistoricalMap Forum",description:"A shared place for conversations about OpenHistoricalMap",url:"https://forum.openhistoricalmap.org/"}}),An.mergeLocationSets(d).then(()=>(wu={resources:d,defaults:f[2].defaults},wu))):(wu={resources:[],defaults:f[2].defaults},wu)})}function o(c){if(!c)return;let f=c.trim();if(!f)return;/Z$/.test(f)||(f+="Z");let p=new Date(f);return new Date(p.toUTCString().slice(0,25))}function s(c){let f=c.append("div").attr("class","header fillL");f.append("h2").call(F.append("success.just_edited")),f.append("button").attr("class","close").attr("title",F("icons.close")).on("click",()=>r.call("cancel")).call(ce("#iD-icon-close"));let p=c.append("div").attr("class","body save-success fillL"),d=p.append("div").attr("class","save-summary");d.append("h3").call(F.append("success.thank_you"+(i?"_location":""),{where:i})),d.append("p").call(F.append("success.help_html")).append("a").attr("class","link-out").attr("target","_blank").attr("href",F("success.help_link_url")).call(ce("#iD-icon-out-link","inline")).append("span").call(F.append("success.help_link_text"));let g=e.connection();if(!g)return;let x=g.changesetURL(n.id),b=d.append("table").attr("class","summary-table"),m=b.append("tr").attr("class","summary-row");m.append("td").attr("class","cell-icon summary-icon").append("a").attr("target","_blank").attr("href",x).append("svg").attr("class","logo-small").append("use").attr("xlink:href","#iD-logo-osm");let v=m.append("td").attr("class","cell-detail summary-detail");if(v.append("a").attr("class","cell-detail summary-view-on-osm").attr("target","_blank").attr("href",x).call(F.append("success.view_on_osm")),v.append("div").html(F.html("success.changeset_id",{changeset_id:{html:`${n.id}`}})),qA!==!1){let y="https://openstreetmap.app.neoncrm.com/forms/ohm",_=p.append("div").attr("class","save-supporting");_.append("h3").call(F.append("success.supporting.title")),_.append("p").call(F.append("success.supporting.details")),b=_.append("table").attr("class","supporting-table"),m=b.append("tr").attr("class","supporting-row"),m.append("td").attr("class","cell-icon supporting-icon").append("a").attr("target","_blank").attr("href",y).append("svg").attr("class","logo-small").append("use").attr("xlink:href","#iD-donation");let w=m.append("td").attr("class","cell-detail supporting-detail");w.append("a").attr("class","cell-detail support-the-map").attr("target","_blank").attr("href",y).call(F.append("success.supporting.donation.title")),w.append("div").call(F.append("success.supporting.donation.details"))}a().then(y=>{let _=e.map().center(),w=An.locationSetsAt(_),A=[];y.resources.forEach(I=>{let E=w[I.locationSetID];if(!E)return;I.id==="forum"&&(E=0);let k=S=>F.html(fe.coalesceStringIds([`custom_community.${S}`,`community.${S}`]));I.resolved=Ky(I,y.defaults,k),A.push({area:E,order:I.order||0,resource:I})}),A.sort((I,E)=>I.area-E.area||E.order-I.order),p.call(l,A.map(I=>I.resource))})}function l(c,f){let p=c.append("div").attr("class","save-communityLinks");p.append("h3").call(F.append("success.like_osm"));let x=p.append("table").attr("class","community-table").selectAll(".community-row").data(f).enter().append("tr").attr("class","community-row");x.append("td").attr("class","cell-icon community-icon").append("a").attr("target","_blank").attr("href",m=>m.resolved.url).append("svg").attr("class","logo-small").append("use").attr("xlink:href",m=>`#community-${m.type}`),x.append("td").attr("class","cell-detail community-detail").each(u),p.append("div").attr("class","community-missing").call(F.append("success.missing")).append("a").attr("class","link-out").attr("target","_blank").call(ce("#iD-icon-out-link","inline")).attr("href","https://github.com/osmlab/osm-community-index/issues").append("span").call(F.append("success.tell_us"))}function u(c){let f=G(this),p=c.id;f.append("div").attr("class","community-name").html(c.resolved.nameHTML),f.append("div").attr("class","community-description").html(c.resolved.descriptionHTML),(c.resolved.extendedDescriptionHTML||c.languageCodes&&c.languageCodes.length)&&f.append("div").call(q0(e,`community-more-${c.id}`,!1).expanded(!1).updatePreference(!1).label(()=>F.append("success.more")).content(g));let d=(c.events||[]).map(b=>(b.date=o(b.when),b)).filter(b=>{let m=b.date.getTime(),v=new Date().setHours(0,0,0,0);return!isNaN(m)&&m>=v}).sort((b,m)=>b.datem.date?1:0).slice(0,2);d.length&&f.append("div").call(q0(e,`community-events-${c.id}`,!1).expanded(!1).updatePreference(!1).label(F.html("success.events")).content(x)).select(".hide-toggle").append("span").attr("class","badge-text").text(d.length);function g(b){let v=b.selectAll(".community-more").data([0]).enter().append("div").attr("class","community-more");if(c.resolved.extendedDescriptionHTML&&v.append("div").attr("class","community-extended-description").html(c.resolved.extendedDescriptionHTML),c.languageCodes&&c.languageCodes.length){let y=c.languageCodes.map(_=>fe.languageName(_)).join(", ");v.append("div").attr("class","community-languages").call(F.append("success.languages",{languages:y}))}}function x(b){let y=b.append("div").attr("class","community-events").selectAll(".community-event").data(d).enter().append("div").attr("class","community-event");y.append("div").attr("class","community-event-name").append("a").attr("target","_blank").attr("href",_=>_.url).text(_=>{let w=_.name;return _.i18n&&_.id&&(w=F(`community.${p}.events.${_.id}.name`,{default:w})),w}),y.append("div").attr("class","community-event-when").text(_=>{let w={weekday:"short",day:"numeric",month:"short",year:"numeric"};return(_.date.getHours()||_.date.getMinutes())&&(w.hour="numeric",w.minute="numeric"),_.date.toLocaleString(fe.localeCode(),w)}),y.append("div").attr("class","community-event-where").text(_=>{let w=_.where;return _.i18n&&_.id&&(w=F(`community.${p}.events.${_.id}.where`,{default:w})),w}),y.append("div").attr("class","community-event-description").text(_=>{let w=_.description;return _.i18n&&_.id&&(w=F(`community.${p}.events.${_.id}.description`,{default:w})),w})}}return s.changeset=function(c){return arguments.length?(n=c,s):n},s.location=function(c){return arguments.length?(i=c,s):i},ke(s,r,"on")}function ip(e){var t={id:"save"},r=at("modeSave"),n=z8(e).on("cancel",l),i,a,o,s=e.uploader().on("saveStarted.modeSave",function(){x()}).on("willAttemptUpload.modeSave",b).on("progressChanged.modeSave",u).on("resultNoChanges.modeSave",function(){l()}).on("resultErrors.modeSave",f).on("resultConflicts.modeSave",c).on("resultSuccess.modeSave",d);function l(){e.enter(Ge(e))}function u(m,v){var y=e.container().select(".loading-modal .modal-section"),_=y.selectAll(".progress").data([0]);_.enter().append("div").attr("class","progress").merge(_).text(F("save.conflict_progress",{num:m,total:v}))}function c(m,v,y){var _=e.container().select(".sidebar").append("div").attr("class","sidebar-component");e.container().selectAll(".main-content").classed("active",!0).classed("inactive",!1),i=q8(e).conflictList(v).origChanges(y).on("cancel",function(){e.container().selectAll(".main-content").classed("active",!1).classed("inactive",!0),_.remove(),g(),s.cancelConflictResolution()}).on("save",function(){e.container().selectAll(".main-content").classed("active",!1).classed("inactive",!0),_.remove(),s.processResolvedConflicts(m)}),_.call(i)}function f(m){g();var v=bs(e.container());v.select(".modal-section.header").append("h3").text(F("save.error")),p(v,m),v.okButton()}function p(m,v){var y=m.select(".modal-section.message-text"),_=y.selectAll(".error-container").data(v),w=_.enter().append("div").attr("class","error-container");w.append("a").attr("class","error-description").attr("href","#").classed("hide-toggle",!0).text(function(I){return I.msg||F("save.unknown_error_details")}).on("click",function(I){I.preventDefault();var E=G(this),k=G(this.nextElementSibling),S=E.classed("expanded");k.style("display",S?"none":"block"),E.classed("expanded",!S)});var A=w.append("div").attr("class","error-detail-container").style("display","none");A.append("ul").attr("class","error-detail-list").selectAll("li").data(function(I){return I.details||[]}).enter().append("li").attr("class","error-detail-item").text(function(I){return I}),_.exit().remove()}function d(m){n.reset();var v=o.changeset(m).location(a).on("cancel",function(){e.ui().sidebar.hide()});e.enter(Ge(e).sidebar(v))}function g(){G(document).call(r.on("\u238B",l,!0))}function x(){G(document).call(r.unbind)}function b(){o=np(e),a=null,de.geocoder&&de.geocoder.reverse(e.map().center(),function(m,v){if(!(m||!v||!v.address)){var y=v.address,_=y&&(y.town||y.city||y.county)||"",w=y&&(y.state||y.country)||"",A=_&&w?F("success.thank_you_where.separator"):"";a=F("success.thank_you_where.format",{place:_,separator:A,region:w})}})}return t.selectedIDs=function(){return i?i.shownEntityIds():[]},t.enter=function(){e.ui().sidebar.expand();function m(){e.ui().sidebar.show(n)}g(),e.container().selectAll(".main-content").classed("active",!1).classed("inactive",!0);var v=e.connection();if(!v){l();return}v.authenticated()?m():v.authenticate(function(y){y?l():m()})},t.exit=function(){x(),e.container().selectAll(".main-content").classed("active",!0).classed("inactive",!1),e.ui().sidebar.hide()},t}function ap(){let e;function t(n){let i=n.selectAll(".comments-container").data([0]);i=i.enter().append("div").attr("class","comments-container").merge(i),de.improveOSM.getComments(e).then(a=>{if(!a.comments)return;let o=i.selectAll(".comment").data(a.comments).enter().append("div").attr("class","comment");o.append("div").attr("class","comment-avatar").call(ce("#iD-icon-avatar","comment-avatar-icon"));let s=o.append("div").attr("class","comment-main"),l=s.append("div").attr("class","comment-metadata");l.append("div").attr("class","comment-author").each(function(u){let c=de.osm,f=G(this);c&&u.username&&(f=f.append("a").attr("class","comment-author-link").attr("href",c.userURL(u.username)).attr("target","_blank")),f.text(p=>p.username)}),l.append("div").attr("class","comment-date").html(u=>F.html("note.status.commented",{when:r(u.timestamp)})),s.append("div").attr("class","comment-text").append("p").text(u=>u.text)}).catch(a=>{console.log(a)})}function r(n){if(!n)return null;let i={day:"numeric",month:"short",year:"numeric"},a=new Date(n*1e3);return isNaN(a.getTime())?null:a.toLocaleDateString(fe.localeCode(),i)}return t.issue=function(n){return arguments.length?(e=n,t):e},t}function op(e){let t;function r(i){if(i.desc)return i.desc;let a=i.issueKey;return i.replacements=i.replacements||{},i.replacements.default={html:F.html("inspector.unknown")},F.html(`QA.improveOSM.error_types.${a}.description`,i.replacements)}function n(i){let a=i.selectAll(".error-details").data(t?[t]:[],u=>`${u.id}-${u.status||0}`);a.exit().remove();let s=a.enter().append("div").attr("class","error-details qa-details-container").append("div").attr("class","qa-details-subsection");s.append("h4").call(F.append("QA.keepRight.detail_description")),s.append("div").attr("class","qa-details-description-text").html(r);let l=[];s.selectAll(".error_entity_link, .error_object_link").attr("href","#").each(function(){let u=G(this),c=u.classed("error_object_link"),f=c?h2(t.objectType)+t.objectId:this.textContent,p=e.hasEntity(f);if(l.push(f),u.on("mouseenter",()=>{Ct([f],!0,e)}).on("mouseleave",()=>{Ct([f],!1,e)}).on("click",d=>{d.preventDefault(),Ct([f],!1,e);let g=e.layers().layer("osm");g.enabled()||g.enabled(!0),e.map().centerZoom(t.loc,20),p?e.enter(rt(e,[f])):e.loadEntity(f,(x,b)=>{if(x)return;b.data.find(v=>v.id===f)&&e.enter(rt(e,[f]))})}),p){let d=kr(p);if(!d&&!c){let g=$e.match(p,e.graph());d=g&&!g.isFallback()&&g.name()}d&&(this.innerText=d)}}),e.features().forceVisible(l),e.map().pan([0,0])}return n.issue=function(i){return arguments.length?(t=i,n):t},n}function sp(){let e;function t(n){let i=n.issueKey;return n.replacements=n.replacements||{},n.replacements.default={html:F.html("inspector.unknown")},F.html(`QA.improveOSM.error_types.${i}.title`,n.replacements)}function r(n){let i=n.selectAll(".qa-header").data(e?[e]:[],s=>`${s.id}-${s.status||0}`);i.exit().remove();let a=i.enter().append("div").attr("class","qa-header"),o=a.append("div").attr("class","qa-header-icon").classed("new",s=>s.id<0).append("svg").attr("width","20px").attr("height","30px").attr("viewbox","0 0 20 30").attr("class",s=>`preset-icon-28 qaItem ${s.service} itemId-${s.id} itemType-${s.itemType}`);o.append("polygon").attr("fill","currentColor").attr("class","qaItem-fill").attr("points","16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6"),o.append("use").attr("class","icon-annotation").attr("width","12px").attr("height","12px").attr("transform","translate(4, 5.5)").attr("xlink:href",s=>s.icon?"#"+s.icon:""),a.append("div").attr("class","qa-header-label").html(t)}return r.issue=function(n){return arguments.length?(e=n,r):e},r}function _u(e){let t=xe("change"),r=op(e),n=ap(e),i=sp(e),a;function o(u){let c=u.selectAll(".header").data([0]).enter().append("div").attr("class","header fillL");c.append("button").attr("class","close").attr("title",F("icons.close")).on("click",()=>e.enter(Ge(e))).call(ce("#iD-icon-close")),c.append("h2").call(F.append("QA.improveOSM.title"));let f=u.selectAll(".body").data([0]);f=f.enter().append("div").attr("class","body").merge(f);let p=f.selectAll(".qa-editor").data([0]);p.enter().append("div").attr("class","modal-section qa-editor").merge(p).call(i.issue(a)).call(r.issue(a)).call(n.issue(a)).call(s)}function s(u){let c=a&&a.id===e.selectedErrorID(),f=a&&(c||a.newComment||a.comment),p=u.selectAll(".qa-save").data(f?[a]:[],x=>`${x.id}-${x.status||0}`);p.exit().remove();let d=p.enter().append("div").attr("class","qa-save save-section cf");d.append("h4").attr("class",".qa-save-header").call(F.append("note.newComment")),d.append("textarea").attr("class","new-comment-input").attr("placeholder",F("QA.keepRight.comment_placeholder")).attr("maxlength",1e3).property("value",x=>x.newComment).call(pt).on("input",g).on("blur",g),p=d.merge(p).call(l);function g(){let b=G(this).property("value").trim();b===""&&(b=void 0),a=a.update({newComment:b});let m=de.improveOSM;m&&m.replaceItem(a),p.call(l)}}function l(u){let c=a&&a.id===e.selectedErrorID(),f=u.selectAll(".buttons").data(c?[a]:[],d=>d.status+d.id);f.exit().remove();let p=f.enter().append("div").attr("class","buttons");p.append("button").attr("class","button comment-button action").call(F.append("QA.keepRight.save_comment")),p.append("button").attr("class","button close-button action"),p.append("button").attr("class","button ignore-button action"),f=f.merge(p),f.select(".comment-button").attr("disabled",d=>d.newComment?null:!0).on("click.comment",function(d,g){this.blur();let x=de.improveOSM;x&&x.postUpdate(g,(b,m)=>t.call("change",m))}),f.select(".close-button").html(d=>{let g=d.newComment?"_comment":"";return F.html(`QA.keepRight.close${g}`)}).on("click.close",function(d,g){this.blur();let x=de.improveOSM;x&&(g.newStatus="SOLVED",x.postUpdate(g,(b,m)=>t.call("change",m)))}),f.select(".ignore-button").html(d=>{let g=d.newComment?"_comment":"";return F.html(`QA.keepRight.ignore${g}`)}).on("click.ignore",function(d,g){this.blur();let x=de.improveOSM;x&&(g.newStatus="INVALID",x.postUpdate(g,(b,m)=>t.call("change",m)))})}return o.error=function(u){return arguments.length?(a=u,o):a},ke(o,t,"on")}function lp(e){let t;function r(i){let{itemType:a,parentIssueType:o}=i,s={html:F.html("inspector.unknown")},l=i.replacements||{};return l.default=s,fe.hasTextForStringId(`QA.keepRight.errorTypes.${a}.title`)?F.html(`QA.keepRight.errorTypes.${a}.description`,l):F.html(`QA.keepRight.errorTypes.${o}.description`,l)}function n(i){let a=i.selectAll(".error-details").data(t?[t]:[],u=>`${u.id}-${u.status||0}`);a.exit().remove();let s=a.enter().append("div").attr("class","error-details qa-details-container").append("div").attr("class","qa-details-subsection");s.append("h4").call(F.append("QA.keepRight.detail_description")),s.append("div").attr("class","qa-details-description-text").html(r);let l=[];s.selectAll(".error_entity_link, .error_object_link").attr("href","#").each(function(){let u=G(this),c=u.classed("error_object_link"),f=c?h2(t.objectType)+t.objectId:this.textContent,p=e.hasEntity(f);if(l.push(f),u.on("mouseenter",()=>{Ct([f],!0,e)}).on("mouseleave",()=>{Ct([f],!1,e)}).on("click",d=>{d.preventDefault(),Ct([f],!1,e);let g=e.layers().layer("osm");g.enabled()||g.enabled(!0),e.map().centerZoomEase(t.loc,20),p?e.enter(rt(e,[f])):e.loadEntity(f,(x,b)=>{if(x)return;b.data.find(v=>v.id===f)&&e.enter(rt(e,[f]))})}),p){let d=kr(p);if(!d&&!c){let g=$e.match(p,e.graph());d=g&&!g.isFallback()&&g.name()}d&&(this.innerText=d)}}),e.features().forceVisible(l),e.map().pan([0,0])}return n.issue=function(i){return arguments.length?(t=i,n):t},n}function up(){let e;function t(n){let{itemType:i,parentIssueType:a}=n,o=F.html("inspector.unknown"),s=n.replacements||{};return s.default={html:o},fe.hasTextForStringId(`QA.keepRight.errorTypes.${i}.title`)?F.html(`QA.keepRight.errorTypes.${i}.title`,s):F.html(`QA.keepRight.errorTypes.${a}.title`,s)}function r(n){let i=n.selectAll(".qa-header").data(e?[e]:[],s=>`${s.id}-${s.status||0}`);i.exit().remove();let a=i.enter().append("div").attr("class","qa-header");a.append("div").attr("class","qa-header-icon").classed("new",s=>s.id<0).append("div").attr("class",s=>`preset-icon-28 qaItem ${s.service} itemId-${s.id} itemType-${s.parentIssueType}`).call(ce("#iD-icon-bolt","qaItem-fill")),a.append("div").attr("class","qa-header-label").html(t)}return r.issue=function(n){return arguments.length?(e=n,r):e},r}function cp(){let e;function t(r){let n;de.keepRight&&e instanceof Fr&&(n=de.keepRight.issueURL(e));let i=r.selectAll(".view-on-keepRight").data(n?[n]:[]);i.exit().remove(),i.enter().append("a").attr("class","view-on-keepRight").attr("target","_blank").attr("rel","noopener").attr("href",o=>o).call(ce("#iD-icon-out-link","inline")).append("span").call(F.append("inspector.view_on_keepRight"))}return t.what=function(r){return arguments.length?(e=r,t):e},t}function Eu(e){let t=xe("change"),r=lp(e),n=up(e),i;function a(l){let u=l.selectAll(".header").data([0]).enter().append("div").attr("class","header fillL");u.append("button").attr("class","close").attr("title",F("icons.close")).on("click",()=>e.enter(Ge(e))).call(ce("#iD-icon-close")),u.append("h2").call(F.append("QA.keepRight.title"));let c=l.selectAll(".body").data([0]);c=c.enter().append("div").attr("class","body").merge(c);let f=c.selectAll(".qa-editor").data([0]);f.enter().append("div").attr("class","modal-section qa-editor").merge(f).call(n.issue(i)).call(r.issue(i)).call(o);let p=l.selectAll(".footer").data([0]);p.enter().append("div").attr("class","footer").merge(p).call(cp(e).what(i))}function o(l){let u=i&&i.id===e.selectedErrorID(),c=i&&(u||i.newComment||i.comment),f=l.selectAll(".qa-save").data(c?[i]:[],g=>`${g.id}-${g.status||0}`);f.exit().remove();let p=f.enter().append("div").attr("class","qa-save save-section cf");p.append("h4").attr("class",".qa-save-header").call(F.append("QA.keepRight.comment")),p.append("textarea").attr("class","new-comment-input").attr("placeholder",F("QA.keepRight.comment_placeholder")).attr("maxlength",1e3).property("value",g=>g.newComment||g.comment).call(pt).on("input",d).on("blur",d),f=p.merge(f).call(s);function d(){let x=G(this).property("value").trim();x===i.comment&&(x=void 0),i=i.update({newComment:x});let b=de.keepRight;b&&b.replaceItem(i),f.call(s)}}function s(l){let u=i&&i.id===e.selectedErrorID(),c=l.selectAll(".buttons").data(u?[i]:[],p=>p.status+p.id);c.exit().remove();let f=c.enter().append("div").attr("class","buttons");f.append("button").attr("class","button comment-button action").call(F.append("QA.keepRight.save_comment")),f.append("button").attr("class","button close-button action"),f.append("button").attr("class","button ignore-button action"),c=c.merge(f),c.select(".comment-button").attr("disabled",p=>p.newComment?null:!0).on("click.comment",function(p,d){this.blur();let g=de.keepRight;g&&g.postUpdate(d,(x,b)=>t.call("change",b))}),c.select(".close-button").html(p=>{let d=p.newComment?"_comment":"";return F.html(`QA.keepRight.close${d}`)}).on("click.close",function(p,d){this.blur();let g=de.keepRight;g&&(d.newStatus="ignore_t",g.postUpdate(d,(x,b)=>t.call("change",b)))}),c.select(".ignore-button").html(p=>{let d=p.newComment?"_comment":"";return F.html(`QA.keepRight.ignore${d}`)}).on("click.ignore",function(p,d){this.blur();let g=de.keepRight;g&&(d.newStatus="ignore",g.postUpdate(d,(x,b)=>t.call("change",b)))})}return a.error=function(l){return arguments.length?(i=l,a):i},ke(a,t,"on")}function DM(e){let t;function r(i,a){if(!i)return"";let o=de.osmose.getStrings(i.itemType);return a in o?o[a]:""}function n(i){let a=i.selectAll(".error-details").data(t?[t]:[],c=>`${c.id}-${c.status||0}`);a.exit().remove();let o=a.enter().append("div").attr("class","error-details qa-details-container");if(r(t,"detail")){let c=o.append("div").attr("class","qa-details-subsection");c.append("h4").call(F.append("QA.keepRight.detail_description")),c.append("p").attr("class","qa-details-description-text").html(f=>r(f,"detail")).selectAll("a").attr("rel","noopener").attr("target","_blank")}let s=o.append("div").attr("class","qa-details-subsection"),l=o.append("div").attr("class","qa-details-subsection");if(r(t,"fix")){let c=o.append("div").attr("class","qa-details-subsection");c.append("h4").call(F.append("QA.osmose.fix_title")),c.append("p").html(f=>r(f,"fix")).selectAll("a").attr("rel","noopener").attr("target","_blank")}if(r(t,"trap")){let c=o.append("div").attr("class","qa-details-subsection");c.append("h4").call(F.append("QA.osmose.trap_title")),c.append("p").html(f=>r(f,"trap")).selectAll("a").attr("rel","noopener").attr("target","_blank")}let u=t;de.osmose.loadIssueDetail(t).then(c=>{!c.elems||c.elems.length===0||e.selectedErrorID()!==u.id&&e.container().selectAll(`.qaItem.osmose.hover.itemId-${u.id}`).empty()||(c.detail&&(s.append("h4").call(F.append("QA.osmose.detail_title")),s.append("p").html(f=>f.detail).selectAll("a").attr("rel","noopener").attr("target","_blank")),l.append("h4").call(F.append("QA.osmose.elems_title")),l.append("ul").selectAll("li").data(c.elems).enter().append("li").append("a").attr("href","#").attr("class","error_entity_link").text(f=>f).each(function(){let f=G(this),p=this.textContent,d=e.hasEntity(p);if(f.on("mouseenter",()=>{Ct([p],!0,e)}).on("mouseleave",()=>{Ct([p],!1,e)}).on("click",g=>{g.preventDefault(),Ct([p],!1,e);let x=e.layers().layer("osm");x.enabled()||x.enabled(!0),e.map().centerZoom(c.loc,20),d?e.enter(rt(e,[p])):e.loadEntity(p,(b,m)=>{if(b)return;m.data.find(y=>y.id===p)&&e.enter(rt(e,[p]))})}),d){let g=kr(d);if(!g){let x=$e.match(d,e.graph());g=x&&!x.isFallback()&&x.name()}g&&(this.innerText=g)}}),e.features().forceVisible(c.elems),e.map().pan([0,0]))}).catch(c=>{console.log(c)})}return n.issue=function(i){return arguments.length?(t=i,n):t},n}function TM(){let e;function t(n){let i=F("inspector.unknown");if(!n)return i;let a=de.osmose.getStrings(n.itemType);return"title"in a?a.title:i}function r(n){let i=n.selectAll(".qa-header").data(e?[e]:[],s=>`${s.id}-${s.status||0}`);i.exit().remove();let a=i.enter().append("div").attr("class","qa-header"),o=a.append("div").attr("class","qa-header-icon").classed("new",s=>s.id<0).append("svg").attr("width","20px").attr("height","30px").attr("viewbox","0 0 20 30").attr("class",s=>`preset-icon-28 qaItem ${s.service} itemId-${s.id} itemType-${s.itemType}`);o.append("polygon").attr("fill",s=>de.osmose.getColor(s.item)).attr("class","qaItem-fill").attr("points","16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6"),o.append("use").attr("class","icon-annotation").attr("width","12px").attr("height","12px").attr("transform","translate(4, 5.5)").attr("xlink:href",s=>s.icon?"#"+s.icon:""),a.append("div").attr("class","qa-header-label").text(t)}return r.issue=function(n){return arguments.length?(e=n,r):e},r}function MM(){let e;function t(r){let n;de.osmose&&e instanceof Fr&&(n=de.osmose.itemURL(e));let i=r.selectAll(".view-on-osmose").data(n?[n]:[]);i.exit().remove(),i.enter().append("a").attr("class","view-on-osmose").attr("target","_blank").attr("rel","noopener").attr("href",o=>o).call(ce("#iD-icon-out-link","inline")).append("span").call(F.append("inspector.view_on_osmose"))}return t.what=function(r){return arguments.length?(e=r,t):e},t}function fp(e){let t=xe("change"),r=DM(e),n=TM(e),i;function a(l){let c=l.selectAll(".header").data([0]).enter().append("div").attr("class","header fillL");c.append("button").attr("class","close").attr("title",F("icons.close")).on("click",()=>e.enter(Ge(e))).call(ce("#iD-icon-close")),c.append("h2").call(F.append("QA.osmose.title"));let f=l.selectAll(".body").data([0]);f=f.enter().append("div").attr("class","body").merge(f);let p=f.selectAll(".qa-editor").data([0]);p.enter().append("div").attr("class","modal-section qa-editor").merge(p).call(n.issue(i)).call(r.issue(i)).call(o);let d=l.selectAll(".footer").data([0]);d.enter().append("div").attr("class","footer").merge(d).call(MM(e).what(i))}function o(l){let u=i&&i.id===e.selectedErrorID(),c=i&&u,f=l.selectAll(".qa-save").data(c?[i]:[],d=>`${d.id}-${d.status||0}`);f.exit().remove(),f=f.enter().append("div").attr("class","qa-save save-section cf").merge(f).call(s)}function s(l){let u=i&&i.id===e.selectedErrorID(),c=l.selectAll(".buttons").data(u?[i]:[],p=>p.status+p.id);c.exit().remove();let f=c.enter().append("div").attr("class","buttons");f.append("button").attr("class","button close-button action"),f.append("button").attr("class","button ignore-button action"),c=c.merge(f),c.select(".close-button").call(F.append("QA.keepRight.close")).on("click.close",function(p,d){this.blur();let g=de.osmose;g&&(d.newStatus="done",g.postUpdate(d,(x,b)=>t.call("change",b)))}),c.select(".ignore-button").call(F.append("QA.keepRight.ignore")).on("click.ignore",function(p,d){this.blur();let g=de.osmose;g&&(d.newStatus="false",g.postUpdate(d,(x,b)=>t.call("change",b)))})}return a.error=function(l){return arguments.length?(i=l,a):i},ke(a,t,"on")}function pp(e,t,r){var n={id:"select-error",button:"browse"},i=at("select-error"),a=de[r],o;switch(r){case"improveOSM":o=_u(e).on("change",function(){e.map().pan([0,0]);var u=l();u&&e.ui().sidebar.show(o.error(u))});break;case"keepRight":o=Eu(e).on("change",function(){e.map().pan([0,0]);var u=l();u&&e.ui().sidebar.show(o.error(u))});break;case"osmose":o=fp(e).on("change",function(){e.map().pan([0,0]);var u=l();u&&e.ui().sidebar.show(o.error(u))});break}var s=[eo(e),pi(e),so(e),lo(e),to(e).behavior,oo(e).behavior];function l(){if(a){var u=a.getError(t);return u||e.enter(Ge(e)),u}}return n.zoomToSelected=function(){if(a){var u=a.getError(t);u&&e.map().centerZoomEase(u.loc,20)}},n.enter=function(){var u=l();if(!u)return;s.forEach(e.install),i.on(F("inspector.zoom_to.key"),n.zoomToSelected).on("\u238B",p,!0),G(document).call(i),f();var c=e.ui().sidebar;c.show(o.error(u)),e.map().on("drawn.select-error",f);function f(d,g){if(l()){var x=e.surface().selectAll(".itemId-"+t+"."+r);if(x.empty()){var b=d&&d.type==="zoom"&&d.sourceEvent;g&&b&&(b.type==="pointermove"||b.type==="mousemove"||b.type==="touchmove")&&e.enter(Ge(e))}else x.classed("selected",!0),e.selectedErrorID(t)}}function p(){e.container().select(".combobox").size()||e.enter(Ge(e))}},n.exit=function(){s.forEach(e.uninstall),G(document).call(i.unbind),e.surface().selectAll(".qaItem.selected").classed("selected hover",!1),e.map().on("drawn.select-error",null),e.ui().sidebar.hide(),e.selectedErrorID(null),e.features().forceVisible([])},n}function mp(e){var t;function r(n){var i=n.append("div").attr("class","header fillL");i.append("h2").call(F.append("inspector.feature_list"));var a=n.append("div").attr("class","search-header");a.call(ce("#iD-icon-search","pre-text"));var o=a.append("input").attr("placeholder",F("inspector.search")).attr("type","search").call(pt).on("keypress",f).on("keydown",c).on("input",p),s=n.append("div").attr("class","inspector-body"),l=s.append("div").attr("class","feature-list");e.on("exit.feature-list",d),e.map().on("drawn.feature-list",g),e.keybinding().on(st("\u2318F"),u);function u(w){var A=e.mode()&&e.mode().id;A==="browse"&&(w.preventDefault(),o.node().focus())}function c(w){w.keyCode===27&&o.node().blur()}function f(w){var A=o.property("value"),I=l.selectAll(".feature-list-item");w.keyCode===13&&A.length&&I.size()&&y(w,I.datum())}function p(){t=void 0,b()}function d(){o.property("value",""),b()}function g(w){w.full&&b()}function x(){var w=[],A=e.graph(),I=e.map().extent().center(),E=o.property("value").toLowerCase();if(!E)return w;var k=NM.pair(E.toUpperCase())||D7(E);if(k){var S=[Number(k[0]),Number(k[1])];w.push({id:-1,geometry:"point",type:F("inspector.location"),name:as([S[1],S[0]]),location:S})}var D=!k&&E.match(/(?:^|\W)(node|way|relation|note|[nwr])\W{0,2}0*([1-9]\d*)(?:\W|$)/i);if(D){var P=D[1]==="note"?D[1]:D[1].charAt(0),O=D[2];w.push({id:P+O,geometry:P==="n"?"point":P==="w"?"line":P==="note"?"note":"relation",type:P==="n"?F("inspector.node"):P==="w"?F("inspector.way"):P==="note"?F("note.note"):F("inspector.relation"),name:O})}var T=A.entities,M=[];for(var R in T){var N=T[R];if(N){var U=kr(N)||"";if(!(U.toLowerCase().indexOf(E)<0)){var B=$e.match(N,A),$=B&&B.name()||ta(N.id),z=N.extent(A),V=z?Vt(I,z.center()):0;if(M.push({id:N.id,entity:N,geometry:N.geometry(A),type:$,name:U,distance:V}),M.length>100)break}}}return M=M.sort(function(Z,oe){return Z.distance-oe.distance}),w=w.concat(M),(t||[]).forEach(function(H){if(H.osm_type&&H.osm_id){var Z=qe.id.fromOSM(H.osm_type,H.osm_id),oe={};oe[H.class]=H.type;var pe={id:Z,type:H.osm_type,tags:oe};H.osm_type==="way"&&(pe.nodes=["a","a"]);var ne=qe(pe),ge=Rn([ne]),ve=$e.match(ne,ge),Oe=ve&&ve.name()||ta(Z);w.push({id:ne.id,geometry:ne.geometry(ge),type:Oe,name:H.display_name,extent:new Pe([Number(H.boundingbox[3]),Number(H.boundingbox[0])],[Number(H.boundingbox[2]),Number(H.boundingbox[1])])})}}),E.match(/^[0-9]+$/)&&(w.push({id:"n"+E,geometry:"point",type:F("inspector.node"),name:E}),w.push({id:"w"+E,geometry:"line",type:F("inspector.way"),name:E}),w.push({id:"r"+E,geometry:"relation",type:F("inspector.relation"),name:E}),w.push({id:"note"+E,geometry:"note",type:F("note.note"),name:E})),w}function b(){var w=o.property("value"),A=x();l.classed("filtered",w.length);var I=l.selectAll(".no-results-item").data([0]).enter().append("button").property("disabled",!0).attr("class","no-results-item").call(ce("#iD-icon-alert","pre-text"));I.append("span").attr("class","entity-name"),l.selectAll(".no-results-item .entity-name").html("").call(F.append("geocoder.no_results_worldwide")),de.geocoder&&l.selectAll(".geocode-item").data([0]).enter().append("button").attr("class","geocode-item secondary-action").on("click",_).append("div").attr("class","label").append("span").attr("class","entity-name").call(F.append("geocoder.search")),l.selectAll(".no-results-item").style("display",w.length&&!A.length?"block":"none"),l.selectAll(".geocode-item").style("display",w&&t===void 0?"block":"none"),l.selectAll(".feature-list-item").data([-1]).remove();var E=l.selectAll(".feature-list-item").data(A,function(D){return D.id}),k=E.enter().insert("button",".geocode-item").attr("class","feature-list-item").on("mouseover",m).on("mouseout",v).on("click",y),S=k.append("div").attr("class","label");S.each(function(D){G(this).call(ce("#iD-icon-"+D.geometry,"pre-text"))}),S.append("span").attr("class","entity-type").text(function(D){return D.type}),S.append("span").attr("class","entity-name").classed("has-colour",D=>D.entity&&D.entity.type==="relation"&&D.entity.tags.colour&&Ko(D.entity.tags.colour)).style("border-color",D=>D.entity&&D.entity.type==="relation"&&D.entity.tags.colour).text(function(D){return D.name}),k.style("opacity",0).transition().style("opacity",1),E.order(),E.exit().remove()}function m(w,A){A.id!==-1&&Ct([A.id],!0,e)}function v(w,A){A.id!==-1&&Ct([A.id],!1,e)}function y(w,A){if(w.preventDefault(),A.location)e.map().centerZoomEase([A.location[1],A.location[0]],19);else if(A.entity)Ct([A.id],!1,e),e.enter(rt(e,[A.entity.id])),e.map().zoomToEase(A.entity);else if(A.geometry==="note"){let I=A.id.replace(/\D/g,"");e.loadNote(I,(E,k)=>{if(E)return;if(k.data.find(D=>D.id===I)){let D=de.osm.getNote(I);e.map().centerZoom(D.loc,15),e.layers().layer("notes").enabled(!0),e.enter(xs(e,I))}})}else e.zoomToEntity(A.id)}function _(){de.geocoder.search(o.property("value"),function(w,A){t=A||[],b()})}}return r}function hp(e){var t=xe("cancel","choose"),r,n,i,a=!1;function o(d){if(!r)return;var g=$e.matchAllGeometry(p());d.html("");var x=d.append("div").attr("class","header fillL"),b=x.append("h2").call(F.append("inspector.choose")),m=fe.textDirection()==="rtl"?"backward":"forward";x.append("button").attr("class","preset-choose").attr("title",r.length===1?F("inspector.edit"):F("inspector.edit_features")).on("click",function(){t.call("cancel",this)}).call(ce(`#iD-icon-${m}`));function v(D){I.property("value").length===0&&(D.keyCode===at.keyCodes["\u232B"]||D.keyCode===at.keyCodes["\u2326"])?(D.preventDefault(),D.stopPropagation(),di(e,r)()):I.property("value").length===0&&(D.ctrlKey||D.metaKey)&&D.keyCode===at.keyCodes.z?(D.preventDefault(),D.stopPropagation(),e.undo()):!D.ctrlKey&&!D.metaKey&&(G(this).on("keydown",y),y.call(this,D))}function y(D){if(D.keyCode===at.keyCodes["\u2193"]&&I.node().selectionStart===I.property("value").length){D.preventDefault(),D.stopPropagation();var P=S.selectAll(".preset-list-button");P.empty()||P.nodes()[0].focus()}}function _(D){var P=I.property("value");D.keyCode===13&&P.length&&S.selectAll(".preset-list-item:first-child").each(function(O){O.choose.call(this)})}function w(){var D=I.property("value");S.classed("filtered",D.length);var P,O;if(D.length)P=g.search(D,p()[0],n),O=F.html("inspector.results",{n:P.collection.length,search:D});else{var T=r.map(M=>$e.match(e.graph().entity(M),e.graph()));P=$e.defaults(p()[0],36,!e.inIntro(),n,T),O=F.html("inspector.choose")}S.call(s,P),b.html(O)}var A=d.append("div").attr("class","search-header");A.call(ce("#iD-icon-search","pre-text"));var I=A.append("input").attr("class","preset-search-input").attr("placeholder",F("inspector.search")).attr("type","search").call(pt).on("keydown",v).on("keypress",_).on("input",Bt(w));a&&(I.node().focus(),setTimeout(function(){I.node().focus()},0));var E=d.append("div").attr("class","inspector-body"),k=r.map(D=>$e.match(e.graph().entity(D),e.graph())),S=E.append("div").attr("class","preset-list").call(s,$e.defaults(p()[0],36,!e.inIntro(),n,k));e.features().on("change.preset-list",f)}function s(d,g){g=g.matchAllGeometry(p());var x=g.collection.reduce(function(m,v){return v&&(v.members?v.members.collection.filter(function(y){return y.addable()}).length>1&&m.push(u(v)):v.addable()&&m.push(c(v))),m},[]),b=d.selectAll(".preset-list-item").data(x,function(m){return m.preset.id});b.order(),b.exit().remove(),b.enter().append("div").attr("class",function(m){return"preset-list-item preset-"+m.preset.id.replace("/","-")}).classed("current",function(m){return i.indexOf(m.preset)!==-1}).each(function(m){G(this).call(m)}).style("opacity",0).transition().style("opacity",1),f()}function l(d){var g=G(this.closest(".preset-list-item")),x=G(g.node().parentNode.closest(".preset-list-item"));if(d.keyCode===at.keyCodes["\u2193"]){d.preventDefault(),d.stopPropagation();var b=G(g.node().nextElementSibling);b.empty()?x.empty()||(b=G(x.node().nextElementSibling)):G(this).classed("expanded")&&(b=g.select(".subgrid .preset-list-item:first-child")),b.empty()||b.select(".preset-list-button").node().focus()}else if(d.keyCode===at.keyCodes["\u2191"]){d.preventDefault(),d.stopPropagation();var m=G(g.node().previousElementSibling);if(m.empty()?x.empty()||(m=x):m.select(".preset-list-button").classed("expanded")&&(m=m.select(".subgrid .preset-list-item:last-child")),!m.empty())m.select(".preset-list-button").node().focus();else{var v=G(this.closest(".preset-list-pane")).select(".preset-search-input");v.node().focus()}}else d.keyCode===at.keyCodes[fe.textDirection()==="rtl"?"\u2192":"\u2190"]?(d.preventDefault(),d.stopPropagation(),x.empty()||x.select(".preset-list-button").node().focus()):d.keyCode===at.keyCodes[fe.textDirection()==="rtl"?"\u2190":"\u2192"]&&(d.preventDefault(),d.stopPropagation(),g.datum().choose.call(G(this).node()))}function u(d){var g,x,b=!1;function m(v){var y=v.append("div").attr("class","preset-list-button-wrap category");function _(){var E=G(this).classed("expanded"),k=E?fe.textDirection()==="rtl"?"#iD-icon-backward":"#iD-icon-forward":"#iD-icon-down";G(this).classed("expanded",!E).attr("title",E?F("icons.expand"):F("icons.collapse")),G(this).selectAll("div.label-inner svg.icon use").attr("href",k),m.choose()}var w=p(),A=y.append("button").attr("class","preset-list-button").attr("title",F("icons.expand")).classed("expanded",!1).call(G0().geometry(w.length===1&&w[0]).preset(d)).on("click",_).on("keydown",function(E){E.keyCode===at.keyCodes[fe.textDirection()==="rtl"?"\u2190":"\u2192"]?(E.preventDefault(),E.stopPropagation(),G(this).classed("expanded")||_.call(this,E)):E.keyCode===at.keyCodes[fe.textDirection()==="rtl"?"\u2192":"\u2190"]?(E.preventDefault(),E.stopPropagation(),G(this).classed("expanded")&&_.call(this,E)):l.call(this,E)}),I=A.append("div").attr("class","label").append("div").attr("class","label-inner");I.append("div").attr("class","namepart").call(ce(fe.textDirection()==="rtl"?"#iD-icon-backward":"#iD-icon-forward","inline")).append("span").call(d.nameLabel()).append("span").text("\u2026"),g=v.append("div").attr("class","subgrid").style("max-height","0px").style("opacity",0),g.append("div").attr("class","arrow"),x=g.append("div").attr("class","preset-list fillL3")}return m.choose=function(){if(!(!g||!x))if(b)b=!1,g.transition().duration(200).style("opacity","0").style("max-height","0px").style("padding-bottom","0px");else{b=!0;var v=d.members.matchAllGeometry(p());x.call(s,v),g.transition().duration(200).style("opacity","1").style("max-height",200+v.collection.length*190+"px").style("padding-bottom","10px")}},m.preset=d,m}function c(d){function g(x){var b=x.append("div").attr("class","preset-list-button-wrap"),m=p(),v=b.append("button").attr("class","preset-list-button").call(G0().geometry(m.length===1&&m[0]).preset(d)).on("click",g.choose).on("keydown",l),y=v.append("div").attr("class","label").append("div").attr("class","label-inner"),_=[d.nameLabel(),d.subtitleLabel()].filter(Boolean);y.selectAll(".namepart").data(_,w=>w.stringId).enter().append("div").attr("class","namepart").text("").each(function(w){w(G(this))}),b.call(g.reference.button),x.call(g.reference.body)}return g.choose=function(){G(this).classed("disabled")||(e.inIntro()||$e.setMostRecent(d,p()[0]),e.perform(function(x){for(var b in r){var m=r[b],v=$e.match(x.entity(m),x);x=cl(m,v,d)(x)}return x},F("operations.change_tags.annotation")),e.validator().validate(),t.call("choose",this,d))},g.help=function(x){x.stopPropagation(),g.reference.toggle()},g.preset=d,g.reference=vs(d.reference(),e),g}function f(){if(r.every(e.hasEntity)){var d=p(),g=e.container().selectAll(".preset-list .preset-list-button");g.call(Ye().destroyAny),g.each(function(x,b){var m;for(var v in d)if(m=e.features().isHiddenPreset(x.preset,d[v]),m)break;var y=!e.inIntro()&&!!m&&(i.length!==1||x.preset!==i[0]);if(G(this).classed("disabled",y),y){var _=e.features().autoHidden(m);G(this).call(Ye().title(()=>F.append("inspector.hidden_preset."+(_?"zoom":"manual"),{features:F("feature."+m+".description")})).placement(b<2?"bottom":"top"))}})}}o.autofocus=function(d){return arguments.length?(a=d,o):a},o.entityIDs=function(d){if(!arguments.length)return r;if(r=d,n=null,r&&r.length){n=r.reduce(function(b,m){var v=e.graph().entity(m);return b.extend(v.extent(e.graph()))},Pe()).center();var g=r.map(function(b){return $e.match(e.entity(b),e.graph())});o.presets(g)}return o},o.presets=function(d){return arguments.length?(i=d,o):i};function p(){var d={};for(var g in r){var x=r[g],b=e.entity(x),m=b.geometry(e.graph());m==="vertex"&&b.isOnAddressLine(e.graph())&&(m="point"),d[m]||(d[m]=0),d[m]+=1}return Object.keys(d).sort(function(v,y){return d[y]-d[v]})}return ke(o,t,"on")}function gp(e){var t=hp(e),r=X8(e),n=G(null),i=G(null),a=G(null),o="select",s,l=!1;function u(c){t.entityIDs(s).autofocus(l).on("choose",u.setPreset).on("cancel",function(){u.setPreset()}),r.state(o).entityIDs(s).on("choose",u.showList),n=c.selectAll(".panewrap").data([0]);var f=n.enter().append("div").attr("class","panewrap");f.append("div").attr("class","preset-list-pane pane"),f.append("div").attr("class","entity-editor-pane pane"),n=n.merge(f),i=n.selectAll(".preset-list-pane"),a=n.selectAll(".entity-editor-pane");function p(){if(o!=="select"||s.length!==1)return!1;var g=s[0],x=e.hasEntity(g);return!x||x.hasNonGeometryTags()?!1:l?!0:!(x.geometry(e.graph())!=="vertex"||e.graph().parentRelations(x).length||e.validator().getEntityIssues(g).length||x.isHighwayIntersection(e.graph()))}p()?(n.style("right","-100%"),a.classed("hide",!0),i.classed("hide",!1).call(t)):(n.style("right","0%"),i.classed("hide",!0),a.classed("hide",!1).call(r));var d=c.selectAll(".footer").data([0]);d=d.enter().append("div").attr("class","footer").merge(d),d.call(bu(e).what(e.hasEntity(s.length===1&&s[0])))}return u.showList=function(c){i.classed("hide",!1),n.transition().styleTween("right",function(){return Ua("0%","-100%")}).on("end",function(){a.classed("hide",!0)}),c&&t.presets(c),i.call(t.autofocus(!0))},u.setPreset=function(c){c&&c.id==="type/multipolygon"?i.call(t.autofocus(!0)):(a.classed("hide",!1),n.transition().styleTween("right",function(){return Ua("-100%","0%")}).on("end",function(){i.classed("hide",!0)}),c&&r.presets([c]),a.call(r))},u.state=function(c){return arguments.length?(o=c,r.state(o),e.container().selectAll(".field-help-body").remove(),u):o},u.entityIDs=function(c){return arguments.length?(s=c,u):s},u.newFeature=function(c){return arguments.length?(l=c,u):l},u}function vp(e){var t,r;n.coordinates=[];function n(a){e.container().classed("lasso",!0),t=a.append("g").attr("class","lasso hide"),r=t.append("path").attr("class","lasso-path"),t.call(gs(!0))}function i(){r&&r.data([n.coordinates]).attr("d",function(a){return"M"+a.join(" L")+" Z"})}return n.extent=function(){return n.coordinates.reduce(function(a,o){return a.extend(Pe(o))},Pe())},n.p=function(a){return arguments.length&&(n.coordinates.push(a),i()),n},n.close=function(){t&&t.call(gs(!1,function(){G(this).remove()})),e.container().classed("lasso",!1)},n}function yp(e){var t;function r(i){i.preventDefault();var a=e.connection();if(a&&!e.inIntro()&&!(e.history().hasChanges()&&!window.confirm(F("source_switch.lose_changes")))){var o=G(this).classed("live");o=!o,e.enter(Ge(e)),e.history().clearSaved(),e.flush(),G(this).html(o?F.html("source_switch.live"):F.html("source_switch.dev")).classed("live",o).classed("chip",o),a.switch(o?t[0]:t[1])}}var n=function(i){i.append("a").attr("href","#").call(F.append("source_switch.live")).attr("class","live chip").on("click",r)};return n.keys=function(i){return arguments.length?(t=i,n):t},n}function bp(e){var t=e.connection();return function(r){var n=r.append("img").attr("src",e.imagePath("loader-black.gif")).style("opacity",0);t&&t.on("loading.spinner",function(){n.transition().style("opacity",1)}).on("loaded.spinner",function(){n.transition().style("opacity",0)})}}function ku(e){let t=Nt("preferences-third-party",e).label(()=>F.append("preferences.privacy.title")).disclosureContent(r);function r(n){n.selectAll(".privacy-options-list").data([0]).enter().append("ul").attr("class","layer-list privacy-options-list");let i=n.select(".privacy-options-list").selectAll(".privacy-third-party-icons-item").data([Te("preferences.privacy.thirdpartyicons")||"true"]).enter().append("li").attr("class","privacy-third-party-icons-item").append("label").call(Ye().title(()=>F.append("preferences.privacy.third_party_icons.tooltip")).placement("bottom"));i.append("input").attr("type","checkbox").on("change",(a,o)=>{a.preventDefault(),Te("preferences.privacy.thirdpartyicons",o==="true"?"false":"true")}),i.append("span").call(F.append("preferences.privacy.third_party_icons.description")),n.selectAll(".privacy-third-party-icons-item").classed("active",a=>a==="true").select("input").property("checked",a=>a==="true"),n.selectAll(".privacy-link").data([0]).enter().append("div").attr("class","privacy-link").append("a").attr("target","_blank").call(ce("#iD-icon-out-link","inline")).attr("href","https://github.com/openstreetmap/iD/blob/release/PRIVACY.md").append("span").call(F.append("preferences.privacy.privacy_link"))}return Te.onChange("preferences.privacy.thirdpartyicons",t.reRender),t}function xp(e){return t=>{if(e.history().hasRestorableChanges())return;let r="",n=Te("sawPrivacyVersion"),i=!Te("sawSplash");if(n!==e.privacyVersion&&(r=F("splash.privacy_update"),i=!0),!i)return;Te("sawSplash",!0),Te("sawPrivacyVersion",e.privacyVersion),dt.get("intro_graph");let a=Oi(t);a.select(".modal").attr("class","modal-splash modal");let o=a.select(".content").append("div").attr("class","fillL");o.append("div").attr("class","modal-section").append("h3").call(F.append("splash.welcome"));let s=o.append("div").attr("class","modal-section");s.append("p").html(F.html("splash.text",{version:e.version,website:{html:''+F.html("splash.changelog")+""},github:{html:'github.com'}})),s.append("p").html(F.html("splash.privacy",{updateMessage:r,privacyLink:{html:''+F("splash.privacy_policy")+""}})),ku(e).label(()=>F.append("splash.privacy_settings")).render(s);let l=o.append("div").attr("class","modal-actions"),u=l.append("button").attr("class","walkthrough").on("click",()=>{e.container().call(kl(e)),a.close()});u.append("svg").attr("class","logo logo-walkthrough").append("use").attr("xlink:href","#iD-logo-walkthrough"),u.append("div").call(F.append("splash.walkthrough"));let c=l.append("button").attr("class","start-editing").on("click",a.close);c.append("svg").attr("class","logo logo-features").append("use").attr("xlink:href","#iD-logo-features"),c.append("div").call(F.append("splash.start")),a.select("button.close").attr("class","hide")}}function wp(e){var t=e.connection();return function(r){if(!t)return;function n(i,a){if(r.html(""),i){if(a==="connectionSwitched")return;if(a==="rateLimited")r.call(F.append("osm_api_status.message.rateLimit")).append("a").attr("href","#").attr("class","api-status-login").attr("target","_blank").call(ce("#iD-icon-out-link","inline")).append("span").call(F.append("login")).on("click.login",function(s){s.preventDefault(),t.authenticate()});else{var o=Lt(function(){e.loadTiles(e.projection),t.reloadApiStatus()},2e3);r.call(F.append("osm_api_status.message.error",{suffix:" "})).append("a").attr("href","#").call(F.append("osm_api_status.retry")).on("click.retry",function(s){s.preventDefault(),o()})}}else a==="readonly"?r.call(F.append("osm_api_status.message.readonly")):a==="offline"&&r.call(F.append("osm_api_status.message.offline"));r.attr("class","api-status "+(i?"error":a))}t.on("apiStatusChange.uiStatus",n),e.history().on("storage_error",()=>{r.selectAll("span.local-storage-full").remove(),r.append("span").attr("class","local-storage-full").call(F.append("osm_api_status.message.local_storage_full")),r.classed("error",!0)}),window.setInterval(function(){t.reloadApiStatus()},9e4),t.reloadApiStatus()}}var PM=null,Zy=!1,Jy=!1;function _p(e){var t=e.version,r=t.match(/\d+\.\d+\.\d+.*/);return PM===null&&r!==null&&(Te("sawVersion")?(Jy=!1,Zy=Te("sawVersion")!==t&&t.indexOf("-")===-1):(Jy=!0,Zy=!0),Te("sawVersion",t),PM=t),function(n){n.append("a").attr("target","_blank").attr("href","https://github.com/openstreetmap/iD").text(t),Zy&&!Jy&&n.append("a").attr("class","badge").attr("target","_blank").attr("href","https://github.com/openstreetmap/iD/blob/release/CHANGELOG.md#whats-new").call(ce("#maki-gift")).call(Ye().title(()=>F.append("version.whats_new",{version:t})).placement("top").scrollContainer(e.container().select(".main-footer-wrap")))}}function Ep(e){var t=[{id:"zoom-in",icon:"iD-icon-plus",title:F.append("zoom.in"),action:r,disabled:function(){return!e.map().canZoomIn()},disabledTitle:F.append("zoom.disabled.in"),key:"+"},{id:"zoom-out",icon:"iD-icon-minus",title:F.append("zoom.out"),action:n,disabled:function(){return!e.map().canZoomOut()},disabledTitle:F.append("zoom.disabled.out"),key:"-"}];function r(o){o.shiftKey||(o.preventDefault(),e.map().zoomIn())}function n(o){o.shiftKey||(o.preventDefault(),e.map().zoomOut())}function i(o){o.shiftKey||(o.preventDefault(),e.map().zoomInFurther())}function a(o){o.shiftKey||(o.preventDefault(),e.map().zoomOutFurther())}return function(o){var s=Ye().placement(fe.textDirection()==="rtl"?"right":"left").title(function(f){return f.disabled()?f.disabledTitle:f.title}).keys(function(f){return[f.key]}),l,u=o.selectAll("button").data(t).enter().append("button").attr("class",function(f){return f.id}).on("pointerup.editor",function(f){l=f.pointerType}).on("click.editor",function(f,p){p.disabled()?(l==="touch"||l==="pen")&&e.ui().flash.duration(2e3).iconName("#"+p.icon).iconClass("disabled").label(p.disabledTitle)():p.action(f),l=null}).call(s);u.each(function(f){G(this).call(ce("#"+f.icon,"light"))}),at.plusKeys.forEach(function(f){e.keybinding().on([f],r),e.keybinding().on([st("\u2325"+f)],i)}),at.minusKeys.forEach(function(f){e.keybinding().on([f],n),e.keybinding().on([st("\u2325"+f)],a)});function c(){u.classed("disabled",function(f){return f.disabled()}).each(function(){var f=G(this);f.select(".tooltip.in").empty()||f.call(s.updateContent)})}c(),e.map().on("move.uiZoom",c)}}function Sl(e,t){var r=Nt(e,t).classes("raw-tag-editor").label(function(){var N=Object.keys(g).filter(function(U){return U}).length;return F.append("inspector.title_count",{title:F("inspector.tags"),count:N})}).expandedByDefault(!1).disclosureContent(v),n=de.taginfo,i=xe("change"),a=[{id:"list",icon:"#fas-th-list"},{id:"text",icon:"#fas-i-cursor"}];let o={};dt.get("discarded").then(N=>{o=N}).catch(()=>{});var s=Te("raw-tag-editor-view")||"list",l=[],u=[],c=!1,f=null,p,d,g,x,b=!1;function m(){b=!0}function v(N){u=u.filter(function(Ce){return g[Ce]!==void 0});var U=Object.keys(g).sort(),B=$r(U,u);for(var $ in B)u.push(B[$]);var z=u.map(function(Ce,te){return{index:te,key:Ce,value:g[Ce]}});(!z.length||c)&&(c=!1,z.push({index:z.length,key:"",value:""}));var V=N.selectAll(".raw-tag-options").data([0]);V.exit().remove();var H=V.enter().insert("div",":first-child").attr("class","raw-tag-options").attr("role","tablist"),Z=H.selectAll(".raw-tag-option").data(a,function(Ce){return Ce.id}).enter();Z.append("button").attr("class",function(Ce){return"raw-tag-option raw-tag-option-"+Ce.id+(s===Ce.id?" selected":"")}).attr("aria-selected",function(Ce){return s===Ce.id}).attr("role","tab").attr("title",function(Ce){return F("icons."+Ce.id)}).on("click",function(Ce,te){s=te.id,Te("raw-tag-editor-view",te.id),N.selectAll(".raw-tag-option").classed("selected",function(le){return le===te}).attr("aria-selected",function(le){return le===te}),N.selectAll(".tag-text").classed("hide",te.id!=="text").each(_),N.selectAll(".tag-list, .add-row").classed("hide",te.id!=="list")}).each(function(Ce){G(this).call(ce(Ce.icon))});var oe=I(z),pe=N.selectAll(".tag-text").data([0]);pe=pe.enter().append("textarea").attr("class","tag-text"+(s!=="text"?" hide":"")).call(pt).attr("placeholder",F("inspector.key_value")).attr("spellcheck","false").merge(pe),pe.call(je,oe).each(_).on("input",_).on("focus",m).on("blur",E).on("change",E);var ne=N.selectAll(".tag-list").data([0]);ne=ne.enter().append("ul").attr("class","tag-list"+(s!=="list"?" hide":"")).merge(ne);var ge=N.selectAll(".add-row").data([0]).enter().append("div").attr("class","add-row"+(s!=="list"?" hide":""));ge.append("button").attr("class","add-tag").attr("aria-label",F("inspector.add_to_tag")).call(ce("#iD-icon-plus","light")).call(Ye().title(()=>F.append("inspector.add_to_tag")).placement(fe.textDirection()==="ltr"?"right":"left")).on("click",M),ge.append("div").attr("class","space-value"),ge.append("div").attr("class","space-buttons");var ve=ne.selectAll(".tag-row").data(z,function(Ce){return Ce.key});ve.exit().each(D).remove();var Oe=ve.enter().append("li").attr("class","tag-row").classed("readonly",y),tt=Oe.append("div").attr("class","inner-wrap");tt.append("div").attr("class","key-wrap").append("input").property("type","text").attr("class","key").call(pt).on("focus",m).on("blur",P).on("change",P),tt.append("div").attr("class","value-wrap").append("input").property("type","text").attr("class","value").call(pt).on("focus",m).on("blur",O).on("change",O).on("keydown.push-more",k),tt.append("button").attr("class","form-field-button remove").attr("title",F("icons.remove")).call(ce("#iD-operation-delete")),ve=ve.merge(Oe).sort(function(Ce,te){return Ce.index-te.index}),ve.each(function(Ce){var te=G(this),le=te.select("input.key"),Se=te.select("input.value");x&&n&&p!=="hover"&&S(le,Se);var Ie={key:Ce.key};typeof Ce.value=="string"&&(Ie.value=Ce.value);var Le=vs(Ie,t);p==="hover"&&Le.showing(!1),te.select(".inner-wrap").call(Le.button),te.call(Le.body),te.select("button.remove")}),ve.selectAll("input.key").attr("title",function(Ce){return Ce.key}).call(je,function(Ce){return Ce.key}).attr("readonly",function(Ce){return y(Ce)||null}),ve.selectAll("input.value").attr("title",function(Ce){return Array.isArray(Ce.value)?Ce.value.filter(Boolean).join(` +`):Ce.value}).classed("mixed",function(Ce){return Array.isArray(Ce.value)}).attr("placeholder",function(Ce){return typeof Ce.value=="string"?null:F("inspector.multiple_values")}).call(je,function(Ce){return typeof Ce.value=="string"?Ce.value:""}).attr("readonly",function(Ce){return y(Ce)||null}),ve.selectAll("button.remove").on(("PointerEvent"in window?"pointer":"mouse")+"down",(Ce,te)=>{Ce.button===0&&T(Ce,te)})}function y(N){for(var U=0;Upe.text("").classed("virtual-option",!0).call(F.append("inspector.empty"))}});V(Z)}}));return}var B=t.graph().geometry(x[0]);N.call(Ht(t,"tag-key").fetcher(function(z,V){n.keys({debounce:!0,geometry:B,query:z},function(H,Z){if(!H){let oe=Z.filter(pe=>g[pe.value]===void 0).filter(pe=>!(pe.value in o)).filter(pe=>!/_\d$/.test(pe)).filter(pe=>pe.value.toLowerCase().includes(z.toLowerCase()));V($(z,oe))}})})),U.call(Ht(t,"tag-value").fetcher(function(z,V){n.values({debounce:!0,key:je(N),geometry:B,query:z},function(H,Z){if(!H){let oe=Z.filter(pe=>pe.value.toLowerCase().includes(z.toLowerCase()));V($(z,oe))}})}).caseSensitive(_f.test(je(N))));function $(z,V){for(var H=[],Z=[],oe=0;oe1&&T&&T.length){var M=e.container().selectAll(".feature-list-item button").filter(function(R){return T.indexOf(R)!==-1});M.empty()||M.classed("hover",!0)}};p.hoverModeSelect=Lt(P,200);function O(T){var M=T&&T.length&&T[0];if(M&&M.__featurehash__)l=!0,p.show(r.datum(M)),d.selectAll(".sidebar-component").classed("inspector-hover",!0);else if(M instanceof Nr){if(e.mode().id==="drag-note")return;u=!0;var R=de.osm;R&&(M=R.getNote(M.id)),p.show(n.note(M)),d.selectAll(".sidebar-component").classed("inspector-hover",!0)}else if(M instanceof Fr){c=!0;var N=de[M.service];N&&(M=N.getError(M.id));var U;M.service==="keepRight"?U=a:M.service==="osmose"?U=o:U=i,e.container().selectAll(".qaItem."+M.service).classed("hover",function(B){return B.id===M.id}),p.show(U.error(M)),d.selectAll(".sidebar-component").classed("inspector-hover",!0)}else!s&&M instanceof qe?(S.classed("inspector-hidden",!0),D.classed("inspector-hidden",!1).classed("inspector-hover",!0),(!t.entityIDs()||!kn(t.entityIDs(),[M.id])||t.state()!=="hover")&&(t.state("hover").entityIDs([M.id]).newFeature(!1),D.call(t))):s?(l||u||c)&&(u=!1,l=!1,c=!1,e.container().selectAll(".note").classed("hover",!1),e.container().selectAll(".qaItem").classed("hover",!1),p.hide()):(S.classed("inspector-hidden",!1),D.classed("inspector-hidden",!0),t.state("hide"))}p.hover=Lt(O,200),p.intersects=function(T){var M=d.node().getBoundingClientRect();return T.intersects([e.projection.invert([0,M.height]),e.projection.invert([M.width,0])])},p.select=function(T,M){if(p.hide(),T&&T.length){var R=T.length===1&&e.entity(T[0]);if(R&&M&&d.classed("collapsed")){var N=R.extent(e.graph());p.expand(p.intersects(N))}S.classed("inspector-hidden",!0),D.classed("inspector-hidden",!1).classed("inspector-hover",!1),t.state("select").entityIDs(T).newFeature(M),D.call(t)}else t.state("hide")},p.showPresetList=function(){t.showList()},p.show=function(T,M){S.classed("inspector-hidden",!0),D.classed("inspector-hidden",!0),s&&s.remove(),s=d.append("div").attr("class","sidebar-component").call(T,M)},p.hide=function(){S.classed("inspector-hidden",!1),D.classed("inspector-hidden",!0),s&&s.remove(),s=null},p.expand=function(T){d.classed("collapsed")&&p.toggle(T)},p.collapse=function(T){d.classed("collapsed")||p.toggle(T)},p.toggle=function(T){if(!e.inIntro()){var M=d.classed("collapsed"),R=!M,N=fe.textDirection()==="rtl",U=N?0:1,B=N?"margin-right":"margin-left";b=d.node().getBoundingClientRect().width,d.style("width",b+"px");var $,z,V;R?($=V=0,z=-b):($=V=-b,z=0),R||d.classed("collapsed",R),d.transition().style(B,z+"px").tween("panner",function(){var H=Vr($,z);return function(Z){var oe=V-Math.round(H(Z));V=V-oe,e.ui().onResize(T?void 0:[oe*U,0])}}).on("end",function(){if(R&&d.classed("collapsed",R),!R){var H=g.node().getBoundingClientRect().width,Z=b/H*100;d.style(B,null).style("width",Z+"%")}})}},y.on("dblclick",function(T){T.preventDefault(),T.sourceEvent&&T.sourceEvent.preventDefault(),p.toggle()}),e.map().on("crossEditableZoom.sidebar",function(T){!T&&!d.select(".inspector-hover").empty()&&O([])})}return p.showPresetList=function(){},p.hover=function(){},p.hover.cancel=function(){},p.intersects=function(){},p.select=function(){},p.show=function(){},p.hide=function(){},p.expand=function(){},p.collapse=function(){},p.toggle=function(){},p}function OM(e){var t={id:"old_modes",label:F.append("toolbar.add_feature")},r=[Z8(e,{title:F.append("modes.add_point.title"),button:"point",description:F.append("modes.add_point.description"),preset:$e.item("point"),key:"1"}),K8(e,{title:F.append("modes.add_line.title"),button:"line",description:F.append("modes.add_line.description"),preset:$e.item("line"),key:"2"}),Y8(e,{title:F.append("modes.add_area.title"),button:"area",description:F.append("modes.add_area.description"),preset:$e.item("area"),key:"3"})];function n(a){return i()}function i(){return e.editable()}return r.forEach(function(a){e.keybinding().on(a.key,function(){n(a)&&(a.id===e.mode().id?e.enter(Ge(e)):e.enter(a))})}),t.render=function(a){var o=a.append("div").attr("class","joined").style("display","flex"),s=Bt(l,500,{leading:!0,trailing:!0});e.map().on("move.modes",s).on("drawn.modes",s),e.on("enter.modes",l),l();function l(){var u=o.selectAll("button.add-button").data(r,function(f){return f.id});u.exit().remove();var c=u.enter().append("button").attr("class",function(f){return f.id+" add-button bar-button"}).on("click.mode-buttons",function(f,p){if(n(p)){var d=e.mode().id;/^draw/.test(d)||(p.id===d?e.enter(Ge(e)):e.enter(p))}}).call(Ye().placement("bottom").title(function(f){return f.description}).keys(function(f){return[f.key]}).scrollContainer(e.container().select(".top-toolbar")));c.each(function(f){G(this).call(ce("#iD-icon-"+f.button))}),c.append("span").attr("class","label").text("").each(function(f){f.title(G(this))}),(u.enter().size()||u.exit().size())&&e.ui().checkOverflow(".top-toolbar",!0),u=u.merge(c).attr("aria-disabled",function(f){return!n(f)}).classed("disabled",function(f){return!n(f)}).attr("aria-pressed",function(f){return e.mode()&&e.mode().button===f.button}).classed("active",function(f){return e.mode()&&e.mode().button===f.button})}},t}function LM(e){var t={id:"notes",label:F.append("modes.add_note.label")},r=rp(e);function n(){return i()&&a()}function i(){var o=e.layers().layer("notes");return o&&o.enabled()}function a(){var o=e.mode();return e.map().notesEditable()&&o&&o.id!=="save"}return e.keybinding().on(r.key,function(){n()&&(r.id===e.mode().id?e.enter(Ge(e)):e.enter(r))}),t.render=function(o){var s=Bt(l,500,{leading:!0,trailing:!0});e.map().on("move.notes",s).on("drawn.notes",s),e.on("enter.notes",l),l();function l(){var u=i(),c=u?[r]:[],f=o.selectAll("button.add-button").data(c,function(d){return d.id});f.exit().remove();var p=f.enter().append("button").attr("class",function(d){return d.id+" add-button bar-button"}).on("click.notes",function(d,g){if(n()){var x=e.mode().id;/^draw/.test(x)||(g.id===x?e.enter(Ge(e)):e.enter(g))}}).call(Ye().placement("bottom").title(function(d){return d.description}).keys(function(d){return[d.key]}).scrollContainer(e.container().select(".top-toolbar")));p.each(function(d){G(this).call(ce(d.icon||"#iD-icon-"+d.button))}),(f.enter().size()||f.exit().size())&&e.ui().checkOverflow(".top-toolbar",!0),f=f.merge(p).classed("disabled",function(){return!n()}).attr("aria-disabled",function(){return!n()}).classed("active",function(d){return e.mode()&&e.mode().button===d.button}).attr("aria-pressed",function(d){return e.mode()&&e.mode().button===d.button})}},t.uninstall=function(){e.on("enter.editor.notes",null).on("exit.editor.notes",null).on("enter.notes",null),e.map().on("move.notes",null).on("drawn.notes",null)},t}function RM(e){var t={id:"save",label:F.append("save.title")},r=null,n=null,i=e.history(),a=st("\u2318S"),o=0;function s(){var p=e.mode();return p&&p.id==="save"}function l(){return o===0||s()}function u(p){p.preventDefault(),!e.inIntro()&&!s()&&i.hasChanges()&&e.enter(ip(e))}function c(p){var d;return p===0?null:p<=50?(d=p/50,Yo("#fff","#ff8")(d)):(d=Math.min((p-50)/50,1),Yo("#ff8","#f88")(d))}function f(){var p=i.difference().summary().length;p!==o&&(o=p,n&&n.title(()=>F.append(o>0?"save.help":"save.no_changes")).keys([a]),r&&(r.classed("disabled",l()).style("background",c(o)),r.select("span.count").text(o)))}return t.render=function(p){n=Ye().placement("bottom").title(()=>F.append("save.no_changes")).keys([a]).scrollContainer(e.container().select(".top-toolbar"));var d;r=p.append("button").attr("class","save disabled bar-button").on("pointerup",function(g){d=g.pointerType}).on("click",function(g){u(g),o===0&&(d==="touch"||d==="pen")&&e.ui().flash.duration(2e3).iconName("#iD-icon-save").iconClass("disabled").label(F.append("save.no_changes"))(),d=null}).call(n),r.call(ce("#iD-icon-save")),r.append("span").attr("class","count").attr("aria-hidden","true").text("0"),f(),e.keybinding().on(a,u,!0),e.history().on("change.save",f),e.on("enter.save",function(){r&&(r.classed("disabled",l()),s()&&r.call(n.hide))})},t.uninstall=function(){e.keybinding().off(a,!0),e.history().on("change.save",null),e.on("enter.save",null),r=null,n=null},t}function BM(e){var t={id:"sidebar_toggle",label:F.append("toolbar.inspect")};return t.render=function(r){r.append("button").attr("class","bar-button").attr("aria-label",F("sidebar.tooltip")).on("click",function(){e.ui().sidebar.toggle()}).call(Ye().placement("bottom").title(()=>F.append("sidebar.tooltip")).keys([F("sidebar.key")]).scrollContainer(e.container().select(".top-toolbar"))).call(ce("#iD-icon-sidebar-"+(fe.textDirection()==="rtl"?"right":"left")))},t}function $M(e){var t={id:"undo_redo",label:F.append("toolbar.undo_redo")},r=[{id:"undo",cmd:st("\u2318Z"),action:function(){e.undo()},annotation:function(){return e.history().undoAnnotation()},icon:"iD-icon-"+(fe.textDirection()==="rtl"?"redo":"undo")},{id:"redo",cmd:st("\u2318\u21E7Z"),action:function(){e.redo()},annotation:function(){return e.history().redoAnnotation()},icon:"iD-icon-"+(fe.textDirection()==="rtl"?"undo":"redo")}];function n(){return e.mode()&&e.mode().id!=="save"&&e.map().editableDataEnabled(!0)}return t.render=function(i){var a=Ye().placement("bottom").title(function(c){return c.annotation()?F.append(c.id+".tooltip",{action:c.annotation()}):F.append(c.id+".nothing")}).keys(function(c){return[c.cmd]}).scrollContainer(e.container().select(".top-toolbar")),o,s=i.selectAll("button").data(r).enter().append("button").attr("class",function(c){return"disabled "+c.id+"-button bar-button"}).on("pointerup",function(c){o=c.pointerType}).on("click",function(c,f){c.preventDefault();var p=f.annotation();if(n()&&p&&f.action(),n()&&(o==="touch"||o==="pen")){var d=p?F.append(f.id+".tooltip",{action:p}):F.append(f.id+".nothing");e.ui().flash.duration(2e3).iconName("#"+f.icon).iconClass(p?"":"disabled").label(d)()}o=null}).call(a);s.each(function(c){G(this).call(ce("#"+c.icon))}),e.keybinding().on(r[0].cmd,function(c){c.preventDefault(),n()&&r[0].action()}).on(r[1].cmd,function(c){c.preventDefault(),n()&&r[1].action()});var l=Bt(u,500,{leading:!0,trailing:!0});e.map().on("move.undo_redo",l).on("drawn.undo_redo",l),e.history().on("change.undo_redo",function(c){c&&u()}),e.on("enter.undo_redo",u);function u(){s.classed("disabled",function(c){return!n()||!c.annotation()}).each(function(){var c=G(this);c.select(".tooltip.in").empty()||c.call(a.updateContent)})}},t.uninstall=function(){e.keybinding().off(r[0].cmd).off(r[1].cmd),e.map().on("move.undo_redo",null).on("drawn.undo_redo",null),e.history().on("change.undo_redo",null),e.on("enter.undo_redo",null)},t}function UM(e){var t=BM(e),r=OM(e),n=LM(e),i=$M(e),a=RM(e);function o(){var l=e.layers().layer("notes");return l&&l.enabled()}function s(l){l.on("wheel.topToolbar",function(f){f.deltaX||(l.node().scrollLeft+=f.deltaY)});var u=Bt(c,500,{leading:!0,trailing:!0});e.layers().on("change.topToolbar",u),c();function c(){var f=[t,"spacer",r];f.push("spacer"),o()&&(f=f.concat([n,"spacer"])),f=f.concat([i,a]);var p=l.selectAll(".toolbar-item").data(f,function(x){return x.id||x});p.exit().each(function(x){x.uninstall&&x.uninstall()}).remove();var d=p.enter().append("div").attr("class",function(x){var b="toolbar-item "+(x.id||x).replace("_","-");return x.klass&&(b+=" "+x.klass),b}),g=d.filter(function(x){return x!=="spacer"});g.append("div").attr("class","item-content").each(function(x){G(this).call(x.render,l)}),g.append("div").attr("class","item-label").each(function(x){x.label(G(this))})}}return s}function zM(e){function t(){var a=e.mode();return!a||!a.zoomToSelected}var r;function n(a){r=a.pointerType}function i(a){if(a.preventDefault(),t())(r==="touch"||r==="pen")&&e.ui().flash.duration(2e3).iconName("#iD-icon-framed-dot").iconClass("disabled").label(F.append("inspector.zoom_to.no_selection"))();else{var o=e.mode();o&&o.zoomToSelected&&o.zoomToSelected()}r=null}return function(a){var o=Ye().placement(fe.textDirection()==="rtl"?"right":"left").title(function(){return t()?F.append("inspector.zoom_to.no_selection"):F.append("inspector.zoom_to.title")}).keys([F("inspector.zoom_to.key")]),s=a.append("button").on("pointerup",n).on("click",i).call(ce("#iD-icon-framed-dot","light")).call(o);function l(){s.classed("disabled",t()),s.select(".tooltip.in").empty()||s.call(o.updateContent)}e.on("enter.uiZoomToSelection",l),l()}}function ws(e,t){var r,n="",i="",a="",o,s=G(null),l,u={id:e};u.label=function(f){return arguments.length?(n=f,u):n},u.key=function(f){return arguments.length?(r=f,u):r},u.description=function(f){return arguments.length?(i=f,u):i},u.iconName=function(f){return arguments.length?(a=f,u):a},u.sections=function(f){return arguments.length?(o=f,u):o},u.selection=function(){return s};function c(){t.ui().togglePanes()}return u.togglePane=function(f){f&&f.preventDefault(),l.hide(),t.ui().togglePanes(s.classed("shown")?void 0:s)},u.renderToggleButton=function(f){l||(l=Ye().placement(fe.textDirection()==="rtl"?"right":"left").title(()=>i).keys([r])),f.append("button").on("click",u.togglePane).call(ce("#"+a,"light")).call(l)},u.renderContent=function(f){o&&o.forEach(function(p){f.call(p.render)})},u.renderPane=function(f){s=f.append("div").attr("class","fillL map-pane hide "+e+"-pane").attr("pane",e);var p=s.append("div").attr("class","pane-heading");p.append("h2").text("").call(n),p.append("button").attr("title",F("icons.close")).on("click",c).call(ce("#iD-icon-close")),s.append("div").attr("class","pane-content").call(u.renderContent),r&&t.keybinding().on(r,u.togglePane)},u}function Sp(e){var t=Nt("background-display-options",e).label(()=>F.append("background.display_options")).disclosureContent(u),r=Te("background-opacity"),n=0,i=3,a=["brightness","contrast","saturation","sharpness"],o={brightness:r!==null?+r:1,contrast:1,saturation:1,sharpness:1};function s(c,f,p){return Math.max(f,Math.min(c,p))}function l(c,f){f=s(f,n,i),o[c]=f,e.background()[c](f),c==="brightness"&&Te("background-opacity",f),t.reRender()}function u(c){var f=c.selectAll(".display-options-container").data([0]),p=f.enter().append("div").attr("class","display-options-container controls-list"),d=p.selectAll(".display-control").data(a).enter().append("label").attr("class",function(x){return"display-control display-control-"+x});d.html(function(x){return F.html("background."+x)}).append("span").attr("class",function(x){return"display-option-value display-option-value-"+x});var g=d.append("div").attr("class","control-wrap");g.append("input").attr("class",function(x){return"display-option-input display-option-input-"+x}).attr("type","range").attr("min",n).attr("max",i).attr("step","0.05").on("input",function(x,b){var m=G(this).property("value");!m&&x&&x.target&&(m=x.target.value),l(b,m)}),g.append("button").attr("title",function(x){return`${F("background.reset")} ${F("background."+x)}`}).attr("class",function(x){return"display-option-reset display-option-reset-"+x}).on("click",function(x,b){x.button===0&&l(b,1)}).call(ce("#iD-icon-"+(fe.textDirection()==="rtl"?"redo":"undo"))),p.append("a").attr("class","display-option-resetlink").attr("role","button").attr("href","#").call(F.append("background.reset_all")).on("click",function(x){x.preventDefault();for(var b=0;bF.append("background.backgrounds")).disclosureContent(o);function a(){return Te("background-last-used-toggle")}function o(d){var g=d.selectAll(".layer-background-list").data([0]);t=g.enter().append("ul").attr("class","layer-list layer-background-list").attr("dir","auto").merge(g);var x=d.selectAll(".bg-extras-list").data([0]).enter().append("ul").attr("class","layer-list bg-extras-list"),b=x.append("li").attr("class","minimap-toggle-item").append("label").call(Ye().title(()=>F.append("background.minimap.tooltip")).keys([F("background.minimap.key")]).placement("top"));b.append("input").attr("type","checkbox").on("change",function(y){y.preventDefault(),z0.toggle()}),b.append("span").call(F.append("background.minimap.description"));var m=x.append("li").attr("class","background-panel-toggle-item").append("label").call(Ye().title(()=>F.append("background.panel.tooltip")).keys([st("\u2318\u21E7"+F("info_panels.background.key"))]).placement("top"));m.append("input").attr("type","checkbox").on("change",function(y){y.preventDefault(),e.ui().info.toggle("background")}),m.append("span").call(F.append("background.panel.description"));var v=x.append("li").attr("class","location-panel-toggle-item").append("label").call(Ye().title(()=>F.append("background.location_panel.tooltip")).keys([st("\u2318\u21E7"+F("info_panels.location.key"))]).placement("top"));v.append("input").attr("type","checkbox").on("change",function(y){y.preventDefault(),e.ui().info.toggle("location")}),v.append("span").call(F.append("background.location_panel.description")),d.selectAll(".imagery-faq").data([0]).enter().append("div").attr("class","imagery-faq").append("a").attr("target","_blank").call(ce("#iD-icon-out-link","inline")).attr("href","https://github.com/openstreetmap/iD/blob/develop/FAQ.md#how-can-i-report-an-issue-with-background-imagery").append("span").call(F.append("background.imagery_problem_faq")),t.call(l,"radio",function(y,_){c(_)},function(y){return!y.isHidden()&&!y.overlay})}function s(d){d.each(function(g,x,b){var m=G(this).select("label"),v=m.select("span"),y=xF.append("background.switch")).keys([st("\u2318"+F("background.key"))])):(_||w)&&m.call(Ye().placement(y).title(()=>_?g.description():g.label()))})}function l(d,g,x,b){var m=e.background().sources(e.map().extent(),e.map().zoom(),!0).filter(b).sort(function(w,A){return w.best()&&!A.best()?-1:A.best()&&!w.best()?1:T1(w.area(),A.area())||Ci(w.name(),A.name())||0}),v=d.selectAll("li").data(m,function(w,A){return w.id+"---"+A});v.exit().remove();var y=v.enter().append("li").classed("layer-custom",function(w){return w.id==="custom"}).classed("best",function(w){return w.best()}),_=y.append("label");_.append("input").attr("type",g).attr("name","background-layer").attr("value",function(w){return w.id}).on("change",x),_.append("span").each(function(w){w.label()(G(this))}),y.filter(function(w){return w.id==="custom"}).append("button").attr("class","layer-browse").call(Ye().title(()=>F.append("settings.custom_background.tooltip")).placement(fe.textDirection()==="rtl"?"right":"left")).on("click",function(w){w.preventDefault(),p()}).call(ce("#iD-icon-more")),y.filter(function(w){return w.best()}).append("div").attr("class","best").call(Ye().title(()=>F.append("background.best_imagery")).placement(fe.textDirection()==="rtl"?"right":"left")).append("span").text("\u2605"),d.call(u)}function u(d){function g(x){return e.background().showsLayer(x)}d.selectAll("li").classed("active",g).classed("switch",function(x){return x.id===a()}).call(s).selectAll("input").property("checked",g)}function c(d){if(d.id==="custom"&&!d.template())return p();var g=e.background().baseLayerSource();Te("background-last-used-toggle",g.id),Te("background-last-used",d.id),e.background().baseLayerSource(d)}function f(d){d&&d.template?(r.template(d.template),c(r)):(r.template(""),c(e.background().findSource("none")))}function p(){e.container().call(n)}return e.background().on("change.background_list",function(){t.call(u)}),e.map().on("move.background_list",Bt(function(){window.requestIdleCallback(i.reRender)},1e3)),i}function Fp(e){var t=Nt("background-offset",e).label(()=>F.append("background.fix_misalignment")).disclosureContent(u).expandedByDefault(!1),r="PointerEvent"in window?"pointer":"mouse",n=[["top",[0,-.5]],["left",[-.5,0]],["right",[.5,0]],["bottom",[0,.5]]];function i(){var c=C4(e.background().offset()),f=+c[0].toFixed(2),p=+c[1].toFixed(2);e.container().selectAll(".nudge-inner-rect").select("input").classed("error",!1).property("value",f+", "+p),e.container().selectAll(".nudge-reset").classed("disabled",function(){return f===0&&p===0})}function a(){e.background().offset([0,0]),i()}function o(c){e.background().nudge(c,e.map().zoom()),i()}function s(){var c=G(this),f=c.node().value;if(f==="")return a();if(f=f.replace(/;/g,",").split(",").map(function(p){return!isNaN(p)&&p}),f.length!==2||!f[0]||!f[1]){c.classed("error",!0);return}e.background().offset(S4(f)),i()}function l(c){if(c.button!==0)return;var f=[c.clientX,c.clientY],p=c.pointerId||"mouse";e.container().append("div").attr("class","nudge-surface"),G(window).on(r+"move.drag-bg-offset",d).on(r+"up.drag-bg-offset",g),r==="pointer"&&G(window).on("pointercancel.drag-bg-offset",g);function d(x){if(p===(x.pointerId||"mouse")){var b=[x.clientX,x.clientY],m=[-(f[0]-b[0])/4,-(f[1]-b[1])/4];f=b,o(m)}}function g(x){p===(x.pointerId||"mouse")&&x.button===0&&(e.container().selectAll(".nudge-surface").remove(),G(window).on(".drag-bg-offset",null))}}function u(c){var f=c.selectAll(".nudge-container").data([0]),p=f.enter().append("div").attr("class","nudge-container");p.append("div").attr("class","nudge-instructions").call(F.append("background.offset"));var d=p.append("div").attr("class","nudge-controls-wrap"),g=d.append("div").attr("class","nudge-outer-rect").on(r+"down",l);g.append("div").attr("class","nudge-inner-rect").append("input").attr("type","text").attr("aria-label",F("background.offset_label")).on("change",s),d.append("div").selectAll("button").data(n).enter().append("button").attr("title",function(x){return F(`background.nudge.${x[0]}`)}).attr("class",function(x){return x[0]+" nudge"}).on("click",function(x,b){o(b[1])}),d.append("button").attr("title",F("background.reset")).attr("class","nudge-reset disabled").on("click",function(x){x.preventDefault(),a()}).call(ce("#iD-icon-"+(fe.textDirection()==="rtl"?"redo":"undo"))),i()}return e.background().on("change.backgroundOffset-update",i),t}function Dp(e){var t=Nt("overlay-list",e).label(()=>F.append("background.overlays")).disclosureContent(s),r=G(null);function n(l){l.each(function(u,c,f){var p=G(this).select("label"),d=p.select("span"),g=cx||u.name()))})}function i(l){function u(c){return e.background().showsLayer(c)}l.selectAll("li").classed("active",u).call(n).selectAll("input").property("checked",u)}function a(l,u){l.preventDefault(),e.background().toggleOverlayLayer(u),r.call(i),document.activeElement.blur()}function o(l,u,c,f){var p=e.background().sources(e.map().extent(),e.map().zoom(),!0).filter(f),d=l.selectAll("li").data(p,function(m){return m.name()});d.exit().remove();var g=d.enter().append("li"),x=g.append("label");x.append("input").attr("type",u).attr("name","layers").on("change",c),x.append("span").each(function(m){m.label()(G(this))}),l.selectAll("li").sort(b),l.call(i);function b(m,v){return m.best()&&!v.best()?-1:v.best()&&!m.best()?1:T1(m.area(),v.area())||Ci(m.name(),v.name())||0}}function s(l){var u=l.selectAll(".layer-overlay-list").data([0]);r=u.enter().append("ul").attr("class","layer-list layer-overlay-list").attr("dir","auto").merge(u),r.call(o,"checkbox",a,function(c){return!c.isHidden()&&c.overlay})}return e.map().on("move.overlay_list",Bt(function(){window.requestIdleCallback(t.reRender)},1e3)),t}function Tp(e){var t=ws("background",e).key(F("background.key")).label(F.append("background.title")).description(F.append("background.description")).iconName("iD-icon-layers").sections([Ip(e),Dp(e),Sp(e),Fp(e)]);return t}function Mp(e){var t=[["help",["welcome","open_data_h","open_data","before_start_h","before_start","open_source_h","open_source","open_source_attribution","open_source_help"]],["overview",["navigation_h","navigation_drag","navigation_zoom","features_h","features","nodes_ways"]],["editing",["select_h","select_left_click","select_right_click","select_space","multiselect_h","multiselect","multiselect_shift_click","multiselect_lasso","undo_redo_h","undo_redo","save_h","save","save_validation","upload_h","upload","backups_h","backups","keyboard_h","keyboard"]],["feature_editor",["intro","definitions","type_h","type","type_picker","fields_h","fields_all_fields","fields_example","fields_add_field","tags_h","tags_all_tags","tags_resources"]],["points",["intro","add_point_h","add_point","add_point_finish","move_point_h","move_point","delete_point_h","delete_point","delete_point_command"]],["lines",["intro","add_line_h","add_line","add_line_draw","add_line_continue","add_line_finish","modify_line_h","modify_line_dragnode","modify_line_addnode","connect_line_h","connect_line","connect_line_display","connect_line_drag","connect_line_tag","disconnect_line_h","disconnect_line_command","move_line_h","move_line_command","move_line_connected","delete_line_h","delete_line","delete_line_command"]],["areas",["intro","point_or_area_h","point_or_area","add_area_h","add_area_command","add_area_draw","add_area_continue","add_area_finish","square_area_h","square_area_command","modify_area_h","modify_area_dragnode","modify_area_addnode","delete_area_h","delete_area","delete_area_command"]],["relations",["intro","edit_relation_h","edit_relation","edit_relation_add","edit_relation_delete","maintain_relation_h","maintain_relation","relation_types_h","multipolygon_h","multipolygon","multipolygon_create","multipolygon_merge","turn_restriction_h","turn_restriction","turn_restriction_field","turn_restriction_editing","route_h","route","route_add","boundary_h","boundary","boundary_add"]],["operations",["intro","intro_2","straighten","orthogonalize","circularize","move","rotate","reflect","continue","reverse","disconnect","split","extract","merge","delete","downgrade","copy_paste"]],["notes",["intro","add_note_h","add_note","place_note","move_note","update_note_h","update_note","save_note_h","save_note"]],["imagery",["intro","sources_h","choosing","sources","offsets_h","offset","offset_change"]],["streetlevel",["intro","using_h","using","photos","viewer"]],["gps",["intro","survey","using_h","using","tracing","upload"]],["qa",["intro","tools_h","tools","issues_h","issues"]]],r={"help.help.open_data_h":3,"help.help.before_start_h":3,"help.help.open_source_h":3,"help.overview.navigation_h":3,"help.overview.features_h":3,"help.editing.select_h":3,"help.editing.multiselect_h":3,"help.editing.undo_redo_h":3,"help.editing.save_h":3,"help.editing.upload_h":3,"help.editing.backups_h":3,"help.editing.keyboard_h":3,"help.feature_editor.type_h":3,"help.feature_editor.fields_h":3,"help.feature_editor.tags_h":3,"help.points.add_point_h":3,"help.points.move_point_h":3,"help.points.delete_point_h":3,"help.lines.add_line_h":3,"help.lines.modify_line_h":3,"help.lines.connect_line_h":3,"help.lines.disconnect_line_h":3,"help.lines.move_line_h":3,"help.lines.delete_line_h":3,"help.areas.point_or_area_h":3,"help.areas.add_area_h":3,"help.areas.square_area_h":3,"help.areas.modify_area_h":3,"help.areas.delete_area_h":3,"help.relations.edit_relation_h":3,"help.relations.maintain_relation_h":3,"help.relations.relation_types_h":2,"help.relations.multipolygon_h":3,"help.relations.turn_restriction_h":3,"help.relations.route_h":3,"help.relations.boundary_h":3,"help.notes.add_note_h":3,"help.notes.update_note_h":3,"help.notes.save_note_h":3,"help.imagery.sources_h":3,"help.imagery.offsets_h":3,"help.streetlevel.using_h":3,"help.gps.using_h":3,"help.qa.tools_h":3,"help.qa.issues_h":3},n=t.map(function(a){var o="help."+a[0],s={version:e.version},l=a[1].reduce(function(u,c){var f=o+"."+c,p=r[f],d=p?Array(p+1).join("#")+" ":"";return u+d+_e(f,s)+` + +`},"");return{title:F.html(o+".title"),content:Gt(l.trim()).replace(//g,"").replace(/<\/code>/g,"")}}),i=ws("help",e).key(F("help.key")).label(F.append("help.title")).description(F.append("help.title")).iconName("iD-icon-help");return i.renderContent=function(a){function o(b,m){var v=fe.textDirection()==="rtl";a.property("scrollTop",0),i.selection().select(".pane-heading h2").html(b.title),g.html(b.content),g.selectAll("a").attr("target","_blank"),c.classed("selected",function(w){return w.title===b.title}),x.html(""),v?x.call(y).call(_):x.call(_).call(y);function y(w){if(m0){var A=w.append("a").attr("href","#").attr("class","previous").on("click",function(I){I.preventDefault(),o(n[m-1],m-1)});A.call(ce(v?"#iD-icon-forward":"#iD-icon-backward","inline")).append("span").html(n[m-1].title)}}}function s(b){b.preventDefault(),!e.inIntro()&&(e.container().call(kl(e)),e.ui().togglePanes())}function l(b){b.preventDefault(),e.container().call(e.ui().shortcuts,!0)}var u=a.append("ul").attr("class","toc"),c=u.selectAll("li").data(n).enter().append("li").append("a").attr("role","button").attr("href","#").html(function(b){return b.title}).on("click",function(b,m){b.preventDefault(),o(m,n.indexOf(m))}),f=u.append("li").attr("class","shortcuts").call(Ye().title(()=>F.append("shortcuts.tooltip")).keys(["?"]).placement("top")).append("a").attr("href","#").on("click",l);f.append("div").call(F.append("shortcuts.title"));var p=u.append("li").attr("class","walkthrough").append("a").attr("href","#").on("click",s);p.append("svg").attr("class","logo logo-walkthrough").append("use").attr("xlink:href","#iD-logo-walkthrough"),p.append("div").call(F.append("splash.walkthrough"));var d=a.append("div").attr("class","left-content"),g=d.append("div").attr("class","body"),x=d.append("div").attr("class","nav");o(n[0],0)},i}function ac(e,t,r){var n=[],i=Nt(e,r).label(function(){if(!n)return"";var u=n.length>1e3?"1000+":String(n.length);return F.append("inspector.title_count",{title:F("issues."+t+"s.list_title"),count:u})}).disclosureContent(s).shouldDisplay(function(){return n&&n.length});function a(){return{what:Te("validate-what")||"edited",where:Te("validate-where")||"all"}}function o(){n=r.validator().getIssuesBySeverity(a())[t]}function s(u){var c=r.map().center(),f=r.graph(),p=n.map(function(g){var x=g.extent(f),b=x?Vt(c,x.center()):0;return Object.assign(g,{dist:b})}).sort(function(g,x){return g.dist-x.dist});p=p.slice(0,1e3),u.call(l,p)}function l(u,c){var f=u.selectAll(".issues-list").data([0]);f=f.enter().append("ul").attr("class","layer-list issues-list "+t+"s-list").merge(f);var p=f.selectAll("li").data(c,function(b){return b.key});p.exit().remove();var d=p.enter().append("li").attr("class",function(b){return"issue severity-"+b.severity}),g=d.append("button").attr("class","issue-label").on("click",function(b,m){r.validator().focusIssue(m)}).on("mouseover",function(b,m){Ct(m.entityIds,!0,r)}).on("mouseout",function(b,m){Ct(m.entityIds,!1,r)}),x=g.append("span").attr("class","issue-text");x.append("span").attr("class","issue-icon").each(function(b){var m="#iD-icon-"+(b.severity==="warning"?"alert":"error");G(this).call(ce(m))}),x.append("span").attr("class","issue-message"),p=p.merge(d).order(),p.selectAll(".issue-message").text("").each(function(b){return b.message(r)(G(this))})}return r.validator().on("validated.uiSectionValidationIssues"+e,function(){window.requestIdleCallback(function(){o(),i.reRender()})}),r.map().on("move.uiSectionValidationIssues"+e,Bt(function(){window.requestIdleCallback(function(){a().where==="visible"&&o(),i.reRender()})},1e3)),i}function Np(e){var t=Nt("issues-options",e).content(r);function r(a){var o=a.selectAll(".issues-options-container").data([0]);o=o.enter().append("div").attr("class","issues-options-container").merge(o);var s=[{key:"what",values:["edited","all"]},{key:"where",values:["visible","all"]}],l=o.selectAll(".issues-option").data(s,function(f){return f.key}),u=l.enter().append("div").attr("class",function(f){return"issues-option issues-option-"+f.key});u.append("div").attr("class","issues-option-title").html(function(f){return F.html("issues.options."+f.key+".title")});var c=u.selectAll("label").data(function(f){return f.values.map(function(p){return{value:p,key:f.key}})}).enter().append("label");c.append("input").attr("type","radio").attr("name",function(f){return"issues-option-"+f.key}).attr("value",function(f){return f.value}).property("checked",function(f){return n()[f.key]===f.value}).on("change",function(f,p){i(f,p.key,p.value)}),c.append("span").html(function(f){return F.html("issues.options."+f.key+"."+f.value)})}function n(){return{what:Te("validate-what")||"edited",where:Te("validate-where")||"all"}}function i(a,o,s){!s&&a&&a.target&&(s=a.target.value),Te("validate-"+o,s),e.validator().validate()}return t}function Pp(e){var t=0,r=20,n=5,i=Nt("issues-rules",e).disclosureContent(o).label(()=>F.append("issues.rules.title")),a=e.validator().getRuleKeys().filter(function(f){return f!=="maprules"}).sort(function(f,p){return F("issues."+f+".title")'}),F.html("issues."+I+".title",E)}),m=m.merge(v),m.classed("active",b).selectAll("input").property("checked",b).property("indeterminate",!1);var _=Te("validate-square-degrees");_===null&&(_=n.toString());var w=m.selectAll(".square-degrees"),A=w.selectAll(".square-degrees-input").data([0]);A.enter().append("input").attr("type","number").attr("min",t.toString()).attr("max",r.toString()).attr("step","0.5").attr("class","square-degrees-input").call(pt).on("click",function(I){I.preventDefault(),I.stopPropagation(),this.select()}).on("keyup",function(I){I.keyCode===13&&(this.blur(),this.select())}).on("blur",l).merge(A).property("value",_)}function l(){var f=G(this),p=je(f).trim(),d=Number(p);isFinite(d)?d>r?d=r:dF.append("map_data.data_layers")).disclosureContent(i);function i(x){var b=x.selectAll(".data-layer-container").data([0]);b.enter().append("div").attr("class","data-layer-container").merge(b).call(l).call(u).call(f).call(c).call(g)}function a(x){var b=r.layer(x);return b?b.enabled():!1}function o(x,b){var m=e.mode();if(!(m&&/^draw/.test(m.id))){var v=r.layer(x);v&&(v.enabled(b),!b&&(x==="osm"||x==="notes")&&e.enter(Ge(e)))}}function s(x){o(x,!a(x))}function l(x){var b=["osm","notes"],m=r.all().filter(function(A){return b.indexOf(A.id)!==-1}),v=x.selectAll(".layer-list-osm").data([0]);v=v.enter().append("ul").attr("class","layer-list layer-list-osm").merge(v);var y=v.selectAll(".list-item").data(m);y.exit().remove();var _=y.enter().append("li").attr("class",function(A){return"list-item list-item-"+A.id}),w=_.append("label").each(function(A){A.id==="osm"?G(this).call(Ye().title(()=>F.append("map_data.layers."+A.id+".tooltip")).keys([st("\u2325"+F("area_fill.wireframe.key"))]).placement("bottom")):G(this).call(Ye().title(()=>F.append("map_data.layers."+A.id+".tooltip")).placement("bottom"))});w.append("input").attr("type","checkbox").on("change",function(A,I){s(I.id)}),w.append("span").html(function(A){return F.html("map_data.layers."+A.id+".title")}),y.merge(_).classed("active",function(A){return A.layer.enabled()}).selectAll("input").property("checked",function(A){return A.layer.enabled()})}function u(x){var b=["keepRight","improveOSM","osmose"],m=r.all().filter(function(A){return b.indexOf(A.id)!==-1}),v=x.selectAll(".layer-list-qa").data([0]);v=v.enter().append("ul").attr("class","layer-list layer-list-qa").merge(v);var y=v.selectAll(".list-item").data(m);y.exit().remove();var _=y.enter().append("li").attr("class",function(A){return"list-item list-item-"+A.id}),w=_.append("label").each(function(A){G(this).call(Ye().title(()=>F.append("map_data.layers."+A.id+".tooltip")).placement("bottom"))});w.append("input").attr("type","checkbox").on("change",function(A,I){s(I.id)}),w.append("span").each(function(A){F.append("map_data.layers."+A.id+".title")(G(this))}),y.merge(_).classed("active",function(A){return A.layer.enabled()}).selectAll("input").property("checked",function(A){return A.layer.enabled()})}function c(x){var b=r.layer("data"),m=[{name:"Detroit Neighborhoods/Parks",src:"neighborhoods-parks",tooltip:"Neighborhood boundaries and parks as compiled by City of Detroit in concert with community groups.",template:"https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmur6x34562qp9iv1u3ksf-54hev,jonahadkins.cjksmqxdx33jj2wp90xd9x2md-4e5y2/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"},{name:"Detroit Composite POIs",src:"composite-poi",tooltip:"Fire Inspections, Business Licenses, and other public location data collated from the City of Detroit.",template:"https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmm6a02sli31myxhsr7zf3-2sw8h/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"},{name:"Detroit All-The-Places POIs",src:"alltheplaces-poi",tooltip:"Public domain business location data created by web scrapers.",template:"https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmswgk340g2vo06p1w9w0j-8fjjc/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"}],v=Pe([-83.5,42.1],[-82.8,42.5]),y=e.map().zoom()>9&&v.contains(e.map().center()),_=x.selectAll(".vectortile-container").data(y?[0]:[]);_.exit().remove();var w=_.enter().append("div").attr("class","vectortile-container");w.append("h4").attr("class","vectortile-header").text("Detroit Vector Tiles (Beta)"),w.append("ul").attr("class","layer-list layer-list-vectortile"),w.append("div").attr("class","vectortile-footer").append("a").attr("target","_blank").call(ce("#iD-icon-out-link","inline")).attr("href","https://github.com/osmus/detroit-mapping-challenge").append("span").text("About these layers"),_=_.merge(w);var A=_.selectAll(".layer-list-vectortile"),I=A.selectAll(".list-item").data(m);I.exit().remove();var E=I.enter().append("li").attr("class",function(P){return"list-item list-item-"+P.src}),k=E.append("label").each(function(P){G(this).call(Ye().title(P.tooltip).placement("top"))});k.append("input").attr("type","radio").attr("name","vectortile").on("change",D),k.append("span").text(function(P){return P.name}),I.merge(E).classed("active",S).selectAll("input").property("checked",S);function S(P){return b&&b.template()===P.template}function D(P,O){Te("settings-custom-data-url",O.template),b&&(b.template(O.template,O.src),b.enabled(!0))}}function f(x){var b=r.layer("data"),m=b&&b.hasData(),v=m&&b.enabled(),y=x.selectAll(".layer-list-data").data(b?[0]:[]);y.exit().remove();var _=y.enter().append("ul").attr("class","layer-list layer-list-data"),w=_.append("li").attr("class","list-item-data"),A=w.append("label").call(Ye().title(()=>F.append("map_data.layers.custom.tooltip")).placement("top"));A.append("input").attr("type","checkbox").on("change",function(){s("data")}),A.append("span").call(F.append("map_data.layers.custom.title")),w.append("button").attr("class","open-data-options").call(Ye().title(()=>F.append("settings.custom_data.tooltip")).placement(fe.textDirection()==="rtl"?"right":"left")).on("click",function(I){I.preventDefault(),p()}).call(ce("#iD-icon-more")),w.append("button").attr("class","zoom-to-data").call(Ye().title(()=>F.append("map_data.layers.custom.zoom")).placement(fe.textDirection()==="rtl"?"right":"left")).on("click",function(I){G(this).classed("disabled")||(I.preventDefault(),I.stopPropagation(),b.fitZoom())}).call(ce("#iD-icon-framed-dot","monochrome")),y=y.merge(_),y.selectAll(".list-item-data").classed("active",v).selectAll("label").classed("deemphasize",!m).selectAll("input").property("disabled",!m).property("checked",v),y.selectAll("button.zoom-to-data").classed("disabled",!m)}function p(){e.container().call(t)}function d(x){var b=r.layer("data");x&&x.url?b.url(x.url):x&&x.fileList&&b.fileList(x.fileList)}function g(x){var b=x.selectAll(".md-extras-list").data([0]).enter().append("ul").attr("class","layer-list md-extras-list"),m=b.append("li").attr("class","history-panel-toggle-item").append("label").call(Ye().title(()=>F.append("map_data.history_panel.tooltip")).keys([st("\u2318\u21E7"+F("info_panels.history.key"))]).placement("top"));m.append("input").attr("type","checkbox").on("change",function(y){y.preventDefault(),e.ui().info.toggle("history")}),m.append("span").call(F.append("map_data.history_panel.title"));var v=b.append("li").attr("class","measurement-panel-toggle-item").append("label").call(Ye().title(()=>F.append("map_data.measurement_panel.tooltip")).keys([st("\u2318\u21E7"+F("info_panels.measurement.key"))]).placement("top"));v.append("input").attr("type","checkbox").on("change",function(y){y.preventDefault(),e.ui().info.toggle("measurement")}),v.append("span").call(F.append("map_data.measurement_panel.title"))}return e.layers().on("change.uiSectionDataLayers",n.reRender),e.map().on("move.uiSectionDataLayers",Bt(function(){window.requestIdleCallback(n.reRender)},1e3)),n}function $p(e){var t=e.features().keys(),r=Nt("map-features",e).label(()=>F.append("map_data.map_features")).disclosureContent(n).expandedByDefault(!1);function n(u){var c=u.selectAll(".layer-feature-list-container").data([0]),f=c.enter().append("div").attr("class","layer-feature-list-container");f.append("ul").attr("class","layer-list layer-feature-list");var p=f.append("div").attr("class","feature-list-links section-footer");p.append("a").attr("class","feature-list-link").attr("role","button").attr("href","#").call(F.append("issues.disable_all")).on("click",function(d){d.preventDefault(),e.features().disableAll()}),p.append("a").attr("class","feature-list-link").attr("role","button").attr("href","#").call(F.append("issues.enable_all")).on("click",function(d){d.preventDefault(),e.features().enableAll()}),c=c.merge(f),c.selectAll(".layer-feature-list").call(i,t,"checkbox","feature",s,o)}function i(u,c,f,p,d,g){var x=u.selectAll("li").data(c);x.exit().remove();var b=x.enter().append("li").call(Ye().title(function(v){var y=F.append(p+"."+v+".tooltip");if(a(v)){var _=l("osm")?F.append("map_data.autohidden"):F.append("map_data.osmhidden");return w=>{w.call(y),w.append("div").call(_)}}return y}).placement("top")),m=b.append("label");m.append("input").attr("type",f).attr("name",p).on("change",d),m.append("span").html(function(v){return F.html(p+"."+v+".description")}),x=x.merge(b),x.classed("active",g).selectAll("input").property("checked",g).property("indeterminate",a)}function a(u){return e.features().autoHidden(u)}function o(u){return e.features().enabled(u)}function s(u,c){e.features().toggle(c)}function l(u){var c=e.layers().layer(u);return c&&c.enabled()}return e.features().on("change.map_features",r.reRender),r}function Up(e){var t=Nt("fill-area",e).label(()=>F.append("map_data.style_options")).disclosureContent(r).expandedByDefault(!1);function r(s){var l=s.selectAll(".layer-fill-list").data([0]);l.enter().append("ul").attr("class","layer-list layer-fill-list").merge(l).call(n,e.map().areaFillOptions,"radio","area_fill",o,i);var u=s.selectAll(".layer-visual-diff-list").data([0]);u.enter().append("ul").attr("class","layer-list layer-visual-diff-list").merge(u).call(n,["highlight_edits"],"checkbox","visual_diff",a,function(){return e.surface().classed("highlight-edited")})}function n(s,l,u,c,f,p){var d=s.selectAll("li").data(l);d.exit().remove();var g=d.enter().append("li").call(Ye().title(function(b){return F.append(c+"."+b+".tooltip")}).keys(function(b){var m=b==="wireframe"?F("area_fill.wireframe.key"):null;return b==="highlight_edits"&&(m=F("map_data.highlight_edits.key")),m?[m]:null}).placement("top")),x=g.append("label");x.append("input").attr("type",u).attr("name",c).on("change",f),x.append("span").html(function(b){return F.html(c+"."+b+".description")}),d=d.merge(g),d.classed("active",p).selectAll("input").property("checked",p).property("indeterminate",!1)}function i(s){return e.map().activeAreaFill()===s}function a(s){s.preventDefault(),e.map().toggleHighlightEdited()}function o(s,l){e.map().activeAreaFill(l)}return e.map().on("changeHighlighting.ui_style, changeAreaFill.ui_style",t.reRender),t}function qM(e){var t=xe("change"),r=e.layers().layer("local-photos"),n;function i(o){n=bs(o).okButton(),n.classed("settings-modal settings-local-photos",!0),n.select(".modal-section.header").append("h3").call(F.append("local_photos.header")),n.select(".modal-section.message-text").append("div").classed("local-photos",!0);var s=n.select(".modal-section.message-text .local-photos").append("div").classed("instructions",!0);s.append("p").classed("instructions-local-photos",!0).call(F.append("local_photos.file.instructions")),s.append("input").classed("field-file",!0).attr("type","file").attr("multiple","multiple").attr("accept",".jpg,.jpeg,.png,image/png,image/jpeg").style("visibility","hidden").attr("id","local-photo-files").on("change",function(u){var c=u.target.files;c&&c.length&&(l.select("ul").append("li").classed("placeholder",!0).append("div"),t.call("change",this,c)),u.target.value=null}),s.append("label").attr("for","local-photo-files").classed("button",!0).call(F.append("local_photos.file.label"));let l=n.select(".modal-section.message-text .local-photos").append("div").append("div").classed("list-local-photos",!0);l.append("ul"),a(l.select("ul")),e.layers().on("change",()=>a(l.select("ul")))}function a(o){var c;function s(f){return!(ci(f.loc)&&ts(f.loc[0])&&ts(f.loc[1]))}o.selectAll("li.placeholder").remove();let l=o.selectAll("li").data((c=r.getPhotos())!=null?c:[],f=>f.id);l.exit().remove();let u=l.enter().append("li");u.append("span").classed("filename",!0),u.append("button").classed("form-field-button zoom-to-data",!0).attr("title",F("local_photos.zoom_single")).call(ce("#iD-icon-framed-dot")),u.append("button").classed("form-field-button no-geolocation",!0).call(ce("#iD-icon-alert")).call(Ye().title(()=>F.append("local_photos.no_geolocation.tooltip")).placement("left")),u.append("button").classed("form-field-button remove",!0).attr("title",F("icons.remove")).call(ce("#iD-operation-delete")),l=l.merge(u),l.classed("invalid",s),l.select("span.filename").text(f=>f.name).attr("title",f=>f.name),l.select("span.filename").on("click",(f,p)=>{r.openPhoto(f,p,!1)}),l.select("button.zoom-to-data").on("click",(f,p)=>{r.openPhoto(f,p,!0)}),l.select("button.remove").on("click",(f,p)=>{r.removePhoto(p.id),a(o)})}return ke(i,t,"on")}function zp(e){var t=qM(e).on("change",g),r=e.layers(),n=Nt("photo-overlays",e).label(()=>F.append("photo_overlays.title")).disclosureContent(i).expandedByDefault(!1);function i(x){var b=x.selectAll(".photo-overlay-container").data([0]);b.enter().append("div").attr("class","photo-overlay-container").merge(b).call(a).call(o).call(s).call(l).call(p)}function a(x){var b=e.photos().overlayLayerIDs(),m=r.all().filter(function(S){return b.indexOf(S.id)!==-1}),v=m.filter(function(S){return S.layer.supported()?_(S)?!0:typeof S.layer.validHere=="function"?S.layer.validHere(e.map().extent(),e.map().zoom()):!0:!1});function y(S){return S.layer&&S.layer.supported()}function _(S){return y(S)&&S.layer.enabled()}function w(S){var D,P,O;return(O=(P=(D=S.layer).rendered)==null?void 0:P.call(D,e.map().zoom()))!=null?O:!0}var A=x.selectAll(".layer-list-photos").data([0]);A=A.enter().append("ul").attr("class","layer-list layer-list-photos").merge(A);var I=A.selectAll(".list-item-photos").data(v);I.exit().remove();var E=I.enter().append("li").attr("class",function(S){var D="list-item-photos list-item-"+S.id;return(S.id==="mapillary-signs"||S.id==="mapillary-map-features")&&(D+=" indented"),D}),k=E.append("label").each(function(S){var D;S.id==="mapillary-signs"?D="mapillary.signs.tooltip":S.id==="mapillary"?D="mapillary_images.tooltip":S.id==="kartaview"?D="kartaview_images.tooltip":D=S.id.replace(/-/g,"_")+".tooltip",G(this).call(Ye().title(()=>w(S)?F.append(D):F.append("street_side.minzoom_tooltip")).placement("top"))});k.append("input").attr("type","checkbox").on("change",function(S,D){u(D.id)}),k.append("span").html(function(S){var D=S.id;return D==="mapillary-signs"&&(D="photo_overlays.traffic_signs"),F.html(D.replace(/-/g,"_")+".title")}),I.merge(E).classed("active",_).selectAll("input").property("disabled",S=>!w(S)).property("checked",_)}function o(x){var b=e.photos().allPhotoTypes();function m(A){return e.photos().showsPhotoType(A)}var v=x.selectAll(".layer-list-photo-types").data([0]);v.exit().remove(),v=v.enter().append("ul").attr("class","layer-list layer-list-photo-types").merge(v);var y=v.selectAll(".list-item-photo-types").data(e.photos().shouldFilterByPhotoType()?b:[]);y.exit().remove();var _=y.enter().append("li").attr("class",function(A){return"list-item-photo-types list-item-"+A}),w=_.append("label").each(function(A){G(this).call(Ye().title(()=>F.append("photo_overlays.photo_type."+A+".tooltip")).placement("top"))});w.append("input").attr("type","checkbox").on("change",function(A,I){e.photos().togglePhotoType(I)}),w.append("span").html(function(A){return F.html("photo_overlays.photo_type."+A+".title")}),y.merge(_).classed("active",m).selectAll("input").property("checked",m)}function s(x){var b=e.photos().dateFilters();function m(A){return e.photos().dateFilterValue(A)}var v=x.selectAll(".layer-list-date-filter").data([0]);v.exit().remove(),v=v.enter().append("ul").attr("class","layer-list layer-list-date-filter").merge(v);var y=v.selectAll(".list-item-date-filter").data(e.photos().shouldFilterByDate()?b:[]);y.exit().remove();var _=y.enter().append("li").attr("class","list-item-date-filter"),w=_.append("label").each(function(A){G(this).call(Ye().title(()=>F.append("photo_overlays.date_filter."+A+".tooltip")).placement("top"))});w.append("span").each(function(A){F.append("photo_overlays.date_filter."+A+".title")(G(this))}),w.append("input").attr("type","date").attr("class","list-item-input").attr("placeholder",F("units.year_month_day")).call(pt).each(function(A){je(G(this),e.photos().dateFilterValue(A)||"")}).on("change",function(A,I){var E=je(G(this)).trim();e.photos().setDateFilter(I,E,!0),y.selectAll("input").each(function(k){je(G(this),e.photos().dateFilterValue(k)||"")})}),y=y.merge(_).classed("active",m)}function l(x){function b(){return e.photos().usernames()}var m=x.selectAll(".layer-list-username-filter").data([0]);m.exit().remove(),m=m.enter().append("ul").attr("class","layer-list layer-list-username-filter").merge(m);var v=m.selectAll(".list-item-username-filter").data(e.photos().shouldFilterByUsername()?["username-filter"]:[]);v.exit().remove();var y=v.enter().append("li").attr("class","list-item-username-filter"),_=y.append("label").each(function(){G(this).call(Ye().title(()=>F.append("photo_overlays.username_filter.tooltip")).placement("top"))});_.append("span").call(F.append("photo_overlays.username_filter.title")),_.append("input").attr("type","text").attr("class","list-item-input").call(pt).property("value",w).on("change",function(){var A=G(this).property("value");e.photos().setUsernameFilter(A,!0),G(this).property("value",w)}),v.merge(y).classed("active",b);function w(){var A=e.photos().usernames();return A&&A.join("; ")}}function u(x){f(x,!c(x))}function c(x){var b=r.layer(x);return b?b.enabled():!1}function f(x,b){var m=r.layer(x);m&&m.enabled(b)}function p(x){var b=r.layer("local-photos"),m=b&&b.hasData(),v=m&&b.enabled(),y=x.selectAll(".layer-list-local-photos").data(b?[0]:[]);y.exit().remove();var _=y.enter().append("ul").attr("class","layer-list layer-list-local-photos"),w=_.append("li").attr("class","list-item-local-photos"),A=w.append("label").call(Ye().title(()=>F.append("local_photos.tooltip")));A.append("input").attr("type","checkbox").on("change",function(){u("local-photos")}),A.call(F.append("local_photos.header")),w.append("button").attr("class","open-data-options").call(Ye().title(()=>F.append("local_photos.tooltip_edit")).placement(fe.textDirection()==="rtl"?"right":"left")).on("click",function(I){I.preventDefault(),d()}).call(ce("#iD-icon-more")),w.append("button").attr("class","zoom-to-data").call(Ye().title(()=>F.append("local_photos.zoom")).placement(fe.textDirection()==="rtl"?"right":"left")).on("click",function(I){G(this).classed("disabled")||(I.preventDefault(),I.stopPropagation(),b.fitZoom())}).call(ce("#iD-icon-framed-dot","monochrome")),y=y.merge(_),y.selectAll(".list-item-local-photos").classed("active",v).selectAll("label").classed("deemphasize",!m).selectAll("input").property("disabled",!m).property("checked",v),y.selectAll("button.zoom-to-data").classed("disabled",!m)}function d(){e.container().call(t)}function g(x){var b=r.layer("local-photos");b.fileList(x)}return e.layers().on("change.uiSectionPhotoOverlays",n.reRender),e.photos().on("change.uiSectionPhotoOverlays",n.reRender),e.map().on("move.photo_overlays",Bt(function(){window.requestIdleCallback(n.reRender)},1e3)),n}var VM="-4000-01-01",GM=new Date().getFullYear()+"-12-31",gJ=[{name:"width",value:"125px"},{name:"text-align",value:"center"}],vJ=[{name:"font-weight",value:"bold"},{name:"display",value:"inline-block"},{name:"width",value:"75px"}];function qp(e){let t=Nt("date_ranges",e).label(()=>F.append("date_ranges.title")).disclosureContent(r).expandedByDefault(!1);function r(n){let i=n.selectAll(".date_ranges-container").data([0]);if(i.enter().selectAll("input").size())return;let o=i.enter().append("label").call(F.append("date_ranges.start_date.description")).merge(i),s=i.enter().append("input").attr("type","text").attr("value",VM).attr("title",()=>F("date_ranges.start_date.tooltip")).attr("placeholder",()=>F("date_ranges.start_date.placeholder")).merge(i);i.enter().append("br").merge(i);let l=i.enter().append("label").call(F.append("date_ranges.end_date.description")).merge(i),u=i.enter().append("input").attr("type","text").attr("value",GM).attr("title",()=>F("date_ranges.end_date.tooltip")).attr("placeholder",()=>F("date_ranges.end_date.placeholder")).merge(i);gJ.forEach(function(g){s.style(g.name,g.value),u.style(g.name,g.value)}),vJ.forEach(function(g){o.style(g.name,g.value),l.style(g.name,g.value)});function c(){let g=s.property("value"),x=u.property("value");e.features().dateRange=[g,x],e.features().redraw(),p()}function f(){let g=s.property("value"),x=u.property("value"),b=Qa(g),m=Qa(x);s.property("value",b?b.value:VM),u.property("value",m?m.value:GM)}function p(){if(!window.mocha){let g=pr(window.location.hash),x=e.features().dateRange;x?g.daterange=x.join(","):delete g.daterange,window.location.replace("#"+yt(g,!0))}}s.on("change",function(){f(),c()}),u.on("change",function(){f(),c()});let d=pr(window.location.hash).daterange;d&&(d=d.split(","),d[0].match(/^\-?[\d\-]+/)&&d[1].match(/^\-?[\d\-]+/)&&(s.property("value",d[0]),u.property("value",d[1]))),c()}return t}function Vp(e){var t=ws("map-data",e).key(F("map_data.key")).label(F.append("map_data.title")).description(F.append("map_data.description")).iconName("iD-icon-data").sections([Bp(e),qp(e),zp(e),Up(e),$p(e)]);return t}function Gp(e){return ws("preferences",e).key(F("preferences.key")).label(F.append("preferences.title")).description(F.append("preferences.description")).iconName("fas-user-cog").sections([ku(e)])}function Ap(e){var t=0,r={},n;function i(u){u.on("click.ui",function(P){if(P.button===0&&P.composedPath){var O=P.composedPath().some(function(T){return T.nodeType===1&&(T.nodeName==="INPUT"||T.nodeName==="LABEL"||T.nodeName==="A")});O||P.preventDefault()}});var c=br();"GestureEvent"in window&&!c.isMobileWebKit&&u.on("gesturestart.ui gesturechange.ui gestureend.ui",function(P){P.preventDefault()}),"PointerEvent"in window?G(window).on("pointerdown.ui pointerup.ui",function(P){var O=P.pointerType||"mouse";n!==O&&(n=O,u.attr("pointer",O))},!0):(n="mouse",u.attr("pointer","mouse")),u.attr("lang",fe.localeCode()).attr("dir",fe.textDirection()),u.call(x8(e));var f=e.map();f.redrawEnable(!1),f.on("hitMinZoom.ui",function(){a.flash.iconName("#iD-icon-no").label(F.append("cannot_zoom"))()}),u.append("svg").attr("id","ideditor-defs").call(a.svgDefs),u.append("div").attr("class","sidebar").call(a.sidebar);var p=u.append("div").attr("class","main-content active");p.append("div").attr("class","top-toolbar-wrap").append("div").attr("class","top-toolbar fillD").call(UM(e)),p.append("div").attr("class","main-map").attr("dir","ltr").call(f);var d=p.append("div").attr("class","over-map");d.append("div").attr("class","select-trap").text("t"),d.call(z0(e)).call(S8(e)),d.append("div").attr("class","spinner").call(bp(e));var g=d.append("div").attr("class","map-controls-wrap"),x=g.append("div").attr("class","map-controls");x.append("div").attr("class","map-control zoombuttons").call(Ep(e)),x.append("div").attr("class","map-control zoom-to-selection-control").call(zM(e)),x.append("div").attr("class","map-control geolocate-control").call(w8(e)),g.on("wheel.mapControls",function(P){P.deltaX||(g.node().scrollTop+=P.deltaY)});var b=d.append("div").attr("class","map-panes"),m=[Tp(e),Vp(e),Lp(e),Gp(e),Mp(e)];m.forEach(function(P){x.append("div").attr("class","map-control map-pane-control "+P.id+"-control").call(P.renderToggleButton),b.call(P.renderPane)}),a.info=E8(e),d.call(a.info),d.append("div").attr("class","photoviewer").classed("al",!0).classed("hide",!0).call(a.photoviewer),d.append("div").attr("class","attribution-wrap").attr("dir","ltr").call(h8(e));var v=p.append("div").attr("class","map-footer");v.append("div").attr("class","api-status").call(wp(e));var y=v.append("div").attr("class","map-footer-bar fillD");y.append("div").attr("class","flash-wrap footer-hide");var _=y.append("div").attr("class","main-footer-wrap footer-show");_.append("div").attr("class","scale-block").call(I8(e));var w=_.append("div").attr("class","info-block").append("ul").attr("class","map-footer-list");w.append("li").attr("class","user-list").call(g8(e));var A=e.connection().apiConnections();A&&A.length>1&&w.append("li").attr("class","source-switch").call(yp(e).keys(A)),w.append("li").attr("class","issues-info").call(A8(e)),w.append("li").attr("class","feature-warning").call(y8(e));var I=w.append("li");I.append("a").attr("target","_blank").attr("href","https://github.com/openstreetmap/iD/issues").attr("aria-label",F("report_a_bug")).call(ce("#iD-icon-bug","light")).call(Ye().title(()=>F.append("report_a_bug")).placement("top")),I.append("a").attr("target","_blank").attr("href","https://github.com/openstreetmap/iD/blob/develop/CONTRIBUTING.md#translating").attr("aria-label",F("help_translate")).call(ce("#iD-icon-translate","light")).call(Ye().title(()=>F.append("help_translate")).placement("top")),w.append("li").attr("class","version").call(_p(e)),e.embed()||w.call(m8(e)),a.onResize(),f.redrawEnable(!0),a.hash=jp(e),a.hash(),a.hash.hadLocation||f.centerZoom([0,0],2),window.onbeforeunload=function(){return e.save()},window.onunload=function(){e.history().unlock()},G(window).on("resize.editor",function(){a.onResize()});var E=80;e.keybinding().on("\u232B",function(P){P.preventDefault()}).on([F("sidebar.key"),"`","\xB2","@"],a.sidebar.toggle).on("\u2190",D([E,0])).on("\u2191",D([0,E])).on("\u2192",D([-E,0])).on("\u2193",D([0,-E])).on(st("\u2325\u2190"),D([f.dimensions()[0],0])).on(st("\u2325\u2191"),D([0,f.dimensions()[1]])).on(st("\u2325\u2192"),D([-f.dimensions()[0],0])).on(st("\u2325\u2193"),D([0,-f.dimensions()[1]])).on(st("\u2318"+F("background.key")),function(O){O&&(O.stopImmediatePropagation(),O.preventDefault());var T=e.background().findSource(Te("background-last-used-toggle"));if(T){var M=e.background().baseLayerSource();Te("background-last-used-toggle",M.id),Te("background-last-used",T.id),e.background().baseLayerSource(T)}}).on(F("area_fill.wireframe.key"),function(O){O.preventDefault(),O.stopPropagation(),e.map().toggleWireframe()}).on(st("\u2325"+F("area_fill.wireframe.key")),function(O){O.preventDefault(),O.stopPropagation();var T=e.mode();if(!(T&&/^draw/.test(T.id))){var M=e.layers().layer("osm");M&&(M.enabled(!M.enabled()),M.enabled()||e.enter(Ge(e)))}}).on(F("map_data.highlight_edits.key"),function(O){O.preventDefault(),e.map().toggleHighlightEdited()}),e.on("enter.editor",function(P){u.classed("mode-"+P.id,!0)}).on("exit.editor",function(P){u.classed("mode-"+P.id,!1)}),e.enter(Ge(e)),t++||(a.hash.startWalkthrough||e.container().call(xp(e)).call(C8(e)),e.container().call(a.shortcuts));var k=e.connection(),S=c1(e).message(F.html("loading_auth")).blocking(!0);k&&S&&k.on("authLoading.ui",function(){e.container().call(S)}).on("authDone.ui",function(){S.close()}),t++,a.hash.startWalkthrough&&(a.hash.startWalkthrough=!1,e.container().call(kl(e)));function D(P){return function(O){O.shiftKey||e.container().select(".combobox").size()||(O.preventDefault(),e.map().pan(P,100))}}}let a={},o;a.ensureLoaded=()=>o||(o=Promise.all([fe.ensureLoaded(),$e.ensureLoaded()]).then(()=>{e.container().empty()||i(e.container())}).catch(u=>console.error(u))),a.restart=function(){e.keybinding().clear(),o=null,e.container().selectAll("*").remove(),a.ensureLoaded()},a.lastPointerType=function(){return n},a.svgDefs=O9(e),a.flash=b8(e),a.sidebar=kp(e),a.photoviewer=xM(e),a.shortcuts=wM(e),a.onResize=function(u){var c=e.map(),f=gi(e.container().select(".main-content"),!0);gi(e.container().select(".sidebar"),!0),u!==void 0&&(c.redrawEnable(!1),c.pan(u),c.redrawEnable(!0)),c.dimensions(f),a.photoviewer.onMapResize(),a.checkOverflow(".top-toolbar"),a.checkOverflow(".map-footer-bar");var p=document.createEvent("Event");p.initEvent("resizeWindow",!0,!0),document.dispatchEvent(p)},a.checkOverflow=function(u,c){c&&delete r[u];var f=e.container().select(u);if(!f.empty()){var p=f.property("scrollWidth"),d=f.property("clientWidth"),g=r[u]||p;p>d?(f.classed("narrow",!0),r[u]||(r[u]=p)):p>=g&&f.classed("narrow",!1)}},a.togglePanes=function(u){var c=e.container().selectAll(".map-pane.shown"),f=fe.textDirection()==="ltr"?"right":"left";c.classed("shown",!1).classed("hide",!0),e.container().selectAll(".map-pane-control button").classed("active",!1),u?(c.classed("shown",!1).classed("hide",!0).style(f,"-500px"),e.container().selectAll("."+u.attr("pane")+"-control button").classed("active",!0),u.classed("shown",!0).classed("hide",!1),c.empty()?u.style(f,"-500px").transition().duration(200).style(f,"0px"):u.style(f,"0px")):c.classed("shown",!0).classed("hide",!1).style(f,"0px").transition().duration(200).style(f,"-500px").on("end",function(){G(this).classed("shown",!1).classed("hide",!0)})};var s=v8(e);a.editMenu=function(){return s},a.showEditMenu=function(u,c,f){if(a.closeEditMenu(),!f&&e.mode().operations&&(f=e.mode().operations()),!(!f||!f.length)&&e.map().editableDataEnabled()){var p=e.surface().node();p.focus&&p.focus(),f.forEach(function(d){d.point&&d.point(u)}),s.anchorLoc(u).triggerType(c).operations(f),e.map().supersurface.call(s)}},a.closeEditMenu=function(){e.map().supersurface.select(".edit-menu").remove()};var l=G(null);return e.uploader().on("saveStarted.ui",function(){l=c1(e).message(F.html("save.uploading")).blocking(!0),e.container().call(l)}).on("saveEnded.ui",function(){l.close(),l=G(null)}),Gt.use({mangle:!1,headerIds:!1}),a}function jM(){let e=xe("enter","exit","change"),t=ke({},e,"on"),r=new Set;t.version=Gs.version,t.privacyVersion="20201202",t.initialHashParams=window.location.hash?pr(window.location.hash):{},t.changeset=null;let n=t.initialHashParams.comment,i=t.initialHashParams.source,a=t.initialHashParams.hashtags;t.defaultChangesetComment=function(N){return arguments.length?(n=N,t):n},t.defaultChangesetSource=function(N){return arguments.length?(i=N,t):i},t.defaultChangesetHashtags=function(N){return arguments.length?(a=N,t):a};let o=!0;t.setsDocumentTitle=function(N){return arguments.length?(o=N,t):o};let s=document.title;t.documentTitleBase=function(N){return arguments.length?(s=N,t):s};let l;t.ui=()=>l,t.lastPointerType=()=>l.lastPointerType();let u=at("context");t.keybinding=()=>u,G(document).call(u);let c=de.osm,f,p,d;t.connection=()=>c,t.history=()=>f,t.validator=()=>p,t.uploader=()=>d,t.preauth=N=>(c&&c.switch(N),t),t.locale=function(N){return arguments.length?(fe.preferredLocaleCodes(N),t):fe.localeCode()};function g(N,U){return(B,$)=>{if(B){(B.status===400||B.status===401||B.status===403)&&c&&c.logout(),typeof U=="function"&&U(B);return}else if(c&&c.getConnectionId()!==N){typeof U=="function"&&U({message:"Connection Switched",status:-1});return}else{f.merge($.data,$.extent),typeof U=="function"&&U(B,$);return}}}t.loadTiles=(N,U)=>{let B=window.requestIdleCallback(()=>{if(r.delete(B),c&&t.editableDataEnabled()){let $=c.getConnectionId();c.loadTiles(N,g($,U))}});r.add(B)},t.loadTileAtLoc=(N,U)=>{let B=window.requestIdleCallback(()=>{if(r.delete(B),c&&t.editableDataEnabled()){let $=c.getConnectionId();c.loadTileAtLoc(N,g($,U))}});r.add(B)},t.loadEntity=(N,U)=>{if(c){let B=c.getConnectionId();c.loadEntity(N,g(B,U)),c.loadEntityRelations(N,g(B,U))}},t.loadNote=(N,U)=>{if(c){let B=c.getConnectionId();c.loadEntityNote(N,g(B,U))}},t.zoomToEntity=(N,U)=>{t.loadEntity(N,(B,$)=>{if(!B&&U!==!1){let z=$.data.find(V=>V.id===N);z&&D.zoomTo(z)}}),D.on("drawn.zoomToEntity",()=>{t.hasEntity(N)&&(D.on("drawn.zoomToEntity",null),t.on("enter.zoomToEntity",null),t.enter(rt(t,[N])))}),t.on("enter.zoomToEntity",()=>{v.id!=="browse"&&(D.on("drawn.zoomToEntity",null),t.on("enter.zoomToEntity",null))})};let x=16;t.minEditableZoom=function(N){return arguments.length?(x=N,c&&c.tileZoom(N),t):x},t.maxCharsForTagKey=()=>255,t.maxCharsForTagValue=()=>255,t.maxCharsForRelationRole=()=>255,t.cleanTagKey=N=>os(N,t.maxCharsForTagKey()),t.cleanTagValue=N=>os(N,t.maxCharsForTagValue()),t.cleanRelationRole=N=>os(N,t.maxCharsForRelationRole());let b=!1;t.inIntro=function(N){return arguments.length?(b=N,t):b},t.save=()=>{if(b||t.container().select(".modal").size())return;let N;if(v&&v.id==="save"){if(N=!1,de.osm&&de.osm.isChangesetInflight()){f.clearSaved();return}}else N=t.selectedIDs().every(U=>{let B=t.hasEntity(U);return B&&!B.isDegenerate()});if(N&&f.save(),f.hasChanges())return F("save.unsaved_changes")},t.debouncedSave=Bt(t.save,350);function m(N){return function(){let U=N.apply(f,arguments);return t.debouncedSave(),U}}t.hasEntity=N=>f.graph().hasEntity(N),t.entity=N=>f.graph().entity(N);let v;t.mode=()=>v,t.enter=N=>{v&&(v.exit(),e.call("exit",this,v)),v=N,v.enter(),e.call("enter",this,v)},t.selectedIDs=()=>v&&v.selectedIDs&&v.selectedIDs()||[],t.activeID=()=>v&&v.activeID&&v.activeID();let y;t.selectedNoteID=function(N){return arguments.length?(y=N,t):y};let _;t.selectedErrorID=function(N){return arguments.length?(_=N,t):_},t.install=N=>t.surface().call(N),t.uninstall=N=>t.surface().call(N.off);let w;t.copyGraph=()=>w;let A=[];t.copyIDs=function(N){return arguments.length?(A=N,w=f.graph(),t):A};let I;t.copyLonLat=function(N){return arguments.length?(I=N,t):I};let E;t.background=()=>E;let k;t.features=()=>k,t.hasHiddenConnections=N=>{let U=f.graph(),B=U.entity(N);return k.hasHiddenConnections(B,U)};let S;t.photos=()=>S;let D;t.map=()=>D,t.layers=()=>D.layers(),t.surface=()=>D.surface,t.editableDataEnabled=()=>D.editableDataEnabled(),t.surfaceRect=()=>D.surface.node().getBoundingClientRect(),t.editable=()=>{let N=t.mode();return!N||N.id==="save"?!1:D.editableDataEnabled()};let P={tile:!1,collision:!1,imagery:!1,target:!1,downloaded:!1};t.debugFlags=()=>P,t.getDebug=N=>N&&P[N],t.setDebug=function(N,U){return arguments.length===1&&(U=!0),P[N]=U,e.call("change"),t};let O=G(null);t.container=function(N){return arguments.length?(O=N,O.classed("ideditor",!0),t):O},t.containerNode=function(N){return arguments.length?(t.container(G(N)),t):t.container().node()};let T;t.embed=function(N){return arguments.length?(T=N,t):T};let M="";t.assetPath=function(N){return arguments.length?(M=N,dt.assetPath(N),t):M};let R={};return t.assetMap=function(N){return arguments.length?(R=N,dt.assetMap(N),t):R},t.asset=N=>{if(/^http(s)?:\/\//i.test(N))return N;let U=M+N;return R[U]||U},t.imagePath=N=>t.asset(`img/${N}`),t.reset=t.flush=()=>(t.debouncedSave.cancel(),Array.from(r).forEach(N=>{window.cancelIdleCallback(N),r.delete(N)}),Object.values(de).forEach(N=>{N&&typeof N.reset=="function"&&N.reset(t)}),t.changeset=null,p.reset(),k.reset(),f.reset(),d.reset(),t.container().select(".inspector-wrap *").remove(),t),t.projection=Mi(),t.curtainProjection=Mi(),t.init=()=>{return N(),U(),t;function N(){f=x9(t),t.graph=f.graph,t.pauseChangeDispatch=f.pauseChangeDispatch,t.resumeChangeDispatch=f.resumeChangeDispatch,t.perform=m(f.perform),t.replace=m(f.replace),t.pop=m(f.pop),t.overwrite=m(f.overwrite),t.undo=m(f.undo),t.redo=m(f.redo),p=_9(t),d=E9(t),E=S9(t),k=C9(t),D=p8(t),S=d8(t),l=Ap(t)}function U(){t.initialHashParams.presets&&$e.addablePresetIDs(new Set(t.initialHashParams.presets.split(","))),t.initialHashParams.locale&&fe.preferredLocaleCodes(t.initialHashParams.locale),fe.ensureLoaded(),$e.ensureLoaded(),E.ensureLoaded(),Object.values(de).forEach(B=>{B&&typeof B.init=="function"&&B.init()}),D.init(),p.init(),k.init(),de.maprules&&t.initialHashParams.maprules&&Kt(t.initialHashParams.maprules).then(B=>{de.maprules.init(),B.forEach($=>de.maprules.addRule($))}).catch(()=>{}),t.container().empty()||l.ensureLoaded().then(()=>{E.init(),S.init()})}},t}var HM=zA,Lo={},Hp,tb={init:function(){Lo={},Hp=new eb.default},reset:function(){Object.values(Lo).forEach(function(e){e.abort()}),Lo={},Hp=new eb.default},countryCode:function(e,t){this.reverse(e,function(r,n){return r?t(r):n.address?t(null,n.address.country_code):t("Unable to geocode",null)})},reverse:function(e,t){var r=Hp.search({minX:e[0],minY:e[1],maxX:e[0],maxY:e[1]});if(r.length>0){t&&t(null,r[0].data);return}var n={zoom:13,format:"json",addressdetails:1,lat:e[1],lon:e[0]},i=HM+"reverse?"+yt(n);if(!Lo[i]){var a=new AbortController;Lo[i]=a,Kt(i,{signal:a.signal,headers:{"Accept-Language":fe.localeCodes().join(",")}}).then(function(o){if(delete Lo[i],o&&o.error)throw new Error(o.error);var s=Pe(e).padByMeters(200);Hp.insert(Object.assign(s.bbox(),{data:o})),t&&t(null,o)}).catch(function(o){delete Lo[i],o.name!=="AbortError"&&t&&t(o.message)})}},search:function(e,t){let r={q:e,limit:10,format:"json"};var n=HM+"search?"+yt(r);if(!Lo[n]){var i=new AbortController;Lo[n]=i,Kt(n,{signal:i.signal,headers:{"Accept-Language":fe.localeCodes().join(",")}}).then(function(a){if(delete Lo[n],a&&a.error)throw new Error(a.error);t&&t(null,a)}).catch(function(a){delete Lo[n],a.name!=="AbortError"&&t&&t(a.message)})}}};var KM=xt(W3(),1);var WM=xt(Sf(),1);function j0(e){return typeof e!="string"?"":WM.default.remove(e.replace(/&/g,"and").replace(/İ/ig,"i").replace(/[\s\-=_!"#%'*{},.\/:;?\(\)\[\]@\\$\^*+<>«»~`’\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2000-\u206f\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e7f\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\ufeff\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g,"").toLowerCase())}var QM={matchGroups:{adult_gaming_centre:["amenity/casino","amenity/gambling","leisure/adult_gaming_centre"],beauty:["shop/beauty","shop/hairdresser_supply"],bed:["shop/bed","shop/furniture"],beverages:["shop/alcohol","shop/beer","shop/beverages","shop/kiosk","shop/wine"],camping:["tourism/camp_site","tourism/caravan_site"],car_parts:["shop/car_parts","shop/car_repair","shop/tires","shop/tyres"],clinic:["amenity/clinic","amenity/doctors","healthcare/clinic","healthcare/laboratory","healthcare/physiotherapist","healthcare/sample_collection","healthcare/dialysis"],convenience:["shop/beauty","shop/chemist","shop/convenience","shop/cosmetics","shop/grocery","shop/kiosk","shop/newsagent","shop/perfumery"],coworking:["amenity/coworking_space","office/coworking","office/coworking_space"],dentist:["amenity/dentist","amenity/doctors","healthcare/dentist"],electronics:["office/telecommunication","shop/computer","shop/electronics","shop/hifi","shop/kiosk","shop/mobile","shop/mobile_phone","shop/telecommunication"],fabric:["shop/fabric","shop/haberdashery","shop/sewing"],fashion:["shop/accessories","shop/bag","shop/boutique","shop/clothes","shop/department_store","shop/fashion","shop/fashion_accessories","shop/sports","shop/shoes"],financial:["amenity/bank","office/accountant","office/financial","office/financial_advisor","office/tax_advisor","shop/tax"],fitness:["leisure/fitness_centre","leisure/fitness_center","leisure/sports_centre","leisure/sports_center"],food:["amenity/bar","amenity/cafe","amenity/fast_food","amenity/ice_cream","amenity/pub","amenity/restaurant","shop/bakery","shop/candy","shop/chocolate","shop/coffee","shop/confectionary","shop/confectionery","shop/food","shop/kiosk","shop/ice_cream","shop/pastry","shop/tea"],fuel:["amenity/fuel","shop/gas","shop/convenience;gas","shop/gas;convenience"],gift:["shop/gift","shop/card","shop/cards","shop/kiosk","shop/stationery"],hardware:["shop/bathroom_furnishing","shop/carpet","shop/diy","shop/doityourself","shop/doors","shop/electrical","shop/flooring","shop/hardware","shop/hardware_store","shop/power_tools","shop/tool_hire","shop/tools","shop/trade"],health_food:["shop/health","shop/health_food","shop/herbalist","shop/nutrition_supplements"],hobby:["shop/electronics","shop/hobby","shop/books","shop/games","shop/collector","shop/toys","shop/model","shop/video_games","shop/anime"],hospital:["amenity/doctors","amenity/hospital","healthcare/hospital"],houseware:["shop/houseware","shop/interior_decoration"],lifeboat_station:["amenity/lifeboat_station","emergency/lifeboat_station","emergency/marine_rescue"],lodging:["tourism/hotel","tourism/motel"],money_transfer:["amenity/money_transfer","shop/money_transfer"],office_supplies:["shop/office_supplies","shop/stationary","shop/stationery"],outdoor:["shop/clothes","shop/outdoor","shop/sports"],parcel_locker:["amenity/parcel_locker","amenity/vending_machine"],pharmacy:["amenity/doctors","amenity/pharmacy","healthcare/pharmacy"],playground:["amenity/theme_park","leisure/amusement_arcade","leisure/playground"],rental:["amenity/bicycle_rental","amenity/boat_rental","amenity/car_rental","amenity/truck_rental","amenity/vehicle_rental","shop/kiosk","shop/rental"],school:["amenity/childcare","amenity/college","amenity/kindergarten","amenity/language_school","amenity/prep_school","amenity/school","amenity/university"],storage:["shop/storage_units","shop/storage_rental"],substation:["power/station","power/substation","power/sub_station"],supermarket:["shop/food","shop/frozen_food","shop/greengrocer","shop/grocery","shop/supermarket","shop/wholesale"],variety_store:["shop/variety_store","shop/discount","shop/convenience"],vending:["amenity/vending_machine","shop/kiosk","shop/vending_machine"],weight_loss:["amenity/clinic","amenity/doctors","amenity/weight_clinic","healthcare/counselling","leisure/fitness_centre","office/therapist","shop/beauty","shop/diet","shop/food","shop/health_food","shop/herbalist","shop/nutrition","shop/nutrition_supplements","shop/weight_loss"],wholesale:["shop/wholesale","shop/supermarket","shop/department_store"]}};var XM={genericWords:["^(barn|bazaa?r|bench|bou?tique|building|casa|church)$","^(baseball|basketball|football|soccer|softball|tennis(halle)?)\\s?(field|court)?$","^(club|green|out|ware)\\s?house$","^(driveway|el \xE1rbol|fountain|generic|golf|government|graveyard)$","^(fixme|n\\s?\\/?\\s?a|name|no\\s?name|none|null|temporary|test|unknown)$","^(hofladen|librairie|magazine?|maison)$","^(mobile home|skate)?\\s?park$","^(obuwie|pond|pool|sale|shops?|sklep|stores?)$","^\\?+$","^private$","^tattoo( studio)?$","^windmill$","^\u0446\u0435\u0440\u043A\u043E\u0432\u043D\u0430\u044F( \u043B\u0430\u0432\u043A\u0430)?$"]};var YM={trees:{brands:{emoji:"\u{1F354}",mainTag:"brand:wikidata",sourceTags:["brand","name"],nameTags:{primary:"^(name|name:\\w+)$",alternate:"^(brand|brand:\\w+|operator|operator:\\w+|\\w+_name|\\w+_name:\\w+)$"}},flags:{emoji:"\u{1F6A9}",mainTag:"flag:wikidata",nameTags:{primary:"^(flag:name|flag:name:\\w+)$",alternate:"^(country|country:\\w+|flag|flag:\\w+|subject|subject:\\w+)$"}},operators:{emoji:"\u{1F4BC}",mainTag:"operator:wikidata",sourceTags:["operator"],nameTags:{primary:"^(name|name:\\w+|operator|operator:\\w+)$",alternate:"^(brand|brand:\\w+|\\w+_name|\\w+_name:\\w+)$"}},transit:{emoji:"\u{1F687}",mainTag:"network:wikidata",sourceTags:["network"],nameTags:{primary:"^network$",alternate:"^(operator|operator:\\w+|network:\\w+|\\w+_name|\\w+_name:\\w+)$"}}}};var rb=QM.matchGroups,wJ=YM.trees,oc=class{constructor(){this.matchIndex=void 0,this.genericWords=new Map,(XM.genericWords||[]).forEach(t=>this.genericWords.set(t,new RegExp(t,"i"))),this.itemLocation=void 0,this.locationSets=void 0,this.locationIndex=void 0,this.warnings=[]}buildMatchIndex(t){let r=this;if(r.matchIndex)return;r.matchIndex=new Map;let n=new Map;Object.keys(t).forEach(o=>{let s=t[o],l=o.split("/",3),u=l[0],c=l[1],f=l[2],p=`${c}/${f}`,d=wJ[u],g=r.matchIndex.get(p);g||(g={primary:new Map,alternate:new Map,excludeGeneric:new Map,excludeNamed:new Map},r.matchIndex.set(p,g));let b=(s.properties||{}).exclude||{};(b.generic||[]).forEach(k=>g.excludeGeneric.set(k,new RegExp(k,"i"))),(b.named||[]).forEach(k=>g.excludeNamed.set(k,new RegExp(k,"i")));let m=[...g.excludeGeneric.values(),...g.excludeNamed.values()],v=s.items;if(!Array.isArray(v)||!v.length)return;let y=new RegExp(d.nameTags.primary,"i"),_=new RegExp(d.nameTags.alternate,"i"),w=/:(colou?r|type|forward|backward|left|right|etymology|pronunciation|wikipedia)$/i,A=a(u,c,f),I=new Set([`${c}/yes`,"building/yes"]),E=new Set;Object.values(rb).forEach(k=>{k.some(D=>D===p)&&k.forEach(D=>{if(D===p)return;E.add(D);let P=D.split("/",2)[0];I.add(`${P}/yes`)})}),v.forEach(k=>{if(!k.id)return;Array.isArray(k.matchTags)&&k.matchTags.length&&(k.matchTags=k.matchTags.filter(P=>!E.has(P)&&!I.has(P)),k.matchTags.length||delete k.matchTags);let S=[`${p}`].concat(k.matchTags||[]);A||(S=S.concat(Array.from(I))),Object.keys(k.tags).forEach(P=>{if(w.test(P))return;let O=k.tags[P];!O||m.some(T=>T.test(O))||(y.test(P)?S.forEach(T=>i("primary",u,T,j0(O),k.id)):_.test(P)&&S.forEach(T=>i("alternate",u,T,j0(O),k.id)))});let D=new Set;(k.matchNames||[]).forEach(P=>{let O=j0(P);S.forEach(T=>{let M=r.matchIndex.get(T),R=M&&M.primary.get(O),N=M&&M.alternate.get(O),U=R&&R.has(k.id),B=N&&N.has(k.id);!U&&!B&&(i("alternate",u,T,O,k.id),D.add(P))})}),D.size?k.matchNames=Array.from(D):delete k.matchNames})});function i(o,s,l,u,c){if(!u){r.warnings.push(`Warning: skipping empty ${o} name for item ${s}/${l}: ${c}`);return}let f=r.matchIndex.get(l);f||(f={primary:new Map,alternate:new Map,excludeGeneric:new Map,excludeNamed:new Map},r.matchIndex.set(l,f));let p=f[o].get(u);if(p||(p=new Set,f[o].set(u,p)),p.add(c),!/yes$/.test(l)){let d=`${l}/${u}`,g=n.get(d);if(g&&g!==s){let x=Array.from(p);r.warnings.push(`Duplicate cache key "${d}" in trees "${s}" and "${g}", check items: ${x}`);return}n.set(d,s)}}function a(o,s,l){return o==="flags"||o==="transit"||s==="landuse"||l==="atm"||l==="bicycle_parking"||l==="car_sharing"||l==="caravan_site"||l==="charging_station"||l==="dog_park"||l==="parking"||l==="phone"||l==="playground"||l==="post_box"||l==="public_bookcase"||l==="recycling"||l==="vending_machine"}}buildLocationIndex(t,r){let n=this;if(n.locationIndex)return;n.itemLocation=new Map,n.locationSets=new Map,Object.keys(t).forEach(a=>{let o=t[a].items;!Array.isArray(o)||!o.length||o.forEach(s=>{if(n.itemLocation.has(s.id))return;let l;try{l=r.resolveLocationSet(s.locationSet)}catch(c){console.warn(`buildLocationIndex: ${c.message}`)}if(!l||!l.id||(n.itemLocation.set(s.id,l.id),n.locationSets.has(l.id)))return;let u=i(l.feature);if(u.id=l.id,u.properties.id=l.id,!u.geometry.coordinates.length||!u.properties.area){console.warn(`buildLocationIndex: locationSet ${l.id} for ${s.id} resolves to an empty feature:`),console.warn(JSON.stringify(u));return}n.locationSets.set(l.id,u)})}),n.locationIndex=(0,KM.default)({type:"FeatureCollection",features:[...n.locationSets.values()]});function i(a){return JSON.parse(JSON.stringify(a))}}match(t,r,n,i){let a=this;if(!a.matchIndex)throw new Error("match: matchIndex not built.");let o;Array.isArray(i)&&a.locationIndex&&(o=a.locationIndex([i[0],i[1],i[0],i[1]],!0));let s=j0(n),l=new Set,u=[];if(c("primary"),c("alternate"),u.length)return u;return c("exclude"),u.length?u:null;function c(p){let d=`${t}/${r}`,g=f(p,d);if(!g){for(let x in rb){let b=rb[x];if(b.some(v=>v===d))for(let v=0;vb.test(n));if(x){u.push({match:"excludeGeneric",pattern:String(x)});return}}}}function f(p,d){let g=a.matchIndex.get(d);if(!g)return;if(p==="exclude"){let w=[...g.excludeNamed.values()].find(A=>A.test(n));if(w){u.push({match:"excludeNamed",pattern:String(w),kv:d});return}if(w=[...g.excludeGeneric.values()].find(A=>A.test(n)),w){u.push({match:"excludeGeneric",pattern:String(w),kv:d});return}return}let x=g[p].get(s);if(!x||!x.size)return;let b=Array.from(x).map(w=>{let A=1/0;if(a.itemLocation&&a.locationSets){let I=a.locationSets.get(a.itemLocation.get(w));A=I&&I.properties.area||1/0}return{match:p,itemID:w,area:A,kv:d,nsimple:s}}),m=_;if(o&&(b=b.filter(v),m=y),!b.length)return;return b.sort(m).forEach(w=>{l.has(w.itemID)||(l.add(w.itemID),u.push(w))}),!0;function v(w){return a.itemLocation?o.find(A=>A.id===a.itemLocation.get(w.itemID)):!0}function y(w,A){return w.area-A.area}function _(w,A){return A.area-w.area}}}getWarnings(){return this.warnings}};var JM=xt(Lh());var nb="loading",Ur={},_J={"building/commercial":!0,"building/government":!0,"building/hotel":!0,"building/retail":!0,"building/office":!0,"building/supermarket":!0,"building/yes":!0},EJ=/:(colou?r|type|forward|backward|left|right|etymology|pronunciation|wikipedia)$/i,kJ=/(coop|express|wireless|factory|outlet)/i;function AJ(){let e=Gs.dependencies["name-suggestion-index"]||Gs.devDependencies["name-suggestion-index"],t=(0,JM.default)(e),r=`${t.major}.${t.minor}`,n=$A.replace("{version}",r),i={nsi_data:n+"dist/nsi.min.json",nsi_dissolved:n+"dist/dissolved.min.json",nsi_features:n+"dist/featureCollection.min.json",nsi_generics:n+"dist/genericWords.min.json",nsi_presets:n+"dist/presets/nsi-id-presets.min.json",nsi_replacements:n+"dist/replacements.min.json",nsi_trees:n+"dist/trees.min.json"},a=dt.fileMap();for(let o in i)a[o]||(a[o]=i[o])}function SJ(){return Promise.all([dt.get("nsi_presets"),dt.get("nsi_features")]).then(e=>{Object.values(e[0].presets).forEach(t=>t.suggestion=!0),Object.values(e[0].presets).forEach(t=>{t.tags["brand:wikidata"]&&(t.removeTags={"brand:wikipedia":"*",...t.removeTags||t.addTags||t.tags}),t.tags["operator:wikidata"]&&(t.removeTags={"operator:wikipedia":"*",...t.removeTags||t.addTags||t.tags}),t.tags["network:wikidata"]&&(t.removeTags={"network:wikipedia":"*",...t.removeTags||t.addTags||t.tags})}),$e.merge({presets:e[0].presets,featureCollection:e[1]})})}function CJ(){return Promise.all([dt.get("nsi_data"),dt.get("nsi_dissolved"),dt.get("nsi_replacements"),dt.get("nsi_trees")]).then(e=>{Ur={data:e[0].nsi,dissolved:e[1].dissolved,replacements:e[2].replacements,trees:e[3].trees,kvt:new Map,qids:new Map,ids:new Map};let t=Ur.matcher=new oc;t.buildMatchIndex(Ur.data),t.itemLocation=new Map,t.locationSets=new Map,Object.keys(Ur.data).forEach(r=>{let n=Ur.data[r].items;!Array.isArray(n)||!n.length||n.forEach(i=>{if(t.itemLocation.has(i.id))return;let a=An.locationSetID(i.locationSet);if(t.itemLocation.set(i.id,a),t.locationSets.has(a))return;let o={id:a,properties:{id:a,area:1}};t.locationSets.set(a,o)})}),t.locationIndex=r=>{let n=An.locationSetsAt([r[0],r[1]]),i=[];for(let[a,o]of Object.entries(n)){let s=t.locationSets.get(a);s&&(s.properties.area=o,i.push(s))}return i},Object.keys(Ur.data).forEach(r=>{let n=Ur.data[r],i=r.split("/",3),a=i[0],o=i[1],s=i[2],l=Ur.kvt.get(o);l||(l=new Map,Ur.kvt.set(o,l)),l.set(s,a);let c=Ur.trees[a].mainTag;(n.items||[]).forEach(p=>{p.tkv=r,p.mainTag=c,Ur.ids.set(p.id,p);let d=p.tags[c],g=p.tags[c.replace("wikidata","wikipedia")];d&&Ur.qids.set(d,d),g&&d&&Ur.qids.set(g,d)})})})}function eN(e){let t=new Set,r=new Set;Object.keys(e).forEach(i=>{let a=e[i];if(!a)return;i==="route_master"&&(i="route");let o=Ur.kvt.get(i);o&&(o.get(a)?t.add(`${i}/${a}`):a==="yes"&&r.add(`${i}/${a}`))});let n=$e.matchTags(e,"area");return _J[n.id]&&r.add("building/yes"),{primary:t,alternate:r}}function IJ(e){let t,r;return Object.keys(e).forEach(n=>{if(r)return;let i=e[n];if(!i)return;n==="route_master"&&(n="route");let a=Ur.kvt.get(n);a&&(i==="yes"?t="unknown":r=a.get(i))}),r||t||null}function ZM(e){let t={primary:new Set,alternate:new Set},r=new Set,n=new Set,i=!1,a=!1,o,s=IJ(e);if(!s)return t;if(s==="transit"?o={primary:/^network$/i,alternate:/^(operator|operator:\w+|network:\w+|\w+_name|\w+_name:\w+)$/i}:s==="flags"?o={primary:/^(flag:name|flag:name:\w+)$/i,alternate:/^(flag|flag:\w+|subject|subject:\w+)$/i}:s==="brands"?(a=!0,o={primary:/^(name|name:\w+)$/i,alternate:/^(brand|brand:\w+|operator|operator:\w+|\w+_name|\w+_name:\w+)/i}):s==="operators"?(a=!0,o={primary:/^(name|name:\w+|operator|operator:\w+)$/i,alternate:/^(brand|brand:\w+|\w+_name|\w+_name:\w+)/i}):(a=!0,o={primary:/^(name|name:\w+)$/i,alternate:/^(brand|brand:\w+|network|network:\w+|operator|operator:\w+|\w+_name|\w+_name:\w+)/i}),e.name&&a){let u=e.name.split(/[\s\-\/,.]/);for(let c=u.length;c>0;c--){let f=u.slice(0,c).join(" ");r.add(f)}}if(Object.keys(e).forEach(u=>{let c=e[u];c&&(l(u,"primary")?/;/.test(c)?i=!0:(r.add(c),n.delete(c)):!r.has(c)&&l(u,"alternate")&&(/;/.test(c)?i=!0:n.add(c)))}),e.man_made==="flagpole"&&!r.size&&!n.size&&e.country){let u=e.country;/;/.test(u)?i=!0:n.add(u)}if(i)return t;return{primary:r,alternate:n};function l(u,c){return u==="old_name"?!1:o[c].test(u)&&!EJ.test(u)}}function tN(e,t){let r=[];return["primary","alternate"].forEach(n=>{Array.from(t[n]).sort((a,o)=>o.length-a.length).forEach(a=>{["primary","alternate"].forEach(o=>{e[o].forEach(s=>{let l=s.split("/",2),u=l[0],c=l[1];r.push({k:u,v:c,n:a})})})})}),r}function FJ(e,t){let r=Object.assign({},e),n=!1;Object.keys(r).forEach(u=>{let c=u.match(/^(\w+:)?wikidata$/);if(c){let f=c[1]||"",p=r[u],d=Ur.replacements[p];if(d&&d.wikidata!==void 0&&(n=!0,d.wikidata?r[u]=d.wikidata:delete r[u]),d&&d.wikipedia!==void 0){n=!0;let g=`${f}wikipedia`;d.wikipedia?r[g]=d.wikipedia:delete r[g]}}});let i=e.type==="route_master",a=eN(e);if(!a.primary.size&&!a.alternate.size)return n?{newTags:r,matched:null}:null;let o=ZM(e),s=Ur.qids.get(e.wikidata)||Ur.qids.get(e.wikipedia);if(s&&o.primary.add(s),!o.primary.size&&!o.alternate.size)return n?{newTags:r,matched:null}:null;let l=tN(a,o);for(let u=0;u{b!==k&&_.push(`^${k}$`)});let w=_.map(k=>new RegExp(k,"i")),A={};Object.keys(r).forEach(k=>{w.some(S=>S.test(k))&&(A[k]=r[k])}),Ur.kvt.forEach((k,S)=>{r[S]==="yes"&&delete r[S]}),s&&(delete r.wikipedia,delete r.wikidata),Object.assign(r,d.tags,A),i&&(r.route_master=r.route,delete r.route);let I=e.name,E=r.name;if(E&&I&&E!==I&&!r.branch){let k=ZM(r);if(!new Set([...k.primary,...k.alternate]).has(I)){let P=I.split(/[\s\-\/,.]/);for(let O=P.length;O>0;O--){let T=P.slice(0,O).join(" "),M=P.slice(O).join(" "),R=Ur.matcher.match(b,m,T,t);if(!(!R||!R.length)&&R.some(N=>N.itemID===p)){if(M)if(kJ.test(M))r.name=I;else{let N=Ur.matcher.match(b,m,M,t);if(N&&N.length){if(N[0].match==="primary"||N[0].match==="alternate")return null}else r.branch=M}break}}}}return{newTags:r,matched:d}}return n?{newTags:r,matched:null}:null}function DJ(e){let t=e.name;if(!t)return!1;let r={primary:new Set([t]),alternate:new Set},n=eN(e);if(!n.primary.size&&!n.alternate.size)return!1;let i=tN(n,r);for(let a=0;a{AJ(),$e.ensureLoaded().then(()=>SJ()).then(()=>CJ()).then(()=>nb="ok").catch(()=>nb="failed")},reset:()=>{},status:()=>nb,isGenericName:e=>DJ(e),upgradeTags:(e,t)=>FJ(e,t),cache:()=>Ur};var aN=xt(_a());var rN="https://kartaview.org",nN=1e3,iN=14,TJ=Mr().zoomExtent([iN,iN]).skipNullIsland(!0),oN=xe("loadedImages"),Wp=Eo().extent([[0,0],[320,240]]).translateExtent([[0,0],[320,240]]).scaleExtent([1,15]),$n,g1,Qp;function sN(e){e.abort()}function MJ(e){if(e<15)return 2;if(e===15)return 5;if(e===16)return 10;if(e===17)return 20;if(e===18)return 40;if(e>18)return 80}function NJ(e,t,r){var n=Math.floor(hr(r.scale())),i=TJ.getTiles(r),a=$n[e];Object.keys(a.inflight).forEach(function(o){var s=i.find(function(l){return o.indexOf(l.id+",")===0});s||(sN(a.inflight[o]),delete a.inflight[o])}),i.forEach(function(o){lN(e,n,t,o)})}function lN(e,t,r,n){var i=$n[e],a=n.extent.bbox(),o=MJ(t),s=i.nextPage[n.id]||1,l=yt({ipp:nN,page:s,bbTopLeft:[a.maxY,a.minX].join(","),bbBottomRight:[a.minY,a.maxX].join(",")},!0);if(!(s>o)){var u=n.id+","+String(s);if(!(i.loaded[u]||i.inflight[u])){var c=new AbortController;i.inflight[u]=c;var f={method:"POST",signal:c.signal,body:l,headers:{"Content-Type":"application/x-www-form-urlencoded"}};Kt(r,f).then(function(p){if(i.loaded[u]=!0,delete i.inflight[u],!p||!p.currentPageItems||!p.currentPageItems.length)throw new Error("No Data");var d=p.currentPageItems.map(function(g){var x=[+g.lng,+g.lat],b;if(e==="images"){b={loc:x,key:g.id,ca:+g.heading,captured_at:g.shot_date||g.date_added,captured_by:g.username,imagePath:g.lth_name,sequence_id:g.sequence_id,sequence_index:+g.sequence_index};var m=$n.sequences[b.sequence_id];m||(m={rotation:0,images:[]},$n.sequences[b.sequence_id]=m),m.images[b.sequence_index]=b,$n.images.forImageKey[b.key]=b}return{minX:x[0],minY:x[1],maxX:x[0],maxY:x[1],data:b}});i.rtree.load(d),p.currentPageItems.length===nN?(i.nextPage[n.id]=s+1,lN(e,t,r,n)):i.nextPage[n.id]=1/0,e==="images"&&oN.call("loadedImages")}).catch(function(){i.loaded[u]=!0,delete i.inflight[u]})}}}function PJ(e){var t=hr(e.scale()),r=Math.ceil(t*2)/2+2.5,n=Mr().zoomExtent([r,r]);return n.getTiles(e).map(function(i){return i.extent})}function OJ(e,t,r){return e=e||5,PJ(t).reduce(function(n,i){var a=r.search(i.bbox()).slice(0,e).map(function(o){return o.data});return a.length?n.concat(a):n},[])}var ab={init:function(){$n||this.reset(),this.event=ke(this,oN,"on")},reset:function(){$n&&Object.values($n.images.inflight).forEach(sN),$n={images:{inflight:{},loaded:{},nextPage:{},rtree:new aN.default,forImageKey:{}},sequences:{}},g1=null},images:function(e){var t=5;return OJ(t,e,$n.images.rtree)},sequences:function(e){var t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox(),a={};$n.images.rtree.search(i).forEach(function(s){a[s.data.sequence_id]=!0});var o=[];return Object.keys(a).forEach(function(s){var l=$n.sequences[s],u=l&&l.images;u&&o.push({type:"LineString",coordinates:u.map(function(c){return c.loc}).filter(Boolean),properties:{captured_at:u[0]?u[0].captured_at:null,captured_by:u[0]?u[0].captured_by:null,key:s}})}),o},cachedImage:function(e){return $n.images.forImageKey[e]},loadImages:function(e){var t=rN+"/1.0/list/nearby-photos/";NJ("images",t,e)},ensureViewerLoaded:function(e){if(Qp)return Qp;var t=e.container().select(".photoviewer").selectAll(".kartaview-wrapper").data([0]),r=this,n=t.enter().append("div").attr("class","photo-wrapper kartaview-wrapper").classed("hide",!0).call(Wp.on("zoom",a)).on("dblclick.zoom",null);n.append("div").attr("class","photo-attribution fillD");var i=n.append("div").attr("class","photo-controls-wrap").append("div").attr("class","photo-controls");i.append("button").on("click.back",s(-1)).text("\u25C4"),i.append("button").on("click.rotate-ccw",o(-90)).text("\u293F"),i.append("button").on("click.rotate-cw",o(90)).text("\u293E"),i.append("button").on("click.forward",s(1)).text("\u25BA"),n.append("div").attr("class","kartaview-image-wrap"),e.ui().photoviewer.on("resize.kartaview",function(l){Wp.extent([[0,0],l]).translateExtent([[0,0],l])});function a(l){var u=l.transform;e.container().select(".photoviewer .kartaview-image-wrap").call(ii,u.x,u.y,u.k)}function o(l){return function(){if(g1){var u=g1.sequence_id,c=$n.sequences[u];if(c){var f=c.rotation||0;f+=l,f>180&&(f-=360),f<-180&&(f+=360),c.rotation=f;var p=e.container().select(".photoviewer .kartaview-wrapper");p.transition().duration(100).call(Wp.transform,Yr),p.selectAll(".kartaview-image").transition().duration(100).style("transform","rotate("+f+"deg)")}}}}function s(l){return function(){if(g1){var u=g1.sequence_id,c=$n.sequences[u];if(c){var f=g1.sequence_index+l,p=c.images[f];p&&(e.map().centerEase(p.loc),r.selectImage(e,p.key))}}}}return Qp=Promise.resolve(),Qp},showViewer:function(e){var t=e.container().select(".photoviewer").classed("hide",!1),r=t.selectAll(".photo-wrapper.kartaview-wrapper.hide").size();return r&&(t.selectAll(".photo-wrapper:not(.kartaview-wrapper)").classed("hide",!0),t.selectAll(".photo-wrapper.kartaview-wrapper").classed("hide",!1)),this},hideViewer:function(e){g1=null,this.updateUrlImage(null);var t=e.container().select(".photoviewer");return t.empty()||t.datum(null),t.classed("hide",!0).selectAll(".photo-wrapper").classed("hide",!0),e.container().selectAll(".viewfield-group, .sequence, .icon-sign").classed("currentView",!1),this.setStyles(e,null,!0)},selectImage:function(e,t){var r=this.cachedImage(t);g1=r,this.updateUrlImage(t);var n=e.container().select(".photoviewer");if(n.empty()||n.datum(r),this.setStyles(e,null,!0),e.container().selectAll(".icon-sign").classed("currentView",!1),!r)return this;var i=e.container().select(".photoviewer .kartaview-wrapper"),a=i.selectAll(".kartaview-image-wrap"),o=i.selectAll(".photo-attribution").text("");if(i.transition().duration(100).call(Wp.transform,Yr),a.selectAll(".kartaview-image").remove(),r){var s=$n.sequences[r.sequence_id],l=s&&s.rotation||0;a.append("img").attr("class","kartaview-image").attr("src",rN+"/"+r.imagePath).style("transform","rotate("+l+"deg)"),r.captured_by&&(o.append("a").attr("class","captured_by").attr("target","_blank").attr("href","https://kartaview.org/user/"+encodeURIComponent(r.captured_by)).text("@"+r.captured_by),o.append("span").text("|")),r.captured_at&&(o.append("span").attr("class","captured_at").text(u(r.captured_at)),o.append("span").text("|")),o.append("a").attr("class","image-link").attr("target","_blank").attr("href","https://kartaview.org/details/"+r.sequence_id+"/"+r.sequence_index).text("kartaview.org")}return this;function u(c){if(!c)return null;var f={day:"numeric",month:"short",year:"numeric"},p=new Date(c);return isNaN(p.getTime())?null:p.toLocaleDateString(fe.localeCode(),f)}},getSelectedImage:function(){return g1},getSequenceKeyForImage:function(e){return e&&e.sequence_id},setStyles:function(e,t,r){r&&(e.container().selectAll(".viewfield-group").classed("highlighted",!1).classed("hovered",!1).classed("currentView",!1),e.container().selectAll(".sequence").classed("highlighted",!1).classed("currentView",!1));var n=t&&t.key,i=this.getSequenceKeyForImage(t),a=i&&$n.sequences[i],o=a&&a.images.map(function(x){return x.key})||[],s=e.container().select(".photoviewer"),l=s.empty()?void 0:s.datum(),u=l&&l.key,c=this.getSequenceKeyForImage(l),f=c&&$n.sequences[c],p=f&&f.images.map(function(x){return x.key})||[],d=or(o,p);e.container().selectAll(".layer-kartaview .viewfield-group").classed("highlighted",function(x){return d.indexOf(x.key)!==-1}).classed("hovered",function(x){return x.key===n}).classed("currentView",function(x){return x.key===u}),e.container().selectAll(".layer-kartaview .sequence").classed("highlighted",function(x){return x.properties.key===i}).classed("currentView",function(x){return x.properties.key===c}),e.container().selectAll(".layer-kartaview .viewfield-group .viewfield").attr("d",g);function g(){var x=this.parentNode.__data__;return x.pano&&x.key!==u?"M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0":"M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z"}return this},updateUrlImage:function(e){if(!window.mocha){var t=pr(window.location.hash);e?t.photo="kartaview/"+e:delete t.photo,window.location.replace("#"+yt(t,!0))}},cache:function(){return $n}};var fN=xt(_a());var LJ="pannellum/pannellum.css",RJ="pannellum/pannellum.js",Xp=xe("viewerChanged"),Yp=[],Cl,uN={init:async function(e,t){t.append("div").attr("class","photo-frame pannellum-frame").attr("id","ideditor-pannellum-viewer").classed("hide",!0),window.pannellum||await this.loadPannellum(e);let r={default:{firstScene:""},scenes:{}};return Cl=window.pannellum.viewer("ideditor-pannellum-viewer",r),Cl.on("mousedown",()=>{G(window).on("pointermove.pannellum mousemove.pannellum",()=>{Xp.call("viewerChanged")})}).on("mouseup",()=>{G(window).on("pointermove.pannellum mousemove.pannellum",null)}).on("animatefinished",()=>{Xp.call("viewerChanged")}),e.ui().photoviewer.on("resize.pannellum",()=>{Cl.resize()}),this.event=ke(this,Xp,"on"),this},loadPannellum:function(e){let t=G("head");return Promise.all([new Promise((r,n)=>{t.selectAll("#ideditor-pannellum-viewercss").data([0]).enter().append("link").attr("id","ideditor-pannellum-viewercss").attr("rel","stylesheet").attr("crossorigin","anonymous").attr("href",e.asset(LJ)).on("load.pannellum",r).on("error.pannellum",n)}),new Promise((r,n)=>{t.selectAll("#ideditor-pannellum-viewerjs").data([0]).enter().append("script").attr("id","ideditor-pannellum-viewerjs").attr("crossorigin","anonymous").attr("src",e.asset(RJ)).on("load.pannellum",r).on("error.pannellum",n)})])},showPhotoFrame:function(e){return e.selectAll(".photo-frame.pannellum-frame.hide").size()&&(e.selectAll(".photo-frame:not(.pannellum-frame)").classed("hide",!0),e.selectAll(".photo-frame.pannellum-frame").classed("hide",!1)),this},hidePhotoFrame:function(e){return e.select("photo-frame.pannellum-frame").classed("hide",!1),this},selectPhoto:function(e,t){let{key:r}=e;if(!(r in Yp)){let a={showFullscreenCtrl:!1,autoLoad:!1,compass:!0,yaw:0,type:"equirectangular",preview:e.preview_path,panorama:e.image_path,northOffset:e.ca};Yp.push(r),Cl.addScene(r,a)}let n=0,i=0;if(t&&(n=this.getYaw(),i=Cl.getPitch()),Cl.loadScene(r,i,n),Xp.call("viewerChanged"),Yp.length>3){let a=Yp.shift();Cl.removeScene(a)}return this},getYaw:function(){return Cl.getYaw()}};var pN="https://www.vegvesen.no/kart/ogc/vegbilder_1_0/ows?",cN=14,BJ=Mr().zoomExtent([cN,cN]).skipNullIsland(!0),Zp=xe("loadedImages","viewerChanged"),ub=Object.freeze({forward:Symbol(0),backward:Symbol(1)}),ob,sb,lb,Kp,yi;async function $J(){var u,c,f;let t=pN+yt({service:"WFS",request:"GetCapabilities",version:"2.0.0"}),r=await T2(t),n="/wfs:WFS_Capabilities/wfs:FeatureTypeList/wfs:FeatureType/wfs:Name",i=/^vegbilder_1_0:Vegbilder(?_360)?_(?\d{4})$/,a=r.createNSResolver(r),o=r.evaluate(n,r,a,XPathResult.ANY_TYPE),s,l=[];for(;(s=o.iterateNext())!==null;){let p=(u=s.textContent)==null?void 0:u.match(i);p&&l.push({name:p[0],is_sphere:!!((c=p.groups)!=null&&c.image_type),year:parseInt((f=p.groups)==null?void 0:f.year,10)})}return l}function UJ(e){let t=e.fromDate(),r=e.toDate(),n=t?new Date(t).getFullYear():2016,i=r?new Date(r).getFullYear():null,a=e.showsFlat(),o=e.showsPanoramic();return Array.from(yi.wfslayers.values()).filter(({layerInfo:s})=>s.year>=n&&(!i||s.year<=i)&&(!s.is_sphere&&a||s.is_sphere&&o))}function zJ(e,t,r){let n=BJ.margin(t).getTiles(e);for(let i of r)qJ(e,i,n)}function qJ(e,t,r){for(let[n,i]of t.inflight.entries())r.some(o=>n===o.id)||(i.abort(),t.inflight.delete(n));Promise.all(r.map(n=>VJ(t,t.layerInfo.name,n))).then(()=>GJ(e,t))}async function VJ(e,t,r){let n=r.extent.bbox(),i=r.id;if(e.loaded.get(i)===!0||e.inflight.has(i))return;let a={service:"WFS",request:"GetFeature",version:"2.0.0",typenames:t,bbox:[n.minY,n.minX,n.maxY,n.maxX].join(","),outputFormat:"json"},o=new AbortController;e.inflight.set(i,o);let s={method:"GET",signal:o.signal},l=pN+yt(a),u;try{u=await Kt(l,s)}catch{e.loaded.set(i,!1);return}finally{e.inflight.delete(i)}if(e.loaded.set(i,!0),u.features.length===0)return;let c=u.features.map(f=>{let p=f.geometry.coordinates,d=f.id,g=f.properties,{RETNING:x,TIDSPUNKT:b,URL:m,URLPREVIEW:v,BILDETYPE:y,METER:_,FELTKODE:w}=g,I=parseInt(w.match(/^[0-9]+/)[0],10)%2===0?ub.backward:ub.forward,E={loc:p,key:d,ca:x,image_path:m,preview_path:v,road_reference:jJ(g),metering:_,lane_code:w,direction:I,captured_at:new Date(b),is_sphere:y==="360"};return e.points.set(d,E),{minX:p[0],minY:p[1],maxX:p[0],maxY:p[1],data:E}});yi.rtree.load(c),Zp.call("loadedImages")}function GJ(e,t){let{points:r}=t,n=Array.from(r.values()).reduce((a,o)=>{let s=o.road_reference;return a.has(s)?a.get(s).push(o):a.set(s,[o]),a},new Map),i=Array.from(n.values()).reduce((a,o)=>{o.sort((u,c)=>{if(u.captured_at.valueOf()>c.captured_at.valueOf())return 1;if(u.captured_at.valueOf()=0?l:l+360),u.ca=l}c.direction===u.direction&&c.captured_at.valueOf()-u.captured_at.valueOf()<=2e4?s.push(c):(a.push(s),s=[c])}return a.push(s),a},[]);t.sequences=i.map(a=>{let o={images:a,key:a[0].key,geometry:{type:"LineString",coordinates:a.map(s=>s.loc)}};for(let s of a)yi.image2sequence_map.set(s.key,o);return o})}function jJ(e){let{FYLKENUMMER:t,VEGKATEGORI:r,VEGSTATUS:n,VEGNUMMER:i,STREKNING:a,DELSTREKNING:o,HP:s,KRYSSDEL:l,SIDEANLEGGSDEL:u,ANKERPUNKT:c,AAR:f}=e,p;return f>=2020?(p=`${r}${n}${i} S${a}D${o}`,l?p=`${p} M${c} KD${l}`:u&&(p=`${p} M${c} SD${u}`)):p=`${t}${r}${n}${i} HP${s}`,p}function HJ(e){let t={day:"2-digit",month:"2-digit",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric"};return e.toLocaleString(fe.localeCode(),t)}function WJ(e){let t=hr(e.scale()),r=Math.ceil(t*2)/2+2.5;return Mr().zoomExtent([r,r]).getTiles(e).map(i=>i.extent)}function QJ(e,t,r){return e!=null||(e=5),WJ(t).reduce((n,i)=>{let a=r.search(i.bbox()).slice(0,e).map(o=>o.data);return n.concat(a)},[])}var cb={init:function(){this.event=ke(this,Zp,"on")},reset:async function(){if(yi)for(let r of yi.wfslayers.values())for(let n of r.inflight.values())n.abort();yi={wfslayers:new Map,rtree:new fN.default,image2sequence_map:new Map};let e=await $J(),{wfslayers:t}=yi;for(let r of e){let n={layerInfo:r,loaded:new Map,inflight:new Map,points:new Map,sequences:[]};t.set(r.name,n)}},images:function(e){return QJ(5,e,yi.rtree)},sequences:function(e){let t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox(),a=new Set,o=[];for(let{data:s}of yi.rtree.search(i)){let l=yi.image2sequence_map.get(s.key);if(!l)continue;let{key:u,geometry:c,images:f}=l;if(a.has(u))continue;a.add(u);let p={type:"LineString",coordinates:c.coordinates,key:u,images:f};o.push(p)}return o},cachedImage:function(e){for(let{points:t}of yi.wfslayers.values())if(t.has(e))return t.get(e)},getSequenceForImage:function(e){return yi==null?void 0:yi.image2sequence_map.get(e==null?void 0:e.key)},loadImages:async function(e,t){yi||await this.reset(),t!=null||(t=1);let r=UJ(e.photos());zJ(e.projection,t,r)},photoFrame:function(){return lb},ensureViewerLoaded:function(e){if(Kp)return Kp;let t=a=>()=>{let o=e.container().select(".photoviewer"),s=o.empty()?void 0:o.datum();if(!s)return;let l=this.getSequenceForImage(s),u=l.images.indexOf(s)+a,c=l.images[u];c&&(e.map().centerEase(c.loc),this.selectImage(e,c.key,!0))},n=e.container().select(".photoviewer").selectAll(".vegbilder-wrapper").data([0]).enter().append("div").attr("class","photo-wrapper vegbilder-wrapper").classed("hide",!0);n.append("div").attr("class","photo-attribution fillD");let i=n.append("div").attr("class","photo-controls-wrap").append("div").attr("class","photo-controls");return i.append("button").on("click.back",t(-1)).text("\u25C4"),i.append("button").on("click.forward",t(1)).text("\u25BA"),Kp=Promise.all([uN.init(e,n),n8.init(e,n)]).then(([a,o])=>{sb=a,sb.event.on("viewerChanged",()=>Zp.call("viewerChanged")),ob=o,ob.event.on("viewerChanged",()=>Zp.call("viewerChanged"))}),Kp},selectImage:function(e,t,r){let n=this.cachedImage(t);this.updateUrlImage(t);let i=e.container().select(".photoviewer");if(i.empty()||i.datum(n),this.setStyles(e,null,!0),!n)return this;let a=e.container().select(".photoviewer .vegbilder-wrapper"),o=a.selectAll(".photo-attribution").text("");return n.captured_at&&o.append("span").attr("class","captured_at").text(HJ(n.captured_at)),o.append("a").attr("target","_blank").attr("href","https://vegvesen.no").call(F.append("vegbilder.publisher")),o.append("a").attr("target","_blank").attr("href",`https://vegbilder.atlas.vegvesen.no/?year=${n.captured_at.getFullYear()}&lat=${n.loc[1]}&lng=${n.loc[0]}&view=image&imageId=${n.key}`).call(F.append("vegbilder.view_on")),lb=n.is_sphere?sb:ob,lb.selectPhoto(n,r).showPhotoFrame(a),this},showViewer:function(e){let t=e.container().select(".photoviewer").classed("hide",!1);return t.selectAll(".photo-wrapper.vegbilder-wrapper.hide").size()&&(t.selectAll(".photo-wrapper:not(.vegbilder-wrapper)").classed("hide",!0),t.selectAll(".photo-wrapper.vegbilder-wrapper").classed("hide",!1)),this},hideViewer:function(e){this.updateUrlImage(null);let t=e.container().select(".photoviewer");return t.empty()||t.datum(null),t.classed("hide",!0).selectAll(".photo-wrapper").classed("hide",!0),e.container().selectAll(".viewfield-group, .sequence").classed("currentView",!1),this.setStyles(e,null,!0)},setStyles:function(e,t,r){var x,b;r&&(e.container().selectAll(".viewfield-group").classed("highlighted",!1).classed("hovered",!1).classed("currentView",!1),e.container().selectAll(".sequence").classed("highlighted",!1).classed("currentView",!1));let n=t==null?void 0:t.key,i=this.getSequenceForImage(t),a=i==null?void 0:i.key,o=(x=i==null?void 0:i.images.map(m=>m.key))!=null?x:[],s=e.container().select(".photoviewer"),l=s.empty()?void 0:s.datum(),u=l==null?void 0:l.key,c=this.getSequenceForImage(l),f=c==null?void 0:c.key,p=(b=c==null?void 0:c.images.map(m=>m.key))!=null?b:[],d=or(o,p);e.container().selectAll(".layer-vegbilder .viewfield-group").classed("highlighted",m=>d.indexOf(m.key)!==-1).classed("hovered",m=>m.key===n).classed("currentView",m=>m.key===u),e.container().selectAll(".layer-vegbilder .sequence").classed("highlighted",m=>m.key===a).classed("currentView",m=>m.key===f),e.container().selectAll(".layer-vegbilder .viewfield-group .viewfield").attr("d",g);function g(){let m=this.parentNode.__data__;return m.is_sphere&&m.key!==u?"M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0":"M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z"}return this},updateUrlImage:function(e){if(!window.mocha){let t=pr(window.location.hash);e?t.photo="vegbilder/"+e:delete t.photo,window.location.replace("#"+yt(t,!0))}},validHere:function(e){let t=Object.values(e.bbox());return iS(t).includes("NO")},cache:function(){return yi}};function hN(e){var t={},r=null;try{r=window.localStorage}catch{var n=new Map;r={isMocked:!0,hasItem:u=>n.has(u),getItem:u=>n.get(u),setItem:(u,c)=>n.set(u,c),removeItem:u=>n.delete(u),clear:()=>n.clear()}}function i(l,u){if(arguments.length===1)return r.getItem(e.url+l);if(arguments.length===2)return r.setItem(e.url+l,u)}t.authenticated=function(){return!!i("oauth2_access_token")},t.logout=function(){return i("oauth2_access_token",""),i("oauth_token",""),i("oauth_token_secret",""),i("oauth_request_token_secret",""),t},t.authenticate=function(l){if(t.authenticated()){l(null,t);return}t.logout(),a(function(u,c){u?l(u):mN(function(f){o(f,c,l)})})},t.authenticateAsync=function(){return t.authenticated()?Promise.resolve(t):(t.logout(),new Promise((l,u)=>{var c=(f,p)=>{f?u(f):l(p)};a((f,p)=>{f?c(f):mN(d=>o(d,p,c))})}))};function a(l){if(e.singlepage){l(null,void 0);return}var u=550,c=610,f=[["width",u],["height",c],["left",window.screen.width/2-u/2],["top",window.screen.height/2-c/2]].map(function(g){return g.join("=")}).join(","),p=window.open("about:blank","oauth_window",f);if(p)l(null,p);else{var d=new Error("Popup was blocked");d.status="popup-blocked",l(d)}}function o(l,u,c){var f=XJ(),p=e.url+"/oauth2/authorize?"+dN({client_id:e.client_id,redirect_uri:e.redirect_uri,response_type:"code",scope:e.scope,state:f,code_challenge:l.code_challenge,code_challenge_method:l.code_challenge_method});if(e.singlepage){if(r.isMocked){var d=new Error("localStorage unavailable, but required in singlepage mode");d.status="pkce-localstorage-unavailable",c(d);return}var g=fb(window.location.search.slice(1));g.code?t.bootstrapToken(g.code,c):(i("oauth2_state",f),i("oauth2_pkce_code_verifier",l.code_verifier),window.location=p)}else t.popupWindow=u,u.location=p;window.authComplete=function(b){var m=fb(b.split("?")[1]);if(m.state!==f){d=new Error("Invalid state"),d.status="invalid-state",c(d);return}s(m.code,l.code_verifier,x),delete window.authComplete};function x(b,m){if(e.done(),b){c(b);return}var v=JSON.parse(m.response);i("oauth2_access_token",v.access_token),c(null,t)}}function s(l,u,c){var f=e.url+"/oauth2/token?"+dN({client_id:e.client_id,redirect_uri:e.redirect_uri,grant_type:"authorization_code",code:l,code_verifier:u});t.rawxhr("POST",f,null,null,null,c),e.loading()}return t.bringPopupWindowToFront=function(){var l=!1;try{t.popupWindow&&!t.popupWindow.closed&&(t.popupWindow.focus(),l=!0)}catch{}return l},t.bootstrapToken=function(l,u){var c=i("oauth2_state");i("oauth2_state","");var f=fb(window.location.search.slice(1));if(f.state!==c){var p=new Error("Invalid state");p.status="invalid-state",u(p);return}var d=i("oauth2_pkce_code_verifier");i("oauth2_pkce_code_verifier",""),s(l,d,g);function g(x,b){if(e.done(),x){u(x);return}var m=JSON.parse(b.response);i("oauth2_access_token",m.access_token),u(null,t)}},t.fetch=function(l,u){if(t.authenticated())return c();return e.auto?t.authenticateAsync().then(c):Promise.reject(new Error("not authenticated"));function c(){return u=u||{},u.headers||(u.headers={"Content-Type":"application/x-www-form-urlencoded"}),u.headers.Authorization="Bearer "+i("oauth2_access_token"),fetch(l,u)}},t.xhr=function(l,u){if(t.authenticated())return c();if(e.auto){t.authenticate(c);return}else{u("not authenticated",null);return}function c(){var p=l.prefix!==!1?e.apiUrl+l.path:l.path;return t.rawxhr(l.method,p,i("oauth2_access_token"),l.content,l.headers,f)}function f(p,d){p?u(p):d.responseXML?u(p,d.responseXML):u(p,d.response)}},t.rawxhr=function(l,u,c,f,p,d){p=p||{"Content-Type":"application/x-www-form-urlencoded"},c&&(p.Authorization="Bearer "+c);var g=new XMLHttpRequest;g.onreadystatechange=function(){g.readyState===4&&g.status!==0&&(/^20\d$/.test(g.status)?d(null,g):d(g,null))},g.onerror=function(b){d(b,null)},g.open(l,u,!0);for(var x in p)g.setRequestHeader(x,p[x]);return g.send(f),g},t.preauth=function(l){return l&&l.access_token&&i("oauth2_access_token",l.access_token),t},t.options=function(l){return arguments.length?(e=l,e.apiUrl=e.apiUrl||"https://api.openstreetmap.org",e.url=e.url||"https://www.openstreetmap.org",e.auto=e.auto||!1,e.singlepage=e.singlepage||!1,e.loading=e.loading||function(){},e.done=e.done||function(){},t.preauth(e)):e},t.options(e),t}function dN(e){return Object.keys(e).filter(function(t){return e[t]!==void 0}).sort().map(function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])}).join("&")}function fb(e){for(var t=0;t50)){var r=jn(H0+1),n=Mi().scale(r)(e),i=Mi().transform({k:r,x:-n[0],y:-n[1]}),a=db.zoomExtent([H0,H0]).getTiles(i);a.forEach(function(o){Rr.toLoad[o.id]||Rr.loaded[o.id]||Rr.inflight[o.id]||(Rr.toLoad[o.id]=!0,this.loadTile(o,t))},this)}},loadNotes:function(e,t){if(t=Object.assign({limit:1e4,closed:7},t),!Jp){var r=this,n="/api/0.6/notes?limit="+t.limit+"&closed="+t.closed+"&bbox=",i=Lt(function(){var o=Object.keys(_n.toLoad);o.length&&r.loadUsers(o,function(){})},750),a=db.zoomExtent([bN,bN]).getTiles(e);wN(yr,a),a.forEach(function(o){if(!(yr.loaded[o.id]||yr.inflight[o.id])){var s={skipSeen:!1};yr.inflight[o.id]=r.loadFromAPI(n+o.extent.toParam(),function(l){delete yr.inflight[o.id],l||(yr.loaded[o.id]=!0),i(),uo.call("loadedNotes")},s)}})}},postNoteCreate:function(e,t){if(!this.authenticated())return t({message:"Not Authenticated",status:-3},e);if(yr.inflightPost[e.id])return t({message:"Note update already inflight",status:-2},e);if(!e.loc[0]||!e.loc[1]||!e.newComment)return;var r=e.newComment;e.newCategory&&e.newCategory!=="None"&&(r+=" #"+e.newCategory);var n="/api/0.6/notes?"+yt({lon:e.loc[0],lat:e.loc[1],text:r});yr.inflightPost[e.id]=Gi.xhr({method:"POST",path:n},_s(this,i,Sa));function i(a,o){if(delete yr.inflightPost[e.id],a)return t(a);this.removeNote(e);var s={skipSeen:!1};return gb(o,function(l,u){return l?t(l):t(void 0,u[0])},s)}},postNoteUpdate:function(e,t,r){if(!this.authenticated())return r({message:"Not Authenticated",status:-3},e);if(yr.inflightPost[e.id])return r({message:"Note update already inflight",status:-2},e);var n;if(e.status!=="closed"&&t==="closed")n="close";else if(e.status!=="open"&&t==="open")n="reopen";else if(n="comment",!e.newComment)return;var i="/api/0.6/notes/"+e.id+"/"+n;e.newComment&&(i+="?"+yt({text:e.newComment})),yr.inflightPost[e.id]=Gi.xhr({method:"POST",path:i},_s(this,a,Sa));function a(o,s){if(delete yr.inflightPost[e.id],o)return r(o);this.removeNote(e),n==="close"?yr.closed[e.id]=!0:n==="reopen"&&delete yr.closed[e.id];var l={skipSeen:!1};return gb(s,function(u,c){return u?r(u):r(void 0,c[0])},l)}},apiConnections:function(e){return arguments.length?(vN=e,this):vN},switch:function(e){co=e.url,lc=e.apiUrl||co,e.url&&!e.apiUrl&&(e={...e,apiUrl:e.url});let t=Wn(Gi.options(),"access_token");return Gi.options({...t,...e}),this.reset(),this.userChangesets(function(){}),uo.call("change"),this},toggle:function(e){return Jp=!e,this},isChangesetInflight:function(){return!!Aa.inflight},caches:function(e){function t(r){var n={};return Object.keys(r).forEach(function(i){i==="rtree"?n.rtree=new Cu.default().fromJSON(r.rtree.toJSON()):i==="note"?(n.note={},Object.keys(r.note).forEach(function(a){n.note[a]=Nr(r.note[a])})):n[i]=JSON.parse(JSON.stringify(r[i]))}),n}return arguments.length?e==="get"?{tile:Rr,note:yr,user:_n}:(e.tile&&(Rr=e.tile,Rr.inflight={}),e.note&&(yr=e.note,yr.inflight={},yr.inflightPost={}),e.user&&(_n=e.user),this):{tile:t(Rr),note:t(yr),user:t(_n)}},logout:function(){return W0=void 0,Q0=void 0,Gi.logout(),uo.call("change"),this},authenticated:function(){return Gi.authenticated()},authenticate:function(e){var t=this,r=Sa;W0=void 0,Q0=void 0;function n(i,a){if(i){e&&e(i);return}if(t.getConnectionId()!==r){e&&e({message:"Connection Switched",status:-1});return}Su=void 0,uo.call("change"),e&&e(i,a),t.userChangesets(function(){})}Gi.authenticate(n)},imageryBlocklists:function(){return yN},tileZoom:function(e){return arguments.length?(H0=e,this):H0},notes:function(e){var t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox();return yr.rtree.search(i).map(function(a){return a.data})},getNote:function(e){return yr.note[e]},removeNote:function(e){!(e instanceof Nr)||!e.id||(delete yr.note[e.id],yb(vb(e),!1))},replaceNote:function(e){if(!(!(e instanceof Nr)||!e.id))return yr.note[e.id]=e,yb(vb(e),!0),e},getClosedIDs:function(){return Object.keys(yr.closed).sort()}};var bb="https://wiki.openstreetmap.org/w/api.php",X0={},Un={},rd={en:!1},oee=Bt(kN,500,{leading:!1});function kN(e,t){if(!X0[e]){var r=new AbortController;X0[e]=r,Kt(e,{signal:r.signal}).then(function(n){delete X0[e],t&&t(null,n)}).catch(function(n){delete X0[e],n.name!=="AbortError"&&t&&t(n.message)})}}var xb={init:function(){X0={},Un={},rd={}},reset:function(){Object.values(X0).forEach(function(e){e.abort()}),X0={}},claimToValue:function(e,t,r){if(e.claims[t]){var n=rd[r],i,a;e.claims[t].forEach(function(l){!i&&l.rank==="preferred"&&(i=l),n&&l.qualifiers&&l.qualifiers.P26&&l.qualifiers.P26[0].datavalue.value.id===n&&(a=l)});var o=a||i;if(o){var s=o.mainsnak.datavalue;return s.type==="wikibase-entityid"?s.value.id:s.value}else return}},monolingualClaimToValueObj:function(e,t){if(!(!e||!e.claims[t]))return e.claims[t].reduce(function(r,n){var i=n.mainsnak.datavalue.value;return r[i.language]=i.text,r},{})},toSitelink:function(e,t,r){var n=t?"Tag":"Key",i="";return r?i=`OpenHistoricalMap/Tags/${n}/`:i=n+":",(i+(t?`${e}=${t}`:e).replace(/_/g," ")).trim()},getEntity:function(e,t){var r=e.debounce?oee:kN,n=this,i=[],a={},o=e.key==="type"&&e.value?("Relation:"+e.value).replace(/_/g," ").trim():!1,s=e.key==="type"&&e.value?"OpenHistoricalMap/Tags/Relation/"+e.value.replace(/_/g," ").trim():!1,l=e.key?this.toSitelink(e.key):!1,u=e.key?this.toSitelink(e.key,null,!0):!1,c=e.key&&e.value?this.toSitelink(e.key,e.value):!1,f=e.key&&e.value?this.toSitelink(e.key,e.value,!0):!1,p;if(e.langCodes&&e.langCodes.forEach(function(x){rd[x]===void 0&&(p=("Locale:"+x).replace(/_/g," ").trim(),i.push(p))}),o&&(Un[s]?a.rtype=Un[s]:Un[o]?a.rtype=Un[o]:i.push(o,s)),l&&(Un[u]?a.key=Un[u]:Un[l]?a.key=Un[l]:i.push(l,u)),c&&(Un[f]?a.tag=Un[f]:Un[c]?a.tag=Un[c]:i.push(c,f)),!i.length)return t(null,a);var d={action:"wbgetentities",sites:"wiki",titles:i.join("|"),languages:e.langCodes.join("|"),languagefallback:1,origin:"*",format:"json"},g=bb+"?"+yt(d);r(g,function(x,b){if(x)t(x);else if(!b.success||b.error)t(b.error.messages.map(function(v){return v.html["*"]}).join("
    "));else{var m=!1;Object.values(b.entities).forEach(function(v){if(v.missing!==""){var y=v.sitelinks.wiki.title;y===s?(Un[s]=v,a.rtype=v):y===o?(Un[o]=v,a.rtype=v):y===u?(Un[u]=v,a.key=v):y===l?(Un[l]=v,a.key=v):y===f?(Un[f]=v,a.tag=v):y===c?(Un[c]=v,a.tag=v):y===p?m=v.id:console.log("Unexpected title "+y)}}),p&&n.addLocale(e.langCodes[0],m),t(null,a)}})},getDocs:function(e,t){var r=this,n=fe.localeCodes().map(function(i){return i.toLowerCase()});e.langCodes=n,this.getEntity(e,function(i,a){if(i){t(i);return}var o=a.rtype||a.tag||a.key;if(!o){t("No entity");return}var s,l;for(s in n){let A=n[s];if(o.descriptions[A]&&o.descriptions[A].language===A){l=o.descriptions[A];break}}!l&&Object.values(o.descriptions).length&&(l=Object.values(o.descriptions)[0]);var u={title:o.title,description:l?l.value:"",descriptionLocaleCode:l?l.language:"",editURL:"https://wiki.openstreetmap.org/wiki/"+o.title};if(o.claims){var c,f=r.claimToValue(o,"P4",n[0]);f?c="https://commons.wikimedia.org/w/index.php":(f=r.claimToValue(o,"P28",n[0]),f&&(c="https://wiki.openstreetmap.org/w/index.php")),c&&f&&(u.imageURL=c+"?"+yt({title:"Special:Redirect/file/"+f,width:400}))}var p=r.monolingualClaimToValueObj(a.rtype,"P31"),d=r.monolingualClaimToValueObj(a.tag,"P31"),g=r.monolingualClaimToValueObj(a.key,"P31"),x=[p,d,g];for(s in x){var b=x[s];for(var m in n){var v=n[m],y=n[0].split("-")[0]!=="en"&&v.split("-")[0]==="en"?"inspector.wiki_en_reference":"inspector.wiki_reference",_=w(b,v,y);if(_){u.wiki=_;break}}if(u.wiki)break}t(null,u);function w(A,I,E){if(A&&A[I])return{title:A[I],text:E,url:"https://wiki.openstreetmap.org/wiki/"+A[I]}}})},addLocale:function(e,t){rd[e]=t},apibase:function(e){return arguments.length?(bb=e,this):bb}};var CN=xt(_a());var see="https://dev.virtualearth.net/REST/v1/Imagery/MetaData/Streetside?mapArea={bbox}&key={key}&count={count}",IN=500,lee=c0("5c875730b09c6b422433e807e1ff060b6536c791dbfffcffc4c6b18a1bdba1f14593d151adb50e19e1be1ab19aef813bf135d0f103475e5c724dec94389e45d0"),uee="pannellum/pannellum.css",cee="pannellum/pannellum.js",AN=16.5,fee=Mr().zoomExtent([AN,AN]).skipNullIsland(!0),id=xe("loadedImages","viewerChanged"),pee=10,dee=90,mee=45,nd=!1,ad=512,Iu=0,na,fo,Y0={showFullscreenCtrl:!1,autoLoad:!0,compass:!0,yaw:0,minHfov:pee,maxHfov:dee,hfov:mee,type:"cubemap",cubeMap:[]},cc;function FN(e){e.abort()}function hee(e){if(!e)return null;let t={day:"numeric",month:"short",year:"numeric"},r=new Date(e);return isNaN(r.getTime())?null:r.toLocaleString(fe.localeCode(),t)}function gee(e,t,r,n){let i=fee.margin(n).getTiles(r),a=na[e];Object.keys(a.inflight).forEach(o=>{i.find(l=>o.indexOf(l.id+",")===0)||(FN(a.inflight[o]),delete a.inflight[o])}),i.forEach(o=>fc(e,t,o))}function fc(e,t,r){let n=na[e],i=n.nextPage[r.id]||0,a=r.id+","+String(i);n.loaded[a]||n.inflight[a]||(n.inflight[a]=vee(t,r,o=>{if(n.loaded[a]=!0,delete n.inflight[a],!o)return;if(o.resourceSets[0].resources.length===IN){let l=r.extent.split();fc(e,t,{id:r.id+",a",extent:l[0]}),fc(e,t,{id:r.id+",b",extent:l[1]}),fc(e,t,{id:r.id+",c",extent:l[2]}),fc(e,t,{id:r.id+",d",extent:l[3]})}let s=o.resourceSets[0].resources.map(l=>{let u=l.imageUrl;if(n.points[u])return null;let c=[l.lon,l.lat],f={loc:c,key:u,imageUrl:l.imageUrl.replace("{subdomain}",l.imageUrlSubdomains[0]),ca:l.he,captured_at:l.vintageEnd,captured_by:"microsoft",pano:!0,sequenceKey:null};return n.points[u]=f,{minX:c[0],minY:c[1],maxX:c[0],maxY:c[1],data:f}}).filter(Boolean);n.rtree.load(s),e==="bubbles"&&id.call("loadedImages")}))}function vee(e,t,r){let n=t.extent.rectangle(),i=e.replace("{key}",lee).replace("{bbox}",[n[1],n[0],n[3],n[2]].join(",")).replace("{count}",IN),a=new AbortController;return fetch(i,{signal:a.signal}).then(function(o){if(!o.ok)throw new Error(o.status+" "+o.statusText);return o.json()}).then(function(o){return o||r(null),r(o||[])}).catch(function(o){if(o.name!=="AbortError")throw new Error(o)}),a}function yee(e){let t=hr(e.scale()),r=Math.ceil(t*2)/2+2.5;return Mr().zoomExtent([r,r]).getTiles(e).map(i=>i.extent)}function bee(e,t,r){return e=e||5,yee(t).reduce((n,i)=>{let a=r.search(i.bbox()).slice(0,e).map(o=>o.data);return a.length?n.concat(a):n},[])}function xee(e){return new Promise(t=>{let r=new Image;r.onload=()=>{document.getElementById("ideditor-canvas"+e.face).getContext("2d").drawImage(r,e.x,e.y),t({imgInfo:e,status:"ok"})},r.onerror=()=>{t({data:e,status:"error"})},r.setAttribute("crossorigin",""),r.src=e.url})}function wee(e){return Promise.all(e.map(xee)).then(t=>{let r=document.getElementById("ideditor-canvas"+t[0].imgInfo.face),n={"01":0,"02":1,"03":2,10:3,11:4,12:5},i=t[0].imgInfo.face;return Y0.cubeMap[n[i]]=r.toDataURL("image/jpeg",1),{status:"loadCanvas for face "+t[0].imgInfo.face+"ok"}})}function _ee(e){return Promise.all(e.map(wee)).then(()=>({status:"loadFaces done"}))}function SN(e,t){t&&e.selectAll("#ideditor-stitcher-canvases").remove(),e.selectAll("#ideditor-stitcher-canvases").data([0]).enter().append("div").attr("id","ideditor-stitcher-canvases").attr("display","none").selectAll("canvas").data(["canvas01","canvas02","canvas03","canvas10","canvas11","canvas12"]).enter().append("canvas").attr("id",r=>"ideditor-"+r).attr("width",ad).attr("height",ad)}function Eee(e){let t=0,r=0,n=256;for(let i=e.length;i>0;i--){let a=e[i-1];t+=+(a==="1"||a==="3")*n,r+=+(a==="2"||a==="3")*n,n*=2}return[t,r]}function kee(){let e=ad/256,t;return e===16?t=["0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111","0002","0003","0012","0013","0102","0103","0112","0113","1002","1003","1012","1013","1102","1103","1112","1113","0020","0021","0030","0031","0120","0121","0130","0131","1020","1021","1030","1031","1120","1121","1130","1131","0022","0023","0032","0033","0122","0123","0132","0133","1022","1023","1032","1033","1122","1123","1132","1133","0200","0201","0210","0211","0300","0301","0310","0311","1200","1201","1210","1211","1300","1301","1310","1311","0202","0203","0212","0213","0302","0303","0312","0313","1202","1203","1212","1213","1302","1303","1312","1313","0220","0221","0230","0231","0320","0321","0330","0331","1220","1221","1230","1231","1320","1321","1330","1331","0222","0223","0232","0233","0322","0323","0332","0333","1222","1223","1232","1233","1322","1323","1332","1333","2000","2001","2010","2011","2100","2101","2110","2111","3000","3001","3010","3011","3100","3101","3110","3111","2002","2003","2012","2013","2102","2103","2112","2113","3002","3003","3012","3013","3102","3103","3112","3113","2020","2021","2030","2031","2120","2121","2130","2131","3020","3021","3030","3031","3120","3121","3130","3131","2022","2023","2032","2033","2122","2123","2132","2133","3022","3023","3032","3033","3122","3123","3132","3133","2200","2201","2210","2211","2300","2301","2310","2311","3200","3201","3210","3211","3300","3301","3310","3311","2202","2203","2212","2213","2302","2303","2312","2313","3202","3203","3212","3213","3302","3303","3312","3313","2220","2221","2230","2231","2320","2321","2330","2331","3220","3221","3230","3231","3320","3321","3330","3331","2222","2223","2232","2233","2322","2323","2332","2333","3222","3223","3232","3233","3322","3323","3332","3333"]:e===8?t=["000","001","010","011","100","101","110","111","002","003","012","013","102","103","112","113","020","021","030","031","120","121","130","131","022","023","032","033","122","123","132","133","200","201","210","211","300","301","310","311","202","203","212","213","302","303","312","313","220","221","230","231","320","321","330","331","222","223","232","233","322","323","332","333"]:e===4?t=["00","01","10","11","02","03","12","13","20","21","30","31","22","23","32","33"]:t=["0","1","2","3"],t}var wb={init:function(){na||this.reset(),this.event=ke(this,id,"on")},reset:function(){na&&Object.values(na.bubbles.inflight).forEach(FN),na={bubbles:{inflight:{},loaded:{},nextPage:{},rtree:new CN.default,points:{}},sequences:{}}},bubbles:function(e){return bee(5,e,na.bubbles.rtree)},cachedImage:function(e){return na.bubbles.points[e]},sequences:function(e){let t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox(),a={},o=[];return na.bubbles.rtree.search(i).forEach(s=>{let l=s.data.sequenceKey;l&&!a[l]&&(a[l]=!0,o.push(na.sequences[l].geojson))}),o},loadBubbles:function(e,t){t===void 0&&(t=2),gee("bubbles",see,e,t)},viewer:function(){return fo},initViewer:function(){if(!window.pannellum||fo)return;Iu+=1;let e=Iu.toString(),t={default:{firstScene:e},scenes:{}};t.scenes[e]=Y0,fo=window.pannellum.viewer("ideditor-viewer-streetside",t)},ensureViewerLoaded:function(e){if(cc)return cc;let t=e.container().select(".photoviewer").selectAll(".ms-wrapper").data([0]),r=t.enter().append("div").attr("class","photo-wrapper ms-wrapper").classed("hide",!0),n=this,i="PointerEvent"in window?"pointer":"mouse";r.append("div").attr("id","ideditor-viewer-streetside").on(i+"down.streetside",()=>{G(window).on(i+"move.streetside",()=>{id.call("viewerChanged")},!0)}).on(i+"up.streetside pointercancel.streetside",()=>{G(window).on(i+"move.streetside",null);let s=G1(l=>{id.call("viewerChanged"),l>2e3&&s.stop()})}).append("div").attr("class","photo-attribution fillD");let a=r.append("div").attr("class","photo-controls-wrap").append("div").attr("class","photo-controls");return a.append("button").on("click.back",o(-1)).text("\u25C4"),a.append("button").on("click.forward",o(1)).text("\u25BA"),t=t.merge(r).call(SN,!0),e.ui().photoviewer.on("resize.streetside",()=>{fo&&fo.resize()}),cc=new Promise((s,l)=>{let u=0;function c(){u+=1,u===2&&s()}let f=G("head");f.selectAll("#ideditor-streetside-viewercss").data([0]).enter().append("link").attr("id","ideditor-streetside-viewercss").attr("rel","stylesheet").attr("crossorigin","anonymous").attr("href",e.asset(uee)).on("load.serviceStreetside",c).on("error.serviceStreetside",function(){l()}),f.selectAll("#ideditor-streetside-viewerjs").data([0]).enter().append("script").attr("id","ideditor-streetside-viewerjs").attr("crossorigin","anonymous").attr("src",e.asset(cee)).on("load.serviceStreetside",c).on("error.serviceStreetside",function(){l()})}).catch(function(){cc=null}),cc;function o(s){return()=>{let l=e.container().select(".photoviewer"),u=l.empty()?void 0:l.datum();if(!u)return;let c=s===1?u.ne:u.pr,f=fo.getYaw(),p=u.ca+f,d=u.loc,g=35,x=[d[0]+Pn(g/5,d[1]),d[1]],b=[d[0]+Pn(g/2,d[1]),d[1]+ti(g)],m=[d[0]-Pn(g/2,d[1]),d[1]+ti(g)],v=[d[0]-Pn(g/5,d[1]),d[1]],y=[x,b,m,v,x],_=(s===1?p:p+180)*(Math.PI/180);y=U1(y,-_,d);let w=y.reduce((E,k)=>E.extend(Pe(k)),Pe()),A=1/0;na.bubbles.rtree.search(w.bbox()).forEach(E=>{if(E.data.key===u.key||!Wo(E.data.loc,y))return;let k=_t(E.data.loc,u.loc),S=u.ca-E.data.ca;Math.min(Math.abs(S),360-Math.abs(S))>20&&(k+=5),k{x.stopPropagation(),nd=!nd,ad=nd?1024:512,a.call(SN,!0);let b={yaw:fo.getYaw(),pitch:fo.getPitch(),hfov:fo.getHfov()};Y0=Object.assign(Y0,b),r.selectImage(e,n.key).showViewer(e)}),u.append("span").call(F.append("streetside.hires"));let c=s.append("div").attr("class","attribution-capture-info");if(n.captured_by){let x=new Date().getFullYear();c.append("a").attr("class","captured_by").attr("target","_blank").attr("href","https://www.microsoft.com/en-us/maps/streetside").text("\xA9"+x+" Microsoft"),c.append("span").text("|")}n.captured_at&&c.append("span").attr("class","captured_at").text(hee(n.captured_at));let f=o.append("div").attr("class","attribution-row");f.append("a").attr("class","image-view-link").attr("target","_blank").attr("href","https://www.bing.com/maps?cp="+n.loc[1]+"~"+n.loc[0]+"&lvl=17&dir="+n.ca+"&style=x&v=2&sV=1").call(F.append("streetside.view_on_bing")),f.append("a").attr("class","image-report-link").attr("target","_blank").attr("href","https://www.bing.com/maps/privacyreport/streetsideprivacyreport?bubbleid="+encodeURIComponent(n.key)+"&focus=photo&lat="+n.loc[1]+"&lng="+n.loc[0]+"&z=17").call(F.append("streetside.report"));let p=["01","02","03","10","11","12"],d=kee(),g=p.map(x=>d.map(b=>{let m=Eee(b);return{face:x,url:n.imageUrl.replace("{faceId}",x).replace("{tileId}",b),x:m[0],y:m[1]}}));return _ee(g).then(function(){if(!fo)r.initViewer();else{Iu+=1;let x=Iu.toString();fo.addScene(x,Y0).loadScene(x),Iu>2&&(x=(Iu-1).toString(),fo.removeScene(x))}}),this},getSequenceKeyForBubble:function(e){return e&&e.sequenceKey},setStyles:function(e,t,r){r&&(e.container().selectAll(".viewfield-group").classed("highlighted",!1).classed("hovered",!1).classed("currentView",!1),e.container().selectAll(".sequence").classed("highlighted",!1).classed("currentView",!1));let n=t&&t.key,i=this.getSequenceKeyForBubble(t),a=i&&na.sequences[i],o=a&&a.bubbles.map(x=>x.key)||[],s=e.container().select(".photoviewer"),l=s.empty()?void 0:s.datum(),u=l&&l.key,c=this.getSequenceKeyForBubble(l),f=c&&na.sequences[c],p=f&&f.bubbles.map(x=>x.key)||[],d=or(o,p);e.container().selectAll(".layer-streetside-images .viewfield-group").classed("highlighted",x=>d.indexOf(x.key)!==-1).classed("hovered",x=>x.key===n).classed("currentView",x=>x.key===u),e.container().selectAll(".layer-streetside-images .sequence").classed("highlighted",x=>x.properties.key===i).classed("currentView",x=>x.properties.key===c),e.container().selectAll(".layer-streetside-images .viewfield-group .viewfield").attr("d",g);function g(){let x=this.parentNode.__data__;return x.pano&&x.key!==u?"M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0":"M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z"}return this},updateUrlImage:function(e){if(!window.mocha){var t=pr(window.location.hash);e?t.photo="streetside/"+e:delete t.photo,window.location.replace("#"+yt(t,!0))}},cache:function(){return na}};var K0=UA,J0={},_b={},Z0={},Aee={point:"count_nodes",vertex:"count_nodes",area:"count_ways",line:"count_ways"},See={point:"count_node_members",vertex:"count_node_members",area:"count_way_members",line:"count_way_members",relation:"count_relation_members"},Cee={point:"nodes",vertex:"nodes",area:"ways",line:"ways"},Iee={point:"count_node_members_fraction",vertex:"count_node_members_fraction",area:"count_way_members_fraction",line:"count_way_members_fraction",relation:"count_relation_members_fraction"};function Eb(e,t,r){return e.geometry&&r[e.geometry]&&(e[t]=r[e.geometry]),e}function Fee(e){return Eb(e,"filter",Cee)}function od(e){return Eb(e,"sortname",Aee)}function Dee(e){return Eb(e,"sortname",See)}function pc(e){return Wn(e,["geometry","debounce"])}function Tee(e){var t=e?"count_"+e:"count_all";return function(r){return Number(r[t])>2500||r.in_wiki}}function Mee(e){return function(t){var r=new RegExp("^"+e+"(.*)$","i"),n=t.key.match(r)||[];return n.length===2&&n[1].indexOf(":")===-1}}function Nee(e){return function(t){return t.value.match(/[;,]/)!==null||!e&&t.value.match(/[A-Z*]/)!==null?!1:t.count>100||t.in_wiki}}function Pee(e){return function(t){return t.role===""||t.role.match(/[A-Z*;,]/)!==null?!1:Number(t[Iee[e]])>0}}function DN(e){return{value:e.key,title:e.key}}function Oee(e){var t={value:e.value,title:e.description||e.value};return t}function Lee(e){return{value:e.role,title:e.role}}function Ree(e,t){return e.key.indexOf(":")===-1&&t.key.indexOf(":")!==-1?-1:e.key.indexOf(":")!==-1&&t.key.indexOf(":")===-1?1:0}var dc=Bt(Fu,300,{leading:!1});function Fu(e,t,r,n,i){if(!J0[e]&&!Bee(e,t,r,n)){var a=new AbortController;J0[e]=a,Kt(e,{signal:a.signal}).then(function(o){delete J0[e],i&&i(null,o)}).catch(function(o){delete J0[e],o.name!=="AbortError"&&i&&i(o.message)})}}function Bee(e,t,r,n){var i=t.rp||25,a=t.query||"",o=e;do{var s=Z0[o];if(s&&(e===o||s.length=0);return!1}var kb={init:function(){J0={},Z0={},_b={postal_code:!0,full_name:!0,loc_name:!0,reg_name:!0,short_name:!0,sorting_name:!0,artist_name:!0,nat_name:!0,long_name:!0,via:!0,"bridge:name":!0};var e={rp:100,sortname:"values_all",sortorder:"desc",page:1,debounce:!1,lang:fe.languageCode()};this.keys(e,function(t,r){t||r.forEach(function(n){n.value!=="opening_hours"&&(_b[n.value]=!0)})})},reset:function(){Object.values(J0).forEach(function(e){e.abort()}),J0={}},keys:function(e,t){var r=e.debounce?dc:Fu;e=pc(od(e)),e=Object.assign({rp:10,sortname:"count_all",sortorder:"desc",page:1,lang:fe.languageCode()},e);var n=K0+"keys/all?"+yt(e);r(n,e,!1,t,function(i,a){if(i)t(i);else{var o=Tee(e.filter),s=a.data.filter(o).sort(Ree).map(DN);Z0[n]=s,t(null,s)}})},multikeys:function(e,t){var r=e.debounce?dc:Fu;e=pc(od(e)),e=Object.assign({rp:25,sortname:"count_all",sortorder:"desc",page:1,lang:fe.languageCode()},e);var n=e.query,i=K0+"keys/all?"+yt(e);r(i,e,!0,t,function(a,o){if(a)t(a);else{var s=Mee(n),l=o.data.filter(s).map(DN);Z0[i]=l,t(null,l)}})},values:function(e,t){var r=e.key;if(r&&_b[r]){t(null,[]);return}var n=e.debounce?dc:Fu;e=pc(od(Fee(e))),e=Object.assign({rp:25,sortname:"count_all",sortorder:"desc",page:1,lang:fe.languageCode()},e);var i=K0+"key/values?"+yt(e);n(i,e,!1,t,function(a,o){if(a)t(a);else{var s=_f.test(e.key),l=Nee(s),u=o.data.filter(l).map(Oee);Z0[i]=u,t(null,u)}})},roles:function(e,t){var r=e.debounce?dc:Fu,n=e.geometry;e=pc(Dee(e)),e=Object.assign({rp:25,sortname:"count_all_members",sortorder:"desc",page:1,lang:fe.languageCode()},e);var i=K0+"relation/roles?"+yt(e);r(i,e,!0,t,function(a,o){if(a)t(a);else{var s=Pee(n),l=o.data.filter(s).map(Lee);Z0[i]=l,t(null,l)}})},docs:function(e,t){var r=e.debounce?dc:Fu;e=pc(od(e));var n="key/wiki_pages?";e.value?n="tag/wiki_pages?":e.rtype&&(n="relation/wiki_pages?");var i=K0+n+yt(e);r(i,e,!0,t,function(a,o){a?t(a):(Z0[i]=o.data,t(null,o.data))})},apibase:function(e){return arguments.length?(K0=e,this):K0}};var PN=xt(Za());var Cb=xt(iy()),ON=xt(TN()),LN=xt(d9()),RN=xt(h9());var MN=Mr().tileSize(512).margin(1),BN=xe("loadedData"),v1;function NN(e){e.abort()}function $ee(e,t,r){var n=new RN.default.VectorTile(new LN.default(e)),i=Object.keys(n.layers);Array.isArray(i)||(i=[i]);var a=[];return i.forEach(function(o){var s=n.layers[o];if(s)for(var l=0;l{if(a&&a.error)if(a.error.code==="badvalue"&&a.error.info.includes(n)&&!r&&n.includes("-")){this.itemsForSearchQuery(e,t,n.split("-")[0]);return}else throw new Error(a.error);t&&t(null,a.search||{})}).catch(function(a){t&&t(a.message,{})})},itemsByTitle:function(e,t,r){if(!t){r&&r("No title",{});return}e=e||"en";var n=Fb+yt({action:"wbgetentities",format:"json",formatversion:2,sites:e.replace(/-/g,"_")+"wiki",titles:t,languages:"en",origin:"*"});Kt(n).then(function(i){if(i&&i.error)throw new Error(i.error);r&&r(null,i.entities||{})}).catch(function(i){r&&r(i.message,{})})},languagesToQuery:function(){return fe.localeCodes().map(function(e){return e.toLowerCase()}).filter(function(e){return e!=="en-us"})},entityByQID:function(e,t){if(!e){t("No qid",{});return}if(Db[e]){t&&t(null,Db[e]);return}var r=this.languagesToQuery(),n=Fb+yt({action:"wbgetentities",format:"json",formatversion:2,ids:e,props:"labels|descriptions|claims|sitelinks",sitefilter:r.map(function(i){return i+"wiki"}).join("|"),languages:r.join("|"),languagefallback:1,origin:"*"});Kt(n).then(function(i){if(i&&i.error)throw new Error(i.error);t&&t(null,i.entities[e]||{})}).catch(function(i){t&&t(i.message,{})})},getDocs:function(e,t){var r=this.languagesToQuery();this.entityByQID(e.qid,function(n,i){if(n||!i){t(n||"No entity");return}var a,o;for(a in r){let b=r[a];if(i.descriptions[b]&&i.descriptions[b].language===b){o=i.descriptions[b];break}}!o&&Object.values(i.descriptions).length&&(o=Object.values(i.descriptions)[0]);var s={title:i.id,description:o?o.value:"",descriptionLocaleCode:o?o.language:"",editURL:"https://www.wikidata.org/wiki/"+i.id};if(i.claims){var l="https://commons.wikimedia.org/w/index.php",u=["P154","P18"],c,f;for(a=0;a0&&(f=c[Object.keys(c)[0]].mainsnak.datavalue.value,f)){s.imageURL=l+"?"+yt({title:"Special:Redirect/file/"+f,width:400});break}}if(i.sitelinks){var p=fe.languageCode().toLowerCase()==="en";for(a=0;ao.id===e),{filename:i,uploaded_hash:a}=r.data[n];hc.panorama=qee+"/"+a+"/"+i+"/"+Hee})}var Bb={init:function(){bi||this.reset(),this.event=ke(this,Rb,"on")},reset:function(){bi&&Object.values(bi.requests.inflight).forEach(function(e){e.abort()}),bi={images:{rtree:new Pb.default,forImageId:{}},sequences:{rtree:new Pb.default,lineString:{}},requests:{loaded:{},inflight:{}}},y1=null},images:function(e){return Qee(5,e,bi.images.rtree)},cachedImage:function(e){return bi.images.forImageId[e]},loadImages:function(e){let t=$N+Ob+UN;qN("images",t,14,e)},loadLines:function(e){let t=$N+Lb+UN;qN("line",t,14,e)},sequences:function(e){let t=e.clipExtent(),r=[t[0][0],t[1][1]],n=[t[1][0],t[0][1]],i=Pe(e.invert(r),e.invert(n)).bbox(),a={},o=[];return bi.images.rtree.search(i).forEach(function(s){s.data.sequence_id&&(a[s.data.sequence_id]=!0)}),Object.keys(a).forEach(function(s){bi.sequences.lineString[s]&&(o=o.concat(bi.sequences.lineString[s]))}),o},setActiveImage:function(e){e?y1={id:e.id,sequence_id:e.sequence_id}:y1=null},setStyles:function(e,t){let r=t&&t.id,n=t&&t.sequence_id,i=y1&&y1.sequence_id,a=y1&&y1.id,o=e.container().selectAll(".layer-mapilio .viewfield-group"),s=e.container().selectAll(".layer-mapilio .sequence");return o.classed("highlighted",function(l){return l.id===r}).classed("hovered",function(l){return l.id===r}).classed("currentView",function(l){return l.id===a}),s.classed("highlighted",function(l){return l.properties.sequence_uuid===n}).classed("currentView",function(l){return l.properties.sequence_uuid===i}),this},updateUrlImage:function(e){if(!window.mocha){var t=pr(window.location.hash);e?t.photo="mapilio/"+e:delete t.photo,window.location.replace("#"+yt(t,!0))}},initViewer:function(){if(!window.pannellum||Es)return;Du+=1;let e=Du.toString(),t={default:{firstScene:e},scenes:{}};t.scenes[e]=hc,Es=window.pannellum.viewer("ideditor-viewer-mapilio-pnlm",t)},selectImage:function(e,t){let r=this,n=this.cachedImage(t);this.setActiveImage(n),this.updateUrlImage(n.id);let i=e.container().select(".photoviewer");if(i.empty()||i.datum(n),this.setStyles(e,null),!n)return this;let a=e.container().select(".photoviewer .mapilio-wrapper"),o=a.selectAll(".photo-attribution").text("");n.capture_time&&(o.append("span").attr("class","captured_at").text(s(n.capture_time)),o.append("span").text("|")),o.append("a").attr("class","image-link").attr("target","_blank").attr("href",`https://mapilio.com/app?lat=${n.loc[1]}&lng=${n.loc[0]}&zoom=17&pId=${n.id}`).text("mapilio.com"),a.transition().duration(100).call(zN.transform,Yr),a.selectAll("img").remove(),a.selectAll("button.back").classed("hide",!bi.images.forImageId.hasOwnProperty(+t-1)),a.selectAll("button.forward").classed("hide",!bi.images.forImageId.hasOwnProperty(+t+1)),Kee(n.id,n.sequence_id).then(function(){if(n.isPano)if(!Es)r.initViewer();else{Du+=1;let l=Du.toString();Es.addScene(l,hc).loadScene(l),Du>2&&(l=(Du-1).toString(),Es.removeScene(l))}else r.initOnlyPhoto(e)});function s(l){if(!l)return null;var u={day:"numeric",month:"short",year:"numeric"},c=new Date(l);return isNaN(c.getTime())?null:c.toLocaleDateString(fe.localeCode(),u)}return this},initOnlyPhoto:function(e){Es&&(Es.destroy(),Es=null);let t=e.container().select("#ideditor-viewer-mapilio-simple"),r=t.select("img");r.empty()?t.append("img").attr("src",hc.panorama):r.attr("src",hc.panorama)},ensureViewerLoaded:function(e){let t=this,r=e.container().select("#ideditor-viewer-mapilio-simple > img");if(r.empty()||r.remove(),mc)return mc;let i=e.container().select(".photoviewer").selectAll(".mapilio-wrapper").data([0]).enter().append("div").attr("class","photo-wrapper mapilio-wrapper").classed("hide",!0).on("dblclick.zoom",null);i.append("div").attr("class","photo-attribution fillD");let a=i.append("div").attr("class","photo-controls-wrap").append("div").attr("class","photo-controls-mapilio");a.append("button").classed("back",!0).on("click.back",o(-1)).text("\u25C4"),a.append("button").classed("forward",!0).on("click.forward",o(1)).text("\u25BA"),i.append("div").attr("id","ideditor-viewer-mapilio-pnlm"),i.append("div").attr("id","ideditor-viewer-mapilio-simple-wrap").call(zN.on("zoom",s)).append("div").attr("id","ideditor-viewer-mapilio-simple"),e.ui().photoviewer.on("resize.mapilio",()=>{Es&&Es.resize()}),mc=new Promise((l,u)=>{let c=0;function f(){c+=1,c===2&&l()}let p=G("head");p.selectAll("#ideditor-mapilio-viewercss").data([0]).enter().append("link").attr("id","ideditor-mapilio-viewercss").attr("rel","stylesheet").attr("crossorigin","anonymous").attr("href",e.asset(Gee)).on("load.serviceMapilio",f).on("error.serviceMapilio",function(){u()}),p.selectAll("#ideditor-mapilio-viewerjs").data([0]).enter().append("script").attr("id","ideditor-mapilio-viewerjs").attr("crossorigin","anonymous").attr("src",e.asset(jee)).on("load.serviceMapilio",f).on("error.serviceMapilio",function(){u()})}).catch(function(){mc=null});function o(l){return function(){if(!y1)return;let c=y1.id+l;if(!c)return;let f=bi.images.forImageId[c];e.map().centerEase(f.loc),t.selectImage(e,f.id)}}function s(l){var u=l.transform;e.container().select(".photoviewer #ideditor-viewer-mapilio-simple").call(ii,u.x,u.y,u.k)}return mc},showViewer:function(e){let t=e.container().select(".photoviewer").classed("hide",!1);return t.selectAll(".photo-wrapper.mapilio-wrapper.hide").size()&&(t.selectAll(".photo-wrapper:not(.mapilio-wrapper)").classed("hide",!0),t.selectAll(".photo-wrapper.mapilio-wrapper").classed("hide",!1)),this},hideViewer:function(e){let t=e.container().select(".photoviewer");return t.empty()||t.datum(null),this.updateUrlImage(null),t.classed("hide",!0).selectAll(".photo-wrapper").classed("hide",!0),e.container().selectAll(".viewfield-group, .sequence, .icon-sign").classed("currentView",!1),this.setActiveImage(),this.setStyles(e,null)},cache:function(){return bi}};var de={geocoder:tb,keepRight:av,improveOSM:sv,osmose:yv,mapillary:Dv,nsi:ib,kartaview:ab,vegbilder:cb,osm:M2,osmWikibase:xb,maprules:Tv,streetside:wb,taginfo:kb,vectorTile:Ib,wikidata:Tb,wikipedia:Nb,mapilio:Bb};function oo(e){var t={id:"drag-note",button:"browse"},r=Ja(e),n,i,a;function o(g,x){n&&window.clearInterval(n),n=window.setInterval(function(){e.map().pan(x),f(g,x)},50)}function s(){n&&(window.clearInterval(n),n=null)}function l(g){return e.projection(g.loc)}function u(g,x){a=x;var b=de.osm;b&&(a=b.getNote(a.id)),e.surface().selectAll(".note-"+a.id).classed("active",!0),e.perform(Bn()),e.enter(t),e.selectedNoteID(a.id)}function c(g,x,b){g.stopPropagation(),i=e.projection.invert(b),f(g);var m=z1(b,e.map().dimensions());m?o(g,m):s()}function f(g,x){x=x||[0,0];var b=g&&g.point||e.projection(i),m=rr(b,x),v=e.projection.invert(m);a=a.move(v);var y=de.osm;y&&y.replaceNote(a),e.replace(Bn())}function p(){e.replace(Bn()),e.selectedNoteID(a.id).enter(xs(e,a.id))}var d=D2().selector(".layer-touch.markers .target.note.new").surface(e.container().select(".main-map").node()).origin(l).on("start",u).on("move",c).on("end",p);return t.enter=function(){e.install(r)},t.exit=function(){e.ui().sidebar.hover.cancel(),e.uninstall(r),e.surface().selectAll(".active").classed("active",!1),s()},t.behavior=d,t}function dp(e,t){var r={id:"select-data",button:"browse"},n=at("select-data"),i=Au(e),a=[eo(e),pi(e),so(e),lo(e),to(e).behavior,oo(e).behavior];function o(l,u){var c=e.surface().selectAll(".layer-mapdata .data"+t.__featurehash__);if(c.empty()){var f=l&&l.type==="zoom"&&l.sourceEvent;u&&f&&(f.type==="pointermove"||f.type==="mousemove"||f.type==="touchmove")&&e.enter(Ge(e))}else c.classed("selected",!0)}function s(){e.container().select(".combobox").size()||e.enter(Ge(e))}return r.zoomToSelected=function(){var l=Pe(b4(t));e.map().centerZoomEase(l.center(),e.map().trimmedExtentZoom(l))},r.enter=function(){a.forEach(e.install),n.on(F("inspector.zoom_to.key"),r.zoomToSelected).on("\u238B",s,!0),G(document).call(n),o();var l=e.ui().sidebar;l.show(i.datum(t));var u=Pe(b4(t));l.expand(l.intersects(u)),e.map().on("drawn.select-data",o)},r.exit=function(){a.forEach(e.uninstall),G(document).call(n.unbind),e.surface().selectAll(".layer-mapdata .selected").classed("selected hover",!1),e.map().on("drawn.select-data",null),e.ui().sidebar.hide()},r}function so(e){var t=4,r=null,n=!1,i={},a=null,o=null,s=null,l="PointerEvent"in window?"pointer":"mouse";function u(A){if(A.keyCode===32){var I=document.activeElement;if(I&&new Set(["INPUT","TEXTAREA"]).has(I.nodeName))return}(A.keyCode===93||A.keyCode===32)&&A.preventDefault(),!A.repeat&&(y(),A.shiftKey&&e.surface().classed("behavior-multiselect",!0),A.keyCode===32&&!i.spacebar&&r&&(y(),a=window.setTimeout(p,500,"spacebar","spacebar"),i.spacebar={firstEvent:r,lastEvent:r}))}function c(A){if(y(),A.shiftKey||e.surface().classed("behavior-multiselect",!1),A.keyCode===93)A.preventDefault(),o="menukey",b(A);else if(A.keyCode===32){var I=i.spacebar;if(I){if(delete i.spacebar,I.done)return;A.preventDefault(),o="spacebar",m(I.firstEvent,I.lastEvent,"spacebar")}}}function f(A){var I=(A.pointerId||"mouse").toString();y(),!(A.buttons&&A.buttons!==1)&&(e.ui().closeEditMenu(),A.pointerType!=="mouse"&&(a=window.setTimeout(p,500,I,"longdown-"+(A.pointerType||"mouse"))),i[I]={firstEvent:A,lastEvent:A})}function p(A,I){var E=i[A];if(E){for(var k in i)i[k].done=!0;a=null,o=I,n=!0,m(E.firstEvent,E.lastEvent,A)}}function d(A){var I=(A.pointerId||"mouse").toString();i[I]&&(i[I].lastEvent=A),(!A.pointerType||A.pointerType==="mouse")&&(r=A,i.spacebar&&(i.spacebar.lastEvent=A))}function g(A){var I=(A.pointerId||"mouse").toString(),E=i[I];E&&(delete i[I],s===I&&(s=null),!E.done&&m(E.firstEvent,A,I))}function x(A){var I=(A.pointerId||"mouse").toString();i[I]&&(delete i[I],s===I&&(s=null))}function b(A){if(A.preventDefault(),!+A.clientX&&!+A.clientY)if(r)A=r;else return;else r=A,A.pointerType==="touch"||A.pointerType==="pen"||A.mozInputSource&&(A.mozInputSource===MouseEvent.MOZ_SOURCE_TOUCH||A.mozInputSource===MouseEvent.MOZ_SOURCE_PEN)?o="touch":o="rightclick";n=!0,m(A,A)}function m(A,I,E){y();var k=e.container().select(".main-map").node(),S=rn(k),D=S(A),P=S(I),O=_t(D,P);if(O>t||!U(I)){_();return}var T=I.target.__data__,M;if(!s){var R=B(E);R&&(s=R.pointerId,M=!R.selected&&R.entityId,i[R.pointerId].done=!0)}var N=e.mode().id==="select"&&(I&&I.shiftKey||e.surface().select(".lasso").node()||s&&!M);v(T,N,P,M);function U($){var z=k.getBoundingClientRect();return $.clientX>=z.left&&$.clientX<=z.right&&$.clientY>=z.top&&$.clientY<=z.bottom}function B($){var z=e.mode(),V=z.id==="select"?z.selectedIDs():[];for(var H in i)if(!(H==="spacebar"||H===$)){var Z=i[H],oe=S(Z.firstEvent),pe=S(Z.lastEvent);if(!(_t(oe,pe)>t)){var ne=Z.firstEvent.target.__data__,ge=ne&&ne.properties&&ne.properties.entity||ne;if(e.graph().hasEntity(ge.id))return{pointerId:H,entityId:ge.id,selected:V.indexOf(ge.id)!==-1}}}return null}}function v(A,I,E,k){var S=e.mode(),D=n,P=o,O=A&&A.properties&&A.properties.entity;O&&(A=O),A&&A.type==="midpoint"&&(A=A.parents[0]);var T;if(A instanceof qe){var M=e.selectedIDs();e.selectedNoteID(null),e.selectedErrorID(null),I?M.indexOf(A.id)!==-1?D||(M=M.filter(function(R){return R!==A.id}),T=M.length?S.selectedIDs(M):Ge(e).selectBehavior(w),e.enter(T)):(M=M.concat([A.id]),T=S.selectedIDs(M),e.enter(T)):(!D||M.length<=1||M.indexOf(A.id)===-1)&&(k===A.id&&(k=null),M=(k?[k]:[]).concat([A.id]),T=S.id==="select"?S.selectedIDs(M):rt(e,M).selectBehavior(w),e.enter(T))}else A&&A.__featurehash__&&!I?e.selectedNoteID(null).enter(dp(e,A)):A instanceof Nr&&!I?e.selectedNoteID(A.id).enter(xs(e,A.id)):A instanceof Fr&&!I?e.selectedErrorID(A.id).enter(pp(e,A.id,A.service)):(e.selectedNoteID(null),e.selectedErrorID(null),!I&&S.id!=="browse"&&e.enter(Ge(e)));e.ui().closeEditMenu(),D&&e.ui().showEditMenu(E,P),_()}function y(){a&&window.clearTimeout(a),a=null}function _(){y(),n=!1,o=null}function w(A){_(),r=e.map().lastPointerEvent(),G(window).on("keydown.select",u).on("keyup.select",c).on(l+"move.select",d,!0).on(l+"up.select",g,!0).on("pointercancel.select",x,!0).on("contextmenu.select-window",function(I){var E=I;+E.clientX==0&&+E.clientY==0&&I.preventDefault()}),A.on(l+"down.select",f).on("contextmenu.select",b)}return w.off=function(A){y(),G(window).on("keydown.select",null).on("keyup.select",null).on("contextmenu.select-window",null).on(l+"move.select",null,!0).on(l+"up.select",null,!0).on("pointercancel.select",null,!0),A.on(l+"down.select",null).on("contextmenu.select",null),e.surface().classed("behavior-multiselect",!1)},w}var Hb={};s6(Hb,{operationCircularize:()=>b0,operationContinue:()=>$b,operationCopy:()=>gc,operationDelete:()=>di,operationDisconnect:()=>Ub,operationDowngrade:()=>vc,operationExtract:()=>zb,operationMerge:()=>qb,operationMove:()=>E0,operationOrthogonalize:()=>x0,operationPaste:()=>yc,operationReflectLong:()=>_0,operationReflectShort:()=>w0,operationReverse:()=>Vb,operationRotate:()=>A5,operationSplit:()=>Gb,operationStraighten:()=>jb});function $b(e,t){var r=t.map(function(l){return e.graph().entity(l)}),n=Object.assign({line:[],vertex:[]},Ir(r,function(l){return l.geometry(e.graph())})),i=n.vertex.length&&n.vertex[0];function a(){return i?e.graph().parentWays(i).filter(function(l){return l.geometry(e.graph())==="line"&&!l.isClosed()&&l.affix(i.id)&&(n.line.length===0||n.line[0]===l)}):[]}var o=a(),s=function(){var l=o[0];e.enter(ro(e,l.id,e.graph(),"line",l.affix(i.id),!0))};return s.relatedEntityIds=function(){return o.length?[o[0].id]:[]},s.available=function(){return n.vertex.length===1&&n.line.length<=1&&!e.features().hasHiddenConnections(i,e.graph())},s.disabled=function(){return o.length===0?"not_eligible":o.length>1?"multiple":!1},s.tooltip=function(){var l=s.disabled();return l?F.append("operations.continue."+l):F.append("operations.continue.description")},s.annotation=function(){return F("operations.continue.annotation.line")},s.id="continue",s.keys=[F("operations.continue.key")],s.title=F.append("operations.continue.title"),s.behavior=xr(e).which(s),s}function gc(e,t){function r(){return t.filter(function(s){var l=e.graph().hasEntity(s);return l.hasInterestingTags()||l.geometry(e.graph())!=="vertex"})}var n=function(){var s=e.graph(),l=i(r(),s),u=[],c={},f,p;for(p=0;p0},n.disabled=function(){var s=Er(r(),e.graph());return s.percentContainedIn(e.map().extent())<.8?"too_large":!1},n.availableForKeypress=function(){var s=window.getSelection&&window.getSelection();return!s||!s.toString()},n.tooltip=function(){var s=n.disabled();return s?F.append("operations.copy."+s,{n:t.length}):F.append("operations.copy.description",{n:t.length})},n.annotation=function(){return F("operations.copy.annotation",{n:t.length})};var o;return n.point=function(s){return o=s,n},n.id="copy",n.keys=[st("\u2318C")],n.title=F.append("operations.copy.title"),n.behavior=xr(e).which(n),n}function Ub(e,t){var r=[],n=[],i=[],a=[];t.forEach(function(y){var _=e.entity(y);_.type==="way"?n.push(y):_.geometry(e.graph())==="vertex"?r.push(y):i.push(y)});var o,s="",l="features",u=[],c=[];if(r.length>0)u=r,r.forEach(function(y){var _=b5(y);if(n.length>0){var w=n.filter(function(A){var I=e.entity(A);return I.nodes.indexOf(y)!==-1});_.limitWays(w)}a.push(_),c=c.concat(e.graph().parentWays(e.graph().entity(y)).map(A=>A.id))}),c=ot(c).filter(function(y){return n.indexOf(y)===-1}),s+=a.length===1?"single_point.":"multiple_points.",n.length===1?s+="single_way."+e.graph().geometry(n[0]):s+=n.length===0?"no_ways":"multiple_ways";else if(n.length>0){var f=n.map(function(y){return e.entity(y)}),p=vr(n,e.graph());o=p.map(function(y){return y.loc});var d=[],g=[],x=[],b=[];p.forEach(function(y){var _=b5(y.id).limitWays(n);if(_.disabled(e.graph())!=="not_connected"){var w=0;for(var A in f){var I=f[A];if(I.nodes.indexOf(y.id)!==-1&&(w+=1),w>1)break}w>1?(d.push(_),g.push(y)):(x.push(_),b.push(y))}}),s+="no_points.",s+=n.length===1?"single_way.":"multiple_ways.",d.length?(a=d,u=g.map(y=>y.id),s+="conjoined",l="from_each_other"):(a=x,u=b.map(y=>y.id),n.length===1?s+=e.graph().geometry(n[0]):s+="separate")}var m=Er(u,e.graph()),v=function(){e.perform(function(y){return a.reduce(function(_,w){return w(_)},y)},v.annotation()),e.validator().validate()};return v.relatedEntityIds=function(){return r.length?c:u},v.available=function(){return!(a.length===0||i.length!==0||r.length!==0&&n.length!==0&&!n.every(function(y){return r.some(function(_){var w=e.entity(y);return w.nodes.indexOf(_)!==-1})}))},v.disabled=function(){var y;for(var _ in a)if(y=a[_].disabled(e.graph()),y)return y;if(m&&m.percentContainedIn(e.map().extent())<.8)return"too_large."+((r.length?r:n).length===1?"single":"multiple");if(o&&w())return"not_downloaded";if(t.some(e.hasHiddenConnections))return"connected_to_hidden";return!1;function w(){if(e.inIntro())return!1;var A=e.connection();if(A){var I=o.filter(function(E){return!A.isDataLoaded(E)});if(I.length)return I.forEach(function(E){e.loadTileAtLoc(E)}),!0}return!1}},v.tooltip=function(){var y=v.disabled();return y?F.append("operations.disconnect."+y):F.append("operations.disconnect.description."+s)},v.annotation=function(){return F("operations.disconnect.annotation."+l)},v.id="disconnect",v.keys=[F("operations.disconnect.key")],v.title=F.append("operations.disconnect.title"),v.behavior=xr(e).which(v),v}function vc(e,t){var r=0,n=a(t),i=r===1?"single":"multiple";function a(c){var f;r=0;for(var p in c){var d=c[p],g=o(d);g&&(r+=1,f&&g!==f?f!=="generic"&&g!=="generic"?f="building_address":f="generic":f=g)}return f}function o(c){var f=e.graph(),p=f.entity(c),d=$e.match(p,f);if(!d||d.isFallback())return null;if(p.type==="node"&&d.id!=="address"&&Object.keys(p.tags).some(function(x){return x.match(/^addr:.{1,}/)}))return"address";var g=p.geometry(f);return g==="area"&&p.tags.building&&!d.tags.building?"building":g==="vertex"&&Object.keys(p.tags).length?"generic":null}var s=["architect","building","height","layer","nycdoitt:bin","source","type","wheelchair"],l=["source"],u=function(){e.perform(function(c){for(var f in t){var p=t[f],d=o(p);if(d){var g=Object.assign({},c.entity(p).tags);for(var x in g)d==="address"&&l.indexOf(x)!==-1||d==="building"&&(s.indexOf(x)!==-1||x.match(/^building:.{1,}/)||x.match(/^roof:.{1,}/))||d!=="generic"&&(x.match(/^addr:.{1,}/)||x.match(/^source:.{1,}/))||delete g[x];c=sr(p,g)(c)}}return c},u.annotation()),e.validator().validate(),e.enter(rt(e,t))};return u.available=function(){return n},u.disabled=function(){if(t.some(c))return"has_wikidata_tag";return!1;function c(f){var p=e.entity(f);return p.tags.wikidata&&p.tags.wikidata.trim().length>0}},u.tooltip=function(){var c=u.disabled();return c?F.append("operations.downgrade."+c+"."+i):F.append("operations.downgrade.description."+n)},u.annotation=function(){var c;return n==="building_address"?c="generic":c=n,F("operations.downgrade.annotation."+c,{n:r})},u.id="downgrade",u.keys=[st("\u232B")],u.title=F.append("operations.downgrade.title"),u.behavior=xr(e).which(u),u}function zb(e,t){var r=t.length===1?"single":"multiple",n=ot(t.map(function(l){return e.graph().hasEntity(l)&&e.graph().geometry(l)}).filter(Boolean)),i=n.length===1?n[0]:"feature",a,o=t.map(function(l){var u=e.graph(),c=u.hasEntity(l);if(!c||!c.hasInterestingTags()||c.type==="node"&&u.parentWays(c).length===0)return null;if(c.type!=="node"){var f=$e.match(c,u);if(f.geometry.indexOf("point")===-1)return null}return a=a?a.extend(c.extent(u)):c.extent(u),_2(l,e.projection)}).filter(Boolean),s=function(){var l=function(c){return o.forEach(function(f){c=f(c)}),c};e.perform(l,s.annotation());var u=o.map(function(c){return c.getExtractedNodeID()});e.enter(rt(e,u))};return s.available=function(){return o.length&&t.length===o.length},s.disabled=function(){return a&&a.percentContainedIn(e.map().extent())<.8?"too_large":t.some(function(l){return e.graph().geometry(l)==="vertex"&&e.hasHiddenConnections(l)})?"connected_to_hidden":!1},s.tooltip=function(){var l=s.disabled();return l?F.append("operations.extract."+l+"."+r):F.append("operations.extract.description."+i+"."+r)},s.annotation=function(){return F("operations.extract.annotation",{n:t.length})},s.id="extract",s.keys=[F("operations.extract.key")],s.title=F.append("operations.extract.title"),s.behavior=xr(e).which(s),s}function qb(e,t){var r=n();function n(){var a=U7(t);if(!a.disabled(e.graph()))return a;var o=z7(t);if(!o.disabled(e.graph()))return o;var s=V7(t);if(!s.disabled(e.graph()))return s;var l=xa(t);return l.disabled(e.graph())?a.disabled(e.graph())!=="not_eligible"?a:o.disabled(e.graph())!=="not_eligible"?o:s.disabled(e.graph())!=="not_eligible"?s:l:l}var i=function(){if(!i.disabled()){e.perform(r,i.annotation()),e.validator().validate();var a=t.filter(e.hasEntity);if(a.length>1){var o=a.filter(function(s){return e.entity(s).hasInterestingTags()});o.length&&(a=o)}e.enter(rt(e,a))}};return i.available=function(){return t.length>=2},i.disabled=function(){var a=r.disabled(e.graph());if(a)return a;var o=e.connection();return o&&r.resultingWayNodesLength&&r.resultingWayNodesLength(e.graph())>o.maxWayNodes()?"too_many_vertices":!1},i.tooltip=function(){var a=i.disabled();return a?a==="conflicting_relations"?F.append("operations.merge.conflicting_relations"):a==="restriction"||a==="connectivity"?F.append("operations.merge.damage_relation",{relation:$e.item("type/"+a).name()}):F.append("operations.merge."+a):F.append("operations.merge.description")},i.annotation=function(){return F("operations.merge.annotation",{n:t.length})},i.id="merge",i.keys=[F("operations.merge.key")],i.title=F.append("operations.merge.title"),i.behavior=xr(e).which(i),i}function yc(e){var t,r=function(){if(t){var n=e.copyIDs();if(n.length){var i=e.projection,a=Pe(),o=e.copyGraph(),s=[],l=w2(n,o);e.perform(l);var u=l.copies(),c=new Set;Object.values(u).forEach(function(v){c.add(v.id)});for(var f in u){var p=o.entity(f),d=u[f];a._extend(p.extent(o));var g=e.graph().parentWays(d),x=g.some(function(v){return c.has(v.id)});x||s.push(d.id)}var b=e.copyLonLat()&&i(e.copyLonLat())||i(a.center()),m=rr(t,b);e.replace(ls(s,m,i),r.annotation()),e.enter(rt(e,s))}}};return r.point=function(n){return t=n,r},r.available=function(){return e.mode().id==="browse"},r.disabled=function(){return!e.copyIDs().length},r.tooltip=function(){var n=e.copyGraph(),i=e.copyIDs();return i.length?F.append("operations.paste.description",{feature:wt(n.entity(i[0]),n),n:i.length}):F.append("operations.paste.nothing_copied")},r.annotation=function(){var n=e.copyIDs();return F("operations.paste.annotation",{n:n.length})},r.id="paste",r.keys=[st("\u2318V")],r.title=F.append("operations.paste.title"),r}function Vb(e,t){var r=function(){e.perform(function(o){return n().forEach(function(s){o=s(o)}),o},r.annotation()),e.validator().validate()};function n(a){return t.map(function(o){var s=e.hasEntity(o);if(!s||a==="toolbar"&&s.type==="way"&&!s.isOneWay()&&!s.isSided())return null;var l=s.geometry(e.graph());if(s.type!=="node"&&l!=="line")return null;var u=Oa(o);return u.disabled(e.graph())?null:u}).filter(Boolean)}function i(){var a=n(),o=a.filter(function(s){var l=e.hasEntity(s.entityID());return l&&l.type==="node"}).length;return o===0?"line":o===a.length?"point":"feature"}return r.available=function(a){return n(a).length>0},r.disabled=function(){return!1},r.tooltip=function(){return F.append("operations.reverse.description."+i())},r.annotation=function(){var a=n();return F("operations.reverse.annotation."+i(),{n:a.length})},r.id="reverse",r.keys=[F("operations.reverse.key")],r.title=F.append("operations.reverse.title"),r.behavior=xr(e).which(r),r}function Gb(e,t){var r=t.filter(function(p){return e.graph().geometry(p)==="vertex"}),n=t.filter(function(p){var d=e.graph().hasEntity(p);return d&&d.type==="way"}),i=r.length>0&&r.length+n.length===t.length,a=a1(r),o=[],s="feature",l="single",u=r.length===1?"single":"multiple";if(i){n.length&&a.limitWays(n),o=a.ways(e.graph());var c={};o.forEach(function(p){c[p.geometry(e.graph())]=!0}),Object.keys(c).length===1&&(s=Object.keys(c)[0]),l=o.length===1?"single":"multiple"}var f=function(){var p=e.perform(a,f.annotation()),d=r.concat(p.extantIDs().filter(function(g){return e.entity(g).type==="way"}));e.enter(rt(e,d))};return f.relatedEntityIds=function(){return n.length?[]:o.map(p=>p.id)},f.available=function(){return i},f.disabled=function(){var p=a.disabled(e.graph());return p||(t.some(e.hasHiddenConnections)?"connected_to_hidden":!1)},f.tooltip=function(){var p=f.disabled();return p?F.append("operations.split."+p):F.append("operations.split.description."+s+"."+l+"."+u+"_node")},f.annotation=function(){return F("operations.split.annotation."+s,{n:o.length})},f.icon=function(){return l==="multiple"?"#iD-operation-split-multiple":"#iD-operation-split"},f.id="split",f.keys=[F("operations.split.key")],f.title=F.append("operations.split.title"),f.behavior=xr(e).which(f),f}function jb(e,t){var r=t.filter(function(p){return p.charAt(0)==="w"}),n=t.filter(function(p){return p.charAt(0)==="n"}),i=(r.length?r:n).length===1?"single":"multiple",a=vr(t,e.graph()),o=a.map(function(p){return p.loc}),s=Er(t,e.graph()),l=c(),u;function c(){if(r.length===0&&n.length>2)return u="point",W7(n,e.projection);if(r.length>0&&(n.length===0||n.length===2)){for(var p=[],d=[],g=0;g1&&w.length===1||t.length===1&&w.length>1)return e.enter(rt(e,w)),!1}else return e.enter(Ge(e)),!1;return t=w,!0}function b(w){for(var A=e.graph(),I=[],E=0;Est("\u21E7"+$)),k(1.05)).on(at.plusKeys.map($=>st("\u21E7\u2325"+$)),k(Math.pow(1.05,5))).on(at.minusKeys.map($=>st("\u21E7"+$)),k(1/1.05)).on(at.minusKeys.map($=>st("\u21E7\u2325"+$)),k(1/Math.pow(1.05,5))).on(["\\","pause"],N).on(st("\u2318\u2191"),U).on(st("\u2318\u2193"),B).on("\u238B",P,!0),G(document).call(n),e.ui().sidebar.select(t,u),e.history().on("change.select",function(){_(),D()}).on("undone.select",x).on("redone.select",x),e.map().on("drawn.select",D).on("crossEditableZoom.select",function(){D(),i.restartIfNeeded(e.surface())}),e.map().doubleUpHandler().on("doubleUp.modeSelect",S),D(),c){var w=Pe(),A=e.graph();t.forEach(function($){var z=e.entity($);w._extend(z.extent(A))});var I=w.center();e.map().centerEase(I),c=!1}function E($){return function(){if(e.map().withinEditableZoom()){var z=E0(e,t);z.disabled()?e.ui().flash.duration(4e3).iconName("#iD-operation-"+z.id).iconClass("operation disabled").label(z.tooltip())():(e.perform(ls(t,$,e.projection),z.annotation()),e.validator().validate())}}}function k($){return function(){if(!e.map().withinEditableZoom())return;let z=vr(t,e.graph()),V=$>1;if(z.length<=1)return;let H=Er(t,e.graph());function Z(){if(pe())return"too_small";if(H.percentContainedIn(e.map().extent())<.8)return"too_large";if(ne()||t.some(ge))return"not_downloaded";if(t.some(e.hasHiddenConnections))return"connected_to_hidden";return!1;function pe(){if(V)return!1;let ve=Math.abs(H[1][0]-H[0][0]),Oe=Math.abs(H[1][1]-H[0][1]);return ve0?oe=Z-1:V.isClosed()&&(oe=H-2),oe!==-1&&e.enter(r.selectedIDs([V.nodes[oe]]).follow(!0))}}function R($){$.preventDefault();var z=y();if(f=z,!!z){var V=e.entity(z),H=V.nodes.length,Z=V.nodes.indexOf(t[0]),oe=-1;Zz.length-2?f=z[0]:f=z[V+1];var H=e.surface();H.selectAll(".related").classed("related",!1),f&&H.selectAll(ba([f])).classed("related",!0)}}function U($){$.preventDefault();var z=r.selectedIDs(),V=f?[f]:b(!1);V.length&&(e.enter(r.selectedIDs(V)),p=z)}function B($){$.preventDefault();var z=r.selectedIDs(),V=p?p.filter(H=>e.hasEntity(H)):m(!0);!V||!V.length||(z.length===1&&(f=z[0]),e.enter(r.selectedIDs(V)))}},r.exit=function(){u=!1,p=null,l.forEach(function(E){E.behavior&&e.uninstall(E.behavior)}),l=[],s.forEach(e.uninstall),G(document).call(n.unbind),e.ui().closeEditMenu(),e.history().on("change.select",null).on("undone.select",null).on("redone.select",null);var w=e.surface();w.selectAll(".selected-member").classed("selected-member",!1),w.selectAll(".selected").classed("selected",!1),w.selectAll(".highlighted").classed("highlighted",!1),w.selectAll(".related").classed("related",!1),e.map().on("drawn.select",null),e.ui().sidebar.hide(),e.features().forceVisible([]);var A=d();if(u&&A&&A.type==="relation"&&Object.keys(A.tags).length===0&&e.graph().parentRelations(A).length===0&&(A.members.length===0||A.members.length===1&&!A.members[0].role)){var I=xn(A.id,!0);e.perform(I,F("operations.delete.annotation.relation")),e.validator().validate()}},r}function lo(e){var t="PointerEvent"in window?"pointer":"mouse",r=function(n){var i;function a(c){var f=0;c.button===f&&c.shiftKey===!0&&(i=null,G(window).on(t+"move.lasso",o).on(t+"up.lasso",u),c.stopPropagation())}function o(){i||(i=vp(e),e.surface().call(i)),i.p(e.map().mouse())}function s(c,f){return[[Math.min(c[0],f[0]),Math.min(c[1],f[1])],[Math.max(c[0],f[0]),Math.max(c[1],f[1])]]}function l(){if(!i)return[];var c=e.graph(),f;if(e.map().editableDataEnabled(!0)&&e.map().isInWideSelection())f=new Set(vr(e.selectedIDs(),c));else if(!e.map().editableDataEnabled())return[];var p=i.extent().map(e.projection.invert),d=Pe(s(p[0],p[1])),g=e.history().intersects(d).filter(function(x){return x.type==="node"&&(!f||f.has(x))&&Wo(e.projection(x.loc),i.coordinates)&&!e.features().isHidden(x,c,x.geometry(c))});return g.sort(function(x,b){var m=c.parentWays(x),v=c.parentWays(b);if(m.length&&v.length){var y=Wr(m,v);if(y.length){var _=y[0].nodes;return _.indexOf(x.id)-_.indexOf(b.id)}else return Number(m[0].id.slice(1))-Number(v[0].id.slice(1))}else if(m.length||v.length)return m.length-v.length;return x.loc[0]-b.loc[0]}),g.map(function(x){return x.id})}function u(){if(G(window).on(t+"move.lasso",null).on(t+"up.lasso",null),!!i){var c=l();i.close(),c.length&&e.enter(rt(e,c))}}n.on(t+"down.lasso",a)};return r.off=function(n){n.on(t+"down.lasso",null)},r}function Ge(e){var t={button:"browse",id:"browse",title:F.append("modes.browse.title"),description:F.append("modes.browse.description")},r,n,i=[];return t.selectBehavior=function(a){return arguments.length?(n=a,t):n},t.enter=function(){i.length||(n||(n=so(e)),i=[F2(e),pi(e).on("hover",e.ui().sidebar.hover),n,lo(e),to(e).behavior,oo(e).behavior]),i.forEach(e.install),document.activeElement&&document.activeElement.blur&&document.activeElement.blur(),r?e.ui().sidebar.show(r):e.ui().sidebar.select(null)},t.exit=function(){e.ui().sidebar.hover.cancel(),i.forEach(e.uninstall),r&&e.ui().sidebar.hide()},t.sidebar=function(a){return arguments.length?(r=a,t):r},t.operations=function(){return[yc(e)]},t}function yu(e){var t=xe("start","startFromWay","startFromNode"),r=us(e);function n(i){r.on("click",function(){t.apply("start",this,arguments)}).on("clickWay",function(){t.apply("startFromWay",this,arguments)}).on("clickNode",function(){t.apply("startFromNode",this,arguments)}).on("cancel",n.cancel).on("finish",n.cancel),e.map().dblclickZoomEnable(!1),i.call(r)}return n.off=function(i){i.call(r.off)},n.cancel=function(){window.setTimeout(function(){e.map().dblclickZoomEnable(!0)},1e3),e.enter(Ge(e))},ke(n,t,"on")}function jp(e){var t=null,r=90-1e-8;function n(){var p=e.map(),d=p.center(),g=p.zoom(),x=Math.max(0,Math.ceil(Math.log(g)/Math.LN2)),b=Wn(pr(window.location.hash),["comment","source","hashtags","walkthrough"]),m={};delete b.id;var v=e.selectedIDs().filter(function(y){return e.hasEntity(y)});return v.length&&(m.id=v.join(",")),m.map=g.toFixed(2)+"/"+d[1].toFixed(x)+"/"+d[0].toFixed(x),Object.assign(b,m)}function i(){return"#"+yt(n(),!0)}function a(p){var d=e.documentTitleBase()||"iD",g,x,b,m=e.selectedIDs().filter(function(y){return e.hasEntity(y)});if(m.length){var v=wt(e.entity(m[0]),e.graph());m.length>1?g=F("title.labeled_and_more",{labeled:v,count:m.length-1}):g=v,b="context"}return p&&(x=e.history().difference().summary().length,x>0&&(b=g?"changes_context":"changes")),b?F("title.format."+b,{changes:x,base:d,context:g}):d}function o(p){if(e.setsDocumentTitle()){var d=a(p);document.title!==d&&(document.title=d)}}function s(){if(!e.inIntro()){var p=i();if(t!==p){t=p,window.history.replaceState(null,a(!1),p),o(!0);let d=pr(p);d.map&&Te("map-location",d.map)}}}var l=Lt(s,500),u=Lt(function(){o(!0)},500);function c(){if(window.location.hash!==t){t=window.location.hash;var p=pr(t),d=(p.map||"").split("/").map(Number);if(d.length<3||d.some(isNaN))s();else{if(t===i())return;var g=e.mode();if(e.map().centerZoom([d[2],Math.min(r,Math.max(-r,d[1]))],d[0]),p.id&&g){var x=p.id.split(",").filter(function(y){return e.hasEntity(y)});if(x.length&&(g.id==="browse"||g.id==="select"&&!kn(g.selectedIDs(),x))){e.enter(rt(e,x));return}}var b=e.map().center(),m=Vt(b,[d[2],d[1]]),v=500;if(g&&g.id.match(/^draw/)!==null&&m>v){e.enter(Ge(e));return}}}}function f(){e.map().on("move.behaviorHash",l),e.history().on("change.behaviorHash",u),e.on("enter.behaviorHash",l),G(window).on("hashchange.behaviorHash",c);var p=pr(window.location.hash);if(p.id&&e.zoomToEntity(p.id.split(",")[0],!p.map),p.walkthrough==="true"&&(f.startWalkthrough=!0),p.map)f.hadLocation=!0;else if(!p.id&&Te("map-location")){let d=Te("map-location").split("/").map(Number);e.map().centerZoom([d[2],Math.min(r,Math.max(-r,d[1]))],d[0]),s(),f.hadLocation=!0}c(),o(!1)}return f.off=function(){l.cancel(),u.cancel(),e.map().on("move.behaviorHash",null),e.on("enter.behaviorHash",null),G(window).on("hashchange.behaviorHash",null),window.location.hash=""},f}var{abs:lat,max:uat,min:cat}=Math;function jN(e){return[+e[0],+e[1]]}function Zee(e){return[jN(e[0]),jN(e[1])]}var fat={name:"x",handles:["w","e"].map(Wb),input:function(e,t){return e==null?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},output:function(e){return e&&[e[0][0],e[1][0]]}},pat={name:"y",handles:["n","s"].map(Wb),input:function(e,t){return e==null?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},output:function(e){return e&&[e[0][1],e[1][1]]}},dat={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Wb),input:function(e){return e==null?null:Zee(e)},output:function(e){return e}};function Wb(e){return{type:e}}var v5=!1,ete={dispatch:xe,geoMercator:nh,geoProjection:A4,polygonArea:F4,polygonCentroid:jo,select:G,selectAll:sh,timerFlush:uf};window.requestIdleCallback=window.requestIdleCallback||function(e){var t=Date.now();return window.requestAnimationFrame(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})})};window.cancelIdleCallback=window.cancelIdleCallback||function(e){window.cancelAnimationFrame(e)};window.iD=Qb;})(); +//# sourceMappingURL=iD.min.js.map diff --git a/dist/iD.min.js.map b/dist/iD.min.js.map new file mode 100644 index 0000000000..0fd2c12ba8 --- /dev/null +++ b/dist/iD.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../node_modules/diacritics/index.js", "../node_modules/alif-toolkit/lib/isArabic.js", "../node_modules/alif-toolkit/lib/unicode-arabic.js", "../node_modules/alif-toolkit/lib/unicode-ligatures.js", "../node_modules/alif-toolkit/lib/reference.js", "../node_modules/alif-toolkit/lib/GlyphSplitter.js", "../node_modules/alif-toolkit/lib/BaselineSplitter.js", "../node_modules/alif-toolkit/lib/Normalization.js", "../node_modules/alif-toolkit/lib/CharShaper.js", "../node_modules/alif-toolkit/lib/WordShaper.js", "../node_modules/alif-toolkit/lib/ParentLetter.js", "../node_modules/alif-toolkit/lib/index.js", "../node_modules/vparse/index.js", "../node_modules/which-polygon/node_modules/quickselect/quickselect.js", "../node_modules/which-polygon/node_modules/rbush/index.js", "../node_modules/lineclip/index.js", "../node_modules/which-polygon/index.js", "../node_modules/wgs84/index.js", "../node_modules/@mapbox/geojson-area/index.js", "../node_modules/circle-to-polygon/input-validation/validateCenter.js", "../node_modules/circle-to-polygon/input-validation/validateRadius.js", "../node_modules/circle-to-polygon/input-validation/validateNumberOfEdges.js", "../node_modules/circle-to-polygon/input-validation/validateEarthRadius.js", "../node_modules/circle-to-polygon/input-validation/validateBearing.js", "../node_modules/circle-to-polygon/input-validation/index.js", "../node_modules/circle-to-polygon/index.js", "../node_modules/geojson-precision/index.js", "../node_modules/@aitodotai/json-stringify-pretty-compact/index.js", "../node_modules/aes-js/index.js", "../node_modules/nearley/lib/nearley.js", "../node_modules/edtf/locale-data/en-US.json", "../node_modules/edtf/locale-data/es-ES.json", "../node_modules/edtf/locale-data/de-DE.json", "../node_modules/edtf/locale-data/fr-FR.json", "../node_modules/edtf/locale-data/it-IT.json", "../node_modules/edtf/locale-data/ja-JA.json", "../node_modules/edtf/locale-data/index.cjs", "../node_modules/lodash/lodash.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/rbush/rbush.min.js", "../node_modules/ieee754/index.js", "../node_modules/pbf/index.js", "../node_modules/@mapbox/point-geometry/index.js", "../node_modules/@mapbox/vector-tile/lib/vectortilefeature.js", "../node_modules/@mapbox/vector-tile/lib/vectortilelayer.js", "../node_modules/@mapbox/vector-tile/lib/vectortile.js", "../node_modules/@mapbox/vector-tile/index.js", "../node_modules/fast-json-stable-stringify/index.js", "../node_modules/@mapbox/sexagesimal/index.js", "../node_modules/polygon-clipping/dist/polygon-clipping.umd.js", "../node_modules/whatwg-fetch/fetch.js", "../node_modules/abortcontroller-polyfill/dist/polyfill-patch-fetch.js", "../modules/index.js", "../modules/actions/add_entity.js", "../modules/actions/reverse.js", "../node_modules/d3-array/src/ascending.js", "../node_modules/d3-array/src/descending.js", "../node_modules/d3-array/src/bisector.js", "../node_modules/d3-array/src/number.js", "../node_modules/d3-array/src/bisect.js", "../node_modules/d3-array/src/fsum.js", "../node_modules/d3-array/src/sort.js", "../node_modules/d3-array/src/ticks.js", "../node_modules/d3-array/src/max.js", "../node_modules/d3-array/src/min.js", "../node_modules/d3-array/src/quickselect.js", "../node_modules/d3-array/src/quantile.js", "../node_modules/d3-array/src/median.js", "../node_modules/d3-array/src/merge.js", "../node_modules/d3-array/src/pairs.js", "../node_modules/d3-array/src/range.js", "../node_modules/d3-geo/src/math.js", "../node_modules/d3-geo/src/noop.js", "../node_modules/d3-geo/src/stream.js", "../node_modules/d3-geo/src/area.js", "../node_modules/d3-geo/src/cartesian.js", "../node_modules/d3-geo/src/bounds.js", "../node_modules/d3-geo/src/compose.js", "../node_modules/d3-geo/src/rotation.js", "../node_modules/d3-geo/src/circle.js", "../node_modules/d3-geo/src/clip/buffer.js", "../node_modules/d3-geo/src/pointEqual.js", "../node_modules/d3-geo/src/clip/rejoin.js", "../node_modules/d3-geo/src/polygonContains.js", "../node_modules/d3-geo/src/clip/index.js", "../node_modules/d3-geo/src/clip/antimeridian.js", "../node_modules/d3-geo/src/clip/circle.js", "../node_modules/d3-geo/src/clip/line.js", "../node_modules/d3-geo/src/clip/rectangle.js", "../node_modules/d3-geo/src/length.js", "../node_modules/d3-geo/src/identity.js", "../node_modules/d3-geo/src/path/area.js", "../node_modules/d3-geo/src/path/bounds.js", "../node_modules/d3-geo/src/path/centroid.js", "../node_modules/d3-geo/src/path/context.js", "../node_modules/d3-geo/src/path/measure.js", "../node_modules/d3-geo/src/path/string.js", "../node_modules/d3-geo/src/path/index.js", "../node_modules/d3-geo/src/transform.js", "../node_modules/d3-geo/src/projection/fit.js", "../node_modules/d3-geo/src/projection/resample.js", "../node_modules/d3-geo/src/projection/index.js", "../node_modules/d3-geo/src/projection/mercator.js", "../node_modules/d3-geo/src/projection/identity.js", "../modules/geo/geo.js", "../modules/geo/extent.js", "../node_modules/d3-polygon/src/area.js", "../node_modules/d3-polygon/src/centroid.js", "../node_modules/d3-polygon/src/cross.js", "../node_modules/d3-polygon/src/hull.js", "../modules/geo/vector.js", "../modules/geo/geom.js", "../node_modules/d3-dispatch/src/dispatch.js", "../node_modules/d3-selection/src/namespaces.js", "../node_modules/d3-selection/src/namespace.js", "../node_modules/d3-selection/src/creator.js", "../node_modules/d3-selection/src/selector.js", "../node_modules/d3-selection/src/selection/select.js", "../node_modules/d3-selection/src/array.js", "../node_modules/d3-selection/src/selectorAll.js", "../node_modules/d3-selection/src/selection/selectAll.js", "../node_modules/d3-selection/src/matcher.js", "../node_modules/d3-selection/src/selection/selectChild.js", "../node_modules/d3-selection/src/selection/selectChildren.js", "../node_modules/d3-selection/src/selection/filter.js", "../node_modules/d3-selection/src/selection/sparse.js", "../node_modules/d3-selection/src/selection/enter.js", "../node_modules/d3-selection/src/constant.js", "../node_modules/d3-selection/src/selection/data.js", "../node_modules/d3-selection/src/selection/exit.js", "../node_modules/d3-selection/src/selection/join.js", "../node_modules/d3-selection/src/selection/merge.js", "../node_modules/d3-selection/src/selection/order.js", "../node_modules/d3-selection/src/selection/sort.js", "../node_modules/d3-selection/src/selection/call.js", "../node_modules/d3-selection/src/selection/nodes.js", "../node_modules/d3-selection/src/selection/node.js", "../node_modules/d3-selection/src/selection/size.js", "../node_modules/d3-selection/src/selection/empty.js", "../node_modules/d3-selection/src/selection/each.js", "../node_modules/d3-selection/src/selection/attr.js", "../node_modules/d3-selection/src/window.js", "../node_modules/d3-selection/src/selection/style.js", "../node_modules/d3-selection/src/selection/property.js", "../node_modules/d3-selection/src/selection/classed.js", "../node_modules/d3-selection/src/selection/text.js", "../node_modules/d3-selection/src/selection/html.js", "../node_modules/d3-selection/src/selection/raise.js", "../node_modules/d3-selection/src/selection/lower.js", "../node_modules/d3-selection/src/selection/append.js", "../node_modules/d3-selection/src/selection/insert.js", "../node_modules/d3-selection/src/selection/remove.js", "../node_modules/d3-selection/src/selection/clone.js", "../node_modules/d3-selection/src/selection/datum.js", "../node_modules/d3-selection/src/selection/on.js", "../node_modules/d3-selection/src/selection/dispatch.js", "../node_modules/d3-selection/src/selection/iterator.js", "../node_modules/d3-selection/src/selection/index.js", "../node_modules/d3-selection/src/select.js", "../node_modules/d3-selection/src/sourceEvent.js", "../node_modules/d3-selection/src/pointer.js", "../node_modules/d3-selection/src/selectAll.js", "../node_modules/d3-drag/src/noevent.js", "../node_modules/d3-drag/src/nodrag.js", "../node_modules/d3-drag/src/constant.js", "../node_modules/d3-drag/src/event.js", "../node_modules/d3-drag/src/drag.js", "../node_modules/d3-color/src/define.js", "../node_modules/d3-color/src/color.js", "../node_modules/d3-interpolate/src/basis.js", "../node_modules/d3-interpolate/src/basisClosed.js", "../node_modules/d3-interpolate/src/constant.js", "../node_modules/d3-interpolate/src/color.js", "../node_modules/d3-interpolate/src/rgb.js", "../node_modules/d3-interpolate/src/numberArray.js", "../node_modules/d3-interpolate/src/array.js", "../node_modules/d3-interpolate/src/date.js", "../node_modules/d3-interpolate/src/number.js", "../node_modules/d3-interpolate/src/object.js", "../node_modules/d3-interpolate/src/string.js", "../node_modules/d3-interpolate/src/value.js", "../node_modules/d3-interpolate/src/round.js", "../node_modules/d3-interpolate/src/transform/decompose.js", "../node_modules/d3-interpolate/src/transform/parse.js", "../node_modules/d3-interpolate/src/transform/index.js", "../node_modules/d3-interpolate/src/zoom.js", "../node_modules/d3-interpolate/src/quantize.js", "../node_modules/d3-timer/src/timer.js", "../node_modules/d3-timer/src/timeout.js", "../node_modules/d3-transition/src/transition/schedule.js", "../node_modules/d3-transition/src/interrupt.js", "../node_modules/d3-transition/src/selection/interrupt.js", "../node_modules/d3-transition/src/transition/tween.js", "../node_modules/d3-transition/src/transition/interpolate.js", "../node_modules/d3-transition/src/transition/attr.js", "../node_modules/d3-transition/src/transition/attrTween.js", "../node_modules/d3-transition/src/transition/delay.js", "../node_modules/d3-transition/src/transition/duration.js", "../node_modules/d3-transition/src/transition/ease.js", "../node_modules/d3-transition/src/transition/easeVarying.js", "../node_modules/d3-transition/src/transition/filter.js", "../node_modules/d3-transition/src/transition/merge.js", "../node_modules/d3-transition/src/transition/on.js", "../node_modules/d3-transition/src/transition/remove.js", "../node_modules/d3-transition/src/transition/select.js", "../node_modules/d3-transition/src/transition/selectAll.js", "../node_modules/d3-transition/src/transition/selection.js", "../node_modules/d3-transition/src/transition/style.js", "../node_modules/d3-transition/src/transition/styleTween.js", "../node_modules/d3-transition/src/transition/text.js", "../node_modules/d3-transition/src/transition/textTween.js", "../node_modules/d3-transition/src/transition/transition.js", "../node_modules/d3-transition/src/transition/end.js", "../node_modules/d3-transition/src/transition/index.js", "../node_modules/d3-ease/src/linear.js", "../node_modules/d3-ease/src/cubic.js", "../node_modules/d3-transition/src/selection/transition.js", "../node_modules/d3-transition/src/selection/index.js", "../node_modules/d3-zoom/src/constant.js", "../node_modules/d3-zoom/src/event.js", "../node_modules/d3-zoom/src/transform.js", "../node_modules/d3-zoom/src/noevent.js", "../node_modules/d3-zoom/src/zoom.js", "../modules/geo/raw_mercator.js", "../modules/geo/ortho.js", "../modules/osm/tags.js", "../modules/util/array.js", "../modules/util/util.js", "../modules/util/svg_paths_rtl_fix.js", "../modules/core/preferences.js", "../modules/core/file_fetcher.js", "../config/id.js", "../package.json", "../node_modules/@rapideditor/country-coder/src/country-coder.ts", "../node_modules/@rapideditor/country-coder/src/data/borders.json", "../node_modules/polyclip-ts/dist/constant.js", "../node_modules/polyclip-ts/dist/compare.js", "../node_modules/polyclip-ts/dist/orient.js", "../node_modules/bignumber.js/bignumber.mjs", "../node_modules/splaytree-ts/dist/index.js", "../node_modules/polyclip-ts/dist/identity.js", "../node_modules/polyclip-ts/dist/snap.js", "../node_modules/polyclip-ts/dist/precision.js", "../node_modules/polyclip-ts/dist/bbox.js", "../node_modules/polyclip-ts/dist/vector.js", "../node_modules/polyclip-ts/dist/sweep-event.js", "../node_modules/polyclip-ts/dist/segment.js", "../node_modules/polyclip-ts/dist/geom-in.js", "../node_modules/polyclip-ts/dist/geom-out.js", "../node_modules/polyclip-ts/dist/sweep-line.js", "../node_modules/polyclip-ts/dist/operation.js", "../node_modules/polyclip-ts/dist/index.js", "../node_modules/@rapideditor/location-conflation/index.mjs", "../modules/core/LocationManager.js", "../node_modules/lodash-es/_freeGlobal.js", "../node_modules/lodash-es/_root.js", "../node_modules/lodash-es/_Symbol.js", "../node_modules/lodash-es/_getRawTag.js", "../node_modules/lodash-es/_objectToString.js", "../node_modules/lodash-es/_baseGetTag.js", "../node_modules/lodash-es/isObjectLike.js", "../node_modules/lodash-es/isSymbol.js", "../node_modules/lodash-es/_arrayMap.js", "../node_modules/lodash-es/isArray.js", "../node_modules/lodash-es/_baseToString.js", "../node_modules/lodash-es/_trimmedEndIndex.js", "../node_modules/lodash-es/_baseTrim.js", "../node_modules/lodash-es/isObject.js", "../node_modules/lodash-es/toNumber.js", "../node_modules/lodash-es/isFunction.js", "../node_modules/lodash-es/_coreJsData.js", "../node_modules/lodash-es/_isMasked.js", "../node_modules/lodash-es/_toSource.js", "../node_modules/lodash-es/_baseIsNative.js", "../node_modules/lodash-es/_getValue.js", "../node_modules/lodash-es/_getNative.js", "../node_modules/lodash-es/_WeakMap.js", "../node_modules/lodash-es/_isIndex.js", "../node_modules/lodash-es/eq.js", "../node_modules/lodash-es/isLength.js", "../node_modules/lodash-es/isArrayLike.js", "../node_modules/lodash-es/_isPrototype.js", "../node_modules/lodash-es/_baseTimes.js", "../node_modules/lodash-es/_baseIsArguments.js", "../node_modules/lodash-es/isArguments.js", "../node_modules/lodash-es/stubFalse.js", "../node_modules/lodash-es/isBuffer.js", "../node_modules/lodash-es/_baseIsTypedArray.js", "../node_modules/lodash-es/_baseUnary.js", "../node_modules/lodash-es/_nodeUtil.js", "../node_modules/lodash-es/isTypedArray.js", "../node_modules/lodash-es/_arrayLikeKeys.js", "../node_modules/lodash-es/_overArg.js", "../node_modules/lodash-es/_nativeKeys.js", "../node_modules/lodash-es/_baseKeys.js", "../node_modules/lodash-es/keys.js", "../node_modules/lodash-es/_nativeCreate.js", "../node_modules/lodash-es/_hashClear.js", "../node_modules/lodash-es/_hashDelete.js", "../node_modules/lodash-es/_hashGet.js", "../node_modules/lodash-es/_hashHas.js", "../node_modules/lodash-es/_hashSet.js", "../node_modules/lodash-es/_Hash.js", "../node_modules/lodash-es/_listCacheClear.js", "../node_modules/lodash-es/_assocIndexOf.js", "../node_modules/lodash-es/_listCacheDelete.js", "../node_modules/lodash-es/_listCacheGet.js", "../node_modules/lodash-es/_listCacheHas.js", "../node_modules/lodash-es/_listCacheSet.js", "../node_modules/lodash-es/_ListCache.js", "../node_modules/lodash-es/_Map.js", "../node_modules/lodash-es/_mapCacheClear.js", "../node_modules/lodash-es/_isKeyable.js", "../node_modules/lodash-es/_getMapData.js", "../node_modules/lodash-es/_mapCacheDelete.js", "../node_modules/lodash-es/_mapCacheGet.js", "../node_modules/lodash-es/_mapCacheHas.js", "../node_modules/lodash-es/_mapCacheSet.js", "../node_modules/lodash-es/_MapCache.js", "../node_modules/lodash-es/toString.js", "../node_modules/lodash-es/_arrayPush.js", "../node_modules/lodash-es/_basePropertyOf.js", "../node_modules/lodash-es/_stackClear.js", "../node_modules/lodash-es/_stackDelete.js", "../node_modules/lodash-es/_stackGet.js", "../node_modules/lodash-es/_stackHas.js", "../node_modules/lodash-es/_stackSet.js", "../node_modules/lodash-es/_Stack.js", "../node_modules/lodash-es/_arrayFilter.js", "../node_modules/lodash-es/stubArray.js", "../node_modules/lodash-es/_getSymbols.js", "../node_modules/lodash-es/_baseGetAllKeys.js", "../node_modules/lodash-es/_getAllKeys.js", "../node_modules/lodash-es/_DataView.js", "../node_modules/lodash-es/_Promise.js", "../node_modules/lodash-es/_Set.js", "../node_modules/lodash-es/_getTag.js", "../node_modules/lodash-es/_Uint8Array.js", "../node_modules/lodash-es/_setCacheAdd.js", "../node_modules/lodash-es/_setCacheHas.js", "../node_modules/lodash-es/_SetCache.js", "../node_modules/lodash-es/_arraySome.js", "../node_modules/lodash-es/_cacheHas.js", "../node_modules/lodash-es/_equalArrays.js", "../node_modules/lodash-es/_mapToArray.js", "../node_modules/lodash-es/_setToArray.js", "../node_modules/lodash-es/_equalByTag.js", "../node_modules/lodash-es/_equalObjects.js", "../node_modules/lodash-es/_baseIsEqualDeep.js", "../node_modules/lodash-es/_baseIsEqual.js", "../node_modules/lodash-es/now.js", "../node_modules/lodash-es/debounce.js", "../node_modules/lodash-es/_escapeHtmlChar.js", "../node_modules/lodash-es/escape.js", "../node_modules/lodash-es/isEqual.js", "../node_modules/lodash-es/isNumber.js", "../node_modules/lodash-es/throttle.js", "../node_modules/lodash-es/_unescapeHtmlChar.js", "../node_modules/lodash-es/unescape.js", "../modules/util/detect.js", "../modules/util/aes.js", "../modules/util/clean_tags.js", "../node_modules/edtf/src/types.js", "../node_modules/edtf/src/assert.js", "../node_modules/edtf/src/bitmask.js", "../node_modules/edtf/src/parser.js", "../node_modules/edtf/src/util.js", "../node_modules/edtf/src/grammar.js", "../node_modules/edtf/src/interface.js", "../node_modules/edtf/src/mixin.js", "../node_modules/edtf/src/format.js", "../node_modules/edtf/src/date.js", "../node_modules/edtf/src/year.js", "../node_modules/edtf/src/decade.js", "../node_modules/edtf/src/century.js", "../node_modules/edtf/src/season.js", "../node_modules/edtf/src/interval.js", "../node_modules/edtf/src/list.js", "../node_modules/edtf/src/set.js", "../node_modules/edtf/src/edtf.js", "../modules/util/date.js", "../modules/util/get_set_value.js", "../modules/util/keybinding.js", "../modules/util/object.js", "../modules/util/rebind.js", "../modules/util/session_mutex.js", "../modules/util/tiler.js", "../modules/util/trigger_event.js", "../modules/util/units.js", "../modules/core/localizer.js", "../modules/presets/collection.js", "../modules/presets/category.js", "../modules/presets/field.js", "../modules/presets/preset.js", "../modules/presets/index.js", "../modules/osm/entity.js", "../modules/osm/lanes.js", "../modules/osm/way.js", "../modules/osm/multipolygon.js", "../modules/actions/add_member.js", "../modules/actions/add_midpoint.js", "../modules/actions/add_vertex.js", "../modules/actions/change_member.js", "../modules/actions/change_preset.js", "../modules/actions/change_tags.js", "../modules/osm/node.js", "../modules/actions/circularize.js", "../modules/actions/delete_way.js", "../modules/actions/delete_multiple.js", "../modules/actions/delete_relation.js", "../modules/actions/delete_node.js", "../modules/actions/connect.js", "../modules/actions/copy_entities.js", "../modules/actions/delete_member.js", "../modules/actions/discard_tags.js", "../modules/actions/disconnect.js", "../modules/actions/extract.js", "../modules/actions/join.js", "../modules/actions/merge.js", "../modules/actions/merge_nodes.js", "../modules/osm/changeset.js", "../modules/osm/note.js", "../modules/osm/relation.js", "../modules/osm/qa_item.js", "../modules/actions/split.js", "../modules/core/graph.js", "../modules/osm/intersection.js", "../modules/actions/merge_polygon.js", "../modules/actions/merge_remote_changes.js", "../node_modules/node-diff3/index.mjs", "../modules/actions/move.js", "../modules/actions/move_member.js", "../modules/actions/move_node.js", "../modules/actions/noop.js", "../modules/actions/orthogonalize.js", "../modules/actions/restrict_turn.js", "../modules/actions/revert.js", "../modules/actions/rotate.js", "../modules/actions/scale.js", "../modules/actions/straighten_nodes.js", "../modules/actions/straighten_way.js", "../modules/actions/unrestrict_turn.js", "../modules/actions/reflect.js", "../modules/actions/upgrade_tags.js", "../modules/behavior/edit.js", "../modules/behavior/hover.js", "../modules/behavior/draw.js", "../modules/behavior/breathe.js", "../node_modules/d3-scale/src/init.js", "../node_modules/d3-scale/src/constant.js", "../node_modules/d3-scale/src/number.js", "../node_modules/d3-scale/src/continuous.js", "../node_modules/d3-format/src/formatDecimal.js", "../node_modules/d3-format/src/exponent.js", "../node_modules/d3-format/src/formatGroup.js", "../node_modules/d3-format/src/formatNumerals.js", "../node_modules/d3-format/src/formatSpecifier.js", "../node_modules/d3-format/src/formatTrim.js", "../node_modules/d3-format/src/formatPrefixAuto.js", "../node_modules/d3-format/src/formatRounded.js", "../node_modules/d3-format/src/formatTypes.js", "../node_modules/d3-format/src/identity.js", "../node_modules/d3-format/src/locale.js", "../node_modules/d3-format/src/defaultLocale.js", "../node_modules/d3-format/src/precisionFixed.js", "../node_modules/d3-format/src/precisionPrefix.js", "../node_modules/d3-format/src/precisionRound.js", "../node_modules/d3-scale/src/tickFormat.js", "../node_modules/d3-scale/src/linear.js", "../node_modules/d3-scale/src/quantize.js", "../modules/behavior/operation.js", "../modules/operations/circularize.js", "../modules/ui/cmd.js", "../modules/operations/delete.js", "../modules/operations/orthogonalize.js", "../modules/operations/reflect.js", "../modules/operations/move.js", "../modules/modes/rotate.js", "../modules/operations/rotate.js", "../modules/modes/move.js", "../modules/behavior/paste.js", "../modules/behavior/drag.js", "../modules/modes/drag_node.js", "../modules/services/keepRight.js", "../node_modules/d3-fetch/src/text.js", "../node_modules/d3-fetch/src/json.js", "../node_modules/d3-fetch/src/xml.js", "../modules/services/improveOSM.js", "../modules/services/osmose.js", "../node_modules/marked/src/defaults.ts", "../node_modules/marked/src/helpers.ts", "../node_modules/marked/src/Tokenizer.ts", "../node_modules/marked/src/rules.ts", "../node_modules/marked/src/Lexer.ts", "../node_modules/marked/src/Renderer.ts", "../node_modules/marked/src/TextRenderer.ts", "../node_modules/marked/src/Parser.ts", "../node_modules/marked/src/Hooks.ts", "../node_modules/marked/src/Instance.ts", "../node_modules/marked/src/marked.ts", "../modules/services/mapillary.js", "../modules/core/validation/models.js", "../modules/services/maprules.js", "../modules/services/nominatim.js", "../modules/core/difference.js", "../modules/core/tree.js", "../modules/svg/icon.js", "../modules/ui/modal.js", "../modules/ui/loading.js", "../modules/core/history.js", "../modules/validations/index.js", "../modules/validations/almost_junction.js", "../modules/validations/close_nodes.js", "../modules/validations/crossing_ways.js", "../modules/behavior/draw_way.js", "../modules/modes/draw_line.js", "../modules/validations/disconnected_way.js", "../modules/validations/missing_start_date.js", "../modules/validations/invalid_format.js", "../modules/validations/help_request.js", "../modules/validations/impossible_oneway.js", "../modules/validations/incompatible_source.js", "../modules/validations/maprules.js", "../modules/validations/mismatched_dates.js", "../modules/validations/mismatched_geometry.js", "../modules/validations/missing_role.js", "../modules/validations/missing_tag.js", "../modules/validations/mutually_exclusive_tags.js", "../modules/validations/outdated_tags.js", "../modules/validations/private_data.js", "../modules/validations/suspicious_name.js", "../modules/validations/unsquare_way.js", "../modules/core/validator.js", "../modules/core/uploader.js", "../modules/renderer/background_source.js", "../modules/util/IntervalTasksQueue.js", "../node_modules/@turf/helpers/dist/es/index.js", "../node_modules/@turf/invariant/dist/es/index.js", "../node_modules/@turf/bbox-clip/dist/es/lib/lineclip.js", "../node_modules/@turf/bbox-clip/dist/es/index.js", "../node_modules/@turf/meta/dist/es/index.js", "../node_modules/@turf/bbox/dist/es/index.js", "../modules/renderer/background.js", "../modules/renderer/tile_layer.js", "../modules/renderer/features.js", "../modules/svg/areas.js", "../modules/svg/helpers.js", "../modules/svg/tag_classes.js", "../modules/svg/tag_pattern.js", "../modules/svg/data.js", "../node_modules/@tmcw/togeojson/lib/lib/shared.ts", "../node_modules/@tmcw/togeojson/lib/lib/gpx/line.ts", "../node_modules/@tmcw/togeojson/lib/lib/gpx/extensions.ts", "../node_modules/@tmcw/togeojson/lib/lib/gpx/coord_pair.ts", "../node_modules/@tmcw/togeojson/lib/lib/gpx/properties.ts", "../node_modules/@tmcw/togeojson/lib/lib/gpx.ts", "../node_modules/@tmcw/togeojson/lib/lib/tcx.ts", "../node_modules/@tmcw/togeojson/lib/lib/kml/fixColor.ts", "../node_modules/@tmcw/togeojson/lib/lib/kml/extractStyle.ts", "../node_modules/@tmcw/togeojson/lib/lib/kml/shared.ts", "../node_modules/@tmcw/togeojson/lib/lib/kml/geometry.ts", "../node_modules/@tmcw/togeojson/lib/lib/kml/placemark.ts", "../node_modules/@tmcw/togeojson/lib/lib/kml/ground_overlay.ts", "../node_modules/@tmcw/togeojson/lib/lib/kml.ts", "../modules/svg/debug.js", "../modules/svg/defs.js", "../modules/svg/keepRight.js", "../modules/svg/geolocate.js", "../modules/svg/labels.js", "../node_modules/exifr/dist/full.esm.mjs", "../modules/services/plane_photo.js", "../modules/svg/local_photos.js", "../modules/svg/improveOSM.js", "../modules/svg/osmose.js", "../modules/svg/streetside.js", "../modules/svg/vegbilder.js", "../modules/svg/mapillary_images.js", "../modules/svg/mapillary_position.js", "../modules/svg/mapillary_signs.js", "../modules/svg/mapillary_map_features.js", "../modules/svg/kartaview_images.js", "../modules/svg/mapilio_images.js", "../modules/svg/osm.js", "../modules/svg/notes.js", "../modules/svg/touch.js", "../modules/util/dimensions.js", "../modules/svg/layers.js", "../modules/svg/lines.js", "../modules/svg/midpoints.js", "../modules/svg/points.js", "../modules/svg/turns.js", "../modules/svg/vertices.js", "../modules/util/bind_once.js", "../modules/util/zoom_pan.js", "../modules/util/double_up.js", "../modules/renderer/map.js", "../modules/renderer/photos.js", "../modules/ui/account.js", "../modules/ui/attribution.js", "../modules/ui/contributors.js", "../modules/ui/popover.js", "../modules/ui/tooltip.js", "../modules/ui/edit_menu.js", "../modules/ui/feature_info.js", "../modules/ui/flash.js", "../modules/ui/full_screen.js", "../modules/ui/geolocate.js", "../modules/ui/panels/background.js", "../modules/ui/panels/history.js", "../modules/ui/panels/location.js", "../modules/ui/panels/measurement.js", "../modules/ui/panels/index.js", "../modules/ui/info.js", "../modules/ui/intro/helper.js", "../modules/ui/toggle.js", "../modules/ui/curtain.js", "../modules/ui/intro/welcome.js", "../modules/ui/intro/navigation.js", "../modules/ui/intro/point.js", "../modules/ui/intro/area.js", "../modules/ui/intro/line.js", "../modules/ui/intro/building.js", "../modules/ui/intro/start_editing.js", "../modules/ui/intro/intro.js", "../modules/ui/issues_info.js", "../modules/ui/map_in_map.js", "../modules/ui/notice.js", "../modules/ui/photoviewer.js", "../modules/ui/restore.js", "../modules/ui/scale.js", "../modules/ui/shortcuts.js", "../modules/ui/data_header.js", "../modules/ui/combobox.js", "../modules/ui/disclosure.js", "../modules/ui/section.js", "../modules/ui/tag_reference.js", "../modules/ui/field_help.js", "../modules/ui/fields/check.js", "../modules/ui/length_indicator.js", "../modules/ui/fields/combo.js", "../modules/ui/fields/input.js", "../modules/ui/fields/access.js", "../modules/ui/fields/address.js", "../modules/ui/fields/date.js", "../modules/ui/fields/directional_combo.js", "../modules/ui/fields/lanes.js", "../modules/ui/fields/localized.js", "../modules/ui/fields/roadheight.js", "../modules/ui/fields/roadspeed.js", "../modules/ui/fields/radio.js", "../modules/ui/fields/restrictions.js", "../modules/ui/fields/textarea.js", "../modules/ui/fields/wikidata.js", "../modules/ui/fields/wikipedia.js", "../modules/ui/fields/sources.js", "../modules/ui/fields/index.js", "../modules/ui/source_subfield.js", "../modules/ui/field.js", "../modules/ui/form_fields.js", "../modules/ui/changeset_editor.js", "../modules/ui/commit.js", "../modules/util/jxon.js", "../modules/ui/sections/changes.js", "../modules/ui/commit_warnings.js", "../modules/ui/confirm.js", "../modules/ui/conflicts.js", "../modules/ui/entity_editor.js", "../modules/ui/sections/entity_issues.js", "../modules/ui/preset_icon.js", "../modules/ui/sections/feature_type.js", "../modules/ui/sections/preset_fields.js", "../modules/ui/sections/raw_member_editor.js", "../modules/actions/delete_members.js", "../modules/ui/sections/raw_membership_editor.js", "../modules/ui/sections/selection_list.js", "../modules/ui/feature_list.js", "../modules/modes/draw_area.js", "../modules/modes/add_area.js", "../modules/modes/add_line.js", "../modules/modes/add_point.js", "../modules/ui/note_comments.js", "../modules/ui/note_header.js", "../modules/ui/note_report.js", "../modules/ui/view_on_osm.js", "../modules/ui/note_editor.js", "../modules/modes/select_note.js", "../modules/modes/add_note.js", "../node_modules/osm-community-index/lib/simplify.js", "../node_modules/osm-community-index/lib/resolve_strings.js", "../modules/ui/success.js", "../modules/modes/save.js", "../modules/ui/improveOSM_comments.js", "../modules/ui/improveOSM_details.js", "../modules/ui/improveOSM_header.js", "../modules/ui/improveOSM_editor.js", "../modules/ui/keepRight_details.js", "../modules/ui/keepRight_header.js", "../modules/ui/view_on_keepRight.js", "../modules/ui/keepRight_editor.js", "../modules/ui/osmose_details.js", "../modules/ui/osmose_header.js", "../modules/ui/view_on_osmose.js", "../modules/ui/osmose_editor.js", "../modules/modes/select_error.js", "../modules/ui/preset_list.js", "../modules/ui/inspector.js", "../modules/ui/lasso.js", "../modules/ui/source_switch.js", "../modules/ui/spinner.js", "../modules/ui/sections/privacy.js", "../modules/ui/splash.js", "../modules/ui/status.js", "../modules/ui/version.js", "../modules/ui/zoom.js", "../modules/ui/sections/raw_tag_editor.js", "../modules/ui/data_editor.js", "../modules/ui/sidebar.js", "../modules/ui/tools/modes.js", "../modules/ui/tools/notes.js", "../modules/ui/tools/save.js", "../modules/ui/tools/sidebar_toggle.js", "../modules/ui/tools/undo_redo.js", "../modules/ui/top_toolbar.js", "../modules/ui/zoom_to_selection.js", "../modules/ui/pane.js", "../modules/ui/sections/background_display_options.js", "../modules/ui/settings/custom_background.js", "../modules/ui/sections/background_list.js", "../modules/ui/sections/background_offset.js", "../modules/ui/sections/overlay_list.js", "../modules/ui/panes/background.js", "../modules/ui/panes/help.js", "../modules/ui/sections/validation_issues.js", "../modules/ui/sections/validation_options.js", "../modules/ui/sections/validation_rules.js", "../modules/ui/sections/validation_status.js", "../modules/ui/panes/issues.js", "../modules/ui/settings/custom_data.js", "../modules/ui/sections/data_layers.js", "../modules/ui/sections/map_features.js", "../modules/ui/sections/map_style_options.js", "../modules/ui/settings/local_photos.js", "../modules/ui/sections/photo_overlays.js", "../modules/ui/sections/map_daterange.js", "../modules/ui/panes/map_data.js", "../modules/ui/panes/preferences.js", "../modules/ui/init.js", "../modules/core/context.js", "../node_modules/name-suggestion-index/lib/matcher.js", "../node_modules/name-suggestion-index/lib/simplify.js", "../node_modules/name-suggestion-index/config/matchGroups.json", "../node_modules/name-suggestion-index/config/genericWords.json", "../node_modules/name-suggestion-index/config/trees.json", "../modules/services/nsi.js", "../modules/services/kartaview.js", "../modules/services/vegbilder.js", "../modules/services/pannellum_photo.js", "../node_modules/osm-auth/src/osm-auth.mjs", "../modules/services/osm.js", "../modules/services/osm_wikibase.js", "../modules/services/streetside.js", "../modules/services/taginfo.js", "../modules/services/vector_tile.js", "../modules/services/wikidata.js", "../modules/services/wikipedia.js", "../modules/services/mapilio.js", "../modules/services/index.js", "../modules/modes/drag_note.js", "../modules/modes/select_data.js", "../modules/behavior/select.js", "../modules/operations/index.js", "../modules/operations/continue.js", "../modules/operations/copy.js", "../modules/operations/disconnect.js", "../modules/operations/downgrade.js", "../modules/operations/extract.js", "../modules/operations/merge.js", "../modules/operations/paste.js", "../modules/operations/reverse.js", "../modules/operations/split.js", "../modules/operations/straighten.js", "../modules/modes/select.js", "../modules/behavior/lasso.js", "../modules/modes/browse.js", "../modules/behavior/add_way.js", "../modules/behavior/hash.js", "../node_modules/d3-brush/src/brush.js", "../modules/id.js"], + "sourcesContent": ["exports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst arabicBlocks = [\n [0x0600, 0x06FF],\n [0x0750, 0x077F],\n [0x08A0, 0x08FF],\n [0xFB50, 0xFDFF],\n [0xFE70, 0xFEFF],\n [0x10E60, 0x10E7F],\n [0x1EC70, 0x1ECBF],\n [0x1EE00, 0x1EEFF] // Mathematical Alphabetic symbols https://www.unicode.org/charts/PDF/U1EE00.pdf\n];\nfunction isArabic(char) {\n if (char.length > 1) {\n // allow the newer chars?\n throw new Error('isArabic works on only one-character strings');\n }\n let code = char.charCodeAt(0);\n for (let i = 0; i < arabicBlocks.length; i++) {\n let block = arabicBlocks[i];\n if (code >= block[0] && code <= block[1]) {\n return true;\n }\n }\n return false;\n}\nexports.isArabic = isArabic;\nfunction isMath(char) {\n if (char.length > 2) {\n // allow the newer chars?\n throw new Error('isMath works on only one-character strings');\n }\n let code = char.charCodeAt(0);\n return ((code >= 0x660 && code <= 0x66C) || (code >= 0x6F0 && code <= 0x6F9));\n}\nexports.isMath = isMath;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst arabicReference = {\n \"alef\": {\n \"normal\": [\n \"\\u0627\"\n ],\n \"madda_above\": {\n \"normal\": [\n \"\\u0627\\u0653\",\n \"\\u0622\"\n ],\n \"isolated\": \"\\uFE81\",\n \"final\": \"\\uFE82\"\n },\n \"hamza_above\": {\n \"normal\": [\n \"\\u0627\\u0654\",\n \"\\u0623\"\n ],\n \"isolated\": \"\\uFE83\",\n \"final\": \"\\uFE84\"\n },\n \"hamza_below\": {\n \"normal\": [\n \"\\u0627\\u0655\",\n \"\\u0625\"\n ],\n \"isolated\": \"\\uFE87\",\n \"final\": \"\\uFE88\"\n },\n \"wasla\": {\n \"normal\": \"\\u0671\",\n \"isolated\": \"\\uFB50\",\n \"final\": \"\\uFB51\"\n },\n \"wavy_hamza_above\": [\n \"\\u0672\"\n ],\n \"wavy_hamza_below\": [\n \"\\u0627\\u065F\",\n \"\\u0673\"\n ],\n \"high_hamza\": [\n \"\\u0675\",\n \"\\u0627\\u0674\"\n ],\n \"indic_two_above\": [\n \"\\u0773\"\n ],\n \"indic_three_above\": [\n \"\\u0774\"\n ],\n \"fathatan\": {\n \"normal\": [\n \"\\u0627\\u064B\"\n ],\n \"final\": \"\\uFD3C\",\n \"isolated\": \"\\uFD3D\"\n },\n \"isolated\": \"\\uFE8D\",\n \"final\": \"\\uFE8E\"\n },\n \"beh\": {\n \"normal\": [\n \"\\u0628\"\n ],\n \"dotless\": [\n \"\\u066E\"\n ],\n \"three_dots_horizontally_below\": [\n \"\\u0750\"\n ],\n \"dot_below_three_dots_above\": [\n \"\\u0751\"\n ],\n \"three_dots_pointing_upwards_below\": [\n \"\\u0752\"\n ],\n \"three_dots_pointing_upwards_below_two_dots_above\": [\n \"\\u0753\"\n ],\n \"two_dots_below_dot_above\": [\n \"\\u0754\"\n ],\n \"inverted_small_v_below\": [\n \"\\u0755\"\n ],\n \"small_v\": [\n \"\\u0756\"\n ],\n \"small_v_below\": [\n \"\\u08A0\"\n ],\n \"hamza_above\": [\n \"\\u08A1\"\n ],\n \"small_meem_above\": [\n \"\\u08B6\"\n ],\n \"isolated\": \"\\uFE8F\",\n \"final\": \"\\uFE90\",\n \"initial\": \"\\uFE91\",\n \"medial\": \"\\uFE92\"\n },\n \"teh marbuta\": {\n \"normal\": [\n \"\\u0629\"\n ],\n \"isolated\": \"\\uFE93\",\n \"final\": \"\\uFE94\"\n },\n \"teh\": {\n \"normal\": [\n \"\\u062A\"\n ],\n \"ring\": [\n \"\\u067C\"\n ],\n \"three_dots_above_downwards\": [\n \"\\u067D\"\n ],\n \"small_teh_above\": [\n \"\\u08B8\"\n ],\n \"isolated\": \"\\uFE95\",\n \"final\": \"\\uFE96\",\n \"initial\": \"\\uFE97\",\n \"medial\": \"\\uFE98\"\n },\n \"theh\": {\n \"normal\": [\n \"\\u062B\"\n ],\n \"isolated\": \"\\uFE99\",\n \"final\": \"\\uFE9A\",\n \"initial\": \"\\uFE9B\",\n \"medial\": \"\\uFE9C\"\n },\n \"jeem\": {\n \"normal\": [\n \"\\u062C\"\n ],\n \"two_dots_above\": [\n \"\\u08A2\"\n ],\n \"isolated\": \"\\uFE9D\",\n \"final\": \"\\uFE9E\",\n \"initial\": \"\\uFE9F\",\n \"medial\": \"\\uFEA0\"\n },\n \"hah\": {\n \"normal\": [\n \"\\u062D\"\n ],\n \"hamza_above\": [\n \"\\u0681\"\n ],\n \"two_dots_vertical_above\": [\n \"\\u0682\"\n ],\n \"three_dots_above\": [\n \"\\u0685\"\n ],\n \"two_dots_above\": [\n \"\\u0757\"\n ],\n \"three_dots_pointing_upwards_below\": [\n \"\\u0758\"\n ],\n \"small_tah_below\": [\n \"\\u076E\"\n ],\n \"small_tah_two_dots\": [\n \"\\u076F\"\n ],\n \"small_tah_above\": [\n \"\\u0772\"\n ],\n \"indic_four_below\": [\n \"\\u077C\"\n ],\n \"isolated\": \"\\uFEA1\",\n \"final\": \"\\uFEA2\",\n \"initial\": \"\\uFEA3\",\n \"medial\": \"\\uFEA4\"\n },\n \"khah\": {\n \"normal\": [\n \"\\u062E\"\n ],\n \"isolated\": \"\\uFEA5\",\n \"final\": \"\\uFEA6\",\n \"initial\": \"\\uFEA7\",\n \"medial\": \"\\uFEA8\"\n },\n \"dal\": {\n \"normal\": [\n \"\\u062F\"\n ],\n \"ring\": [\n \"\\u0689\"\n ],\n \"dot_below\": [\n \"\\u068A\"\n ],\n \"dot_below_small_tah\": [\n \"\\u068B\"\n ],\n \"three_dots_above_downwards\": [\n \"\\u068F\"\n ],\n \"four_dots_above\": [\n \"\\u0690\"\n ],\n \"inverted_v\": [\n \"\\u06EE\"\n ],\n \"two_dots_vertically_below_small_tah\": [\n \"\\u0759\"\n ],\n \"inverted_small_v_below\": [\n \"\\u075A\"\n ],\n \"three_dots_below\": [\n \"\\u08AE\"\n ],\n \"isolated\": \"\\uFEA9\",\n \"final\": \"\\uFEAA\"\n },\n \"thal\": {\n \"normal\": [\n \"\\u0630\"\n ],\n \"isolated\": \"\\uFEAB\",\n \"final\": \"\\uFEAC\"\n },\n \"reh\": {\n \"normal\": [\n \"\\u0631\"\n ],\n \"small_v\": [\n \"\\u0692\"\n ],\n \"ring\": [\n \"\\u0693\"\n ],\n \"dot_below\": [\n \"\\u0694\"\n ],\n \"small_v_below\": [\n \"\\u0695\"\n ],\n \"dot_below_dot_above\": [\n \"\\u0696\"\n ],\n \"two_dots_above\": [\n \"\\u0697\"\n ],\n \"four_dots_above\": [\n \"\\u0699\"\n ],\n \"inverted_v\": [\n \"\\u06EF\"\n ],\n \"stroke\": [\n \"\\u075B\"\n ],\n \"two_dots_vertically_above\": [\n \"\\u076B\"\n ],\n \"hamza_above\": [\n \"\\u076C\"\n ],\n \"small_tah_two_dots\": [\n \"\\u0771\"\n ],\n \"loop\": [\n \"\\u08AA\"\n ],\n \"small_noon_above\": [\n \"\\u08B9\"\n ],\n \"isolated\": \"\\uFEAD\",\n \"final\": \"\\uFEAE\"\n },\n \"zain\": {\n \"normal\": [\n \"\\u0632\"\n ],\n \"inverted_v_above\": [\n \"\\u08B2\"\n ],\n \"isolated\": \"\\uFEAF\",\n \"final\": \"\\uFEB0\"\n },\n \"seen\": {\n \"normal\": [\n \"\\u0633\"\n ],\n \"dot_below_dot_above\": [\n \"\\u069A\"\n ],\n \"three_dots_below\": [\n \"\\u069B\"\n ],\n \"three_dots_below_three_dots_above\": [\n \"\\u069C\"\n ],\n \"four_dots_above\": [\n \"\\u075C\"\n ],\n \"two_dots_vertically_above\": [\n \"\\u076D\"\n ],\n \"small_tah_two_dots\": [\n \"\\u0770\"\n ],\n \"indic_four_above\": [\n \"\\u077D\"\n ],\n \"inverted_v\": [\n \"\\u077E\"\n ],\n \"isolated\": \"\\uFEB1\",\n \"final\": \"\\uFEB2\",\n \"initial\": \"\\uFEB3\",\n \"medial\": \"\\uFEB4\"\n },\n \"sheen\": {\n \"normal\": [\n \"\\u0634\"\n ],\n \"dot_below\": [\n \"\\u06FA\"\n ],\n \"isolated\": \"\\uFEB5\",\n \"final\": \"\\uFEB6\",\n \"initial\": \"\\uFEB7\",\n \"medial\": \"\\uFEB8\"\n },\n \"sad\": {\n \"normal\": [\n \"\\u0635\"\n ],\n \"two_dots_below\": [\n \"\\u069D\"\n ],\n \"three_dots_above\": [\n \"\\u069E\"\n ],\n \"three_dots_below\": [\n \"\\u08AF\"\n ],\n \"isolated\": \"\\uFEB9\",\n \"final\": \"\\uFEBA\",\n \"initial\": \"\\uFEBB\",\n \"medial\": \"\\uFEBC\"\n },\n \"dad\": {\n \"normal\": [\n \"\\u0636\"\n ],\n \"dot_below\": [\n \"\\u06FB\"\n ],\n \"isolated\": \"\\uFEBD\",\n \"final\": \"\\uFEBE\",\n \"initial\": \"\\uFEBF\",\n \"medial\": \"\\uFEC0\"\n },\n \"tah\": {\n \"normal\": [\n \"\\u0637\"\n ],\n \"three_dots_above\": [\n \"\\u069F\"\n ],\n \"two_dots_above\": [\n \"\\u08A3\"\n ],\n \"isolated\": \"\\uFEC1\",\n \"final\": \"\\uFEC2\",\n \"initial\": \"\\uFEC3\",\n \"medial\": \"\\uFEC4\"\n },\n \"zah\": {\n \"normal\": [\n \"\\u0638\"\n ],\n \"isolated\": \"\\uFEC5\",\n \"final\": \"\\uFEC6\",\n \"initial\": \"\\uFEC7\",\n \"medial\": \"\\uFEC8\"\n },\n \"ain\": {\n \"normal\": [\n \"\\u0639\"\n ],\n \"three_dots_above\": [\n \"\\u06A0\"\n ],\n \"two_dots_above\": [\n \"\\u075D\"\n ],\n \"three_dots_pointing_downwards_above\": [\n \"\\u075E\"\n ],\n \"two_dots_vertically_above\": [\n \"\\u075F\"\n ],\n \"three_dots_below\": [\n \"\\u08B3\"\n ],\n \"isolated\": \"\\uFEC9\",\n \"final\": \"\\uFECA\",\n \"initial\": \"\\uFECB\",\n \"medial\": \"\\uFECC\"\n },\n \"ghain\": {\n \"normal\": [\n \"\\u063A\"\n ],\n \"dot_below\": [\n \"\\u06FC\"\n ],\n \"isolated\": \"\\uFECD\",\n \"final\": \"\\uFECE\",\n \"initial\": \"\\uFECF\",\n \"medial\": \"\\uFED0\"\n },\n \"feh\": {\n \"normal\": [\n \"\\u0641\"\n ],\n \"dotless\": [\n \"\\u06A1\"\n ],\n \"dot_moved_below\": [\n \"\\u06A2\"\n ],\n \"dot_below\": [\n \"\\u06A3\"\n ],\n \"three_dots_below\": [\n \"\\u06A5\"\n ],\n \"two_dots_below\": [\n \"\\u0760\"\n ],\n \"three_dots_pointing_upwards_below\": [\n \"\\u0761\"\n ],\n \"dot_below_three_dots_above\": [\n \"\\u08A4\"\n ],\n \"isolated\": \"\\uFED1\",\n \"final\": \"\\uFED2\",\n \"initial\": \"\\uFED3\",\n \"medial\": \"\\uFED4\"\n },\n \"qaf\": {\n \"normal\": [\n \"\\u0642\"\n ],\n \"dotless\": [\n \"\\u066F\"\n ],\n \"dot_above\": [\n \"\\u06A7\"\n ],\n \"three_dots_above\": [\n \"\\u06A8\"\n ],\n \"dot_below\": [\n \"\\u08A5\"\n ],\n \"isolated\": \"\\uFED5\",\n \"final\": \"\\uFED6\",\n \"initial\": \"\\uFED7\",\n \"medial\": \"\\uFED8\"\n },\n \"kaf\": {\n \"normal\": [\n \"\\u0643\"\n ],\n \"swash\": [\n \"\\u06AA\"\n ],\n \"ring\": [\n \"\\u06AB\"\n ],\n \"dot_above\": [\n \"\\u06AC\"\n ],\n \"three_dots_below\": [\n \"\\u06AE\"\n ],\n \"two_dots_above\": [\n \"\\u077F\"\n ],\n \"dot_below\": [\n \"\\u08B4\"\n ],\n \"isolated\": \"\\uFED9\",\n \"final\": \"\\uFEDA\",\n \"initial\": \"\\uFEDB\",\n \"medial\": \"\\uFEDC\"\n },\n \"lam\": {\n \"normal\": [\n \"\\u0644\"\n ],\n \"small_v\": [\n \"\\u06B5\"\n ],\n \"dot_above\": [\n \"\\u06B6\"\n ],\n \"three_dots_above\": [\n \"\\u06B7\"\n ],\n \"three_dots_below\": [\n \"\\u06B8\"\n ],\n \"bar\": [\n \"\\u076A\"\n ],\n \"double_bar\": [\n \"\\u08A6\"\n ],\n \"isolated\": \"\\uFEDD\",\n \"final\": \"\\uFEDE\",\n \"initial\": \"\\uFEDF\",\n \"medial\": \"\\uFEE0\"\n },\n \"meem\": {\n \"normal\": [\n \"\\u0645\"\n ],\n \"dot_above\": [\n \"\\u0765\"\n ],\n \"dot_below\": [\n \"\\u0766\"\n ],\n \"three_dots_above\": [\n \"\\u08A7\"\n ],\n \"isolated\": \"\\uFEE1\",\n \"final\": \"\\uFEE2\",\n \"initial\": \"\\uFEE3\",\n \"medial\": \"\\uFEE4\"\n },\n \"noon\": {\n \"normal\": [\n \"\\u0646\"\n ],\n \"dot_below\": [\n \"\\u06B9\"\n ],\n \"ring\": [\n \"\\u06BC\"\n ],\n \"three_dots_above\": [\n \"\\u06BD\"\n ],\n \"two_dots_below\": [\n \"\\u0767\"\n ],\n \"small_tah\": [\n \"\\u0768\"\n ],\n \"small_v\": [\n \"\\u0769\"\n ],\n \"isolated\": \"\\uFEE5\",\n \"final\": \"\\uFEE6\",\n \"initial\": \"\\uFEE7\",\n \"medial\": \"\\uFEE8\"\n },\n \"heh\": {\n \"normal\": [\n \"\\u0647\"\n ],\n \"isolated\": \"\\uFEE9\",\n \"final\": \"\\uFEEA\",\n \"initial\": \"\\uFEEB\",\n \"medial\": \"\\uFEEC\"\n },\n \"waw\": {\n \"normal\": [\n \"\\u0648\"\n ],\n \"hamza_above\": {\n \"normal\": [\n \"\\u0624\",\n \"\\u0648\\u0654\"\n ],\n \"isolated\": \"\\uFE85\",\n \"final\": \"\\uFE86\"\n },\n \"high_hamza\": [\n \"\\u0676\",\n \"\\u0648\\u0674\"\n ],\n \"ring\": [\n \"\\u06C4\"\n ],\n \"two_dots_above\": [\n \"\\u06CA\"\n ],\n \"dot_above\": [\n \"\\u06CF\"\n ],\n \"indic_two_above\": [\n \"\\u0778\"\n ],\n \"indic_three_above\": [\n \"\\u0779\"\n ],\n \"dot_within\": [\n \"\\u08AB\"\n ],\n \"isolated\": \"\\uFEED\",\n \"final\": \"\\uFEEE\"\n },\n \"alef_maksura\": {\n \"normal\": [\n \"\\u0649\"\n ],\n \"hamza_above\": [\n \"\\u0626\",\n \"\\u064A\\u0654\"\n ],\n \"initial\": \"\\uFBE8\",\n \"medial\": \"\\uFBE9\",\n \"isolated\": \"\\uFEEF\",\n \"final\": \"\\uFEF0\"\n },\n \"yeh\": {\n \"normal\": [\n \"\\u064A\"\n ],\n \"hamza_above\": {\n \"normal\": [\n \"\\u0626\",\n \"\\u0649\\u0654\"\n ],\n \"isolated\": \"\\uFE89\",\n \"final\": \"\\uFE8A\",\n \"initial\": \"\\uFE8B\",\n \"medial\": \"\\uFE8C\"\n },\n \"two_dots_below_hamza_above\": [\n \"\\u08A8\"\n ],\n \"high_hamza\": [\n \"\\u0678\",\n \"\\u064A\\u0674\"\n ],\n \"tail\": [\n \"\\u06CD\"\n ],\n \"small_v\": [\n \"\\u06CE\"\n ],\n \"three_dots_below\": [\n \"\\u06D1\"\n ],\n \"two_dots_below_dot_above\": [\n \"\\u08A9\"\n ],\n \"two_dots_below_small_noon_above\": [\n \"\\u08BA\"\n ],\n \"isolated\": \"\\uFEF1\",\n \"final\": \"\\uFEF2\",\n \"initial\": \"\\uFEF3\",\n \"medial\": \"\\uFEF4\"\n },\n \"tteh\": {\n \"normal\": [\n \"\\u0679\"\n ],\n \"isolated\": \"\\uFB66\",\n \"final\": \"\\uFB67\",\n \"initial\": \"\\uFB68\",\n \"medial\": \"\\uFB69\"\n },\n \"tteheh\": {\n \"normal\": [\n \"\\u067A\"\n ],\n \"isolated\": \"\\uFB5E\",\n \"final\": \"\\uFB5F\",\n \"initial\": \"\\uFB60\",\n \"medial\": \"\\uFB61\"\n },\n \"beeh\": {\n \"normal\": [\n \"\\u067B\"\n ],\n \"isolated\": \"\\uFB52\",\n \"final\": \"\\uFB53\",\n \"initial\": \"\\uFB54\",\n \"medial\": \"\\uFB55\"\n },\n \"peh\": {\n \"normal\": [\n \"\\u067E\"\n ],\n \"small_meem_above\": [\n \"\\u08B7\"\n ],\n \"isolated\": \"\\uFB56\",\n \"final\": \"\\uFB57\",\n \"initial\": \"\\uFB58\",\n \"medial\": \"\\uFB59\"\n },\n \"teheh\": {\n \"normal\": [\n \"\\u067F\"\n ],\n \"isolated\": \"\\uFB62\",\n \"final\": \"\\uFB63\",\n \"initial\": \"\\uFB64\",\n \"medial\": \"\\uFB65\"\n },\n \"beheh\": {\n \"normal\": [\n \"\\u0680\"\n ],\n \"isolated\": \"\\uFB5A\",\n \"final\": \"\\uFB5B\",\n \"initial\": \"\\uFB5C\",\n \"medial\": \"\\uFB5D\"\n },\n \"nyeh\": {\n \"normal\": [\n \"\\u0683\"\n ],\n \"isolated\": \"\\uFB76\",\n \"final\": \"\\uFB77\",\n \"initial\": \"\\uFB78\",\n \"medial\": \"\\uFB79\"\n },\n \"dyeh\": {\n \"normal\": [\n \"\\u0684\"\n ],\n \"isolated\": \"\\uFB72\",\n \"final\": \"\\uFB73\",\n \"initial\": \"\\uFB74\",\n \"medial\": \"\\uFB75\"\n },\n \"tcheh\": {\n \"normal\": [\n \"\\u0686\"\n ],\n \"dot_above\": [\n \"\\u06BF\"\n ],\n \"isolated\": \"\\uFB7A\",\n \"final\": \"\\uFB7B\",\n \"initial\": \"\\uFB7C\",\n \"medial\": \"\\uFB7D\"\n },\n \"tcheheh\": {\n \"normal\": [\n \"\\u0687\"\n ],\n \"isolated\": \"\\uFB7E\",\n \"final\": \"\\uFB7F\",\n \"initial\": \"\\uFB80\",\n \"medial\": \"\\uFB81\"\n },\n \"ddal\": {\n \"normal\": [\n \"\\u0688\"\n ],\n \"isolated\": \"\\uFB88\",\n \"final\": \"\\uFB89\"\n },\n \"dahal\": {\n \"normal\": [\n \"\\u068C\"\n ],\n \"isolated\": \"\\uFB84\",\n \"final\": \"\\uFB85\"\n },\n \"ddahal\": {\n \"normal\": [\n \"\\u068D\"\n ],\n \"isolated\": \"\\uFB82\",\n \"final\": \"\\uFB83\"\n },\n \"dul\": {\n \"normal\": [\n \"\\u068F\",\n \"\\u068E\"\n ],\n \"isolated\": \"\\uFB86\",\n \"final\": \"\\uFB87\"\n },\n \"rreh\": {\n \"normal\": [\n \"\\u0691\"\n ],\n \"isolated\": \"\\uFB8C\",\n \"final\": \"\\uFB8D\"\n },\n \"jeh\": {\n \"normal\": [\n \"\\u0698\"\n ],\n \"isolated\": \"\\uFB8A\",\n \"final\": \"\\uFB8B\"\n },\n \"veh\": {\n \"normal\": [\n \"\\u06A4\"\n ],\n \"isolated\": \"\\uFB6A\",\n \"final\": \"\\uFB6B\",\n \"initial\": \"\\uFB6C\",\n \"medial\": \"\\uFB6D\"\n },\n \"peheh\": {\n \"normal\": [\n \"\\u06A6\"\n ],\n \"isolated\": \"\\uFB6E\",\n \"final\": \"\\uFB6F\",\n \"initial\": \"\\uFB70\",\n \"medial\": \"\\uFB71\"\n },\n \"keheh\": {\n \"normal\": [\n \"\\u06A9\"\n ],\n \"dot_above\": [\n \"\\u0762\"\n ],\n \"three_dots_above\": [\n \"\\u0763\"\n ],\n \"three_dots_pointing_upwards_below\": [\n \"\\u0764\"\n ],\n \"isolated\": \"\\uFB8E\",\n \"final\": \"\\uFB8F\",\n \"initial\": \"\\uFB90\",\n \"medial\": \"\\uFB91\"\n },\n \"ng\": {\n \"normal\": [\n \"\\u06AD\"\n ],\n \"isolated\": \"\\uFBD3\",\n \"final\": \"\\uFBD4\",\n \"initial\": \"\\uFBD5\",\n \"medial\": \"\\uFBD6\"\n },\n \"gaf\": {\n \"normal\": [\n \"\\u06AF\"\n ],\n \"ring\": [\n \"\\u06B0\"\n ],\n \"two_dots_below\": [\n \"\\u06B2\"\n ],\n \"three_dots_above\": [\n \"\\u06B4\"\n ],\n \"inverted_stroke\": [\n \"\\u08B0\"\n ],\n \"isolated\": \"\\uFB92\",\n \"final\": \"\\uFB93\",\n \"initial\": \"\\uFB94\",\n \"medial\": \"\\uFB95\"\n },\n \"ngoeh\": {\n \"normal\": [\n \"\\u06B1\"\n ],\n \"isolated\": \"\\uFB9A\",\n \"final\": \"\\uFB9B\",\n \"initial\": \"\\uFB9C\",\n \"medial\": \"\\uFB9D\"\n },\n \"gueh\": {\n \"normal\": [\n \"\\u06B3\"\n ],\n \"isolated\": \"\\uFB96\",\n \"final\": \"\\uFB97\",\n \"initial\": \"\\uFB98\",\n \"medial\": \"\\uFB99\"\n },\n \"noon ghunna\": {\n \"normal\": [\n \"\\u06BA\"\n ],\n \"isolated\": \"\\uFB9E\",\n \"final\": \"\\uFB9F\"\n },\n \"rnoon\": {\n \"normal\": [\n \"\\u06BB\"\n ],\n \"isolated\": \"\\uFBA0\",\n \"final\": \"\\uFBA1\",\n \"initial\": \"\\uFBA2\",\n \"medial\": \"\\uFBA3\"\n },\n \"heh doachashmee\": {\n \"normal\": [\n \"\\u06BE\"\n ],\n \"isolated\": \"\\uFBAA\",\n \"final\": \"\\uFBAB\",\n \"initial\": \"\\uFBAC\",\n \"medial\": \"\\uFBAD\"\n },\n \"heh goal\": {\n \"normal\": [\n \"\\u06C1\"\n ],\n \"hamza_above\": [\n \"\\u06C1\\u0654\",\n \"\\u06C2\"\n ],\n \"isolated\": \"\\uFBA6\",\n \"final\": \"\\uFBA7\",\n \"initial\": \"\\uFBA8\",\n \"medial\": \"\\uFBA9\"\n },\n \"teh marbuta goal\": {\n \"normal\": [\n \"\\u06C3\"\n ]\n },\n \"kirghiz oe\": {\n \"normal\": [\n \"\\u06C5\"\n ],\n \"isolated\": \"\\uFBE0\",\n \"final\": \"\\uFBE1\"\n },\n \"oe\": {\n \"normal\": [\n \"\\u06C6\"\n ],\n \"isolated\": \"\\uFBD9\",\n \"final\": \"\\uFBDA\"\n },\n \"u\": {\n \"normal\": [\n \"\\u06C7\"\n ],\n \"hamza_above\": {\n \"normal\": [\n \"\\u0677\",\n \"\\u06C7\\u0674\"\n ],\n \"isolated\": \"\\uFBDD\"\n },\n \"isolated\": \"\\uFBD7\",\n \"final\": \"\\uFBD8\"\n },\n \"yu\": {\n \"normal\": [\n \"\\u06C8\"\n ],\n \"isolated\": \"\\uFBDB\",\n \"final\": \"\\uFBDC\"\n },\n \"kirghiz yu\": {\n \"normal\": [\n \"\\u06C9\"\n ],\n \"isolated\": \"\\uFBE2\",\n \"final\": \"\\uFBE3\"\n },\n \"ve\": {\n \"normal\": [\n \"\\u06CB\"\n ],\n \"isolated\": \"\\uFBDE\",\n \"final\": \"\\uFBDF\"\n },\n \"farsi yeh\": {\n \"normal\": [\n \"\\u06CC\"\n ],\n \"indic_two_above\": [\n \"\\u0775\"\n ],\n \"indic_three_above\": [\n \"\\u0776\"\n ],\n \"indic_four_above\": [\n \"\\u0777\"\n ],\n \"isolated\": \"\\uFBFC\",\n \"final\": \"\\uFBFD\",\n \"initial\": \"\\uFBFE\",\n \"medial\": \"\\uFBFF\"\n },\n \"e\": {\n \"normal\": [\n \"\\u06D0\"\n ],\n \"isolated\": \"\\uFBE4\",\n \"final\": \"\\uFBE5\",\n \"initial\": \"\\uFBE6\",\n \"medial\": \"\\uFBE7\"\n },\n \"yeh barree\": {\n \"normal\": [\n \"\\u06D2\"\n ],\n \"hamza_above\": {\n \"normal\": [\n \"\\u06D2\\u0654\",\n \"\\u06D3\"\n ],\n \"isolated\": \"\\uFBB0\",\n \"final\": \"\\uFBB1\"\n },\n \"indic_two_above\": [\n \"\\u077A\"\n ],\n \"indic_three_above\": [\n \"\\u077B\"\n ],\n \"isolated\": \"\\uFBAE\",\n \"final\": \"\\uFBAF\"\n },\n \"ae\": {\n \"normal\": [\n \"\\u06D5\"\n ],\n \"isolated\": \"\\u06D5\",\n \"final\": \"\\uFEEA\",\n \"yeh_above\": {\n \"normal\": [\n \"\\u06C0\",\n \"\\u06D5\\u0654\"\n ],\n \"isolated\": \"\\uFBA4\",\n \"final\": \"\\uFBA5\"\n }\n },\n \"rohingya yeh\": {\n \"normal\": [\n \"\\u08AC\"\n ]\n },\n \"low alef\": {\n \"normal\": [\n \"\\u08AD\"\n ]\n },\n \"straight waw\": {\n \"normal\": [\n \"\\u08B1\"\n ]\n },\n \"african feh\": {\n \"normal\": [\n \"\\u08BB\"\n ]\n },\n \"african qaf\": {\n \"normal\": [\n \"\\u08BC\"\n ]\n },\n \"african noon\": {\n \"normal\": [\n \"\\u08BD\"\n ]\n }\n};\nexports.default = arabicReference;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ligatureReference = {\n \"\\u0626\\u0627\": {\n \"isolated\": \"\\uFBEA\",\n \"final\": \"\\uFBEB\"\n },\n \"\\u0626\\u06D5\": {\n \"isolated\": \"\\uFBEC\",\n \"final\": \"\\uFBED\"\n },\n \"\\u0626\\u0648\": {\n \"isolated\": \"\\uFBEE\",\n \"final\": \"\\uFBEF\"\n },\n \"\\u0626\\u06C7\": {\n \"isolated\": \"\\uFBF0\",\n \"final\": \"\\uFBF1\"\n },\n \"\\u0626\\u06C6\": {\n \"isolated\": \"\\uFBF2\",\n \"final\": \"\\uFBF3\"\n },\n \"\\u0626\\u06C8\": {\n \"isolated\": \"\\uFBF4\",\n \"final\": \"\\uFBF5\"\n },\n \"\\u0626\\u06D0\": {\n \"isolated\": \"\\uFBF6\",\n \"final\": \"\\uFBF7\",\n \"initial\": \"\\uFBF8\"\n },\n \"\\u0626\\u0649\": {\n \"uighur_kirghiz\": {\n \"isolated\": \"\\uFBF9\",\n \"final\": \"\\uFBFA\",\n \"initial\": \"\\uFBFB\"\n },\n \"isolated\": \"\\uFC03\",\n \"final\": \"\\uFC68\"\n },\n \"\\u0626\\u062C\": {\n \"isolated\": \"\\uFC00\",\n \"initial\": \"\\uFC97\"\n },\n \"\\u0626\\u062D\": {\n \"isolated\": \"\\uFC01\",\n \"initial\": \"\\uFC98\"\n },\n \"\\u0626\\u0645\": {\n \"isolated\": \"\\uFC02\",\n \"final\": \"\\uFC66\",\n \"initial\": \"\\uFC9A\",\n \"medial\": \"\\uFCDF\"\n },\n \"\\u0626\\u064A\": {\n \"isolated\": \"\\uFC04\",\n \"final\": \"\\uFC69\"\n },\n \"\\u0628\\u062C\": {\n \"isolated\": \"\\uFC05\",\n \"initial\": \"\\uFC9C\"\n },\n \"\\u0628\\u062D\": {\n \"isolated\": \"\\uFC06\",\n \"initial\": \"\\uFC9D\"\n },\n \"\\u0628\\u062E\": {\n \"isolated\": \"\\uFC07\",\n \"initial\": \"\\uFC9E\"\n },\n \"\\u0628\\u0645\": {\n \"isolated\": \"\\uFC08\",\n \"final\": \"\\uFC6C\",\n \"initial\": \"\\uFC9F\",\n \"medial\": \"\\uFCE1\"\n },\n \"\\u0628\\u0649\": {\n \"isolated\": \"\\uFC09\",\n \"final\": \"\\uFC6E\"\n },\n \"\\u0628\\u064A\": {\n \"isolated\": \"\\uFC0A\",\n \"final\": \"\\uFC6F\"\n },\n \"\\u062A\\u062C\": {\n \"isolated\": \"\\uFC0B\",\n \"initial\": \"\\uFCA1\"\n },\n \"\\u062A\\u062D\": {\n \"isolated\": \"\\uFC0C\",\n \"initial\": \"\\uFCA2\"\n },\n \"\\u062A\\u062E\": {\n \"isolated\": \"\\uFC0D\",\n \"initial\": \"\\uFCA3\"\n },\n \"\\u062A\\u0645\": {\n \"isolated\": \"\\uFC0E\",\n \"final\": \"\\uFC72\",\n \"initial\": \"\\uFCA4\",\n \"medial\": \"\\uFCE3\"\n },\n \"\\u062A\\u0649\": {\n \"isolated\": \"\\uFC0F\",\n \"final\": \"\\uFC74\"\n },\n \"\\u062A\\u064A\": {\n \"isolated\": \"\\uFC10\",\n \"final\": \"\\uFC75\"\n },\n \"\\u062B\\u062C\": {\n \"isolated\": \"\\uFC11\"\n },\n \"\\u062B\\u0645\": {\n \"isolated\": \"\\uFC12\",\n \"final\": \"\\uFC78\",\n \"initial\": \"\\uFCA6\",\n \"medial\": \"\\uFCE5\"\n },\n \"\\u062B\\u0649\": {\n \"isolated\": \"\\uFC13\",\n \"final\": \"\\uFC7A\"\n },\n \"\\u062B\\u0648\": {\n \"isolated\": \"\\uFC14\"\n },\n \"\\u062C\\u062D\": {\n \"isolated\": \"\\uFC15\",\n \"initial\": \"\\uFCA7\"\n },\n \"\\u062C\\u0645\": {\n \"isolated\": \"\\uFC16\",\n \"initial\": \"\\uFCA8\"\n },\n \"\\u062D\\u062C\": {\n \"isolated\": \"\\uFC17\",\n \"initial\": \"\\uFCA9\"\n },\n \"\\u062D\\u0645\": {\n \"isolated\": \"\\uFC18\",\n \"initial\": \"\\uFCAA\"\n },\n \"\\u062E\\u062C\": {\n \"isolated\": \"\\uFC19\",\n \"initial\": \"\\uFCAB\"\n },\n \"\\u062E\\u062D\": {\n \"isolated\": \"\\uFC1A\"\n },\n \"\\u062E\\u0645\": {\n \"isolated\": \"\\uFC1B\",\n \"initial\": \"\\uFCAC\"\n },\n \"\\u0633\\u062C\": {\n \"isolated\": \"\\uFC1C\",\n \"initial\": \"\\uFCAD\",\n \"medial\": \"\\uFD34\"\n },\n \"\\u0633\\u062D\": {\n \"isolated\": \"\\uFC1D\",\n \"initial\": \"\\uFCAE\",\n \"medial\": \"\\uFD35\"\n },\n \"\\u0633\\u062E\": {\n \"isolated\": \"\\uFC1E\",\n \"initial\": \"\\uFCAF\",\n \"medial\": \"\\uFD36\"\n },\n \"\\u0633\\u0645\": {\n \"isolated\": \"\\uFC1F\",\n \"initial\": \"\\uFCB0\",\n \"medial\": \"\\uFCE7\"\n },\n \"\\u0635\\u062D\": {\n \"isolated\": \"\\uFC20\",\n \"initial\": \"\\uFCB1\"\n },\n \"\\u0635\\u0645\": {\n \"isolated\": \"\\uFC21\",\n \"initial\": \"\\uFCB3\"\n },\n \"\\u0636\\u062C\": {\n \"isolated\": \"\\uFC22\",\n \"initial\": \"\\uFCB4\"\n },\n \"\\u0636\\u062D\": {\n \"isolated\": \"\\uFC23\",\n \"initial\": \"\\uFCB5\"\n },\n \"\\u0636\\u062E\": {\n \"isolated\": \"\\uFC24\",\n \"initial\": \"\\uFCB6\"\n },\n \"\\u0636\\u0645\": {\n \"isolated\": \"\\uFC25\",\n \"initial\": \"\\uFCB7\"\n },\n \"\\u0637\\u062D\": {\n \"isolated\": \"\\uFC26\",\n \"initial\": \"\\uFCB8\"\n },\n \"\\u0637\\u0645\": {\n \"isolated\": \"\\uFC27\",\n \"initial\": \"\\uFD33\",\n \"medial\": \"\\uFD3A\"\n },\n \"\\u0638\\u0645\": {\n \"isolated\": \"\\uFC28\",\n \"initial\": \"\\uFCB9\",\n \"medial\": \"\\uFD3B\"\n },\n \"\\u0639\\u062C\": {\n \"isolated\": \"\\uFC29\",\n \"initial\": \"\\uFCBA\"\n },\n \"\\u0639\\u0645\": {\n \"isolated\": \"\\uFC2A\",\n \"initial\": \"\\uFCBB\"\n },\n \"\\u063A\\u062C\": {\n \"isolated\": \"\\uFC2B\",\n \"initial\": \"\\uFCBC\"\n },\n \"\\u063A\\u0645\": {\n \"isolated\": \"\\uFC2C\",\n \"initial\": \"\\uFCBD\"\n },\n \"\\u0641\\u062C\": {\n \"isolated\": \"\\uFC2D\",\n \"initial\": \"\\uFCBE\"\n },\n \"\\u0641\\u062D\": {\n \"isolated\": \"\\uFC2E\",\n \"initial\": \"\\uFCBF\"\n },\n \"\\u0641\\u062E\": {\n \"isolated\": \"\\uFC2F\",\n \"initial\": \"\\uFCC0\"\n },\n \"\\u0641\\u0645\": {\n \"isolated\": \"\\uFC30\",\n \"initial\": \"\\uFCC1\"\n },\n \"\\u0641\\u0649\": {\n \"isolated\": \"\\uFC31\",\n \"final\": \"\\uFC7C\"\n },\n \"\\u0641\\u064A\": {\n \"isolated\": \"\\uFC32\",\n \"final\": \"\\uFC7D\"\n },\n \"\\u0642\\u062D\": {\n \"isolated\": \"\\uFC33\",\n \"initial\": \"\\uFCC2\"\n },\n \"\\u0642\\u0645\": {\n \"isolated\": \"\\uFC34\",\n \"initial\": \"\\uFCC3\"\n },\n \"\\u0642\\u0649\": {\n \"isolated\": \"\\uFC35\",\n \"final\": \"\\uFC7E\"\n },\n \"\\u0642\\u064A\": {\n \"isolated\": \"\\uFC36\",\n \"final\": \"\\uFC7F\"\n },\n \"\\u0643\\u0627\": {\n \"isolated\": \"\\uFC37\",\n \"final\": \"\\uFC80\"\n },\n \"\\u0643\\u062C\": {\n \"isolated\": \"\\uFC38\",\n \"initial\": \"\\uFCC4\"\n },\n \"\\u0643\\u062D\": {\n \"isolated\": \"\\uFC39\",\n \"initial\": \"\\uFCC5\"\n },\n \"\\u0643\\u062E\": {\n \"isolated\": \"\\uFC3A\",\n \"initial\": \"\\uFCC6\"\n },\n \"\\u0643\\u0644\": {\n \"isolated\": \"\\uFC3B\",\n \"final\": \"\\uFC81\",\n \"initial\": \"\\uFCC7\",\n \"medial\": \"\\uFCEB\"\n },\n \"\\u0643\\u0645\": {\n \"isolated\": \"\\uFC3C\",\n \"final\": \"\\uFC82\",\n \"initial\": \"\\uFCC8\",\n \"medial\": \"\\uFCEC\"\n },\n \"\\u0643\\u0649\": {\n \"isolated\": \"\\uFC3D\",\n \"final\": \"\\uFC83\"\n },\n \"\\u0643\\u064A\": {\n \"isolated\": \"\\uFC3E\",\n \"final\": \"\\uFC84\"\n },\n \"\\u0644\\u062C\": {\n \"isolated\": \"\\uFC3F\",\n \"initial\": \"\\uFCC9\"\n },\n \"\\u0644\\u062D\": {\n \"isolated\": \"\\uFC40\",\n \"initial\": \"\\uFCCA\"\n },\n \"\\u0644\\u062E\": {\n \"isolated\": \"\\uFC41\",\n \"initial\": \"\\uFCCB\"\n },\n \"\\u0644\\u0645\": {\n \"isolated\": \"\\uFC42\",\n \"final\": \"\\uFC85\",\n \"initial\": \"\\uFCCC\",\n \"medial\": \"\\uFCED\"\n },\n \"\\u0644\\u0649\": {\n \"isolated\": \"\\uFC43\",\n \"final\": \"\\uFC86\"\n },\n \"\\u0644\\u064A\": {\n \"isolated\": \"\\uFC44\",\n \"final\": \"\\uFC87\"\n },\n \"\\u0645\\u062C\": {\n \"isolated\": \"\\uFC45\",\n \"initial\": \"\\uFCCE\"\n },\n \"\\u0645\\u062D\": {\n \"isolated\": \"\\uFC46\",\n \"initial\": \"\\uFCCF\"\n },\n \"\\u0645\\u062E\": {\n \"isolated\": \"\\uFC47\",\n \"initial\": \"\\uFCD0\"\n },\n \"\\u0645\\u0645\": {\n \"isolated\": \"\\uFC48\",\n \"final\": \"\\uFC89\",\n \"initial\": \"\\uFCD1\"\n },\n \"\\u0645\\u0649\": {\n \"isolated\": \"\\uFC49\"\n },\n \"\\u0645\\u064A\": {\n \"isolated\": \"\\uFC4A\"\n },\n \"\\u0646\\u062C\": {\n \"isolated\": \"\\uFC4B\",\n \"initial\": \"\\uFCD2\"\n },\n \"\\u0646\\u062D\": {\n \"isolated\": \"\\uFC4C\",\n \"initial\": \"\\uFCD3\"\n },\n \"\\u0646\\u062E\": {\n \"isolated\": \"\\uFC4D\",\n \"initial\": \"\\uFCD4\"\n },\n \"\\u0646\\u0645\": {\n \"isolated\": \"\\uFC4E\",\n \"final\": \"\\uFC8C\",\n \"initial\": \"\\uFCD5\",\n \"medial\": \"\\uFCEE\"\n },\n \"\\u0646\\u0649\": {\n \"isolated\": \"\\uFC4F\",\n \"final\": \"\\uFC8E\"\n },\n \"\\u0646\\u064A\": {\n \"isolated\": \"\\uFC50\",\n \"final\": \"\\uFC8F\"\n },\n \"\\u0647\\u062C\": {\n \"isolated\": \"\\uFC51\",\n \"initial\": \"\\uFCD7\"\n },\n \"\\u0647\\u0645\": {\n \"isolated\": \"\\uFC52\",\n \"initial\": \"\\uFCD8\"\n },\n \"\\u0647\\u0649\": {\n \"isolated\": \"\\uFC53\"\n },\n \"\\u0647\\u064A\": {\n \"isolated\": \"\\uFC54\"\n },\n \"\\u064A\\u062C\": {\n \"isolated\": \"\\uFC55\",\n \"initial\": \"\\uFCDA\"\n },\n \"\\u064A\\u062D\": {\n \"isolated\": \"\\uFC56\",\n \"initial\": \"\\uFCDB\"\n },\n \"\\u064A\\u062E\": {\n \"isolated\": \"\\uFC57\",\n \"initial\": \"\\uFCDC\"\n },\n \"\\u064A\\u0645\": {\n \"isolated\": \"\\uFC58\",\n \"final\": \"\\uFC93\",\n \"initial\": \"\\uFCDD\",\n \"medial\": \"\\uFCF0\"\n },\n \"\\u064A\\u0649\": {\n \"isolated\": \"\\uFC59\",\n \"final\": \"\\uFC95\"\n },\n \"\\u064A\\u064A\": {\n \"isolated\": \"\\uFC5A\",\n \"final\": \"\\uFC96\"\n },\n \"\\u0630\\u0670\": {\n \"isolated\": \"\\uFC5B\"\n },\n \"\\u0631\\u0670\": {\n \"isolated\": \"\\uFC5C\"\n },\n \"\\u0649\\u0670\": {\n \"isolated\": \"\\uFC5D\",\n \"final\": \"\\uFC90\"\n },\n \"\\u064C\\u0651\": {\n \"isolated\": \"\\uFC5E\"\n },\n \"\\u064D\\u0651\": {\n \"isolated\": \"\\uFC5F\"\n },\n \"\\u064E\\u0651\": {\n \"isolated\": \"\\uFC60\"\n },\n \"\\u064F\\u0651\": {\n \"isolated\": \"\\uFC61\"\n },\n \"\\u0650\\u0651\": {\n \"isolated\": \"\\uFC62\"\n },\n \"\\u0651\\u0670\": {\n \"isolated\": \"\\uFC63\"\n },\n \"\\u0626\\u0631\": {\n \"final\": \"\\uFC64\"\n },\n \"\\u0626\\u0632\": {\n \"final\": \"\\uFC65\"\n },\n \"\\u0626\\u0646\": {\n \"final\": \"\\uFC67\"\n },\n \"\\u0628\\u0631\": {\n \"final\": \"\\uFC6A\"\n },\n \"\\u0628\\u0632\": {\n \"final\": \"\\uFC6B\"\n },\n \"\\u0628\\u0646\": {\n \"final\": \"\\uFC6D\"\n },\n \"\\u062A\\u0631\": {\n \"final\": \"\\uFC70\"\n },\n \"\\u062A\\u0632\": {\n \"final\": \"\\uFC71\"\n },\n \"\\u062A\\u0646\": {\n \"final\": \"\\uFC73\"\n },\n \"\\u062B\\u0631\": {\n \"final\": \"\\uFC76\"\n },\n \"\\u062B\\u0632\": {\n \"final\": \"\\uFC77\"\n },\n \"\\u062B\\u0646\": {\n \"final\": \"\\uFC79\"\n },\n \"\\u062B\\u064A\": {\n \"final\": \"\\uFC7B\"\n },\n \"\\u0645\\u0627\": {\n \"final\": \"\\uFC88\"\n },\n \"\\u0646\\u0631\": {\n \"final\": \"\\uFC8A\"\n },\n \"\\u0646\\u0632\": {\n \"final\": \"\\uFC8B\"\n },\n \"\\u0646\\u0646\": {\n \"final\": \"\\uFC8D\"\n },\n \"\\u064A\\u0631\": {\n \"final\": \"\\uFC91\"\n },\n \"\\u064A\\u0632\": {\n \"final\": \"\\uFC92\"\n },\n \"\\u064A\\u0646\": {\n \"final\": \"\\uFC94\"\n },\n \"\\u0626\\u062E\": {\n \"initial\": \"\\uFC99\"\n },\n \"\\u0626\\u0647\": {\n \"initial\": \"\\uFC9B\",\n \"medial\": \"\\uFCE0\"\n },\n \"\\u0628\\u0647\": {\n \"initial\": \"\\uFCA0\",\n \"medial\": \"\\uFCE2\"\n },\n \"\\u062A\\u0647\": {\n \"initial\": \"\\uFCA5\",\n \"medial\": \"\\uFCE4\"\n },\n \"\\u0635\\u062E\": {\n \"initial\": \"\\uFCB2\"\n },\n \"\\u0644\\u0647\": {\n \"initial\": \"\\uFCCD\"\n },\n \"\\u0646\\u0647\": {\n \"initial\": \"\\uFCD6\",\n \"medial\": \"\\uFCEF\"\n },\n \"\\u0647\\u0670\": {\n \"initial\": \"\\uFCD9\"\n },\n \"\\u064A\\u0647\": {\n \"initial\": \"\\uFCDE\",\n \"medial\": \"\\uFCF1\"\n },\n \"\\u062B\\u0647\": {\n \"medial\": \"\\uFCE6\"\n },\n \"\\u0633\\u0647\": {\n \"medial\": \"\\uFCE8\",\n \"initial\": \"\\uFD31\"\n },\n \"\\u0634\\u0645\": {\n \"medial\": \"\\uFCE9\",\n \"isolated\": \"\\uFD0C\",\n \"final\": \"\\uFD28\",\n \"initial\": \"\\uFD30\"\n },\n \"\\u0634\\u0647\": {\n \"medial\": \"\\uFCEA\",\n \"initial\": \"\\uFD32\"\n },\n \"\\u0640\\u064E\\u0651\": {\n \"medial\": \"\\uFCF2\"\n },\n \"\\u0640\\u064F\\u0651\": {\n \"medial\": \"\\uFCF3\"\n },\n \"\\u0640\\u0650\\u0651\": {\n \"medial\": \"\\uFCF4\"\n },\n \"\\u0637\\u0649\": {\n \"isolated\": \"\\uFCF5\",\n \"final\": \"\\uFD11\"\n },\n \"\\u0637\\u064A\": {\n \"isolated\": \"\\uFCF6\",\n \"final\": \"\\uFD12\"\n },\n \"\\u0639\\u0649\": {\n \"isolated\": \"\\uFCF7\",\n \"final\": \"\\uFD13\"\n },\n \"\\u0639\\u064A\": {\n \"isolated\": \"\\uFCF8\",\n \"final\": \"\\uFD14\"\n },\n \"\\u063A\\u0649\": {\n \"isolated\": \"\\uFCF9\",\n \"final\": \"\\uFD15\"\n },\n \"\\u063A\\u064A\": {\n \"isolated\": \"\\uFCFA\",\n \"final\": \"\\uFD16\"\n },\n \"\\u0633\\u0649\": {\n \"isolated\": \"\\uFCFB\"\n },\n \"\\u0633\\u064A\": {\n \"isolated\": \"\\uFCFC\",\n \"final\": \"\\uFD18\"\n },\n \"\\u0634\\u0649\": {\n \"isolated\": \"\\uFCFD\",\n \"final\": \"\\uFD19\"\n },\n \"\\u0634\\u064A\": {\n \"isolated\": \"\\uFCFE\",\n \"final\": \"\\uFD1A\"\n },\n \"\\u062D\\u0649\": {\n \"isolated\": \"\\uFCFF\",\n \"final\": \"\\uFD1B\"\n },\n \"\\u062D\\u064A\": {\n \"isolated\": \"\\uFD00\",\n \"final\": \"\\uFD1C\"\n },\n \"\\u062C\\u0649\": {\n \"isolated\": \"\\uFD01\",\n \"final\": \"\\uFD1D\"\n },\n \"\\u062C\\u064A\": {\n \"isolated\": \"\\uFD02\",\n \"final\": \"\\uFD1E\"\n },\n \"\\u062E\\u0649\": {\n \"isolated\": \"\\uFD03\",\n \"final\": \"\\uFD1F\"\n },\n \"\\u062E\\u064A\": {\n \"isolated\": \"\\uFD04\",\n \"final\": \"\\uFD20\"\n },\n \"\\u0635\\u0649\": {\n \"isolated\": \"\\uFD05\",\n \"final\": \"\\uFD21\"\n },\n \"\\u0635\\u064A\": {\n \"isolated\": \"\\uFD06\",\n \"final\": \"\\uFD22\"\n },\n \"\\u0636\\u0649\": {\n \"isolated\": \"\\uFD07\",\n \"final\": \"\\uFD23\"\n },\n \"\\u0636\\u064A\": {\n \"isolated\": \"\\uFD08\",\n \"final\": \"\\uFD24\"\n },\n \"\\u0634\\u062C\": {\n \"isolated\": \"\\uFD09\",\n \"final\": \"\\uFD25\",\n \"initial\": \"\\uFD2D\",\n \"medial\": \"\\uFD37\"\n },\n \"\\u0634\\u062D\": {\n \"isolated\": \"\\uFD0A\",\n \"final\": \"\\uFD26\",\n \"initial\": \"\\uFD2E\",\n \"medial\": \"\\uFD38\"\n },\n \"\\u0634\\u062E\": {\n \"isolated\": \"\\uFD0B\",\n \"final\": \"\\uFD27\",\n \"initial\": \"\\uFD2F\",\n \"medial\": \"\\uFD39\"\n },\n \"\\u0634\\u0631\": {\n \"isolated\": \"\\uFD0D\",\n \"final\": \"\\uFD29\"\n },\n \"\\u0633\\u0631\": {\n \"isolated\": \"\\uFD0E\",\n \"final\": \"\\uFD2A\"\n },\n \"\\u0635\\u0631\": {\n \"isolated\": \"\\uFD0F\",\n \"final\": \"\\uFD2B\"\n },\n \"\\u0636\\u0631\": {\n \"isolated\": \"\\uFD10\",\n \"final\": \"\\uFD2C\"\n },\n \"\\u0633\\u0639\": {\n \"final\": \"\\uFD17\"\n },\n \"\\u062A\\u062C\\u0645\": {\n \"initial\": \"\\uFD50\"\n },\n \"\\u062A\\u062D\\u062C\": {\n \"final\": \"\\uFD51\",\n \"initial\": \"\\uFD52\"\n },\n \"\\u062A\\u062D\\u0645\": {\n \"initial\": \"\\uFD53\"\n },\n \"\\u062A\\u062E\\u0645\": {\n \"initial\": \"\\uFD54\"\n },\n \"\\u062A\\u0645\\u062C\": {\n \"initial\": \"\\uFD55\"\n },\n \"\\u062A\\u0645\\u062D\": {\n \"initial\": \"\\uFD56\"\n },\n \"\\u062A\\u0645\\u062E\": {\n \"initial\": \"\\uFD57\"\n },\n \"\\u062C\\u0645\\u062D\": {\n \"final\": \"\\uFD58\",\n \"initial\": \"\\uFD59\"\n },\n \"\\u062D\\u0645\\u064A\": {\n \"final\": \"\\uFD5A\"\n },\n \"\\u062D\\u0645\\u0649\": {\n \"final\": \"\\uFD5B\"\n },\n \"\\u0633\\u062D\\u062C\": {\n \"initial\": \"\\uFD5C\"\n },\n \"\\u0633\\u062C\\u062D\": {\n \"initial\": \"\\uFD5D\"\n },\n \"\\u0633\\u062C\\u0649\": {\n \"final\": \"\\uFD5E\"\n },\n \"\\u0633\\u0645\\u062D\": {\n \"final\": \"\\uFD5F\",\n \"initial\": \"\\uFD60\"\n },\n \"\\u0633\\u0645\\u062C\": {\n \"initial\": \"\\uFD61\"\n },\n \"\\u0633\\u0645\\u0645\": {\n \"final\": \"\\uFD62\",\n \"initial\": \"\\uFD63\"\n },\n \"\\u0635\\u062D\\u062D\": {\n \"final\": \"\\uFD64\",\n \"initial\": \"\\uFD65\"\n },\n \"\\u0635\\u0645\\u0645\": {\n \"final\": \"\\uFD66\",\n \"initial\": \"\\uFDC5\"\n },\n \"\\u0634\\u062D\\u0645\": {\n \"final\": \"\\uFD67\",\n \"initial\": \"\\uFD68\"\n },\n \"\\u0634\\u062C\\u064A\": {\n \"final\": \"\\uFD69\"\n },\n \"\\u0634\\u0645\\u062E\": {\n \"final\": \"\\uFD6A\",\n \"initial\": \"\\uFD6B\"\n },\n \"\\u0634\\u0645\\u0645\": {\n \"final\": \"\\uFD6C\",\n \"initial\": \"\\uFD6D\"\n },\n \"\\u0636\\u062D\\u0649\": {\n \"final\": \"\\uFD6E\"\n },\n \"\\u0636\\u062E\\u0645\": {\n \"final\": \"\\uFD6F\",\n \"initial\": \"\\uFD70\"\n },\n \"\\u0636\\u0645\\u062D\": {\n \"final\": \"\\uFD71\"\n },\n \"\\u0637\\u0645\\u062D\": {\n \"initial\": \"\\uFD72\"\n },\n \"\\u0637\\u0645\\u0645\": {\n \"initial\": \"\\uFD73\"\n },\n \"\\u0637\\u0645\\u064A\": {\n \"final\": \"\\uFD74\"\n },\n \"\\u0639\\u062C\\u0645\": {\n \"final\": \"\\uFD75\",\n \"initial\": \"\\uFDC4\"\n },\n \"\\u0639\\u0645\\u0645\": {\n \"final\": \"\\uFD76\",\n \"initial\": \"\\uFD77\"\n },\n \"\\u0639\\u0645\\u0649\": {\n \"final\": \"\\uFD78\"\n },\n \"\\u063A\\u0645\\u0645\": {\n \"final\": \"\\uFD79\"\n },\n \"\\u063A\\u0645\\u064A\": {\n \"final\": \"\\uFD7A\"\n },\n \"\\u063A\\u0645\\u0649\": {\n \"final\": \"\\uFD7B\"\n },\n \"\\u0641\\u062E\\u0645\": {\n \"final\": \"\\uFD7C\",\n \"initial\": \"\\uFD7D\"\n },\n \"\\u0642\\u0645\\u062D\": {\n \"final\": \"\\uFD7E\",\n \"initial\": \"\\uFDB4\"\n },\n \"\\u0642\\u0645\\u0645\": {\n \"final\": \"\\uFD7F\"\n },\n \"\\u0644\\u062D\\u0645\": {\n \"final\": \"\\uFD80\",\n \"initial\": \"\\uFDB5\"\n },\n \"\\u0644\\u062D\\u064A\": {\n \"final\": \"\\uFD81\"\n },\n \"\\u0644\\u062D\\u0649\": {\n \"final\": \"\\uFD82\"\n },\n \"\\u0644\\u062C\\u062C\": {\n \"initial\": \"\\uFD83\",\n \"final\": \"\\uFD84\"\n },\n \"\\u0644\\u062E\\u0645\": {\n \"final\": \"\\uFD85\",\n \"initial\": \"\\uFD86\"\n },\n \"\\u0644\\u0645\\u062D\": {\n \"final\": \"\\uFD87\",\n \"initial\": \"\\uFD88\"\n },\n \"\\u0645\\u062D\\u062C\": {\n \"initial\": \"\\uFD89\"\n },\n \"\\u0645\\u062D\\u0645\": {\n \"initial\": \"\\uFD8A\"\n },\n \"\\u0645\\u062D\\u064A\": {\n \"final\": \"\\uFD8B\"\n },\n \"\\u0645\\u062C\\u062D\": {\n \"initial\": \"\\uFD8C\"\n },\n \"\\u0645\\u062C\\u0645\": {\n \"initial\": \"\\uFD8D\"\n },\n \"\\u0645\\u062E\\u062C\": {\n \"initial\": \"\\uFD8E\"\n },\n \"\\u0645\\u062E\\u0645\": {\n \"initial\": \"\\uFD8F\"\n },\n \"\\u0645\\u062C\\u062E\": {\n \"initial\": \"\\uFD92\"\n },\n \"\\u0647\\u0645\\u062C\": {\n \"initial\": \"\\uFD93\"\n },\n \"\\u0647\\u0645\\u0645\": {\n \"initial\": \"\\uFD94\"\n },\n \"\\u0646\\u062D\\u0645\": {\n \"initial\": \"\\uFD95\"\n },\n \"\\u0646\\u062D\\u0649\": {\n \"final\": \"\\uFD96\"\n },\n \"\\u0646\\u062C\\u0645\": {\n \"final\": \"\\uFD97\",\n \"initial\": \"\\uFD98\"\n },\n \"\\u0646\\u062C\\u0649\": {\n \"final\": \"\\uFD99\"\n },\n \"\\u0646\\u0645\\u064A\": {\n \"final\": \"\\uFD9A\"\n },\n \"\\u0646\\u0645\\u0649\": {\n \"final\": \"\\uFD9B\"\n },\n \"\\u064A\\u0645\\u0645\": {\n \"final\": \"\\uFD9C\",\n \"initial\": \"\\uFD9D\"\n },\n \"\\u0628\\u062E\\u064A\": {\n \"final\": \"\\uFD9E\"\n },\n \"\\u062A\\u062C\\u064A\": {\n \"final\": \"\\uFD9F\"\n },\n \"\\u062A\\u062C\\u0649\": {\n \"final\": \"\\uFDA0\"\n },\n \"\\u062A\\u062E\\u064A\": {\n \"final\": \"\\uFDA1\"\n },\n \"\\u062A\\u062E\\u0649\": {\n \"final\": \"\\uFDA2\"\n },\n \"\\u062A\\u0645\\u064A\": {\n \"final\": \"\\uFDA3\"\n },\n \"\\u062A\\u0645\\u0649\": {\n \"final\": \"\\uFDA4\"\n },\n \"\\u062C\\u0645\\u064A\": {\n \"final\": \"\\uFDA5\"\n },\n \"\\u062C\\u062D\\u0649\": {\n \"final\": \"\\uFDA6\"\n },\n \"\\u062C\\u0645\\u0649\": {\n \"final\": \"\\uFDA7\"\n },\n \"\\u0633\\u062E\\u0649\": {\n \"final\": \"\\uFDA8\"\n },\n \"\\u0635\\u062D\\u064A\": {\n \"final\": \"\\uFDA9\"\n },\n \"\\u0634\\u062D\\u064A\": {\n \"final\": \"\\uFDAA\"\n },\n \"\\u0636\\u062D\\u064A\": {\n \"final\": \"\\uFDAB\"\n },\n \"\\u0644\\u062C\\u064A\": {\n \"final\": \"\\uFDAC\"\n },\n \"\\u0644\\u0645\\u064A\": {\n \"final\": \"\\uFDAD\"\n },\n \"\\u064A\\u062D\\u064A\": {\n \"final\": \"\\uFDAE\"\n },\n \"\\u064A\\u062C\\u064A\": {\n \"final\": \"\\uFDAF\"\n },\n \"\\u064A\\u0645\\u064A\": {\n \"final\": \"\\uFDB0\"\n },\n \"\\u0645\\u0645\\u064A\": {\n \"final\": \"\\uFDB1\"\n },\n \"\\u0642\\u0645\\u064A\": {\n \"final\": \"\\uFDB2\"\n },\n \"\\u0646\\u062D\\u064A\": {\n \"final\": \"\\uFDB3\"\n },\n \"\\u0639\\u0645\\u064A\": {\n \"final\": \"\\uFDB6\"\n },\n \"\\u0643\\u0645\\u064A\": {\n \"final\": \"\\uFDB7\"\n },\n \"\\u0646\\u062C\\u062D\": {\n \"initial\": \"\\uFDB8\",\n \"final\": \"\\uFDBD\"\n },\n \"\\u0645\\u062E\\u064A\": {\n \"final\": \"\\uFDB9\"\n },\n \"\\u0644\\u062C\\u0645\": {\n \"initial\": \"\\uFDBA\",\n \"final\": \"\\uFDBC\"\n },\n \"\\u0643\\u0645\\u0645\": {\n \"final\": \"\\uFDBB\",\n \"initial\": \"\\uFDC3\"\n },\n \"\\u062C\\u062D\\u064A\": {\n \"final\": \"\\uFDBE\"\n },\n \"\\u062D\\u062C\\u064A\": {\n \"final\": \"\\uFDBF\"\n },\n \"\\u0645\\u062C\\u064A\": {\n \"final\": \"\\uFDC0\"\n },\n \"\\u0641\\u0645\\u064A\": {\n \"final\": \"\\uFDC1\"\n },\n \"\\u0628\\u062D\\u064A\": {\n \"final\": \"\\uFDC2\"\n },\n \"\\u0633\\u062E\\u064A\": {\n \"final\": \"\\uFDC6\"\n },\n \"\\u0646\\u062C\\u064A\": {\n \"final\": \"\\uFDC7\"\n },\n \"\\u0644\\u0622\": {\n \"isolated\": \"\\uFEF5\",\n \"final\": \"\\uFEF6\"\n },\n \"\\u0644\\u0623\": {\n \"isolated\": \"\\uFEF7\",\n \"final\": \"\\uFEF8\"\n },\n \"\\u0644\\u0625\": {\n \"isolated\": \"\\uFEF9\",\n \"final\": \"\\uFEFA\"\n },\n \"\\u0644\\u0627\": {\n \"isolated\": \"\\uFEFB\",\n \"final\": \"\\uFEFC\"\n },\n \"words\": {\n \"\\u0635\\u0644\\u06D2\": \"\\uFDF0\",\n \"\\u0642\\u0644\\u06D2\": \"\\uFDF1\",\n \"\\u0627\\u0644\\u0644\\u0647\": \"\\uFDF2\",\n \"\\u0627\\u0643\\u0628\\u0631\": \"\\uFDF3\",\n \"\\u0645\\u062D\\u0645\\u062F\": \"\\uFDF4\",\n \"\\u0635\\u0644\\u0639\\u0645\": \"\\uFDF5\",\n \"\\u0631\\u0633\\u0648\\u0644\": \"\\uFDF6\",\n \"\\u0639\\u0644\\u064A\\u0647\": \"\\uFDF7\",\n \"\\u0648\\u0633\\u0644\\u0645\": \"\\uFDF8\",\n \"\\u0635\\u0644\\u0649\": \"\\uFDF9\",\n \"\\u0635\\u0644\\u0649\\u0627\\u0644\\u0644\\u0647\\u0639\\u0644\\u064A\\u0647\\u0648\\u0633\\u0644\\u0645\": \"\\uFDFA\",\n \"\\u062C\\u0644\\u062C\\u0644\\u0627\\u0644\\u0647\": \"\\uFDFB\",\n \"\\u0631\\u06CC\\u0627\\u0644\": \"\\uFDFC\"\n }\n};\nexports.default = ligatureReference;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst unicode_arabic_1 = require(\"./unicode-arabic\");\nconst unicode_ligatures_1 = require(\"./unicode-ligatures\");\nconst letterList = Object.keys(unicode_arabic_1.default);\nexports.letterList = letterList;\nconst ligatureList = Object.keys(unicode_ligatures_1.default);\nexports.ligatureList = ligatureList;\nconst ligatureWordList = Object.keys(unicode_ligatures_1.default.words);\nexports.ligatureWordList = ligatureWordList;\nconst lams = '\\u0644\\u06B5\\u06B6\\u06B7\\u06B8';\nexports.lams = lams;\nconst alefs = '\\u0627\\u0622\\u0623\\u0625\\u0671\\u0672\\u0673\\u0675\\u0773\\u0774';\nexports.alefs = alefs;\n// for (var l = 1; l < lams.length; l++) {\n// console.log('-');\n// for (var a = 0; a < alefs.length; a++) {\n// console.log(a + ': ' + lams[l] + alefs[a]);\n// }\n// }\nlet tashkeel = '\\u0605\\u0640\\u0670\\u0674\\u06DF\\u06E7\\u06E8';\nexports.tashkeel = tashkeel;\nfunction addToTashkeel(start, finish) {\n for (var i = start; i <= finish; i++) {\n exports.tashkeel = tashkeel += String.fromCharCode(i);\n }\n}\naddToTashkeel(0x0610, 0x061A);\naddToTashkeel(0x064B, 0x065F);\naddToTashkeel(0x06D6, 0x06DC);\naddToTashkeel(0x06E0, 0x06E4);\naddToTashkeel(0x06EA, 0x06ED);\naddToTashkeel(0x08D3, 0x08E1);\naddToTashkeel(0x08E3, 0x08FF);\naddToTashkeel(0xFE70, 0xFE7F);\nlet lineBreakers = '\\u0627\\u0629\\u0648\\u06C0\\u06CF\\u06FD\\u06FE\\u076B\\u076C\\u0771\\u0773\\u0774\\u0778\\u0779\\u08E2\\u08B1\\u08B2\\u08B9';\nexports.lineBreakers = lineBreakers;\nfunction addToLineBreakers(start, finish) {\n for (var i = start; i <= finish; i++) {\n exports.lineBreakers = lineBreakers += String.fromCharCode(i);\n }\n}\naddToLineBreakers(0x0600, 0x061F); // it's OK to include tashkeel in this range as it is ignored\naddToLineBreakers(0x0621, 0x0625);\naddToLineBreakers(0x062F, 0x0632);\naddToLineBreakers(0x0660, 0x066D); // numerals, math\naddToLineBreakers(0x0671, 0x0677);\naddToLineBreakers(0x0688, 0x0699);\naddToLineBreakers(0x06C3, 0x06CB);\naddToLineBreakers(0x06D2, 0x06F9);\naddToLineBreakers(0x0759, 0x075B);\naddToLineBreakers(0x08AA, 0x08AE);\naddToLineBreakers(0xFB50, 0xFDFD); // presentation forms look like they could connect, but never do\n// Presentation Forms A includes diacritics but they are meant to stand alone\naddToLineBreakers(0xFE80, 0xFEFC); // presentation forms look like they could connect, but never do\n// numerals, math\naddToLineBreakers(0x10E60, 0x10E7F);\naddToLineBreakers(0x1EC70, 0x1ECBF);\naddToLineBreakers(0x1EE00, 0x1EEFF);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isArabic_1 = require(\"./isArabic\");\nconst reference_1 = require(\"./reference\");\nfunction GlyphSplitter(word) {\n let letters = [];\n let lastLetter = '';\n word.split('').forEach((letter) => {\n if (isArabic_1.isArabic(letter)) {\n if (reference_1.tashkeel.indexOf(letter) > -1) {\n letters[letters.length - 1] += letter;\n }\n else if (lastLetter.length && ((reference_1.lams.indexOf(lastLetter) === 0 && reference_1.alefs.indexOf(letter) > -1) || (reference_1.lams.indexOf(lastLetter) > 0 && reference_1.alefs.indexOf(letter) === 0))) {\n // valid LA forms\n letters[letters.length - 1] += letter;\n }\n else {\n letters.push(letter);\n }\n }\n else {\n letters.push(letter);\n }\n if (reference_1.tashkeel.indexOf(letter) === -1) {\n lastLetter = letter;\n }\n });\n return letters;\n}\nexports.GlyphSplitter = GlyphSplitter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isArabic_1 = require(\"./isArabic\");\nconst reference_1 = require(\"./reference\");\nfunction BaselineSplitter(word) {\n let letters = [];\n let lastLetter = '';\n word.split('').forEach((letter) => {\n if (isArabic_1.isArabic(letter) && isArabic_1.isArabic(lastLetter)) {\n if (lastLetter.length && reference_1.tashkeel.indexOf(letter) > -1) {\n letters[letters.length - 1] += letter;\n }\n else if (reference_1.lineBreakers.indexOf(lastLetter) > -1) {\n letters.push(letter);\n }\n else {\n letters[letters.length - 1] += letter;\n }\n }\n else {\n letters.push(letter);\n }\n if (reference_1.tashkeel.indexOf(letter) === -1) {\n // don't allow tashkeel to hide line break\n lastLetter = letter;\n }\n });\n return letters;\n}\nexports.BaselineSplitter = BaselineSplitter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst unicode_arabic_1 = require(\"./unicode-arabic\");\nconst unicode_ligatures_1 = require(\"./unicode-ligatures\");\nconst isArabic_1 = require(\"./isArabic\");\nconst reference_1 = require(\"./reference\");\nfunction Normal(word, breakPresentationForm) {\n // default is to turn initial/isolated/medial/final presentation form to generic\n if (typeof breakPresentationForm === 'undefined') {\n breakPresentationForm = true;\n }\n let returnable = '';\n word.split('').forEach((letter) => {\n if (!isArabic_1.isArabic(letter)) {\n returnable += letter;\n return;\n }\n for (let w = 0; w < reference_1.letterList.length; w++) {\n // ok so we are checking this potential lettertron\n let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];\n let versions = Object.keys(letterForms);\n for (let v = 0; v < versions.length; v++) {\n let localVersion = letterForms[versions[v]];\n if (typeof localVersion === 'object' && typeof localVersion.indexOf === 'undefined') {\n // look at this embedded object\n let embeddedForms = Object.keys(localVersion);\n for (let ef = 0; ef < embeddedForms.length; ef++) {\n let form = localVersion[embeddedForms[ef]];\n if (form === letter || (typeof form === 'object' && form.indexOf && form.indexOf(letter) > -1)) {\n // match\n // console.log('embedded match');\n if (form === letter) {\n // match exact\n if (breakPresentationForm && localVersion['normal'] && ['isolated', 'initial', 'medial', 'final'].indexOf(embeddedForms[ef]) > -1) {\n // replace presentation form\n // console.log('keeping normal form of the letter');\n if (typeof localVersion['normal'] === 'object') {\n returnable += localVersion['normal'][0];\n }\n else {\n returnable += localVersion['normal'];\n }\n return;\n }\n // console.log('keeping this letter');\n returnable += letter;\n return;\n }\n else if (typeof form === 'object' && form.indexOf && form.indexOf(letter) > -1) {\n // match\n returnable += form[0];\n // console.log('added the first letter from the same array');\n return;\n }\n }\n }\n }\n else if (localVersion === letter) {\n // match exact\n if (breakPresentationForm && letterForms['normal'] && ['isolated', 'initial', 'medial', 'final'].indexOf(versions[v]) > -1) {\n // replace presentation form\n // console.log('keeping normal form of the letter');\n if (typeof letterForms['normal'] === 'object') {\n returnable += letterForms['normal'][0];\n }\n else {\n returnable += letterForms['normal'];\n }\n return;\n }\n // console.log('keeping this letter');\n returnable += letter;\n return;\n }\n else if (typeof localVersion === 'object' && localVersion.indexOf && localVersion.indexOf(letter) > -1) {\n // match\n returnable += localVersion[0];\n // console.log('added the first letter from the same array');\n return;\n }\n }\n }\n // try ligatures\n for (let v2 = 0; v2 < reference_1.ligatureList.length; v2++) {\n let normalForm = reference_1.ligatureList[v2];\n if (normalForm !== 'words') {\n let ligForms = Object.keys(unicode_ligatures_1.default[normalForm]);\n for (let f = 0; f < ligForms.length; f++) {\n if (unicode_ligatures_1.default[normalForm][ligForms[f]] === letter) {\n returnable += normalForm;\n return;\n }\n }\n }\n }\n // try words ligatures\n for (let v3 = 0; v3 < reference_1.ligatureWordList.length; v3++) {\n let normalForm = reference_1.ligatureWordList[v3];\n if (unicode_ligatures_1.default.words[normalForm] === letter) {\n returnable += normalForm;\n return;\n }\n }\n returnable += letter;\n // console.log('kept the letter')\n });\n return returnable;\n}\nexports.Normal = Normal;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst unicode_arabic_1 = require(\"./unicode-arabic\");\nconst isArabic_1 = require(\"./isArabic\");\nconst reference_1 = require(\"./reference\");\nfunction CharShaper(letter, form) {\n if (!isArabic_1.isArabic(letter)) {\n // fail not Arabic\n throw new Error('Not Arabic');\n }\n if (letter === \"\\u0621\") {\n // hamza alone\n return \"\\u0621\";\n }\n for (let w = 0; w < reference_1.letterList.length; w++) {\n // ok so we are checking this potential lettertron\n let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];\n let versions = Object.keys(letterForms);\n for (let v = 0; v < versions.length; v++) {\n let localVersion = letterForms[versions[v]];\n if ((localVersion === letter) ||\n (typeof localVersion === 'object' && localVersion.indexOf && localVersion.indexOf(letter) > -1)) {\n if (versions.indexOf(form) > -1) {\n return letterForms[form];\n }\n }\n else if (typeof localVersion === 'object' && typeof localVersion.indexOf === 'undefined') {\n // check embedded\n let embeddedVersions = Object.keys(localVersion);\n for (let ev = 0; ev < embeddedVersions.length; ev++) {\n if ((localVersion[embeddedVersions[ev]] === letter) ||\n (typeof localVersion[embeddedVersions[ev]] === 'object' && localVersion[embeddedVersions[ev]].indexOf && localVersion[embeddedVersions[ev]].indexOf(letter) > -1)) {\n if (embeddedVersions.indexOf(form) > -1) {\n return localVersion[form];\n }\n }\n }\n }\n }\n }\n}\nexports.CharShaper = CharShaper;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isArabic_1 = require(\"./isArabic\");\nconst reference_1 = require(\"./reference\");\nconst CharShaper_1 = require(\"./CharShaper\");\nconst unicode_ligatures_1 = require(\"./unicode-ligatures\");\nfunction WordShaper(word) {\n let state = 'initial';\n let output = '';\n for (let w = 0; w < word.length; w++) {\n let nextLetter = ' ';\n for (let nxw = w + 1; nxw < word.length; nxw++) {\n if (!isArabic_1.isArabic(word[nxw])) {\n break;\n }\n if (reference_1.tashkeel.indexOf(word[nxw]) === -1) {\n nextLetter = word[nxw];\n break;\n }\n }\n if (!isArabic_1.isArabic(word[w]) || isArabic_1.isMath(word[w])) {\n // space or other non-Arabic\n output += word[w];\n state = 'initial';\n }\n else if (reference_1.tashkeel.indexOf(word[w]) > -1) {\n // tashkeel - add without changing state\n output += word[w];\n }\n else if ((nextLetter === ' ') // last Arabic letter in this word\n || (reference_1.lineBreakers.indexOf(word[w]) > -1)) { // the current letter is known to break lines\n output += CharShaper_1.CharShaper(word[w], state === 'initial' ? 'isolated' : 'final');\n state = 'initial';\n }\n else if (reference_1.lams.indexOf(word[w]) > -1 && reference_1.alefs.indexOf(nextLetter) > -1) {\n // LA letters - advance an additional letter after this\n output += unicode_ligatures_1.default[word[w] + nextLetter][(state === 'initial' ? 'isolated' : 'final')];\n while (word[w] !== nextLetter) {\n w++;\n }\n state = 'initial';\n }\n else {\n output += CharShaper_1.CharShaper(word[w], state);\n state = 'medial';\n }\n }\n return output;\n}\nexports.WordShaper = WordShaper;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst unicode_arabic_1 = require(\"./unicode-arabic\");\nconst isArabic_1 = require(\"./isArabic\");\nconst reference_1 = require(\"./reference\");\nfunction ParentLetter(letter) {\n if (!isArabic_1.isArabic(letter)) {\n throw new Error('Not an Arabic letter');\n }\n for (let w = 0; w < reference_1.letterList.length; w++) {\n // ok so we are checking this potential lettertron\n let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];\n let versions = Object.keys(letterForms);\n for (let v = 0; v < versions.length; v++) {\n let localVersion = letterForms[versions[v]];\n if (typeof localVersion === 'object' && typeof localVersion.indexOf === 'undefined') {\n // look at this embedded object\n let embeddedForms = Object.keys(localVersion);\n for (let ef = 0; ef < embeddedForms.length; ef++) {\n let form = localVersion[embeddedForms[ef]];\n if (form === letter || (typeof form === 'object' && form.indexOf && form.indexOf(letter) > -1)) {\n // match\n return localVersion;\n }\n }\n }\n else if (localVersion === letter || (typeof localVersion === 'object' && localVersion.indexOf && localVersion.indexOf(letter) > -1)) {\n // match\n return letterForms;\n }\n }\n return null;\n }\n}\nexports.ParentLetter = ParentLetter;\nfunction GrandparentLetter(letter) {\n if (!isArabic_1.isArabic(letter)) {\n throw new Error('Not an Arabic letter');\n }\n for (let w = 0; w < reference_1.letterList.length; w++) {\n // ok so we are checking this potential lettertron\n let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];\n let versions = Object.keys(letterForms);\n for (let v = 0; v < versions.length; v++) {\n let localVersion = letterForms[versions[v]];\n if (typeof localVersion === 'object' && typeof localVersion.indexOf === 'undefined') {\n // look at this embedded object\n let embeddedForms = Object.keys(localVersion);\n for (let ef = 0; ef < embeddedForms.length; ef++) {\n let form = localVersion[embeddedForms[ef]];\n if (form === letter || (typeof form === 'object' && form.indexOf && form.indexOf(letter) > -1)) {\n // match\n return letterForms;\n }\n }\n }\n else if (localVersion === letter || (typeof localVersion === 'object' && localVersion.indexOf && localVersion.indexOf(letter) > -1)) {\n // match\n return letterForms;\n }\n }\n return null;\n }\n}\nexports.GrandparentLetter = GrandparentLetter;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArabic_1 = require(\"./isArabic\");\nexports.isArabic = isArabic_1.isArabic;\nvar GlyphSplitter_1 = require(\"./GlyphSplitter\");\nexports.GlyphSplitter = GlyphSplitter_1.GlyphSplitter;\nvar BaselineSplitter_1 = require(\"./BaselineSplitter\");\nexports.BaselineSplitter = BaselineSplitter_1.BaselineSplitter;\nvar Normalization_1 = require(\"./Normalization\");\nexports.Normal = Normalization_1.Normal;\nvar CharShaper_1 = require(\"./CharShaper\");\nexports.CharShaper = CharShaper_1.CharShaper;\nvar WordShaper_1 = require(\"./WordShaper\");\nexports.WordShaper = WordShaper_1.WordShaper;\nvar ParentLetter_1 = require(\"./ParentLetter\");\nexports.ParentLetter = ParentLetter_1.ParentLetter;\nexports.GrandparentLetter = ParentLetter_1.GrandparentLetter;\n", "(function (window) {\r\n 'use strict';\r\n function parseVersion(v) {\r\n var m = v.replace(/[^0-9.]/g, '').match(/[0-9]*\\.|[0-9]+/g) || [];\r\n v = {\r\n major: +m[0] || 0,\r\n minor: +m[1] || 0,\r\n patch: +m[2] || 0,\r\n build: +m[3] || 0\r\n };\r\n v.isEmpty = !v.major && !v.minor && !v.patch && !v.build;\r\n v.parsed = [v.major, v.minor, v.patch, v.build];\r\n v.text = v.parsed.join('.');\r\n v.compare = compare;\r\n return v;\r\n }\r\n\r\n function compare(v) {\r\n if (typeof v === 'string') {\r\n v = parseVersion(v);\r\n }\r\n for (var i = 0; i < 4; i++) {\r\n if (this.parsed[i] !== v.parsed[i]) {\r\n return this.parsed[i] > v.parsed[i] ? 1 : -1;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (typeof module === 'object' && module && typeof module.exports === 'object') {\r\n module.exports = parseVersion;\r\n }\r\n else {\r\n window.parseVersion = parseVersion;\r\n }\r\n})(this);\r\n", "(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.quickselect = factory());\n}(this, (function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nreturn quickselect;\n\n})));\n", "'use strict';\n\nmodule.exports = rbush;\nmodule.exports.default = rbush;\n\nvar quickselect = require('quickselect');\n\nfunction rbush(maxEntries, format) {\n if (!(this instanceof rbush)) return new rbush(maxEntries, format);\n\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries || 9);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n\n if (format) {\n this._initFormat(format);\n }\n\n this.clear();\n}\n\nrbush.prototype = {\n\n all: function () {\n return this._all(this.data, []);\n },\n\n search: function (bbox) {\n\n var node = this.data,\n result = [],\n toBBox = this.toBBox;\n\n if (!intersects(bbox, node)) return result;\n\n var nodesToSearch = [],\n i, len, child, childBBox;\n\n while (node) {\n for (i = 0, len = node.children.length; i < len; i++) {\n\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) result.push(child);\n else if (contains(bbox, childBBox)) this._all(child, result);\n else nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n },\n\n collides: function (bbox) {\n\n var node = this.data,\n toBBox = this.toBBox;\n\n if (!intersects(bbox, node)) return false;\n\n var nodesToSearch = [],\n i, len, child, childBBox;\n\n while (node) {\n for (i = 0, len = node.children.length; i < len; i++) {\n\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) return true;\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n },\n\n load: function (data) {\n if (!(data && data.length)) return this;\n\n if (data.length < this._minEntries) {\n for (var i = 0, len = data.length; i < len; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n },\n\n insert: function (item) {\n if (item) this._insert(item, this.data.height - 1);\n return this;\n },\n\n clear: function () {\n this.data = createNode([]);\n return this;\n },\n\n remove: function (item, equalsFn) {\n if (!item) return this;\n\n var node = this.data,\n bbox = this.toBBox(item),\n path = [],\n indexes = [],\n i, parent, index, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else node = null; // nothing found\n }\n\n return this;\n },\n\n toBBox: function (item) { return item; },\n\n compareMinX: compareNodeMinX,\n compareMinY: compareNodeMinY,\n\n toJSON: function () { return this.data; },\n\n fromJSON: function (data) {\n this.data = data;\n return this;\n },\n\n _all: function (node, result) {\n var nodesToSearch = [];\n while (node) {\n if (node.leaf) result.push.apply(result, node.children);\n else nodesToSearch.push.apply(nodesToSearch, node.children);\n\n node = nodesToSearch.pop();\n }\n return result;\n },\n\n _build: function (items, left, right, height) {\n\n var N = right - left + 1,\n M = this._maxEntries,\n node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n var N2 = Math.ceil(N / M),\n N1 = N2 * Math.ceil(Math.sqrt(M)),\n i, j, right2, right3;\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (i = left; i <= right; i += N1) {\n\n right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (j = i; j <= right2; j += N2) {\n\n right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n },\n\n _chooseSubtree: function (bbox, node, level, path) {\n\n var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;\n\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) break;\n\n minArea = minEnlargement = Infinity;\n\n for (i = 0, len = node.children.length; i < len; i++) {\n child = node.children[i];\n area = bboxArea(child);\n enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n },\n\n _insert: function (item, level, isNode) {\n\n var toBBox = this.toBBox,\n bbox = isNode ? item : toBBox(item),\n insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else break;\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n },\n\n // split overflowed node into two\n _split: function (insertPath, level) {\n\n var node = insertPath[level],\n M = node.children.length,\n m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n var splitIndex = this._chooseSplitIndex(node, m, M);\n\n var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) insertPath[level - 1].children.push(newNode);\n else this._splitRoot(node, newNode);\n },\n\n _splitRoot: function (node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n },\n\n _chooseSplitIndex: function (node, m, M) {\n\n var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;\n\n minOverlap = minArea = Infinity;\n\n for (i = m; i <= M - m; i++) {\n bbox1 = distBBox(node, 0, i, this.toBBox);\n bbox2 = distBBox(node, i, M, this.toBBox);\n\n overlap = intersectionArea(bbox1, bbox2);\n area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index;\n },\n\n // sorts node children by the best axis for split\n _chooseSplitAxis: function (node, m, M) {\n\n var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,\n compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,\n xMargin = this._allDistMargin(node, m, M, compareMinX),\n yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) node.children.sort(compareMinX);\n },\n\n // total margin of all possible split distributions where each node is at least m full\n _allDistMargin: function (node, m, M, compare) {\n\n node.children.sort(compare);\n\n var toBBox = this.toBBox,\n leftBBox = distBBox(node, 0, m, toBBox),\n rightBBox = distBBox(node, M - m, M, toBBox),\n margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),\n i, child;\n\n for (i = m; i < M - m; i++) {\n child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (i = M - m - 1; i >= m; i--) {\n child = node.children[i];\n extend(rightBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n },\n\n _adjustParentBBoxes: function (bbox, path, level) {\n // adjust bboxes along the given tree path\n for (var i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n },\n\n _condense: function (path) {\n // go through the path, removing empty nodes and updating bboxes\n for (var i = path.length - 1, siblings; i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else this.clear();\n\n } else calcBBox(path[i], this.toBBox);\n }\n },\n\n _initFormat: function (format) {\n // data format (minX, minY, maxX, maxY accessors)\n\n // uses eval-type function compilation instead of just accepting a toBBox function\n // because the algorithms are very sensitive to sorting functions performance,\n // so they should be dead simple and without inner calls\n\n var compareArr = ['return a', ' - b', ';'];\n\n this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));\n this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));\n\n this.toBBox = new Function('a',\n 'return {minX: a' + format[0] +\n ', minY: a' + format[1] +\n ', maxX: a' + format[2] +\n ', maxY: a' + format[3] + '};');\n }\n};\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) return items.indexOf(item);\n\n for (var i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) return i;\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) destNode = createNode(null);\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (var i = k, child; i < p; i++) {\n child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX),\n minY = Math.max(a.minY, b.minY),\n maxX = Math.min(a.maxX, b.maxX),\n maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n var stack = [left, right],\n mid;\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) continue;\n\n mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n", "'use strict';\n\nmodule.exports = lineclip;\n\nlineclip.polyline = lineclip;\nlineclip.polygon = polygonclip;\n\n\n// Cohen-Sutherland line clippign algorithm, adapted to efficiently\n// handle polylines rather than just segments\n\nfunction lineclip(points, bbox, result) {\n\n var len = points.length,\n codeA = bitCode(points[0], bbox),\n part = [],\n i, a, b, codeB, lastCode;\n\n if (!result) result = [];\n\n for (i = 1; i < len; i++) {\n a = points[i - 1];\n b = points[i];\n codeB = lastCode = bitCode(b, bbox);\n\n while (true) {\n\n if (!(codeA | codeB)) { // accept\n part.push(a);\n\n if (codeB !== lastCode) { // segment went outside\n part.push(b);\n\n if (i < len - 1) { // start a new line\n result.push(part);\n part = [];\n }\n } else if (i === len - 1) {\n part.push(b);\n }\n break;\n\n } else if (codeA & codeB) { // trivial reject\n break;\n\n } else if (codeA) { // a outside, intersect with clip edge\n a = intersect(a, b, codeA, bbox);\n codeA = bitCode(a, bbox);\n\n } else { // b outside\n b = intersect(a, b, codeB, bbox);\n codeB = bitCode(b, bbox);\n }\n }\n\n codeA = lastCode;\n }\n\n if (part.length) result.push(part);\n\n return result;\n}\n\n// Sutherland-Hodgeman polygon clipping algorithm\n\nfunction polygonclip(points, bbox) {\n\n var result, edge, prev, prevInside, i, p, inside;\n\n // clip against each side of the clip rectangle\n for (edge = 1; edge <= 8; edge *= 2) {\n result = [];\n prev = points[points.length - 1];\n prevInside = !(bitCode(prev, bbox) & edge);\n\n for (i = 0; i < points.length; i++) {\n p = points[i];\n inside = !(bitCode(p, bbox) & edge);\n\n // if segment goes through the clip window, add an intersection\n if (inside !== prevInside) result.push(intersect(prev, p, edge, bbox));\n\n if (inside) result.push(p); // add a point if it's inside\n\n prev = p;\n prevInside = inside;\n }\n\n points = result;\n\n if (!points.length) break;\n }\n\n return result;\n}\n\n// intersect a segment against one of the 4 lines that make up the bbox\n\nfunction intersect(a, b, edge, bbox) {\n return edge & 8 ? [a[0] + (b[0] - a[0]) * (bbox[3] - a[1]) / (b[1] - a[1]), bbox[3]] : // top\n edge & 4 ? [a[0] + (b[0] - a[0]) * (bbox[1] - a[1]) / (b[1] - a[1]), bbox[1]] : // bottom\n edge & 2 ? [bbox[2], a[1] + (b[1] - a[1]) * (bbox[2] - a[0]) / (b[0] - a[0])] : // right\n edge & 1 ? [bbox[0], a[1] + (b[1] - a[1]) * (bbox[0] - a[0]) / (b[0] - a[0])] : // left\n null;\n}\n\n// bit code reflects the point position relative to the bbox:\n\n// left mid right\n// top 1001 1000 1010\n// mid 0001 0000 0010\n// bottom 0101 0100 0110\n\nfunction bitCode(p, bbox) {\n var code = 0;\n\n if (p[0] < bbox[0]) code |= 1; // left\n else if (p[0] > bbox[2]) code |= 2; // right\n\n if (p[1] < bbox[1]) code |= 4; // bottom\n else if (p[1] > bbox[3]) code |= 8; // top\n\n return code;\n}\n", "'use strict';\n\nvar rbush = require('rbush');\nvar lineclip = require('lineclip');\n\nmodule.exports = whichPolygon;\n\nfunction whichPolygon(data) {\n var bboxes = [];\n for (var i = 0; i < data.features.length; i++) {\n var feature = data.features[i];\n\n // unlocated GeoJSON features can have null `geometry`\n if (!feature.geometry) continue;\n\n var coords = feature.geometry.coordinates;\n\n if (feature.geometry.type === 'Polygon') {\n bboxes.push(treeItem(coords, feature.properties));\n\n } else if (feature.geometry.type === 'MultiPolygon') {\n for (var j = 0; j < coords.length; j++) {\n bboxes.push(treeItem(coords[j], feature.properties));\n }\n }\n }\n\n var tree = rbush().load(bboxes);\n\n function query(p, multi) {\n var output = [],\n result = tree.search({\n minX: p[0],\n minY: p[1],\n maxX: p[0],\n maxY: p[1]\n });\n for (var i = 0; i < result.length; i++) {\n if (insidePolygon(result[i].coords, p)) {\n if (multi)\n output.push(result[i].props);\n else\n return result[i].props;\n }\n }\n return multi && output.length ? output : null;\n }\n\n query.tree = tree;\n query.bbox = function queryBBox(bbox) {\n var output = [];\n var result = tree.search({\n minX: bbox[0],\n minY: bbox[1],\n maxX: bbox[2],\n maxY: bbox[3]\n });\n for (var i = 0; i < result.length; i++) {\n if (polygonIntersectsBBox(result[i].coords, bbox)) {\n output.push(result[i].props);\n }\n }\n return output;\n };\n\n return query;\n}\n\nfunction polygonIntersectsBBox(polygon, bbox) {\n var bboxCenter = [\n (bbox[0] + bbox[2]) / 2,\n (bbox[1] + bbox[3]) / 2\n ];\n if (insidePolygon(polygon, bboxCenter)) return true;\n for (var i = 0; i < polygon.length; i++) {\n if (lineclip(polygon[i], bbox).length > 0) return true;\n }\n return false;\n}\n\n// ray casting algorithm for detecting if point is in polygon\nfunction insidePolygon(rings, p) {\n var inside = false;\n for (var i = 0, len = rings.length; i < len; i++) {\n var ring = rings[i];\n for (var j = 0, len2 = ring.length, k = len2 - 1; j < len2; k = j++) {\n if (rayIntersect(p, ring[j], ring[k])) inside = !inside;\n }\n }\n return inside;\n}\n\nfunction rayIntersect(p, p1, p2) {\n return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\n\nfunction treeItem(coords, props) {\n var item = {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity,\n coords: coords,\n props: props\n };\n\n for (var i = 0; i < coords[0].length; i++) {\n var p = coords[0][i];\n item.minX = Math.min(item.minX, p[0]);\n item.minY = Math.min(item.minY, p[1]);\n item.maxX = Math.max(item.maxX, p[0]);\n item.maxY = Math.max(item.maxY, p[1]);\n }\n return item;\n}\n", "module.exports.RADIUS = 6378137;\nmodule.exports.FLATTENING = 1/298.257223563;\nmodule.exports.POLAR_RADIUS = 6356752.3142;\n", "var wgs84 = require('wgs84');\n\nmodule.exports.geometry = geometry;\nmodule.exports.ring = ringArea;\n\nfunction geometry(_) {\n var area = 0, i;\n switch (_.type) {\n case 'Polygon':\n return polygonArea(_.coordinates);\n case 'MultiPolygon':\n for (i = 0; i < _.coordinates.length; i++) {\n area += polygonArea(_.coordinates[i]);\n }\n return area;\n case 'Point':\n case 'MultiPoint':\n case 'LineString':\n case 'MultiLineString':\n return 0;\n case 'GeometryCollection':\n for (i = 0; i < _.geometries.length; i++) {\n area += geometry(_.geometries[i]);\n }\n return area;\n }\n}\n\nfunction polygonArea(coords) {\n var area = 0;\n if (coords && coords.length > 0) {\n area += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n area -= Math.abs(ringArea(coords[i]));\n }\n }\n return area;\n}\n\n/**\n * Calculate the approximate area of the polygon were it projected onto\n * the earth. Note that this area will be positive if ring is oriented\n * clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * Returns:\n * {float} The approximate signed geodesic area of the polygon in square\n * meters.\n */\n\nfunction ringArea(coords) {\n var p1, p2, p3, lowerIndex, middleIndex, upperIndex, i,\n area = 0,\n coordsLength = coords.length;\n\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {// i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength -1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {// i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else { // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i+1;\n upperIndex = i+2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n area += ( rad(p3[0]) - rad(p1[0]) ) * Math.sin( rad(p2[1]));\n }\n\n area = area * wgs84.RADIUS * wgs84.RADIUS / 2;\n }\n\n return area;\n}\n\nfunction rad(_) {\n return _ * Math.PI / 180;\n}", "exports.validateCenter = function validateCenter(center) {\n var validCenterLengths = [2, 3];\n if (!Array.isArray(center) || !validCenterLengths.includes(center.length)) {\n throw new Error(\"ERROR! Center has to be an array of length two or three\");\n }\n\n var [lng, lat] = center;\n if (typeof lng !== \"number\" || typeof lat !== \"number\") {\n throw new Error(\n `ERROR! Longitude and Latitude has to be numbers but where ${typeof lng} and ${typeof lat}`\n );\n }\n if (lng > 180 || lng < -180) {\n throw new Error(`ERROR! Longitude has to be between -180 and 180 but was ${lng}`);\n }\n\n if (lat > 90 || lat < -90) {\n throw new Error(`ERROR! Latitude has to be between -90 and 90 but was ${lat}`);\n }\n};\n", "exports.validateRadius = function validateRadius(radius) {\n if (typeof radius !== \"number\") {\n throw new Error(`ERROR! Radius has to be a positive number but was: ${typeof radius}`);\n }\n\n if (radius <= 0) {\n throw new Error(`ERROR! Radius has to be a positive number but was: ${radius}`);\n }\n};\n", "exports.validateNumberOfEdges = function validateNumberOfEdges(numberOfEdges) {\n if (typeof numberOfEdges !== \"number\") {\n const ARGUMENT_TYPE = Array.isArray(numberOfEdges) ? \"array\" : typeof numberOfEdges;\n throw new Error(`ERROR! Number of edges has to be a number but was: ${ARGUMENT_TYPE}`);\n }\n\n if (numberOfEdges < 3) {\n throw new Error(`ERROR! Number of edges has to be at least 3 but was: ${numberOfEdges}`);\n }\n};\n", "exports.validateEarthRadius = function validateEarthRadius(earthRadius) {\n if (typeof earthRadius !== \"number\") {\n const ARGUMENT_TYPE = Array.isArray(earthRadius) ? \"array\" : typeof earthRadius;\n throw new Error(`ERROR! Earth radius has to be a number but was: ${ARGUMENT_TYPE}`);\n }\n\n if (earthRadius <= 0) {\n throw new Error(`ERROR! Earth radius has to be a positive number but was: ${earthRadius}`);\n }\n};\n", "exports.validateBearing = function validateBearing(bearing) {\n if (typeof bearing !== \"number\") {\n const ARGUMENT_TYPE = Array.isArray(bearing) ? \"array\" : typeof bearing;\n throw new Error(`ERROR! Bearing has to be a number but was: ${ARGUMENT_TYPE}`);\n }\n};\n", "var validateCenter = require(\"./validateCenter\").validateCenter;\nvar validateRadius = require(\"./validateRadius\").validateRadius;\nvar validateNumberOfEdges = require(\"./validateNumberOfEdges\").validateNumberOfEdges;\nvar validateEarthRadius = require(\"./validateEarthRadius\").validateEarthRadius;\nvar validateBearing = require(\"./validateBearing\").validateBearing;\n\nfunction validateInput({ center, radius, numberOfEdges, earthRadius, bearing }) {\n validateCenter(center);\n validateRadius(radius);\n validateNumberOfEdges(numberOfEdges);\n validateEarthRadius(earthRadius);\n validateBearing(bearing);\n}\n\nexports.validateCenter = validateCenter;\nexports.validateRadius = validateRadius;\nexports.validateNumberOfEdges = validateNumberOfEdges;\nexports.validateEarthRadius = validateEarthRadius;\nexports.validateBearing = validateBearing;\nexports.validateInput = validateInput;\n", "\"use strict\";\nvar { validateInput } = require(\"./input-validation\");\n\nconst defaultEarthRadius = 6378137; // equatorial Earth radius\n\nfunction toRadians(angleInDegrees) {\n return (angleInDegrees * Math.PI) / 180;\n}\n\nfunction toDegrees(angleInRadians) {\n return (angleInRadians * 180) / Math.PI;\n}\n\nfunction offset(c1, distance, earthRadius, bearing) {\n var lat1 = toRadians(c1[1]);\n var lon1 = toRadians(c1[0]);\n var dByR = distance / earthRadius;\n var lat = Math.asin(\n Math.sin(lat1) * Math.cos(dByR) + Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing)\n );\n var lon =\n lon1 +\n Math.atan2(\n Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1),\n Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat)\n );\n return [toDegrees(lon), toDegrees(lat)];\n}\n\nmodule.exports = function circleToPolygon(center, radius, options) {\n var n = getNumberOfEdges(options);\n var earthRadius = getEarthRadius(options);\n var bearing = getBearing(options);\n var direction = getDirection(options);\n\n // validateInput() throws error on invalid input and do nothing on valid input\n validateInput({ center, radius, numberOfEdges: n, earthRadius, bearing });\n\n var start = toRadians(bearing);\n var coordinates = [];\n for (var i = 0; i < n; ++i) {\n coordinates.push(\n offset(\n center, radius, earthRadius, start + (direction * 2 * Math.PI * -i) / n\n )\n );\n }\n coordinates.push(coordinates[0]);\n\n return {\n type: \"Polygon\",\n coordinates: [coordinates]\n };\n};\n\nfunction getNumberOfEdges(options) {\n if (isUndefinedOrNull(options)) {\n return 32;\n } else if (isObjectNotArray(options)) {\n var numberOfEdges = options.numberOfEdges;\n return numberOfEdges === undefined ? 32 : numberOfEdges;\n }\n return options;\n}\n\nfunction getEarthRadius(options) {\n if (isUndefinedOrNull(options)) {\n return defaultEarthRadius;\n } else if (isObjectNotArray(options)) {\n var earthRadius = options.earthRadius;\n return earthRadius === undefined ? defaultEarthRadius : earthRadius;\n }\n return defaultEarthRadius;\n}\n\nfunction getDirection(options){\n if (isObjectNotArray(options) && options.rightHandRule){\n return -1;\n }\n return 1;\n}\n\nfunction getBearing(options) {\n if (isUndefinedOrNull(options)) {\n return 0;\n } else if (isObjectNotArray(options)) {\n var bearing = options.bearing;\n return bearing === undefined ? 0 : bearing;\n }\n return 0;\n}\n\nfunction isObjectNotArray(argument) {\n return argument !== null && typeof argument === \"object\" && !Array.isArray(argument);\n}\n\nfunction isUndefinedOrNull(argument) {\n return argument === null || argument === undefined;\n}\n", "(function() {\n\n function parse(t, coordinatePrecision, extrasPrecision) {\n\n function point(p) {\n return p.map(function(e, index) {\n if (index < 2) {\n return 1 * e.toFixed(coordinatePrecision);\n } else {\n return 1 * e.toFixed(extrasPrecision);\n }\n });\n }\n\n function multi(l) {\n return l.map(point);\n }\n\n function poly(p) {\n return p.map(multi);\n }\n\n function multiPoly(m) {\n return m.map(poly);\n }\n\n function geometry(obj) {\n if (!obj) {\n return {};\n }\n \n switch (obj.type) {\n case \"Point\":\n obj.coordinates = point(obj.coordinates);\n return obj;\n case \"LineString\":\n case \"MultiPoint\":\n obj.coordinates = multi(obj.coordinates);\n return obj;\n case \"Polygon\":\n case \"MultiLineString\":\n obj.coordinates = poly(obj.coordinates);\n return obj;\n case \"MultiPolygon\":\n obj.coordinates = multiPoly(obj.coordinates);\n return obj;\n case \"GeometryCollection\":\n obj.geometries = obj.geometries.map(geometry);\n return obj;\n default :\n return {};\n }\n }\n\n function feature(obj) {\n obj.geometry = geometry(obj.geometry);\n return obj\n }\n\n function featureCollection(f) {\n f.features = f.features.map(feature);\n return f;\n }\n\n function geometryCollection(g) {\n g.geometries = g.geometries.map(geometry);\n return g;\n }\n\n if (!t) {\n return t;\n }\n\n switch (t.type) {\n case \"Feature\":\n return feature(t);\n case \"GeometryCollection\" :\n return geometryCollection(t);\n case \"FeatureCollection\" :\n return featureCollection(t);\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n case \"MultiPoint\":\n case \"MultiPolygon\":\n case \"MultiLineString\":\n return geometry(t);\n default :\n return t;\n }\n \n }\n\n module.exports = parse;\n module.exports.parse = parse;\n\n}());\n \n", "function isObject (obj) {\n return typeof obj === 'object' && obj !== null\n}\n\nfunction forEach (obj, cb) {\n if (Array.isArray(obj)) {\n obj.forEach(cb)\n } else if (isObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var val = obj[key]\n cb(val, key)\n })\n }\n}\n\nfunction getTreeDepth (obj) {\n var depth = 0\n\n if (Array.isArray(obj) || isObject(obj)) {\n forEach(obj, function (val) {\n if (Array.isArray(val) || isObject(val)) {\n var tmpDepth = getTreeDepth(val)\n if (tmpDepth > depth) {\n depth = tmpDepth\n }\n }\n })\n\n return depth + 1\n }\n\n return depth\n}\n\nfunction stringify (obj, options) {\n options = options || {}\n var indent = JSON.stringify([1], null, get(options, 'indent', 2)).slice(2, -3)\n var addMargin = get(options, 'margins', false)\n var addArrayMargin = get(options, 'arrayMargins', false)\n var addObjectMargin = get(options, 'objectMargins', false)\n var maxLength = (indent === '' ? Infinity : get(options, 'maxLength', 80))\n var maxNesting = get(options, 'maxNesting', Infinity)\n\n return (function _stringify (obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === 'function') {\n obj = obj.toJSON()\n }\n\n var string = JSON.stringify(obj)\n\n if (string === undefined) {\n return string\n }\n\n var length = maxLength - currentIndent.length - reserved\n\n var treeDepth = getTreeDepth(obj)\n if (treeDepth <= maxNesting && string.length <= length) {\n var prettified = prettify(string, {\n addMargin: addMargin,\n addArrayMargin: addArrayMargin,\n addObjectMargin: addObjectMargin\n })\n if (prettified.length <= length) {\n return prettified\n }\n }\n\n if (isObject(obj)) {\n var nextIndent = currentIndent + indent\n var items = []\n var delimiters\n var comma = function (array, index) {\n return (index === array.length - 1 ? 0 : 1)\n }\n\n if (Array.isArray(obj)) {\n for (var index = 0; index < obj.length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, comma(obj, index)) || 'null'\n )\n }\n delimiters = '[]'\n } else {\n Object.keys(obj).forEach(function (key, index, array) {\n var keyPart = JSON.stringify(key) + ': '\n var value = _stringify(obj[key], nextIndent,\n keyPart.length + comma(array, index))\n if (value !== undefined) {\n items.push(keyPart + value)\n }\n })\n delimiters = '{}'\n }\n\n if (items.length > 0) {\n return [\n delimiters[0],\n indent + items.join(',\\n' + nextIndent),\n delimiters[1]\n ].join('\\n' + currentIndent)\n }\n }\n\n return string\n }(obj, '', 0))\n}\n\n// Note: This regex matches even invalid JSON strings, but since we\u2019re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don\u2019t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,\\][}{]/g\n\nfunction prettify (string, options) {\n options = options || {}\n\n var tokens = {\n '{': '{',\n '}': '}',\n '[': '[',\n ']': ']',\n ',': ', ',\n ':': ': '\n }\n\n if (options.addMargin || options.addObjectMargin) {\n tokens['{'] = '{ '\n tokens['}'] = ' }'\n }\n\n if (options.addMargin || options.addArrayMargin) {\n tokens['['] = '[ '\n tokens[']'] = ' ]'\n }\n\n return string.replace(stringOrChar, function (match, string) {\n return string ? match : tokens[match]\n })\n}\n\nfunction get (options, name, defaultValue) {\n return (name in options ? options[name] : defaultValue)\n}\n\nmodule.exports = stringify\n", "/*! MIT License. Copyright 2015-2018 Richard Moore . See LICENSE.txt. */\n(function(root) {\n \"use strict\";\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n // We cannot safely handle numbers beyond the safe range for integers\n if (value > Number.MAX_SAFE_INTEGER) {\n throw new Error('integer value out of safe range');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = parseInt(value / 256);\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define([], function() { return aesjs; });\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n", "(function(root, factory) {\n if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n root.nearley = factory();\n }\n}(this, function() {\n\n function Rule(name, symbols, postprocess) {\n this.id = ++Rule.highestId;\n this.name = name;\n this.symbols = symbols; // a list of literal | regex class | nonterminal\n this.postprocess = postprocess;\n return this;\n }\n Rule.highestId = 0;\n\n Rule.prototype.toString = function(withCursorAt) {\n var symbolSequence = (typeof withCursorAt === \"undefined\")\n ? this.symbols.map(getSymbolShortDisplay).join(' ')\n : ( this.symbols.slice(0, withCursorAt).map(getSymbolShortDisplay).join(' ')\n + \" \u25CF \"\n + this.symbols.slice(withCursorAt).map(getSymbolShortDisplay).join(' ') );\n return this.name + \" \u2192 \" + symbolSequence;\n }\n\n\n // a State is a rule at a position from a given starting point in the input stream (reference)\n function State(rule, dot, reference, wantedBy) {\n this.rule = rule;\n this.dot = dot;\n this.reference = reference;\n this.data = [];\n this.wantedBy = wantedBy;\n this.isComplete = this.dot === rule.symbols.length;\n }\n\n State.prototype.toString = function() {\n return \"{\" + this.rule.toString(this.dot) + \"}, from: \" + (this.reference || 0);\n };\n\n State.prototype.nextState = function(child) {\n var state = new State(this.rule, this.dot + 1, this.reference, this.wantedBy);\n state.left = this;\n state.right = child;\n if (state.isComplete) {\n state.data = state.build();\n // Having right set here will prevent the right state and its children\n // form being garbage collected\n state.right = undefined;\n }\n return state;\n };\n\n State.prototype.build = function() {\n var children = [];\n var node = this;\n do {\n children.push(node.right.data);\n node = node.left;\n } while (node.left);\n children.reverse();\n return children;\n };\n\n State.prototype.finish = function() {\n if (this.rule.postprocess) {\n this.data = this.rule.postprocess(this.data, this.reference, Parser.fail);\n }\n };\n\n\n function Column(grammar, index) {\n this.grammar = grammar;\n this.index = index;\n this.states = [];\n this.wants = {}; // states indexed by the non-terminal they expect\n this.scannable = []; // list of states that expect a token\n this.completed = {}; // states that are nullable\n }\n\n\n Column.prototype.process = function(nextColumn) {\n var states = this.states;\n var wants = this.wants;\n var completed = this.completed;\n\n for (var w = 0; w < states.length; w++) { // nb. we push() during iteration\n var state = states[w];\n\n if (state.isComplete) {\n state.finish();\n if (state.data !== Parser.fail) {\n // complete\n var wantedBy = state.wantedBy;\n for (var i = wantedBy.length; i--; ) { // this line is hot\n var left = wantedBy[i];\n this.complete(left, state);\n }\n\n // special-case nullables\n if (state.reference === this.index) {\n // make sure future predictors of this rule get completed.\n var exp = state.rule.name;\n (this.completed[exp] = this.completed[exp] || []).push(state);\n }\n }\n\n } else {\n // queue scannable states\n var exp = state.rule.symbols[state.dot];\n if (typeof exp !== 'string') {\n this.scannable.push(state);\n continue;\n }\n\n // predict\n if (wants[exp]) {\n wants[exp].push(state);\n\n if (completed.hasOwnProperty(exp)) {\n var nulls = completed[exp];\n for (var i = 0; i < nulls.length; i++) {\n var right = nulls[i];\n this.complete(state, right);\n }\n }\n } else {\n wants[exp] = [state];\n this.predict(exp);\n }\n }\n }\n }\n\n Column.prototype.predict = function(exp) {\n var rules = this.grammar.byName[exp] || [];\n\n for (var i = 0; i < rules.length; i++) {\n var r = rules[i];\n var wantedBy = this.wants[exp];\n var s = new State(r, 0, this.index, wantedBy);\n this.states.push(s);\n }\n }\n\n Column.prototype.complete = function(left, right) {\n var copy = left.nextState(right);\n this.states.push(copy);\n }\n\n\n function Grammar(rules, start) {\n this.rules = rules;\n this.start = start || this.rules[0].name;\n var byName = this.byName = {};\n this.rules.forEach(function(rule) {\n if (!byName.hasOwnProperty(rule.name)) {\n byName[rule.name] = [];\n }\n byName[rule.name].push(rule);\n });\n }\n\n // So we can allow passing (rules, start) directly to Parser for backwards compatibility\n Grammar.fromCompiled = function(rules, start) {\n var lexer = rules.Lexer;\n if (rules.ParserStart) {\n start = rules.ParserStart;\n rules = rules.ParserRules;\n }\n var rules = rules.map(function (r) { return (new Rule(r.name, r.symbols, r.postprocess)); });\n var g = new Grammar(rules, start);\n g.lexer = lexer; // nb. storing lexer on Grammar is iffy, but unavoidable\n return g;\n }\n\n\n function StreamLexer() {\n this.reset(\"\");\n }\n\n StreamLexer.prototype.reset = function(data, state) {\n this.buffer = data;\n this.index = 0;\n this.line = state ? state.line : 1;\n this.lastLineBreak = state ? -state.col : 0;\n }\n\n StreamLexer.prototype.next = function() {\n if (this.index < this.buffer.length) {\n var ch = this.buffer[this.index++];\n if (ch === '\\n') {\n this.line += 1;\n this.lastLineBreak = this.index;\n }\n return {value: ch};\n }\n }\n\n StreamLexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.index - this.lastLineBreak,\n }\n }\n\n StreamLexer.prototype.formatError = function(token, message) {\n // nb. this gets called after consuming the offending token,\n // so the culprit is index-1\n var buffer = this.buffer;\n if (typeof buffer === 'string') {\n var lines = buffer\n .split(\"\\n\")\n .slice(\n Math.max(0, this.line - 5), \n this.line\n );\n\n var nextLineBreak = buffer.indexOf('\\n', this.index);\n if (nextLineBreak === -1) nextLineBreak = buffer.length;\n var col = this.index - this.lastLineBreak;\n var lastLineDigits = String(this.line).length;\n message += \" at line \" + this.line + \" col \" + col + \":\\n\\n\";\n message += lines\n .map(function(line, i) {\n return pad(this.line - lines.length + i + 1, lastLineDigits) + \" \" + line;\n }, this)\n .join(\"\\n\");\n message += \"\\n\" + pad(\"\", lastLineDigits + col) + \"^\\n\";\n return message;\n } else {\n return message + \" at index \" + (this.index - 1);\n }\n\n function pad(n, length) {\n var s = String(n);\n return Array(length - s.length + 1).join(\" \") + s;\n }\n }\n\n function Parser(rules, start, options) {\n if (rules instanceof Grammar) {\n var grammar = rules;\n var options = start;\n } else {\n var grammar = Grammar.fromCompiled(rules, start);\n }\n this.grammar = grammar;\n\n // Read options\n this.options = {\n keepHistory: false,\n lexer: grammar.lexer || new StreamLexer,\n };\n for (var key in (options || {})) {\n this.options[key] = options[key];\n }\n\n // Setup lexer\n this.lexer = this.options.lexer;\n this.lexerState = undefined;\n\n // Setup a table\n var column = new Column(grammar, 0);\n var table = this.table = [column];\n\n // I could be expecting anything.\n column.wants[grammar.start] = [];\n column.predict(grammar.start);\n // TODO what if start rule is nullable?\n column.process();\n this.current = 0; // token index\n }\n\n // create a reserved token for indicating a parse fail\n Parser.fail = {};\n\n Parser.prototype.feed = function(chunk) {\n var lexer = this.lexer;\n lexer.reset(chunk, this.lexerState);\n\n var token;\n while (true) {\n try {\n token = lexer.next();\n if (!token) {\n break;\n }\n } catch (e) {\n // Create the next column so that the error reporter\n // can display the correctly predicted states.\n var nextColumn = new Column(this.grammar, this.current + 1);\n this.table.push(nextColumn);\n var err = new Error(this.reportLexerError(e));\n err.offset = this.current;\n err.token = e.token;\n throw err;\n }\n // We add new states to table[current+1]\n var column = this.table[this.current];\n\n // GC unused states\n if (!this.options.keepHistory) {\n delete this.table[this.current - 1];\n }\n\n var n = this.current + 1;\n var nextColumn = new Column(this.grammar, n);\n this.table.push(nextColumn);\n\n // Advance all tokens that expect the symbol\n var literal = token.text !== undefined ? token.text : token.value;\n var value = lexer.constructor === StreamLexer ? token.value : token;\n var scannable = column.scannable;\n for (var w = scannable.length; w--; ) {\n var state = scannable[w];\n var expect = state.rule.symbols[state.dot];\n // Try to consume the token\n // either regex or literal\n if (expect.test ? expect.test(value) :\n expect.type ? expect.type === token.type\n : expect.literal === literal) {\n // Add it\n var next = state.nextState({data: value, token: token, isToken: true, reference: n - 1});\n nextColumn.states.push(next);\n }\n }\n\n // Next, for each of the rules, we either\n // (a) complete it, and try to see if the reference row expected that\n // rule\n // (b) predict the next nonterminal it expects by adding that\n // nonterminal's start state\n // To prevent duplication, we also keep track of rules we have already\n // added\n\n nextColumn.process();\n\n // If needed, throw an error:\n if (nextColumn.states.length === 0) {\n // No states at all! This is not good.\n var err = new Error(this.reportError(token));\n err.offset = this.current;\n err.token = token;\n throw err;\n }\n\n // maybe save lexer state\n if (this.options.keepHistory) {\n column.lexerState = lexer.save()\n }\n\n this.current++;\n }\n if (column) {\n this.lexerState = lexer.save()\n }\n\n // Incrementally keep track of results\n this.results = this.finish();\n\n // Allow chaining, for whatever it's worth\n return this;\n };\n\n Parser.prototype.reportLexerError = function(lexerError) {\n var tokenDisplay, lexerMessage;\n // Planning to add a token property to moo's thrown error\n // even on erroring tokens to be used in error display below\n var token = lexerError.token;\n if (token) {\n tokenDisplay = \"input \" + JSON.stringify(token.text[0]) + \" (lexer error)\";\n lexerMessage = this.lexer.formatError(token, \"Syntax error\");\n } else {\n tokenDisplay = \"input (lexer error)\";\n lexerMessage = lexerError.message;\n }\n return this.reportErrorCommon(lexerMessage, tokenDisplay);\n };\n\n Parser.prototype.reportError = function(token) {\n var tokenDisplay = (token.type ? token.type + \" token: \" : \"\") + JSON.stringify(token.value !== undefined ? token.value : token);\n var lexerMessage = this.lexer.formatError(token, \"Syntax error\");\n return this.reportErrorCommon(lexerMessage, tokenDisplay);\n };\n\n Parser.prototype.reportErrorCommon = function(lexerMessage, tokenDisplay) {\n var lines = [];\n lines.push(lexerMessage);\n var lastColumnIndex = this.table.length - 2;\n var lastColumn = this.table[lastColumnIndex];\n var expectantStates = lastColumn.states\n .filter(function(state) {\n var nextSymbol = state.rule.symbols[state.dot];\n return nextSymbol && typeof nextSymbol !== \"string\";\n });\n\n if (expectantStates.length === 0) {\n lines.push('Unexpected ' + tokenDisplay + '. I did not expect any more input. Here is the state of my parse table:\\n');\n this.displayStateStack(lastColumn.states, lines);\n } else {\n lines.push('Unexpected ' + tokenDisplay + '. Instead, I was expecting to see one of the following:\\n');\n // Display a \"state stack\" for each expectant state\n // - which shows you how this state came to be, step by step.\n // If there is more than one derivation, we only display the first one.\n var stateStacks = expectantStates\n .map(function(state) {\n return this.buildFirstStateStack(state, []) || [state];\n }, this);\n // Display each state that is expecting a terminal symbol next.\n stateStacks.forEach(function(stateStack) {\n var state = stateStack[0];\n var nextSymbol = state.rule.symbols[state.dot];\n var symbolDisplay = this.getSymbolDisplay(nextSymbol);\n lines.push('A ' + symbolDisplay + ' based on:');\n this.displayStateStack(stateStack, lines);\n }, this);\n }\n lines.push(\"\");\n return lines.join(\"\\n\");\n }\n \n Parser.prototype.displayStateStack = function(stateStack, lines) {\n var lastDisplay;\n var sameDisplayCount = 0;\n for (var j = 0; j < stateStack.length; j++) {\n var state = stateStack[j];\n var display = state.rule.toString(state.dot);\n if (display === lastDisplay) {\n sameDisplayCount++;\n } else {\n if (sameDisplayCount > 0) {\n lines.push(' ^ ' + sameDisplayCount + ' more lines identical to this');\n }\n sameDisplayCount = 0;\n lines.push(' ' + display);\n }\n lastDisplay = display;\n }\n };\n\n Parser.prototype.getSymbolDisplay = function(symbol) {\n return getSymbolLongDisplay(symbol);\n };\n\n /*\n Builds a the first state stack. You can think of a state stack as the call stack\n of the recursive-descent parser which the Nearley parse algorithm simulates.\n A state stack is represented as an array of state objects. Within a\n state stack, the first item of the array will be the starting\n state, with each successive item in the array going further back into history.\n\n This function needs to be given a starting state and an empty array representing\n the visited states, and it returns an single state stack.\n\n */\n Parser.prototype.buildFirstStateStack = function(state, visited) {\n if (visited.indexOf(state) !== -1) {\n // Found cycle, return null\n // to eliminate this path from the results, because\n // we don't know how to display it meaningfully\n return null;\n }\n if (state.wantedBy.length === 0) {\n return [state];\n }\n var prevState = state.wantedBy[0];\n var childVisited = [state].concat(visited);\n var childResult = this.buildFirstStateStack(prevState, childVisited);\n if (childResult === null) {\n return null;\n }\n return [state].concat(childResult);\n };\n\n Parser.prototype.save = function() {\n var column = this.table[this.current];\n column.lexerState = this.lexerState;\n return column;\n };\n\n Parser.prototype.restore = function(column) {\n var index = column.index;\n this.current = index;\n this.table[index] = column;\n this.table.splice(index + 1);\n this.lexerState = column.lexerState;\n\n // Incrementally keep track of results\n this.results = this.finish();\n };\n\n // nb. deprecated: use save/restore instead!\n Parser.prototype.rewind = function(index) {\n if (!this.options.keepHistory) {\n throw new Error('set option `keepHistory` to enable rewinding')\n }\n // nb. recall column (table) indicies fall between token indicies.\n // col 0 -- token 0 -- col 1\n this.restore(this.table[index]);\n };\n\n Parser.prototype.finish = function() {\n // Return the possible parsings\n var considerations = [];\n var start = this.grammar.start;\n var column = this.table[this.table.length - 1]\n column.states.forEach(function (t) {\n if (t.rule.name === start\n && t.dot === t.rule.symbols.length\n && t.reference === 0\n && t.data !== Parser.fail) {\n considerations.push(t);\n }\n });\n return considerations.map(function(c) {return c.data; });\n };\n\n function getSymbolLongDisplay(symbol) {\n var type = typeof symbol;\n if (type === \"string\") {\n return symbol;\n } else if (type === \"object\") {\n if (symbol.literal) {\n return JSON.stringify(symbol.literal);\n } else if (symbol instanceof RegExp) {\n return 'character matching ' + symbol;\n } else if (symbol.type) {\n return symbol.type + ' token';\n } else if (symbol.test) {\n return 'token matching ' + String(symbol.test);\n } else {\n throw new Error('Unknown symbol type: ' + symbol);\n }\n }\n }\n\n function getSymbolShortDisplay(symbol) {\n var type = typeof symbol;\n if (type === \"string\") {\n return symbol;\n } else if (type === \"object\") {\n if (symbol.literal) {\n return JSON.stringify(symbol.literal);\n } else if (symbol instanceof RegExp) {\n return symbol.toString();\n } else if (symbol.type) {\n return '%' + symbol.type;\n } else if (symbol.test) {\n return '<' + String(symbol.test) + '>';\n } else {\n throw new Error('Unknown symbol type: ' + symbol);\n }\n }\n }\n\n return {\n Parser: Parser,\n Grammar: Grammar,\n Rule: Rule,\n };\n\n}));\n", "{\n \"locale\": \"en-US\",\n\n \"date\": {\n \"approximate\": {\n \"long\": \"circa %D\",\n \"medium\": \"ca. %D\",\n \"short\": \"c. %D\"\n },\n \"uncertain\": {\n \"long\": \"%D (unspecified)\",\n \"medium\": \"%D (?)\",\n \"short\": \"%D (?)\"\n }\n }\n}\n", "{\n \"locale\": \"es-ES\",\n\n \"date\": {\n \"approximate\": {\n \"long\": \"circa %D\",\n \"medium\": \"ca. %D\",\n \"short\": \"c. %D\"\n },\n \"uncertain\": {\n \"long\": \"%D (?)\",\n \"medium\": \"%D (?)\",\n \"short\": \"%D (?)\"\n }\n }\n}\n", "{\n \"locale\": \"de-DE\",\n\n \"date\": {\n \"approximate\": {\n \"long\": \"circa %D\",\n \"medium\": \"ca. %D\",\n \"short\": \"ca. %D\"\n },\n \"uncertain\": {\n \"long\": \"%D (?)\",\n \"medium\": \"%D (?)\",\n \"short\": \"%D (?)\"\n }\n }\n}\n", "{\n \"locale\": \"fr-FR\",\n\n \"date\": {\n \"approximate\": {\n \"long\": \"circa %D\",\n \"medium\": \"ca. %D\",\n \"short\": \"c. %D\"\n },\n \"uncertain\": {\n \"long\": \"%D (?)\",\n \"medium\": \"%D (?)\",\n \"short\": \"%D (?)\"\n }\n }\n}\n", "{\n \"locale\": \"it-IT\",\n\n \"date\": {\n \"approximate\": {\n \"long\": \"circa %D\",\n \"medium\": \"ca. %D\",\n \"short\": \"c. %D\"\n },\n \"uncertain\": {\n \"long\": \"%D (?)\",\n \"medium\": \"%D (?)\",\n \"short\": \"%D (?)\"\n }\n }\n}\n", "{\n \"locale\": \"ja-JA\",\n\n \"date\": {\n \"approximate\": {\n \"long\": \"%D\u9803\",\n \"medium\": \"%D\u9803\",\n \"short\": \"%D\u9803\"\n },\n \"uncertain\": {\n \"long\": \"%D\u9803\",\n \"medium\": \"%D\u9803\",\n \"short\": \"%D\u9803\"\n }\n }\n}\n", "const en = require('./en-US.json')\nconst es = require('./es-ES.json')\nconst de = require('./de-DE.json')\nconst fr = require('./fr-FR.json')\nconst it = require('./it-IT.json')\nconst ja = require('./ja-JA.json')\n\nconst alias = (lang, ...regions) => {\n for (let region of regions)\n data[`${lang}-${region}`] = data[lang]\n}\n\nconst data = { en, es, de, fr, it, ja }\n\nalias('en', 'AU', 'CA', 'GB', 'NZ', 'SA', 'US')\nalias('de', 'AT', 'CH', 'DE')\nalias('fr', 'CH', 'FR')\n\nmodule.exports = data\n", "/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

    ' + func(text) + '

    ';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

    fred, barney, & pebbles

    '\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('d\u00E9j\u00E0 vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '