@yuneta/gobj-js 0.3.0

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.
@@ -0,0 +1,2 @@
1
+ let e={not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function t(n){return function(n,r){var l,i,o,s,a,u,_,c,f,g=1,d=n.length,b="";for(i=0;i<d;i++)if("string"==typeof n[i])b+=n[i];else if("object"==typeof n[i]){if((s=n[i]).keys)for(l=r[g],o=0;o<s.keys.length;o++){if(null==l)throw new Error(t('[sprintf] Cannot access property "%s" of undefined value "%s"',s.keys[o],s.keys[o-1]));l=l[s.keys[o]]}else l=s.param_no?r[s.param_no]:r[g++];if(e.not_type.test(s.type)&&e.not_primitive.test(s.type)&&l instanceof Function&&(l=l()),e.numeric_arg.test(s.type)&&"number"!=typeof l&&isNaN(l))throw new TypeError(t("[sprintf] expecting number but found %T",l));switch(e.number.test(s.type)&&(c=l>=0),s.type){case"b":l=parseInt(l,10).toString(2);break;case"c":l=String.fromCharCode(parseInt(l,10));break;case"d":case"i":l=parseInt(l,10);break;case"j":l=JSON.stringify(l,null,s.width?parseInt(s.width):0);break;case"e":l=s.precision?parseFloat(l).toExponential(s.precision):parseFloat(l).toExponential();break;case"f":l=s.precision?parseFloat(l).toFixed(s.precision):parseFloat(l);break;case"g":l=s.precision?String(Number(l.toPrecision(s.precision))):parseFloat(l);break;case"o":l=(parseInt(l,10)>>>0).toString(8);break;case"s":l=String(l),l=s.precision?l.substring(0,s.precision):l;break;case"t":l=String(!!l),l=s.precision?l.substring(0,s.precision):l;break;case"T":l=Object.prototype.toString.call(l).slice(8,-1).toLowerCase(),l=s.precision?l.substring(0,s.precision):l;break;case"u":l=parseInt(l,10)>>>0;break;case"v":l=l.valueOf(),l=s.precision?l.substring(0,s.precision):l;break;case"x":l=(parseInt(l,10)>>>0).toString(16);break;case"X":l=(parseInt(l,10)>>>0).toString(16).toUpperCase()}e.json.test(s.type)?b+=l:(!e.number.test(s.type)||c&&!s.sign?f="":(f=c?"+":"-",l=l.toString().replace(e.sign,"")),u=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",_=s.width-(f+l).length,a=s.width&&_>0?u.repeat(_):"",b+=s.align?f+l+a:"0"===u?f+a+l:a+f+l)}return b}(function(t){if(r[t])return r[t];let n,l=t,i=[],o=0;for(;l;){if(null!==(n=e.text.exec(l)))i.push(n[0]);else if(null!==(n=e.modulo.exec(l)))i.push("%");else{if(null===(n=e.placeholder.exec(l)))throw new SyntaxError("[sprintf] unexpected placeholder");if(n[2]){o|=1;var s=[],a=n[2],u=[];if(null===(u=e.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(u[1]);""!==(a=a.substring(u[0].length));)if(null!==(u=e.key_access.exec(a)))s.push(u[1]);else{if(null===(u=e.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(u[1])}n[2]=s}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");i.push({placeholder:n[0],param_no:n[1],keys:n[2],sign:n[3],pad_char:n[4],align:n[5],width:n[6],precision:n[7],type:n[8]})}l=l.substring(n[0].length)}return r[t]=i}(n),arguments)}function n(e,n){return t.apply(null,[e].concat(n||[]))}let r=Object.create(null);function l(e,t,n,r){}function i(e,t,n,r,l){return{result:t,comment:n||{},schema:r||{},data:l||[]}}function o(e,t,n,r){}function s(e,t,n,r,l){return{result:t,comment:n||{},schema:r||{},data:l||[]}}let a="7.0.0a",u=null,_=null,c=null,f=null,g=null,d=null,b=[],p=Object.create(null),m={},h=null,E=null,T=0;const y=Object.freeze({DTP_STRING:1,DTP_BOOLEAN:2,DTP_INTEGER:3,DTP_REAL:4,DTP_LIST:5,DTP_DICT:6,DTP_JSON:7,DTP_POINTER:8});y.DTP_POINTER;const S=Object.freeze({SDF_NOTACCESS:1,SDF_RD:2,SDF_WR:4,SDF_REQUIRED:8,SDF_PERSIST:16,SDF_VOLATIL:32,SDF_RESOURCE:64,SDF_PKEY:128,SDF_FUTURE1:256,SDF_FUTURE2:512,SDF_WILD_CMD:1024,SDF_STATS:2048,SDF_FKEY:4096,SDF_RSTATS:8192,SDF_PSTATS:16384,SDF_AUTHZ_R:32768,SDF_AUTHZ_W:65536,SDF_AUTHZ_X:131072,SDF_AUTHZ_P:262144,SDF_AUTHZ_S:524288,SDF_AUTHZ_RS:1048576});S.SDF_RD,S.SDF_WR,S.SDF_STATS,S.SDF_PERSIST,S.SDF_VOLATIL,S.SDF_RSTATS,S.SDF_PSTATS,S.SDF_WR,S.SDF_PERSIST;class O{constructor(e,t,n=0,r=null,l="",i=null,o=null,s=0,a=null,u=null,_=null){this.type=e,this.name=t,this.alias=i,this.flag=n,this.default_value=r,this.header=o,this.fillspace=s,this.description=l,this.json_fn=a,this.schema=u,this.authpth=_}}const v=()=>new O(0,null),N=(e,t,n,r,l)=>new O(e,t,n,r,l),w=(e,t,n,r,l,i)=>new O(e,t,0,null,i,n,null,0,l,r,null),D=(e,t,n,r,l,i,o)=>new O(e,t,n,null,o,r,null,0,i,l,null),j=(e,t,n,r,l)=>new O(e,t,n,r,l),R=(e,t,n,r,l,i)=>new O(e,t,n,null,i,r,null,0,null,l,null),$=(e,t,n,r,l)=>new O(e,t,n,null,l,null,null,0,null,null,r),I=(e,t,n,r,l,i)=>new O(e,t,n,null,i,null,r,l);class k{constructor(e,t,n,r,l,i,o,s,a){this.gclass_name=e,this.dl_states=[],this.dl_events=[],this.gmt=t,this.lmt=n,this.attrs_table=r,this.priv=l,this.authz_table=i,this.command_table=o,this.s_user_trace_level=s,this.gclass_flag=Number(a)||0,this.instances=0,this.trace_level=0,this.no_trace_level=0,this.jn_trace_filter=null,this.fsm_checked=!1}}class A{constructor(e,t,n,r,l){this.__refs__=0,this.gclass=t,this.parent=null,this.dl_children=[],this.dl_subscriptions=[],this.dl_subscribings=[],this.current_state=t.dl_states[0],this.last_state=null,this.obflag=0,this.gobj_flag=Number(l)||0,this.gobj_name=e,this.jn_attrs=null,this.jn_stats={},this.jn_user_data={},this.full_name=null,this.short_name=null,this.priv=cn(t.priv),this.running=!1,this.playing=!1,this.disabled=!1,this.bottom_gobj=null,this.trace_level=0,this.no_trace_level=0}}const L=Object.freeze({gcflag_manual_start:1,gcflag_no_check_output_events:2,gcflag_ignore_unknown_attrs:4,gcflag_required_start_to_play:8,gcflag_singleton:16}),P=Object.freeze({gobj_flag_yuno:1,gobj_flag_default_service:2,gobj_flag_service:4,gobj_flag_volatil:8,gobj_flag_pure_child:16,gobj_flag_autostart:32,gobj_flag_autoplay:64}),U=Object.freeze({obflag_destroying:1,obflag_destroyed:2,obflag_created:4}),C=Object.freeze({EVF_NO_WARN_SUBS:1,EVF_OUTPUT_EVENT:2,EVF_SYSTEM_EVENT:4,EVF_PUBLIC_EVENT:8}),F=Object.freeze({WALK_TOP2BOTTOM:1,WALK_BOTTOM2TOP:2,WALK_BYLEVEL:4,WALK_FIRST2LAST:16,WALK_LAST2FIRST:32});class G{constructor(e,t,n){this.event_name=e,this.action=t,this.next_state=n}}class V{constructor(e){this.state_name=e,this.dl_actions=[]}}class W{constructor(e,t){this.event_name=e,this.event_flag=Number(t)||0}}function M(e){jn(e)&&(e=JSON.stringify(e)),an(" ".repeat(Math.max(0,2*T-1))+String(e))}function K(e,t,n,r,l,i,o){u=t,_=n,c=r,f=l,g=i,d=o;const s=[["EV_STATE_CHANGED",C.EVF_SYSTEM_EVENT|C.EVF_OUTPUT_EVENT|C.EVF_NO_WARN_SUBS],[0,0]];for(let e=0;e<s.length;e++){let t=s[e][0],n=s[e][1];ne(b,t,n)}return 0}function Y(e,t){let n={};if(!Rn(t))return ln("sdata_desc MUST be an array"),_n(t),n;for(let r=0;r<t.length;r++){const l=t[r];l.name&&x(e,n,l)}return n}function x(e,t,n){let r,l=n.default_value;switch(n.type){case y.DTP_STRING:r=String(l);break;case y.DTP_BOOLEAN:r=Gn(l);break;case y.DTP_INTEGER:r=parseInt(l),isNaN(r)&&ln(`${Qe(e)}: attr NaN: ${n.name}`);break;case y.DTP_REAL:r=Number(l),isNaN(r)&&ln(`${Qe(e)}: attr NaN: ${n.name}`);break;case y.DTP_LIST:if($n(l))try{r=JSON.parse(l)}catch(e){ln(`JSON parse error: ${e.message}`)}else r=l;Rn(r)||(r=[]);break;case y.DTP_DICT:if($n(l))try{r=JSON.parse(l)}catch(e){ln(`JSON parse error: ${e.message}`)}else r=l;jn(r)||(r={});break;case y.DTP_JSON:if($n(l))try{r=JSON.parse(l)}catch(e){ln(`JSON parse error: ${e.message}`)}else r=l;break;case y.DTP_POINTER:r=l}return void 0===r&&(ln(`default_value WRONG, it: ${n.name}, value: ${n.default_value}`),r=null),t[n.name]=r,0}function B(e,t,n,r){let l;switch(n.type){case y.DTP_STRING:if($n(r))l=String(r);else{let e=JSON.stringify(r);e&&(l=String(e))}break;case y.DTP_BOOLEAN:l=Gn(r);break;case y.DTP_INTEGER:l=parseInt(r),isNaN(l)&&ln(`${Qe(e)}: attr NaN: ${n.name}`);break;case y.DTP_REAL:l=Number(r),isNaN(l)&&ln(`${Qe(e)}: attr NaN: ${n.name}`);break;case y.DTP_LIST:if($n(r))try{l=JSON.parse(r)}catch(e){ln(`JSON parse error: ${e.message}`)}else l=r;if(!Rn(l))return ln(`attr must be an array: ${n.name}`),-1;break;case y.DTP_DICT:if($n(r))try{l=JSON.parse(r)}catch(e){ln(`JSON parse error: ${e.message}`)}else l=r;if(!jn(l))return ln(`attr must be an object: ${n.name}`),-1;break;case y.DTP_JSON:if($n(r))try{l=JSON.parse(r)}catch(e){ln(`JSON parse error: ${e.message}`)}else l=r;if(!Rn(l)&&!jn(l))return ln(`attr must be a json dict/list: ${n.name}`),-1;break;case y.DTP_POINTER:l=r}return void 0===l&&ln(`${Qe(e)}: attr undefined: ${n.name}`),t[n.name]=l,jn(e.priv)&&e.priv.hasOwnProperty(n.name)&&(e.priv[n.name]=l),e.obflag&U.obflag_created&&!(e.obflag&U.obflag_destroyed)&&e.gclass.gmt.mt_writing&&e.gclass.gmt.mt_writing(e,n.name),0}function J(e){return e.jn_attrs}function Q(e,t,n){return dt(e,t)?J(e):e&&e.bottom_gobj?Q(e.bottom_gobj,t):null}function q(e,t,n){if(!(e&&e instanceof k))return n&&ln("gclass NULL"),null;if(!t)return e.attrs_table;for(let n=0;n<e.attrs_table.length;n++){const r=e.attrs_table[n];if(r.name&&r.name===t)return r}return n&&ln(`${e.gclass_name}: GClass Attribute NOT FOUND: ${t}`),null}function X(e,t,n,r,l,i,o,s,a,u,_){if(Fn(e))return ln("gclass_name EMPTY"),null;if(e.includes("`")||e.includes("^")||e.includes("."))return ln(`GClass name CANNOT have '.' or '^' or '\`' char: ${e}`),null;if(oe(e))return ln(`GClass ALREADY exists: ${e}`),null;let c=new k(e,r,l,i,o,s,a,u,_);!function(e,t){e&&e instanceof k?t?p[t]?ln(`gclass ALREADY REGISTERED: ${t}`):p[t]=e:ln("gclass_name undefined"):ln("gclass undefined")}(c,e);const f=n.length;for(let e=0;e<f;e++){let t=n[e][0],r=n[e][1];if(Fn(t))continue;if(ee(c,t)<0)return z(c),null;const l=r.length;for(let e=0;e<l;e++){let n=r[e][0],l=r[e][1],i=r[e][2];Fn(n)||te(c,t,n,l,i)}}for(let e=0;e<t.length;e++){let n=t[e][0],r=t[e][1];if(!Fn(n)){if(le(c,n))return ln(`SMachine: event repeated in input_events: ${n}`),z(c),null;re(c,n,r)}}if(!c.fsm_checked){if(ie(c)<0)return z(c),null;c.fsm_checked=!0}return c}function z(e){let t;if($n(e))t=e;else{if(!(e instanceof k))return ln("Cannot unregister gclass, type unknown"),-1;t=e.gclass_name}let n=p[t];return n?n.instances>0?(ln(`Cannot unregister gclass, instances in use: ${t}`),-1):(delete p[t],0):(ln(`Cannot unregister gclass, not found: ${t}`),-1)}function H(e,t){const n=e.dl_states.length,r=e.dl_states;for(let e=0;e<n;e++){let n=r[e];if(n.state_name&&n.state_name===t)return n}return null}function Z(e,t){const n=e.dl_actions.length,r=e.dl_actions;for(let e=0;e<n;e++){let n=r[e];if(n.event_name&&n.event_name===t)return n}return null}function ee(e,t){return e instanceof k?H(e,t)?(ln(`state already exists: ${t}`),-1):(e.dl_states.push(new V(t)),0):(ln("Cannot add state, typeof not GClass"),-1)}function te(e,t,n,r,l){if(!(e instanceof k))return ln("Cannot add state, typeof not GClass"),-1;if(Fn(t))return ln("state_name EMPTY"),-1;let i=H(e,t);return i?Z(i,n)?(ln(`event already exists: gclass ${e.gclass_name}, state ${t}, event ${n}`),-1):(i.dl_actions.push(new G(n,r,l)),0):(ln(`state not found: ${t}`),-1)}function ne(e,t,n){Fn(t)||e.push(new W(t,n))}function re(e,t,n){return e instanceof k?ne(e.dl_events,t,n):(ln("Cannot add state, typeof not GClass"),-1)}function le(e,t){if(!(e instanceof k))return ln("Cannot add state, typeof not GClass"),0;const n=e.dl_events.length,r=e.dl_events;for(let e=0;e<n;e++){let n=r[e];if(n.event_name&&n.event_name===t)return n}return null}function ie(e){if(!(e instanceof k))return ln("Cannot add state, typeof not GClass"),-1;let t=0;wn(e.dl_states)||(ln(`GClass without states: ${e.gclass_name}`),t+=-1);for(let n=0;n<e.dl_states.length;n++){let r=e.dl_states[n];if(!Fn(r.state_name))for(let n=0;n<r.dl_actions.length;n++){let l=r.dl_actions[n];if(!Fn(l.event_name)&&(le(e,l.event_name)||(ln(`SMachine: state's event NOT in input_events: gclass ${e.gclass_name}, state ${r.state_name}, event ${l.event_name}`),t+=-1),l.next_state)){H(e,l.next_state)||(ln(`SMachine: next state NOT in state names: gclass ${e.gclass_name}, state ${r.state_name}, next_state ${l.next_state}`),t+=-1)}}}for(let n=0;n<e.dl_events.length;n++){let r=e.dl_events[n];if(!Fn(r.event_name)&&(In(r.event_flag)||(ln(`SMachine: event flag is NOT number: gclass ${e.gclass_name}, event ${r.event_name}`),t+=-1),!(r.event_flag&C.EVF_OUTPUT_EVENT))){let n=!1;for(let t=0;t<e.dl_states.length;t++){let l=e.dl_states[t];Fn(l.state_name)||Z(l,r.event_name)&&(n=!0)}n||(ln(`SMachine: input_list's event NOT in state: gclass ${e.gclass_name}, event ${r.event_name}`),t+=-1)}}return t}function oe(e,t){let n=null;try{n=p[e]}catch(e){}return n||t&&ln(`gclass not found: ${e}`),n}function se(){let e=[];for(const t of Object.keys(m))Sn(e,t);return e}function ae(){return!E||E.obflag&U.obflag_destroyed?null:E}function ue(e,t){e=e.toLowerCase();let n=m[e];return!n&&t?(ln(`gobj service not found: ${e}`),null):n}function _e(e){let t=Be(e);return t=t.toLowerCase(),m[t]&&ln(`service ALREADY REGISTERED: ${t}. Will be UPDATED`),m[t]=e,0}function ce(e,t){t.parent&&ln(`_add_child() ALREADY HAS PARENT: ${t.gobj_name}`),e.dl_children.push(t),t.parent=e}function fe(e,t){let n=nl(e.dl_children,t);n>=0&&(On(e.dl_children,n),t.parent=null)}function ge(e,t){return Ve(e)?u?u(e,t):-1:(ln(`${Qe(e)}: Only gobj services can load/save writable-persistent`),-1)}function de(e,t){return Ve(e)?_?_(e,t):-1:(ln(`${Qe(e)}: Only gobj services can load/save writable-persistent`),-1)}function be(e,t){return Ve(e)?c?c(e,t):-1:(ln(`${Qe(e)}: Only gobj services can load/save writable-persistent`),-1)}function pe(e,t){return f?f(e,t):null}function me(e,t){"__json_config_variables__"!==t&&ln(`GClass Attribute NOT FOUND: ${Qe(e)}, attr ${t}`)}function he(e,t,n){let r=t,l=function(e,t,n,r,l){if(!e||!t)return ln("hsdata or kw NULL"),-1;let i=0;for(const[n,o]of Object.entries(t)){const t=q(l.gclass,n,!1);t?i+=B(l,e,t,o):r&&(r(l,n),i--)}return i}(J(e),r,0,e.gclass.gclass_flag&L.gcflag_ignore_unknown_attrs?0:me,e);l<0&&(ln(`${Qe(e)} json2data() FAILED`),_n(r))}function Ee(e,n,r,l,i){if(i&P.gobj_flag_yuno){if(h)return ln("__yuno__ already created"),null;i|=P.gobj_flag_service}else{if(!l)return ln("gobj NEEDS a parent!"),null;if(!("string"==typeof l||l instanceof A))return ln(`BAD TYPE of parent: ${l}`),null;if($n(l)&&!(l=ue(l)))return on(`parent service not found: ${l}`),null}if(i&P.gobj_flag_service&&ue(e,!1))return ln(`service ALREADY registered: ${n}^${e}`),null;if(i&P.gobj_flag_default_service){if(E)return ln(`default service ALREADY registered: ${n}^${e}`),null;i|=P.gobj_flag_service}if(Fn(n))return ln("gclass_name must be a string"),null;let o=oe(n,!1);if(!o)return ln(`GClass not registered: ${n}^${e}`),null;if(!$n(e))return ln(`gobj_name must be a string: ${n}`),null;if(!Fn(e)){if(e.includes("`"))return ln(`gobj_name cannot contain char ': ${n}^${e}`),null;if(e.includes("^"))return ln(`gobj_name cannot contain char ^: ${n}^${e}`),null}let s=new A(e,o,r,l,i);s.jn_attrs=Y(s,o.attrs_table);for(const[e,t]of Object.entries(s.jn_attrs))e in s.priv&&(s.priv[e]=t);let a=h&&mt(h,"trace_creation");return a&&M(t("πŸ’™πŸ’™β© creating: %s^%s",o.gclass_name,e)),s.gobj_flag&P.gobj_flag_service&&_e(s),s.gobj_flag&P.gobj_flag_yuno&&(h=s),s.gobj_flag&P.gobj_flag_default_service&&(E=s),s.gobj_flag&P.gobj_flag_yuno||ce(l,s),s.obflag|=U.obflag_created,s.gclass.instances++,he(s,r),s.gobj_flag&P.gobj_flag_service&&u&&u(s,null),s.gclass.gmt.mt_create2?s.gclass.gmt.mt_create2(s,r):s.gclass.gmt.mt_create&&s.gclass.gmt.mt_create(s),l&&l.gclass.gmt.mt_child_added&&(a&&M(t("πŸ‘¦πŸ‘¦πŸ”΅ child_added(%s): %s",qe(l),Qe(s))),l.gclass.gmt.mt_child_added(l,s)),a&&M(t("πŸ’™πŸ’™βͺ created: %s",qe(s))),s}function Te(e,t,n){return Ee(e,t,n,null,P.gobj_flag_yuno)}function ye(e,t,n,r){return Ee(e,t,n,r,P.gobj_flag_service)}function Se(e,t,n,r){return Ee(e,t,n,r,P.gobj_flag_default_service|P.gobj_flag_autostart)}function Oe(e,t,n,r){return Ee(e,t,n,r,P.gobj_flag_volatil)}function ve(e,t,n,r){return Ee(e,t,n,r,P.gobj_flag_pure_child)}function Ne(e,t,n,r){return Ee(e,t,n,r,0)}function we(e){if(Ze(e))return void ln("gobj NULL or DESTROYED");e.__refs__>0&&ln(`${Qe(e)}: gobj DESTROYING with references: ${e.__refs__}`),e.obflag|=U.obflag_destroying;let n=h&&mt(h,"trace_creation");n&&M(t("πŸ’”πŸ’”β© destroying: %s",qe(e)));let r=Xe(e);r&&r.gclass.gmt.mt_child_removed&&(n&&M(t("πŸ‘¦πŸ‘¦πŸ”΄ child_removed(%s): %s",qe(r),Qe(e))),r.gclass.gmt.mt_child_removed(r,e)),e.gobj_flag&P.gobj_flag_service&&function(e){let t=Be(e);t=t.toLowerCase(),m[t]?delete m[t]:ln(`"service NOT found in register": ${t}`)}(e),e.playing&&(ln(`Destroying a PLAYING gobj: ${qe(e)}`),Ce(e)),e.running&&(ln(`Destroying a RUNNING gobj: ${qe(e)}`),ke(e)),Kt(e,e.dl_subscriptions,!0),Kt(e,e.dl_subscribings,!0),r&&(fe(r,e),ze(e)&&(et(r)!==e||Ze(r)||tt(r,null))),function(e){let t=e.dl_children.slice();for(let e=0;e<t.length;e++){let n=t[e];Ze(n)||we(n)}}(e),e.obflag&U.obflag_created&&e.gclass.gmt.mt_destroy&&e.gclass.gmt.mt_destroy(e),n&&M(t("πŸ’”πŸ’”βͺ destroyed: %s",qe(e))),e.obflag|=U.obflag_destroyed,e.obflag&U.obflag_created&&e.gclass.instances--}function De(e){if(Ze(e))return ln("gobj NULL or DESTROYED"),-1;if(e.running)return ln(`${Qe(e)}: GObj ALREADY RUNNING`),-1;if(e.disabled)return ln(`${Qe(e)}: GObj DISABLED`),-1;h&&mt(h,"trace_start_stop")&&M(t("⏺ ⏺ start: %s",qe(e))),e.running=!0;let n=0;return e.gclass.gmt.mt_start&&(n=e.gclass.gmt.mt_start(e)),n}function je(e,t,n){return e.gclass.gclass_flag&L.gcflag_manual_start||Ze(e)||Fe(e)||Ge(e)||De(e),0}function Re(e){return Ze(e)?(ln("gobj NULL or DESTROYED"),-1):rt(e,F.WALK_FIRST2LAST,je,0,0)}function $e(e,t,n){return e.gclass.gclass_flag&L.gcflag_manual_start||Ge(e)?1:(Fe(e)||De(e),0)}function Ie(e){if(Ze(e))return ln("gobj NULL or DESTROYED"),-1;return h&&mt(h,"trace_start_stop")&&M(t("⏺ ⏺ ⏺ ⏺ start_tree: %s",qe(e))),e.gclass.gclass_flag&L.gcflag_manual_start||e.disabled?0:(e.running||De(e),lt(e,F.WALK_TOP2BOTTOM,$e,0,0))}function ke(e){if(Ze(e))return ln("gobj NULL or DESTROYED"),-1;if(!e.running)return ln(`${Qe(e)}: GObj NOT RUNNING`),-1;e.playing&&(on(`${Qe(e)}: GObj stopping without previous pause`),Ce(e)),h&&mt(h,"trace_start_stop")&&M(t("⏹ ⏹ stop: %s",qe(e))),e.running=!1;let n=0;return e.gclass.gmt.mt_stop&&(n=e.gclass.gmt.mt_stop(e)),n}function Ae(e,t,n){return Fe(e)&&ke(e),0}function Le(e){return Ze(e)?(ln("gobj NULL or DESTROYED"),-1):rt(e,F.WALK_FIRST2LAST,Ae,0,0)}function Pe(e){if(Ze(e))return ln("gobj NULL or DESTROYED"),-1;return h&&mt(h,"trace_start_stop")&&M(t("⏹ ⏹ ⏹ ⏹ stop_tree: %s",qe(e))),Fe(e)&&ke(e),lt(e,F.WALK_TOP2BOTTOM,Ae,0,0)}function Ue(e){if(Ze(e))return ln(`gobj NULL or DESTROYED: ${Qe(e)}`),-1;if(e.playing)return ln(`${Qe(e)}: GObj ALREADY PLAYING`),-1;if(e.disabled)return ln(`${Qe(e)}: GObj DISABLED`),-1;if(!Fe(e)){if(e.gclass.gclass_flag&L.gcflag_required_start_to_play)return ln(`${Qe(e)}: Cannot play, start not done`),-1;on(`${Qe(e)}: GObj playing without previous start`),De(e)}h&&mt(h,"trace_start_stop")&&M(t("⏯ ⏯ play: %s",qe(e))),e.playing=!0;let n=0;return e.gclass.gmt.mt_play&&(n=e.gclass.gmt.mt_play(e),n<0&&(e.playing=!1)),n}function Ce(e){if(Ze(e))return ln("gobj NULL or DESTROYED"),-1;if(!e.playing)return ln(`${Qe(e)}: GObj NOT PLAYING`),-1;return h&&mt(h,"trace_start_stop")&&M(t("⏸ ⏸ pause: %s",qe(e))),e.playing=!1,e.gclass.gmt.mt_pause?e.gclass.gmt.mt_pause(e):0}function Fe(e){return!Ze(e)&&e.running}function Ge(e){return!!Ze(e)||e.disabled}function Ve(e){return!!(e&&e.gobj_flag&P.gobj_flag_service)}function We(e){return!Ze(e)&&e.playing}function Me(){return!h||h.obflag&U.obflag_destroyed?null:h}function Ke(){let e=Me();return e?Be(e):""}function Ye(){let e=Me();return e?Et(e,"yuno_role"):""}function xe(){let e=Me();return e?Et(e,"yuno_id"):""}function Be(e){return Cn(e)?e.gobj_name:(ln("gobj bad type"),null)}function Je(e){return Cn(e)?e.gclass.gclass_name:(ln("gobj NULL of bad type"),null)}function Qe(e){return Cn(e)?e.gclass.gclass_name+"^"+Be(e):(ln("gobj bad type"),null)}function qe(e){if(!Cn(e))return ln("gobj NULL of bad type"),null;let t=Qe(e),n=Xe(e);for(;n;){t=Qe(n)+"`"+t,n=Xe(n)}return t}function Xe(e){return Cn(e)?e.parent:(ln("gobj NULL of bad type"),null)}function ze(e){return Cn(e)?!!(e.gobj_flag&P.gobj_flag_volatil):(ln("gobj NULL of bad type"),null)}function He(e){return Cn(e)?!!(e.gobj_flag&P.gobj_flag_pure_child):(ln("gobj NULL of bad type"),null)}function Ze(e){return!Cn(e)||!!(e.obflag&(U.obflag_destroyed|U.obflag_destroying))}function et(e){return Cn(e)?e.bottom_gobj:(ln("gobj NULL of bad type"),null)}function tt(e,t){if(!Cn(e))return ln("gobj NULL of bad type"),null;e.bottom_gobj&&on(`${Qe(e)}: bottom_gobj already set`),e.bottom_gobj=t}function nt(e,t,n){return Cn(e)?t?q(e.gclass,t,n):e.gclass.attrs_table:(ln("gobj NULL of bad type"),null)}function rt(e,t,n,r,l){return Ze(e)?(ln("gobj NULL, destroying, or bad type"),0):it(e.dl_children,t,n,r,l)}function lt(e,t,n,r,l){return Ze(e)?(ln("gobj NULL, destroying, or bad type"),0):st(e.dl_children,t,n,r,l)}function it(e,t,n,r,l){let i,o=[...e];if(t&F.WALK_LAST2FIRST)for(let e=o.length;e>0;e--){i=o[e-1];let t=n(i,r,l);if(t<0)return t}else for(let e=0;e<o.length;e++){i=o[e];let t=n(i,r,l);if(t<0)return t}return 0}function ot(e,t,n,r,l){let i,o=it(e,t,n,r,l);if(o<0)return o;if(t&F.WALK_LAST2FIRST)for(let s=e.length;s>0;s--){if(i=e[s-1],o=ot([...i.dl_children],t,n,r,l),o<0)return o}else for(let s=0;s<e.length;s++){if(i=e[s],o=ot([...i.dl_children],t,n,r,l),o<0)return o}return o}function st(e,t,n,r,l){if(t&F.WALK_BYLEVEL)return ot(e,t,n,r,l);let i,o;if(t&F.WALK_BOTTOM2TOP)for(let s=e.length;s>0;s--){if(o=e[s-1],i=st([...o.dl_children],t,n,r,l),i<0)return i;if(i=n(o,r,l),i<0)return i}else for(let s=0;s<e.length;s++){if(o=e[s],i=n(o,r,l),i<0)return i;if(0===i){if(i=st([...o.dl_children],t,n,r,l),i<0)return i}}return 0}function at(e,t){if(Fn(t))return null;const n=t.toLowerCase();return"__default_service__"===n?E:"__yuno__"===n||"__root__"===n?h:gt(h,t)}function ut(e,t){if(!Cn(e))return ln("gobj NULL of bad type"),!1;let n=t.__gclass_name__,r=t.__gobj_name__,l=t.__prefix_gobj_name__;t.__disabled__;let i=t.__state__;if(n&&n!==Je(e))return!1;if(r&&r!==Be(e))return!1;if(l){let t=l.length;if(l!==Be(e).substring(0,t))return!1}if(i){if(i!==jt(e))return!1}let o=e.jn_attrs;for(const n of Object.keys(t))if("__gclass_name__"!==n&&"__gobj_name__"!==n&&"__prefix_gobj_name__"!==n&&"__disabled__"!==n&&"__state__"!==n&&dt(e,n)&&o[n]!==t[n])return!1;return!0}function _t(e,t){if(Ze(e))return ln("gobj NULL or DESTROYED"),null;const n=e.dl_children;for(let e=0;e<n.length;e++){const r=n[e];if(ut(r,t))return r}return null}function ct(e,t){if(Ze(e))return ln("gobj NULL or DESTROYED"),null;t=t||{};let n=[];const r=e.dl_children;for(let e=0;e<r.length;e++){const l=r[e];ut(l,t)&&n.push(l)}return n}function ft(e,t){t=t||{};let n=[];return function e(n,r){let l=r.dl_children;for(let r=0;r<l.length;r++){let i=l[r];ut(i,t)&&n.push(i),e(n,i)}}(n,e),n}function gt(e,t){if(!t)return null;let n=t.split("`");if(!function(e,t){let n=t.split("^"),r=null,l=null;if(2===n.length){if(l=n[0],r=n[1],l!==Je(e))return!1}else{if(1!==n.length)return!1;r=n[0]}return r===Be(e)}(e,n[0]))return null;if(1===n.length)return e;let r=n[1].split("^"),l={};1===r.length?l.__gobj_name__=r:(l.__gclass_name__=r[0],l.__gobj_name__=r[1]);let i=_t(e,l);return i?(n.splice(0,1),n=n.join("`"),gt(i,n)):null}function dt(e,t){return!Fn(t)&&!!q(e.gclass,t,!1)}function bt(e,t,n){let r=e.jn_attrs;if(t in r&&r.hasOwnProperty(t)){let n=r[t];return e.gclass.gmt.mt_reading?e.gclass.gmt.mt_reading(e,t,n):n}return ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),null}function pt(e,t,n){let r={},l=e.gclass.attrs_table;for(let n=0;n<l.length;n++){const i=l[n];if(i.name&&(-1===t||i.flag&t)){let t=mn(e.jn_attrs,i.name);En(r,i.name,t)}}return r}function mt(e,t){if(t){if(0===Mn(t,"__disabled__"))return Ge(e);if(0===Mn(t,"__running__"))return Fe(e);if(0===Mn(t,"__playing__"))return We(e);if(0===Mn(t,"__service__"))return Ve(e)}let n=Q(e,t);return n?!e.gclass.gmt.mt_reading||e.obflag&U.obflag_destroyed?mn(n,t):e.gclass.gmt.mt_reading(e,t):(ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),0)}function ht(e,t){t&&Mn(t,"__trace_level__");let n=Q(e,t);return n?!e.gclass.gmt.mt_reading||e.obflag&U.obflag_destroyed?mn(n,t):e.gclass.gmt.mt_reading(e,t):(ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),0)}function Et(e,t){if(t&&0===Mn(t,"__state__"))return jt(e);let n=Q(e,t);return n?!e.gclass.gmt.mt_reading||e.obflag&U.obflag_destroyed?mn(n,t):e.gclass.gmt.mt_reading(e,t):(ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),0)}function Tt(e,t){let n=Q(e,t);return n?!e.gclass.gmt.mt_reading||e.obflag&U.obflag_destroyed?mn(n,t):e.gclass.gmt.mt_reading(e,t):(ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),0)}function yt(e,n,r,l){if(!$n(n))return ln(t("gobj_write_attr(%s): path must be a string",Qe(e))),-1;let i,o=e.jn_attrs,s=n.split("`");if(s.length<=1){let l=n;return l in o&&o.hasOwnProperty(l)?(o[l]=r,jn(e.priv)&&e.priv.hasOwnProperty(l)&&(e.priv[l]=r),e.obflag&U.obflag_created&&!(e.obflag&U.obflag_destroyed)&&e.gclass.gmt.mt_writing&&e.gclass.gmt.mt_writing(e,l),0):(ln(t("gobj_write_attr(%s): attr not found '%s'",Qe(e),l)),-1)}let a=s.length;for(let t=0;t<a;t++){i=s[t];let n=_t(e,{__gobj_name__:i});if(n&&t<a-1){e=n;continue}let l=e.jn_attrs;if(i in l&&l.hasOwnProperty(i))return l[i]=r,jn(e.priv)&&e.priv.hasOwnProperty(i)&&(e.priv[i]=r),e.obflag&U.obflag_created&&!(e.obflag&U.obflag_destroyed)&&e.mt_writing&&e.mt_writing(e,i),0;break}return ln(t("gobj_write_attr(%s): attr not found '%s'",Qe(e),i)),-1}function St(e){return function(e,t){if(Ze(e))return ln("gobj NULL or DESTROYED"),-1;let n=e.gclass.attrs_table;for(let r=0;r<n.length;r++){const l=n[r];if(l.name&&(-1===t||l.flag&t)){const t=x(e,e.jn_attrs,l);jn(e.priv)&&e.priv.hasOwnProperty(l.name)&&(e.priv[l.name]=t),e.gclass.gmt.mt_writing&&e.gclass.gmt.mt_writing(e,l.name)}}return 0}(e,S.SDF_VOLATIL)}function Ot(e,t,n,r){let l=J(e),i=0;for(const[r,o]of Object.entries(t)){let t=nt(e,r,!0);t&&((-1===n||t.flag&n)&&(i+=B(e,l,t,o)))}return i}function vt(e,t,n){let r=Q(e,t);return r?(r[t]=Gn(n),jn(e.priv)&&e.priv.hasOwnProperty(t)&&(e.priv[t]=n),e.obflag&U.obflag_created&&!(e.obflag&U.obflag_destroyed)&&e.gclass.gmt.mt_writing&&e.gclass.gmt.mt_writing(e,t),0):(ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),-1)}function Nt(e,t,n){let r=Q(e,t);return r?(r[t]=parseInt(n),jn(e.priv)&&e.priv.hasOwnProperty(t)&&(e.priv[t]=n),e.obflag&U.obflag_created&&!(e.obflag&U.obflag_destroyed)&&e.gclass.gmt.mt_writing&&e.gclass.gmt.mt_writing(e,t),0):(ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),-1)}function wt(e,t,n){let r=Q(e,t);return r?(r[t]=String(n),jn(e.priv)&&e.priv.hasOwnProperty(t)&&(e.priv[t]=n),e.obflag&U.obflag_created&&!(e.obflag&U.obflag_destroyed)&&e.gclass.gmt.mt_writing&&e.gclass.gmt.mt_writing(e,t),0):(ln(`${Qe(e)}: GClass Attribute NOT FOUND, attr ${t}`),-1)}function Dt(e,t){if(Ze(e))return ln("gobj NULL or DESTROYED"),null;if(e.current_state.state_name===t)return!1;let n=H(e.gclass,t);return n?(e.last_state=e.current_state,e.current_state=n,!0):(ln(`${Qe(e)}: state unknown, state ${t}`),!1)}function jt(e){return Ze(e)?(ln("gobj NULL or DESTROYED"),null):e.current_state.state_name}function Rt(e,n){if(Ze(e))return ln("gobj NULL or DESTROYED"),null;if(!(n instanceof A))return ln(`${Qe(e)}: gobj_change_parent() BAD TYPE of parent`),-1;if(e.parent&&e.parent.mt_child_removed&&e.parent.mt_child_removed(e.parent,e),e.parent&&(fe(e.parent,e),e.parent=null),ce(n,e),n.mt_child_added){h&&mt(h,"trace_creation")&&an(t("πŸ‘¦πŸ‘¦πŸ”΅ child_added(%s): %s",qe(n),Qe(e))),n.mt_child_added(n,e)}return 0}function $t(e,t,n){if(!Cn(e))return ln("gobj NULL of bad type"),null;let r=le(e.gclass,t);if(r)return r;if(n){const e=b.length,n=b;for(let r=0;r<e;r++){let e=n[r];if(e.event_name&&e.event_name===t)return e}}return null}function It(e,t,n){let r=$t(e,t,!1);return!!r&&!(n&&!(r.event_flag&n))}function kt(e,t,n){let r=$t(e,t,!1);return!!r&&(!(n&&!(r.event_flag&n))&&!!(r.event_flag&C.EVF_OUTPUT_EVENT))}function At(e,t,n,r){setTimeout(()=>{Ze(e)||Lt(e,t,n,r)},10)}function Lt(e,n,r,l){if(!(e&&e instanceof A))return ln("gobj dst NULL"),-1;if(e.obflag&(U.obflag_destroyed|U.obflag_destroying))return ln("gobj dst DESTROYED"),-1;let i=e.current_state;if(!i)return ln(`${Qe(e)}: current_state NULL`),-1;let o=0;o=h&&ht(h,"tracing"),"C_TIMER"===Je(l)&&(o=h&&ht(h,"trace_timer")),T++;let s=Z(i,n);if(!s)return e.gclass.gmt.mt_inject_event?(T--,o&&(M(t("πŸ”ƒ mach(%s%s), st: %s, ev: %s, from(%s%s)",e.running?"":"!!",Qe(e),i.state_name,n||"",l&&!l.running?"!!":"",Qe(l))),r&&o>1&&Nn(r)&&_n(r)),e.gclass.gmt.mt_inject_event(e,n,r,l)):(o&&M(t("πŸ“› mach(%s%s^%s), st: %s, ev: %s, πŸ“›πŸ“›ERROR Event NOT DEFINED in stateπŸ“›πŸ“›, from(%s%s^%s)",e.running?"":"!!",Je(e),Be(e),i.state_name,n||"",l&&!l.running?"!!":"",Je(l),Be(l))),ln(`πŸ“›πŸ“› Event NOT DEFINED in state πŸ“›πŸ“›: ${Qe(e)}, ${i.state_name}, ${n}`),T--,-1);if(o){let a="";s.action&&(a=il(s.action)),M(t("πŸ”„ mach(%s%s^%s), st: %s, ev: %s%s%s, ac: %s, from(%s%s^%s)",e.running?"":"!!",Je(e),Be(e),i.state_name,"",n||"","",a,l&&!l.running?"!!":"",Je(l),Be(l))),r&&o>1&&Nn(r)&&_n(r)}s.next_state&&Dt(e,s.next_state);let a=-1;try{s.action&&(a=s.action(e,n,r,l))}finally{}return!o||e.obflag&U.obflag_destroyed||M(t("<- mach(%s%s^%s), st: %s, ev: %s, ret: %d",e.running?"":"!!",Je(e),Be(e),e.current_state.state_name,n||"",In(a)?a:0)),T--,a}const Pt=Object.freeze({__hard_subscription__:1,__own_event__:2}),Ut=[N(y.DTP_POINTER,"publisher",0,null,"publisher gobj"),N(y.DTP_POINTER,"subscriber",0,null,"subscriber gobj"),N(y.DTP_STRING,"event",0,"","event name subscribed"),N(y.DTP_STRING,"renamed_event",0,"","rename event name"),N(y.DTP_INTEGER,"subs_flag",0,0,"subscription flag"),N(y.DTP_JSON,"__config__",0,null,"subscription config"),N(y.DTP_JSON,"__global__",0,null,"global kw, merge in publishing"),N(y.DTP_JSON,"__local__",0,null,"local kw, remove in publishing"),N(y.DTP_JSON,"__filter__",0,null,"filter kw, filter in publishing"),N(y.DTP_STRING,"__service__",0,"","subscription service"),v()];function Ct(e,t,n,r,l){let i=nr(t,r,"__config__",null),o=nr(t,r,"__global__",null),s=nr(t,r,"__local__",null),a=rr(t,r,"__filter__",null),u=!0;if(t){t!==tr(null,e,"publisher",null)&&(u=!1)}if(l){l!==tr(null,e,"subscriber",null)&&(u=!1)}if(n){n!==er(null,e,"event","")&&(u=!1)}if(Dn(i)>0){let t=nr(null,e,"__config__",null);Dn(t)>0&&gn(t,i)||(u=!1)}if(Dn(o)>0){let t=nr(null,e,"__global__",null);Dn(t)>0&&gn(t,o)||(u=!1)}if(Dn(s)>0){let t=nr(null,e,"__local__",null);Dn(t)>0&&gn(t,s)||(u=!1)}if(Dn(a)>0){let t=rr(null,e,"__filter__",null);Dn(t)>0&&gn(t,a)||(u=!1)}return u}function Ft(e,t,n,r,l){let i=[];for(let o=0;o<e.length;o++){let s=e[o];Ct(s,t,n,r,l)&&yn(i,s)}return i}function Gt(e,t,n,r,l){for(let i=0;i<e.length;i++){if(Ct(e[i],t,n,r,l))return i}return-1}function Vt(e,n,r,l){let i=tr(e,n,"publisher",null,Xt.KW_REQUIRED),o=tr(e,n,"subscriber",null,Xt.KW_REQUIRED),s=er(e,n,"event","",Xt.KW_REQUIRED);if((Hn(e,n,"subs_flag",null,Xt.KW_REQUIRED)&Pt.__hard_subscription__?1:0)&&!r)return-1;h&&mt(h,"trace_subscriptions")&&(M(t("πŸ’œπŸ’œπŸ‘Ž unsubscribing event '%s': publisher %s, subscriber'%s'",s||"",Qe(i),Qe(o))),_n(n)),i.obflag&U.obflag_destroyed||l||i.gclass.gmt.mt_subscription_deleted&&i.gclass.gmt.mt_subscription_deleted(i,n);let a=Gt(i.dl_subscriptions,i,s,n,o);return a>=0?On(i.dl_subscriptions,a):(ln(`${Qe(e)}: subscription in publisher not found`),_n(n)),a=Gt(o.dl_subscribings,i,s,n,o),a>=0?On(o.dl_subscribings,a):(ln(`${Qe(e)}: subscription in subscriber not found`),_n(n)),0}function Wt(e,n,r,l){if(null==r&&(r={}),!e)return ln(`publisher NULL: ev ${n}`),0;if(!l)return ln(`subscriber NULL: ev ${n}`),0;const i=new Set(["__config__","__global__","__local__","__filter__","__service__"]);if(Object.keys(r).forEach(t=>{i.has(t)||ln(`${Qe(e)}: key ignored in subscription (key: ${t}, event: ${n})`)}),Fn(n))n="";else if(!(kt(e,n,C.EVF_OUTPUT_EVENT)||e.gclass.gclass_flag&L.gcflag_no_check_output_events))return ln(`event NOT in output event list: ${Qe(e)}, ${n}`),0;let o=Ft(e.dl_subscriptions,e,n,r,l);wn(o)>0&&(ln(`${Qe(e)}: ${wn(o)} subscription(s) REPEATED, will be deleted and override`),_n(o,"subscription REPEATED"),Kt(e,o,!1));let s=function(e,t,n,r){let l=Y(e,Ut);Tn(l,"event",t),Tn(l,"subscriber",r),Tn(l,"publisher",e);let i=0;if(n){let t=nr(e,n,"__config__",null),r=nr(e,n,"__global__",null),o=nr(e,n,"__local__",null),s=rr(e,n,"__filter__",null),a=er(e,n,"__service__","");if(Dn(r)>0&&Tn(l,"__global__",cn(r)),Dn(t)>0){let n=cn(t);if(Tn(l,"__config__",n),Qn(n,"__hard_subscription__")){let t=zn(e,n,"__hard_subscription__",!1);hn(n,"__hard_subscription__"),t&&(i|=Pt.__hard_subscription__)}if(Qn(n,"__own_event__")){let t=zn(e,n,"__own_event__",!1);hn(n,"__own_event__"),t&&(i|=Pt.__own_event__)}}Dn(o)>0&&Tn(l,"__local__",cn(o)),Dn(s)>0&&Tn(l,"__filter__",cn(s)),Fn(a)||Tn(l,"__service__",a)}return Tn(l,"subs_flag",i),l}(e,n,r,l);if(!s)return ln(`${Qe(e)}: _create_subscription() FAILED`),0;if(yn(e.dl_subscriptions,s),yn(l.dl_subscribings,s),h&&mt(h,"trace_subscriptions")&&(M(t("πŸ’œπŸ’œπŸ‘ subscribing event '%s', publisher '%s', subscriber %s",n||"",Qe(e),Qe(l))),r&&_n(r)),e.gclass.gmt.mt_subscription_added){e.gclass.gmt.mt_subscription_added(e,s)<0&&(Vt(e,s,!0,!0),s=0)}return s}function Mt(e,t,n,r){if(null==n&&(n={}),!e)return ln(`publisher NULL: ev ${t}`),0;if(!r)return ln(`subscriber NULL: ev ${t}`),0;const l=new Set(["__config__","__global__","__local__","__filter__","__service__"]);if(Object.keys(n).forEach(n=>{l.has(n)||ln(`${Qe(e)}: key ignored in subscription (key: ${n}, event: ${t})`)}),Fn(t))t="";else if(!(kt(e,t,C.EVF_OUTPUT_EVENT)||e.gclass.gclass_flag&L.gcflag_no_check_output_events))return ln(`event NOT in output event list: ${Qe(e)}, ev ${t}`),0;let i=Ft(e.dl_subscriptions,e,t,n,r),o=0;for(let t=0;t<i.length;t++){let n=i[t];Vt(e,n,!1,!1),o++}return o||(on(`${Qe(e)}: No subscription found`),_n(n,"No subscription found")),0}function Kt(e,t,n){let r=[...t];for(let t=0;t<r.length;t++){Vt(e,r[t],n,!1)}return 0}function Yt(e,t,n,r){return null==n&&(n={}),Ft(e.dl_subscriptions,e,t,n,r)}function xt(e){let t=Yt(e,null,null,null);for(let n=0;n<t.length;n++){let r=t[n],l=tr(e,r,"publisher",null,Xt.KW_REQUIRED),i=tr(e,r,"subscriber",null,Xt.KW_REQUIRED);Tn(r,"s_event",er(e,r,"event","",Xt.KW_REQUIRED)),Tn(r,"s_publisher",Qe(l)),Tn(r,"s_subscriber",Qe(i))}let n=Bt(e,0,null,0);for(let t=0;t<n.length;t++){let r=n[t],l=tr(e,r,"publisher",null,Xt.KW_REQUIRED),i=tr(e,r,"subscriber",null,Xt.KW_REQUIRED);Tn(r,"s_event",er(e,r,"event","",Xt.KW_REQUIRED)),Tn(r,"s_publisher",Qe(l)),Tn(r,"s_subscriber",Qe(i))}return{subscriptions:t,subscribings:n,"total subscriptions":wn(t),total_subscribings:wn(n)}}function Bt(e,t,n,r){return Ft(e.dl_subscribings,r,t,n,e)}function Jt(e,n,r){if(jn(r)||(r={}),!e||e.obflag&(U.obflag_destroyed|U.obflag_destroying))return ln("gobj NULL or DESTROYED"),-1;if(Fn(n))return ln(`${Qe(e)}: event EMPTY`),-1;let l=$t(e,n,!0);if(!(l&&l.event_flag&(C.EVF_SYSTEM_EVENT|C.EVF_OUTPUT_EVENT)||e.gclass.gclass_flag&L.gcflag_no_check_output_events))return ln(`event NOT in output event list: ${Qe(e)}, ev ${n}`),-1;let i=h&&mt(h,"trace_subscriptions");if(i&&(M(t("πŸ”πŸ” mach(%s%s^%s), st: %s, ev: %s%s%s",e.running?"":"!!",Je(e),Be(e),e.current_state.state_name,"",n||"","")),_n(r)),e.gclass.gmt.mt_publish_event){let t=e.gclass.gmt.mt_publish_event(e,n,r);if(t<=0)return t}let o=[...e.dl_subscriptions],s=0,a=0;for(let l=0;l<o.length;l++){let u=o[l];if(e.gclass.gmt.mt_publication_pre_filter){let t=e.gclass.gmt.mt_publication_pre_filter(e,u,n,r);if(t<0)break;if(0===t)continue}let _=tr(e,u,"subscriber",null,Xt.KW_REQUIRED);if(!_||Ze(_))continue;let c=Hn(e,u,"subs_flag",0,Xt.KW_REQUIRED),f=er(e,u,"event","",Xt.KW_REQUIRED);if(Fn(f)||0===Mn(f,n)){nr(e,u,"__config__",null,0);let l=nr(e,u,"__global__",null,0),o=nr(e,u,"__local__",null,0),f=rr(e,u,"__filter__",null,0),g=r,d=1;if(e.gclass.gmt.mt_publication_filter?d=e.gclass.gmt.mt_publication_filter(e,n,g,_):Dn(f)>0&&(d=ar(g,f),i&&(M(t("πŸ’œπŸ’œπŸ”„%s publishing with filter, event '%s', subscriber'%s', publisher %s",d?"πŸ‘":"πŸ‘Ž",n||"",Qe(_),Qe(e))),_n(f))),d<0)break;if(0===d)continue;let b=$t(_,n,!0);if(b&&b.event_flag&C.EVF_SYSTEM_EVENT&&!It(_,b.event_name,0))continue;o&&Jn(g,o),l&&dn(g,l),i&&(M(t("πŸ”πŸ”„ mach(%s%s), st: %s, ev: %s, from(%s%s)",_.running?"":"!!",Qe(_),jt(_),n||"",e&&!e.running?"!!":"",Qe(e))),_n(g));let p=Lt(_,n,g,e);if(p<0&&c&Pt.__own_event__){s=-1;break}if(a+=p,s++,Ze(e))break}}return s||l&&l.event_flag&C.EVF_NO_WARN_SUBS||on(`${Qe(e)}: Publish event WITHOUT subscribers, ev ${n}`),a}function Qt(e,n,r,l){if(Ze(e))return ln("gobj NULL or DESTROYED"),-1;let o=h&&ht(h,"tracing");return o&&(M(t("πŸŒ€πŸŒ€ mach(%s%s), cmd: %s, src: %s",Fe(e)?"":"!!",Qe(e),n,Qe(l))),o>1&&_n(r)),e.gclass.gmt.mt_command_parser?e.gclass.gmt.mt_command_parser(e,n,r,l):e.gclass.command_table?g?g(e,n,r,l):i(0,-1,t("%s: global command parser not available",Qe(e)),0,0):i(0,-1,t("%s: command table not available",Qe(e)),0,0)}function qt(e,n,r,l){return Ze(e)?(ln("gobj NULL or DESTROYED"),-1):e.gclass.gmt.mt_stats?e.gclass.gmt.mt_stats(e,n,r,l):d?d(e,n,r,l):s(0,-1,t("%s, stats parser not available",Qe(e)),0,0)}const Xt=Object.freeze({KW_REQUIRED:1,KW_CREATE:2,KW_WILD_NUMBER:4,KW_EXTRACT:8,KW_BACKWARD:16,KW_VERBOSE:32,KW_LOWER:64,KW_RECURSIVE:128}),zt="undefined"!=typeof window?window.console:console;let Ht=zt.error,Zt=zt.warn,en=zt.info,tn=zt.debug;function nn(e){e?(Ht=e,Zt=e):(Ht=zt.error,Zt=zt.warn)}function rn(e){const t=Array.prototype.slice.call(arguments);let n="";if("string"==typeof e){let r=1;n=e.replace(/%[sdifoO]/g,e=>{const n=t[r++];switch(e){case"%s":return String(n);case"%d":case"%i":return parseInt(n);case"%f":return parseFloat(n);case"%o":case"%O":return"object"==typeof n?JSON.stringify(n):String(n);default:return e}});const l=t.slice(r).map(e=>"object"==typeof e?JSON.stringify(e):String(e));l.length>0&&(n+=" "+l.join(" "))}else n=t.map(e=>"object"==typeof e?JSON.stringify(e):String(e)).join(" ");return n}function ln(e){let t=rn(e),n=el();Ht&&(Ht===window.console.error?Ht("%c"+n+" ERROR: "+String(t),"color:red"):(window.console.error("%c"+n+" ERROR: "+String(t),"color:red"),Ht(`${n} ERROR: ${String(t)}`)))}function on(e){let t=rn(e),n=el();Zt&&(Zt===window.console.warn?Zt("%c"+n+" WARNING: "+String(t),"color:yellow"):(window.console.warn("%c"+n+" WARNING: "+String(t),"color:yellow"),Zt(`${n} WARNING: ${String(t)}`)))}function sn(e){let t=rn(e),n=el();en&&en("%c"+n+" INFO: "+String(t),"color:cyan")}function an(e){let t=rn(e),n=el();tn&&tn("%c"+n+" DEBUG: "+String(t),"color:silver")}function un(e){let t=rn(e),n=el();tn&&tn("%c"+n+" MSG: "+String(t),"color:cyan")}function _n(e,t){t&&window.console.warn("=====> "+t),window.console.dir(e)}function cn(e){return structuredClone(e)}function fn(...e){const t={};for(const n of e){const e=structuredClone(n);Object.assign(t,e)}return t}function gn(e,t){if(e===t)return!0;if(null===e||null===t)return e===t;if(typeof e!=typeof t)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!gn(e[n],t[n]))return!1;return!0}if("object"==typeof e){let n=Object.keys(e).sort(),r=Object.keys(t).sort();if(n.length!==r.length)return!1;for(let l=0;l<n.length;l++){if(n[l]!==r[l])return!1;if(!gn(e[n[l]],t[r[l]]))return!1}return!0}return e===t}function dn(e,t){if(!t)return e;for(let n of Object.keys(t))e[n]=t[n];return e}function bn(e,t){if(!t)return e;for(let n in t)t.hasOwnProperty(n)&&e.hasOwnProperty(n)&&(e[n]=t[n]);return e}function pn(e,t){if(!t)return e;for(let n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n]);return e}function mn(e,t){if(e&&e.hasOwnProperty(t))return e[t]}function hn(e,t){e&&e.hasOwnProperty(t)&&delete e[t]}function En(e,t,n){e[t]=n}function Tn(e,t,n){e[t]=n}function yn(e,t){e.push(t)}function Sn(e,t){e.push(t)}function On(e,t){e.splice(t,1)}function vn(e,t){return t?(Array.prototype.push.apply(e,t),e):e}function Nn(e){return jn(e)?Object.keys(e).length:0}function wn(e){return Rn(e)?e.length:0}function Dn(e){return jn(e)?Object.keys(e).length:Rn(e)?e.length:$n(e)&&e.length>0?1:0}function jn(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Rn(e){return Array.isArray(e)}function $n(e){return"string"==typeof e}function In(e){return"number"==typeof e&&Number.isFinite(e)}function kn(e){return"boolean"==typeof e}function An(e){return null==e}function Ln(e){if(In(e))return!0;if(!$n(e))return!1;const t=Number(e);return!isNaN(t)&&(""!==e.trim()&&!isNaN(t))}function Pn(e){return e instanceof Date&&!isNaN(e)}function Un(e){return"function"==typeof e}function Cn(e){return e instanceof A}function Fn(e){return!$n(e)||0===e.length}function Gn(e){if(In(e))return Boolean(e);return/^\s*(true|1|on)\s*$/i.test(e)}function Vn(e,t,n){var r=(e+"").substring(0,n),l=(t+"").substring(0,n);return r===l?0:r>l?1:-1}function Wn(e,t){return e===t?0:e>t?1:-1}function Mn(e,t){let n=e.toLowerCase(),r=t.toLowerCase();return n===r?0:n>r?1:-1}function Kn(e,t){if(jn(e)||jn(t)||Rn(e)||Rn(t))return 0;if(In(e)||In(t)){let n=Number(e),r=Number(t);return n>r?1:n<r?-1:0}if(kn(e)||kn(t)){let n=Number(e),r=Number(t);return n>r?1:n<r?-1:0}return Wn(String(e),String(t))}function Yn(e,t,n){var r;return-1!==(r=(e+="").indexOf(t))&&(n?e.substring(0,r):e.slice(r))}function xn(e){if(!$n(e))return!1;let t;for(t=0;t<e.length&&"_"===e[t]&&!(t>2);t++);return 2===t}function Bn(e){if(!$n(e))return!1;let t;for(t=0;t<e.length&&"_"===e[t]&&!(t>2);t++);return 1===t}function Jn(e,t){if("object"!=typeof t||Array.isArray(t))if(Array.isArray(t))for(const n of t)Jn(e,n);else"string"==typeof t&&delete e[t];else for(const n of Object.keys(t))delete e[n]}function Qn(e,t){return!(!(t in e)||!e.hasOwnProperty(t))}function qn(e,t,n,r){if(e&&!Cn(e)&&ln("GObj bad instanceof"),!jn(t)&&!Rn(t))return ln(`${Qe(e)}: kw must be list or dict`),0;if(!$n(n))return ln(`${Qe(e)}: path must be a string: ${String(n)}`),0;let l=n.split("`");if(l.length<=1)return t[n];let i=l.length;for(let o=0;o<i;o++){if(void 0===(t=t[l[o]]))return void(r&&ln(`${Qe(e)}: path not found: ${String(n)}`))}return t}function Xn(e,t,n){e&&!Cn(e)&&ln("GObj bad instanceof");let[r,l]=function(e,t){let n=e.lastIndexOf(t);return-1===n?[e,""]:[e.substring(0,n),e.substring(n+1)]}(n,"`");if(Fn(l))hn(t,n);else{hn(qn(e,t,r,!0),l)}return 0}function zn(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=Boolean(r);return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),Boolean(r)}return a&&Xn(e,t,n),Boolean(i)}function Hn(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=parseInt(r);return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),parseInt(r)}return a&&Xn(e,t,n),In(i)?parseInt(i):(o&&(ln(`path value MUST BE a number: ${n}`),un(t)),parseInt(r))}function Zn(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=Number(r);return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),Number(r)}return a&&Xn(e,t,n),In(i)?Number(i):(o&&(ln(`path value MUST BE a number: ${n}`),un(t)),Number(r))}function er(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=String(r);return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),String(r)}return a&&Xn(e,t,n),$n(i)?String(i):(o&&(ln(`${Qe(e)}: path value MUST BE a string: ${n}`),un(t)),String(r))}function tr(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=r;return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),r}return a&&Xn(e,t,n),i}function nr(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=Object(r);return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),Object(r)}return a&&Xn(e,t,n),jn(i)?Object(i):(o&&(ln(`path value MUST BE a dict: ${n}`),un(t)),Object(r))}function rr(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=r;return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),r}return a&&Xn(e,t,n),i}function lr(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=qn(e,t,n,!1);const o=l&&l&Xt.KW_REQUIRED,s=l&&l&Xt.KW_CREATE,a=l&&l&Xt.KW_EXTRACT;if(void 0===i){if(s){let l=Array(r);return ir(e,t,n,l),l}return o&&(ln(`path not found: '${n}'`),_n(t)),Array(r)}return a&&Xn(e,t,n),Rn(i)?Array(i):(o&&(ln(`path value MUST BE an array: ${n}`),un(t)),Array(r))}function ir(e,t,n,r){if(e&&!Cn(e)&&ln("GObj bad instanceof"),!jn(t))return ln("kw is not an object"),-1;let l=n.split("`");if(l.length<=1)return t[n]=r,0;let i=l.length;for(let e=0;e<i;e++){let n=l[e];if(e===i-1)t[n]=r;else{void 0===t[n]&&(t[n]={}),t=t[n]}}return 0}function or(e,t,n,r,l){if(e&&!Cn(e)&&ln("GObj bad instanceof"),!jn(t))return ln("kw is not an object"),-1;let i=nr(e,t,n,{},!0);return jn(i)?(i[r]=l,0):(ln("subdict is not an object"),-1)}function sr(e,n,r){let l="",i=!1;if(Rn(n)){i=!1;for(let o=0;o<n.length;o++){let s=n[o];if(l=Fn(r)?t("%s",r):t("%s`%d",r,o),i=sr(e,s,l),i)break}}else if(jn(n)){i=!0;let o=Object.keys(n);for(let s=0;s<o.length;s++){let a=o[s],u=n[a];if(l=Fn(r)?t("%s",a):t("%s`%s",r,a),Rn(u)||jn(u)){if(i=sr(e,u,l),!i)break;continue}let _=rr(0,e,l,0,0);if(_||(_=mn(e,l)),!_){i=!1;break}if(0!==Kn(_,u)){i=!1;break}}}return i}function ar(e,t){return 0===Dn(t)||sr(e,t,"")}function ur(e,t,n,r){if(!n||!Rn(t))return r&&ln("item NULL or kw_list is not a list"),-1;for(let e=0;e<t.length;e++){if(gn(n,t[e]))return e}return r&&ln("item not found in this list"),-1}function _r(e,t,n,r){if(e&&!Cn(e)&&ln("GObj bad instanceof"),!t)return null;r||(r=ar);let l=[];if(Rn(t))for(let e=0;e<t.length;e++){let i=t[e];r(i,n)&&l.push(cn(i))}else{if(!jn(t))return ln("kw_select() BAD kw parameter"),null;r(t,n)&&l.push(cn(t))}return l}function cr(e,t,n,r){if(e&&!Cn(e)&&ln("GObj bad instanceof"),!t)return null;r||(r=ar);let l=[];if(Rn(t))for(let e=0;e<t.length;e++){let i=t[e];r(i,n)&&l.push(i)}else{if(!jn(t))return ln("kw_select() BAD kw parameter"),null;r(t,n)&&l.push(t)}return l}function fr(e,t,n,r){e&&!Cn(e)&&ln("GObj bad instanceof");let l={};if($n(n)&&!Fn(n)){let i=n;t.hasOwnProperty(i)?l[i]=t[i]:r&&ln(`${Qe(e)}: key not found: ${i}`)}else if(jn(n)&&Nn(n)>0)for(let i of Object.keys(n))t.hasOwnProperty(i)?l[i]=t[i]:r&&ln(`${Qe(e)}: key not found: ${i}`);else{if(!(Rn(n)&&wn(n)>0))return t;for(let i=0;i<n.length;i++){let o=n[i];t.hasOwnProperty(o)?l[o]=t[o]:r&&ln(`${Qe(e)}: key not found: ${o}`)}}return l}function gr(e,t,n,r){let l={};if(dn(l,t),$n(n)&&!Fn(n)){let i=n;rr(e,t,i,0,0)?hn(l,i):r&&ln(`${Qe(e)}: key not found: ${i}`)}else if(jn(n)&&Nn(n)>0)for(let i of Object.keys(n))t.hasOwnProperty(i)?hn(l,i):r&&ln(`${Qe(e)}: key not found: ${i}`);else{if(!(Rn(n)&&wn(n)>0))return{};for(let i=0;i<n.length;i++){let o=n[i];t.hasOwnProperty(o)?hn(l,o):r&&ln(`${Qe(e)}: key not found: ${o}`)}}return l}function dr(e,t,n=!1){if("undefined"!=typeof window&&window.localStorage)try{let r=window.localStorage.getItem(e);return null===r?(n&&br(e,t),t):JSON.parse(r)}catch(n){return window.console.warn(`Error reading localStorage key "${e}":`,n),t}}function br(e,t){if("undefined"!=typeof window&&window.localStorage)if(e&&void 0!==t)try{window.localStorage.setItem(e,JSON.stringify(t))}catch(t){window.console.warn(`Error saving localStorage key "${e}":`,t)}else window.console.warn(`Invalid key or value for localStorage: key=${e}, value=${t}`)}function pr(e){if("undefined"!=typeof window&&window.localStorage)if(e)try{window.localStorage.removeItem(e)}catch(t){window.console.warn(`Error removing localStorage key "${e}":`,t)}else window.console.warn(`Invalid key for localStorage removal: ${e}`)}function mr(e,t){if(An(e)||An(t))return!0;if(Rn(e)){if(0===e.length)return!0;for(let n=0;n<e.length;n++){if(e[n]===t)return!0}}else if(jn(e)){if(0===Object.keys(e).length)return!0;for(let n in e)if(n===t)return!0}else if($n(e)&&e===t)return!0;return!1}function hr(e,t,n,r,l){if(e&&!Cn(e)&&ln("GObj bad instanceof"),!t)return null;l||(l=ar);let i=[];if(Rn(t))for(let o=0;o<t.length;o++){let s,a=t[o];if(jn(a))s=er(e,a,"id","",0);else{if(!$n(a))continue;s=a}mr(n,s)&&(l(a,r)&&i.push(a))}else{if(!jn(t))return ln("kw_collect() BAD kw parameter"),null;for(let e of Object.keys(t)){let o=t[e];mr(n,e)&&(l(o,r)&&i.push(o))}}return i}function Er(e,t,n){e&&!Cn(e)&&ln("GObj bad instanceof");let r={};if(Fn(n)||(t=qn(e,t,n)),jn(t))r=t;else if(Rn(t))for(let e=0;e<t.length;e++){let n=t[e],l=er(n,"id",null,!1);Fn(l)||(r[l]=n)}else ln(`${Qe(e)} kwid_new_dict: data type unknown`);return r}function Tr(e,t,n,r,l){e&&!Cn(e)&&ln("GObj bad instanceof");let i=hr(e,t,n,r,l);return i.length>0?i[0]:null}function yr(e,t){if(e&&!Cn(e)&&ln("GObj bad instanceof"),!t)return[];let n=[];if($n(t))n.push(t);else if(jn(t))for(let e in t)t.hasOwnProperty(e)&&n.push(e);else Rn(t)&&t.forEach(function(t){if($n(t))Fn(t)||n.push(t);else if(jn(t)){let r=er(e,t,"id",0,0);r&&n.push(r)}});return n}function Sr(e,t,n){t=t||"id",n=n||"value";let r=[];if(Rn(e))for(let l=0;l<e.length;l++){let i=e[l];if($n(i))r.push({id:e[l],value:e[l]});else if(jn(i)){let e={};if(Qn(i,t)){if(!Qn(i,n)){if(!(Dn(i)>0)){ln("list2options(): object without field value: "+n);continue}n=Object.keys(i)[0]}e.id=i[t],e.value=i[n]}else{if(!(Dn(i)>0)){ln("list2options(): object without field id: "+t);continue}t=Object.keys(i)[0],e.id=t,e.value=i[t]}r.push(e)}else ln("list2options(): case1 not implemented")}else if(jn(e))for(let t of Object.keys(e))r.push({id:t,value:t});else ln("list2options(): case2 not implemented");return r}function Or(e,t){if(!e)return-1;for(let n=0;n<e.length;n++)if(e[n]&&e[n].id===t)return n;return-1}function vr(e,t,n){if(!e||!t)return ln("ERROR: str_in_list() list or str empty"),!1;let r=e.length;if(n){t=t.toLowerCase();for(let n=0;n<r;n++){let r=e[n];if(r&&r.toLowerCase()===t)return!0}}else for(let n=0;n<r;n++)if(e[n]===t)return!0;return!1}function Nr(e,t,n){if(!e)return ln("ERROR: strs_in_list() list empty"),!1;if(!t)return ln("ERROR: strs_in_list() str empty"),!1;for(let r=0;r<t.length;r++){if(vr(e,t[r],n))return!0}return!1}function wr(e,t){for(let n=0;n<e.length;n++)if(t===e[n])return e.splice(n,1),!0;return!1}function Dr(e,t){try{let n=e.__md_iev__;if(n)return n[t]}catch(e){return}}function jr(e,t,n){let r=e.__md_iev__;r||(r={},e.__md_iev__=r),r[t]=n}function Rr(e,t,n,r){if(!Cn(e))return ln("gobj is not a GObj"),null;if(!t)return;let l=Dr(t,n);l||(l=[],jr(t,n,l));try{Rn(l)&&l.unshift(r)}catch(e){ln(e)}}function $r(e,t,n,r){if(!Cn(e))return ln("gobj is not a GObj"),null;if(!jn(t))return ln("kw is not a dict"),null;let l=Dr(t,n);return l?0===l.length?(r&&ln(`stack empty: ${n}`),null):l[0]:(r&&ln(`stack NOT FOUND: ${n}`),null)}function Ir(e,t,n){return Fn(n)?Xn(e,t,"__md_iev__`__msg_type__"):or(e,t,"__md_iev__","__msg_type__",n),0}function kr(e,t){return er(e,t,"__md_iev__`__msg_type__","",0)}function Ar(e,t,n){let r=new XMLHttpRequest;r.open("GET",e,!0),r.setRequestHeader("Accept","application/json"),r.onreadystatechange=function(){if(4===r.readyState)if(200===r.status||0===(e=r).status&&e.responseText&&e.responseURL.startsWith("file:"))try{let e=JSON.parse(r.responseText);t(e)}catch(e){n&&(ln(`JSON parse status ${r.status}, error: ${e.message}`),n(r.status))}else n&&n(r.status);var e},r.send()}function Lr(e,t,n){let r=new XMLHttpRequest;r.open("POST",e),r.setRequestHeader("Accept","application/json"),r.setRequestHeader("Content-Type","application/json"),r.onreadystatechange=function(){4===r.readyState&&n(r.status,r.responseText)},r.send(t)}function Pr(e,t,n){void 0!==n&&$n(n)||(n="");for(let r of Object.keys(e)){if(!e.hasOwnProperty(r))continue;let l=(n.length?"`":"")+r;n+=l,t.apply(this,[e,r,e[r],n]),jn(e[r])&&Pr(e[r],t,n),n=n.slice(0,-l.length)}}function Ur(e,t,n){n&&(e=cn(e));let r=rr(null,e,"type",[],1);er(null,e,"hook","data",1);let l=rr(null,e,"schema",{},1),i=rr(null,e,"topics",{},1);return Pr(l,function(e,t,n,l){"__"!==t.substring(0,2)&&rr(null,i,l,cn(r),1)},t),e}function Cr(e,t,n,r){let l=rr(null,e,"topics",null,0),i=rr(null,l,t,null,0);if(!i)return ln("jdb_update: topic not found: "+t),null;if(Fn(r.id))return ln("jdb_update: record without id: "+r),un(r),null;let o,s=n.split("`"),a=i;for(;(o=s.shift())&&!Fn(o)&&a;)jn(a)&&(a=rr(null,a,e.hook,[],1)),a=Mr(a,null,o,!1);if(0===s.length&&a)if(Rn(a))a.push(r);else if(a.id===r.id)Object.assign(a,r);else{let t=rr(null,a,e.hook,[],1),n=Mr(t,e.hook,r.id,!1);n?Object.assign(n,r):t.push(r)}return i}function Fr(e,t,n,r){let l=rr(null,e,"topics",null,0),i=rr(null,l,t,null,0);if(!i)return ln("jdb_delete: topic not found: "+t),null;if(Fn(r.id))return ln("jdb_delete: record without id: "+r),un(r),null;let o,s=n.split("`"),a=i;for(;(o=s.shift())&&!Fn(o)&&a;)jn(a)&&(a=rr(null,a,e.hook,null,0)),a=Mr(a,null,o,!1);if(0===s.length&&a)if(Rn(a)){let e=Or(a,r.id);e>=0&&a.splice(e,1)}else{let t=rr(null,a,e.hook,null,0),n=Or(t,r.id);n>=0&&t.splice(n,1)}return i}function Gr(e,t){let n=rr(null,e,"topics",null,0);if(!n)return ln("jdb topics section not found"),un(e),null;let r=rr(null,n,t,null,0);return r||(ln("jdb topic not found: "+t),un(n),null)}function Vr(e,t,n,r){let l=rr(null,e,"topics",null,0),i=rr(null,l,t,null,0);return i?(void 0===r&&(r=!0),Mr(i,e.hook,n,r)):(ln("jdb_get: topic not found: "+t),null)}function Wr(e,t,n){let r=rr(null,e,"topics",null,0),l=rr(null,r,t,null,0);return l?n<l.length?l[n]:{}:(ln("jdb_get_by_idx: topic not found: "+t),null)}function Mr(e,t,n,r){if(!e)return null;let l,i=e.length;for(l=0;l<i;l++){let i=e[l];if(i){let e=i.id;if(e&&e===n)return i;if(r&&Qn(i,t)){let e=Mr(i[t],t,n,r);if(e)return e}}}return null}function Kr(e,t){let n=cn(e);return bn(n,t),n}function Yr(e){function t(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(atob(e).replace(/(.)/g,function(e,t){let n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n}))}(t)}catch(e){return atob(t)}}let n=e.split(".");return{header:t(n[0]),payload:t(n[1]),signature:t(n[2])}}function xr(e,t){try{let n=Yr(e);switch(t){case"header":return JSON.parse(n.header);case"signature":return JSON.parse(n.signature);default:return JSON.parse(n.payload)}}catch(e){return null}}function Br(e){return null==e?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Jr(e){if(!e)return"";const t=String(e).trim();return/^javascript:/i.test(t)||/^data:/i.test(t)?"":Br(t)}function Qr(e){const t=document.createElement("template");return t.innerHTML=e.trim(),t.content.firstChild}function qr(e,t){let[n,r,l,i]=e;if(!n)return void ln("Tag must be a valid HTML element.");let o=document.createElement(n),s="";if(r&&"object"==typeof r)for(let e of Object.keys(r))if("style"===e&&"object"==typeof r[e]){let t="";for(const n of Object.keys(r[e]))t+=`${n}: ${r[e][n]};`;o.style.cssText=t}else"style"===e?o.style.cssText=r[e]:"i18n"===e||"data-i18n"===e||"data_i18next"===e||"data-i18next"===e?(s=r[e],o.setAttribute("data-i18n",s)):o.setAttribute(e,r[e]);if($n(l))if(l=l.trim(),l.length>0&&"<"===l[0])o.appendChild(Qr(l));else if(t&&s){let e=t(s);o.textContent=e||l}else o.textContent=l;else if(Rn(l)){if(l.length>0)if($n(l[0]))o.appendChild(qr(l,t));else for(let e of l)Array.isArray(e)&&e.length>0?o.appendChild(qr(e,t)):e instanceof HTMLElement&&o.appendChild(e)}else l instanceof HTMLElement||l instanceof Text||l instanceof SVGElement?o.appendChild(l):null!=l&&(ln("content ignored"),_n(l));if(i&&"object"==typeof i)for(const e of Object.keys(i))o.addEventListener(e,i[e]);return o}function Xr(e){if(!e)return{top:0,left:0,right:0,bottom:0};const{top:t,left:n,width:r,height:l}=e.getBoundingClientRect?.()||{top:0,left:0,width:0,height:0},i="undefined"!=typeof window,o=i&&(window.scrollY||document.documentElement?.scrollTop||document.body?.scrollTop)||0,s=i&&(window.scrollX||document.documentElement?.scrollLeft||document.body?.scrollLeft)||0;return{top:t+o,left:n+s,right:n+s+r,bottom:t+o+l}}function zr(e){return(new DOMParser).parseFromString(e,"image/svg+xml").firstChild}function Hr(e,t){Un(t)?(e||(e=document),e.querySelectorAll("[data-i18n]").forEach(function(e){let n=e.getAttribute("data-i18n");for(let r of e.childNodes)if(r.nodeType===Node.TEXT_NODE){n||(n=r.nodeValue),r.nodeValue=t(n);break}})):ln("You must supply a translation function")}function Zr(e="Time Tracker",t=!1){const n=e,r=performance.now();let l=r;return t&&on(`--\x3e ${n} - starting`),{mark:(e="Intermediate",i="")=>{const o=performance.now(),s=(o-l)/1e3,a=(o-r)/1e3;return t&&on(`--\x3e ${n} ${e} - partial: ${s} sec, total: ${a} sec, ${i}`),l=o,{partial:s,total:a}}}}function el(){const e=new Date,t=e.toISOString().slice(0,19),n=String(e.getMilliseconds()).padStart(3,"0"),r=e.getTimezoneOffset();return`${t}.${n}${`${r>0?"-":"+"}${String(Math.abs(r)/60).padStart(2,"0")}${String(Math.abs(r)%60).padStart(2,"0")}`}`}function tl(){return Math.floor(Date.now()/1e3)}function nl(e,t){if(!e)throw"ERROR: index_in_list() list empty";for(let n=0;n<e.length;n++)if(t===e[n])return n;return-1}function rl(){let e="";return"undefined"!=typeof window&&window.localStorage?(e=window.localStorage.getItem("host_uuid"),!e&&window.crypto?.randomUUID&&(e=window.crypto.randomUUID(),window.localStorage.setItem("host_uuid",e))):e="undefined"!=typeof globalThis&&globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():"00000000-0000-0000-0000-000000000000",e}function ll(e){return e.replace(/[?# ^:]/g,"_")}function il(e){let t=null;return"function"!=typeof e&&"object"!=typeof e||(t=(""+e).match(/function\s*([\w\$]*)\s*\(/)),null!==t?t[1]+"()":""}function ol(e,t=0,n=!1){let r=null,l=null,i=null;const o=(...o)=>{i=this,l=o;const s=n&&!r;clearTimeout(r),r=setTimeout(()=>{r=null,n||e.apply(i,l)},t),s&&e.apply(i,l)};return o.flush=()=>{r&&(clearTimeout(r),r=null,e.apply(i,l))},o.cancel=()=>{clearTimeout(r),r=null,l=null,i=null},o}function sl(...e){let t="",n=0;for(let r of e)null!=r&&""!==r&&(r=String(r),r=0===n?r.replace(/\/+$/,""):r.replace(/^\/+/,"").replace(/\/+$/,""),""!==r&&(n>0&&(t+="/"),t+=r,n++));return t}function al(e){return"persistent-attrs-"+Qe(e)}function ul(e,t){let n=pt(e,S.SDF_PERSIST),r=dr(al(e),null,!1);if(r&&jn(r)){let l=fr(e,r,t,!1);l=fr(e,l,n,!1),Ot(e,l,S.SDF_PERSIST)}}function _l(e,t){let n=fr(e,pt(e,S.SDF_PERSIST),t,!1),r=dr(al(e),null,!1);r&&jn(r)&&pn(n,r),br(al(e),n)}function cl(e,t){let n=gr(e,dr(al(e),null,!1),t,!1);0===Nn(n)?pr(al(e)):br(al(e),n)}function fl(e,t){let n=dr(al(e),null,!1),r={};return n&&jn(n)&&(r=fr(e,n,t,!1)),r}function gl(e){if(Rn(e)&&1===Dn(e)){let t=e[0];return Qn(t,"size")?t.size:1}return Dn(e)}function dl(e,t){if($n(t)){if(-1===t.indexOf("^")){let n,r,l=e.fkey;if(1!==Nn(l))return ln("bad fkey 1"),ln(e),ln(t),null;for(const e of Object.keys(l)){n=e,r=l[e];break}return{topic_name:n,id:t,hook_name:r}}{let n=t.split("^");return 3!==n.length?(ln("bad fkey 2"),ln(e),ln(t),null):{topic_name:n[0],id:n[1],hook_name:n[2]}}}return jn(t)?{topic_name:t.topic_name,id:t.id,hook_name:t.hook_name}:(ln("bad fkey 3"),ln(e),ln(t),null)}function bl(e,t){let n=dl(e,t);return n?n.topic_name+"^"+n.id+"^"+n.hook_name:null}function pl(e,t){if($n(t)){if(-1===t.indexOf("^")){let n,r=e.hook;if(1!==Nn(r))return ln("bad hook 1"),ln(e),ln(t),null;for(let e of Object.keys(r)){n=e,r[e];break}return{topic_name:n,id:t}}{let n=t.split("^");return 2!==n.length?(ln("bad hook 2"),ln(e),ln(t),null):{topic_name:n[0],id:n[1]}}}return jn(t)?{topic_name:t.topic_name,id:t.id}:(ln("bad hook 3"),ln(e),ln(t),null)}const ml=["string","integer","object","dict","array","list","real","boolean","blob"],hl=["persistent","required","notnull","wild","inherit","readable","writable","hidden","stats","rstats","pstats"],El=["hook","fkey","enum","template","uuid","rowid","password","email","url","time","now","date","color","image","tel","table","id","currency","hex","binary","percent","base64","coordinates","gbuffer"];function Tl(e){let t={name:e.id,header:e.header,real_type:e.type,type:e.type,enum_list:null,is_required:!1,is_writable:!1,is_hidden:!1,default_value:e.default,placeholder:e.placeholder,fillspace:e.fillspace||4};if(!e.flag)return t;for(let n=0;n<e.flag.length;n++){let r=e.flag[n];if(vr(El,r)){switch(r){case"enum":t.enum_list=e.enum;break;case"template":t.enum_list=e.template;break;case"table":t.enum_list=e.table}t.type=r}else if(vr(hl,r))switch(r){case"writable":t.is_writable=!0;break;case"notnull":case"required":t.is_required=!0;break;case"hidden":t.is_hidden=!0}}return t}function yl(e,t){let n={name:e,header:e,real_type:null,type:null,enum_list:null,is_required:!1,is_writable:!1,is_hidden:!1,default_value:void 0,placeholder:void 0};if($n(t)){let e=t.split(".");for(let t=0;t<e.length;t++){let r=e[t];if(vr(ml,r))n.real_type||(n.real_type=r);else if(vr(El,r))n.type||(n.type=r);else if(vr(hl,r))switch(r){case"writable":n.is_writable=!0;break;case"notnull":case"required":n.is_required=!0;break;case"hidden":n.is_hidden=!0}}n.real_type||(n.real_type="string")}else jn(t)?(n=Tl(t),n.name||(n.name=e),n.header||(n.header=e)):Rn(t)&&(n.real_type="array",n.enum_list=t);return n.type||(n.type=n.real_type),n}function Sl(e,t){let n={};return t||(t={}),Object.entries(e).forEach(([e,r])=>{let l=rr(null,t,e,rr(r,"default"));n[e]=l}),n}const Ol=[N(y.DTP_POINTER,"subscriber",0,null,"Subscriber of output events"),N(y.DTP_BOOLEAN,"periodic",0,0,"True for periodic timeouts"),N(y.DTP_INTEGER,"msec",0,0,"Timeout in milliseconds"),v()];let vl={periodic:!1,msec:0,timer_id:-1},Nl=null;function wl(e,t,n,r){let l=e.priv,i=l.periodic?"EV_TIMEOUT_PERIODIC":"EV_TIMEOUT";return He(e)?Lt(Xe(e),i,{},e):Jt(e,i,{}),l.periodic&&(l.timer_id=setTimeout(function(){Lt(e,"EV_TIMEOUT",{},e)},l.msec)),0}const Dl={mt_create:function(e){let t=e.priv;const n=Tt(e,"subscriber");n&&Wt(e,null,{},n),t.periodic=mt(e,"periodic"),t.msec=ht(e,"msec")},mt_writing:function(e,t){let n=e.priv;switch(t){case"periodic":n.periodic=mt(e,"periodic");break;case"msec":n.msec=ht(e,"msec"),-1!==n.timer_id&&(clearTimeout(n.timer_id),n.timer_id=-1),n.msec>0&&(n.timer_id=setTimeout(function(){Lt(e,"EV_TIMEOUT",{},e)},n.msec))}},mt_start:function(e){return 0},mt_stop:function(e){return Nt(e,"msec",-1),0},mt_destroy:function(e){}};function jl(){return function(e){if(Nl)return ln(`GClass ALREADY created: ${e}`),-1;const t=[["ST_IDLE",[["EV_TIMEOUT",wl,null]]]],n=[["EV_TIMEOUT",C.EVF_OUTPUT_EVENT],["EV_TIMEOUT_PERIODIC",C.EVF_OUTPUT_EVENT],[0,0]];return Nl=X(e,n,t,Dl,0,Ol,vl,0,0,0,L.gcflag_manual_start),Nl?0:-1}("C_TIMER")}function Rl(e,t){return e instanceof A?"C_TIMER"!==Je(e)?(ln("not C_TIMER GObj"),-1):(vt(e,"periodic",!1),void Nt(e,"msec",t)):(ln("not GObj TYPE"),-1)}function $l(e,t){return e instanceof A?"C_TIMER"!==Je(e)?(ln("not C_TIMER GObj"),-1):(vt(e,"periodic",!0),void Nt(e,"msec",t)):(ln("not GObj TYPE"),-1)}function Il(e){return e instanceof A?"C_TIMER"!==Je(e)?(ln("not C_TIMER GObj"),-1):void Nt(e,"msec",-1):(ln("not GObj TYPE"),-1)}const kl=[N(y.DTP_BOOLEAN,"changesLost",0,!1,"Set true to warn about leaving page"),N(y.DTP_BOOLEAN,"browser_beforeunload",0,!1,"Set true to refreshing browser"),N(y.DTP_STRING,"__username__",0,"","Username"),N(y.DTP_STRING,"start_date",0,"","Yuno starting date"),N(y.DTP_STRING,"node_uuid",0,"","uuid of node"),N(y.DTP_STRING,"yuno_role",0,"","Yuno role"),N(y.DTP_STRING,"yuno_id",0,"","Yuno Id. Set by agent"),N(y.DTP_STRING,"yuno_name",0,"","Yuno name. Set by agent"),N(y.DTP_STRING,"yuno_tag",0,"","Tags of yuno. Set by agent"),N(y.DTP_STRING,"yuno_release",0,"","Yuno Release. Set by agent"),N(y.DTP_STRING,"yuno_version",0,"","Yuno version (APP_VERSION)"),N(y.DTP_STRING,"yuneta_version",0,a,"Yuneta version"),N(y.DTP_LIST,"required_services",0,"[]","Required services"),N(y.DTP_INTEGER,"tracing",0,0,"Tracing level"),N(y.DTP_BOOLEAN,"trace_timer",0,0,"Trace timers"),N(y.DTP_BOOLEAN,"trace_inter_event",0,0,"Trace traffic"),N(y.DTP_POINTER,"trace_ievent_callback",0,null,"Trace traffic callback"),N(y.DTP_BOOLEAN,"trace_creation",0,0,"Trace creation"),N(y.DTP_BOOLEAN,"trace_start_stop",0,0,"Trace start/stop"),N(y.DTP_BOOLEAN,"trace_subscriptions",0,0,"Trace subscription"),N(y.DTP_BOOLEAN,"trace_i18n",0,0,"Trace i18n"),N(y.DTP_BOOLEAN,"no_poll",0,0,"no poll"),N(y.DTP_INTEGER,"periodic_timeout",0,"1000","Timeout periodic, in miliseconds."),v()];let Al={gobj_timer:null},Ll=null;function Pl(e,t,n,r){return Jt(e,t,n),0}const Ul={mt_create:function(e){let t=e.priv;wt(e,"start_date",el()),wt(e,"node_uuid",rl()),e.priv.gobj_timer=ve(Be(e),"C_TIMER",{},e),t.periodic_timeout=bt(e,"periodic_timeout")},mt_writing:function(e,t){},mt_start:function(e){return De(e.priv.gobj_timer),$l(e.priv.gobj_timer,e.priv.periodic_timeout),0},mt_stop:function(e){return ke(e.priv.gobj_timer),Le(e),0},mt_destroy:function(e){},mt_play:function(e){let t=ae();return Fe(t)||De(t),We(t)||Ue(t),0},mt_pause:function(e){return Ce(ae()),0}};function Cl(){return function(e){if(Ll)return ln(`GClass ALREADY created: ${e}`),-1;const t=[["ST_IDLE",[["EV_TIMEOUT_PERIODIC",Pl,null]]]],n=[["EV_TIMEOUT_PERIODIC",C.EVF_OUTPUT_EVENT|C.EVF_NO_WARN_SUBS],[0,0]];return Ll=X(e,n,t,Ul,0,kl,Al,0,0,0,0),Ll?0:-1}("C_YUNO")}const Fl="ievent_gate_stack",Gl=[N(y.DTP_STRING,"wanted_yuno_role",S.SDF_RD,"","wanted yuno role"),N(y.DTP_STRING,"wanted_yuno_name",S.SDF_RD,"","wanted yuno name"),N(y.DTP_STRING,"wanted_yuno_service",S.SDF_RD,"","wanted yuno service"),N(y.DTP_STRING,"remote_yuno_role",S.SDF_RD,"","confirmed remote yuno role"),N(y.DTP_STRING,"remote_yuno_name",S.SDF_RD,"","confirmed remote yuno name"),N(y.DTP_STRING,"remote_yuno_service",S.SDF_RD,"","confirmed remote yuno service"),N(y.DTP_STRING,"url",S.SDF_RD,"","Url to connect"),N(y.DTP_STRING,"jwt",S.SDF_PERSIST,"","JWT"),N(y.DTP_STRING,"cert_pem",S.SDF_PERSIST,"","SSL server certification, PEM str format"),N(y.DTP_JSON,"extra_info",S.SDF_RD,"{}","dict data set by user, added to the identity card msg."),N(y.DTP_INTEGER,"timeout_retry",S.SDF_RD,"5000","timeout waiting idAck"),N(y.DTP_INTEGER,"timeout_idack",S.SDF_RD,"5000","timeout waiting idAck"),N(y.DTP_POINTER,"subscriber",0,0,"subscriber of output-events. If null then subscriber is the parent"),v()];let Vl={url:null,remote_yuno_name:null,remote_yuno_role:null,remote_yuno_service:null,gobj_timer:null,inform_on_close:!1,websocket:null,inside_on_open:!1},Wl=null;function Ml(e){e.priv.websocket&&ln("Websocket ALREADY setup");const t=Et(e,"url");let n;an(`====> Starting WebSocket to '${t}' (${Qe(e)})`);try{n=new WebSocket(t)}catch(n){return ln(`${Qe(e)}: Cannot open WebSocket to '${t}', Error: ${n.message}`),null}return n?(n.onopen=()=>{Lt(e,"EV_ON_OPEN",{url:t},e)},n.onmessage=n=>{Lt(e,"EV_ON_MESSAGE",{url:t,data:n.data},e)},n.onclose=n=>{mt(Me(),"browser_beforeunload")?on("Close websocket by unload page"):Lt(e,"EV_ON_CLOSE",{url:t,e:n},e)},n):(ln(`${Qe(e)}: Failed to initialize WebSocket.`),null)}function Kl(e,t=1e3,n=""){let r=e.priv,l=r.websocket;if(r.websocket=null,l&&l.readyState!==WebSocket.CLOSED&&l.readyState!==WebSocket.CLOSING){an(`Closing WebSocket (Code: ${t}, Reason: "${n}")`);try{l.close(t,n)}catch(e){ln("Error closing WebSocket:",e.message)}}else on("WebSocket is already closed or in the process of closing.")}function Yl(e,t,n){let r=el();try{an("\n"+r+" "+t+"\n"),_n(n)}catch(e){an("ERROR in trace_inter_event: "+e)}}class xl{constructor(e,t){this.event=e,this.kw=t||{}}}function Bl(e,t,n,r){let l=function(e,t){return Fn(e)?(ln("iev_create() event NULL"),null):new xl(e,t)}(t,n);return function(e,t){let n=e.priv,r=JSON.stringify(t);if(mt(Me(),"trace_inter_event")){let n=Et(e,"url"),l=Be(Me())+" ==> "+n,i=bt(Me(),"trace_ievent_callback");i?i(l,t,1,r.length):Yl(0,l,t)}try{n.websocket.send(r)}catch(t){ln(`${Qe(e)}: send_iev(): ${t}`)}return 0}(e,l)}function Jl(e,t,n){return Fn(n)&&(n=Et(e,"wanted_yuno_service")),{dst_yuno:Et(e,"wanted_yuno_name"),dst_role:Et(e,"wanted_yuno_role"),dst_service:n,src_yuno:Ke(),src_role:Ye(),src_service:t,host:rl()}}function Ql(e){let t=e.priv,n=We(Me()),r=Et(Me(),"yuno_version"),l=Et(Me(),"yuno_release"),i=Et(Me(),"yuno_tag"),o={yuno_role:Ye(),yuno_id:xe(),yuno_name:Ke(),yuno_tag:i,yuno_version:r,yuno_release:l,yuneta_version:a,playing:n,pid:0,watcher_pid:0,jwt:Et(e,"jwt"),username:Et(Me(),"__username__"),launch_id:0,yuno_startdate:Et(Me(),"start_date"),id:rl(),user_agent:"undefined"!=typeof window?window.navigator.userAgent:"",language:"undefined"!=typeof window?window.navigator.language:"",required_services:bt(Me(),"required_services")},s=Jl(e,Be(Xe(e)),null);return Rr(e,o,Fl,s),Ir(e,o,"__identity__"),Rl(t.gobj_timer,ht(e,"timeout_idack")),Bl(e,"EV_IDENTITY_CARD",o)}function ql(e,t){if(Fn(t.event))return-1;let n={},r=t.__global__,l=t.__config__,i=t.__filter__,o=t.__service__,s=t.subscriber;l&&(n.__config__=l),r&&(n.__global__=r),i&&(n.__filter__=i);let a=Jl(e,Be(s),o);return Rr(e,n,Fl,a),Ir(e,n,"__subscribing__"),Bl(e,t.event,n)}function Xl(e,t,n,r){let l=e.priv;return Fe(e)&&(l.websocket=Ml(e)),0}function zl(e,t,n,r){return an("Websocket opened: "+e.priv.url),Ql(e),0}function Hl(e,t,n,r){let l=e.priv,i=n.e,o=n.url;return nn(),on(`${Qe(e)}: WebSocket closed ${o} (Code: ${i.code}, Reason: "${i.reason}", Clean: ${i.wasClean})`),l.websocket&&(l.websocket.onopen=null,l.websocket.onmessage=null,l.websocket.onerror=null,l.websocket.onclose=null,l.websocket=null),l.inform_on_close&&(l.inform_on_close=!1,Jt(e,"EV_ON_CLOSE",{url:o,remote_yuno_name:l.remote_yuno_name,remote_yuno_role:l.remote_yuno_role,remote_yuno_service:l.remote_yuno_service})),Fe(e)&&Rl(l.gobj_timer,ht(e,"timeout_retry")),0}function Zl(e,t,n,r){return Ql(e),0}function ei(e,t,n,r){let l=e.priv;Il(l.gobj_timer);let i=$r(e,n,Fl,!0),o=er(e,i,"src_yuno",""),s=er(e,i,"src_role",""),a=er(e,i,"src_service","");wt(e,"remote_yuno_name",o),wt(e,"remote_yuno_role",s),wt(e,"remote_yuno_service",a);let u=Hn(e,n,"result",-1,0),_=er(e,n,"comment","",0),c=er(e,n,"username","",0),f=rr(e,n,"services_roles",{});if(u<0){Kl(e);let t={url:Et(e,"url"),result:u,comment:_,username:c,remote_yuno_name:o,remote_yuno_role:s,remote_yuno_service:a};He(e)?Lt(Xe(e),"EV_ON_ID_NAK",t,e):Jt(e,"EV_ON_ID_NAK",t)}else{if(Dt(e,"ST_SESSION"),l.inside_on_open=!0,!l.inform_on_close){l.inform_on_close=!0;let t={username:c,remote_yuno_name:o,remote_yuno_role:s,remote_yuno_service:a,services_roles:f};He(e)?Lt(Xe(e),"EV_ON_OPEN",t,e):Jt(e,"EV_ON_OPEN",t)}l.inside_on_open=!1,function(e){let t=Yt(e,null,null,null);for(let n=0;n<t.length;n++)ql(e,t[n])}(e)}return 0}function ti(e,t,n,r){let l=e.priv.url,i=function(e,t){let n;try{n=JSON.parse(t)}catch(e){return ln("parsing inter_event json: "+e),null}if(!(n instanceof Object))return ln("parsing inter_event: websocket data not a json object"),null;let r=n.event;if(!r)return ln("parsing inter_event: no event"),null;if("string"!=typeof r)return ln("parsing inter_event: event not a string"),null;let l=n.kw;return l?l instanceof Object?{event:r,kw:l||{}}:(ln("parsing inter_event: kw not a json object"),null):(ln("parsing inter_kw: no kw"),null)}(0,n.data);if(mt(Me(),"trace_inter_event")){let e=Be(Me())+" <== "+l,t=n.data.length,r=bt(Me(),"trace_ievent_callback");r?r(e,i,2,t):Yl(0,e,i)}let o=i.event,s=i.kw;if("ST_SESSION"!==jt(e)){if(It(e,o,C.EVF_PUBLIC_EVENT)){if(0===Lt(e,o,s,e))return 0}else ln(`${Qe(e)}: event UNKNOWN in not-session state ${o}`);return Kl(e),-1}i=null;let a=kr(e,s),u=$r(e,s,Fl),_=er(e,u,"dst_role","");if(_!==Ye())return ln(`"It's not my role, dst_role: ${_}, my_role: ${Ye()}`),0;let c=er(e,u,"dst_service","");if("__subscribing__"===a)return-1;if("__unsubscribing__"===a)return-1;if(It(e,o,C.EVF_PUBLIC_EVENT))return Lt(e,o,s,e),0;let f=ue(c,!0);if(f){if(!It(f,o,C.EVF_PUBLIC_EVENT))return ln(`${Qe(e)}: Service found but no event or not public, service '${Qe(f)}', ev '${o}'`),-1;Lt(f,o,s,e)}else He(e)?Lt(Xe(e),o,s,e):Jt(e,o,s);return 0}function ni(e,t,n,r){return 0}function ri(e,t,n,r){return 0}const li={mt_create:function(e){let t=e.priv;t.gobj_timer=ve(Be(e),"C_TIMER",{},e),t.url=Et(e,"url"),t.remote_yuno_name=Et(e,"remote_yuno_name"),t.remote_yuno_role=Et(e,"remote_yuno_role"),t.remote_yuno_service=Et(e,"remote_yuno_service"),wt(e,"wanted_yuno_name",t.remote_yuno_name),wt(e,"wanted_yuno_role",t.remote_yuno_role),wt(e,"wanted_yuno_service",t.remote_yuno_service);const n=Tt(e,"subscriber");n&&Wt(e,null,{},n)},mt_writing:function(e,t){let n=e.priv;switch(t){case"url":n.url=Et(e,"url");break;case"remote_yuno_name":n.remote_yuno_name=Et(e,"remote_yuno_name");break;case"remote_yuno_role":n.remote_yuno_role=Et(e,"remote_yuno_role");break;case"remote_yuno_service":n.remote_yuno_service=Et(e,"remote_yuno_service")}},mt_start:function(e){let t=e.priv;return De(t.gobj_timer),t.websocket=Ml(e),0},mt_stop:function(e){let t=e.priv;return Il(t.gobj_timer),ke(t.gobj_timer),t.websocket&&Kl(e),0},mt_destroy:function(e){},mt_stats:function(e,t,n,r){if("ST_SESSION"!==jt(e))return ln("Not in session"),null;n||(n={});let l=Jl(e,Be(r),er(e,n,"service",null,0)),i=rr(e,n,"__md_stats__",null,Xt.KW_EXTRACT);return i||(i={}),Rr(e,n,"stats_stack",{stats:t,kw:i}),Rr(e,n,Fl,l),n.__stats__=t,Ir(e,n,"__stats__"),Bl(e,"EV_MT_STATS",n),null},mt_command_parser:function(e,t,n,r){if("ST_SESSION"!==jt(e))return ln("Not in session"),null;n||(n={});let l=Jl(e,Be(r),er(e,n,"service","",0)),i=rr(e,n,"__md_command__",null,Xt.KW_EXTRACT);return i||(i={}),Rr(e,n,"command_stack",{command:t,kw:i}),Rr(e,n,Fl,l),n.__command__=t,Ir(e,n,"__command__"),Bl(e,"EV_MT_COMMAND",n),null},mt_inject_event:function(e,t,n,r){if("ST_SESSION"!==jt(e))return window.console.error("Not in session"),-1;if(n||(n={}),$r(e,n,Fl));else{let l=Jl(e,Be(r),er(e,n,"__service__",0,0));hn(n,"__service__"),Rr(e,n,"__message__",t),Rr(e,n,Fl,l)}return Ir(e,n,"__message__"),Bl(e,t,n)},mt_subscription_added:function(e,t){let n=e.priv;return"ST_SESSION"!==jt(e)||n.inside_on_open?0:ql(e,t)},mt_subscription_deleted:function(e,t){let n=e.priv;if("ST_SESSION"!==jt(e))return 0;if(n.inside_on_open)return 0;if(Fn(t.event))return 0;let r={},l=t.__global__,i=t.__config__,o=t.__filter__,s=t.__service__,a=t.subscriber;i&&(r.__config__=i),l&&(r.__global__=l),o&&(r.__filter__=o);let u=Jl(e,Be(a),s);return Rr(e,r,Fl,u),Ir(e,r,"__unsubscribing__"),Bl(e,t.event,r)}};function ii(){return function(e){if(Wl)return ln(`GClass ALREADY created: ${e}`),-1;const t=[["ST_DISCONNECTED",[["EV_ON_OPEN",zl,"ST_WAIT_IDENTITY_CARD_ACK"],["EV_ON_CLOSE",Hl,null],["EV_TIMEOUT",Xl,null],[null,null,null]]],["ST_WAIT_IDENTITY_CARD_ACK",[["EV_ON_MESSAGE",ti,null],["EV_IDENTITY_CARD_ACK",ei,null],["EV_ON_CLOSE",Hl,"ST_DISCONNECTED"],["EV_TIMEOUT",Zl,null],[null,null,null]]],["ST_SESSION",[["EV_ON_MESSAGE",ti,null],["EV_MT_STATS",ni,null],["EV_MT_COMMAND",ri,null],["EV_ON_CLOSE",Hl,"ST_DISCONNECTED"],[null,null,null]]],[null,null]],n=[["EV_ON_MESSAGE",C.EVF_OUTPUT_EVENT],["EV_IDENTITY_CARD_ACK",C.EVF_PUBLIC_EVENT],["EV_ON_ID_NAK",C.EVF_PUBLIC_EVENT|C.EVF_OUTPUT_EVENT],["EV_MT_STATS",C.EVF_PUBLIC_EVENT],["EV_MT_COMMAND",C.EVF_PUBLIC_EVENT],["EV_ON_OPEN",C.EVF_OUTPUT_EVENT|C.EVF_NO_WARN_SUBS],["EV_ON_CLOSE",C.EVF_OUTPUT_EVENT|C.EVF_NO_WARN_SUBS],["EV_TIMEOUT",0],[null,0]];return Wl=X(e,n,t,li,0,Gl,Vl,0,0,0,L.gcflag_no_check_output_events),Wl?0:-1}("C_IEVENT_CLI")}export{A as GObj,N as SDATA,R as SDATAAUTHZ,w as SDATACM,D as SDATACM2,I as SDATADF,j as SDATAPM,$ as SDATAPM0,v as SDATA_END,O as SDataDesc,a as YUNETA_VERSION,h as __yuno__,i as build_command_response,sl as build_path,s as build_stats_response,ll as clean_name,Il as clear_timeout,Kn as cmp_two_simple_json,l as command_parser,qr as createElement2,Qr as createOneHtml,Kr as create_json_record,Sl as create_template_record,el as current_timestamp,y as data_type_t,fl as db_list_persistent_attrs,ul as db_load_persistent_attrs,cl as db_remove_persistent_attrs,_l as db_save_persistent_attrs,ol as debounce,wr as delete_from_list,fn as duplicate_objects,Fn as empty_string,Br as escapeHtml,C as event_flag_t,te as gclass_add_ev_action,re as gclass_add_event_type,ee as gclass_add_state,ie as gclass_check_fsm,X as gclass_create,le as gclass_event_type,oe as gclass_find_by_name,L as gclass_flag_t,z as gclass_unregister,Xr as getPositionRelativeToBody,il as get_function_name,tl as get_now,et as gobj_bottom_gobj,Rt as gobj_change_parent,Dt as gobj_change_state,Qt as gobj_command,Ne as gobj_create,Ee as gobj_create2,Se as gobj_create_default_service,ve as gobj_create_pure_child,ye as gobj_create_service,Oe as gobj_create_volatil,Te as gobj_create_yuno,jt as gobj_current_state,ae as gobj_default_service,we as gobj_destroy,_t as gobj_find_child,at as gobj_find_gobj,ue as gobj_find_service,Bt as gobj_find_subscribings,Yt as gobj_find_subscriptions,P as gobj_flag_t,qe as gobj_full_name,Je as gobj_gclass_name,dt as gobj_has_attr,It as gobj_has_event,kt as gobj_has_output_event,J as gobj_hsdata,Ze as gobj_is_destroying,We as gobj_is_playing,He as gobj_is_pure_child,Fe as gobj_is_running,Ve as gobj_is_service,ze as gobj_is_volatil,pe as gobj_list_persistent_attrs,xt as gobj_list_subscriptions,ge as gobj_load_persistent_attrs,ct as gobj_match_children,ft as gobj_match_children_tree,ut as gobj_match_gobj,Be as gobj_name,Xe as gobj_parent,Ce as gobj_pause,Ue as gobj_play,At as gobj_post_event,Jt as gobj_publish_event,bt as gobj_read_attr,pt as gobj_read_attrs,mt as gobj_read_bool_attr,ht as gobj_read_integer_attr,Tt as gobj_read_pointer_attr,Et as gobj_read_str_attr,be as gobj_remove_persistent_attrs,St as gobj_reset_volatil_attrs,de as gobj_save_persistent_attrs,gt as gobj_search_path,Lt as gobj_send_event,se as gobj_services,tt as gobj_set_bottom_gobj,Qe as gobj_short_name,De as gobj_start,Re as gobj_start_children,Ie as gobj_start_tree,K as gobj_start_up,qt as gobj_stats,ke as gobj_stop,Le as gobj_stop_children,Pe as gobj_stop_tree,Wt as gobj_subscribe_event,Mt as gobj_unsubscribe_event,Kt as gobj_unsubscribe_list,rt as gobj_walk_gobj_children,lt as gobj_walk_gobj_children_tree,yt as gobj_write_attr,Ot as gobj_write_attrs,vt as gobj_write_bool_attr,Nt as gobj_write_integer_attr,wt as gobj_write_str_attr,Me as gobj_yuno,xe as gobj_yuno_id,Ke as gobj_yuno_name,Ye as gobj_yuno_role,Or as id_index_in_obj_list,nl as index_in_list,Rn as is_array,kn as is_boolean,Pn as is_date,Un as is_function,Cn as is_gobj,xn as is_metadata_key,An as is_null,In as is_number,jn as is_object,Bn as is_private_key,Ln as is_pure_number,$n as is_string,Fr as jdb_delete,Vr as jdb_get,Wr as jdb_get_by_idx,Gr as jdb_get_topic,Ur as jdb_init,Cr as jdb_update,yn as json_array_append,Sn as json_array_append_new,vn as json_array_extend,On as json_array_remove,wn as json_array_size,cn as json_deep_copy,gn as json_is_identical,hn as json_object_del,mn as json_object_get,En as json_object_set,Tn as json_object_set_new,Nn as json_object_size,dn as json_object_update,bn as json_object_update_existing,pn as json_object_update_missing,Dn as json_size,xr as jwt2json,Yr as jwtDecode,fr as kw_clone_by_keys,gr as kw_clone_by_not_keys,cr as kw_collect,Xn as kw_delete,ur as kw_find_json_in_list,qn as kw_find_path,Xt as kw_flag_t,zn as kw_get_bool,nr as kw_get_dict,rr as kw_get_dict_value,Hn as kw_get_int,lr as kw_get_list,dr as kw_get_local_storage_value,tr as kw_get_pointer,Zn as kw_get_real,er as kw_get_str,Qn as kw_has_key,ar as kw_match_simple,Jn as kw_pop,pr as kw_remove_local_storage_value,_r as kw_select,ir as kw_set_dict_value,br as kw_set_local_storage_value,or as kw_set_subdict_value,hr as kwid_collect,Tr as kwid_find_one_record,yr as kwid_get_ids,mr as kwid_match_id,Er as kwid_new_dict,Sr as list2options,Ar as load_json_file,an as log_debug,ln as log_error,sn as log_info,on as log_warning,kr as msg_iev_get_msg_type,$r as msg_iev_get_stack,Rr as msg_iev_push_stack,Dr as msg_iev_read_key,Ir as msg_iev_set_msg_type,jr as msg_iev_write_key,rl as node_uuid,Gn as parseBoolean,zr as parseSVG,Hr as refresh_language,ii as register_c_ievent_cli,jl as register_c_timer,Cl as register_c_yuno,Jr as safeSrc,S as sdata_flag_t,Lr as send_http_json_post,nn as set_remote_log_functions,Rl as set_timeout,$l as set_timeout_periodic,t as sprintf,o as stats_parser,vr as str_in_list,Mn as strcasecmp,Wn as strcmp,Vn as strncmp,Nr as strs_in_list,Yn as strstr,yl as template_get_field_desc,Zr as timeTracker,_n as trace_json,un as trace_msg,dl as treedb_decoder_fkey,pl as treedb_decoder_hook,bl as treedb_encoder_fkey,Tl as treedb_get_field_desc,gl as treedb_hook_data_size,n as vsprintf};
2
+ //# sourceMappingURL=gobj-js.es.min.js.map