GeoIP Detection - Version 5.1.1

Version Description

  • NEW: For the reverse proxy configuration, internal adresses (such as 10.0.0.0/8) are now whitelisted by default. You can override this behaviour by using the wordpress filter geoip_detect2_client_ip_whitelist_internal_ips.
  • NEW: Body classes now include the city name in English (e.g. geoip-city-Munich)
  • FIX: Some server configurations showed this warning: Use of undefined constant CURL_HTTP_VERSION_2_0
Download this release

Release Info

Developer benjamin4
Plugin Icon 128x128 GeoIP Detection
Version 5.1.1
Comparing to
See all releases

Code changes from version 5.1.0 to 5.1.1

data-sources/fastah.php CHANGED
@@ -185,17 +185,17 @@ class FastahSource extends AbstractDataSource {
185
  // Set default by probing PHP/Curl capabilities - minimum is HTTP 1.1 over TLSv1.2
186
  // HTTP/2 ought to be available in PHP-Curl > v7.47.0 @see https://curl.se/docs/http2.html
187
 
188
- if (curl_version()["features"] & CURL_HTTP_VERSION_2_0 !== 0) {
189
  $this->bestAvailHTTP = CURL_HTTP_VERSION_2_0;
190
- if (curl_version()["features"] & CURL_HTTP_VERSION_2TLS !== 0) {
191
  $this->bestAvailHTTP = CURL_HTTP_VERSION_2TLS;
192
  }
193
  }
194
 
195
- if ($this->bestAvailHTTP < CURL_HTTP_VERSION_2_0) {
196
- $this->params['http2'] = 0;
197
- } else {
198
  $this->params['http2'] = get_option('geoip-detect-fastah_http2', 1);
 
 
199
  }
200
  }
201
 
@@ -208,7 +208,7 @@ class FastahSource extends AbstractDataSource {
208
 
209
  $html .= \sprintf(__('HTTP2: %s', 'geoip-detect'), $this->params['http2'] ? __('Enabled', 'geoip-detect') : __('Disabled', 'geoip-detect')) . '<br />';
210
 
211
- if ($this->bestAvailHTTP < CURL_HTTP_VERSION_2_0) {
212
  $html .= '<i>' . __('Warning: HTTP2 is not supported by the curl version used by your PHP. This will make lookups slower.', 'geoip-detect') . '</i><br />';
213
  }
214
 
@@ -254,7 +254,7 @@ HTML;
254
  $http2 = (int) $post['options_fastah']['http2'];
255
  update_option('geoip-detect-fastah_http2', $http2);
256
  // Show warning if HTTP/2 requested but actually not available via PHP-Curl
257
- if ($http2 == 1 && $this->bestAvailHTTP < CURL_HTTP_VERSION_2_0) {
258
  $message .= __('Warning: Turning off HTTP/2 because it is not supported by your server PHP / libcurl.<br>', 'geoip-detect');
259
  $http2 = 0;
260
  }
185
  // Set default by probing PHP/Curl capabilities - minimum is HTTP 1.1 over TLSv1.2
186
  // HTTP/2 ought to be available in PHP-Curl > v7.47.0 @see https://curl.se/docs/http2.html
187
 
188
+ if (defined('CURL_HTTP_VERSION_2_0') && curl_version()["features"] & CURL_HTTP_VERSION_2_0 !== 0) {
189
  $this->bestAvailHTTP = CURL_HTTP_VERSION_2_0;
190
+ if (defined('CURL_HTTP_VERSION_2TLS') && curl_version()["features"] & CURL_HTTP_VERSION_2TLS !== 0) {
191
  $this->bestAvailHTTP = CURL_HTTP_VERSION_2TLS;
192
  }
193
  }
194
 
195
+ if ($this->bestAvailHTTP > CURL_HTTP_VERSION_1_1) {
 
 
196
  $this->params['http2'] = get_option('geoip-detect-fastah_http2', 1);
197
+ } else {
198
+ $this->params['http2'] = 0;
199
  }
200
  }
201
 
208
 
209
  $html .= \sprintf(__('HTTP2: %s', 'geoip-detect'), $this->params['http2'] ? __('Enabled', 'geoip-detect') : __('Disabled', 'geoip-detect')) . '<br />';
210
 
211
+ if ($this->bestAvailHTTP === CURL_HTTP_VERSION_1_1) {
212
  $html .= '<i>' . __('Warning: HTTP2 is not supported by the curl version used by your PHP. This will make lookups slower.', 'geoip-detect') . '</i><br />';
213
  }
214
 
254
  $http2 = (int) $post['options_fastah']['http2'];
255
  update_option('geoip-detect-fastah_http2', $http2);
256
  // Show warning if HTTP/2 requested but actually not available via PHP-Curl
257
+ if ($http2 == 1 && $this->bestAvailHTTP == CURL_HTTP_VERSION_1_1) {
258
  $message .= __('Warning: Turning off HTTP/2 because it is not supported by your server PHP / libcurl.<br>', 'geoip-detect');
259
  $http2 = 0;
260
  }
filter.php CHANGED
@@ -47,6 +47,10 @@ function geoip_detect2_get_body_classes() {
47
  if ($info->mostSpecificSubdivision->isoCode)
48
  $classes[] = 'geoip-province-' . $info->mostSpecificSubdivision->isoCode;
49
 
 
 
 
 
50
  return $classes;
51
  }
52
 
47
  if ($info->mostSpecificSubdivision->isoCode)
48
  $classes[] = 'geoip-province-' . $info->mostSpecificSubdivision->isoCode;
49
 
50
+ if ($info->city->name) {
51
+ $classes[] = 'geoip-name-' . sanitize_html_class($info->city->names['en']);
52
+ }
53
+
54
  return $classes;
55
  }
56
 
geoip-detect.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.yellowtree.de
5
  Description: Provides geographic information detected by an IP adress.
6
  Author: Yellow Tree (Benjamin Pick)
7
  Author URI: http://www.yellowtree.de
8
- Version: 5.1.0
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
  Text Domain: geoip-detect
@@ -16,7 +16,7 @@ Requires WP: 5.4
16
  Requires PHP: 7.2.5
17
  */
18
 
19
- define('GEOIP_DETECT_VERSION', '5.1.0');
20
 
21
  /*
22
  Copyright 2013-2021 Yellow Tree, Siegen, Germany
5
  Description: Provides geographic information detected by an IP adress.
6
  Author: Yellow Tree (Benjamin Pick)
7
  Author URI: http://www.yellowtree.de
8
+ Version: 5.1.1
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
  Text Domain: geoip-detect
16
  Requires PHP: 7.2.5
17
  */
18
 
19
+ define('GEOIP_DETECT_VERSION', '5.1.1');
20
 
21
  /*
22
  Copyright 2013-2021 Yellow Tree, Siegen, Germany
js/body_classes.js CHANGED
@@ -7,6 +7,7 @@ export function calc_classes(record) {
7
  'country-is-in-european-union': record.get('country.is_in_european_union', false),
8
  continent: record.get('continent.code'),
9
  province: record.get('most_specific_subdivision.iso_code'),
 
10
  };
11
  }
12
 
@@ -28,6 +29,14 @@ export async function add_body_classes() {
28
  add_classes_to_body(record);
29
  }
30
 
 
 
 
 
 
 
 
 
31
  export function add_classes_to_body(record) {
32
  const css_classes = calc_classes(record);
33
 
@@ -37,7 +46,7 @@ export function add_classes_to_body(record) {
37
  remove_css_classes_by_prefix(body, 'geoip-');
38
 
39
  for (let key of Object.keys(css_classes)) {
40
- const value = css_classes[key];
41
  if (value) {
42
  if (typeof (value) == 'string') {
43
  body.classList.add(`geoip-${key}-${value}`);
7
  'country-is-in-european-union': record.get('country.is_in_european_union', false),
8
  continent: record.get('continent.code'),
9
  province: record.get('most_specific_subdivision.iso_code'),
10
+ city: record.get('city.names.en')
11
  };
12
  }
13
 
29
  add_classes_to_body(record);
30
  }
31
 
32
+ // ported from Wordpress PHP
33
+ function sanitize_html_class(string) {
34
+ string = string + '';
35
+ string = string.replace(/%[a-fA-F0-9][a-fA-F0-9]/g, '');
36
+ string = string.replace(/[^A-Za-z0-9_-]/g, '');
37
+ return string;
38
+ }
39
+
40
  export function add_classes_to_body(record) {
41
  const css_classes = calc_classes(record);
42
 
46
  remove_css_classes_by_prefix(body, 'geoip-');
47
 
48
  for (let key of Object.keys(css_classes)) {
49
+ const value = sanitize_html_class(css_classes[key]);
50
  if (value) {
51
  if (typeof (value) == 'string') {
52
  body.classList.add(`geoip-${key}-${value}`);
js/body_classes.test.js CHANGED
@@ -20,18 +20,21 @@ test('calc_classes', () => {
20
  "country": "DE",
21
  "country-is-in-european-union": false, /* because the test data set has EU not set yet */
22
  "province": "HE",
 
23
  });
24
  expect(calc_classes(errorRecord)).toStrictEqual({
25
  "continent": "",
26
  "country": "",
27
  "country-is-in-european-union": false,
28
  "province": "",
 
29
  });
30
  expect(calc_classes(emptyRecord)).toStrictEqual({
31
  "continent": "",
32
  "country": "",
33
  "country-is-in-european-union": false,
34
  "province": "",
 
35
  });
36
  });
37
 
20
  "country": "DE",
21
  "country-is-in-european-union": false, /* because the test data set has EU not set yet */
22
  "province": "HE",
23
+ "city": "Eschborn",
24
  });
25
  expect(calc_classes(errorRecord)).toStrictEqual({
26
  "continent": "",
27
  "country": "",
28
  "country-is-in-european-union": false,
29
  "province": "",
30
+ "city": "",
31
  });
32
  expect(calc_classes(emptyRecord)).toStrictEqual({
33
  "continent": "",
34
  "country": "",
35
  "country-is-in-european-union": false,
36
  "province": "",
37
+ "city": "",
38
  });
39
  });
40
 
js/dist/frontend.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(){function t(t){return t&&t.__esModule?t.default:t}function e(t,e,r,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}function r(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function u(t){e(a,o,i,u,c,"next",t)}function c(t){e(a,o,i,u,c,"throw",t)}u(void 0)}))}}function n(t){return t&&t.constructor===Symbol?"symbol":typeof t}var o={},i=function(t){"use strict";var e,r=function(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]},n=function(t,e,r,n){var o=e&&e.prototype instanceof i?e:i,a=Object.create(o.prototype),u=new p(n||[]);return a._invoke=l(t,r,u),a},o=function(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}},i=function(){},a=function(){},u=function(){},c=function(t){["next","throw","return"].forEach((function(e){r(t,e,(function(t){return this._invoke(e,t)}))}))},s=function(t,e){function r(n,i,a,u){var c=o(t[n],t,i);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&g.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,u)}),(function(t){r("throw",t,a,u)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,u)}))}u(c.arg)}var n;this._invoke=function(t,o){function i(){return new e((function(e,n){r(t,o,e,n)}))}return n=n?n.then(i,i):i()}},l=function(t,e,r){var n=x;return function(i,a){if(n===k)throw new Error("Generator is already running");if(n===L){if("throw"===i)throw a;return v()}for(r.method=i,r.arg=a;;){var u=r.delegate;if(u){var c=T(u,r);if(c){if(c===j)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===x)throw n=L,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=k;var s=o(t,e,r);if("normal"===s.type){if(n=r.done?L:E,s.arg===j)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=L,r.method="throw",r.arg=s.arg)}}},f=function(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)},d=function(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e},p=function(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)},h=function(t){if(t){var r=t[_];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function r(){for(;++n<t.length;)if(g.call(t,n))return r.value=t[n],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}return{next:v}},v=function(){return{value:e,done:!0}},y=Object.prototype,g=y.hasOwnProperty,m="function"==typeof Symbol?Symbol:{},_=m.iterator||"@@iterator",w=m.asyncIterator||"@@asyncIterator",b=m.toStringTag||"@@toStringTag";try{r({},"")}catch(t){r=function(t,e,r){return t[e]=r}}t.wrap=n;var x="suspendedStart",E="suspendedYield",k="executing",L="completed",j={},S={};r(S,_,(function(){return this}));var A=Object.getPrototypeOf,O=A&&A(A(h([])));O&&O!==y&&g.call(O,_)&&(S=O);var P=u.prototype=i.prototype=Object.create(S);function T(t,r){var n=t.iterator[r.method];if(n===e){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=e,T(t,r),"throw"===r.method))return j;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return j}var i=o(n,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,j;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,j):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,j)}return a.prototype=u,r(P,"constructor",u),r(u,"constructor",a),a.displayName=r(u,b,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===a||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,u):(t.__proto__=u,r(t,b,"GeneratorFunction")),t.prototype=Object.create(P),t},t.awrap=function(t){return{__await:t}},c(s.prototype),r(s.prototype,w,(function(){return this})),t.AsyncIterator=s,t.async=function(e,r,o,i,a){void 0===a&&(a=Promise);var u=new s(n(e,r,o,i),a);return t.isGeneratorFunction(r)?u:u.next().then((function(t){return t.done?t.value:u.next()}))},c(P),r(P,b,"Generator"),r(P,_,(function(){return this})),r(P,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=h,p.prototype={constructor:p,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(d),!t)for(var r in this)"t"===r.charAt(0)&&g.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){var r=function(r,o){return a.type="throw",a.arg=t,n.next=r,o&&(n.method="next",n.arg=e),!!o};if(this.done)throw t;for(var n=this,o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=g.call(i,"catchLoc"),c=g.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&g.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,j):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),j},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),d(r),j}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;d(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:h(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),j}},t}(o);try{regeneratorRuntime=i}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=i:Function("r","regeneratorRuntime = r")(i)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function u(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function c(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=function(t,e,r){if(!t)return r;var o,i;Array.isArray(e)&&(o=e.slice(0));"string"==typeof e&&(o=e.split("."));"symbol"==(void 0===e?"undefined":n(e))&&(o=[e]);if(!Array.isArray(o))throw new Error("props arg must be an array, a string or a symbol");for(;o.length;){if(i=o.shift(),!t)return r;if(void 0===(t=t[i]))return r}return t};var l=function(t,e){if("object"==typeof t&&null!==t){if("object"==typeof t.names&&"object"==typeof e)for(var r=0;r<e.length;r++){var n=e[r];if(t.names[n])return t.names[n]}return t.name?t.name:""}return t},f=function(t){return t=t.split(".").map((function(t){return"string"!=typeof t||"string"!=typeof t[0]?"":t=(t=t[0].toLowerCase()+t.slice(1)).replace(/([A-Z])/g,"_$1").toLowerCase()})).join(".")},d=function(){"use strict";function t(e,r){a(this,t),c(this,"data",{}),c(this,"default_locales",[]),this.data=e||{is_empty:!0},this.default_locales=["en"],this.default_locales=this._process_locales(r)}var e,r,o;return e=t,r=[{key:"get",value:function(t,e){return this.get_with_locales(t,null,e)}},{key:"get_raw",value:function(t){return t=f(t),s(this.data,t,null)}},{key:"has_property",value:function(t){return null!==this._lookup_with_locales(t,this.default_locales,null)}},{key:"_lookup_with_locales",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";e=this._process_locales(e),".name"===t.substr(-5)&&(t=t.substr(0,t.length-5));var n=this.get_raw(t);return null!==(n=l(n,e))&&""!==n||(n=r),n}},{key:"_process_locales",value:function(t){return"string"==typeof t&&(t=[t]),Array.isArray(t)&&0!==t.length||(t=this.default_locales),t}},{key:"get_with_locales",value:function(t,e,r){var o=this._lookup_with_locales(t,e,r);return"object"==typeof o&&console.warn('Geolocation IP Detection: The property "'+t+'" is of type "'+(void 0===o?"undefined":n(o))+'", should be string or similar',o),void 0===o?(console.warn('Geolocation IP Detection: The property "'+t+'" is not defined, please check spelling or maybe you need a different data source',{data:this.data}),""):o}},{key:"get_country_iso",value:function(){var t=this.get("country.iso_code");return t&&(t=t.substr(0,2).toLowerCase()),t}},{key:"is_empty",value:function(){return this.get("is_empty",!1)}},{key:"error",value:function(){return this.get_raw("extra.error")||""}},{key:"serialize",value:function(){return this.data}}],r&&u(e.prototype,r),o&&u(e,o),t}(),p=d,h=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET",r=new XMLHttpRequest;return new Promise((function(n,o){r.onreadystatechange=function(){4===r.readyState&&(r.status>=200&&r.status<300?n(r):o({status:r.status,statusText:r.statusText,request:r}))},r.open(e||"GET",t,!0),r.send()}))},v=function(t){try{return JSON.parse(t)}catch(e){return y("Invalid JSON: "+t)}};function y(t){return{is_empty:!0,extra:{error:t}}}var g,m=(g=r(t(o).mark((function e(r){var n,i,a=arguments;return t(o).wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=a.length>1&&void 0!==a[1]?a[1]:"GET",t.prev=1,t.next=4,h(r,n);case 4:if((i=t.sent).responseText&&"0"!==i.responseText){t.next=7;break}return t.abrupt("return",y("Got an empty response from server. Did you enable AJAX in the options?"));case 7:return t.abrupt("return",v(i.responseText));case 10:return t.prev=10,t.t0=t.catch(1),t.abrupt("return",v(t.t0.request.responseText));case 13:case"end":return t.stop()}}),e,null,[[1,10]])}))),function(t){return g.apply(this,arguments)}),_=function(t,e,r){var n={value:e,expires_at:(new Date).getTime()+1e3*r/1};localStorage.setItem(t.toString(),JSON.stringify(n))};var w=function(t){var e=null;try{e=JSON.parse(localStorage.getItem(t.toString()))}catch(t){return null}if(null!==e){if(!(null!==e.expires_at&&e.expires_at<(new Date).getTime()))return e.value;localStorage.removeItem(t.toString())}return null};function b(){return w(j.cookie_name)}function x(t,e){_(j.cookie_name,t,e)}var E,k={};function L(){return k}var j=(null===(E=window.geoip_detect)||void 0===E?void 0:E.options)||{ajaxurl:"/wp-admin/admin-ajax.php",default_locales:["en"],cookie_duration_in_days:7,cookie_name:"geoip-detect-result",do_body_classes:!1},S=null;function A(){if(!S){var t=j.ajaxurl+"?action=geoip_detect2_get_info_from_current_ip";(S=m(t)).then((function(t){var e;(null==t||null===(e=t.extra)||void 0===e?void 0:e.error)&&console.error("Geolocation IP Detection Error: Server returned an error: "+t.extra.error)}))}return S}function O(){return P.apply(this,arguments)}function P(){return(P=r(t(o).mark((function e(){var r,n,i,a,u;return t(o).wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=!1,n=!1,!j.cookie_name){t.next=7;break}if(!(n=b())||!n.extra){t.next=7;break}return!0===n.extra.override?console.info("Geolocation IP Detection: Using cached response (override)"):console.info("Geolocation IP Detection: Using cached response"),t.abrupt("return",n);case 7:return t.prev=7,t.next=10,A();case 10:r=t.sent,t.next=17;break;case 13:t.prev=13,t.t0=t.catch(7),console.log("Weird: Uncaught error...",t.t0),r=t.t0.responseJSON||t.t0;case 17:if(!j.cookie_name){t.next=26;break}if(!0!==(null==(n=b())||null===(i=n.extra)||void 0===i?void 0:i.override)){t.next=23;break}return console.info("Geolocation IP Detection: Using cached response (override)"),t.abrupt("return",n);case 23:u=86400*j.cookie_duration_in_days,(null==r||null===(a=r.extra)||void 0===a?void 0:a.error)&&(u=60),x(r,u);case 26:return t.abrupt("return",r);case 27:case"end":return t.stop()}}),e,null,[[7,13]])})))).apply(this,arguments)}function T(){return G.apply(this,arguments)}function G(){return(G=r(t(o).mark((function e(){var r,i;return t(o).wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,O();case 2:return"object"!=typeof(r=t.sent)&&(console.error("Geolocation IP Detection Error: Record should be an object, not a "+(void 0===r?"undefined":n(r)),r),r={extra:{error:r||"Network error, look at the original server response ..."}}),i=new p(r,j.default_locales),t.abrupt("return",i);case 6:case"end":return t.stop()}}),e)})))).apply(this,arguments)}var I=function(t,e,r){var o,i,a;Array.isArray(e)&&(o=e.slice(0));"string"==typeof e&&(o=e.split("."));"symbol"==(void 0===e?"undefined":n(e))&&(o=[e]);if(!Array.isArray(o))throw new Error("props arg must be an array, a string or a symbol");if(!(i=o.pop()))return!1;N(i);for(;a=o.shift();)if(N(a),void 0===t[a]&&(t[a]={}),!(t=t[a])||"object"!=typeof t)return!1;return t[i]=r,!0};function N(t){if("__proto__"==t||"constructor"==t||"prototype"==t)throw new Error("setting of prototype values not supported")}var C=D;function D(t,e){return t===e||(t!=t&&e!=e||(void 0===t?"undefined":n(t))==(void 0===e?"undefined":n(e))&&{}.toString.call(t)=={}.toString.call(e)&&(t===Object(t)&&(!!t&&(Array.isArray(t)?J(t,e):"[object Set]"=={}.toString.call(t)?J(Array.from(t),Array.from(e)):"[object Object]"=={}.toString.call(t)?function(t,e){var r=Object.keys(t),n=r.length;if(n!=Object.keys(e).length)return!1;for(var o=0;o<n;o++){var i=r[o];if(!e.hasOwnProperty(i)||!D(t[i],e[i]))return!1}return!0}(t,e):function(t,e){return t.toString()===e.toString()}(t,e)))))}function J(t,e){var r=t.length;if(r!=e.length)return!1;for(var n=0;n<r;n++)if(!D(t[n],e[n]))return!1;return!0}var R=new Promise((function(t){"loading"===document.readyState?document.addEventListener?document.addEventListener("DOMContentLoaded",t):document.attachEvent("onreadystatechange",(function(){"loading"!=document.readyState&&t()})):t()}));function F(t,e,r){for(var n=0;n<t.options.length;n++)if(t.options[n].getAttribute(e)===r)return t.selectedIndex=n,!0;return!1}function U(t){var e=t.getAttribute("data-options");try{return JSON.parse(e)}catch(t){return{}}}function M(t,e,r){return q.apply(this,arguments)}function q(){return(q=r(t(o).mark((function e(r,n,i){var a,u;return t(o).wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((a=document.getElementsByClassName(r)).length){t.next=3;break}return t.abrupt("return");case 3:return t.next=5,T();case 5:if(!(u=t.sent).error()){t.next=9;break}return console.error("Geolocation IP Detection Error ("+n+"): "+u.error()),t.abrupt("return");case 9:Array.from(a).forEach((function(t){return i(t,u)}));case 10:case"end":return t.stop()}}),e)})))).apply(this,arguments)}function z(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=U(t);return r=r||n.property,n.skip_cache&&console.warn("Geolocation IP Detection: The property 'skip_cache' is ignored in AJAX mode. You could disable the response caching on the server by setting the constant GEOIP_DETECT_READER_CACHE_TIME."),e.get_with_locales(r,n.lang,n.default)}var W=!1;function X(t,e){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;W=!0,window.CustomEvent&&"function"==typeof window.CustomEvent?r=new CustomEvent(e,{detail:n}):(r=document.createEvent("CustomEvent")).initCustomEvent(e,!0,!0,n),t.dispatchEvent(r),W=!1}var Y=!1,B=0;function H(){return B++,Y||B>10?(console.warn("Error: Thats weird! autosave change detected a recursion ("+B+")! Please file a bug report about this and include the first 10 lines of the callstack below:"),console.trace(),!1):(Y=!0,!0)}function Z(){Y=!1}function $(t){if(!W){var e=t.target;(null==e?void 0:e.matches)&&e.matches(".js-geoip-detect-input-autosave")&&function(t){var e=U(t).property,r=t.value;if(!H())return;if(t.matches("select.js-geoip-detect-country-select")){var n=t.options[t.selectedIndex];dt("country.iso_code",(null==n?void 0:n.getAttribute("data-c")).toUpperCase(),{reevaluate:!1})}dt(e,r,{reevaluate:!0}),Z()}(e)}}function K(t,e){t.innerText=z(t,e)}function Q(t,e){var r=e.get_country_iso()||U(t).default;r&&t.classList.add("flag-icon-"+r)}function V(t,e){(F(t,"data-c",e.get_country_iso())||F(t,"data-c",""))&&X(t,"change")}function tt(t,e){t.value=z(t,e),X(t,"change")}var et=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("expected both arguments to be arrays");for(var r=[],n=function(t){for(var e={},r=0;r<t.length;r++){var n=t[r];e.hasOwnProperty(n)||(e[n]=!0)}return e}(e),o={},i=0;i<t.length;i++){var a=t[i];n.hasOwnProperty(a)&&!o.hasOwnProperty(a)&&(r.push(a),o[a]=!0)}return r};function rt(t,e){var r=U(t),n=function(t,e,r){var n=["name","iso_code","iso_code3","code","geoname_id"],o="or"!==t.op;t.conditions.forEach((function(i){var a=!1,u=[],c=r.get_raw(i.p);null===c?a=!1:"object"==typeof c?n.forEach((function(t){c[t]?u.push(c[t]):"name"==t&&u.push(r.get_with_locales(i.p,e.lang))})):u=[c],a=function(t,e){!0===e[0]?e=["true","yes","y","1"]:!1===e[0]&&(e=["false","no","n","0",""]);if(e=e.map((function(t){return String(t).toLowerCase()})),-1!==(t=t.split(",")).indexOf("")&&0===e.length)return!0;return et(t,e).length>0}(i.v,u),i.not&&(a=!a),o="or"===t.op?o||a:o&&a})),t.not&&(o=!o);return o}(r.parsed,r,e);n?(t.style.display="",t.classList.remove("geoip-hidden"),t.classList.add("geoip-shown")):(t.style.display="none",t.classList.add("geoip-hidden"),t.classList.remove("geoip-shown"))}var nt,ot=function(){document.addEventListener("change",$,!1)},it=(nt=r(t(o).mark((function e(){return t(o).wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,R;case 2:M("js-geoip-detect-shortcode","could not execute shortcode(s) [geoip_detect2 ...]",K),M("js-geoip-detect-flag","could not configure the flag(s)",Q),M("js-geoip-text-input","could not set the value of the text input field(s)",tt),M("js-geoip-detect-country-select","could not set the value of the select field(s)",V),M("js-geoip-detect-show-if","could not execute the show-if/hide-if conditions",rt);case 7:case"end":return t.stop()}}),e)}))),function(){return nt.apply(this,arguments)});function at(){return ut.apply(this,arguments)}function ut(){return(ut=r(t(o).mark((function e(){var r;return t(o).wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T();case 2:if(!(r=t.sent).error()){t.next=6;break}return console.error("Geolocation IP Detection Error (could not add CSS-classes to body): "+r.error()),t.abrupt("return");case 6:return t.next=8,R;case 8:ct(r);case 9:case"end":return t.stop()}}),e)})))).apply(this,arguments)}function ct(t){var e,r,n,o=function(t){return{country:t.get("country.iso_code"),"country-is-in-european-union":t.get("country.is_in_european_union",!1),continent:t.get("continent.code"),province:t.get("most_specific_subdivision.iso_code")}}(t),i=document.getElementsByTagName("body")[0];r="geoip-",n=(e=i).className.split(" ").filter((function(t){return!t.startsWith(r)})),e.className=n.join(" ").trim();var a=!0,u=!1,c=void 0;try{for(var s,l=Object.keys(o)[Symbol.iterator]();!(a=(s=l.next()).done);a=!0){var f=s.value,d=o[f];d&&("string"==typeof d?i.classList.add("geoip-".concat(f,"-").concat(d)):i.classList.add("geoip-".concat(f)))}}catch(t){u=!0,c=t}finally{try{a||null==l.return||l.return()}finally{if(u)throw c}}}var st=!0;function lt(){st&&(ot(),st=!1),j.do_body_classes&&at(),it(),k=b()}function ft(t){return"number"==typeof(t=t||{})&&(t={duration_in_days:t}),t.duration_in_days=t.duration_in_days||j.cookie_duration_in_days,t.duration_in_days<0?(console.warn("Geolocation IP Detection set_override_data() did nothing: A negative duration doesn't make sense. If you want to remove the override, use remove_override() instead."),!1):(void 0===t.reevaluate&&(t.reevaluate=!0),t)}function dt(t,e,r){var n=b();n=function(t,e,r){t=t||{},e=f(e=e||"");var n=s(t,e);return"object"==typeof n&&"object"==typeof n.names&&(e+=".name"),e.endsWith(".name")&&(e+="s",r={en:r}),I(t,e,r),t}(n,t,e),pt(n,r)}function pt(t,e){return e=ft(e),t&&"function"==typeof t.serialize&&(t=t.serialize()),function(t,e){if(I(t=t||{},"extra.override",!0),_(j.cookie_name,t,86400*e.duration_in_days),e.reevaluate&&!C(t,L()))return lt(),!0;return!1}(t,e)}lt(),window.geoip_detect.get_info=T,window.geoip_detect.set_override=pt,window.geoip_detect.set_override_with_merge=dt,window.geoip_detect.remove_override=function(t){return t=ft(t),_(j.cookie_name,{},-1),t.reevaluate&&lt(),!0}}();
2
  //# sourceMappingURL=frontend.js.map
1
+ !function(){function e(e){return e&&e.__esModule?e.default:e}function t(e,t,r,n,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void r(e)}c.done?t(u):Promise.resolve(u).then(n,o)}function r(e){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=e.apply(r,n);function c(e){t(a,o,i,c,u,"next",e)}function u(e){t(a,o,i,c,u,"throw",e)}c(void 0)}))}}function n(e){return e&&e.constructor===Symbol?"symbol":typeof e}var o={},i=function(e){"use strict";var t,r=function(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]},n=function(e,t,r,n){var o=t&&t.prototype instanceof i?t:i,a=Object.create(o.prototype),c=new p(n||[]);return a._invoke=l(e,r,c),a},o=function(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}},i=function(){},a=function(){},c=function(){},u=function(e){["next","throw","return"].forEach((function(t){r(e,t,(function(e){return this._invoke(t,e)}))}))},s=function(e,t){function r(n,i,a,c){var u=o(e[n],e,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==typeof l&&g.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,a,c)}),(function(e){r("throw",e,a,c)})):t.resolve(l).then((function(e){s.value=e,a(s)}),(function(e){return r("throw",e,a,c)}))}c(u.arg)}var n;this._invoke=function(e,o){function i(){return new t((function(t,n){r(e,o,t,n)}))}return n=n?n.then(i,i):i()}},l=function(e,t,r){var n=x;return function(i,a){if(n===k)throw new Error("Generator is already running");if(n===L){if("throw"===i)throw a;return v()}for(r.method=i,r.arg=a;;){var c=r.delegate;if(c){var u=T(c,r);if(u){if(u===j)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===x)throw n=L,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=k;var s=o(e,t,r);if("normal"===s.type){if(n=r.done?L:E,s.arg===j)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=L,r.method="throw",r.arg=s.arg)}}},f=function(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)},d=function(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t},p=function(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)},h=function(e){if(e){var r=e[_];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function r(){for(;++n<e.length;)if(g.call(e,n))return r.value=e[n],r.done=!1,r;return r.value=t,r.done=!0,r};return o.next=o}}return{next:v}},v=function(){return{value:t,done:!0}},y=Object.prototype,g=y.hasOwnProperty,m="function"==typeof Symbol?Symbol:{},_=m.iterator||"@@iterator",w=m.asyncIterator||"@@asyncIterator",b=m.toStringTag||"@@toStringTag";try{r({},"")}catch(e){r=function(e,t,r){return e[t]=r}}e.wrap=n;var x="suspendedStart",E="suspendedYield",k="executing",L="completed",j={},A={};r(A,_,(function(){return this}));var S=Object.getPrototypeOf,O=S&&S(S(h([])));O&&O!==y&&g.call(O,_)&&(A=O);var P=c.prototype=i.prototype=Object.create(A);function T(e,r){var n=e.iterator[r.method];if(n===t){if(r.delegate=null,"throw"===r.method){if(e.iterator.return&&(r.method="return",r.arg=t,T(e,r),"throw"===r.method))return j;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return j}var i=o(n,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,j;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,j):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,j)}return a.prototype=c,r(P,"constructor",c),r(c,"constructor",a),a.displayName=r(c,b,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===a||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,r(e,b,"GeneratorFunction")),e.prototype=Object.create(P),e},e.awrap=function(e){return{__await:e}},u(s.prototype),r(s.prototype,w,(function(){return this})),e.AsyncIterator=s,e.async=function(t,r,o,i,a){void 0===a&&(a=Promise);var c=new s(n(t,r,o,i),a);return e.isGeneratorFunction(r)?c:c.next().then((function(e){return e.done?e.value:c.next()}))},u(P),r(P,b,"Generator"),r(P,_,(function(){return this})),r(P,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=h,p.prototype={constructor:p,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(d),!e)for(var r in this)"t"===r.charAt(0)&&g.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){var r=function(r,o){return a.type="throw",a.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o};if(this.done)throw e;for(var n=this,o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=g.call(i,"catchLoc"),u=g.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&g.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,j):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),j},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),d(r),j}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;d(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:h(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),j}},e}(o);try{regeneratorRuntime=i}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=i:Function("r","regeneratorRuntime = r")(i)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var s=function(e,t,r){if(!e)return r;var o,i;Array.isArray(t)&&(o=t.slice(0));"string"==typeof t&&(o=t.split("."));"symbol"==(void 0===t?"undefined":n(t))&&(o=[t]);if(!Array.isArray(o))throw new Error("props arg must be an array, a string or a symbol");for(;o.length;){if(i=o.shift(),!e)return r;if(void 0===(e=e[i]))return r}return e};var l=function(e,t){if("object"==typeof e&&null!==e){if("object"==typeof e.names&&"object"==typeof t)for(var r=0;r<t.length;r++){var n=t[r];if(e.names[n])return e.names[n]}return e.name?e.name:""}return e},f=function(e){return e=e.split(".").map((function(e){return"string"!=typeof e||"string"!=typeof e[0]?"":e=(e=e[0].toLowerCase()+e.slice(1)).replace(/([A-Z])/g,"_$1").toLowerCase()})).join(".")},d=function(){"use strict";function e(t,r){a(this,e),u(this,"data",{}),u(this,"default_locales",[]),this.data=t||{is_empty:!0},this.default_locales=["en"],this.default_locales=this._process_locales(r)}var t,r,o;return t=e,r=[{key:"get",value:function(e,t){return this.get_with_locales(e,null,t)}},{key:"get_raw",value:function(e){return e=f(e),s(this.data,e,null)}},{key:"has_property",value:function(e){return null!==this._lookup_with_locales(e,this.default_locales,null)}},{key:"_lookup_with_locales",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";t=this._process_locales(t),".name"===e.substr(-5)&&(e=e.substr(0,e.length-5));var n=this.get_raw(e);return null!==(n=l(n,t))&&""!==n||(n=r),n}},{key:"_process_locales",value:function(e){return"string"==typeof e&&(e=[e]),Array.isArray(e)&&0!==e.length||(e=this.default_locales),e}},{key:"get_with_locales",value:function(e,t,r){var o=this._lookup_with_locales(e,t,r);return"object"==typeof o&&console.warn('Geolocation IP Detection: The property "'+e+'" is of type "'+(void 0===o?"undefined":n(o))+'", should be string or similar',o),void 0===o?(console.warn('Geolocation IP Detection: The property "'+e+'" is not defined, please check spelling or maybe you need a different data source',{data:this.data}),""):o}},{key:"get_country_iso",value:function(){var e=this.get("country.iso_code");return e&&(e=e.substr(0,2).toLowerCase()),e}},{key:"is_empty",value:function(){return this.get("is_empty",!1)}},{key:"error",value:function(){return this.get_raw("extra.error")||""}},{key:"serialize",value:function(){return this.data}}],r&&c(t.prototype,r),o&&c(t,o),e}(),p=d,h=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET",r=new XMLHttpRequest;return new Promise((function(n,o){r.onreadystatechange=function(){4===r.readyState&&(r.status>=200&&r.status<300?n(r):o({status:r.status,statusText:r.statusText,request:r}))},r.open(t||"GET",e,!0),r.send()}))},v=function(e){try{return JSON.parse(e)}catch(t){return y("Invalid JSON: "+e)}};function y(e){return{is_empty:!0,extra:{error:e}}}var g,m=(g=r(e(o).mark((function t(r){var n,i,a=arguments;return e(o).wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=a.length>1&&void 0!==a[1]?a[1]:"GET",e.prev=1,e.next=4,h(r,n);case 4:if((i=e.sent).responseText&&"0"!==i.responseText){e.next=7;break}return e.abrupt("return",y("Got an empty response from server. Did you enable AJAX in the options?"));case 7:return e.abrupt("return",v(i.responseText));case 10:return e.prev=10,e.t0=e.catch(1),e.abrupt("return",v(e.t0.request.responseText));case 13:case"end":return e.stop()}}),t,null,[[1,10]])}))),function(e){return g.apply(this,arguments)}),_=function(e,t,r){var n={value:t,expires_at:(new Date).getTime()+1e3*r/1};localStorage.setItem(e.toString(),JSON.stringify(n))};var w=function(e){var t=null;try{t=JSON.parse(localStorage.getItem(e.toString()))}catch(e){return null}if(null!==t){if(!(null!==t.expires_at&&t.expires_at<(new Date).getTime()))return t.value;localStorage.removeItem(e.toString())}return null};function b(){return w(j.cookie_name)}function x(e,t){_(j.cookie_name,e,t)}var E,k={};function L(){return k}var j=(null===(E=window.geoip_detect)||void 0===E?void 0:E.options)||{ajaxurl:"/wp-admin/admin-ajax.php",default_locales:["en"],cookie_duration_in_days:7,cookie_name:"geoip-detect-result",do_body_classes:!1},A=null;function S(){if(!A){var e=j.ajaxurl+"?action=geoip_detect2_get_info_from_current_ip";(A=m(e)).then((function(e){var t;(null==e||null===(t=e.extra)||void 0===t?void 0:t.error)&&console.error("Geolocation IP Detection Error: Server returned an error: "+e.extra.error)}))}return A}function O(){return P.apply(this,arguments)}function P(){return(P=r(e(o).mark((function t(){var r,n,i,a,c;return e(o).wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=!1,n=!1,!j.cookie_name){e.next=7;break}if(!(n=b())||!n.extra){e.next=7;break}return!0===n.extra.override?console.info("Geolocation IP Detection: Using cached response (override)"):console.info("Geolocation IP Detection: Using cached response"),e.abrupt("return",n);case 7:return e.prev=7,e.next=10,S();case 10:r=e.sent,e.next=17;break;case 13:e.prev=13,e.t0=e.catch(7),console.log("Weird: Uncaught error...",e.t0),r=e.t0.responseJSON||e.t0;case 17:if(!j.cookie_name){e.next=26;break}if(!0!==(null==(n=b())||null===(i=n.extra)||void 0===i?void 0:i.override)){e.next=23;break}return console.info("Geolocation IP Detection: Using cached response (override)"),e.abrupt("return",n);case 23:c=86400*j.cookie_duration_in_days,(null==r||null===(a=r.extra)||void 0===a?void 0:a.error)&&(c=60),x(r,c);case 26:return e.abrupt("return",r);case 27:case"end":return e.stop()}}),t,null,[[7,13]])})))).apply(this,arguments)}function T(){return G.apply(this,arguments)}function G(){return(G=r(e(o).mark((function t(){var r,i;return e(o).wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,O();case 2:return"object"!=typeof(r=e.sent)&&(console.error("Geolocation IP Detection Error: Record should be an object, not a "+(void 0===r?"undefined":n(r)),r),r={extra:{error:r||"Network error, look at the original server response ..."}}),i=new p(r,j.default_locales),e.abrupt("return",i);case 6:case"end":return e.stop()}}),t)})))).apply(this,arguments)}var I=function(e,t,r){var o,i,a;Array.isArray(t)&&(o=t.slice(0));"string"==typeof t&&(o=t.split("."));"symbol"==(void 0===t?"undefined":n(t))&&(o=[t]);if(!Array.isArray(o))throw new Error("props arg must be an array, a string or a symbol");if(!(i=o.pop()))return!1;N(i);for(;a=o.shift();)if(N(a),void 0===e[a]&&(e[a]={}),!(e=e[a])||"object"!=typeof e)return!1;return e[i]=r,!0};function N(e){if("__proto__"==e||"constructor"==e||"prototype"==e)throw new Error("setting of prototype values not supported")}var C=D;function D(e,t){return e===t||(e!=e&&t!=t||(void 0===e?"undefined":n(e))==(void 0===t?"undefined":n(t))&&{}.toString.call(e)=={}.toString.call(t)&&(e===Object(e)&&(!!e&&(Array.isArray(e)?F(e,t):"[object Set]"=={}.toString.call(e)?F(Array.from(e),Array.from(t)):"[object Object]"=={}.toString.call(e)?function(e,t){var r=Object.keys(e),n=r.length;if(n!=Object.keys(t).length)return!1;for(var o=0;o<n;o++){var i=r[o];if(!t.hasOwnProperty(i)||!D(e[i],t[i]))return!1}return!0}(e,t):function(e,t){return e.toString()===t.toString()}(e,t)))))}function F(e,t){var r=e.length;if(r!=t.length)return!1;for(var n=0;n<r;n++)if(!D(e[n],t[n]))return!1;return!0}var J=new Promise((function(e){"loading"===document.readyState?document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"loading"!=document.readyState&&e()})):e()}));function R(e,t,r){for(var n=0;n<e.options.length;n++)if(e.options[n].getAttribute(t)===r)return e.selectedIndex=n,!0;return!1}function U(e){var t=e.getAttribute("data-options");try{return JSON.parse(t)}catch(e){return{}}}function z(e,t,r){return M.apply(this,arguments)}function M(){return(M=r(e(o).mark((function t(r,n,i){var a,c;return e(o).wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((a=document.getElementsByClassName(r)).length){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,T();case 5:if(!(c=e.sent).error()){e.next=9;break}return console.error("Geolocation IP Detection Error ("+n+"): "+c.error()),e.abrupt("return");case 9:Array.from(a).forEach((function(e){return i(e,c)}));case 10:case"end":return e.stop()}}),t)})))).apply(this,arguments)}function q(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=U(e);return r=r||n.property,n.skip_cache&&console.warn("Geolocation IP Detection: The property 'skip_cache' is ignored in AJAX mode. You could disable the response caching on the server by setting the constant GEOIP_DETECT_READER_CACHE_TIME."),t.get_with_locales(r,n.lang,n.default)}var W=!1;function X(e,t){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;W=!0,window.CustomEvent&&"function"==typeof window.CustomEvent?r=new CustomEvent(t,{detail:n}):(r=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,n),e.dispatchEvent(r),W=!1}var Y=!1,B=0;function H(){return B++,Y||B>10?(console.warn("Error: Thats weird! autosave change detected a recursion ("+B+")! Please file a bug report about this and include the first 10 lines of the callstack below:"),console.trace(),!1):(Y=!0,!0)}function Z(){Y=!1}function $(e){if(!W){var t=e.target;(null==t?void 0:t.matches)&&t.matches(".js-geoip-detect-input-autosave")&&function(e){var t=U(e).property,r=e.value;if(!H())return;if(e.matches("select.js-geoip-detect-country-select")){var n=e.options[e.selectedIndex];de("country.iso_code",(null==n?void 0:n.getAttribute("data-c")).toUpperCase(),{reevaluate:!1})}de(t,r,{reevaluate:!0}),Z()}(t)}}function K(e,t){e.innerText=q(e,t)}function Q(e,t){var r=t.get_country_iso()||U(e).default;r&&e.classList.add("flag-icon-"+r)}function V(e,t){(R(e,"data-c",t.get_country_iso())||R(e,"data-c",""))&&X(e,"change")}function ee(e,t){e.value=q(e,t),X(e,"change")}var te=function(e,t){if(!Array.isArray(e)||!Array.isArray(t))throw new Error("expected both arguments to be arrays");for(var r=[],n=function(e){for(var t={},r=0;r<e.length;r++){var n=e[r];t.hasOwnProperty(n)||(t[n]=!0)}return t}(t),o={},i=0;i<e.length;i++){var a=e[i];n.hasOwnProperty(a)&&!o.hasOwnProperty(a)&&(r.push(a),o[a]=!0)}return r};function re(e,t){var r=U(e),n=function(e,t,r){var n=["name","iso_code","iso_code3","code","geoname_id"],o="or"!==e.op;e.conditions.forEach((function(i){var a=!1,c=[],u=r.get_raw(i.p);null===u?a=!1:"object"==typeof u?n.forEach((function(e){u[e]?c.push(u[e]):"name"==e&&c.push(r.get_with_locales(i.p,t.lang))})):c=[u],a=function(e,t){!0===t[0]?t=["true","yes","y","1"]:!1===t[0]&&(t=["false","no","n","0",""]);if(t=t.map((function(e){return String(e).toLowerCase()})),-1!==(e=e.split(",")).indexOf("")&&0===t.length)return!0;return te(e,t).length>0}(i.v,c),i.not&&(a=!a),o="or"===e.op?o||a:o&&a})),e.not&&(o=!o);return o}(r.parsed,r,t);n?(e.style.display="",e.classList.remove("geoip-hidden"),e.classList.add("geoip-shown")):(e.style.display="none",e.classList.add("geoip-hidden"),e.classList.remove("geoip-shown"))}var ne,oe=function(){document.addEventListener("change",$,!1)},ie=(ne=r(e(o).mark((function t(){return e(o).wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,J;case 2:z("js-geoip-detect-shortcode","could not execute shortcode(s) [geoip_detect2 ...]",K),z("js-geoip-detect-flag","could not configure the flag(s)",Q),z("js-geoip-text-input","could not set the value of the text input field(s)",ee),z("js-geoip-detect-country-select","could not set the value of the select field(s)",V),z("js-geoip-detect-show-if","could not execute the show-if/hide-if conditions",re);case 7:case"end":return e.stop()}}),t)}))),function(){return ne.apply(this,arguments)});function ae(){return ce.apply(this,arguments)}function ce(){return(ce=r(e(o).mark((function t(){var r;return e(o).wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T();case 2:if(!(r=e.sent).error()){e.next=6;break}return console.error("Geolocation IP Detection Error (could not add CSS-classes to body): "+r.error()),e.abrupt("return");case 6:return e.next=8,J;case 8:ue(r);case 9:case"end":return e.stop()}}),t)})))).apply(this,arguments)}function ue(e){var t,r,n,o=function(e){return{country:e.get("country.iso_code"),"country-is-in-european-union":e.get("country.is_in_european_union",!1),continent:e.get("continent.code"),province:e.get("most_specific_subdivision.iso_code"),city:e.get("city.names.en")}}(e),i=document.getElementsByTagName("body")[0];r="geoip-",n=(t=i).className.split(" ").filter((function(e){return!e.startsWith(r)})),t.className=n.join(" ").trim();var a,c=!0,u=!1,s=void 0;try{for(var l,f=Object.keys(o)[Symbol.iterator]();!(c=(l=f.next()).done);c=!0){var d=l.value,p=(a=o[d],a=(a=(a+="").replace(/%[a-fA-F0-9][a-fA-F0-9]/g,"")).replace(/[^A-Za-z0-9_-]/g,""));p&&("string"==typeof p?i.classList.add("geoip-".concat(d,"-").concat(p)):i.classList.add("geoip-".concat(d)))}}catch(e){u=!0,s=e}finally{try{c||null==f.return||f.return()}finally{if(u)throw s}}}var se=!0;function le(){se&&(oe(),se=!1),j.do_body_classes&&ae(),ie(),k=b()}function fe(e){return"number"==typeof(e=e||{})&&(e={duration_in_days:e}),e.duration_in_days=e.duration_in_days||j.cookie_duration_in_days,e.duration_in_days<0?(console.warn("Geolocation IP Detection set_override_data() did nothing: A negative duration doesn't make sense. If you want to remove the override, use remove_override() instead."),!1):(void 0===e.reevaluate&&(e.reevaluate=!0),e)}function de(e,t,r){var n=b();n=function(e,t,r){e=e||{},t=f(t=t||"");var n=s(e,t);return"object"==typeof n&&"object"==typeof n.names&&(t+=".name"),t.endsWith(".name")&&(t+="s",r={en:r}),I(e,t,r),e}(n,e,t),pe(n,r)}function pe(e,t){return t=fe(t),e&&"function"==typeof e.serialize&&(e=e.serialize()),function(e,t){if(I(e=e||{},"extra.override",!0),_(j.cookie_name,e,86400*t.duration_in_days),t.reevaluate&&!C(e,L()))return le(),!0;return!1}(e,t)}le(),window.geoip_detect.get_info=T,window.geoip_detect.set_override=pe,window.geoip_detect.set_override_with_merge=de,window.geoip_detect.remove_override=function(e){return e=fe(e),_(j.cookie_name,{},-1),e.reevaluate&&le(),!0}}();
2
  //# sourceMappingURL=frontend.js.map
js/dist/frontend.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["node_modules/@swc/helpers/src/_async_to_generator.mjs","node_modules/@swc/helpers/src/_type_of.mjs","node_modules/regenerator-runtime/runtime.js","node_modules/@swc/helpers/src/_class_call_check.mjs","node_modules/@swc/helpers/src/_create_class.mjs","node_modules/@swc/helpers/src/_define_property.mjs","node_modules/just-safe-get/index.mjs","js/models/record.js","js/lib/xhr.js","js/lib/localStorageAccess.js","js/lookup/storage.js","js/lookup/get_info.js","node_modules/just-safe-set/index.mjs","node_modules/just-compare/index.mjs","js/lib/html.js","js/shortcodes/helpers.js","js/lib/events.js","js/lib/check-recursive.js","js/shortcodes/onchange.js","js/shortcodes/normal.js","node_modules/just-intersect/index.mjs","js/shortcodes/show-if.js","js/shortcodes/index.js","js/body_classes.js","js/main.js","js/lookup/override.js","js/frontend.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n","export default function _typeof(obj) {\n \"@swc/helpers - typeof\";\n return obj && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n","var objectSafeGet = get;\n\n/*\n const obj = {a: {aa: {aaa: 2}}, b: 4};\n\n get(obj, 'a.aa.aaa'); // 2\n get(obj, ['a', 'aa', 'aaa']); // 2\n\n get(obj, 'b.bb.bbb'); // undefined\n get(obj, ['b', 'bb', 'bbb']); // undefined\n\n get(obj.a, 'aa.aaa'); // 2\n get(obj.a, ['aa', 'aaa']); // 2\n\n get(obj.b, 'bb.bbb'); // undefined\n get(obj.b, ['bb', 'bbb']); // undefined\n\n get(obj.b, 'bb.bbb', 42); // 42\n get(obj.b, ['bb', 'bbb'], 42); // 42\n\n get(null, 'a'); // undefined\n get(undefined, ['a']); // undefined\n\n get(null, 'a', 42); // 42\n get(undefined, ['a'], 42); // 42\n\n const obj = {a: {}};\n const sym = Symbol();\n obj.a[sym] = 4;\n get(obj.a, sym); // 4\n*/\n\nfunction get(obj, propsArg, defaultValue) {\n if (!obj) {\n return defaultValue;\n }\n var props, prop;\n if (Array.isArray(propsArg)) {\n props = propsArg.slice(0);\n }\n if (typeof propsArg == 'string') {\n props = propsArg.split('.');\n }\n if (typeof propsArg == 'symbol') {\n props = [propsArg];\n }\n if (!Array.isArray(props)) {\n throw new Error('props arg must be an array, a string or a symbol');\n }\n while (props.length) {\n prop = props.shift();\n if (!obj) {\n return defaultValue;\n }\n obj = obj[prop];\n if (obj === undefined) {\n return defaultValue;\n }\n }\n return obj;\n}\n\nexport {objectSafeGet as default};\n","import _get from 'just-safe-get';\n\n\nconst _get_localized = function(ret, locales) {\n if (typeof(ret) === 'object' && ret !== null) {\n if (typeof (ret.names) === 'object' && typeof (locales) === 'object') {\n for (let i = 0 ; i < locales.length ; i++) {\n let locale = locales[i];\n\n if (ret.names[locale]) {\n return ret.names[locale];\n }\n }\n }\n\n if (ret.name) {\n return ret.name;\n }\n\n return '';\n }\n return ret;\n}\n\nexport const camelToUnderscore = function(key) {\n key = key.split('.').map((x) => {\n if (typeof (x) !== 'string' || typeof (x[0]) !== 'string') {\n return '';\n }\n x = x[0].toLowerCase() + x.slice(1); // to allow \"MostSpecificSubdivision\"\n x = x.replace(/([A-Z])/g, \"_$1\").toLowerCase();\n return x;\n }).join('.');\n\n return key;\n}\n\nclass Record {\n data = {};\n default_locales = [];\n\n constructor(data, default_locales) {\n this.data = data || { is_empty: true };\n \n this.default_locales = ['en']; \n this.default_locales = this._process_locales(default_locales);\n }\n\n get(prop, default_value) {\n return this.get_with_locales(prop, null, default_value);\n }\n\n get_raw(prop) {\n prop = camelToUnderscore(prop);\n return _get(this.data, prop, null);\n }\n \n has_property(prop) {\n const ret = this._lookup_with_locales(prop, this.default_locales, null)\n return ret !== null;\n }\n\n _lookup_with_locales(prop, locales, default_value = '') {\n locales = this._process_locales(locales);\n\n // Treat pseudo-property 'name' as if it never existed\n if (prop.substr(-5) === '.name') {\n prop = prop.substr(0, prop.length - 5);\n }\n\n let ret = this.get_raw(prop);\n \n // Localize property, if possible\n ret = _get_localized(ret, locales);\n \n if (ret === null || ret === '') {\n ret = default_value;\n }\n\n return ret;\n }\n \n _process_locales(locales) {\n if (typeof(locales) === 'string') {\n locales = [ locales ];\n }\n if (!Array.isArray(locales) || locales.length === 0) {\n locales = this.default_locales;\n }\n return locales;\n }\n\n get_with_locales(prop, locales, default_value) {\n const ret = this._lookup_with_locales(prop, locales, default_value);\n\n if (typeof(ret) === 'object') {\n console.warn('Geolocation IP Detection: The property \"' + prop + '\" is of type \"' + typeof (ret) + '\", should be string or similar', ret)\n }\n if (typeof(ret) === 'undefined') {\n console.warn('Geolocation IP Detection: The property \"' + prop + '\" is not defined, please check spelling or maybe you need a different data source', { data: this.data })\n return '';\n }\n\n return ret;\n }\n\n get_country_iso() {\n let country = this.get('country.iso_code');\n if(country) {\n country = country.substr(0, 2).toLowerCase();\n }\n return country;\n }\n\n /**\n * Check if there is information available for this IP\n * @returns boolean \n */\n is_empty() {\n return this.get('is_empty', false);\n }\n \n /**\n * Get error message, if any\n * @return string Error Message\n */\n error() {\n return this.get_raw('extra.error') || '';\n }\n\n /**\n * Get the raw data of this object\n * @returns object\n */\n serialize() {\n return this.data;\n }\n}\n\nexport default Record;","// @see https://gomakethings.com/promise-based-xhr/\n\nexport const makeRequest = function (url, method = 'GET') {\n\n // Create the XHR request\n var request = new XMLHttpRequest();\n\n // Return it as a Promise\n return new Promise(function (resolve, reject) {\n\n // Setup our listener to process compeleted requests\n request.onreadystatechange = function () {\n\n // Only run if the request is complete\n if (request.readyState !== 4) return;\n\n // Process the response\n if (request.status >= 200 && request.status < 300) {\n // If successful\n resolve(request);\n } else {\n // If failed\n reject({\n status: request.status,\n statusText: request.statusText,\n request: request\n });\n }\n\n };\n\n // Setup our HTTP request\n request.open(method || 'GET', url, true);\n\n // Send the request\n request.send();\n\n });\n};\n\nexport const jsonDecodeIfPossible = function(str) {\n try {\n return JSON.parse(str);\n } catch(e) {\n return createErrorObject('Invalid JSON: ' + str);\n }\n}\n\nfunction createErrorObject(errorMsg) {\n return {\n is_empty: true,\n extra: {\n error: errorMsg\n }\n };\n}\n\nexport const makeJSONRequest = async function(url, method = 'GET') {\n try {\n const request = await makeRequest(url, method);\n if (!request.responseText || request.responseText === '0') {\n return createErrorObject('Got an empty response from server. Did you enable AJAX in the options?');\n }\n return jsonDecodeIfPossible(request.responseText);\n } catch(e) {\n return jsonDecodeIfPossible(e.request.responseText);\n }\n}\n","export const setLocalStorage = function (variable, value, ttl_sec) {\n var data = {value: value, expires_at: new Date().getTime() + (ttl_sec * 1000) / 1 };\n localStorage.setItem(variable.toString(), JSON.stringify(data));\n};\n\nexport function removeLocalStorage(variable) {\n localStorage.removeItem(variable);\n}\n\nexport const getLocalStorage = function (variable) {\n let data = null;\n try {\n data = JSON.parse(localStorage.getItem(variable.toString()));\n } catch(e) {\n return null;\n }\n if (data !== null) {\n if (data.expires_at !== null && data.expires_at < new Date().getTime()) {\n localStorage.removeItem(variable.toString());\n } else {\n return data.value;\n }\n }\n return null;\n}","import { getLocalStorage, setLocalStorage } from '../lib/localStorageAccess';\nimport { options as globalOptions } from './get_info';\nimport Record from '../models/record';\n\n// Sync function in case it is known that no AJAX will occur\nexport function getRecordDataFromLocalStorage() {\n return getLocalStorage(globalOptions.cookie_name);\n}\n\nexport function setRecordDataToLocalStorage(data, cache_duration) {\n setLocalStorage(globalOptions.cookie_name, data, cache_duration);\n}\n\nlet lastEvaluated = {};\nexport function getRecordDataLastEvaluated() {\n return lastEvaluated;\n}\nexport function setRecordDataLastEvaluated() {\n lastEvaluated = getRecordDataFromLocalStorage();\n}\n\n\nexport function get_info_stored_locally_record() {\n return new Record(getRecordDataFromLocalStorage(), globalOptions.default_locales);\n}\n","import Record from '../models/record';\n\nimport { makeJSONRequest } from '../lib/xhr';\nimport { getRecordDataFromLocalStorage, setRecordDataToLocalStorage } from \"./storage\";\n\n\nexport const options = window.geoip_detect?.options || {\n ajaxurl: \"/wp-admin/admin-ajax.php\",\n default_locales: ['en'],\n cookie_duration_in_days: 7,\n cookie_name: 'geoip-detect-result',\n do_body_classes: false\n};\n\nlet ajaxPromise = null;\n\nfunction get_info_raw() {\n if (!ajaxPromise) {\n // Do Ajax Request only once per page load\n const url = options.ajaxurl + '?action=geoip_detect2_get_info_from_current_ip'\n\n ajaxPromise = makeJSONRequest(url);\n \n ajaxPromise.then((response) => {\n if (response?.extra?.error) {\n console.error('Geolocation IP Detection Error: Server returned an error: ' + response.extra.error);\n }\n })\n }\n\n return ajaxPromise;\n}\n\nasync function get_info_cached() {\n let response = false;\n let storedResponse = false;\n\n // 1) Load Info from localstorage cookie cache, if possible\n if (options.cookie_name) {\n storedResponse = getRecordDataFromLocalStorage()\n if (storedResponse && storedResponse.extra) {\n if (storedResponse.extra.override === true) {\n console.info('Geolocation IP Detection: Using cached response (override)');\n } else {\n console.info('Geolocation IP Detection: Using cached response');\n }\n return storedResponse;\n }\n }\n\n // 2) Get response\n try {\n response = await get_info_raw();\n } catch (err) {\n console.log('Weird: Uncaught error...', err);\n response = err.responseJSON || err;\n }\n\n // 3) Save info to localstorage cookie cache\n if (options.cookie_name) {\n\n // Check if Override has been set now\n storedResponse = getRecordDataFromLocalStorage()\n if (storedResponse?.extra?.override === true) {\n console.info('Geolocation IP Detection: Using cached response (override)');\n return storedResponse;\n }\n\n let cache_duration = options.cookie_duration_in_days * 24 * 60 * 60;\n if (response?.extra?.error)\n cache_duration = 60; // Cache errors only for 1 minute, then try again\n \n setRecordDataToLocalStorage(response, cache_duration);\n }\n\n return response;\n}\n\n\n/**\n * Load the data from the server\n * \n * (It can also be loaded from the browser localstorage, if the record data is present there already.)\n * \n * @api\n * @return Promise(Record)\n */\nexport async function get_info() {\n let response = await get_info_cached();\n\n if (typeof (response) !== 'object') {\n console.error('Geolocation IP Detection Error: Record should be an object, not a ' + typeof (response), response);\n response = { 'extra': { 'error': response || 'Network error, look at the original server response ...' } };\n }\n\n const record = new Record(response, options.default_locales);\n return record;\n}\n","var objectSafeSet = set;\n\n/*\n var obj1 = {};\n set(obj1, 'a.aa.aaa', 4); // true\n obj1; // {a: {aa: {aaa: 4}}}\n\n var obj2 = {};\n set(obj2, ['a', 'aa', 'aaa'], 4); // true\n obj2; // {a: {aa: {aaa: 4}}}\n\n var obj3 = {a: {aa: {aaa: 2}}};\n set(obj3, 'a.aa.aaa', 3); // true\n obj3; // {a: {aa: {aaa: 3}}}\n\n // don't clobber existing\n var obj4 = {a: {aa: {aaa: 2}}};\n set(obj4, 'a.aa', {bbb: 7}); // false\n\n const obj5 = {a: {}};\n const sym = Symbol();\n set(obj5.a, sym, 7); // true\n obj5; // {a: {Symbol(): 7}}\n*/\n\nfunction set(obj, propsArg, value) {\n var props, lastProp;\n if (Array.isArray(propsArg)) {\n props = propsArg.slice(0);\n }\n if (typeof propsArg == 'string') {\n props = propsArg.split('.');\n }\n if (typeof propsArg == 'symbol') {\n props = [propsArg];\n }\n if (!Array.isArray(props)) {\n throw new Error('props arg must be an array, a string or a symbol');\n }\n lastProp = props.pop();\n if (!lastProp) {\n return false;\n }\n prototypeCheck(lastProp);\n var thisProp;\n while ((thisProp = props.shift())) {\n prototypeCheck(thisProp);\n if (typeof obj[thisProp] == 'undefined') {\n obj[thisProp] = {};\n }\n obj = obj[thisProp];\n if (!obj || typeof obj != 'object') {\n return false;\n }\n }\n obj[lastProp] = value;\n return true;\n}\n\nfunction prototypeCheck(prop) {\n // coercion is intentional to catch prop values like `['__proto__']`\n if (prop == '__proto__' || prop == 'constructor' || prop == 'prototype') {\n throw new Error('setting of prototype values not supported');\n }\n}\n\nexport {objectSafeSet as default};\n","var collectionCompare = compare;\n\n/*\n primitives: value1 === value2\n functions: value1.toString == value2.toString\n arrays: if length, sequence and values of properties are identical\n objects: if length, names and values of properties are identical\n compare([[1, [2, 3]], [[1, [2, 3]]); // true\n compare([[1, [2, 3], 4], [[1, [2, 3]]); // false\n compare({a: 2, b: 3}, {a: 2, b: 3}); // true\n compare({a: 2, b: 3}, {b: 3, a: 2}); // true\n compare({a: 2, b: 3, c: 4}, {a: 2, b: 3}); // false\n compare({a: 2, b: 3}, {a: 2, b: 3, c: 4}); // false\n compare([[1, [2, {a: 4}], 4], [[1, [2, {a: 4}]]); // true\n*/\n\nfunction compare(value1, value2) {\n if (value1 === value2) {\n return true;\n }\n\n /* eslint-disable no-self-compare */\n // if both values are NaNs return true\n if (value1 !== value1 && value2 !== value2) {\n return true;\n }\n\n if (\n typeof value1 != typeof value2 || // primitive != primitive wrapper\n {}.toString.call(value1) != {}.toString.call(value2) // check for other (maybe nullish) objects\n ) {\n return false;\n }\n\n if (value1 !== Object(value1)) {\n // non equal primitives\n return false;\n }\n\n if (!value1) {\n return false;\n }\n\n if (Array.isArray(value1)) {\n return compareArrays(value1, value2);\n }\n\n if ({}.toString.call(value1) == '[object Set]') {\n return compareArrays(Array.from(value1), Array.from(value2));\n }\n\n if ({}.toString.call(value1) == '[object Object]') {\n return compareObjects(value1, value2);\n }\n\n return compareNativeSubtypes(value1, value2);\n}\n\nfunction compareNativeSubtypes(value1, value2) {\n // e.g. Function, RegExp, Date\n return value1.toString() === value2.toString();\n}\n\nfunction compareArrays(value1, value2) {\n var len = value1.length;\n\n if (len != value2.length) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (!compare(value1[i], value2[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction compareObjects(value1, value2) {\n var keys1 = Object.keys(value1);\n var len = keys1.length;\n\n if (len != Object.keys(value2).length) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key1 = keys1[i];\n\n if (!(value2.hasOwnProperty(key1) && compare(value1[key1], value2[key1]))) {\n return false;\n }\n }\n\n return true;\n}\n\nexport {collectionCompare as default};\n","export function isUnitTesting() {\n return process.env.JEST_WORKER_ID !== undefined;\n}\n\nexport const domReady = new Promise(resolve => {\n if (isUnitTesting()) {\n resolve();\n }\n\n if (document.readyState === \"loading\") {\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', resolve);\n } else {\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState != 'loading') {\n resolve();\n }\n });\n }\n } else {\n resolve();\n }\n});\n\nexport function selectItemByValue(el, value) {\n for (var i = 0; i < el.options.length; i++) {\n if (el.options[i].value === value) {\n el.selectedIndex = i;\n return true;\n }\n }\n return false;\n}\n\n/**\n * @param {*} el Select Tag\n * @param {string} attributeName HTML attribute name to search by\n * @param {string} attributeValue HTML attribute value to search by\n * @returns boolean TRUE if Value found in select tag\n */\nexport function selectItemByAttribute(el, attributeName, attributeValue) {\n for (let i = 0; i < el.options.length; i++) {\n if (el.options[i].getAttribute(attributeName) === attributeValue) {\n el.selectedIndex = i;\n return true;\n }\n }\n return false;\n}","import { get_info } from \"../lookup/get_info\";\n\n// Get Options from data-options and json parse them\nexport function get_options(el) {\n const raw = el.getAttribute('data-options');\n try {\n return JSON.parse(raw);\n } catch (e) {\n return {};\n }\n}\n\nexport async function action_on_elements(className, errorMessage, callback) {\n const elements = document.getElementsByClassName(className);\n if (!elements.length) return;\n\n const record = await get_info();\n\n if (record.error()) {\n console.error('Geolocation IP Detection Error (' + errorMessage + '): ' + record.error());\n return;\n }\n\n Array.from(elements)\n .forEach(el => callback(el, record));\n}\n\nexport function get_value_from_record(el, record, property = null) {\n const opt = get_options(el);\n property = property || opt.property;\n if (opt.skip_cache) {\n console.warn(\"Geolocation IP Detection: The property 'skip_cache' is ignored in AJAX mode. You could disable the response caching on the server by setting the constant GEOIP_DETECT_READER_CACHE_TIME.\");\n }\n\n return record.get_with_locales(property, opt.lang, opt.default);\n}","\nlet _internalEvent = false;\nexport function isInternalEvent() {\n return _internalEvent;\n}\n\nexport function triggerNativeEvent(el, eventName, options = null) {\n _internalEvent = true;\n\n let event;\n if (window.CustomEvent && typeof window.CustomEvent === 'function') {\n event = new CustomEvent(eventName, {detail : options});\n } else {\n // Compat for IE\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, options);\n }\n el.dispatchEvent(event);\n\n _internalEvent = false;\n}","\nlet _listener_active = false; // for recursion detection (maybe remove later)\nlet _change_counter = 0; \n\nexport function check_recursive_before() {\n _change_counter++;\n if (_listener_active || _change_counter > 10) {\n console.warn('Error: Thats weird! autosave change detected a recursion (' + _change_counter + ')! Please file a bug report about this and include the first 10 lines of the callstack below:');\n console.trace();\n if (process.env.NODE_ENV !== 'production') {\n debugger;\n }\n return false;\n }\n _listener_active = true;\n return true;\n}\n\n\nexport function check_recursive_after() {\n _listener_active = false;\n}","\nimport { check_recursive_after, check_recursive_before } from \"../lib/check-recursive\";\nimport { isInternalEvent } from \"../lib/events\";\nimport { set_override_with_merge } from \"../lookup/override\";\nimport { get_options } from \"./helpers\";\n\nexport function init() {\n document.addEventListener('change', event_listener_autosave_on_change, false);\n}\n\nfunction event_listener_autosave_on_change(event) {\n if (isInternalEvent()) {\n return;\n }\n\n const target = event.target;\n if (target?.matches && target.matches('.js-geoip-detect-input-autosave')) {\n if (process.env.NODE_ENV !== 'production') {\n console.log('autosave on change', target);\n }\n\n autosave_element(target);\n }\n}\n\n/**\n * When calling this method, be very careful not to introduce an infinite loop!\n * @param {*} el \n */\nexport function autosave_element(el) {\n const property = get_options(el).property;\n const value = el.value;\n\n if (!check_recursive_before()) {\n return;\n }\n\n if (el.matches('select.js-geoip-detect-country-select')) {\n const selected = el.options[el.selectedIndex];\n const isoCode = selected?.getAttribute('data-c');\n\n set_override_with_merge('country.iso_code', isoCode.toUpperCase(), { reevaluate: false });\n }\n\n set_override_with_merge(property, value, { reevaluate: true }); // might call do_shortcodes etc.\n\n check_recursive_after();\n}","import { triggerNativeEvent } from \"../lib/events\";\nimport { selectItemByAttribute } from \"../lib/html\";\nimport { get_value_from_record, get_options } from \"./helpers\";\nimport { autosave_element } from \"./onchange\";\n\nexport function do_shortcode_normal(el, record) {\n el.innerText = get_value_from_record(el, record);\n}\n\nexport function do_shortcode_flags(el, record) {\n const country = record.get_country_iso() || get_options(el).default;\n if (country) {\n el.classList.add('flag-icon-' + country)\n }\n}\n\n\nexport function do_shortcode_country_select(el, record) {\n let country = record.get_country_iso();\n\n if (selectItemByAttribute(el, 'data-c', country)) {\n triggerNativeEvent(el, 'change');\n return;\n }\n\n // The country is not the list of countries - select empty option instead\n if (selectItemByAttribute(el, 'data-c', '')) {\n triggerNativeEvent(el, 'change');\n } \n}\n\nexport function do_shortcode_text_input(el, record) {\n el.value = get_value_from_record(el, record);\n triggerNativeEvent(el, 'change');\n}","var arrayIntersect = intersect;\n\n/*\n intersect([1, 2, 5, 6], [2, 3, 5, 6]); // [2, 5, 6]\n intersect([1, 2, 2, 4, 5], [3, 2, 2, 5, 7]); // [2, 5]\n*/\n\nfunction intersect(arr1, arr2) {\n if (!Array.isArray(arr1) || !Array.isArray(arr2)) {\n throw new Error('expected both arguments to be arrays');\n }\n\n var result = [];\n var set = convertArrayToSet(arr2);\n var memo = {};\n\n for (var i = 0; i < arr1.length; i++) {\n var item = arr1[i];\n\n if (set.hasOwnProperty(item) && !memo.hasOwnProperty(item)) {\n result.push(item);\n memo[item] = true;\n }\n }\n\n return result;\n}\n\nfunction convertArrayToSet(arr) {\n var output = {};\n\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (!output.hasOwnProperty(item)) {\n output[item] = true;\n }\n }\n\n return output;\n}\n\nexport {arrayIntersect as default};\n","import { get_options } from './helpers';\nimport _intersect from 'just-intersect';\n\n\nexport function do_shortcode_show_if(el, record) {\n const opt = get_options(el);\n const evaluated = geoip_detect2_shortcode_evaluate_conditions(opt.parsed, opt, record);\n\n if (!evaluated) {\n el.style.display = \"none\";\n el.classList.add('geoip-hidden');\n el.classList.remove('geoip-shown');\n } else {\n el.style.display = '';\n el.classList.remove('geoip-hidden');\n el.classList.add('geoip-shown');\n }\n}\n\nexport function geoip_detect2_shortcode_evaluate_conditions(parsed, opt, record) {\n const alternativePropertyNames = [\n 'name',\n 'iso_code',\n 'iso_code3',\n 'code',\n 'geoname_id',\n ];\n\n let isConditionMatching = (parsed.op === 'or') ? false : true;\n\n parsed.conditions.forEach(c => {\n let subConditionMatching = false;\n let values = [];\n\n const raw_value = record.get_raw(c.p);\n\n if (raw_value === null) {\n subConditionMatching = false;\n } else {\n if (typeof (raw_value) === 'object') {\n alternativePropertyNames.forEach(name => {\n if (raw_value[name]) {\n values.push(raw_value[name]);\n } else if (name == 'name') {\n values.push(record.get_with_locales(c.p, opt.lang));\n }\n })\n } else {\n values = [raw_value]\n }\n }\n\n subConditionMatching = geoip_detect2_shortcode_check_subcondition(c.v, values);\n\n if (c.not) {\n subConditionMatching = !subConditionMatching;\n }\n\n if (parsed.op === 'or') {\n isConditionMatching = isConditionMatching || subConditionMatching;\n } else {\n isConditionMatching = isConditionMatching && subConditionMatching;\n }\n\n });\n\n if (parsed.not) {\n isConditionMatching = !isConditionMatching;\n }\n\n return isConditionMatching;\n}\n\nfunction geoip_detect2_shortcode_check_subcondition(expectedValues, actualValues) {\n if (actualValues[0] === true) {\n actualValues = ['true', 'yes', 'y', '1'];\n } else if (actualValues[0] === false) {\n actualValues = ['false', 'no', 'n', '0', ''];\n }\n\n actualValues = actualValues.map(x => String(x).toLowerCase())\n\n expectedValues = expectedValues.split(',');\n if (expectedValues.indexOf('') !== -1) {\n if (actualValues.length === 0) {\n return true;\n }\n }\n\n const intersect = _intersect(expectedValues, actualValues);\n\n return intersect.length > 0;\n}","import { domReady } from \"../lib/html\";\nimport { action_on_elements } from \"./helpers\";\nimport { do_shortcode_country_select, do_shortcode_flags, do_shortcode_normal, do_shortcode_text_input } from \"./normal\";\nimport { init as onchangeInit } from \"./onchange\";\nimport { do_shortcode_show_if } from \"./show-if\";\n\n\nexport const do_shortcodes_init = function () {\n onchangeInit();\n}\n\nexport const do_shortcodes = async function do_shortcodes() {\n // Before doing any of these, the DOM tree needs to be loaded\n await domReady;\n\n // These are called in parallel, as they are async functions\n action_on_elements('js-geoip-detect-shortcode',\n 'could not execute shortcode(s) [geoip_detect2 ...]', do_shortcode_normal);\n\n action_on_elements('js-geoip-detect-flag',\n 'could not configure the flag(s)', do_shortcode_flags);\n\n action_on_elements('js-geoip-text-input',\n 'could not set the value of the text input field(s)', do_shortcode_text_input);\n\n action_on_elements('js-geoip-detect-country-select',\n 'could not set the value of the select field(s)', do_shortcode_country_select);\n\n action_on_elements('js-geoip-detect-show-if',\n 'could not execute the show-if/hide-if conditions', do_shortcode_show_if);\n};\n","import { domReady } from './lib/html';\nimport { get_info } from './lookup/get_info';\n\nexport function calc_classes(record) {\n return {\n country: record.get('country.iso_code'),\n 'country-is-in-european-union': record.get('country.is_in_european_union', false),\n continent: record.get('continent.code'),\n province: record.get('most_specific_subdivision.iso_code'),\n };\n}\n\nfunction remove_css_classes_by_prefix(el, prefix) {\n const classes = el.className.split(\" \").filter(c => !c.startsWith(prefix));\n el.className = classes.join(\" \").trim();\n}\n\nexport async function add_body_classes() {\n const record = await get_info();\n\n if (record.error()) {\n console.error('Geolocation IP Detection Error (could not add CSS-classes to body): ' + record.error());\n return;\n }\n\n await domReady;\n\n add_classes_to_body(record);\n}\n\nexport function add_classes_to_body(record) {\n const css_classes = calc_classes(record);\n\n const body = document.getElementsByTagName('body')[0];\n \n // Remove old classes in case there are any\n remove_css_classes_by_prefix(body, 'geoip-');\n \n for (let key of Object.keys(css_classes)) {\n const value = css_classes[key];\n if (value) {\n if (typeof (value) == 'string') {\n body.classList.add(`geoip-${key}-${value}`);\n } else {\n body.classList.add(`geoip-${key}`);\n }\n }\n }\n}","import { do_shortcodes, do_shortcodes_init } from './shortcodes/index';\nimport { add_body_classes } from './body_classes';\nimport { options } from './lookup/get_info';\nimport { setRecordDataLastEvaluated } from \"./lookup/storage\";\n\nlet firstCall = true;\n\nexport function main() {\n if (process.env.NODE_ENV !== 'production') {\n console.log('Do Main');\n }\n\n if (firstCall) {\n do_shortcodes_init();\n firstCall = false; \n }\n\n if (options.do_body_classes) {\n add_body_classes();\n }\n\n // Do all the shortcodes that are in the HTML. Even if shortcodes is not enabled globally, they might be enabled for a specific shortcode.\n do_shortcodes();\n\n setRecordDataLastEvaluated();\n}","import { setLocalStorage } from '../lib/localStorageAccess';\nimport { options as globalOptions } from './get_info';\nimport { camelToUnderscore } from '../models/record';\nimport _set from 'just-safe-set';\nimport _get from 'just-safe-get';\nimport _is_object_content_equal from 'just-compare';\nimport { main } from '../main';\nimport { getRecordDataFromLocalStorage, getRecordDataLastEvaluated } from './storage';\n\nfunction processOptions(options) {\n options = options || {};\n if (typeof(options) == 'number') {\n options = {\n 'duration_in_days': options\n };\n }\n\n options.duration_in_days = options.duration_in_days || globalOptions.cookie_duration_in_days;\n if (options.duration_in_days < 0) {\n console.warn('Geolocation IP Detection set_override_data() did nothing: A negative duration doesn\\'t make sense. If you want to remove the override, use remove_override() instead.');\n return false;\n }\n\n if (typeof (options.reevaluate) == 'undefined' ) {\n options.reevaluate = true;\n }\n\n return options;\n}\n\nfunction changeRecord(record, property, value) {\n record = record || {};\n property = property || '';\n\n property = camelToUnderscore(property);\n\n const oldData = _get(record, property);\n if (typeof (oldData) == 'object' && typeof (oldData.names) == 'object') {\n property += '.name';\n }\n if (property.endsWith('.name')) {\n property += 's'; // e.g. country.name -> country.names\n value = { 'en': value };\n }\n\n _set(record, property, value);\n\n return record;\n}\n\n/**\n * Override only one property, leave the other properties as-is.\n * @param {string} property \n * @param {*} value \n */\nexport function set_override_with_merge(property, value, options) {\n let record = getRecordDataFromLocalStorage();\n\n record = changeRecord(record, property, value);\n\n set_override(record, options);\n\n if (process.env.NODE_ENV !== 'production') {\n console.log(\"Override is now: \", getRecordDataFromLocalStorage());\n }\n}\n\n/**\n * This functions allows to override the geodetected data manually (e.g. a country selector)\n * \n * @api\n * @param {*} record \n * @param {object} options\n * @param {number} duration_in_days When this override expires (default: 1 week later)\n * @param {boolean} reevaluate If the shortcodes etc. should be re-evaluated (default: true)\n * @return boolean TRUE if override data changed\n */\nexport function set_override(record, options) {\n options = processOptions(options);\n\n if (record && typeof (record.serialize) === 'function') {\n record = record.serialize();\n }\n\n return set_override_data(record, options);\n}\n\nfunction set_override_data(newData, options) {\n newData = newData || {};\n _set(newData, 'extra.override', true);\n\n setLocalStorage(globalOptions.cookie_name, newData, options.duration_in_days * 24 * 60 * 60);\n\n if (options.reevaluate && !_is_object_content_equal(newData, getRecordDataLastEvaluated())) {\n main();\n return true;\n }\n\n return false;\n}\n\n/**\n * Remove the override data.\n * On next page load, the record data will be loaded from the server again.\n * \n * @return boolean\n */\nexport function remove_override(options) {\n options = processOptions(options);\n setLocalStorage(globalOptions.cookie_name, {}, -1);\n if (options.reevaluate) {\n main();\n }\n return true;\n}\n\n\n","import { get_info } from './lookup/get_info';\nimport { remove_override, set_override, set_override_with_merge } from './lookup/override';\nimport { main } from './main';\n\n// Evaluate shortcodes, body classes, etc.\nmain();\n\n\n// Extend window object \nwindow.geoip_detect.get_info = get_info;\n\nwindow.geoip_detect.set_override = set_override;\nwindow.geoip_detect.set_override_with_merge = set_override_with_merge;\nwindow.geoip_detect.remove_override = remove_override;"],"names":["$895d9b2ca46faf11$var$asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","$895d9b2ca46faf11$export$2e2bcd8739ae039","fn","self","this","args","arguments","apply","err","undefined","$003e1ba76c02d76e$export$2e2bcd8739ae039","obj","constructor","Symbol","$d9ff7fa7a3f30499$var$runtime","exports","define","Object","defineProperty","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","prototype","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","type","call","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","forEach","method","AsyncIterator","PromiseImpl","invoke","record","result","hasOwn","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","GenStateSuspendedYield","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","values","iterable","iteratorMethod","iteratorSymbol","next","isNaN","length","i","Op","hasOwnProperty","$Symbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","TypeError","resultName","nextLoc","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","$d9ff7fa7a3f30499$exports","regeneratorRuntime","accidentalStrictMode","globalThis","Function","$054ce093faccc6cc$export$2e2bcd8739ae039","instance","Constructor","$091196a5c1b884db$var$_defineProperties","target","props","descriptor","$478e62652360c132$export$2e2bcd8739ae039","$4a4beb35e1398598$export$2e2bcd8739ae039","propsArg","defaultValue","prop","Array","isArray","split","shift","$a4c6bf567c1b63c8$var$_get_localized","ret","locales","names","locale","$a4c6bf567c1b63c8$export$13bc6c4afe8cd6ab","map","x","toLowerCase","replace","join","$a4c6bf567c1b63c8$var$Record","Record","data","default_locales","is_empty","_process_locales","protoProps","staticProps","default_value","get_with_locales","_lookup_with_locales","substr","get_raw","console","warn","country","get","$a4c6bf567c1b63c8$export$2e2bcd8739ae039","$5115e01e50a35b95$export$699251e5611cc6db","url","request","XMLHttpRequest","onreadystatechange","readyState","status","statusText","open","send","$5115e01e50a35b95$export$8fe2eaa78e58529f","str","JSON","parse","e","$5115e01e50a35b95$var$createErrorObject","errorMsg","extra","$5115e01e50a35b95$export$49434baf33460b11","$parcel$interopDefault","_callee","_args","_ctx","responseText","t0","$9a0f598d59a61a3e$export$1f73f60bdb811cb1","variable","ttl_sec","expires_at","Date","getTime","localStorage","setItem","toString","stringify","$9a0f598d59a61a3e$export$d3720feff416e85b","getItem","removeItem","$f422a70a3b9c8a83$export$c0c5a36406ccde34","$b4ba9c8e7a201193$export$41c562ebe57d11e2","cookie_name","$f422a70a3b9c8a83$export$bfae0a1e3adc82ee","cache_duration","$b4ba9c8e7a201193$var$ref","$f422a70a3b9c8a83$var$lastEvaluated","$f422a70a3b9c8a83$export$88983ef80f4f72ac","window","geoip_detect","options","ajaxurl","cookie_duration_in_days","do_body_classes","$b4ba9c8e7a201193$var$ajaxPromise","$b4ba9c8e7a201193$var$get_info_raw","response","ref","$b4ba9c8e7a201193$var$get_info_cached","$b4ba9c8e7a201193$var$_get_info_cached","storedResponse","ref1","override","log","responseJSON","$b4ba9c8e7a201193$export$3697bcf53517e83c","$b4ba9c8e7a201193$var$_get_info","$6451de512ae99d8a$export$2e2bcd8739ae039","lastProp","thisProp","$6451de512ae99d8a$var$prototypeCheck","$d73968d8a0a066f2$export$2e2bcd8739ae039","$d73968d8a0a066f2$var$compare","value1","value2","$d73968d8a0a066f2$var$compareArrays","from","keys1","len","key1","$d73968d8a0a066f2$var$compareObjects","$d73968d8a0a066f2$var$compareNativeSubtypes","$b4d1c184cabe171a$export$d680cb6eec13a7c7","document","addEventListener","attachEvent","$b4d1c184cabe171a$export$212ec54c5d687e78","el","attributeName","attributeValue","getAttribute","selectedIndex","$e41b329f42db23c8$export$aafcad1af8162002","raw","$e41b329f42db23c8$export$bb8a045c548d38f9","className","errorMessage","callback","$e41b329f42db23c8$var$_action_on_elements","elements","getElementsByClassName","$e41b329f42db23c8$export$2bcc52ba6c088b4a","property","opt","skip_cache","lang","default","$3f68aa62fc033904$var$_internalEvent","$3f68aa62fc033904$export$f0ffca0e7194bd91","eventName","event","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","$7944654ce2dd9d65$var$_listener_active","$7944654ce2dd9d65$var$_change_counter","$7944654ce2dd9d65$export$887b871aa5aacaaa","trace","$7944654ce2dd9d65$export$f60ab07833116193","$3bb001785c092908$var$event_listener_autosave_on_change","matches","selected","$03d6c28e95082604$export$38a0b31e9febbbe1","toUpperCase","reevaluate","$3bb001785c092908$export$be51a27c79b931de","$ddb23fab3c6f4620$export$c5bfd938fb7f5403","innerText","$ddb23fab3c6f4620$export$67c46edf2422701b","get_country_iso","classList","add","$ddb23fab3c6f4620$export$8b2cf4a2576ea856","$ddb23fab3c6f4620$export$46eed00f10e80dd5","$599ea47da8784bdb$export$2e2bcd8739ae039","arr1","arr2","set","arr","output","item","$599ea47da8784bdb$var$convertArrayToSet","memo","$34cfab0a14aff422$export$7f72d39cfa7a0f7a","evaluated","parsed","alternativePropertyNames","isConditionMatching","op","conditions","c","subConditionMatching","raw_value","p","expectedValues","actualValues","String","indexOf","$34cfab0a14aff422$var$geoip_detect2_shortcode_check_subcondition","v","not","$34cfab0a14aff422$export$626a13a1fe51c67a","style","display","remove","_do_shortcodes","$9cee2e12fa11ef69$export$7481777ea0ea965d","$9cee2e12fa11ef69$export$42610705290faf95","$73929a6ea3471960$export$69cfbde487906451","$73929a6ea3471960$var$_add_body_classes","$73929a6ea3471960$export$4e7274a5cb77ccb6","prefix","classes","css_classes","continent","province","$73929a6ea3471960$export$fd37e2b9d7d82468","body","getElementsByTagName","filter","startsWith","trim","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","concat","return","$b016e4ccc3c135fb$var$firstCall","$b016e4ccc3c135fb$export$f22da7240b7add18","$03d6c28e95082604$var$processOptions","duration_in_days","oldData","endsWith","en","$03d6c28e95082604$var$changeRecord","$03d6c28e95082604$export$c3c74383dfd15775","serialize","newData","$03d6c28e95082604$var$set_override_data","get_info","set_override","set_override_with_merge","remove_override"],"version":3,"file":"frontend.js.map"}
1
+ {"mappings":"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","sources":["node_modules/@swc/helpers/src/_async_to_generator.mjs","node_modules/@swc/helpers/src/_type_of.mjs","node_modules/regenerator-runtime/runtime.js","node_modules/@swc/helpers/src/_class_call_check.mjs","node_modules/@swc/helpers/src/_create_class.mjs","node_modules/@swc/helpers/src/_define_property.mjs","node_modules/just-safe-get/index.mjs","js/models/record.js","js/lib/xhr.js","js/lib/localStorageAccess.js","js/lookup/storage.js","js/lookup/get_info.js","node_modules/just-safe-set/index.mjs","node_modules/just-compare/index.mjs","js/lib/html.js","js/shortcodes/helpers.js","js/lib/events.js","js/lib/check-recursive.js","js/shortcodes/onchange.js","js/shortcodes/normal.js","node_modules/just-intersect/index.mjs","js/shortcodes/show-if.js","js/shortcodes/index.js","js/body_classes.js","js/main.js","js/lookup/override.js","js/frontend.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n","export default function _typeof(obj) {\n \"@swc/helpers - typeof\";\n return obj && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n","var objectSafeGet = get;\n\n/*\n const obj = {a: {aa: {aaa: 2}}, b: 4};\n\n get(obj, 'a.aa.aaa'); // 2\n get(obj, ['a', 'aa', 'aaa']); // 2\n\n get(obj, 'b.bb.bbb'); // undefined\n get(obj, ['b', 'bb', 'bbb']); // undefined\n\n get(obj.a, 'aa.aaa'); // 2\n get(obj.a, ['aa', 'aaa']); // 2\n\n get(obj.b, 'bb.bbb'); // undefined\n get(obj.b, ['bb', 'bbb']); // undefined\n\n get(obj.b, 'bb.bbb', 42); // 42\n get(obj.b, ['bb', 'bbb'], 42); // 42\n\n get(null, 'a'); // undefined\n get(undefined, ['a']); // undefined\n\n get(null, 'a', 42); // 42\n get(undefined, ['a'], 42); // 42\n\n const obj = {a: {}};\n const sym = Symbol();\n obj.a[sym] = 4;\n get(obj.a, sym); // 4\n*/\n\nfunction get(obj, propsArg, defaultValue) {\n if (!obj) {\n return defaultValue;\n }\n var props, prop;\n if (Array.isArray(propsArg)) {\n props = propsArg.slice(0);\n }\n if (typeof propsArg == 'string') {\n props = propsArg.split('.');\n }\n if (typeof propsArg == 'symbol') {\n props = [propsArg];\n }\n if (!Array.isArray(props)) {\n throw new Error('props arg must be an array, a string or a symbol');\n }\n while (props.length) {\n prop = props.shift();\n if (!obj) {\n return defaultValue;\n }\n obj = obj[prop];\n if (obj === undefined) {\n return defaultValue;\n }\n }\n return obj;\n}\n\nexport {objectSafeGet as default};\n","import _get from 'just-safe-get';\n\n\nconst _get_localized = function(ret, locales) {\n if (typeof(ret) === 'object' && ret !== null) {\n if (typeof (ret.names) === 'object' && typeof (locales) === 'object') {\n for (let i = 0 ; i < locales.length ; i++) {\n let locale = locales[i];\n\n if (ret.names[locale]) {\n return ret.names[locale];\n }\n }\n }\n\n if (ret.name) {\n return ret.name;\n }\n\n return '';\n }\n return ret;\n}\n\nexport const camelToUnderscore = function(key) {\n key = key.split('.').map((x) => {\n if (typeof (x) !== 'string' || typeof (x[0]) !== 'string') {\n return '';\n }\n x = x[0].toLowerCase() + x.slice(1); // to allow \"MostSpecificSubdivision\"\n x = x.replace(/([A-Z])/g, \"_$1\").toLowerCase();\n return x;\n }).join('.');\n\n return key;\n}\n\nclass Record {\n data = {};\n default_locales = [];\n\n constructor(data, default_locales) {\n this.data = data || { is_empty: true };\n \n this.default_locales = ['en']; \n this.default_locales = this._process_locales(default_locales);\n }\n\n get(prop, default_value) {\n return this.get_with_locales(prop, null, default_value);\n }\n\n get_raw(prop) {\n prop = camelToUnderscore(prop);\n return _get(this.data, prop, null);\n }\n \n has_property(prop) {\n const ret = this._lookup_with_locales(prop, this.default_locales, null)\n return ret !== null;\n }\n\n _lookup_with_locales(prop, locales, default_value = '') {\n locales = this._process_locales(locales);\n\n // Treat pseudo-property 'name' as if it never existed\n if (prop.substr(-5) === '.name') {\n prop = prop.substr(0, prop.length - 5);\n }\n\n let ret = this.get_raw(prop);\n \n // Localize property, if possible\n ret = _get_localized(ret, locales);\n \n if (ret === null || ret === '') {\n ret = default_value;\n }\n\n return ret;\n }\n \n _process_locales(locales) {\n if (typeof(locales) === 'string') {\n locales = [ locales ];\n }\n if (!Array.isArray(locales) || locales.length === 0) {\n locales = this.default_locales;\n }\n return locales;\n }\n\n get_with_locales(prop, locales, default_value) {\n const ret = this._lookup_with_locales(prop, locales, default_value);\n\n if (typeof(ret) === 'object') {\n console.warn('Geolocation IP Detection: The property \"' + prop + '\" is of type \"' + typeof (ret) + '\", should be string or similar', ret)\n }\n if (typeof(ret) === 'undefined') {\n console.warn('Geolocation IP Detection: The property \"' + prop + '\" is not defined, please check spelling or maybe you need a different data source', { data: this.data })\n return '';\n }\n\n return ret;\n }\n\n get_country_iso() {\n let country = this.get('country.iso_code');\n if(country) {\n country = country.substr(0, 2).toLowerCase();\n }\n return country;\n }\n\n /**\n * Check if there is information available for this IP\n * @returns boolean \n */\n is_empty() {\n return this.get('is_empty', false);\n }\n \n /**\n * Get error message, if any\n * @return string Error Message\n */\n error() {\n return this.get_raw('extra.error') || '';\n }\n\n /**\n * Get the raw data of this object\n * @returns object\n */\n serialize() {\n return this.data;\n }\n}\n\nexport default Record;","// @see https://gomakethings.com/promise-based-xhr/\n\nexport const makeRequest = function (url, method = 'GET') {\n\n // Create the XHR request\n var request = new XMLHttpRequest();\n\n // Return it as a Promise\n return new Promise(function (resolve, reject) {\n\n // Setup our listener to process compeleted requests\n request.onreadystatechange = function () {\n\n // Only run if the request is complete\n if (request.readyState !== 4) return;\n\n // Process the response\n if (request.status >= 200 && request.status < 300) {\n // If successful\n resolve(request);\n } else {\n // If failed\n reject({\n status: request.status,\n statusText: request.statusText,\n request: request\n });\n }\n\n };\n\n // Setup our HTTP request\n request.open(method || 'GET', url, true);\n\n // Send the request\n request.send();\n\n });\n};\n\nexport const jsonDecodeIfPossible = function(str) {\n try {\n return JSON.parse(str);\n } catch(e) {\n return createErrorObject('Invalid JSON: ' + str);\n }\n}\n\nfunction createErrorObject(errorMsg) {\n return {\n is_empty: true,\n extra: {\n error: errorMsg\n }\n };\n}\n\nexport const makeJSONRequest = async function(url, method = 'GET') {\n try {\n const request = await makeRequest(url, method);\n if (!request.responseText || request.responseText === '0') {\n return createErrorObject('Got an empty response from server. Did you enable AJAX in the options?');\n }\n return jsonDecodeIfPossible(request.responseText);\n } catch(e) {\n return jsonDecodeIfPossible(e.request.responseText);\n }\n}\n","export const setLocalStorage = function (variable, value, ttl_sec) {\n var data = {value: value, expires_at: new Date().getTime() + (ttl_sec * 1000) / 1 };\n localStorage.setItem(variable.toString(), JSON.stringify(data));\n};\n\nexport function removeLocalStorage(variable) {\n localStorage.removeItem(variable);\n}\n\nexport const getLocalStorage = function (variable) {\n let data = null;\n try {\n data = JSON.parse(localStorage.getItem(variable.toString()));\n } catch(e) {\n return null;\n }\n if (data !== null) {\n if (data.expires_at !== null && data.expires_at < new Date().getTime()) {\n localStorage.removeItem(variable.toString());\n } else {\n return data.value;\n }\n }\n return null;\n}","import { getLocalStorage, setLocalStorage } from '../lib/localStorageAccess';\nimport { options as globalOptions } from './get_info';\nimport Record from '../models/record';\n\n// Sync function in case it is known that no AJAX will occur\nexport function getRecordDataFromLocalStorage() {\n return getLocalStorage(globalOptions.cookie_name);\n}\n\nexport function setRecordDataToLocalStorage(data, cache_duration) {\n setLocalStorage(globalOptions.cookie_name, data, cache_duration);\n}\n\nlet lastEvaluated = {};\nexport function getRecordDataLastEvaluated() {\n return lastEvaluated;\n}\nexport function setRecordDataLastEvaluated() {\n lastEvaluated = getRecordDataFromLocalStorage();\n}\n\n\nexport function get_info_stored_locally_record() {\n return new Record(getRecordDataFromLocalStorage(), globalOptions.default_locales);\n}\n","import Record from '../models/record';\n\nimport { makeJSONRequest } from '../lib/xhr';\nimport { getRecordDataFromLocalStorage, setRecordDataToLocalStorage } from \"./storage\";\n\n\nexport const options = window.geoip_detect?.options || {\n ajaxurl: \"/wp-admin/admin-ajax.php\",\n default_locales: ['en'],\n cookie_duration_in_days: 7,\n cookie_name: 'geoip-detect-result',\n do_body_classes: false\n};\n\nlet ajaxPromise = null;\n\nfunction get_info_raw() {\n if (!ajaxPromise) {\n // Do Ajax Request only once per page load\n const url = options.ajaxurl + '?action=geoip_detect2_get_info_from_current_ip'\n\n ajaxPromise = makeJSONRequest(url);\n \n ajaxPromise.then((response) => {\n if (response?.extra?.error) {\n console.error('Geolocation IP Detection Error: Server returned an error: ' + response.extra.error);\n }\n })\n }\n\n return ajaxPromise;\n}\n\nasync function get_info_cached() {\n let response = false;\n let storedResponse = false;\n\n // 1) Load Info from localstorage cookie cache, if possible\n if (options.cookie_name) {\n storedResponse = getRecordDataFromLocalStorage()\n if (storedResponse && storedResponse.extra) {\n if (storedResponse.extra.override === true) {\n console.info('Geolocation IP Detection: Using cached response (override)');\n } else {\n console.info('Geolocation IP Detection: Using cached response');\n }\n return storedResponse;\n }\n }\n\n // 2) Get response\n try {\n response = await get_info_raw();\n } catch (err) {\n console.log('Weird: Uncaught error...', err);\n response = err.responseJSON || err;\n }\n\n // 3) Save info to localstorage cookie cache\n if (options.cookie_name) {\n\n // Check if Override has been set now\n storedResponse = getRecordDataFromLocalStorage()\n if (storedResponse?.extra?.override === true) {\n console.info('Geolocation IP Detection: Using cached response (override)');\n return storedResponse;\n }\n\n let cache_duration = options.cookie_duration_in_days * 24 * 60 * 60;\n if (response?.extra?.error)\n cache_duration = 60; // Cache errors only for 1 minute, then try again\n \n setRecordDataToLocalStorage(response, cache_duration);\n }\n\n return response;\n}\n\n\n/**\n * Load the data from the server\n * \n * (It can also be loaded from the browser localstorage, if the record data is present there already.)\n * \n * @api\n * @return Promise(Record)\n */\nexport async function get_info() {\n let response = await get_info_cached();\n\n if (typeof (response) !== 'object') {\n console.error('Geolocation IP Detection Error: Record should be an object, not a ' + typeof (response), response);\n response = { 'extra': { 'error': response || 'Network error, look at the original server response ...' } };\n }\n\n const record = new Record(response, options.default_locales);\n return record;\n}\n","var objectSafeSet = set;\n\n/*\n var obj1 = {};\n set(obj1, 'a.aa.aaa', 4); // true\n obj1; // {a: {aa: {aaa: 4}}}\n\n var obj2 = {};\n set(obj2, ['a', 'aa', 'aaa'], 4); // true\n obj2; // {a: {aa: {aaa: 4}}}\n\n var obj3 = {a: {aa: {aaa: 2}}};\n set(obj3, 'a.aa.aaa', 3); // true\n obj3; // {a: {aa: {aaa: 3}}}\n\n // don't clobber existing\n var obj4 = {a: {aa: {aaa: 2}}};\n set(obj4, 'a.aa', {bbb: 7}); // false\n\n const obj5 = {a: {}};\n const sym = Symbol();\n set(obj5.a, sym, 7); // true\n obj5; // {a: {Symbol(): 7}}\n*/\n\nfunction set(obj, propsArg, value) {\n var props, lastProp;\n if (Array.isArray(propsArg)) {\n props = propsArg.slice(0);\n }\n if (typeof propsArg == 'string') {\n props = propsArg.split('.');\n }\n if (typeof propsArg == 'symbol') {\n props = [propsArg];\n }\n if (!Array.isArray(props)) {\n throw new Error('props arg must be an array, a string or a symbol');\n }\n lastProp = props.pop();\n if (!lastProp) {\n return false;\n }\n prototypeCheck(lastProp);\n var thisProp;\n while ((thisProp = props.shift())) {\n prototypeCheck(thisProp);\n if (typeof obj[thisProp] == 'undefined') {\n obj[thisProp] = {};\n }\n obj = obj[thisProp];\n if (!obj || typeof obj != 'object') {\n return false;\n }\n }\n obj[lastProp] = value;\n return true;\n}\n\nfunction prototypeCheck(prop) {\n // coercion is intentional to catch prop values like `['__proto__']`\n if (prop == '__proto__' || prop == 'constructor' || prop == 'prototype') {\n throw new Error('setting of prototype values not supported');\n }\n}\n\nexport {objectSafeSet as default};\n","var collectionCompare = compare;\n\n/*\n primitives: value1 === value2\n functions: value1.toString == value2.toString\n arrays: if length, sequence and values of properties are identical\n objects: if length, names and values of properties are identical\n compare([[1, [2, 3]], [[1, [2, 3]]); // true\n compare([[1, [2, 3], 4], [[1, [2, 3]]); // false\n compare({a: 2, b: 3}, {a: 2, b: 3}); // true\n compare({a: 2, b: 3}, {b: 3, a: 2}); // true\n compare({a: 2, b: 3, c: 4}, {a: 2, b: 3}); // false\n compare({a: 2, b: 3}, {a: 2, b: 3, c: 4}); // false\n compare([[1, [2, {a: 4}], 4], [[1, [2, {a: 4}]]); // true\n*/\n\nfunction compare(value1, value2) {\n if (value1 === value2) {\n return true;\n }\n\n /* eslint-disable no-self-compare */\n // if both values are NaNs return true\n if (value1 !== value1 && value2 !== value2) {\n return true;\n }\n\n if (\n typeof value1 != typeof value2 || // primitive != primitive wrapper\n {}.toString.call(value1) != {}.toString.call(value2) // check for other (maybe nullish) objects\n ) {\n return false;\n }\n\n if (value1 !== Object(value1)) {\n // non equal primitives\n return false;\n }\n\n if (!value1) {\n return false;\n }\n\n if (Array.isArray(value1)) {\n return compareArrays(value1, value2);\n }\n\n if ({}.toString.call(value1) == '[object Set]') {\n return compareArrays(Array.from(value1), Array.from(value2));\n }\n\n if ({}.toString.call(value1) == '[object Object]') {\n return compareObjects(value1, value2);\n }\n\n return compareNativeSubtypes(value1, value2);\n}\n\nfunction compareNativeSubtypes(value1, value2) {\n // e.g. Function, RegExp, Date\n return value1.toString() === value2.toString();\n}\n\nfunction compareArrays(value1, value2) {\n var len = value1.length;\n\n if (len != value2.length) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (!compare(value1[i], value2[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction compareObjects(value1, value2) {\n var keys1 = Object.keys(value1);\n var len = keys1.length;\n\n if (len != Object.keys(value2).length) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key1 = keys1[i];\n\n if (!(value2.hasOwnProperty(key1) && compare(value1[key1], value2[key1]))) {\n return false;\n }\n }\n\n return true;\n}\n\nexport {collectionCompare as default};\n","export function isUnitTesting() {\n return process.env.JEST_WORKER_ID !== undefined;\n}\n\nexport const domReady = new Promise(resolve => {\n if (isUnitTesting()) {\n resolve();\n }\n\n if (document.readyState === \"loading\") {\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', resolve);\n } else {\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState != 'loading') {\n resolve();\n }\n });\n }\n } else {\n resolve();\n }\n});\n\nexport function selectItemByValue(el, value) {\n for (var i = 0; i < el.options.length; i++) {\n if (el.options[i].value === value) {\n el.selectedIndex = i;\n return true;\n }\n }\n return false;\n}\n\n/**\n * @param {*} el Select Tag\n * @param {string} attributeName HTML attribute name to search by\n * @param {string} attributeValue HTML attribute value to search by\n * @returns boolean TRUE if Value found in select tag\n */\nexport function selectItemByAttribute(el, attributeName, attributeValue) {\n for (let i = 0; i < el.options.length; i++) {\n if (el.options[i].getAttribute(attributeName) === attributeValue) {\n el.selectedIndex = i;\n return true;\n }\n }\n return false;\n}","import { get_info } from \"../lookup/get_info\";\n\n// Get Options from data-options and json parse them\nexport function get_options(el) {\n const raw = el.getAttribute('data-options');\n try {\n return JSON.parse(raw);\n } catch (e) {\n return {};\n }\n}\n\nexport async function action_on_elements(className, errorMessage, callback) {\n const elements = document.getElementsByClassName(className);\n if (!elements.length) return;\n\n const record = await get_info();\n\n if (record.error()) {\n console.error('Geolocation IP Detection Error (' + errorMessage + '): ' + record.error());\n return;\n }\n\n Array.from(elements)\n .forEach(el => callback(el, record));\n}\n\nexport function get_value_from_record(el, record, property = null) {\n const opt = get_options(el);\n property = property || opt.property;\n if (opt.skip_cache) {\n console.warn(\"Geolocation IP Detection: The property 'skip_cache' is ignored in AJAX mode. You could disable the response caching on the server by setting the constant GEOIP_DETECT_READER_CACHE_TIME.\");\n }\n\n return record.get_with_locales(property, opt.lang, opt.default);\n}","\nlet _internalEvent = false;\nexport function isInternalEvent() {\n return _internalEvent;\n}\n\nexport function triggerNativeEvent(el, eventName, options = null) {\n _internalEvent = true;\n\n let event;\n if (window.CustomEvent && typeof window.CustomEvent === 'function') {\n event = new CustomEvent(eventName, {detail : options});\n } else {\n // Compat for IE\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, options);\n }\n el.dispatchEvent(event);\n\n _internalEvent = false;\n}","\nlet _listener_active = false; // for recursion detection (maybe remove later)\nlet _change_counter = 0; \n\nexport function check_recursive_before() {\n _change_counter++;\n if (_listener_active || _change_counter > 10) {\n console.warn('Error: Thats weird! autosave change detected a recursion (' + _change_counter + ')! Please file a bug report about this and include the first 10 lines of the callstack below:');\n console.trace();\n if (process.env.NODE_ENV !== 'production') {\n debugger;\n }\n return false;\n }\n _listener_active = true;\n return true;\n}\n\n\nexport function check_recursive_after() {\n _listener_active = false;\n}","\nimport { check_recursive_after, check_recursive_before } from \"../lib/check-recursive\";\nimport { isInternalEvent } from \"../lib/events\";\nimport { set_override_with_merge } from \"../lookup/override\";\nimport { get_options } from \"./helpers\";\n\nexport function init() {\n document.addEventListener('change', event_listener_autosave_on_change, false);\n}\n\nfunction event_listener_autosave_on_change(event) {\n if (isInternalEvent()) {\n return;\n }\n\n const target = event.target;\n if (target?.matches && target.matches('.js-geoip-detect-input-autosave')) {\n if (process.env.NODE_ENV !== 'production') {\n console.log('autosave on change', target);\n }\n\n autosave_element(target);\n }\n}\n\n/**\n * When calling this method, be very careful not to introduce an infinite loop!\n * @param {*} el \n */\nexport function autosave_element(el) {\n const property = get_options(el).property;\n const value = el.value;\n\n if (!check_recursive_before()) {\n return;\n }\n\n if (el.matches('select.js-geoip-detect-country-select')) {\n const selected = el.options[el.selectedIndex];\n const isoCode = selected?.getAttribute('data-c');\n\n set_override_with_merge('country.iso_code', isoCode.toUpperCase(), { reevaluate: false });\n }\n\n set_override_with_merge(property, value, { reevaluate: true }); // might call do_shortcodes etc.\n\n check_recursive_after();\n}","import { triggerNativeEvent } from \"../lib/events\";\nimport { selectItemByAttribute } from \"../lib/html\";\nimport { get_value_from_record, get_options } from \"./helpers\";\nimport { autosave_element } from \"./onchange\";\n\nexport function do_shortcode_normal(el, record) {\n el.innerText = get_value_from_record(el, record);\n}\n\nexport function do_shortcode_flags(el, record) {\n const country = record.get_country_iso() || get_options(el).default;\n if (country) {\n el.classList.add('flag-icon-' + country)\n }\n}\n\n\nexport function do_shortcode_country_select(el, record) {\n let country = record.get_country_iso();\n\n if (selectItemByAttribute(el, 'data-c', country)) {\n triggerNativeEvent(el, 'change');\n return;\n }\n\n // The country is not the list of countries - select empty option instead\n if (selectItemByAttribute(el, 'data-c', '')) {\n triggerNativeEvent(el, 'change');\n } \n}\n\nexport function do_shortcode_text_input(el, record) {\n el.value = get_value_from_record(el, record);\n triggerNativeEvent(el, 'change');\n}","var arrayIntersect = intersect;\n\n/*\n intersect([1, 2, 5, 6], [2, 3, 5, 6]); // [2, 5, 6]\n intersect([1, 2, 2, 4, 5], [3, 2, 2, 5, 7]); // [2, 5]\n*/\n\nfunction intersect(arr1, arr2) {\n if (!Array.isArray(arr1) || !Array.isArray(arr2)) {\n throw new Error('expected both arguments to be arrays');\n }\n\n var result = [];\n var set = convertArrayToSet(arr2);\n var memo = {};\n\n for (var i = 0; i < arr1.length; i++) {\n var item = arr1[i];\n\n if (set.hasOwnProperty(item) && !memo.hasOwnProperty(item)) {\n result.push(item);\n memo[item] = true;\n }\n }\n\n return result;\n}\n\nfunction convertArrayToSet(arr) {\n var output = {};\n\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (!output.hasOwnProperty(item)) {\n output[item] = true;\n }\n }\n\n return output;\n}\n\nexport {arrayIntersect as default};\n","import { get_options } from './helpers';\nimport _intersect from 'just-intersect';\n\n\nexport function do_shortcode_show_if(el, record) {\n const opt = get_options(el);\n const evaluated = geoip_detect2_shortcode_evaluate_conditions(opt.parsed, opt, record);\n\n if (!evaluated) {\n el.style.display = \"none\";\n el.classList.add('geoip-hidden');\n el.classList.remove('geoip-shown');\n } else {\n el.style.display = '';\n el.classList.remove('geoip-hidden');\n el.classList.add('geoip-shown');\n }\n}\n\nexport function geoip_detect2_shortcode_evaluate_conditions(parsed, opt, record) {\n const alternativePropertyNames = [\n 'name',\n 'iso_code',\n 'iso_code3',\n 'code',\n 'geoname_id',\n ];\n\n let isConditionMatching = (parsed.op === 'or') ? false : true;\n\n parsed.conditions.forEach(c => {\n let subConditionMatching = false;\n let values = [];\n\n const raw_value = record.get_raw(c.p);\n\n if (raw_value === null) {\n subConditionMatching = false;\n } else {\n if (typeof (raw_value) === 'object') {\n alternativePropertyNames.forEach(name => {\n if (raw_value[name]) {\n values.push(raw_value[name]);\n } else if (name == 'name') {\n values.push(record.get_with_locales(c.p, opt.lang));\n }\n })\n } else {\n values = [raw_value]\n }\n }\n\n subConditionMatching = geoip_detect2_shortcode_check_subcondition(c.v, values);\n\n if (c.not) {\n subConditionMatching = !subConditionMatching;\n }\n\n if (parsed.op === 'or') {\n isConditionMatching = isConditionMatching || subConditionMatching;\n } else {\n isConditionMatching = isConditionMatching && subConditionMatching;\n }\n\n });\n\n if (parsed.not) {\n isConditionMatching = !isConditionMatching;\n }\n\n return isConditionMatching;\n}\n\nfunction geoip_detect2_shortcode_check_subcondition(expectedValues, actualValues) {\n if (actualValues[0] === true) {\n actualValues = ['true', 'yes', 'y', '1'];\n } else if (actualValues[0] === false) {\n actualValues = ['false', 'no', 'n', '0', ''];\n }\n\n actualValues = actualValues.map(x => String(x).toLowerCase())\n\n expectedValues = expectedValues.split(',');\n if (expectedValues.indexOf('') !== -1) {\n if (actualValues.length === 0) {\n return true;\n }\n }\n\n const intersect = _intersect(expectedValues, actualValues);\n\n return intersect.length > 0;\n}","import { domReady } from \"../lib/html\";\nimport { action_on_elements } from \"./helpers\";\nimport { do_shortcode_country_select, do_shortcode_flags, do_shortcode_normal, do_shortcode_text_input } from \"./normal\";\nimport { init as onchangeInit } from \"./onchange\";\nimport { do_shortcode_show_if } from \"./show-if\";\n\n\nexport const do_shortcodes_init = function () {\n onchangeInit();\n}\n\nexport const do_shortcodes = async function do_shortcodes() {\n // Before doing any of these, the DOM tree needs to be loaded\n await domReady;\n\n // These are called in parallel, as they are async functions\n action_on_elements('js-geoip-detect-shortcode',\n 'could not execute shortcode(s) [geoip_detect2 ...]', do_shortcode_normal);\n\n action_on_elements('js-geoip-detect-flag',\n 'could not configure the flag(s)', do_shortcode_flags);\n\n action_on_elements('js-geoip-text-input',\n 'could not set the value of the text input field(s)', do_shortcode_text_input);\n\n action_on_elements('js-geoip-detect-country-select',\n 'could not set the value of the select field(s)', do_shortcode_country_select);\n\n action_on_elements('js-geoip-detect-show-if',\n 'could not execute the show-if/hide-if conditions', do_shortcode_show_if);\n};\n","import { domReady } from './lib/html';\nimport { get_info } from './lookup/get_info';\n\nexport function calc_classes(record) {\n return {\n country: record.get('country.iso_code'),\n 'country-is-in-european-union': record.get('country.is_in_european_union', false),\n continent: record.get('continent.code'),\n province: record.get('most_specific_subdivision.iso_code'),\n city: record.get('city.names.en')\n };\n}\n\nfunction remove_css_classes_by_prefix(el, prefix) {\n const classes = el.className.split(\" \").filter(c => !c.startsWith(prefix));\n el.className = classes.join(\" \").trim();\n}\n\nexport async function add_body_classes() {\n const record = await get_info();\n\n if (record.error()) {\n console.error('Geolocation IP Detection Error (could not add CSS-classes to body): ' + record.error());\n return;\n }\n\n await domReady;\n\n add_classes_to_body(record);\n}\n\n// ported from Wordpress PHP\nfunction sanitize_html_class(string) {\n string = string + '';\n string = string.replace(/%[a-fA-F0-9][a-fA-F0-9]/g, '');\n string = string.replace(/[^A-Za-z0-9_-]/g, '');\n return string;\n}\n\nexport function add_classes_to_body(record) {\n const css_classes = calc_classes(record);\n\n const body = document.getElementsByTagName('body')[0];\n \n // Remove old classes in case there are any\n remove_css_classes_by_prefix(body, 'geoip-');\n \n for (let key of Object.keys(css_classes)) {\n const value = sanitize_html_class(css_classes[key]);\n if (value) {\n if (typeof (value) == 'string') {\n body.classList.add(`geoip-${key}-${value}`);\n } else {\n body.classList.add(`geoip-${key}`);\n }\n }\n }\n}","import { do_shortcodes, do_shortcodes_init } from './shortcodes/index';\nimport { add_body_classes } from './body_classes';\nimport { options } from './lookup/get_info';\nimport { setRecordDataLastEvaluated } from \"./lookup/storage\";\n\nlet firstCall = true;\n\nexport function main() {\n if (process.env.NODE_ENV !== 'production') {\n console.log('Do Main');\n }\n\n if (firstCall) {\n do_shortcodes_init();\n firstCall = false; \n }\n\n if (options.do_body_classes) {\n add_body_classes();\n }\n\n // Do all the shortcodes that are in the HTML. Even if shortcodes is not enabled globally, they might be enabled for a specific shortcode.\n do_shortcodes();\n\n setRecordDataLastEvaluated();\n}","import { setLocalStorage } from '../lib/localStorageAccess';\nimport { options as globalOptions } from './get_info';\nimport { camelToUnderscore } from '../models/record';\nimport _set from 'just-safe-set';\nimport _get from 'just-safe-get';\nimport _is_object_content_equal from 'just-compare';\nimport { main } from '../main';\nimport { getRecordDataFromLocalStorage, getRecordDataLastEvaluated } from './storage';\n\nfunction processOptions(options) {\n options = options || {};\n if (typeof(options) == 'number') {\n options = {\n 'duration_in_days': options\n };\n }\n\n options.duration_in_days = options.duration_in_days || globalOptions.cookie_duration_in_days;\n if (options.duration_in_days < 0) {\n console.warn('Geolocation IP Detection set_override_data() did nothing: A negative duration doesn\\'t make sense. If you want to remove the override, use remove_override() instead.');\n return false;\n }\n\n if (typeof (options.reevaluate) == 'undefined' ) {\n options.reevaluate = true;\n }\n\n return options;\n}\n\nfunction changeRecord(record, property, value) {\n record = record || {};\n property = property || '';\n\n property = camelToUnderscore(property);\n\n const oldData = _get(record, property);\n if (typeof (oldData) == 'object' && typeof (oldData.names) == 'object') {\n property += '.name';\n }\n if (property.endsWith('.name')) {\n property += 's'; // e.g. country.name -> country.names\n value = { 'en': value };\n }\n\n _set(record, property, value);\n\n return record;\n}\n\n/**\n * Override only one property, leave the other properties as-is.\n * @param {string} property \n * @param {*} value \n */\nexport function set_override_with_merge(property, value, options) {\n let record = getRecordDataFromLocalStorage();\n\n record = changeRecord(record, property, value);\n\n set_override(record, options);\n\n if (process.env.NODE_ENV !== 'production') {\n console.log(\"Override is now: \", getRecordDataFromLocalStorage());\n }\n}\n\n/**\n * This functions allows to override the geodetected data manually (e.g. a country selector)\n * \n * @api\n * @param {*} record \n * @param {object} options\n * @param {number} duration_in_days When this override expires (default: 1 week later)\n * @param {boolean} reevaluate If the shortcodes etc. should be re-evaluated (default: true)\n * @return boolean TRUE if override data changed\n */\nexport function set_override(record, options) {\n options = processOptions(options);\n\n if (record && typeof (record.serialize) === 'function') {\n record = record.serialize();\n }\n\n return set_override_data(record, options);\n}\n\nfunction set_override_data(newData, options) {\n newData = newData || {};\n _set(newData, 'extra.override', true);\n\n setLocalStorage(globalOptions.cookie_name, newData, options.duration_in_days * 24 * 60 * 60);\n\n if (options.reevaluate && !_is_object_content_equal(newData, getRecordDataLastEvaluated())) {\n main();\n return true;\n }\n\n return false;\n}\n\n/**\n * Remove the override data.\n * On next page load, the record data will be loaded from the server again.\n * \n * @return boolean\n */\nexport function remove_override(options) {\n options = processOptions(options);\n setLocalStorage(globalOptions.cookie_name, {}, -1);\n if (options.reevaluate) {\n main();\n }\n return true;\n}\n\n\n","import { get_info } from './lookup/get_info';\nimport { remove_override, set_override, set_override_with_merge } from './lookup/override';\nimport { main } from './main';\n\n// Evaluate shortcodes, body classes, etc.\nmain();\n\n\n// Extend window object \nwindow.geoip_detect.get_info = get_info;\n\nwindow.geoip_detect.set_override = set_override;\nwindow.geoip_detect.set_override_with_merge = set_override_with_merge;\nwindow.geoip_detect.remove_override = remove_override;"],"names":["$895d9b2ca46faf11$var$asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","$895d9b2ca46faf11$export$2e2bcd8739ae039","fn","self","this","args","arguments","apply","err","undefined","$003e1ba76c02d76e$export$2e2bcd8739ae039","obj","constructor","Symbol","$d9ff7fa7a3f30499$var$runtime","exports","define","Object","defineProperty","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","prototype","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","type","call","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","forEach","method","AsyncIterator","PromiseImpl","invoke","record","result","hasOwn","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","GenStateSuspendedYield","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","values","iterable","iteratorMethod","iteratorSymbol","next","isNaN","length","i","Op","hasOwnProperty","$Symbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","TypeError","resultName","nextLoc","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","$d9ff7fa7a3f30499$exports","regeneratorRuntime","accidentalStrictMode","globalThis","Function","$054ce093faccc6cc$export$2e2bcd8739ae039","instance","Constructor","$091196a5c1b884db$var$_defineProperties","target","props","descriptor","$478e62652360c132$export$2e2bcd8739ae039","$4a4beb35e1398598$export$2e2bcd8739ae039","propsArg","defaultValue","prop","Array","isArray","split","shift","$a4c6bf567c1b63c8$var$_get_localized","ret","locales","names","locale","$a4c6bf567c1b63c8$export$13bc6c4afe8cd6ab","map","x","toLowerCase","replace","join","$a4c6bf567c1b63c8$var$Record","Record","data","default_locales","is_empty","_process_locales","protoProps","staticProps","default_value","get_with_locales","_lookup_with_locales","substr","get_raw","console","warn","country","get","$a4c6bf567c1b63c8$export$2e2bcd8739ae039","$5115e01e50a35b95$export$699251e5611cc6db","url","request","XMLHttpRequest","onreadystatechange","readyState","status","statusText","open","send","$5115e01e50a35b95$export$8fe2eaa78e58529f","str","JSON","parse","e","$5115e01e50a35b95$var$createErrorObject","errorMsg","extra","$5115e01e50a35b95$export$49434baf33460b11","$parcel$interopDefault","_callee","_args","_ctx","responseText","t0","$9a0f598d59a61a3e$export$1f73f60bdb811cb1","variable","ttl_sec","expires_at","Date","getTime","localStorage","setItem","toString","stringify","$9a0f598d59a61a3e$export$d3720feff416e85b","getItem","removeItem","$f422a70a3b9c8a83$export$c0c5a36406ccde34","$b4ba9c8e7a201193$export$41c562ebe57d11e2","cookie_name","$f422a70a3b9c8a83$export$bfae0a1e3adc82ee","cache_duration","$b4ba9c8e7a201193$var$ref","$f422a70a3b9c8a83$var$lastEvaluated","$f422a70a3b9c8a83$export$88983ef80f4f72ac","window","geoip_detect","options","ajaxurl","cookie_duration_in_days","do_body_classes","$b4ba9c8e7a201193$var$ajaxPromise","$b4ba9c8e7a201193$var$get_info_raw","response","ref","$b4ba9c8e7a201193$var$get_info_cached","$b4ba9c8e7a201193$var$_get_info_cached","storedResponse","ref1","override","log","responseJSON","$b4ba9c8e7a201193$export$3697bcf53517e83c","$b4ba9c8e7a201193$var$_get_info","$6451de512ae99d8a$export$2e2bcd8739ae039","lastProp","thisProp","$6451de512ae99d8a$var$prototypeCheck","$d73968d8a0a066f2$export$2e2bcd8739ae039","$d73968d8a0a066f2$var$compare","value1","value2","$d73968d8a0a066f2$var$compareArrays","from","keys1","len","key1","$d73968d8a0a066f2$var$compareObjects","$d73968d8a0a066f2$var$compareNativeSubtypes","$b4d1c184cabe171a$export$d680cb6eec13a7c7","document","addEventListener","attachEvent","$b4d1c184cabe171a$export$212ec54c5d687e78","el","attributeName","attributeValue","getAttribute","selectedIndex","$e41b329f42db23c8$export$aafcad1af8162002","raw","$e41b329f42db23c8$export$bb8a045c548d38f9","className","errorMessage","callback","$e41b329f42db23c8$var$_action_on_elements","elements","getElementsByClassName","$e41b329f42db23c8$export$2bcc52ba6c088b4a","property","opt","skip_cache","lang","default","$3f68aa62fc033904$var$_internalEvent","$3f68aa62fc033904$export$f0ffca0e7194bd91","eventName","event","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","$7944654ce2dd9d65$var$_listener_active","$7944654ce2dd9d65$var$_change_counter","$7944654ce2dd9d65$export$887b871aa5aacaaa","trace","$7944654ce2dd9d65$export$f60ab07833116193","$3bb001785c092908$var$event_listener_autosave_on_change","matches","selected","$03d6c28e95082604$export$38a0b31e9febbbe1","toUpperCase","reevaluate","$3bb001785c092908$export$be51a27c79b931de","$ddb23fab3c6f4620$export$c5bfd938fb7f5403","innerText","$ddb23fab3c6f4620$export$67c46edf2422701b","get_country_iso","classList","add","$ddb23fab3c6f4620$export$8b2cf4a2576ea856","$ddb23fab3c6f4620$export$46eed00f10e80dd5","$599ea47da8784bdb$export$2e2bcd8739ae039","arr1","arr2","set","arr","output","item","$599ea47da8784bdb$var$convertArrayToSet","memo","$34cfab0a14aff422$export$7f72d39cfa7a0f7a","evaluated","parsed","alternativePropertyNames","isConditionMatching","op","conditions","c","subConditionMatching","raw_value","p","expectedValues","actualValues","String","indexOf","$34cfab0a14aff422$var$geoip_detect2_shortcode_check_subcondition","v","not","$34cfab0a14aff422$export$626a13a1fe51c67a","style","display","remove","_do_shortcodes","$9cee2e12fa11ef69$export$7481777ea0ea965d","$9cee2e12fa11ef69$export$42610705290faf95","$73929a6ea3471960$export$69cfbde487906451","$73929a6ea3471960$var$_add_body_classes","$73929a6ea3471960$export$4e7274a5cb77ccb6","prefix","classes","css_classes","continent","province","city","$73929a6ea3471960$export$fd37e2b9d7d82468","body","getElementsByTagName","filter","startsWith","trim","string","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","concat","return","$b016e4ccc3c135fb$var$firstCall","$b016e4ccc3c135fb$export$f22da7240b7add18","$03d6c28e95082604$var$processOptions","duration_in_days","oldData","endsWith","en","$03d6c28e95082604$var$changeRecord","$03d6c28e95082604$export$c3c74383dfd15775","serialize","newData","$03d6c28e95082604$var$set_override_data","get_info","set_override","set_override_with_merge","remove_override"],"version":3,"file":"frontend.js.map"}
lib/dynamic-reverse-proxies/abstract.php ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once(__DIR__ . '/aws.php');
4
+ require_once(__DIR__ . '/cloudflare.php');
5
+
lib/dynamic-reverse-proxies/aws.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class DynamicReverseProxiesAws {
4
+ public function getIps() {
5
+ $url = apply_filters('geoip_detect2_dynamic_reverse_proxies_aws_urls', 'https://ip-ranges.amazonaws.com/ip-ranges.json');
6
+ $types = apply_filters('geoip_detect2_dynamic_reverse_proxies_aws_types', ['CLOUDFRONT']);
7
+
8
+ $response = wp_safe_remote_get( $url, [ 'timeout' => 30 ] );
9
+ if (is_wp_error($response)) {
10
+ // ToDO log error
11
+ return [];
12
+ }
13
+ $body = wp_remote_retrieve_body($response);
14
+ $ip_ranges = @json_decode($body, true);
15
+
16
+ $ip_ranges = apply_filters('geoip_detect2_dynamic_reverse_proxies_aws_pre_ranges', $ip_ranges);
17
+
18
+ $prefixes = [];
19
+ foreach(['prefixes', 'ipv6_prefixes'] as $prefix_type) {
20
+ if (isset($ip_ranges[$prefix_type]) && is_array($ip_ranges[$prefix_type])) {
21
+ $prefixes = array_merge($prefixes, $ip_ranges[$prefix_type]);
22
+ }
23
+ }
24
+
25
+ $ips = [];
26
+ foreach ($prefixes as $p) {
27
+ if (in_array($p['service'], $types)) {
28
+ if (!empty($p['ipv6_prefix'])) {
29
+ $ips[] = $p['ipv6_prefix'];
30
+ } else if (!empty($p['ip_prefix'])) {
31
+ $ips[] = $p['ip_prefix'];
32
+ }
33
+ }
34
+ }
35
+
36
+ return $ips;
37
+ }
38
+ }
lib/dynamic-reverse-proxies/cloudflare.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class DynamicReverseProxiesCloudflare {
4
+ public function getIps() {
5
+ $urls = apply_filters('geoip_detect2_dynamic_reverse_proxies_cloudflare_urls', ['https://www.cloudflare.com/ips-v4', 'https://www.cloudflare.com/ips-v6']);
6
+
7
+ $ips = [];
8
+ foreach ($urls as $url) {
9
+ $response = wp_safe_remote_get( $url, [ 'timeout' => 30 ] );
10
+ if (is_wp_error($response)) {
11
+ // TODO log error
12
+ continue;
13
+ }
14
+ $body = wp_remote_retrieve_body( $response );
15
+ $ips = array_merge($ips, explode("\n", $body));
16
+ }
17
+ return $ips;
18
+ }
19
+ }
lib/get-client-ip.php CHANGED
@@ -27,7 +27,19 @@ class GetClientIp {
27
 
28
  public function __construct() {
29
  $this->proxyWhitelist[] = '::1';
30
- $this->proxyWhitelist[] = '127.0.0.1';
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  public function addProxiesToWhitelist($trusted_proxies) {
27
 
28
  public function __construct() {
29
  $this->proxyWhitelist[] = '::1';
30
+
31
+ /**
32
+ * By default, all internal IPs may be reverse proxies.
33
+ * @api
34
+ */
35
+ if (apply_filters('geoip_detect2_client_ip_whitelist_internal_ips', true)) {
36
+ $this->proxyWhitelist[] = '127.0.0.0/8';
37
+ $this->proxyWhitelist[] = '10.0.0.0/8';
38
+ $this->proxyWhitelist[] = '172.16.0.0/12';
39
+ $this->proxyWhitelist[] = '192.168.0.0/16';
40
+ } else {
41
+ $this->proxyWhitelist[] = '127.0.0.1';
42
+ }
43
  }
44
 
45
  public function addProxiesToWhitelist($trusted_proxies) {
readme.txt CHANGED
@@ -170,6 +170,12 @@ If you use Maxmind "Automatic download" then you need to upgrade to this plugin
170
 
171
  == Changelog ==
172
 
 
 
 
 
 
 
173
  = 5.1.0 =
174
 
175
  New Datasource: Fastah Web API (beta), see https://aws.amazon.com/marketplace/pp/prodview-k5gjowexrefl2
170
 
171
  == Changelog ==
172
 
173
+
174
+ = 5.1.1 =
175
+ * NEW: For the reverse proxy configuration, internal adresses (such as 10.0.0.0/8) are now whitelisted by default. You can override this behaviour by using the wordpress filter `geoip_detect2_client_ip_whitelist_internal_ips`.
176
+ * NEW: Body classes now include the city name in English (e.g. geoip-city-Munich)
177
+ * FIX: Some server configurations showed this warning: Use of undefined constant CURL_HTTP_VERSION_2_0
178
+
179
  = 5.1.0 =
180
 
181
  New Datasource: Fastah Web API (beta), see https://aws.amazon.com/marketplace/pp/prodview-k5gjowexrefl2