markuno_lib 1.2.133 → 1.2.135

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/bus_utils.js CHANGED
@@ -1 +1 @@
1
- var e={};!function(e){var t="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;e.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var a=t.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(var n in a)a.hasOwnProperty(n)&&(e[n]=a[n])}}return e},e.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,a,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(a,a+n),i);else for(var r=0;r<n;r++)e[i+r]=t[a+r]},flattenChunks:function(e){var t,a,n,i,r,s;for(n=0,t=0,a=e.length;t<a;t++)n+=e[t].length;for(s=new Uint8Array(n),i=0,t=0,a=e.length;t<a;t++)r=e[t],s.set(r,i),i+=r.length;return s}},n={arraySet:function(e,t,a,n,i){for(var r=0;r<n;r++)e[i+r]=t[a+r]},flattenChunks:function(e){return[].concat.apply([],e)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,a)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,n))},e.setTyped(t)}(e);var t={},a={},n={},i=e;function zero$1(e){for(var t=e.length;--t>=0;)e[t]=0}var r=256,s=286,o=30,l=15,h=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],d=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],f=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);zero$1(u);var c=new Array(60);zero$1(c);var g=new Array(512);zero$1(g);var m=new Array(256);zero$1(m);var b=new Array(29);zero$1(b);var w,p,k,v=new Array(o);function StaticTreeDesc(e,t,a,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=a,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function TreeDesc(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function d_code(e){return e<256?g[e]:g[256+(e>>>7)]}function put_short(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function send_bits(e,t,a){e.bi_valid>16-a?(e.bi_buf|=t<<e.bi_valid&65535,put_short(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=a-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=a)}function send_code(e,t,a){send_bits(e,a[2*t],a[2*t+1])}function bi_reverse(e,t){var a=0;do{a|=1&e,e>>>=1,a<<=1}while(--t>0);return a>>>1}function gen_codes(e,t,a){var n,i,r=new Array(16),s=0;for(n=1;n<=l;n++)r[n]=s=s+a[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=bi_reverse(r[o]++,o))}}function init_block(e){var t;for(t=0;t<s;t++)e.dyn_ltree[2*t]=0;for(t=0;t<o;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function bi_windup(e){e.bi_valid>8?put_short(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function smaller(e,t,a,n){var i=2*t,r=2*a;return e[i]<e[r]||e[i]===e[r]&&n[t]<=n[a]}function pqdownheap(e,t,a){for(var n=e.heap[a],i=a<<1;i<=e.heap_len&&(i<e.heap_len&&smaller(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!smaller(t,n,e.heap[i],e.depth));)e.heap[a]=e.heap[i],a=i,i<<=1;e.heap[a]=n}function compress_block(e,t,a){var n,i,s,o,l=0;if(0!==e.last_lit)do{n=e.pending_buf[e.d_buf+2*l]<<8|e.pending_buf[e.d_buf+2*l+1],i=e.pending_buf[e.l_buf+l],l++,0===n?send_code(e,i,t):(send_code(e,(s=m[i])+r+1,t),0!==(o=h[s])&&send_bits(e,i-=b[s],o),send_code(e,s=d_code(--n),a),0!==(o=d[s])&&send_bits(e,n-=v[s],o))}while(l<e.last_lit);send_code(e,256,t)}function build_tree(e,t){var a,n,i,r=t.dyn_tree,s=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,d=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<h;a++)0!==r[2*a]?(e.heap[++e.heap_len]=d=a,e.depth[a]=0):r[2*a+1]=0;for(;e.heap_len<2;)r[2*(i=e.heap[++e.heap_len]=d<2?++d:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=s[2*i+1]);for(t.max_code=d,a=e.heap_len>>1;a>=1;a--)pqdownheap(e,r,a);i=h;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],pqdownheap(e,r,1),n=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=n,r[2*i]=r[2*a]+r[2*n],e.depth[i]=(e.depth[a]>=e.depth[n]?e.depth[a]:e.depth[n])+1,r[2*a+1]=r[2*n+1]=i,e.heap[1]=i++,pqdownheap(e,r,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function gen_bitlen(e,t){var a,n,i,r,s,o,h=t.dyn_tree,d=t.max_code,_=t.stat_desc.static_tree,f=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,g=t.stat_desc.max_length,m=0;for(r=0;r<=l;r++)e.bl_count[r]=0;for(h[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a<573;a++)(r=h[2*h[2*(n=e.heap[a])+1]+1]+1)>g&&(r=g,m++),h[2*n+1]=r,n>d||(e.bl_count[r]++,s=0,n>=c&&(s=u[n-c]),o=h[2*n],e.opt_len+=o*(r+s),f&&(e.static_len+=o*(_[2*n+1]+s)));if(0!==m){do{for(r=g-1;0===e.bl_count[r];)r--;e.bl_count[r]--,e.bl_count[r+1]+=2,e.bl_count[g]--,m-=2}while(m>0);for(r=g;0!==r;r--)for(n=e.bl_count[r];0!==n;)(i=e.heap[--a])>d||(h[2*i+1]!==r&&(e.opt_len+=(r-h[2*i+1])*h[2*i],h[2*i+1]=r),n--)}}(e,t),gen_codes(r,d,e.bl_count)}function scan_tree(e,t,a){var n,i,r=-1,s=t[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),t[2*(a+1)+1]=65535,n=0;n<=a;n++)i=s,s=t[2*(n+1)+1],++o<l&&i===s||(o<h?e.bl_tree[2*i]+=o:0!==i?(i!==r&&e.bl_tree[2*i]++,e.bl_tree[32]++):o<=10?e.bl_tree[34]++:e.bl_tree[36]++,o=0,r=i,0===s?(l=138,h=3):i===s?(l=6,h=3):(l=7,h=4))}function send_tree(e,t,a){var n,i,r=-1,s=t[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),n=0;n<=a;n++)if(i=s,s=t[2*(n+1)+1],!(++o<l&&i===s)){if(o<h)do{send_code(e,i,e.bl_tree)}while(0!=--o);else 0!==i?(i!==r&&(send_code(e,i,e.bl_tree),o--),send_code(e,16,e.bl_tree),send_bits(e,o-3,2)):o<=10?(send_code(e,17,e.bl_tree),send_bits(e,o-3,3)):(send_code(e,18,e.bl_tree),send_bits(e,o-11,7));o=0,r=i,0===s?(l=138,h=3):i===s?(l=6,h=3):(l=7,h=4)}}zero$1(v);var y=!1;function _tr_stored_block(e,t,a,n){send_bits(e,0+(n?1:0),3),function copy_block(e,t,a,n){bi_windup(e),put_short(e,a),put_short(e,~a),i.arraySet(e.pending_buf,e.window,t,a,e.pending),e.pending+=a}(e,t,a)}n._tr_init=function _tr_init(e){y||(!function tr_static_init(){var e,t,a,n,i,r=new Array(16);for(a=0,n=0;n<28;n++)for(b[n]=a,e=0;e<1<<h[n];e++)m[a++]=n;for(m[a-1]=n,i=0,n=0;n<16;n++)for(v[n]=i,e=0;e<1<<d[n];e++)g[i++]=n;for(i>>=7;n<o;n++)for(v[n]=i<<7,e=0;e<1<<d[n]-7;e++)g[256+i++]=n;for(t=0;t<=l;t++)r[t]=0;for(e=0;e<=143;)u[2*e+1]=8,e++,r[8]++;for(;e<=255;)u[2*e+1]=9,e++,r[9]++;for(;e<=279;)u[2*e+1]=7,e++,r[7]++;for(;e<=287;)u[2*e+1]=8,e++,r[8]++;for(gen_codes(u,287,r),e=0;e<o;e++)c[2*e+1]=5,c[2*e]=bi_reverse(e,5);w=new StaticTreeDesc(u,h,257,s,l),p=new StaticTreeDesc(c,d,0,o,l),k=new StaticTreeDesc(new Array(0),_,0,19,7)}(),y=!0),e.l_desc=new TreeDesc(e.dyn_ltree,w),e.d_desc=new TreeDesc(e.dyn_dtree,p),e.bl_desc=new TreeDesc(e.bl_tree,k),e.bi_buf=0,e.bi_valid=0,init_block(e)},n._tr_stored_block=_tr_stored_block,n._tr_flush_block=function _tr_flush_block(e,t,a,n){var i,s,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=function detect_data_type(e){var t,a=4093624447;for(t=0;t<=31;t++,a>>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<r;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),build_tree(e,e.l_desc),build_tree(e,e.d_desc),o=function build_bl_tree(e){var t;for(scan_tree(e,e.dyn_ltree,e.l_desc.max_code),scan_tree(e,e.dyn_dtree,e.d_desc.max_code),build_tree(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*f[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=a+5,a+4<=i&&-1!==t?_tr_stored_block(e,t,a,n):4===e.strategy||s===i?(send_bits(e,2+(n?1:0),3),compress_block(e,u,c)):(send_bits(e,4+(n?1:0),3),function send_all_trees(e,t,a,n){var i;for(send_bits(e,t-257,5),send_bits(e,a-1,5),send_bits(e,n-4,4),i=0;i<n;i++)send_bits(e,e.bl_tree[2*f[i]+1],3);send_tree(e,e.dyn_ltree,t-1),send_tree(e,e.dyn_dtree,a-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),compress_block(e,e.dyn_ltree,e.dyn_dtree)),init_block(e),n&&bi_windup(e)},n._tr_tally=function _tr_tally(e,t,a){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(m[a]+r+1)]++,e.dyn_dtree[2*d_code(t)]++),e.last_lit===e.lit_bufsize-1},n._tr_align=function _tr_align(e){send_bits(e,2,3),send_code(e,256,u),function bi_flush(e){16===e.bi_valid?(put_short(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)};var z=function adler32$2(e,t,a,n){for(var i=65535&e,r=e>>>16&65535,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{r=r+(i=i+t[n++]|0)|0}while(--s);i%=65521,r%=65521}return i|r<<16};var x=function makeTable(){for(var e,t=[],a=0;a<256;a++){e=a;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();var S,D=function crc32$2(e,t,a,n){var i=x,r=n+a;e^=-1;for(var s=n;s<r;s++)e=e>>>8^i[255&(e^t[s])];return~e},B={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},I=e,A=n,E=z,R=D,T=B,C=-2,F=258,Z=262,$=103,N=113,O=666;function err(e,t){return e.msg=T[t],t}function rank(e){return(e<<1)-(e>4?9:0)}function zero(e){for(var t=e.length;--t>=0;)e[t]=0}function flush_pending(e){var t=e.state,a=t.pending;a>e.avail_out&&(a=e.avail_out),0!==a&&(I.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function flush_block_only(e,t){A._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,flush_pending(e.strm)}function put_byte(e,t){e.pending_buf[e.pending++]=t}function putShortMSB(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function longest_match(e,t){var a,n,i=e.max_chain_length,r=e.strstart,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-Z?e.strstart-(e.w_size-Z):0,h=e.window,d=e.w_mask,_=e.prev,f=e.strstart+F,u=h[r+s-1],c=h[r+s];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(h[(a=t)+s]===c&&h[a+s-1]===u&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<f);if(n=F-(f-r),r=f-F,n>s){if(e.match_start=t,s=n,n>=o)break;u=h[r+s-1],c=h[r+s]}}}while((t=_[t&d])>l&&0!=--i);return s<=e.lookahead?s:e.lookahead}function fill_window(e){var t,a,n,i,r,s,o,l,h,d,_=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=_+(_-Z)){I.arraySet(e.window,e.window,_,_,0),e.match_start-=_,e.strstart-=_,e.block_start-=_,t=a=e.hash_size;do{n=e.head[--t],e.head[t]=n>=_?n-_:0}while(--a);t=a=_;do{n=e.prev[--t],e.prev[t]=n>=_?n-_:0}while(--a);i+=_}if(0===e.strm.avail_in)break;if(s=e.strm,o=e.window,l=e.strstart+e.lookahead,h=i,d=void 0,(d=s.avail_in)>h&&(d=h),a=0===d?0:(s.avail_in-=d,I.arraySet(o,s.input,s.next_in,d,l),1===s.state.wrap?s.adler=E(s.adler,o,d,l):2===s.state.wrap&&(s.adler=R(s.adler,o,d,l)),s.next_in+=d,s.total_in+=d,d),e.lookahead+=a,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=(e.ins_h<<e.hash_shift^e.window[r+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[r+3-1])&e.hash_mask,e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<Z&&0!==e.strm.avail_in)}function deflate_fast(e,t){for(var a,n;;){if(e.lookahead<Z){if(fill_window(e),e.lookahead<Z&&0===t)return 1;if(0===e.lookahead)break}if(a=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==a&&e.strstart-a<=e.w_size-Z&&(e.match_length=longest_match(e,a)),e.match_length>=3)if(n=A._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}function deflate_slow(e,t){for(var a,n,i;;){if(e.lookahead<Z){if(fill_window(e),e.lookahead<Z&&0===t)return 1;if(0===e.lookahead)break}if(a=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==a&&e.prev_length<e.max_lazy_match&&e.strstart-a<=e.w_size-Z&&(e.match_length=longest_match(e,a),e.match_length<=5&&(1===e.strategy||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,n=A._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((n=A._tr_tally(e,0,e.window[e.strstart-1]))&&flush_block_only(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=A._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}function Config(e,t,a,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=a,this.max_chain=n,this.func=i}function DeflateState(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new I.Buf16(1146),this.dyn_dtree=new I.Buf16(122),this.bl_tree=new I.Buf16(78),zero(this.dyn_ltree),zero(this.dyn_dtree),zero(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new I.Buf16(16),this.heap=new I.Buf16(573),zero(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new I.Buf16(573),zero(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function deflateResetKeep(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=2,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:N,e.adler=2===t.wrap?0:1,t.last_flush=0,A._tr_init(t),0):err(e,C)}function deflateReset(e){var t=deflateResetKeep(e);return 0===t&&function lm_init(e){e.window_size=2*e.w_size,zero(e.head),e.max_lazy_match=S[e.level].max_lazy,e.good_match=S[e.level].good_length,e.nice_match=S[e.level].nice_length,e.max_chain_length=S[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0}(e.state),t}function deflateInit2(e,t,a,n,i,r){if(!e)return C;var s=1;if(-1===t&&(t=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),i<1||i>9||8!==a||n<8||n>15||t<0||t>9||r<0||r>4)return err(e,C);8===n&&(n=9);var o=new DeflateState;return e.state=o,o.strm=e,o.wrap=s,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new I.Buf8(2*o.w_size),o.head=new I.Buf16(o.hash_size),o.prev=new I.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new I.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=r,o.method=a,deflateReset(e)}S=[new Config(0,0,0,0,(function deflate_stored(e,t){var a=65535;for(a>e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(fill_window(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+a;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,flush_block_only(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-Z&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(flush_block_only(e,!1),e.strm.avail_out),1)})),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)],a.deflateInit=function deflateInit(e,t){return deflateInit2(e,t,8,15,8,0)},a.deflateInit2=deflateInit2,a.deflateReset=deflateReset,a.deflateResetKeep=deflateResetKeep,a.deflateSetHeader=function deflateSetHeader(e,t){return e&&e.state?2!==e.state.wrap?C:(e.state.gzhead=t,0):C},a.deflate=function deflate$2(e,t){var a,n,i,r;if(!e||!e.state||t>5||t<0)return e?err(e,C):C;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===O&&4!==t)return err(e,0===e.avail_out?-5:C);if(n.strm=e,a=n.last_flush,n.last_flush=t,42===n.status)if(2===n.wrap)e.adler=0,put_byte(n,31),put_byte(n,139),put_byte(n,8),n.gzhead?(put_byte(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),put_byte(n,255&n.gzhead.time),put_byte(n,n.gzhead.time>>8&255),put_byte(n,n.gzhead.time>>16&255),put_byte(n,n.gzhead.time>>24&255),put_byte(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),put_byte(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(put_byte(n,255&n.gzhead.extra.length),put_byte(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=R(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(put_byte(n,0),put_byte(n,0),put_byte(n,0),put_byte(n,0),put_byte(n,0),put_byte(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),put_byte(n,3),n.status=N);else{var s=8+(n.w_bits-8<<4)<<8;s|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(s|=32),s+=31-s%31,n.status=N,putShortMSB(n,s),0!==n.strstart&&(putShortMSB(n,e.adler>>>16),putShortMSB(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=R(e.adler,n.pending_buf,n.pending-i,i)),flush_pending(e),i=n.pending,n.pending!==n.pending_buf_size));)put_byte(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=R(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=R(e.adler,n.pending_buf,n.pending-i,i)),flush_pending(e),i=n.pending,n.pending===n.pending_buf_size)){r=1;break}r=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,put_byte(n,r)}while(0!==r);n.gzhead.hcrc&&n.pending>i&&(e.adler=R(e.adler,n.pending_buf,n.pending-i,i)),0===r&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=R(e.adler,n.pending_buf,n.pending-i,i)),flush_pending(e),i=n.pending,n.pending===n.pending_buf_size)){r=1;break}r=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,put_byte(n,r)}while(0!==r);n.gzhead.hcrc&&n.pending>i&&(e.adler=R(e.adler,n.pending_buf,n.pending-i,i)),0===r&&(n.status=$)}else n.status=$;if(n.status===$&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&flush_pending(e),n.pending+2<=n.pending_buf_size&&(put_byte(n,255&e.adler),put_byte(n,e.adler>>8&255),e.adler=0,n.status=N)):n.status=N),0!==n.pending){if(flush_pending(e),0===e.avail_out)return n.last_flush=-1,0}else if(0===e.avail_in&&rank(t)<=rank(a)&&4!==t)return err(e,-5);if(n.status===O&&0!==e.avail_in)return err(e,-5);if(0!==e.avail_in||0!==n.lookahead||0!==t&&n.status!==O){var o=2===n.strategy?function deflate_huff(e,t){for(var a;;){if(0===e.lookahead&&(fill_window(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,a=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function deflate_rle(e,t){for(var a,n,i,r,s=e.window;;){if(e.lookahead<=F){if(fill_window(e),e.lookahead<=F&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){r=e.strstart+F;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&i<r);e.match_length=F-(r-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(a=A._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}(n,t):S[n.level].func(n,t);if(3!==o&&4!==o||(n.status=O),1===o||3===o)return 0===e.avail_out&&(n.last_flush=-1),0;if(2===o&&(1===t?A._tr_align(n):5!==t&&(A._tr_stored_block(n,0,0,!1),3===t&&(zero(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),flush_pending(e),0===e.avail_out))return n.last_flush=-1,0}return 4!==t?0:n.wrap<=0?1:(2===n.wrap?(put_byte(n,255&e.adler),put_byte(n,e.adler>>8&255),put_byte(n,e.adler>>16&255),put_byte(n,e.adler>>24&255),put_byte(n,255&e.total_in),put_byte(n,e.total_in>>8&255),put_byte(n,e.total_in>>16&255),put_byte(n,e.total_in>>24&255)):(putShortMSB(n,e.adler>>>16),putShortMSB(n,65535&e.adler)),flush_pending(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},a.deflateEnd=function deflateEnd(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==$&&t!==N&&t!==O?err(e,C):(e.state=null,t===N?err(e,-3):0):C},a.deflateSetDictionary=function deflateSetDictionary(e,t){var a,n,i,r,s,o,l,h,d=t.length;if(!e||!e.state)return C;if(2===(r=(a=e.state).wrap)||1===r&&42!==a.status||a.lookahead)return C;for(1===r&&(e.adler=E(e.adler,t,d,0)),a.wrap=0,d>=a.w_size&&(0===r&&(zero(a.head),a.strstart=0,a.block_start=0,a.insert=0),h=new I.Buf8(a.w_size),I.arraySet(h,t,d-a.w_size,a.w_size,0),t=h,d=a.w_size),s=e.avail_in,o=e.next_in,l=e.input,e.avail_in=d,e.next_in=0,e.input=t,fill_window(a);a.lookahead>=3;){n=a.strstart,i=a.lookahead-2;do{a.ins_h=(a.ins_h<<a.hash_shift^a.window[n+3-1])&a.hash_mask,a.prev[n&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=n,n++}while(--i);a.strstart=n,a.lookahead=2,fill_window(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=2,a.match_available=0,e.next_in=o,e.input=l,e.avail_in=s,a.wrap=r,0},a.deflateInfo="pako deflate (from Nodeca project)";var U={},M=e,L=!0,j=!0;try{String.fromCharCode.apply(null,[0])}catch(e){L=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){j=!1}for(var H=new M.Buf8(256),K=0;K<256;K++)H[K]=K>=252?6:K>=248?5:K>=240?4:K>=224?3:K>=192?2:1;function buf2binstring(e,t){if(t<65537&&(e.subarray&&j||!e.subarray&&L))return String.fromCharCode.apply(null,M.shrinkBuf(e,t));for(var a="",n=0;n<t;n++)a+=String.fromCharCode(e[n]);return a}H[254]=H[254]=1,U.string2buf=function(e){var t,a,n,i,r,s=e.length,o=0;for(i=0;i<s;i++)55296==(64512&(a=e.charCodeAt(i)))&&i+1<s&&56320==(64512&(n=e.charCodeAt(i+1)))&&(a=65536+(a-55296<<10)+(n-56320),i++),o+=a<128?1:a<2048?2:a<65536?3:4;for(t=new M.Buf8(o),r=0,i=0;r<o;i++)55296==(64512&(a=e.charCodeAt(i)))&&i+1<s&&56320==(64512&(n=e.charCodeAt(i+1)))&&(a=65536+(a-55296<<10)+(n-56320),i++),a<128?t[r++]=a:a<2048?(t[r++]=192|a>>>6,t[r++]=128|63&a):a<65536?(t[r++]=224|a>>>12,t[r++]=128|a>>>6&63,t[r++]=128|63&a):(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63,t[r++]=128|a>>>6&63,t[r++]=128|63&a);return t},U.buf2binstring=function(e){return buf2binstring(e,e.length)},U.binstring2buf=function(e){for(var t=new M.Buf8(e.length),a=0,n=t.length;a<n;a++)t[a]=e.charCodeAt(a);return t},U.buf2string=function(e,t){var a,n,i,r,s=t||e.length,o=new Array(2*s);for(n=0,a=0;a<s;)if((i=e[a++])<128)o[n++]=i;else if((r=H[i])>4)o[n++]=65533,a+=r-1;else{for(i&=2===r?31:3===r?15:7;r>1&&a<s;)i=i<<6|63&e[a++],r--;r>1?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return buf2binstring(o,n)},U.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;a>=0&&128==(192&e[a]);)a--;return a<0||0===a?t:a+H[e[a]]>t?a:t};var P=function ZStream$2(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},Y=a,G=e,q=U,W=B,X=P,J=Object.prototype.toString;function Deflate(e){if(!(this instanceof Deflate))return new Deflate(e);this.options=G.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new X,this.strm.avail_out=0;var a=Y.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==a)throw new Error(W[a]);if(t.header&&Y.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n="string"==typeof t.dictionary?q.string2buf(t.dictionary):"[object ArrayBuffer]"===J.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(a=Y.deflateSetDictionary(this.strm,n)))throw new Error(W[a]);this._dict_set=!0}}function deflate$1(e,t){var a=new Deflate(t);if(a.push(e,!0),a.err)throw a.msg;return a.result}Deflate.prototype.push=function(e,t){var a,n,i=this.strm,r=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,"string"==typeof e?i.input=q.string2buf(e):"[object ArrayBuffer]"===J.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new G.Buf8(r),i.next_out=0,i.avail_out=r),1!==(a=Y.deflate(i,n))&&0!==a)return this.onEnd(a),this.ended=!0,!1;0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||("string"===this.options.to?this.onData(q.buf2binstring(G.shrinkBuf(i.output,i.next_out))):this.onData(G.shrinkBuf(i.output,i.next_out)))}while((i.avail_in>0||0===i.avail_out)&&1!==a);return 4===n?(a=Y.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,0===a):2!==n||(this.onEnd(0),i.avail_out=0,!0)},Deflate.prototype.onData=function(e){this.chunks.push(e)},Deflate.prototype.onEnd=function(e){0===e&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=G.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Deflate=Deflate,t.deflate=deflate$1,t.deflateRaw=function deflateRaw(e,t){return(t=t||{}).raw=!0,deflate$1(e,t)},t.gzip=function gzip(e,t){return(t=t||{}).gzip=!0,deflate$1(e,t)};var Q={},V={},ee=e,te=15,ae=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],ne=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],ie=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],re=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64],se=e,oe=z,le=D,he=function inflate_fast(e,t){var a,n,i,r,s,o,l,h,d,_,f,u,c,g,m,b,w,p,k,v,y,z,x,S,D;a=e.state,n=e.next_in,S=e.input,i=n+(e.avail_in-5),r=e.next_out,D=e.output,s=r-(t-e.avail_out),o=r+(e.avail_out-257),l=a.dmax,h=a.wsize,d=a.whave,_=a.wnext,f=a.window,u=a.hold,c=a.bits,g=a.lencode,m=a.distcode,b=(1<<a.lenbits)-1,w=(1<<a.distbits)-1;e:do{c<15&&(u+=S[n++]<<c,c+=8,u+=S[n++]<<c,c+=8),p=g[u&b];t:for(;;){if(u>>>=k=p>>>24,c-=k,0===(k=p>>>16&255))D[r++]=65535&p;else{if(!(16&k)){if(64&k){if(32&k){a.mode=12;break e}e.msg="invalid literal/length code",a.mode=30;break e}p=g[(65535&p)+(u&(1<<k)-1)];continue t}for(v=65535&p,(k&=15)&&(c<k&&(u+=S[n++]<<c,c+=8),v+=u&(1<<k)-1,u>>>=k,c-=k),c<15&&(u+=S[n++]<<c,c+=8,u+=S[n++]<<c,c+=8),p=m[u&w];;){if(u>>>=k=p>>>24,c-=k,16&(k=p>>>16&255)){if(y=65535&p,c<(k&=15)&&(u+=S[n++]<<c,(c+=8)<k&&(u+=S[n++]<<c,c+=8)),(y+=u&(1<<k)-1)>l){e.msg="invalid distance too far back",a.mode=30;break e}if(u>>>=k,c-=k,y>(k=r-s)){if((k=y-k)>d&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(z=0,x=f,0===_){if(z+=h-k,k<v){v-=k;do{D[r++]=f[z++]}while(--k);z=r-y,x=D}}else if(_<k){if(z+=h+_-k,(k-=_)<v){v-=k;do{D[r++]=f[z++]}while(--k);if(z=0,_<v){v-=k=_;do{D[r++]=f[z++]}while(--k);z=r-y,x=D}}}else if(z+=_-k,k<v){v-=k;do{D[r++]=f[z++]}while(--k);z=r-y,x=D}for(;v>2;)D[r++]=x[z++],D[r++]=x[z++],D[r++]=x[z++],v-=3;v&&(D[r++]=x[z++],v>1&&(D[r++]=x[z++]))}else{z=r-y;do{D[r++]=D[z++],D[r++]=D[z++],D[r++]=D[z++],v-=3}while(v>2);v&&(D[r++]=D[z++],v>1&&(D[r++]=D[z++]))}break}if(64&k){e.msg="invalid distance code",a.mode=30;break e}p=m[(65535&p)+(u&(1<<k)-1)]}}break}}while(n<i&&r<o);n-=v=c>>3,u&=(1<<(c-=v<<3))-1,e.next_in=n,e.next_out=r,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=r<o?o-r+257:257-(r-o),a.hold=u,a.bits=c},de=function inflate_table(e,t,a,n,i,r,s,o){var l,h,d,_,f,u,c,g,m,b=o.bits,w=0,p=0,k=0,v=0,y=0,z=0,x=0,S=0,D=0,B=0,I=null,A=0,E=new ee.Buf16(16),R=new ee.Buf16(16),T=null,C=0;for(w=0;w<=te;w++)E[w]=0;for(p=0;p<n;p++)E[t[a+p]]++;for(y=b,v=te;v>=1&&0===E[v];v--);if(y>v&&(y=v),0===v)return i[r++]=20971520,i[r++]=20971520,o.bits=1,0;for(k=1;k<v&&0===E[k];k++);for(y<k&&(y=k),S=1,w=1;w<=te;w++)if(S<<=1,(S-=E[w])<0)return-1;if(S>0&&(0===e||1!==v))return-1;for(R[1]=0,w=1;w<te;w++)R[w+1]=R[w]+E[w];for(p=0;p<n;p++)0!==t[a+p]&&(s[R[t[a+p]]++]=p);if(0===e?(I=T=s,u=19):1===e?(I=ae,A-=257,T=ne,C-=257,u=256):(I=ie,T=re,u=-1),B=0,p=0,w=k,f=r,z=y,x=0,d=-1,_=(D=1<<y)-1,1===e&&D>852||2===e&&D>592)return 1;for(;;){c=w-x,s[p]<u?(g=0,m=s[p]):s[p]>u?(g=T[C+s[p]],m=I[A+s[p]]):(g=96,m=0),l=1<<w-x,k=h=1<<z;do{i[f+(B>>x)+(h-=l)]=c<<24|g<<16|m}while(0!==h);for(l=1<<w-1;B&l;)l>>=1;if(0!==l?(B&=l-1,B+=l):B=0,p++,0==--E[w]){if(w===v)break;w=t[a+s[p]]}if(w>y&&(B&_)!==d){for(0===x&&(x=y),f+=k,S=1<<(z=w-x);z+x<v&&!((S-=E[z+x])<=0);)z++,S<<=1;if(D+=1<<z,1===e&&D>852||2===e&&D>592)return 1;i[d=B&_]=y<<24|z<<16|f-r}}return 0!==B&&(i[f+B]=w-x<<24|64<<16),o.bits=y,0},_e=-2,fe=12,ue=30;function zswap32(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function InflateState(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new se.Buf16(320),this.work=new se.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function inflateResetKeep(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new se.Buf32(852),t.distcode=t.distdyn=new se.Buf32(592),t.sane=1,t.back=-1,0):_e}function inflateReset(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,inflateResetKeep(e)):_e}function inflateReset2(e,t){var a,n;return e&&e.state?(n=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_e:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=a,n.wbits=t,inflateReset(e))):_e}function inflateInit2(e,t){var a,n;return e?(n=new InflateState,e.state=n,n.window=null,0!==(a=inflateReset2(e,t))&&(e.state=null),a):_e}var ce,ge,me=!0;function fixedtables(e){if(me){var t;for(ce=new se.Buf32(512),ge=new se.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(de(1,e.lens,0,288,ce,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;de(2,e.lens,0,32,ge,0,e.work,{bits:5}),me=!1}e.lencode=ce,e.lenbits=9,e.distcode=ge,e.distbits=5}function updatewindow(e,t,a,n){var i,r=e.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new se.Buf8(r.wsize)),n>=r.wsize?(se.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):((i=r.wsize-r.wnext)>n&&(i=n),se.arraySet(r.window,t,a-n,i,r.wnext),(n-=i)?(se.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=i,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=i))),0}V.inflateReset=inflateReset,V.inflateReset2=inflateReset2,V.inflateResetKeep=inflateResetKeep,V.inflateInit=function inflateInit(e){return inflateInit2(e,15)},V.inflateInit2=inflateInit2,V.inflate=function inflate$2(e,t){var a,n,i,r,s,o,l,h,d,_,f,u,c,g,m,b,w,p,k,v,y,z,x,S,D=0,B=new se.Buf8(4),I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return _e;(a=e.state).mode===fe&&(a.mode=13),s=e.next_out,i=e.output,l=e.avail_out,r=e.next_in,n=e.input,o=e.avail_in,h=a.hold,d=a.bits,_=o,f=l,z=0;e:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(2&a.wrap&&35615===h){a.check=0,B[0]=255&h,B[1]=h>>>8&255,a.check=le(a.check,B,2,0),h=0,d=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",a.mode=ue;break}if(8!=(15&h)){e.msg="unknown compression method",a.mode=ue;break}if(d-=4,y=8+(15&(h>>>=4)),0===a.wbits)a.wbits=y;else if(y>a.wbits){e.msg="invalid window size",a.mode=ue;break}a.dmax=1<<y,e.adler=a.check=1,a.mode=512&h?10:fe,h=0,d=0;break;case 2:for(;d<16;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(a.flags=h,8!=(255&a.flags)){e.msg="unknown compression method",a.mode=ue;break}if(57344&a.flags){e.msg="unknown header flags set",a.mode=ue;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&(B[0]=255&h,B[1]=h>>>8&255,a.check=le(a.check,B,2,0)),h=0,d=0,a.mode=3;case 3:for(;d<32;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&(B[0]=255&h,B[1]=h>>>8&255,B[2]=h>>>16&255,B[3]=h>>>24&255,a.check=le(a.check,B,4,0)),h=0,d=0,a.mode=4;case 4:for(;d<16;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&(B[0]=255&h,B[1]=h>>>8&255,a.check=le(a.check,B,2,0)),h=0,d=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&(B[0]=255&h,B[1]=h>>>8&255,a.check=le(a.check,B,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&((u=a.length)>o&&(u=o),u&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),se.arraySet(a.head.extra,n,r,u,y)),512&a.flags&&(a.check=le(a.check,n,u,r)),o-=u,r+=u,a.length-=u),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===o)break e;u=0;do{y=n[r+u++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&u<o);if(512&a.flags&&(a.check=le(a.check,n,u,r)),o-=u,r+=u,y)break e}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===o)break e;u=0;do{y=n[r+u++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&u<o);if(512&a.flags&&(a.check=le(a.check,n,u,r)),o-=u,r+=u,y)break e}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;d<16;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(h!==(65535&a.check)){e.msg="header crc mismatch",a.mode=ue;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=fe;break;case 10:for(;d<32;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}e.adler=a.check=zswap32(h),h=0,d=0,a.mode=11;case 11:if(0===a.havedict)return e.next_out=s,e.avail_out=l,e.next_in=r,e.avail_in=o,a.hold=h,a.bits=d,2;e.adler=a.check=1,a.mode=fe;case fe:if(5===t||6===t)break e;case 13:if(a.last){h>>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}switch(a.last=1&h,d-=1,3&(h>>>=1)){case 0:a.mode=14;break;case 1:if(fixedtables(a),a.mode=20,6===t){h>>>=2,d-=2;break e}break;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=ue}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){e.msg="invalid stored block lengths",a.mode=ue;break}if(a.length=65535&h,h=0,d=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(u=a.length){if(u>o&&(u=o),u>l&&(u=l),0===u)break e;se.arraySet(i,n,r,u,s),o-=u,r+=u,l-=u,s+=u,a.length-=u;break}a.mode=fe;break;case 17:for(;d<14;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){e.msg="too many length or distance symbols",a.mode=ue;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}a.lens[I[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[I[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,x={bits:a.lenbits},z=de(0,a.lens,0,19,a.lencode,0,a.work,x),a.lenbits=x.bits,z){e.msg="invalid code lengths set",a.mode=ue;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;b=(D=a.lencode[h&(1<<a.lenbits)-1])>>>16&255,w=65535&D,!((m=D>>>24)<=d);){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(w<16)h>>>=m,d-=m,a.lens[a.have++]=w;else{if(16===w){for(S=m+2;d<S;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){e.msg="invalid bit length repeat",a.mode=ue;break}y=a.lens[a.have-1],u=3+(3&h),h>>>=2,d-=2}else if(17===w){for(S=m+3;d<S;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}d-=m,y=0,u=3+(7&(h>>>=m)),h>>>=3,d-=3}else{for(S=m+7;d<S;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}d-=m,y=0,u=11+(127&(h>>>=m)),h>>>=7,d-=7}if(a.have+u>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=ue;break}for(;u--;)a.lens[a.have++]=y}}if(a.mode===ue)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=ue;break}if(a.lenbits=9,x={bits:a.lenbits},z=de(1,a.lens,0,a.nlen,a.lencode,0,a.work,x),a.lenbits=x.bits,z){e.msg="invalid literal/lengths set",a.mode=ue;break}if(a.distbits=6,a.distcode=a.distdyn,x={bits:a.distbits},z=de(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,x),a.distbits=x.bits,z){e.msg="invalid distances set",a.mode=ue;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=r,e.avail_in=o,a.hold=h,a.bits=d,he(e,f),s=e.next_out,i=e.output,l=e.avail_out,r=e.next_in,n=e.input,o=e.avail_in,h=a.hold,d=a.bits,a.mode===fe&&(a.back=-1);break}for(a.back=0;b=(D=a.lencode[h&(1<<a.lenbits)-1])>>>16&255,w=65535&D,!((m=D>>>24)<=d);){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(b&&!(240&b)){for(p=m,k=b,v=w;b=(D=a.lencode[v+((h&(1<<p+k)-1)>>p)])>>>16&255,w=65535&D,!(p+(m=D>>>24)<=d);){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=w,0===b){a.mode=26;break}if(32&b){a.back=-1,a.mode=fe;break}if(64&b){e.msg="invalid literal/length code",a.mode=ue;break}a.extra=15&b,a.mode=22;case 22:if(a.extra){for(S=a.extra;d<S;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;b=(D=a.distcode[h&(1<<a.distbits)-1])>>>16&255,w=65535&D,!((m=D>>>24)<=d);){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(!(240&b)){for(p=m,k=b,v=w;b=(D=a.distcode[v+((h&(1<<p+k)-1)>>p)])>>>16&255,w=65535&D,!(p+(m=D>>>24)<=d);){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){e.msg="invalid distance code",a.mode=ue;break}a.offset=w,a.extra=15&b,a.mode=24;case 24:if(a.extra){for(S=a.extra;d<S;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=ue;break}a.mode=25;case 25:if(0===l)break e;if(u=f-l,a.offset>u){if((u=a.offset-u)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=ue;break}u>a.wnext?(u-=a.wnext,c=a.wsize-u):c=a.wnext-u,u>a.length&&(u=a.length),g=a.window}else g=i,c=s-a.offset,u=a.length;u>l&&(u=l),l-=u,a.length-=u;do{i[s++]=g[c++]}while(--u);0===a.length&&(a.mode=21);break;case 26:if(0===l)break e;i[s++]=a.length,l--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===o)break e;o--,h|=n[r++]<<d,d+=8}if(f-=l,e.total_out+=f,a.total+=f,f&&(e.adler=a.check=a.flags?le(a.check,i,f,s-f):oe(a.check,i,f,s-f)),f=l,(a.flags?h:zswap32(h))!==a.check){e.msg="incorrect data check",a.mode=ue;break}h=0,d=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break e;o--,h+=n[r++]<<d,d+=8}if(h!==(4294967295&a.total)){e.msg="incorrect length check",a.mode=ue;break}h=0,d=0}a.mode=29;case 29:z=1;break e;case ue:z=-3;break e;case 31:return-4;default:return _e}return e.next_out=s,e.avail_out=l,e.next_in=r,e.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==e.avail_out&&a.mode<ue&&(a.mode<27||4!==t))&&updatewindow(e,e.output,e.next_out,f-e.avail_out),_-=e.avail_in,f-=e.avail_out,e.total_in+=_,e.total_out+=f,a.total+=f,a.wrap&&f&&(e.adler=a.check=a.flags?le(a.check,i,f,e.next_out-f):oe(a.check,i,f,e.next_out-f)),e.data_type=a.bits+(a.last?64:0)+(a.mode===fe?128:0)+(20===a.mode||15===a.mode?256:0),(0===_&&0===f||4===t)&&0===z&&(z=-5),z},V.inflateEnd=function inflateEnd(e){if(!e||!e.state)return _e;var t=e.state;return t.window&&(t.window=null),e.state=null,0},V.inflateGetHeader=function inflateGetHeader(e,t){var a;return e&&e.state&&2&(a=e.state).wrap?(a.head=t,t.done=!1,0):_e},V.inflateSetDictionary=function inflateSetDictionary(e,t){var a,n=t.length;return e&&e.state?0!==(a=e.state).wrap&&11!==a.mode?_e:11===a.mode&&oe(1,t,n,0)!==a.check?-3:updatewindow(e,t,n,n)?(a.mode=31,-4):(a.havedict=1,0):_e},V.inflateInfo="pako inflate (from Nodeca project)";var be={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};var we=V,pe=e,ke=U,ve=be,ye=B,ze=P,xe=function GZheader$1(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1},Se=Object.prototype.toString;function Inflate(e){if(!(this instanceof Inflate))return new Inflate(e);this.options=pe.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ze,this.strm.avail_out=0;var a=we.inflateInit2(this.strm,t.windowBits);if(a!==ve.Z_OK)throw new Error(ye[a]);this.header=new xe,we.inflateGetHeader(this.strm,this.header)}function inflate$1(e,t){var a=new Inflate(t);if(a.push(e,!0),a.err)throw a.msg;return a.result}Inflate.prototype.push=function(e,t){var a,n,i,r,s,o,l=this.strm,h=this.options.chunkSize,d=this.options.dictionary,_=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?ve.Z_FINISH:ve.Z_NO_FLUSH,"string"==typeof e?l.input=ke.binstring2buf(e):"[object ArrayBuffer]"===Se.call(e)?l.input=new Uint8Array(e):l.input=e,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new pe.Buf8(h),l.next_out=0,l.avail_out=h),(a=we.inflate(l,ve.Z_NO_FLUSH))===ve.Z_NEED_DICT&&d&&(o="string"==typeof d?ke.string2buf(d):"[object ArrayBuffer]"===Se.call(d)?new Uint8Array(d):d,a=we.inflateSetDictionary(this.strm,o)),a===ve.Z_BUF_ERROR&&!0===_&&(a=ve.Z_OK,_=!1),a!==ve.Z_STREAM_END&&a!==ve.Z_OK)return this.onEnd(a),this.ended=!0,!1;l.next_out&&(0!==l.avail_out&&a!==ve.Z_STREAM_END&&(0!==l.avail_in||n!==ve.Z_FINISH&&n!==ve.Z_SYNC_FLUSH)||("string"===this.options.to?(i=ke.utf8border(l.output,l.next_out),r=l.next_out-i,s=ke.buf2string(l.output,i),l.next_out=r,l.avail_out=h-r,r&&pe.arraySet(l.output,l.output,i,r,0),this.onData(s)):this.onData(pe.shrinkBuf(l.output,l.next_out)))),0===l.avail_in&&0===l.avail_out&&(_=!0)}while((l.avail_in>0||0===l.avail_out)&&a!==ve.Z_STREAM_END);return a===ve.Z_STREAM_END&&(n=ve.Z_FINISH),n===ve.Z_FINISH?(a=we.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===ve.Z_OK):n!==ve.Z_SYNC_FLUSH||(this.onEnd(ve.Z_OK),l.avail_out=0,!0)},Inflate.prototype.onData=function(e){this.chunks.push(e)},Inflate.prototype.onEnd=function(e){e===ve.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=pe.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},Q.Inflate=Inflate,Q.inflate=inflate$1,Q.inflateRaw=function inflateRaw(e,t){return(t=t||{}).raw=!0,inflate$1(e,t)},Q.ungzip=inflate$1;var De={};(0,e.assign)(De,t,Q,be);var Be=De;function post_utils(e={}){let{user:t,hash:a,bus:n,goto:i}=e;function getStorage(e,t){let a;return window?.localStorage&&(a=window.localStorage.getItem(e)),a?JSON.parse(a):t}function setStorage(e,t){window?.localStorage&&(null==t||""===t?window.localStorage.removeItem(e):window.localStorage.setItem(e,JSON.stringify(t)))}const r=new class Post{constructor(){this.baseurl="/",this.user={},this._fingerprint=""}get oggi(){return(new Date).toInt()}get oggif(){return(new Date).toFloat()}get fingerprint(){return this._fingerprint||(this._fingerprint=getStorage("__fingerprint",a(`${(new Date).toString()}-${Math.random()}`)),setStorage("__fingerprint",this._fingerprint)),this._fingerprint}isauth(e){if(null==e||""===e)return!0;if("string"!=typeof e)return!!e;let a=!1;return t.subscribe((t=>{t.level>=8?a=!0:t.abruoli&&(a=t.abruoli.split(";").includes(e.trim().toLowerCase()))})),a}fullurl(e){return e&&!/http[s]*:\/\//.test(e)&&this.baseurl?this.baseurl+e:e}fullget(e,a,n){e=this.fullurl(e),a||(a={}),n||t.subscribe((e=>{e?.token&&(a._uid=e.token)}));let i=[];for(let e in a)i.push(`${e}=${encodeURIComponent(a[e])}`);return i.length&&(e=`${e}?${i.join("&")}`),e}fetch(e,a,n,i=!1){a||(a={}),!/http[s]*:\/\//.test(e)&&this.baseurl&&(e=this.baseurl+e);let r,s={};return new Promise(((i,o)=>{if(t.subscribe((e=>{e?.token&&(s.Authorization=`Bearer ${e?.token}`)})),s["cp-fp"]=this.fingerprint,n&&n.length>0){r=new FormData;for(const[e,t]of Object.entries(a))r.append(e,t);n&&n.length&&Array.from(Array(n.length).keys()).map((e=>{r.append(n[e].name,n[e],n[e].name)}))}else{const e=JSON.stringify(a);if(e.length>1e3&&this.canzip){s["Content-Type"]="application/json",s["Content-Encoding"]="gzip";const t=Be.gzip(e);r=new Blob([t],{type:"application/gzip"})}else s["Content-Type"]="application/json; charset=utf-8",r=e}fetch(e,{method:"POST",headers:s,mode:"cors",cache:"no-cache",credentials:"omit",redirect:"follow",referrer:"no-referrer",body:r}).then((e=>e.json())).then((e=>{e.err&&o(e.err),i(e.data?e.data:e)})).catch((e=>{o(e.message)}))}))}post(e,t,a,n=!1){return new Promise(((i,s)=>{r.fetch(e,t,a,n).then((e=>{i(e)})).catch((e=>{s(e)}))}))}},s=r,o=r.isauth;return{post:s,PP:async(e,a,s,o)=>{try{return await r.fetch(e,a,s,o)}catch(l){if("api/token"==e)return t.set({}),void i("/");if("string"!=typeof l||!l.includes("01-"))return void n.errore(l?.message?l.message:l);try{let e;t.subscribe((t=>{t?.rtk&&(e=t.rtk)}));const a=await r.fetch("api/token",{rtk:e},null,!0);a.user?t.set(a.user):(t.set({}),i("/"))}catch(e){t.set({}),i("/")}try{return await r.fetch(e,a,s,o)}catch(e){return void n.errore(l?.message?l.message:l)}}},P:r,isauth:o,userguest:{id:99999,name:"guest",email:"guest@croswil.com",level:0,ruoli:"",mod:"",extra:"",annulla:0,token:"guest",rtk:"guest"},round2:function round2(e){return Math.round(100*(e||0))/100},parsetree:function parsetree(e,t){if(e)for(let a of e)t&&t(a),a.data&&parsetree(a.data,t)},getStorage:getStorage,setStorage:setStorage,readfile:function readfile(e){return new Promise(((t,a)=>{let n=new FileReader;n.readAsArrayBuffer(e),n.onerror=e=>{a(e)},n.onload=e=>{let a=e.target.result;t(a)}}))},downloadfile:function downloadfile(e){try{const t=URL.createObjectURL(e),a=document.createElement("a");a.href=t,a.download=e.name,a.click(),URL.revokeObjectURL(t)}catch(t){console.log(`errore: ${t.message}=>${e?.name}`)}}}}let Ie=1e3;function myuuid(){return Ie++,Ie}function getdim(e,t,a,n,i,r,s,o,l){let h,d=[];function getsingledim(e,t,a){return e||(e=t),e=Math.round(10*(e||0))/10,t?"X"==(a=(a||"_").trim().toLowerCase())&&e!=t?e+"*":"M"==a?e+"M":e:e}return h=getsingledim(e,n,s),h&&d.push(h),h=getsingledim(t,i,o),h&&d.push(h),h=getsingledim(a,r,l),h&&d.push(h),(""+s+o+l).replace(/[_XM]/gi,""),d.join("x")}function formatDate(e){const t=new Date(e),a=t.getDate().toString().padStart(2,"0"),n=(t.getMonth()+1).toString().padStart(2,"0");return`${t.getFullYear()}-${n}-${a}`}function toDateStr(e){if(!e)return"";"number"==typeof e&&(e=e.toDate());let t=e.getDate(),a=e.getMonth()+1,n=e.getFullYear(),i=e.getHours(),r=e.getMinutes();return t=t<10?"0"+t:t,a=a<10?"0"+a:a,i=i<10?"0"+i:i,r=r<10?"0"+r:r,`${t}/${a}/${n} ${i}:${r}`}const Ae=new class Bus{constructor(){this.buslist={}}on(e,t){return this.buslist[e]||(this.buslist[e]=[]),this.buslist[e].push(t),this.buslist[e].length-1}emit(e,...t){this.buslist[e]&&this.buslist[e].forEach((e=>e(...t)))}off(e,t){this.buslist[e]&&("number"==typeof t?t>=0&&t<this.buslist[e].length&&this.buslist[e].splice(t,1):this.buslist[e]=this.buslist[e].filter((e=>e!==t)))}$on(e,t){this.on(e,t)}$off(e,t){this.off(e,t)}$emit(e,...t){this.emit(e,...t)}};function listfromstring(e){if(Array.isArray(e))return e;let t=[],a={};if(e){let n=e.split(/[\n;,]/);for(let e of n){let n,i,r=e.search(/[:=#]/);r<0?n=i=e.trim():(n=e.slice(0,r),i=e.slice(r+1)),n=n.toLowerCase(),n&&!a[n]&&(a[n]=1,t.push({cod:n,des:i}))}}return t}Ae.messaggio=e=>Ae.emit("messaggio",e),Ae.warning=e=>Ae.emit("warning",e),Ae.errore=e=>Ae.emit("error",e),Ae.salvato=e=>Ae.emit("messaggio","dati memorizzati!"),Ae.wait=e=>Ae.emit("wait",e);const tonum=(e,t=-1)=>{if(!e)return 0;if("number"==typeof e)return e||0;let a=0;if("string"==typeof e){let t=(e=e.replaceAll(",",".")).match(/^-?[0-9.]+$/g);t&&t.length>0?a=Number(t[0]):/^\s*-?\s*[0-9]+(\.[0-9]+)?\s*$/gi.test(e)?a=parseFloat(e):/[\s\d()-+/*^.]+/gi.test(e)&&(a=0)}if(t>=0){const e=Math.pow(10,t);a=Math.round(a*e)/e}return a||0},toEuro=(e,t,a="")=>0==e?t||"":new Intl.NumberFormat("it-IT",{style:"currency",currency:"EUR"}).format(tonum(e))+a;let Ee={};const strDate=(e,t)=>{Date.prototype.getWeek||(Date.prototype.getWeek=function(){let e=new Date(this.getFullYear(),0,1);return Math.ceil(((this-e)/864e5+e.getDay()+1)/7)});let a="it";if("object"!=typeof e){if(!(e=parseFloat(e||0)))return"";e=e.toDate()}if("week"==t)return"w"+e.getWeek();if(!Ee[t])switch(t){case"giorni":{let t=e.toInt(),n=t.diffgiorni((new Date).toInt());if(0==n)return"Oggi";if(-1==n)return"Domani";if(1==n)return"Ieri";if(Math.abs(n)<6){return new Intl.DateTimeFormat(a,{weekday:"long"}).format(e).trim()}return strDate(t,"ggmmm")}case"date":case"shortdate":Ee[t]=new Intl.DateTimeFormat(a,{weekday:"short",day:"numeric",month:"short",year:"numeric"});break;case"ggmmaa":case"ggmmyy":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"2-digit",year:"2-digit"});break;case"datetime":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"2-digit",year:"numeric",hour12:!1,hour:"numeric",minute:"2-digit"});break;case"yyyy":case"anno":Ee[t]=new Intl.DateTimeFormat(a,{year:"numeric"});break;case"ggmmaaaa":case"ggmmyyyy":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"2-digit",year:"numeric"});break;case"ggmm":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"2-digit"});break;case"giorno":case"gg":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit"});break;case"ggmmmaaaa":case"ggmmmyyyy":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"short",year:"numeric"});break;case"ggmmmaa":case"ggmmmyy":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"short",year:"2-digit"});break;case"ggmmm":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"short"});break;case"ggmmmm":Ee[t]=new Intl.DateTimeFormat(a,{day:"2-digit",month:"long"});break;case"mmmyy":case"mmmaa":case"mmmyyyy":case"mmmaaaa":Ee[t]=new Intl.DateTimeFormat(a,{month:"short",year:"numeric"});break;case"weekday":Ee[t]=new Intl.DateTimeFormat(a,{weekday:"long"});break;case"hhmm":Ee[t]=new Intl.DateTimeFormat(a,{hour12:!1,hour:"numeric",minute:"2-digit"});break;case"hhmmss":Ee[t]=new Intl.DateTimeFormat(a,{hour12:!1,hour:"numeric",minute:"2-digit",second:"2-digit"});break;case"mese":Ee[t]=new Intl.DateTimeFormat(a,{month:"long"});break;default:Ee[t="."]||(Ee[t]=new Intl.DateTimeFormat(a,{weekday:"long",day:"numeric",month:"long",year:"numeric",hour12:!1,hour:"numeric",minute:"2-digit"}))}return Ee[t].format(e).trim()};export{Ae as bus,formatDate,getdim,listfromstring,myuuid,post_utils,strDate,toDateStr,toEuro,tonum};
1
+ function post_utils(e={}){let{pako:t,user:r,hash:i,bus:n,goto:a}=e;function getStorage(e,t){let r;return window?.localStorage&&(r=window.localStorage.getItem(e)),r?JSON.parse(r):t}function setStorage(e,t){window?.localStorage&&(null==t||""===t?window.localStorage.removeItem(e):window.localStorage.setItem(e,JSON.stringify(t)))}const o=new class Post{constructor(){this.baseurl="/",this.user={},this._fingerprint=""}get oggi(){return(new Date).toInt()}get oggif(){return(new Date).toFloat()}get fingerprint(){return this._fingerprint||(this._fingerprint=getStorage("__fingerprint",i(`${(new Date).toString()}-${Math.random()}`)),setStorage("__fingerprint",this._fingerprint)),this._fingerprint}isauth(e){if(null==e||""===e)return!0;if("string"!=typeof e)return!!e;let t=!1;return r.subscribe((r=>{r.level>=8?t=!0:r.abruoli&&(t=r.abruoli.split(";").includes(e.trim().toLowerCase()))})),t}fullurl(e){return e&&!/http[s]*:\/\//.test(e)&&this.baseurl?this.baseurl+e:e}fullget(e,t,i){e=this.fullurl(e),t||(t={}),i||r.subscribe((e=>{e?.token&&(t._uid=e.token)}));let n=[];for(let e in t)n.push(`${e}=${encodeURIComponent(t[e])}`);return n.length&&(e=`${e}?${n.join("&")}`),e}fetch(e,i,n,a=!1){i||(i={}),!/http[s]*:\/\//.test(e)&&this.baseurl&&(e=this.baseurl+e);let o,s={};return new Promise(((a,m)=>{if(r.subscribe((e=>{e?.token&&(s.Authorization=`Bearer ${e?.token}`)})),s["cp-fp"]=this.fingerprint,n&&n.length>0){o=new FormData;for(const[e,t]of Object.entries(i))o.append(e,t);n&&n.length&&Array.from(Array(n.length).keys()).map((e=>{o.append(n[e].name,n[e],n[e].name)}))}else{const e=JSON.stringify(i);if(e.length>1e3&&this.canzip&&t){s["Content-Type"]="application/json",s["Content-Encoding"]="gzip";const r=t.gzip(e);o=new Blob([r],{type:"application/gzip"})}else s["Content-Type"]="application/json; charset=utf-8",o=e}fetch(e,{method:"POST",headers:s,mode:"cors",cache:"no-cache",credentials:"omit",redirect:"follow",referrer:"no-referrer",body:o}).then((e=>e.json())).then((e=>{e.err&&m(e.err),a(e.data?e.data:e)})).catch((e=>{m(e.message)}))}))}post(e,t,r,i=!1){return new Promise(((n,a)=>{o.fetch(e,t,r,i).then((e=>{n(e)})).catch((e=>{a(e)}))}))}},s=o,m=o.isauth;return{post:s,PP:async(e,t,i,s)=>{try{return await o.fetch(e,t,i,s)}catch(m){if("api/token"==e)return r.set({}),void a("/");if("string"!=typeof m||!m.includes("01-"))return void n.errore(m?.message?m.message:m);try{let e;r.subscribe((t=>{t?.rtk&&(e=t.rtk)}));const t=await o.fetch("api/token",{rtk:e},null,!0);t.user?r.set(t.user):(r.set({}),a("/"))}catch(e){r.set({}),a("/")}try{return await o.fetch(e,t,i,s)}catch(e){return void n.errore(m?.message?m.message:m)}}},P:o,isauth:m,userguest:{id:99999,name:"guest",email:"guest@croswil.com",level:0,ruoli:"",mod:"",extra:"",annulla:0,token:"guest",rtk:"guest"},round2:function round2(e){return Math.round(100*(e||0))/100},parsetree:function parsetree(e,t){if(e)for(let r of e)t&&t(r),r.data&&parsetree(r.data,t)},getStorage:getStorage,setStorage:setStorage,readfile:function readfile(e){return new Promise(((t,r)=>{let i=new FileReader;i.readAsArrayBuffer(e),i.onerror=e=>{r(e)},i.onload=e=>{let r=e.target.result;t(r)}}))},downloadfile:function downloadfile(e){try{const t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download=e.name,r.click(),URL.revokeObjectURL(t)}catch(t){console.log(`errore: ${t.message}=>${e?.name}`)}}}}let e=1e3;function myuuid(){return e++,e}function getdim(e,t,r,i,n,a,o,s,m){let u,l=[];function getsingledim(e,t,r){return e||(e=t),e=Math.round(10*(e||0))/10,t?"X"==(r=(r||"_").trim().toLowerCase())&&e!=t?e+"*":"M"==r?e+"M":e:e}return u=getsingledim(e,i,o),u&&l.push(u),u=getsingledim(t,n,s),u&&l.push(u),u=getsingledim(r,a,m),u&&l.push(u),(""+o+s+m).replace(/[_XM]/gi,""),l.join("x")}function formatDate(e){const t=new Date(e),r=t.getDate().toString().padStart(2,"0"),i=(t.getMonth()+1).toString().padStart(2,"0");return`${t.getFullYear()}-${i}-${r}`}function toDateStr(e){if(!e)return"";"number"==typeof e&&(e=e.toDate());let t=e.getDate(),r=e.getMonth()+1,i=e.getFullYear(),n=e.getHours(),a=e.getMinutes();return t=t<10?"0"+t:t,r=r<10?"0"+r:r,n=n<10?"0"+n:n,a=a<10?"0"+a:a,`${t}/${r}/${i} ${n}:${a}`}const t=new class Bus{constructor(){this.buslist={}}on(e,t){return this.buslist[e]||(this.buslist[e]=[]),this.buslist[e].push(t),this.buslist[e].length-1}emit(e,...t){this.buslist[e]&&this.buslist[e].forEach((e=>e(...t)))}off(e,t){this.buslist[e]&&("number"==typeof t?t>=0&&t<this.buslist[e].length&&this.buslist[e].splice(t,1):this.buslist[e]=this.buslist[e].filter((e=>e!==t)))}$on(e,t){this.on(e,t)}$off(e,t){this.off(e,t)}$emit(e,...t){this.emit(e,...t)}};function listfromstring(e){if(Array.isArray(e))return e;let t=[],r={};if(e){let i=e.split(/[\n;,]/);for(let e of i){let i,n,a=e.search(/[:=#]/);a<0?i=n=e.trim():(i=e.slice(0,a),n=e.slice(a+1)),i=i.toLowerCase(),i&&!r[i]&&(r[i]=1,t.push({cod:i,des:n}))}}return t}t.messaggio=e=>t.emit("messaggio",e),t.warning=e=>t.emit("warning",e),t.errore=e=>t.emit("error",e),t.salvato=e=>t.emit("messaggio","dati memorizzati!"),t.wait=e=>t.emit("wait",e);const tonum=(e,t=-1)=>{if(!e)return 0;if("number"==typeof e)return e||0;let r=0;if("string"==typeof e){let t=(e=e.replaceAll(",",".")).match(/^-?[0-9.]+$/g);t&&t.length>0?r=Number(t[0]):/^\s*-?\s*[0-9]+(\.[0-9]+)?\s*$/gi.test(e)?r=parseFloat(e):/[\s\d()-+/*^.]+/gi.test(e)&&(r=0)}if(t>=0){const e=Math.pow(10,t);r=Math.round(r*e)/e}return r||0},toEuro=(e,t,r="")=>0==e?t||"":new Intl.NumberFormat("it-IT",{style:"currency",currency:"EUR"}).format(tonum(e))+r;let r={};const strDate=(e,t)=>{Date.prototype.getWeek||(Date.prototype.getWeek=function(){let e=new Date(this.getFullYear(),0,1);return Math.ceil(((this-e)/864e5+e.getDay()+1)/7)});let i="it";if("object"!=typeof e){if(!(e=parseFloat(e||0)))return"";e=e.toDate()}if("week"==t)return"w"+e.getWeek();if(!r[t])switch(t){case"giorni":{let t=e.toInt(),r=t.diffgiorni((new Date).toInt());if(0==r)return"Oggi";if(-1==r)return"Domani";if(1==r)return"Ieri";if(Math.abs(r)<6){return new Intl.DateTimeFormat(i,{weekday:"long"}).format(e).trim()}return strDate(t,"ggmmm")}case"date":case"shortdate":r[t]=new Intl.DateTimeFormat(i,{weekday:"short",day:"numeric",month:"short",year:"numeric"});break;case"ggmmaa":case"ggmmyy":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"2-digit",year:"2-digit"});break;case"datetime":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"2-digit",year:"numeric",hour12:!1,hour:"numeric",minute:"2-digit"});break;case"yyyy":case"anno":r[t]=new Intl.DateTimeFormat(i,{year:"numeric"});break;case"ggmmaaaa":case"ggmmyyyy":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"2-digit",year:"numeric"});break;case"ggmm":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"2-digit"});break;case"giorno":case"gg":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit"});break;case"ggmmmaaaa":case"ggmmmyyyy":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"short",year:"numeric"});break;case"ggmmmaa":case"ggmmmyy":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"short",year:"2-digit"});break;case"ggmmm":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"short"});break;case"ggmmmm":r[t]=new Intl.DateTimeFormat(i,{day:"2-digit",month:"long"});break;case"mmmyy":case"mmmaa":case"mmmyyyy":case"mmmaaaa":r[t]=new Intl.DateTimeFormat(i,{month:"short",year:"numeric"});break;case"weekday":r[t]=new Intl.DateTimeFormat(i,{weekday:"long"});break;case"hhmm":r[t]=new Intl.DateTimeFormat(i,{hour12:!1,hour:"numeric",minute:"2-digit"});break;case"hhmmss":r[t]=new Intl.DateTimeFormat(i,{hour12:!1,hour:"numeric",minute:"2-digit",second:"2-digit"});break;case"mese":r[t]=new Intl.DateTimeFormat(i,{month:"long"});break;default:r[t="."]||(r[t]=new Intl.DateTimeFormat(i,{weekday:"long",day:"numeric",month:"long",year:"numeric",hour12:!1,hour:"numeric",minute:"2-digit"}))}return r[t].format(e).trim()};export{t as bus,formatDate,getdim,listfromstring,myuuid,post_utils,strDate,toDateStr,toEuro,tonum};
package/bin/markuno.js CHANGED
@@ -1 +1 @@
1
- function testsync(t,e){return t+e}const tk=()=>(new Date).valueOf();function seedarray(t,e){if(t&&t.length){let a=[];for(let e=0;e<t.length;e++){let s=t[e];if(s.p)for(let t=0;t<s.p;t++)a.push(e);else a.push(e)}return t[a[seeder(a.length,e)]]}}function seeder(t,e="seed42"){const a=function mulberry32(t){return function(){t=(t|=0)+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}(function xmur3(t){let e=1779033703^t.length;for(let a=0;a<t.length;a++)e=Math.imul(e^t.charCodeAt(a),3432918353),e=e<<13|e>>>19;return function(){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^=e>>>16)>>>0}}(String(e))());return Math.floor(a()*t)}function isJsonStr(t){if("string"!=typeof t)return!1;const e=t.trim();return e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")}const isObject=t=>!(!t||!Array.isArray(t)&&"object"!=typeof t);function quote(t){if((t=(t||"").trim()).length>1){if(t.startsWith('"')&&t.endsWith('"'))return t;if(t.startsWith("(")&&t.endsWith(")"))return t}return`"${t}"`}function noquote(t){return(t=t.trim()).startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")")?t.slice(1,-1):t}function hash(t){let e="";if("string"==typeof t||"number"==typeof t)e=t+"";else if("object"==typeof t&&t){const a=Object.keys(t).sort(),s="\0";e=a.map((e=>`${e}${s}${String(t[e])}`)).join(s)}let a=2166136261,s=2218511855;for(let t=0;t<e.length;t++){const i=e.charCodeAt(t);a^=i,a+=a<<5^2779096485,s^=a,s=((s<<3)+i^2134516169)>>>0}return a>>>=0,a.toString(16)+s.toString(16)}function geterrdes(t){if(t&&"object"==typeof t){let e=t.stack?.toString().replace(/^.*?node_modules.*$/gim,"")||t.message||"";e=e.replaceAll("/","_").replaceAll(".js","").replaceAll("\n\n","\n").replace(/;\s+/gi,"\n"),t=e}return(t=t.replace(/sqlite/gi,"SQL ")).replaceAll(";",",").trim()}let t,e,a,s,i,r;const logga=(...t)=>{r?r(t):console.log(...t)};function setcallbacks(n,o,c,l,u,h){e=n,t=o,a=c,s=l,i=u,r=h}const xdt=()=>(new Date).valueOf();function clean(t,e=!1){return e?(t||"").trim().toLowerCase():(t||"").trim()}function getcouple(t,e="=",a=!0){const s=(t=t||"").indexOf(e);return s>=0?{v:clean(t.substring(0,s),a),o:t.substring(s+e.length).trim(),fl:!0}:{v:clean(t,a),o:"",fl:!1}}function checkmu(t,e){if((t=(t||"").trim()).indexOf("/")>0){const a=t.split("/");e=a[0]||"",t=a[1]||""}if(!e)throw new Error("manca il catalogo per "+t);return{name:t,cat:e=checkname(e)}}function checkname(t,e=!1){if(t=(t||"").trim(),e&&!t)return"";if(!t||!/^[a-zA-Z_][a-z0-9A-Z_+-]*$/gim.test(t))throw new Error(`nome non valido: "${t}" \n deve contenere solo lettere, _, -, e numeri`);return t.toLowerCase()}function getcolonne(t,e=!1){t=String(t||"");const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(!/["({[]/.test(t))return t.split(/[,;]/).map((t=>t.trim()));const s=[];let i="",r=0,n=!1;for(let e=0;e<t.length;e++){const a=t[e];if(0===r&&'"'===a&&(0!==e&&"\\"===t[e-1]||(n=!n)),n||("("===a||"["===a||"{"===a?r++:")"!==a&&"]"!==a&&"}"!==a||(r=Math.max(0,r-1))),","!==a&&";"!==a||0!==r||n)i+=a;else{const t=i.trim();s.push(t),i=""}}const o=i.trim();return o&&s.push(o),s.map((t=>(t=t.trim(),!e&&(t.startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")"))?t.slice(1,-1):t)))}const parsevar=(t,e,a,s,i=!1)=>{const r=["[","(","{"],n=["]",")","}"];s||(s="["==a?"]":"("==a?")":"}");const o=r.includes(a);let c=1,l=0;const u=[];for(let h=e;h<t.length;h++)if(o&&r.includes(t[h])||t[h]==a)c++;else if(o&&n.includes(t[h])||t[h]==s){if(c--,0==c&&t[h]==s)return u[l]=t.substring(e,h),{i:h,res:u}}else if(":"==t[h])1==c&&(u[l]=t.substring(e,h),e=h+1,l++);else if("\n"==t[h]&&i)return{i:h,res:u};return{i:-1,res:t.substring(e)}};function setOggetto(t,e){"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((a=>{Object.hasOwn(t,a)&&"function"!=typeof t[a]&&(t[a]=e[a])}))}function getOggetto(t,e=[]){if(Array.isArray(t))return t.map((t=>getOggetto(t,e)));if(t&&"object"==typeof t){const a={};for(const[s,i]of Object.entries(t))"function"==typeof i||e&&e.includes(s)||(a[s]=getOggetto(i,e));return a}return t}function fromjson(t,e){if(Array.isArray(t))return t;if("string"!=typeof t)return t;if(""==t)return e||{};try{return JSON.parse(t)}catch(a){return logga(`Errore parsing JSON: ${a}\n${t}`),e||{}}}const n=new class Errori{constructor(){this.azzera()}azzera(){this.err=[]}add(t,e){this.err.push({msg:t,row:e})}get(){return this.err}get length(){return this.err.length}toString(){const t=[];for(const e of this.err){const a="object"==typeof e.msg?JSON.stringify(e.msg):e.msg||"";t.push(`${e.row?e.row+":":""}${a}`)}return t.join("\n")}},round=(t,e=-1)=>{const a="string"==typeof t?parseFloat(t)||0:t;if(e<0)return Math.round(a||0);const s=Math.pow(10,e);return Math.round(a*s)/s||0};function getheaddims(t){let e;try{e="object"==typeof t&&t?t:JSON.parse(t||"{}")}catch(t){e={}}return e||(e={}),e.l||(e.l={visible:1,val:1e3,min:0,max:1e4}),e.a||(e.a={visible:1,val:1e3,min:0,max:1e4}),e.p||(e.p={visible:1,val:1e3,min:0,max:1e4}),e}function sortrows(t){const e=Object.keys(t).sort(),a={};for(let s=0;s<e.length;s++){const i=e[s],r=t[i];s+1<e.length&&e[s+1].startsWith(i+".")?r.hasliv=1:delete r.hasliv,a[i]=r}return a}const o=/(?<!\w)\(/g,c=/^-?[0-9.]+$/,l=/^(\w+)(!)?\[(.*)?\]$/,u=/[0-9.]/,h=/[+\-*/^%]/,f=/[a-zA-Z]/i;function valutaparentesi(t){for(t=(t+"").trim();;){const e=o.exec(t);if(!e)break;{const{i:a,res:s}=parsevar(t,e.index+1,"(",")");if(a<=0)break;t=t.substring(0,e.index)+valutaparentesi(s[0])+(a>=0?t.substring(a+1):"")}}return function operatoricomparazione(t){let e,a;const s={"||":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"|":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"&&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"<<=":()=>clean(e)<=clean(a),">>=":()=>clean(e)>=clean(a),"===":()=>clean(e)==clean(a),"==":()=>clean(e)==clean(a),"!!":()=>clean(e)!=clean(a),"<<":()=>clean(e)<clean(a),">>":()=>clean(e)>clean(a),"<=":()=>muCalcbase(e)<=muCalcbase(a),">=":()=>muCalcbase(e)>=muCalcbase(a),"<":()=>muCalcbase(e)<muCalcbase(a),">":()=>muCalcbase(e)>muCalcbase(a),"=":()=>muCalcbase(e)==muCalcbase(a),"!":()=>muCalcbase(e)!=muCalcbase(a)};let i=-1,r="";for(const e in s)if(i=t.indexOf(e),i>=0){r=e;break}return-1!==i?(e=t.slice(0,i),a=t.slice(i+r.length),s[r]&&s[r]()?1:0):muCalcbase(t)}(t=function valutainsiemi(t){if(t.includes("[")){function resinisiemi(t){const e=t[1],a=!!t[2],s=getcolonne(t[3]);for(const t of s)if(t==e)return a?"0":"1";return a?"1":"0"}for(;;){const e=l.exec(t);if(!e)break;{const a=resinisiemi(e);t=t.substring(0,e.index)+a+t.substring(e.index+e[0].length)}}}return t}(t))}const d={sqrt:t=>Math.sqrt(t),sqr:t=>Math.sqrt(t),pow:(t,e)=>Math.pow(t,e),int:t=>Math.floor(t),floor:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,round:(t,e=0)=>Math.round((Number.parseFloat(t)||0)*10**e)/10**e,dec:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,abs:t=>Math.abs(t),sin:t=>Math.sin(t*Math.PI/180),cos:t=>Math.cos(t*Math.PI/180),tan:t=>Math.tan(t*Math.PI/180),asin:t=>180*Math.asin(t)/Math.PI,acos:t=>180*Math.acos(t)/Math.PI,atan:t=>180*Math.atan(t)/Math.PI,atan2:(t,e)=>180*Math.atan2(t,e)/Math.PI,seeder:(t,e)=>seeder(t,e),log:t=>Math.log(t),log10:t=>Math.log10(t),min:(...t)=>Math.min(...t),max:(...t)=>Math.max(...t),clamp:(t,e,a)=>Math.max(e,Math.min(a,t)),rnd:(t,e)=>t?e?Math.floor(Math.random()*(e-t+1))+t:Math.floor(Math.random()*t):Math.random(),cas:(t,e)=>Math.floor(Math.random()*(e-t+1))+t};function muCalcbase(t){let e=0;function parseOperator(){const a=t[e];return h.test(a)?(e++,a):null}function parsePrimary(){if("+"===t[e]||"-"===t[e]){return("-"===t[e++]?-1:1)*parsePrimary()}if(u.test(t[e]))return function parseNumber(){const a=e;for(;e<t.length&&u.test(t[e]);)e++;return Number(t.slice(a,e))}();if("("===t[e]){e++;const a=parseExpr();return")"===t[e]&&e++,a}return f.test(t[e])?function parseFunctions(){const a=t.slice(e);if(!a)return 0;for(const[s,i]of Object.entries(d)){const r=new RegExp(`^(${s})\\(`,"i").exec(a);if(r){e+=r[0].length;let a=[];for(;;){let s=parseExpr();if(a.push(s),")"===t[e]){e++;break}if(","!=t[e])break;e++}return i(...a)}}return e++,parseExpr()}():0}function parseFactor(){let a=parsePrimary();for(;e<t.length&&/[/*^%]/.test(t[e]);){const t=parseOperator(),e=parsePrimary();"*"===t?a*=e:"/"===t?a=e?a/e:0:"%"===t?a=e?a%e:0:"^"===t&&(a=Math.pow(a,e))}return a}function parseExpr(){let a=parseFactor();for(;e<t.length&&/[+-]/.test(t[e]);){const t=parseOperator(),e=parseFactor();"+"===t?a+=e:"-"===t&&(a-=e)}return a}return t=t.replace(/\s/g,""),parseExpr()}function muCalc(t){if(!t)return 0;if("number"==typeof t)return t||0;if("string"!=typeof t)return 0;const e=t.replaceAll(",",".");return c.test(e)?Number(e)||0:valutaparentesi(t)||0}const tonum=(t,e=-1)=>{if(!t)return 0;let a=0;if("number"==typeof t)a=t||0;else if("string"==typeof t){const e=(t=t.replaceAll(",",".")).match(/^-?[0-9.]+$/);a=e&&e.length>0?Number(e[0])||0:muCalc(t)}if(e>=0)switch(e){case 0:a=Math.round(a);break;case 1:a=Math.round(10*a)/10;break;case 2:a=Math.round(100*a)/100;break;case 3:a=Math.round(1e3*a)/1e3;break;case 4:a=Math.round(1e4*a)/1e4;break;case 5:a=Math.round(1e5*a)/1e5;break;case 6:a=Math.round(1e6*a)/1e6}return a||0},m=100;function valutavar(t,e){const a=e[0]||"";if(!a)return"";if(t.counter>=m)return a;const s=valuta0(t,a);let i;if(t.stl[s])i=`-- R:${s} --`;else{const e=t.var(s);if(isObject(e))return e;t.stl[s]=!0,i=valutabase(t,e),delete t.stl[s]}if(t.counter>=m)return a;if(e[1]){let a=getcolonne(i);if("l"==e[1])return String(a.length);const s=valuta0(t,e[1]);let r;if(/^[\d.]+$/.test(s)){let t=s.split(".").map((t=>parseInt(t)));for(let e=0;e<t.length-1;e++){let s=t[e];if(!(s>=0&&s<a.length))return"";a=getcolonne(a[s])}r=t[t.length-1]}else r=muCalc(s);if(!(r>=0&&r<a.length))return"";for(i=valuta0(t,a[r]);;){let e=i.indexOf("$[");if(e<0)break;const{i:a}=parsevar(i,e+2,"[","]");if(a<e)break;let s=i.slice(e+2,a);i=i.substring(0,e)+valutaquadra(t,s)+i.substring(a+1)}}if(e[2]){const a=muCalc(valuta0(t,e[2]));if(a){let s=0;return e[3]&&(s=muCalc(valuta0(t,e[3]))),a<0?i.slice(a):s?i.substring(a-1,a+s-1):i.substring(a-1)}}return i}function valutaquadra(t,e){let a=getcolonne(e||"");const s=clean(a[0]);function replacecharcode(t){return"\\t"==t?"\t":"\\n"==t?"\n":(t||"").replace(/&(\d+)/g,((t,e)=>String.fromCharCode(parseInt(e))))}switch(s){case"set":{const e=valuta0(t,a[1]||""),s=valuta0(t,a[2]||"");t.add(e,t.var(s))}break;case"ex":{const e=valuta0(t,a[1]||"");let s=valuta0(t,a[2]||"");s||(s=",");const i=muCalc(valuta0(t,a[3]||"")),r=e.split(s);return i>0&&r[i-1]||""}case"ex2":{const e=replacecharcode(a[1]||""),s=muCalc(valuta0(t,a[2]||""));a.splice(0,3);return a.join(";").split(e)[s>0?s-1:0]||""}case"replace":return a[1].replace(new RegExp(a[2]||"x","gim"),(a[3]||"").trim());case"replace2":case"rp2":try{let t=replacecharcode(a[1]||"x");const e=replacecharcode(a[2]||"").trim();a.splice(0,3),t=t.replace(/&(\d+)/g,((t,e)=>`\\u${parseInt(e).toString(16).padStart(4,"0")}`));return a.join(";").replace(new RegExp(t,"im"),e)}catch(t){return""}case"look":case"lookb":{const t=parseFloat(a[1]||"");if(a=a.slice(2).map((t=>parseFloat(t)||0)),"lookb"==s){const e=a.filter((e=>e<=t));return e.length?Math.max(...e):t}{const e=a.filter((e=>e>=t));return e.length?Math.min(...e):t}}case"tk":{let e=muCalc(valuta0(t,a[1]||""))||0;if(!e){e=muCalc(valuta0(t,a[2]||""));const s=a[1]||"";return e?a[3].split(s)[e-1]:""}return a[e>0?e+1:2]||""}case"totab":return a.splice(0,1),a.join("\t");case"tosep":{const t=replacecharcode(a[1]||"")||";";return a.splice(0,2),a.join(t)}case"len":{let t;return a.length>2?(a.shift(),t=a.join(";")):t=a[1]||"",t.length}case"mid":{const e=valuta0(t,a[1]||""),s=muCalc(valuta0(t,a[2]||"")),i=muCalc(valuta0(t,a[3]||""));return e.substring(s-1,s+i-1)}case"arrotonda":{const t=muCalc(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=muCalc(a[2]),0==e&&(e=1e3)),Math.round(t*e)/e}case"iif":return muCalc(valuta0(t,a[1]))?a[2]||1:a[3]||0;case"instr":case"instr2a":{const t=a[1]||"",e=a[2]||"";return t.toLowerCase().indexOf(e.toLowerCase())+1}case"instr2":{const t=a[1]||"";return a.splice(0,2),a.join(";").toLowerCase().indexOf(t.toLowerCase())+1}default:return s.startsWith(".")?{fun:e,pars:[]}:{fun:s,pars:a}}}function valuta0(t,e){if(e+="",t.counter>=m)return e;for(;;){const a=/\$([{(])/im.exec(e);if(!a)break;{const s=a.index,{i:i,res:r}="("==a[1]?parsevar(e,s+2,"(",")"):parsevar(e,s+2,"{","}");let n=valutavar(t,r);if(isObject(n))return n;e=valuta0(t,e.substring(0,s))+n+(i>=0?valuta0(t,e.substring(i+1)):"")}}return e=(e=e.replace(/\$([a-z|][\w|.]*)/gi,((e,a)=>{let s="";for(;a.length;){let e;if(t.stl[a]?e=`--R: ${a} --`:(t.stl[a]=!0,e=valutabase(t,t.var(a)),delete t.stl[a]),e||!(a.length>1)){s=e+s;break}s=a.slice(-1)+s,a=a.substring(0,a.length-1)}return s}))).replace(/\$(\d+):(\d+)(:(\d+))?/g,((t,e,a,s,i)=>{i=i?+i:1;const r=[];for(let t=+e;t<=+a;t+=i)r.push(t.toString());return r.join(";")}))}function valutabase(t,e){return e&&(t.counter++,t.counter<=m&&(e=valuta0(t,e)),t.counter--),e}class Variabile{constructor(){this.stl={},this.dictionary={},this.vec=[],this.counter=0,this.fndotcallback=void 0}static isValidKey(t){return/^[\w][\w\d.[\]]*$/.test(t)}static sanitizeKey(t){return t.replace(/[^a-zA-Z0-9_.[\]]/g,"_")}setfndot(t){this.fndotcallback=t}push(){this.vec.push({saves:[],dic:{...this.dictionary}})}pop(){if(this.vec.length>0){let t=this.vec.pop(),e={};if(t.saves&&t.saves.length)for(let a of t.saves)e[a]=this.dictionary[a];if(this.dictionary=t.dic,t.saves&&t.saves.length)for(let a of t.saves)this.dictionary[a]=e[a]}}savevars(t){if(!this.vec.length>0)return;let e=this.vec[this.vec.length-1];e.saves||(e.saves=[]);let a=t.split(",");for(let t of a){const a=Variabile.sanitizeKey(t);a&&!e.saves.includes(a)&&e.saves.push(a)}}clear(){this.vec=[],this.dictionary={}}azzera=()=>this.clear();var(t){let e="";const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(t.indexOf("|")>=0){const a=t.split("|");t=a[0],e=a[1]}function toformat(t,e){switch(e.trim().toLowerCase()){case"0":return String(parseInt(t)||0);case"-":return String((parseInt(t)||1)-1);case"+":return String((parseInt(t)||0)+1);case"data":return a=parseFloat(t)||0,new Intl.DateTimeFormat("it",{day:"2-digit",month:"short",year:"2-digit"}).format(a.toDate());case"euro":return((t,e="")=>{if(t){let e=Intl.NumberFormat("en",{style:"currency",currency:"EUR"}).format(t);return e=e.replace(/€/g,"").replace(/\./g,";").replace(/,/g,".").replace(/;/g,",")+"€",e}return e})(parseFloat(t));case"num":return tonum(parseFloat(t));case"n":case"n0":case"n1":case"n2":case"n3":case"n4":{const a=parseInt(e.slice(1))||0;return tonum(parseFloat(t),a)}case"u":return String(t).toUpperCase();case"l":return String(t).toLowerCase();default:return t}var a}const s=Variabile.sanitizeKey(t);if(s.startsWith(".")&&this.fndotcallback){const t=this.fndotcallback(s.toLowerCase());if(t)return toformat(t,e)}if(Variabile.isValidKey(s)){const t=s.toLowerCase(),a=/^([\w][\w\d]*)([.[])/.exec(t);if(a){const s=this.dictionary[a[1]];if(s&&"object"==typeof s)return toformat(function objval(t,e){const a=e.split(".");let s=t;for(let t=0;t<a.length;t++){const e=a[t],i=e.match(/(.*?)\[(\d*)\]/);if(i){if(i[1]&&(s=s[i[1]]),void 0===s)return"";s=s[parseInt(i[2],10)||0]}else switch(e){case"_k":s=(Object.keys(s)||[]).join(",");break;case"_v":s=Object.values(s)||[];break;case"_l":s=s.length||0;break;default:s=s[e]}if(void 0===s)return""}return"number"==typeof s?s+"":s}(s,("["==a[2]?a[2]:"")+t.substring(a[0].length)),e)}return toformat(this.dictionary[t]||"",e)}return""}getvar(t){return this.var(t)}colonna(t,e){return getcolonne[e]||t}dump(t=!1){let e=[];for(const t in this.dictionary)e.push({cod:t,val:this.dictionary[t]});return e=e.sort(((t,e)=>t.cod>e.cod)),t?e.map((t=>`${t.cod} = ${isObject(t.val)?JSON.stringify(t.val,null,2):t.val}`)):e}add(t,e){if(t)if("number"==typeof e&&(e=String(e)),t.includes("*")){const a=Variabile.sanitizeKey(t.split("*")[0]);if(Variabile.isValidKey(a)){const t=a.toLowerCase();let s=Object.keys(this.dictionary).filter((e=>e.startsWith(t)));for(let t of s)e?this.dictionary[t]=e:delete this.dictionary[t]}}else{const a=Variabile.sanitizeKey(t);if(Variabile.isValidKey(a)){const t=a.toLowerCase();0===e||e?this.dictionary[t]=e:delete this.dictionary[t]}else logga(`Invalid key: ${t}=${e}`)}}removeallvars(t){if(Array.isArray(t)){let e=Object.keys(this.dictionary);for(let a of e)t.includes(a)||delete this.dictionary[a]}else this.dictionary={}}valutasync(t){return valutabase(this,t)}async valuta(t,e){this.stl={};let a=await async function valutafunc(t,e,a){if(e){for(let s=0;s<20;s++){const s=e.lastIndexOf("$[");if(!(s>=0)){e=valutabase(t,e);break}{const{i:i,res:r}=parsevar(e,s+2,"[","]"),n=valutabase(t,e.substring(0,s)),o=r?r[0].startsWith(".")?valutabase(t,r.join(":")):valutabase(t,r[0]):"",c=i>=0?valutabase(t,e.substring(i+1)):"";let l=valutaquadra(t,o);if("object"==typeof l&&(l=a?await a(l?.fun,l.pars):`** fun: ${l.fun} ** `),isObject(l))return l;e=n+l+c}}return e}return""}(this,t,e);return isObject(a)||(a=(t=>{for(;;){const e=t.indexOf("{");if(!(e>=0))break;{const{i:a,res:s}=parsevar(t,e+1,"{","}");if(a<0)return t;t=t.substring(0,e)+muCalc(s[0])+(a>=0?t.substring(a+1):"")}}return t})(a)),a}async parametrokeyval(t){if("string"!=typeof t)return{};if(!(t=t.trim()))return{};let e,a,s,i=!1;return t.startsWith("#")&&(i=!0,t=t.slice(1)),s=t.indexOf("="),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1)):(s=t.indexOf(":"),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1),a=this.var(a)):(e=clean(t),a=this.var(e))),a&&"string"==typeof a&&a.includes("$")&&(a=await this.valuta(a)),["l","a","p"].includes(e)&&(i=!0),i&&(a=muCalc(a)),{k:e,v:a}}}class CodiceBarra{constructor(){this.barre={}}azzera(){this.barre={}}oriented(t,e,a,s){switch(t=(t||"1").substr(0,1).toLowerCase()){case"0":break;case"l":return{t:"l",x:e};case"a":return{t:"a",x:a};case"p":return{t:"p",x:s};case"2":return{t:t,x:e,y:s,z:a};case"5":return{t:t,x:e,y:a,z:s};case"4":return{t:t,x:s,y:e,z:a};case"3":return{t:t,x:a,y:s,z:e};case"6":return{t:t,x:s,y:a,z:e};default:return{t:"1",x:a,y:e,z:s}}}async getcode(t,e,a,s,i){let[r,n]=t.split(":");n=n||"";const getcode0=async(t,r)=>{let n=this.barre[t];if(!n&&i&&(n=await i(t),n||(n={t:"1",r:[]}),this.barre[t]=n,n.coderr&&"errore"!=n.coderr||(n.coderr=`#err_${t}`)),!n||0==n.r.length)return{extra:{err:"missing codicebarra"},c:`#err_${t}`,fm:10};const{t:o,x:c,y:l,z:u}=this.oriented(t,e,a,s),h={barra:t,fm:n.fm,t:o,liv:r,items:n.r.length,err:""};let f=n.r;if(u){const t=f.filter((t=>t.z===u||!t.z));t.length>0?f=t:h.err=`spessore non coerente: ${u}`}if("l"==o||"a"==o||"p"==o){const t=f.find((t=>t.x>=c));if(t)return{c:t.c,fm:t.x==c?0:1,x1:t.x,x:c,extra:h}}else{let t=f.find((t=>t.x==c&&t.y==l));if(t)return{c:t.c,fm:0,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&(t=f.find((t=>t.x>=c&&t.y==l)),t))return{c:t.c,fm:1,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&2!=n.fm&&(t=f.find((t=>t.x>=c&&t.y>=l)),t))return{c:t.c,fm:2,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h}}return n.codalt&&r<5?await getcode0(n.codalt,r+1):{c:n.coderr,fm:9,x:c,y:l,z:u,extra:h}};return await getcode0(r,0)}compila(t,e){e||(e={});const a={};if(Array.isArray(t)){for(const s of t)if(s.cod=clean(s.cod),s.barcode=clean(s.barcode),s.barcode.length>2&&"+"==s.barcode[0]){s.barcode=s.barcode.substr(1);const t=this.oriented(s.barcode.substr(0,1),s.l,s.a,s.p);t.c=s.modello?{c:s.cod,m:s.modello}:s.cod,a[s.barcode]||(a[s.barcode]={t:s.barcode.substr(0,1),r:[]},e[s.barcode]&&(a[s.barcode]=Object.assign(e[s.barcode],a[s.barcode]))),a[s.barcode].r.push(t)}for(const t in a){a[t].r.sort(((t,e)=>t.y?1e4*(t.x-e.x)+(t.y-e.y):t.x-e.x))}}this.barre=a}}const p="IFDEF|IFNDEF|SETDEF|CACHE|RET|CVAR|LOOK|LOOKB|SELECT|CASES|CASE|LOG|MSG|DEFAULT|ELSEIFDEF|ELSEIFNDEF|ELSEIF|ELSE|ENDIF|ENDSELECT|PUSH|POP|FUNC|MACRO|LETS|LETO|LETM|LETT|LETV|LETM|LET|DEF|DO|VARIANTE|FORVAR|FOR|LOOP|ENDFOR|BREAK|EXIT|EXITFOR|CONTINUE|IF|INC|I|F|M|J|:P".split("|");function toCadPars(t){const e=muClComments(t),a=[];for(const t of e){const e=t.includes("(")||t.includes("[")?[t]:getcolonne(t,!0);let s=!1;for(const t of e)!t.startsWith('"')&&t.includes("=")?(a.push(t),s=!0):s&&(a[a.length-1]+=","+t)}const s={};for(const t of a){let{v:e,o:a}=getcouple(t,"=",!1);a=a||"",e&&(/^[-+]?\d*\.?\d+$/.test(a)&&(a=parseFloat(a)),s[e]=a)}return s}function muClComments(t,e){const a=(s=t,s.replace(/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|\/\*[\s\S]*?\*\//g,((t,e)=>e||""))).split(/\r?\n/);var s;const i=[];let r="";for(const t of a){let a=t;if(/(^|[^:])\/\/.*/.test(a)&&(a=a.replace(/(^|[^:])\/\/.*/,((t,e)=>e.trim()))),a=a.trim(),0!==a.length||e)if(r.length>0&&(a=r+" "+a,r=""),a.endsWith("\\")){a=a.slice(0,-1);const t=a.lastIndexOf("//");-1!==t&&(a=a.slice(0,t).trim()),r=a}else i.push(a)}return i}function muClean(t,e=!1){if(!Array.isArray(t))return void n.add("muClean: expected array!");const a=[];function addgen(t){if(a.length>0&&""==a[a.length-1].tipo){const s=a[a.length-1];e||!(!t.startsWith("!")&!t.startsWith("."))||t.startsWith("$")||t.startsWith("{")||t.startsWith("#")||s.contenuto.startsWith("!")||s.contenuto.startsWith(".")||s.contenuto.startsWith("$")||s.contenuto.startsWith("{")||s.contenuto.startsWith("#")?a.push({tipo:"",contenuto:t}):s.contenuto=s.contenuto+"\n"+t}else a.push({tipo:"",contenuto:t})}for(const e of t){const t=e.match(/^#([\w.]+)\s*(.*)$/);if(t){let s=t[1].toUpperCase().trim(),i="";if(s.includes(".")){const t=s.split(".");s=t[0],i=t[1]}if(p.includes(s)){const e=t[2];if("IF"!==s&&"IFDEF"!=s&&"IFNDEF"!=s||!e.includes("#")){const e={tipo:s,contenuto:t[2]};i&&(e.tipo2=i),a.push(e)}else{let i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*?)\s*#\s*(\w+)\s*(.*)$/);i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ELSE",contenuto:""}),a.push({tipo:i[4].toUpperCase(),contenuto:i[5]}),a.push({tipo:"ENDIF",contenuto:""})):(i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*)$/),i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ENDIF",contenuto:""})):a.push({tipo:t[1].toUpperCase(),contenuto:t[2]}))}}else addgen(e)}else addgen(e)}let s=0,i=0,r=0,o=[],c=[],l=[];for(let t=0;t<a.length;t++){const e=a[t];switch(e.i=t,e.tipo){case"FOR":case"FORVAR":case"VARIANTE":case"DO":i++,c[i]={pos:t,bk:[]};break;case"LOOP":case"ENDFOR":if(i>0){const{pos:s}=c[i];for(const e of c[i].bk)e.next=t,e.prev=s;e.prev=s,a[s].next=t,i--}break;case"BREAK":case"EXIT":case"EXITFOR":case"CONTINUE":i>0&&c[i].bk.push(e);break;case"IF":case"IFDEF":case"IFNDEF":s++,o[s]={pos:t,bk:[e]};break;case"SELECT":r++,l[r]={pos:t,bk:[e],first:t};break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(s>0){const{pos:i}=o[s];o[s].bk.push(e),a[i].next=t,o[s].pos=t}break;case"CASE":case"CASES":case"DEFAULT":if(r>0){const{pos:s,first:i}=l[r];l[r].bk.push(e),a[s].next=t,e.first=i,l[r].pos=t}break;case"ENDIF":if(s>0){const{pos:e,next:i}=o[s];a[e].next=t;for(const e of o[s].bk)e.last=t;s--}break;case"ENDSELECT":if(r>0){const{pos:e,next:s}=l[r];a[e].next=t;for(const e of l[r].bk)e.last=t;r--}}}return a}function muLimits(t){const e=muClComments(t),a=[];let s;const parsa=t=>t?[...new Set(t.split(",").map((t=>t.trim())).sort().filter((t=>t)))]:void 0;for(const t of e){let e=/^\s*\{(.*)?\}/im.exec(t);if(e)"limit"==clean(e[1])?(s={},a.push(s)):s=void 0;else if(s&&(e=/^\s*:(\w+)\s*(.*)/.exec(t),e))switch(e[1].toLowerCase()){case"opz":case"o":s.opz=parsa(e[2]);break;case"obs":case"obsolete":s.obsolete=parsa(e[2]);break;case"scons":case"sconsigliate":s.scons=parsa(e[2]);break;case"neutri":s.neutri=parsa(e[2]);break;case"art":s.art=parsa(e[2]);break;case"mod":s.mod=parsa(e[2]);break;default:logga("missing:",e[1])}}return a}function parselimitifromdb(t){let e,a=[];if(t&&t.length)for(const s of t){e={},s.varfilter=fromjson(s.varfilter,[]),s.result=fromjson(s.result,[]),s.result2=fromjson(s.result2,[]),s.exclude=parseInt(s.exclude)?1:0,s.exclude2=parseInt(s.exclude2)?1:0;const{item:i,model:r,rule:n,varfilter:o,result:c,result2:l,exclude:u,exclude2:h,datai:f,dataf:d}=s;function remap(t){return t.map((t=>clean("string"==typeof t?t:t.Value,!0))).filter((t=>t))}if(c.length||l.length){if(c.length&&(u?e.ex=remap(c):e.valid=remap(c)),l.length&&(h?e.ex2=remap(l):e.valid2=remap(l)),i&&(e.i=clean(i).split(";")),r&&(e.m=clean(r).split(";")),n&&(e.r=clean(n).split(";")),(f||d)&&f<d&&(e.datai=parseInt(f),e.dataf=parseInt(d)),o&&o.length){e.v=[];for(const m of o){let p=e.v.find((t=>t.v==clean(m.Variant)));p||(p={v:clean(m.Variant),o:[]},e.v.push(p)),p.o=[...p.o,...clean(m.Value).split(";")],p.o=[...new Set(p.o.filter((t=>t)))]}}setlevelimite(e),a.push(e)}}return a=a.sort(((t,e)=>e.l-t.l)),a}function setlevelimite(t){let e=0;t.i&&t.i.length&&(e+=5),t.m&&t.m.length&&(e+=3),t.r&&t.r.length&&(e+=2),t.v&&t.v.length&&(e+=3),t.datai&&t.dataf&&(e+=1),t.l=e}function parselimitifromrule(t){function parsevettorelimiti(t){const e={},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;function addres(t,a){function addres0(t,a){(a=clean(a))&&(e[t]||(e[t]=[]),e[t].includes(a)||e[t].push(a))}if(Array.isArray(a))for(const e of a)addres0(t,e);else addres0(t,a)}for(const s of t){const t=a.exec(s);if(t)switch(t[1]){case"var":case"v":case"variante":{const a=(t[2]||"").indexOf(" ");if(a>0){const s=clean(t[2].substring(0,a)),i=getcolonne(t[2].substring(a+1));if(s&&i&&i.length){e.v||(e.v=[]);let t=e.v.find((t=>t.v==s));t||(t={v:s,o:[]},e.v.push(t));for(const e of i)t.o.includes(e)||t.o.push(e)}}}break;case"d":case"dt":case"data":case"date":{const a=t[2].split(" "),s=parseInt(a[0]),i=parseInt(a[1]);(s||i)&&(e.datai=s,e.dataf=i)}break;case"rule":case"r":case"mu":addres("r",getcolonne(t[2]));break;case"item":case"i":addres("i",getcolonne(t[2]));break;case"model":case"m":addres("m",getcolonne(t[2]));break;case"e":case"escludi":case"exclude":addres("ex",getcolonne(t[2]))}else addres("valid",getcolonne(s))}return setlevelimite(e),e}let e;if(t&&t.length){for(const a of t){const t=parsevettorelimiti(a);if(t&&(t.valid&&t.valid.length||t.ex&&t.ex.length)){let a=0;t.i&&t.i.length&&(a+=5),t.m&&t.m.length&&(a+=3),t.r&&t.r.length&&(a+=2),t.v&&t.v.length&&(a+=3),t.datai&&t.dataf&&(a+=1),t.l=a,e||(e=[]),e.push(t)}}e&&(e=e.sort(((t,e)=>e.l-t.l)))}return e}class Variante{constructor(t){this.rows={},this.name="$",this.key="$",this.limits=void 0,this.amb=t}setheader(t,e){const{name:a,cat:s}=checkmu(t,e);return this.cat=s,this.name=a,this.alias="",this.obbligo=!1,this.des=a,this.vdef=[],this.rows={},this.h=[],this.key=`${s}/${a}`,{name:a,cat:s}}fromdim(t,e=2){"number"!=typeof t&&(t=muCalc(t)),e>0&&e--;let a,s=1e9;for(const i in this.rows){const r=this.rows[i];if(!r.annulla){const i=parseFloat(r.v[e])||0;i<=s&&i>=t&&(s=i,a=r)}}return this.#t(t,a)}async load(e,a,i=!1){const{name:r,cat:n}=this.setheader(e,a);if(t){const e=await t(n,r);if(e){if(await this.loadContentExtended(e),e.filter)this.limits=parselimitifromdb(e.filter);else if(s&&!i){const t=await s("filter",n,r);t&&t.length&&(this.limits=parselimitifromdb(t))}return!0}}return!1}async _loadContent(t){const e=/^\s*[!:]\s*(\w+)\s*(.*)$/i;let a="";const s=[];let i,r=!1;for(const n of t){const t=n.toLowerCase();if("{limit}"==t)i=[],s.push(i),r=!0;else if("{:limit}"==t)r=!1;else if(r)i.push(n);else{let t=e.exec(clean(n));if(t)if(a&&"extra"==t[1].toLowerCase()){const e=getcolonne(t[2]);for(const t of e){const e=t.indexOf("=");if(e>0){const s=clean(t.substring(0,e));"v"!=s&&(this.rows[a][s]=t.substring(e+1).trim())}}}else switch(t[1].toLowerCase()){case"alias":{const e=t[2].toLowerCase().split(";");if(e[0].trim()!=this.name)if(1==e.length)this.alias=e[0];else{let a;if(this.amb?a=await this.amb.getvariante(e[0]):(a=new Variante,await a.load(e[0],this.cat)),t=a?.rows,t){let a=Object.keys(t);if(a.length){e.splice(0,1);const addrows=e=>{e&&e.forEach((e=>this.rows[e]=t[e]))};for(const t of e){const e=/([ei])\s*:\s*(.*)\s*$/im.exec(t);if(e){const t=e[2].split(",");for(let e=0;e<t.length;e++)t[e]=t[e].trim();a="e"==e[1]?a.filter((e=>{for(const a of t)if(e.startsWith(a))return!1;return!0})):a.filter((e=>{for(const a of t)if(e.startsWith(a))return!0;return!1}))}}addrows(a)}}}}break;case"h":this.h=getcolonne(t[2]).map((t=>({des:t})));break;case"t":{const e=getcolonne(t[2]);if(this.h)for(let t=0;t<this.h.length;t++)this.h[t].t=e[t]||""}break;case"des":this.des=t[2];break;case"default":case"vdef":this.vdef=getcolonne(t[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else{const t=getcolonne(n),e=clean(t[0]);e&&(a=e,this.rows[a]={annulla:0,v:t})}}}const n=Object.keys(this.rows);for(const t of n)if(t.includes(".")){const e=t.split(".");for(let t=0;t<e.length-1;t++){const a=e.slice(0,t+1).join(".");this.rows[a]||(this.rows[a]={annulla:0,v:[a]})}}return this.limits=parselimitifromrule(s),!0}tovec(){const t=this.rows,e=[],a=Object.keys(t).sort();for(const t of a)this.rows[t].annulla<2&&e.push(this.#t(t,this.rows[t]));return e}#t(t,e){const a=[t];if(e)for(const t of e.v)"string"==typeof t&&(t.includes(",")||t.includes(";"))?a.push(quote(t)):a.push(t||"");return a.join(",")}tovar(t,e=""){const a=clean(t);if(!this.rows[a])return e||t;const s=this.rows[a];return 2==s.annulla?"":this.#t(e||t,s)}isvalidopz(t){const e=clean(t),a=this.rows[e];return!!a&&(1!=a.annulla&&!a.hasliv)}firstvalid(t,e=void 0){const a=t.indexOf(",");if(a>0&&(t=t.slice(0,a).trim()),t&&this.isvalidopz(t))return t;if(e&&e.length)for(const t of e)if(this.isvalidopz(t))return t;if(this.vdef&&this.vdef.length)for(const t of this.vdef)if(this.isvalidopz(t))return t;const s=Object.keys(this.rows).sort();for(let t=0;t<s.length;t++){const e=s[t];if(!(t<s.length-1&&s[t+1].startsWith(e+"."))&&this.isvalidopz(e))return e}}resetfilter(){delete this._valids;for(const t in this.rows)this.rows[t].annulla=0}validkeys(){let t=Object.keys(this.rows)||[];return t=t.filter((t=>0==this.rows[t].annulla)).sort(),t}limitfiltra(t){if(!t)return;t=muClComments(t.toLowerCase());const e=[];for(const a of t){const t=/^#(i|e|xe|xi|x\+|x-|x)(\d*)\s+(.+)$/i.exec(a);if(t){const a={ex:t[1],col:(parseInt(t[2])||1)-1,val:"x"==t[1]?t[3]:getcolonne(t[3])};a.val.length&&e.push(a)}}if(e.length)for(const t in this.rows){const a=this.rows[t];for(const t of e)if("e"==t.ex){if(_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}else if(t.ex.startsWith("x")){const e=(a.v[t.col]+"").toLowerCase().split(/[,;]/).map((t=>t.trim()));if("xe"==t.ex){if(_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if("x+"==t.ex){if(parseFloat(a.v[t.col])<=parseFloat(t.val)){a.annulla=1;break}}else if("x-"==t.ex){if(parseFloat(a.v[t.col])>=parseFloat(t.val)){a.annulla=1;break}}else if(!_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if(!_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}function _check(t,e){if(1==e?.length&&"."==e[0])return!!t;return!!e.find((e=>e.startsWith(t)))}}limita(t){if(this.resetfilter(),t&&t.length&&this.limitfiltra(t),!this.limits||!this.amb)return this;const{item:e,rule:a,model:s,vari:i,data:r}=this.amb,valid=(t,e)=>!e||!e.length||!!t&&e.includes(t),n=this.limits.filter((t=>{if(!valid(e,t.i))return!1;if(!valid(a,t.r))return!1;if(!valid(s,t.m))return!1;if(r&&t.datai&&r<t.datai)return!1;if(r&&t.dataf&&r>t.dataf)return!1;if(t.v&&t.v.length)for(const e of t.v){const t=clean(i.var(e.v).split(",")[0],!0);if(t&&!e.o.includes(t))return!1}return!0}));if(!n||!n.length)return this;const o=new Set,c=new Set,l=new Set,u=new Set;let h=!1,f=!1;for(const t of n){if(t.valid&&t.valid.length){h=!0;t.valid.filter((t=>t.indexOf("*")>0)).map((t=>t.split("*")[0])).forEach((t=>o.add(t))),t.valid.filter((t=>!t.includes("*"))).forEach((t=>l.add(t)))}if(t.ex&&t.ex.length){f=!0;t.ex.filter((t=>t.indexOf("*")>0)).map((t=>t.split("*")[0])).forEach((t=>c.add(t))),t.ex.filter((t=>!t.includes("*"))).forEach((t=>u.add(t)))}}for(const t in this.rows){const e=this.rows[t];let a=!1,s=!1;if(h){for(const e of o)if(t.startsWith(e)){a=!0;break}!a&&l.has(t)&&(a=!0)}if(f){for(const e of c)if(t.startsWith(e)){s=!0;break}!s&&u.has(t)&&(s=!0)}h&&!a&&(e.annulla=1),f&&s&&(e.annulla=1)}return n}async loadContentExtended(t){if("object"==typeof t){for(const e in t)["rows","des","h","alias","obbligo"].includes(e)&&(this[e]=t[e]);"string"==typeof t.def&&t.def.length&&(this.vdef=getcolonne(t.def.trim().toLowerCase())),t.filter&&t.filter.length&&(this.limits=parselimitifromdb(t.filter))}else await this._loadContent(muClComments(t,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}const v={};async function getcbfunc(t,e,s,i,r,n){if(a){if(v[e])return"";let t=await a(e,s,i,r,n);return isObject(t)||(t=(t||"").trim(),"!"==t&&(v[e]=!0,t="")),t}return t}async function intvaluta(t,e,a){return t.vari.valuta(a,(async(a,s)=>{switch(a){case"dim":{let a=muCalc(s[1]),i=await dammivariante(t,e,s[2]),r=parseInt(s[3])||2;return i&&i.fromdim?i.fromdim(a,r):a}case"seed":{let t=s[1],e=getcolonne(s[2]);return e[seeder(e.length,t)]||""}case"seedvar":{let a=await dammivariante(t,e,s[2]),i=s[1],r=a.validkeys();if(s[3]&&s[4]){let t=muCalc(s[3])-1;if(t>=0){let e=getcolonne(s[4]);r=r.filter((s=>{let i=a.rows[s];if(i&&i.v&&i.v[t]){let a=getcolonne(i.v[t]);if(a)for(let t of e)if(a.includes(t))return!0}return!1}))}}let n=seeder(r.length,i);return n>=0&&a.tovar(r[n])||""}default:return await getcbfunc(`**fun:${a}**`,a,s,t.vari,t)}}))}async function dammivariante(t,e,a){let s;return s=e&&e?.localvar&&e.localvar[a]?e.localvar[a]:await t.getvariante(a),s}async function impostavariante(t,e,a,s,i){let r,n=a;if((s=s||"")&&"string"==typeof s){const t=s.indexOf(":");t>=0&&(t>0&&(n=clean(s.slice(0,t))),s=s.slice(t+1))}if(i&&i.alias&&(n=i.alias),e&&e.paralias&&e.paralias[a]&&(n=e.paralias[a]),r=await dammivariante(t,e,n),r)if(i&&i.t){i.des||(i.des=r.des);let e=i?.filtra||"";if(e.includes("$")&&(e=await t.vari.valuta(e)),"m"===i.t){let t=2;if(s.includes(":")){const e=s.split(":");t=parseInt(e[1]),s=e[0]}r.limita(e),s=r.fromdim(parseFloat(s),t)}else{r.limita(e);const t=r.firstvalid(s,getcolonne(i.def));s=r.tovar(t)}}else r.resetfilter(),s=r.firstvalid(s),s=r.tovar(s);else i&&i.t&&i.t;return t.vari.add(a,s),s}async function pushpars(t,e,a,s){const i={},r=[];if(a)for(const s of a){const{v:a,o:n,fl:o}=getcouple(s);i[a]||(i[a]=!0,r.push({v:a,o:t.vari.var[a]}),o&&await impostavariante(t,e,a,n))}if(s)for(const a of s){const{v:s,o:n,fl:o}=getcouple(a);i[s]||(i[s]=!0,r.push({v:s,o:t.vari.var[s]}),o&&await impostavariante(t,e,s,n))}return r}function poppars(t,e){if(e)for(const a of e)t.vari.add(a.v,a.o)}const outpush=(t,e)=>{null!=e&&null!=e&&("object"==typeof e?t.push(JSON.stringify(e,null,2)):"string"==typeof e&&e.startsWith("_ ")&&t.length>0&&"string"==typeof t[t.length-1]?t[t.length-1]+=e.slice(2):t.push(...e.split("\n")))};async function muEval(t,e,a,s){if(!Array.isArray(a))return n.add("codice is not a valid parsed array"),[];s||(s={}),s.id||(s.id="_"),s._stackmacro||(s._stackmacro=0),s.limited||(s.limited=!1),t||n.add("amb deve essere definito");const i=t.vari;t.maxdelays,t.cat;const r=[];let o,c,l;tk();for(let u=0;u<a.length;){let h=a[u];switch(h.tipo){case"IFDEF":case"IFNDEF":case"IF":{const f="IF"==h.tipo?muCalc(await intvaluta(t,e,h.contenuto)):"IFDEF"==h.tipo?""!=await intvaluta(t,e,h.contenuto):""==await intvaluta(t,e,h.contenuto);h.next?(a[h.next].jlast=f?1:0,f||(u=h.next-1)):n.add("Troppo tempo",h)}break;case"SELECT":h.next?(a[h.next].t1=await intvaluta(t,e,h.contenuto),u=h.next-1):n.add("manca endselect",h);break;case"CASE":case"CASES":case"DEFAULT":if(h.next)if(h.jlast)h.jlast=0,u=h.last-1;else{let d,m=1;const _getvv=async()=>{let a=await intvaluta(t,e,h.contenuto);return a=a.includes(":")&&!a.includes(",")?a.split(":").map((t=>(t||"").trim())):getcolonne(a),a};if("CASE"==h.tipo){m=0,d=await _getvv();const p=muCalc(h.t1||"");d.find((t=>muCalc(t)==p))&&(m=1)}else if("CASES"==h.tipo){m=0,d=await _getvv();const v=h.t1||"";d.find((t=>t==v))&&(m=1)}a[h.next].jlast=m?1:0,a[h.next].t1=h.t1,m||(u=h.next-1)}else n.add("manca select",h);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(h.next)if(h.jlast)h.jlast=0,u=h.last-1;else{const g="ELSE"==h.tipo?1:"ELSEIF"==h.tipo?muCalc(await intvaluta(t,e,h.contenuto)):"ELSEIFDEF"==h.tipo?""!=await intvaluta(t,e,h.contenuto):""==await intvaluta(t,e,h.contenuto);a[h.next].jlast=g?1:0,g||(u=h.next-1)}else n.add("manca endif",h);break;case"ENDIF":case"ENDSELECT":case"CACHE":case"CVAR":break;case"PUSH":i.push();break;case"POP":i.pop();break;case"INC":case"I":if(s._stackmacro>500)n.add("stack chiamate macro troppo profondo!",h);else if(({macro:o,pars:c,xid:l}=await t.getmacro(h)||{}),o){s._inc=!0,s._stackmacro++;const b={},w=o.parametri?._;if(w&&w.length)for(const k of w){const x=clean(k.split("=")[0]||"",!0);x&&(b[x]=i.dictionary[x])}await o.impostaparametri(w,c);const y=await muEval(t,o,o.codice,s);for(const C in b)b[C]?i.dictionary[C]=b[C]:delete i.dictionary[C];r.push(...y),s._stackmacro--,s._inc=!1}break;case"RET":{const E=await intvaluta(t,e,h.contenuto);t.vari.savevars(E)}break;case"MACRO":case"M":case"FUNC":case"F":if(s._stackmacro>500)n.add("stack chiamate macro troppo profondo!",h);else{let{macro:O,pars:_,xid:$}=await t.getmacro(h)||{};if(O){const F=!!s.grafica||["F","FUNC"].includes(h.tipo),S=s.id||"",I=O.parametri?._,L={};if(F)i.push();else{if(O.head)for(const A of O.head)L[A.cod]=t.vari.var(A.cod);if(I&&I.length)for(const z of I){const M=(z.split("=")[0]||"").trim().toLowerCase();M&&(L[M]=i.dictionary[M])}}if(O.codice.length){if(s._stackmacro++,s.grafica&&"function"==typeof s.grafica){let j="",W="";_&&_.length?(j=_.find((t=>t.startsWith("#id"))),j?(j=await i.valuta(j.slice(4)),j.startsWith("#")?s.id=j:s.id=hash(`${u}${O.name}${S}${j}`),_=_.filter((t=>!t.startsWith("#id"))),W=s.id):s.id=hash(`z${S}${u}`)):s.id=hash(`z${S}${u}`);let N=t.pick.key;t.pick.key=s.id;const T=await s.grafica({tipo:h.tipo,id:W,pars:_,parametri:I,macro:O,options:s,vari:t.vari,amb:t});t.pick.key=N,r.push(T)}else{await O.impostaparametri(I,_);let V=t.vari.var("_rootnode");t.vari.add("_rootnode","0");const D=await muEval(t,O,O.codice,s);t.vari.add("_rootnode",V),r.push(...D)}s._stackmacro--}if(F)i.pop();else for(const R in L)L[R]?i.dictionary[R]=L[R]:delete i.dictionary[R];s.id=S}else n.add("Macro non trovata!",h)}break;case"SETDEF":{let P=getcolonne((h.contenuto||"").toLowerCase()),J=await dammivariante(t,o,P[0]),K=P[1]||"def_",U=P[2];if(K.endsWith("_")||(K+="_"),J&&J.rows){P=Object.keys(J.rows),U&&(P=P.filter((t=>t.startsWith(U))));for(let q of P){let G=`${K}${q}`;if(!i.dictionary[G]){function torow(t){const e=[];if(t)for(const a of t.v.slice(1))"string"==typeof a&&(a.includes(",")||a.includes(";"))?e.push(quote(a)):e.push(a||"");return e.join(",")}i.add(G,await intvaluta(t,e,torow(J.rows[q])))}}}}break;case"LET":case"LETS":{let B=h.contenuto.indexOf("="),H=-1;if(B>=0&&(H=h.contenuto.indexOf("=",B+1)),H<0){const X=h.contenuto;if(B=X.indexOf("="),B>0){const Z=await intvaluta(t,e,X.slice(0,B).trim());let Q=X.slice(B+1).trim();Q="LET"==h.tipo?muCalc(await intvaluta(t,e,Q))||"":await intvaluta(t,e,Q),i.add(Z,Q)}}else{const Y=getcolonne(h.contenuto);for(const tt of Y)if(B=tt.indexOf("="),B>0){const et=await intvaluta(t,e,tt.slice(0,B));let at=tt.slice(B+1).trim();at="LET"==h.tipo?muCalc(await intvaluta(t,e,at))||"":await intvaluta(t,e,at),i.add(et,at)}}}break;case"LETT":{const st=h.contenuto.indexOf("=");if(st>0){const it=await intvaluta(t,e,h.contenuto.slice(0,st).trim()),rt=await intvaluta(t,e,h.contenuto.slice(st+1).trim());i.add(it,rt)}}break;case"LOOK":case"LOOKB":{const nt=getcolonne(await intvaluta(t,e,h.contenuto)),ot=muCalc(nt[1]),ct=muCalc(nt[3]),lt=await dammivariante(t,o,nt[2]);if(lt&&lt.rows){const ut=Object.values(lt.rows).reduce(((t,e)=>{const a=parseInt(e.v[ct?ct-1:0]);return a&&("LOOKB"==h.tipo?a<=ot&&a>t.v&&(t.v=a,t.c=e.v[0]):a>=ot&&a<t.v&&(t.v=a,t.c=e.v[0])),t}),{v:"LOOKB"==h.tipo?0:1/0,c:""});ut&&ut.c&&(t.vari.add(nt[0],lt.tovar(ut.c)),s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:nt[0],valore:lt.tovar(ut.c),riga:h}))}else t.vari.add(nt[0],`${ot},no,no`)}break;case"LETV":case"LETM":case"DEF":{const ht=getcolonne(h.contenuto);if(ht)for(const ft of ht){let{v:dt,o:mt,fl:pt}=getcouple(ft);if(pt){dt=await i.valuta(dt),mt=await intvaluta(t,e,mt);const vt=await impostavariante(t,e,dt.trim().toLowerCase(),mt.trim().toLowerCase(),"LETM"==h.tipo?{t:"m"}:{t:"v"});s._stackmacro<=0&&s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:dt,valore:vt,riga:h})}}}break;case"DO":{const gt=(h.contenuto||"").trim();let bt=!0;gt&&!muCalc(await intvaluta(t,e,gt))&&(bt=!1),h.next&&(bt||(u=h.next+1))}break;case"VARIANTE":case"FORVAR":case"FOR":{let wt,yt,kt,xt;if(s.oldstyle?(wt=h.contenuto.split(","),xt=wt[2]||"i",kt=wt[0],yt=wt[1]):(wt=getcolonne(h.contenuto||""),xt=wt[0]||"",kt=clean(wt[1],!0),yt=wt[2]||""),xt=xt.includes("$")?await intvaluta(t,e,xt):xt||"","FORVAR"==h.tipo||"VARIANTE"==h.tipo){const Et=await intvaluta(t,e,kt),Ot=Et?await dammivariante(t,e,Et):void 0;Ot?kt=Ot.tovec():(kt=[],n.add("getvariante not found!",h))}else{const _t=await intvaluta(t,e,kt||"");kt=kt?getcolonne(_t):void 0}kt=kt||[];const Ct=0;if(h.next){a[h.next].for={v:xt,elenco:kt,nc:Ct,valido:yt};let $t,Ft=!0;xt&&kt.length>0?Ct>=kt.length?Ft=!1:($t=kt[Ct],i.add(xt,$t),yt&&(Ft=!muCalc(await intvaluta(t,e,yt)))):Ft=!1,Ft||(u=h.next-1)}else n.add("manca endfor/loop",h)}break;case"LOOP":{let St=!0;h.contenuto&&!muCalc(await intvaluta(t,e,h.contenuto))&&(St=!1),St&&(u=h.prev-1);break}case"ENDFOR":if(!h.contenuto||muCalc(await intvaluta(t,e,h.contenuto)))if(h.for){const{v:It,elenco:Lt,valido:At}=h.for;if(It&&Lt.length>0&&h.for.nc<500)for(;;){if(h.for.nc++,h.for.nc<Lt.length){if(i.add(It,Lt[h.for.nc]),At&&muCalc(await intvaluta(t,e,At)))continue;u=h.prev;break}break}}else n.add("manca istruzione for",h);break;case"BREAK":case"EXIT":case"EXITFOR":h.next?h.contenuto.trim()?muCalc(await intvaluta(t,e,h.contenuto))&&(u=h.next):u=h.next:n.add("break outside loop",h);break;case"CONTINUE":h.next?h.contenuto&&!muCalc(await intvaluta(t,e,h.contenuto))||(u=h.next-1):n.add("continue outside loop",h);break;case"MSG":case"LOG":{const zt=await intvaluta(t,e,h.contenuto);logga(zt),n.add(zt)}break;default:{let Mt;if(h.contenuto.startsWith("!")){Mt=await intvaluta(t,e,h.contenuto);let jt="";const Wt=/^!(.\w+)[\s;,]\s*(.+)?$/gim.exec(Mt);if(Wt)if(Wt[1].startsWith("."))await getcbfunc(Mt,Mt.slice(1),[],i,t),jt="";else{const Nt=(Wt[1]||"").toLowerCase(),Tt=getcolonne(Wt[2]||"");jt=await getcbfunc(Mt,Nt,Tt,i,t)}jt&&outpush(r,jt)}else s.parsefnpunto&&"function"==typeof s.parsefnpunto&&h.contenuto.startsWith(".")?await s.parsefnpunto({dati:h.contenuto,output:r,id:s.id,vari:t.vari,amb:t}):(Mt=await intvaluta(t,e,h.contenuto),outpush(r,Mt))}}u++}return r}async function muGenerate(t,e,a,s,i=0){if(t.isgenera&&s){const r={counter:0,keys:{},isTestmode:i};if(a){if(!t.genera[a])return!1;await muGenerate_0(t,e,a,s,r)}else for(const a in t.genera)await muGenerate_0(t,e,a,s,r);return!0}}async function muGenerate_0(t,e,a,s,i){const r=t.genera[a];if(r){i.counter2=0;const n={};async function processavariante(o){if(i.isTestmode&&i.counter>i.isTestmode)return;if(o<r.vars.length){const a=r.vars[o];if(!n[a]){const s=await dammivariante(e,t,a),i=s?Object.keys(s.rows):void 0;if(i&&i.length>0){for(const t of i)e.vari.add(s.name,s.tovar(t)),n[a]=!0,await processavariante(o+1),n[a]=!1;return}logga("manca la variante",a)}}for(const a of r.calcola)t.formula[a]&&await muEval(e,t,t.formula[a],{limited:!0});for(const a of r.exclude)if(t.formula[a]){const s=await muEval(e,t,t.formula[a],{limited:!0});if(s)for(const t of s){if(muCalc(t))return}}const c=await muEval(e,t,r.codice,{limited:!0,localvar:t.localvar}),l={};for(const a of r.bom)if(t.formula[a]){let s=await muEval(e,t,t.formula[a],{limited:!0});s=s.join("\n").split("\n");for(const t of s)if(t){const e=getcolonne(t);l[a]||(l[a]=[]);const s={};for(let t=0;t<e.length;t++)s[`c${t}`]=e[t];l[a].push(s)}}await async function docallback(t,e,a,s,i,r){let n=!0;for(const o of e){const e=getcolonne(o);if(e[0]&&!r[e[0]]){r[e[0]]=1,r.counter++,r.counter2++;const o={__id:r.counter};for(let t=0;t<e.length;t++){let a=s.head[t]?s.head[t]:`c${t}`;"#"==a[0]?(a=a.substr(1),o[a]=Math.round(1e3*muCalc(e[t]))/1e3):o[a]=e[t]}await t(i,o,n?a:void 0,r.counter,r.counter2),n=!1}}}(s,c,l,r,a,i)}await processavariante(0)}}const g=["l","a","p"],b=/^\{(:?(var|valid|formula|genera|header|v|f|g|h))[\s|}]/im,w=["s","g","h","p","q"],y=[{cod:"t",des:"Variante"},{cod:"q",des:"V.Query"},{cod:"f",des:"Valore Fisso"},{cod:"g",des:"Gruppo"},{cod:"s",des:"Libero"},{cod:"m",des:"Misura"},{cod:"c",des:"Check (no/si)"},{cod:"z",des:"Check (si/no)"},{cod:"h",des:"Hidden"},{cod:"p",des:"Programmato"}],k=[{cod:"",des:"Libero"},{cod:"a",des:"Area"},{cod:"t",des:"Thumb",folder:"thumbs"},{cod:"i",des:"Image",folder:"textures"},{cod:"x",des:"3D file",folder:"3d"},{cod:"f",des:"Funzione",folder:"script"}];function valutaCondizioniTestata(t,e){const a=e.split("\n");for(const e of a)if(e.trim()){if(muCalc(t.valutasync(e)))return!0}return!1}class Macro{constructor(t,e){const{name:a,cat:s}=checkmu(e,t.cat||"");this.name=a,this.cat=s,this.amb=t,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.paralias={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){const t=[];return this.errori.forEach((e=>t.push({e:e}))),t}getparametri(t={}){const{noderiva:e}=t,a={};if(this.dims&&g.forEach((t=>{const e=muCalc(this.amb.vari.var(t));e&&(a[t]=String(e))})),this.head){for(const t of this.head)if(!t._h){if(e&&t._d&&t._d.cod)continue;let s=this.amb.vari.var(t.cod);w.includes(t.t)||"string"==typeof s&&(s=s.split(",")[0]),a[t.cod]=s}}else if(this.parametri?._)for(const t of this.parametri._){const e=(t.split("=")[0]||"").trim().toLowerCase();let s=this.amb.vari.var[e];s=(s||"").split(",")[0],a[e]=s}return a}async setparametri(t){const e={},a=this.amb.ruleset||{};t||(t={}),this.dims&&g.forEach((e=>{let a=t[e]||this.dims[e].val;a=parseFloat(a)||0,this.dims[e].visible&&(a<this.dims[e].min&&(a=this.dims[e].min),a>this.dims[e].max&&(a=this.dims[e].max)),t[e]=String(a)}));for(const s of this.head){const i=a[s.cod];i&&(i.islock?(s.visible="0",t[s.cod]=i.opz,s._islock=!0):t[s.cod]||(t[s.cod]=i.opz)),"g"!=s.t&&("z"!=s.t||t[s.cod]||(t[s.cod]="1"),s._v=t[s.cod]||"",e[s.cod]=!0)}for(const a in t)e[a]||(e[a]=!0,await impostavariante(this.amb,this,a,t[a]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,t[this.head[0].cod]||void 0,!0,t),this.getparametri()}async setparametro(t,e,a=!1,s={}){if(e&&"string"==typeof e&&e.includes("$")&&(e=await intvaluta(this.amb,this,e)),s||(s={}),this.head){const _imposta=async(t,e,a,i)=>{const r=t?.cod;if(t.valid&&!t._h1){const e=!valutaCondizioniTestata(this.amb.vari,t.valid);if(t._h!=e&&(t._h=e,["g","g1","g2"].includes(t.t)))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;a._h1=t._h}}}if(t._h||t._h1)return this.amb.vari.add(r,""),t._v=void 0,"";{if(delete t._h2,t.visible){const e=!valutaCondizioniTestata(this.amb.vari,t.visible);if(e&&(t._h2=e),["g","g1","g2"].includes(t.t))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;t._h2?a._h3=t._h2:delete a._h3}}}let i=this.amb.vari.var(r)||"";"thlm".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0]);let n=i;if("z"!=t.t||i||(this.amb.vari.add(r,"1"),i="1"),"m"==t.t&&t.spars){let e=t.spars;(e||"").includes("$")&&(e=await intvaluta(this.amb,this,e));const a=getcolonne(e);i=parseFloat(i||a[0])||0,(!a[1]||"").includes(";")&&(a[1]&&parseFloat(i)<a[1]&&(i=parseFloat(a[1])||0),a[2]&&parseFloat(i)>a[2]&&(i=parseFloat(a[2])||0)),i=String(i),this.amb.vari.add(r,i)}const o=await impostavariante(this.amb,this,r,e||t._v||i,t);if(t._v=void 0,i=this.amb.vari.var(r)||"","thl".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0],this.amb&&this.amb.deriva&&this.amb.deriva.length>0)){const e=this.amb.deriva.filter((t=>t.cod==r&&((!t.item||t.item==this.amb.item)&&((!t.model||t.model==this.amb.model)&&((!t.rule||t.rule==this.amb.rule)&&(!t.opz||t.opz==i))))));e.length&&e.forEach((e=>{let a=this.head.find((t=>t.cod==e.tocod));if(a){let r=this.amb.vari.var(a.cod);s&&s[a.cod]&&(r=s[a.cod]),"string"==typeof r&&(r=r.split(",")[0],r&&r!=n&&r!=i?delete a._d:(a._v=e.toopz||i,a._d={cod:t.cod,opz:e.toopz}))}}))}return o}};let i,r=-1;if("#dim"==t)a=1;else{if(r=this.head.findIndex((e=>e.cod===t)),r<0)return;const s=this.head[r];i=await _imposta(s,e,r),a&&delete s._d}if(a)for(let t=r+1;t<this.head.length;t++)await _imposta(this.head[t],void 0,t);return i}return await impostavariante(this.amb,this,t,e)}getmarker(){let t;if(this.head&&this.head.length){let e=this.head.find((t=>"marker"==(t.stipo||"").trim().toLowerCase().split(/[;,]/)[0].trim()));e&&e.cod&&(t=e.cod)}return t}isderivato(t){return"string"==typeof t&&(t=this.head.find((e=>e.cod==t))),!!(t&&t._d&&t._d.cod)}async impostaparametri(t,e,a=!1,s){if(this.head){this.paralias||(this.paralias={}),Array.isArray(this.head)||(this.head=[]);for(const t of this.head)t._v="",delete t._h,delete t._h1,delete t._h2,t.alias&&(this.paralias[t.cod]=t.alias)}s||(s={}),t||(t=[]),e||(e=[]);for(const a of[...t,...e]){const t=a.indexOf("=");if(t>0){let e=clean(a.substr(0,t));e.includes("$")&&(e=await intvaluta(this.amb,this,e));let s,i=a.substr(t+1);i.includes("$")&&(i=await intvaluta(this.amb,this,i)),this.head&&(s=this.head.find((t=>t.cod==e)))?s._v=i:await impostavariante(this.amb,this,e,i)}}if(this.head){let t=!0;for(const e of this.head){let i=await this.checkvalid(e.valid);a&&(i=!0),["g","g1","g2"].includes(e.t)?t=i:t&&i&&await this.setparametro(e.cod,s[e.cod]||e._v)}}}async checkvalid(t){if(!t)return!0;return!!muCalc(await intvaluta(this.amb,this,t))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return getOggetto(this,["amb"])}setmacro(t){if(setOggetto(this,fromjson(t,{})),this.localvar)for(const t in this.localvar){const e=new Variante;setOggetto(e,this.localvar[t]),this.localvar[t]=e}}async load(t,a){let s,i;try{let r;if(({name:s,cat:i}=checkmu(t||this.name,a||this.cat||"")),this.name||(this.name=s),this.cat||(this.cat=i),this.azzera(),e&&(r=await e(i,s),"string"==typeof r&&(r.startsWith("{")||r.startsWith("["))&&(r=fromjson(r)),r&&r.head&&!Array.isArray(r.head)&&(r.head=[]),this.amb.checkscripts(r.linkscript),delete r.linkscript,r.head&&(r.dims=getheaddims(r.dims))),r){if("string"==typeof r)await this.parsedata(r);else for(const t in r)this[t]=r[t];return!0}n.add(`missing cbGetFile: ${i}/${s}`)}catch(t){n.add(geterrdes(t),`macro.load: ${s}/${i}`)}}async loadAndCompile(t,e,a=!1){let s;const{name:r,cat:o}=checkmu(t,this.cat||e);return this.azzera(),i&&(s=await i(o,r)),s?(await this.parsedata(s,a),this.getmacro()):void n.add(`missing cbGetFile: ${r}/${o}`)}async#e(t,e,a,s){let r;const{name:n,cat:o}=checkmu(t,this.cat);if(i&&(r=await i(o,n)),!r)return[];if(r.includes("$1")&&s&&s.length>0)for(let t=1;t<s.length;t++)r=r.replaceAll(`$${t}`,s[t]);let c=muClComments(r);const l=[];e&&(c=c.filter((t=>!/^\{(:?(var|valid|formula|header|genera|v|f|h))[\s|}]/im.test(t))));for(const t of c){const s=b.exec(t);if(s)e=!s[1].startsWith(":"),l.push(t);else{const s=/^\s*\{i\s(.+)?\}/im.exec(t);if(s){const t=getcolonne(s[1]);if(!a.includes(t[0])){a.push(t[0]);const s=await this.loadinclude(t[0],e,a,t);Array.isArray(s)&&l.push(...s),a.pop()}}else l.push(t)}}return l}async parsedata(t,e=!1){if(this.azzera(),!t)return;const a=[];let s=muClComments(t),i=!1;const r=[];for(const t of s){const e=b.exec(t);if(e)i=!e[1].startsWith(":"),a.push(t);else{const e=/^\s*\{i\s(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[1]),s=await this.#e(t[0],i,[t[0]],t);Array.isArray(s)&&a.push(...s)}else a.push(t)}}i=!1;let n=this.codice;for(const t of a){const e=b.exec(t);if(e)if(e[1].startsWith(":"))n=this.codice;else switch(e[1]){case"genera":case"g":{let e=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(getcolonne(e[2])[0]);this.genera[t]=[],n=this.genera[t]}else n=this.errori,n.push(t)}break;case"valid":n=this.valid;break;case"var":case"v":{const e=/^\s*\{(var|v)\s+(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[2]),a=checkname(t[0]);this.localvar[a]={name:a,des:t[1]||"",rows:[]},n=this.localvar[a].rows}else n=this.errori,n.push(t)}break;case"formula":case"f":{const e=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(e[2]);this.formula[t]=[],n=this.formula[t]}else n=this.errori,n.push(t)}break;case"h":case"header":n=r;break;default:this.errori.push(t),n=this.errori}else t.startsWith("{")&&(n=this.codice),n.push(t)}this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,e);for(const t in this.formula)this.formula[t]=this.cleanfiltraparametri(t,this.formula[t],e);for(const t in this.localvar){const e=new Variante,a=this.localvar[t];e.setheader(t,this.cat),e.rows={};for(const t of a.rows){const a=getcolonne(t),s=a[0].trim().toLowerCase();e.rows[s]={annulla:0,v:a}}a.des&&(e.des=a.des),this.localvar[t]=e}s=this.valid,this.valid=[];for(const t of s){let e=getcouple(t,",");e={v:e.v,msg:e.o},e.v&&(e.v.startsWith("#")?this.formula[e.v.substring(1)]&&this.valid.push(e):this.valid.push(e))}s=r;const o=[];for(const t of s){const e=/^\s*([\w\-_]+)+[;,\s]\s*(.*)?$/im.exec(t);if(e){const t=getcolonne(e[2]),a=clean(e[1]);let s;if(a){s=o.find((t=>t.cod==a)),s||(s={cod:a,t:"t"},o.push(s));for(const e of t){const t=getcouple(e);switch(t.v){case"t":s.t=t.o;break;case"def":case"default":s.def=t.o;break;case"valid":case"colonna":case"hidden":t.o.startsWith("#")?this.formula[t.o.substring(1)]&&(s[t.v]=t.o):s[t.v]=t.o;break;default:s[t.v]=t.o}}}}}this.head=o,s=this.genera;const c={};for(const t in s)if(Array.isArray(s[t])){const e={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;for(const i of s[t]){const s=a.exec(clean(i));if(s)switch(s[1]){case"calcola":case"c":e.calcola=[...e.calcola,...getcolonne(s[2])];break;case"exclude":case"e":case"escludi":e.exclude=[...e.exclude,...getcolonne(s[2])];break;case"bom":case"db":e.bom=[...e.bom,...getcolonne(s[2])];break;case"vars":case"v":e.vars=[...e.vars,...getcolonne(s[2])];break;case"head":case"h":e.head=getcolonne(s[2]);break;default:this.errori.push(`genera ${t} => ${i}`)}else e.codice.push(i)}e.codice=muClean(e.codice,!0),c[t]=e}this.genera=c}cleanfiltraparametri(t,e,a){if(this.paralias||(this.paralias={}),e&&e.length){let a=!1;const getparalias=t=>{const e=[],a=getcolonne(t);for(const t of a)if(t.includes(":")){const a=t.split(":");this.paralias[a[0]]=a[1],e.push(a[0])}else e.push(t);return e};for(let s=0;s<e.length;s++){const i=/^:p[;,\s]+(.*)?$/im.exec(e[s]);if(i)e[s]=null,a=!0,this.parametri[t]=getparalias(i[1]);else{const i=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(e[s]);i&&(e[s]=null,a=!0,this.parametri[t]=getparalias(i[2]))}}a&&(e=e.filter((t=>null!=t)))}return e=muClean(e,a)}}function parsevariabili(t){let e=!1;const a=[];for(;;){const s=/\$([{[(])/m.exec(t);if(!s){t&&e&&a.push({class:"",text:t});break}{e=!0;const i="["==s[1]?"inline":"variabile";s.index>0&&a.push({class:"",text:t.substring(0,s.index)});const{i:r}=parsevar(t,s.index+2,s[1],null);if(!(r>s.index)){a.push({class:i,text:t.substring(s.index)});break}a.push({class:i,text:t.substring(s.index,r+1)}),t=t.substring(r+1)}}return{fl:e,tk:a}}function parseexp(t,e,a){if(!a)throw new Error("missing callback");let s=!1;const i=[];for(;;){const r=e.exec(t);if(!r){t&&s&&i.push({class:"",text:t});break}r.index>0&&i.push({class:"",text:t.substring(0,r.index)}),i.push(...a(r)),s=!0,t=t.substring(r.index+r[0].length)}return{fl:s,tk:i}}function muParsecode(t,e){t||(t=" "),t.endsWith("\n")&&(t+=" ");const a=[{class:"",text:t}];for(let t=0;t<a.length;t++)if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\*[^]+?\*\/)/im,(t=>[{class:"comment",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\/.*)$/im,(t=>[{class:"commento2",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*\{.+?\})/m,(t=>[{class:"header",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*:\w+)(.*?$)/m,(t=>[{class:"param",text:t[1]},{class:"param2",text:t[2]}]));e&&a.splice(t,1,...s)}if(!e){if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*!\w+)/m,(t=>[{class:"function",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#let.? +)([\w_.]+)/im,(t=>[{class:"comando",text:t[1]},{class:"variabile",text:t[2]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(push|pop|ret|select|cases|endselect|ifndef|elseifndef|ifdef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|letm|lets|letv|lett|leto|cat))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(if\s*|elseif\s*))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(else|i |m |f |j |case|def ))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parsevariabili(a[t].text);e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(\$[\w_.]+)/im,(t=>[{class:"variabile",text:t[1]}]));e&&a.splice(t,1,...s)}}}}}}return a}class Pickers{constructor(){this.clear()}clear(){this.d={},this.keypics={},this.key="",this.keypics[this.key]=0}reset(){this.keypics={},this.key="";for(let t in this.d)this.d[t]._invalid=!0}pack(){let t=[];Object.entries(this.d).forEach((([e,a])=>{a._invalid&&t.push(e),delete a._invalid}));for(let e of t)delete this.d[e]}setkey(t){this.key=t,this.keypics[t]||(this.keypics[t]=0)}add(t){let e=this.keypics[this.key]||0,a=`${this.key}_${e}`;this.keypics[this.key]=e+1;let s=this.d[a]??{};return t=t??{},this.d[a]={...s,...t,_invalid:!1,_key:this.key,_id:e},a}}function toruleset(t){const e={};if(t&&t.length)for(const a of t)e[a.cod]=a;return e}function headerconvert(t){const e=muClComments(t,!1);t={};let a={r:[]},s=!1;for(const i of e){const e=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(i);if(e)a={cod:e[2],des:e[2],r:[]},s=!1,t[e[2]]=a;else if(!/^\s*:/.exec(i)){const t=i.split(","),e={cod:clean(t[0])};let r;r=(t[1]||"").trim(),r&&(e.des=r),r=clean(t[2]),r&&(e.tipo=r),r=clean(t[3]),r&&(e.alias=r),r=clean(t[4]),r&&(e.valid=r),r=clean(t[5]),r&&(e.visible=r),e.cod&&(s||"sep"!=e.tipo?a.r.push(e):(a.des=e.des,a.valid=e.valid,a.visible=e.visible,s=!0))}}return t}function aliasconvert(t){const e=muClComments((t+"").toLowerCase(),!1),a={};for(const t of e)if(!/^\s*:/.exec(t)){const e=getcolonne(t);e[0]&&e[1]&&(a[e[0]]={cod:e[1]})}return a}class Ambiente{#a=void 0;#s=void 0;#i=void 0;#r=void 0;constructor(t=".",e=100,a=!1){this.righevuote=a,this.maxdelays=e,this.setcatalog(t),this.fndotcallback=void 0,this.pick=new Pickers}setcatalog(t){return t=clean(t),this.cat!=t&&(this.cat=t,this.item=this.rule=this.model="",this.azzera(!0)),t}get muvalutatore(){return{getcolonne:getcolonne,getcouple:getcouple,muCalc:muCalc,muEval:muEval,tipifree:w}}azzera(t=!1){this.imgpreview={},this.vari=new Variabile,this.ruleset={},this.fndotcallback&&this.vari.setfndot(this.fndotcallback),this.ruleheader="",t&&(this.macro={},this.sqcache={},this.varianti={},this.varelenco={},this.macroelenco={},this.scripts={},this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0)}setimgpreview(t,e){e?this.imgpreview[t]=e:delete this.imgpreview[t]}getimgpreview(t){return this?.imgpreview[t||""]}setfndot(t){this.fndotcallback=t,this.vari.setfndot(t)}async#n(t){if(s&&!this.varelenco[t]){const e=await s("headers",t,"_varianti");Array.isArray(e)?this.varelenco[t]=e:e.vars&&(this.varelenco[t]=e.vars,e.alias&&(this.#s=e.alias)),this.varelenco[t]||(this.varelenco[t]=[])}}parseheaderfrominfo(t){if(t&&t.length>0)for(const e of t)switch(e.tipo){case"_headers":"string"==typeof e.value&&(e.value=headerconvert(e.value)),this.#a=e.value||{};break;case"_alias":"string"==typeof e.value&&(e.value=aliasconvert(e.value)),this.#s=e.value||{};break;case"_typos":if("string"==typeof e.value){const t=fromjson(e.value);for(const e in t){const a=t[e];a.db&&(a.db=muClean(muClComments(a.db))),a.list&&(a.list=muClean(muClComments(a.list)))}e.value=t}this.#r=e.value||{}}}setitem(t,e,a,s=[],i=0){this.item=clean(t,!0),this.rule=clean(e,!0),this.model=clean(a,!0),this.ruleset=toruleset(s),this.data=i||(new Date).toInt()}async getheader(t){let e;return!this.#a&&s&&(e=await s("headers",this.cat,"_headers"),this.parseheaderfrominfo(e)),this.#a||(this.#a={}),this.#a[t]}async getalias(){let t;return!this.#s&&s&&(t=await s("headers",this.cat,"_alias"),this.parseheaderfrominfo(t)),this.#s||(this.#s={}),this.#s}get deriva(){return this.#i,this.#i||[]}async getmacro(t){try{if("string"==typeof t&&(t={tipo:"M",contenuto:t}),!t||!t.contenuto)return;let e=t.contenuto;e.startsWith("$")&&(e=await this.vari.valuta(e));const a=/^([({}):$\w.\\/]+)[\s;,]*(.*)?$/im.exec(e);if(!a)return void n.add("Macro non valida:"+e,t);let s=clean(a[1],!0);s.includes("$")&&(s=await this.vari.valuta(s));const i=getcolonne(a[2]),{name:r,cat:o}=checkmu(s,this.cat);this.cat=o;const c=`${o}/${r}`;if(!this.macro[c]){const e=new Macro(this,r);await e.load()?this.macro[c]=e:n.add(`macro fail to load ${c}`,t)}return s=this.macro[c],s?{macro:s,pars:i}:(n.add(`macro non trovata ${c}`,t),{})}catch(e){n.add(geterrdes(e),`ambiente.getmacro: ${t?.contenuto}`)}}async getvariante(t){const{name:e,cat:a}=checkmu(t,this.cat);let s=e,i={};if(a==this.cat&&this.#s&&this.#s[e]&&(i=this.#s[e]||{},s=i.cod),await this.#n(a),this.varelenco[a]&&!this.varelenco[a].includes(e))return;const r=`${a}/${s}`;let n;return this.varianti[r]?n=this.varianti[r]:(n=new Variante(this),await n.load(r,a),this.varianti[r]=n),i&&(i.des&&(n.des=i.des),i.vdef&&(n.vdef=i.vdef)),n}async varcompila(t,e){const a=new Variante(this);if(await a.load(t,this.cat,!0),a.alias){(await this.getalias())[t]=a.alias}e("variants",{cod:t,des:a.des||"",alias:a.alias,info:a.alias?"":JSON.stringify(getOggetto(a,["amb"]))})}async macrocompila(t,e){const a=new Macro(this,t);await a.loadAndCompile(`${t}.mu`);const s=a.getmacro();e("macros",{cod:t,info:JSON.stringify(s),isgenera:a.isgenera,isheader:a.isheader,iscodice:a.iscodice})}async barrecompila(t,e,a){const s=new CodiceBarra;await s.compila(t,e);for(const t in s.barre){a("barcodes",{cod:t,des:"",info:JSON.stringify(s.barre[t])})}return s}async tojson(t){let e;return a&&(e=await a("json",t)),e}async compila(t,e){if(e){for(const a of t.var)await this.varcompila(a,e);for(const a of t.mu)await this.macrocompila(a,e);if(e("infos",{cod:"info",des:t.cat,info:JSON.stringify({cat:t.cat,md:t.info})}),this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0,s){const t=await s("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(t)}this.#a?e("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):logga("missing headers"),this.#s&&e("infos",{cod:"alias",des:"",info:JSON.stringify(this.#s)}),this.#i&&e("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#i)}),this.#r&&e("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#r)})}}async checkvarianti(e,a){if(!e||!a?.length)return;e=checkname(e),await this.#n(e);const s=this.varelenco[e],i=[];for(let t of a){t=clean(t,!0);const a=`${e}/${t}`;this.varianti[a]||s&&s.includes(t)&&i.push(t)}if(i.length&&t){const a=await t(e,i);if(a&&a.length)for(const t of a){const{name:a,content:s}=t,i=new Variante(this);i.setheader(a,e),s&&await i.loadContentExtended(s),this.varianti[i.key]=i}}}async getheaderfromdb(e){const a=await s("header",this.cat,e,!this.#i);let{head:i,rows:r,macros:n,deriva:o,llvars:c}=a;for(const t of r)t.cod=clean(t.cod),t.alias=clean(t.alias),t.t=clean(t.t);if(!c){c=new Set;for(const t of r)if("p"==t.tipo);else{const e=t.alias?t.alias:t.cod;c.add(e)}c=[...c]}this.#i||(this.#i=o),await this.#n(this.cat),i.cod=clean(i.cod),i.rule=clean(i.rule),i.ruledef=i.ruledef||[];const l=[],u=this.varelenco[this.cat];for(const t of c)this.varianti[`${this.cat}/${t}`]||u&&u.includes(t)&&l.push(t);if(l.length&&t){const e=await t(this.cat,l);if(e&&e.length)for(const t of e){const{name:e,content:a}=t,s=new Variante(this);s.setheader(e,this.cat),a&&await s.loadContentExtended(a),this.varianti[s.key]=s}}return{head:i,rows:r,macros:n}}async getlinkedmacros(t,a){const getkey=t=>t.includes("/")?t:`${this.cat}/${t}`,s=[];let i;if(t&&(i=getkey(t),this.macro[i]||s.push(t)),a&&"string"==typeof a){const t=a.split(";");for(const e of t)i=getkey(e),this.macro[i]||s.push(e)}if(s&&s.length>0&&e){const t=await e(this.cat,s);if(t&&t.length>0)for(const e of t){this.checkscripts(e.content?.linkscript),delete e.content?.linkscript;const t=new Macro(this,e.name);for(const a in e.content){const s=e.content[a];t[a]=s}this.macro[t.key]=t}}}checkscripts(t){if(Array.isArray(t)&&t.length)for(let e of t)this.scripts[e.name]||(this.scripts[e.name]=e.value)}async setruleheader(t,e,a){const{name:s,cat:i}=checkmu(t,this.cat);a&&a.length&&(this.ruleset=toruleset(a));const r=`${i}/${s}`;if(!this.macro[r]){const e=await this.getheaderfromdb(s),{head:a,rows:o,macros:c}=e;await this.getlinkedmacros(a.rule,c);const l=new Macro(this,s);if(!a)return void n.add("Missing rule: "+t);if(a.rule){const t=this.macro[`${i}/${a.rule}`];if(t)for(const e in t)["cat","name","key"].includes(e)||(l[e]=t[e])}o&&o.length&&(l.head=o),this.macro[r]=l}this.ruleheader=r;const o=this.macro[r];return n.azzera(),await o.setparametri(e),o}getruleheader(){return this.macro[this.ruleheader]}async setvariante(t,e){return await impostavariante(this,null,t,e)}async valuta(t){let e;return"string"==typeof t&&(t=muClean(muClComments(t,this.righevuote))),Array.isArray(t)&&(logga("m1",t),e=await muEval(this,null,t)),e}setinfos(t){t&&(this.#a=t.headers,this.#s=t.alias,this.#i=void 0,this.#r=t.typos)}async splitteroggetti(t){let e=await this.getvariante(t),a=[];return e?.rows&&Object.values(e.rows).forEach((t=>{a.push({tipo:t.v[2]||"",cod:t.v[0]||"",des:t.v[1]||"",macro:t.v[4]||"",sps:parseInt(t.v[3])||0,isshape:parseInt(t.v[5])})})),a.length||a.push({tipo:"avob",cod:"__",des:"Vuoto",macro:"",sps:0}),a}}function toJson(t){return JSON.stringify(t,null,2)}function clamp(t,e=-1/0,a=1/0){return(t=Number(t)||0)<e&&(t=e),t>a&&(t=a),t}function gettipocolonna(t){return k.find((e=>e.cod==t))?.des||k[0].des}function gettipofolder(t){return k.find((e=>e.cod==t))?.folder||""}function newVariabile(){return new Variabile}async function newVariante(t,e,a){const s=new Variante(a);return await s.load(t,e),s}function newAmbiente(t,e=100){return new Ambiente(t,e)}function newMacro(t,e){return new Macro(t,e)}function sanitize(t,e=!1,a=!1){if(!t)return"";let s=String(t).trim().replace(a?/[^a-zA-Z0-9-+_\.]/g:/[^a-zA-Z0-9-+_]/g,"_");return e?s.toLowerCase():s}function muValuta(t,e,a){a&&t.azzera();return t.valuta(e)}function muInit(t,e,a,s,i,r,n){const o=new Ambiente(t);return setcallbacks(e,a,s,i,r,n),o}function muCompileScript(t){return t&&"object"==typeof t?t:t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")?JSON.stringify(t):muClean(muClComments(t))}async function muEvalScript(t,e,a,s=!0){if(e=muCompileScript(e),s&&t.azzera(),a)for(const e of a){const{v:a,o:s}=getcouple(e);t.vari.add(a,s)}return{output:await muEval(t,null,e,{}),vari:t.vari.dictionary,errori:n}}Date.prototype.toInt||(Date.prototype.toInt=function(){const t=this;return t.getDate()+100*(t.getMonth()+1)+1e4*t.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const x={mus:{variants:{cod:"s",des:"s",alias:"s",info:"s",md:"s",__pk:"cod"},extras:{tipo:"s",cod:"s",info:"s",__pk:"tipo, cod"},macros:{cod:"s",des:"s",info:"s",md:"s",def:"s",isgenera:"i",iscodice:"i",isheader:"i",__pk:"cod"},infos:{cod:"s",des:"s",info:"s",__pk:"cod"},barcodes:{cod:"s",des:"s",info:"s",__pk:"cod"}}};export{Ambiente,CodiceBarra,Macro,Variabile,Variante,checkmu,checkname,clamp,clean,dammivariante,n as errori,fromjson,getOggetto,getcolonne,getcouple,geterrdes,getheaddims,gettipocolonna,gettipofolder,hash,impostavariante,intvaluta,isJsonStr,isObject,muInit as jsTest,logga,muCalc,muClComments,muClean,muCompileScript,muEval,muEvalScript,muGenerate,muInit,muLimits,muParsecode,muValuta,x as mustr,newAmbiente,newMacro,newVariabile,newVariante,noquote,parselimitifromdb,parselimitifromrule,parsevar,poppars,pushpars,quote,round,sanitize,seedarray,seeder,setOggetto,sortrows,testsync,k as tipicolonna,w as tipifree,y as tipiheader,tk,toCadPars,toJson,tonum,xdt};
1
+ function testsync(t,e){return t+e}const tk=()=>(new Date).valueOf();function seedarray(t,e){if(t&&t.length){let a=[];for(let e=0;e<t.length;e++){let s=t[e];if(s.p)for(let t=0;t<s.p;t++)a.push(e);else a.push(e)}return t[a[seeder(a.length,e)]]}}function seeder(t,e="seed42"){const a=function mulberry32(t){return function(){t=(t|=0)+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}(function xmur3(t){let e=1779033703^t.length;for(let a=0;a<t.length;a++)e=Math.imul(e^t.charCodeAt(a),3432918353),e=e<<13|e>>>19;return function(){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^=e>>>16)>>>0}}(String(e))());return Math.floor(a()*t)}function isJsonStr(t){if("string"!=typeof t)return!1;const e=t.trim();return e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")}const isObject=t=>!(!t||!Array.isArray(t)&&"object"!=typeof t);function quote(t){if((t=(t||"").trim()).length>1){if(t.startsWith('"')&&t.endsWith('"'))return t;if(t.startsWith("(")&&t.endsWith(")"))return t}return`"${t}"`}function noquote(t){return(t=t.trim()).startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")")?t.slice(1,-1):t}function hash(t){let e="";if("string"==typeof t||"number"==typeof t)e=t+"";else if("object"==typeof t&&t){const a=Object.keys(t).sort(),s="\0";e=a.map((e=>`${e}${s}${String(t[e])}`)).join(s)}let a=2166136261,s=2218511855;for(let t=0;t<e.length;t++){const i=e.charCodeAt(t);a^=i,a+=a<<5^2779096485,s^=a,s=((s<<3)+i^2134516169)>>>0}return a>>>=0,a.toString(16)+s.toString(16)}function geterrdes(t){if(t&&"object"==typeof t){let e=t.stack?.toString().replace(/^.*?node_modules.*$/gim,"")||t.message||"";e=e.replaceAll("/","_").replaceAll(".js","").replaceAll("\n\n","\n").replace(/;\s+/gi,"\n"),t=e}return(t=t.replace(/sqlite/gi,"SQL ")).replaceAll(";",",").trim()}let t,e,a,s,i,r;const logga=(...t)=>{r?r(t):console.log(...t)};function setcallbacks(n,o,c,l,u,h){e=n,t=o,a=c,s=l,i=u,r=h}const xdt=()=>(new Date).valueOf();function clean(t,e=!1){return e?(t||"").trim().toLowerCase():(t||"").trim()}function getcouple(t,e="=",a=!0){const s=(t=t||"").indexOf(e);return s>=0?{v:clean(t.substring(0,s),a),o:t.substring(s+e.length).trim(),fl:!0}:{v:clean(t,a),o:"",fl:!1}}function checkmu(t,e){if((t=(t||"").trim()).indexOf("/")>0){const a=t.split("/");e=a[0]||"",t=a[1]||""}if(!e)throw new Error("manca il catalogo per "+t);return{name:t,cat:e=checkname(e)}}function checkname(t,e=!1){if(t=(t||"").trim(),e&&!t)return"";if(!t||!/^[a-zA-Z_][a-z0-9A-Z_+-]*$/gim.test(t))throw new Error(`nome non valido: "${t}" \n deve contenere solo lettere, _, -, e numeri`);return t.toLowerCase()}function getcolonne(t,e=!1){t=String(t||"");const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(!/["({[]/.test(t))return t.split(/[,;]/).map((t=>t.trim()));const s=[];let i="",r=0,n=!1;for(let e=0;e<t.length;e++){const a=t[e];if(0===r&&'"'===a&&(0!==e&&"\\"===t[e-1]||(n=!n)),n||("("===a||"["===a||"{"===a?r++:")"!==a&&"]"!==a&&"}"!==a||(r=Math.max(0,r-1))),","!==a&&";"!==a||0!==r||n)i+=a;else{const t=i.trim();s.push(t),i=""}}const o=i.trim();return o&&s.push(o),s.map((t=>(t=t.trim(),!e&&(t.startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")"))?t.slice(1,-1):t)))}const parsevar=(t,e,a,s,i=!1)=>{const r=["[","(","{"],n=["]",")","}"];s||(s="["==a?"]":"("==a?")":"}");const o=r.includes(a);let c=1,l=0;const u=[];for(let h=e;h<t.length;h++)if(o&&r.includes(t[h])||t[h]==a)c++;else if(o&&n.includes(t[h])||t[h]==s){if(c--,0==c&&t[h]==s)return u[l]=t.substring(e,h),{i:h,res:u}}else if(":"==t[h])1==c&&(u[l]=t.substring(e,h),e=h+1,l++);else if("\n"==t[h]&&i)return{i:h,res:u};return{i:-1,res:t.substring(e)}};function setOggetto(t,e){"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((a=>{Object.hasOwn(t,a)&&"function"!=typeof t[a]&&(t[a]=e[a])}))}function getOggetto(t,e=[]){if(Array.isArray(t))return t.map((t=>getOggetto(t,e)));if(t&&"object"==typeof t){const a={};for(const[s,i]of Object.entries(t))"function"==typeof i||e&&e.includes(s)||(a[s]=getOggetto(i,e));return a}return t}function fromjson(t,e){if(Array.isArray(t))return t;if("string"!=typeof t)return t;if(""==t)return e||{};try{return JSON.parse(t)}catch(a){return logga(`Errore parsing JSON: ${a}\n${t}`),e||{}}}const n=new class Errori{constructor(){this.azzera()}azzera(){this.err=[]}add(t,e){this.err.push({msg:t,row:e})}get(){return this.err}get length(){return this.err.length}toString(){const t=[];for(const e of this.err){const a="object"==typeof e.msg?JSON.stringify(e.msg):e.msg||"";t.push(`${e.row?e.row+":":""}${a}`)}return t.join("\n")}},round=(t,e=-1)=>{const a="string"==typeof t?parseFloat(t)||0:t;if(e<0)return Math.round(a||0);const s=Math.pow(10,e);return Math.round(a*s)/s||0};function getheaddims(t){let e;try{e="object"==typeof t&&t?t:JSON.parse(t||"{}")}catch(t){e={}}return e||(e={}),e.l||(e.l={visible:1,val:1e3,min:0,max:1e4}),e.a||(e.a={visible:1,val:1e3,min:0,max:1e4}),e.p||(e.p={visible:1,val:1e3,min:0,max:1e4}),e}function sortrows(t){const e=Object.keys(t).sort(),a={};for(let s=0;s<e.length;s++){const i=e[s],r=t[i];s+1<e.length&&e[s+1].startsWith(i+".")?r.hasliv=1:delete r.hasliv,a[i]=r}return a}const o=/(?<!\w)\(/g,c=/^-?[0-9.]+$/,l=/^(\w+)(!)?\[(.*)?\]$/,u=/[0-9.]/,h=/[+\-*/^%]/,f=/[a-zA-Z]/i;function valutaparentesi(t){for(t=(t+"").trim();;){const e=o.exec(t);if(!e)break;{const{i:a,res:s}=parsevar(t,e.index+1,"(",")");if(a<=0)break;t=t.substring(0,e.index)+valutaparentesi(s[0])+(a>=0?t.substring(a+1):"")}}return function operatoricomparazione(t){let e,a;const s={"||":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"|":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"&&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"<<=":()=>clean(e)<=clean(a),">>=":()=>clean(e)>=clean(a),"===":()=>clean(e)==clean(a),"==":()=>clean(e)==clean(a),"!!":()=>clean(e)!=clean(a),"<<":()=>clean(e)<clean(a),">>":()=>clean(e)>clean(a),"<=":()=>muCalcbase(e)<=muCalcbase(a),">=":()=>muCalcbase(e)>=muCalcbase(a),"<":()=>muCalcbase(e)<muCalcbase(a),">":()=>muCalcbase(e)>muCalcbase(a),"=":()=>muCalcbase(e)==muCalcbase(a),"!":()=>muCalcbase(e)!=muCalcbase(a)};let i=-1,r="";for(const e in s)if(i=t.indexOf(e),i>=0){r=e;break}return-1!==i?(e=t.slice(0,i),a=t.slice(i+r.length),s[r]&&s[r]()?1:0):muCalcbase(t)}(t=function valutainsiemi(t){if(t.includes("[")){function resinisiemi(t){const e=t[1],a=!!t[2],s=getcolonne(t[3]);for(const t of s)if(t==e)return a?"0":"1";return a?"1":"0"}for(;;){const e=l.exec(t);if(!e)break;{const a=resinisiemi(e);t=t.substring(0,e.index)+a+t.substring(e.index+e[0].length)}}}return t}(t))}const d={sqrt:t=>Math.sqrt(t),sqr:t=>Math.sqrt(t),pow:(t,e)=>Math.pow(t,e),int:t=>Math.floor(t),floor:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,round:(t,e=0)=>Math.round((Number.parseFloat(t)||0)*10**e)/10**e,dec:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,abs:t=>Math.abs(t),sin:t=>Math.sin(t*Math.PI/180),cos:t=>Math.cos(t*Math.PI/180),tan:t=>Math.tan(t*Math.PI/180),asin:t=>180*Math.asin(t)/Math.PI,acos:t=>180*Math.acos(t)/Math.PI,atan:t=>180*Math.atan(t)/Math.PI,atan2:(t,e)=>180*Math.atan2(t,e)/Math.PI,seeder:(t,e)=>seeder(t,e),log:t=>Math.log(t),log10:t=>Math.log10(t),min:(...t)=>Math.min(...t),max:(...t)=>Math.max(...t),clamp:(t,e,a)=>Math.max(e,Math.min(a,t)),rnd:(t,e)=>t?e?Math.floor(Math.random()*(e-t+1))+t:Math.floor(Math.random()*t):Math.random(),cas:(t,e)=>Math.floor(Math.random()*(e-t+1))+t};function muCalcbase(t){let e=0;function parseOperator(){const a=t[e];return h.test(a)?(e++,a):null}function parsePrimary(){if("+"===t[e]||"-"===t[e]){return("-"===t[e++]?-1:1)*parsePrimary()}if(u.test(t[e]))return function parseNumber(){const a=e;for(;e<t.length&&u.test(t[e]);)e++;return Number(t.slice(a,e))}();if("("===t[e]){e++;const a=parseExpr();return")"===t[e]&&e++,a}return f.test(t[e])?function parseFunctions(){const a=t.slice(e);if(!a)return 0;for(const[s,i]of Object.entries(d)){const r=new RegExp(`^(${s})\\(`,"i").exec(a);if(r){e+=r[0].length;let a=[];for(;;){let s=parseExpr();if(a.push(s),")"===t[e]){e++;break}if(","!=t[e])break;e++}return i(...a)}}return e++,parseExpr()}():0}function parseFactor(){let a=parsePrimary();for(;e<t.length&&/[/*^%]/.test(t[e]);){const t=parseOperator(),e=parsePrimary();"*"===t?a*=e:"/"===t?a=e?a/e:0:"%"===t?a=e?a%e:0:"^"===t&&(a=Math.pow(a,e))}return a}function parseExpr(){let a=parseFactor();for(;e<t.length&&/[+-]/.test(t[e]);){const t=parseOperator(),e=parseFactor();"+"===t?a+=e:"-"===t&&(a-=e)}return a}return t=t.replace(/\s/g,""),parseExpr()}function muCalc(t){if(!t)return 0;if("number"==typeof t)return t||0;if("string"!=typeof t)return 0;const e=t.replaceAll(",",".");return c.test(e)?Number(e)||0:valutaparentesi(t)||0}const tonum=(t,e=-1)=>{if(!t)return 0;let a=0;if("number"==typeof t)a=t||0;else if("string"==typeof t){const e=(t=t.replaceAll(",",".")).match(/^-?[0-9.]+$/);a=e&&e.length>0?Number(e[0])||0:muCalc(t)}if(e>=0)switch(e){case 0:a=Math.round(a);break;case 1:a=Math.round(10*a)/10;break;case 2:a=Math.round(100*a)/100;break;case 3:a=Math.round(1e3*a)/1e3;break;case 4:a=Math.round(1e4*a)/1e4;break;case 5:a=Math.round(1e5*a)/1e5;break;case 6:a=Math.round(1e6*a)/1e6}return a||0},m=100;function valutavar(t,e){const a=e[0]||"";if(!a)return"";if(t.counter>=m)return a;const s=valuta0(t,a);let i;if(t.stl[s])i=`-- R:${s} --`;else{const e=t.var(s);if(isObject(e))return e;t.stl[s]=!0,i=valutabase(t,e),delete t.stl[s]}if(t.counter>=m)return a;if(e[1]){let a=getcolonne(i);if("l"==e[1])return String(a.length);const s=valuta0(t,e[1]);let r;if(/^[\d.]+$/.test(s)){let t=s.split(".").map((t=>parseInt(t)));for(let e=0;e<t.length-1;e++){let s=t[e];if(!(s>=0&&s<a.length))return"";a=getcolonne(a[s])}r=t[t.length-1]}else r=muCalc(s);if(!(r>=0&&r<a.length))return"";for(i=valuta0(t,a[r]);;){let e=i.indexOf("$[");if(e<0)break;const{i:a}=parsevar(i,e+2,"[","]");if(a<e)break;let s=i.slice(e+2,a);i=i.substring(0,e)+valutaquadra(t,s)+i.substring(a+1)}}if(e[2]){const a=muCalc(valuta0(t,e[2]));if(a){let s=0;return e[3]&&(s=muCalc(valuta0(t,e[3]))),a<0?i.slice(a):s?i.substring(a-1,a+s-1):i.substring(a-1)}}return i}function valutaquadra(t,e){let a=getcolonne(e||"");const s=clean(a[0]);function replacecharcode(t){return"\\t"==t?"\t":"\\n"==t?"\n":(t||"").replace(/&(\d+)/g,((t,e)=>String.fromCharCode(parseInt(e))))}switch(s){case"set":{const e=valuta0(t,a[1]||""),s=valuta0(t,a[2]||"");t.add(e,t.var(s))}break;case"ex":{const e=valuta0(t,a[1]||"");let s=valuta0(t,a[2]||"");s||(s=",");const i=muCalc(valuta0(t,a[3]||"")),r=e.split(s);return i>0&&r[i-1]||""}case"ex2":{const e=replacecharcode(a[1]||""),s=muCalc(valuta0(t,a[2]||""));a.splice(0,3);return a.join(";").split(e)[s>0?s-1:0]||""}case"replace":return a[1].replace(new RegExp(a[2]||"x","gim"),(a[3]||"").trim());case"replace2":case"rp2":try{let t=replacecharcode(a[1]||"x");const e=replacecharcode(a[2]||"").trim();a.splice(0,3),t=t.replace(/&(\d+)/g,((t,e)=>`\\u${parseInt(e).toString(16).padStart(4,"0")}`));return a.join(";").replace(new RegExp(t,"im"),e)}catch(t){return""}case"look":case"lookb":{const t=parseFloat(a[1]||"");if(a=a.slice(2).map((t=>parseFloat(t)||0)),"lookb"==s){const e=a.filter((e=>e<=t));return e.length?Math.max(...e):t}{const e=a.filter((e=>e>=t));return e.length?Math.min(...e):t}}case"tk":{let e=muCalc(valuta0(t,a[1]||""))||0;if(!e){e=muCalc(valuta0(t,a[2]||""));const s=a[1]||"";return e?a[3].split(s)[e-1]:""}return a[e>0?e+1:2]||""}case"totab":return a.splice(0,1),a.join("\t");case"tosep":{const t=replacecharcode(a[1]||"")||";";return a.splice(0,2),a.join(t)}case"len":{let t;return a.length>2?(a.shift(),t=a.join(";")):t=a[1]||"",t.length}case"mid":{const e=valuta0(t,a[1]||""),s=muCalc(valuta0(t,a[2]||"")),i=muCalc(valuta0(t,a[3]||""));return e.substring(s-1,s+i-1)}case"arrotonda":{const t=muCalc(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=muCalc(a[2]),0==e&&(e=1e3)),Math.round(t*e)/e}case"iif":return muCalc(valuta0(t,a[1]))?a[2]||1:a[3]||0;case"instr":case"instr2a":{const t=a[1]||"",e=a[2]||"";return t.toLowerCase().indexOf(e.toLowerCase())+1}case"instr2":{const t=a[1]||"";return a.splice(0,2),a.join(";").toLowerCase().indexOf(t.toLowerCase())+1}default:return s.startsWith(".")?{fun:e,pars:[]}:{fun:s,pars:a}}}function valuta0(t,e){if(e+="",t.counter>=m)return e;for(;;){const a=/\$([{(])/im.exec(e);if(!a)break;{const s=a.index,{i:i,res:r}="("==a[1]?parsevar(e,s+2,"(",")"):parsevar(e,s+2,"{","}");let n=valutavar(t,r);if(isObject(n))return n;e=valuta0(t,e.substring(0,s))+n+(i>=0?valuta0(t,e.substring(i+1)):"")}}return e=(e=e.replace(/\$([a-z|][\w|.]*)/gi,((e,a)=>{let s="";for(;a.length;){let e;if(t.stl[a]?e=`--R: ${a} --`:(t.stl[a]=!0,e=valutabase(t,t.var(a)),delete t.stl[a]),e||!(a.length>1)){s=e+s;break}s=a.slice(-1)+s,a=a.substring(0,a.length-1)}return s}))).replace(/\$(\d+):(\d+)(:(\d+))?/g,((t,e,a,s,i)=>{i=i?+i:1;const r=[];for(let t=+e;t<=+a;t+=i)r.push(t.toString());return r.join(";")}))}function valutabase(t,e){return e&&(t.counter++,t.counter<=m&&(e=valuta0(t,e)),t.counter--),e}class Variabile{constructor(){this.stl={},this.dictionary={},this.vec=[],this.counter=0,this.fndotcallback=void 0}static isValidKey(t){return/^[\w][\w\d.[\]]*$/.test(t)}static sanitizeKey(t){return t.replace(/[^a-zA-Z0-9_.[\]]/g,"_")}setfndot(t){this.fndotcallback=t}push(){this.vec.push({saves:[],dic:{...this.dictionary}})}pop(){if(this.vec.length>0){let t=this.vec.pop(),e={};if(t.saves&&t.saves.length)for(let a of t.saves)e[a]=this.dictionary[a];if(this.dictionary=t.dic,t.saves&&t.saves.length)for(let a of t.saves)this.dictionary[a]=e[a]}}savevars(t){if(!this.vec.length>0)return;let e=this.vec[this.vec.length-1];e.saves||(e.saves=[]);let a=t.split(",");for(let t of a){const a=Variabile.sanitizeKey(t);a&&!e.saves.includes(a)&&e.saves.push(a)}}clear(){this.vec=[],this.dictionary={}}azzera=()=>this.clear();var(t){let e="";const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(t.indexOf("|")>=0){const a=t.split("|");t=a[0],e=a[1]}function toformat(t,e){switch(e.trim().toLowerCase()){case"0":return String(parseInt(t)||0);case"-":return String((parseInt(t)||1)-1);case"+":return String((parseInt(t)||0)+1);case"data":return a=parseFloat(t)||0,new Intl.DateTimeFormat("it",{day:"2-digit",month:"short",year:"2-digit"}).format(a.toDate());case"euro":return((t,e="")=>{if(t){let e=Intl.NumberFormat("en",{style:"currency",currency:"EUR"}).format(t);return e=e.replace(/€/g,"").replace(/\./g,";").replace(/,/g,".").replace(/;/g,",")+"€",e}return e})(parseFloat(t));case"num":return tonum(parseFloat(t));case"n":case"n0":case"n1":case"n2":case"n3":case"n4":{const a=parseInt(e.slice(1))||0;return tonum(parseFloat(t),a)}case"u":return String(t).toUpperCase();case"l":return String(t).toLowerCase();default:return t}var a}const s=Variabile.sanitizeKey(t);if(s.startsWith(".")&&this.fndotcallback){const t=this.fndotcallback(s.toLowerCase());if(t)return toformat(t,e)}if(Variabile.isValidKey(s)){const t=s.toLowerCase(),a=/^([\w][\w\d]*)([.[])/.exec(t);if(a){const s=this.dictionary[a[1]];if(s&&"object"==typeof s)return toformat(function objval(t,e){const a=e.split(".");let s=t;for(let t=0;t<a.length;t++){const e=a[t],i=e.match(/(.*?)\[(\d*)\]/);if(i){if(i[1]&&(s=s[i[1]]),void 0===s)return"";s=s[parseInt(i[2],10)||0]}else switch(e){case"_k":s=(Object.keys(s)||[]).join(",");break;case"_v":s=Object.values(s)||[];break;case"_l":s=s.length||0;break;default:s=s[e]}if(void 0===s)return""}return"number"==typeof s?s+"":s}(s,("["==a[2]?a[2]:"")+t.substring(a[0].length)),e)}return toformat(this.dictionary[t]||"",e)}return""}getvar(t){return this.var(t)}colonna(t,e){return getcolonne[e]||t}dump(t=!1){let e=[];for(const t in this.dictionary)e.push({cod:t,val:this.dictionary[t]});return e=e.sort(((t,e)=>t.cod>e.cod)),t?e.map((t=>`${t.cod} = ${isObject(t.val)?JSON.stringify(t.val,null,2):t.val}`)):e}add(t,e){if(t)if("number"==typeof e&&(e=String(e)),t.includes("*")){const a=Variabile.sanitizeKey(t.split("*")[0]);if(Variabile.isValidKey(a)){const t=a.toLowerCase();let s=Object.keys(this.dictionary).filter((e=>e.startsWith(t)));for(let t of s)e?this.dictionary[t]=e:delete this.dictionary[t]}}else{const a=Variabile.sanitizeKey(t);if(Variabile.isValidKey(a)){const t=a.toLowerCase();0===e||e?this.dictionary[t]=e:delete this.dictionary[t]}else logga(`Invalid key: ${t}=${e}`)}}removeallvars(t){if(Array.isArray(t)){let e=Object.keys(this.dictionary);for(let a of e)t.includes(a)||delete this.dictionary[a]}else this.dictionary={}}valutasync(t){return valutabase(this,t)}async valuta(t,e){this.stl={};let a=await async function valutafunc(t,e,a){if(e){for(let s=0;s<20;s++){const s=e.lastIndexOf("$[");if(!(s>=0)){e=valutabase(t,e);break}{const{i:i,res:r}=parsevar(e,s+2,"[","]"),n=valutabase(t,e.substring(0,s)),o=r?r[0].startsWith(".")?valutabase(t,r.join(":")):valutabase(t,r[0]):"",c=i>=0?valutabase(t,e.substring(i+1)):"";let l=valutaquadra(t,o);if("object"==typeof l&&(l=a?await a(l?.fun,l.pars):`** fun: ${l.fun} ** `),isObject(l))return l;e=n+l+c}}return e}return""}(this,t,e);return isObject(a)||(a=(t=>{for(;;){const e=t.indexOf("{");if(!(e>=0))break;{const{i:a,res:s}=parsevar(t,e+1,"{","}");if(a<0)return t;t=t.substring(0,e)+muCalc(s[0])+(a>=0?t.substring(a+1):"")}}return t})(a)),a}async parametrokeyval(t){if("string"!=typeof t)return{};if(!(t=t.trim()))return{};let e,a,s,i=!1;return t.startsWith("#")&&(i=!0,t=t.slice(1)),s=t.indexOf("="),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1)):(s=t.indexOf(":"),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1),a=this.var(a)):(e=clean(t),a=this.var(e))),a&&"string"==typeof a&&a.includes("$")&&(a=await this.valuta(a)),["l","a","p"].includes(e)&&(i=!0),i&&(a=muCalc(a)),{k:e,v:a}}}class CodiceBarra{constructor(){this.barre={}}azzera(){this.barre={}}oriented(t,e,a,s){switch(t=(t||"1").substr(0,1).toLowerCase()){case"0":break;case"l":return{t:"l",x:e};case"a":return{t:"a",x:a};case"p":return{t:"p",x:s};case"2":return{t:t,x:e,y:s,z:a};case"5":return{t:t,x:e,y:a,z:s};case"4":return{t:t,x:s,y:e,z:a};case"3":return{t:t,x:a,y:s,z:e};case"6":return{t:t,x:s,y:a,z:e};default:return{t:"1",x:a,y:e,z:s}}}async getcode(t,e,a,s,i){let[r,n]=t.split(":");n=n||"";const getcode0=async(t,r)=>{let n=this.barre[t];if(!n&&i&&(n=await i(t),n||(n={t:"1",r:[]}),this.barre[t]=n,n.coderr&&"errore"!=n.coderr||(n.coderr=`#err_${t}`)),!n||0==n.r.length)return{extra:{err:"missing codicebarra"},c:`#err_${t}`,fm:10};const{t:o,x:c,y:l,z:u}=this.oriented(t,e,a,s),h={barra:t,fm:n.fm,t:o,liv:r,items:n.r.length,err:""};let f=n.r;if(u){const t=f.filter((t=>t.z===u||!t.z));t.length>0?f=t:h.err=`spessore non coerente: ${u}`}if("l"==o||"a"==o||"p"==o){const t=f.find((t=>t.x>=c));if(t)return{c:t.c,fm:t.x==c?0:1,x1:t.x,x:c,extra:h}}else{let t=f.find((t=>t.x==c&&t.y==l));if(t)return{c:t.c,fm:0,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&(t=f.find((t=>t.x>=c&&t.y==l)),t))return{c:t.c,fm:1,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&2!=n.fm&&(t=f.find((t=>t.x>=c&&t.y>=l)),t))return{c:t.c,fm:2,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h}}return n.codalt&&r<5?await getcode0(n.codalt,r+1):{c:n.coderr,fm:9,x:c,y:l,z:u,extra:h}};return await getcode0(r,0)}compila(t,e){e||(e={});const a={};if(Array.isArray(t)){for(const s of t)if(s.cod=clean(s.cod),s.barcode=clean(s.barcode),s.barcode.length>2&&"+"==s.barcode[0]){s.barcode=s.barcode.substr(1);const t=this.oriented(s.barcode.substr(0,1),s.l,s.a,s.p);t.c=s.modello?{c:s.cod,m:s.modello}:s.cod,a[s.barcode]||(a[s.barcode]={t:s.barcode.substr(0,1),r:[]},e[s.barcode]&&(a[s.barcode]=Object.assign(e[s.barcode],a[s.barcode]))),a[s.barcode].r.push(t)}for(const t in a){a[t].r.sort(((t,e)=>t.y?1e4*(t.x-e.x)+(t.y-e.y):t.x-e.x))}}this.barre=a}}const p="IFDEF|IFNDEF|SETDEF|CZERO|CACHE|RET|CVAR|LOOK|LOOKB|SELECT|CASES|CASE|LOG|MSG|DEFAULT|ELSEIFDEF|ELSEIFNDEF|ELSEIF|ELSE|ENDIF|ENDSELECT|PUSH|POP|FUNC|MACRO|LETS|LETO|LETM|LETT|LETV|LETM|LET|DEF|DO|VARIANTE|FORVAR|FOR|LOOP|ENDFOR|BREAK|EXIT|EXITFOR|CONTINUE|IF|INC|I|F|M|J|:P".split("|");function toCadPars(t){const e=muClComments(t),a=[];for(const t of e){const e=t.includes("(")||t.includes("[")?[t]:getcolonne(t,!0);let s=!1;for(const t of e)!t.startsWith('"')&&t.includes("=")?(a.push(t),s=!0):s&&(a[a.length-1]+=","+t)}const s={};for(const t of a){let{v:e,o:a}=getcouple(t,"=",!1);a=a||"",e&&(/^[-+]?\d*\.?\d+$/.test(a)&&(a=parseFloat(a)),s[e]=a)}return s}function muClComments(t,e){const a=(s=t,s.replace(/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|\/\*[\s\S]*?\*\//g,((t,e)=>e||""))).split(/\r?\n/);var s;const i=[];let r="";for(const t of a){let a=t;if(/(^|[^:])\/\/.*/.test(a)&&(a=a.replace(/(^|[^:])\/\/.*/,((t,e)=>e.trim()))),a=a.trim(),0!==a.length||e)if(r.length>0&&(a=r+" "+a,r=""),a.endsWith("\\")){a=a.slice(0,-1);const t=a.lastIndexOf("//");-1!==t&&(a=a.slice(0,t).trim()),r=a}else i.push(a)}return i}function muClean(t,e=!1){if(!Array.isArray(t))return void n.add("muClean: expected array!");const a=[];function addgen(t){if(a.length>0&&""==a[a.length-1].tipo){const s=a[a.length-1];e||!(!t.startsWith("!")&!t.startsWith("."))||t.startsWith("$")||t.startsWith("{")||t.startsWith("#")||s.contenuto.startsWith("!")||s.contenuto.startsWith(".")||s.contenuto.startsWith("$")||s.contenuto.startsWith("{")||s.contenuto.startsWith("#")?a.push({tipo:"",contenuto:t}):s.contenuto=s.contenuto+"\n"+t}else a.push({tipo:"",contenuto:t})}for(const e of t){const t=e.match(/^#([\w.]+)\s*(.*)$/);if(t){let s=t[1].toUpperCase().trim(),i="";if(s.includes(".")){const t=s.split(".");s=t[0],i=t[1]}if(p.includes(s)){const e=t[2];if("IF"!==s&&"IFDEF"!=s&&"IFNDEF"!=s||!e.includes("#")){const e={tipo:s,contenuto:t[2]};i&&(e.tipo2=i),a.push(e)}else{let i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*?)\s*#\s*(\w+)\s*(.*)$/);i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ELSE",contenuto:""}),a.push({tipo:i[4].toUpperCase(),contenuto:i[5]}),a.push({tipo:"ENDIF",contenuto:""})):(i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*)$/),i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ENDIF",contenuto:""})):a.push({tipo:t[1].toUpperCase(),contenuto:t[2]}))}}else addgen(e)}else addgen(e)}let s=0,i=0,r=0,o=[],c=[],l=[];for(let t=0;t<a.length;t++){const e=a[t];switch(e.i=t,e.tipo){case"FOR":case"FORVAR":case"VARIANTE":case"DO":i++,c[i]={pos:t,bk:[]};break;case"LOOP":case"ENDFOR":if(i>0){const{pos:s}=c[i];for(const e of c[i].bk)e.next=t,e.prev=s;e.prev=s,a[s].next=t,i--}break;case"BREAK":case"EXIT":case"EXITFOR":case"CONTINUE":i>0&&c[i].bk.push(e);break;case"IF":case"IFDEF":case"IFNDEF":s++,o[s]={pos:t,bk:[e]};break;case"SELECT":r++,l[r]={pos:t,bk:[e],first:t};break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(s>0){const{pos:i}=o[s];o[s].bk.push(e),a[i].next=t,o[s].pos=t}break;case"CASE":case"CASES":case"DEFAULT":if(r>0){const{pos:s,first:i}=l[r];l[r].bk.push(e),a[s].next=t,e.first=i,l[r].pos=t}break;case"ENDIF":if(s>0){const{pos:e,next:i}=o[s];a[e].next=t;for(const e of o[s].bk)e.last=t;s--}break;case"ENDSELECT":if(r>0){const{pos:e,next:s}=l[r];a[e].next=t;for(const e of l[r].bk)e.last=t;r--}}}return a}function muLimits(t){const e=muClComments(t),a=[];let s;const parsa=t=>t?[...new Set(t.split(",").map((t=>t.trim())).sort().filter((t=>t)))]:void 0;for(const t of e){let e=/^\s*\{(.*)?\}/im.exec(t);if(e)"limit"==clean(e[1])?(s={},a.push(s)):s=void 0;else if(s&&(e=/^\s*:(\w+)\s*(.*)/.exec(t),e))switch(e[1].toLowerCase()){case"opz":case"o":s.opz=parsa(e[2]);break;case"obs":case"obsolete":s.obsolete=parsa(e[2]);break;case"scons":case"sconsigliate":s.scons=parsa(e[2]);break;case"neutri":s.neutri=parsa(e[2]);break;case"art":s.art=parsa(e[2]);break;case"mod":s.mod=parsa(e[2]);break;default:logga("missing:",e[1])}}return a}function parselimitifromdb(t){let e,a=[];if(t&&t.length)for(const s of t){e={},s.varfilter=fromjson(s.varfilter,[]),s.result=fromjson(s.result,[]),s.result2=fromjson(s.result2,[]),s.exclude=parseInt(s.exclude)?1:0,s.exclude2=parseInt(s.exclude2)?1:0;const{item:i,model:r,rule:n,varfilter:o,result:c,result2:l,exclude:u,exclude2:h,datai:f,dataf:d}=s;function remap(t){return t.map((t=>clean("string"==typeof t?t:t.Value,!0))).filter((t=>t))}if(c.length||l.length){if(c.length&&(u?e.ex=remap(c):e.valid=remap(c)),l.length&&(h?e.ex2=remap(l):e.valid2=remap(l)),i&&(e.i=clean(i).split(";")),r&&(e.m=clean(r).split(";")),n&&(e.r=clean(n).split(";")),(f||d)&&f<d&&(e.datai=parseInt(f),e.dataf=parseInt(d)),o&&o.length){e.v=[];for(const m of o){let p=e.v.find((t=>t.v==clean(m.Variant)));p||(p={v:clean(m.Variant),o:[]},e.v.push(p)),p.o=[...p.o,...clean(m.Value).split(";")],p.o=[...new Set(p.o.filter((t=>t)))]}}setlevelimite(e),a.push(e)}}return a=a.sort(((t,e)=>e.l-t.l)),a}function setlevelimite(t){let e=0;t.i&&t.i.length&&(e+=5),t.m&&t.m.length&&(e+=3),t.r&&t.r.length&&(e+=2),t.v&&t.v.length&&(e+=3),t.datai&&t.dataf&&(e+=1),t.l=e}function parselimitifromrule(t){function parsevettorelimiti(t){const e={},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;function addres(t,a){function addres0(t,a){(a=clean(a))&&(e[t]||(e[t]=[]),e[t].includes(a)||e[t].push(a))}if(Array.isArray(a))for(const e of a)addres0(t,e);else addres0(t,a)}for(const s of t){const t=a.exec(s);if(t)switch(t[1]){case"var":case"v":case"variante":{const a=(t[2]||"").indexOf(" ");if(a>0){const s=clean(t[2].substring(0,a)),i=getcolonne(t[2].substring(a+1));if(s&&i&&i.length){e.v||(e.v=[]);let t=e.v.find((t=>t.v==s));t||(t={v:s,o:[]},e.v.push(t));for(const e of i)t.o.includes(e)||t.o.push(e)}}}break;case"d":case"dt":case"data":case"date":{const a=t[2].split(" "),s=parseInt(a[0]),i=parseInt(a[1]);(s||i)&&(e.datai=s,e.dataf=i)}break;case"rule":case"r":case"mu":addres("r",getcolonne(t[2]));break;case"item":case"i":addres("i",getcolonne(t[2]));break;case"model":case"m":addres("m",getcolonne(t[2]));break;case"e":case"escludi":case"exclude":addres("ex",getcolonne(t[2]))}else addres("valid",getcolonne(s))}return setlevelimite(e),e}let e;if(t&&t.length){for(const a of t){const t=parsevettorelimiti(a);if(t&&(t.valid&&t.valid.length||t.ex&&t.ex.length)){let a=0;t.i&&t.i.length&&(a+=5),t.m&&t.m.length&&(a+=3),t.r&&t.r.length&&(a+=2),t.v&&t.v.length&&(a+=3),t.datai&&t.dataf&&(a+=1),t.l=a,e||(e=[]),e.push(t)}}e&&(e=e.sort(((t,e)=>e.l-t.l)))}return e}class Variante{constructor(t){this.rows={},this.name="$",this.key="$",this.limits=void 0,this.amb=t}setheader(t,e){const{name:a,cat:s}=checkmu(t,e);return this.cat=s,this.name=a,this.alias="",this.obbligo=!1,this.des=a,this.vdef=[],this.rows={},this.h=[],this.key=`${s}/${a}`,{name:a,cat:s}}fromdim(t,e=2){"number"!=typeof t&&(t=muCalc(t)),e>0&&e--;let a,s=1e9;for(const i in this.rows){const r=this.rows[i];if(!r.annulla){const i=parseFloat(r.v[e])||0;i<=s&&i>=t&&(s=i,a=r)}}return this.#t(t,a)}async load(e,a,i=!1){const{name:r,cat:n}=this.setheader(e,a);if(t){const e=await t(n,r);if(e){if(await this.loadContentExtended(e),e.filter)this.limits=parselimitifromdb(e.filter);else if(s&&!i){const t=await s("filter",n,r);t&&t.length&&(this.limits=parselimitifromdb(t))}return!0}}return!1}async _loadContent(t){const e=/^\s*[!:]\s*(\w+)\s*(.*)$/i;let a="";const s=[];let i,r=!1;for(const n of t){const t=n.toLowerCase();if("{limit}"==t)i=[],s.push(i),r=!0;else if("{:limit}"==t)r=!1;else if(r)i.push(n);else{let t=e.exec(clean(n));if(t)if(a&&"extra"==t[1].toLowerCase()){const e=getcolonne(t[2]);for(const t of e){const e=t.indexOf("=");if(e>0){const s=clean(t.substring(0,e));"v"!=s&&(this.rows[a][s]=t.substring(e+1).trim())}}}else switch(t[1].toLowerCase()){case"alias":{const e=t[2].toLowerCase().split(";");if(e[0].trim()!=this.name)if(1==e.length)this.alias=e[0];else{let a;if(this.amb?a=await this.amb.getvariante(e[0]):(a=new Variante,await a.load(e[0],this.cat)),t=a?.rows,t){let a=Object.keys(t);if(a.length){e.splice(0,1);const addrows=e=>{e&&e.forEach((e=>this.rows[e]=t[e]))};for(const t of e){const e=/([ei])\s*:\s*(.*)\s*$/im.exec(t);if(e){const t=e[2].split(",");for(let e=0;e<t.length;e++)t[e]=t[e].trim();a="e"==e[1]?a.filter((e=>{for(const a of t)if(e.startsWith(a))return!1;return!0})):a.filter((e=>{for(const a of t)if(e.startsWith(a))return!0;return!1}))}}addrows(a)}}}}break;case"h":this.h=getcolonne(t[2]).map((t=>({des:t})));break;case"t":{const e=getcolonne(t[2]);if(this.h)for(let t=0;t<this.h.length;t++)this.h[t].t=e[t]||""}break;case"des":this.des=t[2];break;case"default":case"vdef":this.vdef=getcolonne(t[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else{const t=getcolonne(n),e=clean(t[0]);e&&(a=e,this.rows[a]={annulla:0,v:t})}}}const n=Object.keys(this.rows);for(const t of n)if(t.includes(".")){const e=t.split(".");for(let t=0;t<e.length-1;t++){const a=e.slice(0,t+1).join(".");this.rows[a]||(this.rows[a]={annulla:0,v:[a]})}}return this.limits=parselimitifromrule(s),!0}tovec(){const t=this.rows,e=[],a=Object.keys(t).sort();for(const t of a)this.rows[t].annulla<2&&e.push(this.#t(t,this.rows[t]));return e}#t(t,e){const a=[t];if(e)for(const t of e.v)"string"==typeof t&&(t.includes(",")||t.includes(";"))?a.push(quote(t)):a.push(t||"");return a.join(",")}tovar(t,e=""){const a=clean(t);if(!this.rows[a])return e||t;const s=this.rows[a];return 2==s.annulla?"":this.#t(e||t,s)}isvalidopz(t){const e=clean(t),a=this.rows[e];return!!a&&(1!=a.annulla&&!a.hasliv)}firstvalid(t,e=void 0){const a=t.indexOf(",");if(a>0&&(t=t.slice(0,a).trim()),t&&this.isvalidopz(t))return t;if(e&&e.length)for(const t of e)if(this.isvalidopz(t))return t;if(this.vdef&&this.vdef.length)for(const t of this.vdef)if(this.isvalidopz(t))return t;const s=Object.keys(this.rows).sort();for(let t=0;t<s.length;t++){const e=s[t];if(!(t<s.length-1&&s[t+1].startsWith(e+"."))&&this.isvalidopz(e))return e}}resetfilter(){delete this._valids;for(const t in this.rows)this.rows[t].annulla=0}validkeys(){let t=Object.keys(this.rows)||[];return t=t.filter((t=>0==this.rows[t].annulla)).sort(),t}limitfiltra(t){if(!t)return;t=muClComments(t.toLowerCase());const e=[];for(const a of t){const t=/^#(i|e|xe|xi|x\+|x-|x)(\d*)\s+(.+)$/i.exec(a);if(t){const a={ex:t[1],col:(parseInt(t[2])||1)-1,val:"x"==t[1]?t[3]:getcolonne(t[3])};a.val.length&&e.push(a)}}if(e.length)for(const t in this.rows){const a=this.rows[t];for(const t of e)if("e"==t.ex){if(_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}else if(t.ex.startsWith("x")){const e=(a.v[t.col]+"").toLowerCase().split(/[,;]/).map((t=>t.trim()));if("xe"==t.ex){if(_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if("x+"==t.ex){if(parseFloat(a.v[t.col])<=parseFloat(t.val)){a.annulla=1;break}}else if("x-"==t.ex){if(parseFloat(a.v[t.col])>=parseFloat(t.val)){a.annulla=1;break}}else if(!_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if(!_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}function _check(t,e){if(1==e?.length&&"."==e[0])return!!t;return!!e.find((e=>e.startsWith(t)))}}limita(t){if(this.resetfilter(),t&&t.length&&this.limitfiltra(t),!this.limits||!this.amb)return this;const{item:e,rule:a,model:s,vari:i,data:r}=this.amb,valid=(t,e)=>!e||!e.length||!!t&&e.includes(t),n=this.limits.filter((t=>{if(!valid(e,t.i))return!1;if(!valid(a,t.r))return!1;if(!valid(s,t.m))return!1;if(r&&t.datai&&r<t.datai)return!1;if(r&&t.dataf&&r>t.dataf)return!1;if(t.v&&t.v.length)for(const e of t.v){const t=clean(i.var(e.v).split(",")[0],!0);if(t&&!e.o.includes(t))return!1}return!0}));if(!n||!n.length)return this;const o=new Set,c=new Set,l=new Set,u=new Set;let h=!1,f=!1;for(const t of n){if(t.valid&&t.valid.length){h=!0;t.valid.filter((t=>t.indexOf("*")>0)).map((t=>t.split("*")[0])).forEach((t=>o.add(t))),t.valid.filter((t=>!t.includes("*"))).forEach((t=>l.add(t)))}if(t.ex&&t.ex.length){f=!0;t.ex.filter((t=>t.indexOf("*")>0)).map((t=>t.split("*")[0])).forEach((t=>c.add(t))),t.ex.filter((t=>!t.includes("*"))).forEach((t=>u.add(t)))}}for(const t in this.rows){const e=this.rows[t];let a=!1,s=!1;if(h){for(const e of o)if(t.startsWith(e)){a=!0;break}!a&&l.has(t)&&(a=!0)}if(f){for(const e of c)if(t.startsWith(e)){s=!0;break}!s&&u.has(t)&&(s=!0)}h&&!a&&(e.annulla=1),f&&s&&(e.annulla=1)}return n}async loadContentExtended(t){if("object"==typeof t){for(const e in t)["rows","des","h","alias","obbligo"].includes(e)&&(this[e]=t[e]);"string"==typeof t.def&&t.def.length&&(this.vdef=getcolonne(t.def.trim().toLowerCase())),t.filter&&t.filter.length&&(this.limits=parselimitifromdb(t.filter))}else await this._loadContent(muClComments(t,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}const v={};async function getcbfunc(t,e,s,i,r,n){if(a){if(v[e])return"";let t=await a(e,s,i,r,n);return isObject(t)||(t=(t||"").trim(),"!"==t&&(v[e]=!0,t="")),t}return t}async function intvaluta(t,e,a){return t.vari.valuta(a,(async(a,s)=>{switch(a){case"dim":{let a=muCalc(s[1]),i=await dammivariante(t,e,s[2]),r=parseInt(s[3])||2;return i&&i.fromdim?i.fromdim(a,r):a}case"seed":{let t=s[1],e=getcolonne(s[2]);return e[seeder(e.length,t)]||""}case"seedvar":{let a=await dammivariante(t,e,s[2]),i=s[1],r=a.validkeys();if(s[3]&&s[4]){let t=muCalc(s[3])-1;if(t>=0){let e=getcolonne(s[4]);r=r.filter((s=>{let i=a.rows[s];if(i&&i.v&&i.v[t]){let a=getcolonne(i.v[t]);if(a)for(let t of e)if(a.includes(t))return!0}return!1}))}}let n=seeder(r.length,i);return n>=0&&a.tovar(r[n])||""}default:return await getcbfunc(`**fun:${a}**`,a,s,t.vari,t)}}))}async function dammivariante(t,e,a){let s;return s=e&&e?.localvar&&e.localvar[a]?e.localvar[a]:await t.getvariante(a),s}async function impostavariante(t,e,a,s,i){let r,n=a;if((s=s||"")&&"string"==typeof s){const t=s.indexOf(":");t>=0&&(t>0&&(n=clean(s.slice(0,t))),s=s.slice(t+1))}if(i&&i.alias&&(n=i.alias),e&&e.paralias&&e.paralias[a]&&(n=e.paralias[a]),r=await dammivariante(t,e,n),r)if(i&&i.t){i.des||(i.des=r.des);let e=i?.filtra||"";if(e.includes("$")&&(e=await t.vari.valuta(e)),"m"===i.t){let t=2;if(s.includes(":")){const e=s.split(":");t=parseInt(e[1]),s=e[0]}r.limita(e),s=r.fromdim(parseFloat(s),t)}else{r.limita(e);const t=r.firstvalid(s,getcolonne(i.def));s=r.tovar(t)}}else r.resetfilter(),s=r.firstvalid(s),s=r.tovar(s);else i&&i.t&&i.t;return t.vari.add(a,s),s}async function pushpars(t,e,a,s){const i={},r=[];if(a)for(const s of a){const{v:a,o:n,fl:o}=getcouple(s);i[a]||(i[a]=!0,r.push({v:a,o:t.vari.var[a]}),o&&await impostavariante(t,e,a,n))}if(s)for(const a of s){const{v:s,o:n,fl:o}=getcouple(a);i[s]||(i[s]=!0,r.push({v:s,o:t.vari.var[s]}),o&&await impostavariante(t,e,s,n))}return r}function poppars(t,e){if(e)for(const a of e)t.vari.add(a.v,a.o)}const outpush=(t,e)=>{null!=e&&null!=e&&("object"==typeof e?t.push(JSON.stringify(e,null,2)):"string"==typeof e&&e.startsWith("_ ")&&t.length>0&&"string"==typeof t[t.length-1]?t[t.length-1]+=e.slice(2):t.push(...e.split("\n")))};async function muEval(t,e,a,s){if(!Array.isArray(a))return n.add("codice is not a valid parsed array"),[];const zeroval=()=>t&&t._managezero?"0":"";s||(s={}),s.id||(s.id="_"),s._stackmacro||(s._stackmacro=0),s.limited||(s.limited=!1),t||n.add("amb deve essere definito");const i=t.vari;t.maxdelays,t.cat;const r=[];let o,c,l;tk();for(let u=0;u<a.length;){let h=a[u];switch(h.tipo){case"IFDEF":case"IFNDEF":case"IF":{const f="IF"==h.tipo?muCalc(await intvaluta(t,e,h.contenuto)):"IFDEF"==h.tipo?""!=await intvaluta(t,e,h.contenuto):""==await intvaluta(t,e,h.contenuto);h.next?(a[h.next].jlast=f?1:0,f||(u=h.next-1)):n.add("Troppo tempo",h)}break;case"SELECT":h.next?(a[h.next].t1=await intvaluta(t,e,h.contenuto),u=h.next-1):n.add("manca endselect",h);break;case"CASE":case"CASES":case"DEFAULT":if(h.next)if(h.jlast)h.jlast=0,u=h.last-1;else{let d,m=1;const _getvv=async()=>{let a=await intvaluta(t,e,h.contenuto);return a=a.includes(":")&&!a.includes(",")?a.split(":").map((t=>(t||"").trim())):getcolonne(a),a};if("CASE"==h.tipo){m=0,d=await _getvv();const p=muCalc(h.t1||zeroval());d.find((t=>muCalc(t)==p))&&(m=1)}else if("CASES"==h.tipo){m=0,d=await _getvv();const v=h.t1||zeroval();d.find((t=>t==v))&&(m=1)}a[h.next].jlast=m?1:0,a[h.next].t1=h.t1,m||(u=h.next-1)}else n.add("manca select",h);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(h.next)if(h.jlast)h.jlast=0,u=h.last-1;else{const g="ELSE"==h.tipo?1:"ELSEIF"==h.tipo?muCalc(await intvaluta(t,e,h.contenuto)):"ELSEIFDEF"==h.tipo?""!=await intvaluta(t,e,h.contenuto):""==await intvaluta(t,e,h.contenuto);a[h.next].jlast=g?1:0,g||(u=h.next-1)}else n.add("manca endif",h);break;case"ENDIF":case"ENDSELECT":case"CACHE":case"CVAR":break;case"PUSH":i.push();break;case"POP":i.pop();break;case"INC":case"I":if(s._stackmacro>500)n.add("stack chiamate macro troppo profondo!",h);else if(({macro:o,pars:c,xid:l}=await t.getmacro(h)||{}),o){s._inc=!0,s._stackmacro++;const b={},w=o.parametri?._;if(w&&w.length)for(const k of w){const x=clean(k.split("=")[0]||"",!0);x&&(b[x]=i.dictionary[x])}await o.impostaparametri(w,c);const y=await muEval(t,o,o.codice,s);for(const C in b)b[C]?i.dictionary[C]=b[C]:delete i.dictionary[C];r.push(...y),s._stackmacro--,s._inc=!1}break;case"RET":{const E=await intvaluta(t,e,h.contenuto);t.vari.savevars(E)}break;case"MACRO":case"M":case"FUNC":case"F":if(s._stackmacro>500)n.add("stack chiamate macro troppo profondo!",h);else{let{macro:O,pars:_,xid:$}=await t.getmacro(h)||{};if(O){const F=!!s.grafica||["F","FUNC"].includes(h.tipo),S=s.id||"",I=O.parametri?._,L={};if(F)i.push();else{if(O.head)for(const z of O.head)L[z.cod]=t.vari.var(z.cod);if(I&&I.length)for(const A of I){const M=(A.split("=")[0]||"").trim().toLowerCase();M&&(L[M]=i.dictionary[M])}}if(O.codice.length){if(s._stackmacro++,s.grafica&&"function"==typeof s.grafica){let j="",W="";_&&_.length?(j=_.find((t=>t.startsWith("#id"))),j?(j=await i.valuta(j.slice(4)),j.startsWith("#")?s.id=j:s.id=hash(`${u}${O.name}${S}${j}`),_=_.filter((t=>!t.startsWith("#id"))),W=s.id):s.id=hash(`z${S}${u}`)):s.id=hash(`z${S}${u}`);let N=t.pick.key;t.pick.key=s.id;const T=await s.grafica({tipo:h.tipo,id:W,pars:_,parametri:I,macro:O,options:s,vari:t.vari,amb:t});t.pick.key=N,r.push(T)}else{await O.impostaparametri(I,_);let V=t.vari.var("_rootnode");t.vari.add("_rootnode","0");const D=await muEval(t,O,O.codice,s);t.vari.add("_rootnode",V),r.push(...D)}s._stackmacro--}if(F)i.pop();else for(const R in L)L[R]?i.dictionary[R]=L[R]:delete i.dictionary[R];s.id=S}else n.add("Macro non trovata!",h)}break;case"SETDEF":{let P=getcolonne((h.contenuto||"").toLowerCase()),J=await dammivariante(t,o,P[0]),K=P[1]||"def_",U=P[2];if(K.endsWith("_")||(K+="_"),J&&J.rows){P=Object.keys(J.rows),U&&(P=P.filter((t=>t.startsWith(U))));for(let q of P){let G=`${K}${q}`;if(!i.dictionary[G]){function torow(t){const e=[];if(t)for(const a of t.v.slice(1))"string"==typeof a&&(a.includes(",")||a.includes(";"))?e.push(quote(a)):e.push(a||"");return e.join(",")}i.add(G,await intvaluta(t,e,torow(J.rows[q])))}}}}break;case"LET":case"LETS":{let B=h.contenuto.indexOf("="),Z=-1;if(B>=0&&(Z=h.contenuto.indexOf("=",B+1)),Z<0){const H=h.contenuto;if(B=H.indexOf("="),B>0){const X=await intvaluta(t,e,H.slice(0,B).trim());let Q=H.slice(B+1).trim();Q="LET"==h.tipo?muCalc(await intvaluta(t,e,Q))||zeroval():await intvaluta(t,e,Q),i.add(X,Q)}}else{const Y=getcolonne(h.contenuto);for(const tt of Y)if(B=tt.indexOf("="),B>0){const et=await intvaluta(t,e,tt.slice(0,B));let at=tt.slice(B+1).trim();at="LET"==h.tipo?muCalc(await intvaluta(t,e,at))||zeroval():await intvaluta(t,e,at),i.add(et,at)}}}break;case"LETT":{const st=h.contenuto.indexOf("=");if(st>0){const it=await intvaluta(t,e,h.contenuto.slice(0,st).trim()),rt=await intvaluta(t,e,h.contenuto.slice(st+1).trim());i.add(it,rt)}}break;case"CZERO":"1"==h.contenuto?t._managezero=!0:t._managezero=!1;break;case"LOOK":case"LOOKB":{const nt=getcolonne(await intvaluta(t,e,h.contenuto)),ot=muCalc(nt[1]),ct=muCalc(nt[3]),lt=await dammivariante(t,o,nt[2]);if(lt&&lt.rows){const ut=Object.values(lt.rows).reduce(((t,e)=>{const a=parseInt(e.v[ct?ct-1:0]);return a&&("LOOKB"==h.tipo?a<=ot&&a>t.v&&(t.v=a,t.c=e.v[0]):a>=ot&&a<t.v&&(t.v=a,t.c=e.v[0])),t}),{v:"LOOKB"==h.tipo?0:1/0,c:""});ut&&ut.c&&(t.vari.add(nt[0],lt.tovar(ut.c)),s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:nt[0],valore:lt.tovar(ut.c),riga:h}))}else t.vari.add(nt[0],`${ot},no,no`)}break;case"LETV":case"LETM":case"DEF":{const ht=getcolonne(h.contenuto);if(ht)for(const ft of ht){let{v:dt,o:mt,fl:pt}=getcouple(ft);if(pt){dt=await i.valuta(dt),mt=await intvaluta(t,e,mt);const vt=await impostavariante(t,e,dt.trim().toLowerCase(),mt.trim().toLowerCase(),"LETM"==h.tipo?{t:"m"}:{t:"v"});s._stackmacro<=0&&s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:dt,valore:vt,riga:h})}}}break;case"DO":{const gt=(h.contenuto||"").trim();let bt=!0;gt&&!muCalc(await intvaluta(t,e,gt))&&(bt=!1),h.next&&(bt||(u=h.next+1))}break;case"VARIANTE":case"FORVAR":case"FOR":{let wt,yt,kt,xt;if(s.oldstyle?(wt=h.contenuto.split(","),xt=wt[2]||"i",kt=wt[0],yt=wt[1]):(wt=getcolonne(h.contenuto||""),xt=wt[0]||"",kt=clean(wt[1],!0),yt=wt[2]||""),xt=xt.includes("$")?await intvaluta(t,e,xt):xt||"","FORVAR"==h.tipo||"VARIANTE"==h.tipo){const Et=await intvaluta(t,e,kt),Ot=Et?await dammivariante(t,e,Et):void 0;Ot?kt=Ot.tovec():(kt=[],n.add("getvariante not found!",h))}else{const _t=await intvaluta(t,e,kt||"");kt=kt?getcolonne(_t):void 0}kt=kt||[];const Ct=0;if(h.next){a[h.next].for={v:xt,elenco:kt,nc:Ct,valido:yt};let $t,Ft=!0;xt&&kt.length>0?Ct>=kt.length?Ft=!1:($t=kt[Ct],i.add(xt,$t),yt&&(Ft=!muCalc(await intvaluta(t,e,yt)))):Ft=!1,Ft||(u=h.next-1)}else n.add("manca endfor/loop",h)}break;case"LOOP":{let St=!0;h.contenuto&&!muCalc(await intvaluta(t,e,h.contenuto))&&(St=!1),St&&(u=h.prev-1);break}case"ENDFOR":if(!h.contenuto||muCalc(await intvaluta(t,e,h.contenuto)))if(h.for){const{v:It,elenco:Lt,valido:zt}=h.for;if(It&&Lt.length>0&&h.for.nc<500)for(;;){if(h.for.nc++,h.for.nc<Lt.length){if(i.add(It,Lt[h.for.nc]),zt&&muCalc(await intvaluta(t,e,zt)))continue;u=h.prev;break}break}}else n.add("manca istruzione for",h);break;case"BREAK":case"EXIT":case"EXITFOR":h.next?h.contenuto.trim()?muCalc(await intvaluta(t,e,h.contenuto))&&(u=h.next):u=h.next:n.add("break outside loop",h);break;case"CONTINUE":h.next?h.contenuto&&!muCalc(await intvaluta(t,e,h.contenuto))||(u=h.next-1):n.add("continue outside loop",h);break;case"MSG":case"LOG":{const At=await intvaluta(t,e,h.contenuto);logga(At),n.add(At)}break;default:{let Mt;if(h.contenuto.startsWith("!")){Mt=await intvaluta(t,e,h.contenuto);let jt="";const Wt=/^!(.\w+)[\s;,]\s*(.+)?$/gim.exec(Mt);if(Wt)if(Wt[1].startsWith("."))await getcbfunc(Mt,Mt.slice(1),[],i,t),jt="";else{const Nt=(Wt[1]||"").toLowerCase(),Tt=getcolonne(Wt[2]||"");jt=await getcbfunc(Mt,Nt,Tt,i,t)}jt&&outpush(r,jt)}else s.parsefnpunto&&"function"==typeof s.parsefnpunto&&h.contenuto.startsWith(".")?await s.parsefnpunto({dati:h.contenuto,output:r,id:s.id,vari:t.vari,amb:t}):(Mt=await intvaluta(t,e,h.contenuto),outpush(r,Mt))}}u++}return r}async function muGenerate(t,e,a,s,i=0){if(t.isgenera&&s){const r={counter:0,keys:{},isTestmode:i};if(a){if(!t.genera[a])return!1;await muGenerate_0(t,e,a,s,r)}else for(const a in t.genera)await muGenerate_0(t,e,a,s,r);return!0}}async function muGenerate_0(t,e,a,s,i){const r=t.genera[a];if(r){i.counter2=0;const n={};async function processavariante(o){if(i.isTestmode&&i.counter>i.isTestmode)return;if(o<r.vars.length){const a=r.vars[o];if(!n[a]){const s=await dammivariante(e,t,a),i=s?Object.keys(s.rows):void 0;if(i&&i.length>0){for(const t of i)e.vari.add(s.name,s.tovar(t)),n[a]=!0,await processavariante(o+1),n[a]=!1;return}logga("manca la variante",a)}}for(const a of r.calcola)t.formula[a]&&await muEval(e,t,t.formula[a],{limited:!0});for(const a of r.exclude)if(t.formula[a]){const s=await muEval(e,t,t.formula[a],{limited:!0});if(s)for(const t of s){if(muCalc(t))return}}const c=await muEval(e,t,r.codice,{limited:!0,localvar:t.localvar}),l={};for(const a of r.bom)if(t.formula[a]){let s=await muEval(e,t,t.formula[a],{limited:!0});s=s.join("\n").split("\n");for(const t of s)if(t){const e=getcolonne(t);l[a]||(l[a]=[]);const s={};for(let t=0;t<e.length;t++)s[`c${t}`]=e[t];l[a].push(s)}}await async function docallback(t,e,a,s,i,r){let n=!0;for(const o of e){const e=getcolonne(o);if(e[0]&&!r[e[0]]){r[e[0]]=1,r.counter++,r.counter2++;const o={__id:r.counter};for(let t=0;t<e.length;t++){let a=s.head[t]?s.head[t]:`c${t}`;"#"==a[0]?(a=a.substr(1),o[a]=Math.round(1e3*muCalc(e[t]))/1e3):o[a]=e[t]}await t(i,o,n?a:void 0,r.counter,r.counter2),n=!1}}}(s,c,l,r,a,i)}await processavariante(0)}}const g=["l","a","p"],b=/^\{(:?(var|valid|formula|genera|header|v|f|g|h))[\s|}]/im,w=["s","g","h","p","q"],y=[{cod:"t",des:"Variante"},{cod:"q",des:"V.Query"},{cod:"f",des:"Valore Fisso"},{cod:"g",des:"Gruppo"},{cod:"s",des:"Libero"},{cod:"m",des:"Misura"},{cod:"c",des:"Check (no/si)"},{cod:"z",des:"Check (si/no)"},{cod:"h",des:"Hidden"},{cod:"p",des:"Programmato"}],k=[{cod:"",des:"Libero"},{cod:"a",des:"Area"},{cod:"t",des:"Thumb",folder:"thumbs"},{cod:"i",des:"Image",folder:"textures"},{cod:"x",des:"3D file",folder:"3d"},{cod:"f",des:"Funzione",folder:"script"}];function valutaCondizioniTestata(t,e){const a=e.split("\n");for(const e of a)if(e.trim()){if(muCalc(t.valutasync(e)))return!0}return!1}class Macro{constructor(t,e){const{name:a,cat:s}=checkmu(e,t.cat||"");this.name=a,this.cat=s,this.amb=t,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.paralias={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){const t=[];return this.errori.forEach((e=>t.push({e:e}))),t}getparametri(t={}){const{noderiva:e}=t,a={};if(this.dims&&g.forEach((t=>{const e=muCalc(this.amb.vari.var(t));e&&(a[t]=String(e))})),this.head){for(const t of this.head)if(!t._h){if(e&&t._d&&t._d.cod)continue;let s=this.amb.vari.var(t.cod);w.includes(t.t)||"string"==typeof s&&(s=s.split(",")[0]),a[t.cod]=s}}else if(this.parametri?._)for(const t of this.parametri._){const e=(t.split("=")[0]||"").trim().toLowerCase();let s=this.amb.vari.var[e];s=(s||"").split(",")[0],a[e]=s}return a}async setparametri(t){const e={},a=this.amb.ruleset||{};t||(t={}),this.dims&&g.forEach((e=>{let a=t[e]||this.dims[e].val;a=parseFloat(a)||0,this.dims[e].visible&&(a<this.dims[e].min&&(a=this.dims[e].min),a>this.dims[e].max&&(a=this.dims[e].max)),t[e]=String(a)}));for(const s of this.head){const i=a[s.cod];i&&(i.islock?(s.visible="0",t[s.cod]=i.opz,s._islock=!0):t[s.cod]||(t[s.cod]=i.opz)),"g"!=s.t&&("z"!=s.t||t[s.cod]||(t[s.cod]="1"),s._v=t[s.cod]||"",e[s.cod]=!0)}for(const a in t)e[a]||(e[a]=!0,await impostavariante(this.amb,this,a,t[a]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,t[this.head[0].cod]||void 0,!0,t),this.getparametri()}async setparametro(t,e,a=!1,s={}){if(e&&"string"==typeof e&&e.includes("$")&&(e=await intvaluta(this.amb,this,e)),s||(s={}),this.head){const _imposta=async(t,e,a,i)=>{const r=t?.cod;if(t.valid&&!t._h1){const e=!valutaCondizioniTestata(this.amb.vari,t.valid);if(t._h!=e&&(t._h=e,["g","g1","g2"].includes(t.t)))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;a._h1=t._h}}}if(t._h||t._h1)return this.amb.vari.add(r,""),t._v=void 0,"";{if(delete t._h2,t.visible){const e=!valutaCondizioniTestata(this.amb.vari,t.visible);if(e&&(t._h2=e),["g","g1","g2"].includes(t.t))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;t._h2?a._h3=t._h2:delete a._h3}}}let i=this.amb.vari.var(r)||"";"thlm".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0]);let n=i;if("z"!=t.t||i||(this.amb.vari.add(r,"1"),i="1"),"m"==t.t&&t.spars){let e=t.spars;(e||"").includes("$")&&(e=await intvaluta(this.amb,this,e));const a=getcolonne(e);i=parseFloat(i||a[0])||0,(!a[1]||"").includes(";")&&(a[1]&&parseFloat(i)<a[1]&&(i=parseFloat(a[1])||0),a[2]&&parseFloat(i)>a[2]&&(i=parseFloat(a[2])||0)),i=String(i),this.amb.vari.add(r,i)}const o=await impostavariante(this.amb,this,r,e||t._v||i,t);if(t._v=void 0,i=this.amb.vari.var(r)||"","thl".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0],this.amb&&this.amb.deriva&&this.amb.deriva.length>0)){const e=this.amb.deriva.filter((t=>t.cod==r&&((!t.item||t.item==this.amb.item)&&((!t.model||t.model==this.amb.model)&&((!t.rule||t.rule==this.amb.rule)&&(!t.opz||t.opz==i))))));e.length&&e.forEach((e=>{let a=this.head.find((t=>t.cod==e.tocod));if(a){let r=this.amb.vari.var(a.cod);s&&s[a.cod]&&(r=s[a.cod]),"string"==typeof r&&(r=r.split(",")[0],r&&r!=n&&r!=i?delete a._d:(a._v=e.toopz||i,a._d={cod:t.cod,opz:e.toopz}))}}))}return o}};let i,r=-1;if("#dim"==t)a=1;else{if(r=this.head.findIndex((e=>e.cod===t)),r<0)return;const s=this.head[r];i=await _imposta(s,e,r),a&&delete s._d}if(a)for(let t=r+1;t<this.head.length;t++)await _imposta(this.head[t],void 0,t);return i}return await impostavariante(this.amb,this,t,e)}getmarker(){let t;if(this.head&&this.head.length){let e=this.head.find((t=>"marker"==(t.stipo||"").trim().toLowerCase().split(/[;,]/)[0].trim()));e&&e.cod&&(t=e.cod)}return t}isderivato(t){return"string"==typeof t&&(t=this.head.find((e=>e.cod==t))),!!(t&&t._d&&t._d.cod)}async impostaparametri(t,e,a=!1,s){if(this.head){this.paralias||(this.paralias={}),Array.isArray(this.head)||(this.head=[]);for(const t of this.head)t._v="",delete t._h,delete t._h1,delete t._h2,t.alias&&(this.paralias[t.cod]=t.alias)}s||(s={}),t||(t=[]),e||(e=[]);for(const a of[...t,...e]){const t=a.indexOf("=");if(t>0){let e=clean(a.substr(0,t));e.includes("$")&&(e=await intvaluta(this.amb,this,e));let s,i=a.substr(t+1);i.includes("$")&&(i=await intvaluta(this.amb,this,i)),this.head&&(s=this.head.find((t=>t.cod==e)))?s._v=i:await impostavariante(this.amb,this,e,i)}}if(this.head){let t=!0;for(const e of this.head){let i=await this.checkvalid(e.valid);a&&(i=!0),["g","g1","g2"].includes(e.t)?t=i:t&&i&&await this.setparametro(e.cod,s[e.cod]||e._v)}}}async checkvalid(t){if(!t)return!0;return!!muCalc(await intvaluta(this.amb,this,t))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return getOggetto(this,["amb"])}setmacro(t){if(setOggetto(this,fromjson(t,{})),this.localvar)for(const t in this.localvar){const e=new Variante;setOggetto(e,this.localvar[t]),this.localvar[t]=e}}async load(t,a){let s,i;try{let r;if(({name:s,cat:i}=checkmu(t||this.name,a||this.cat||"")),this.name||(this.name=s),this.cat||(this.cat=i),this.azzera(),e&&(r=await e(i,s),"string"==typeof r&&(r.startsWith("{")||r.startsWith("["))&&(r=fromjson(r)),r&&r.head&&!Array.isArray(r.head)&&(r.head=[]),this.amb.checkscripts(r.linkscript),delete r.linkscript,r.head&&(r.dims=getheaddims(r.dims))),r){if("string"==typeof r)await this.parsedata(r);else for(const t in r)this[t]=r[t];return!0}n.add(`missing cbGetFile: ${i}/${s}`)}catch(t){n.add(geterrdes(t),`macro.load: ${s}/${i}`)}}async loadAndCompile(t,e,a=!1){let s;const{name:r,cat:o}=checkmu(t,this.cat||e);return this.azzera(),i&&(s=await i(o,r)),s?(await this.parsedata(s,a),this.getmacro()):void n.add(`missing cbGetFile: ${r}/${o}`)}async#e(t,e,a,s){let r;const{name:n,cat:o}=checkmu(t,this.cat);if(i&&(r=await i(o,n)),!r)return[];if(r.includes("$1")&&s&&s.length>0)for(let t=1;t<s.length;t++)r=r.replaceAll(`$${t}`,s[t]);let c=muClComments(r);const l=[];e&&(c=c.filter((t=>!/^\{(:?(var|valid|formula|header|genera|v|f|h))[\s|}]/im.test(t))));for(const t of c){const s=b.exec(t);if(s)e=!s[1].startsWith(":"),l.push(t);else{const s=/^\s*\{i\s(.+)?\}/im.exec(t);if(s){const t=getcolonne(s[1]);if(!a.includes(t[0])){a.push(t[0]);const s=await this.loadinclude(t[0],e,a,t);Array.isArray(s)&&l.push(...s),a.pop()}}else l.push(t)}}return l}async parsedata(t,e=!1){if(this.azzera(),!t)return;const a=[];let s=muClComments(t),i=!1;const r=[];for(const t of s){const e=b.exec(t);if(e)i=!e[1].startsWith(":"),a.push(t);else{const e=/^\s*\{i\s(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[1]),s=await this.#e(t[0],i,[t[0]],t);Array.isArray(s)&&a.push(...s)}else a.push(t)}}i=!1;let n=this.codice;for(const t of a){const e=b.exec(t);if(e)if(e[1].startsWith(":"))n=this.codice;else switch(e[1]){case"genera":case"g":{let e=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(getcolonne(e[2])[0]);this.genera[t]=[],n=this.genera[t]}else n=this.errori,n.push(t)}break;case"valid":n=this.valid;break;case"var":case"v":{const e=/^\s*\{(var|v)\s+(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[2]),a=checkname(t[0]);this.localvar[a]={name:a,des:t[1]||"",rows:[]},n=this.localvar[a].rows}else n=this.errori,n.push(t)}break;case"formula":case"f":{const e=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(e[2]);this.formula[t]=[],n=this.formula[t]}else n=this.errori,n.push(t)}break;case"h":case"header":n=r;break;default:this.errori.push(t),n=this.errori}else t.startsWith("{")&&(n=this.codice),n.push(t)}this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,e);for(const t in this.formula)this.formula[t]=this.cleanfiltraparametri(t,this.formula[t],e);for(const t in this.localvar){const e=new Variante,a=this.localvar[t];e.setheader(t,this.cat),e.rows={};for(const t of a.rows){const a=getcolonne(t),s=a[0].trim().toLowerCase();e.rows[s]={annulla:0,v:a}}a.des&&(e.des=a.des),this.localvar[t]=e}s=this.valid,this.valid=[];for(const t of s){let e=getcouple(t,",");e={v:e.v,msg:e.o},e.v&&(e.v.startsWith("#")?this.formula[e.v.substring(1)]&&this.valid.push(e):this.valid.push(e))}s=r;const o=[];for(const t of s){const e=/^\s*([\w\-_]+)+[;,\s]\s*(.*)?$/im.exec(t);if(e){const t=getcolonne(e[2]),a=clean(e[1]);let s;if(a){s=o.find((t=>t.cod==a)),s||(s={cod:a,t:"t"},o.push(s));for(const e of t){const t=getcouple(e);switch(t.v){case"t":s.t=t.o;break;case"def":case"default":s.def=t.o;break;case"valid":case"colonna":case"hidden":t.o.startsWith("#")?this.formula[t.o.substring(1)]&&(s[t.v]=t.o):s[t.v]=t.o;break;default:s[t.v]=t.o}}}}}this.head=o,s=this.genera;const c={};for(const t in s)if(Array.isArray(s[t])){const e={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;for(const i of s[t]){const s=a.exec(clean(i));if(s)switch(s[1]){case"calcola":case"c":e.calcola=[...e.calcola,...getcolonne(s[2])];break;case"exclude":case"e":case"escludi":e.exclude=[...e.exclude,...getcolonne(s[2])];break;case"bom":case"db":e.bom=[...e.bom,...getcolonne(s[2])];break;case"vars":case"v":e.vars=[...e.vars,...getcolonne(s[2])];break;case"head":case"h":e.head=getcolonne(s[2]);break;default:this.errori.push(`genera ${t} => ${i}`)}else e.codice.push(i)}e.codice=muClean(e.codice,!0),c[t]=e}this.genera=c}cleanfiltraparametri(t,e,a){if(this.paralias||(this.paralias={}),e&&e.length){let a=!1;const getparalias=t=>{const e=[],a=getcolonne(t);for(const t of a)if(t.includes(":")){const a=t.split(":");this.paralias[a[0]]=a[1],e.push(a[0])}else e.push(t);return e};for(let s=0;s<e.length;s++){const i=/^:p[;,\s]+(.*)?$/im.exec(e[s]);if(i)e[s]=null,a=!0,this.parametri[t]=getparalias(i[1]);else{const i=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(e[s]);i&&(e[s]=null,a=!0,this.parametri[t]=getparalias(i[2]))}}a&&(e=e.filter((t=>null!=t)))}return e=muClean(e,a)}}function parsevariabili(t){let e=!1;const a=[];for(;;){const s=/\$([{[(])/m.exec(t);if(!s){t&&e&&a.push({class:"",text:t});break}{e=!0;const i="["==s[1]?"inline":"variabile";s.index>0&&a.push({class:"",text:t.substring(0,s.index)});const{i:r}=parsevar(t,s.index+2,s[1],null);if(!(r>s.index)){a.push({class:i,text:t.substring(s.index)});break}a.push({class:i,text:t.substring(s.index,r+1)}),t=t.substring(r+1)}}return{fl:e,tk:a}}function parseexp(t,e,a){if(!a)throw new Error("missing callback");let s=!1;const i=[];for(;;){const r=e.exec(t);if(!r){t&&s&&i.push({class:"",text:t});break}r.index>0&&i.push({class:"",text:t.substring(0,r.index)}),i.push(...a(r)),s=!0,t=t.substring(r.index+r[0].length)}return{fl:s,tk:i}}function muParsecode(t,e){t||(t=" "),t.endsWith("\n")&&(t+=" ");const a=[{class:"",text:t}];for(let t=0;t<a.length;t++)if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\*[^]+?\*\/)/im,(t=>[{class:"comment",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\/.*)$/im,(t=>[{class:"commento2",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*\{.+?\})/m,(t=>[{class:"header",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*:\w+)(.*?$)/m,(t=>[{class:"param",text:t[1]},{class:"param2",text:t[2]}]));e&&a.splice(t,1,...s)}if(!e){if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*!\w+)/m,(t=>[{class:"function",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#let.? +)([\w_.]+)/im,(t=>[{class:"comando",text:t[1]},{class:"variabile",text:t[2]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(push|pop|ret|select|cases|endselect|ifndef|elseifndef|ifdef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|letm|lets|letv|lett|leto|cat))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(if\s*|elseif\s*))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(else|i |m |f |j |case|def ))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parsevariabili(a[t].text);e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(\$[\w_.]+)/im,(t=>[{class:"variabile",text:t[1]}]));e&&a.splice(t,1,...s)}}}}}}return a}class Pickers{constructor(){this.clear()}clear(){this.d={},this.keypics={},this.key="",this.keypics[this.key]=0}reset(){this.keypics={},this.key="";for(let t in this.d)this.d[t]._invalid=!0}pack(){let t=[];Object.entries(this.d).forEach((([e,a])=>{a._invalid&&t.push(e),delete a._invalid}));for(let e of t)delete this.d[e]}setkey(t){this.key=t,this.keypics[t]||(this.keypics[t]=0)}add(t){let e=this.keypics[this.key]||0,a=`${this.key}_${e}`;this.keypics[this.key]=e+1;let s=this.d[a]??{};return t=t??{},this.d[a]={...s,...t,_invalid:!1,_key:this.key,_id:e},a}}function toruleset(t){const e={};if(t&&t.length)for(const a of t)e[a.cod]=a;return e}function headerconvert(t){const e=muClComments(t,!1);t={};let a={r:[]},s=!1;for(const i of e){const e=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(i);if(e)a={cod:e[2],des:e[2],r:[]},s=!1,t[e[2]]=a;else if(!/^\s*:/.exec(i)){const t=i.split(","),e={cod:clean(t[0])};let r;r=(t[1]||"").trim(),r&&(e.des=r),r=clean(t[2]),r&&(e.tipo=r),r=clean(t[3]),r&&(e.alias=r),r=clean(t[4]),r&&(e.valid=r),r=clean(t[5]),r&&(e.visible=r),e.cod&&(s||"sep"!=e.tipo?a.r.push(e):(a.des=e.des,a.valid=e.valid,a.visible=e.visible,s=!0))}}return t}function aliasconvert(t){const e=muClComments((t+"").toLowerCase(),!1),a={};for(const t of e)if(!/^\s*:/.exec(t)){const e=getcolonne(t);e[0]&&e[1]&&(a[e[0]]={cod:e[1]})}return a}class Ambiente{#a=void 0;#s=void 0;#i=void 0;#r=void 0;constructor(t=".",e=100,a=!1){this.righevuote=a,this.maxdelays=e,this.setcatalog(t),this.fndotcallback=void 0,this.pick=new Pickers}setcatalog(t){return t=clean(t),this.cat!=t&&(this.cat=t,this.item=this.rule=this.model="",this.azzera(!0)),t}get muvalutatore(){return{getcolonne:getcolonne,getcouple:getcouple,muCalc:muCalc,muEval:muEval,tipifree:w}}azzera(t=!1){this.imgpreview={},this.vari=new Variabile,this.ruleset={},this.fndotcallback&&this.vari.setfndot(this.fndotcallback),this.ruleheader="",t&&(this.macro={},this.sqcache={},this.varianti={},this.varelenco={},this.macroelenco={},this.scripts={},this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0)}setimgpreview(t,e){e?this.imgpreview[t]=e:delete this.imgpreview[t]}getimgpreview(t){return this?.imgpreview[t||""]}setfndot(t){this.fndotcallback=t,this.vari.setfndot(t)}async#n(t){if(s&&!this.varelenco[t]){const e=await s("headers",t,"_varianti");Array.isArray(e)?this.varelenco[t]=e:e.vars&&(this.varelenco[t]=e.vars,e.alias&&(this.#s=e.alias)),this.varelenco[t]||(this.varelenco[t]=[])}}parseheaderfrominfo(t){if(t&&t.length>0)for(const e of t)switch(e.tipo){case"_headers":"string"==typeof e.value&&(e.value=headerconvert(e.value)),this.#a=e.value||{};break;case"_alias":"string"==typeof e.value&&(e.value=aliasconvert(e.value)),this.#s=e.value||{};break;case"_typos":if("string"==typeof e.value){const t=fromjson(e.value);for(const e in t){const a=t[e];a.db&&(a.db=muClean(muClComments(a.db))),a.list&&(a.list=muClean(muClComments(a.list)))}e.value=t}this.#r=e.value||{}}}setitem(t,e,a,s=[],i=0){this.item=clean(t,!0),this.rule=clean(e,!0),this.model=clean(a,!0),this.ruleset=toruleset(s),this.data=i||(new Date).toInt()}async getheader(t){let e;return!this.#a&&s&&(e=await s("headers",this.cat,"_headers"),this.parseheaderfrominfo(e)),this.#a||(this.#a={}),this.#a[t]}async getalias(){let t;return!this.#s&&s&&(t=await s("headers",this.cat,"_alias"),this.parseheaderfrominfo(t)),this.#s||(this.#s={}),this.#s}get deriva(){return this.#i,this.#i||[]}async getmacro(t){try{if("string"==typeof t&&(t={tipo:"M",contenuto:t}),!t||!t.contenuto)return;let e=t.contenuto;e.startsWith("$")&&(e=await this.vari.valuta(e));const a=/^([({}):$\w.\\/]+)[\s;,]*(.*)?$/im.exec(e);if(!a)return void n.add("Macro non valida:"+e,t);let s=clean(a[1],!0);s.includes("$")&&(s=await this.vari.valuta(s));const i=getcolonne(a[2]),{name:r,cat:o}=checkmu(s,this.cat);this.cat=o;const c=`${o}/${r}`;if(!this.macro[c]){const e=new Macro(this,r);await e.load()?this.macro[c]=e:n.add(`macro fail to load ${c}`,t)}return s=this.macro[c],s?{macro:s,pars:i}:(n.add(`macro non trovata ${c}`,t),{})}catch(e){n.add(geterrdes(e),`ambiente.getmacro: ${t?.contenuto}`)}}async getvariante(t){const{name:e,cat:a}=checkmu(t,this.cat);let s=e,i={};if(a==this.cat&&this.#s&&this.#s[e]&&(i=this.#s[e]||{},s=i.cod),await this.#n(a),this.varelenco[a]&&!this.varelenco[a].includes(e))return;const r=`${a}/${s}`;let n;return this.varianti[r]?n=this.varianti[r]:(n=new Variante(this),await n.load(r,a),this.varianti[r]=n),i&&(i.des&&(n.des=i.des),i.vdef&&(n.vdef=i.vdef)),n}async varcompila(t,e){const a=new Variante(this);if(await a.load(t,this.cat,!0),a.alias){(await this.getalias())[t]=a.alias}e("variants",{cod:t,des:a.des||"",alias:a.alias,info:a.alias?"":JSON.stringify(getOggetto(a,["amb"]))})}async macrocompila(t,e){const a=new Macro(this,t);await a.loadAndCompile(`${t}.mu`);const s=a.getmacro();e("macros",{cod:t,info:JSON.stringify(s),isgenera:a.isgenera,isheader:a.isheader,iscodice:a.iscodice})}async barrecompila(t,e,a){const s=new CodiceBarra;await s.compila(t,e);for(const t in s.barre){a("barcodes",{cod:t,des:"",info:JSON.stringify(s.barre[t])})}return s}async tojson(t){let e;return a&&(e=await a("json",t)),e}async compila(t,e){if(e){for(const a of t.var)await this.varcompila(a,e);for(const a of t.mu)await this.macrocompila(a,e);if(e("infos",{cod:"info",des:t.cat,info:JSON.stringify({cat:t.cat,md:t.info})}),this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0,s){const t=await s("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(t)}this.#a?e("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):logga("missing headers"),this.#s&&e("infos",{cod:"alias",des:"",info:JSON.stringify(this.#s)}),this.#i&&e("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#i)}),this.#r&&e("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#r)})}}async checkvarianti(e,a){if(!e||!a?.length)return;e=checkname(e),await this.#n(e);const s=this.varelenco[e],i=[];for(let t of a){t=clean(t,!0);const a=`${e}/${t}`;this.varianti[a]||s&&s.includes(t)&&i.push(t)}if(i.length&&t){const a=await t(e,i);if(a&&a.length)for(const t of a){const{name:a,content:s}=t,i=new Variante(this);i.setheader(a,e),s&&await i.loadContentExtended(s),this.varianti[i.key]=i}}}async getheaderfromdb(e){const a=await s("header",this.cat,e,!this.#i);let{head:i,rows:r,macros:n,deriva:o,llvars:c}=a;for(const t of r)t.cod=clean(t.cod),t.alias=clean(t.alias),t.t=clean(t.t);if(!c){c=new Set;for(const t of r)if("p"==t.tipo);else{const e=t.alias?t.alias:t.cod;c.add(e)}c=[...c]}this.#i||(this.#i=o),await this.#n(this.cat),i.cod=clean(i.cod),i.rule=clean(i.rule),i.ruledef=i.ruledef||[];const l=[],u=this.varelenco[this.cat];for(const t of c)this.varianti[`${this.cat}/${t}`]||u&&u.includes(t)&&l.push(t);if(l.length&&t){const e=await t(this.cat,l);if(e&&e.length)for(const t of e){const{name:e,content:a}=t,s=new Variante(this);s.setheader(e,this.cat),a&&await s.loadContentExtended(a),this.varianti[s.key]=s}}return{head:i,rows:r,macros:n}}async getlinkedmacros(t,a){const getkey=t=>t.includes("/")?t:`${this.cat}/${t}`,s=[];let i;if(t&&(i=getkey(t),this.macro[i]||s.push(t)),a&&"string"==typeof a){const t=a.split(";");for(const e of t)i=getkey(e),this.macro[i]||s.push(e)}if(s&&s.length>0&&e){const t=await e(this.cat,s);if(t&&t.length>0)for(const e of t){this.checkscripts(e.content?.linkscript),delete e.content?.linkscript;const t=new Macro(this,e.name);for(const a in e.content){const s=e.content[a];t[a]=s}this.macro[t.key]=t}}}checkscripts(t){if(Array.isArray(t)&&t.length)for(let e of t)this.scripts[e.name]||(this.scripts[e.name]=e.value)}async setruleheader(t,e,a){const{name:s,cat:i}=checkmu(t,this.cat);a&&a.length&&(this.ruleset=toruleset(a));const r=`${i}/${s}`;if(!this.macro[r]){const e=await this.getheaderfromdb(s),{head:a,rows:o,macros:c}=e;await this.getlinkedmacros(a.rule,c);const l=new Macro(this,s);if(!a)return void n.add("Missing rule: "+t);if(a.rule){const t=this.macro[`${i}/${a.rule}`];if(t)for(const e in t)["cat","name","key"].includes(e)||(l[e]=t[e])}o&&o.length&&(l.head=o),this.macro[r]=l}this.ruleheader=r;const o=this.macro[r];return n.azzera(),await o.setparametri(e),o}getruleheader(){return this.macro[this.ruleheader]}async setvariante(t,e){return await impostavariante(this,null,t,e)}async valuta(t){let e;return"string"==typeof t&&(t=muClean(muClComments(t,this.righevuote))),Array.isArray(t)&&(logga("m1",t),e=await muEval(this,null,t)),e}setinfos(t){t&&(this.#a=t.headers,this.#s=t.alias,this.#i=void 0,this.#r=t.typos)}async splitteroggetti(t){let e=await this.getvariante(t),a=[];return e?.rows&&Object.values(e.rows).forEach((t=>{a.push({tipo:t.v[2]||"",cod:t.v[0]||"",des:t.v[1]||"",macro:t.v[4]||"",sps:parseInt(t.v[3])||0,isshape:parseInt(t.v[5])})})),a.length||a.push({tipo:"avob",cod:"__",des:"Vuoto",macro:"",sps:0}),a}}function toJson(t){return JSON.stringify(t,null,2)}function clamp(t,e=-1/0,a=1/0){return(t=Number(t)||0)<e&&(t=e),t>a&&(t=a),t}function gettipocolonna(t){return k.find((e=>e.cod==t))?.des||k[0].des}function gettipofolder(t){return k.find((e=>e.cod==t))?.folder||""}function newVariabile(){return new Variabile}async function newVariante(t,e,a){const s=new Variante(a);return await s.load(t,e),s}function newAmbiente(t,e=100){return new Ambiente(t,e)}function newMacro(t,e){return new Macro(t,e)}function sanitize(t,e=!1,a=!1){if(!t)return"";let s=String(t).trim().replace(a?/[^a-zA-Z0-9-+_\.]/g:/[^a-zA-Z0-9-+_]/g,"_");return e?s.toLowerCase():s}function muValuta(t,e,a){a&&t.azzera();return t.valuta(e)}function muInit(t,e,a,s,i,r,n){const o=new Ambiente(t);return setcallbacks(e,a,s,i,r,n),o}function muCompileScript(t){return t&&"object"==typeof t?t:t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")?JSON.stringify(t):muClean(muClComments(t))}async function muEvalScript(t,e,a,s=!0){if(e=muCompileScript(e),s&&t.azzera(),a)for(const e of a){const{v:a,o:s}=getcouple(e);t.vari.add(a,s)}return{output:await muEval(t,null,e,{}),vari:t.vari.dictionary,errori:n}}Date.prototype.toInt||(Date.prototype.toInt=function(){const t=this;return t.getDate()+100*(t.getMonth()+1)+1e4*t.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const x={mus:{variants:{cod:"s",des:"s",alias:"s",info:"s",md:"s",__pk:"cod"},extras:{tipo:"s",cod:"s",info:"s",__pk:"tipo, cod"},macros:{cod:"s",des:"s",info:"s",md:"s",def:"s",isgenera:"i",iscodice:"i",isheader:"i",__pk:"cod"},infos:{cod:"s",des:"s",info:"s",__pk:"cod"},barcodes:{cod:"s",des:"s",info:"s",__pk:"cod"}}};export{Ambiente,CodiceBarra,Macro,Variabile,Variante,checkmu,checkname,clamp,clean,dammivariante,n as errori,fromjson,getOggetto,getcolonne,getcouple,geterrdes,getheaddims,gettipocolonna,gettipofolder,hash,impostavariante,intvaluta,isJsonStr,isObject,muInit as jsTest,logga,muCalc,muClComments,muClean,muCompileScript,muEval,muEvalScript,muGenerate,muInit,muLimits,muParsecode,muValuta,x as mustr,newAmbiente,newMacro,newVariabile,newVariante,noquote,parselimitifromdb,parselimitifromrule,parsevar,poppars,pushpars,quote,round,sanitize,seedarray,seeder,setOggetto,sortrows,testsync,k as tipicolonna,w as tipifree,y as tipiheader,tk,toCadPars,toJson,tonum,xdt};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "markuno_lib",
3
- "version": "1.2.133",
3
+ "version": "1.2.135",
4
4
  "description": "Croswil Markuno Language Lib",
5
5
  "author": "Croswil SRL",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
@@ -1,4 +1,4 @@
1
- declare const Ae: {
1
+ declare const t: {
2
2
  buslist: {};
3
3
  on(e: any, t: any): number;
4
4
  emit(e: any, ...t: any[]): void;
@@ -8,7 +8,7 @@ declare const Ae: {
8
8
  $emit(e: any, ...t: any[]): void;
9
9
  };
10
10
  export function formatDate(e: any): string;
11
- export function getdim(e: any, t: any, a: any, n: any, i: any, r: any, s: any, o: any, l: any): string;
11
+ export function getdim(e: any, t: any, r: any, i: any, n: any, a: any, o: any, s: any, m: any): string;
12
12
  export function listfromstring(e: any): any[];
13
13
  export function myuuid(): number;
14
14
  export function post_utils(e?: {}): {
@@ -21,11 +21,11 @@ export function post_utils(e?: {}): {
21
21
  readonly fingerprint: string;
22
22
  isauth(e: any): boolean;
23
23
  fullurl(e: any): any;
24
- fullget(e: any, a: any, n: any): any;
25
- fetch(e: any, a: any, n: any, i?: boolean): Promise<any>;
26
- post(e: any, t: any, a: any, n?: boolean): Promise<any>;
24
+ fullget(e: any, t: any, i: any): any;
25
+ fetch(e: any, i: any, n: any, a?: boolean): Promise<any>;
26
+ post(e: any, t: any, r: any, i?: boolean): Promise<any>;
27
27
  };
28
- PP: (e: any, a: any, s: any, o: any) => Promise<any>;
28
+ PP: (e: any, t: any, i: any, s: any) => Promise<any>;
29
29
  P: {
30
30
  baseurl: string;
31
31
  user: {};
@@ -35,9 +35,9 @@ export function post_utils(e?: {}): {
35
35
  readonly fingerprint: string;
36
36
  isauth(e: any): boolean;
37
37
  fullurl(e: any): any;
38
- fullget(e: any, a: any, n: any): any;
39
- fetch(e: any, a: any, n: any, i?: boolean): Promise<any>;
40
- post(e: any, t: any, a: any, n?: boolean): Promise<any>;
38
+ fullget(e: any, t: any, i: any): any;
39
+ fetch(e: any, i: any, n: any, a?: boolean): Promise<any>;
40
+ post(e: any, t: any, r: any, i?: boolean): Promise<any>;
41
41
  };
42
42
  isauth: (e: any) => boolean;
43
43
  userguest: {
@@ -61,6 +61,6 @@ export function post_utils(e?: {}): {
61
61
  };
62
62
  export function strDate(e: any, t: any): any;
63
63
  export function toDateStr(e: any): string;
64
- export function toEuro(e: any, t: any, a?: string): any;
64
+ export function toEuro(e: any, t: any, r?: string): any;
65
65
  export function tonum(e: any, t?: number): number;
66
- export { Ae as bus };
66
+ export { t as bus };