diff --git a/package-lock.json b/package-lock.json index 30beba83..77394319 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "homey-lib", - "version": "2.21.1", + "version": "2.26.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index d830234f..ca923d1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homey-lib", - "version": "2.21.1", + "version": "2.26.0", "description": "Shared Library for Homey", "main": "index.js", "scripts": { diff --git a/webpack/index.js b/webpack/index.js index 2b125846..23b117b9 100644 --- a/webpack/index.js +++ b/webpack/index.js @@ -5,8 +5,8 @@ * @author Feross Aboukhadijeh * @license MIT */ -var a=r(26),n=r(27),i=r(28);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return N(e).length;default:if(a)return U(e).length;t=(""+t).toLowerCase(),a=!0}}function f(e,t,r){var a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return j(this,t,r);case"utf8":case"utf-8":return z(this,t,r);case"ascii":return E(this,t,r);case"latin1":case"binary":return C(this,t,r);case"base64":return A(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function v(e,t,r){var a=e[t];e[t]=e[r],e[r]=a}function g(e,t,r,a,n){if(0===e.length)return-1;if("string"==typeof r?(a=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(n)return-1;r=e.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof t&&(t=l.from(t,a)),l.isBuffer(t))return 0===t.length?-1:y(e,t,r,a,n);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):y(e,[t],r,a,n);throw new TypeError("val must be string, number or Buffer")}function y(e,t,r,a,n){var i,s=1,o=e.length,l=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;s=2,o/=2,l/=2,r/=2}function u(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(n){var d=-1;for(i=r;io&&(r=o-l),i=r;i>=0;i--){for(var c=!0,p=0;pn&&(a=n):a=n;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");a>i/2&&(a=i/2);for(var s=0;s>8,n=r%256,i.push(n),i.push(a);return i}(t,e.length-r),e,r,a)}function A(e,t,r){return 0===t&&r===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,r))}function z(e,t,r){r=Math.min(e.length,r);for(var a=[],n=t;n239?4:u>223?3:u>191?2:1;if(n+c<=r)switch(c){case 1:u<128&&(d=u);break;case 2:128==(192&(i=e[n+1]))&&(l=(31&u)<<6|63&i)>127&&(d=l);break;case 3:i=e[n+1],s=e[n+2],128==(192&i)&&128==(192&s)&&(l=(15&u)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:i=e[n+1],s=e[n+2],o=e[n+3],128==(192&i)&&128==(192&s)&&128==(192&o)&&(l=(15&u)<<18|(63&i)<<12|(63&s)<<6|63&o)>65535&&l<1114112&&(d=l)}null===d?(d=65533,c=1):d>65535&&(d-=65536,a.push(d>>>10&1023|55296),d=56320|1023&d),a.push(d),n+=c}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",a=0;for(;a0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},l.prototype.compare=function(e,t,r,a,n){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===a&&(a=0),void 0===n&&(n=this.length),t<0||r>e.length||a<0||n>this.length)throw new RangeError("out of range index");if(a>=n&&t>=r)return 0;if(a>=n)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(n>>>=0)-(a>>>=0),s=(r>>>=0)-(t>>>=0),o=Math.min(i,s),u=this.slice(a,n),d=e.slice(t,r),c=0;cn)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i=!1;;)switch(a){case"hex":return b(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return k(this,e,t,r);case"latin1":case"binary":return _(this,e,t,r);case"base64":return P(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function E(e,t,r){var a="";r=Math.min(e.length,r);for(var n=t;na)&&(r=a);for(var n="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,r,a,n,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}function $(e,t,r,a){t<0&&(t=65535+t+1);for(var n=0,i=Math.min(e.length-r,2);n>>8*(a?n:1-n)}function T(e,t,r,a){t<0&&(t=4294967295+t+1);for(var n=0,i=Math.min(e.length-r,4);n>>8*(a?n:3-n)&255}function R(e,t,r,a,n,i){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(e,t,r,a,i){return i||R(e,0,r,4),n.write(e,t,r,a,23,4),r+4}function I(e,t,r,a,i){return i||R(e,0,r,8),n.write(e,t,r,a,52,8),r+8}l.prototype.slice=function(e,t){var r,a=this.length;if((e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t0&&(n*=256);)a+=this[e+--t]*n;return a},l.prototype.readUInt8=function(e,t){return t||x(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||x(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||x(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var a=this[e],n=1,i=0;++i=(n*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var a=t,n=1,i=this[e+--a];a>0&&(n*=256);)i+=this[e+--a]*n;return i>=(n*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||x(e,4,this.length),n.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||x(e,4,this.length),n.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||x(e,8,this.length),n.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||x(e,8,this.length),n.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,a){(e=+e,t|=0,r|=0,a)||L(this,e,t,r,Math.pow(2,8*r)-1,0);var n=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+n]=e/i&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):$(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):$(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):T(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):T(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,a){if(e=+e,t|=0,!a){var n=Math.pow(2,8*r-1);L(this,e,t,r,n-1,-n)}var i=0,s=1,o=0;for(this[t]=255&e;++i>0)-o&255;return t+r},l.prototype.writeIntBE=function(e,t,r,a){if(e=+e,t|=0,!a){var n=Math.pow(2,8*r-1);L(this,e,t,r,n-1,-n)}var i=r-1,s=1,o=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/s>>0)-o&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):$(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):$(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):T(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):T(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return D(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return D(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return I(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return I(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,a){if(r||(r=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a=this.length)throw new RangeError("sourceStart out of bounds");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t=0;--n)e[n+t]=this[n+r];else if(i<1e3||!l.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===a){(t-=3)>-1&&i.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(t-=3)>-1&&i.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function N(e){return a.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,r,a){for(var n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}}).call(this,r(7))},function(e,t,r){"use strict";var a=r(37),n=r(4),i=r(0),s=r(9),o=r(39);function l(e,t,r){var a=this._refs[r];if("string"==typeof a){if(!this._refs[a])return l.call(this,e,t,a);a=this._refs[a]}if((a=a||this._schemas[r])instanceof s)return h(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var n,i,o,d=u.call(this,t,r);return d&&(n=d.schema,t=d.root,o=d.baseId),n instanceof s?i=n.validate||e.call(this,n.schema,t,void 0,o):void 0!==n&&(i=h(n,this._opts.inlineRefs)?n:e.call(this,n,t,void 0,o)),i}function u(e,t){var r=a.parse(t),n=v(r),i=f(this._getId(e.schema));if(0===Object.keys(e.schema).length||n!==i){var o=y(n),l=this._refs[o];if("string"==typeof l)return d.call(this,e,l,r);if(l instanceof s)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[o])instanceof s))return;if(l.validate||this._compile(l),o==y(t))return{schema:l,root:e,baseId:i};e=l}if(!e.schema)return;i=f(this._getId(e.schema))}return p.call(this,r,i,e.schema,e)}function d(e,t,r){var a=u.call(this,e,t);if(a){var n=a.schema,i=a.baseId;e=a.root;var s=this._getId(n);return s&&(i=b(i,s)),p.call(this,r,i,n,e)}}e.exports=l,l.normalizeId=y,l.fullPath=f,l.url=b,l.ids=function(e){var t=y(this._getId(e)),r={"":t},s={"":f(t,!1)},l={},u=this;return o(e,{allKeys:!0},(function(e,t,o,d,c,p,m){if(""!==t){var h=u._getId(e),f=r[d],v=s[d]+"/"+c;if(void 0!==m&&(v+="/"+("number"==typeof m?m:i.escapeFragment(m))),"string"==typeof h){h=f=y(f?a.resolve(f,h):h);var g=u._refs[h];if("string"==typeof g&&(g=u._refs[g]),g&&g.schema){if(!n(e,g.schema))throw new Error('id "'+h+'" resolves to more than one schema')}else if(h!=y(v))if("#"==h[0]){if(l[h]&&!n(e,l[h]))throw new Error('id "'+h+'" resolves to more than one schema');l[h]=e}else u._refs[h]=v}r[t]=f,s[t]=v}})),l},l.inlineRef=h,l.schema=u;var c=i.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(e,t,r,a){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var n=e.fragment.split("/"),s=1;s(e[t]=r(73)(`./${t}.json`),e[t]=i._composeCapability(t,e[t]),e),{}),n}static getCapability(e){const t=i.getCapabilities()[e];if(!t)throw new Error("invalid_capability");return t}static hasCapability(e){return!!this.getCapabilities()[e]}static _composeCapability(e,t){return t.flow&&console.warn(`Warning: using \`capability.flow\` (${e}), expected a \`capability.$flow\``),t.$flow&&["triggers","conditions","actions"].forEach(r=>{const a=t.$flow[r];Array.isArray(a)&&a.forEach(r=>{Array.isArray(r.args)&&r.args.forEach(e=>{"dropdown"===e.type&&"$values"===e.values&&(e.values=t.values)}),Array.isArray(r.tokens)&&r.tokens.forEach(r=>{"$id"===r.name&&(r.name=e),"$type"===r.type&&(r.type=t.type),"$title"===r.title&&(r.title=t.title)})})}),t}}e.exports=i},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";var a=r(36),n=r(3),i=r(40),s=r(9),o=r(10),l=r(41),u=r(42),d=r(63),c=r(0);e.exports=g,g.prototype.validate=function(e,t){var r;if("string"==typeof e){if(!(r=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);r=a.validate||this._compile(a)}var n=r(t);!0!==r.$async&&(this.errors=r.errors);return n},g.prototype.compile=function(e,t){var r=this._addSchema(e,void 0,t);return r.validate||this._compile(r)},g.prototype.addSchema=function(e,t,r,a){if(Array.isArray(e)){for(var i=0;i",y=m?">":"<",b=void 0;if(!p&&"number"!=typeof o&&void 0!==o)throw new Error(t+" must be number");if(!v&&void 0!==f&&"number"!=typeof f&&"boolean"!=typeof f)throw new Error(h+" must be number or boolean");if(v){var w=e.util.getData(f.$data,s,e.dataPathArr),k="exclusive"+i,_="exclType"+i,P="exclIsNumber"+i,S="' + "+(E="op"+i)+" + '";n+=" var schemaExcl"+i+" = "+w+"; ",n+=" var "+k+"; var "+_+" = typeof "+(w="schemaExcl"+i)+"; if ("+_+" != 'boolean' && "+_+" != 'undefined' && "+_+" != 'number') { ";var A;b=h;(A=A||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(b||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: '"+h+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var z=n;n=A.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+z+"]); ":n+=" validate.errors = ["+z+"]; return false; ":n+=" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" "+_+" == 'number' ? ( ("+k+" = "+a+" === undefined || "+w+" "+g+"= "+a+") ? "+c+" "+y+"= "+w+" : "+c+" "+y+" "+a+" ) : ( ("+k+" = "+w+" === true) ? "+c+" "+y+"= "+a+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { var op"+i+" = "+k+" ? '"+g+"' : '"+g+"='; ",void 0===o&&(b=h,u=e.errSchemaPath+"/"+h,a=w,p=v)}else{S=g;if((P="number"==typeof f)&&p){var E="'"+S+"'";n+=" if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" ( "+a+" === undefined || "+f+" "+g+"= "+a+" ? "+c+" "+y+"= "+f+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { "}else{P&&void 0===o?(k=!0,b=h,u=e.errSchemaPath+"/"+h,a=f,y+="="):(P&&(a=Math[m?"min":"max"](f,o)),f===(!P||a)?(k=!0,b=h,u=e.errSchemaPath+"/"+h,y+="="):(k=!1,S+="="));E="'"+S+"'";n+=" if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" "+c+" "+y+" "+a+" || "+c+" !== "+c+") { "}}b=b||t,(A=A||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(b||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+E+", limit: "+a+", exclusive: "+k+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be "+S+" ",n+=p?"' + "+a:a+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";z=n;return n=A.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+z+"]); ":n+=" validate.errors = ["+z+"]; return false; ":n+=" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" "+c+".length "+("maxItems"==t?">":"<")+" "+a+") { ";var m=t,h=h||[];h.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(m||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"fewer",n+=" than ",n+=p?"' + "+a+" + '":""+o,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var f=n;return n=h.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");var m="maxLength"==t?">":"<";n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),!1===e.opts.unicode?n+=" "+c+".length ":n+=" ucs2length("+c+") ",n+=" "+m+" "+a+") { ";var h=t,f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(h||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=p?"' + "+a+" + '":""+o,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var v=n;return n=f.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+v+"]); ":n+=" validate.errors = ["+v+"]; return false; ":n+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" Object.keys("+c+").length "+("maxProperties"==t?">":"<")+" "+a+") { ";var m=t,h=h||[];h.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(m||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"fewer",n+=" than ",n+=p?"' + "+a+" + '":""+o,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var f=n;return n=h.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e){e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},function(e,t){var r,a,n=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function o(e){if(r===setTimeout)return setTimeout(e,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(e){r=i}try{a="function"==typeof clearTimeout?clearTimeout:s}catch(e){a=s}}();var l,u=[],d=!1,c=-1;function p(){d&&l&&(d=!1,l.length?u=l.concat(u):c=-1,u.length&&m())}function m(){if(!d){var e=o(p);d=!0;for(var t=u.length;t;){for(l=u,u=[];++c1)for(var r=1;r(e[t]=r(147)(`./${t}.json`),e),{}),n}static getClass(e){const t=i.getClasses()[e];if(!t)throw new Error("invalid_class");return t}static getCapabilities(){return a.getCapabilities()}}e.exports=i},function(e,t,r){"use strict";const{validate:a,genericValidator:n,irValidator:i,rfValidator:s,rf433Validator:o,rf868Validator:l,modulationValidator:u,prontoValidator:d}=r(174);e.exports=class{constructor(e,{frequency:t}={}){this._signal=e,this._frequency=t,this._check=this._check.bind(this)}debug(...e){this._debug&&console.log("[dbg]",...e)}_check(e,t){if(!0!==t)throw new Error(e)}async validate({debug:e=!1}={}){if(this._debug=e,this.debug("Validating signal"),!this._signal)throw new Error("Invalid Signal");if("prontohex"===this._signal.type)this._validateProntohex();else{if(void 0!==this._signal.type)throw new Error("Invalid Signal type");this._validateRegular()}if("433"===this._frequency)this._validate433();else if("868"===this._frequency)this._validate868();else{if("ir"!==this._frequency)throw new Error("Invalid Frequency");this._validateInfrared()}this.debug("Validated successfully")}_validateWithEngine(e){return a(e,this._check,this._signal)}_validateProntohex(){this._check("mandatory_fields",this._signal.hasOwnProperty("cmds")),this._validateWithEngine(d)}_validateRegular(){this._check("mandatory_fields",this._signal.hasOwnProperty("sof")||this._signal.hasOwnProperty("eof")||this._signal.hasOwnProperty("words")),this._validateWithEngine(n),this._validateWithEngine(s)}_validate433(){this._validateWithEngine(u),this._validateWithEngine(o)}_validate868(){this._validateWithEngine(u),this._validateWithEngine(l)}_validateInfrared(){this._validateWithEngine(i)}}},function(e,t,r){"use strict";e.exports=class{static getCurrencies(){return r(175)}static getBatteries(){return["LS14250","C","AA","AAA","AAAA","A23","A27","PP3","CR123A","CR2","CR1632","CR2032","CR2430","CR2450","CR2477","CR3032","CR14250","INTERNAL","OTHER"]}}},function(e,t,r){(function(e){function r(e,t){for(var r=0,a=e.length-1;a>=0;a--){var n=e[a];"."===n?e.splice(a,1):".."===n?(e.splice(a,1),r++):r&&(e.splice(a,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function a(e,t){if(e.filter)return e.filter(t);for(var r=[],a=0;a=-1&&!n;i--){var s=i>=0?arguments[i]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,n="/"===s.charAt(0))}return(n?"/":"")+(t=r(a(t.split("/"),(function(e){return!!e})),!n).join("/"))||"."},t.normalize=function(e){var i=t.isAbsolute(e),s="/"===n(e,-1);return(e=r(a(e.split("/"),(function(e){return!!e})),!i).join("/"))||i||(e="."),e&&s&&(e+="/"),(i?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(a(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,r){function a(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var n=a(e.split("/")),i=a(r.split("/")),s=Math.min(n.length,i.length),o=s,l=0;l=1;--i)if(47===(t=e.charCodeAt(i))){if(!n){a=i;break}}else n=!1;return-1===a?r?"/":".":r&&1===a?"/":e.slice(0,a)},t.basename=function(e,t){var r=function(e){"string"!=typeof e&&(e+="");var t,r=0,a=-1,n=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!n){r=t+1;break}}else-1===a&&(n=!1,a=t+1);return-1===a?"":e.slice(r,a)}(e);return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,r=0,a=-1,n=!0,i=0,s=e.length-1;s>=0;--s){var o=e.charCodeAt(s);if(47!==o)-1===a&&(n=!1,a=s+1),46===o?-1===t?t=s:1!==i&&(i=1):-1!==t&&(i=-1);else if(!n){r=s+1;break}}return-1===t||-1===a||0===i||1===i&&t===a-1&&t===r+1?"":e.slice(t,a)};var n="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(this,r(17))},function(e,t,r){"use strict";var a={bmp:r(178),cur:r(179),dds:r(180),gif:r(181),ico:r(23),jpg:r(182),png:r(183),psd:r(184),svg:r(185),tiff:r(186),webp:r(188)};e.exports=a},function(e,t,r){"use strict";function a(e,t){var r=e.readUInt8(t);return 0===r?256:r}function n(e,t){var r=6+16*t;return{width:a(e,r),height:a(e,r+1)}}e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&1===e.readUInt16LE(2)},calculate:function(e){var t,r=e.readUInt16LE(4),a=n(e,0);if(1===r)return a;for(a.images=[{width:a.width,height:a.height}],t=1;t=5.0.0`)}if(a){if(void 0===n.platforms)throw new Error("The property `platforms` is required in order to publish a verified app.");if(void 0===n.support)throw new Error("The property `support` is required in order to publish a verified app.")}if(Array.isArray(n.permissions)){const e=E.getPermissions();n.permissions.forEach(t=>{if("homey:app:com.athom.homeyscript"===t)throw new Error("Forbidden permission: "+t);if("homey:manager:api"===t&&r&&console.warn("Warning: using the homey:manager:api permission will require a more thorough review. It may take longer than usual to review your app."),"homey:manager:speech-input"===t){if(a)throw new Error(`Unsupported permission: ${t}, please remove any speech input related functionality.`);console.warn("Warning: the homey:manager:speech-input permission is not supported, please remove any speech input related functionality.")}if(!t.startsWith("homey:app:")&&void 0===e[t])throw new Error("Invalid permission: "+t)})}if(n.category){const e=E.getCategories();let t=[];t=Array.isArray(n.category)?n.category:[n.category],t.forEach(t=>{if(!e.includes(t))throw new Error("Invalid category: "+t)})}else if(r)throw new Error("The property `category` is required in order to publish an app.");if(Array.isArray(n.drivers)){const e=l.getClasses(),t=l.getCapabilities();for(let i=0;i{const a=e.split(".")[0],i=void 0!==t[a],o=void 0!==n.capabilities&&void 0!==n.capabilities[a];if(!i&&!o)throw new Error(`drivers.${s.id} invalid capability: ${e}`);if(z.includes(a)&&(!s.energy||!Array.isArray(s.energy.batteries))&&r)throw new Error(`drivers.${s.id} is missing an array 'energy.batteries' because the capability ${a} is being used.`)}),Array.isArray(s.pair))for(let e=0;et.id===e))throw new Error(`drivers.${s.id} invalid navigation.prev: ${e}`)}const r=t.navigation.next;if(r){if(!s.pair.find(e=>e.id===r))throw new Error(`drivers.${s.id} invalid navigation.next: ${r}`)}}void 0===t.template&&await this._ensureFileExistsCaseSensitive(b("drivers",s.id,"pair",t.id+".html"))}if(s.zwave&&Array.isArray(s.settings))for(let e=0;e{if(!e.includes(t))throw new Error(`drivers.${s.id} invalid 'battery': ${t}. Allowed values: ${e.join(", ")}`)})}}}if(void 0!==n.capabilities)for(const e of Object.keys(n.capabilities)){if(e.includes("."))throw new Error(`Invalid capability: ${e}\nCharacter '.' is reserved for subcapabilities.`);const t=n.capabilities[e],r=new u(t);try{await r.validate()}catch(t){throw new Error(`Invalid capability: ${e}\n${t.message}`)}t.icon&&await this._ensureFileExistsCaseSensitive(t.icon)}if(void 0!==n.signals)for(const e of Object.keys(n.signals))for(const t of Object.keys(n.signals[e])){const r=new d(n.signals[e][t],{frequency:e});try{await r.validate()}catch(r){throw new Error(`Invalid signal: ${e}.${t}\n${r.message}`)}}if(n.flow)for(const e of Object.keys(n.flow)){const t=n.flow[e];if(Array.isArray(t))for(let i=0;ie.id===s.id)!==i){if(n.sdk>=3)throw new Error(`Found multiple Flow card ${e} with the id "${s.id}", all Flow cards should have a unique id.`);console.warn(`Warning: Found multiple Flow card ${e} with the id "${s.id}", all Flow cards should have a unique id.`)}this._validateFlowCard(s,`flow.${e}['${s.id}']`,n,{levelPublish:r,levelVerified:a})}}if(n.discovery)for(const e of Object.keys(n.discovery)){const t=n.discovery[e],{type:r}=t;if(!t[r])throw new Error(`Missing discovery.${e}.${r}`)}if(await this._fileExistsCaseSensitive("locales")){const e=E.getLocales(),t=await this._getDirectoryContents("locales");for(let r=0;r1&&(a/=n);const i="boolean"!=typeof t.zwave.signed||t.zwave.signed,s=Math.pow(2,8*r)/2-1,o=Math.pow(2,8*r)-1;if(i&&a>s)throw new Error(`Value cannot be signed: ${e.id}, ${t.id}. Max value: ${s}, actual value: ${a}`);if(!i&&a>o)throw new Error(`Max value out of bounds: ${e.id}, ${t.id}. Max value: ${o}, actual value: ${a}`)}}}async _getDirectoryContents(e){return await this._fileExistsCaseSensitive(e),e=b(this._path,e),v(e).then(t=>t.map(t=>b(e,t)))}async _ensureFileExistsCaseSensitive(e){if(!0!==await this._fileExistsCaseSensitive(e))throw new Error("Filepath does not exist: "+e)}async _fileExistsCaseSensitive(e){e=b(this._path,e);const t=_(e);try{if(!(await h(t)).isDirectory())return!1;return(await v(t)).indexOf(k(e))>-1}catch(e){return!1}}async _validateImages(e,t){const r=["small","large"];for(let a=0;a{const t=new n(e.filter);return"device"===e.type&&(t.has("driver_id")||t.has("driverId"))}),o=e.args.filter(e=>e!==s);if(0!==o.length){if(i)for(const e of o)if(void 0===e.title)throw new Error(`${t}.args['${e.name}'].title is required for arguments in order to publish a verified app.`);if(e.droptoken&&o.push({name:"droptoken"}),void 0===e.titleFormatted){if(i)throw new Error(t+".titleFormatted is required in order to publish a verified app.");console.warn(`Warning: ${t}.titleFormatted is missing. Specifying a Flow card's formatted title will be required in the future.`)}if("string"!=typeof e.titleFormatted){if("object"==typeof e.titleFormatted&&null!==e.titleFormatted)for(const[r,a]of Object.entries(e.titleFormatted))E._checkTitleFormatted(a,o,`${t}.titleFormatted.${r}`);if(e.platforms&&r.platforms){if(e.platforms.includes("local")&&!1===r.platforms.includes("local"))throw new Error(t+" invalid 'platforms': App manifest does not list 'local' as a supported platform.");if(e.platforms.includes("cloud")&&!1===r.platforms.includes("cloud"))throw new Error(t+" invalid 'platforms': App manifest does not list 'cloud' as a supported platform.")}}else E._checkTitleFormatted(e.titleFormatted,o,t+".titleFormatted")}}static _checkTitleFormatted(e,t,r){const a=t.reduce((e,t)=>(e[t.name]=!1,e),{}),n=e.match(/\[\[(.*?)\]\]/gm);if(null===n)throw Error("Missing all args in "+r);n.forEach(e=>{const t=e.substring(2,e.length-2);if(void 0===a[t])throw Error(`Invalid [[${t}]] in ${r}.titleFormatted`);if(!0===a[t])throw Error(`Duplicate [[${t}]] in ${r}.titleFormatted`);!1===a[t]&&(a[t]=!0)});for(const[e,t]of Object.entries(a))if(!1===t)throw Error(`Missing [[${e}]] in ${r}`)}async _readBytes(e,r){e=b(this._path,e);const a=await p(e,"r"),n=t.alloc(r);return await m(a,n,0,r,0),n}static isValidId(e){return"string"==typeof e&&(!(e.length<1)&&(!(e.split(".").length<2)&&!!/^[a-zA-Z0-9_.-]*$/g.test(e)))}static isValidBrandColor(e){return o(e).getBrightness()<=184}static getJSONSchema(){const e=r(190);return JSON.parse(JSON.stringify(e))}static getPermissions(){const e=r(191);if("function"==typeof b)for(const t of Object.keys(e)){e[t].icon=b(a,"..","..","assets","app","permissions",t.replace(/:/g,"-")+".svg")}return e}static getCategories(){return["lights","video","music","appliances","security","climate","tools","internet","localization","energy"]}static getLocales(){return["ab","aa","af","ak","sq","am","ar","an","hy","as","av","ae","ay","az","bm","ba","eu","be","bn","bh","bi","bs","br","bg","my","ca","ch","ce","ny","zh","cv","kw","co","cr","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fi","fr","ff","gl","ka","de","el","gn","gu","ht","ha","he","hz","hi","ho","hu","ia","id","ie","ga","ig","ik","io","is","it","iu","ja","jv","kl","kn","kr","ks","kk","km","ki","rw","ky","kv","kg","ko","ku","kj","la","lb","lg","li","ln","lo","lt","lu","lv","gv","mk","mg","ms","ml","mt","mi","mr","mh","mn","na","nv","nd","ne","ng","nb","nn","no","ii","nr","oc","oj","cu","om","or","os","pa","pi","fa","pl","ps","pt","qu","rm","rn","ro","ru","sa","sc","sd","se","sm","sg","sr","gd","sn","si","sk","sl","so","st","es","su","sw","ss","sv","ta","te","tg","th","ti","bo","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","cy","wo","fy","xh","yi","yo","za","zu"]}static getBrandColor(e){const r=t.from(e).toString("hex");let a,n=0;do{const e=`${r}${++n}`;let t=o("#"+e.substring(e.length-6));t=o({h:t.toHsv().h,s:.75,l:.5});const i=t.toHexString();this.isValidBrandColor(i)&&(a=i)}while(!a);return a}static errorsText(e,t){return!1===Array.isArray(e)?null:e.reduce((e,r)=>{let a="";const n=new RegExp("drivers\\[(\\d+)\\]"),i=r.dataPath.match(n);if(i){const e=parseInt(i[1],10),a=t.drivers[e];a&&(r.dataPath=r.dataPath.replace(`drivers[${e}]`,`drivers['${a.id}']`))}switch(["triggers","conditions","actions"].forEach(e=>{const a=new RegExp(`flow.${e}\\[(\\d+)\\]`),n=r.dataPath.match(a);if(n){const a=parseInt(n[1],10),i=t.flow[e][a];if(i){r.dataPath=r.dataPath.replace(`flow.${e}[${a}]`,`flow.${e}['${i.id}']`);const t=new RegExp(".args\\[(\\d+)\\]"),n=r.dataPath.match(t);if(n){const e=parseInt(n[1],10),t=i.args[e];t&&(r.dataPath=r.dataPath.replace(`.args[${e}]`,`.args['${t.name}']`))}}}}),r.keyword){case"oneOf":return`${e}manifest${r.dataPath} matched no available schemas, see previous errors\n`;case"enum":a=JSON.stringify(r.params.allowedValues)}return`${e}manifest${r.dataPath} ${r.message} ${a}\n`},"").slice(0,-1)}}e.exports=E}).call(this,r(2).Buffer,"/")},function(e,t,r){"use strict";t.byteLength=function(e){var t=u(e),r=t[0],a=t[1];return 3*(r+a)/4-a},t.toByteArray=function(e){var t,r,a=u(e),s=a[0],o=a[1],l=new i(function(e,t,r){return 3*(t+r)/4-r}(0,s,o)),d=0,c=o>0?s-4:s;for(r=0;r>16&255,l[d++]=t>>8&255,l[d++]=255&t;2===o&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,l[d++]=255&t);1===o&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,l[d++]=t>>8&255,l[d++]=255&t);return l},t.fromByteArray=function(e){for(var t,r=e.length,n=r%3,i=[],s=0,o=r-n;so?o:s+16383));1===n?(t=e[r-1],i.push(a[t>>2]+a[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],i.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return i.join("")};for(var a=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,l=s.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function d(e,t,r){for(var n,i,s=[],o=t;o>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(e,t){ +var a=r(26),n=r(27),i=r(28);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return N(e).length;default:if(a)return U(e).length;t=(""+t).toLowerCase(),a=!0}}function f(e,t,r){var a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,r);case"utf8":case"utf-8":return A(this,t,r);case"ascii":return E(this,t,r);case"latin1":case"binary":return j(this,t,r);case"base64":return z(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function v(e,t,r){var a=e[t];e[t]=e[r],e[r]=a}function g(e,t,r,a,n){if(0===e.length)return-1;if("string"==typeof r?(a=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(n)return-1;r=e.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof t&&(t=l.from(t,a)),l.isBuffer(t))return 0===t.length?-1:y(e,t,r,a,n);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):y(e,[t],r,a,n);throw new TypeError("val must be string, number or Buffer")}function y(e,t,r,a,n){var i,s=1,o=e.length,l=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;s=2,o/=2,l/=2,r/=2}function u(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(n){var d=-1;for(i=r;io&&(r=o-l),i=r;i>=0;i--){for(var c=!0,p=0;pn&&(a=n):a=n;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");a>i/2&&(a=i/2);for(var s=0;s>8,n=r%256,i.push(n),i.push(a);return i}(t,e.length-r),e,r,a)}function z(e,t,r){return 0===t&&r===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,r))}function A(e,t,r){r=Math.min(e.length,r);for(var a=[],n=t;n239?4:u>223?3:u>191?2:1;if(n+c<=r)switch(c){case 1:u<128&&(d=u);break;case 2:128==(192&(i=e[n+1]))&&(l=(31&u)<<6|63&i)>127&&(d=l);break;case 3:i=e[n+1],s=e[n+2],128==(192&i)&&128==(192&s)&&(l=(15&u)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:i=e[n+1],s=e[n+2],o=e[n+3],128==(192&i)&&128==(192&s)&&128==(192&o)&&(l=(15&u)<<18|(63&i)<<12|(63&s)<<6|63&o)>65535&&l<1114112&&(d=l)}null===d?(d=65533,c=1):d>65535&&(d-=65536,a.push(d>>>10&1023|55296),d=56320|1023&d),a.push(d),n+=c}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",a=0;for(;a0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},l.prototype.compare=function(e,t,r,a,n){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===a&&(a=0),void 0===n&&(n=this.length),t<0||r>e.length||a<0||n>this.length)throw new RangeError("out of range index");if(a>=n&&t>=r)return 0;if(a>=n)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(n>>>=0)-(a>>>=0),s=(r>>>=0)-(t>>>=0),o=Math.min(i,s),u=this.slice(a,n),d=e.slice(t,r),c=0;cn)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i=!1;;)switch(a){case"hex":return b(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return k(this,e,t,r);case"latin1":case"binary":return _(this,e,t,r);case"base64":return P(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function E(e,t,r){var a="";r=Math.min(e.length,r);for(var n=t;na)&&(r=a);for(var n="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function $(e,t,r,a,n,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}function L(e,t,r,a){t<0&&(t=65535+t+1);for(var n=0,i=Math.min(e.length-r,2);n>>8*(a?n:1-n)}function T(e,t,r,a){t<0&&(t=4294967295+t+1);for(var n=0,i=Math.min(e.length-r,4);n>>8*(a?n:3-n)&255}function R(e,t,r,a,n,i){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(e,t,r,a,i){return i||R(e,0,r,4),n.write(e,t,r,a,23,4),r+4}function I(e,t,r,a,i){return i||R(e,0,r,8),n.write(e,t,r,a,52,8),r+8}l.prototype.slice=function(e,t){var r,a=this.length;if((e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t0&&(n*=256);)a+=this[e+--t]*n;return a},l.prototype.readUInt8=function(e,t){return t||x(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||x(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||x(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var a=this[e],n=1,i=0;++i=(n*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var a=t,n=1,i=this[e+--a];a>0&&(n*=256);)i+=this[e+--a]*n;return i>=(n*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||x(e,4,this.length),n.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||x(e,4,this.length),n.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||x(e,8,this.length),n.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||x(e,8,this.length),n.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,a){(e=+e,t|=0,r|=0,a)||$(this,e,t,r,Math.pow(2,8*r)-1,0);var n=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+n]=e/i&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):T(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):T(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,a){if(e=+e,t|=0,!a){var n=Math.pow(2,8*r-1);$(this,e,t,r,n-1,-n)}var i=0,s=1,o=0;for(this[t]=255&e;++i>0)-o&255;return t+r},l.prototype.writeIntBE=function(e,t,r,a){if(e=+e,t|=0,!a){var n=Math.pow(2,8*r-1);$(this,e,t,r,n-1,-n)}var i=r-1,s=1,o=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/s>>0)-o&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):T(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||$(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):T(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return D(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return D(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return I(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return I(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,a){if(r||(r=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a=this.length)throw new RangeError("sourceStart out of bounds");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t=0;--n)e[n+t]=this[n+r];else if(i<1e3||!l.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===a){(t-=3)>-1&&i.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(t-=3)>-1&&i.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function N(e){return a.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,r,a){for(var n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}}).call(this,r(7))},function(e,t,r){"use strict";var a=r(37),n=r(4),i=r(0),s=r(9),o=r(39);function l(e,t,r){var a=this._refs[r];if("string"==typeof a){if(!this._refs[a])return l.call(this,e,t,a);a=this._refs[a]}if((a=a||this._schemas[r])instanceof s)return h(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var n,i,o,d=u.call(this,t,r);return d&&(n=d.schema,t=d.root,o=d.baseId),n instanceof s?i=n.validate||e.call(this,n.schema,t,void 0,o):void 0!==n&&(i=h(n,this._opts.inlineRefs)?n:e.call(this,n,t,void 0,o)),i}function u(e,t){var r=a.parse(t),n=v(r),i=f(this._getId(e.schema));if(0===Object.keys(e.schema).length||n!==i){var o=y(n),l=this._refs[o];if("string"==typeof l)return d.call(this,e,l,r);if(l instanceof s)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[o])instanceof s))return;if(l.validate||this._compile(l),o==y(t))return{schema:l,root:e,baseId:i};e=l}if(!e.schema)return;i=f(this._getId(e.schema))}return p.call(this,r,i,e.schema,e)}function d(e,t,r){var a=u.call(this,e,t);if(a){var n=a.schema,i=a.baseId;e=a.root;var s=this._getId(n);return s&&(i=b(i,s)),p.call(this,r,i,n,e)}}e.exports=l,l.normalizeId=y,l.fullPath=f,l.url=b,l.ids=function(e){var t=y(this._getId(e)),r={"":t},s={"":f(t,!1)},l={},u=this;return o(e,{allKeys:!0},(function(e,t,o,d,c,p,m){if(""!==t){var h=u._getId(e),f=r[d],v=s[d]+"/"+c;if(void 0!==m&&(v+="/"+("number"==typeof m?m:i.escapeFragment(m))),"string"==typeof h){h=f=y(f?a.resolve(f,h):h);var g=u._refs[h];if("string"==typeof g&&(g=u._refs[g]),g&&g.schema){if(!n(e,g.schema))throw new Error('id "'+h+'" resolves to more than one schema')}else if(h!=y(v))if("#"==h[0]){if(l[h]&&!n(e,l[h]))throw new Error('id "'+h+'" resolves to more than one schema');l[h]=e}else u._refs[h]=v}r[t]=f,s[t]=v}})),l},l.inlineRef=h,l.schema=u;var c=i.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(e,t,r,a){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var n=e.fragment.split("/"),s=1;s(e[t]=r(73)(`./${t}.json`),e[t]=i._composeCapability(t,e[t]),e),{}),n}static getCapability(e){const t=i.getCapabilities()[e];if(!t)throw new Error("invalid_capability");return t}static hasCapability(e){return!!this.getCapabilities()[e]}static _composeCapability(e,t){return t.flow&&console.warn(`Warning: using \`capability.flow\` (${e}), expected a \`capability.$flow\``),t.$flow&&["triggers","conditions","actions"].forEach(r=>{const a=t.$flow[r];Array.isArray(a)&&a.forEach(r=>{Array.isArray(r.args)&&r.args.forEach(e=>{"dropdown"===e.type&&"$values"===e.values&&(e.values=t.values)}),Array.isArray(r.tokens)&&r.tokens.forEach(r=>{"$id"===r.name&&(r.name=e),"$type"===r.type&&(r.type=t.type),"$title"===r.title&&(r.title=t.title)})})}),t}}e.exports=i},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";var a=r(36),n=r(3),i=r(40),s=r(9),o=r(10),l=r(41),u=r(42),d=r(63),c=r(0);e.exports=g,g.prototype.validate=function(e,t){var r;if("string"==typeof e){if(!(r=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);r=a.validate||this._compile(a)}var n=r(t);!0!==r.$async&&(this.errors=r.errors);return n},g.prototype.compile=function(e,t){var r=this._addSchema(e,void 0,t);return r.validate||this._compile(r)},g.prototype.addSchema=function(e,t,r,a){if(Array.isArray(e)){for(var i=0;i",y=m?">":"<",b=void 0;if(!p&&"number"!=typeof o&&void 0!==o)throw new Error(t+" must be number");if(!v&&void 0!==f&&"number"!=typeof f&&"boolean"!=typeof f)throw new Error(h+" must be number or boolean");if(v){var w=e.util.getData(f.$data,s,e.dataPathArr),k="exclusive"+i,_="exclType"+i,P="exclIsNumber"+i,S="' + "+(E="op"+i)+" + '";n+=" var schemaExcl"+i+" = "+w+"; ",n+=" var "+k+"; var "+_+" = typeof "+(w="schemaExcl"+i)+"; if ("+_+" != 'boolean' && "+_+" != 'undefined' && "+_+" != 'number') { ";var z;b=h;(z=z||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(b||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: '"+h+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var A=n;n=z.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+A+"]); ":n+=" validate.errors = ["+A+"]; return false; ":n+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" "+_+" == 'number' ? ( ("+k+" = "+a+" === undefined || "+w+" "+g+"= "+a+") ? "+c+" "+y+"= "+w+" : "+c+" "+y+" "+a+" ) : ( ("+k+" = "+w+" === true) ? "+c+" "+y+"= "+a+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { var op"+i+" = "+k+" ? '"+g+"' : '"+g+"='; ",void 0===o&&(b=h,u=e.errSchemaPath+"/"+h,a=w,p=v)}else{S=g;if((P="number"==typeof f)&&p){var E="'"+S+"'";n+=" if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" ( "+a+" === undefined || "+f+" "+g+"= "+a+" ? "+c+" "+y+"= "+f+" : "+c+" "+y+" "+a+" ) || "+c+" !== "+c+") { "}else{P&&void 0===o?(k=!0,b=h,u=e.errSchemaPath+"/"+h,a=f,y+="="):(P&&(a=Math[m?"min":"max"](f,o)),f===(!P||a)?(k=!0,b=h,u=e.errSchemaPath+"/"+h,y+="="):(k=!1,S+="="));E="'"+S+"'";n+=" if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" "+c+" "+y+" "+a+" || "+c+" !== "+c+") { "}}b=b||t,(z=z||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(b||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+E+", limit: "+a+", exclusive: "+k+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be "+S+" ",n+=p?"' + "+a:a+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";A=n;return n=z.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+A+"]); ":n+=" validate.errors = ["+A+"]; return false; ":n+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" "+c+".length "+("maxItems"==t?">":"<")+" "+a+") { ";var m=t,h=h||[];h.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(m||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"fewer",n+=" than ",n+=p?"' + "+a+" + '":""+o,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var f=n;return n=h.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");var m="maxLength"==t?">":"<";n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),!1===e.opts.unicode?n+=" "+c+".length ":n+=" ucs2length("+c+") ",n+=" "+m+" "+a+") { ";var h=t,f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(h||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=p?"' + "+a+" + '":""+o,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var v=n;return n=f.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+v+"]); ":n+=" validate.errors = ["+v+"]; return false; ":n+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),n+=" Object.keys("+c+").length "+("maxProperties"==t?">":"<")+" "+a+") { ";var m=t,h=h||[];h.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(m||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"fewer",n+=" than ",n+=p?"' + "+a+" + '":""+o,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var f=n;return n=h.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e){e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},function(e,t){var r,a,n=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function o(e){if(r===setTimeout)return setTimeout(e,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(e){r=i}try{a="function"==typeof clearTimeout?clearTimeout:s}catch(e){a=s}}();var l,u=[],d=!1,c=-1;function p(){d&&l&&(d=!1,l.length?u=l.concat(u):c=-1,u.length&&m())}function m(){if(!d){var e=o(p);d=!0;for(var t=u.length;t;){for(l=u,u=[];++c1)for(var r=1;r(e[t]=r(147)(`./${t}.json`),e),{}),n}static getClass(e){const t=i.getClasses()[e];if(!t)throw new Error("invalid_class");return t}static getCapabilities(){return a.getCapabilities()}}e.exports=i},function(e,t,r){"use strict";const{validate:a,genericValidator:n,irValidator:i,rfValidator:s,rf433Validator:o,rf868Validator:l,modulationValidator:u,prontoValidator:d}=r(174);e.exports=class{constructor(e,{frequency:t}={}){this._signal=e,this._frequency=t,this._check=this._check.bind(this)}debug(...e){this._debug&&console.log("[dbg]",...e)}_check(e,t){if(!0!==t)throw new Error(e)}async validate({debug:e=!1}={}){if(this._debug=e,this.debug("Validating signal"),!this._signal)throw new Error("Invalid Signal");if("prontohex"===this._signal.type)this._validateProntohex();else{if(void 0!==this._signal.type)throw new Error("Invalid Signal type");this._validateRegular()}if("433"===this._frequency)this._validate433();else if("868"===this._frequency)this._validate868();else{if("ir"!==this._frequency)throw new Error("Invalid Frequency");this._validateInfrared()}this.debug("Validated successfully")}_validateWithEngine(e){return a(e,this._check,this._signal)}_validateProntohex(){this._check("mandatory_fields",this._signal.hasOwnProperty("cmds")),this._validateWithEngine(d)}_validateRegular(){this._check("mandatory_fields",this._signal.hasOwnProperty("sof")||this._signal.hasOwnProperty("eof")||this._signal.hasOwnProperty("words")),this._validateWithEngine(n),this._validateWithEngine(s)}_validate433(){this._validateWithEngine(u),this._validateWithEngine(o)}_validate868(){this._validateWithEngine(u),this._validateWithEngine(l)}_validateInfrared(){this._validateWithEngine(i)}}},function(e,t,r){"use strict";e.exports=class{static getCurrencies(){return r(175)}static getBatteries(){return["LS14250","C","AA","AAA","AAAA","A23","A27","PP3","CR123A","CR2","CR1632","CR2032","CR2430","CR2450","CR2477","CR3032","CR14250","INTERNAL","OTHER"]}}},function(e,t,r){(function(e){function r(e,t){for(var r=0,a=e.length-1;a>=0;a--){var n=e[a];"."===n?e.splice(a,1):".."===n?(e.splice(a,1),r++):r&&(e.splice(a,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function a(e,t){if(e.filter)return e.filter(t);for(var r=[],a=0;a=-1&&!n;i--){var s=i>=0?arguments[i]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,n="/"===s.charAt(0))}return(n?"/":"")+(t=r(a(t.split("/"),(function(e){return!!e})),!n).join("/"))||"."},t.normalize=function(e){var i=t.isAbsolute(e),s="/"===n(e,-1);return(e=r(a(e.split("/"),(function(e){return!!e})),!i).join("/"))||i||(e="."),e&&s&&(e+="/"),(i?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(a(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,r){function a(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var n=a(e.split("/")),i=a(r.split("/")),s=Math.min(n.length,i.length),o=s,l=0;l=1;--i)if(47===(t=e.charCodeAt(i))){if(!n){a=i;break}}else n=!1;return-1===a?r?"/":".":r&&1===a?"/":e.slice(0,a)},t.basename=function(e,t){var r=function(e){"string"!=typeof e&&(e+="");var t,r=0,a=-1,n=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!n){r=t+1;break}}else-1===a&&(n=!1,a=t+1);return-1===a?"":e.slice(r,a)}(e);return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,r=0,a=-1,n=!0,i=0,s=e.length-1;s>=0;--s){var o=e.charCodeAt(s);if(47!==o)-1===a&&(n=!1,a=s+1),46===o?-1===t?t=s:1!==i&&(i=1):-1!==t&&(i=-1);else if(!n){r=s+1;break}}return-1===t||-1===a||0===i||1===i&&t===a-1&&t===r+1?"":e.slice(t,a)};var n="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(this,r(17))},function(e,t,r){"use strict";var a={bmp:r(178),cur:r(179),dds:r(180),gif:r(181),ico:r(23),jpg:r(182),png:r(183),psd:r(184),svg:r(185),tiff:r(186),webp:r(188)};e.exports=a},function(e,t,r){"use strict";function a(e,t){var r=e.readUInt8(t);return 0===r?256:r}function n(e,t){var r=6+16*t;return{width:a(e,r),height:a(e,r+1)}}e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&1===e.readUInt16LE(2)},calculate:function(e){var t,r=e.readUInt16LE(4),a=n(e,0);if(1===r)return a;for(a.images=[{width:a.width,height:a.height}],t=1;t=5.0.0`)}if((n.platforms||[]).includes("cloud")&&(n.platformLocalRequiredFeatures||[]).length>0)throw new Error("The property `platformLocalRequiredFeatures` can not be used in combination with platform: `cloud`.");if(!1===(n.platforms||[]).includes("local")&&(n.platformLocalRequiredFeatures||[]).length>0&&console.warn("Warning: using `platformLocalRequiredFeatures` requires `platforms: [local]`."),a){if(void 0===n.platforms)throw new Error("The property `platforms` is required in order to publish a verified app.");if(void 0===n.support)throw new Error("The property `support` is required in order to publish a verified app.")}if(Array.isArray(n.permissions)){const e=j.getPermissions();n.permissions.forEach(t=>{if("homey:app:com.athom.homeyscript"===t)throw new Error("Forbidden permission: "+t);if("homey:manager:api"===t&&r&&console.warn("Warning: using the homey:manager:api permission will require a more thorough review. It may take longer than usual to review your app."),"homey:manager:speech-input"===t){if(a)throw new Error(`Unsupported permission: ${t}, please remove any speech input related functionality.`);console.warn("Warning: the homey:manager:speech-input permission is not supported, please remove any speech input related functionality.")}if(!t.startsWith("homey:app:")&&void 0===e[t])throw new Error("Invalid permission: "+t)})}if(n.category){const e=j.getCategories();let t=[];t=Array.isArray(n.category)?n.category:[n.category],t.forEach(t=>{if(!e.includes(t))throw new Error("Invalid category: "+t)})}else if(r)throw new Error("The property `category` is required in order to publish an app.");if(Array.isArray(n.drivers)){const e=l.getClasses(),t=l.getCapabilities();for(let i=0;i{const a=e.split(".")[0],i=void 0!==t[a],o=void 0!==n.capabilities&&void 0!==n.capabilities[a];if(!i&&!o)throw new Error(`drivers.${s.id} invalid capability: ${e}`);if(E.includes(a)&&(!s.energy||!Array.isArray(s.energy.batteries))&&r)throw new Error(`drivers.${s.id} is missing an array 'energy.batteries' because the capability ${a} is being used.`)}),Array.isArray(s.pair))for(let e=0;et.id===e))throw new Error(`drivers.${s.id} invalid navigation.prev: ${e}`)}const r=t.navigation.next;if(r){if(!s.pair.find(e=>e.id===r))throw new Error(`drivers.${s.id} invalid navigation.next: ${r}`)}}void 0===t.template&&await this._ensureFileExistsCaseSensitive(w("drivers",s.id,"pair",t.id+".html"))}const o=new Set;if(s.zwave&&Array.isArray(s.settings))for(let e=0;e{if(!e.includes(t))throw new Error(`drivers.${s.id} invalid 'battery': ${t}. Allowed values: ${e.join(", ")}`)})}if(s.connectivity&&s.connectivity.includes("matter")){if(!s.matter)throw new Error(`drivers.${s.id} has 'connectivity': 'matter' and therefore requires a 'matter' object.`);if(s.pair)throw new Error(`drivers.${s.id} invalid 'pair' configuration, Matter drivers do not support custom pairing views.`);if(void 0===s.matter.deviceVendorId&&void 0!==s.matter.deviceProductName||void 0!==s.matter.deviceVendorId&&void 0===s.matter.deviceProductName)throw new Error(`drivers.${s.id} invalid 'matter': 'deviceVendorId' and 'deviceProductName' must be defined together.`);const e=await this._fileExistsCaseSensitive(w("drivers",s.id,"device.js")),t=await this._fileExistsCaseSensitive(w("drivers",s.id,"device.mjs"));if(e||t)throw new Error(`drivers.${s.id}: using a device.${e?"js":"mjs"} file is not supported for Matter drivers.`);const r=await this._fileExistsCaseSensitive(w("drivers",s.id,"driver.js")),a=await this._fileExistsCaseSensitive(w("drivers",s.id,"driver.mjs"));if(r||a)throw new Error(`drivers.${s.id}: using a driver.${r?"js":"mjs"} file is not supported for Matter drivers.`)}if(s.matter&&(!s.connectivity||!s.connectivity.includes("matter")))throw new Error(`drivers.${s.id} Matter drivers require 'connectivity' to include 'matter'.`)}const i=n.drivers.every(e=>e.connectivity&&e.connectivity.includes("matter")),s=n.platformLocalRequiredFeatures&&n.platformLocalRequiredFeatures.includes("matter");i&&!s&&console.warn("Warning: all drivers have connectivity: matter, but matter is not set as a platform required feature."),!i&&s&&console.warn("Warning: matter is set as a platform required feature, but not all drivers have connectivity: matter.")}if(void 0!==n.capabilities)for(const e of Object.keys(n.capabilities)){if(e.includes("."))throw new Error(`Invalid capability: ${e}\nCharacter '.' is reserved for subcapabilities.`);const t=n.capabilities[e],r=new u(t);try{await r.validate()}catch(t){throw new Error(`Invalid capability: ${e}\n${t.message}`)}t.icon&&await this._ensureFileExistsCaseSensitive(t.icon)}if(void 0!==n.signals)for(const e of Object.keys(n.signals))for(const t of Object.keys(n.signals[e])){const r=new d(n.signals[e][t],{frequency:e});try{await r.validate()}catch(r){throw new Error(`Invalid signal: ${e}.${t}\n${r.message}`)}}if(n.flow)for(const e of Object.keys(n.flow)){const t=n.flow[e];if(Array.isArray(t))for(let i=0;ie.id===s.id)!==i){if(n.sdk>=3)throw new Error(`Found multiple Flow card ${e} with the id "${s.id}", all Flow cards should have a unique id.`);console.warn(`Warning: Found multiple Flow card ${e} with the id "${s.id}", all Flow cards should have a unique id.`)}this._validateFlowCard(s,`flow.${e}['${s.id}']`,n,{levelPublish:r,levelVerified:a})}}if(n.discovery)for(const e of Object.keys(n.discovery)){const t=n.discovery[e],{type:r}=t;if(!t[r])throw new Error(`Missing discovery.${e}.${r}`)}if(await this._fileExistsCaseSensitive("locales")){const e=j.getLocales(),t=await this._getDirectoryContents("locales");for(let r=0;r1&&(a/=n);const i="boolean"!=typeof t.zwave.signed||t.zwave.signed,s=Math.pow(2,8*r)/2-1,o=Math.pow(2,8*r)-1;if(i&&a>s)throw new Error(`Value cannot be signed: ${e.id}, ${t.id}. Max value: ${s}, actual value: ${a}`);if(!i&&a>o)throw new Error(`Max value out of bounds: ${e.id}, ${t.id}. Max value: ${o}, actual value: ${a}`)}}}async _getDirectoryContents(e){return await this._fileExistsCaseSensitive(e),e=w(this._path,e),g(e).then(t=>t.map(t=>w(e,t)))}async _ensureFileExistsCaseSensitive(e){if(!0!==await this._fileExistsCaseSensitive(e))throw new Error("Filepath does not exist: "+e)}async _fileExistsCaseSensitive(e){e=w(this._path,e);const t=P(e);try{if(!(await f(t)).isDirectory())return!1;return(await g(t)).indexOf(_(e))>-1}catch(e){return!1}}async _validateImages(e,t,r){const a=["small","large"];for(let n=0;n{const t=new n(e.filter);return"device"===e.type&&(t.has("driver_id")||t.has("driverId"))}),o=e.args.filter(e=>e!==s);if(0!==o.length){if(i)for(const e of o)if(void 0===e.title)throw new Error(`${t}.args['${e.name}'].title is required for arguments in order to publish a verified app.`);if(e.droptoken&&o.push({name:"droptoken"}),void 0===e.titleFormatted){if(i)throw new Error(t+".titleFormatted is required in order to publish a verified app.");console.warn(`Warning: ${t}.titleFormatted is missing. Specifying a Flow card's formatted title will be required in the future.`)}if("string"!=typeof e.titleFormatted){if("object"==typeof e.titleFormatted&&null!==e.titleFormatted)for(const[r,a]of Object.entries(e.titleFormatted))j._checkTitleFormatted(a,o,`${t}.titleFormatted.${r}`);if(e.platforms&&r.platforms){if(e.platforms.includes("local")&&!1===r.platforms.includes("local"))throw new Error(t+" invalid 'platforms': App manifest does not list 'local' as a supported platform.");if(e.platforms.includes("cloud")&&!1===r.platforms.includes("cloud"))throw new Error(t+" invalid 'platforms': App manifest does not list 'cloud' as a supported platform.")}}else j._checkTitleFormatted(e.titleFormatted,o,t+".titleFormatted")}}static _checkTitleFormatted(e,t,r){const a=t.reduce((e,t)=>(e[t.name]=!1,e),{}),n=e.match(/\[\[(.*?)\]\]/gm);if(null===n)throw Error("Missing all args in "+r);n.forEach(e=>{const t=e.substring(2,e.length-2);if(void 0===a[t])throw Error(`Invalid [[${t}]] in ${r}.titleFormatted`);if(!0===a[t])throw Error(`Duplicate [[${t}]] in ${r}.titleFormatted`);!1===a[t]&&(a[t]=!0)});for(const[e,t]of Object.entries(a))if(!1===t)throw Error(`Missing [[${e}]] in ${r}`)}async _readBytes(e,r){e=w(this._path,e);const a=await p(e,"r"),n=t.alloc(r);return await h(a,n,0,r,0),await m(a),n}static isValidId(e){return"string"==typeof e&&(!(e.length<1)&&(!(e.split(".").length<2)&&!!/^[a-zA-Z0-9_.-]*$/g.test(e)))}static isValidBrandColor(e){return o(e).getBrightness()<=184}static getJSONSchema(){const e=r(190);return JSON.parse(JSON.stringify(e))}static getPermissions(){const e=r(191);if("function"==typeof w)for(const t of Object.keys(e)){e[t].icon=w(a,"..","..","assets","app","permissions",t.replace(/:/g,"-")+".svg")}return e}static getCategories(){return["lights","video","music","appliances","security","climate","tools","internet","localization","energy"]}static getLocales(){return["ab","aa","af","ak","sq","am","ar","an","hy","as","av","ae","ay","az","bm","ba","eu","be","bn","bh","bi","bs","br","bg","my","ca","ch","ce","ny","zh","cv","kw","co","cr","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fi","fr","ff","gl","ka","de","el","gn","gu","ht","ha","he","hz","hi","ho","hu","ia","id","ie","ga","ig","ik","io","is","it","iu","ja","jv","kl","kn","kr","ks","kk","km","ki","rw","ky","kv","kg","ko","ku","kj","la","lb","lg","li","ln","lo","lt","lu","lv","gv","mk","mg","ms","ml","mt","mi","mr","mh","mn","na","nv","nd","ne","ng","nb","nn","no","ii","nr","oc","oj","cu","om","or","os","pa","pi","fa","pl","ps","pt","qu","rm","rn","ro","ru","sa","sc","sd","se","sm","sg","sr","gd","sn","si","sk","sl","so","st","es","su","sw","ss","sv","ta","te","tg","th","ti","bo","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","cy","wo","fy","xh","yi","yo","za","zu"]}static getBrandColor(e){const r=t.from(e).toString("hex");let a,n=0;do{const e=`${r}${++n}`;let t=o("#"+e.substring(e.length-6));t=o({h:t.toHsv().h,s:.75,l:.5});const i=t.toHexString();this.isValidBrandColor(i)&&(a=i)}while(!a);return a}static errorsText(e,t){return!1===Array.isArray(e)?null:e.reduce((e,r)=>{let a="";const n=new RegExp("drivers\\[(\\d+)\\]"),i=r.dataPath.match(n);if(i){const e=parseInt(i[1],10),a=t.drivers[e];a&&(r.dataPath=r.dataPath.replace(`drivers[${e}]`,`drivers['${a.id}']`))}switch(["triggers","conditions","actions"].forEach(e=>{const a=new RegExp(`flow.${e}\\[(\\d+)\\]`),n=r.dataPath.match(a);if(n){const a=parseInt(n[1],10),i=t.flow[e][a];if(i){r.dataPath=r.dataPath.replace(`flow.${e}[${a}]`,`flow.${e}['${i.id}']`);const t=new RegExp(".args\\[(\\d+)\\]"),n=r.dataPath.match(t);if(n){const e=parseInt(n[1],10),t=i.args[e];t&&(r.dataPath=r.dataPath.replace(`.args[${e}]`,`.args['${t.name}']`))}}}}),r.keyword){case"oneOf":return`${e}manifest${r.dataPath} matched no available schemas, see previous errors\n`;case"enum":a=JSON.stringify(r.params.allowedValues)}return`${e}manifest${r.dataPath} ${r.message} ${a}\n`},"").slice(0,-1)}}e.exports=j}).call(this,r(2).Buffer,"/")},function(e,t,r){"use strict";t.byteLength=function(e){var t=u(e),r=t[0],a=t[1];return 3*(r+a)/4-a},t.toByteArray=function(e){var t,r,a=u(e),s=a[0],o=a[1],l=new i(function(e,t,r){return 3*(t+r)/4-r}(0,s,o)),d=0,c=o>0?s-4:s;for(r=0;r>16&255,l[d++]=t>>8&255,l[d++]=255&t;2===o&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,l[d++]=255&t);1===o&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,l[d++]=t>>8&255,l[d++]=255&t);return l},t.fromByteArray=function(e){for(var t,r=e.length,n=r%3,i=[],s=0,o=r-n;so?o:s+16383));1===n?(t=e[r-1],i.push(a[t>>2]+a[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],i.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return i.join("")};for(var a=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,l=s.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function d(e,t,r){for(var n,i,s=[],o=t;o>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(e,t){ /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -t.read=function(e,t,r,a,n){var i,s,o=8*n-a-1,l=(1<>1,d=-7,c=r?n-1:0,p=r?-1:1,m=e[t+c];for(c+=p,i=m&(1<<-d)-1,m>>=-d,d+=o;d>0;i=256*i+e[t+c],c+=p,d-=8);for(s=i&(1<<-d)-1,i>>=-d,d+=a;d>0;s=256*s+e[t+c],c+=p,d-=8);if(0===i)i=1-u;else{if(i===l)return s?NaN:1/0*(m?-1:1);s+=Math.pow(2,a),i-=u}return(m?-1:1)*s*Math.pow(2,i-a)},t.write=function(e,t,r,a,n,i){var s,o,l,u=8*i-n-1,d=(1<>1,p=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,m=a?0:i-1,h=a?1:-1,f=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,s=d):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+c>=1?p/l:p*Math.pow(2,1-c))*l>=2&&(s++,l/=2),s+c>=d?(o=0,s=d):s+c>=1?(o=(t*l-1)*Math.pow(2,n),s+=c):(o=t*Math.pow(2,c-1)*Math.pow(2,n),s=0));n>=8;e[r+m]=255&o,m+=h,o/=256,n-=8);for(s=s<0;e[r+m]=255&s,m+=h,s/=256,u-=8);e[r+m-h]|=128*f}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";var a=r(30),n=r(32);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=b,t.resolve=function(e,t){return b(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?b(e,!1,!0).resolveObject(t):t},t.format=function(e){n.isString(e)&&(e=b(e));return e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i;var s=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(u),c=["%","/","?",";","#"].concat(d),p=["/","?","#"],m=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(33);function b(e,t,r){if(e&&n.isObject(e)&&e instanceof i)return e;var a=new i;return a.parse(e,t,r),a}i.prototype.parse=function(e,t,r){if(!n.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),o=-1!==i&&i127?$+="x":$+=L[T];if(!$.match(m)){var D=O.slice(0,E),I=O.slice(E+1),F=L.match(h);F&&(D.push(F[1]),I.unshift(F[2])),I.length&&(b="/"+I.join(".")+b),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=a.toASCII(this.hostname));var V=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+V,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!f[_])for(E=0,x=d.length;E0)&&r.host.split("@"))&&(r.auth=j.shift(),r.host=r.hostname=j.shift());return r.search=e.search,r.query=e.query,n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!P.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var A=P.slice(-1)[0],z=(r.host||e.host||P.length>1)&&("."===A||".."===A)||""===A,E=0,C=P.length;C>=0;C--)"."===(A=P[C])?P.splice(C,1):".."===A?(P.splice(C,1),E++):E&&(P.splice(C,1),E--);if(!k&&!_)for(;E--;E)P.unshift("..");!k||""===P[0]||P[0]&&"/"===P[0].charAt(0)||P.unshift(""),z&&"/"!==P.join("/").substr(-1)&&P.push("");var j,O=""===P[0]||P[0]&&"/"===P[0].charAt(0);S&&(r.hostname=r.host=O?"":P.length?P.shift():"",(j=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=j.shift(),r.host=r.hostname=j.shift()));return(k=k||r.host&&P.length)&&!O&&P.unshift(""),P.length?r.pathname=P.join("/"):(r.pathname=null,r.path=null),n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},i.prototype.parseHost=function(){var e=this.host,t=o.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,r){(function(e,a){var n;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){t&&t.nodeType,e&&e.nodeType;var s="object"==typeof a&&a;s.global!==s&&s.window!==s&&s.self;var o,l=2147483647,u=/^xn--/,d=/[^\x20-\x7E]/,c=/[\x2E\u3002\uFF0E\uFF61]/g,p={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},m=Math.floor,h=String.fromCharCode;function f(e){throw new RangeError(p[e])}function v(e,t){for(var r=e.length,a=[];r--;)a[r]=t(e[r]);return a}function g(e,t){var r=e.split("@"),a="";return r.length>1&&(a=r[0]+"@",e=r[1]),a+v((e=e.replace(c,".")).split("."),t).join(".")}function y(e){for(var t,r,a=[],n=0,i=e.length;n=55296&&t<=56319&&n65535&&(t+=h((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=h(e)})).join("")}function w(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function k(e,t,r){var a=0;for(e=r?m(e/700):e>>1,e+=m(e/t);e>455;a+=36)e=m(e/35);return m(a+36*e/(e+38))}function _(e){var t,r,a,n,i,s,o,u,d,c,p,h=[],v=e.length,g=0,y=128,w=72;for((r=e.lastIndexOf("-"))<0&&(r=0),a=0;a=128&&f("not-basic"),h.push(e.charCodeAt(a));for(n=r>0?r+1:0;n=v&&f("invalid-input"),((u=(p=e.charCodeAt(n++))-48<10?p-22:p-65<26?p-65:p-97<26?p-97:36)>=36||u>m((l-g)/s))&&f("overflow"),g+=u*s,!(u<(d=o<=w?1:o>=w+26?26:o-w));o+=36)s>m(l/(c=36-d))&&f("overflow"),s*=c;w=k(g-i,t=h.length+1,0==i),m(g/t)>l-y&&f("overflow"),y+=m(g/t),g%=t,h.splice(g++,0,y)}return b(h)}function P(e){var t,r,a,n,i,s,o,u,d,c,p,v,g,b,_,P=[];for(v=(e=y(e)).length,t=128,r=0,i=72,s=0;s=t&&pm((l-r)/(g=a+1))&&f("overflow"),r+=(o-t)*g,t=o,s=0;sl&&f("overflow"),p==t){for(u=r,d=36;!(u<(c=d<=i?1:d>=i+26?26:d-i));d+=36)_=u-c,b=36-c,P.push(h(w(c+_%b,0))),u=m(_/b);P.push(h(w(u,0))),i=k(r,g,a==n),r=0,++a}++r,++t}return P.join("")}o={version:"1.4.1",ucs2:{decode:y,encode:b},decode:_,encode:P,toASCII:function(e){return g(e,(function(e){return d.test(e)?"xn--"+P(e):e}))},toUnicode:function(e){return g(e,(function(e){return u.test(e)?_(e.slice(4).toLowerCase()):e}))}},void 0===(n=function(){return o}.call(t,r,t,e))||(e.exports=n)}()}).call(this,r(31)(e),r(7))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,r){"use strict";t.decode=t.parse=r(34),t.encode=t.stringify=r(35)},function(e,t,r){"use strict";function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var o=/\+/g;e=e.split(t);var l=1e3;i&&"number"==typeof i.maxKeys&&(l=i.maxKeys);var u=e.length;l>0&&u>l&&(u=l);for(var d=0;d=0?(c=f.substr(0,v),p=f.substr(v+1)):(c=f,p=""),m=decodeURIComponent(c),h=decodeURIComponent(p),a(s,m)?n(s[m])?s[m].push(h):s[m]=[s[m],h]:s[m]=h}return s};var n=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";var a=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,o){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?i(s(e),(function(s){var o=encodeURIComponent(a(s))+r;return n(e[s])?i(e[s],(function(e){return o+encodeURIComponent(a(e))})).join(t):o+encodeURIComponent(a(e[s]))})).join(t):o?encodeURIComponent(a(o))+r+encodeURIComponent(a(e)):""};var n=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var r=[],a=0;a=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:t,baseId:r},{index:a,compiling:!1})}function p(e,t,r){var a=m.call(this,e,t,r);a>=0&&this._compilations.splice(a,1)}function m(e,t,r){for(var a=0;a>1,d=-7,c=r?n-1:0,p=r?-1:1,m=e[t+c];for(c+=p,i=m&(1<<-d)-1,m>>=-d,d+=o;d>0;i=256*i+e[t+c],c+=p,d-=8);for(s=i&(1<<-d)-1,i>>=-d,d+=a;d>0;s=256*s+e[t+c],c+=p,d-=8);if(0===i)i=1-u;else{if(i===l)return s?NaN:1/0*(m?-1:1);s+=Math.pow(2,a),i-=u}return(m?-1:1)*s*Math.pow(2,i-a)},t.write=function(e,t,r,a,n,i){var s,o,l,u=8*i-n-1,d=(1<>1,p=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,m=a?0:i-1,h=a?1:-1,f=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,s=d):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+c>=1?p/l:p*Math.pow(2,1-c))*l>=2&&(s++,l/=2),s+c>=d?(o=0,s=d):s+c>=1?(o=(t*l-1)*Math.pow(2,n),s+=c):(o=t*Math.pow(2,c-1)*Math.pow(2,n),s=0));n>=8;e[r+m]=255&o,m+=h,o/=256,n-=8);for(s=s<0;e[r+m]=255&s,m+=h,s/=256,u-=8);e[r+m-h]|=128*f}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";var a=r(30),n=r(32);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=b,t.resolve=function(e,t){return b(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?b(e,!1,!0).resolveObject(t):t},t.format=function(e){n.isString(e)&&(e=b(e));return e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i;var s=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(u),c=["%","/","?",";","#"].concat(d),p=["/","?","#"],m=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(33);function b(e,t,r){if(e&&n.isObject(e)&&e instanceof i)return e;var a=new i;return a.parse(e,t,r),a}i.prototype.parse=function(e,t,r){if(!n.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),o=-1!==i&&i127?L+="x":L+=$[T];if(!L.match(m)){var D=O.slice(0,E),I=O.slice(E+1),F=$.match(h);F&&(D.push(F[1]),I.unshift(F[2])),I.length&&(b="/"+I.join(".")+b),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),C||(this.hostname=a.toASCII(this.hostname));var V=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+V,this.href+=this.host,C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!f[_])for(E=0,x=d.length;E0)&&r.host.split("@"))&&(r.auth=C.shift(),r.host=r.hostname=C.shift());return r.search=e.search,r.query=e.query,n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!P.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var z=P.slice(-1)[0],A=(r.host||e.host||P.length>1)&&("."===z||".."===z)||""===z,E=0,j=P.length;j>=0;j--)"."===(z=P[j])?P.splice(j,1):".."===z?(P.splice(j,1),E++):E&&(P.splice(j,1),E--);if(!k&&!_)for(;E--;E)P.unshift("..");!k||""===P[0]||P[0]&&"/"===P[0].charAt(0)||P.unshift(""),A&&"/"!==P.join("/").substr(-1)&&P.push("");var C,O=""===P[0]||P[0]&&"/"===P[0].charAt(0);S&&(r.hostname=r.host=O?"":P.length?P.shift():"",(C=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=C.shift(),r.host=r.hostname=C.shift()));return(k=k||r.host&&P.length)&&!O&&P.unshift(""),P.length?r.pathname=P.join("/"):(r.pathname=null,r.path=null),n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},i.prototype.parseHost=function(){var e=this.host,t=o.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,r){(function(e,a){var n;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){t&&t.nodeType,e&&e.nodeType;var s="object"==typeof a&&a;s.global!==s&&s.window!==s&&s.self;var o,l=2147483647,u=/^xn--/,d=/[^\x20-\x7E]/,c=/[\x2E\u3002\uFF0E\uFF61]/g,p={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},m=Math.floor,h=String.fromCharCode;function f(e){throw new RangeError(p[e])}function v(e,t){for(var r=e.length,a=[];r--;)a[r]=t(e[r]);return a}function g(e,t){var r=e.split("@"),a="";return r.length>1&&(a=r[0]+"@",e=r[1]),a+v((e=e.replace(c,".")).split("."),t).join(".")}function y(e){for(var t,r,a=[],n=0,i=e.length;n=55296&&t<=56319&&n65535&&(t+=h((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=h(e)})).join("")}function w(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function k(e,t,r){var a=0;for(e=r?m(e/700):e>>1,e+=m(e/t);e>455;a+=36)e=m(e/35);return m(a+36*e/(e+38))}function _(e){var t,r,a,n,i,s,o,u,d,c,p,h=[],v=e.length,g=0,y=128,w=72;for((r=e.lastIndexOf("-"))<0&&(r=0),a=0;a=128&&f("not-basic"),h.push(e.charCodeAt(a));for(n=r>0?r+1:0;n=v&&f("invalid-input"),((u=(p=e.charCodeAt(n++))-48<10?p-22:p-65<26?p-65:p-97<26?p-97:36)>=36||u>m((l-g)/s))&&f("overflow"),g+=u*s,!(u<(d=o<=w?1:o>=w+26?26:o-w));o+=36)s>m(l/(c=36-d))&&f("overflow"),s*=c;w=k(g-i,t=h.length+1,0==i),m(g/t)>l-y&&f("overflow"),y+=m(g/t),g%=t,h.splice(g++,0,y)}return b(h)}function P(e){var t,r,a,n,i,s,o,u,d,c,p,v,g,b,_,P=[];for(v=(e=y(e)).length,t=128,r=0,i=72,s=0;s=t&&pm((l-r)/(g=a+1))&&f("overflow"),r+=(o-t)*g,t=o,s=0;sl&&f("overflow"),p==t){for(u=r,d=36;!(u<(c=d<=i?1:d>=i+26?26:d-i));d+=36)_=u-c,b=36-c,P.push(h(w(c+_%b,0))),u=m(_/b);P.push(h(w(u,0))),i=k(r,g,a==n),r=0,++a}++r,++t}return P.join("")}o={version:"1.4.1",ucs2:{decode:y,encode:b},decode:_,encode:P,toASCII:function(e){return g(e,(function(e){return d.test(e)?"xn--"+P(e):e}))},toUnicode:function(e){return g(e,(function(e){return u.test(e)?_(e.slice(4).toLowerCase()):e}))}},void 0===(n=function(){return o}.call(t,r,t,e))||(e.exports=n)}()}).call(this,r(31)(e),r(7))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,r){"use strict";t.decode=t.parse=r(34),t.encode=t.stringify=r(35)},function(e,t,r){"use strict";function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var o=/\+/g;e=e.split(t);var l=1e3;i&&"number"==typeof i.maxKeys&&(l=i.maxKeys);var u=e.length;l>0&&u>l&&(u=l);for(var d=0;d=0?(c=f.substr(0,v),p=f.substr(v+1)):(c=f,p=""),m=decodeURIComponent(c),h=decodeURIComponent(p),a(s,m)?n(s[m])?s[m].push(h):s[m]=[s[m],h]:s[m]=h}return s};var n=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";var a=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,o){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?i(s(e),(function(s){var o=encodeURIComponent(a(s))+r;return n(e[s])?i(e[s],(function(e){return o+encodeURIComponent(a(e))})).join(t):o+encodeURIComponent(a(e[s]))})).join(t):o?encodeURIComponent(a(o))+r+encodeURIComponent(a(e)):""};var n=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var r=[],a=0;a=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:t,baseId:r},{index:a,compiling:!1})}function p(e,t,r){var a=m.call(this,e,t,r);a>=0&&this._compilations.splice(a,1)}function m(e,t,r){for(var a=0;a1){t[0]=t[0].slice(0,-1);for(var a=t.length-1,n=1;n= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,f=String.fromCharCode;function v(e){throw new RangeError(m[e])}function g(e,t){var r=e.split("@"),a="";r.length>1&&(a=r[0]+"@",e=r[1]);var n=function(e,t){for(var r=[],a=e.length;a--;)r[a]=t(e[a]);return r}((e=e.replace(p,".")).split("."),t).join(".");return a+n}function y(e){for(var t=[],r=0,a=e.length;r=55296&&n<=56319&&r>1,e+=h(e/t);e>455;a+=36)e=h(e/35);return h(a+36*e/(e+38))},k=function(e){var t,r=[],a=e.length,n=0,i=128,s=72,o=e.lastIndexOf("-");o<0&&(o=0);for(var l=0;l=128&&v("not-basic"),r.push(e.charCodeAt(l));for(var d=o>0?o+1:0;d=a&&v("invalid-input");var f=(t=e.charCodeAt(d++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:36;(f>=36||f>h((u-n)/p))&&v("overflow"),n+=f*p;var g=m<=s?1:m>=s+26?26:m-s;if(fh(u/y)&&v("overflow"),p*=y}var b=r.length+1;s=w(n-c,b,0==c),h(n/b)>u-i&&v("overflow"),i+=h(n/b),n%=b,r.splice(n++,0,i)}return String.fromCodePoint.apply(String,r)},_=function(e){var t=[],r=(e=y(e)).length,a=128,n=0,i=72,s=!0,o=!1,l=void 0;try{for(var d,c=e[Symbol.iterator]();!(s=(d=c.next()).done);s=!0){var p=d.value;p<128&&t.push(f(p))}}catch(e){o=!0,l=e}finally{try{!s&&c.return&&c.return()}finally{if(o)throw l}}var m=t.length,g=m;for(m&&t.push("-");g=a&&Eh((u-n)/C)&&v("overflow"),n+=(k-a)*C,a=k;var j=!0,O=!1,x=void 0;try{for(var L,$=e[Symbol.iterator]();!(j=(L=$.next()).done);j=!0){var T=L.value;if(Tu&&v("overflow"),T==a){for(var R=n,D=36;;D+=36){var I=D<=i?1:D>=i+26?26:D-i;if(R>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function E(e){for(var t="",r=0,a=e.length;r=194&&n<224){if(a-r>=6){var i=parseInt(e.substr(r+4,2),16);t+=String.fromCharCode((31&n)<<6|63&i)}else t+=e.substr(r,6);r+=6}else if(n>=224){if(a-r>=9){var s=parseInt(e.substr(r+4,2),16),o=parseInt(e.substr(r+7,2),16);t+=String.fromCharCode((15&n)<<12|(63&s)<<6|63&o)}else t+=e.substr(r,9);r+=9}else t+=e.substr(r,3),r+=3}return t}function C(e,t){function r(e){var r=E(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,z).replace(t.PCT_ENCODED,n)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,z).replace(t.PCT_ENCODED,n)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,z).replace(t.PCT_ENCODED,n)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,z).replace(t.PCT_ENCODED,n)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,z).replace(t.PCT_ENCODED,n)),e}function j(e){return e.replace(/^0*(.*)/,"$1")||"0"}function O(e,t){var r=e.match(t.IPV4ADDRESS)||[],a=l(r,2)[1];return a?a.split(".").map(j).join("."):e}function x(e,t){var r=e.match(t.IPV6ADDRESS)||[],a=l(r,3),n=a[1],i=a[2];if(n){for(var s=n.toLowerCase().split("::").reverse(),o=l(s,2),u=o[0],d=o[1],c=d?d.split(":").map(j):[],p=u.split(":").map(j),m=t.IPV4ADDRESS.test(p[p.length-1]),h=m?7:8,f=p.length-h,v=Array(h),g=0;g1){var w=v.slice(0,y.index),k=v.slice(y.index+y.length);b=w.join(":")+"::"+k.join(":")}else b=v.join(":");return i&&(b+="%"+i),b}return e}var L=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,$=void 0==="".match(/(){0}/)[1];function T(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},a=!1!==t.iri?o:s;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var n=e.match(L);if(n){$?(r.scheme=n[1],r.userinfo=n[3],r.host=n[4],r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=n[7],r.fragment=n[8],isNaN(r.port)&&(r.port=n[5])):(r.scheme=n[1]||void 0,r.userinfo=-1!==e.indexOf("@")?n[3]:void 0,r.host=-1!==e.indexOf("//")?n[4]:void 0,r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=-1!==e.indexOf("?")?n[7]:void 0,r.fragment=-1!==e.indexOf("#")?n[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?n[4]:void 0)),r.host&&(r.host=x(O(r.host,a),a)),void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?r.reference="relative":void 0===r.fragment?r.reference="absolute":r.reference="uri":r.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==r.reference&&(r.error=r.error||"URI is not a "+t.reference+" reference.");var i=A[(t.scheme||r.scheme||"").toLowerCase()];if(t.unicodeSupport||i&&i.unicodeSupport)C(r,a);else{if(r.host&&(t.domainHost||i&&i.domainHost))try{r.host=P(r.host.replace(a.PCT_ENCODED,E).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to ASCII via punycode: "+e}C(r,s)}i&&i.parse&&i.parse(r,t)}else r.error=r.error||"URI can not be parsed.";return r}function R(e,t){var r=!1!==t.iri?o:s,a=[];return void 0!==e.userinfo&&(a.push(e.userinfo),a.push("@")),void 0!==e.host&&a.push(x(O(String(e.host),r),r).replace(r.IPV6ADDRESS,(function(e,t,r){return"["+t+(r?"%25"+r:"")+"]"}))),"number"!=typeof e.port&&"string"!=typeof e.port||(a.push(":"),a.push(String(e.port))),a.length?a.join(""):void 0}var D=/^\.\.?\//,I=/^\/\.(\/|$)/,F=/^\/\.\.(\/|$)/,V=/^\/?(?:.|\n)*?(?=\/|$)/;function U(e){for(var t=[];e.length;)if(e.match(D))e=e.replace(D,"");else if(e.match(I))e=e.replace(I,"/");else if(e.match(F))e=e.replace(F,"/"),t.pop();else if("."===e||".."===e)e="";else{var r=e.match(V);if(!r)throw new Error("Unexpected dot segment condition");var a=r[0];e=e.slice(a.length),t.push(a)}return t.join("")}function N(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.iri?o:s,a=[],n=A[(t.scheme||e.scheme||"").toLowerCase()];if(n&&n.serialize&&n.serialize(e,t),e.host)if(r.IPV6ADDRESS.test(e.host));else if(t.domainHost||n&&n.domainHost)try{e.host=t.iri?S(e.host):P(e.host.replace(r.PCT_ENCODED,E).toLowerCase())}catch(r){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+r}C(e,r),"suffix"!==t.reference&&e.scheme&&(a.push(e.scheme),a.push(":"));var i=R(e,t);if(void 0!==i&&("suffix"!==t.reference&&a.push("//"),a.push(i),e.path&&"/"!==e.path.charAt(0)&&a.push("/")),void 0!==e.path){var l=e.path;t.absolutePath||n&&n.absolutePath||(l=U(l)),void 0===i&&(l=l.replace(/^\/\//,"/%2F")),a.push(l)}return void 0!==e.query&&(a.push("?"),a.push(e.query)),void 0!==e.fragment&&(a.push("#"),a.push(e.fragment)),a.join("")}function B(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments[3],n={};return a||(e=T(N(e,r),r),t=T(N(t,r),r)),!(r=r||{}).tolerant&&t.scheme?(n.scheme=t.scheme,n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=U(t.path||""),n.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=U(t.path||""),n.query=t.query):(t.path?("/"===t.path.charAt(0)?n.path=U(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?n.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:n.path=t.path:n.path="/"+t.path,n.path=U(n.path)),n.query=t.query):(n.path=e.path,void 0!==t.query?n.query=t.query:n.query=e.query),n.userinfo=e.userinfo,n.host=e.host,n.port=e.port),n.scheme=e.scheme),n.fragment=t.fragment,n}function M(e,t){return e&&e.toString().replace(t&&t.iri?o.PCT_ENCODED:s.PCT_ENCODED,E)}var q={scheme:"http",domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,t){var r="https"===String(e.scheme).toLowerCase();return e.port!==(r?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},H={scheme:"https",domainHost:q.domainHost,parse:q.parse,serialize:q.serialize};function W(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}var G={scheme:"ws",domainHost:!0,parse:function(e,t){var r=e;return r.secure=W(r),r.resourceName=(r.path||"/")+(r.query?"?"+r.query:""),r.path=void 0,r.query=void 0,r},serialize:function(e,t){if(e.port!==(W(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){var r=e.resourceName.split("?"),a=l(r,2),n=a[0],i=a[1];e.path=n&&"/"!==n?n:void 0,e.query=i,e.resourceName=void 0}return e.fragment=void 0,e}},K={scheme:"wss",domainHost:G.domainHost,parse:G.parse,serialize:G.serialize},J={},Z="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",Q="[0-9A-Fa-f]",Y=r(r("%[EFef]"+Q+"%"+Q+Q+"%"+Q+Q)+"|"+r("%[89A-Fa-f]"+Q+"%"+Q+Q)+"|"+r("%"+Q+Q)),X=t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),ee=new RegExp(Z,"g"),te=new RegExp(Y,"g"),re=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',X),"g"),ae=new RegExp(t("[^]",Z,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),ne=ae;function ie(e){var t=E(e);return t.match(ee)?t:e}var se={scheme:"mailto",parse:function(e,t){var r=e,a=r.to=r.path?r.path.split(","):[];if(r.path=void 0,r.query){for(var n=!1,i={},s=r.query.split("&"),o=0,l=s.length;o=55296&&t<=56319&&n%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,d=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,c=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,p=/^(?:\/(?:[^~/]|~0|~1)*)*$/,m=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,h=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function f(e){return e="full"==e?"full":"fast",a.copy(f[e])}function v(e){var t=e.match(n);if(!t)return!1;var r=+t[1],a=+t[2],s=+t[3];return a>=1&&a<=12&&s>=1&&s<=(2==a&&function(e){return e%4==0&&(e%100!=0||e%400==0)}(r)?29:i[a])}function g(e,t){var r=e.match(s);if(!r)return!1;var a=r[1],n=r[2],i=r[3],o=r[5];return(a<=23&&n<=59&&i<=59||23==a&&59==n&&60==i)&&(!t||o)}e.exports=f,f.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":u,url:d,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:k,uuid:c,"json-pointer":p,"json-pointer-uri-fragment":m,"relative-json-pointer":h},f.full={date:v,time:g,"date-time":function(e){var t=e.split(y);return 2==t.length&&v(t[0])&&g(t[1],!0)},uri:function(e){return b.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":u,url:d,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:k,uuid:c,"json-pointer":p,"json-pointer-uri-fragment":m,"relative-json-pointer":h};var y=/t|\s/i;var b=/\/|:/;var w=/[^\\]\\Z/;function k(e){if(w.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},function(e,t,r){"use strict";var a=r(43),n=r(0).toHash;e.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"];return e.all=n(t),e.types=n(["number","integer","string","array","object","boolean","null"]),e.forEach((function(r){r.rules=r.rules.map((function(r){var n;if("object"==typeof r){var i=Object.keys(r)[0];n=r[i],r=i,n.forEach((function(r){t.push(r),e.all[r]=!0}))}return t.push(r),e.all[r]={keyword:r,code:a[r],implements:n}})),e.all.$comment={keyword:"$comment",code:a.$comment},r.type&&(e.types[r.type]=r)})),e.keywords=n(t.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),e.custom={},e}},function(e,t,r){"use strict";e.exports={$ref:r(44),allOf:r(45),anyOf:r(46),$comment:r(47),const:r(48),contains:r(49),dependencies:r(50),enum:r(51),format:r(52),if:r(53),items:r(54),maximum:r(12),minimum:r(12),maxItems:r(13),minItems:r(13),maxLength:r(14),minLength:r(14),maxProperties:r(15),minProperties:r(15),multipleOf:r(55),not:r(56),oneOf:r(57),pattern:r(58),properties:r(59),propertyNames:r(60),required:r(61),uniqueItems:r(62),validate:r(11)}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n,i=" ",s=e.level,o=e.dataLevel,l=e.schema[t],u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(o||""),p="valid"+s;if("#"==l||"#/"==l)e.isRoot?(a=e.async,n="validate"):(a=!0===e.root.schema.$async,n="root.refVal[0]");else{var m=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===m){var h=e.MissingRefError.message(e.baseId,l);if("fail"==e.opts.missingRefs){e.logger.error(h),(y=y||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",!1!==e.opts.messages&&(i+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(i+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var f=i;i=y.pop(),!e.compositeRule&&d?e.async?i+=" throw new ValidationError(["+f+"]); ":i+=" validate.errors = ["+f+"]; return false; ":i+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(i+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,h);e.logger.warn(h),d&&(i+=" if (true) { ")}}else if(m.inline){var v=e.util.copy(e);v.level++;var g="valid"+v.level;v.schema=m.schema,v.schemaPath="",v.errSchemaPath=l,i+=" "+e.validate(v).replace(/validate\.schema/g,m.code)+" ",d&&(i+=" if ("+g+") { ")}else a=!0===m.$async||e.async&&!1!==m.$async,n=m.code}if(n){var y;(y=y||[]).push(i),i="",e.opts.passContext?i+=" "+n+".call(this, ":i+=" "+n+"( ",i+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(i+=" + "+e.errorPath);var b=i+=" , "+(o?"data"+(o-1||""):"parentData")+" , "+(o?e.dataPathArr[o]:"parentDataProperty")+", rootData) ";if(i=y.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");d&&(i+=" var "+p+"; "),i+=" try { await "+b+"; ",d&&(i+=" "+p+" = true; "),i+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",d&&(i+=" "+p+" = false; "),i+=" } ",d&&(i+=" if ("+p+") { ")}else i+=" if (!"+b+") { if (vErrors === null) vErrors = "+n+".errors; else vErrors = vErrors.concat("+n+".errors); errors = vErrors.length; } ",d&&(i+=" else { ")}return i}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.schema[t],i=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,o=!e.opts.allErrors,l=e.util.copy(e),u="";l.level++;var d="valid"+l.level,c=l.baseId,p=!0,m=n;if(m)for(var h,f=-1,v=m.length-1;f0:e.util.schemaHasRules(h,e.RULES.all))&&(p=!1,l.schema=h,l.schemaPath=i+"["+f+"]",l.errSchemaPath=s+"/"+f,a+=" "+e.validate(l)+" ",l.baseId=c,o&&(a+=" if ("+d+") { ",u+="}"));return o&&(a+=p?" if (true) { ":" "+u.slice(0,-1)+" "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e),h="";m.level++;var f="valid"+m.level;if(s.every((function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0:e.util.schemaHasRules(t,e.RULES.all)}))){var v=m.baseId;a+=" var "+p+" = errors; var "+c+" = false; ";var g=e.compositeRule;e.compositeRule=m.compositeRule=!0;var y=s;if(y)for(var b,w=-1,k=y.length-1;w0:e.util.schemaHasRules(s,e.RULES.all);if(a+="var "+p+" = errors;var "+c+";",b){var w=e.compositeRule;e.compositeRule=m.compositeRule=!0,m.schema=s,m.schemaPath=o,m.errSchemaPath=l,a+=" var "+h+" = false; for (var "+f+" = 0; "+f+" < "+d+".length; "+f+"++) { ",m.errorPath=e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers,!0);var k=d+"["+f+"]";m.dataPathArr[v]=f;var _=e.validate(m);m.baseId=y,e.util.varOccurences(_,g)<2?a+=" "+e.util.varReplace(_,g,k)+" ":a+=" var "+g+" = "+k+"; "+_+" ",a+=" if ("+h+") break; } ",e.compositeRule=m.compositeRule=w,a+=" if (!"+h+") {"}else a+=" if ("+d+".length == 0) {";var P=P||[];P.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var S=a;return a=P.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+S+"]); ":a+=" validate.errors = ["+S+"]; return false; ":a+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",b&&(a+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e),m="";p.level++;var h="valid"+p.level,f={},v={},g=e.opts.ownProperties;for(k in s)if("__proto__"!=k){var y=s[k],b=Array.isArray(y)?v:f;b[k]=y}a+="var "+c+" = errors;";var w=e.errorPath;for(var k in a+="var missing"+n+";",v)if((b=v[k]).length){if(a+=" if ( "+d+e.util.getProperty(k)+" !== undefined ",g&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(k)+"') "),u){a+=" && ( ";var _=b;if(_)for(var P=-1,S=_.length-1;P0:e.util.schemaHasRules(y,e.RULES.all))&&(a+=" "+h+" = true; if ( "+d+e.util.getProperty(k)+" !== undefined ",g&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(k)+"') "),a+=") { ",p.schema=y,p.schemaPath=o+e.util.getProperty(k),p.errSchemaPath=l+"/"+e.util.escapeFragment(k),a+=" "+e.validate(p)+" ",p.baseId=R,a+=" } ",u&&(a+=" if ("+h+") { ",m+="}"))}return u&&(a+=" "+m+" if ("+c+" == errors) {"),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p=e.opts.$data&&s&&s.$data;p&&(a+=" var schema"+n+" = "+e.util.getData(s.$data,i,e.dataPathArr)+"; ");var m="i"+n,h="schema"+n;p||(a+=" var "+h+" = validate.schema"+o+";"),a+="var "+c+";",p&&(a+=" if (schema"+n+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+n+")) "+c+" = false; else {"),a+=c+" = false;for (var "+m+"=0; "+m+"<"+h+".length; "+m+"++) if (equal("+d+", "+h+"["+m+"])) { "+c+" = true; break; }",p&&(a+=" } "),a+=" if (!"+c+") { ";var f=f||[];f.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+n+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var v=a;return a=f.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+v+"]); ":a+=" validate.errors = ["+v+"]; return false; ":a+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",u&&(a+=" else { "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||"");if(!1===e.opts.format)return u&&(a+=" if (true) { "),a;var c,p=e.opts.$data&&s&&s.$data;p?(a+=" var schema"+n+" = "+e.util.getData(s.$data,i,e.dataPathArr)+"; ",c="schema"+n):c=s;var m=e.opts.unknownFormats,h=Array.isArray(m);if(p){a+=" var "+(f="format"+n)+" = formats["+c+"]; var "+(v="isObject"+n)+" = typeof "+f+" == 'object' && !("+f+" instanceof RegExp) && "+f+".validate; var "+(g="formatType"+n)+" = "+v+" && "+f+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+n+" = "+f+".async; "),a+=" "+f+" = "+f+".validate; } if ( ",p&&(a+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),a+=" (","ignore"!=m&&(a+=" ("+c+" && !"+f+" ",h&&(a+=" && self._opts.unknownFormats.indexOf("+c+") == -1 "),a+=") || "),a+=" ("+f+" && "+g+" == '"+r+"' && !(typeof "+f+" == 'function' ? ",e.async?a+=" (async"+n+" ? await "+f+"("+d+") : "+f+"("+d+")) ":a+=" "+f+"("+d+") ",a+=" : "+f+".test("+d+"))))) {"}else{var f;if(!(f=e.formats[s])){if("ignore"==m)return e.logger.warn('unknown format "'+s+'" ignored in schema at path "'+e.errSchemaPath+'"'),u&&(a+=" if (true) { "),a;if(h&&m.indexOf(s)>=0)return u&&(a+=" if (true) { "),a;throw new Error('unknown format "'+s+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,g=(v="object"==typeof f&&!(f instanceof RegExp)&&f.validate)&&f.type||"string";if(v){var y=!0===f.async;f=f.validate}if(g!=r)return u&&(a+=" if (true) { "),a;if(y){if(!e.async)throw new Error("async format in sync schema");a+=" if (!(await "+(b="formats"+e.util.getProperty(s)+".validate")+"("+d+"))) { "}else{a+=" if (! ";var b="formats"+e.util.getProperty(s);v&&(b+=".validate"),a+="function"==typeof f?" "+b+"("+d+") ":" "+b+".test("+d+") ",a+=") { "}}var w=w||[];w.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=p?""+c:""+e.util.toQuotedString(s),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=p?"' + "+c+" + '":""+e.util.escapeQuotes(s),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=p?"validate.schema"+o:""+e.util.toQuotedString(s),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var k=a;return a=w.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+k+"]); ":a+=" validate.errors = ["+k+"]; return false; ":a+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",u&&(a+=" else { "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e);m.level++;var h="valid"+m.level,f=e.schema.then,v=e.schema.else,g=void 0!==f&&(e.opts.strictKeywords?"object"==typeof f&&Object.keys(f).length>0:e.util.schemaHasRules(f,e.RULES.all)),y=void 0!==v&&(e.opts.strictKeywords?"object"==typeof v&&Object.keys(v).length>0:e.util.schemaHasRules(v,e.RULES.all)),b=m.baseId;if(g||y){var w;m.createErrors=!1,m.schema=s,m.schemaPath=o,m.errSchemaPath=l,a+=" var "+p+" = errors; var "+c+" = true; ";var k=e.compositeRule;e.compositeRule=m.compositeRule=!0,a+=" "+e.validate(m)+" ",m.baseId=b,m.createErrors=!0,a+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=m.compositeRule=k,g?(a+=" if ("+h+") { ",m.schema=e.schema.then,m.schemaPath=e.schemaPath+".then",m.errSchemaPath=e.errSchemaPath+"/then",a+=" "+e.validate(m)+" ",m.baseId=b,a+=" "+c+" = "+h+"; ",g&&y?a+=" var "+(w="ifClause"+n)+" = 'then'; ":w="'then'",a+=" } ",y&&(a+=" else { ")):a+=" if (!"+h+") { ",y&&(m.schema=e.schema.else,m.schemaPath=e.schemaPath+".else",m.errSchemaPath=e.errSchemaPath+"/else",a+=" "+e.validate(m)+" ",m.baseId=b,a+=" "+c+" = "+h+"; ",g&&y?a+=" var "+(w="ifClause"+n)+" = 'else'; ":w="'else'",a+=" } "),a+=" if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { failingKeyword: "+w+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match \"' + "+w+" + '\" schema' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+=" } ",u&&(a+=" else { ")}else u&&(a+=" if (true) { ");return a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e),h="";m.level++;var f="valid"+m.level,v="i"+n,g=m.dataLevel=e.dataLevel+1,y="data"+g,b=e.baseId;if(a+="var "+p+" = errors;var "+c+";",Array.isArray(s)){var w=e.schema.additionalItems;if(!1===w){a+=" "+c+" = "+d+".length <= "+s.length+"; ";var k=l;l=e.errSchemaPath+"/additionalItems",a+=" if (!"+c+") { ";var _=_||[];_.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+s.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+s.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var P=a;a=_.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+P+"]); ":a+=" validate.errors = ["+P+"]; return false; ":a+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=k,u&&(h+="}",a+=" else { ")}var S=s;if(S)for(var A,z=-1,E=S.length-1;z0:e.util.schemaHasRules(A,e.RULES.all)){a+=" "+f+" = true; if ("+d+".length > "+z+") { ";var C=d+"["+z+"]";m.schema=A,m.schemaPath=o+"["+z+"]",m.errSchemaPath=l+"/"+z,m.errorPath=e.util.getPathExpr(e.errorPath,z,e.opts.jsonPointers,!0),m.dataPathArr[g]=z;var j=e.validate(m);m.baseId=b,e.util.varOccurences(j,y)<2?a+=" "+e.util.varReplace(j,y,C)+" ":a+=" var "+y+" = "+C+"; "+j+" ",a+=" } ",u&&(a+=" if ("+f+") { ",h+="}")}if("object"==typeof w&&(e.opts.strictKeywords?"object"==typeof w&&Object.keys(w).length>0:e.util.schemaHasRules(w,e.RULES.all))){m.schema=w,m.schemaPath=e.schemaPath+".additionalItems",m.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+f+" = true; if ("+d+".length > "+s.length+") { for (var "+v+" = "+s.length+"; "+v+" < "+d+".length; "+v+"++) { ",m.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);C=d+"["+v+"]";m.dataPathArr[g]=v;j=e.validate(m);m.baseId=b,e.util.varOccurences(j,y)<2?a+=" "+e.util.varReplace(j,y,C)+" ":a+=" var "+y+" = "+C+"; "+j+" ",u&&(a+=" if (!"+f+") break; "),a+=" } } ",u&&(a+=" if ("+f+") { ",h+="}")}}else if(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){m.schema=s,m.schemaPath=o,m.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+d+".length; "+v+"++) { ",m.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);C=d+"["+v+"]";m.dataPathArr[g]=v;j=e.validate(m);m.baseId=b,e.util.varOccurences(j,y)<2?a+=" "+e.util.varReplace(j,y,C)+" ":a+=" var "+y+" = "+C+"; "+j+" ",u&&(a+=" if (!"+f+") break; "),a+=" }"}return u&&(a+=" "+h+" if ("+p+" == errors) {"),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");n+="var division"+i+";if (",p&&(n+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),n+=" (division"+i+" = "+c+" / "+a+", ",e.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+i+") - division"+i+") > 1e-"+e.opts.multipleOfPrecision+" ":n+=" division"+i+" !== parseInt(division"+i+") ",n+=" ) ",p&&(n+=" ) "),n+=" ) { ";var m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be multiple of ",n+=p?"' + "+a:a+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var h=n;return n=m.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+h+"]); ":n+=" validate.errors = ["+h+"]; return false; ":n+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e);p.level++;var m="valid"+p.level;if(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l,a+=" var "+c+" = errors; ";var h,f=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1,p.opts.allErrors&&(h=p.opts.allErrors,p.opts.allErrors=!1),a+=" "+e.validate(p)+" ",p.createErrors=!0,h&&(p.opts.allErrors=h),e.compositeRule=p.compositeRule=f,a+=" if ("+m+") { ";var v=v||[];v.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var g=a;a=v.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+g+"]); ":a+=" validate.errors = ["+g+"]; return false; ":a+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(a+=" if (false) { ");return a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e),h="";m.level++;var f="valid"+m.level,v=m.baseId,g="prevValid"+n,y="passingSchemas"+n;a+="var "+p+" = errors , "+g+" = false , "+c+" = false , "+y+" = null; ";var b=e.compositeRule;e.compositeRule=m.compositeRule=!0;var w=s;if(w)for(var k,_=-1,P=w.length-1;_0:e.util.schemaHasRules(k,e.RULES.all))?(m.schema=k,m.schemaPath=o+"["+_+"]",m.errSchemaPath=l+"/"+_,a+=" "+e.validate(m)+" ",m.baseId=v):a+=" var "+f+" = true; ",_&&(a+=" if ("+f+" && "+g+") { "+c+" = false; "+y+" = ["+y+", "+_+"]; } else { ",h+="}"),a+=" if ("+f+") { "+c+" = "+g+" = true; "+y+" = "+_+"; }";return e.compositeRule=m.compositeRule=b,a+=h+"if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'string') || "),n+=" !"+(p?"(new RegExp("+a+"))":e.usePattern(o))+".test("+c+") ) { ";var m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",n+=p?""+a:""+e.util.toQuotedString(o),n+=" } ",!1!==e.opts.messages&&(n+=" , message: 'should match pattern \"",n+=p?"' + "+a+" + '":""+e.util.escapeQuotes(o),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+e.util.toQuotedString(o),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var h=n;return n=m.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+h+"]); ":n+=" validate.errors = ["+h+"]; return false; ":n+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e),m="";p.level++;var h="valid"+p.level,f="key"+n,v="idx"+n,g=p.dataLevel=e.dataLevel+1,y="data"+g,b="dataProperties"+n,w=Object.keys(s||{}).filter($),k=e.schema.patternProperties||{},_=Object.keys(k).filter($),P=e.schema.additionalProperties,S=w.length||_.length,A=!1===P,z="object"==typeof P&&Object.keys(P).length,E=e.opts.removeAdditional,C=A||z||E,j=e.opts.ownProperties,O=e.baseId,x=e.schema.required;if(x&&(!e.opts.$data||!x.$data)&&x.length8)a+=" || validate.schema"+o+".hasOwnProperty("+f+") ";else{var T=w;if(T)for(var R=-1,D=T.length-1;R0:e.util.schemaHasRules(Y,e.RULES.all)){var X=e.util.getProperty(J),ee=(H=d+X,G&&void 0!==Y.default);p.schema=Y,p.schemaPath=o+X,p.errSchemaPath=l+"/"+e.util.escapeFragment(J),p.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),p.dataPathArr[g]=e.util.toQuotedString(J);W=e.validate(p);if(p.baseId=O,e.util.varOccurences(W,y)<2){W=e.util.varReplace(W,y,H);var te=H}else{te=y;a+=" var "+y+" = "+H+"; "}if(ee)a+=" "+W+" ";else{if(L&&L[J]){a+=" if ( "+te+" === undefined ",j&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+h+" = false; ";U=e.errorPath,B=l;var re,ae=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(U,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(re=re||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+ae+"' } ",!1!==e.opts.messages&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+ae+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";M=a;a=re.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+M+"]); ":a+=" validate.errors = ["+M+"]; return false; ":a+=" var err = "+M+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=B,e.errorPath=U,a+=" } else { "}else u?(a+=" if ( "+te+" === undefined ",j&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+h+" = true; } else { "):(a+=" if ("+te+" !== undefined ",j&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(J)+"') "),a+=" ) { ");a+=" "+W+" } "}}u&&(a+=" if ("+h+") { ",m+="}")}}if(_.length){var ne=_;if(ne)for(var ie,se=-1,oe=ne.length-1;se0:e.util.schemaHasRules(Y,e.RULES.all)){p.schema=Y,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ie),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ie),a+=j?" "+b+" = "+b+" || Object.keys("+d+"); for (var "+v+"=0; "+v+"<"+b+".length; "+v+"++) { var "+f+" = "+b+"["+v+"]; ":" for (var "+f+" in "+d+") { ",a+=" if ("+e.usePattern(ie)+".test("+f+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers);H=d+"["+f+"]";p.dataPathArr[g]=f;W=e.validate(p);p.baseId=O,e.util.varOccurences(W,y)<2?a+=" "+e.util.varReplace(W,y,H)+" ":a+=" var "+y+" = "+H+"; "+W+" ",u&&(a+=" if (!"+h+") break; "),a+=" } ",u&&(a+=" else "+h+" = true; "),a+=" } ",u&&(a+=" if ("+h+") { ",m+="}")}}}return u&&(a+=" "+m+" if ("+c+" == errors) {"),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e);p.level++;var m="valid"+p.level;if(a+="var "+c+" = errors;",e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l;var h="key"+n,f="idx"+n,v="i"+n,g="' + "+h+" + '",y="data"+(p.dataLevel=e.dataLevel+1),b="dataProperties"+n,w=e.opts.ownProperties,k=e.baseId;w&&(a+=" var "+b+" = undefined; "),a+=w?" "+b+" = "+b+" || Object.keys("+d+"); for (var "+f+"=0; "+f+"<"+b+".length; "+f+"++) { var "+h+" = "+b+"["+f+"]; ":" for (var "+h+" in "+d+") { ",a+=" var startErrs"+n+" = errors; ";var _=h,P=e.compositeRule;e.compositeRule=p.compositeRule=!0;var S=e.validate(p);p.baseId=k,e.util.varOccurences(S,y)<2?a+=" "+e.util.varReplace(S,y,_)+" ":a+=" var "+y+" = "+_+"; "+S+" ",e.compositeRule=p.compositeRule=P,a+=" if (!"+m+") { for (var "+v+"=startErrs"+n+"; "+v+"0:e.util.schemaHasRules(b,e.RULES.all))||(h[h.length]=v)}}else h=s;if(p||h.length){var w=e.errorPath,k=p||h.length>=e.opts.loopRequired,_=e.opts.ownProperties;if(u)if(a+=" var missing"+n+"; ",k){p||(a+=" var "+m+" = validate.schema"+o+"; ");var P="' + "+(j="schema"+n+"["+(z="i"+n)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(w,j,e.opts.jsonPointers)),a+=" var "+c+" = true; ",p&&(a+=" if (schema"+n+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+n+")) "+c+" = false; else {"),a+=" for (var "+z+" = 0; "+z+" < "+m+".length; "+z+"++) { "+c+" = "+d+"["+m+"["+z+"]] !== undefined ",_&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", "+m+"["+z+"]) "),a+="; if (!"+c+") break; } ",p&&(a+=" } "),a+=" if (!"+c+") { ",(C=C||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+P+"' } ",!1!==e.opts.messages&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+P+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var S=a;a=C.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+S+"]); ":a+=" validate.errors = ["+S+"]; return false; ":a+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var A=h;if(A)for(var z=-1,E=A.length-1;z 1) { ";var h=e.schema.items&&e.schema.items.type,f=Array.isArray(h);if(!h||"object"==h||"array"==h||f&&(h.indexOf("object")>=0||h.indexOf("array")>=0))n+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+c+"[i], "+c+"[j])) { "+p+" = false; break outer; } } } ";else{n+=" var itemIndices = {}, item; for (;i--;) { var item = "+c+"[i]; ";var v="checkDataType"+(f?"s":"");n+=" if ("+e.util[v](h,"item",e.opts.strictNumbers,!0)+") continue; ",f&&(n+=" if (typeof item == 'string') item = '\"' + item; "),n+=" if (typeof itemIndices[item] == 'number') { "+p+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}n+=" } ",m&&(n+=" } "),n+=" if (!"+p+") { ";var g=g||[];g.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=m?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var y=n;n=g.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+y+"]); ":n+=" validate.errors = ["+y+"]; return false; ":n+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",d&&(n+=" else { ")}else d&&(n+=" if (true) { ");return n}},function(e,t,r){"use strict";var a=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(e,t){for(var r=0;r)?=?)";var S=o++;s[S]=s[u]+"|x|X|\\*";var A=o++;s[A]=s[l]+"|x|X|\\*";var z=o++;s[z]="[v=\\s]*("+s[A]+")(?:\\.("+s[A]+")(?:\\.("+s[A]+")(?:"+s[f]+")?"+s[y]+"?)?)?";var E=o++;s[E]="[v=\\s]*("+s[S]+")(?:\\.("+s[S]+")(?:\\.("+s[S]+")(?:"+s[v]+")?"+s[y]+"?)?)?";var C=o++;s[C]="^"+s[P]+"\\s*"+s[z]+"$";var j=o++;s[j]="^"+s[P]+"\\s*"+s[E]+"$";var O=o++;s[O]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var x=o++;s[x]="(?:~>?)";var L=o++;s[L]="(\\s*)"+s[x]+"\\s+",i[L]=new RegExp(s[L],"g");var $=o++;s[$]="^"+s[x]+s[z]+"$";var T=o++;s[T]="^"+s[x]+s[E]+"$";var R=o++;s[R]="(?:\\^)";var D=o++;s[D]="(\\s*)"+s[R]+"\\s+",i[D]=new RegExp(s[D],"g");var I=o++;s[I]="^"+s[R]+s[z]+"$";var F=o++;s[F]="^"+s[R]+s[E]+"$";var V=o++;s[V]="^"+s[P]+"\\s*("+k+")$|^$";var U=o++;s[U]="^"+s[P]+"\\s*("+w+")$|^$";var N=o++;s[N]="(\\s*)"+s[P]+"\\s*("+k+"|"+s[z]+")",i[N]=new RegExp(s[N],"g");var B=o++;s[B]="^\\s*("+s[z]+")\\s+-\\s+("+s[z]+")\\s*$";var M=o++;s[M]="^\\s*("+s[E]+")\\s+-\\s+("+s[E]+")\\s*$";var q=o++;s[q]="(<|>)?=?\\s*\\*";for(var H=0;H<35;H++)a(H,s[H]),i[H]||(i[H]=new RegExp(s[H]));function W(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof G)return e;if("string"!=typeof e)return null;if(e.length>256)return null;if(!(t.loose?i[_]:i[b]).test(e))return null;try{return new G(e,t)}catch(e){return null}}function G(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof G){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>256)throw new TypeError("version is longer than 256 characters");if(!(this instanceof G))return new G(e,t);a("SemVer",e,t),this.options=t,this.loose=!!t.loose;var r=e.trim().match(t.loose?i[_]:i[b]);if(!r)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);-1===r&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,r,a){"string"==typeof r&&(a=r,r=void 0);try{return new G(e,r).inc(t,a).version}catch(e){return null}},t.diff=function(e,t){if(X(e,t))return null;var r=W(e),a=W(t),n="";if(r.prerelease.length||a.prerelease.length){n="pre";var i="prerelease"}for(var s in r)if(("major"===s||"minor"===s||"patch"===s)&&r[s]!==a[s])return n+s;return i},t.compareIdentifiers=J;var K=/^[0-9]+$/;function J(e,t){var r=K.test(e),a=K.test(t);return r&&a&&(e=+e,t=+t),e===t?0:r&&!a?-1:a&&!r?1:e0}function Y(e,t,r){return Z(e,t,r)<0}function X(e,t,r){return 0===Z(e,t,r)}function ee(e,t,r){return 0!==Z(e,t,r)}function te(e,t,r){return Z(e,t,r)>=0}function re(e,t,r){return Z(e,t,r)<=0}function ae(e,t,r,a){switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e===r;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e!==r;case"":case"=":case"==":return X(e,r,a);case"!=":return ee(e,r,a);case">":return Q(e,r,a);case">=":return te(e,r,a);case"<":return Y(e,r,a);case"<=":return re(e,r,a);default:throw new TypeError("Invalid operator: "+t)}}function ne(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof ne){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof ne))return new ne(e,t);a("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===ie?this.value="":this.value=this.operator+this.semver.version,a("comp",this)}t.rcompareIdentifiers=function(e,t){return J(t,e)},t.major=function(e,t){return new G(e,t).major},t.minor=function(e,t){return new G(e,t).minor},t.patch=function(e,t){return new G(e,t).patch},t.compare=Z,t.compareLoose=function(e,t){return Z(e,t,!0)},t.rcompare=function(e,t,r){return Z(t,e,r)},t.sort=function(e,r){return e.sort((function(e,a){return t.compare(e,a,r)}))},t.rsort=function(e,r){return e.sort((function(e,a){return t.rcompare(e,a,r)}))},t.gt=Q,t.lt=Y,t.eq=X,t.neq=ee,t.gte=te,t.lte=re,t.cmp=ae,t.Comparator=ne;var ie={};function se(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof se)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new se(e.raw,t);if(e instanceof ne)return new se(e.value,t);if(!(this instanceof se))return new se(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function oe(e){return!e||"x"===e.toLowerCase()||"*"===e}function le(e,t,r,a,n,i,s,o,l,u,d,c,p){return((t=oe(r)?"":oe(a)?">="+r+".0.0":oe(n)?">="+r+"."+a+".0":">="+t)+" "+(o=oe(l)?"":oe(u)?"<"+(+l+1)+".0.0":oe(d)?"<"+l+"."+(+u+1)+".0":c?"<="+l+"."+u+"."+d+"-"+c:"<="+o)).trim()}function ue(e,t,r){for(var n=0;n0){var i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0}function de(e,t,r){try{t=new se(t,r)}catch(e){return!1}return t.test(e)}function ce(e,t,r,a){var n,i,s,o,l;switch(e=new G(e,a),t=new se(t,a),r){case">":n=Q,i=re,s=Y,o=">",l=">=";break;case"<":n=Y,i=te,s=Q,o="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(de(e,t,a))return!1;for(var u=0;u=0.0.0")),c=c||e,p=p||e,n(e.semver,c.semver,a)?c=e:s(e.semver,p.semver,a)&&(p=e)})),c.operator===o||c.operator===l)return!1;if((!p.operator||p.operator===o)&&i(e,p.semver))return!1;if(p.operator===l&&s(e,p.semver))return!1}return!0}ne.prototype.parse=function(e){var t=this.options.loose?i[V]:i[U],r=e.match(t);if(!r)throw new TypeError("Invalid comparator: "+e);this.operator=r[1],"="===this.operator&&(this.operator=""),r[2]?this.semver=new G(r[2],this.options.loose):this.semver=ie},ne.prototype.toString=function(){return this.value},ne.prototype.test=function(e){return a("Comparator.test",e,this.options.loose),this.semver===ie||("string"==typeof e&&(e=new G(e,this.options)),ae(e,this.operator,this.semver,this.options))},ne.prototype.intersects=function(e,t){if(!(e instanceof ne))throw new TypeError("a Comparator is required");var r;if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return r=new se(e.value,t),de(this.value,r,t);if(""===e.operator)return r=new se(this.value,t),de(e.semver,r,t);var a=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),n=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),i=this.semver.version===e.semver.version,s=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),o=ae(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),l=ae(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return a||n||i&&s||o||l},t.Range=se,se.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},se.prototype.toString=function(){return this.range},se.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var r=t?i[M]:i[B];e=e.replace(r,le),a("hyphen replace",e),e=e.replace(i[N],"$1$2$3"),a("comparator trim",e,i[N]),e=(e=(e=e.replace(i[L],"$1~")).replace(i[D],"$1^")).split(/\s+/).join(" ");var n=t?i[V]:i[U],s=e.split(" ").map((function(e){return function(e,t){return a("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){a("caret",e,t);var r=t.loose?i[F]:i[I];return e.replace(r,(function(t,r,n,i,s){var o;return a("caret",e,t,r,n,i,s),oe(r)?o="":oe(n)?o=">="+r+".0.0 <"+(+r+1)+".0.0":oe(i)?o="0"===r?">="+r+"."+n+".0 <"+r+"."+(+n+1)+".0":">="+r+"."+n+".0 <"+(+r+1)+".0.0":s?(a("replaceCaret pr",s),o="0"===r?"0"===n?">="+r+"."+n+"."+i+"-"+s+" <"+r+"."+n+"."+(+i+1):">="+r+"."+n+"."+i+"-"+s+" <"+r+"."+(+n+1)+".0":">="+r+"."+n+"."+i+"-"+s+" <"+(+r+1)+".0.0"):(a("no pr"),o="0"===r?"0"===n?">="+r+"."+n+"."+i+" <"+r+"."+n+"."+(+i+1):">="+r+"."+n+"."+i+" <"+r+"."+(+n+1)+".0":">="+r+"."+n+"."+i+" <"+(+r+1)+".0.0"),a("caret return",o),o}))}(e,t)})).join(" ")}(e,t),a("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var r=t.loose?i[T]:i[$];return e.replace(r,(function(t,r,n,i,s){var o;return a("tilde",e,t,r,n,i,s),oe(r)?o="":oe(n)?o=">="+r+".0.0 <"+(+r+1)+".0.0":oe(i)?o=">="+r+"."+n+".0 <"+r+"."+(+n+1)+".0":s?(a("replaceTilde pr",s),o=">="+r+"."+n+"."+i+"-"+s+" <"+r+"."+(+n+1)+".0"):o=">="+r+"."+n+"."+i+" <"+r+"."+(+n+1)+".0",a("tilde return",o),o}))}(e,t)})).join(" ")}(e,t),a("tildes",e),e=function(e,t){return a("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var r=t.loose?i[j]:i[C];return e.replace(r,(function(t,r,n,i,s,o){a("xRange",e,t,r,n,i,s,o);var l=oe(n),u=l||oe(i),d=u||oe(s);return"="===r&&d&&(r=""),l?t=">"===r||"<"===r?"<0.0.0":"*":r&&d?(u&&(i=0),s=0,">"===r?(r=">=",u?(n=+n+1,i=0,s=0):(i=+i+1,s=0)):"<="===r&&(r="<",u?n=+n+1:i=+i+1),t=r+n+"."+i+"."+s):u?t=">="+n+".0.0 <"+(+n+1)+".0.0":d&&(t=">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0"),a("xRange return",t),t}))}(e,t)})).join(" ")}(e,t),a("xrange",e),e=function(e,t){return a("replaceStars",e,t),e.trim().replace(i[q],"")}(e,t),a("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(s=s.filter((function(e){return!!e.match(n)}))),s=s.map((function(e){return new ne(e,this.options)}),this)},se.prototype.intersects=function(e,t){if(!(e instanceof se))throw new TypeError("a Range is required");return this.set.some((function(r){return r.every((function(r){return e.set.some((function(e){return e.every((function(e){return r.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new se(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},se.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new G(e,this.options));for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":r&&!Q(r,t)||(r=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}))}if(r&&e.test(r))return r;return null},t.validRange=function(e,t){try{return new se(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,r){return ce(e,t,"<",r)},t.gtr=function(e,t,r){return ce(e,t,">",r)},t.outside=ce,t.prerelease=function(e,t){var r=W(e,t);return r&&r.prerelease.length?r.prerelease:null},t.intersects=function(e,t,r){return e=new se(e,r),t=new se(t,r),e.intersects(t)},t.coerce=function(e){if(e instanceof G)return e;if("string"!=typeof e)return null;var t=e.match(i[O]);if(null==t)return null;return W(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}}).call(this,r(17))},function(e,t,r){var a;!function(n){var i=/^\s+/,s=/\s+$/,o=0,l=n.round,u=n.min,d=n.max,c=n.random;function p(e,t){if(t=t||{},(e=e||"")instanceof p)return e;if(!(this instanceof p))return new p(e,t);var r=function(e){var t={r:0,g:0,b:0},r=1,a=null,o=null,l=null,c=!1,p=!1;"string"==typeof e&&(e=function(e){e=e.replace(i,"").replace(s,"").toLowerCase();var t,r=!1;if(O[e])e=O[e],r=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(t=M.rgb.exec(e))return{r:t[1],g:t[2],b:t[3]};if(t=M.rgba.exec(e))return{r:t[1],g:t[2],b:t[3],a:t[4]};if(t=M.hsl.exec(e))return{h:t[1],s:t[2],l:t[3]};if(t=M.hsla.exec(e))return{h:t[1],s:t[2],l:t[3],a:t[4]};if(t=M.hsv.exec(e))return{h:t[1],s:t[2],v:t[3]};if(t=M.hsva.exec(e))return{h:t[1],s:t[2],v:t[3],a:t[4]};if(t=M.hex8.exec(e))return{r:R(t[1]),g:R(t[2]),b:R(t[3]),a:V(t[4]),format:r?"name":"hex8"};if(t=M.hex6.exec(e))return{r:R(t[1]),g:R(t[2]),b:R(t[3]),format:r?"name":"hex"};if(t=M.hex4.exec(e))return{r:R(t[1]+""+t[1]),g:R(t[2]+""+t[2]),b:R(t[3]+""+t[3]),a:V(t[4]+""+t[4]),format:r?"name":"hex8"};if(t=M.hex3.exec(e))return{r:R(t[1]+""+t[1]),g:R(t[2]+""+t[2]),b:R(t[3]+""+t[3]),format:r?"name":"hex"};return!1}(e));"object"==typeof e&&(q(e.r)&&q(e.g)&&q(e.b)?(m=e.r,h=e.g,f=e.b,t={r:255*$(m,255),g:255*$(h,255),b:255*$(f,255)},c=!0,p="%"===String(e.r).substr(-1)?"prgb":"rgb"):q(e.h)&&q(e.s)&&q(e.v)?(a=I(e.s),o=I(e.v),t=function(e,t,r){e=6*$(e,360),t=$(t,100),r=$(r,100);var a=n.floor(e),i=e-a,s=r*(1-t),o=r*(1-i*t),l=r*(1-(1-i)*t),u=a%6;return{r:255*[r,o,s,s,l,r][u],g:255*[l,r,r,o,s,s][u],b:255*[s,s,l,r,r,o][u]}}(e.h,a,o),c=!0,p="hsv"):q(e.h)&&q(e.s)&&q(e.l)&&(a=I(e.s),l=I(e.l),t=function(e,t,r){var a,n,i;function s(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e}if(e=$(e,360),t=$(t,100),r=$(r,100),0===t)a=n=i=r;else{var o=r<.5?r*(1+t):r+t-r*t,l=2*r-o;a=s(l,o,e+1/3),n=s(l,o,e),i=s(l,o,e-1/3)}return{r:255*a,g:255*n,b:255*i}}(e.h,a,l),c=!0,p="hsl"),e.hasOwnProperty("a")&&(r=e.a));var m,h,f;return r=L(r),{ok:c,format:e.format||p,r:u(255,d(t.r,0)),g:u(255,d(t.g,0)),b:u(255,d(t.b,0)),a:r}}(e);this._originalInput=e,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=l(100*this._a)/100,this._format=t.format||r.format,this._gradientType=t.gradientType,this._r<1&&(this._r=l(this._r)),this._g<1&&(this._g=l(this._g)),this._b<1&&(this._b=l(this._b)),this._ok=r.ok,this._tc_id=o++}function m(e,t,r){e=$(e,255),t=$(t,255),r=$(r,255);var a,n,i=d(e,t,r),s=u(e,t,r),o=(i+s)/2;if(i==s)a=n=0;else{var l=i-s;switch(n=o>.5?l/(2-i-s):l/(i+s),i){case e:a=(t-r)/l+(t>1)+720)%360;--t;)a.h=(a.h+n)%360,i.push(p(a));return i}function j(e,t){t=t||6;for(var r=p(e).toHsv(),a=r.h,n=r.s,i=r.v,s=[],o=1/t;t--;)s.push(p({h:a,s:n,v:i})),i=(i+o)%1;return s}p.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,r,a=this.toRgb();return e=a.r/255,t=a.g/255,r=a.b/255,.2126*(e<=.03928?e/12.92:n.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:n.pow((t+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:n.pow((r+.055)/1.055,2.4))},setAlpha:function(e){return this._a=L(e),this._roundA=l(100*this._a)/100,this},toHsv:function(){var e=h(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=h(this._r,this._g,this._b),t=l(360*e.h),r=l(100*e.s),a=l(100*e.v);return 1==this._a?"hsv("+t+", "+r+"%, "+a+"%)":"hsva("+t+", "+r+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var e=m(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=m(this._r,this._g,this._b),t=l(360*e.h),r=l(100*e.s),a=l(100*e.l);return 1==this._a?"hsl("+t+", "+r+"%, "+a+"%)":"hsla("+t+", "+r+"%, "+a+"%, "+this._roundA+")"},toHex:function(e){return f(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,r,a,n){var i=[D(l(e).toString(16)),D(l(t).toString(16)),D(l(r).toString(16)),D(F(a))];if(n&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)&&i[3].charAt(0)==i[3].charAt(1))return i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0)+i[3].charAt(0);return i.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:l(this._r),g:l(this._g),b:l(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+l(this._r)+", "+l(this._g)+", "+l(this._b)+")":"rgba("+l(this._r)+", "+l(this._g)+", "+l(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:l(100*$(this._r,255))+"%",g:l(100*$(this._g,255))+"%",b:l(100*$(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+l(100*$(this._r,255))+"%, "+l(100*$(this._g,255))+"%, "+l(100*$(this._b,255))+"%)":"rgba("+l(100*$(this._r,255))+"%, "+l(100*$(this._g,255))+"%, "+l(100*$(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(x[f(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+v(this._r,this._g,this._b,this._a),r=t,a=this._gradientType?"GradientType = 1, ":"";if(e){var n=p(e);r="#"+v(n._r,n._g,n._b,n._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+t+",endColorstr="+r+")"},toString:function(e){var t=!!e;e=e||this._format;var r=!1,a=this._a<1&&this._a>=0;return t||!a||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(r=this.toRgbString()),"prgb"===e&&(r=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(r=this.toHexString()),"hex3"===e&&(r=this.toHexString(!0)),"hex4"===e&&(r=this.toHex8String(!0)),"hex8"===e&&(r=this.toHex8String()),"name"===e&&(r=this.toName()),"hsl"===e&&(r=this.toHslString()),"hsv"===e&&(r=this.toHsvString()),r||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return p(this.toString())},_applyModification:function(e,t){var r=e.apply(null,[this].concat([].slice.call(t)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(w,arguments)},brighten:function(){return this._applyModification(k,arguments)},darken:function(){return this._applyModification(_,arguments)},desaturate:function(){return this._applyModification(g,arguments)},saturate:function(){return this._applyModification(y,arguments)},greyscale:function(){return this._applyModification(b,arguments)},spin:function(){return this._applyModification(P,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(C,arguments)},complement:function(){return this._applyCombination(S,arguments)},monochromatic:function(){return this._applyCombination(j,arguments)},splitcomplement:function(){return this._applyCombination(E,arguments)},triad:function(){return this._applyCombination(A,arguments)},tetrad:function(){return this._applyCombination(z,arguments)}},p.fromRatio=function(e,t){if("object"==typeof e){var r={};for(var a in e)e.hasOwnProperty(a)&&(r[a]="a"===a?e[a]:I(e[a]));e=r}return p(e,t)},p.equals=function(e,t){return!(!e||!t)&&p(e).toRgbString()==p(t).toRgbString()},p.random=function(){return p.fromRatio({r:c(),g:c(),b:c()})},p.mix=function(e,t,r){r=0===r?0:r||50;var a=p(e).toRgb(),n=p(t).toRgb(),i=r/100;return p({r:(n.r-a.r)*i+a.r,g:(n.g-a.g)*i+a.g,b:(n.b-a.b)*i+a.b,a:(n.a-a.a)*i+a.a})},p.readability=function(e,t){var r=p(e),a=p(t);return(n.max(r.getLuminance(),a.getLuminance())+.05)/(n.min(r.getLuminance(),a.getLuminance())+.05)},p.isReadable=function(e,t,r){var a,n,i=p.readability(e,t);switch(n=!1,(a=function(e){var t,r;t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase(),r=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA");"small"!==r&&"large"!==r&&(r="small");return{level:t,size:r}}(r)).level+a.size){case"AAsmall":case"AAAlarge":n=i>=4.5;break;case"AAlarge":n=i>=3;break;case"AAAsmall":n=i>=7}return n},p.mostReadable=function(e,t,r){var a,n,i,s,o=null,l=0;n=(r=r||{}).includeFallbackColors,i=r.level,s=r.size;for(var u=0;ul&&(l=a,o=p(t[u]));return p.isReadable(e,o,{level:i,size:s})||!n?o:(r.includeFallbackColors=!1,p.mostReadable(e,["#fff","#000"],r))};var O=p.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},x=p.hexNames=function(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[e[r]]=r);return t}(O);function L(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function $(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var r=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=u(t,d(0,parseFloat(e))),r&&(e=parseInt(e*t,10)/100),n.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function T(e){return u(1,d(0,e))}function R(e){return parseInt(e,16)}function D(e){return 1==e.length?"0"+e:""+e}function I(e){return e<=1&&(e=100*e+"%"),e}function F(e){return n.round(255*parseFloat(e)).toString(16)}function V(e){return R(e)/255}var U,N,B,M=(N="[\\s|\\(]+("+(U="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+U+")[,|\\s]+("+U+")\\s*\\)?",B="[\\s|\\(]+("+U+")[,|\\s]+("+U+")[,|\\s]+("+U+")[,|\\s]+("+U+")\\s*\\)?",{CSS_UNIT:new RegExp(U),rgb:new RegExp("rgb"+N),rgba:new RegExp("rgba"+B),hsl:new RegExp("hsl"+N),hsla:new RegExp("hsla"+B),hsv:new RegExp("hsv"+N),hsva:new RegExp("hsva"+B),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function q(e){return!!M.CSS_UNIT.exec(e)}e.exports?e.exports=p:void 0===(a=function(){return p}.call(t,r,t,e))||(e.exports=a)}(Math)},function(e){e.exports=JSON.parse('{"title":"Capability","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]}},"required":["title","type"],"anyOf":[{"required":["getable"]},{"required":["setable"]}],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"desc":{"$ref":"#/definitions/i18nObject"},"type":{"type":"string","enum":["boolean","number","string","enum"]},"getable":{"type":"boolean","default":true},"setable":{"type":"boolean","default":true},"icon":{"type":"string"},"insights":{"type":"boolean"},"insightsTitleTrue":{"$ref":"#/definitions/i18nObject"},"insightsTitleFalse":{"$ref":"#/definitions/i18nObject"},"chartType":{"type":"string","enum":["line","area","stepLine","column","spline","splineArea","scatter"]},"decimals":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"units":{"$ref":"#/definitions/i18nObject"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"uiComponent":{"oneOf":[{"type":"string","enum":["thermostat","media","toggle","slider","ternary","button","color","picker","sensor","battery"]},{"type":"null"}]}},"_comment":"Require `values` array when `type` is `enum`","oneOf":[{"properties":{"type":{"type":"string","enum":["enum"]}},"required":["values"]},{"properties":{"type":{"type":"string","enum":["boolean","number","string"]}}}]}')},function(e){e.exports=JSON.parse('["onoff","dim","light_hue","light_saturation","light_temperature","light_mode","vacuumcleaner_state","thermostat_mode","target_temperature","measure_temperature","measure_co","measure_co2","measure_pm25","measure_humidity","measure_pressure","measure_noise","measure_rain","measure_wind_strength","measure_wind_angle","measure_gust_strength","measure_gust_angle","measure_battery","measure_power","measure_voltage","measure_current","measure_luminance","measure_ultraviolet","measure_water","alarm_generic","alarm_motion","alarm_contact","alarm_co","alarm_co2","alarm_pm25","alarm_tamper","alarm_smoke","alarm_fire","alarm_heat","alarm_water","alarm_battery","alarm_night","meter_power","meter_water","meter_gas","meter_rain","homealarm_state","volume_set","volume_up","volume_down","volume_mute","channel_up","channel_down","locked","lock_mode","garagedoor_closed","windowcoverings_state","windowcoverings_tilt_up","windowcoverings_tilt_down","windowcoverings_tilt_set","windowcoverings_closed","windowcoverings_set","button","speaker_playing","speaker_next","speaker_prev","speaker_shuffle","speaker_repeat","speaker_artist","speaker_album","speaker_track","speaker_duration","speaker_position"]')},function(e,t,r){var a={"./alarm_battery.json":74,"./alarm_co.json":75,"./alarm_co2.json":76,"./alarm_contact.json":77,"./alarm_fire.json":78,"./alarm_generic.json":79,"./alarm_heat.json":80,"./alarm_motion.json":81,"./alarm_night.json":82,"./alarm_pm25.json":83,"./alarm_smoke.json":84,"./alarm_tamper.json":85,"./alarm_water.json":86,"./button.json":87,"./channel_down.json":88,"./channel_up.json":89,"./dim.json":90,"./garagedoor_closed.json":91,"./homealarm_state.json":92,"./light_hue.json":93,"./light_mode.json":94,"./light_saturation.json":95,"./light_temperature.json":96,"./lock_mode.json":97,"./locked.json":98,"./measure_battery.json":99,"./measure_co.json":100,"./measure_co2.json":101,"./measure_current.json":102,"./measure_gust_angle.json":103,"./measure_gust_strength.json":104,"./measure_humidity.json":105,"./measure_luminance.json":106,"./measure_noise.json":107,"./measure_pm25.json":108,"./measure_power.json":109,"./measure_pressure.json":110,"./measure_rain.json":111,"./measure_temperature.json":112,"./measure_ultraviolet.json":113,"./measure_voltage.json":114,"./measure_water.json":115,"./measure_wind_angle.json":116,"./measure_wind_strength.json":117,"./meter_gas.json":118,"./meter_power.json":119,"./meter_rain.json":120,"./meter_water.json":121,"./onoff.json":122,"./speaker_album.json":123,"./speaker_artist.json":124,"./speaker_duration.json":125,"./speaker_next.json":126,"./speaker_playing.json":127,"./speaker_position.json":128,"./speaker_prev.json":129,"./speaker_repeat.json":130,"./speaker_shuffle.json":131,"./speaker_track.json":132,"./target_temperature.json":133,"./thermostat_mode.json":134,"./vacuumcleaner_state.json":135,"./volume_down.json":136,"./volume_mute.json":137,"./volume_set.json":138,"./volume_up.json":139,"./windowcoverings_closed.json":140,"./windowcoverings_set.json":141,"./windowcoverings_state.json":142,"./windowcoverings_tilt_down.json":143,"./windowcoverings_tilt_set.json":144,"./windowcoverings_tilt_up.json":145};function n(e){var t=i(e);return r(t)}function i(e){if(!r.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}n.keys=function(){return Object.keys(a)},n.resolve=i,e.exports=n,n.id=73},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Battery alarm","nl":"Batterij alarm","de":"Batterie-Alarm","fr":"Alarme batterie","it":"Allarme batteria","sv":"Batterialarm","no":"Batterialarm","es":"Alarma de batería","da":"Batterialarm","ru":"Сигнал аккумулятора","pl":"Alarm stanu baterii"},"desc":{"en":"True when there is a battery warning","nl":"Geeft een batterijwaarschuwing","de":"True, wenn es eine Batterie-Warnung gibt","fr":"Vrai quand il y a un avertissement de batterie","it":"Vero quando c\'è un avvertimento sulla batteria","sv":"Sant när det finns en batterivarning","no":"Sant når det finnes en batteriadvarsel","es":"Verdadero cuando hay una advertencia de la batería","da":"Sandt, når der er en batterialarm","ru":"Верно, когда есть предупреждение об аккумуляторе","pl":"Adekwatny, kiedy włączy się ostrzeżenie o stanie baterii"},"insights":true,"insightsTitleTrue":{"en":"Battery alarm turned on","nl":"Batterijalarm ging af","de":"Batterie-Alarm ist angegangen","fr":"Alarme batterie activée","it":"Allarme batteria attivato","sv":"Batterialarm aktiverat","no":"Batterialarm aktivert","es":"Alarma de la batería activada","da":"Batterialarm aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony"},"insightsTitleFalse":{"en":"Battery alarm turned off","nl":"Batterijalarm ging uit","de":"Batterie-Alarm ist ausgegangen","fr":"Alarme batterie désactivée","it":"Allarme batteria disattivato","sv":"Batterialarm avstängt","no":"Batterialarm deaktivert","es":"Alarma de la batería desactivada","da":"Batterialarm deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony"},"getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"alarm_battery_true","highlight":true,"title":{"en":"The battery alarm turned on","nl":"De batterijwaarschuwing gaat aan","de":"Der Batterie-Alarm ist angegangen","fr":"L\'alarme batterie s\'est activée","it":"L\'allarme della batteria è stato attivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen er aktivert","es":"La alarma de la batería se ha activado","da":"Batterialarm aktiverede","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony"}},{"id":"alarm_battery_false","title":{"en":"The battery alarm turned off","nl":"De batterijwaarschuwing gaat uit","de":"Der Batterie-Alarm ist ausgegangen","fr":"L\'alarme batterie s\'est désactivée","it":"L\'allarme della batteria è stato disattivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen er deaktivert","es":"La alarma de la batería se ha desactivado","da":"Batterialarm deaktiverede","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony"}}],"conditions":[{"id":"alarm_battery","title":{"en":"The battery alarm is !{{on|off}}","nl":"De batterijwaarschuwing is !{{aan|uit}}","de":"Der Batterie-Alarm ist !{{an|aus}}","fr":"L\'alarme batterie est !{{en marche|arrêtée}}","it":"L\'allarme della batteria è !{{acceso|spento}}","sv":"Batterialarmet är !{{på|av}}","no":"Batterialarmen er !{{på|av}}","es":"La alarma de la batería está !{{activada|desactivada}}","da":"Batterialarmen er !{{tændt|slukket}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO alarm","nl":"CO alarm","de":"CO-Alarm","fr":"Alarme CO","it":"Allarme CO","sv":"CO-larm","no":"CO-alarm","es":"Alarma de CO","da":"CO-alarm","ru":"Сигнал CO","pl":"Alarm o CO"},"desc":{"en":"True when dangerous CO values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO","de":"True, wenn gefährliche CO-Werte erkannt wurden","fr":"Vrai si des valeurs de CO dangereuses ont été détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO","sv":"Sant när farliga CO-värden upptäcks","no":"Sant når farlige CO-verdier påvises","es":"Verdadero cuando se han detectado valores peligrosos de CO","da":"Sandt, når farlige CO-værdier er blevet opdaget","ru":"Верно при обнаружении опасных значений CO","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia CO"},"insights":true,"insightsTitleTrue":{"en":"CO alarm turned on","nl":"CO alarm ging af","de":"CO-Alarm ist angegangen","fr":"L\'alarme CO est activée","it":"Allarme CO attivato","sv":"CO-larm aktiverat","no":"CO-alarm aktivert","es":"Alarma de CO activada","da":"CO-alarm aktiveret","ru":"Сигнал CO включен","pl":"Alarm o CO włączony"},"insightsTitleFalse":{"en":"CO alarm turned off","nl":"CO alarm ging uit","de":"CO-Alarm ist ausgegangen","fr":"L\'alarme CO est désactivée","it":"Allarme CO disattivato","sv":"CO-larm inaktiverat","no":"CO-alarm deaktivert","es":"Alarma de CO desactivada","da":"CO-alarm deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co_true","highlight":true,"title":{"en":"The CO alarm turned on","nl":"Het CO alarm gaat aan","de":"Der CO-Alarm ist angegangen","fr":"L\'alarme CO s\'est activée","it":"L\'allarme CO è stato attivato","sv":"CO-larmet aktiverades","no":"CO-alarmen aktivert","es":"La alarma de CO se ha activado","da":"CO-alarmen blev aktiveredt","ru":"Сигнал CO включен","pl":"Alarm o CO włączony"}},{"id":"alarm_co_false","title":{"en":"The CO alarm turned off","nl":"Het CO alarm gaat uit","de":"Der CO-Alarm ist ausgegangen","fr":"L\'alarme CO s\'est désactivée","it":"L\'allarme CO è stato disattivato","sv":"CO-larmet inaktiverades","no":"CO-alarmen deaktivert","es":"La alarma de CO se ha desactivado","da":"CO-alarmen blev deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony"}}],"conditions":[{"id":"alarm_co","title":{"en":"The CO alarm is !{{on|off}}","nl":"Het CO alarm is !{{aan|uit}}","de":"Der CO-Alarm ist !{{an|aus}}","fr":"L\'alarme CO est !{{en marche|arrêtée}}","it":"L\'allarme CO è !{{acceso|spento}}","sv":"CO-larmet är !{{på|av}}","no":"CO-alarmen er !{{på|av}}","es":"La alarma de CO está !{{activada|desactivada}}","da":"CO-alarmen er !{{på|af}}","ru":"Сигнал CO !{{вкл.|выкл.}}","pl":"Alarm Alarm o CO !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO2 alarm","nl":"CO2 alarm","de":"CO2-Alarm","fr":"Alarme CO2","it":"Allarme CO2","no":"CO2-alarm","es":"Alarma de CO2","da":"CO2-alarm","ru":"Сигнал CO2","pl":"Alarm o CO2"},"desc":{"en":"True when dangerous CO2 values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO2 alarm","de":"True, wenn gefährliche CO2-Werte erkannt wurden","fr":"Vrai si des valeurs dangereuses de CO2 ont été détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO2","no":"Sant når farlige CO2-verdier har blitt oppdaget","es":"Verdadero cuando se han detectado valores peligrosos de CO2","da":"Sandt, når farlige CO2-værdier er blevet opdaget","ru":"Верно при обнаружении опасных значений CO2","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia CO2"},"insights":true,"insightsTitleTrue":{"en":"CO2 alarm turned on","nl":"CO2 alarm ging af","de":"CO2-Alarm ist angegangen","fr":"L\'alarme CO2 s\'est activée","it":"Allarme CO2 attivato","sv":"CO2-larm på","no":"CO2-alarm aktivert","es":"Alarma de CO2 activada","da":"CO2-alarm aktiveret","ru":"Сигнал CO2 включен","pl":"Alarm o CO2 włączony"},"insightsTitleFalse":{"en":"CO2 alarm turned off","nl":"CO2 alarm ging uit","de":"CO2-Alarm ist ausgegangen","fr":"L\'alarme CO2 s\'est désactivée","it":"Allarme CO2 disattivato","sv":"CO2-larm av","no":"CO2-alarm deaktivert","es":"Alarma de CO2 desactivada","da":"CO2-alarm deaktiveret","ru":"Сигнал CO2 выключен","pl":"Alarm o CO2 wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co2_true","highlight":true,"title":{"en":"The CO2 alarm turned on","nl":"Het CO2 alarm gaat aan","de":"Der CO2-Alarm ist angegangen","fr":"L\'alarme CO2 s\'est activée","it":"L\'allarme CO2 è stato attivato","sv":"CO2-larmet på","no":"CO2-alarmen er aktivert","es":"La alarma de CO2 se ha activado","da":"CO2-alarmen blev aktiveret","ru":"Сигнал CO2 включен","pl":"Alarm o CO2 włączony"}},{"id":"alarm_co2_false","title":{"en":"The CO2 alarm turned off","nl":"Het CO2 alarm gaat uit","de":"Der CO2-Alarm ist ausgegangen","fr":"L\'alarme CO2 s\'est désactivée","it":"L\'allarme CO2 è stato disattivato","sv":"CO2-larmet av","no":"CO2-alarmen er deaktivert","es":"La alarma de CO2 se ha desactivado","da":"CO2-alarmen blev deaktiveret","ru":"Сигнал CO2 выключен","pl":"Alarm o CO2 wyłączony"}}],"conditions":[{"id":"alarm_co2","title":{"en":"The CO2 alarm is !{{on|off}}","nl":"Het CO2 alarm is !{{aan|uit}}","de":"Der CO2-Alarm ist !{{an|aus}}","fr":"L\'alarme CO2 est !{{en marche|arrêtée}}","it":"L\'allarme CO2 è !{{acceso|spento}}","sv":"CO2-larmet är !{{på|av}}","no":"CO2-alarmen er !{{på|av}}","es":"La alarma de CO2 está !{{activada|desactivada}}","da":"CO2-alarmen er !{{tændt|slukket}}","ru":"Сигнал CO2 !{{вкл.|выкл.}}","pl":"Alarm o CO2 !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Contact alarm","nl":"Contact alarm","de":"Kontakt-Alarm","fr":"Alarme contact","it":"Allarme contatto","sv":"Kontaktalarm","no":"Kontaktalarm","es":"Alarma de contacto","da":"Kontaktalarm","ru":"Контактный сигнал","pl":"Alarm otwarcia"},"desc":{"en":"Contact sensor, e.g. for windows (true/false)","nl":"Contact sensor, bijvoorbeeld voor ramen","de":"Kontaktsensor, z.B. für Windows (true/false)","fr":"Capteur de contact, par ex. pour les fenêtres (vrai/faux)","it":"Sensore di contatto, ad es. per le finestre (vero/falso)","sv":"Kontaktsensor, t.ex. för fönster (sant/falskt)","no":"Kontaktsensor, f.eks. for vindu (sant/usant)","es":"Sensor de contacto, p. ej., para ventanas (verdadero/falso)","da":"Kontaktsensor, f.eks. til vinduer (sandt/falsk)","ru":"Контактный датчик, например для окон (истина/ложь)","pl":"Czujnik otwarcia, np. okien (adekwatny/nieadekwatny)"},"insights":true,"insightsTitleTrue":{"en":"Contact alarm turned on","nl":"Contact alarm ging af","de":"Kontakt-Alarm ist angegangen","fr":"Alarme contact s\'est activée","it":"Allarme di contatto attivato","sv":"Kontaktalarm aktiverat","no":"Kontaktalarm aktivert","es":"Alarma de contacto activada","da":"Kontaktalarm blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony"},"insightsTitleFalse":{"en":"Contact alarm turned off","nl":"Contact alarm ging uit","de":"Kontakt-Alarm ist ausgegangen","fr":"Alarme contact s\'est désactivée","it":"Allarme di contatto disattivato","sv":"Kontaktalarm inaktiverat","no":"Kontaktalarm deaktivert","es":"Alarma de contacto desactivada","da":"Kontaktalarm blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_contact_true","highlight":true,"title":{"en":"The contact alarm turned on","nl":"Het contactalarm gaat aan","de":"Der Kontakt-Alarm ist angegangen","fr":"L\'alarme contact s\'est activée","it":"L\'allarme di contatto è stato attivato","sv":"Kontaktalarmet aktiverat","no":"Kontaktalarmen aktivert","es":"La alarma de contacto se ha activado","da":"Kontaktalarmen blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony"}},{"id":"alarm_contact_false","title":{"en":"The contact alarm turned off","nl":"Het contactalarm gaat uit","de":"Der Kontakt-Alarm ist ausgegangen","fr":"L\'alarme contact s\'est désactivée","it":"L\'allarme di contatto è stato disattivato","sv":"Kontaktalarmet inaktiverat","no":"Kontaktalarmen deaktivert","es":"La alarma de contacto se ha desactivado","da":"Kontaktalarmen blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony"}}],"conditions":[{"id":"alarm_contact","title":{"en":"The contact alarm is !{{on|off}}","nl":"Het contactalarm is !{{aan|uit}}","de":"Der Kontakt-Alarm ist !{{an|aus}}","fr":"L\'alarme contact est !{{en marche|arrêtée}}","it":"L\'allarme di contatto è !{{acceso|spento}}","sv":"Kontaktalarmet är !{{på|av}}","no":"Kontaktalarmen er !{{på|av}}","es":"La alarma de contacto está !{{activada|desactivada}}","da":"Kontaktalarmen er !{{tændt|slukket}}","ru":"Контактный сигнал !{{вкл.|выкл.}}","pl":"Alarm otwarcia !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Fire alarm","nl":"Brandalarm","de":"Feuer-Alarm","fr":"Alarme incendie","it":"Allarme antincendio","sv":"Brandlarm","no":"Brannalarm","es":"Alarma de incendios","da":"Brandalarm","ru":"Пожарный сигнал","pl":"Alarm przeciwpożarowy"},"desc":{"en":"True when fire has been detected","nl":"Gaat af als er brand gedetecteerd wordt","de":"True, wenn Feuer erkannt wurde","fr":"Vrai si un incendie a été détecté","it":"Vero quando è stato rilevato un incendio","sv":"Sant när brand upptäckts","no":"Sant når brann påvises","es":"Verdadero cuando se ha detectado fuego","da":"Sandt, når brand er blevet opdaget","ru":"Верно при обнаружении огня","pl":"Alarm przeciwpożarowy"},"insights":true,"insightsTitleTrue":{"en":"Fire alarm turned on","nl":"Brandalarm ging af","de":"Feuer-Alarm ist angegangen","fr":"Alarme incendie s\'est activée","it":"Allarme antincendio attivato","sv":"Brandlarm aktiverat","no":"Brannlarm aktivert","es":"Alarma de incendios activada","da":"Brandalarm blev aktiveret","ru":"Пожарный сигнал включен","pl":"Adekwatny, kiedy wykryty zostanie pożar"},"insightsTitleFalse":{"en":"Fire alarm turned off","nl":"Brandalarm ging uit","de":"Feuer-Alarm ist ausgegangen","fr":"Alarme incendie s\'est désactivée","it":"Allarme antincendio disattivato","sv":"Brandlarm inaktiverat","no":"Brannlarm deaktivert","es":"Alarma de incendios desactivada","da":"Brandalarm blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_fire_true","highlight":true,"title":{"en":"The fire alarm turned on","nl":"Het brandalarm gaat aan","de":"Der Feuer-Alarm ist angegangen","fr":"L\'alarme incendie s\'est activée","it":"L\'allarme antincendio è stato attivato","sv":"Brandlarmet aktiverat","no":"Brannalarmen aktivert","es":"La alarma de incendios se ha activado","da":"Brandalarmen blev aktiveret","ru":"Пожарный сигнал включен","pl":"Alarm przeciwpożarowy włączony"}},{"id":"alarm_fire_false","title":{"en":"The fire alarm turned off","nl":"Het brandalarm gaat uit","de":"Der Feuer-Alarm ist ausgegangen","fr":"L\'alarme incendie s\'est désactivée","it":"L\'allarme antincendio è stato disattivato","sv":"Brandlarmet inaktiverat","no":"Brannalarmen deaktivert","es":"La alarma de incendios se ha desactivado","da":"Brandalarmen blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony"}}],"conditions":[{"id":"alarm_fire","title":{"en":"The fire alarm is !{{on|off}}","nl":"Het brandalarm is !{{aan|uit}}","de":"Der Feuer-Alarm ist !{{an|aus}}","fr":"L\'alarme incendie est !{{en marche|arrêtée}}","it":"L\'allarme antincendio è !{{acceso|spento}}","sv":"Brandlarmet är !{{på|av}}","no":"Brannalarmen er !{{på|av}}","es":"La alarma de incendios está !{{activada|desactivada}}","da":"Brandalarmen er !{{tændt|slukket}}","ru":"Пожарный сигнал !{{вкл.|выкл.}}","pl":"Alarm przeciwpożarowy !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Generic alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma general","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny"},"desc":{"en":"Generic alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma general","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny"},"insights":true,"insightsTitleTrue":{"en":"Generic alarm turned on","nl":"Algemeen alarm ging af","de":"Allgemeiner Alarm ist angegangen","fr":"Alarme générique s\'est activée","it":"Allarme generico attivato","sv":"Generiskt larm aktiverat","no":"Generell alarm aktivert","es":"Alarma general activada","da":"Generisk alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony"},"insightsTitleFalse":{"en":"Generic alarm turned off","nl":"Algemeen alarm ging uit","de":"Allgemeiner Alarm ist ausgegangen","fr":"Alarme générique s\'est désactivée","it":"Allarme generico disattivato","sv":"Generiskt larm inaktiverat","no":"Generell alarm deaktivert","es":"Alarma general desactivada","da":"Generisk alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_generic_true","title":{"en":"The generic alarm turned on","nl":"Het algemene alarm gaat aan","de":"Der allgemeine Alarm ist angegangen","fr":"L\'alarme générique s\'est activée","it":"L\'allarme generico è stato attivato","sv":"Det generiska larmet är aktiverat","no":"Den generelle alarmen er aktivert","es":"La alarma general se ha activado","da":"Den generiske alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony"}},{"id":"alarm_generic_false","title":{"en":"The generic alarm turned off","nl":"Het algemene alarm ging uit","de":"Der allgemeine Alarm ist ausgegangen","fr":"L\'alarme générique s\'est désactivée","it":"L\'allarme generico è stato disattivato","sv":"Det generiska larmet är inaktiverat","no":"Den generelle alarmen er deaktivert","es":"La alarma general se ha desactivado","da":"Den generiske alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony"}}],"conditions":[{"id":"alarm_generic","title":{"en":"The generic alarm is !{{on|off}}","nl":"Het algemene alarm is !{{aan|uit}}","de":"Der allgemeine Alarm ist !{{an|aus}}","fr":"L\'alarme générique est !{{en marche|arrêtée}}","it":"L\'allarme generico è !{{acceso|spento}}","sv":"Det generiska larmet är !{{på|av}}","no":"Den generelle alarmen er !{{på|av}}","es":"La alarma general está !{{activada|desactivada}}","da":"Den generiske alarm er !{{tændt|slukket}}","ru":"Общий сигнал !{{вкл.|выкл.}}","pl":"Alarm ogólny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Heat alarm","nl":"Hittealarm","de":"Hitze-Alarm","fr":"Alarme chaleur","it":"Allarme di calore","sv":"Värmelarm","no":"Varmealarm","es":"Alarma de calor","da":"Varmealarm","ru":"Сигнал перегрева","pl":"Alarm termiczny"},"desc":{"en":"True when extreme heat has been detected","nl":"Gaat af als er extreme hitte gedetecteerd wordt","de":"True, wenn extreme Hitze erkannt wurde","fr":"Vrai si une chaleur extrême a été détectée","it":"Vero quando è stato rilevato un calore estremo","sv":"Sant när extrem hetta upptäckts","no":"Sant når ekstrem varme påvises","es":"Verdadero cuando se ha detectado un calor extremo","da":"Sandt, når ekstrem varme er blevet opdaget","ru":"Верно при обнаружении экстремально высокой температуры","pl":"Adekwatny, kiedy wykryta zostanie ekstremalnie wysoka temperatura"},"insights":true,"insightsTitleTrue":{"en":"Heat alarm turned on","nl":"Hittealarm ging af","de":"Hitze-Alarm ist angegangen","fr":"Alarme chaleur s\'est activée","it":"Allarme di calore attivato","sv":"Värmelarm aktiverat","no":"Varmealarm aktivert","es":"Alarma de calor activada","da":"Varmealarm blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony"},"insightsTitleFalse":{"en":"Heat alarm turned off","nl":"Hittealarm ging uit","de":"Hitze-Alarm ist ausgegangen","fr":"Alarme chaleur s\'est désactivée","it":"Allarme di calore disattivato","sv":"Värmelarm inaktiverat","no":"Varmealarm deaktivert","es":"Alarma de calor desactivada","da":"Varmealarm blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_heat_true","highlight":true,"title":{"en":"The heat alarm turned on","nl":"Het hitte alarm gaat aan","de":"Der Hitze-Alarm ist angegangen","fr":"L\'alarme chaleur s\'est activée","it":"L\'allarme di calore è stato attivato","sv":"Värmelarmet aktiverat","no":"Varmealarmen aktivert","es":"La alarma de calor se ha activado","da":"Varmealarmen blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony"}},{"id":"alarm_heat_false","title":{"en":"The heat alarm turned off","nl":"Het hitte alarm gaat uit","de":"Der Hitze-Alarm ist ausgegangen","fr":"L\'alarme chaleur s\'est désactivée","it":"L\'allarme di calore è stato disattivato","sv":"Värmelarmet inaktiverat","no":"Varmealarmen deaktivert","es":"La alarma de calor se ha desactivado","da":"Varmealarmen blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony"}}],"conditions":[{"id":"alarm_heat","title":{"en":"The heat alarm is !{{on|off}}","nl":"Het hitte alarm is !{{aan|uit}}","de":"Der Hitze-Alarm ist !{{an|aus}}","fr":"L\'alarme chaleur est !{{en marche|arrêtée}}","it":"L\'allarme di calore è !{{acceso|spento}}","sv":"Värmelarmet är !{{på|av}}","no":"Varmealarmen er !{{på|av}}","es":"La alarma de calor está !{{activada|desactivada}}","da":"Varmealarmen er !{{tændt|slukket}}","ru":"Сигнал перегрева !{{вкл.|выкл.}}","pl":"Alarm termiczny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Motion alarm","nl":"Bewegingsalarm","de":"Bewegungs-Alarm","fr":"Alarme mouvement","it":"Allarme di movimento","sv":"Rörelselarm","no":"Bevegelsesalarm","es":"Alarma de movimiento","da":"Bevægelsesalarm","ru":"Сигнал движения","pl":"Czujnik ruchu"},"insights":true,"insightsTitleTrue":{"en":"Motion alarm turned on","nl":"Bewegingsalarm ging af","de":"Bewegungs-Alarm ist angegangen","fr":"Alarme mouvement s\'est déclenchée","it":"Allarme di movimento attivato","sv":"Rörelselarm aktiverat","no":"Bevegelsesalarm aktivert","es":"Alarma de movimiento activada","da":"Bevægelsesalarm blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony"},"insightsTitleFalse":{"en":"Motion alarm turned off","nl":"Bewegingsalarm ging uit","de":"Bewegungs-Alarm ist ausgegangen","fr":"Alarme mouvement s\'est désactivée","it":"Allarme di movimento disattivato","sv":"Rörelselarm inaktiverat","no":"Bevegelsesalarm deaktivert","es":"Alarma de movimiento desactivada","da":"Bevægelsesalarm blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_motion_true","highlight":true,"title":{"en":"The motion alarm turned on","nl":"De bewegingsmelder gaat aan","de":"Der Bewegungs-Alarm ist angegangen","fr":"L\'alarme mouvement s\'est activée","it":"L\'allarme di movimento è stato attivato","sv":"Rörelselarmet aktiverat","no":"Bevegelsesalarmen aktivert","es":"La alarma de movimiento se ha activado","da":"Bevægelsesalarmen blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony"}},{"id":"alarm_motion_false","title":{"en":"The motion alarm turned off","nl":"De bewegingsmelder gaat uit","de":"Der Bewegungs-Alarm ist ausgegangen","fr":"L\'alarme mouvement s\'est désactivée","it":"L\'allarme di movimento è stato disattivato","sv":"Rörelselarmet inaktiverat","no":"Bevegelsesalarmen deaktivert","es":"La alarma de movimiento se ha desactivado","da":"Bevægelsesalarmen blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony"}}],"conditions":[{"id":"alarm_motion","title":{"en":"The motion alarm is !{{on|off}}","nl":"De bewegingsmelder is !{{aan|uit}}","de":"Der Bewegungs-Alarm ist !{{an|aus}}","fr":"L\'alarme mouvement est !{{en marche|arrêtée}}","it":"L\'allarme di movimento è !{{acceso|spento}}","sv":"Rörelselarmet är !{{på|av}}","no":"Bevegelsesalarmen er !{{på|av}}","es":"La alarma de movimiento está !{{activada|desactivada}}","da":"Bevægelsesalarmen er !{{tændt|slukket}}","ru":"Сигнал движения !{{вкл.|выкл.}}","pl":"Czujnik ruchu !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Night alarm","nl":"Nachtalarm","de":"Nacht-Alarm","fr":"Alarme nuit","it":"Allarme notturno","sv":"Nattlarm","no":"Nattalarm","es":"Alarma nocturna","da":"Natalarm","ru":"Ночной сигнал","pl":"Alarm nocny"},"desc":{"en":"True when it is night","nl":"Gaat af als het nacht is","de":"True, wenn es Nacht ist","fr":"Vrai quand il fait nuit","it":"Vero quando è notte","sv":"Sant när det är natt","no":"Sant når det er natt","es":"Verdadero cuando es de noche","da":"Sandt, når det er nat","ru":"Верно ночью","pl":"Adekwatny, kiedy jest noc"},"insights":true,"insightsTitleTrue":{"en":"Night alarm turned on","nl":"Nachtalarm ging af","de":"Nacht-Alarm ist angegangen","fr":"Alarme nuit s\'est activée","it":"Allarme notturno attivato","sv":"Nattlarm aktiverat","no":"Nattalarm aktivert","es":"Alarma nocturna activada","da":"Natalarm blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony"},"insightsTitleFalse":{"en":"Night alarm turned off","nl":"Nachtalarm ging uit","de":"Nacht-Alarm ist ausgegangen","fr":"Alarme nuit s\'est désactivée","it":"Allarme notturno disattivato","sv":"Nattlarm inaktiverat","no":"Nattalarm deaktivert","es":"Alarma nocturna desactivada","da":"Natalarm blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_night_true","title":{"en":"The night alarm turned on","nl":"Het nachtalarm gaat aan","de":"Der Nacht-Alarm ist angegangen","fr":"L\'alarme nuit s\'est activée","it":"L\'allarme notturno è stato attivato","sv":"Nattlarmet aktiverat","no":"Nattalarmen aktivert","es":"La alarma nocturna se ha activado","da":"Natalarmen blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony"}},{"id":"alarm_night_false","title":{"en":"The night alarm turned off","nl":"Het nachtalarm gaat uit","de":"Der Nacht-Alarm ist ausgegangen","fr":"L\'alarme nuit s\'est désactivée","it":"L\'allarme notturno è stato disattivato","sv":"Nattlarmet inaktiverat","no":"Nattalarmen deaktivert","es":"La alarma nocturna se ha desactivado","da":"Natalarmen blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony"}}],"conditions":[{"id":"alarm_night","title":{"en":"The night alarm is !{{on|off}}","nl":"Het nachtalarm is !{{aan|uit}}","de":"Der Nacht-Alarm ist !{{an|aus}}","fr":"L\'alarme nuit est !{{en marche|arrêtée}}","it":"L\'allarme notturno è !{{acceso|spento}}","sv":"Nattlarmet är !{{på|av}}","no":"Nattalarmen er !{{på|av}}","es":"La alarma nocturna está !{{activada|desactivada}}","da":"Natalarmen er !{{tændt|slukket}}","ru":"Ночной сигнал !{{вкл.|выкл.}}","pl":"Alarm nocny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM2.5 alarm","nl":"PM2.5 alarm","de":"PM2.5-Alarm","fr":"Alarme PM2.5","it":"Allarme PM2.5","sv":"PM2.5-larm","no":"PM2.5-alarm","es":"Alarma de PM2,5","da":"PM2,5-alarm","ru":"Сигнал ТЧ 2.5","pl":"Alarm o stężeniu PM2.5"},"desc":{"en":"True when PM2.5 values exceeds threshold","nl":"Gaat af wanneer de PM2.5 waarde overschreden wordt","de":"True, wenn PM2.5-Werte die Schwelle überschreiten","fr":"Vrai si les valeurs PM2.5 excèdent un seuil","it":"Vero quando i valori PM2.5 superano la soglia","sv":"Sant när PM2.5-värdena överstiger gränsvärdet","no":"Sant når PM2.5-verdiene overskrider grenseverdien","es":"Verdadero cuando los valores de PM2,5 superan el límite","da":"Sandt, når PM2,5-værdier overskrider grænseværdien","ru":"Верно при превышении контрольного значения ТЧ 2.5","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia PM2.5"},"insights":true,"insightsTitleTrue":{"en":"PM2.5 alarm turned on","nl":"PM2.5 alarm ging af","de":"PM2.5-Alarm ist angegangen","fr":"Alarme PM2.5 s\'est activée","it":"Allarme PM2.5 attivato","sv":"PM2.5-larm aktiverat","no":"PM2.5-alarm aktivert","es":"Alarma de PM2,5 activada","da":"PM2,5-alarm blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm o stężeniu PM2.5 włączony"},"insightsTitleFalse":{"en":"PM2.5 alarm turned off","nl":"PM2.5 alarm ging uit","de":"PM2.5-Alarm ist ausgegangen","fr":"Alarme PM2.5 s\'est désactivée","it":"Allarme PM2.5 disattivato","sv":"PM2.5-larm inaktiverat","no":"PM2.5-alarm deaktivert","es":"Alarma de PM2,5 desactivada","da":"PM2,5-alarm blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm o stężeniu PM2.5 wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm25_true","highlight":true,"title":{"en":"The PM2.5 alarm turned on","nl":"Het PM2.5 gaat aan","de":"Der PM2.5-Alarm ist angegangen","fr":"L\'alarme PM2.5 s\'est activée","it":"L\'allarme PM2.5 è stato attivato","sv":"PM2.5-larmet aktiverat","no":"PM2.5-alarmen aktivert","es":"La alarma de PM2,5 se ha activado","da":"PM2,5-alarmen blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm o stężeniu PM2.5 włączony"}},{"id":"alarm_pm25_false","title":{"en":"The PM2.5 alarm turned off","nl":"Het PM2.5 gaat uit","de":"Der PM2.5-Alarm ist ausgegangen","fr":"L\'alarme PM2.5 s\'est désactivée","it":"L\'allarme PM2.5 è stato disattivato","sv":"PM2.5-larmet inaktiverat","no":"PM2.5-alarmen deaktivert","es":"La alarma de PM2,5 se ha desactivado","da":"PM2,5-alarmen blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm o stężeniu PM2.5 wyłączony"}}],"conditions":[{"id":"alarm_pm25","title":{"en":"The PM2.5 alarm is !{{on|off}}","nl":"Het PM2.5 alarm is !{{aan|uit}}","de":"Der PM2.5-Alarm ist !{{an|aus}}","fr":"L\'alarme PM2.5 est !{{en marche|arrêtée}}","it":"L\'allarme PM2.5 è !{{acceso|spento}}","sv":"PM2.5-larmet är !{{på|av}}","no":"PM2.5-alarmen er !{{på|av}}","es":"La alarma de PM2,5 está !{{activada|desactivada}}","da":"PM2,5-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ 2.5 !{{вкл.|выкл.}}","pl":"Alarm o stężeniu PM2.5 !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Smoke alarm","nl":"Rookmelder","de":"Rauch-Alarm","fr":"Alarme fumée","it":"Allarme fumo","sv":"Röklarm","no":"Røykalarm","es":"Alarma de humo","da":"Røgalarm","ru":"Сигнал дыма","pl":"Alarm przeciwdymny"},"desc":{"en":"True when smoke has been detected","nl":"Gaat af als er rook gedetecteerd wordt","de":"True, wenn Rauch erkannt wurde","fr":"Vrai quand de la fumée a été détectée","it":"Vero quando è stato rilevato del fumo","sv":"Sant när rök upptäcks","no":"Sant når røyk har blitt påvist","es":"Verdadero cuando se ha detectado humo","da":"Sandt, når røg er blevet opdaget","ru":"Верно при обнаружении дыма","pl":"Adekwatny, kiedy wykryty zostanie dym"},"insights":true,"insightsTitleTrue":{"en":"Smoke alarm turned on","nl":"Rookmelder ging af","de":"Rauch-Alarm ist angegangen","fr":"Alarme fumée s\'est activée","it":"Allarme fumo attivato","sv":"Röklarm aktiverat","no":"Røykalarm aktivert","es":"Alarma de humo activada","da":"Røgalarm blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony"},"insightsTitleFalse":{"en":"Smoke alarm turned off","nl":"Rookmelder ging uit","de":"Rauch-Alarm ist ausgegangen","fr":"Alarme fumée s\'est désactivée","it":"Allarme fumo disattivato","sv":"Röklarm inaktiverat","no":"Røykalarm deaktivert","es":"Alarma de humo desactivada","da":"Røgalarm blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_smoke_true","highlight":true,"title":{"en":"The smoke alarm turned on","nl":"De rookmelder gaat aan","de":"Der Rauch-Alarm ist angegangen","fr":"L\'alarme fumée s\'est activée","it":"L\'allarme fumo è stato attivato","sv":"Röklarmet aktiverat","no":"Røykalarmen er aktivert","es":"La alarma de humo se ha activado","da":"Røgalarmen blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony"}},{"id":"alarm_smoke_false","title":{"en":"The smoke alarm turned off","nl":"De rookmelder gaat uit","de":"Der Rauch-Alarm ist ausgegangen","fr":"L\'alarme fumée s\'est désactivée","it":"L\'allarme fumo è stato disattivato","sv":"Röklarmet inaktiverat","no":"Røykalarmen er deaktivert","es":"La alarma de humo se ha desactivado","da":"Røgalarmen blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony"}}],"conditions":[{"id":"alarm_smoke","title":{"en":"The smoke alarm is !{{on|off}}","nl":"De rookmelder is !{{aan|uit}}","de":"Der Rauch-Alarm ist !{{an|aus}}","fr":"L\'alarme fumée est !{{en marche|arrêtée}}","it":"L\'allarme fumo è !{{acceso|spento}}","sv":"Röklarmet är !{{på|av}}","no":"Røykalarmen er !{{på|av}}","es":"La alarma de humo está !{{activada|desactivada}}","da":"Røgalarmen er !{{tændt|slukket}}","ru":"Сигнал дыма !{{вкл.|выкл.}}","pl":"Alarm przeciwdymny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tamper alarm","nl":"Sabotagealarm","de":"Sabotage-Alarm","fr":"Alarme sabotage","it":"Allarme manomissione","sv":"Sabotagelarm","no":"Sabotasjealarm","es":"Alarma de sabotaje","da":"Sabotagealarm","ru":"Противовзломный сигнал","pl":"Alarm antyingerencyjny"},"desc":{"en":"True when tampering has been detected","nl":"Gaat af als sabotage gedetecteerd wordt","de":"True, wenn Sabotage erkannt wurde","fr":"Vrai si l\'alarme sabotage a été détectée","it":"Vero quando è stata rilevata una manomissione","sv":"Sant när sabotage upptäckts","no":"Sant när sabotasje oppdages","es":"Verdadero cuando se ha detectado un sabotaje","da":"Sandt, når sabotage er blevet opdaget","ru":"Верно при обнаружении попытки взлома","pl":"Adekwatny, kiedy wykryta zostanie ingerencja"},"insights":true,"insightsTitleTrue":{"en":"Tamper alarm turned on","nl":"Sabotagealarm ging af","de":"Sabotage-Alarm ist angegangen","fr":"Alarme sabotage s\'est activée","it":"Allarme manomissione attivato","sv":"Sabotagelarm aktiverat","no":"Sabotasjealarm aktivert","es":"Alarma de sabotaje activada","da":"Sabotagealarm blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony"},"insightsTitleFalse":{"en":"Tamper alarm turned off","nl":"Sabotagealarm ging uit","de":"Sabotage-Alarm ist ausgegangen","fr":"Alarme sabotage s\'est désactivée","it":"Allarme manomissione disattivato","sv":"Sabotagelarm inaktiverat","no":"Sabotagealarm deaktivert","es":"Alarma de sabotaje desactivada","da":"Sabotagealarm blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tamper_true","highlight":true,"title":{"en":"The tamper alarm turned on","nl":"Het sabotagealarm gaat aan","de":"Der Sabotage-Alarm ist angegangen","fr":"L\'alarme sabotage s\'est activée","it":"L\'allarme manomissione è stato attivato","sv":"Sabotagelarmet aktiverat","no":"Sabotasjealarmen aktivert","es":"La alarma de sabotaje se ha activado","da":"Sabotagealarmen blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony"}},{"id":"alarm_tamper_false","title":{"en":"The tamper alarm turned off","nl":"Het sabotagealarm gaat uit","de":"Der Sabotage-Alarm ist ausgegangen","fr":"L\'alarme sabotage s\'est désactivée","it":"L\'allarme manomissione è stato disattivato","sv":"Sabotagelarmet inaktiverat","no":"Sabotasjealarmen deaktivert","es":"La alarma de sabotaje se ha desactivado","da":"Sabotagealarmen blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony"}}],"conditions":[{"id":"alarm_tamper","title":{"en":"The tamper alarm is !{{on|off}}","nl":"Het sabotagealarm is !{{aan|uit}}","de":"Der Sabotage-Alarm ist !{{an|aus}}","fr":"L\'alarme sabotage est !{{en marche|arrêtée}}","it":"L\'allarme manomissione è !{{acceso|spento}}","sv":"Sabotagelarmet är !{{på|av}}","no":"Sabotasjealarmen er !{{på|av}}","es":"La alarma de sabotaje está !{{activada|desactivada}}","da":"Sabotagealarmen er !{{tændt|slukket}}","ru":"Противовзломный сигнал !{{вкл.|выкл.}}","pl":"Alarm antyingerencyjny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Water alarm","nl":"Wateralarm","de":"Wasser-Alarm","fr":"Alarme eau","it":"Allarme acqua","sv":"Vattenalarm","no":"Vannalarm","es":"Alarma de agua","da":"Vandalarm","ru":"Сигнал протечки воды","pl":"Alarm zalania wodą"},"desc":{"en":"True when water has been detected","nl":"Gaat af als er water gedetecteerd wordt","de":"True, wenn Wasser erkannt wurde","fr":"Vrai si de l\'eau a été détectée","it":"Vero quando è stata rilevata dell\'acqua","sv":"Sant när vatten upptäcks","no":"Sant når vann påvises","es":"Verdadero cuando se ha detectado agua","da":"Sandt, når vand er blevet opdaget","ru":"Верно при обнаружении протечки воды","pl":"Adekwatny, kiedy wykryta zostanie woda"},"insights":true,"insightsTitleTrue":{"en":"Water alarm turned on","nl":"Water alarm ging af","de":"Wasser-Alarm ist angegangen","fr":"Alarme eau s\'est activée","it":"Allarme acqua attivato","sv":"Vattenalarm aktiverat","no":"Vannalarm aktivert","es":"Alarma de agua activada","da":"Vandalarm blev aktiveret","ru":"Сигнал протечки воды включен","pl":"Alarm zalania wodą włączony"},"insightsTitleFalse":{"en":"Water alarm turned off","nl":"Water alarm ging uit","de":"Wasser-Alarm ist ausgegangen","fr":"Alarme eau s\'est désactivée","it":"Allarme acqua disattivato","sv":"Vattenalarm inaktiverat","no":"Vannalarm deaktivert","es":"Alarma de agua desactivada","da":"Vandalarm blev deaktiveret","ru":"Сигнал протечки воды выключен","pl":"Alarm zalania wodą wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_water_true","highlight":true,"title":{"en":"The water alarm turned on","nl":"Het wateralarm gaat aan","de":"Der Wasser-Alarm ist angegangen","fr":"L\'alarme eau s\'est activée","it":"L\'allarme acqua è stato attivato","sv":"Vattenalarmet aktiverat","no":"Vannalarmen aktivert","es":"La alarma de agua se ha activado","da":"Vandalarmen blev aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm zalania wodą włączony"}},{"id":"alarm_water_false","title":{"en":"The water alarm turned off","nl":"Het wateralarm gaat uit","de":"Der Wasser-Alarm ist ausgegangen","fr":"L\'alarme eau s\'est désactivée","it":"L\'allarme acqua è stato disattivato","sv":"Vattenalarmet inaktiverat","no":"Vannalarmen deaktivert","es":"La alarma de agua se ha desactivado","da":"Vandalarmen blev deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm zalania wodą wyłączony"}}],"conditions":[{"id":"alarm_water","title":{"en":"The water alarm is !{{on|off}}","nl":"Het wateralarm is !{{aan|uit}}","de":"Der Wasser-Alarm ist !{{an|aus}}","fr":"L\'alarme eau est !{{en marche|arrêtée}}","it":"L\'allarme acqua è !{{acceso|spento}}","sv":"Vattenalarmet är !{{på|av}}","no":"Vannalarmen er !{{på|av}}","es":"La alarma de agua está !{{activada|desactivada}}","da":"Vandalarmen er !{{tændt|slukket}}","ru":"Сигнал протечки воды !{{вкл.|выкл.}}","pl":"Alarm zalania wodą !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button","uiQuickAction":true,"$flow":{"actions":[{"id":"press","title":{"en":"Press the button","nl":"Druk op de knop","de":"Drücke die Taste","fr":"Appuyer sur le bouton","it":"Premi il pulsante","sv":"Tryck på knappen","no":"Trykk på knappen","es":"Pulsa el botón","da":"Tryk på knappen","ru":"Нажмите кнопку","pl":"Naciśnij przycisk"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Channel down","nl":"Kanaal omlaag","de":"Kanal runter","fr":"Chane bas","it":"Canale verso il basso","sv":"Kanal ned","no":"Lavere kanal","es":"Bajar de canal","da":"Kanal ned","ru":"Канал вниз","pl":"Kanał w dół"},"type":"boolean","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_down","title":{"en":"One channel down","nl":"Eén kanaal omlaag","de":"Einen Kanal runter","fr":"Une châine vers le bas","it":"Un canale verso il basso","sv":"En kanal ned","no":"En kanal lavere","es":"Un canal más abajo","da":"En kanal ned","ru":"Один канал вниз","pl":"Jeden kanał w dół"}}]},"uiComponent":"button"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Channel up","nl":"Kanaal omhoog","de":"Kanal hoch","fr":"Chaîne haut","it":"Canale verso l\'alto","sv":"Kanal upp","no":"Høyere kanal","es":"Subir de canal","da":"Kanal op","ru":"Канал наверх","pl":"Kanał w górę"},"type":"boolean","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_up","title":{"en":"One channel up","nl":"Eén kanaal omhoog","de":"Einen Kanal hoch","fr":"Une chaîne vers le haut","it":"Un canale verso l\'alto","sv":"En kanal upp","no":"En kanal høyere","es":"Un canal más arriba","da":"En kanal op","ru":"Один канал наверх","pl":"Jeden kanał w górę"}}]},"uiComponent":"button"}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Dim level","nl":"Dim niveau","de":"Dimmlevel","fr":"Intensité lumineuse","it":"Intensità luminosa","sv":"Dimningsnivå","no":"Dempingsnivå","es":"Intensidad de la luz","da":"Lysniveau","ru":"Уровень яркости","pl":"Poziom przygaszenia"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":"%","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"dim_changed","title":{"en":"Dim-level changed","nl":"Dim-niveau veranderd","de":"Dimm-Niveau geändert","fr":"Intensité lumineuse a été modifiée","it":"Intensità luminosa modificata","sv":"Dimningsnivå ändrades","no":"Dempingsnivå ble endret","es":"La intensidad de la luz ha cambiado","da":"Lysniveau ændret","ru":"Уровень яркости изменен","pl":"Zmiana poziomu przygaszenia"},"tokens":[{"name":"dim","type":"number","title":{"en":"Level","nl":"Niveau","de":"Niveau","fr":"Niveau","it":"Livello","sv":"Nivå","no":"Nivå","es":"Nivel","da":"Niveau","ru":"Уровень","pl":"Poziom"},"example":0.5}]}],"actions":[{"id":"dim","highlight":true,"title":{"en":"Dim to","nl":"Dim naar","de":"Dimmen auf","fr":"Mettre l\'intensité lumineuse sur","it":"Imposta l\'intensità luminosa su","sv":"Dimma till","no":"Demp til","es":"Ajustar la intensidad de la luz a","da":"Juster til","ru":"Установить яркость","pl":"Przygaś do"},"args":[{"name":"dim","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"dim_relative","title":{"en":"Set relative dim-level","nl":"Zet relatief dim-niveau","de":"Relatives Dimm-Niveau setzen","fr":"Définir l\'intensité lumineuse sur relative","it":"Imposta intensità luminosa su relativa","no":"Innstill relativt dempingsnivå","es":"Ajustar la intensidad de la luz como relativa","da":"Indstil relativt lysniveau","ru":"Установить относительный уровень яркости","pl":"Ustaw względny poziom przygaszenia"},"hint":{"en":"Dim or brighten with respect to the device\'s current dim-level.","nl":"Verhoog of verlaag de helderheid ten opzichte van het huidige dim-niveau van het apparaat.","ru":"Уменьшите или увеличьте яркость относительно текущего уровня яркости устройства.","pl":"Przygaś lub rozjaśnij względem obecnego poziomu przygaszenia urządzenia."},"args":[{"name":"dim","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta"},"getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta"},"insightsTitleFalse":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta"},"uiComponent":"toggle","$flow":{"triggers":[{"id":"garagedoor_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta"}},{"id":"garagedoor_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta"}}],"conditions":[{"id":"closed","title":{"en":"Is !{{closed|open}}","nl":"Is !{{gesloten|geopend}}","de":"Ist !{{geschlossen|offen}}","fr":"Est !{{fermé|ouvert}}","it":"È !{{chiuso|aperto}}","sv":"Är !{{stängd|öppen}}","no":"Er !{{lukket|åpen}}","es":"Está !{{cerrado|abierto}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыта|открыта}}","pl":"Jest !{{zamknięta|otwarta}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zamknij"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Otwórz"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na otwartą lub zamkniętą"}}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Home alarm state","nl":"Thuisalarm status","de":"Heim-Alarm-Status","fr":"Etat de l\'alarme de maison","it":"Stato dell\'allarme domestico","sv":"Hemlarmsstatus","no":"Hjemmealarmstatus","es":"Estado de la alarma doméstica","da":"Hjemmealarmstatus","ru":"Состояние домашней сигнализации","pl":"Stan alarmu domowego"},"values":[{"id":"armed","title":{"en":"Armed","nl":"Geactiveerd","de":"scharf","fr":"Armé","it":"Attivato","sv":"Larmat","no":"Aktivert","es":"Activada","da":"Aktiveret","ru":"Готова","pl":"Uzbrojony"}},{"id":"disarmed","title":{"en":"Disarmed","nl":"Gedeactiveerd","de":"unscharf","fr":"Désarmé","it":"Disattivato","sv":"Avlarmat","no":"Deaktivert","es":"Desactivada","da":"Deaktiveret","ru":"не готова","pl":"rozbrojony"}},{"id":"partially_armed","title":{"en":"Partially armed","nl":"Deels geactiveerd","de":"teilweise scharf","fr":"Partiellement armé","it":"Parzialmente attivato","sv":"Delvis larmat","no":"Delvis aktivert","es":"Parcialmente activada","da":"Delvist aktiveret","ru":"Частично готова","pl":"Częściowo uzbrojony"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"homealarm_state_changed","title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Statusen ändrad","no":"Statusen ble endret","es":"El estado ha cambiado","da":"Status ændret","ru":"Состояние изменено","pl":"Zmiana stanu"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"homealarm_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\'est pas}}","it":"Lo stato è !{{|non}}","sv":"Statusen är !{{|inte}}","no":"Statusen er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние — !{{|не}}","pl":"Stan to !{{|nie}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_homealarm_state","title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta stato","sv":"Ställ in status","no":"Innstill status","es":"Definir estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan"},"args":[{"name":"device","type":"device","filter":"capabilities=homealarm_state"},{"name":"state","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Hue","nl":"Hue","de":"Farbton","fr":"Teinte","it":"Tonalità","sv":"Nyans","no":"Fargetone","es":"Tonalidad","da":"Farvetone","ru":"Оттенок","pl":"Odcień"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"hue","title":{"en":"Set the hue","nl":"Verander kleurtint","de":"Den Farbton setzen","fr":"Définir la teinte","it":"Imposta la tonalità","sv":"Ställ in nyans","no":"Innstill fargetone","es":"Configurar la tonalidad","da":"Indstil farvetonen","ru":"Установить оттенок","pl":"Ustaw odcień"},"hint":{"en":"Select a color from the hue scale, for example red (0°/360°), yellow (60°), or blue (180°).","nl":"Selecteer een kleurtint van de hue schaal, bijvoorbeeld rood (0°/360°), geel (60°), of blauw (180°).","ru":"Выберите цвет из шкалы оттенков, например красный (0°/360°), желтый (60°) или синий (180°).","pl":"Wybierz barwę ze skali odcieni: np. czerwień (0°/360°), żółty (60°) lub niebieski (180°)."},"args":[{"name":"hue","type":"range","min":0,"max":1,"step":0.01,"value":0,"label":"°","labelMultiplier":360,"labelDecimals":0}]},{"id":"color","title":{"en":"Set a color","nl":"Verander naar kleur","de":"Eine Farbe setzen","fr":"Définir la couleur","it":"Imposta un colore","sv":"Ställ in en färg","no":"Innstill fargetone","es":"Configurar un color","da":"Indstil en farve","ru":"Установить цвет","pl":"Ustaw barwę"},"args":[{"name":"color","type":"color"}]},{"id":"color_random","title":{"en":"Set a random color","nl":"Verander naar een willekeurige kleur","de":"Eine zufällige Farbe setzen","fr":"Définir une couleur aléatoire","it":"Imposta un colore casuale","sv":"Ställ in en slumpvis färg","no":"Innstill en tilfeldig farge","es":"Configurar un color aleatorio","da":"Indstil en tilfældig farve","ru":"Установить случайный цвет","pl":"Ustaw losową barwę"}}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Light mode","nl":"Lamp modus","de":"Lichtmodus","fr":"Mode lumière","it":"Modalità luce","sv":"Lampläge","no":"Lysmodus","es":"Modo de la luz","da":"Lystilstand","ru":"Режим света","pl":"Tryb oświetlenia"},"desc":{"en":"Switch between color or temperature mode","nl":"Schakel tussen kleur of temperatuur modus","de":"Zwischen Farb- und Temperaturmodus wechseln","fr":"Passer entre les modes couleur ou température","it":"Passa tra le modalità colore o temperatura","sv":"Växla mellan färg- och temperatur-läge","no":"Veksle mellom farge- og temperaturmodus","es":"Cambia entre los modos color y temperatura","da":"Skift mellem farve- eller temperaturtilstand","ru":"Переключение между цветовым или температурным режимом","pl":"Przełączaj między trybem barwy lub temperatury"},"values":[{"id":"color","title":{"en":"Color","nl":"Kleur","de":"Farbe","fr":"Couleur","it":"Colore","sv":"Färg","no":"Farge","es":"Color","da":"Farve","ru":"Цвет","pl":"Barwa"}},{"id":"temperature","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura"}}],"getable":true,"setable":true,"uiComponent":"color"}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Color saturation","nl":"Kleurverzadiging","de":"Farbsättigung","fr":"Saturation de couleur","it":"Saturazione colore","sv":"Färggmättnad","no":"Fargemetning","es":"Saturación del color","da":"Farvemætning","ru":"Насыщенность цвета","pl":"Nasycenie barwy"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"getable":true,"setable":true,"$flow":{"actions":[{"id":"saturation","title":{"en":"Set the saturation","nl":"Verander kleurverzadiging","de":"Die Sättigung setzen","fr":"Définir la saturation","it":"Imposta la saturazione","sv":"Ställ in mättnad","no":"Innstill metningen","es":"Configurar la saturación","da":"Indstil farvemætningen","ru":"Установить насыщенность","pl":"Ustaw nasycenie"},"args":[{"name":"saturation","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"uiComponent":"color"}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Color temperature","nl":"Kleurtemperatuur","de":"Farbtemperatur","fr":"Température de couleur","it":"Temperatura colore","sv":"Färgtemperatur","no":"Fargetemperatur","es":"Temperatura del color","da":"Farvetemperatur","ru":"Температура цвета","pl":"Temperatura barwy"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"temperature","title":{"en":"Set a temperature","nl":"Verander naar temperatuur","de":"Eine Temperatur setzen","fr":"Définir une température","it":"Imposta una temperatura","sv":"Ställ in en temperatur","no":"Innstill en temperatur","es":"Configurar la temperatura","da":"Indstil en temperatur","ru":"Установить температуру","pl":"Ustaw temperaturę"},"args":[{"name":"temperature","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}],"hint":{"en":"Adjusts the temperature of the light. A higher value means a warmer color.","nl":"Verander de temperatuur van de lamp. Een hogere waarde betekent een warmere kleur.","de":"Stelle die Temperatur der Farbe ein. Ein höherer Wert bedeutet eine wärmere Farbe.","fr":"Ajuste la température de la lumière. Une valeur plus élévée signifie une couleur plus chaude.","it":"Regola la temperatura della luce. Un valore più alto indica un colore più caldo.","sv":"Justerar temperaturen på ljuset. Ett högre värde innebär en varmare färg.","no":"Justerer lystemperaturen. En høyere verdi gir en varmere farge.","es":"Ajusta la temperatura de la luz. Cuanto más alto es el valor, más cálido es el color.","da":"Justerer lysets temperatur. En højere værdi betyder en varmere farve.","ru":"Регулирует температуру света. Более высокое значение означает более теплый цвет.","pl":"Dostosuj temperaturę oświetlenia. Wyższa wartość oznacza cieplejszą barwę."}}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Lock mode","nl":"Slot modus","de":"Schloss-Modus","fr":"Mode verrou","it":"Modalità serratura","sv":"Låsläge","no":"Låsemodus","es":"Modo de la cerradura","da":"Lås-tilstand","ru":"Режим замка","pl":"Tryb zamknięcia"},"values":[{"id":"always_locked","title":{"en":"Always locked","nl":"Altijd op slot","de":"Immer verriegelt","fr":"Toujours verrouillé","it":"Sempre chiusa","sv":"Alltid låst","no":"Alltid låst","es":"Siempre cerrada","da":"Altid låst","ru":"Всегда закрыт","pl":"Zawsze zablokowane"}},{"id":"always_unlocked","title":{"en":"Always unlocked","nl":"Altijd open","de":"Immer entriegelt","fr":"Toujours déverrouillé","it":"Sempre aperta","sv":"Alltid olåst","no":"Alltid ulåst","es":"Siempre abierta","da":"Altid ulåst","ru":"Всегда открыт","pl":"Zawsze odblokowane"}},{"id":"locked_until_unlock","title":{"en":"Locked until unlocked","nl":"Op slot tot geopend","de":"Verriegelt, bis entriegelt wird","fr":"Verrouillé jusqu\'à déverrouillé","it":"Chiusa finché non viene sbloccata","sv":"Låst tills upplåst","no":"Låst til opplåst","es":"Cerrada hasta que se abra","da":"Låst indtil ulåst","ru":"Закрыт, пока не будет открыт","pl":"Zablokowane aż do odblokowania"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"lock_mode_changed","title":{"en":"Lock mode has changed","nl":"Slot modus is veranderd","de":"Schloss-Modus hat sich geändert","fr":"Mode verrou a été modifié","it":"La modalità di blocco è cambiata","sv":"Låsläge har ändrats","no":"Låsemodusen er endret","es":"El modo de la cerradura ha cambiado","da":"Lås-tilstand er blevet ændret","ru":"Режим замка изменен","pl":"Zmiana trybu zamknięcia"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"lock_mode_is","title":{"en":"Lock mode !{{is|is not}}","nl":"Slot modus !{{is|is niet}}","de":"Schloss-Modus !{{ist|ist nicht}}","fr":"Mode verrou !{{est|n\'est pas}}","it":"La modalità di blocco !{{è|non è}}","sv":"Låsläge !{{är|är inte}}","no":"Låsemodus !{{er|er ikke}}","es":"El modo de la cerradura !{{está|no está}}","da":"Lås-tilstand !{{er|er ikke}}","ru":"Режим замка !{{|не}}","pl":"Tryb zamknięcia !{{to|to nie}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"mode","title":{"en":"Set mode","nl":"Stel stand in","de":"Modus setzen","fr":"Définir le mode","it":"Imposta la modalità","sv":"Ställ in läge","no":"Innstill modus","es":"Configurar modo","da":"Indstil tilstand","ru":"Установить режим","pl":"Ustaw tryb"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Locked","nl":"Op slot","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane"},"desc":{"en":"True when the lock is locked","nl":"Geeft aan wanneer iets op slot is","de":"True, wenn das Schloss verriegelt ist","fr":"Vrai, si le verrou est verrouillé","it":"Vero quando la serratura è chiusa","sv":"Sant när låset är låst","no":"Sant når låsen er låst","es":"Verdadero cuando la cerradura está cerrada","da":"Sandt, når låsen er låst","ru":"Истина, когда замок закрыт","pl":"Adekwatne, kiedy zamek jest zablokowany"},"insights":true,"insightsTitleTrue":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane"},"insightsTitleFalse":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierta","da":"Ulåst","ru":"Открыто","pl":"Odblokowane"},"getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"locked_true","title":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrado","da":"Låst","ru":"Закрыто","pl":"Zablokowane"}},{"id":"locked_false","title":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierto","da":"Låst op","ru":"Открыто","pl":"Odblokowane"}}],"conditions":[{"id":"locked","title":{"en":"A lock is !{{locked|unlocked}}","nl":"Een slot is !{{vergrendeld|ontgrendeld}}","de":"Ein Schloss ist !{{verriegelt|entriegelt}}","fr":"Un verrou est !{{verrouillé|déverrouillé}}","it":"Una serratura è !{{chiusa|aperta}}","sv":"Ett lås är !{{låst|olåst}}","no":"En lås er !{{låst|ulåst}}","es":"Una cerradura está !{{cerrada|abierta}}","da":"En lås er blevet !{{låst|låst op}}","ru":"Замок !{{закрыт|открыт}}","pl":"Zamek jest !{{zablokowany|odblokowany}}"}}],"actions":[{"id":"lock","highlight":true,"title":{"en":"Lock","nl":"Vergrendel","de":"Verriegeln","fr":"Verrouiller","it":"Chiudi","sv":"Lås","no":"Lås","es":"Cerrar","da":"Lås","ru":"Закрыть","pl":"Zablokuj"}},{"id":"unlock","highlight":true,"title":{"en":"Unlock","nl":"Ontgrendel","de":"Entriegeln","fr":"Déverrouiller","it":"Apri","sv":"Lås upp","no":"Lås opp","es":"Abrir","da":"Lås op","ru":"Открыть","pl":"Odblokuj"}}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Battery","nl":"Accuniveau","de":"Batterie","fr":"Batterie","it":"Batteria","sv":"Batteri","no":"Batteri","es":"Batería","da":"Batteri","ru":"Аккумулятор","pl":"Bateria"},"units":{"en":"%"},"insights":true,"min":0,"max":100,"desc":{"en":"Battery charge in percentage (%)","nl":"Accuniveau in procenten (%)","de":"Batteriestand in Prozent (%)","fr":"Pourcentage de charge de la batterie (%)","it":"Percentuale di carica della batteria (%)","sv":"Batteriladdning i procent (%)","no":"Batterilading i prosent (%)","es":"Carga de la batería en porcentaje (%)","da":"Batteriniveau i procent (%)","ru":"Зарядка аккумулятора в процентах (%)","pl":"Naładowanie baterii w procentach (%)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"measure_battery_changed","title":{"en":"The battery level changed","nl":"Het accuniveau is veranderd","de":"Der Batteriestand hat sich geändert","fr":"Le niveau de la batterie a changé","it":"Il livello della batteria è cambiato","sv":"Batterinivån ändrades","no":"Batterinivået ble endret","es":"El nivel de la batería ha cambiado","da":"Batteriniveauet har ændret sig","ru":"Уровень аккумулятора изменен","pl":"Zmiana poziomu naładowania baterii"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":99}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"CO","nl":"CO","de":"CO","fr":"CO","it":"CO","sv":"CO","no":"CO","da":"CO","ru":"CO","pl":"CO"},"units":{"en":"ppm","ru":"ч./млн."},"insights":true,"desc":{"en":"CO in Parts-per-million (ppm)","nl":"CO deeltjes per miljoen (ppm)","de":"CO in Anteile pro Million (ppm)","fr":"Niveau de CO en parts par million (ppm)","it":"Livello di CO in parti per milione (ppm)","sv":"CO i partiklar-per-miljon (ppm)","no":"CO i partikler per million (ppm)","es":"CO en partes por millón (ppm)","da":"CO i partikler-per-million (ppm)","ru":"CO в частицах на миллион (ч./млн.)","pl":"Stężenie CO w części na milion (ppm)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co_changed","title":{"en":"The CO-level changed","nl":"Het CO niveau is veranderd","de":"Der CO-Gehalt hat sich geändert","fr":"Le niveau de CO a changé","it":"Il livello di CO è cambiato","sv":"CO-nivån ändrades","no":"CO-nivået ble endret","es":"El nivel de CO ha cambiado","da":"CO-niveauet har ændret sig","ru":"CO-уровень изменен","pl":"Zmiana poziomu stężenia CO"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"CO2","nl":"CO2","de":"CO2","fr":"CO2","it":"CO2","sv":"CO2","no":"CO2","da":"CO2","ru":"CO2","pl":"CO2"},"units":{"en":"ppm","ru":"ч./млн."},"insights":true,"desc":{"en":"CO2 in Parts-per-million (ppm)","nl":"CO2 deeltjes per miljoen (ppm)","de":"CO2 in Anteile pro Million (ppm)","fr":"Niveau de CO2 en parts par million (ppm)","it":"Livello di CO2 in parti per milione (ppm)","sv":"CO2 i partiklar-per-miljon (ppm)","no":"CO2 i partikler per million (ppm)","es":"CO2 en partes por millón (ppm)","da":"CO2 i partikler-per-million (ppm)","ru":"CO2 в частицах на миллион (ч./млн.)","pl":"Stężenie CO2 w części na milion (ppm)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co2_changed","title":{"en":"The CO2-level changed","nl":"Het CO2 niveau is veranderd","de":"Der CO2-Gehalt hat sich geändert","fr":"Le niveau de CO2 a changé","it":"Il livello di CO2 è cambiato","sv":"CO2-nivån ändrades","no":"CO2-nivet ble endret","es":"El nivel de CO2 ha cambiado","da":"CO2-niveauet har ændret sig","ru":"CO2-уровень изменен","pl":"Zmiana poziomu stężenia CO2"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Current","nl":"Stroom","de":"Strom","fr":"Courant","it":"Corrente","sv":"Ström","no":"Strøm","es":"Corriente","da":"Strøm","ru":"Текущее значение","pl":"Prąd"},"units":{"en":"A"},"insights":true,"desc":{"en":"Electric current (A)","nl":"Elektrische stroom (A)","de":"Elektrischer Strom (A)","fr":"Courant électrique (A)","it":"Corrente elettrica (A)","sv":"Elektrisk ström (A)","no":"Elektrisk strøm (A)","es":"Corriente eléctrica (A)","da":"Elektrisk strøm (A)","ru":"Электрический ток (А)","pl":"Prąd elektryczny (A)"},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_current_changed","title":{"en":"The electric current changed","nl":"De elektrische stroom is veranderd","de":"Der elektrische Strom hat sich geändert","fr":"Le courant électrique a changé","it":"La corrente elettrica è cambiata","sv":"Den elektriska strömmen ändrades","no":"Den elektriska strømmen ble endret","es":"La corriente eléctrica ha cambiado","da":"Den elektriske strøm ændrede sig","ru":"Электрический ток изменился","pl":"Zmiana prądu elektrycznego"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Gust angle","nl":"Windstoot richting","de":"Böenrichtung","fr":"Direction d\'un coup de vent","it":"Angolo delle raffiche","sv":"Vindriktning","no":"Vindretning","es":"Dirección del aire","da":"Vindretning","ru":"Угол порывов ветра","pl":"Kąt porywu wiatru"},"units":{"en":"°"},"insights":true,"desc":{"en":"Gust angle in degrees (°)","nl":"Windstoot richting in graden (°)","de":"Böenrichtung in Grad (°)","fr":"Direction du coup de vent en degrés (°)","it":"Angolo delle raffiche in gradi (°)","sv":"Vindriktning i grader (°)","no":"Vindretning i grader (°)","es":"Dirección del aire en grados (°)","da":"Vindretning i grader (°)","ru":"Угол порывов ветра в градусах (°)","pl":"Kąt porywu wiatru w stopniach (°)"},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_angle_changed","title":{"en":"The gust angle changed","nl":"Windstoot richting is veranderd","de":"Die Böenrichtung hat sich geändert","fr":"Direction du coup de vent a changé","it":"L\'angolo delle raffiche è cambiato","sv":"Vindriktningen har ändrats","no":"Vindretningen er endret","es":"La dirección del aire ha cambiado","da":"Vindretningen skiftede","ru":"Угол порывов ветра изменился","pl":"Zmiana kąta porywu wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Gust strength","nl":"Windstoot kracht","de":"Böenstärke","fr":"Force d\'un coup de vent","it":"Intensità delle raffiche","sv":"Vindstyrka","no":"Vindstyrke","es":"Fuerza del aire","da":"Vindstyrke","ru":"Сила порывов ветра","pl":"Siła porywu wiatru"},"units":{"en":"km/h","ru":"км/ч"},"insights":true,"desc":{"en":"Gust strength in kilometer per hour (km/h)","nl":"Windstoot snelheid in kilometer per uur (km/u)","de":"Böenstärke in Kilometer pro Stunde (km/h)","fr":"Force du coup de vent en kilomètres par heure (km/h)","it":"Intensità delle raffiche in chilometri orari (km/h)","sv":"Vindstyrka i kilometer per timme (km/h)","no":"Vindstyrke i kilometer per time (km/t)","es":"Fuerza del aire en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила порывов ветра в км в час (км/ч)","pl":"Siła porywu wiatru w kilometrach na godzinę (km/h)"},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_strength_changed","title":{"en":"The gust strength changed","nl":"De windstoot snelheid is veranderd","de":"Die Böenstärke hat sich geändert","fr":"La force du coup de vent a changé","it":"L\'intensità delle raffiche è cambiata","sv":"Vindstyrkan ändrades","no":"Vindstyrken ble endret","es":"La fuerza del aire ha cambiado","da":"Vindstyrken skiftede","ru":"Сила порывов ветра изменилась","pl":"Zmiana siły porywu wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Humidity","nl":"Luchtvochtigheid","de":"Luftfeuchtigkeit","fr":"Humidité","it":"Umidità","sv":"Luftfuktighet","no":"Luftfuktighet","es":"Humedad","da":"Luftfugtighed","ru":"Влажность","pl":"Wilgotność"},"units":{"en":"%"},"insights":true,"desc":{"en":"Humidity in percent (%)","nl":"Relatieve luchtvochtigheid (%)","de":"Luftfeuchtigkeit in Prozent (%)","fr":"Humidité en pourcentage (%)","it":"Umidità in percentuale (%)","sv":"Luftfuktighet i procent (%)","no":"Luftfuktighet i prosent (%)","es":"Humedad en porcentaje (%)","da":"Luftfugtighed i procent (%)","ru":"Влажность в процентах (%)","pl":"Wilgotność w procentach (%)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_humidity_changed","title":{"en":"The humidity changed","nl":"De luchtvochtigheid is veranderd","de":"Die Luftfeuchtigkeit hat sich geändert","fr":"L\'humidité a changé","it":"L\'umidità è cambiata","sv":"Luftfuktigheten ändrades","no":"Luftfuktigheten ble endret","es":"La humedad ha cambiado","da":"Luftfugtigheden ændrede sig","ru":"Влажность изменилась","pl":"Zmiana wilgotności"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":35}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Luminance","nl":"Helderheid","de":"Helligkeit","fr":"Luminance","it":"Luminanza","sv":"Luminans","no":"Luminans","es":"Luminancia","da":"Luminans","ru":"Яркость","pl":"Luminacja"},"units":{"en":"lx","ru":"лк"},"insights":true,"desc":{"en":"Luminance in Lux (lx)","nl":"Helderheid in Lux (lx)","de":"Leuchtkraft in Lux (lx)","fr":"Luminance en Lux (lx)","it":"Luminanza in Lux (lx)","sv":"Luminans i Lux (lx)","no":"Luminans i Lux (lx)","es":"Luminancia en Lux (lx)","da":"Luminans i Lux (lx)","ru":"Яркость в люксах (лк)","pl":"Luminacja w luksach (lx)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_luminance_changed","highlight":true,"title":{"en":"The luminance changed","nl":"De helderheid is veranderd","de":"Die Helligkeit hat sich geändert","fr":"La luminance a changé","it":"La luminanza è cambiata","sv":"Luminansen ändrades","no":"Luminansen ble endret","es":"La luminancia ha cambiado","da":"Luminansen ændrede sig","ru":"Яркость изменилась","pl":"Zmiana luminacji"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Noise","nl":"Geluid","de":"Lärm","fr":"Bruit","it":"Rumore","sv":"Buller","no":"Støy","es":"Ruido","ru":"Шум","pl":"Hałas"},"units":{"en":"dB","ru":"дБ"},"insights":true,"desc":{"en":"Noise in decibel (dB)","nl":"Geluid in decibel (dB)","de":"Lärm in Dezibel (dB)","fr":"Bruit en decibel (dB)","it":"Rumore in decibel (dB)","sv":"Buller i decibel (dB)","no":"Støy i decibel (dB)","es":"Ruido en decibelios (dB)","da":"Støj i decibel (dB)","ru":"Шум в децибелах (дБ)","pl":"Poziom hałasu w decybelach (dB)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_noise_changed","title":{"en":"The noise changed","nl":"Het geluidsniveau is veranderd","de":"Der Lärm hat sich geändert","fr":"Le bruit a changé","it":"Il rumore è cambiato","sv":"Bullret ändrades","no":"Støyen ble endret","es":"El ruido ha cambiado","da":"Støjniveauet ændrede sig","ru":"Шум изменился","pl":"Zmiana poziomu hałasu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":43}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"PM2.5","nl":"PM2.5","de":"PM2.5","fr":"PM2.5","it":"PM2.5","sv":"PM2.5","no":"PM2.5","es":"PM2,5","ru":"ТЧ 2.5","pl":"PM2.5"},"units":{"en":"μg/m³","ru":"мкг/м³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Deeltjesvormige luchtverontreiniging (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Atmosfæriske partikler (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Атмосферные твердые частицы (мкг/м³)","pl":"Pył zawieszony (μg/m³)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm25_changed","title":{"en":"The PM2.5 value has changed","nl":"De PM2.5 waarde is veranderd","de":"Der PM2.5-Wert hat sich geändert","fr":"La valeur PM2.5 a changé","it":"Il valore di PM2.5 è cambiato","sv":"PM2.5-värdet har ändrats","no":"PM2.5-verdien er endret","es":"El valor de PM2,5 ha cambiado","da":"PM2.5-værdien har ændret sig","ru":"Значение ТЧ 2.5 изменилось","pl":"Zmiana poziomu stężenia PM2.5"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Power","nl":"Vermogen","de":"Leistung","fr":"Puissance","it":"Potenza","sv":"Effekt","no":"Effekt","es":"Potencia","da":"Effekt","ru":"Электроэнергия","pl":"Moc"},"units":{"en":"W","ru":"Вт"},"insights":true,"desc":{"en":"Power in watt (W)","nl":"Vermogen in watt (W)","de":"Leistung in Watt (W)","fr":"Puissance en watt (W)","it":"Potenza in watt (W)","sv":"Effekt i watt (W)","no":"Effekt i watt (W)","es":"Potencia en vatios (W)","da":"Effekt i watt (W)","ru":"Электроэнергия (Вт)","pl":"Moc w watach (W)"},"options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii."}}},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_power_changed","highlight":true,"title":{"en":"The power changed","nl":"Het vermogen is veranderd","de":"Der Verbrauch hat sich gändert","fr":"L\'énergie a changé","it":"L\'energia è cambiata","sv":"Strömmen ändrades","no":"Strømmen ble endret","es":"La potencia ha cambiado","da":"Strømmen ændrede sig","ru":"Электроэнергия изменена","pl":"Zmiana mocy"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Pressure","nl":"Druk","de":"Druck","fr":"Pression","it":"Pressione","sv":"Tryck","no":"Trykk","es":"Presión","da":"Tryk","ru":"Давление","pl":"Ciśnienie"},"units":{"en":"mbar","ru":"мбар"},"insights":true,"desc":{"en":"Pressure in millibar (mbar)","nl":"Druk in millibar (mbar)","de":"Druck in Millibar (mbar)","fr":"Pression en millibar (mbar)","it":"Pressione in millibar (mbar)","sv":"Tryck i millibar (mbar)","no":"Trykk i millibar (mbar)","es":"Presión en milibares (mbar)","da":"Tryk i millibar (mbar)","ru":"Давление (мбар)","pl":"Ciśnienie w milibarach (mbar)"},"chartType":"spline","decimals":0,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pressure_changed","title":{"en":"The pressure changed","nl":"De druk is veranderd","de":"Der Druck hat sich geändert","fr":"La pression a changé","it":"La pressione è cambiata","sv":"Trycket ändrades","no":"Trykket ble endret","es":"La presión ha cambiado","da":"Trykkey ændrede sig","ru":"Давление изменилось","pl":"Zmiana ciśnienia"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1000}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Rain","nl":"Regen","de":"Niederschlag","fr":"Pluie","it":"Pioggia","sv":"Regn","no":"Regn","es":"Lluvia","da":"Regn","ru":"Дождь","pl":"Deszcz"},"units":{"en":"mm","ru":"мм"},"insights":true,"desc":{"en":"Rain in millimeter (mm)","nl":"Regen in millimeter (mm)","de":"Niederschlag in Millimeter (mm)","fr":"Pluie en millimètres (mm)","it":"Pioggia in millimetri (mm)","sv":"Regn i millimeter (mm)","no":"Regn i millimeter (mm)","es":"Lluvia en milímetros (mm)","da":"Regn i millimeter (mm)","ru":"Дождь в миллиметрах (мм)","pl":"Deszcz w milimetrach (mm)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rain_changed","title":{"en":"The rain changed","nl":"De regen is veranderd","de":"Der Niederschlag hat sich geändert","fr":"La pluie a changé","it":"La pioggia è cambiata","sv":"Regnet ändrades","no":"Regnet ble endret","es":"La lluvia ha cambiado","da":"Regnen ændrede sig","ru":"Дождь изменился","pl":"Zmiana poziomu deszczu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":3}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura"},"units":{"en":"°C"},"insights":true,"desc":{"en":"Temperature in degrees Celsius (°C)","nl":"Temperatuur in graden Celsius (°C)","de":"Temperatur in Grad Celsius (°C)","fr":"Température en degrés Celsius (°C)","it":"Temperatura in gradi Celsius (°C)","sv":"Temperatur i grader Celsius (°C)","no":"Temperatur i grader Celsius (°C)","es":"Temperatura en grados Celsius (°C)","da":"Temperatur i Celsius (°C)","ru":"Температура в градусах Цельсия (°C)","pl":"Temperatura w stopniach Celsjusza (°C)"},"decimals":2,"chartType":"spline","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_temperature_changed","highlight":true,"title":{"en":"The temperature changed","nl":"De temperatuur is veranderd","de":"Die Temperatur hat sich geändert","fr":"La température a changé","it":"La temperatura è cambiata","sv":"Temperaturen ändrades","no":"Temperaturen ble endret","es":"La temperatura ha cambiado","da":"Temperaturen ændrede sig","ru":"Температура изменена","pl":"Zmiana temperatury"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Ultraviolet","nl":"Ultraviolet","de":"Ultraviolett","fr":"Ultraviolet","it":"Ultravioletto","sv":"Ultraviolett","no":"Ultrafiolett","es":"Ultravioleta","da":"Ultraviolet","ru":"Ультрафиолетовое излучение","pl":"Promieniowanie UV"},"units":{"en":"UVI","ru":"Индекс УФ-излучения"},"desc":{"en":"Ultraviolet in UV index (UVI)","de":"Ultraviolett in UV-Index (UVI)","fr":"Ultraviolet en UV-Index (UVI)","it":"Ultravioletto nell\'indice UV (UVI)","sv":"Ultraviolett i UV-Index (UVI)","no":"Ultrafiolett på UV-indeks (UVI)","es":"Ultravioleta en índice UV (UV)","da":"Ultraviolet i UV-indeks (UV)","ru":"Индекс ультрафиолетового излучения","pl":"Promieniowanie UV w indeksie UV (UVI)"},"insights":true,"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ultraviolet_changed","title":{"en":"The ultraviolet value changed","nl":"De ultraviolet waarde is veranderd","de":"Der Ultraviolett-Wert hat sich geändert","fr":"La valeur d\'ultraviolet a changé","it":"Il valore dell\'ultravioletto è cambiato","sv":"Ultraviolettvärdet ändrades","no":"Ultrafiolettverdien ble endret","es":"La radiación ultravioleta ha cambiado","da":"UV-værdien ændrede sig","ru":"Значение УФ-излучения изменилось","pl":"Zmiana poziomu promieniowania UV"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Voltage","nl":"Voltage","de":"Spannung","fr":"Voltage","it":"Voltaggio","sv":"Spänning","no":"Spenning","es":"Tensión","da":"Elektrisk spænding","ru":"Вольтаж","pl":"Napięcie"},"units":{"en":"V","ru":"Вольт"},"desc":{"en":"Voltage (V)","nl":"Voltage (V)","de":"Spannung (V)","fr":"Voltage (V)","it":"Voltaggio (V)","sv":"Spänning (V)","no":"Spenning (V)","es":"Tensión (V)","da":"Volt (V)","ru":"Вольтаж (Вольт)","pl":"Napięcie (V)"},"insights":true,"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_voltage_changed","title":{"en":"The voltage changed","nl":"Het voltage is veranderd","de":"Die Spannung hat sich geändert","fr":"Le voltage a changé","it":"Il voltaggio è cambiato","sv":"Spänningen ändrades","no":"Spenningen ble endret","es":"La tensión ha cambiado","da":"Den elektriske spænding ændrede sig","ru":"Вольтаж изменен","pl":"Zmiana poziomu napięcia"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Water flow","nl":"Waterdoorstroming","de":"Wasserfluss","fr":"Débit d\'eau","it":"Flusso d\'acqua","sv":"Vattenflöde","no":"Vannstrøm","es":"Caudal del agua","da":"Vandstrøm","ru":"Поток воды","pl":"Poziom przepływu wody"},"units":{"en":"L/min","ru":"Л/мин"},"desc":{"en":"Water flow in liters per minute (L/min)","nl":"Waterdoorstroming in liters per minuut (L/min)","de":"Wasserfluss in Liter pro Minute (L/min)","fr":"Débit d\'eau en litres par minute (L/min)","it":"Flusso d\'acqua in litri al minuto (L/min)","sv":"Vattenflöde i liter per minut (L/min)","no":"Vannstrøm i liter per minutt (L/min)","es":"Caudal del agua en litros por minuto (L/min)","da":"Vandstrøm i liter per minut (L/min)","ru":"Поток воды в литрах в минуту (л/мин)","pl":"Poziom przepływu wody w litrach na minutę (L/min)"},"insights":true,"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_water_changed","title":{"en":"The waterflow has changed","nl":"De waterstroom veranderd","de":"Der Wasserfluss hat sich geändert","fr":"Le débit d\'eau a changé","it":"Il flusso d\'acqua è cambiato","sv":"Vattenflödet ändrades","no":"Vannstrømmen ble endret","es":"El caudal del agua ha cambiado","da":"Vandstrømmen har ændret sig","ru":"Поток воды изменился","pl":"Zmiana poziomu przepływu wody"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Wind angle","nl":"Windrichting","de":"Windrichtung","fr":"Angle du vent","it":"Angolo del vento","sv":"Vindvinkel","no":"Vindvinkel","es":"Ángulo del viento","da":"Vindvinkel","ru":"Угол ветра","pl":"Kąt wiatru"},"units":{"en":"°"},"desc":{"en":"Wind angle in degrees (°)","nl":"Windrichting in graden (°)","de":"Windrichtung in Grad (°)","fr":"Angle du vent en degrés (°)","it":"Angolo del vento in gradi (°)","sv":"Vindvinkel i grader (°)","no":"Vindvinkel i grader (°)","es":"Ángulo del viento en grados (°)","da":"Vindvinkel i grader (°)","ru":"Угол ветра в градусах (°)","pl":"Kąt wiatru w stopniach (°)"},"insights":true,"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_angle_changed","title":{"en":"The wind angle changed","nl":"De windrichting is veranderd","de":"Die Windrichtung hat sich geändert","fr":"L\'angle du vent a changé","it":"L\'angolo del vento è cambiato","sv":"Vindvinkel ändrad","no":"Vindvinkel er endret","es":"El ángulo del viento ha cambiado","da":"Vindvinklen er skiftet","ru":"Угол наклона ветра изменился","pl":"Zmiana kąta wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Wind strength","nl":"Windsnelheid","de":"Windstärke","fr":"Force du vent","it":"Forza del vento","sv":"Vindstyrka","no":"Vindstyrke","es":"Fuerza del viento","da":"Vindstyrke","ru":"Сила ветра","pl":"Siła wiatru"},"units":{"en":"km/h","ru":"км/ч"},"desc":{"en":"Wind Strength in kilometer per hour (km/h)","nl":"Windsnelheid in kilometer per uur (km/u)","de":"Windstärke in Kilometer pro Stunde (km/h)","fr":"Force du vent en kilomètres par heure (km/h)","it":"Forza del vento in chilometri orari (km/h)","sv":"Vindstyrka i kilometer per timme (km/h)","no":"Vindstyrke i kilometer per time (km/t)","es":"La fuerza del viento en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила ветра в км в час (км/ч)","pl":"Siła wiatru w kilometrach na godzinę (km/h)"},"insights":true,"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_strength_changed","title":{"en":"The wind strength changed","nl":"De windsnelheid is veranderd","de":"Die Windstärke hat sich geändert","fr":"La force du vent a changé","it":"La forza del vento è cambiata","sv":"Vindstyrkan ändrades","no":"Vindstyrken ble endret","es":"La fuerza del viento ha cambiado","da":"Vindstyrken ændrede sig","ru":"Сила ветра изменилась","pl":"Zmiana siły wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Gas meter","nl":"Gasmeter","de":"Gaszähler","fr":"Compteur de gaz","it":"Contatore del gas","sv":"Gasmätare","no":"Gassmåler","es":"Contador de gas","da":"Gasmåler","ru":"Счетчик газа","pl":"Licznik gazowy"},"min":0,"decimals":2,"chartType":"spline","units":{"en":"m³","ru":"м³"},"desc":{"en":"Gas usage in cubic meter (m³)","nl":"Gas gebruik in kubieke meter (m³)","de":"Gasverbrauch in Kubikmeter (m³)","fr":"Consommation de gaz en mètres cubes (m³)","it":"Consumo di gas in metri cubi (m³)","sv":"Gasanvändning i kubikmeter (m³)","no":"Gassforbruk i kubikkmeter (m³)","es":"Consumo de gas en metros cúbicos (m³)","da":"Gasforbrug i kubikmeter (m³)","ru":"Использование газа в кубометрах (м³)","pl":"Zużycie gazu w metrach sześciennych (m³)"},"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_gas_changed","title":{"en":"The gas meter changed","nl":"De gasmeter is veranderd","de":"Der Gaszähler hat sich geändert","fr":"Le compteur de gaz a changé","it":"Il contatore del gas è cambiato","sv":"Gasmätaren ändrades","no":"Gassmåleren ble endret","es":"El contador de gas ha cambiado","da":"Gasmåleren ændrede sig","ru":"Измерения счетчика газа изменились","pl":"Zmiana w liczniku gazowym"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Energy","nl":"Energie","de":"Energie","fr":"Énergie","it":"Energia","sv":"Energi","no":"Energi","es":"Energía","da":"Energi","ru":"Электроэнергия","pl":"Energia"},"decimals":2,"units":{"en":"kWh","ru":"кВтч"},"desc":{"en":"Energy usage in kilowatt-hour (kWh)","nl":"Energie verbruik in kilowattuur (kWh)","de":"Energieverbrauch in Kilowattstunde (kWh)","fr":"Consommation d\'énergie en kilowatt-heure (kWh)","it":"Consumo energetico in kilowattora (kWh)","sv":"Energianvändning i kilowattimmar (kWh)","no":"Energiforbruk i kilowattimer (kWh)","es":"Uso de energía en kilovatio hora (kWh)","da":"Energiforbrug i kilowattime (kWh)","ru":"Энергопотребление в киловатт-часах (кВтч)","pl":"Zużycie energii w kilowatogodzinach (kWh)"},"chartType":"spline","options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii."}}},"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_power_changed","title":{"en":"The power meter changed","nl":"De stroommeter is veranderd","de":"Der Gesamtverbrauch hat sich geändert","fr":"Le compteur électrique a changé","it":"Il misuratore di potenza è cambiato","sv":"Elmätaren ändrades","no":"Strømmåleren ble endret","es":"El contador de energía ha cambiado","da":"Strømmåleren ændrede sig","ru":"Измерения счетчика электроэнергии изменились","pl":"Zmiana w liczniku mocy"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Rain meter","nl":"Regenmeter","de":"Regenzähler","fr":"Compteur de pluie","it":"Misuratore di pioggia","sv":"Regnmätare","no":"Regnmåler","es":"Pluviómetro","da":"Regnmåler","ru":"Счетчик дождя","pl":"Licznik deszczu"},"units":{"en":"m³","ru":"м³"},"chartType":"spline","desc":{"en":"Rain in cubic meter (m³)","nl":"Regen in kubieke meter (m³)","de":"Regen in Kubikmeter (m³)","fr":"Pluie en mètres cubes (m³)","it":"Pioggia in metri cubi (m³)","sv":"Regn i kubikmeter (m³)","no":"Regn i kubikkmeter (m³)","es":"Lluvia en metros cúbicos (m³)","da":"Regn i kubikmeter (m³)","ru":"Дождь в кубометрах (м³)","pl":"Deszcz w metrach sześciennych (m³)"},"decimals":2,"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_rain_changed","title":{"en":"The rain meter changed","nl":"De regenmeter is veranderd","de":"Der Regenzähler hat sich geändert","fr":"Le compteur de pluie a changé","it":"Il misuratore di pioggia è cambiato","sv":"Regnmätaren ändrades","no":"Regnmåleren ble endret","es":"El pluviómetro ha cambiado","da":"Regnmåleren ændrede sig","ru":"Измерения дождя изменились","pl":"Zmiana w liczniku deszczu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Water meter","nl":"Watermeter","de":"Wasserzähler","fr":"Compteur d\'eau","it":"Contatore dell\'acqua","sv":"Vattenmätare","no":"Vannmåler","es":"Contador de agua","da":"Vandmåler","ru":"Счетчик воды","pl":"Licznik wody"},"decimals":3,"min":0,"units":{"en":"m³","ru":"м³"},"chartType":"spline","desc":{"en":"Water usage in cubic meter (m³)","nl":"Water gebruik in kubieke meter (m³)","de":"Wasserverbrauch in Kubikmeter (m³)","fr":"Consommation d\'eau en mètres cubes (m³)","it":"Utilizzo di acqua in metri cubi (m³)","sv":"Vattenanvändning i kubikmeter (m³)","no":"Vannforbruk i kubikkmeter (m³)","es":"Consumo de agua en metros cúbicos (m³)","da":"Vandforbrug i kubikmeter (m³)","ru":"Использование воды в кубометрах (м³)","pl":"Zużycie wody w metrach sześciennych (m³)"},"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_water_changed","title":{"en":"The water meter changed","nl":"De watermeter is veranderd","de":"Der Wasserzähler hat sich geändert","fr":"Le compteur d\'eau a changé","it":"Il contatore dell\'acqua è cambiato","sv":"Vattenmätaren ändrades","no":"Vannmåleren ble endret","es":"El contador de agua ha cambiado","da":"Vandmåleren ændrede sig","ru":"Измерения счетчика воды изменились","pl":"Zmiana w liczniku wody"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Slått på","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone"},"getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Slått på","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone"},"insightsTitleFalse":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Slått av","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone"},"options":{"setOnDim":{"type":"boolean","default":true,"desc":{"en":"When a device has both an `onoff` and `dim` capability, and Homey wants to turn the device on AND to a specific dim value, set this capability to `false` to prevent Homey from sending a set command.","de":"Wenn ein Gerät sowohl \'An/Aus\'- als auch \'Dimm\'-Fähigkeit hat und Homey das Gerät anschalten UND auf einen bestimmten Wert dimmen will, setze diese Fähigkeit auf \'false\', um Homey am Senden eines Setzen-Befehls zu hindern.","fr":"Quand un appareil peut `allumer/éteindre` et `estomper`, et que Homey veut allumer l\'appareil ET sur une valeur d\'estompage spécifique, définissez cette capacité sur `faux` pour empêcher Homey d\'envoyer une commande de définition.","it":"Quando un dispositivo può \'accendersi\' e \'attenuarsi\' e Homey desidera attivare il dispositivo E definire un valore specifico, imposta questa funzione su \'falso\' per impedire a Homey di inviare un comando di definizione.","sv":"När en enhet har både en `på/av`- och `dim`-funktionalitet och Homey vill slå på enheten OCH till ett specifikt dimvärde, sätt den här funktionen till `falsk` för att förhindra att Homey skickar ett inställningskommando.","no":"Når en enhet har både en `på/av`- og en `dempe`-funksjon og Homey vil slå på enheten OG sette dempingen til en spesifikk verdi, sett denne egenskapen til `usann` for å forhindre at Homey sender en innstillingskommando.","es":"Cuando un dispositivo tiene tanto la capacidad \'encender/apagar\' como la de \'intensidad de la luz\', y Homey quiere encender el dispositivo Y ajustar una intensidad concreta, configura esta capacidad como \'falso\' para evitar que Homey envíe un comando de configuración.","da":"Når en enhed har både en `tænd/sluk`- og en `dæmpe`-funktion, og Homey vil tænde for enheden OG indstille til en specifik dæmpeværdi, skal denne funktion indstilles til `falsk` for at forhindre, at Homey sender en indstillingskommando.","ru":"Когда устройство имеет функции `onoff` и `dim`, и Homey хочет включить устройство ТАКЖЕ с определенным значением яркости, установите для этой функции значение `false`, чтобы Homey не отправил команду на установку.","pl":"Jeśli urządzenie ma zdolności „wł.wył.” i „przygaś”, a urządzenie Homey chce włączyć produkt ORAZ ustawić konkretną wartość przygaszenia, ustaw tę zdolność jako „nieadekwatne” – w ten sposób Homey nie będzie wysyłać ustawionych poleceń."}},"greyout":{"type":"boolean","default":false,"desc":{"en":"When this capability is false, give a visual hint to greyout the device.","de":"wenn diese Fähigkeit \'false\' ist, gibt es einen visuellenen Hinweis, um das Gerät auszugrauen.","fr":"Quand cette capacité est fausse, donnez un indice visuel pour griser cet appareil.","it":"Quando questa funzione è impostata su falso, dai un indizio visivo per far apparire questo dispositivo in grigio.","sv":"När den här funktionen är falsk, ge en ett visuellt tips för att gråa ut enheten.","no":"Når denne egenskapen er usann, gi et visuelt tips for å vise enheten i grått.","es":"Cuando esta capacidad es falsa, da una indicación visual para poner en gris el dispositivo.","da":"Når denne funktion er falsk, skal du give et visuelt tip for at vise enheden i grå.","ru":"Когда функция ложна, установите визуальную подсказку, чтобы выделить устройство серым цветом.","pl":"Jeśli zdolność jest nieadekwatna, użyj wizualnej wskazówki, aby wyświetlić urządzenie na szaro."}}},"uiComponent":"toggle","uiQuickAction":true,"$flow":{"triggers":[{"id":"onoff_true","highlight":true,"title":{"en":"Turned on","nl":"Aangezet ","de":"Angeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Slått på","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone"}},{"id":"onoff_false","highlight":true,"title":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Slått av","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone"}}],"conditions":[{"id":"on","title":{"en":"Is turned !{{on|off}}","nl":"Is !{{aan|uit}}","de":"Ist !{{an|aus}}","fr":"Est !{{activé|désactivé}}","it":"È !{{attivato|disattivato}}","sv":"Är !{{på|av}}","no":"Er slått !{{på|av}}","es":"Está !{{encendido|apagado}}","da":"Er !{{tændt|slukket}}","ru":"!{{Вкл.|Выкл.}}","pl":"Jest !{{włączone|wyłączone}}"}},{"id":"open","title":{"en":"Is !{{open|closed}}","nl":"Is !{{geopend|gesloten}}","de":"Ist !{{offen|geschlossen}}","fr":"Est !{{ouvert|fermé}}","it":"È !{{aperto|chiuso}}","sv":"Är !{{öppen|stängd}}","no":"Er !{{åpen|lukket}}","es":"Está !{{abierto|cerrado}}","da":"Er !{{åben|lukket}}","ru":"!{{Открыто|Закрыто}}","pl":"Jest !{{otwarte|zamknięte}}"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}],"actions":[{"id":"on","highlight":true,"title":{"en":"Turn on","nl":"Zet aan","de":"Einschalten","fr":"Activer","it":"Attiva","sv":"Aktivera","no":"Slå på","es":"Encender","da":"Tændt","ru":"Включить","pl":"Włącz"}},{"id":"off","highlight":true,"title":{"en":"Turn off","nl":"Zet uit","de":"Ausschalten","fr":"Désactiver","it":"Disattiva","sv":"stäng av","no":"Slå av","es":"Apagar","da":"Slukket","ru":"Выключить","pl":"Wyłącz"}},{"id":"toggle","title":{"en":"Toggle on or off","nl":"Schakel aan of uit","de":"Ein- oder ausschalten","fr":"Alterner activé ou désactivé","it":"Attiva o disattiva","sv":"Växla på och av","no":"Veksle mellom på og av","es":"Encender o apagar","da":"Tænd eller sluk","ru":"Переключатель включить/выключить","pl":"Przełącz na wł. lub wył."}},{"id":"open","title":{"en":"Open curtain or blind","nl":"Open de gordijnen","de":"Vorhang oder Rollladen öffnen","fr":"Ouvrir rideau ou store","it":"Apri la tenda o le persiane","sv":"Öppna gardin eller persienn","no":"Åpne gardin eller persienne","es":"Abrir cortina o persiana","da":"Åbn gardiner eller persienner","ru":"Открыть штору или жалюзи","pl":"Rozchyl zasłonę lub roletę"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}},{"id":"close","title":{"en":"Close curtain or blind","nl":"Sluit de gordijnen","de":"Vorhang oder Rollladen schließen","fr":"Fermer rideau ou store","it":"Chiudi la tenda o le persiane","sv":"Stäng gardin eller persienn","no":"Lukk gardin eller persienne","es":"Cerrar cortina o persiana","da":"Luk gardiner eller persienner","ru":"Закрыть штору или жалюзи","pl":"Zasuń zasłonę lub roletę"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Album","nl":"Album","de":"Album","fr":"Album","it":"Album","sv":"Album","no":"Album","es":"Álbum","da":"Album","ru":"Альбом","pl":"Album"},"type":"string","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_album_changed","title":{"en":"The album changed","nl":"Het album is veranderd","de":"Das Album hat sich geändert","fr":"L\'album a été modifié","it":"L\'album è cambiato","sv":"Albumet ändrades","no":"Albumet ble endret","es":"El álbum ha cambiado","da":"Albummet skiftede","ru":"Альбом изменен","pl":"Zmiana albumu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Life Lessons"}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Artist","nl":"Artiest","de":"Künstler","fr":"Artiste","it":"Artista","sv":"Artist","no":"Artist","es":"Artista","da":"Kunstner","ru":"Исполнитель","pl":"Wykonawca"},"type":"string","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_artist_changed","title":{"en":"The artist changed","nl":"De artiest is veranderd","de":"Der Künstler hat sich verändert","fr":"L\'artiste a été modifié","it":"L\'artista è cambiato","sv":"Artisten ändrades","no":"Artisten ble endret","es":"El artista ha cambiado","da":"Kunstneren skiftede","ru":"Исполнитель изменен","pl":"Zmiana wykonawcy"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Johnny S."}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Duration","nl":"Lengte","de":"Länge","fr":"Durée","it":"Durata","sv":"Längd","no":"Varighet","es":"Duración","da":"Varighed","ru":"Продолжительность","pl":"Czas trwania"},"type":"number","getable":true,"setable":false,"uiComponent":"media"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej"},"type":"boolean","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"next","title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Playing","nl":"Afspelen","de":"Abspielen","fr":"Lire","it":"In riproduzione","sv":"Spelas","no":"Avspilles","es":"Reproduciendo","da":"Spiller","ru":"Воспроизведение","pl":"Odtwarzanie"},"type":"boolean","getable":true,"setable":true,"uiComponent":"media","uiQuickAction":true,"$flow":{"triggers":[{"id":"speaker_playing_true","title":{"en":"Started playing","nl":"Begint af te spelen","de":"Begann zu spielen","fr":"Lecture démarrée","it":"Riproduzione avviata","sv":"Började spela","no":"Startet spilling","es":"Reproducción iniciada","da":"Begyndte at spille","ru":"Воспроизведение началось","pl":"Odtwarzanie rozpoczęte"}},{"id":"speaker_playing_false","title":{"en":"Stopped playing","nl":"Gestopt met afspelen","de":"Hörte auf zu spielen","fr":"Lecture stoppée","it":"Riproduzione interrotta","sv":"Slutade spela","no":"Stanset spilling","es":"Reproducción detenida","da":"Stoppede med at spille","ru":"Воспроизведение приостановлено","pl":"Odtwarzanie zatrzymane"}}],"conditions":[{"id":"is_playing","title":{"en":"Is !{{|not}} playing","nl":"Is !{{|niet}} aan het afspelen","de":"Wird !{{|nicht}} abgespielt","fr":"!{{Est|N\'est pas}} en cours de lecture","it":"!{{È|Non è}} in riproduzione","sv":"Spelas !{{|inte}}","no":"Avspilles !{{|ikke}}","es":"!{{Se está|No se está}} reproduciendo","da":"Spiller !{{|ikke}}","ru":"!{{|не}} воспроизводится","pl":"!{Trwa{|nie trwa}} odtwarzanie"}}],"actions":[{"id":"play","highlight":true,"title":{"en":"Play","nl":"Speel af","de":"Play","fr":"Lire","it":"Riproduci","sv":"Spela","no":"Spill av","es":"Reproducir","da":"Afspil","ru":"Воспроизвести","pl":"Odtwórz"}},{"id":"pause","highlight":true,"title":{"en":"Pause","nl":"Pauzeer","de":"Pause","fr":"Pause","it":"Pausa","sv":"Pausa","no":"Pause","es":"Pausa","da":"Pause","ru":"Пауза","pl":"Pauza"}},{"id":"toggle_playing","title":{"en":"Toggle Play/Pause","nl":"Toggle Afspelen/Pauze","de":"Play/Pause umschalten","fr":"Alterner Lire/Pause","it":"Alterna riproduzione/pausa","sv":"Växla spela/pausa","no":"Veksle mellom avspilling/pause","es":"Reproducir/Pausar","da":"Skift mellem Afspil/Pause","ru":"Переключатель Воспроизвести/Пауза","pl":"Przełącz na Odtwórz/Pauza"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja"},"type":"number","getable":true,"setable":false,"uiComponent":"media"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć"},"type":"boolean","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"prev","title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Repeat","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz"},"type":"enum","values":[{"id":"none","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Arrêt","it":"Spegni","sv":"Av","no":"Av","es":"Apagar","da":"Fra","ru":"выкл","pl":"wył"}},{"id":"track","title":{"en":"Repeat Track","de":"Titel wiederholen","fr":"Répéter le titre","it":"Ripeti traccia","sv":"Upprepa spår","no":"Gjenta spor","es":"Repetir pista","da":"Gentag spor","ru":"Повторить трек","pl":"Powtórz utwór"}},{"id":"playlist","title":{"en":"Repeat Playlist","de":"Playlist wiederholen","fr":"Répéter la playlist","it":"Ripeti playlist","sv":"Upprepa spellista","no":"Gjenta spilleliste","es":"Repetir lista de reproducción","da":"Gentag afspilningsliste","ru":"Повторить плейлист","pl":"Powtórz składankę"}}],"getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_repeat","title":{"en":"Repeat","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz"},"args":[{"name":"value","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Shuffle","de":"Zufallswiedergabe","fr":"Aléatoire","it":"Ordine casuale","sv":"Blanda","no":"Tilfeldig rekkefølge","es":"Aleatorio","da":"Shuffle","ru":"В случайном порядке","pl":"Odtwarzaj losowo"},"type":"boolean","getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_shuffle_true","title":{"en":"Shuffle on","nl":"Shuffle aan","de":"Zufallswiedergabe an","fr":"Aléatoire activée","it":"Ordine casuale attivato","sv":"Blanda på","no":"Tilfeldig rekkefølge på","es":"Orden aleatorio activado","da":"Shufflet slået til","ru":"В случайном порядке","pl":"Włącz odtwarzanie losowe"}},{"id":"set_shuffle_false","title":{"en":"Shuffle off","nl":"Shuffle uit","de":"Zufallswiedergabe aus","fr":"Aléatoire désactivée","it":"Ordine casuale disattivato","sv":"Blanda av","no":"Tilfeldig rekkefølge av","es":"Orden aleatorio desactivado","da":"Shuffle slået fra","ru":"По порядку","pl":"Wyłącz odtwarzanie losowe"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Track","nl":"Track","de":"Track","fr":"Titre","it":"Traccia","sv":"Spår","no":"Spor","es":"Pista","da":"Spor","ru":"Трек","pl":"Utwór"},"type":"string","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_track_changed","title":{"en":"The track changed","nl":"De track is veranderd","de":"Der Track hat sich geändert","fr":"Le titre a été modifié","it":"La traccia è cambiata","sv":"Spåret ändrades","no":"Sporet ble endret","es":"La pista ha cambiado","da":"Sporet skiftede","ru":"Трек изменен","pl":"Zmiana utworu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"My World"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","min":4,"max":35,"title":{"en":"Target temperature","nl":"Ingestelde temperatuur","de":"Ziel-Temperatur","fr":"Température cible","it":"Temperatura nominale","sv":"Måltemperatur","no":"Ønsket temperatur","es":"Temperatura configurada","da":"Måltemperatur","ru":"Целевая температура","pl":"Cel temperatury"},"units":{"en":"°C","ru":"°C"},"chartType":"stepLine","decimals":2,"insights":true,"getable":true,"setable":true,"uiComponent":"thermostat","$flow":{"triggers":[{"id":"target_temperature_changed","title":{"en":"The target temperature changed","nl":"De ingestelde temperatuur is veranderd","de":"Die Ziel-Temperatur hat sich geändert","fr":"La température cible a été modifiée","it":"La temperatura nominale è cambiata","sv":"Måltemperaturen ändrades","no":"Ønsket temperatur ble endret","es":"La temperatura configurada ha cambiado","da":"Måltemperaturen blev ændret","ru":"Целевая температура изменена","pl":"Zmiana celu temperatury"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}],"actions":[{"id":"target_temperature_set","highlight":true,"title":{"en":"Set the temperature","nl":"Stel de temperatuur in","de":"Die Temperatur setzen","fr":"Définir la température","it":"Imposta la temperatura","sv":"Ställ in temperaturen","no":"Innstill temperaturen","es":"Configurar la temperatura","da":"Indstil temperaturen","ru":"Установить температуру","pl":"Ustaw temperaturę"},"args":[{"name":"target_temperature","type":"range","min":5,"max":40,"step":0.5,"label":"°C","labelDecimals":1}]}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Thermostat mode","nl":"Thermostaat modus","de":"Thermostat-Modus","fr":"Mode thermostat","it":"Modalità termostato","sv":"Termostatläge","no":"Termostatmodus","es":"Modo del termostato","da":"Termostattilstand","ru":"Режим термостата","pl":"Tryb termostatu"},"desc":{"en":"Mode of the thermostat","nl":"Modus van de thermostaat","de":"Modus des Thermostates","fr":"Mode du thermostat","it":"Modalità del termostato","sv":"Läge för termostaten","no":"Modus for termostaten","es":"Modo del termostato","da":"Tilstand for termostat","ru":"Режим термостата","pl":"Tryb termostatu"},"values":[{"id":"auto","title":{"en":"Automatic","nl":"Automatisch","de":"Automatisch","fr":"Automatique","it":"Automatica","sv":"Automatiskt","no":"Automatisk","es":"Automático","da":"Automatisk","ru":"Автоматически","pl":"Automatyczny"}},{"id":"heat","title":{"en":"Heat","nl":"Verhitten","de":"Heizen","fr":"Chauffer","it":"Calore","sv":"Värme","no":"Varme","es":"Calentar","da":"Opvarm","ru":"Обогрев","pl":"Ogrzewanie"}},{"id":"cool","title":{"en":"Cool","nl":"Koelen","de":"Kühlen","fr":"Refroidir","it":"Raffreddamento","sv":"Kyla","no":"Avkjøle","es":"Enfriar","da":"Køl ned","ru":"Охлаждение","pl":"Chłodzenie"}},{"id":"off","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Désactivé","it":"Disattivata","sv":"Av","no":"Av","es":"Desactivado","da":"Deaktiveret","ru":"Выкл","pl":"Wył"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"thermostat_mode_changed","title":{"en":"Thermostat mode has changed","nl":"Thermostaat modus is veranderd","de":"Thermostat-Modus hat sich geändert","fr":"Mode thermostat a été modifié","it":"La modalità del termostato è cambiata","sv":"Termostatläge ändrades","no":"Termostatmodus ble endret","es":"El modo del termostato ha cambiado","da":"Termostattilstand er blevet ændret","ru":"Режим термостата изменен","pl":"Zmiana trybu termostatu"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"thermostat_mode_is","title":{"en":"Thermostat mode !{{is|is not}}","nl":"Thermostaat modus !{{is|is niet}}","de":"Thermostat-Modus !{{ist|ist nicht}}","fr":"Mode thermostat !{{est|n\'est pas}}","it":"La modalità del termostato !{{è|non è}}","sv":"Termostatläge !{{är|är inte}}","no":"Termostatmodus !{{er|er ikke}}","es":"El modo del termostato !{{está|no está}}","da":"Termostattilstand !{{er|er ikke}}","ru":"Режим термостата !{{|не}}","pl":"Tryb termostatu !{{to|to nie}}"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"thermostat_mode_set","title":{"en":"Set the mode","nl":"Stel de modus in","de":"Modus setzen","fr":"Définir le mode","it":"Imposta la modalità","sv":"Ställ in läget","no":"Innstill modusen","es":"Configurar el modo","da":"Indstil tilstanden","ru":"Установить режим","pl":"Ustaw tryb"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Vacuum cleaner state","de":"Staubsauger-Status","fr":"Etat de l\'aspirateur","it":"Stato dell\'aspirapolvere","sv":"Dammsugarstatus","no":"Støvsugerstatus","es":"Modo de la aspiradora","da":"Støvsugerstatus","ru":"Состояние пылесоса","pl":"Stan odkurzacza"},"values":[{"id":"cleaning","title":{"en":"Cleaning","nl":"Stofzuigen","de":"Staubsaugen","fr":"Aspirer","it":"Pulizia in corso","sv":"Städning","no":"Rengjøring","es":"Aspirando","da":"Støvsuger","ru":"Идет уборка","pl":"Sprzątanie"}},{"id":"spot_cleaning","title":{"en":"Spot cleaning","nl":"Vlek schoonmaken","de":"Spot-Reinigung","fr":"Détacher","it":"Pulizia delle macchie","sv":"Områdesstädning","no":"Områderengjøring","es":"Aspirando un punto concreto","da":"Områdestøvsugning","ru":"Идет точечная уборка","pl":"Przestań sprzątać"}},{"id":"docked","title":{"en":"Docked","nl":"Op laadstation","de":"An Ladestation","fr":"Connecté à la base","it":"Connesso alla base","sv":"Dockad","no":"I ladestasjon","es":"En la estación de carga","da":"I ladestation","ru":"На станции","pl":"W bazie"}},{"id":"charging","title":{"en":"Charging","nl":"Aan het opladen","de":"Lädt auf","fr":"En charge","it":"In carica","sv":"Laddar","no":"Lader","es":"Cargando","da":"Lader","ru":"Заряжается","pl":"Ładowanie"}},{"id":"stopped","title":{"en":"Stopped","nl":"Gestopt","de":"Gestoppt","fr":"Arrêté","it":"Fermo","sv":"Stoppad","no":"Stanset","es":"Detenida","da":"Stoppet","ru":"Остановлен","pl":"Zatrzymano"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"vacuumcleaner_state_changed","title":{"en":"The state changed to...","nl":"De status is veranderd naar...","de":"Der Status hat sich geändert auf...","fr":"L\'état est passé à...","it":"Lo stato è cambiato in...","sv":"Status ändrad till...","no":"Status endret til ...","es":"El estado ha cambiado a...","da":"Status er ændret til...","ru":"Состояние изменено на…","pl":"Zmiana stanu na..."},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"vacuumcleaner_state_is","title":{"en":"The vacuum cleaner !{{is|is not}}","nl":"De stofzuiger !{{is|is niet}}","de":"Der Staubsauger !{{ist|ist nicht}}","fr":"L\'aspirateur !{{est|n\'est pas}}","it":"L\'aspirapolvere !{{è|non è}}","sv":"Dammsugaren !{{är|är inte}}","no":"Støvsugeren !{{er|er ikke}}","es":"La aspiradora !{{está|no está}}","da":"Støvsugeren !{{er|er ikke}}","ru":"Пылесос !{{|не}}","pl":"Stan odkurzacza !{{to|to nie}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"clean","highlight":true,"title":{"en":"Start cleaning","nl":"Begin met stofzuigen","de":"Mit Staubsaugen anfangen","fr":"Commencer le nettoyage","it":"Avvia la pulizia","sv":"Börja städa","no":"Begynn rengjøring","es":"Comenzar a aspirar","da":"Begynd at støvsuge","ru":"Начать уборку","pl":"Zacznij sprzątać"}},{"id":"spot_clean","title":{"en":"Start spot cleaning","nl":"Begin met één plek stofzuigen","de":"Mit Spot-Reinigung anfangen","fr":"Commencer le détachage","it":"Avvia la pulizia delle macchie","sv":"Starta områdesstädning","no":"Begynn områderengjøring","es":"Comenzar a aspirar un punto concreto","da":"Begynd at områdestøvsuge","ru":"Начать точечную уборку","pl":"Zacznij sprzątać punktowo"}},{"id":"dock","highlight":true,"title":{"en":"Return to dock","nl":"Terug naar laadstation","de":"Zu Ladestation zurückkehren","fr":"Retourner à la base","it":"Ritorna alla base","sv":"Återgå till docka","no":"Gå tilbake til ladestasjon","es":"Volver a la estación de carga","da":"Vend tilbage til ladestationen","ru":"Возвратиться на станцию","pl":"Wróć do bazy"}},{"id":"stop","highlight":true,"title":{"en":"Stop","nl":"Stop","de":"Stop","fr":"Arrêter","it":"Arresta","sv":"Stopp","no":"Stans","es":"Detener","da":"Stop","ru":"Стоп","pl":"Przestań"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Volume down","nl":"Volume omlaag","de":"Lautstärke runter","fr":"Baisser le volume","it":"Volume abbassato","sv":"Volym ned","no":"Volum ned","es":"Bajar volumen","da":"Ned for lyden","ru":"Звук тише","pl":"Zmniejsz głośność"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_down","highlight":true,"title":{"en":"Turn the volume down","nl":"Zet het geluid zachter","de":"Dreh die Lautstärke runter","fr":"Baisser le son","it":"Abbassa il volume","sv":"Sänk volymen","no":"Senk volumet","es":"Bajar el volumen","da":"Skru ned for lyden","ru":"Сделать звук тише","pl":"Zmniejsz poziom głośności"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Volume muted","nl":"Gedempt volume","de":"Lautstärke stumm","fr":"Volume sourdine","it":"Volume disattivato","sv":"Volym inaktiverad","no":"Volym dempet","es":"Silenciar volumen","da":"Lyd slået fra","ru":"Звук выключен","pl":"Głośność wyciszona"},"type":"boolean","getable":true,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_mute","title":{"en":"Mute the volume","nl":"Demp het geluid","de":"Lautstärke stummschalten","fr":"Mettre le volume en sourdine","it":"Disattiva il volume","sv":"Inaktivera volymen","no":"Demp volumet","es":"Silenciar el volumen","da":"Slå lyden fra","ru":"Выключить звук","pl":"Wycisz głośność"}},{"id":"volume_unmute","title":{"en":"Unmute the volume","nl":"Demp het geluid niet meer","de":"Lautstärke nicht mehr stummschalten","fr":"Réactiver le son","it":"Riattiva il volume","sv":"Aktivera volymen","no":"Opphev demping av volum","es":"Activar el volumen","da":"Slå lyden til","ru":"Включить звук","pl":"Włącz głośność"}},{"id":"volume_mute_toggle","title":{"en":"Toggle muted volume on or off","nl":"Gedempt volume in- of uitschakelen","de":"Stummschaltung ein- oder ausschalten","fr":"Activer ou désactiver le son coupé","it":"Attiva o disattiva il volume disattivato","sv":"Slå på eller av avstängd volym","no":"Slå dempet volum på eller av","es":"Activar o desactivar el volumen silenciado","da":"Slå dæmpet lydstyrke til eller fra"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Set volume","de":"Lautstärke setzen","fr":"Définir le volume","it":"Imposta il volume","sv":"Ställ in volym","no":"Innstill volum","es":"Configurar volumen","da":"Indstil lydstyrken","ru":"Установить громкость","pl":"Ustaw głośność"},"type":"number","desc":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"setable":true,"getable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"volume_set_changed","title":{"en":"Volume changed","nl":"Volume veranderd","de":"Lautstärke hat sich geändert","fr":"Volume a été modifié","it":"Volume modificato","sv":"Volymen ändrades","no":"Volumet ble endret","es":"El volumen ha cambiado","da":"Lydstyrke blev ændret","ru":"Объем изменился","pl":"Zmiana poziomu głośności"},"tokens":[{"name":"volume_set","type":"number","title":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności"},"example":0.5}]}],"actions":[{"id":"volume_set","highlight":true,"title":{"en":"Set volume to","nl":"Zet volume naar","de":"Lautstärke setzen auf","fr":"Mettre le volume sur","it":"Imposta il volume al","sv":"Ställ in volymen på","no":"Sett volumet til","es":"Configurar el volumen a","da":"Indstil lydstyrke til","ru":"Установить громкость","pl":"Ustaw poziom głośności na"},"args":[{"name":"volume_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"volume_set_relative","title":{"en":"Set relative volume","de":"Setze relative Lautsärke","nl":"Zet relatief volume","ru":"Установить относительную громкость","pl":"Ustaw względny poziom głośności"},"hint":{"en":"Change the volume with respect to the device\'s current volume.","de":"Ändere die Lautstärke unter Berücksichtigung der aktuellen Lautstärke des Gerätes.","nl":"Verhoog of verlaag het volume ten opzichte van het huidige volume van het apparaat."},"args":[{"name":"volume_set","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Volume up","nl":"Volume omhoog","de":"Lautstärke hoch","fr":"Augmenter le volume","it":"Volume alzato","sv":"Volym upp","no":"Volum opp","es":"Subir volumen","da":"Op for lyden","ru":"Звук громче","pl":"Zwiększ głośność"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_up","highlight":true,"title":{"en":"Turn the volume up","nl":"Zet het geluid harder","de":"Dreh die Lautstärke hoch","fr":"Augmenter le son","it":"Alza il volume","sv":"Vrid upp volymen","no":"Skru opp volumet","es":"Subir el volumen","da":"Skru op for lyden","ru":"Сделать звук громче","pl":"Zwiększ poziom głośności"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte"},"getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"windowcoverings_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte"}},{"id":"windowcoverings_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpen","es":"Abiertos","da":"Åben","ru":"Открыто","pl":"Rozchylone"}}],"conditions":[{"id":"closed","title":{"en":"Are !{{closed|opened}}","nl":"Zijn !{{gesloten|geopend}}","de":"Sind !{{geschlossen|offen}}","fr":"Sont !{{fermés|ouverts}}","it":"Sono !{{chiuse|aperte}}","sv":"Är !{{stängda|öppnade}}","no":"Er !{{lukket|åpen}}","es":"Están !{{cerrados|abiertos}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыты|открыты}}","pl":"Są !{{zasunięte|rozchylone}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zasuń"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Rozchyl"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na rozchylone lub zasłonięte"}}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja"},"desc":{"en":"Set the position of window coverings. 0% is closed, 100% is open","de":"Die Position der Jalousien setzen. 0% ist geschlossen, 100% ist offen","fr":"Définir la position des stores. 0% est fermé, 100% est ouvert","it":"Imposta la posizione delle tapparelle. 0% è chiuse, 100% è aperte","sv":"Ställ in positionen för fönsterskydden. 0 % är stängd, 100 % är öppet","no":"Innstill vindusbeskyttelsens posisjon. 0 % er lukket, 100 % er åpen","es":"Configura la posición de los cobertores de ventanas. 0 % es \'cerrados\', 100 % es \'abiertos\'","da":"Indstil positionen af dækket for vinduet. 0% er lukket, 100% er åben","ru":"Установите позицию оконных навесов. 0% означает закрыто, 100% означает открыто","pl":"Ustaw pozycję osłon okiennych. 0% oznacza zasunięte, 100% rozchylone"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%"},"getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"windowcoverings_set_changed","title":{"en":"Position changed","nl":"Positie veranderd","de":"Position hat sich geändert","fr":"Position a été modifiée","it":"Posizione cambiata","sv":"Position ändrad","no":"Posisjon endret","es":"La posición ha cambiado","da":"Position ændret","ru":"Расположение изменилось","pl":"Zmiana pozycji"},"tokens":[{"name":"windowcoverings_set","type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja"},"example":0.5}]}],"actions":[{"id":"windowcoverings_set","highlight":true,"title":{"en":"Set the position to","nl":"Zet de positie naar","de":"Setze die Position auf","fr":"Mettre la position sur","it":"Imposta la posizione su","sv":"Ställ in positionen till","no":"Innstill posisjonen til","es":"Configurar la posición como","da":"Indstil positionen til","ru":"Установите позицию на","pl":"Ustaw pozycję na"},"hint":{"en":"Change the position to open (100%), closed (0%), or a value in between.","nl":"Verander de positie naar open (100%), gesloten (0%), of een een waarde daartussen.","ru":"Измените позицию на открытую (100%), закрытую (0%) или между этими значениями.","pl":"Zmień pozycję na rozchylone (100%), zasunięte (0%) lub wartość pomiędzy."},"args":[{"name":"windowcoverings_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings state","nl":"Raambekleding status","de":"Jalousien-Status","fr":"Etat des stores","it":"Stato delle tapparelle","sv":"Status för fönsterskydd","no":"Status for vindusbeskyttelse","es":"Estado de los cobertores de ventanas","da":"Status for vinduesdække","ru":"Состояние оконных навесов","pl":"Stan osłon okiennych"},"type":"enum","values":[{"id":"up","title":{"en":"Up","nl":"Omhoog","de":"Oben","fr":"Haut","it":"Alzate","sv":"Upp","no":"Opp","es":"Arriba","da":"Oppe","ru":"Наверх","pl":"Rozchylone"}},{"id":"idle","title":{"en":"Idle","nl":"Stil","de":"Inaktiv","fr":"Inactif","it":"Socchiuse","sv":"Inaktiv","no":"Ikke aktiv","es":"Inactivos","da":"Inaktiv","ru":"В ожидании","pl":"W spoczynku"}},{"id":"down","title":{"en":"Down","nl":"Omlaag","de":"Unten","fr":"Bas","it":"Abbassate","sv":"Ned","no":"Ned","es":"Abajo","da":"Nede","ru":"Вниз","pl":"Zasunięte"}}],"getable":true,"setable":true,"uiComponent":"ternary","$flow":{"triggers":[{"id":"windowcoverings_state_changed","highlight":true,"title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Status ändrades","no":"Status ble endret","es":"El estado ha cambiado","da":"Status blev ændret","ru":"Состояние изменено","pl":"Zmiana stanu"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"windowcoverings_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\' est pas}}","it":"Lo stato !{{è|non è}}","sv":"Status är !{{|inte}}","no":"Status er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние !{{|не}}","pl":"Stan to !{{|nie}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_windowcoverings_state","highlight":true,"title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta lo stato","sv":"Ställ in status","no":"Innstill status","es":"Configurar estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings tilt down","de":"Jalousien nach unten gekippt","fr":"Stores baissés","it":"Tapparelle abbassate","sv":"Fönsterskydd nedfällda","no":"Vindusbeskyttelser lukket","es":"Cobertores de ventanas inclinados hacia abajo","da":"Vinduesdække nedad","ru":"Наклонить вниз оконные навесы","pl":"Zasunięcie osłon okiennych"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings tilt set","de":"Jalousien-Kippstellung setzen","fr":"Définir l\'inclinaison des stores","it":"Imposta l\'inclinazione delle tapparelle","sv":"Ställ in lutning för fönsterskydd","no":"Innstill helning for vindusbeskyttelse","es":"Configurar la inclinación de los cobertores de ventanas","da":"Indstil hældning for vinduesdække","ru":"Угол наклона оконных навесов установлен","pl":"Ustawienie osłon okiennych"},"type":"number","min":0,"max":1,"decimals":2,"getable":true,"setable":true,"uiComponent":"slider"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings tilt up","de":"Jalousien nach oben gekippt","fr":"Stores levés","it":"Tapparelle alzate","sv":"Fönsterskydd öppna","no":"Vindusbeskyttelser åpne","es":"Cobertores de ventanas inclinados hacia arriba","da":"Vinduesdække opad","ru":"Приподнять оконные навесы","pl":"Rozchylenie osłon okiennych"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button"}')},function(e){e.exports=JSON.parse('["amplifier","blinds","button","camera","coffeemachine","curtain","doorbell","fan","garagedoor","heater","homealarm","kettle","light","lock","other","remote","sensor","socket","speaker","solarpanel","sunshade","thermostat","tv","vacuumcleaner","windowcoverings"]')},function(e,t,r){var a={"./amplifier.json":148,"./blinds.json":149,"./button.json":150,"./camera.json":151,"./coffeemachine.json":152,"./curtain.json":153,"./doorbell.json":154,"./fan.json":155,"./garagedoor.json":156,"./heater.json":157,"./homealarm.json":158,"./kettle.json":159,"./light.json":160,"./lock.json":161,"./other.json":162,"./relay.json":163,"./remote.json":164,"./sensor.json":165,"./socket.json":166,"./solarpanel.json":167,"./speaker.json":168,"./sunshade.json":169,"./thermostat.json":170,"./tv.json":171,"./vacuumcleaner.json":172,"./windowcoverings.json":173};function n(e){var t=i(e);return r(t)}function i(e){if(!r.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}n.keys=function(){return Object.keys(a)},n.resolve=i,e.exports=n,n.id=147},function(e){e.exports=JSON.parse('{"title":{"en":"Amplifier","nl":"Versterker","de":"Verstärker","fr":"Amplificateur","it":"Amplificatore","sv":"Förstärkare","no":"Forsterker","es":"Amplificador","da":"Forstærker","ru":"Усилитель","pl":"Wzmacniacz"},"description":{"en":"Use this device class for audio amplifier devices.","de":"Nutze diese Geräteklasse für Audio-Verstärker-Geräte.","fr":"Utilisez cette classe d\'appareil pour les appareils amplificateurs audio.","it":"Utilizza questa classe di dispositivi per i dispositivi che amplificano l\'audio.","sv":"Använd den här enhetsklassne ljudförstärkarenheter.","no":"Bruk denne enhetsklassen for lydforsterkerenheter.","es":"Utiliza esta clase de dispositivo para los amplificadores de audio.","da":"Brug denne enhedsklasse til lydforstærkerenheder.","ru":"Используйте этот класс устройств усилителей звука.","pl":"Użyj tej klasy urządzeń dla wzmacniaczy audio."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Blinds","nl":"Jaloezieën & Lamellen","de":"Rolladen","fr":"Stores","it":"Tapparelle","sv":"Persienner","no":"Persienner","es":"Persianas","da":"Persienner","ru":"Жалюзи","pl":"Rolety"},"description":{"en":"Use this device class for blinds, both horizontal and vertical.","de":"Nutze diese Geräteklasse für Rolladen, sowohl horizontal als auch vertikal.","fr":"Utilisez cette classe d\'appareil pour les stores, horizontaux et verticaux.","it":"Utilizza questa classe di dispositivi per le tapparelle, orizzontali e verticali.","sv":"Använd den här enhetsklassen för persienner, både horisontella och vertikala.","no":"Bruk denne enhetsklassen for persienner, både horisontale og vertikale.","es":"Utiliza esta clase de dispositivo para las persianas, tanto horizontales como verticales.","da":"Brug denne enhedsklasse til persienner, både vandrette og lodrette.","ru":"Используйте этот класс устройств для жалюзи: как горизонтальных, так и вертикальных.","pl":"Użyj tej klasy urządzeń dla rolet (poziomych i pionowych)."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk"},"description":{"en":"Use this device class for buttons, such as a remote.","de":"Nutze diese Geräteklasse für Tasten wie z. B. eine Fernbedienung.","fr":"Utilisez cette classe d\'appareil pour les boutons, comme pour une télécommande.","it":"Utilizza questa classe di dispositivi per i pulsanti, come ad esempio un telecomando.","sv":"Använd den här enhetsklassen för knappar, som en fjärrkontroll.","no":"Bruk denne enhetsklassen for knapper, f.eks. en fjernkontroll.","es":"Utiliza esta clase de dispositivo para los botones, p. ej., mandos a distancia.","da":"Brug denne enhedsklasse til knapper, f-eks. en fjernbetjening.","ru":"Используйте этот класс устройств для устройств с кнопками, например пультов.","pl":"Użyj tej klasy urządzeń dla przycisków, np. pilota."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Camera","nl":"Camera","de":"Kamera","fr":"Caméra","it":"Telecamera","sv":"Kamera","no":"Kamera","es":"Cámara","da":"Kamera","ru":"Камера","pl":"Kamera"},"description":{"en":"Security camera","nl":"Beveiligingscamera","de":"Überwachungskamera","fr":"Caméra de sécurité","it":"Telecamera di sicurezza","sv":"Säkerhetskamera","no":"Sikkehetskamera","es":"Cámara de seguridad","da":"Overvågningskamera","ru":"Камера наблюдения","pl":"Kamera bezpieczeństwa"}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Coffee machine","nl":"Koffiemachine","de":"Kaffemaschine","fr":"Machine à café","it":"Macchina per il caffè","sv":"Kaffemaskin","no":"Kaffemaskin","es":"Máquina de café","da":"Kaffemaskine","ru":"Кофемашина","pl":"Ekspres do kawy"},"description":{"en":"Use this device class for coffee machines.","de":"Nutze diese Geräteklasse für Kaffeemaschinen.","fr":"Utilisez cette classe d\'appareil pour les machines à café.","it":"Utilizza questa classe di dispositivi per le macchine per il caffè.","sv":"Använd den här enhetsklassen för kaffemaskiner.","no":"Bruk denne enhetsklassen for kaffemaskiner.","es":"Utiliza esta clase de dispositivo para las máquinas de café.","da":"Brug denne enhedsklasse til kaffemaskiner.","ru":"Используйте этот класс устройств для кофемашин.","pl":"Użyj tej klasy urządzeń dla ekspresów do kawy."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Curtains","nl":"Gordijnen","de":"Vorhänge","fr":"Rideaux","it":"Tende","sv":"Gardiner","no":"Gardiner","es":"Cortinas","da":"Gardiner","ru":"Шторы","pl":"Zasłony"},"description":{"en":"Use this device class for curtains.","de":"Nutze diese Geräteklasse für Vorhänge.","fr":"Utilisez cette classe d\'appareil pour les rideaux.","it":"Utilizza questa classe di dispositivi per le tende.","sv":"Använd den här enheten för gardiner.","no":"Bruk denne enheten for gardiner.","es":"Utiliza esta clase de dispositivo para las cortinas.","da":"Brug denne enhedsklasse til gardiner.","ru":"Используйте этот класс устройств для штор.","pl":"Użyj tej klasy urządzeń dla zasłon."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Doorbell","nl":"Deurbel","de":"Türklingel","fr":"Sonnette","it":"Campanello","sv":"Dörrklocka","no":"Dørklokke","es":"Timbre","da":"Dørklokke","ru":"Дверной звонок","pl":"Dzwonek do drzwi"},"description":{"en":"Use this device class for doorbells, usually together with the `button` capability.","de":"Nutze diese Geräteklasse für Türklingeln - normalerweise zusammen mit der \'button\'-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les sonnettes, habituellement avec la capacité de `bouton`.","it":"Utilizza questa classe di dispositivi per i campanelli, di solito insieme alla funzione `pulsante`.","sv":"Använd den här enhetsklassen för dörrklockor, oftast tillsammans med `knapp`-funktionen.","es":"Utiliza esta clase de dispositivo para los timbres, generalmente junto con la capacidad \'botón\'.","da":"Brug denne enhedsklasse til dørklokker, normalt sammen med `knap`-funktionen.","no":"Bruk denne enhetsklassen for dørklokker, ofte sammen med `knapp`-funksjonen.","ru":"Используйте этот класс устройств для дверных звонков, обычно вместе с возможностью использовать «кнопку».","pl":"Użyj tej klasy urządzeń dla dzwonków do drzwi, zwykle razem ze zdolnością „przycisk”."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Fan","nl":"Ventilator","de":"Ventilator","fr":"Ventilateur","it":"Ventilatore","sv":"Fläkt","no":"Vifte","es":"Ventilador","da":"Ventilator","ru":"Вентилятор","pl":"Wentylator"},"description":{"en":"Use this device class for fans that cool your home.","de":"Nutze diese Geräteklasse für Ventilatoren, die dein Heim kühlen.","fr":"Utilisez cette classe d\'appareil pour les ventilateurs qui refroidissent votre maison.","it":"Utilizza questa classe di dispositivi per i ventilatori che rinfrescano la tua casa.","sv":"Använd den här enhetsklassen för fläktar som kyler ned hemmet.","no":"Bruk denne enhetsklassen for vifter som avkjøler hjemmet ditt.","es":"Utiliza esta clase de dispositivo para los ventiladores que enfrían la casa.","da":"Brug denne enhedsklasse til ventilatorer, der køler dit hjem ned.","ru":"Используйте этот класс устройств для вентиляторов, которые охлаждают ваш дом.","pl":"Użyj tej klasy urządzeń dla wentylatorów, które chłodzą dom."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Garage door","nl":"Garagedeur","de":"Garagentor","fr":"Porte de garage","it":"Porta del garage","sv":"Garagedörr","no":"Garasjedør","es":"Puerta de garaje","da":"Garageport","ru":"Дверь гаража","pl":"Brama garażowa"},"description":{"en":"Use this device class for garage doors, usually together with the `garagedoor_closed` capability.","ru":"Используйте этот класс устройств для дверей гаража, обычно вместе с функцией `garagedoor_closed`.","pl":"Użyj tej klasy urządzeń dla bram garażowych, zwykle razem ze zdolnością „garagedoor_closed”."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Heater","nl":"Heater","de":"Heizung","fr":"Radiateur","it":"Termosifone","sv":"Element","no":"Varmeelement","es":"Calefactor","da":"Varmeapparat","ru":"Обогреватель","pl":"Grzejnik"},"description":{"en":"Use this device class for heaters, that warm your home.","de":"Nutze diese Geräteklasse für Heizungen, die dein Heim wärmen.","fr":"Utilisez cette classe d\'appareil pour les radiateurs qui chauffent votre maison.","it":"Utilizza questa classe di dispositivi per i termosifoni, che riscaldano la tua casa.","sv":"Använd den här enhetsklassen för element, som värmer upp hemmet.","no":"Bruk denne enhetsklassen for varmeelement som varmer opp hjemmet ditt.","es":"Utiliza esta clase de dispositivo para los calefactores que calientan tu casa.","da":"Brug denne enhedsklasse til varmeapparater, som opvarmer dit hjem.","ru":"Используйте этот класс устройств для обогревателей, которые обогревают ваш дом.","pl":"Użyj tej klasy urządzeń dla grzejników, które ogrzewają dom."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Home Security","nl":"Huisbeveiliging","de":"Heim-Sicherheit","fr":"Sécurité de la maison","it":"Sicurezza della casa","sv":"Hemsäkerhet","no":"Hjemmesikkerhet","es":"Seguridad de la casa","da":"Hjemmesikkerhed","ru":"Домашняя безопасность","pl":"Bezpieczeństwo domowe"},"description":{"en":"Use this device class for home alarm systems.","de":"Nutze diese Geräteklasse für Heim-Alarm-Systeme.","fr":"Utilisez cette classe d\'appareil pour les systèmes d\'alarme de maison.","it":"Utilizza questa classe di dispositivi per i sistemi di allarme di casa.","sv":"Använd den här enhetsklassen för hemlarmsystem.","no":"Bruk denne enhetsklassen for hjemmealarmsystemer.","es":"Utiliza esta clase de dispositivo para los sistemas de alarmas de la casa.","da":"Brug denne enhedsklasse til alarmsystemer til hjemmet.","ru":"Используйте этот класс устройств для домашних систем сигнализации.","pl":"Użyj tej klasy urządzeń dla alarmów domowych."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Kettle","nl":"Waterkoker","de":"Wasserkocher","fr":"Bouilloire","it":"Bollitore","sv":"Vattenkokare","no":"Vannkoker","es":"Hervidor","da":"Elkedel","ru":"Чайник","pl":"Czajnik"},"description":{"en":"Use this device class for kettle devices, that can heat water.","de":"Nutze diese Geräteklasse für Kessel-Geräte, die Wasser kochen können.","fr":"Utilisez cette classe d\'appareil pour les bouilloires qui peuvent faire chauffer de l\'eau.","it":"Utilizza questa classe di dispositivi per i bollitori, che possono riscaldare l\'acqua.","sv":"Använd den här enhetsklassen för vattenkokare, som kan värma vatten.","no":"Bruk denne enhetsklassen for vannkokere som kan varme opp vann.","es":"Utiliza esta clase de dispositivo para los hervidores que calientan agua.","da":"Brug denne enhedsklasse til elkedelenheder, der kan opvarme vand.","ru":"Используйте этот класс устройств для чайников, которые могут нагревать воду.","pl":"Użyj tej klasy urządzeń dla czajników, które ogrzewają wodę."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Light","nl":"Lamp","de":"Lampe","fr":"Lampe","it":"Lampada","sv":"Lampa","no":"Lampe","es":"Lámpara","da":"Lys","ru":"Лампа","pl":"Oświetlenie"},"description":{"en":"Use this device class for lights, usually together with the `onoff`, `dim` and `light_*` capabilities.","de":"Nutze diese Geräteklasse für Lampen - normalerweise zusammen mit den `onoff`-, `dim`- und `light_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pou les lampes, habituellement avec les capacités `onoff`, `dim` et `light_*`.","it":"Utilizza questa classe di dispositivi per le lampade, generalmente insieme alle funzioni \'onoff\', `dim` e `light_*`.","sv":"Använd den här enhetsklassen för lampor, oftast tillsammans med funktionerna `onoff`, `dim` och `light_*`.","no":"Bruk denne enhetsklassen for lamper, ofte sammen med funksjonene `onoff`, `dim` och `light_*`.","es":"Utiliza esta clase de dispositivo para las luces, generalmente junto con las capacidades de \'onoff\', `dim`, y `light_*`.","da":"Brug denne enhedsklasse til lys, normalt sammen med `onoff`, `dim` og `light_*` funktionerne.","ru":"Используйте этот класс устройств для ламп, обычно вместе с функциями `onoff`,`dim` и `light_ *`.","pl":"Użyj tej klasy urządzeń dla oświetlenia, zwykle razem ze zdolnościami `onoff`, `dim` oraz `light_*`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Lock","nl":"Slot","de":"Schloss","fr":"Verrou","it":"Serratura","sv":"Lås","no":"Lås","es":"Cerradura","da":"Lås","ru":"Замок","pl":"Zamek"},"description":{"en":"Use this device class for lock devices, usually together with the `locked` and `lock_mode` capabilities.","de":"Nutze diese Geräteklasse für Schloss-Geräte - normalerweise zusammen mit den `locked`- und `lock_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils verrou, généralement avec les capacités `locked` et `lock_mode`.","it":"Utilizza questa classe di dispositivi per le serrature, generalmente insieme alle funzioni `locked` e `lock_mode`.","sv":"Använd den här enhetsklassen för att låsa enheter, oftast tillsammans med funktionerna `locked` och `lock_mode`.","no":"Bruk denne enhetsklassen for låseenheter, ofte sammen med funksjonene `locked` og `lock_mode`.","es":"Utiliza esta clase de dispositivo para las cerraduras, generalmente junto con las capacidades de `locked` y `lock_mode`.","da":"Brug denne enhedsklasse til låseenheder, normalt sammen med `locked` and `lock_mode` funktionerne.","ru":"Используйте этот класс устройств для замков, обычно вместе с функциями `locked` и `lock_mode`.","pl":"Użyj tej klasy urządzeń dla produktów z zamkiem, zwykle razem ze zdolnościami `locked` i `lock_mode`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Other","nl":"Overig","de":"Andere","fr":"Autre","it":"Altro","sv":"Övrigt","no":"Annet","es":"Otro","da":"Andet","ru":"Другое","pl":"Inne"},"description":{"en":"Use this device class for devices that do not fit any other device class.","de":"Nutze diese Geräteklasse für Geräte, die nicht in andere Geräteklassen passen.","fr":"Utilisez cette classe d\'appareil pour les appareils qui ne correspondent à aucune autre classe d\'appareil.","it":"Utilizza questa classe di dispositivi per gli apparecchi che non appartengono a nessun\'altra classe di dispositivi.","sv":"Använd den här enhetsklassen för enheter som inte passar i någon annan enhetsklass.","no":"Bruk denne enhetsklassen for enheter som ikke passer inn i noen annen enhetsklasse.","es":"Utiliza esta clase de dispositivo para los dispositivos que no se ajusten a ninguna otra clase.","da":"Brug denne enhedsklasse til enheder, der ikke hører til i andre enhedsklasse.","ru":"Используйте этот класс устройств для устройств, которые не подходят ни к одному другому классу.","pl":"Użyj tej klasy urządzeń dla produktów, które nie odpowiadają żadnej klasie urządzeń."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Relay","nl":"Relais","de":"Relais","fr":"Relais","it":"Relé","sv":"Relä","no":"Relé","es":"Relé","da":"Relæ","ru":"Узел","pl":"Przekaźnik"},"description":{"en":"Use this device class for relays, which are connected to another device.","de":"Nutze diese Geräteklasse für Relais, die mit anderen Geräten verbunden sind.","fr":"Utilisez cette classe d\'appareil pour les relais qui sont connectés à d\'autres appareils.","it":"Utilizza questa classe di dispositivi per i relé, che sono connessi ad un altro dispositivo.","sv":"Använd den här enhetsklassen för relän, som är kopplade till en annan enhet","no":"Bruk denne enhetsklassen for reléer som er koblet til en annen enhet.","es":"Utiliza esta clase de dispositivo para los relés conectados a otros dispositivos.","da":"Brug denne enhedsklasse til relæer, som er koblet til en anden enhed.","ru":"Используйте этот класс устройств для узлов, которые подключены к другому устройству.","pl":"Użyj tej klasy urządzeń dla przekaźników niepołączonych z żadnym innym urządzeniem."},"virtualTitle":{"en":"What\'s connected?","nl":"Wat is er verbonden?","de":"Was ist verbunden?","fr":"Qu\'est-ce qui est connecté ?","it":"Cos\'è connesso?","sv":"Relä","no":"Hva er tilkoblet?","es":"¿Qué está conectado?","da":"Hvad er tilkoblet?","ru":"Что подключено?","pl":"Co jest połączone?"},"allowedVirtual":["garagedoor","sunshade","blinds","curtain"]}')},function(e){e.exports=JSON.parse('{"title":{"en":"Remote","nl":"Afstandsbediening","de":"Fernbedienung","fr":"Télécommande","it":"Telecomando","sv":"Fjärrkontroll","no":"Fjernkontroll","es":"Mando a distancia","da":"Fjernbetjening","ru":"Пульт","pl":"Pilot"},"description":{"en":"Use this device class for (TV/Sunblind/Keyfob etc.) remotes.","de":"Nutze diese Geräteklasse für (TV/Jalousien/Schlüsselanhänger etc.)-Fernbedienungen.","fr":"Utilisez cette classe d\'appareil pour les télécommandes (TV/Stores/Porte-clés, etc.).","it":"Utilizza questa classe di dispositivi per i telecomandi (TV/Tapparelle/Portachiavi, ecc.).","sv":"Använd den här enheten för fjärrkontroller för (TV/Markis/Nyckellås mm.).","no":"Bruk denne enheten for fjernkontroller for (TV/markise/smartnøkkel m.m.).","es":"Utiliza esta clase de dispositivo para los mandos a distancia (TV/persianas/llaves electrónicas, etc.","da":"Brug denne enhedsklasse til fjernbetjeninger (til TV/markise/smartnøgle osv.)","ru":"Используйте этот класс устройств для пультов дистанционного управления (телевизоры/жалюзи/брелки и т.п.).","pl":"Użyj tej klasy urządzeń dla pilotów (od telewizora/od markizy/klucza zbliżeniowego itp.)."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Sensor","nl":"Sensor","de":"Sensor","fr":"Capteur","it":"Sensore","sv":"Sensor","no":"Sensor","es":"Sensor","da":"Sensor","ru":"Датчик","pl":"Czujnik"},"description":{"en":"Use this device class for sensors, e.g. a contact or motion sensor.","de":"Nutze diese Geräteklasse für Sensoren, z. B. ein Kontakt- oder Bewegungssensor.","fr":"Utilisez cette classe d\'appareil pour les capteurs, par ex. un capteur de contact ou de mouvement.","it":"Utilizza questa classe di dispositivi per i sensori, ad es. un sensore di contatto o di movimento.","sv":"Använd den här enhetsklassen för sensorer, t.ex. en kontakt eller rörelsesensor.","no":"Bruk denne enhetsklassen for sensorer, f.eks. en kontakt- eller bevegelsessensor.","es":"Utiliza esta clase de dispositivo para los sensores; p. ej., sensores de contacto o movimiento.","da":"Brug denne enhedsklasse til sensorer, f-eks en kontakt- eller bevægelsessensor.","ru":"Используйте этот класс устройства для датчиков, например датчиков контакта или движения.","pl":"Użyj tej klasy urządzeń dla czujników, np. czujnika otwarcia lub ruchu."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Wall Plug","nl":"Schakeldoos","de":"Steckdose","fr":"Prise murale","it":"Presa a muro","sv":"Väggkontakt","no":"Veggkontakt","es":"Enchufe de pared","da":"Stikkontakt","ru":"Настенная розетка","pl":"Wtyczka"},"description":{"en":"Use this device class for sockets (built-in or plug-in socket switches). When adding the `choose_slave` pair template, the user is presented a `What\'s plugged in?` question.","de":"Nutze diese Geräteklasse für Sockel (eingebaut oder zum zum Einstecken). Wenn das `choose_slave`-Paar-Template hinzugefügt wird, wird dem Benutzer eine `Was ist eingesteckt?`-Frage gestellt.","fr":"Utilisez cette classe d\'appareil pour les prises (intégrées ou prises d\'interrupteurs). En ajoutant le modèle d\'appairage `choose_slave`, il est demandé à l\'utilisteur `Qu\'est-ce qui est connecté ?`.","it":"Utilizza questa classe di dispositivi per le prese (prese integrate o interruttori). Aggiungendo il modello di abbinamento `choose_slave`, viene chiesto all\'utente `Cosa è collegato?`.","sv":"Använd den här enhetsklassen för uttag (inbyggda eller stickkontakter). När parmallen `choose_slave` får användaren en `Vad är inkopplat?`-fråga.","no":"Bruk denne enhetsklassen for kontakter (innebygde eller eksterne kontaktenheter). Når sammenkoblingsmalen `choose_slave` legges til, får brukeren et `Hva er koblet til?`-spørsmål.","es":"Utiliza esta clase de dispositivo para los enchufes (interruptores de enchufe integrados o enchufables). Al añadir la plantilla de emparejamiento `choose_slave`, al usuario se le pregunta `¿Qué está enchufado?`.","da":"Brug denne enhedsklasse til kontakter (indbyggede eller eksterne kontaktenheder). Når `choose_slave` parskabelonen tilføjes, bliver brugeren præsenteret for et `Hvad er sat til?` spørgsmål.","ru":"Используйте этот класс устройства для розеток (встроенных или вставных выключателей). При добавлении шаблона сопряжения `choose_slave` пользователю предлагается ответить на вопрос: `Что подключено?`.","pl":"Użyj tej klasy urządzeń dla gniazdek elektrycznych (wbudowanych lub wtyczek). Podczas dodawania szablonu parowania `choose_slave` pojawi się pytanie: `Co jest podłączone?`."},"virtualTitle":{"en":"What\'s plugged in?","nl":"Wat is er ingeplugd?","de":"Was ist eingesteckt?","fr":"Qu\'est-ce qui est connecté ?","it":"Cosa è collegato?","sv":"Vad är inkopplat?","no":"Hva er koblet til?","es":"¿Qué está enchufado?","da":"Hvad er sat til?","ru":"Что подключено?","pl":"Co jest podłączone?"},"allowedVirtual":["light","fan","heater","coffeemachine","kettle","tv","solarpanel"]}')},function(e){e.exports=JSON.parse('{"title":{"en":"Solar Panel","nl":"Zonnepaneel","sv":"Solpanel","no":"Solpanel","es":"Panel solar","da":"Solpanel","ru":"Солнечная панель","pl":"Panel fotowoltaiczny"},"description":{"en":"Use this device class for solar panels.","es":"Utiliza esta clase de dispositivo para los paneles solares.","da":"Brug denne enhedsklasse til solpaneler.","ru":"Используйте этот класс устройств для солнечных панелей.","pl":"Użyj tej klasy urządzeń dla paneli fotowoltaicznych."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Speaker","nl":"Speaker","de":"Lautsprecher","fr":"Haut-parleur","it":"Altoparlante","sv":"Högtalare","no":"Høyttaler","es":"Altavoz","da":"Højttaler","ru":"Колонка","pl":"Głośnik"},"description":{"en":"Use this device class for devices that can play music, usually together with the `speaker_*` capabilities.","de":"Nutze diese Geräteklasse für Geräte, die Musik spielen können - normalerweise zusammen mit den `speaker_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils qui peuvent jouer de la musique, généralement avec la capacité `speaker_*`.","it":"Utilizza questa classe di dispositivi per i dispositivi che possono riprodurre musica, generalmente insieme alla funzione `speaker_*`.","sv":"Använd den här enhetsklassen för enheter som kan spela musik, oftast tilsammans med funktionerna `speaker_*`.","no":"Bruk denne enhetsklassen for enheter som kan spille musikk, ofte sammen med funksjonen `speaker_*`.","es":"Utiliza esta clase de dispositivo para los aparatos capaces de reproducir música, generalmente junto con las capacidades `speaker_*`.","da":"Brug denne enhedsklasse til enheder, der kan afspille musik, normalt sammen med `speaker_*` funktionerne.","ru":"Используйте этот класс устройств для устройств, воспроизводящих музыку, обычно вместе с функцией `speaker_*`.","pl":"Użyj tej klasy urządzeń dla produktów, które mogą odtwarzać muzykę, zwykle razem ze zdolnością `speaker_*`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Sunshade","nl":"Zonnescherm","de":"Sonnenschirm","fr":"Auvent","it":"Parasole","sv":"Markis","no":"Markise","es":"Toldo","da":"Markise","ru":"Навес","pl":"Markiza"},"description":{"en":"Use this device class for sunshades (window coverings against the sun).","de":"Nutze diese Geräteklasse für Jalousien (Fenster-Abdeckungen gegen die Sonne).","fr":"Utilisez cette classe d\'appareil pour les auvents (couvrant les fenêtres contre le soleil).","it":"Utilizza questa classe di dispositivi per gli scuretti (che riparano le finestre dal sole).","sv":"Använd den här enhetsklassen för markiser (fönsterskydd mot solen).","no":"Bruk denne enhetsklassen for markiser (vindusbeskyttelse mot solen).","es":"Utiliza esta clase de dispositivo para los toldos (para proteger las ventanas del sol).","da":"Brug denne enhedsklasse til markiser (vinduesdække mod solen).","ru":"Используйте этот класс устройств для навесов (оконных навесов от солнца).","pl":"Użyj tej klasy urządzeń dla markiz (osłony okienne chroniące przed słońcem)."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Thermostat","nl":"Thermostaat","de":"Thermostat","fr":"Thermostat","it":"Termostato","sv":"Termostat","no":"Termostat","es":"Termostato","da":"Termostat","ru":"Термостат","pl":"Termostat"},"description":{"en":"Use this device class for thermostats, either for the entire home or radiator-mounted, usually together with the `measure_temperature`, `target_temperature` and `thermostat_mode` capabilities.","de":"Nutze diese Geräteklasse für Thermostate, entweder für das gesamte Heim oder pro Heizung - normalerweise zusammen mit den `measure_temperature`-, `target_temperature`- und `thermostat_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les thermostats, soit pour toute la maison soit montés sur radiateurs, généralemebnt avec les capacités `measure_temperature`, `target_temperature` et `thermostat_mode`.","it":"Utilizza questa classe di dispositivi per i termostati, sia quelli per l\'intera casa che quelli montati sul radiatore, solitamente insieme alle funzionalità `measure_temperature`,`target_temperature` e `thermostat_mode`.","sv":"Använd den här enhetsklassen för termostater, antingen för hela hemmet eller elementmonterade, oftast tillsammans med funktionerna `measure_temperature`, `target_temperature` och `thermostat_mode`.","no":"Bruk denne enhetsklassen for termostater, enten for hele hjemmet eller monterte på varmeelement, ofte sammen med funksjonene `measure_temperature`, `target_temperature` og `thermostat_mode`.","es":"Utiliza esta clase de dispositivo para los termostatos, tanto los de toda la casa como los montados en los radiadores, generalmente junto con las capacidades `measure_temperature`, `target_temperature` y `thermostat_mode`.","da":"Brug denne enhedsklasse til termostater, enten til hele hjemmet eller på radiatorer, normalt sammen med `measure_temperature`, `target_temperature` og `thermostat_mode` funktionerne.","ru":"Используйте этот класс устройств для термостатов для всего дома или для термостатов на радиаторах, обычно вместе с функциями `measure_temperature`, `target_temperature` и `thermostat_mode`.","pl":"Użyj tej klasy urządzeń dla termostatów, zarówno dla całego domu, jak i urządzeń podłączanych do kaloryferów; zwykle razem ze zdolnościami `measure_temperature`, `target_temperature` oraz `thermostat_mode`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"TV","nl":"TV","de":"TV","fr":"TV","it":"TV","sv":"TV","no":"TV","es":"TV","da":"TV","ru":"Телевизор","pl":"Telewizor"},"description":{"en":"Use this device class for TVs.","de":"Nutze diese Geräteklasse für TVs","fr":"Utilisez cette classe d\'appareil pour les TV","it":"Utilizza questa classe di dispositivi per i televisori.","sv":"Använd den här enhetsklassen för TV-apparater.","no":"Bruk denne enhetsklassen for TV-apparater.","es":"Utiliza esta clase de dispositivo para los televisores.","da":"Brug denne enhedsklasse til TV-apparater.","ru":"Используйте этот класс устройств для телевизоров.","pl":"Użyj tej klasy urządzeń dla telewizorów."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Vacuum Cleaner","nl":"Stofzuiger","de":"Staubsauger","fr":"Aspirateur","it":"Aspirapolvere","sv":"Dammsugare","no":"Støvsuger","es":"Aspiradora","da":"Støvsuger","ru":"Пылесос","pl":"Odkurzacz"},"description":{"en":"Use this device class for vacuum cleaners, usually together with the `vacuumcleaner_state` capability.","de":"Nutze diese Geräteklasse für Staubsauger - normalerweise zusammen mit der `vacuumcleaner_state`-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les aspirateurs, habituellement avec la capacité `vacuumcleaner_state`.","it":"Utilizza questa classe di dispositivi per gli aspirapolvere, generalmente insieme alla funzionalità `vacuumcleaner_state`.","sv":"Använd den här enhetsklassen för dammsugare, oftast tillsammans med funktionen `vacuumcleaner_state`.","no":"Bruk denne enhetsklassen for støvsugere, ofte sammen med funksjonen `vacuumcleaner_state`.","es":"Utiliza esta clase de dispositivo para las aspiradoras, generalmente junto con la capacidad `vacuumcleaner_state`.","da":"Brug denne enhedsklasse til støvsugere, normalt sammen med `vacuumcleaner_state` funktionen.","ru":"Используйте этот класс устройств для пылесосов, обычно вместе с функцией `vacuumcleaner_state`.","pl":"Użyj tej klasy urządzeń dla odkurzaczy, zwykle razem ze zdolnością `vacuumcleaner_state`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window Coverings","nl":"Raambekleding","de":"Fenster-Abdeckungen","fr":"Couverture de fenêtre","it":"Rivestimenti per finestre","sv":"Fönsterskydd","no":"Vindusbeskyttelse","es":"Cobertores de ventanas","da":"Vinduesdække","ru":"Оконные навесы","pl":"Osłony okienne"},"description":{"en":"Use this device class for window coverings, when the `curtains`, `blinds` or `sunshade` device class doesn\'t apply.","de":"Nutze diese Geräteklasse für Fenster-Abdeckungen, wenn `curtains`-, `blinds`- oder `sunshade`-Geräteklassen nicht zutreffen.","fr":"Utilisez cette classe d\'appareil pour les couvertures de fenêtre, lorsque la classe d\'appareil `curtains`, `blinds` ou `sunshade` ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per i rivestimenti per finestre, quando non rientrano nelle classi `curtains`, `blinds` o `sunshade`.","sv":"Använd den här enhetsklassen för fönsterskydd när enhetsklasserna `curtains`, `blinds` eller `sunshade` inte gäller.","no":"Bruk denne enhetsklassen for vindusbeskyttelse som ikke dekkes av enhetsklassene `curtains`, `blinds` eller `sunshade`.","es":"Utiliza esta clase de dispositivo para los cobertores de ventanas que no entren en las clases `curtains`, `blinds` o `sunshade`.","da":"Brug denne enhedsklasse til vinduesdække, når enhedsklasserne `curtains`, `blinds` og `sunshade` ikke er gældende.","ru":"Используйте этот класс устройств для оконных навесов, когда классы устройств `curtains`, `blinds` или `sunshade` не подходят.","pl":"Użyj tej klasy urządzeń dla osłon okiennych o innej klasie urządzenia niż `curtains`, `blinds` lub `sunshade`."},"virtualTitle":{"en":"What\'s the type?","nl":"Wat voor type is dit?","de":"Welcher Typ ist das?","fr":"Quel est le type ?","it":"Qual è il tipo?","sv":"Vad är det för typ?","no":"Hvilken type er det?","es":"¿Cuál es el tipo?","da":"Hvad er typen?","ru":"Какой тип?","pl":"Wybierz rodzaj?"},"allowedVirtual":["sunshade","blinds","curtain"]}')},function(e,t,r){"use strict";function a(e,t,r){let a=!0;return e instanceof Array?e.forEach(e=>{(er)&&(a=!1)}):"number"==typeof e&&(er)&&(a=!1),a}function n(e){return"string"==typeof e&&/^(([0-9a-f]{4}\s?){2}){2,}$/i.test(e)}const i={min:1,max:1e3},s={min:0,max:.5};function o(e,t){const r={result:!0,msg:"invalid_"+this};return e instanceof Array?(t.packing?e.some(e=>!(e>=0&&e<=255))&&(r.result=!1):e.some(e=>!t.words||!t.words[e])&&(r.result=!1),r):(r.result=!1,r)}const l={words(e,t){const r={result:!0,msg:"invalid_words"};return!(e instanceof Array)||e.length<=1?(r.result=!1,r):(e.forEach(e=>{if(!(e instanceof Array)||e.length<=1)return r.result=!1,r}),r)},agc:(e,t)=>({result:e instanceof Array,msg:"invalid_agc"}),sof:(e,t)=>({result:e instanceof Array,msg:"invalid_sof"}),toggleSof:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleSof"}),eof:(e,t)=>({result:e instanceof Array,msg:"invalid_eof"}),manchesterUnit:(e,t)=>({result:"number"==typeof e,msg:"invalid_manchesterUnit"}),manchesterMaxUnits:(e,t)=>({result:"number"==typeof e&&e>=i.min,msg:"invalid_manchesterMaxUnits"}),sensitivity:(e,t)=>({result:"number"==typeof e&&a(e,s.min,s.max),msg:"invalid_sensitivity"}),interval:(e,t)=>({result:"number"==typeof e,msg:"invalid_signalinterval"}),minimalLength:(e,t)=>({result:e>0,msg:"invalid_minimalLength"}),maximalLength:(e,t)=>({result:e>0,msg:"invalid_maximalLength"}),packing:(e,t)=>({result:"boolean"==typeof e&&t.words&&2==t.words.length,msg:"invalid_packing"}),dutyCycle:(e,t)=>({result:"number"==typeof e,msg:"invalid_dutyCycle"}),txOnly:(e,t)=>({result:"boolean"==typeof e,msg:"invalid_txOnly"}),cmds(e,t){const r={result:!0,msg:"invalid_cmd"};return Object.keys(e).forEach(a=>{o(e[a],t).result||(r.result=!1)}),r},toggleIndexes:(e,t)=>({result:e instanceof Array&&!e.some(e=>e>=t.sof.length),msg:"invalid_toggleIndexes"}),toggleBits:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleBits"}),prefixData:o.bind("prefixData"),postfixData:o.bind("postfixData")},u={timeInterval:{min:5,max:32767},manchesterInterval:{min:0,max:1},rxTimeout:{min:0,max:255},repetitions:{min:1,max:255}},d={words(e,t){const r={result:!0,msg:"word_interval_out_of_bounds"},n=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return e.forEach(e=>{a(e,n.min,n.max)||(r.result=!1)}),r},agc(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"agc_out_of_bounds"}},toggleSof(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"toggleSof_out_of_bounds"}},sof(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"sof_out_of_bounds"}},eof(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"eof_out_of_bounds"}},repetitions:(e,t)=>({result:a(e,u.repetitions.min,u.repetitions.max),msg:"repetitions_out_of_bounds"}),interval:(e,t)=>({result:a(e,u.timeInterval.min,u.timeInterval.max),msg:"interval_out_of_bounds"}),rxTimeout:(e,t)=>({result:a(e,u.rxTimeout.min,u.rxTimeout.max),msg:"rxTimeout_out_of_bounds"}),manchesterUnit:(e,t)=>({result:a(e,u.timeInterval.min,u.timeInterval.max),msg:"manchesterUnit_out_of_bounds"})},c={min:1e3,max:2e5},p={min:58e3,max:812e3},m={min:5e3,max:5e4},h={modulation(e,t){const r=["type","baudRate","channelSpacing","channelDeviation"],n={result:!0,msg:"invalid_modulation_properties"};for(let t=0;t({result:!Object.keys(e).some(t=>!n(e[t])),msg:"invalid_pronto_cmds"}),toggleCmds:(e,t)=>({result:!Object.keys(e).some(t=>!n(e[t])),msg:"invalid_pronto_toggleCmds"}),repetitions:(e,t)=>({result:a(e,u.repetitions.min,u.repetitions.max),msg:"repetitions_out_of_bounds"})},v={carrier:(e,t)=>({result:a(e,433e6,43399e4),msg:"carrier_out_of_bounds"})},g={min:868e6,max:8689e5},y={carrier:(e,t)=>({result:a(e,g.min,g.max),msg:"carrier_out_of_bounds"})},b={min:3e4,max:58e3},w={min:30,max:70},k={carrier:(e,t)=>({result:a(e,b.min,b.max),msg:"invalid_carrier"}),dutyCycle:(e,t)=>({result:a(e,w.min,w.max),msg:"dutyCycle_out_of_bounds"})};e.exports={validate:function(e,t,r){for(const a in r){const n=r[a],i=e[a];if("function"==typeof i){const e=i(n,r);t(e.msg,e.result)}}},genericValidator:l,irValidator:k,rfValidator:d,rf433Validator:v,rf868Validator:y,modulationValidator:h,prontoValidator:f}},function(e){e.exports=JSON.parse('{"USD":"$","CAD":"$","EUR":"€","AED":"د.إ.‏","AFN":"؋","ALL":"Lek","AMD":"դր.","ARS":"$","AUD":"$","AZN":"ман.","BAM":"KM","BDT":"৳","BGN":"лв.","BHD":"د.ب.‏","BIF":"FBu","BND":"$","BOB":"Bs","BRL":"R$","BWP":"P","BYR":"BYR","BZD":"$","CDF":"FrCD","CHF":"CHF","CLP":"$","CNY":"CN¥","COP":"$","CRC":"₡","CVE":"CV$","CZK":"Kč","DJF":"Fdj","DKK":"kr","DOP":"RD$","DZD":"د.ج.‏","EEK":"kr","EGP":"ج.م.‏","ERN":"Nfk","ETB":"Br","GBP":"£","GEL":"GEL","GHS":"GH₵","GNF":"FG","GTQ":"Q","HKD":"$","HNL":"L","HRK":"kn","HUF":"Ft","IDR":"Rp","ILS":"₪","INR":"টকা","IQD":"د.ع.‏","IRR":"﷼","ISK":"kr","JMD":"$","JOD":"د.أ.‏","JPY":"¥","KES":"Ksh","KHR":"៛","KMF":"FC","KRW":"₩","KWD":"د.ك.‏","KZT":"тңг.","LBP":"ل.ل.‏","LKR":"SL Re","LTL":"Lt","LVL":"Ls","LYD":"د.ل.‏","MAD":"د.م.‏","MDL":"MDL","MGA":"MGA","MKD":"MKD","MMK":"K","MOP":"MOP$","MUR":"MURs","MXN":"$","MYR":"RM","MZN":"MTn","NAD":"N$","NGN":"₦","NIO":"C$","NOK":"kr","NPR":"नेरू","NZD":"$","OMR":"ر.ع.‏","PAB":"B/.","PEN":"S/.","PHP":"₱","PKR":"₨","PLN":"zł","PYG":"₲","QAR":"ر.ق.‏","RON":"RON","RSD":"дин.","RUB":"руб.","RWF":"FR","SAR":"ر.س.‏","SDG":"SDG","SEK":"kr","SGD":"$","SOS":"Ssh","SYP":"ل.س.‏","THB":"฿","TND":"د.ت.‏","TOP":"T$","TRY":"TL","TTD":"$","TWD":"NT$","TZS":"TSh","UAH":"₴","UGX":"USh","UYU":"$","UZS":"UZS","VEF":"Bs.F.","VND":"₫","XAF":"FCFA","XOF":"CFA","YER":"ر.ي.‏","ZAR":"R","ZMK":"ZK"}')},function(e,t,r){"use strict";try{const t=r(1),a=r(21),n=r(1),i=r(177);t&&n&&n.promisify&&(e.exports.openAsync=n.promisify(t.open),e.exports.readAsync=n.promisify(t.read),e.exports.statAsync=n.promisify(t.stat),e.exports.readFileAsync=n.promisify(t.readFile),e.exports.readDirAsync=n.promisify(t.readdir),e.exports.lstatAsync=n.promisify(t.lstat),e.exports.imageSizeAsync=n.promisify(i)),a&&(e.exports.join=a.join,e.exports.extname=a.extname,e.exports.basename=a.basename,e.exports.dirname=a.dirname)}catch(e){}},function(e,t,r){"use strict";(function(t){var a=r(1),n=r(21),i=r(22),s=r(189);function o(e,t){var r=s(e,t);if(r in i){var a=i[r].calculate(e,t);if(!1!==a)return a.type=r,a}throw new TypeError("unsupported file type: "+r+" (file: "+t+")")}e.exports=function(e,r){if(t.isBuffer(e))return o(e);if("string"!=typeof e)throw new TypeError("invalid invocation");var i=n.resolve(e);if("function"!=typeof r)return o(function(e){var r=a.openSync(e,"r"),n=a.fstatSync(r).size,i=Math.min(n,524288),s=new t(i);return a.readSync(r,s,0,i,0),a.closeSync(r),s}(i),i);!function(e,r){a.open(e,"r",(function(n,i){if(n)return r(n);a.fstat(i,(function(n,s){if(n)return r(n);var o=s.size;if(o<=0)return r(new Error("File size is not greater than 0 —— "+e));var l=Math.min(o,524288),u=new t(l);a.read(i,u,0,l,0,(function(e){if(e)return r(e);a.close(i,(function(e){r(e,u)}))}))}))}))}(i,(function(e,t){if(e)return r(e);var a;try{a=o(t,i)}catch(t){e=t}r(e,a)}))},e.exports.types=Object.keys(i)}).call(this,r(2).Buffer)},function(e,t,r){"use strict";e.exports={detect:function(e){return"BM"===e.toString("ascii",0,2)},calculate:function(e){return{width:e.readUInt32LE(18),height:Math.abs(e.readInt32LE(22))}}}},function(e,t,r){"use strict";e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&2===e.readUInt16LE(2)},calculate:r(23).calculate}},function(e,t,r){"use strict";e.exports={detect:function(e){return 542327876===e.readUInt32LE(0)},calculate:function(e){return{height:e.readUInt32LE(12),width:e.readUInt32LE(16)}}}},function(e,t,r){"use strict";var a=/^GIF8[79]a/;e.exports={detect:function(e){var t=e.toString("ascii",0,6);return a.test(t)},calculate:function(e){return{width:e.readUInt16LE(6),height:e.readUInt16LE(8)}}}},function(e,t,r){"use strict";function a(e,t){return{height:e.readUInt16BE(t),width:e.readUInt16BE(t+2)}}function n(e,t){if(t>e.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==e[t])throw new TypeError("Invalid JPG, marker table corrupted")}e.exports={detect:function(e){return"ffd8"===e.toString("hex",0,2)},calculate:function(e){var t,r;for(e=e.slice(4);e.length;){if(t=e.readUInt16BE(0),n(e,t),192===(r=e[t+1])||193===r||194===r)return a(e,t+5);e=e.slice(t+2)}throw new TypeError("Invalid JPG, no size found")}}},function(e,t,r){"use strict";e.exports={detect:function(e){if("PNG\r\n\n"===e.toString("ascii",1,8)){var t=e.toString("ascii",12,16);if("CgBI"===t&&(t=e.toString("ascii",28,32)),"IHDR"!==t)throw new TypeError("invalid png");return!0}},calculate:function(e){return"CgBI"===e.toString("ascii",12,16)?{width:e.readUInt32BE(32),height:e.readUInt32BE(36)}:{width:e.readUInt32BE(16),height:e.readUInt32BE(20)}}}},function(e,t,r){"use strict";e.exports={detect:function(e){return"8BPS"===e.toString("ascii",0,4)},calculate:function(e){return{width:e.readUInt32BE(18),height:e.readUInt32BE(14)}}}},function(e,t,r){"use strict";var a=/]+[^>]*>/;var n=/]+>/,i=/\bwidth=(['"])([^%]+?)\1/,s=/\bheight=(['"])([^%]+?)\1/,o=/\bviewBox=(['"])(.+?)\1/;function l(e){var t=e.split(" ");return{width:parseInt(t[2],10),height:parseInt(t[3],10)}}e.exports={detect:function(e){return a.test(e)},calculate:function(e){var t=e.toString("utf8").match(n);if(t){var r=function(e){var t=e.match(i),r=e.match(s),a=e.match(o);return{width:t&&parseInt(t[2],10),height:r&&parseInt(r[2],10),viewbox:a&&l(a[2])}}(t[0]);if(r.width&&r.height)return function(e){return{width:e.width,height:e.height}}(r);if(r.viewbox)return function(e){var t=e.viewbox.width/e.viewbox.height;return e.width?{width:e.width,height:Math.floor(e.width/t)}:e.height?{width:Math.floor(e.height*t),height:e.height}:{width:e.viewbox.width,height:e.viewbox.height}}(r)}throw new TypeError("invalid svg")}}},function(e,t,r){"use strict";(function(t){var a=r(1),n=r(187);function i(e,t){var r=n(e,16,8,t);return(n(e,16,10,t)<<16)+r}function s(e){if(e.length>24)return e.slice(12)}e.exports={detect:function(e){var t=e.toString("hex",0,4);return"49492a00"===t||"4d4d002a"===t},calculate:function(e,r){if(!r)throw new TypeError("Tiff doesn't support buffer");var o="BE"===function(e){var t=e.toString("ascii",0,2);return"II"===t?"LE":"MM"===t?"BE":void 0}(e),l=function(e,t){for(var r,a,o,l={};e&&e.length&&(r=n(e,16,0,t),a=n(e,16,2,t),o=n(e,32,4,t),0!==r);)1!==o||3!==a&&4!==a||(l[r]=i(e,t)),e=s(e);return l}(function(e,r,i){var s=n(e,32,4,i),o=1024,l=a.statSync(r).size;s+o>l&&(o=l-s-10);var u=new t(o),d=a.openSync(r,"r");return a.readSync(d,u,0,o,s),u.slice(2)}(e,r,o),o),u=l[256],d=l[257];if(!u||!d)throw new TypeError("Invalid Tiff, missing tags");return{width:u,height:d}}}}).call(this,r(2).Buffer)},function(e,t,r){"use strict";e.exports=function(e,t,r,a){return r=r||0,e["readUInt"+t+(a?"BE":"LE")].call(e,r)}},function(e,t,r){"use strict";e.exports={detect:function(e){var t="RIFF"===e.toString("ascii",0,4),r="WEBP"===e.toString("ascii",8,12),a="VP8"===e.toString("ascii",12,15);return t&&r&&a},calculate:function(e){var t=e.toString("ascii",12,16);if(e=e.slice(20,30),"VP8X"===t){var r=e[0];return!(!(0==(192&r))||!(0==(1&r)))&&function(e){return{width:1+e.readUIntLE(4,3),height:1+e.readUIntLE(7,3)}}(e)}if("VP8 "===t&&47!==e[0])return function(e){return{width:16383&e.readInt16LE(6),height:16383&e.readInt16LE(8)}}(e);var a=e.toString("hex",3,6);return"VP8L"===t&&"9d012a"!==a&&function(e){return{width:1+((63&e[2])<<8|e[1]),height:1+((15&e[4])<<10|e[3]<<2|(192&e[2])>>6)}}(e)}}},function(e,t,r){"use strict";var a=r(22);e.exports=function(e,t){var r;for(r in a)if(a[r].detect(e,t))return r}},function(e){e.exports=JSON.parse('{"title":"App","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]},"i18nArray":{"type":"object","patternProperties":{"^.*$":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"author":{"required":["name"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"website":{"type":"string"}}},"images":{"required":["large","small"],"additionalProperties":false,"properties":{"large":{"type":"string"},"small":{"type":"string"},"xlarge":{"type":"string"}}},"flowCard":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"titleFormatted":{"$ref":"#/definitions/i18nObject"},"deprecated":{"type":"boolean","enum":[true]},"highlight":{"type":"boolean","enum":[true]},"advanced":{"type":"boolean","enum":[true]},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"droptoken":{"oneOf":[{"type":"string","enum":["boolean","number","string","image"]},{"type":"array","items":{"type":"string","enum":["boolean","number","string","image"]}}]},"tokens":{"type":"array","items":{"type":"object","required":["name","title"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["boolean","number","string","image"],"default":"string"},"title":{"$ref":"#/definitions/i18nObject"},"example":{"oneOf":[{"$ref":"#/definitions/i18nObject"},{"type":"number"},{"type":"boolean"}]}}}},"args":{"type":"array","items":{"anyOf":[{"type":"object","required":["name","type","filter"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["device"]},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["text","autocomplete","device","date","time","color","checkbox","code"]},"placeholder":{"$ref":"#/definitions/i18nObject"},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["number","range"]},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"label":{"$ref":"#/definitions/i18nObject"},"labelMultiplier":{"type":"number"},"labelDecimals":{"type":"number","mimimum":0,"maximum":10}}},{"type":"object","required":["name","type","values"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["dropdown"]},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"$ref":"#/definitions/i18nObject"}}}}}}]}}}},"appSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},{"type":"object","required":["id","type","title","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"}}},{"type":"object","required":["type","title","children"],"properties":{"type":{"type":"string","enum":["group"]},"title":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/appSettings"}}}]}},"driverSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"attr":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","label"],"properties":{"id":{"type":"string"},"label":{"$ref":"#/definitions/i18nObject"}}}},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["type","label","children"],"properties":{"type":{"type":"string","enum":["group"]},"label":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/driverSettings"},"zwave":{"$ref":"#/definitions/zwaveSetting"}}}]}},"zwaveDevice":{"type":"object","required":["manufacturerId","productTypeId","productId"],"properties":{"manufacturerId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productTypeId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}},"associationGroups":{"type":"array","items":{"type":"number"}},"associationGroupsMultiChannel":{"type":"array","items":{"type":"number"}},"associationGroupsOptions":{"type":"object","properties":{"hint":{"$ref":"#/definitions/i18nObject"}}},"wakeUpInterval":{"type":"number"},"defaultConfiguration":{"type":"array","items":{"type":"object","required":["id","size","value"],"properties":{"id":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"value":{"oneOf":[{"type":"number"},{"type":"string"}]},"multiChannelNodes":{"type":"object","items":{"type":"object","required":["class","capabilities","name"],"properties":{"class":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"icon":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"}}}}}}}}},"zwaveSetting":{"type":"object","required":["index","size"],"properties":{"index":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"signed":{"type":"boolean"}}}},"required":["id","name","version","compatibility","author"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"description":{"$ref":"#/definitions/i18nObject"},"author":{"$ref":"#/definitions/author"},"images":{"$ref":"#/definitions/images"},"version":{"type":"string"},"compatibility":{"type":"string"},"sdk":{"type":"number","default":3,"minimum":1,"maximum":3},"platforms":{"type":"array","items":{"type":"string","enum":["cloud","local"]}},"tags":{"$ref":"#/definitions/i18nArray"},"permissions":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"bugs":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://"}}},"homepage":{"type":"string","pattern":"^https://"},"support":{"type":"string","pattern":"^(https://|mailto:)"},"source":{"type":"string","pattern":"^https://"},"athomForumDiscussionId":{"type":"number"},"homeyCommunityTopicId":{"type":"number"},"category":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"contributors":{"type":"object","patternProperties":{"^(developers|translators)$":{"type":"array","items":{"$ref":"#/definitions/author"}}},"additionalProperties":false},"contributing":{"type":"object","properties":{"donate":{"type":"object","additionalProperties":false,"properties":{"githubSponsors":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"bunq":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"patreon":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"paypal":{"type":"object","additionalProperties":false,"patternProperties":{"^(username|email)$":{"type":"string"},"currency":{"type":"string"}}}}}}},"screensavers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"capabilities":{"type":"object","patternProperties":{"^.*$":{"type":"object"}},"additionalProperties":false},"drivers":{"type":"array","items":{"type":"object","required":["id","name","class","capabilities"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"class":{"type":"string"},"capabilities":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"capabilitiesOptions":{"type":"object"},"images":{"$ref":"#/definitions/images"},"deprecated":{"type":"boolean","enum":[true]},"discovery":{"type":"string"},"energy":{"type":"object","properties":{"approximation":{"oneOf":[{"required":["usageOn","usageOff"],"additionalProperties":false,"properties":{"usageOn":{"type":"number"},"usageOff":{"type":"number"}}},{"required":["usageConstant"],"additionalProperties":false,"properties":{"usageConstant":{"type":"number"}}}]},"cumulative":{"type":"boolean","enum":[true]},"batteries":{"type":"array","minItems":1,"items":{"type":"string"}}}},"pair":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"template":{"type":"string"},"options":{"type":"object"},"navigation":{"type":"object","properties":{"prev":{"type":"string"},"next":{"type":"string"}}}}}},"settings":{"$ref":"#/definitions/driverSettings"},"gtin":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"zwave":{"$ref":"#/definitions/zwaveDevice"},"zigbee":{"type":"object"},"rf433":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"infrared":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"connectivity":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["lan","cloud","ble","zwave","zigbee","infrared","rf433","rf868"]}}}}},"flow":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"conditions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"actions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}}}},"signals":{"type":"object","patternProperties":{"^(433|868|ir)$":{"type":"object"}},"additionalProperties":false},"brandColor":{"type":"string","minLength":7,"maxLength":7,"pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$"},"discovery":{"type":"object","patternProperties":{"^.*$":{"type":"object","required":["type"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["mdns-sd","ssdp","mac"]},"id":{"type":"string","minLength":1},"conditions":{"type":"array","items":{"type":"array","items":{"type":"object","required":["field","match"],"additionalProperties":false,"properties":{"field":{"type":"string"},"match":{"type":"object","required":["type","value"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["string","regex"]},"value":{"type":"string"}}}}}}},"mdns-sd":{"type":"object","required":["name","protocol"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"protocol":{"type":"string","enum":["tcp","udp"]}}},"ssdp":{"type":"object","required":["search"],"additionalProperties":false,"properties":{"search":{"type":"string","minLength":1}}},"mac":{"type":"object","required":["manufacturer"],"additionalProperties":false,"properties":{"manufacturer":{"type":"array","uniqueItems":true,"minItems":1,"maxItems":32,"items":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"integer","minimum":0,"maximum":255}}}}}}}}},"settings":{"$ref":"#/definitions/appSettings"}}}')},function(e){e.exports=JSON.parse('{"homey:manager:geolocation":{"title":{"en":"Read Homey\'s location","nl":"Homey\'s locatie uitlezen","de":"Homeys Standort lesen","fr":"Lire la position de Homey","it":"Leggi la posizione di Homey","sv":"Läs av Homeys plats","no":"Les av Homeys posisjon","es":"Leer la posición de Homey","da":"Læs Homeys placering","ru":"Читать местонахождение Homey","pl":"Odczytaj lokalizację Homey"}},"homey:manager:ledring":{"title":{"en":"Control Homey\'s LED ring","nl":"Homey\'s LED ring besturen","de":"Homeys LED-Ring steuern","fr":"Contrôler l\'anneau LED de Homey","it":"Controlla l\'anello LED di Homey","sv":"Kontrollera Homeys LED-ring","no":"Kontroller Homeys LED-ring","es":"Controlar el anillo LED de Homey","da":"Kontroller Homeys LED-ring","ru":"Управлять светодиодным кольцом Homey","pl":"Steruj lampą pierścieniową Homey"}},"homey:manager:media":{"title":{"en":"Control Homey\'s Music","nl":"Homey\'s Muziek besturen","de":"Homeys Musik steuern","fr":"Contrôler la musique de Homey","it":"Controlla la musica di Homey","sv":"Styr Homeys musik","no":"Kontroller Homeys musikk","es":"Controlar la música de Homey","da":"Kontroller Homeys musik","ru":"Управлять музыкой Homey","pl":"Steruj muzyką Homey"}},"homey:manager:speech-input":{"title":{"en":"React to speech","nl":"Reageren op spraak","de":"Auf Sprache reagieren","fr":"Réagir au discours","it":"Reagisci al parlato","sv":"Reagera på tal","no":"Reager på tale","es":"Reaccionar al habla","da":"Reager på tale","ru":"Реагировать на голос","pl":"Reaguj na mowę"}},"homey:manager:speech-output":{"title":{"en":"Let Homey talk","nl":"Homey laten praten","de":"Homey sprechen lassen","fr":"Laisser Homey parler","it":"Permetti a Homey di parlare","sv":"Låt Homey prata","no":"La Homey snakke","es":"Deja que Homey hable","da":"Lad Homey tale","ru":"Разрешить Homey говорить","pl":"Pozwól Homey mówić"}},"homey:wireless:433":{"title":{"en":"Send and receive on the 433 MHz frequency","nl":"Verzenden en ontvangen op de 433 MHz frequentie","de":"Auf der 433MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 433 MHz","it":"Invia e ricevi sulla frequenza 433 MHz","sv":"Skicka och ta emot på frekvensen 433 MHz","no":"Send og motta på frekvensen 433 MHz","es":"Enviar y recibir en la frecuencia de 433 MHz","da":"Send, og modtag på 433 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 433 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 433 MHz"}},"homey:wireless:868":{"title":{"en":"Send and receive on the 868 MHz frequency","nl":"Verzenden en ontvangen op de 868 MHz frequentie","de":"Auf der 868MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 868 MHz","it":"Invia e ricevi sulla frequenza 868 MHz","sv":"Skicka och ta emot på frekvensen 468 MHz","no":"Send og motta på frekvensen 468 MHz","es":"Enviar y recibir en la frecuencia de 868 MHz","da":"Send, og modtag på 868 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 868 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 868 MHz"}},"homey:wireless:ir":{"title":{"en":"Send and receive Infrared","nl":"Infrarood verzenden en ontvangen","de":"Infrarot senden und empfangen","fr":"Envoyer et recevoir en infrarouge","it":"Invia e ricevi in infrarossi","sv":"Skicka och ta emot infrarött","no":"Send og motta infrarødt","es":"Enviar y recibir en infrarrojos","da":"Send, og modtag på infrarød","ru":"Отправка и получение ИК-сигналов","pl":"Wysyłaj i odbieraj podczerwień"}},"homey:wireless:zwave":{"title":{"en":"Send and receive Z-Wave for specific devices","nl":"Z-Wave verzenden en ontvangen voor specifieke apparaten","de":"Z-Wave für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Z-Wave pour les appareils spécifiques","it":"Invia e ricevi Z-Wave per dispositivi specifici","sv":"Skicka och ta emot Z-Wave för specifika enheter","no":"Send og motta Z-Wave for spesifikke enheter","es":"Enviar y recibir Z-Wave para dispositivos específicos","da":"Send, og modtag på Z-Wave for specifikke enheder","ru":"Отправлять и получать сигналы Z-Wave для определенных устройств","pl":"Wysyłaj i odbieraj Z-Wave dla określonych urządzeń"}},"homey:wireless:zigbee":{"title":{"en":"Send and receive Zigbee for specific devices","nl":"Zigbee verzenden en ontvangen voor specifieke apparaten","de":"Zigbee für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Zigbee pour les appareils spécifiques","it":"Invia e ricevi Zigbee per dispositivi specifici","sv":"Skicka och ta emot Zigbee för specifika enheter","no":"Send og motta Zigbee for spesifikke enheter","es":"Enviar y recibir Zigbee para dispositivos específicos","da":"Send, og modtag på Zigbee for specifikke enheder","ru":"Отправлять и получать сигналы Zigbee для определенных устройств","pl":"Wysyłaj i odbieraj Zigbee dla określonych urządzeń"}},"homey:wireless:nfc":{"title":{"en":"Read and write NFC tags","nl":"NFC tags lezen en schrijven","de":"NFC-Tags lesen und schreiben","fr":"Lire et écrire les tags NFC","it":"Leggi e scrivi i tag NFC","sv":"Läs och skriv NFC-taggar","no":"Les og skriv NFC-tagger","es":"Leer y escribir etiquetas NFC","da":"Læs, og skriv NFC-tags","ru":"Чтение и запись тегов NFC","pl":"Odczytuj i twórz tagi NFC"}},"homey:manager:api":{"title":{"en":"Gain full access to Homey to control everything on behalf of the user","nl":"Volledige toegang tot Homey om alles te bedienen namens de gebruiker","de":"Erhalte vollen Zugriff auf Homey, um alles im Namen des Benutzers zu steuern","fr":"Obtenir l\'accès complet à Homey pour contrôler tout au nom de l\'utilisateur","it":"Ottieni l\'accesso completo a Homey per controllare tutto a nome dell\'utente","sv":"Få full åtkomst till Homey för att styra allt åt användaren","no":"Få full tilgang til Homey for å kontrollere alt på vegne av brukeren","es":"Acceso completo a Homey para controlarlo todo en nombre del usuario","da":"Få fuld adgang til Homey for at kontrollere alt på brugerens vegne","ru":"Получите полный доступ к Homey, чтобы контролировать все от имени пользователя","pl":"Zdobądź pełny dostęp do Homey, aby sterować wszystkim w imieniu użytkownika"}},"homey:wireless:ble":{"title":{"en":"Communicate with Bluetooth Low Energy devices","nl":"Communiceren met Bluetooth Low Energy apparaten","de":"Mit Bluetooth-Low-Energy-Geräten kommunizieren","fr":"Communiquer avec les appareils Bluetooth à faible énergie","it":"Comunica con i dispositivi Bluetooth Low Energy","sv":"Kommunicera med Bluetooth låg energi-enheter","no":"Kommuniser med Bluetooth Low Energy-enheter","es":"Comunicarse con dispositivos de Bluetooth Low Energy","da":"Kommuniker med Bluetooth low energy-enheder","ru":"Связываться с устройствами Bluetooth с низким энергопотреблением","pl":"Porozumiewaj się z urządzeniami Bluetooth Low Energy"}}}')},function(e,t,r){"use strict";e.exports=class{static getCodecs(){return r(193)}}},function(e){e.exports=JSON.parse('{"homey:codec:mp3":{},"homey:codec:ogg":{},"homey:codec:flac":{}}')}])})); \ No newline at end of file +!function(e){"use strict";function t(){for(var e=arguments.length,t=Array(e),r=0;r1){t[0]=t[0].slice(0,-1);for(var a=t.length-1,n=1;n= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,f=String.fromCharCode;function v(e){throw new RangeError(m[e])}function g(e,t){var r=e.split("@"),a="";r.length>1&&(a=r[0]+"@",e=r[1]);var n=function(e,t){for(var r=[],a=e.length;a--;)r[a]=t(e[a]);return r}((e=e.replace(p,".")).split("."),t).join(".");return a+n}function y(e){for(var t=[],r=0,a=e.length;r=55296&&n<=56319&&r>1,e+=h(e/t);e>455;a+=36)e=h(e/35);return h(a+36*e/(e+38))},k=function(e){var t,r=[],a=e.length,n=0,i=128,s=72,o=e.lastIndexOf("-");o<0&&(o=0);for(var l=0;l=128&&v("not-basic"),r.push(e.charCodeAt(l));for(var d=o>0?o+1:0;d=a&&v("invalid-input");var f=(t=e.charCodeAt(d++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:36;(f>=36||f>h((u-n)/p))&&v("overflow"),n+=f*p;var g=m<=s?1:m>=s+26?26:m-s;if(fh(u/y)&&v("overflow"),p*=y}var b=r.length+1;s=w(n-c,b,0==c),h(n/b)>u-i&&v("overflow"),i+=h(n/b),n%=b,r.splice(n++,0,i)}return String.fromCodePoint.apply(String,r)},_=function(e){var t=[],r=(e=y(e)).length,a=128,n=0,i=72,s=!0,o=!1,l=void 0;try{for(var d,c=e[Symbol.iterator]();!(s=(d=c.next()).done);s=!0){var p=d.value;p<128&&t.push(f(p))}}catch(e){o=!0,l=e}finally{try{!s&&c.return&&c.return()}finally{if(o)throw l}}var m=t.length,g=m;for(m&&t.push("-");g=a&&Eh((u-n)/j)&&v("overflow"),n+=(k-a)*j,a=k;var C=!0,O=!1,x=void 0;try{for(var $,L=e[Symbol.iterator]();!(C=($=L.next()).done);C=!0){var T=$.value;if(Tu&&v("overflow"),T==a){for(var R=n,D=36;;D+=36){var I=D<=i?1:D>=i+26?26:D-i;if(R>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function E(e){for(var t="",r=0,a=e.length;r=194&&n<224){if(a-r>=6){var i=parseInt(e.substr(r+4,2),16);t+=String.fromCharCode((31&n)<<6|63&i)}else t+=e.substr(r,6);r+=6}else if(n>=224){if(a-r>=9){var s=parseInt(e.substr(r+4,2),16),o=parseInt(e.substr(r+7,2),16);t+=String.fromCharCode((15&n)<<12|(63&s)<<6|63&o)}else t+=e.substr(r,9);r+=9}else t+=e.substr(r,3),r+=3}return t}function j(e,t){function r(e){var r=E(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,A).replace(t.PCT_ENCODED,n)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,A).replace(t.PCT_ENCODED,n)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,A).replace(t.PCT_ENCODED,n)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,A).replace(t.PCT_ENCODED,n)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,A).replace(t.PCT_ENCODED,n)),e}function C(e){return e.replace(/^0*(.*)/,"$1")||"0"}function O(e,t){var r=e.match(t.IPV4ADDRESS)||[],a=l(r,2)[1];return a?a.split(".").map(C).join("."):e}function x(e,t){var r=e.match(t.IPV6ADDRESS)||[],a=l(r,3),n=a[1],i=a[2];if(n){for(var s=n.toLowerCase().split("::").reverse(),o=l(s,2),u=o[0],d=o[1],c=d?d.split(":").map(C):[],p=u.split(":").map(C),m=t.IPV4ADDRESS.test(p[p.length-1]),h=m?7:8,f=p.length-h,v=Array(h),g=0;g1){var w=v.slice(0,y.index),k=v.slice(y.index+y.length);b=w.join(":")+"::"+k.join(":")}else b=v.join(":");return i&&(b+="%"+i),b}return e}var $=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,L=void 0==="".match(/(){0}/)[1];function T(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},a=!1!==t.iri?o:s;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var n=e.match($);if(n){L?(r.scheme=n[1],r.userinfo=n[3],r.host=n[4],r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=n[7],r.fragment=n[8],isNaN(r.port)&&(r.port=n[5])):(r.scheme=n[1]||void 0,r.userinfo=-1!==e.indexOf("@")?n[3]:void 0,r.host=-1!==e.indexOf("//")?n[4]:void 0,r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=-1!==e.indexOf("?")?n[7]:void 0,r.fragment=-1!==e.indexOf("#")?n[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?n[4]:void 0)),r.host&&(r.host=x(O(r.host,a),a)),void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?r.reference="relative":void 0===r.fragment?r.reference="absolute":r.reference="uri":r.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==r.reference&&(r.error=r.error||"URI is not a "+t.reference+" reference.");var i=z[(t.scheme||r.scheme||"").toLowerCase()];if(t.unicodeSupport||i&&i.unicodeSupport)j(r,a);else{if(r.host&&(t.domainHost||i&&i.domainHost))try{r.host=P(r.host.replace(a.PCT_ENCODED,E).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to ASCII via punycode: "+e}j(r,s)}i&&i.parse&&i.parse(r,t)}else r.error=r.error||"URI can not be parsed.";return r}function R(e,t){var r=!1!==t.iri?o:s,a=[];return void 0!==e.userinfo&&(a.push(e.userinfo),a.push("@")),void 0!==e.host&&a.push(x(O(String(e.host),r),r).replace(r.IPV6ADDRESS,(function(e,t,r){return"["+t+(r?"%25"+r:"")+"]"}))),"number"!=typeof e.port&&"string"!=typeof e.port||(a.push(":"),a.push(String(e.port))),a.length?a.join(""):void 0}var D=/^\.\.?\//,I=/^\/\.(\/|$)/,F=/^\/\.\.(\/|$)/,V=/^\/?(?:.|\n)*?(?=\/|$)/;function U(e){for(var t=[];e.length;)if(e.match(D))e=e.replace(D,"");else if(e.match(I))e=e.replace(I,"/");else if(e.match(F))e=e.replace(F,"/"),t.pop();else if("."===e||".."===e)e="";else{var r=e.match(V);if(!r)throw new Error("Unexpected dot segment condition");var a=r[0];e=e.slice(a.length),t.push(a)}return t.join("")}function N(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.iri?o:s,a=[],n=z[(t.scheme||e.scheme||"").toLowerCase()];if(n&&n.serialize&&n.serialize(e,t),e.host)if(r.IPV6ADDRESS.test(e.host));else if(t.domainHost||n&&n.domainHost)try{e.host=t.iri?S(e.host):P(e.host.replace(r.PCT_ENCODED,E).toLowerCase())}catch(r){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+r}j(e,r),"suffix"!==t.reference&&e.scheme&&(a.push(e.scheme),a.push(":"));var i=R(e,t);if(void 0!==i&&("suffix"!==t.reference&&a.push("//"),a.push(i),e.path&&"/"!==e.path.charAt(0)&&a.push("/")),void 0!==e.path){var l=e.path;t.absolutePath||n&&n.absolutePath||(l=U(l)),void 0===i&&(l=l.replace(/^\/\//,"/%2F")),a.push(l)}return void 0!==e.query&&(a.push("?"),a.push(e.query)),void 0!==e.fragment&&(a.push("#"),a.push(e.fragment)),a.join("")}function B(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments[3],n={};return a||(e=T(N(e,r),r),t=T(N(t,r),r)),!(r=r||{}).tolerant&&t.scheme?(n.scheme=t.scheme,n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=U(t.path||""),n.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=U(t.path||""),n.query=t.query):(t.path?("/"===t.path.charAt(0)?n.path=U(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?n.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:n.path=t.path:n.path="/"+t.path,n.path=U(n.path)),n.query=t.query):(n.path=e.path,void 0!==t.query?n.query=t.query:n.query=e.query),n.userinfo=e.userinfo,n.host=e.host,n.port=e.port),n.scheme=e.scheme),n.fragment=t.fragment,n}function M(e,t){return e&&e.toString().replace(t&&t.iri?o.PCT_ENCODED:s.PCT_ENCODED,E)}var q={scheme:"http",domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,t){var r="https"===String(e.scheme).toLowerCase();return e.port!==(r?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},H={scheme:"https",domainHost:q.domainHost,parse:q.parse,serialize:q.serialize};function W(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}var G={scheme:"ws",domainHost:!0,parse:function(e,t){var r=e;return r.secure=W(r),r.resourceName=(r.path||"/")+(r.query?"?"+r.query:""),r.path=void 0,r.query=void 0,r},serialize:function(e,t){if(e.port!==(W(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){var r=e.resourceName.split("?"),a=l(r,2),n=a[0],i=a[1];e.path=n&&"/"!==n?n:void 0,e.query=i,e.resourceName=void 0}return e.fragment=void 0,e}},K={scheme:"wss",domainHost:G.domainHost,parse:G.parse,serialize:G.serialize},J={},Z="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",Q="[0-9A-Fa-f]",Y=r(r("%[EFef]"+Q+"%"+Q+Q+"%"+Q+Q)+"|"+r("%[89A-Fa-f]"+Q+"%"+Q+Q)+"|"+r("%"+Q+Q)),X=t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),ee=new RegExp(Z,"g"),te=new RegExp(Y,"g"),re=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',X),"g"),ae=new RegExp(t("[^]",Z,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),ne=ae;function ie(e){var t=E(e);return t.match(ee)?t:e}var se={scheme:"mailto",parse:function(e,t){var r=e,a=r.to=r.path?r.path.split(","):[];if(r.path=void 0,r.query){for(var n=!1,i={},s=r.query.split("&"),o=0,l=s.length;o=55296&&t<=56319&&n%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,d=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,c=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,p=/^(?:\/(?:[^~/]|~0|~1)*)*$/,m=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,h=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function f(e){return e="full"==e?"full":"fast",a.copy(f[e])}function v(e){var t=e.match(n);if(!t)return!1;var r=+t[1],a=+t[2],s=+t[3];return a>=1&&a<=12&&s>=1&&s<=(2==a&&function(e){return e%4==0&&(e%100!=0||e%400==0)}(r)?29:i[a])}function g(e,t){var r=e.match(s);if(!r)return!1;var a=r[1],n=r[2],i=r[3],o=r[5];return(a<=23&&n<=59&&i<=59||23==a&&59==n&&60==i)&&(!t||o)}e.exports=f,f.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":u,url:d,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:k,uuid:c,"json-pointer":p,"json-pointer-uri-fragment":m,"relative-json-pointer":h},f.full={date:v,time:g,"date-time":function(e){var t=e.split(y);return 2==t.length&&v(t[0])&&g(t[1],!0)},uri:function(e){return b.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":u,url:d,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:k,uuid:c,"json-pointer":p,"json-pointer-uri-fragment":m,"relative-json-pointer":h};var y=/t|\s/i;var b=/\/|:/;var w=/[^\\]\\Z/;function k(e){if(w.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},function(e,t,r){"use strict";var a=r(43),n=r(0).toHash;e.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"];return e.all=n(t),e.types=n(["number","integer","string","array","object","boolean","null"]),e.forEach((function(r){r.rules=r.rules.map((function(r){var n;if("object"==typeof r){var i=Object.keys(r)[0];n=r[i],r=i,n.forEach((function(r){t.push(r),e.all[r]=!0}))}return t.push(r),e.all[r]={keyword:r,code:a[r],implements:n}})),e.all.$comment={keyword:"$comment",code:a.$comment},r.type&&(e.types[r.type]=r)})),e.keywords=n(t.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),e.custom={},e}},function(e,t,r){"use strict";e.exports={$ref:r(44),allOf:r(45),anyOf:r(46),$comment:r(47),const:r(48),contains:r(49),dependencies:r(50),enum:r(51),format:r(52),if:r(53),items:r(54),maximum:r(12),minimum:r(12),maxItems:r(13),minItems:r(13),maxLength:r(14),minLength:r(14),maxProperties:r(15),minProperties:r(15),multipleOf:r(55),not:r(56),oneOf:r(57),pattern:r(58),properties:r(59),propertyNames:r(60),required:r(61),uniqueItems:r(62),validate:r(11)}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n,i=" ",s=e.level,o=e.dataLevel,l=e.schema[t],u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(o||""),p="valid"+s;if("#"==l||"#/"==l)e.isRoot?(a=e.async,n="validate"):(a=!0===e.root.schema.$async,n="root.refVal[0]");else{var m=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===m){var h=e.MissingRefError.message(e.baseId,l);if("fail"==e.opts.missingRefs){e.logger.error(h),(y=y||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",!1!==e.opts.messages&&(i+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(i+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var f=i;i=y.pop(),!e.compositeRule&&d?e.async?i+=" throw new ValidationError(["+f+"]); ":i+=" validate.errors = ["+f+"]; return false; ":i+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(i+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,h);e.logger.warn(h),d&&(i+=" if (true) { ")}}else if(m.inline){var v=e.util.copy(e);v.level++;var g="valid"+v.level;v.schema=m.schema,v.schemaPath="",v.errSchemaPath=l,i+=" "+e.validate(v).replace(/validate\.schema/g,m.code)+" ",d&&(i+=" if ("+g+") { ")}else a=!0===m.$async||e.async&&!1!==m.$async,n=m.code}if(n){var y;(y=y||[]).push(i),i="",e.opts.passContext?i+=" "+n+".call(this, ":i+=" "+n+"( ",i+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(i+=" + "+e.errorPath);var b=i+=" , "+(o?"data"+(o-1||""):"parentData")+" , "+(o?e.dataPathArr[o]:"parentDataProperty")+", rootData) ";if(i=y.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");d&&(i+=" var "+p+"; "),i+=" try { await "+b+"; ",d&&(i+=" "+p+" = true; "),i+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",d&&(i+=" "+p+" = false; "),i+=" } ",d&&(i+=" if ("+p+") { ")}else i+=" if (!"+b+") { if (vErrors === null) vErrors = "+n+".errors; else vErrors = vErrors.concat("+n+".errors); errors = vErrors.length; } ",d&&(i+=" else { ")}return i}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.schema[t],i=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,o=!e.opts.allErrors,l=e.util.copy(e),u="";l.level++;var d="valid"+l.level,c=l.baseId,p=!0,m=n;if(m)for(var h,f=-1,v=m.length-1;f0:e.util.schemaHasRules(h,e.RULES.all))&&(p=!1,l.schema=h,l.schemaPath=i+"["+f+"]",l.errSchemaPath=s+"/"+f,a+=" "+e.validate(l)+" ",l.baseId=c,o&&(a+=" if ("+d+") { ",u+="}"));return o&&(a+=p?" if (true) { ":" "+u.slice(0,-1)+" "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e),h="";m.level++;var f="valid"+m.level;if(s.every((function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0:e.util.schemaHasRules(t,e.RULES.all)}))){var v=m.baseId;a+=" var "+p+" = errors; var "+c+" = false; ";var g=e.compositeRule;e.compositeRule=m.compositeRule=!0;var y=s;if(y)for(var b,w=-1,k=y.length-1;w0:e.util.schemaHasRules(s,e.RULES.all);if(a+="var "+p+" = errors;var "+c+";",b){var w=e.compositeRule;e.compositeRule=m.compositeRule=!0,m.schema=s,m.schemaPath=o,m.errSchemaPath=l,a+=" var "+h+" = false; for (var "+f+" = 0; "+f+" < "+d+".length; "+f+"++) { ",m.errorPath=e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers,!0);var k=d+"["+f+"]";m.dataPathArr[v]=f;var _=e.validate(m);m.baseId=y,e.util.varOccurences(_,g)<2?a+=" "+e.util.varReplace(_,g,k)+" ":a+=" var "+g+" = "+k+"; "+_+" ",a+=" if ("+h+") break; } ",e.compositeRule=m.compositeRule=w,a+=" if (!"+h+") {"}else a+=" if ("+d+".length == 0) {";var P=P||[];P.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var S=a;return a=P.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+S+"]); ":a+=" validate.errors = ["+S+"]; return false; ":a+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",b&&(a+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e),m="";p.level++;var h="valid"+p.level,f={},v={},g=e.opts.ownProperties;for(k in s)if("__proto__"!=k){var y=s[k],b=Array.isArray(y)?v:f;b[k]=y}a+="var "+c+" = errors;";var w=e.errorPath;for(var k in a+="var missing"+n+";",v)if((b=v[k]).length){if(a+=" if ( "+d+e.util.getProperty(k)+" !== undefined ",g&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(k)+"') "),u){a+=" && ( ";var _=b;if(_)for(var P=-1,S=_.length-1;P0:e.util.schemaHasRules(y,e.RULES.all))&&(a+=" "+h+" = true; if ( "+d+e.util.getProperty(k)+" !== undefined ",g&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(k)+"') "),a+=") { ",p.schema=y,p.schemaPath=o+e.util.getProperty(k),p.errSchemaPath=l+"/"+e.util.escapeFragment(k),a+=" "+e.validate(p)+" ",p.baseId=R,a+=" } ",u&&(a+=" if ("+h+") { ",m+="}"))}return u&&(a+=" "+m+" if ("+c+" == errors) {"),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p=e.opts.$data&&s&&s.$data;p&&(a+=" var schema"+n+" = "+e.util.getData(s.$data,i,e.dataPathArr)+"; ");var m="i"+n,h="schema"+n;p||(a+=" var "+h+" = validate.schema"+o+";"),a+="var "+c+";",p&&(a+=" if (schema"+n+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+n+")) "+c+" = false; else {"),a+=c+" = false;for (var "+m+"=0; "+m+"<"+h+".length; "+m+"++) if (equal("+d+", "+h+"["+m+"])) { "+c+" = true; break; }",p&&(a+=" } "),a+=" if (!"+c+") { ";var f=f||[];f.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+n+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var v=a;return a=f.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+v+"]); ":a+=" validate.errors = ["+v+"]; return false; ":a+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",u&&(a+=" else { "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||"");if(!1===e.opts.format)return u&&(a+=" if (true) { "),a;var c,p=e.opts.$data&&s&&s.$data;p?(a+=" var schema"+n+" = "+e.util.getData(s.$data,i,e.dataPathArr)+"; ",c="schema"+n):c=s;var m=e.opts.unknownFormats,h=Array.isArray(m);if(p){a+=" var "+(f="format"+n)+" = formats["+c+"]; var "+(v="isObject"+n)+" = typeof "+f+" == 'object' && !("+f+" instanceof RegExp) && "+f+".validate; var "+(g="formatType"+n)+" = "+v+" && "+f+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+n+" = "+f+".async; "),a+=" "+f+" = "+f+".validate; } if ( ",p&&(a+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),a+=" (","ignore"!=m&&(a+=" ("+c+" && !"+f+" ",h&&(a+=" && self._opts.unknownFormats.indexOf("+c+") == -1 "),a+=") || "),a+=" ("+f+" && "+g+" == '"+r+"' && !(typeof "+f+" == 'function' ? ",e.async?a+=" (async"+n+" ? await "+f+"("+d+") : "+f+"("+d+")) ":a+=" "+f+"("+d+") ",a+=" : "+f+".test("+d+"))))) {"}else{var f;if(!(f=e.formats[s])){if("ignore"==m)return e.logger.warn('unknown format "'+s+'" ignored in schema at path "'+e.errSchemaPath+'"'),u&&(a+=" if (true) { "),a;if(h&&m.indexOf(s)>=0)return u&&(a+=" if (true) { "),a;throw new Error('unknown format "'+s+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,g=(v="object"==typeof f&&!(f instanceof RegExp)&&f.validate)&&f.type||"string";if(v){var y=!0===f.async;f=f.validate}if(g!=r)return u&&(a+=" if (true) { "),a;if(y){if(!e.async)throw new Error("async format in sync schema");a+=" if (!(await "+(b="formats"+e.util.getProperty(s)+".validate")+"("+d+"))) { "}else{a+=" if (! ";var b="formats"+e.util.getProperty(s);v&&(b+=".validate"),a+="function"==typeof f?" "+b+"("+d+") ":" "+b+".test("+d+") ",a+=") { "}}var w=w||[];w.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=p?""+c:""+e.util.toQuotedString(s),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=p?"' + "+c+" + '":""+e.util.escapeQuotes(s),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=p?"validate.schema"+o:""+e.util.toQuotedString(s),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var k=a;return a=w.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+k+"]); ":a+=" validate.errors = ["+k+"]; return false; ":a+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",u&&(a+=" else { "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e);m.level++;var h="valid"+m.level,f=e.schema.then,v=e.schema.else,g=void 0!==f&&(e.opts.strictKeywords?"object"==typeof f&&Object.keys(f).length>0:e.util.schemaHasRules(f,e.RULES.all)),y=void 0!==v&&(e.opts.strictKeywords?"object"==typeof v&&Object.keys(v).length>0:e.util.schemaHasRules(v,e.RULES.all)),b=m.baseId;if(g||y){var w;m.createErrors=!1,m.schema=s,m.schemaPath=o,m.errSchemaPath=l,a+=" var "+p+" = errors; var "+c+" = true; ";var k=e.compositeRule;e.compositeRule=m.compositeRule=!0,a+=" "+e.validate(m)+" ",m.baseId=b,m.createErrors=!0,a+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=m.compositeRule=k,g?(a+=" if ("+h+") { ",m.schema=e.schema.then,m.schemaPath=e.schemaPath+".then",m.errSchemaPath=e.errSchemaPath+"/then",a+=" "+e.validate(m)+" ",m.baseId=b,a+=" "+c+" = "+h+"; ",g&&y?a+=" var "+(w="ifClause"+n)+" = 'then'; ":w="'then'",a+=" } ",y&&(a+=" else { ")):a+=" if (!"+h+") { ",y&&(m.schema=e.schema.else,m.schemaPath=e.schemaPath+".else",m.errSchemaPath=e.errSchemaPath+"/else",a+=" "+e.validate(m)+" ",m.baseId=b,a+=" "+c+" = "+h+"; ",g&&y?a+=" var "+(w="ifClause"+n)+" = 'else'; ":w="'else'",a+=" } "),a+=" if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { failingKeyword: "+w+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match \"' + "+w+" + '\" schema' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+=" } ",u&&(a+=" else { ")}else u&&(a+=" if (true) { ");return a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e),h="";m.level++;var f="valid"+m.level,v="i"+n,g=m.dataLevel=e.dataLevel+1,y="data"+g,b=e.baseId;if(a+="var "+p+" = errors;var "+c+";",Array.isArray(s)){var w=e.schema.additionalItems;if(!1===w){a+=" "+c+" = "+d+".length <= "+s.length+"; ";var k=l;l=e.errSchemaPath+"/additionalItems",a+=" if (!"+c+") { ";var _=_||[];_.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+s.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+s.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var P=a;a=_.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+P+"]); ":a+=" validate.errors = ["+P+"]; return false; ":a+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=k,u&&(h+="}",a+=" else { ")}var S=s;if(S)for(var z,A=-1,E=S.length-1;A0:e.util.schemaHasRules(z,e.RULES.all)){a+=" "+f+" = true; if ("+d+".length > "+A+") { ";var j=d+"["+A+"]";m.schema=z,m.schemaPath=o+"["+A+"]",m.errSchemaPath=l+"/"+A,m.errorPath=e.util.getPathExpr(e.errorPath,A,e.opts.jsonPointers,!0),m.dataPathArr[g]=A;var C=e.validate(m);m.baseId=b,e.util.varOccurences(C,y)<2?a+=" "+e.util.varReplace(C,y,j)+" ":a+=" var "+y+" = "+j+"; "+C+" ",a+=" } ",u&&(a+=" if ("+f+") { ",h+="}")}if("object"==typeof w&&(e.opts.strictKeywords?"object"==typeof w&&Object.keys(w).length>0:e.util.schemaHasRules(w,e.RULES.all))){m.schema=w,m.schemaPath=e.schemaPath+".additionalItems",m.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+f+" = true; if ("+d+".length > "+s.length+") { for (var "+v+" = "+s.length+"; "+v+" < "+d+".length; "+v+"++) { ",m.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);j=d+"["+v+"]";m.dataPathArr[g]=v;C=e.validate(m);m.baseId=b,e.util.varOccurences(C,y)<2?a+=" "+e.util.varReplace(C,y,j)+" ":a+=" var "+y+" = "+j+"; "+C+" ",u&&(a+=" if (!"+f+") break; "),a+=" } } ",u&&(a+=" if ("+f+") { ",h+="}")}}else if(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){m.schema=s,m.schemaPath=o,m.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+d+".length; "+v+"++) { ",m.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);j=d+"["+v+"]";m.dataPathArr[g]=v;C=e.validate(m);m.baseId=b,e.util.varOccurences(C,y)<2?a+=" "+e.util.varReplace(C,y,j)+" ":a+=" var "+y+" = "+j+"; "+C+" ",u&&(a+=" if (!"+f+") break; "),a+=" }"}return u&&(a+=" "+h+" if ("+p+" == errors) {"),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");n+="var division"+i+";if (",p&&(n+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),n+=" (division"+i+" = "+c+" / "+a+", ",e.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+i+") - division"+i+") > 1e-"+e.opts.multipleOfPrecision+" ":n+=" division"+i+" !== parseInt(division"+i+") ",n+=" ) ",p&&(n+=" ) "),n+=" ) { ";var m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be multiple of ",n+=p?"' + "+a:a+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var h=n;return n=m.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+h+"]); ":n+=" validate.errors = ["+h+"]; return false; ":n+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e);p.level++;var m="valid"+p.level;if(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l,a+=" var "+c+" = errors; ";var h,f=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1,p.opts.allErrors&&(h=p.opts.allErrors,p.opts.allErrors=!1),a+=" "+e.validate(p)+" ",p.createErrors=!0,h&&(p.opts.allErrors=h),e.compositeRule=p.compositeRule=f,a+=" if ("+m+") { ";var v=v||[];v.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var g=a;a=v.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+g+"]); ":a+=" validate.errors = ["+g+"]; return false; ":a+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(a+=" if (false) { ");return a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="valid"+n,p="errs__"+n,m=e.util.copy(e),h="";m.level++;var f="valid"+m.level,v=m.baseId,g="prevValid"+n,y="passingSchemas"+n;a+="var "+p+" = errors , "+g+" = false , "+c+" = false , "+y+" = null; ";var b=e.compositeRule;e.compositeRule=m.compositeRule=!0;var w=s;if(w)for(var k,_=-1,P=w.length-1;_0:e.util.schemaHasRules(k,e.RULES.all))?(m.schema=k,m.schemaPath=o+"["+_+"]",m.errSchemaPath=l+"/"+_,a+=" "+e.validate(m)+" ",m.baseId=v):a+=" var "+f+" = true; ",_&&(a+=" if ("+f+" && "+g+") { "+c+" = false; "+y+" = ["+y+", "+_+"]; } else { ",h+="}"),a+=" if ("+f+") { "+c+" = "+g+" = true; "+y+" = "+_+"; }";return e.compositeRule=m.compositeRule=b,a+=h+"if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a,n=" ",i=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,c="data"+(s||""),p=e.opts.$data&&o&&o.$data;p?(n+=" var schema"+i+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",a="schema"+i):a=o,n+="if ( ",p&&(n+=" ("+a+" !== undefined && typeof "+a+" != 'string') || "),n+=" !"+(p?"(new RegExp("+a+"))":e.usePattern(o))+".test("+c+") ) { ";var m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",n+=p?""+a:""+e.util.toQuotedString(o),n+=" } ",!1!==e.opts.messages&&(n+=" , message: 'should match pattern \"",n+=p?"' + "+a+" + '":""+e.util.escapeQuotes(o),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+l:""+e.util.toQuotedString(o),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var h=n;return n=m.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+h+"]); ":n+=" validate.errors = ["+h+"]; return false; ":n+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",d&&(n+=" else { "),n}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e),m="";p.level++;var h="valid"+p.level,f="key"+n,v="idx"+n,g=p.dataLevel=e.dataLevel+1,y="data"+g,b="dataProperties"+n,w=Object.keys(s||{}).filter(L),k=e.schema.patternProperties||{},_=Object.keys(k).filter(L),P=e.schema.additionalProperties,S=w.length||_.length,z=!1===P,A="object"==typeof P&&Object.keys(P).length,E=e.opts.removeAdditional,j=z||A||E,C=e.opts.ownProperties,O=e.baseId,x=e.schema.required;if(x&&(!e.opts.$data||!x.$data)&&x.length8)a+=" || validate.schema"+o+".hasOwnProperty("+f+") ";else{var T=w;if(T)for(var R=-1,D=T.length-1;R0:e.util.schemaHasRules(Y,e.RULES.all)){var X=e.util.getProperty(J),ee=(H=d+X,G&&void 0!==Y.default);p.schema=Y,p.schemaPath=o+X,p.errSchemaPath=l+"/"+e.util.escapeFragment(J),p.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),p.dataPathArr[g]=e.util.toQuotedString(J);W=e.validate(p);if(p.baseId=O,e.util.varOccurences(W,y)<2){W=e.util.varReplace(W,y,H);var te=H}else{te=y;a+=" var "+y+" = "+H+"; "}if(ee)a+=" "+W+" ";else{if($&&$[J]){a+=" if ( "+te+" === undefined ",C&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+h+" = false; ";U=e.errorPath,B=l;var re,ae=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(U,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(re=re||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+ae+"' } ",!1!==e.opts.messages&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+ae+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";M=a;a=re.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+M+"]); ":a+=" validate.errors = ["+M+"]; return false; ":a+=" var err = "+M+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=B,e.errorPath=U,a+=" } else { "}else u?(a+=" if ( "+te+" === undefined ",C&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+h+" = true; } else { "):(a+=" if ("+te+" !== undefined ",C&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(J)+"') "),a+=" ) { ");a+=" "+W+" } "}}u&&(a+=" if ("+h+") { ",m+="}")}}if(_.length){var ne=_;if(ne)for(var ie,se=-1,oe=ne.length-1;se0:e.util.schemaHasRules(Y,e.RULES.all)){p.schema=Y,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ie),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ie),a+=C?" "+b+" = "+b+" || Object.keys("+d+"); for (var "+v+"=0; "+v+"<"+b+".length; "+v+"++) { var "+f+" = "+b+"["+v+"]; ":" for (var "+f+" in "+d+") { ",a+=" if ("+e.usePattern(ie)+".test("+f+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers);H=d+"["+f+"]";p.dataPathArr[g]=f;W=e.validate(p);p.baseId=O,e.util.varOccurences(W,y)<2?a+=" "+e.util.varReplace(W,y,H)+" ":a+=" var "+y+" = "+H+"; "+W+" ",u&&(a+=" if (!"+h+") break; "),a+=" } ",u&&(a+=" else "+h+" = true; "),a+=" } ",u&&(a+=" if ("+h+") { ",m+="}")}}}return u&&(a+=" "+m+" if ("+c+" == errors) {"),a}},function(e,t,r){"use strict";e.exports=function(e,t,r){var a=" ",n=e.level,i=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,d="data"+(i||""),c="errs__"+n,p=e.util.copy(e);p.level++;var m="valid"+p.level;if(a+="var "+c+" = errors;",e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l;var h="key"+n,f="idx"+n,v="i"+n,g="' + "+h+" + '",y="data"+(p.dataLevel=e.dataLevel+1),b="dataProperties"+n,w=e.opts.ownProperties,k=e.baseId;w&&(a+=" var "+b+" = undefined; "),a+=w?" "+b+" = "+b+" || Object.keys("+d+"); for (var "+f+"=0; "+f+"<"+b+".length; "+f+"++) { var "+h+" = "+b+"["+f+"]; ":" for (var "+h+" in "+d+") { ",a+=" var startErrs"+n+" = errors; ";var _=h,P=e.compositeRule;e.compositeRule=p.compositeRule=!0;var S=e.validate(p);p.baseId=k,e.util.varOccurences(S,y)<2?a+=" "+e.util.varReplace(S,y,_)+" ":a+=" var "+y+" = "+_+"; "+S+" ",e.compositeRule=p.compositeRule=P,a+=" if (!"+m+") { for (var "+v+"=startErrs"+n+"; "+v+"0:e.util.schemaHasRules(b,e.RULES.all))||(h[h.length]=v)}}else h=s;if(p||h.length){var w=e.errorPath,k=p||h.length>=e.opts.loopRequired,_=e.opts.ownProperties;if(u)if(a+=" var missing"+n+"; ",k){p||(a+=" var "+m+" = validate.schema"+o+"; ");var P="' + "+(C="schema"+n+"["+(A="i"+n)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(w,C,e.opts.jsonPointers)),a+=" var "+c+" = true; ",p&&(a+=" if (schema"+n+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+n+")) "+c+" = false; else {"),a+=" for (var "+A+" = 0; "+A+" < "+m+".length; "+A+"++) { "+c+" = "+d+"["+m+"["+A+"]] !== undefined ",_&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", "+m+"["+A+"]) "),a+="; if (!"+c+") break; } ",p&&(a+=" } "),a+=" if (!"+c+") { ",(j=j||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+P+"' } ",!1!==e.opts.messages&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+P+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var S=a;a=j.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+S+"]); ":a+=" validate.errors = ["+S+"]; return false; ":a+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var z=h;if(z)for(var A=-1,E=z.length-1;A 1) { ";var h=e.schema.items&&e.schema.items.type,f=Array.isArray(h);if(!h||"object"==h||"array"==h||f&&(h.indexOf("object")>=0||h.indexOf("array")>=0))n+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+c+"[i], "+c+"[j])) { "+p+" = false; break outer; } } } ";else{n+=" var itemIndices = {}, item; for (;i--;) { var item = "+c+"[i]; ";var v="checkDataType"+(f?"s":"");n+=" if ("+e.util[v](h,"item",e.opts.strictNumbers,!0)+") continue; ",f&&(n+=" if (typeof item == 'string') item = '\"' + item; "),n+=" if (typeof itemIndices[item] == 'number') { "+p+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}n+=" } ",m&&(n+=" } "),n+=" if (!"+p+") { ";var g=g||[];g.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=m?"validate.schema"+l:""+o,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),n+=" } "):n+=" {} ";var y=n;n=g.pop(),!e.compositeRule&&d?e.async?n+=" throw new ValidationError(["+y+"]); ":n+=" validate.errors = ["+y+"]; return false; ":n+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",d&&(n+=" else { ")}else d&&(n+=" if (true) { ");return n}},function(e,t,r){"use strict";var a=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(e,t){for(var r=0;r)?=?)";var E=l++;o[E]=o[p]+"|x|X|\\*";var j=l++;o[j]=o[c]+"|x|X|\\*";var C=l++;o[C]="[v=\\s]*("+o[j]+")(?:\\.("+o[j]+")(?:\\.("+o[j]+")(?:"+o[y]+")?"+o[k]+"?)?)?";var O=l++;o[O]="[v=\\s]*("+o[E]+")(?:\\.("+o[E]+")(?:\\.("+o[E]+")(?:"+o[b]+")?"+o[k]+"?)?)?";var x=l++;o[x]="^"+o[A]+"\\s*"+o[C]+"$";var $=l++;o[$]="^"+o[A]+"\\s*"+o[O]+"$";var L=l++;o[L]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var T=l++;o[T]="(?:~>?)";var R=l++;o[R]="(\\s*)"+o[T]+"\\s+",i[R]=new RegExp(o[R],"g"),s[R]=new RegExp(d(o[R]),"g");var D=l++;o[D]="^"+o[T]+o[C]+"$";var I=l++;o[I]="^"+o[T]+o[O]+"$";var F=l++;o[F]="(?:\\^)";var V=l++;o[V]="(\\s*)"+o[F]+"\\s+",i[V]=new RegExp(o[V],"g"),s[V]=new RegExp(d(o[V]),"g");var U=l++;o[U]="^"+o[F]+o[C]+"$";var N=l++;o[N]="^"+o[F]+o[O]+"$";var B=l++;o[B]="^"+o[A]+"\\s*("+S+")$|^$";var M=l++;o[M]="^"+o[A]+"\\s*("+P+")$|^$";var q=l++;o[q]="(\\s*)"+o[A]+"\\s*("+S+"|"+o[C]+")",i[q]=new RegExp(o[q],"g"),s[q]=new RegExp(d(o[q]),"g");var H=l++;o[H]="^\\s*("+o[C]+")\\s+-\\s+("+o[C]+")\\s*$";var W=l++;o[W]="^\\s*("+o[O]+")\\s+-\\s+("+o[O]+")\\s*$";var G=l++;o[G]="(<|>)?=?\\s*\\*";for(var K=0;K<35;K++)a(K,o[K]),i[K]||(i[K]=new RegExp(o[K]),s[K]=new RegExp(d(o[K])));function J(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Z)return e;if("string"!=typeof e)return null;if(e.length>256)return null;if(!(t.loose?s[z]:s[_]).test(e))return null;try{return new Z(e,t)}catch(e){return null}}function Z(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Z){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>256)throw new TypeError("version is longer than 256 characters");if(!(this instanceof Z))return new Z(e,t);a("SemVer",e,t),this.options=t,this.loose=!!t.loose;var r=e.trim().match(t.loose?s[z]:s[_]);if(!r)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);-1===r&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,r,a){"string"==typeof r&&(a=r,r=void 0);try{return new Z(e,r).inc(t,a).version}catch(e){return null}},t.diff=function(e,t){if(re(e,t))return null;var r=J(e),a=J(t),n="";if(r.prerelease.length||a.prerelease.length){n="pre";var i="prerelease"}for(var s in r)if(("major"===s||"minor"===s||"patch"===s)&&r[s]!==a[s])return n+s;return i},t.compareIdentifiers=Y;var Q=/^[0-9]+$/;function Y(e,t){var r=Q.test(e),a=Q.test(t);return r&&a&&(e=+e,t=+t),e===t?0:r&&!a?-1:a&&!r?1:e0}function te(e,t,r){return X(e,t,r)<0}function re(e,t,r){return 0===X(e,t,r)}function ae(e,t,r){return 0!==X(e,t,r)}function ne(e,t,r){return X(e,t,r)>=0}function ie(e,t,r){return X(e,t,r)<=0}function se(e,t,r,a){switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e===r;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e!==r;case"":case"=":case"==":return re(e,r,a);case"!=":return ae(e,r,a);case">":return ee(e,r,a);case">=":return ne(e,r,a);case"<":return te(e,r,a);case"<=":return ie(e,r,a);default:throw new TypeError("Invalid operator: "+t)}}function oe(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof oe){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof oe))return new oe(e,t);e=e.trim().split(/\s+/).join(" "),a("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===le?this.value="":this.value=this.operator+this.semver.version,a("comp",this)}t.rcompareIdentifiers=function(e,t){return Y(t,e)},t.major=function(e,t){return new Z(e,t).major},t.minor=function(e,t){return new Z(e,t).minor},t.patch=function(e,t){return new Z(e,t).patch},t.compare=X,t.compareLoose=function(e,t){return X(e,t,!0)},t.rcompare=function(e,t,r){return X(t,e,r)},t.sort=function(e,r){return e.sort((function(e,a){return t.compare(e,a,r)}))},t.rsort=function(e,r){return e.sort((function(e,a){return t.rcompare(e,a,r)}))},t.gt=ee,t.lt=te,t.eq=re,t.neq=ae,t.gte=ne,t.lte=ie,t.cmp=se,t.Comparator=oe;var le={};function ue(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof ue)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new ue(e.raw,t);if(e instanceof oe)return new ue(e.value,t);if(!(this instanceof ue))return new ue(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+this.raw);this.format()}function de(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,t,r,a,n,i,s,o,l,u,d,c,p){return((t=de(r)?"":de(a)?">="+r+".0.0":de(n)?">="+r+"."+a+".0":">="+t)+" "+(o=de(l)?"":de(u)?"<"+(+l+1)+".0.0":de(d)?"<"+l+"."+(+u+1)+".0":c?"<="+l+"."+u+"."+d+"-"+c:"<="+o)).trim()}function pe(e,t,r){for(var n=0;n0){var i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0}function me(e,t,r){try{t=new ue(t,r)}catch(e){return!1}return t.test(e)}function he(e,t,r,a){var n,i,s,o,l;switch(e=new Z(e,a),t=new ue(t,a),r){case">":n=ee,i=ie,s=te,o=">",l=">=";break;case"<":n=te,i=ne,s=ee,o="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(me(e,t,a))return!1;for(var u=0;u=0.0.0")),c=c||e,p=p||e,n(e.semver,c.semver,a)?c=e:s(e.semver,p.semver,a)&&(p=e)})),c.operator===o||c.operator===l)return!1;if((!p.operator||p.operator===o)&&i(e,p.semver))return!1;if(p.operator===l&&s(e,p.semver))return!1}return!0}oe.prototype.parse=function(e){var t=this.options.loose?s[B]:s[M],r=e.match(t);if(!r)throw new TypeError("Invalid comparator: "+e);this.operator=r[1],"="===this.operator&&(this.operator=""),r[2]?this.semver=new Z(r[2],this.options.loose):this.semver=le},oe.prototype.toString=function(){return this.value},oe.prototype.test=function(e){return a("Comparator.test",e,this.options.loose),this.semver===le||("string"==typeof e&&(e=new Z(e,this.options)),se(e,this.operator,this.semver,this.options))},oe.prototype.intersects=function(e,t){if(!(e instanceof oe))throw new TypeError("a Comparator is required");var r;if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return r=new ue(e.value,t),me(this.value,r,t);if(""===e.operator)return r=new ue(this.value,t),me(e.semver,r,t);var a=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),n=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),i=this.semver.version===e.semver.version,s=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),o=se(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),l=se(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return a||n||i&&s||o||l},t.Range=ue,ue.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},ue.prototype.toString=function(){return this.range},ue.prototype.parseRange=function(e){var t=this.options.loose,r=t?s[W]:s[H];e=e.replace(r,ce),a("hyphen replace",e),e=e.replace(s[q],"$1$2$3"),a("comparator trim",e,s[q]),e=(e=e.replace(s[R],"$1~")).replace(s[V],"$1^");var n=t?s[B]:s[M],i=e.split(" ").map((function(e){return function(e,t){return a("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){a("caret",e,t);var r=t.loose?s[N]:s[U];return e.replace(r,(function(t,r,n,i,s){var o;return a("caret",e,t,r,n,i,s),de(r)?o="":de(n)?o=">="+r+".0.0 <"+(+r+1)+".0.0":de(i)?o="0"===r?">="+r+"."+n+".0 <"+r+"."+(+n+1)+".0":">="+r+"."+n+".0 <"+(+r+1)+".0.0":s?(a("replaceCaret pr",s),o="0"===r?"0"===n?">="+r+"."+n+"."+i+"-"+s+" <"+r+"."+n+"."+(+i+1):">="+r+"."+n+"."+i+"-"+s+" <"+r+"."+(+n+1)+".0":">="+r+"."+n+"."+i+"-"+s+" <"+(+r+1)+".0.0"):(a("no pr"),o="0"===r?"0"===n?">="+r+"."+n+"."+i+" <"+r+"."+n+"."+(+i+1):">="+r+"."+n+"."+i+" <"+r+"."+(+n+1)+".0":">="+r+"."+n+"."+i+" <"+(+r+1)+".0.0"),a("caret return",o),o}))}(e,t)})).join(" ")}(e,t),a("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var r=t.loose?s[I]:s[D];return e.replace(r,(function(t,r,n,i,s){var o;return a("tilde",e,t,r,n,i,s),de(r)?o="":de(n)?o=">="+r+".0.0 <"+(+r+1)+".0.0":de(i)?o=">="+r+"."+n+".0 <"+r+"."+(+n+1)+".0":s?(a("replaceTilde pr",s),o=">="+r+"."+n+"."+i+"-"+s+" <"+r+"."+(+n+1)+".0"):o=">="+r+"."+n+"."+i+" <"+r+"."+(+n+1)+".0",a("tilde return",o),o}))}(e,t)})).join(" ")}(e,t),a("tildes",e),e=function(e,t){return a("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var r=t.loose?s[$]:s[x];return e.replace(r,(function(t,r,n,i,s,o){a("xRange",e,t,r,n,i,s,o);var l=de(n),u=l||de(i),d=u||de(s);return"="===r&&d&&(r=""),l?t=">"===r||"<"===r?"<0.0.0":"*":r&&d?(u&&(i=0),s=0,">"===r?(r=">=",u?(n=+n+1,i=0,s=0):(i=+i+1,s=0)):"<="===r&&(r="<",u?n=+n+1:i=+i+1),t=r+n+"."+i+"."+s):u?t=">="+n+".0.0 <"+(+n+1)+".0.0":d&&(t=">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0"),a("xRange return",t),t}))}(e,t)})).join(" ")}(e,t),a("xrange",e),e=function(e,t){return a("replaceStars",e,t),e.trim().replace(s[G],"")}(e,t),a("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(i=i.filter((function(e){return!!e.match(n)}))),i=i.map((function(e){return new oe(e,this.options)}),this)},ue.prototype.intersects=function(e,t){if(!(e instanceof ue))throw new TypeError("a Range is required");return this.set.some((function(r){return r.every((function(r){return e.set.some((function(e){return e.every((function(e){return r.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new ue(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},ue.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new Z(e,this.options));for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":r&&!ee(r,t)||(r=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}))}if(r&&e.test(r))return r;return null},t.validRange=function(e,t){try{return new ue(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,r){return he(e,t,"<",r)},t.gtr=function(e,t,r){return he(e,t,">",r)},t.outside=he,t.prerelease=function(e,t){var r=J(e,t);return r&&r.prerelease.length?r.prerelease:null},t.intersects=function(e,t,r){return e=new ue(e,r),t=new ue(t,r),e.intersects(t)},t.coerce=function(e){if(e instanceof Z)return e;if("string"!=typeof e)return null;var t=e.match(s[L]);if(null==t)return null;return J(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}}).call(this,r(17))},function(e,t,r){var a;!function(n){var i=/^\s+/,s=/\s+$/,o=0,l=n.round,u=n.min,d=n.max,c=n.random;function p(e,t){if(t=t||{},(e=e||"")instanceof p)return e;if(!(this instanceof p))return new p(e,t);var r=function(e){var t={r:0,g:0,b:0},r=1,a=null,o=null,l=null,c=!1,p=!1;"string"==typeof e&&(e=function(e){e=e.replace(i,"").replace(s,"").toLowerCase();var t,r=!1;if(O[e])e=O[e],r=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(t=M.rgb.exec(e))return{r:t[1],g:t[2],b:t[3]};if(t=M.rgba.exec(e))return{r:t[1],g:t[2],b:t[3],a:t[4]};if(t=M.hsl.exec(e))return{h:t[1],s:t[2],l:t[3]};if(t=M.hsla.exec(e))return{h:t[1],s:t[2],l:t[3],a:t[4]};if(t=M.hsv.exec(e))return{h:t[1],s:t[2],v:t[3]};if(t=M.hsva.exec(e))return{h:t[1],s:t[2],v:t[3],a:t[4]};if(t=M.hex8.exec(e))return{r:R(t[1]),g:R(t[2]),b:R(t[3]),a:V(t[4]),format:r?"name":"hex8"};if(t=M.hex6.exec(e))return{r:R(t[1]),g:R(t[2]),b:R(t[3]),format:r?"name":"hex"};if(t=M.hex4.exec(e))return{r:R(t[1]+""+t[1]),g:R(t[2]+""+t[2]),b:R(t[3]+""+t[3]),a:V(t[4]+""+t[4]),format:r?"name":"hex8"};if(t=M.hex3.exec(e))return{r:R(t[1]+""+t[1]),g:R(t[2]+""+t[2]),b:R(t[3]+""+t[3]),format:r?"name":"hex"};return!1}(e));"object"==typeof e&&(q(e.r)&&q(e.g)&&q(e.b)?(m=e.r,h=e.g,f=e.b,t={r:255*L(m,255),g:255*L(h,255),b:255*L(f,255)},c=!0,p="%"===String(e.r).substr(-1)?"prgb":"rgb"):q(e.h)&&q(e.s)&&q(e.v)?(a=I(e.s),o=I(e.v),t=function(e,t,r){e=6*L(e,360),t=L(t,100),r=L(r,100);var a=n.floor(e),i=e-a,s=r*(1-t),o=r*(1-i*t),l=r*(1-(1-i)*t),u=a%6;return{r:255*[r,o,s,s,l,r][u],g:255*[l,r,r,o,s,s][u],b:255*[s,s,l,r,r,o][u]}}(e.h,a,o),c=!0,p="hsv"):q(e.h)&&q(e.s)&&q(e.l)&&(a=I(e.s),l=I(e.l),t=function(e,t,r){var a,n,i;function s(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e}if(e=L(e,360),t=L(t,100),r=L(r,100),0===t)a=n=i=r;else{var o=r<.5?r*(1+t):r+t-r*t,l=2*r-o;a=s(l,o,e+1/3),n=s(l,o,e),i=s(l,o,e-1/3)}return{r:255*a,g:255*n,b:255*i}}(e.h,a,l),c=!0,p="hsl"),e.hasOwnProperty("a")&&(r=e.a));var m,h,f;return r=$(r),{ok:c,format:e.format||p,r:u(255,d(t.r,0)),g:u(255,d(t.g,0)),b:u(255,d(t.b,0)),a:r}}(e);this._originalInput=e,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=l(100*this._a)/100,this._format=t.format||r.format,this._gradientType=t.gradientType,this._r<1&&(this._r=l(this._r)),this._g<1&&(this._g=l(this._g)),this._b<1&&(this._b=l(this._b)),this._ok=r.ok,this._tc_id=o++}function m(e,t,r){e=L(e,255),t=L(t,255),r=L(r,255);var a,n,i=d(e,t,r),s=u(e,t,r),o=(i+s)/2;if(i==s)a=n=0;else{var l=i-s;switch(n=o>.5?l/(2-i-s):l/(i+s),i){case e:a=(t-r)/l+(t>1)+720)%360;--t;)a.h=(a.h+n)%360,i.push(p(a));return i}function C(e,t){t=t||6;for(var r=p(e).toHsv(),a=r.h,n=r.s,i=r.v,s=[],o=1/t;t--;)s.push(p({h:a,s:n,v:i})),i=(i+o)%1;return s}p.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,r,a=this.toRgb();return e=a.r/255,t=a.g/255,r=a.b/255,.2126*(e<=.03928?e/12.92:n.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:n.pow((t+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:n.pow((r+.055)/1.055,2.4))},setAlpha:function(e){return this._a=$(e),this._roundA=l(100*this._a)/100,this},toHsv:function(){var e=h(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=h(this._r,this._g,this._b),t=l(360*e.h),r=l(100*e.s),a=l(100*e.v);return 1==this._a?"hsv("+t+", "+r+"%, "+a+"%)":"hsva("+t+", "+r+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var e=m(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=m(this._r,this._g,this._b),t=l(360*e.h),r=l(100*e.s),a=l(100*e.l);return 1==this._a?"hsl("+t+", "+r+"%, "+a+"%)":"hsla("+t+", "+r+"%, "+a+"%, "+this._roundA+")"},toHex:function(e){return f(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,r,a,n){var i=[D(l(e).toString(16)),D(l(t).toString(16)),D(l(r).toString(16)),D(F(a))];if(n&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)&&i[3].charAt(0)==i[3].charAt(1))return i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0)+i[3].charAt(0);return i.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:l(this._r),g:l(this._g),b:l(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+l(this._r)+", "+l(this._g)+", "+l(this._b)+")":"rgba("+l(this._r)+", "+l(this._g)+", "+l(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:l(100*L(this._r,255))+"%",g:l(100*L(this._g,255))+"%",b:l(100*L(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+l(100*L(this._r,255))+"%, "+l(100*L(this._g,255))+"%, "+l(100*L(this._b,255))+"%)":"rgba("+l(100*L(this._r,255))+"%, "+l(100*L(this._g,255))+"%, "+l(100*L(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(x[f(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+v(this._r,this._g,this._b,this._a),r=t,a=this._gradientType?"GradientType = 1, ":"";if(e){var n=p(e);r="#"+v(n._r,n._g,n._b,n._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+t+",endColorstr="+r+")"},toString:function(e){var t=!!e;e=e||this._format;var r=!1,a=this._a<1&&this._a>=0;return t||!a||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(r=this.toRgbString()),"prgb"===e&&(r=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(r=this.toHexString()),"hex3"===e&&(r=this.toHexString(!0)),"hex4"===e&&(r=this.toHex8String(!0)),"hex8"===e&&(r=this.toHex8String()),"name"===e&&(r=this.toName()),"hsl"===e&&(r=this.toHslString()),"hsv"===e&&(r=this.toHsvString()),r||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return p(this.toString())},_applyModification:function(e,t){var r=e.apply(null,[this].concat([].slice.call(t)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(w,arguments)},brighten:function(){return this._applyModification(k,arguments)},darken:function(){return this._applyModification(_,arguments)},desaturate:function(){return this._applyModification(g,arguments)},saturate:function(){return this._applyModification(y,arguments)},greyscale:function(){return this._applyModification(b,arguments)},spin:function(){return this._applyModification(P,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(j,arguments)},complement:function(){return this._applyCombination(S,arguments)},monochromatic:function(){return this._applyCombination(C,arguments)},splitcomplement:function(){return this._applyCombination(E,arguments)},triad:function(){return this._applyCombination(z,arguments)},tetrad:function(){return this._applyCombination(A,arguments)}},p.fromRatio=function(e,t){if("object"==typeof e){var r={};for(var a in e)e.hasOwnProperty(a)&&(r[a]="a"===a?e[a]:I(e[a]));e=r}return p(e,t)},p.equals=function(e,t){return!(!e||!t)&&p(e).toRgbString()==p(t).toRgbString()},p.random=function(){return p.fromRatio({r:c(),g:c(),b:c()})},p.mix=function(e,t,r){r=0===r?0:r||50;var a=p(e).toRgb(),n=p(t).toRgb(),i=r/100;return p({r:(n.r-a.r)*i+a.r,g:(n.g-a.g)*i+a.g,b:(n.b-a.b)*i+a.b,a:(n.a-a.a)*i+a.a})},p.readability=function(e,t){var r=p(e),a=p(t);return(n.max(r.getLuminance(),a.getLuminance())+.05)/(n.min(r.getLuminance(),a.getLuminance())+.05)},p.isReadable=function(e,t,r){var a,n,i=p.readability(e,t);switch(n=!1,(a=function(e){var t,r;t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase(),r=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA");"small"!==r&&"large"!==r&&(r="small");return{level:t,size:r}}(r)).level+a.size){case"AAsmall":case"AAAlarge":n=i>=4.5;break;case"AAlarge":n=i>=3;break;case"AAAsmall":n=i>=7}return n},p.mostReadable=function(e,t,r){var a,n,i,s,o=null,l=0;n=(r=r||{}).includeFallbackColors,i=r.level,s=r.size;for(var u=0;ul&&(l=a,o=p(t[u]));return p.isReadable(e,o,{level:i,size:s})||!n?o:(r.includeFallbackColors=!1,p.mostReadable(e,["#fff","#000"],r))};var O=p.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},x=p.hexNames=function(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[e[r]]=r);return t}(O);function $(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function L(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var r=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=u(t,d(0,parseFloat(e))),r&&(e=parseInt(e*t,10)/100),n.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function T(e){return u(1,d(0,e))}function R(e){return parseInt(e,16)}function D(e){return 1==e.length?"0"+e:""+e}function I(e){return e<=1&&(e=100*e+"%"),e}function F(e){return n.round(255*parseFloat(e)).toString(16)}function V(e){return R(e)/255}var U,N,B,M=(N="[\\s|\\(]+("+(U="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+U+")[,|\\s]+("+U+")\\s*\\)?",B="[\\s|\\(]+("+U+")[,|\\s]+("+U+")[,|\\s]+("+U+")[,|\\s]+("+U+")\\s*\\)?",{CSS_UNIT:new RegExp(U),rgb:new RegExp("rgb"+N),rgba:new RegExp("rgba"+B),hsl:new RegExp("hsl"+N),hsla:new RegExp("hsla"+B),hsv:new RegExp("hsv"+N),hsva:new RegExp("hsva"+B),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function q(e){return!!M.CSS_UNIT.exec(e)}e.exports?e.exports=p:void 0===(a=function(){return p}.call(t,r,t,e))||(e.exports=a)}(Math)},function(e){e.exports=JSON.parse('{"title":"Capability","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]}},"required":["title","type"],"anyOf":[{"required":["getable"]},{"required":["setable"]}],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"desc":{"$ref":"#/definitions/i18nObject"},"type":{"type":"string","enum":["boolean","number","string","enum"]},"getable":{"type":"boolean","default":true},"setable":{"type":"boolean","default":true},"icon":{"type":"string"},"insights":{"type":"boolean"},"insightsTitleTrue":{"$ref":"#/definitions/i18nObject"},"insightsTitleFalse":{"$ref":"#/definitions/i18nObject"},"chartType":{"type":"string","enum":["line","area","stepLine","column","spline","splineArea","scatter"]},"decimals":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"units":{"$ref":"#/definitions/i18nObject"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"uiComponent":{"oneOf":[{"type":"string","enum":["thermostat","media","toggle","slider","ternary","button","color","picker","sensor","battery"]},{"type":"null"}]}},"_comment":"Require `values` array when `type` is `enum`","oneOf":[{"properties":{"type":{"type":"string","enum":["enum"]}},"required":["values"]},{"properties":{"type":{"type":"string","enum":["boolean","number","string"]}}}]}')},function(e){e.exports=JSON.parse('["onoff","dim","light_hue","light_saturation","light_temperature","light_mode","vacuumcleaner_state","thermostat_mode","target_temperature","measure_temperature","measure_co","measure_co2","measure_pm25","measure_humidity","measure_pressure","measure_noise","measure_rain","measure_wind_strength","measure_wind_angle","measure_gust_strength","measure_gust_angle","measure_battery","measure_power","measure_voltage","measure_current","measure_luminance","measure_ultraviolet","measure_water","alarm_generic","alarm_motion","alarm_contact","alarm_co","alarm_co2","alarm_pm25","alarm_tamper","alarm_smoke","alarm_fire","alarm_heat","alarm_water","alarm_battery","alarm_night","meter_power","meter_water","meter_gas","meter_rain","homealarm_state","volume_set","volume_up","volume_down","volume_mute","channel_up","channel_down","locked","lock_mode","garagedoor_closed","windowcoverings_state","windowcoverings_tilt_up","windowcoverings_tilt_down","windowcoverings_tilt_set","windowcoverings_closed","windowcoverings_set","button","speaker_playing","speaker_next","speaker_prev","speaker_shuffle","speaker_repeat","speaker_artist","speaker_album","speaker_track","speaker_duration","speaker_position"]')},function(e,t,r){var a={"./alarm_battery.json":74,"./alarm_co.json":75,"./alarm_co2.json":76,"./alarm_contact.json":77,"./alarm_fire.json":78,"./alarm_generic.json":79,"./alarm_heat.json":80,"./alarm_motion.json":81,"./alarm_night.json":82,"./alarm_pm25.json":83,"./alarm_smoke.json":84,"./alarm_tamper.json":85,"./alarm_water.json":86,"./button.json":87,"./channel_down.json":88,"./channel_up.json":89,"./dim.json":90,"./garagedoor_closed.json":91,"./homealarm_state.json":92,"./light_hue.json":93,"./light_mode.json":94,"./light_saturation.json":95,"./light_temperature.json":96,"./lock_mode.json":97,"./locked.json":98,"./measure_battery.json":99,"./measure_co.json":100,"./measure_co2.json":101,"./measure_current.json":102,"./measure_gust_angle.json":103,"./measure_gust_strength.json":104,"./measure_humidity.json":105,"./measure_luminance.json":106,"./measure_noise.json":107,"./measure_pm25.json":108,"./measure_power.json":109,"./measure_pressure.json":110,"./measure_rain.json":111,"./measure_temperature.json":112,"./measure_ultraviolet.json":113,"./measure_voltage.json":114,"./measure_water.json":115,"./measure_wind_angle.json":116,"./measure_wind_strength.json":117,"./meter_gas.json":118,"./meter_power.json":119,"./meter_rain.json":120,"./meter_water.json":121,"./onoff.json":122,"./speaker_album.json":123,"./speaker_artist.json":124,"./speaker_duration.json":125,"./speaker_next.json":126,"./speaker_playing.json":127,"./speaker_position.json":128,"./speaker_prev.json":129,"./speaker_repeat.json":130,"./speaker_shuffle.json":131,"./speaker_track.json":132,"./target_temperature.json":133,"./thermostat_mode.json":134,"./vacuumcleaner_state.json":135,"./volume_down.json":136,"./volume_mute.json":137,"./volume_set.json":138,"./volume_up.json":139,"./windowcoverings_closed.json":140,"./windowcoverings_set.json":141,"./windowcoverings_state.json":142,"./windowcoverings_tilt_down.json":143,"./windowcoverings_tilt_set.json":144,"./windowcoverings_tilt_up.json":145};function n(e){var t=i(e);return r(t)}function i(e){if(!r.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}n.keys=function(){return Object.keys(a)},n.resolve=i,e.exports=n,n.id=73},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Battery alarm","nl":"Batterij alarm","de":"Batterie-Alarm","fr":"Alarme batterie","it":"Allarme batteria","sv":"Batterialarm","no":"Batterialarm","es":"Alarma de batería","da":"Batterialarm","ru":"Сигнал аккумулятора","pl":"Alarm stanu baterii"},"desc":{"en":"True when there is a battery warning","nl":"Geeft een batterijwaarschuwing","de":"True, wenn es eine Batterie-Warnung gibt","fr":"Vrai quand il y a un avertissement de batterie","it":"Vero quando c\'è un avvertimento sulla batteria","sv":"Sant när det finns en batterivarning","no":"Sant når det finnes en batteriadvarsel","es":"Verdadero cuando hay una advertencia de la batería","da":"Sandt, når der er en batterialarm","ru":"Верно, когда есть предупреждение об аккумуляторе","pl":"Adekwatny, kiedy włączy się ostrzeżenie o stanie baterii"},"insights":true,"insightsTitleTrue":{"en":"Battery alarm turned on","nl":"Batterijalarm ging af","de":"Batterie-Alarm ist angegangen","fr":"Alarme batterie activée","it":"Allarme batteria attivato","sv":"Batterialarm aktiverat","no":"Batterialarm aktivert","es":"Alarma de la batería activada","da":"Batterialarm aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony"},"insightsTitleFalse":{"en":"Battery alarm turned off","nl":"Batterijalarm ging uit","de":"Batterie-Alarm ist ausgegangen","fr":"Alarme batterie désactivée","it":"Allarme batteria disattivato","sv":"Batterialarm avstängt","no":"Batterialarm deaktivert","es":"Alarma de la batería desactivada","da":"Batterialarm deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony"},"getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"alarm_battery_true","highlight":true,"title":{"en":"The battery alarm turned on","nl":"De batterijwaarschuwing gaat aan","de":"Der Batterie-Alarm ist angegangen","fr":"L\'alarme batterie s\'est activée","it":"L\'allarme della batteria è stato attivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen er aktivert","es":"La alarma de la batería se ha activado","da":"Batterialarm aktiverede","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony"}},{"id":"alarm_battery_false","title":{"en":"The battery alarm turned off","nl":"De batterijwaarschuwing gaat uit","de":"Der Batterie-Alarm ist ausgegangen","fr":"L\'alarme batterie s\'est désactivée","it":"L\'allarme della batteria è stato disattivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen er deaktivert","es":"La alarma de la batería se ha desactivado","da":"Batterialarm deaktiverede","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony"}}],"conditions":[{"id":"alarm_battery","title":{"en":"The battery alarm is !{{on|off}}","nl":"De batterijwaarschuwing is !{{aan|uit}}","de":"Der Batterie-Alarm ist !{{an|aus}}","fr":"L\'alarme batterie est !{{en marche|arrêtée}}","it":"L\'allarme della batteria è !{{acceso|spento}}","sv":"Batterialarmet är !{{på|av}}","no":"Batterialarmen er !{{på|av}}","es":"La alarma de la batería está !{{activada|desactivada}}","da":"Batterialarmen er !{{tændt|slukket}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO alarm","nl":"CO alarm","de":"CO-Alarm","fr":"Alarme CO","it":"Allarme CO","sv":"CO-larm","no":"CO-alarm","es":"Alarma de CO","da":"CO-alarm","ru":"Сигнал CO","pl":"Alarm o CO"},"desc":{"en":"True when dangerous CO values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO","de":"True, wenn gefährliche CO-Werte erkannt wurden","fr":"Vrai si des valeurs de CO dangereuses ont été détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO","sv":"Sant när farliga CO-värden upptäcks","no":"Sant når farlige CO-verdier påvises","es":"Verdadero cuando se han detectado valores peligrosos de CO","da":"Sandt, når farlige CO-værdier er blevet opdaget","ru":"Верно при обнаружении опасных значений CO","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia CO"},"insights":true,"insightsTitleTrue":{"en":"CO alarm turned on","nl":"CO alarm ging af","de":"CO-Alarm ist angegangen","fr":"L\'alarme CO est activée","it":"Allarme CO attivato","sv":"CO-larm aktiverat","no":"CO-alarm aktivert","es":"Alarma de CO activada","da":"CO-alarm aktiveret","ru":"Сигнал CO включен","pl":"Alarm o CO włączony"},"insightsTitleFalse":{"en":"CO alarm turned off","nl":"CO alarm ging uit","de":"CO-Alarm ist ausgegangen","fr":"L\'alarme CO est désactivée","it":"Allarme CO disattivato","sv":"CO-larm inaktiverat","no":"CO-alarm deaktivert","es":"Alarma de CO desactivada","da":"CO-alarm deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co_true","highlight":true,"title":{"en":"The CO alarm turned on","nl":"Het CO alarm gaat aan","de":"Der CO-Alarm ist angegangen","fr":"L\'alarme CO s\'est activée","it":"L\'allarme CO è stato attivato","sv":"CO-larmet aktiverades","no":"CO-alarmen aktivert","es":"La alarma de CO se ha activado","da":"CO-alarmen blev aktiveredt","ru":"Сигнал CO включен","pl":"Alarm o CO włączony"}},{"id":"alarm_co_false","title":{"en":"The CO alarm turned off","nl":"Het CO alarm gaat uit","de":"Der CO-Alarm ist ausgegangen","fr":"L\'alarme CO s\'est désactivée","it":"L\'allarme CO è stato disattivato","sv":"CO-larmet inaktiverades","no":"CO-alarmen deaktivert","es":"La alarma de CO se ha desactivado","da":"CO-alarmen blev deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony"}}],"conditions":[{"id":"alarm_co","title":{"en":"The CO alarm is !{{on|off}}","nl":"Het CO alarm is !{{aan|uit}}","de":"Der CO-Alarm ist !{{an|aus}}","fr":"L\'alarme CO est !{{en marche|arrêtée}}","it":"L\'allarme CO è !{{acceso|spento}}","sv":"CO-larmet är !{{på|av}}","no":"CO-alarmen er !{{på|av}}","es":"La alarma de CO está !{{activada|desactivada}}","da":"CO-alarmen er !{{på|af}}","ru":"Сигнал CO !{{вкл.|выкл.}}","pl":"Alarm Alarm o CO !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO2 alarm","nl":"CO2 alarm","de":"CO2-Alarm","fr":"Alarme CO2","it":"Allarme CO2","no":"CO2-alarm","es":"Alarma de CO2","da":"CO2-alarm","ru":"Сигнал CO2","pl":"Alarm o CO2"},"desc":{"en":"True when dangerous CO2 values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO2 alarm","de":"True, wenn gefährliche CO2-Werte erkannt wurden","fr":"Vrai si des valeurs dangereuses de CO2 ont été détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO2","no":"Sant når farlige CO2-verdier har blitt oppdaget","es":"Verdadero cuando se han detectado valores peligrosos de CO2","da":"Sandt, når farlige CO2-værdier er blevet opdaget","ru":"Верно при обнаружении опасных значений CO2","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia CO2"},"insights":true,"insightsTitleTrue":{"en":"CO2 alarm turned on","nl":"CO2 alarm ging af","de":"CO2-Alarm ist angegangen","fr":"L\'alarme CO2 s\'est activée","it":"Allarme CO2 attivato","sv":"CO2-larm på","no":"CO2-alarm aktivert","es":"Alarma de CO2 activada","da":"CO2-alarm aktiveret","ru":"Сигнал CO2 включен","pl":"Alarm o CO2 włączony"},"insightsTitleFalse":{"en":"CO2 alarm turned off","nl":"CO2 alarm ging uit","de":"CO2-Alarm ist ausgegangen","fr":"L\'alarme CO2 s\'est désactivée","it":"Allarme CO2 disattivato","sv":"CO2-larm av","no":"CO2-alarm deaktivert","es":"Alarma de CO2 desactivada","da":"CO2-alarm deaktiveret","ru":"Сигнал CO2 выключен","pl":"Alarm o CO2 wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co2_true","highlight":true,"title":{"en":"The CO2 alarm turned on","nl":"Het CO2 alarm gaat aan","de":"Der CO2-Alarm ist angegangen","fr":"L\'alarme CO2 s\'est activée","it":"L\'allarme CO2 è stato attivato","sv":"CO2-larmet på","no":"CO2-alarmen er aktivert","es":"La alarma de CO2 se ha activado","da":"CO2-alarmen blev aktiveret","ru":"Сигнал CO2 включен","pl":"Alarm o CO2 włączony"}},{"id":"alarm_co2_false","title":{"en":"The CO2 alarm turned off","nl":"Het CO2 alarm gaat uit","de":"Der CO2-Alarm ist ausgegangen","fr":"L\'alarme CO2 s\'est désactivée","it":"L\'allarme CO2 è stato disattivato","sv":"CO2-larmet av","no":"CO2-alarmen er deaktivert","es":"La alarma de CO2 se ha desactivado","da":"CO2-alarmen blev deaktiveret","ru":"Сигнал CO2 выключен","pl":"Alarm o CO2 wyłączony"}}],"conditions":[{"id":"alarm_co2","title":{"en":"The CO2 alarm is !{{on|off}}","nl":"Het CO2 alarm is !{{aan|uit}}","de":"Der CO2-Alarm ist !{{an|aus}}","fr":"L\'alarme CO2 est !{{en marche|arrêtée}}","it":"L\'allarme CO2 è !{{acceso|spento}}","sv":"CO2-larmet är !{{på|av}}","no":"CO2-alarmen er !{{på|av}}","es":"La alarma de CO2 está !{{activada|desactivada}}","da":"CO2-alarmen er !{{tændt|slukket}}","ru":"Сигнал CO2 !{{вкл.|выкл.}}","pl":"Alarm o CO2 !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Contact alarm","nl":"Contact alarm","de":"Kontakt-Alarm","fr":"Alarme contact","it":"Allarme contatto","sv":"Kontaktalarm","no":"Kontaktalarm","es":"Alarma de contacto","da":"Kontaktalarm","ru":"Контактный сигнал","pl":"Alarm otwarcia"},"desc":{"en":"Contact sensor, e.g. for windows (true/false)","nl":"Contact sensor, bijvoorbeeld voor ramen","de":"Kontaktsensor, z.B. für Windows (true/false)","fr":"Capteur de contact, par ex. pour les fenêtres (vrai/faux)","it":"Sensore di contatto, ad es. per le finestre (vero/falso)","sv":"Kontaktsensor, t.ex. för fönster (sant/falskt)","no":"Kontaktsensor, f.eks. for vindu (sant/usant)","es":"Sensor de contacto, p. ej., para ventanas (verdadero/falso)","da":"Kontaktsensor, f.eks. til vinduer (sandt/falsk)","ru":"Контактный датчик, например для окон (истина/ложь)","pl":"Czujnik otwarcia, np. okien (adekwatny/nieadekwatny)"},"insights":true,"insightsTitleTrue":{"en":"Contact alarm turned on","nl":"Contact alarm ging af","de":"Kontakt-Alarm ist angegangen","fr":"Alarme contact s\'est activée","it":"Allarme di contatto attivato","sv":"Kontaktalarm aktiverat","no":"Kontaktalarm aktivert","es":"Alarma de contacto activada","da":"Kontaktalarm blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony"},"insightsTitleFalse":{"en":"Contact alarm turned off","nl":"Contact alarm ging uit","de":"Kontakt-Alarm ist ausgegangen","fr":"Alarme contact s\'est désactivée","it":"Allarme di contatto disattivato","sv":"Kontaktalarm inaktiverat","no":"Kontaktalarm deaktivert","es":"Alarma de contacto desactivada","da":"Kontaktalarm blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_contact_true","highlight":true,"title":{"en":"The contact alarm turned on","nl":"Het contactalarm gaat aan","de":"Der Kontakt-Alarm ist angegangen","fr":"L\'alarme contact s\'est activée","it":"L\'allarme di contatto è stato attivato","sv":"Kontaktalarmet aktiverat","no":"Kontaktalarmen aktivert","es":"La alarma de contacto se ha activado","da":"Kontaktalarmen blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony"}},{"id":"alarm_contact_false","title":{"en":"The contact alarm turned off","nl":"Het contactalarm gaat uit","de":"Der Kontakt-Alarm ist ausgegangen","fr":"L\'alarme contact s\'est désactivée","it":"L\'allarme di contatto è stato disattivato","sv":"Kontaktalarmet inaktiverat","no":"Kontaktalarmen deaktivert","es":"La alarma de contacto se ha desactivado","da":"Kontaktalarmen blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony"}}],"conditions":[{"id":"alarm_contact","title":{"en":"The contact alarm is !{{on|off}}","nl":"Het contactalarm is !{{aan|uit}}","de":"Der Kontakt-Alarm ist !{{an|aus}}","fr":"L\'alarme contact est !{{en marche|arrêtée}}","it":"L\'allarme di contatto è !{{acceso|spento}}","sv":"Kontaktalarmet är !{{på|av}}","no":"Kontaktalarmen er !{{på|av}}","es":"La alarma de contacto está !{{activada|desactivada}}","da":"Kontaktalarmen er !{{tændt|slukket}}","ru":"Контактный сигнал !{{вкл.|выкл.}}","pl":"Alarm otwarcia !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Fire alarm","nl":"Brandalarm","de":"Feuer-Alarm","fr":"Alarme incendie","it":"Allarme antincendio","sv":"Brandlarm","no":"Brannalarm","es":"Alarma de incendios","da":"Brandalarm","ru":"Пожарный сигнал","pl":"Alarm przeciwpożarowy"},"desc":{"en":"True when fire has been detected","nl":"Gaat af als er brand gedetecteerd wordt","de":"True, wenn Feuer erkannt wurde","fr":"Vrai si un incendie a été détecté","it":"Vero quando è stato rilevato un incendio","sv":"Sant när brand upptäckts","no":"Sant når brann påvises","es":"Verdadero cuando se ha detectado fuego","da":"Sandt, når brand er blevet opdaget","ru":"Верно при обнаружении огня","pl":"Alarm przeciwpożarowy"},"insights":true,"insightsTitleTrue":{"en":"Fire alarm turned on","nl":"Brandalarm ging af","de":"Feuer-Alarm ist angegangen","fr":"Alarme incendie s\'est activée","it":"Allarme antincendio attivato","sv":"Brandlarm aktiverat","no":"Brannlarm aktivert","es":"Alarma de incendios activada","da":"Brandalarm blev aktiveret","ru":"Пожарный сигнал включен","pl":"Adekwatny, kiedy wykryty zostanie pożar"},"insightsTitleFalse":{"en":"Fire alarm turned off","nl":"Brandalarm ging uit","de":"Feuer-Alarm ist ausgegangen","fr":"Alarme incendie s\'est désactivée","it":"Allarme antincendio disattivato","sv":"Brandlarm inaktiverat","no":"Brannlarm deaktivert","es":"Alarma de incendios desactivada","da":"Brandalarm blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_fire_true","highlight":true,"title":{"en":"The fire alarm turned on","nl":"Het brandalarm gaat aan","de":"Der Feuer-Alarm ist angegangen","fr":"L\'alarme incendie s\'est activée","it":"L\'allarme antincendio è stato attivato","sv":"Brandlarmet aktiverat","no":"Brannalarmen aktivert","es":"La alarma de incendios se ha activado","da":"Brandalarmen blev aktiveret","ru":"Пожарный сигнал включен","pl":"Alarm przeciwpożarowy włączony"}},{"id":"alarm_fire_false","title":{"en":"The fire alarm turned off","nl":"Het brandalarm gaat uit","de":"Der Feuer-Alarm ist ausgegangen","fr":"L\'alarme incendie s\'est désactivée","it":"L\'allarme antincendio è stato disattivato","sv":"Brandlarmet inaktiverat","no":"Brannalarmen deaktivert","es":"La alarma de incendios se ha desactivado","da":"Brandalarmen blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony"}}],"conditions":[{"id":"alarm_fire","title":{"en":"The fire alarm is !{{on|off}}","nl":"Het brandalarm is !{{aan|uit}}","de":"Der Feuer-Alarm ist !{{an|aus}}","fr":"L\'alarme incendie est !{{en marche|arrêtée}}","it":"L\'allarme antincendio è !{{acceso|spento}}","sv":"Brandlarmet är !{{på|av}}","no":"Brannalarmen er !{{på|av}}","es":"La alarma de incendios está !{{activada|desactivada}}","da":"Brandalarmen er !{{tændt|slukket}}","ru":"Пожарный сигнал !{{вкл.|выкл.}}","pl":"Alarm przeciwpożarowy !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Generic alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma general","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny"},"desc":{"en":"Generic alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma general","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny"},"insights":true,"insightsTitleTrue":{"en":"Generic alarm turned on","nl":"Algemeen alarm ging af","de":"Allgemeiner Alarm ist angegangen","fr":"Alarme générique s\'est activée","it":"Allarme generico attivato","sv":"Generiskt larm aktiverat","no":"Generell alarm aktivert","es":"Alarma general activada","da":"Generisk alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony"},"insightsTitleFalse":{"en":"Generic alarm turned off","nl":"Algemeen alarm ging uit","de":"Allgemeiner Alarm ist ausgegangen","fr":"Alarme générique s\'est désactivée","it":"Allarme generico disattivato","sv":"Generiskt larm inaktiverat","no":"Generell alarm deaktivert","es":"Alarma general desactivada","da":"Generisk alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_generic_true","title":{"en":"The generic alarm turned on","nl":"Het algemene alarm gaat aan","de":"Der allgemeine Alarm ist angegangen","fr":"L\'alarme générique s\'est activée","it":"L\'allarme generico è stato attivato","sv":"Det generiska larmet är aktiverat","no":"Den generelle alarmen er aktivert","es":"La alarma general se ha activado","da":"Den generiske alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony"}},{"id":"alarm_generic_false","title":{"en":"The generic alarm turned off","nl":"Het algemene alarm ging uit","de":"Der allgemeine Alarm ist ausgegangen","fr":"L\'alarme générique s\'est désactivée","it":"L\'allarme generico è stato disattivato","sv":"Det generiska larmet är inaktiverat","no":"Den generelle alarmen er deaktivert","es":"La alarma general se ha desactivado","da":"Den generiske alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony"}}],"conditions":[{"id":"alarm_generic","title":{"en":"The generic alarm is !{{on|off}}","nl":"Het algemene alarm is !{{aan|uit}}","de":"Der allgemeine Alarm ist !{{an|aus}}","fr":"L\'alarme générique est !{{en marche|arrêtée}}","it":"L\'allarme generico è !{{acceso|spento}}","sv":"Det generiska larmet är !{{på|av}}","no":"Den generelle alarmen er !{{på|av}}","es":"La alarma general está !{{activada|desactivada}}","da":"Den generiske alarm er !{{tændt|slukket}}","ru":"Общий сигнал !{{вкл.|выкл.}}","pl":"Alarm ogólny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Heat alarm","nl":"Hittealarm","de":"Hitze-Alarm","fr":"Alarme chaleur","it":"Allarme di calore","sv":"Värmelarm","no":"Varmealarm","es":"Alarma de calor","da":"Varmealarm","ru":"Сигнал перегрева","pl":"Alarm termiczny"},"desc":{"en":"True when extreme heat has been detected","nl":"Gaat af als er extreme hitte gedetecteerd wordt","de":"True, wenn extreme Hitze erkannt wurde","fr":"Vrai si une chaleur extrême a été détectée","it":"Vero quando è stato rilevato un calore estremo","sv":"Sant när extrem hetta upptäckts","no":"Sant når ekstrem varme påvises","es":"Verdadero cuando se ha detectado un calor extremo","da":"Sandt, når ekstrem varme er blevet opdaget","ru":"Верно при обнаружении экстремально высокой температуры","pl":"Adekwatny, kiedy wykryta zostanie ekstremalnie wysoka temperatura"},"insights":true,"insightsTitleTrue":{"en":"Heat alarm turned on","nl":"Hittealarm ging af","de":"Hitze-Alarm ist angegangen","fr":"Alarme chaleur s\'est activée","it":"Allarme di calore attivato","sv":"Värmelarm aktiverat","no":"Varmealarm aktivert","es":"Alarma de calor activada","da":"Varmealarm blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony"},"insightsTitleFalse":{"en":"Heat alarm turned off","nl":"Hittealarm ging uit","de":"Hitze-Alarm ist ausgegangen","fr":"Alarme chaleur s\'est désactivée","it":"Allarme di calore disattivato","sv":"Värmelarm inaktiverat","no":"Varmealarm deaktivert","es":"Alarma de calor desactivada","da":"Varmealarm blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_heat_true","highlight":true,"title":{"en":"The heat alarm turned on","nl":"Het hitte alarm gaat aan","de":"Der Hitze-Alarm ist angegangen","fr":"L\'alarme chaleur s\'est activée","it":"L\'allarme di calore è stato attivato","sv":"Värmelarmet aktiverat","no":"Varmealarmen aktivert","es":"La alarma de calor se ha activado","da":"Varmealarmen blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony"}},{"id":"alarm_heat_false","title":{"en":"The heat alarm turned off","nl":"Het hitte alarm gaat uit","de":"Der Hitze-Alarm ist ausgegangen","fr":"L\'alarme chaleur s\'est désactivée","it":"L\'allarme di calore è stato disattivato","sv":"Värmelarmet inaktiverat","no":"Varmealarmen deaktivert","es":"La alarma de calor se ha desactivado","da":"Varmealarmen blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony"}}],"conditions":[{"id":"alarm_heat","title":{"en":"The heat alarm is !{{on|off}}","nl":"Het hitte alarm is !{{aan|uit}}","de":"Der Hitze-Alarm ist !{{an|aus}}","fr":"L\'alarme chaleur est !{{en marche|arrêtée}}","it":"L\'allarme di calore è !{{acceso|spento}}","sv":"Värmelarmet är !{{på|av}}","no":"Varmealarmen er !{{på|av}}","es":"La alarma de calor está !{{activada|desactivada}}","da":"Varmealarmen er !{{tændt|slukket}}","ru":"Сигнал перегрева !{{вкл.|выкл.}}","pl":"Alarm termiczny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Motion alarm","nl":"Bewegingsalarm","de":"Bewegungs-Alarm","fr":"Alarme mouvement","it":"Allarme di movimento","sv":"Rörelselarm","no":"Bevegelsesalarm","es":"Alarma de movimiento","da":"Bevægelsesalarm","ru":"Сигнал движения","pl":"Czujnik ruchu"},"insights":true,"insightsTitleTrue":{"en":"Motion alarm turned on","nl":"Bewegingsalarm ging af","de":"Bewegungs-Alarm ist angegangen","fr":"Alarme mouvement s\'est déclenchée","it":"Allarme di movimento attivato","sv":"Rörelselarm aktiverat","no":"Bevegelsesalarm aktivert","es":"Alarma de movimiento activada","da":"Bevægelsesalarm blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony"},"insightsTitleFalse":{"en":"Motion alarm turned off","nl":"Bewegingsalarm ging uit","de":"Bewegungs-Alarm ist ausgegangen","fr":"Alarme mouvement s\'est désactivée","it":"Allarme di movimento disattivato","sv":"Rörelselarm inaktiverat","no":"Bevegelsesalarm deaktivert","es":"Alarma de movimiento desactivada","da":"Bevægelsesalarm blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_motion_true","highlight":true,"title":{"en":"The motion alarm turned on","nl":"De bewegingsmelder gaat aan","de":"Der Bewegungs-Alarm ist angegangen","fr":"L\'alarme mouvement s\'est activée","it":"L\'allarme di movimento è stato attivato","sv":"Rörelselarmet aktiverat","no":"Bevegelsesalarmen aktivert","es":"La alarma de movimiento se ha activado","da":"Bevægelsesalarmen blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony"}},{"id":"alarm_motion_false","title":{"en":"The motion alarm turned off","nl":"De bewegingsmelder gaat uit","de":"Der Bewegungs-Alarm ist ausgegangen","fr":"L\'alarme mouvement s\'est désactivée","it":"L\'allarme di movimento è stato disattivato","sv":"Rörelselarmet inaktiverat","no":"Bevegelsesalarmen deaktivert","es":"La alarma de movimiento se ha desactivado","da":"Bevægelsesalarmen blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony"}}],"conditions":[{"id":"alarm_motion","title":{"en":"The motion alarm is !{{on|off}}","nl":"De bewegingsmelder is !{{aan|uit}}","de":"Der Bewegungs-Alarm ist !{{an|aus}}","fr":"L\'alarme mouvement est !{{en marche|arrêtée}}","it":"L\'allarme di movimento è !{{acceso|spento}}","sv":"Rörelselarmet är !{{på|av}}","no":"Bevegelsesalarmen er !{{på|av}}","es":"La alarma de movimiento está !{{activada|desactivada}}","da":"Bevægelsesalarmen er !{{tændt|slukket}}","ru":"Сигнал движения !{{вкл.|выкл.}}","pl":"Czujnik ruchu !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Night alarm","nl":"Nachtalarm","de":"Nacht-Alarm","fr":"Alarme nuit","it":"Allarme notturno","sv":"Nattlarm","no":"Nattalarm","es":"Alarma nocturna","da":"Natalarm","ru":"Ночной сигнал","pl":"Alarm nocny"},"desc":{"en":"True when it is night","nl":"Gaat af als het nacht is","de":"True, wenn es Nacht ist","fr":"Vrai quand il fait nuit","it":"Vero quando è notte","sv":"Sant när det är natt","no":"Sant når det er natt","es":"Verdadero cuando es de noche","da":"Sandt, når det er nat","ru":"Верно ночью","pl":"Adekwatny, kiedy jest noc"},"insights":true,"insightsTitleTrue":{"en":"Night alarm turned on","nl":"Nachtalarm ging af","de":"Nacht-Alarm ist angegangen","fr":"Alarme nuit s\'est activée","it":"Allarme notturno attivato","sv":"Nattlarm aktiverat","no":"Nattalarm aktivert","es":"Alarma nocturna activada","da":"Natalarm blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony"},"insightsTitleFalse":{"en":"Night alarm turned off","nl":"Nachtalarm ging uit","de":"Nacht-Alarm ist ausgegangen","fr":"Alarme nuit s\'est désactivée","it":"Allarme notturno disattivato","sv":"Nattlarm inaktiverat","no":"Nattalarm deaktivert","es":"Alarma nocturna desactivada","da":"Natalarm blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_night_true","title":{"en":"The night alarm turned on","nl":"Het nachtalarm gaat aan","de":"Der Nacht-Alarm ist angegangen","fr":"L\'alarme nuit s\'est activée","it":"L\'allarme notturno è stato attivato","sv":"Nattlarmet aktiverat","no":"Nattalarmen aktivert","es":"La alarma nocturna se ha activado","da":"Natalarmen blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony"}},{"id":"alarm_night_false","title":{"en":"The night alarm turned off","nl":"Het nachtalarm gaat uit","de":"Der Nacht-Alarm ist ausgegangen","fr":"L\'alarme nuit s\'est désactivée","it":"L\'allarme notturno è stato disattivato","sv":"Nattlarmet inaktiverat","no":"Nattalarmen deaktivert","es":"La alarma nocturna se ha desactivado","da":"Natalarmen blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony"}}],"conditions":[{"id":"alarm_night","title":{"en":"The night alarm is !{{on|off}}","nl":"Het nachtalarm is !{{aan|uit}}","de":"Der Nacht-Alarm ist !{{an|aus}}","fr":"L\'alarme nuit est !{{en marche|arrêtée}}","it":"L\'allarme notturno è !{{acceso|spento}}","sv":"Nattlarmet är !{{på|av}}","no":"Nattalarmen er !{{på|av}}","es":"La alarma nocturna está !{{activada|desactivada}}","da":"Natalarmen er !{{tændt|slukket}}","ru":"Ночной сигнал !{{вкл.|выкл.}}","pl":"Alarm nocny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM2.5 alarm","nl":"PM2.5 alarm","de":"PM2.5-Alarm","fr":"Alarme PM2.5","it":"Allarme PM2.5","sv":"PM2.5-larm","no":"PM2.5-alarm","es":"Alarma de PM2,5","da":"PM2,5-alarm","ru":"Сигнал ТЧ 2.5","pl":"Alarm o stężeniu PM2.5"},"desc":{"en":"True when PM2.5 values exceeds threshold","nl":"Gaat af wanneer de PM2.5 waarde overschreden wordt","de":"True, wenn PM2.5-Werte die Schwelle überschreiten","fr":"Vrai si les valeurs PM2.5 excèdent un seuil","it":"Vero quando i valori PM2.5 superano la soglia","sv":"Sant när PM2.5-värdena överstiger gränsvärdet","no":"Sant når PM2.5-verdiene overskrider grenseverdien","es":"Verdadero cuando los valores de PM2,5 superan el límite","da":"Sandt, når PM2,5-værdier overskrider grænseværdien","ru":"Верно при превышении контрольного значения ТЧ 2.5","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia PM2.5"},"insights":true,"insightsTitleTrue":{"en":"PM2.5 alarm turned on","nl":"PM2.5 alarm ging af","de":"PM2.5-Alarm ist angegangen","fr":"Alarme PM2.5 s\'est activée","it":"Allarme PM2.5 attivato","sv":"PM2.5-larm aktiverat","no":"PM2.5-alarm aktivert","es":"Alarma de PM2,5 activada","da":"PM2,5-alarm blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm o stężeniu PM2.5 włączony"},"insightsTitleFalse":{"en":"PM2.5 alarm turned off","nl":"PM2.5 alarm ging uit","de":"PM2.5-Alarm ist ausgegangen","fr":"Alarme PM2.5 s\'est désactivée","it":"Allarme PM2.5 disattivato","sv":"PM2.5-larm inaktiverat","no":"PM2.5-alarm deaktivert","es":"Alarma de PM2,5 desactivada","da":"PM2,5-alarm blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm o stężeniu PM2.5 wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm25_true","highlight":true,"title":{"en":"The PM2.5 alarm turned on","nl":"Het PM2.5 gaat aan","de":"Der PM2.5-Alarm ist angegangen","fr":"L\'alarme PM2.5 s\'est activée","it":"L\'allarme PM2.5 è stato attivato","sv":"PM2.5-larmet aktiverat","no":"PM2.5-alarmen aktivert","es":"La alarma de PM2,5 se ha activado","da":"PM2,5-alarmen blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm o stężeniu PM2.5 włączony"}},{"id":"alarm_pm25_false","title":{"en":"The PM2.5 alarm turned off","nl":"Het PM2.5 gaat uit","de":"Der PM2.5-Alarm ist ausgegangen","fr":"L\'alarme PM2.5 s\'est désactivée","it":"L\'allarme PM2.5 è stato disattivato","sv":"PM2.5-larmet inaktiverat","no":"PM2.5-alarmen deaktivert","es":"La alarma de PM2,5 se ha desactivado","da":"PM2,5-alarmen blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm o stężeniu PM2.5 wyłączony"}}],"conditions":[{"id":"alarm_pm25","title":{"en":"The PM2.5 alarm is !{{on|off}}","nl":"Het PM2.5 alarm is !{{aan|uit}}","de":"Der PM2.5-Alarm ist !{{an|aus}}","fr":"L\'alarme PM2.5 est !{{en marche|arrêtée}}","it":"L\'allarme PM2.5 è !{{acceso|spento}}","sv":"PM2.5-larmet är !{{på|av}}","no":"PM2.5-alarmen er !{{på|av}}","es":"La alarma de PM2,5 está !{{activada|desactivada}}","da":"PM2,5-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ 2.5 !{{вкл.|выкл.}}","pl":"Alarm o stężeniu PM2.5 !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Smoke alarm","nl":"Rookmelder","de":"Rauch-Alarm","fr":"Alarme fumée","it":"Allarme fumo","sv":"Röklarm","no":"Røykalarm","es":"Alarma de humo","da":"Røgalarm","ru":"Сигнал дыма","pl":"Alarm przeciwdymny"},"desc":{"en":"True when smoke has been detected","nl":"Gaat af als er rook gedetecteerd wordt","de":"True, wenn Rauch erkannt wurde","fr":"Vrai quand de la fumée a été détectée","it":"Vero quando è stato rilevato del fumo","sv":"Sant när rök upptäcks","no":"Sant når røyk har blitt påvist","es":"Verdadero cuando se ha detectado humo","da":"Sandt, når røg er blevet opdaget","ru":"Верно при обнаружении дыма","pl":"Adekwatny, kiedy wykryty zostanie dym"},"insights":true,"insightsTitleTrue":{"en":"Smoke alarm turned on","nl":"Rookmelder ging af","de":"Rauch-Alarm ist angegangen","fr":"Alarme fumée s\'est activée","it":"Allarme fumo attivato","sv":"Röklarm aktiverat","no":"Røykalarm aktivert","es":"Alarma de humo activada","da":"Røgalarm blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony"},"insightsTitleFalse":{"en":"Smoke alarm turned off","nl":"Rookmelder ging uit","de":"Rauch-Alarm ist ausgegangen","fr":"Alarme fumée s\'est désactivée","it":"Allarme fumo disattivato","sv":"Röklarm inaktiverat","no":"Røykalarm deaktivert","es":"Alarma de humo desactivada","da":"Røgalarm blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_smoke_true","highlight":true,"title":{"en":"The smoke alarm turned on","nl":"De rookmelder gaat aan","de":"Der Rauch-Alarm ist angegangen","fr":"L\'alarme fumée s\'est activée","it":"L\'allarme fumo è stato attivato","sv":"Röklarmet aktiverat","no":"Røykalarmen er aktivert","es":"La alarma de humo se ha activado","da":"Røgalarmen blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony"}},{"id":"alarm_smoke_false","title":{"en":"The smoke alarm turned off","nl":"De rookmelder gaat uit","de":"Der Rauch-Alarm ist ausgegangen","fr":"L\'alarme fumée s\'est désactivée","it":"L\'allarme fumo è stato disattivato","sv":"Röklarmet inaktiverat","no":"Røykalarmen er deaktivert","es":"La alarma de humo se ha desactivado","da":"Røgalarmen blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony"}}],"conditions":[{"id":"alarm_smoke","title":{"en":"The smoke alarm is !{{on|off}}","nl":"De rookmelder is !{{aan|uit}}","de":"Der Rauch-Alarm ist !{{an|aus}}","fr":"L\'alarme fumée est !{{en marche|arrêtée}}","it":"L\'allarme fumo è !{{acceso|spento}}","sv":"Röklarmet är !{{på|av}}","no":"Røykalarmen er !{{på|av}}","es":"La alarma de humo está !{{activada|desactivada}}","da":"Røgalarmen er !{{tændt|slukket}}","ru":"Сигнал дыма !{{вкл.|выкл.}}","pl":"Alarm przeciwdymny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tamper alarm","nl":"Sabotagealarm","de":"Sabotage-Alarm","fr":"Alarme sabotage","it":"Allarme manomissione","sv":"Sabotagelarm","no":"Sabotasjealarm","es":"Alarma de sabotaje","da":"Sabotagealarm","ru":"Противовзломный сигнал","pl":"Alarm antyingerencyjny"},"desc":{"en":"True when tampering has been detected","nl":"Gaat af als sabotage gedetecteerd wordt","de":"True, wenn Sabotage erkannt wurde","fr":"Vrai si l\'alarme sabotage a été détectée","it":"Vero quando è stata rilevata una manomissione","sv":"Sant när sabotage upptäckts","no":"Sant när sabotasje oppdages","es":"Verdadero cuando se ha detectado un sabotaje","da":"Sandt, når sabotage er blevet opdaget","ru":"Верно при обнаружении попытки взлома","pl":"Adekwatny, kiedy wykryta zostanie ingerencja"},"insights":true,"insightsTitleTrue":{"en":"Tamper alarm turned on","nl":"Sabotagealarm ging af","de":"Sabotage-Alarm ist angegangen","fr":"Alarme sabotage s\'est activée","it":"Allarme manomissione attivato","sv":"Sabotagelarm aktiverat","no":"Sabotasjealarm aktivert","es":"Alarma de sabotaje activada","da":"Sabotagealarm blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony"},"insightsTitleFalse":{"en":"Tamper alarm turned off","nl":"Sabotagealarm ging uit","de":"Sabotage-Alarm ist ausgegangen","fr":"Alarme sabotage s\'est désactivée","it":"Allarme manomissione disattivato","sv":"Sabotagelarm inaktiverat","no":"Sabotagealarm deaktivert","es":"Alarma de sabotaje desactivada","da":"Sabotagealarm blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tamper_true","highlight":true,"title":{"en":"The tamper alarm turned on","nl":"Het sabotagealarm gaat aan","de":"Der Sabotage-Alarm ist angegangen","fr":"L\'alarme sabotage s\'est activée","it":"L\'allarme manomissione è stato attivato","sv":"Sabotagelarmet aktiverat","no":"Sabotasjealarmen aktivert","es":"La alarma de sabotaje se ha activado","da":"Sabotagealarmen blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony"}},{"id":"alarm_tamper_false","title":{"en":"The tamper alarm turned off","nl":"Het sabotagealarm gaat uit","de":"Der Sabotage-Alarm ist ausgegangen","fr":"L\'alarme sabotage s\'est désactivée","it":"L\'allarme manomissione è stato disattivato","sv":"Sabotagelarmet inaktiverat","no":"Sabotasjealarmen deaktivert","es":"La alarma de sabotaje se ha desactivado","da":"Sabotagealarmen blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony"}}],"conditions":[{"id":"alarm_tamper","title":{"en":"The tamper alarm is !{{on|off}}","nl":"Het sabotagealarm is !{{aan|uit}}","de":"Der Sabotage-Alarm ist !{{an|aus}}","fr":"L\'alarme sabotage est !{{en marche|arrêtée}}","it":"L\'allarme manomissione è !{{acceso|spento}}","sv":"Sabotagelarmet är !{{på|av}}","no":"Sabotasjealarmen er !{{på|av}}","es":"La alarma de sabotaje está !{{activada|desactivada}}","da":"Sabotagealarmen er !{{tændt|slukket}}","ru":"Противовзломный сигнал !{{вкл.|выкл.}}","pl":"Alarm antyingerencyjny !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Water alarm","nl":"Wateralarm","de":"Wasser-Alarm","fr":"Alarme eau","it":"Allarme acqua","sv":"Vattenalarm","no":"Vannalarm","es":"Alarma de agua","da":"Vandalarm","ru":"Сигнал протечки воды","pl":"Alarm zalania wodą"},"desc":{"en":"True when water has been detected","nl":"Gaat af als er water gedetecteerd wordt","de":"True, wenn Wasser erkannt wurde","fr":"Vrai si de l\'eau a été détectée","it":"Vero quando è stata rilevata dell\'acqua","sv":"Sant när vatten upptäcks","no":"Sant når vann påvises","es":"Verdadero cuando se ha detectado agua","da":"Sandt, når vand er blevet opdaget","ru":"Верно при обнаружении протечки воды","pl":"Adekwatny, kiedy wykryta zostanie woda"},"insights":true,"insightsTitleTrue":{"en":"Water alarm turned on","nl":"Water alarm ging af","de":"Wasser-Alarm ist angegangen","fr":"Alarme eau s\'est activée","it":"Allarme acqua attivato","sv":"Vattenalarm aktiverat","no":"Vannalarm aktivert","es":"Alarma de agua activada","da":"Vandalarm blev aktiveret","ru":"Сигнал протечки воды включен","pl":"Alarm zalania wodą włączony"},"insightsTitleFalse":{"en":"Water alarm turned off","nl":"Water alarm ging uit","de":"Wasser-Alarm ist ausgegangen","fr":"Alarme eau s\'est désactivée","it":"Allarme acqua disattivato","sv":"Vattenalarm inaktiverat","no":"Vannalarm deaktivert","es":"Alarma de agua desactivada","da":"Vandalarm blev deaktiveret","ru":"Сигнал протечки воды выключен","pl":"Alarm zalania wodą wyłączony"},"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_water_true","highlight":true,"title":{"en":"The water alarm turned on","nl":"Het wateralarm gaat aan","de":"Der Wasser-Alarm ist angegangen","fr":"L\'alarme eau s\'est activée","it":"L\'allarme acqua è stato attivato","sv":"Vattenalarmet aktiverat","no":"Vannalarmen aktivert","es":"La alarma de agua se ha activado","da":"Vandalarmen blev aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm zalania wodą włączony"}},{"id":"alarm_water_false","title":{"en":"The water alarm turned off","nl":"Het wateralarm gaat uit","de":"Der Wasser-Alarm ist ausgegangen","fr":"L\'alarme eau s\'est désactivée","it":"L\'allarme acqua è stato disattivato","sv":"Vattenalarmet inaktiverat","no":"Vannalarmen deaktivert","es":"La alarma de agua se ha desactivado","da":"Vandalarmen blev deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm zalania wodą wyłączony"}}],"conditions":[{"id":"alarm_water","title":{"en":"The water alarm is !{{on|off}}","nl":"Het wateralarm is !{{aan|uit}}","de":"Der Wasser-Alarm ist !{{an|aus}}","fr":"L\'alarme eau est !{{en marche|arrêtée}}","it":"L\'allarme acqua è !{{acceso|spento}}","sv":"Vattenalarmet är !{{på|av}}","no":"Vannalarmen er !{{på|av}}","es":"La alarma de agua está !{{activada|desactivada}}","da":"Vandalarmen er !{{tændt|slukket}}","ru":"Сигнал протечки воды !{{вкл.|выкл.}}","pl":"Alarm zalania wodą !{{włączony|wyłączony}}"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button","uiQuickAction":true,"$flow":{"actions":[{"id":"press","title":{"en":"Press the button","nl":"Druk op de knop","de":"Drücke die Taste","fr":"Appuyer sur le bouton","it":"Premi il pulsante","sv":"Tryck på knappen","no":"Trykk på knappen","es":"Pulsa el botón","da":"Tryk på knappen","ru":"Нажмите кнопку","pl":"Naciśnij przycisk"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Channel down","nl":"Kanaal omlaag","de":"Kanal runter","fr":"Chane bas","it":"Canale verso il basso","sv":"Kanal ned","no":"Lavere kanal","es":"Bajar de canal","da":"Kanal ned","ru":"Канал вниз","pl":"Kanał w dół"},"type":"boolean","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_down","title":{"en":"One channel down","nl":"Eén kanaal omlaag","de":"Einen Kanal runter","fr":"Une châine vers le bas","it":"Un canale verso il basso","sv":"En kanal ned","no":"En kanal lavere","es":"Un canal más abajo","da":"En kanal ned","ru":"Один канал вниз","pl":"Jeden kanał w dół"}}]},"uiComponent":"button"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Channel up","nl":"Kanaal omhoog","de":"Kanal hoch","fr":"Chaîne haut","it":"Canale verso l\'alto","sv":"Kanal upp","no":"Høyere kanal","es":"Subir de canal","da":"Kanal op","ru":"Канал наверх","pl":"Kanał w górę"},"type":"boolean","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_up","title":{"en":"One channel up","nl":"Eén kanaal omhoog","de":"Einen Kanal hoch","fr":"Une chaîne vers le haut","it":"Un canale verso l\'alto","sv":"En kanal upp","no":"En kanal høyere","es":"Un canal más arriba","da":"En kanal op","ru":"Один канал наверх","pl":"Jeden kanał w górę"}}]},"uiComponent":"button"}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Dim level","nl":"Dim niveau","de":"Dimmlevel","fr":"Intensité lumineuse","it":"Intensità luminosa","sv":"Dimningsnivå","no":"Dempingsnivå","es":"Intensidad de la luz","da":"Lysniveau","ru":"Уровень яркости","pl":"Poziom przygaszenia"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%"},"getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"dim_changed","title":{"en":"Dim-level changed","nl":"Dim-niveau veranderd","de":"Dimm-Niveau geändert","fr":"Intensité lumineuse a été modifiée","it":"Intensità luminosa modificata","sv":"Dimningsnivå ändrades","no":"Dempingsnivå ble endret","es":"La intensidad de la luz ha cambiado","da":"Lysniveau ændret","ru":"Уровень яркости изменен","pl":"Zmiana poziomu przygaszenia"},"tokens":[{"name":"dim","type":"number","title":{"en":"Level","nl":"Niveau","de":"Niveau","fr":"Niveau","it":"Livello","sv":"Nivå","no":"Nivå","es":"Nivel","da":"Niveau","ru":"Уровень","pl":"Poziom"},"example":0.5}]}],"actions":[{"id":"dim","highlight":true,"title":{"en":"Dim to","nl":"Dim naar","de":"Dimmen auf","fr":"Mettre l\'intensité lumineuse sur","it":"Imposta l\'intensità luminosa su","sv":"Dimma till","no":"Demp til","es":"Ajustar la intensidad de la luz a","da":"Juster til","ru":"Установить яркость","pl":"Przygaś do"},"args":[{"name":"dim","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"dim_relative","title":{"en":"Set relative dim-level","nl":"Zet relatief dim-niveau","de":"Relatives Dimm-Niveau setzen","fr":"Définir l\'intensité lumineuse sur relative","it":"Imposta intensità luminosa su relativa","no":"Innstill relativt dempingsnivå","es":"Ajustar la intensidad de la luz como relativa","da":"Indstil relativt lysniveau","ru":"Установить относительный уровень яркости","pl":"Ustaw względny poziom przygaszenia"},"hint":{"en":"Dim or brighten with respect to the device\'s current dim-level.","nl":"Verhoog of verlaag de helderheid ten opzichte van het huidige dim-niveau van het apparaat.","ru":"Уменьшите или увеличьте яркость относительно текущего уровня яркости устройства.","pl":"Przygaś lub rozjaśnij względem obecnego poziomu przygaszenia urządzenia."},"args":[{"name":"dim","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta"},"getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta"},"insightsTitleFalse":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta"},"uiComponent":"toggle","$flow":{"triggers":[{"id":"garagedoor_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta"}},{"id":"garagedoor_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta"}}],"conditions":[{"id":"closed","title":{"en":"Is !{{closed|open}}","nl":"Is !{{gesloten|geopend}}","de":"Ist !{{geschlossen|offen}}","fr":"Est !{{fermé|ouvert}}","it":"È !{{chiuso|aperto}}","sv":"Är !{{stängd|öppen}}","no":"Er !{{lukket|åpen}}","es":"Está !{{cerrado|abierto}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыта|открыта}}","pl":"Jest !{{zamknięta|otwarta}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zamknij"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Otwórz"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na otwartą lub zamkniętą"}}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Home alarm state","nl":"Thuisalarm status","de":"Heim-Alarm-Status","fr":"Etat de l\'alarme de maison","it":"Stato dell\'allarme domestico","sv":"Hemlarmsstatus","no":"Hjemmealarmstatus","es":"Estado de la alarma doméstica","da":"Hjemmealarmstatus","ru":"Состояние домашней сигнализации","pl":"Stan alarmu domowego"},"values":[{"id":"armed","title":{"en":"Armed","nl":"Geactiveerd","de":"scharf","fr":"Armé","it":"Attivato","sv":"Larmat","no":"Aktivert","es":"Activada","da":"Aktiveret","ru":"Готова","pl":"Uzbrojony"}},{"id":"disarmed","title":{"en":"Disarmed","nl":"Gedeactiveerd","de":"unscharf","fr":"Désarmé","it":"Disattivato","sv":"Avlarmat","no":"Deaktivert","es":"Desactivada","da":"Deaktiveret","ru":"не готова","pl":"rozbrojony"}},{"id":"partially_armed","title":{"en":"Partially armed","nl":"Deels geactiveerd","de":"teilweise scharf","fr":"Partiellement armé","it":"Parzialmente attivato","sv":"Delvis larmat","no":"Delvis aktivert","es":"Parcialmente activada","da":"Delvist aktiveret","ru":"Частично готова","pl":"Częściowo uzbrojony"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"homealarm_state_changed","title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Statusen ändrad","no":"Statusen ble endret","es":"El estado ha cambiado","da":"Status ændret","ru":"Состояние изменено","pl":"Zmiana stanu"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"homealarm_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\'est pas}}","it":"Lo stato è !{{|non}}","sv":"Statusen är !{{|inte}}","no":"Statusen er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние — !{{|не}}","pl":"Stan to !{{|nie}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_homealarm_state","title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta stato","sv":"Ställ in status","no":"Innstill status","es":"Definir estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan"},"args":[{"name":"device","type":"device","filter":"capabilities=homealarm_state"},{"name":"state","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Hue","nl":"Hue","de":"Farbton","fr":"Teinte","it":"Tonalità","sv":"Nyans","no":"Fargetone","es":"Tonalidad","da":"Farvetone","ru":"Оттенок","pl":"Odcień"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"hue","title":{"en":"Set the hue","nl":"Verander kleurtint","de":"Den Farbton setzen","fr":"Définir la teinte","it":"Imposta la tonalità","sv":"Ställ in nyans","no":"Innstill fargetone","es":"Configurar la tonalidad","da":"Indstil farvetonen","ru":"Установить оттенок","pl":"Ustaw odcień"},"hint":{"en":"Select a color from the hue scale, for example red (0°/360°), yellow (60°), or blue (180°).","nl":"Selecteer een kleurtint van de hue schaal, bijvoorbeeld rood (0°/360°), geel (60°), of blauw (180°).","ru":"Выберите цвет из шкалы оттенков, например красный (0°/360°), желтый (60°) или синий (180°).","pl":"Wybierz barwę ze skali odcieni: np. czerwień (0°/360°), żółty (60°) lub niebieski (180°)."},"args":[{"name":"hue","type":"range","min":0,"max":1,"step":0.01,"value":0,"label":"°","labelMultiplier":360,"labelDecimals":0}]},{"id":"color","title":{"en":"Set a color","nl":"Verander naar kleur","de":"Eine Farbe setzen","fr":"Définir la couleur","it":"Imposta un colore","sv":"Ställ in en färg","no":"Innstill fargetone","es":"Configurar un color","da":"Indstil en farve","ru":"Установить цвет","pl":"Ustaw barwę"},"args":[{"name":"color","type":"color"}]},{"id":"color_random","title":{"en":"Set a random color","nl":"Verander naar een willekeurige kleur","de":"Eine zufällige Farbe setzen","fr":"Définir une couleur aléatoire","it":"Imposta un colore casuale","sv":"Ställ in en slumpvis färg","no":"Innstill en tilfeldig farge","es":"Configurar un color aleatorio","da":"Indstil en tilfældig farve","ru":"Установить случайный цвет","pl":"Ustaw losową barwę"}}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Light mode","nl":"Lamp modus","de":"Lichtmodus","fr":"Mode lumière","it":"Modalità luce","sv":"Lampläge","no":"Lysmodus","es":"Modo de la luz","da":"Lystilstand","ru":"Режим света","pl":"Tryb oświetlenia"},"desc":{"en":"Switch between color or temperature mode","nl":"Schakel tussen kleur of temperatuur modus","de":"Zwischen Farb- und Temperaturmodus wechseln","fr":"Passer entre les modes couleur ou température","it":"Passa tra le modalità colore o temperatura","sv":"Växla mellan färg- och temperatur-läge","no":"Veksle mellom farge- og temperaturmodus","es":"Cambia entre los modos color y temperatura","da":"Skift mellem farve- eller temperaturtilstand","ru":"Переключение между цветовым или температурным режимом","pl":"Przełączaj między trybem barwy lub temperatury"},"values":[{"id":"color","title":{"en":"Color","nl":"Kleur","de":"Farbe","fr":"Couleur","it":"Colore","sv":"Färg","no":"Farge","es":"Color","da":"Farve","ru":"Цвет","pl":"Barwa"}},{"id":"temperature","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura"}}],"getable":true,"setable":true,"uiComponent":"color"}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Color saturation","nl":"Kleurverzadiging","de":"Farbsättigung","fr":"Saturation de couleur","it":"Saturazione colore","sv":"Färggmättnad","no":"Fargemetning","es":"Saturación del color","da":"Farvemætning","ru":"Насыщенность цвета","pl":"Nasycenie barwy"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"getable":true,"setable":true,"$flow":{"actions":[{"id":"saturation","title":{"en":"Set the saturation","nl":"Verander kleurverzadiging","de":"Die Sättigung setzen","fr":"Définir la saturation","it":"Imposta la saturazione","sv":"Ställ in mättnad","no":"Innstill metningen","es":"Configurar la saturación","da":"Indstil farvemætningen","ru":"Установить насыщенность","pl":"Ustaw nasycenie"},"args":[{"name":"saturation","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"uiComponent":"color"}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Color temperature","nl":"Kleurtemperatuur","de":"Farbtemperatur","fr":"Température de couleur","it":"Temperatura colore","sv":"Färgtemperatur","no":"Fargetemperatur","es":"Temperatura del color","da":"Farvetemperatur","ru":"Температура цвета","pl":"Temperatura barwy"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"temperature","title":{"en":"Set a temperature","nl":"Verander naar temperatuur","de":"Eine Temperatur setzen","fr":"Définir une température","it":"Imposta una temperatura","sv":"Ställ in en temperatur","no":"Innstill en temperatur","es":"Configurar la temperatura","da":"Indstil en temperatur","ru":"Установить температуру","pl":"Ustaw temperaturę"},"args":[{"name":"temperature","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}],"hint":{"en":"Adjusts the temperature of the light. A higher value means a warmer color.","nl":"Verander de temperatuur van de lamp. Een hogere waarde betekent een warmere kleur.","de":"Stelle die Temperatur der Farbe ein. Ein höherer Wert bedeutet eine wärmere Farbe.","fr":"Ajuste la température de la lumière. Une valeur plus élévée signifie une couleur plus chaude.","it":"Regola la temperatura della luce. Un valore più alto indica un colore più caldo.","sv":"Justerar temperaturen på ljuset. Ett högre värde innebär en varmare färg.","no":"Justerer lystemperaturen. En høyere verdi gir en varmere farge.","es":"Ajusta la temperatura de la luz. Cuanto más alto es el valor, más cálido es el color.","da":"Justerer lysets temperatur. En højere værdi betyder en varmere farve.","ru":"Регулирует температуру света. Более высокое значение означает более теплый цвет.","pl":"Dostosuj temperaturę oświetlenia. Wyższa wartość oznacza cieplejszą barwę."}}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Lock mode","nl":"Slot modus","de":"Schloss-Modus","fr":"Mode verrou","it":"Modalità serratura","sv":"Låsläge","no":"Låsemodus","es":"Modo de la cerradura","da":"Lås-tilstand","ru":"Режим замка","pl":"Tryb zamknięcia"},"values":[{"id":"always_locked","title":{"en":"Always locked","nl":"Altijd op slot","de":"Immer verriegelt","fr":"Toujours verrouillé","it":"Sempre chiusa","sv":"Alltid låst","no":"Alltid låst","es":"Siempre cerrada","da":"Altid låst","ru":"Всегда закрыт","pl":"Zawsze zablokowane"}},{"id":"always_unlocked","title":{"en":"Always unlocked","nl":"Altijd open","de":"Immer entriegelt","fr":"Toujours déverrouillé","it":"Sempre aperta","sv":"Alltid olåst","no":"Alltid ulåst","es":"Siempre abierta","da":"Altid ulåst","ru":"Всегда открыт","pl":"Zawsze odblokowane"}},{"id":"locked_until_unlock","title":{"en":"Locked until unlocked","nl":"Op slot tot geopend","de":"Verriegelt, bis entriegelt wird","fr":"Verrouillé jusqu\'à déverrouillé","it":"Chiusa finché non viene sbloccata","sv":"Låst tills upplåst","no":"Låst til opplåst","es":"Cerrada hasta que se abra","da":"Låst indtil ulåst","ru":"Закрыт, пока не будет открыт","pl":"Zablokowane aż do odblokowania"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"lock_mode_changed","title":{"en":"Lock mode has changed","nl":"Slot modus is veranderd","de":"Schloss-Modus hat sich geändert","fr":"Mode verrou a été modifié","it":"La modalità di blocco è cambiata","sv":"Låsläge har ändrats","no":"Låsemodusen er endret","es":"El modo de la cerradura ha cambiado","da":"Lås-tilstand er blevet ændret","ru":"Режим замка изменен","pl":"Zmiana trybu zamknięcia"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"lock_mode_is","title":{"en":"Lock mode !{{is|is not}}","nl":"Slot modus !{{is|is niet}}","de":"Schloss-Modus !{{ist|ist nicht}}","fr":"Mode verrou !{{est|n\'est pas}}","it":"La modalità di blocco !{{è|non è}}","sv":"Låsläge !{{är|är inte}}","no":"Låsemodus !{{er|er ikke}}","es":"El modo de la cerradura !{{está|no está}}","da":"Lås-tilstand !{{er|er ikke}}","ru":"Режим замка !{{|не}}","pl":"Tryb zamknięcia !{{to|to nie}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"mode","title":{"en":"Set mode","nl":"Stel stand in","de":"Modus setzen","fr":"Définir le mode","it":"Imposta la modalità","sv":"Ställ in läge","no":"Innstill modus","es":"Configurar modo","da":"Indstil tilstand","ru":"Установить режим","pl":"Ustaw tryb"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Locked","nl":"Op slot","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane"},"desc":{"en":"True when the lock is locked","nl":"Geeft aan wanneer iets op slot is","de":"True, wenn das Schloss verriegelt ist","fr":"Vrai, si le verrou est verrouillé","it":"Vero quando la serratura è chiusa","sv":"Sant när låset är låst","no":"Sant når låsen er låst","es":"Verdadero cuando la cerradura está cerrada","da":"Sandt, når låsen er låst","ru":"Истина, когда замок закрыт","pl":"Adekwatne, kiedy zamek jest zablokowany"},"insights":true,"insightsTitleTrue":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane"},"insightsTitleFalse":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierta","da":"Ulåst","ru":"Открыто","pl":"Odblokowane"},"getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"locked_true","title":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrado","da":"Låst","ru":"Закрыто","pl":"Zablokowane"}},{"id":"locked_false","title":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierto","da":"Låst op","ru":"Открыто","pl":"Odblokowane"}}],"conditions":[{"id":"locked","title":{"en":"A lock is !{{locked|unlocked}}","nl":"Een slot is !{{vergrendeld|ontgrendeld}}","de":"Ein Schloss ist !{{verriegelt|entriegelt}}","fr":"Un verrou est !{{verrouillé|déverrouillé}}","it":"Una serratura è !{{chiusa|aperta}}","sv":"Ett lås är !{{låst|olåst}}","no":"En lås er !{{låst|ulåst}}","es":"Una cerradura está !{{cerrada|abierta}}","da":"En lås er blevet !{{låst|låst op}}","ru":"Замок !{{закрыт|открыт}}","pl":"Zamek jest !{{zablokowany|odblokowany}}"}}],"actions":[{"id":"lock","highlight":true,"title":{"en":"Lock","nl":"Vergrendel","de":"Verriegeln","fr":"Verrouiller","it":"Chiudi","sv":"Lås","no":"Lås","es":"Cerrar","da":"Lås","ru":"Закрыть","pl":"Zablokuj"}},{"id":"unlock","highlight":true,"title":{"en":"Unlock","nl":"Ontgrendel","de":"Entriegeln","fr":"Déverrouiller","it":"Apri","sv":"Lås upp","no":"Lås opp","es":"Abrir","da":"Lås op","ru":"Открыть","pl":"Odblokuj"}}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Battery","nl":"Accuniveau","de":"Batterie","fr":"Batterie","it":"Batteria","sv":"Batteri","no":"Batteri","es":"Batería","da":"Batteri","ru":"Аккумулятор","pl":"Bateria"},"units":{"en":"%"},"insights":true,"min":0,"max":100,"desc":{"en":"Battery charge in percentage (%)","nl":"Accuniveau in procenten (%)","de":"Batteriestand in Prozent (%)","fr":"Pourcentage de charge de la batterie (%)","it":"Percentuale di carica della batteria (%)","sv":"Batteriladdning i procent (%)","no":"Batterilading i prosent (%)","es":"Carga de la batería en porcentaje (%)","da":"Batteriniveau i procent (%)","ru":"Зарядка аккумулятора в процентах (%)","pl":"Naładowanie baterii w procentach (%)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"measure_battery_changed","title":{"en":"The battery level changed","nl":"Het accuniveau is veranderd","de":"Der Batteriestand hat sich geändert","fr":"Le niveau de la batterie a changé","it":"Il livello della batteria è cambiato","sv":"Batterinivån ändrades","no":"Batterinivået ble endret","es":"El nivel de la batería ha cambiado","da":"Batteriniveauet har ændret sig","ru":"Уровень аккумулятора изменен","pl":"Zmiana poziomu naładowania baterii"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":99}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"CO","nl":"CO","de":"CO","fr":"CO","it":"CO","sv":"CO","no":"CO","da":"CO","ru":"CO","pl":"CO"},"units":{"en":"ppm","ru":"ч./млн."},"insights":true,"desc":{"en":"CO in Parts-per-million (ppm)","nl":"CO deeltjes per miljoen (ppm)","de":"CO in Anteile pro Million (ppm)","fr":"Niveau de CO en parts par million (ppm)","it":"Livello di CO in parti per milione (ppm)","sv":"CO i partiklar-per-miljon (ppm)","no":"CO i partikler per million (ppm)","es":"CO en partes por millón (ppm)","da":"CO i partikler-per-million (ppm)","ru":"CO в частицах на миллион (ч./млн.)","pl":"Stężenie CO w części na milion (ppm)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co_changed","title":{"en":"The CO-level changed","nl":"Het CO niveau is veranderd","de":"Der CO-Gehalt hat sich geändert","fr":"Le niveau de CO a changé","it":"Il livello di CO è cambiato","sv":"CO-nivån ändrades","no":"CO-nivået ble endret","es":"El nivel de CO ha cambiado","da":"CO-niveauet har ændret sig","ru":"CO-уровень изменен","pl":"Zmiana poziomu stężenia CO"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"CO2","nl":"CO2","de":"CO2","fr":"CO2","it":"CO2","sv":"CO2","no":"CO2","da":"CO2","ru":"CO2","pl":"CO2"},"units":{"en":"ppm","ru":"ч./млн."},"insights":true,"desc":{"en":"CO2 in Parts-per-million (ppm)","nl":"CO2 deeltjes per miljoen (ppm)","de":"CO2 in Anteile pro Million (ppm)","fr":"Niveau de CO2 en parts par million (ppm)","it":"Livello di CO2 in parti per milione (ppm)","sv":"CO2 i partiklar-per-miljon (ppm)","no":"CO2 i partikler per million (ppm)","es":"CO2 en partes por millón (ppm)","da":"CO2 i partikler-per-million (ppm)","ru":"CO2 в частицах на миллион (ч./млн.)","pl":"Stężenie CO2 w części na milion (ppm)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co2_changed","title":{"en":"The CO2-level changed","nl":"Het CO2 niveau is veranderd","de":"Der CO2-Gehalt hat sich geändert","fr":"Le niveau de CO2 a changé","it":"Il livello di CO2 è cambiato","sv":"CO2-nivån ändrades","no":"CO2-nivet ble endret","es":"El nivel de CO2 ha cambiado","da":"CO2-niveauet har ændret sig","ru":"CO2-уровень изменен","pl":"Zmiana poziomu stężenia CO2"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Current","nl":"Stroom","de":"Strom","fr":"Courant","it":"Corrente","sv":"Ström","no":"Strøm","es":"Corriente","da":"Strøm","ru":"Текущее значение","pl":"Prąd"},"units":{"en":"A"},"insights":true,"desc":{"en":"Electric current (A)","nl":"Elektrische stroom (A)","de":"Elektrischer Strom (A)","fr":"Courant électrique (A)","it":"Corrente elettrica (A)","sv":"Elektrisk ström (A)","no":"Elektrisk strøm (A)","es":"Corriente eléctrica (A)","da":"Elektrisk strøm (A)","ru":"Электрический ток (А)","pl":"Prąd elektryczny (A)"},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_current_changed","title":{"en":"The electric current changed","nl":"De elektrische stroom is veranderd","de":"Der elektrische Strom hat sich geändert","fr":"Le courant électrique a changé","it":"La corrente elettrica è cambiata","sv":"Den elektriska strömmen ändrades","no":"Den elektriska strømmen ble endret","es":"La corriente eléctrica ha cambiado","da":"Den elektriske strøm ændrede sig","ru":"Электрический ток изменился","pl":"Zmiana prądu elektrycznego"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Gust angle","nl":"Windstoot richting","de":"Böenrichtung","fr":"Direction d\'un coup de vent","it":"Angolo delle raffiche","sv":"Vindriktning","no":"Vindretning","es":"Dirección del aire","da":"Vindretning","ru":"Угол порывов ветра","pl":"Kąt porywu wiatru"},"units":{"en":"°"},"insights":true,"desc":{"en":"Gust angle in degrees (°)","nl":"Windstoot richting in graden (°)","de":"Böenrichtung in Grad (°)","fr":"Direction du coup de vent en degrés (°)","it":"Angolo delle raffiche in gradi (°)","sv":"Vindriktning i grader (°)","no":"Vindretning i grader (°)","es":"Dirección del aire en grados (°)","da":"Vindretning i grader (°)","ru":"Угол порывов ветра в градусах (°)","pl":"Kąt porywu wiatru w stopniach (°)"},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_angle_changed","title":{"en":"The gust angle changed","nl":"Windstoot richting is veranderd","de":"Die Böenrichtung hat sich geändert","fr":"Direction du coup de vent a changé","it":"L\'angolo delle raffiche è cambiato","sv":"Vindriktningen har ändrats","no":"Vindretningen er endret","es":"La dirección del aire ha cambiado","da":"Vindretningen skiftede","ru":"Угол порывов ветра изменился","pl":"Zmiana kąta porywu wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Gust strength","nl":"Windstoot kracht","de":"Böenstärke","fr":"Force d\'un coup de vent","it":"Intensità delle raffiche","sv":"Vindstyrka","no":"Vindkast","es":"Fuerza del aire","da":"Vindstyrke","ru":"Сила порывов ветра","pl":"Siła porywu wiatru"},"units":{"en":"km/h","ru":"км/ч"},"insights":true,"desc":{"en":"Gust strength in kilometer per hour (km/h)","nl":"Windstoot snelheid in kilometer per uur (km/u)","de":"Böenstärke in Kilometer pro Stunde (km/h)","fr":"Force du coup de vent en kilomètres par heure (km/h)","it":"Intensità delle raffiche in chilometri orari (km/h)","sv":"Vindstyrka i kilometer per timme (km/h)","no":"Vindkaststyrke i kilometer per time (km/t)","es":"Fuerza del aire en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила порывов ветра в км в час (км/ч)","pl":"Siła porywu wiatru w kilometrach na godzinę (km/h)"},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_strength_changed","title":{"en":"The gust strength changed","nl":"De windstoot snelheid is veranderd","de":"Die Böenstärke hat sich geändert","fr":"La force du coup de vent a changé","it":"L\'intensità delle raffiche è cambiata","sv":"Vindstyrkan ändrades","no":"Vindstyrken ble endret","es":"La fuerza del aire ha cambiado","da":"Vindstyrken skiftede","ru":"Сила порывов ветра изменилась","pl":"Zmiana siły porywu wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Humidity","nl":"Luchtvochtigheid","de":"Luftfeuchtigkeit","fr":"Humidité","it":"Umidità","sv":"Luftfuktighet","no":"Luftfuktighet","es":"Humedad","da":"Luftfugtighed","ru":"Влажность","pl":"Wilgotność"},"units":{"en":"%"},"insights":true,"desc":{"en":"Humidity in percent (%)","nl":"Relatieve luchtvochtigheid (%)","de":"Luftfeuchtigkeit in Prozent (%)","fr":"Humidité en pourcentage (%)","it":"Umidità in percentuale (%)","sv":"Luftfuktighet i procent (%)","no":"Luftfuktighet i prosent (%)","es":"Humedad en porcentaje (%)","da":"Luftfugtighed i procent (%)","ru":"Влажность в процентах (%)","pl":"Wilgotność w procentach (%)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_humidity_changed","title":{"en":"The humidity changed","nl":"De luchtvochtigheid is veranderd","de":"Die Luftfeuchtigkeit hat sich geändert","fr":"L\'humidité a changé","it":"L\'umidità è cambiata","sv":"Luftfuktigheten ändrades","no":"Luftfuktigheten ble endret","es":"La humedad ha cambiado","da":"Luftfugtigheden ændrede sig","ru":"Влажность изменилась","pl":"Zmiana wilgotności"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":35}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Luminance","nl":"Helderheid","de":"Helligkeit","fr":"Luminance","it":"Luminanza","sv":"Luminans","no":"Luminans","es":"Luminancia","da":"Luminans","ru":"Яркость","pl":"Luminacja"},"units":{"en":"lx","ru":"лк"},"insights":true,"desc":{"en":"Luminance in Lux (lx)","nl":"Helderheid in Lux (lx)","de":"Leuchtkraft in Lux (lx)","fr":"Luminance en Lux (lx)","it":"Luminanza in Lux (lx)","sv":"Luminans i Lux (lx)","no":"Luminans i Lux (lx)","es":"Luminancia en Lux (lx)","da":"Luminans i Lux (lx)","ru":"Яркость в люксах (лк)","pl":"Luminacja w luksach (lx)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_luminance_changed","highlight":true,"title":{"en":"The luminance changed","nl":"De helderheid is veranderd","de":"Die Helligkeit hat sich geändert","fr":"La luminance a changé","it":"La luminanza è cambiata","sv":"Luminansen ändrades","no":"Luminansen ble endret","es":"La luminancia ha cambiado","da":"Luminansen ændrede sig","ru":"Яркость изменилась","pl":"Zmiana luminacji"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Noise","nl":"Geluid","de":"Lärm","fr":"Bruit","it":"Rumore","sv":"Buller","no":"Støy","es":"Ruido","ru":"Шум","pl":"Hałas"},"units":{"en":"dB","ru":"дБ"},"insights":true,"desc":{"en":"Noise in decibel (dB)","nl":"Geluid in decibel (dB)","de":"Lärm in Dezibel (dB)","fr":"Bruit en decibel (dB)","it":"Rumore in decibel (dB)","sv":"Buller i decibel (dB)","no":"Støy i decibel (dB)","es":"Ruido en decibelios (dB)","da":"Støj i decibel (dB)","ru":"Шум в децибелах (дБ)","pl":"Poziom hałasu w decybelach (dB)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_noise_changed","title":{"en":"The noise changed","nl":"Het geluidsniveau is veranderd","de":"Der Lärm hat sich geändert","fr":"Le bruit a changé","it":"Il rumore è cambiato","sv":"Bullret ändrades","no":"Støyen ble endret","es":"El ruido ha cambiado","da":"Støjniveauet ændrede sig","ru":"Шум изменился","pl":"Zmiana poziomu hałasu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":43}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"PM2.5","nl":"PM2.5","de":"PM2.5","fr":"PM2.5","it":"PM2.5","sv":"PM2.5","no":"PM2.5","es":"PM2,5","ru":"ТЧ 2.5","pl":"PM2.5"},"units":{"en":"μg/m³","ru":"мкг/м³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Deeltjesvormige luchtverontreiniging (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Atmosfæriske partikler (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Атмосферные твердые частицы (мкг/м³)","pl":"Pył zawieszony (μg/m³)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm25_changed","title":{"en":"The PM2.5 value has changed","nl":"De PM2.5 waarde is veranderd","de":"Der PM2.5-Wert hat sich geändert","fr":"La valeur PM2.5 a changé","it":"Il valore di PM2.5 è cambiato","sv":"PM2.5-värdet har ändrats","no":"PM2.5-verdien er endret","es":"El valor de PM2,5 ha cambiado","da":"PM2.5-værdien har ændret sig","ru":"Значение ТЧ 2.5 изменилось","pl":"Zmiana poziomu stężenia PM2.5"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Power","nl":"Vermogen","de":"Leistung","fr":"Puissance","it":"Potenza","sv":"Effekt","no":"Effekt","es":"Potencia","da":"Effekt","ru":"Электроэнергия","pl":"Moc"},"units":{"en":"W","ru":"Вт"},"insights":true,"desc":{"en":"Power in watt (W)","nl":"Vermogen in watt (W)","de":"Leistung in Watt (W)","fr":"Puissance en watt (W)","it":"Potenza in watt (W)","sv":"Effekt i watt (W)","no":"Effekt i watt (W)","es":"Potencia en vatios (W)","da":"Effekt i watt (W)","ru":"Электроэнергия (Вт)","pl":"Moc w watach (W)"},"options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii."}}},"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_power_changed","highlight":true,"title":{"en":"The power changed","nl":"Het vermogen is veranderd","de":"Der Verbrauch hat sich gändert","fr":"L\'énergie a changé","it":"L\'energia è cambiata","sv":"Strömmen ändrades","no":"Strømmen ble endret","es":"La potencia ha cambiado","da":"Strømmen ændrede sig","ru":"Электроэнергия изменена","pl":"Zmiana mocy"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Pressure","nl":"Druk","de":"Druck","fr":"Pression","it":"Pressione","sv":"Tryck","no":"Trykk","es":"Presión","da":"Tryk","ru":"Давление","pl":"Ciśnienie"},"units":{"en":"mbar","ru":"мбар"},"insights":true,"desc":{"en":"Pressure in millibar (mbar)","nl":"Druk in millibar (mbar)","de":"Druck in Millibar (mbar)","fr":"Pression en millibar (mbar)","it":"Pressione in millibar (mbar)","sv":"Tryck i millibar (mbar)","no":"Trykk i millibar (mbar)","es":"Presión en milibares (mbar)","da":"Tryk i millibar (mbar)","ru":"Давление (мбар)","pl":"Ciśnienie w milibarach (mbar)"},"chartType":"spline","decimals":0,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pressure_changed","title":{"en":"The pressure changed","nl":"De druk is veranderd","de":"Der Druck hat sich geändert","fr":"La pression a changé","it":"La pressione è cambiata","sv":"Trycket ändrades","no":"Trykket ble endret","es":"La presión ha cambiado","da":"Trykkey ændrede sig","ru":"Давление изменилось","pl":"Zmiana ciśnienia"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1000}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Rain","nl":"Regen","de":"Niederschlag","fr":"Pluie","it":"Pioggia","sv":"Regn","no":"Regn","es":"Lluvia","da":"Regn","ru":"Дождь","pl":"Deszcz"},"units":{"en":"mm","ru":"мм"},"insights":true,"desc":{"en":"Rain in millimeter (mm)","nl":"Regen in millimeter (mm)","de":"Niederschlag in Millimeter (mm)","fr":"Pluie en millimètres (mm)","it":"Pioggia in millimetri (mm)","sv":"Regn i millimeter (mm)","no":"Regn i millimeter (mm)","es":"Lluvia en milímetros (mm)","da":"Regn i millimeter (mm)","ru":"Дождь в миллиметрах (мм)","pl":"Deszcz w milimetrach (mm)"},"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rain_changed","title":{"en":"The rain changed","nl":"De regen is veranderd","de":"Der Niederschlag hat sich geändert","fr":"La pluie a changé","it":"La pioggia è cambiata","sv":"Regnet ändrades","no":"Regnet ble endret","es":"La lluvia ha cambiado","da":"Regnen ændrede sig","ru":"Дождь изменился","pl":"Zmiana poziomu deszczu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":3}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura"},"units":{"en":"°C"},"insights":true,"desc":{"en":"Temperature in degrees Celsius (°C)","nl":"Temperatuur in graden Celsius (°C)","de":"Temperatur in Grad Celsius (°C)","fr":"Température en degrés Celsius (°C)","it":"Temperatura in gradi Celsius (°C)","sv":"Temperatur i grader Celsius (°C)","no":"Temperatur i grader Celsius (°C)","es":"Temperatura en grados Celsius (°C)","da":"Temperatur i Celsius (°C)","ru":"Температура в градусах Цельсия (°C)","pl":"Temperatura w stopniach Celsjusza (°C)"},"decimals":2,"chartType":"spline","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_temperature_changed","highlight":true,"title":{"en":"The temperature changed","nl":"De temperatuur is veranderd","de":"Die Temperatur hat sich geändert","fr":"La température a changé","it":"La temperatura è cambiata","sv":"Temperaturen ändrades","no":"Temperaturen ble endret","es":"La temperatura ha cambiado","da":"Temperaturen ændrede sig","ru":"Температура изменена","pl":"Zmiana temperatury"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Ultraviolet","nl":"Ultraviolet","de":"Ultraviolett","fr":"Ultraviolet","it":"Ultravioletto","sv":"Ultraviolett","no":"Ultrafiolett","es":"Ultravioleta","da":"Ultraviolet","ru":"Ультрафиолетовое излучение","pl":"Promieniowanie UV"},"units":{"en":"UVI","ru":"Индекс УФ-излучения"},"desc":{"en":"Ultraviolet in UV index (UVI)","de":"Ultraviolett in UV-Index (UVI)","fr":"Ultraviolet en UV-Index (UVI)","it":"Ultravioletto nell\'indice UV (UVI)","sv":"Ultraviolett i UV-Index (UVI)","no":"Ultrafiolett på UV-indeks (UVI)","es":"Ultravioleta en índice UV (UV)","da":"Ultraviolet i UV-indeks (UV)","ru":"Индекс ультрафиолетового излучения","pl":"Promieniowanie UV w indeksie UV (UVI)"},"insights":true,"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ultraviolet_changed","title":{"en":"The ultraviolet value changed","nl":"De ultraviolet waarde is veranderd","de":"Der Ultraviolett-Wert hat sich geändert","fr":"La valeur d\'ultraviolet a changé","it":"Il valore dell\'ultravioletto è cambiato","sv":"Ultraviolettvärdet ändrades","no":"Ultrafiolettverdien ble endret","es":"La radiación ultravioleta ha cambiado","da":"UV-værdien ændrede sig","ru":"Значение УФ-излучения изменилось","pl":"Zmiana poziomu promieniowania UV"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Voltage","nl":"Voltage","de":"Spannung","fr":"Voltage","it":"Voltaggio","sv":"Spänning","no":"Spenning","es":"Tensión","da":"Elektrisk spænding","ru":"Вольтаж","pl":"Napięcie"},"units":{"en":"V","ru":"Вольт"},"desc":{"en":"Voltage (V)","nl":"Voltage (V)","de":"Spannung (V)","fr":"Voltage (V)","it":"Voltaggio (V)","sv":"Spänning (V)","no":"Spenning (V)","es":"Tensión (V)","da":"Volt (V)","ru":"Вольтаж (Вольт)","pl":"Napięcie (V)"},"insights":true,"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_voltage_changed","title":{"en":"The voltage changed","nl":"Het voltage is veranderd","de":"Die Spannung hat sich geändert","fr":"Le voltage a changé","it":"Il voltaggio è cambiato","sv":"Spänningen ändrades","no":"Spenningen ble endret","es":"La tensión ha cambiado","da":"Den elektriske spænding ændrede sig","ru":"Вольтаж изменен","pl":"Zmiana poziomu napięcia"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Water flow","nl":"Waterdoorstroming","de":"Wasserfluss","fr":"Débit d\'eau","it":"Flusso d\'acqua","sv":"Vattenflöde","no":"Vannstrøm","es":"Caudal del agua","da":"Vandstrøm","ru":"Поток воды","pl":"Poziom przepływu wody"},"units":{"en":"L/min","ru":"Л/мин"},"desc":{"en":"Water flow in liters per minute (L/min)","nl":"Waterdoorstroming in liters per minuut (L/min)","de":"Wasserfluss in Liter pro Minute (L/min)","fr":"Débit d\'eau en litres par minute (L/min)","it":"Flusso d\'acqua in litri al minuto (L/min)","sv":"Vattenflöde i liter per minut (L/min)","no":"Vannstrøm i liter per minutt (L/min)","es":"Caudal del agua en litros por minuto (L/min)","da":"Vandstrøm i liter per minut (L/min)","ru":"Поток воды в литрах в минуту (л/мин)","pl":"Poziom przepływu wody w litrach na minutę (L/min)"},"insights":true,"chartType":"stepLine","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_water_changed","title":{"en":"The waterflow has changed","nl":"De waterstroom veranderd","de":"Der Wasserfluss hat sich geändert","fr":"Le débit d\'eau a changé","it":"Il flusso d\'acqua è cambiato","sv":"Vattenflödet ändrades","no":"Vannstrømmen ble endret","es":"El caudal del agua ha cambiado","da":"Vandstrømmen har ændret sig","ru":"Поток воды изменился","pl":"Zmiana poziomu przepływu wody"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Wind angle","nl":"Windrichting","de":"Windrichtung","fr":"Angle du vent","it":"Angolo del vento","sv":"Vindvinkel","no":"Vindvinkel","es":"Ángulo del viento","da":"Vindvinkel","ru":"Угол ветра","pl":"Kąt wiatru"},"units":{"en":"°"},"desc":{"en":"Wind angle in degrees (°)","nl":"Windrichting in graden (°)","de":"Windrichtung in Grad (°)","fr":"Angle du vent en degrés (°)","it":"Angolo del vento in gradi (°)","sv":"Vindvinkel i grader (°)","no":"Vindvinkel i grader (°)","es":"Ángulo del viento en grados (°)","da":"Vindvinkel i grader (°)","ru":"Угол ветра в градусах (°)","pl":"Kąt wiatru w stopniach (°)"},"insights":true,"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_angle_changed","title":{"en":"The wind angle changed","nl":"De windrichting is veranderd","de":"Die Windrichtung hat sich geändert","fr":"L\'angle du vent a changé","it":"L\'angolo del vento è cambiato","sv":"Vindvinkel ändrad","no":"Vindvinkel er endret","es":"El ángulo del viento ha cambiado","da":"Vindvinklen er skiftet","ru":"Угол наклона ветра изменился","pl":"Zmiana kąta wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Wind strength","nl":"Windsnelheid","de":"Windstärke","fr":"Force du vent","it":"Forza del vento","sv":"Vindstyrka","no":"Vindstyrke","es":"Fuerza del viento","da":"Vindstyrke","ru":"Сила ветра","pl":"Siła wiatru"},"units":{"en":"km/h","ru":"км/ч"},"desc":{"en":"Wind Strength in kilometer per hour (km/h)","nl":"Windsnelheid in kilometer per uur (km/u)","de":"Windstärke in Kilometer pro Stunde (km/h)","fr":"Force du vent en kilomètres par heure (km/h)","it":"Forza del vento in chilometri orari (km/h)","sv":"Vindstyrka i kilometer per timme (km/h)","no":"Vindstyrke i kilometer per time (km/t)","es":"La fuerza del viento en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила ветра в км в час (км/ч)","pl":"Siła wiatru w kilometrach na godzinę (km/h)"},"insights":true,"chartType":"spline","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_strength_changed","title":{"en":"The wind strength changed","nl":"De windsnelheid is veranderd","de":"Die Windstärke hat sich geändert","fr":"La force du vent a changé","it":"La forza del vento è cambiata","sv":"Vindstyrkan ändrades","no":"Vindstyrken ble endret","es":"La fuerza del viento ha cambiado","da":"Vindstyrken ændrede sig","ru":"Сила ветра изменилась","pl":"Zmiana siły wiatru"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Gas meter","nl":"Gasmeter","de":"Gaszähler","fr":"Compteur de gaz","it":"Contatore del gas","sv":"Gasmätare","no":"Gassmåler","es":"Contador de gas","da":"Gasmåler","ru":"Счетчик газа","pl":"Licznik gazowy"},"min":0,"decimals":2,"chartType":"spline","units":{"en":"m³","ru":"м³"},"desc":{"en":"Gas usage in cubic meter (m³)","nl":"Gas gebruik in kubieke meter (m³)","de":"Gasverbrauch in Kubikmeter (m³)","fr":"Consommation de gaz en mètres cubes (m³)","it":"Consumo di gas in metri cubi (m³)","sv":"Gasanvändning i kubikmeter (m³)","no":"Gassforbruk i kubikkmeter (m³)","es":"Consumo de gas en metros cúbicos (m³)","da":"Gasforbrug i kubikmeter (m³)","ru":"Использование газа в кубометрах (м³)","pl":"Zużycie gazu w metrach sześciennych (m³)"},"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_gas_changed","title":{"en":"The gas meter changed","nl":"De gasmeter is veranderd","de":"Der Gaszähler hat sich geändert","fr":"Le compteur de gaz a changé","it":"Il contatore del gas è cambiato","sv":"Gasmätaren ändrades","no":"Gassmåleren ble endret","es":"El contador de gas ha cambiado","da":"Gasmåleren ændrede sig","ru":"Измерения счетчика газа изменились","pl":"Zmiana w liczniku gazowym"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Energy","nl":"Energie","de":"Energie","fr":"Énergie","it":"Energia","sv":"Energi","no":"Energi","es":"Energía","da":"Energi","ru":"Электроэнергия","pl":"Energia"},"decimals":2,"units":{"en":"kWh","ru":"кВтч"},"desc":{"en":"Energy usage in kilowatt-hour (kWh)","nl":"Energie verbruik in kilowattuur (kWh)","de":"Energieverbrauch in Kilowattstunde (kWh)","fr":"Consommation d\'énergie en kilowatt-heure (kWh)","it":"Consumo energetico in kilowattora (kWh)","sv":"Energianvändning i kilowattimmar (kWh)","no":"Energiforbruk i kilowattimer (kWh)","es":"Uso de energía en kilovatio hora (kWh)","da":"Energiforbrug i kilowattime (kWh)","ru":"Энергопотребление в киловатт-часах (кВтч)","pl":"Zużycie energii w kilowatogodzinach (kWh)"},"chartType":"spline","options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii."}}},"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_power_changed","title":{"en":"The power meter changed","nl":"De stroommeter is veranderd","de":"Der Gesamtverbrauch hat sich geändert","fr":"Le compteur électrique a changé","it":"Il misuratore di potenza è cambiato","sv":"Elmätaren ändrades","no":"Strømmåleren ble endret","es":"El contador de energía ha cambiado","da":"Strømmåleren ændrede sig","ru":"Измерения счетчика электроэнергии изменились","pl":"Zmiana w liczniku mocy"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Rain meter","nl":"Regenmeter","de":"Regenzähler","fr":"Compteur de pluie","it":"Misuratore di pioggia","sv":"Regnmätare","no":"Regnmåler","es":"Pluviómetro","da":"Regnmåler","ru":"Счетчик дождя","pl":"Licznik deszczu"},"units":{"en":"m³","ru":"м³"},"chartType":"spline","desc":{"en":"Rain in cubic meter (m³)","nl":"Regen in kubieke meter (m³)","de":"Regen in Kubikmeter (m³)","fr":"Pluie en mètres cubes (m³)","it":"Pioggia in metri cubi (m³)","sv":"Regn i kubikmeter (m³)","no":"Regn i kubikkmeter (m³)","es":"Lluvia en metros cúbicos (m³)","da":"Regn i kubikmeter (m³)","ru":"Дождь в кубометрах (м³)","pl":"Deszcz w metrach sześciennych (m³)"},"decimals":2,"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_rain_changed","title":{"en":"The rain meter changed","nl":"De regenmeter is veranderd","de":"Der Regenzähler hat sich geändert","fr":"Le compteur de pluie a changé","it":"Il misuratore di pioggia è cambiato","sv":"Regnmätaren ändrades","no":"Regnmåleren ble endret","es":"El pluviómetro ha cambiado","da":"Regnmåleren ændrede sig","ru":"Измерения дождя изменились","pl":"Zmiana w liczniku deszczu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Water meter","nl":"Watermeter","de":"Wasserzähler","fr":"Compteur d\'eau","it":"Contatore dell\'acqua","sv":"Vattenmätare","no":"Vannmåler","es":"Contador de agua","da":"Vandmåler","ru":"Счетчик воды","pl":"Licznik wody"},"decimals":3,"min":0,"units":{"en":"m³","ru":"м³"},"chartType":"spline","desc":{"en":"Water usage in cubic meter (m³)","nl":"Water gebruik in kubieke meter (m³)","de":"Wasserverbrauch in Kubikmeter (m³)","fr":"Consommation d\'eau en mètres cubes (m³)","it":"Utilizzo di acqua in metri cubi (m³)","sv":"Vattenanvändning i kubikmeter (m³)","no":"Vannforbruk i kubikkmeter (m³)","es":"Consumo de agua en metros cúbicos (m³)","da":"Vandforbrug i kubikmeter (m³)","ru":"Использование воды в кубометрах (м³)","pl":"Zużycie wody w metrach sześciennych (m³)"},"insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_water_changed","title":{"en":"The water meter changed","nl":"De watermeter is veranderd","de":"Der Wasserzähler hat sich geändert","fr":"Le compteur d\'eau a changé","it":"Il contatore dell\'acqua è cambiato","sv":"Vattenmätaren ändrades","no":"Vannmåleren ble endret","es":"El contador de agua ha cambiado","da":"Vandmåleren ændrede sig","ru":"Измерения счетчика воды изменились","pl":"Zmiana w liczniku wody"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Slått på","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone"},"getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Slått på","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone"},"insightsTitleFalse":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Slått av","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone"},"options":{"setOnDim":{"type":"boolean","default":true,"desc":{"en":"When a device has both an `onoff` and `dim` capability, and Homey wants to turn the device on AND to a specific dim value, set this capability to `false` to prevent Homey from sending a set command.","de":"Wenn ein Gerät sowohl \'An/Aus\'- als auch \'Dimm\'-Fähigkeit hat und Homey das Gerät anschalten UND auf einen bestimmten Wert dimmen will, setze diese Fähigkeit auf \'false\', um Homey am Senden eines Setzen-Befehls zu hindern.","fr":"Quand un appareil peut `allumer/éteindre` et `estomper`, et que Homey veut allumer l\'appareil ET sur une valeur d\'estompage spécifique, définissez cette capacité sur `faux` pour empêcher Homey d\'envoyer une commande de définition.","it":"Quando un dispositivo può \'accendersi\' e \'attenuarsi\' e Homey desidera attivare il dispositivo E definire un valore specifico, imposta questa funzione su \'falso\' per impedire a Homey di inviare un comando di definizione.","sv":"När en enhet har både en `på/av`- och `dim`-funktionalitet och Homey vill slå på enheten OCH till ett specifikt dimvärde, sätt den här funktionen till `falsk` för att förhindra att Homey skickar ett inställningskommando.","no":"Når en enhet har både en `på/av`- og en `dempe`-funksjon og Homey vil slå på enheten OG sette dempingen til en spesifikk verdi, sett denne egenskapen til `usann` for å forhindre at Homey sender en innstillingskommando.","es":"Cuando un dispositivo tiene tanto la capacidad \'encender/apagar\' como la de \'intensidad de la luz\', y Homey quiere encender el dispositivo Y ajustar una intensidad concreta, configura esta capacidad como \'falso\' para evitar que Homey envíe un comando de configuración.","da":"Når en enhed har både en `tænd/sluk`- og en `dæmpe`-funktion, og Homey vil tænde for enheden OG indstille til en specifik dæmpeværdi, skal denne funktion indstilles til `falsk` for at forhindre, at Homey sender en indstillingskommando.","ru":"Когда устройство имеет функции `onoff` и `dim`, и Homey хочет включить устройство ТАКЖЕ с определенным значением яркости, установите для этой функции значение `false`, чтобы Homey не отправил команду на установку.","pl":"Jeśli urządzenie ma zdolności „wł.wył.” i „przygaś”, a urządzenie Homey chce włączyć produkt ORAZ ustawić konkretną wartość przygaszenia, ustaw tę zdolność jako „nieadekwatne” – w ten sposób Homey nie będzie wysyłać ustawionych poleceń."}},"greyout":{"type":"boolean","default":false,"desc":{"en":"When this capability is false, give a visual hint to greyout the device.","de":"wenn diese Fähigkeit \'false\' ist, gibt es einen visuellenen Hinweis, um das Gerät auszugrauen.","fr":"Quand cette capacité est fausse, donnez un indice visuel pour griser cet appareil.","it":"Quando questa funzione è impostata su falso, dai un indizio visivo per far apparire questo dispositivo in grigio.","sv":"När den här funktionen är falsk, ge en ett visuellt tips för att gråa ut enheten.","no":"Når denne egenskapen er usann, gi et visuelt tips for å vise enheten i grått.","es":"Cuando esta capacidad es falsa, da una indicación visual para poner en gris el dispositivo.","da":"Når denne funktion er falsk, skal du give et visuelt tip for at vise enheden i grå.","ru":"Когда функция ложна, установите визуальную подсказку, чтобы выделить устройство серым цветом.","pl":"Jeśli zdolność jest nieadekwatna, użyj wizualnej wskazówki, aby wyświetlić urządzenie na szaro."}}},"uiComponent":"toggle","uiQuickAction":true,"$flow":{"triggers":[{"id":"onoff_true","highlight":true,"title":{"en":"Turned on","nl":"Aangezet ","de":"Angeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Slått på","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone"}},{"id":"onoff_false","highlight":true,"title":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Slått av","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone"}}],"conditions":[{"id":"on","title":{"en":"Is turned !{{on|off}}","nl":"Is !{{aan|uit}}","de":"Ist !{{an|aus}}","fr":"Est !{{activé|désactivé}}","it":"È !{{attivato|disattivato}}","sv":"Är !{{på|av}}","no":"Er slått !{{på|av}}","es":"Está !{{encendido|apagado}}","da":"Er !{{tændt|slukket}}","ru":"!{{Вкл.|Выкл.}}","pl":"Jest !{{włączone|wyłączone}}"}},{"id":"open","title":{"en":"Is !{{open|closed}}","nl":"Is !{{geopend|gesloten}}","de":"Ist !{{offen|geschlossen}}","fr":"Est !{{ouvert|fermé}}","it":"È !{{aperto|chiuso}}","sv":"Är !{{öppen|stängd}}","no":"Er !{{åpen|lukket}}","es":"Está !{{abierto|cerrado}}","da":"Er !{{åben|lukket}}","ru":"!{{Открыто|Закрыто}}","pl":"Jest !{{otwarte|zamknięte}}"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}],"actions":[{"id":"on","highlight":true,"title":{"en":"Turn on","nl":"Zet aan","de":"Einschalten","fr":"Activer","it":"Attiva","sv":"Aktivera","no":"Slå på","es":"Encender","da":"Tændt","ru":"Включить","pl":"Włącz"}},{"id":"off","highlight":true,"title":{"en":"Turn off","nl":"Zet uit","de":"Ausschalten","fr":"Désactiver","it":"Disattiva","sv":"Stäng av","no":"Slå av","es":"Apagar","da":"Slukket","ru":"Выключить","pl":"Wyłącz"}},{"id":"toggle","title":{"en":"Toggle on or off","nl":"Schakel aan of uit","de":"Ein- oder ausschalten","fr":"Alterner activé ou désactivé","it":"Attiva o disattiva","sv":"Växla på och av","no":"Veksle mellom på og av","es":"Encender o apagar","da":"Tænd eller sluk","ru":"Переключатель включить/выключить","pl":"Przełącz na wł. lub wył."}},{"id":"open","title":{"en":"Open curtain or blind","nl":"Open de gordijnen","de":"Vorhang oder Rollladen öffnen","fr":"Ouvrir rideau ou store","it":"Apri la tenda o le persiane","sv":"Öppna gardin eller persienn","no":"Åpne gardin eller persienne","es":"Abrir cortina o persiana","da":"Åbn gardiner eller persienner","ru":"Открыть штору или жалюзи","pl":"Rozchyl zasłonę lub roletę"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}},{"id":"close","title":{"en":"Close curtain or blind","nl":"Sluit de gordijnen","de":"Vorhang oder Rollladen schließen","fr":"Fermer rideau ou store","it":"Chiudi la tenda o le persiane","sv":"Stäng gardin eller persienn","no":"Lukk gardin eller persienne","es":"Cerrar cortina o persiana","da":"Luk gardiner eller persienner","ru":"Закрыть штору или жалюзи","pl":"Zasuń zasłonę lub roletę"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Album","nl":"Album","de":"Album","fr":"Album","it":"Album","sv":"Album","no":"Album","es":"Álbum","da":"Album","ru":"Альбом","pl":"Album"},"type":"string","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_album_changed","title":{"en":"The album changed","nl":"Het album is veranderd","de":"Das Album hat sich geändert","fr":"L\'album a été modifié","it":"L\'album è cambiato","sv":"Albumet ändrades","no":"Albumet ble endret","es":"El álbum ha cambiado","da":"Albummet skiftede","ru":"Альбом изменен","pl":"Zmiana albumu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Life Lessons"}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Artist","nl":"Artiest","de":"Künstler","fr":"Artiste","it":"Artista","sv":"Artist","no":"Artist","es":"Artista","da":"Kunstner","ru":"Исполнитель","pl":"Wykonawca"},"type":"string","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_artist_changed","title":{"en":"The artist changed","nl":"De artiest is veranderd","de":"Der Künstler hat sich verändert","fr":"L\'artiste a été modifié","it":"L\'artista è cambiato","sv":"Artisten ändrades","no":"Artisten ble endret","es":"El artista ha cambiado","da":"Kunstneren skiftede","ru":"Исполнитель изменен","pl":"Zmiana wykonawcy"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Johnny S."}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Duration","nl":"Lengte","de":"Länge","fr":"Durée","it":"Durata","sv":"Längd","no":"Varighet","es":"Duración","da":"Varighed","ru":"Продолжительность","pl":"Czas trwania"},"type":"number","getable":true,"setable":false,"uiComponent":"media"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej"},"type":"boolean","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"next","title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Playing","nl":"Afspelen","de":"Abspielen","fr":"Lire","it":"In riproduzione","sv":"Spelas","no":"Avspilles","es":"Reproduciendo","da":"Spiller","ru":"Воспроизведение","pl":"Odtwarzanie"},"type":"boolean","getable":true,"setable":true,"uiComponent":"media","uiQuickAction":true,"$flow":{"triggers":[{"id":"speaker_playing_true","title":{"en":"Started playing","nl":"Begint af te spelen","de":"Begann zu spielen","fr":"Lecture démarrée","it":"Riproduzione avviata","sv":"Började spela","no":"Startet spilling","es":"Reproducción iniciada","da":"Begyndte at spille","ru":"Воспроизведение началось","pl":"Odtwarzanie rozpoczęte"}},{"id":"speaker_playing_false","title":{"en":"Stopped playing","nl":"Gestopt met afspelen","de":"Hörte auf zu spielen","fr":"Lecture stoppée","it":"Riproduzione interrotta","sv":"Slutade spela","no":"Stanset spilling","es":"Reproducción detenida","da":"Stoppede med at spille","ru":"Воспроизведение приостановлено","pl":"Odtwarzanie zatrzymane"}}],"conditions":[{"id":"is_playing","title":{"en":"Is !{{|not}} playing","nl":"Is !{{|niet}} aan het afspelen","de":"Wird !{{|nicht}} abgespielt","fr":"!{{Est|N\'est pas}} en cours de lecture","it":"!{{È|Non è}} in riproduzione","sv":"Spelas !{{|inte}}","no":"Avspilles !{{|ikke}}","es":"!{{Se está|No se está}} reproduciendo","da":"Spiller !{{|ikke}}","ru":"!{{|не}} воспроизводится","pl":"!{Trwa{|nie trwa}} odtwarzanie"}}],"actions":[{"id":"play","highlight":true,"title":{"en":"Play","nl":"Speel af","de":"Play","fr":"Lire","it":"Riproduci","sv":"Spela","no":"Spill av","es":"Reproducir","da":"Afspil","ru":"Воспроизвести","pl":"Odtwórz"}},{"id":"pause","highlight":true,"title":{"en":"Pause","nl":"Pauzeer","de":"Pause","fr":"Pause","it":"Pausa","sv":"Pausa","no":"Pause","es":"Pausa","da":"Pause","ru":"Пауза","pl":"Pauza"}},{"id":"toggle_playing","title":{"en":"Toggle Play/Pause","nl":"Toggle Afspelen/Pauze","de":"Play/Pause umschalten","fr":"Alterner Lire/Pause","it":"Alterna riproduzione/pausa","sv":"Växla spela/pausa","no":"Veksle mellom avspilling/pause","es":"Reproducir/Pausar","da":"Skift mellem Afspil/Pause","ru":"Переключатель Воспроизвести/Пауза","pl":"Przełącz na Odtwórz/Pauza"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja"},"type":"number","getable":true,"setable":false,"uiComponent":"media"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć"},"type":"boolean","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"prev","title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Repeat","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz"},"type":"enum","values":[{"id":"none","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Arrêt","it":"Spegni","sv":"Av","no":"Av","es":"Apagar","da":"Fra","ru":"выкл","pl":"wył"}},{"id":"track","title":{"en":"Repeat Track","de":"Titel wiederholen","fr":"Répéter le titre","it":"Ripeti traccia","sv":"Upprepa spår","no":"Gjenta spor","es":"Repetir pista","da":"Gentag spor","ru":"Повторить трек","pl":"Powtórz utwór"}},{"id":"playlist","title":{"en":"Repeat Playlist","de":"Playlist wiederholen","fr":"Répéter la playlist","it":"Ripeti playlist","sv":"Upprepa spellista","no":"Gjenta spilleliste","es":"Repetir lista de reproducción","da":"Gentag afspilningsliste","ru":"Повторить плейлист","pl":"Powtórz składankę"}}],"getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_repeat","title":{"en":"Repeat","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz"},"args":[{"name":"value","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Shuffle","de":"Zufallswiedergabe","fr":"Aléatoire","it":"Ordine casuale","sv":"Blanda","no":"Tilfeldig rekkefølge","es":"Aleatorio","da":"Shuffle","ru":"В случайном порядке","pl":"Odtwarzaj losowo"},"type":"boolean","getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_shuffle_true","title":{"en":"Shuffle on","nl":"Shuffle aan","de":"Zufallswiedergabe an","fr":"Aléatoire activée","it":"Ordine casuale attivato","sv":"Blanda på","no":"Tilfeldig rekkefølge på","es":"Orden aleatorio activado","da":"Shufflet slået til","ru":"В случайном порядке","pl":"Włącz odtwarzanie losowe"}},{"id":"set_shuffle_false","title":{"en":"Shuffle off","nl":"Shuffle uit","de":"Zufallswiedergabe aus","fr":"Aléatoire désactivée","it":"Ordine casuale disattivato","sv":"Blanda av","no":"Tilfeldig rekkefølge av","es":"Orden aleatorio desactivado","da":"Shuffle slået fra","ru":"По порядку","pl":"Wyłącz odtwarzanie losowe"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Track","nl":"Track","de":"Track","fr":"Titre","it":"Traccia","sv":"Spår","no":"Spor","es":"Pista","da":"Spor","ru":"Трек","pl":"Utwór"},"type":"string","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_track_changed","title":{"en":"The track changed","nl":"De track is veranderd","de":"Der Track hat sich geändert","fr":"Le titre a été modifié","it":"La traccia è cambiata","sv":"Spåret ändrades","no":"Sporet ble endret","es":"La pista ha cambiado","da":"Sporet skiftede","ru":"Трек изменен","pl":"Zmiana utworu"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"My World"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"number","min":4,"max":35,"title":{"en":"Target temperature","nl":"Ingestelde temperatuur","de":"Ziel-Temperatur","fr":"Température cible","it":"Temperatura nominale","sv":"Måltemperatur","no":"Ønsket temperatur","es":"Temperatura configurada","da":"Måltemperatur","ru":"Целевая температура","pl":"Cel temperatury"},"units":{"en":"°C","ru":"°C"},"chartType":"stepLine","decimals":2,"insights":true,"getable":true,"setable":true,"uiComponent":"thermostat","$flow":{"triggers":[{"id":"target_temperature_changed","title":{"en":"The target temperature changed","nl":"De ingestelde temperatuur is veranderd","de":"Die Ziel-Temperatur hat sich geändert","fr":"La température cible a été modifiée","it":"La temperatura nominale è cambiata","sv":"Måltemperaturen ändrades","no":"Ønsket temperatur ble endret","es":"La temperatura configurada ha cambiado","da":"Måltemperaturen blev ændret","ru":"Целевая температура изменена","pl":"Zmiana celu temperatury"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}],"actions":[{"id":"target_temperature_set","highlight":true,"title":{"en":"Set the temperature","nl":"Stel de temperatuur in","de":"Die Temperatur setzen","fr":"Définir la température","it":"Imposta la temperatura","sv":"Ställ in temperaturen","no":"Innstill temperaturen","es":"Configurar la temperatura","da":"Indstil temperaturen","ru":"Установить температуру","pl":"Ustaw temperaturę"},"args":[{"name":"target_temperature","type":"range","min":5,"max":40,"step":0.5,"label":"°C","labelDecimals":1}]}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Thermostat mode","nl":"Thermostaat modus","de":"Thermostat-Modus","fr":"Mode thermostat","it":"Modalità termostato","sv":"Termostatläge","no":"Termostatmodus","es":"Modo del termostato","da":"Termostattilstand","ru":"Режим термостата","pl":"Tryb termostatu"},"desc":{"en":"Mode of the thermostat","nl":"Modus van de thermostaat","de":"Modus des Thermostates","fr":"Mode du thermostat","it":"Modalità del termostato","sv":"Läge för termostaten","no":"Modus for termostaten","es":"Modo del termostato","da":"Tilstand for termostat","ru":"Режим термостата","pl":"Tryb termostatu"},"values":[{"id":"auto","title":{"en":"Automatic","nl":"Automatisch","de":"Automatisch","fr":"Automatique","it":"Automatica","sv":"Automatiskt","no":"Automatisk","es":"Automático","da":"Automatisk","ru":"Автоматически","pl":"Automatyczny"}},{"id":"heat","title":{"en":"Heat","nl":"Verhitten","de":"Heizen","fr":"Chauffer","it":"Calore","sv":"Värme","no":"Varme","es":"Calentar","da":"Opvarm","ru":"Обогрев","pl":"Ogrzewanie"}},{"id":"cool","title":{"en":"Cool","nl":"Koelen","de":"Kühlen","fr":"Refroidir","it":"Raffreddamento","sv":"Kyla","no":"Avkjøle","es":"Enfriar","da":"Køl ned","ru":"Охлаждение","pl":"Chłodzenie"}},{"id":"off","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Désactivé","it":"Disattivata","sv":"Av","no":"Av","es":"Desactivado","da":"Deaktiveret","ru":"Выкл","pl":"Wył"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"thermostat_mode_changed","title":{"en":"Thermostat mode has changed","nl":"Thermostaat modus is veranderd","de":"Thermostat-Modus hat sich geändert","fr":"Mode thermostat a été modifié","it":"La modalità del termostato è cambiata","sv":"Termostatläge ändrades","no":"Termostatmodus ble endret","es":"El modo del termostato ha cambiado","da":"Termostattilstand er blevet ændret","ru":"Режим термостата изменен","pl":"Zmiana trybu termostatu"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"thermostat_mode_is","title":{"en":"Thermostat mode !{{is|is not}}","nl":"Thermostaat modus !{{is|is niet}}","de":"Thermostat-Modus !{{ist|ist nicht}}","fr":"Mode thermostat !{{est|n\'est pas}}","it":"La modalità del termostato !{{è|non è}}","sv":"Termostatläge !{{är|är inte}}","no":"Termostatmodus !{{er|er ikke}}","es":"El modo del termostato !{{está|no está}}","da":"Termostattilstand !{{er|er ikke}}","ru":"Режим термостата !{{|не}}","pl":"Tryb termostatu !{{to|to nie}}"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"thermostat_mode_set","title":{"en":"Set the mode","nl":"Stel de modus in","de":"Modus setzen","fr":"Définir le mode","it":"Imposta la modalità","sv":"Ställ in läget","no":"Innstill modusen","es":"Configurar el modo","da":"Indstil tilstanden","ru":"Установить режим","pl":"Ustaw tryb"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"type":"enum","title":{"en":"Vacuum cleaner state","de":"Staubsauger-Status","fr":"Etat de l\'aspirateur","it":"Stato dell\'aspirapolvere","sv":"Dammsugarstatus","no":"Støvsugerstatus","es":"Modo de la aspiradora","da":"Støvsugerstatus","ru":"Состояние пылесоса","pl":"Stan odkurzacza"},"values":[{"id":"cleaning","title":{"en":"Cleaning","nl":"Stofzuigen","de":"Staubsaugen","fr":"Aspirer","it":"Pulizia in corso","sv":"Städning","no":"Rengjøring","es":"Aspirando","da":"Støvsuger","ru":"Идет уборка","pl":"Sprzątanie"}},{"id":"spot_cleaning","title":{"en":"Spot cleaning","nl":"Vlek schoonmaken","de":"Spot-Reinigung","fr":"Détacher","it":"Pulizia delle macchie","sv":"Områdesstädning","no":"Områderengjøring","es":"Aspirando un punto concreto","da":"Områdestøvsugning","ru":"Идет точечная уборка","pl":"Przestań sprzątać"}},{"id":"docked","title":{"en":"Docked","nl":"Op laadstation","de":"An Ladestation","fr":"Connecté à la base","it":"Connesso alla base","sv":"Dockad","no":"I ladestasjon","es":"En la estación de carga","da":"I ladestation","ru":"На станции","pl":"W bazie"}},{"id":"charging","title":{"en":"Charging","nl":"Aan het opladen","de":"Lädt auf","fr":"En charge","it":"In carica","sv":"Laddar","no":"Lader","es":"Cargando","da":"Lader","ru":"Заряжается","pl":"Ładowanie"}},{"id":"stopped","title":{"en":"Stopped","nl":"Gestopt","de":"Gestoppt","fr":"Arrêté","it":"Fermo","sv":"Stoppad","no":"Stanset","es":"Detenida","da":"Stoppet","ru":"Остановлен","pl":"Zatrzymano"}}],"getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"vacuumcleaner_state_changed","title":{"en":"The state changed to...","nl":"De status is veranderd naar...","de":"Der Status hat sich geändert auf...","fr":"L\'état est passé à...","it":"Lo stato è cambiato in...","sv":"Status ändrad till...","no":"Status endret til ...","es":"El estado ha cambiado a...","da":"Status er ændret til...","ru":"Состояние изменено на…","pl":"Zmiana stanu na..."},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"vacuumcleaner_state_is","title":{"en":"The vacuum cleaner !{{is|is not}}","nl":"De stofzuiger !{{is|is niet}}","de":"Der Staubsauger !{{ist|ist nicht}}","fr":"L\'aspirateur !{{est|n\'est pas}}","it":"L\'aspirapolvere !{{è|non è}}","sv":"Dammsugaren !{{är|är inte}}","no":"Støvsugeren !{{er|er ikke}}","es":"La aspiradora !{{está|no está}}","da":"Støvsugeren !{{er|er ikke}}","ru":"Пылесос !{{|не}}","pl":"Stan odkurzacza !{{to|to nie}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"clean","highlight":true,"title":{"en":"Start cleaning","nl":"Begin met stofzuigen","de":"Mit Staubsaugen anfangen","fr":"Commencer le nettoyage","it":"Avvia la pulizia","sv":"Börja städa","no":"Begynn rengjøring","es":"Comenzar a aspirar","da":"Begynd at støvsuge","ru":"Начать уборку","pl":"Zacznij sprzątać"}},{"id":"spot_clean","title":{"en":"Start spot cleaning","nl":"Begin met één plek stofzuigen","de":"Mit Spot-Reinigung anfangen","fr":"Commencer le détachage","it":"Avvia la pulizia delle macchie","sv":"Starta områdesstädning","no":"Begynn områderengjøring","es":"Comenzar a aspirar un punto concreto","da":"Begynd at områdestøvsuge","ru":"Начать точечную уборку","pl":"Zacznij sprzątać punktowo"}},{"id":"dock","highlight":true,"title":{"en":"Return to dock","nl":"Terug naar laadstation","de":"Zu Ladestation zurückkehren","fr":"Retourner à la base","it":"Ritorna alla base","sv":"Återgå till docka","no":"Gå tilbake til ladestasjon","es":"Volver a la estación de carga","da":"Vend tilbage til ladestationen","ru":"Возвратиться на станцию","pl":"Wróć do bazy"}},{"id":"stop","highlight":true,"title":{"en":"Stop","nl":"Stop","de":"Stop","fr":"Arrêter","it":"Arresta","sv":"Stopp","no":"Stans","es":"Detener","da":"Stop","ru":"Стоп","pl":"Przestań"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Volume down","nl":"Volume omlaag","de":"Lautstärke runter","fr":"Baisser le volume","it":"Volume abbassato","sv":"Volym ned","no":"Volum ned","es":"Bajar volumen","da":"Ned for lyden","ru":"Звук тише","pl":"Zmniejsz głośność"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_down","highlight":true,"title":{"en":"Turn the volume down","nl":"Zet het geluid zachter","de":"Dreh die Lautstärke runter","fr":"Baisser le son","it":"Abbassa il volume","sv":"Sänk volymen","no":"Senk volumet","es":"Bajar el volumen","da":"Skru ned for lyden","ru":"Сделать звук тише","pl":"Zmniejsz poziom głośności"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Volume muted","nl":"Gedempt volume","de":"Lautstärke stumm","fr":"Volume sourdine","it":"Volume disattivato","sv":"Volym inaktiverad","no":"Volym dempet","es":"Silenciar volumen","da":"Lyd slået fra","ru":"Звук выключен","pl":"Głośność wyciszona"},"type":"boolean","getable":true,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_mute","title":{"en":"Mute the volume","nl":"Demp het geluid","de":"Lautstärke stummschalten","fr":"Mettre le volume en sourdine","it":"Disattiva il volume","sv":"Inaktivera volymen","no":"Demp volumet","es":"Silenciar el volumen","da":"Slå lyden fra","ru":"Выключить звук","pl":"Wycisz głośność"}},{"id":"volume_unmute","title":{"en":"Unmute the volume","nl":"Demp het geluid niet meer","de":"Lautstärke nicht mehr stummschalten","fr":"Réactiver le son","it":"Riattiva il volume","sv":"Aktivera volymen","no":"Opphev demping av volum","es":"Activar el volumen","da":"Slå lyden til","ru":"Включить звук","pl":"Włącz głośność"}},{"id":"volume_mute_toggle","title":{"en":"Toggle muted volume on or off","nl":"Gedempt volume in- of uitschakelen","de":"Stummschaltung ein- oder ausschalten","fr":"Activer ou désactiver le son coupé","it":"Attiva o disattiva il volume disattivato","sv":"Slå på eller av avstängd volym","no":"Slå dempet volum på eller av","es":"Activar o desactivar el volumen silenciado","da":"Slå dæmpet lydstyrke til eller fra"}}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Set volume","de":"Lautstärke setzen","fr":"Définir le volume","it":"Imposta il volume","sv":"Ställ in volym","no":"Innstill volum","es":"Configurar volumen","da":"Indstil lydstyrken","ru":"Установить громкость","pl":"Ustaw głośność"},"type":"number","desc":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%"},"setable":true,"getable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"volume_set_changed","title":{"en":"Volume changed","nl":"Volume veranderd","de":"Lautstärke hat sich geändert","fr":"Volume a été modifié","it":"Volume modificato","sv":"Volymen ändrades","no":"Volumet ble endret","es":"El volumen ha cambiado","da":"Lydstyrke blev ændret","ru":"Объем изменился","pl":"Zmiana poziomu głośności"},"tokens":[{"name":"volume_set","type":"number","title":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności"},"example":0.5}]}],"actions":[{"id":"volume_set","highlight":true,"title":{"en":"Set volume to","nl":"Zet volume naar","de":"Lautstärke setzen auf","fr":"Mettre le volume sur","it":"Imposta il volume al","sv":"Ställ in volymen på","no":"Sett volumet til","es":"Configurar el volumen a","da":"Indstil lydstyrke til","ru":"Установить громкость","pl":"Ustaw poziom głośności na"},"args":[{"name":"volume_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"volume_set_relative","title":{"en":"Set relative volume","de":"Setze relative Lautsärke","nl":"Zet relatief volume","ru":"Установить относительную громкость","pl":"Ustaw względny poziom głośności"},"hint":{"en":"Change the volume with respect to the device\'s current volume.","de":"Ändere die Lautstärke unter Berücksichtigung der aktuellen Lautstärke des Gerätes.","nl":"Verhoog of verlaag het volume ten opzichte van het huidige volume van het apparaat."},"args":[{"name":"volume_set","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Volume up","nl":"Volume omhoog","de":"Lautstärke hoch","fr":"Augmenter le volume","it":"Volume alzato","sv":"Volym upp","no":"Volum opp","es":"Subir volumen","da":"Op for lyden","ru":"Звук громче","pl":"Zwiększ głośność"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_up","highlight":true,"title":{"en":"Turn the volume up","nl":"Zet het geluid harder","de":"Dreh die Lautstärke hoch","fr":"Augmenter le son","it":"Alza il volume","sv":"Vrid upp volymen","no":"Skru opp volumet","es":"Subir el volumen","da":"Skru op for lyden","ru":"Сделать звук громче","pl":"Zwiększ poziom głośności"}}]}}')},function(e){e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte"},"getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"windowcoverings_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte"}},{"id":"windowcoverings_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpen","es":"Abiertos","da":"Åben","ru":"Открыто","pl":"Rozchylone"}}],"conditions":[{"id":"closed","title":{"en":"Are !{{closed|opened}}","nl":"Zijn !{{gesloten|geopend}}","de":"Sind !{{geschlossen|offen}}","fr":"Sont !{{fermés|ouverts}}","it":"Sono !{{chiuse|aperte}}","sv":"Är !{{stängda|öppnade}}","no":"Er !{{lukket|åpen}}","es":"Están !{{cerrados|abiertos}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыты|открыты}}","pl":"Są !{{zasunięte|rozchylone}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zasuń"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Rozchyl"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na rozchylone lub zasłonięte"}}]}}')},function(e){e.exports=JSON.parse('{"type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja"},"desc":{"en":"Set the position of window coverings. 0% is closed, 100% is open","de":"Die Position der Jalousien setzen. 0% ist geschlossen, 100% ist offen","fr":"Définir la position des stores. 0% est fermé, 100% est ouvert","it":"Imposta la posizione delle tapparelle. 0% è chiuse, 100% è aperte","sv":"Ställ in positionen för fönsterskydden. 0 % är stängd, 100 % är öppet","no":"Innstill vindusbeskyttelsens posisjon. 0 % er lukket, 100 % er åpen","es":"Configura la posición de los cobertores de ventanas. 0 % es \'cerrados\', 100 % es \'abiertos\'","da":"Indstil positionen af dækket for vinduet. 0% er lukket, 100% er åben","ru":"Установите позицию оконных навесов. 0% означает закрыто, 100% означает открыто","pl":"Ustaw pozycję osłon okiennych. 0% oznacza zasunięte, 100% rozchylone"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%"},"getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"windowcoverings_set_changed","title":{"en":"Position changed","nl":"Positie veranderd","de":"Position hat sich geändert","fr":"Position a été modifiée","it":"Posizione cambiata","sv":"Position ändrad","no":"Posisjon endret","es":"La posición ha cambiado","da":"Position ændret","ru":"Расположение изменилось","pl":"Zmiana pozycji"},"tokens":[{"name":"windowcoverings_set","type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja"},"example":0.5}]}],"actions":[{"id":"windowcoverings_set","highlight":true,"title":{"en":"Set the position to","nl":"Zet de positie naar","de":"Setze die Position auf","fr":"Mettre la position sur","it":"Imposta la posizione su","sv":"Ställ in positionen till","no":"Innstill posisjonen til","es":"Configurar la posición como","da":"Indstil positionen til","ru":"Установите позицию на","pl":"Ustaw pozycję na"},"hint":{"en":"Change the position to open (100%), closed (0%), or a value in between.","nl":"Verander de positie naar open (100%), gesloten (0%), of een een waarde daartussen.","ru":"Измените позицию на открытую (100%), закрытую (0%) или между этими значениями.","pl":"Zmień pozycję na rozchylone (100%), zasunięte (0%) lub wartość pomiędzy."},"args":[{"name":"windowcoverings_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings state","nl":"Raambekleding status","de":"Jalousien-Status","fr":"Etat des stores","it":"Stato delle tapparelle","sv":"Status för fönsterskydd","no":"Status for vindusbeskyttelse","es":"Estado de los cobertores de ventanas","da":"Status for vinduesdække","ru":"Состояние оконных навесов","pl":"Stan osłon okiennych"},"type":"enum","values":[{"id":"up","title":{"en":"Up","nl":"Omhoog","de":"Oben","fr":"Haut","it":"Alzate","sv":"Upp","no":"Opp","es":"Arriba","da":"Oppe","ru":"Наверх","pl":"Rozchylone"}},{"id":"idle","title":{"en":"Idle","nl":"Stil","de":"Inaktiv","fr":"Inactif","it":"Socchiuse","sv":"Inaktiv","no":"Ikke aktiv","es":"Inactivos","da":"Inaktiv","ru":"В ожидании","pl":"W spoczynku"}},{"id":"down","title":{"en":"Down","nl":"Omlaag","de":"Unten","fr":"Bas","it":"Abbassate","sv":"Ned","no":"Ned","es":"Abajo","da":"Nede","ru":"Вниз","pl":"Zasunięte"}}],"getable":true,"setable":true,"uiComponent":"ternary","$flow":{"triggers":[{"id":"windowcoverings_state_changed","highlight":true,"title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Status ändrades","no":"Status ble endret","es":"El estado ha cambiado","da":"Status blev ændret","ru":"Состояние изменено","pl":"Zmiana stanu"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"windowcoverings_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\' est pas}}","it":"Lo stato !{{è|non è}}","sv":"Status är !{{|inte}}","no":"Status er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние !{{|не}}","pl":"Stan to !{{|nie}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_windowcoverings_state","highlight":true,"title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta lo stato","sv":"Ställ in status","no":"Innstill status","es":"Configurar estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings tilt down","de":"Jalousien nach unten gekippt","fr":"Stores baissés","it":"Tapparelle abbassate","sv":"Fönsterskydd nedfällda","no":"Vindusbeskyttelser lukket","es":"Cobertores de ventanas inclinados hacia abajo","da":"Vinduesdække nedad","ru":"Наклонить вниз оконные навесы","pl":"Zasunięcie osłon okiennych"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings tilt set","de":"Jalousien-Kippstellung setzen","fr":"Définir l\'inclinaison des stores","it":"Imposta l\'inclinazione delle tapparelle","sv":"Ställ in lutning för fönsterskydd","no":"Innstill helning for vindusbeskyttelse","es":"Configurar la inclinación de los cobertores de ventanas","da":"Indstil hældning for vinduesdække","ru":"Угол наклона оконных навесов установлен","pl":"Ustawienie osłon okiennych"},"type":"number","min":0,"max":1,"units":{"en":"%"},"decimals":2,"getable":true,"setable":true,"uiComponent":"slider"}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window coverings tilt up","de":"Jalousien nach oben gekippt","fr":"Stores levés","it":"Tapparelle alzate","sv":"Fönsterskydd öppna","no":"Vindusbeskyttelser åpne","es":"Cobertores de ventanas inclinados hacia arriba","da":"Vinduesdække opad","ru":"Приподнять оконные навесы","pl":"Rozchylenie osłon okiennych"},"type":"boolean","getable":false,"setable":true,"uiComponent":"button"}')},function(e){e.exports=JSON.parse('["amplifier","blinds","button","camera","coffeemachine","curtain","doorbell","fan","garagedoor","heater","homealarm","kettle","light","lock","other","remote","sensor","socket","speaker","solarpanel","sunshade","thermostat","tv","vacuumcleaner","windowcoverings"]')},function(e,t,r){var a={"./amplifier.json":148,"./blinds.json":149,"./button.json":150,"./camera.json":151,"./coffeemachine.json":152,"./curtain.json":153,"./doorbell.json":154,"./fan.json":155,"./garagedoor.json":156,"./heater.json":157,"./homealarm.json":158,"./kettle.json":159,"./light.json":160,"./lock.json":161,"./other.json":162,"./relay.json":163,"./remote.json":164,"./sensor.json":165,"./socket.json":166,"./solarpanel.json":167,"./speaker.json":168,"./sunshade.json":169,"./thermostat.json":170,"./tv.json":171,"./vacuumcleaner.json":172,"./windowcoverings.json":173};function n(e){var t=i(e);return r(t)}function i(e){if(!r.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}n.keys=function(){return Object.keys(a)},n.resolve=i,e.exports=n,n.id=147},function(e){e.exports=JSON.parse('{"title":{"en":"Amplifier","nl":"Versterker","de":"Verstärker","fr":"Amplificateur","it":"Amplificatore","sv":"Förstärkare","no":"Forsterker","es":"Amplificador","da":"Forstærker","ru":"Усилитель","pl":"Wzmacniacz"},"description":{"en":"Use this device class for audio amplifier devices.","de":"Nutze diese Geräteklasse für Audio-Verstärker-Geräte.","fr":"Utilisez cette classe d\'appareil pour les appareils amplificateurs audio.","it":"Utilizza questa classe di dispositivi per i dispositivi che amplificano l\'audio.","sv":"Använd den här enhetsklassne ljudförstärkarenheter.","no":"Bruk denne enhetsklassen for lydforsterkerenheter.","es":"Utiliza esta clase de dispositivo para los amplificadores de audio.","da":"Brug denne enhedsklasse til lydforstærkerenheder.","ru":"Используйте этот класс устройств усилителей звука.","pl":"Użyj tej klasy urządzeń dla wzmacniaczy audio."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Blinds","nl":"Jaloezieën & Lamellen","de":"Rolladen","fr":"Stores","it":"Tapparelle","sv":"Persienner","no":"Persienner","es":"Persianas","da":"Persienner","ru":"Жалюзи","pl":"Rolety"},"description":{"en":"Use this device class for blinds, both horizontal and vertical.","de":"Nutze diese Geräteklasse für Rolladen, sowohl horizontal als auch vertikal.","fr":"Utilisez cette classe d\'appareil pour les stores, horizontaux et verticaux.","it":"Utilizza questa classe di dispositivi per le tapparelle, orizzontali e verticali.","sv":"Använd den här enhetsklassen för persienner, både horisontella och vertikala.","no":"Bruk denne enhetsklassen for persienner, både horisontale og vertikale.","es":"Utiliza esta clase de dispositivo para las persianas, tanto horizontales como verticales.","da":"Brug denne enhedsklasse til persienner, både vandrette og lodrette.","ru":"Используйте этот класс устройств для жалюзи: как горизонтальных, так и вертикальных.","pl":"Użyj tej klasy urządzeń dla rolet (poziomych i pionowych)."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk"},"description":{"en":"Use this device class for buttons, such as a remote.","de":"Nutze diese Geräteklasse für Tasten wie z. B. eine Fernbedienung.","fr":"Utilisez cette classe d\'appareil pour les boutons, comme pour une télécommande.","it":"Utilizza questa classe di dispositivi per i pulsanti, come ad esempio un telecomando.","sv":"Använd den här enhetsklassen för knappar, som en fjärrkontroll.","no":"Bruk denne enhetsklassen for knapper, f.eks. en fjernkontroll.","es":"Utiliza esta clase de dispositivo para los botones, p. ej., mandos a distancia.","da":"Brug denne enhedsklasse til knapper, f-eks. en fjernbetjening.","ru":"Используйте этот класс устройств для устройств с кнопками, например пультов.","pl":"Użyj tej klasy urządzeń dla przycisków, np. pilota."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Camera","nl":"Camera","de":"Kamera","fr":"Caméra","it":"Telecamera","sv":"Kamera","no":"Kamera","es":"Cámara","da":"Kamera","ru":"Камера","pl":"Kamera"},"description":{"en":"Security camera","nl":"Beveiligingscamera","de":"Überwachungskamera","fr":"Caméra de sécurité","it":"Telecamera di sicurezza","sv":"Säkerhetskamera","no":"Sikkehetskamera","es":"Cámara de seguridad","da":"Overvågningskamera","ru":"Камера наблюдения","pl":"Kamera bezpieczeństwa"}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Coffee Machine","nl":"Koffiemachine","de":"Kaffemaschine","fr":"Machine à café","it":"Macchina per il caffè","sv":"Kaffemaskin","no":"Kaffemaskin","es":"Máquina de café","da":"Kaffemaskine","ru":"Кофемашина","pl":"Ekspres do kawy"},"description":{"en":"Use this device class for coffee machines.","de":"Nutze diese Geräteklasse für Kaffeemaschinen.","fr":"Utilisez cette classe d\'appareil pour les machines à café.","it":"Utilizza questa classe di dispositivi per le macchine per il caffè.","sv":"Använd den här enhetsklassen för kaffemaskiner.","no":"Bruk denne enhetsklassen for kaffemaskiner.","es":"Utiliza esta clase de dispositivo para las máquinas de café.","da":"Brug denne enhedsklasse til kaffemaskiner.","ru":"Используйте этот класс устройств для кофемашин.","pl":"Użyj tej klasy urządzeń dla ekspresów do kawy."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Curtains","nl":"Gordijnen","de":"Vorhänge","fr":"Rideaux","it":"Tende","sv":"Gardiner","no":"Gardiner","es":"Cortinas","da":"Gardiner","ru":"Шторы","pl":"Zasłony"},"description":{"en":"Use this device class for curtains.","de":"Nutze diese Geräteklasse für Vorhänge.","fr":"Utilisez cette classe d\'appareil pour les rideaux.","it":"Utilizza questa classe di dispositivi per le tende.","sv":"Använd den här enheten för gardiner.","no":"Bruk denne enheten for gardiner.","es":"Utiliza esta clase de dispositivo para las cortinas.","da":"Brug denne enhedsklasse til gardiner.","ru":"Используйте этот класс устройств для штор.","pl":"Użyj tej klasy urządzeń dla zasłon."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Doorbell","nl":"Deurbel","de":"Türklingel","fr":"Sonnette","it":"Campanello","sv":"Dörrklocka","no":"Dørklokke","es":"Timbre","da":"Dørklokke","ru":"Дверной звонок","pl":"Dzwonek do drzwi"},"description":{"en":"Use this device class for doorbells, usually together with the `button` capability.","de":"Nutze diese Geräteklasse für Türklingeln - normalerweise zusammen mit der \'button\'-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les sonnettes, habituellement avec la capacité de `bouton`.","it":"Utilizza questa classe di dispositivi per i campanelli, di solito insieme alla funzione `pulsante`.","sv":"Använd den här enhetsklassen för dörrklockor, oftast tillsammans med `knapp`-funktionen.","es":"Utiliza esta clase de dispositivo para los timbres, generalmente junto con la capacidad \'botón\'.","da":"Brug denne enhedsklasse til dørklokker, normalt sammen med `knap`-funktionen.","no":"Bruk denne enhetsklassen for dørklokker, ofte sammen med `knapp`-funksjonen.","ru":"Используйте этот класс устройств для дверных звонков, обычно вместе с возможностью использовать «кнопку».","pl":"Użyj tej klasy urządzeń dla dzwonków do drzwi, zwykle razem ze zdolnością „przycisk”."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Fan","nl":"Ventilator","de":"Ventilator","fr":"Ventilateur","it":"Ventilatore","sv":"Fläkt","no":"Vifte","es":"Ventilador","da":"Ventilator","ru":"Вентилятор","pl":"Wentylator"},"description":{"en":"Use this device class for fans that cool your home.","de":"Nutze diese Geräteklasse für Ventilatoren, die dein Heim kühlen.","fr":"Utilisez cette classe d\'appareil pour les ventilateurs qui refroidissent votre maison.","it":"Utilizza questa classe di dispositivi per i ventilatori che rinfrescano la tua casa.","sv":"Använd den här enhetsklassen för fläktar som kyler ned hemmet.","no":"Bruk denne enhetsklassen for vifter som avkjøler hjemmet ditt.","es":"Utiliza esta clase de dispositivo para los ventiladores que enfrían la casa.","da":"Brug denne enhedsklasse til ventilatorer, der køler dit hjem ned.","ru":"Используйте этот класс устройств для вентиляторов, которые охлаждают ваш дом.","pl":"Użyj tej klasy urządzeń dla wentylatorów, które chłodzą dom."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Garage Door","nl":"Garagedeur","de":"Garagentor","fr":"Porte de garage","it":"Porta del garage","sv":"Garagedörr","no":"Garasjedør","es":"Puerta de garaje","da":"Garageport","ru":"Дверь гаража","pl":"Brama garażowa"},"description":{"en":"Use this device class for garage doors, usually together with the `garagedoor_closed` capability.","ru":"Используйте этот класс устройств для дверей гаража, обычно вместе с функцией `garagedoor_closed`.","pl":"Użyj tej klasy urządzeń dla bram garażowych, zwykle razem ze zdolnością „garagedoor_closed”."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Heater","nl":"Heater","de":"Heizung","fr":"Radiateur","it":"Termosifone","sv":"Element","no":"Varmeelement","es":"Calefactor","da":"Varmeapparat","ru":"Обогреватель","pl":"Grzejnik"},"description":{"en":"Use this device class for heaters, that warm your home.","de":"Nutze diese Geräteklasse für Heizungen, die dein Heim wärmen.","fr":"Utilisez cette classe d\'appareil pour les radiateurs qui chauffent votre maison.","it":"Utilizza questa classe di dispositivi per i termosifoni, che riscaldano la tua casa.","sv":"Använd den här enhetsklassen för element, som värmer upp hemmet.","no":"Bruk denne enhetsklassen for varmeelement som varmer opp hjemmet ditt.","es":"Utiliza esta clase de dispositivo para los calefactores que calientan tu casa.","da":"Brug denne enhedsklasse til varmeapparater, som opvarmer dit hjem.","ru":"Используйте этот класс устройств для обогревателей, которые обогревают ваш дом.","pl":"Użyj tej klasy urządzeń dla grzejników, które ogrzewają dom."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Home Security","nl":"Huisbeveiliging","de":"Heim-Sicherheit","fr":"Sécurité de la maison","it":"Sicurezza della casa","sv":"Hemsäkerhet","no":"Hjemmesikkerhet","es":"Seguridad de la casa","da":"Hjemmesikkerhed","ru":"Домашняя безопасность","pl":"Bezpieczeństwo domowe"},"description":{"en":"Use this device class for home alarm systems.","de":"Nutze diese Geräteklasse für Heim-Alarm-Systeme.","fr":"Utilisez cette classe d\'appareil pour les systèmes d\'alarme de maison.","it":"Utilizza questa classe di dispositivi per i sistemi di allarme di casa.","sv":"Använd den här enhetsklassen för hemlarmsystem.","no":"Bruk denne enhetsklassen for hjemmealarmsystemer.","es":"Utiliza esta clase de dispositivo para los sistemas de alarmas de la casa.","da":"Brug denne enhedsklasse til alarmsystemer til hjemmet.","ru":"Используйте этот класс устройств для домашних систем сигнализации.","pl":"Użyj tej klasy urządzeń dla alarmów domowych."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Kettle","nl":"Waterkoker","de":"Wasserkocher","fr":"Bouilloire","it":"Bollitore","sv":"Vattenkokare","no":"Vannkoker","es":"Hervidor","da":"Elkedel","ru":"Чайник","pl":"Czajnik"},"description":{"en":"Use this device class for kettle devices, that can heat water.","de":"Nutze diese Geräteklasse für Kessel-Geräte, die Wasser kochen können.","fr":"Utilisez cette classe d\'appareil pour les bouilloires qui peuvent faire chauffer de l\'eau.","it":"Utilizza questa classe di dispositivi per i bollitori, che possono riscaldare l\'acqua.","sv":"Använd den här enhetsklassen för vattenkokare, som kan värma vatten.","no":"Bruk denne enhetsklassen for vannkokere som kan varme opp vann.","es":"Utiliza esta clase de dispositivo para los hervidores que calientan agua.","da":"Brug denne enhedsklasse til elkedelenheder, der kan opvarme vand.","ru":"Используйте этот класс устройств для чайников, которые могут нагревать воду.","pl":"Użyj tej klasy urządzeń dla czajników, które ogrzewają wodę."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Light","nl":"Lamp","de":"Lampe","fr":"Lampe","it":"Lampada","sv":"Lampa","no":"Lampe","es":"Lámpara","da":"Lys","ru":"Лампа","pl":"Oświetlenie"},"description":{"en":"Use this device class for lights, usually together with the `onoff`, `dim` and `light_*` capabilities.","de":"Nutze diese Geräteklasse für Lampen - normalerweise zusammen mit den `onoff`-, `dim`- und `light_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pou les lampes, habituellement avec les capacités `onoff`, `dim` et `light_*`.","it":"Utilizza questa classe di dispositivi per le lampade, generalmente insieme alle funzioni \'onoff\', `dim` e `light_*`.","sv":"Använd den här enhetsklassen för lampor, oftast tillsammans med funktionerna `onoff`, `dim` och `light_*`.","no":"Bruk denne enhetsklassen for lamper, ofte sammen med funksjonene `onoff`, `dim` och `light_*`.","es":"Utiliza esta clase de dispositivo para las luces, generalmente junto con las capacidades de \'onoff\', `dim`, y `light_*`.","da":"Brug denne enhedsklasse til lys, normalt sammen med `onoff`, `dim` og `light_*` funktionerne.","ru":"Используйте этот класс устройств для ламп, обычно вместе с функциями `onoff`,`dim` и `light_ *`.","pl":"Użyj tej klasy urządzeń dla oświetlenia, zwykle razem ze zdolnościami `onoff`, `dim` oraz `light_*`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Lock","nl":"Slot","de":"Schloss","fr":"Verrou","it":"Serratura","sv":"Lås","no":"Lås","es":"Cerradura","da":"Lås","ru":"Замок","pl":"Zamek"},"description":{"en":"Use this device class for lock devices, usually together with the `locked` and `lock_mode` capabilities.","de":"Nutze diese Geräteklasse für Schloss-Geräte - normalerweise zusammen mit den `locked`- und `lock_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils verrou, généralement avec les capacités `locked` et `lock_mode`.","it":"Utilizza questa classe di dispositivi per le serrature, generalmente insieme alle funzioni `locked` e `lock_mode`.","sv":"Använd den här enhetsklassen för att låsa enheter, oftast tillsammans med funktionerna `locked` och `lock_mode`.","no":"Bruk denne enhetsklassen for låseenheter, ofte sammen med funksjonene `locked` og `lock_mode`.","es":"Utiliza esta clase de dispositivo para las cerraduras, generalmente junto con las capacidades de `locked` y `lock_mode`.","da":"Brug denne enhedsklasse til låseenheder, normalt sammen med `locked` and `lock_mode` funktionerne.","ru":"Используйте этот класс устройств для замков, обычно вместе с функциями `locked` и `lock_mode`.","pl":"Użyj tej klasy urządzeń dla produktów z zamkiem, zwykle razem ze zdolnościami `locked` i `lock_mode`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Other","nl":"Overig","de":"Andere","fr":"Autre","it":"Altro","sv":"Övrigt","no":"Annet","es":"Otro","da":"Andet","ru":"Другое","pl":"Inne"},"description":{"en":"Use this device class for devices that do not fit any other device class.","de":"Nutze diese Geräteklasse für Geräte, die nicht in andere Geräteklassen passen.","fr":"Utilisez cette classe d\'appareil pour les appareils qui ne correspondent à aucune autre classe d\'appareil.","it":"Utilizza questa classe di dispositivi per gli apparecchi che non appartengono a nessun\'altra classe di dispositivi.","sv":"Använd den här enhetsklassen för enheter som inte passar i någon annan enhetsklass.","no":"Bruk denne enhetsklassen for enheter som ikke passer inn i noen annen enhetsklasse.","es":"Utiliza esta clase de dispositivo para los dispositivos que no se ajusten a ninguna otra clase.","da":"Brug denne enhedsklasse til enheder, der ikke hører til i andre enhedsklasse.","ru":"Используйте этот класс устройств для устройств, которые не подходят ни к одному другому классу.","pl":"Użyj tej klasy urządzeń dla produktów, które nie odpowiadają żadnej klasie urządzeń."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Relay","nl":"Relais","de":"Relais","fr":"Relais","it":"Relé","sv":"Relä","no":"Relé","es":"Relé","da":"Relæ","ru":"Узел","pl":"Przekaźnik"},"description":{"en":"Use this device class for relays, which are connected to another device.","de":"Nutze diese Geräteklasse für Relais, die mit anderen Geräten verbunden sind.","fr":"Utilisez cette classe d\'appareil pour les relais qui sont connectés à d\'autres appareils.","it":"Utilizza questa classe di dispositivi per i relé, che sono connessi ad un altro dispositivo.","sv":"Använd den här enhetsklassen för relän, som är kopplade till en annan enhet","no":"Bruk denne enhetsklassen for reléer som er koblet til en annen enhet.","es":"Utiliza esta clase de dispositivo para los relés conectados a otros dispositivos.","da":"Brug denne enhedsklasse til relæer, som er koblet til en anden enhed.","ru":"Используйте этот класс устройств для узлов, которые подключены к другому устройству.","pl":"Użyj tej klasy urządzeń dla przekaźników niepołączonych z żadnym innym urządzeniem."},"virtualTitle":{"en":"What\'s connected?","nl":"Wat is er verbonden?","de":"Was ist verbunden?","fr":"Qu\'est-ce qui est connecté ?","it":"Cos\'è connesso?","sv":"Relä","no":"Hva er tilkoblet?","es":"¿Qué está conectado?","da":"Hvad er tilkoblet?","ru":"Что подключено?","pl":"Co jest połączone?"},"allowedVirtual":["garagedoor","sunshade","blinds","curtain"]}')},function(e){e.exports=JSON.parse('{"title":{"en":"Remote","nl":"Afstandsbediening","de":"Fernbedienung","fr":"Télécommande","it":"Telecomando","sv":"Fjärrkontroll","no":"Fjernkontroll","es":"Mando a distancia","da":"Fjernbetjening","ru":"Пульт","pl":"Pilot"},"description":{"en":"Use this device class for (TV/Sunblind/Keyfob etc.) remotes.","de":"Nutze diese Geräteklasse für (TV/Jalousien/Schlüsselanhänger etc.)-Fernbedienungen.","fr":"Utilisez cette classe d\'appareil pour les télécommandes (TV/Stores/Porte-clés, etc.).","it":"Utilizza questa classe di dispositivi per i telecomandi (TV/Tapparelle/Portachiavi, ecc.).","sv":"Använd den här enheten för fjärrkontroller för (TV/Markis/Nyckellås mm.).","no":"Bruk denne enheten for fjernkontroller for (TV/markise/smartnøkkel m.m.).","es":"Utiliza esta clase de dispositivo para los mandos a distancia (TV/persianas/llaves electrónicas, etc.","da":"Brug denne enhedsklasse til fjernbetjeninger (til TV/markise/smartnøgle osv.)","ru":"Используйте этот класс устройств для пультов дистанционного управления (телевизоры/жалюзи/брелки и т.п.).","pl":"Użyj tej klasy urządzeń dla pilotów (od telewizora/od markizy/klucza zbliżeniowego itp.)."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Sensor","nl":"Sensor","de":"Sensor","fr":"Capteur","it":"Sensore","sv":"Sensor","no":"Sensor","es":"Sensor","da":"Sensor","ru":"Датчик","pl":"Czujnik"},"description":{"en":"Use this device class for sensors, e.g. a contact or motion sensor.","de":"Nutze diese Geräteklasse für Sensoren, z. B. ein Kontakt- oder Bewegungssensor.","fr":"Utilisez cette classe d\'appareil pour les capteurs, par ex. un capteur de contact ou de mouvement.","it":"Utilizza questa classe di dispositivi per i sensori, ad es. un sensore di contatto o di movimento.","sv":"Använd den här enhetsklassen för sensorer, t.ex. en kontakt eller rörelsesensor.","no":"Bruk denne enhetsklassen for sensorer, f.eks. en kontakt- eller bevegelsessensor.","es":"Utiliza esta clase de dispositivo para los sensores; p. ej., sensores de contacto o movimiento.","da":"Brug denne enhedsklasse til sensorer, f-eks en kontakt- eller bevægelsessensor.","ru":"Используйте этот класс устройства для датчиков, например датчиков контакта или движения.","pl":"Użyj tej klasy urządzeń dla czujników, np. czujnika otwarcia lub ruchu."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Wall Plug","nl":"Schakeldoos","de":"Steckdose","fr":"Prise murale","it":"Presa a muro","sv":"Väggkontakt","no":"Veggkontakt","es":"Enchufe de pared","da":"Stikkontakt","ru":"Настенная розетка","pl":"Wtyczka"},"description":{"en":"Use this device class for sockets (built-in or plug-in socket switches). When adding the `choose_slave` pair template, the user is presented a `What\'s plugged in?` question.","de":"Nutze diese Geräteklasse für Sockel (eingebaut oder zum zum Einstecken). Wenn das `choose_slave`-Paar-Template hinzugefügt wird, wird dem Benutzer eine `Was ist eingesteckt?`-Frage gestellt.","fr":"Utilisez cette classe d\'appareil pour les prises (intégrées ou prises d\'interrupteurs). En ajoutant le modèle d\'appairage `choose_slave`, il est demandé à l\'utilisteur `Qu\'est-ce qui est connecté ?`.","it":"Utilizza questa classe di dispositivi per le prese (prese integrate o interruttori). Aggiungendo il modello di abbinamento `choose_slave`, viene chiesto all\'utente `Cosa è collegato?`.","sv":"Använd den här enhetsklassen för uttag (inbyggda eller stickkontakter). När parmallen `choose_slave` får användaren en `Vad är inkopplat?`-fråga.","no":"Bruk denne enhetsklassen for kontakter (innebygde eller eksterne kontaktenheter). Når sammenkoblingsmalen `choose_slave` legges til, får brukeren et `Hva er koblet til?`-spørsmål.","es":"Utiliza esta clase de dispositivo para los enchufes (interruptores de enchufe integrados o enchufables). Al añadir la plantilla de emparejamiento `choose_slave`, al usuario se le pregunta `¿Qué está enchufado?`.","da":"Brug denne enhedsklasse til kontakter (indbyggede eller eksterne kontaktenheder). Når `choose_slave` parskabelonen tilføjes, bliver brugeren præsenteret for et `Hvad er sat til?` spørgsmål.","ru":"Используйте этот класс устройства для розеток (встроенных или вставных выключателей). При добавлении шаблона сопряжения `choose_slave` пользователю предлагается ответить на вопрос: `Что подключено?`.","pl":"Użyj tej klasy urządzeń dla gniazdek elektrycznych (wbudowanych lub wtyczek). Podczas dodawania szablonu parowania `choose_slave` pojawi się pytanie: `Co jest podłączone?`."},"virtualTitle":{"en":"Plugged in","nl":"Aangesloten","de":"Angeschlossen","fr":"Branché","it":"Collegato","sv":"Inkopplad","no":"Plugget inn","es":"Conectado","da":"Tilsluttet","ru":"Подключено","pl":"Podłączone"},"allowedVirtual":["light","fan","heater","coffeemachine","kettle","tv","solarpanel"]}')},function(e){e.exports=JSON.parse('{"title":{"en":"Solar Panel","nl":"Zonnepaneel","sv":"Solpanel","no":"Solpanel","es":"Panel solar","da":"Solpanel","ru":"Солнечная панель","pl":"Panel fotowoltaiczny"},"description":{"en":"Use this device class for solar panels.","es":"Utiliza esta clase de dispositivo para los paneles solares.","da":"Brug denne enhedsklasse til solpaneler.","ru":"Используйте этот класс устройств для солнечных панелей.","pl":"Użyj tej klasy urządzeń dla paneli fotowoltaicznych."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Speaker","nl":"Speaker","de":"Lautsprecher","fr":"Haut-parleur","it":"Altoparlante","sv":"Högtalare","no":"Høyttaler","es":"Altavoz","da":"Højttaler","ru":"Колонка","pl":"Głośnik"},"description":{"en":"Use this device class for devices that can play music, usually together with the `speaker_*` capabilities.","de":"Nutze diese Geräteklasse für Geräte, die Musik spielen können - normalerweise zusammen mit den `speaker_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils qui peuvent jouer de la musique, généralement avec la capacité `speaker_*`.","it":"Utilizza questa classe di dispositivi per i dispositivi che possono riprodurre musica, generalmente insieme alla funzione `speaker_*`.","sv":"Använd den här enhetsklassen för enheter som kan spela musik, oftast tilsammans med funktionerna `speaker_*`.","no":"Bruk denne enhetsklassen for enheter som kan spille musikk, ofte sammen med funksjonen `speaker_*`.","es":"Utiliza esta clase de dispositivo para los aparatos capaces de reproducir música, generalmente junto con las capacidades `speaker_*`.","da":"Brug denne enhedsklasse til enheder, der kan afspille musik, normalt sammen med `speaker_*` funktionerne.","ru":"Используйте этот класс устройств для устройств, воспроизводящих музыку, обычно вместе с функцией `speaker_*`.","pl":"Użyj tej klasy urządzeń dla produktów, które mogą odtwarzać muzykę, zwykle razem ze zdolnością `speaker_*`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Sunshade","nl":"Zonnescherm","de":"Sonnenschirm","fr":"Auvent","it":"Parasole","sv":"Markis","no":"Markise","es":"Toldo","da":"Markise","ru":"Навес","pl":"Markiza"},"description":{"en":"Use this device class for sunshades (window coverings against the sun).","de":"Nutze diese Geräteklasse für Jalousien (Fenster-Abdeckungen gegen die Sonne).","fr":"Utilisez cette classe d\'appareil pour les auvents (couvrant les fenêtres contre le soleil).","it":"Utilizza questa classe di dispositivi per gli scuretti (che riparano le finestre dal sole).","sv":"Använd den här enhetsklassen för markiser (fönsterskydd mot solen).","no":"Bruk denne enhetsklassen for markiser (vindusbeskyttelse mot solen).","es":"Utiliza esta clase de dispositivo para los toldos (para proteger las ventanas del sol).","da":"Brug denne enhedsklasse til markiser (vinduesdække mod solen).","ru":"Используйте этот класс устройств для навесов (оконных навесов от солнца).","pl":"Użyj tej klasy urządzeń dla markiz (osłony okienne chroniące przed słońcem)."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Thermostat","nl":"Thermostaat","de":"Thermostat","fr":"Thermostat","it":"Termostato","sv":"Termostat","no":"Termostat","es":"Termostato","da":"Termostat","ru":"Термостат","pl":"Termostat"},"description":{"en":"Use this device class for thermostats, either for the entire home or radiator-mounted, usually together with the `measure_temperature`, `target_temperature` and `thermostat_mode` capabilities.","de":"Nutze diese Geräteklasse für Thermostate, entweder für das gesamte Heim oder pro Heizung - normalerweise zusammen mit den `measure_temperature`-, `target_temperature`- und `thermostat_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les thermostats, soit pour toute la maison soit montés sur radiateurs, généralemebnt avec les capacités `measure_temperature`, `target_temperature` et `thermostat_mode`.","it":"Utilizza questa classe di dispositivi per i termostati, sia quelli per l\'intera casa che quelli montati sul radiatore, solitamente insieme alle funzionalità `measure_temperature`,`target_temperature` e `thermostat_mode`.","sv":"Använd den här enhetsklassen för termostater, antingen för hela hemmet eller elementmonterade, oftast tillsammans med funktionerna `measure_temperature`, `target_temperature` och `thermostat_mode`.","no":"Bruk denne enhetsklassen for termostater, enten for hele hjemmet eller monterte på varmeelement, ofte sammen med funksjonene `measure_temperature`, `target_temperature` og `thermostat_mode`.","es":"Utiliza esta clase de dispositivo para los termostatos, tanto los de toda la casa como los montados en los radiadores, generalmente junto con las capacidades `measure_temperature`, `target_temperature` y `thermostat_mode`.","da":"Brug denne enhedsklasse til termostater, enten til hele hjemmet eller på radiatorer, normalt sammen med `measure_temperature`, `target_temperature` og `thermostat_mode` funktionerne.","ru":"Используйте этот класс устройств для термостатов для всего дома или для термостатов на радиаторах, обычно вместе с функциями `measure_temperature`, `target_temperature` и `thermostat_mode`.","pl":"Użyj tej klasy urządzeń dla termostatów, zarówno dla całego domu, jak i urządzeń podłączanych do kaloryferów; zwykle razem ze zdolnościami `measure_temperature`, `target_temperature` oraz `thermostat_mode`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"TV","nl":"TV","de":"TV","fr":"TV","it":"TV","sv":"TV","no":"TV","es":"TV","da":"TV","ru":"Телевизор","pl":"Telewizor"},"description":{"en":"Use this device class for TVs.","de":"Nutze diese Geräteklasse für TVs","fr":"Utilisez cette classe d\'appareil pour les TV","it":"Utilizza questa classe di dispositivi per i televisori.","sv":"Använd den här enhetsklassen för TV-apparater.","no":"Bruk denne enhetsklassen for TV-apparater.","es":"Utiliza esta clase de dispositivo para los televisores.","da":"Brug denne enhedsklasse til TV-apparater.","ru":"Используйте этот класс устройств для телевизоров.","pl":"Użyj tej klasy urządzeń dla telewizorów."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Vacuum Cleaner","nl":"Stofzuiger","de":"Staubsauger","fr":"Aspirateur","it":"Aspirapolvere","sv":"Dammsugare","no":"Støvsuger","es":"Aspiradora","da":"Støvsuger","ru":"Пылесос","pl":"Odkurzacz"},"description":{"en":"Use this device class for vacuum cleaners, usually together with the `vacuumcleaner_state` capability.","de":"Nutze diese Geräteklasse für Staubsauger - normalerweise zusammen mit der `vacuumcleaner_state`-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les aspirateurs, habituellement avec la capacité `vacuumcleaner_state`.","it":"Utilizza questa classe di dispositivi per gli aspirapolvere, generalmente insieme alla funzionalità `vacuumcleaner_state`.","sv":"Använd den här enhetsklassen för dammsugare, oftast tillsammans med funktionen `vacuumcleaner_state`.","no":"Bruk denne enhetsklassen for støvsugere, ofte sammen med funksjonen `vacuumcleaner_state`.","es":"Utiliza esta clase de dispositivo para las aspiradoras, generalmente junto con la capacidad `vacuumcleaner_state`.","da":"Brug denne enhedsklasse til støvsugere, normalt sammen med `vacuumcleaner_state` funktionen.","ru":"Используйте этот класс устройств для пылесосов, обычно вместе с функцией `vacuumcleaner_state`.","pl":"Użyj tej klasy urządzeń dla odkurzaczy, zwykle razem ze zdolnością `vacuumcleaner_state`."}}')},function(e){e.exports=JSON.parse('{"title":{"en":"Window Coverings","nl":"Raambekleding","de":"Fenster-Abdeckungen","fr":"Couverture de fenêtre","it":"Rivestimenti per finestre","sv":"Fönsterskydd","no":"Vindusbeskyttelse","es":"Cobertores de ventanas","da":"Vinduesdække","ru":"Оконные навесы","pl":"Osłony okienne"},"description":{"en":"Use this device class for window coverings, when the `curtains`, `blinds` or `sunshade` device class doesn\'t apply.","de":"Nutze diese Geräteklasse für Fenster-Abdeckungen, wenn `curtains`-, `blinds`- oder `sunshade`-Geräteklassen nicht zutreffen.","fr":"Utilisez cette classe d\'appareil pour les couvertures de fenêtre, lorsque la classe d\'appareil `curtains`, `blinds` ou `sunshade` ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per i rivestimenti per finestre, quando non rientrano nelle classi `curtains`, `blinds` o `sunshade`.","sv":"Använd den här enhetsklassen för fönsterskydd när enhetsklasserna `curtains`, `blinds` eller `sunshade` inte gäller.","no":"Bruk denne enhetsklassen for vindusbeskyttelse som ikke dekkes av enhetsklassene `curtains`, `blinds` eller `sunshade`.","es":"Utiliza esta clase de dispositivo para los cobertores de ventanas que no entren en las clases `curtains`, `blinds` o `sunshade`.","da":"Brug denne enhedsklasse til vinduesdække, når enhedsklasserne `curtains`, `blinds` og `sunshade` ikke er gældende.","ru":"Используйте этот класс устройств для оконных навесов, когда классы устройств `curtains`, `blinds` или `sunshade` не подходят.","pl":"Użyj tej klasy urządzeń dla osłon okiennych o innej klasie urządzenia niż `curtains`, `blinds` lub `sunshade`."},"virtualTitle":{"en":"What\'s the type?","nl":"Wat voor type is dit?","de":"Welcher Typ ist das?","fr":"Quel est le type ?","it":"Qual è il tipo?","sv":"Vad är det för typ?","no":"Hvilken type er det?","es":"¿Cuál es el tipo?","da":"Hvad er typen?","ru":"Какой тип?","pl":"Wybierz rodzaj?"},"allowedVirtual":["sunshade","blinds","curtain"]}')},function(e,t,r){"use strict";function a(e,t,r){let a=!0;return e instanceof Array?e.forEach(e=>{(er)&&(a=!1)}):"number"==typeof e&&(er)&&(a=!1),a}function n(e){return"string"==typeof e&&/^(([0-9a-f]{4}\s?){2}){2,}$/i.test(e)}const i={min:1,max:1e3},s={min:0,max:.5};function o(e,t){const r={result:!0,msg:"invalid_"+this};return e instanceof Array?(t.packing?e.some(e=>!(e>=0&&e<=255))&&(r.result=!1):e.some(e=>!t.words||!t.words[e])&&(r.result=!1),r):(r.result=!1,r)}const l={words(e,t){const r={result:!0,msg:"invalid_words"};return!(e instanceof Array)||e.length<=1?(r.result=!1,r):(e.forEach(e=>{if(!(e instanceof Array)||e.length<=1)return r.result=!1,r}),r)},agc:(e,t)=>({result:e instanceof Array,msg:"invalid_agc"}),sof:(e,t)=>({result:e instanceof Array,msg:"invalid_sof"}),toggleSof:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleSof"}),eof:(e,t)=>({result:e instanceof Array,msg:"invalid_eof"}),manchesterUnit:(e,t)=>({result:"number"==typeof e,msg:"invalid_manchesterUnit"}),manchesterMaxUnits:(e,t)=>({result:"number"==typeof e&&e>=i.min,msg:"invalid_manchesterMaxUnits"}),sensitivity:(e,t)=>({result:"number"==typeof e&&a(e,s.min,s.max),msg:"invalid_sensitivity"}),interval:(e,t)=>({result:"number"==typeof e,msg:"invalid_signalinterval"}),minimalLength:(e,t)=>({result:e>0,msg:"invalid_minimalLength"}),maximalLength:(e,t)=>({result:e>0,msg:"invalid_maximalLength"}),packing:(e,t)=>({result:"boolean"==typeof e&&t.words&&2==t.words.length,msg:"invalid_packing"}),dutyCycle:(e,t)=>({result:"number"==typeof e,msg:"invalid_dutyCycle"}),txOnly:(e,t)=>({result:"boolean"==typeof e,msg:"invalid_txOnly"}),cmds(e,t){const r={result:!0,msg:"invalid_cmd"};return Object.keys(e).forEach(a=>{o(e[a],t).result||(r.result=!1)}),r},toggleIndexes:(e,t)=>({result:e instanceof Array&&!e.some(e=>e>=t.sof.length),msg:"invalid_toggleIndexes"}),toggleBits:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleBits"}),prefixData:o.bind("prefixData"),postfixData:o.bind("postfixData")},u={timeInterval:{min:5,max:32767},manchesterInterval:{min:0,max:1},rxTimeout:{min:0,max:255},repetitions:{min:1,max:255}},d={words(e,t){const r={result:!0,msg:"word_interval_out_of_bounds"},n=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return e.forEach(e=>{a(e,n.min,n.max)||(r.result=!1)}),r},agc(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"agc_out_of_bounds"}},toggleSof(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"toggleSof_out_of_bounds"}},sof(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"sof_out_of_bounds"}},eof(e,t){const r=t.hasOwnProperty("manchesterUnit")?u.manchesterInterval:u.timeInterval;return{result:a(e,r.min,r.max),msg:"eof_out_of_bounds"}},repetitions:(e,t)=>({result:a(e,u.repetitions.min,u.repetitions.max),msg:"repetitions_out_of_bounds"}),interval:(e,t)=>({result:a(e,u.timeInterval.min,u.timeInterval.max),msg:"interval_out_of_bounds"}),rxTimeout:(e,t)=>({result:a(e,u.rxTimeout.min,u.rxTimeout.max),msg:"rxTimeout_out_of_bounds"}),manchesterUnit:(e,t)=>({result:a(e,u.timeInterval.min,u.timeInterval.max),msg:"manchesterUnit_out_of_bounds"})},c={min:1e3,max:2e5},p={min:58e3,max:812e3},m={min:5e3,max:5e4},h={modulation(e,t){const r=["type","baudRate","channelSpacing","channelDeviation"],n={result:!0,msg:"invalid_modulation_properties"};for(let t=0;t({result:!Object.keys(e).some(t=>!n(e[t])),msg:"invalid_pronto_cmds"}),toggleCmds:(e,t)=>({result:!Object.keys(e).some(t=>!n(e[t])),msg:"invalid_pronto_toggleCmds"}),repetitions:(e,t)=>({result:a(e,u.repetitions.min,u.repetitions.max),msg:"repetitions_out_of_bounds"})},v={carrier:(e,t)=>({result:a(e,433e6,43399e4),msg:"carrier_out_of_bounds"})},g={min:868e6,max:8689e5},y={carrier:(e,t)=>({result:a(e,g.min,g.max),msg:"carrier_out_of_bounds"})},b={min:3e4,max:58e3},w={min:30,max:70},k={carrier:(e,t)=>({result:a(e,b.min,b.max),msg:"invalid_carrier"}),dutyCycle:(e,t)=>({result:a(e,w.min,w.max),msg:"dutyCycle_out_of_bounds"})};e.exports={validate:function(e,t,r){for(const a in r){const n=r[a],i=e[a];if("function"==typeof i){const e=i(n,r);t(e.msg,e.result)}}},genericValidator:l,irValidator:k,rfValidator:d,rf433Validator:v,rf868Validator:y,modulationValidator:h,prontoValidator:f}},function(e){e.exports=JSON.parse('{"USD":"$","CAD":"$","EUR":"€","AED":"د.إ.‏","AFN":"؋","ALL":"Lek","AMD":"դր.","ARS":"$","AUD":"$","AZN":"ман.","BAM":"KM","BDT":"৳","BGN":"лв.","BHD":"د.ب.‏","BIF":"FBu","BND":"$","BOB":"Bs","BRL":"R$","BWP":"P","BYR":"BYR","BZD":"$","CDF":"FrCD","CHF":"CHF","CLP":"$","CNY":"CN¥","COP":"$","CRC":"₡","CVE":"CV$","CZK":"Kč","DJF":"Fdj","DKK":"kr","DOP":"RD$","DZD":"د.ج.‏","EEK":"kr","EGP":"ج.م.‏","ERN":"Nfk","ETB":"Br","GBP":"£","GEL":"GEL","GHS":"GH₵","GNF":"FG","GTQ":"Q","HKD":"$","HNL":"L","HRK":"kn","HUF":"Ft","IDR":"Rp","ILS":"₪","INR":"টকা","IQD":"د.ع.‏","IRR":"﷼","ISK":"kr","JMD":"$","JOD":"د.أ.‏","JPY":"¥","KES":"Ksh","KHR":"៛","KMF":"FC","KRW":"₩","KWD":"د.ك.‏","KZT":"тңг.","LBP":"ل.ل.‏","LKR":"SL Re","LTL":"Lt","LVL":"Ls","LYD":"د.ل.‏","MAD":"د.م.‏","MDL":"MDL","MGA":"MGA","MKD":"MKD","MMK":"K","MOP":"MOP$","MUR":"MURs","MXN":"$","MYR":"RM","MZN":"MTn","NAD":"N$","NGN":"₦","NIO":"C$","NOK":"kr","NPR":"नेरू","NZD":"$","OMR":"ر.ع.‏","PAB":"B/.","PEN":"S/.","PHP":"₱","PKR":"₨","PLN":"zł","PYG":"₲","QAR":"ر.ق.‏","RON":"RON","RSD":"дин.","RUB":"руб.","RWF":"FR","SAR":"ر.س.‏","SDG":"SDG","SEK":"kr","SGD":"$","SOS":"Ssh","SYP":"ل.س.‏","THB":"฿","TND":"د.ت.‏","TOP":"T$","TRY":"TL","TTD":"$","TWD":"NT$","TZS":"TSh","UAH":"₴","UGX":"USh","UYU":"$","UZS":"UZS","VEF":"Bs.F.","VND":"₫","XAF":"FCFA","XOF":"CFA","YER":"ر.ي.‏","ZAR":"R","ZMK":"ZK"}')},function(e,t,r){"use strict";try{const t=r(1),a=r(21),n=r(1),i=r(177);t&&n&&n.promisify&&(e.exports.openAsync=n.promisify(t.open),e.exports.closeAsync=n.promisify(t.close),e.exports.readAsync=n.promisify(t.read),e.exports.statAsync=n.promisify(t.stat),e.exports.readFileAsync=n.promisify(t.readFile),e.exports.readDirAsync=n.promisify(t.readdir),e.exports.lstatAsync=n.promisify(t.lstat),e.exports.imageSizeAsync=n.promisify(i)),a&&(e.exports.join=a.join,e.exports.extname=a.extname,e.exports.basename=a.basename,e.exports.dirname=a.dirname)}catch(e){}},function(e,t,r){"use strict";(function(t){var a=r(1),n=r(21),i=r(22),s=r(189);function o(e,t){var r=s(e,t);if(r in i){var a=i[r].calculate(e,t);if(!1!==a)return a.type=r,a}throw new TypeError("unsupported file type: "+r+" (file: "+t+")")}e.exports=function(e,r){if(t.isBuffer(e))return o(e);if("string"!=typeof e)throw new TypeError("invalid invocation");var i=n.resolve(e);if("function"!=typeof r)return o(function(e){var r=a.openSync(e,"r"),n=a.fstatSync(r).size,i=Math.min(n,524288),s=new t(i);return a.readSync(r,s,0,i,0),a.closeSync(r),s}(i),i);!function(e,r){a.open(e,"r",(function(n,i){if(n)return r(n);a.fstat(i,(function(n,s){if(n)return r(n);var o=s.size;if(o<=0)return r(new Error("File size is not greater than 0 —— "+e));var l=Math.min(o,524288),u=new t(l);a.read(i,u,0,l,0,(function(e){if(e)return r(e);a.close(i,(function(e){r(e,u)}))}))}))}))}(i,(function(e,t){if(e)return r(e);var a;try{a=o(t,i)}catch(t){e=t}r(e,a)}))},e.exports.types=Object.keys(i)}).call(this,r(2).Buffer)},function(e,t,r){"use strict";e.exports={detect:function(e){return"BM"===e.toString("ascii",0,2)},calculate:function(e){return{width:e.readUInt32LE(18),height:Math.abs(e.readInt32LE(22))}}}},function(e,t,r){"use strict";e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&2===e.readUInt16LE(2)},calculate:r(23).calculate}},function(e,t,r){"use strict";e.exports={detect:function(e){return 542327876===e.readUInt32LE(0)},calculate:function(e){return{height:e.readUInt32LE(12),width:e.readUInt32LE(16)}}}},function(e,t,r){"use strict";var a=/^GIF8[79]a/;e.exports={detect:function(e){var t=e.toString("ascii",0,6);return a.test(t)},calculate:function(e){return{width:e.readUInt16LE(6),height:e.readUInt16LE(8)}}}},function(e,t,r){"use strict";function a(e,t){return{height:e.readUInt16BE(t),width:e.readUInt16BE(t+2)}}function n(e,t){if(t>e.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==e[t])throw new TypeError("Invalid JPG, marker table corrupted")}e.exports={detect:function(e){return"ffd8"===e.toString("hex",0,2)},calculate:function(e){var t,r;for(e=e.slice(4);e.length;){if(t=e.readUInt16BE(0),n(e,t),192===(r=e[t+1])||193===r||194===r)return a(e,t+5);e=e.slice(t+2)}throw new TypeError("Invalid JPG, no size found")}}},function(e,t,r){"use strict";e.exports={detect:function(e){if("PNG\r\n\n"===e.toString("ascii",1,8)){var t=e.toString("ascii",12,16);if("CgBI"===t&&(t=e.toString("ascii",28,32)),"IHDR"!==t)throw new TypeError("invalid png");return!0}},calculate:function(e){return"CgBI"===e.toString("ascii",12,16)?{width:e.readUInt32BE(32),height:e.readUInt32BE(36)}:{width:e.readUInt32BE(16),height:e.readUInt32BE(20)}}}},function(e,t,r){"use strict";e.exports={detect:function(e){return"8BPS"===e.toString("ascii",0,4)},calculate:function(e){return{width:e.readUInt32BE(18),height:e.readUInt32BE(14)}}}},function(e,t,r){"use strict";var a=/]+[^>]*>/;var n=/]+>/,i=/\bwidth=(['"])([^%]+?)\1/,s=/\bheight=(['"])([^%]+?)\1/,o=/\bviewBox=(['"])(.+?)\1/;function l(e){var t=e.split(" ");return{width:parseInt(t[2],10),height:parseInt(t[3],10)}}e.exports={detect:function(e){return a.test(e)},calculate:function(e){var t=e.toString("utf8").match(n);if(t){var r=function(e){var t=e.match(i),r=e.match(s),a=e.match(o);return{width:t&&parseInt(t[2],10),height:r&&parseInt(r[2],10),viewbox:a&&l(a[2])}}(t[0]);if(r.width&&r.height)return function(e){return{width:e.width,height:e.height}}(r);if(r.viewbox)return function(e){var t=e.viewbox.width/e.viewbox.height;return e.width?{width:e.width,height:Math.floor(e.width/t)}:e.height?{width:Math.floor(e.height*t),height:e.height}:{width:e.viewbox.width,height:e.viewbox.height}}(r)}throw new TypeError("invalid svg")}}},function(e,t,r){"use strict";(function(t){var a=r(1),n=r(187);function i(e,t){var r=n(e,16,8,t);return(n(e,16,10,t)<<16)+r}function s(e){if(e.length>24)return e.slice(12)}e.exports={detect:function(e){var t=e.toString("hex",0,4);return"49492a00"===t||"4d4d002a"===t},calculate:function(e,r){if(!r)throw new TypeError("Tiff doesn't support buffer");var o="BE"===function(e){var t=e.toString("ascii",0,2);return"II"===t?"LE":"MM"===t?"BE":void 0}(e),l=function(e,t){for(var r,a,o,l={};e&&e.length&&(r=n(e,16,0,t),a=n(e,16,2,t),o=n(e,32,4,t),0!==r);)1!==o||3!==a&&4!==a||(l[r]=i(e,t)),e=s(e);return l}(function(e,r,i){var s=n(e,32,4,i),o=1024,l=a.statSync(r).size;s+o>l&&(o=l-s-10);var u=new t(o),d=a.openSync(r,"r");return a.readSync(d,u,0,o,s),u.slice(2)}(e,r,o),o),u=l[256],d=l[257];if(!u||!d)throw new TypeError("Invalid Tiff, missing tags");return{width:u,height:d}}}}).call(this,r(2).Buffer)},function(e,t,r){"use strict";e.exports=function(e,t,r,a){return r=r||0,e["readUInt"+t+(a?"BE":"LE")].call(e,r)}},function(e,t,r){"use strict";e.exports={detect:function(e){var t="RIFF"===e.toString("ascii",0,4),r="WEBP"===e.toString("ascii",8,12),a="VP8"===e.toString("ascii",12,15);return t&&r&&a},calculate:function(e){var t=e.toString("ascii",12,16);if(e=e.slice(20,30),"VP8X"===t){var r=e[0];return!(!(0==(192&r))||!(0==(1&r)))&&function(e){return{width:1+e.readUIntLE(4,3),height:1+e.readUIntLE(7,3)}}(e)}if("VP8 "===t&&47!==e[0])return function(e){return{width:16383&e.readInt16LE(6),height:16383&e.readInt16LE(8)}}(e);var a=e.toString("hex",3,6);return"VP8L"===t&&"9d012a"!==a&&function(e){return{width:1+((63&e[2])<<8|e[1]),height:1+((15&e[4])<<10|e[3]<<2|(192&e[2])>>6)}}(e)}}},function(e,t,r){"use strict";var a=r(22);e.exports=function(e,t){var r;for(r in a)if(a[r].detect(e,t))return r}},function(e){e.exports=JSON.parse('{"title":"App","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]},"i18nArray":{"type":"object","patternProperties":{"^.*$":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"author":{"required":["name"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"website":{"type":"string"}}},"images":{"required":["large","small"],"additionalProperties":false,"properties":{"large":{"type":"string"},"small":{"type":"string"},"xlarge":{"type":"string"}}},"flowCard":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"titleFormatted":{"$ref":"#/definitions/i18nObject"},"deprecated":{"type":"boolean","enum":[true]},"highlight":{"type":"boolean","enum":[true]},"advanced":{"type":"boolean","enum":[true]},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"droptoken":{"oneOf":[{"type":"string","enum":["boolean","number","string","image"]},{"type":"array","items":{"type":"string","enum":["boolean","number","string","image"]}}]},"tokens":{"type":"array","items":{"type":"object","required":["name","title"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["boolean","number","string","image"],"default":"string"},"title":{"$ref":"#/definitions/i18nObject"},"example":{"oneOf":[{"$ref":"#/definitions/i18nObject"},{"type":"number"},{"type":"boolean"}]}}}},"args":{"type":"array","items":{"anyOf":[{"type":"object","required":["name","type","filter"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["device"]},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["text","autocomplete","device","date","time","color","checkbox","code"]},"placeholder":{"$ref":"#/definitions/i18nObject"},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["number","range"]},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"label":{"$ref":"#/definitions/i18nObject"},"labelMultiplier":{"type":"number"},"labelDecimals":{"type":"number","mimimum":0,"maximum":10}}},{"type":"object","required":["name","type","values"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["dropdown"]},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"$ref":"#/definitions/i18nObject"}}}}}}]}}}},"appSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},{"type":"object","required":["id","type","title","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"}}},{"type":"object","required":["type","title","children"],"properties":{"type":{"type":"string","enum":["group"]},"title":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/appSettings"}}}]}},"driverSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"attr":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","label"],"properties":{"id":{"type":"string"},"label":{"$ref":"#/definitions/i18nObject"}}}},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["type","label","children"],"properties":{"type":{"type":"string","enum":["group"]},"label":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/driverSettings"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}}]}},"matterDevice":{"type":"object","required":["vendorId","productId"],"properties":{"vendorId":{"oneOf":[{"type":"number","minimum":1,"maximum":65520},{"type":"array","items":{"type":"number","minimum":1,"maximum":65520}}]},"productId":{"oneOf":[{"type":"number","minimum":1,"maximum":65535},{"type":"array","items":{"type":"number","minimum":1,"maximum":65535}}]},"deviceVendorId":{"oneOf":[{"type":"number","minimum":1,"maximum":65520},{"type":"array","items":{"type":"number","minimum":1,"maximum":65520}}]},"deviceProductName":{"oneOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"array","items":{"type":"string","minLength":1,"maxLength":32}}]},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}}}},"zigbeeDevice":{"type":"object","required":["manufacturerName","productId","endpoints"],"properties":{"manufacturerName":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"productId":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"endpoints":{"type":"object","propertyNames":{"type":"string","pattern":"^[0-9]+$"},"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"clusters":{"type":"array","items":{"type":"number"}},"bindings":{"type":"array","items":{"type":"number"}}}}},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}}}},"zwaveDevice":{"type":"object","required":["manufacturerId","productTypeId","productId"],"properties":{"manufacturerId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productTypeId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}},"associationGroups":{"type":"array","items":{"type":"number"}},"associationGroupsMultiChannel":{"type":"array","items":{"type":"number"}},"associationGroupsOptions":{"type":"object","properties":{"hint":{"$ref":"#/definitions/i18nObject"}}},"wakeUpInterval":{"type":"number"},"defaultConfiguration":{"type":"array","items":{"type":"object","required":["id","size","value"],"properties":{"id":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"value":{"oneOf":[{"type":"number"},{"type":"string"}]},"multiChannelNodes":{"type":"object","items":{"type":"object","required":["class","capabilities","name"],"properties":{"class":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"icon":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"}}}}}}}}},"zwaveSetting":{"type":"object","required":["index","size"],"properties":{"index":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"signed":{"type":"boolean"}}}},"required":["id","name","version","compatibility","author"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"description":{"$ref":"#/definitions/i18nObject"},"author":{"$ref":"#/definitions/author"},"images":{"$ref":"#/definitions/images"},"version":{"type":"string"},"compatibility":{"type":"string"},"sdk":{"type":"number","default":3,"minimum":1,"maximum":3},"platforms":{"type":"array","items":{"type":"string","enum":["cloud","local"]}},"platformLocalRequiredFeatures":{"type":"array","items":{"type":"string","enum":["nfc","speaker","ledring","matter"]}},"tags":{"$ref":"#/definitions/i18nArray"},"permissions":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"bugs":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://"}}},"homepage":{"type":"string","pattern":"^https://"},"support":{"type":"string","pattern":"^(https://|mailto:)"},"source":{"type":"string","pattern":"^https://"},"athomForumDiscussionId":{"type":"number"},"homeyCommunityTopicId":{"type":"number"},"category":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"contributors":{"type":"object","patternProperties":{"^(developers|translators)$":{"type":"array","items":{"$ref":"#/definitions/author"}}},"additionalProperties":false},"contributing":{"type":"object","properties":{"donate":{"type":"object","additionalProperties":false,"properties":{"githubSponsors":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"bunq":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"patreon":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"paypal":{"type":"object","additionalProperties":false,"patternProperties":{"^(username|email)$":{"type":"string"},"currency":{"type":"string"}}}}}}},"screensavers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"capabilities":{"type":"object","patternProperties":{"^.*$":{"type":"object"}},"additionalProperties":false},"drivers":{"type":"array","items":{"type":"object","required":["id","name","class","capabilities"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"class":{"type":"string"},"capabilities":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"capabilitiesOptions":{"type":"object"},"images":{"$ref":"#/definitions/images"},"deprecated":{"type":"boolean","enum":[true]},"discovery":{"type":"string"},"energy":{"type":"object","properties":{"approximation":{"oneOf":[{"required":["usageOn","usageOff"],"additionalProperties":false,"properties":{"usageOn":{"type":"number"},"usageOff":{"type":"number"}}},{"required":["usageConstant"],"additionalProperties":false,"properties":{"usageConstant":{"type":"number"}}}]},"cumulative":{"type":"boolean","enum":[true]},"batteries":{"type":"array","minItems":1,"items":{"type":"string"}}}},"pair":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"template":{"type":"string"},"options":{"type":"object"},"navigation":{"type":"object","properties":{"prev":{"type":"string"},"next":{"type":"string"}}}}}},"settings":{"$ref":"#/definitions/driverSettings"},"gtin":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"matter":{"$ref":"#/definitions/matterDevice"},"zwave":{"$ref":"#/definitions/zwaveDevice"},"zigbee":{"$ref":"#/definitions/zigbeeDevice"},"rf433":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"infrared":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"connectivity":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["lan","cloud","ble","zwave","zigbee","infrared","rf433","rf868","matter"]}}}}},"flow":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"conditions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"actions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}}}},"signals":{"type":"object","patternProperties":{"^(433|868|ir)$":{"type":"object"}},"additionalProperties":false},"brandColor":{"type":"string","minLength":7,"maxLength":7,"pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$"},"discovery":{"type":"object","patternProperties":{"^.*$":{"type":"object","required":["type"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["mdns-sd","ssdp","mac"]},"id":{"type":"string","minLength":1},"conditions":{"type":"array","items":{"type":"array","items":{"type":"object","required":["field","match"],"additionalProperties":false,"properties":{"field":{"type":"string"},"match":{"type":"object","required":["type","value"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["string","regex"]},"value":{"type":"string"}}}}}}},"mdns-sd":{"type":"object","required":["name","protocol"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"protocol":{"type":"string","enum":["tcp","udp"]}}},"ssdp":{"type":"object","required":["search"],"additionalProperties":false,"properties":{"search":{"type":"string","minLength":1}}},"mac":{"type":"object","required":["manufacturer"],"additionalProperties":false,"properties":{"manufacturer":{"type":"array","uniqueItems":true,"minItems":1,"maxItems":32,"items":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"integer","minimum":0,"maximum":255}}}}}}}}},"settings":{"$ref":"#/definitions/appSettings"}}}')},function(e){e.exports=JSON.parse('{"homey:manager:geolocation":{"title":{"en":"Read Homey\'s location","nl":"Homey\'s locatie uitlezen","de":"Homeys Standort lesen","fr":"Lire la position de Homey","it":"Leggi la posizione di Homey","sv":"Läs av Homeys plats","no":"Les av Homeys posisjon","es":"Leer la posición de Homey","da":"Læs Homeys placering","ru":"Читать местонахождение Homey","pl":"Odczytaj lokalizację Homey"}},"homey:manager:ledring":{"title":{"en":"Control Homey\'s LED ring","nl":"Homey\'s LED ring besturen","de":"Homeys LED-Ring steuern","fr":"Contrôler l\'anneau LED de Homey","it":"Controlla l\'anello LED di Homey","sv":"Kontrollera Homeys LED-ring","no":"Kontroller Homeys LED-ring","es":"Controlar el anillo LED de Homey","da":"Kontroller Homeys LED-ring","ru":"Управлять светодиодным кольцом Homey","pl":"Steruj lampą pierścieniową Homey"}},"homey:manager:media":{"title":{"en":"Control Homey\'s Music","nl":"Homey\'s Muziek besturen","de":"Homeys Musik steuern","fr":"Contrôler la musique de Homey","it":"Controlla la musica di Homey","sv":"Styr Homeys musik","no":"Kontroller Homeys musikk","es":"Controlar la música de Homey","da":"Kontroller Homeys musik","ru":"Управлять музыкой Homey","pl":"Steruj muzyką Homey"}},"homey:manager:speech-input":{"title":{"en":"React to speech","nl":"Reageren op spraak","de":"Auf Sprache reagieren","fr":"Réagir au discours","it":"Reagisci al parlato","sv":"Reagera på tal","no":"Reager på tale","es":"Reaccionar al habla","da":"Reager på tale","ru":"Реагировать на голос","pl":"Reaguj na mowę"}},"homey:manager:speech-output":{"title":{"en":"Let Homey talk","nl":"Homey laten praten","de":"Homey sprechen lassen","fr":"Laisser Homey parler","it":"Permetti a Homey di parlare","sv":"Låt Homey prata","no":"La Homey snakke","es":"Deja que Homey hable","da":"Lad Homey tale","ru":"Разрешить Homey говорить","pl":"Pozwól Homey mówić"}},"homey:wireless:433":{"title":{"en":"Send and receive on the 433 MHz frequency","nl":"Verzenden en ontvangen op de 433 MHz frequentie","de":"Auf der 433MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 433 MHz","it":"Invia e ricevi sulla frequenza 433 MHz","sv":"Skicka och ta emot på frekvensen 433 MHz","no":"Send og motta på frekvensen 433 MHz","es":"Enviar y recibir en la frecuencia de 433 MHz","da":"Send, og modtag på 433 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 433 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 433 MHz"}},"homey:wireless:868":{"title":{"en":"Send and receive on the 868 MHz frequency","nl":"Verzenden en ontvangen op de 868 MHz frequentie","de":"Auf der 868MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 868 MHz","it":"Invia e ricevi sulla frequenza 868 MHz","sv":"Skicka och ta emot på frekvensen 468 MHz","no":"Send og motta på frekvensen 468 MHz","es":"Enviar y recibir en la frecuencia de 868 MHz","da":"Send, og modtag på 868 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 868 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 868 MHz"}},"homey:wireless:ir":{"title":{"en":"Send and receive Infrared","nl":"Infrarood verzenden en ontvangen","de":"Infrarot senden und empfangen","fr":"Envoyer et recevoir en infrarouge","it":"Invia e ricevi in infrarossi","sv":"Skicka och ta emot infrarött","no":"Send og motta infrarødt","es":"Enviar y recibir en infrarrojos","da":"Send, og modtag på infrarød","ru":"Отправка и получение ИК-сигналов","pl":"Wysyłaj i odbieraj podczerwień"}},"homey:wireless:zwave":{"title":{"en":"Send and receive Z-Wave for specific devices","nl":"Z-Wave verzenden en ontvangen voor specifieke apparaten","de":"Z-Wave für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Z-Wave pour les appareils spécifiques","it":"Invia e ricevi Z-Wave per dispositivi specifici","sv":"Skicka och ta emot Z-Wave för specifika enheter","no":"Send og motta Z-Wave for spesifikke enheter","es":"Enviar y recibir Z-Wave para dispositivos específicos","da":"Send, og modtag på Z-Wave for specifikke enheder","ru":"Отправлять и получать сигналы Z-Wave для определенных устройств","pl":"Wysyłaj i odbieraj Z-Wave dla określonych urządzeń"}},"homey:wireless:zigbee":{"title":{"en":"Send and receive Zigbee for specific devices","nl":"Zigbee verzenden en ontvangen voor specifieke apparaten","de":"Zigbee für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Zigbee pour les appareils spécifiques","it":"Invia e ricevi Zigbee per dispositivi specifici","sv":"Skicka och ta emot Zigbee för specifika enheter","no":"Send og motta Zigbee for spesifikke enheter","es":"Enviar y recibir Zigbee para dispositivos específicos","da":"Send, og modtag på Zigbee for specifikke enheder","ru":"Отправлять и получать сигналы Zigbee для определенных устройств","pl":"Wysyłaj i odbieraj Zigbee dla określonych urządzeń"}},"homey:wireless:nfc":{"title":{"en":"Read and write NFC tags","nl":"NFC tags lezen en schrijven","de":"NFC-Tags lesen und schreiben","fr":"Lire et écrire les tags NFC","it":"Leggi e scrivi i tag NFC","sv":"Läs och skriv NFC-taggar","no":"Les og skriv NFC-tagger","es":"Leer y escribir etiquetas NFC","da":"Læs, og skriv NFC-tags","ru":"Чтение и запись тегов NFC","pl":"Odczytuj i twórz tagi NFC"}},"homey:manager:api":{"title":{"en":"Gain full access to Homey to control everything on behalf of the user","nl":"Volledige toegang tot Homey om alles te bedienen namens de gebruiker","de":"Erhalte vollen Zugriff auf Homey, um alles im Namen des Benutzers zu steuern","fr":"Obtenir l\'accès complet à Homey pour contrôler tout au nom de l\'utilisateur","it":"Ottieni l\'accesso completo a Homey per controllare tutto a nome dell\'utente","sv":"Få full åtkomst till Homey för att styra allt åt användaren","no":"Få full tilgang til Homey for å kontrollere alt på vegne av brukeren","es":"Acceso completo a Homey para controlarlo todo en nombre del usuario","da":"Få fuld adgang til Homey for at kontrollere alt på brugerens vegne","ru":"Получите полный доступ к Homey, чтобы контролировать все от имени пользователя","pl":"Zdobądź pełny dostęp do Homey, aby sterować wszystkim w imieniu użytkownika"}},"homey:wireless:ble":{"title":{"en":"Communicate with Bluetooth Low Energy devices","nl":"Communiceren met Bluetooth Low Energy apparaten","de":"Mit Bluetooth-Low-Energy-Geräten kommunizieren","fr":"Communiquer avec les appareils Bluetooth à faible énergie","it":"Comunica con i dispositivi Bluetooth Low Energy","sv":"Kommunicera med Bluetooth låg energi-enheter","no":"Kommuniser med Bluetooth Low Energy-enheter","es":"Comunicarse con dispositivos de Bluetooth Low Energy","da":"Kommuniker med Bluetooth low energy-enheder","ru":"Связываться с устройствами Bluetooth с низким энергопотреблением","pl":"Porozumiewaj się z urządzeniami Bluetooth Low Energy"}}}')},function(e,t,r){"use strict";e.exports=class{static getCodecs(){return r(193)}}},function(e){e.exports=JSON.parse('{"homey:codec:mp3":{},"homey:codec:ogg":{},"homey:codec:flac":{}}')}])})); \ No newline at end of file