@opcua/for-node-red
Version:
The Node-RED node to communicate via OPC UA, powered NodeOPCUA and developed by Sterfive's team
296 lines (236 loc) • 71 kB
HTML
<style>
.sterfive-combo-box{position:relative;width:100%}.sterfive-online-menu{height:auto;position:fixed;width:auto}.sterfive-input-error{border-color:var(--red-ui-form-input-border-error-color);border-style:solid;border-width:1px}.sterfive-typedInput-options{background:#fff;border-style:solid;border-width:1px;border:1px solid var(--red-ui-primary-border-color);box-sizing:border-box;max-height:350px;overflow-y:auto;position:absolute;white-space:nowrap;z-index:2000}.sterfive-typedInput-options a{align-items:center;border-bottom:1px solid;border-color:var(--red-ui-secondary-border-color);border-style:solid;border-width:1px;color:var(--red-ui-form-text-color);display:flex;font-size:13px;padding:6px 18px 6px 6px;text-decoration:none}.sterfive-typedInput-options a:hover{background:var(--red-ui-workspace-button-background-hover);text-decoration:none}.sterfive-typedInput-options a:focus{outline:none}.sterfive-typedInput-options a:active,.sterfive-typedInput-options a:focus{background:var(--red-ui-workspace-button-background-active);text-decoration:none}.sterfive-typedInput-options a input[type=checkbox]{margin:0 6px 0 0}.sterfive-typedInput-options .sterfive-typedInput-icon{margin-right:6px}.sterfive-typedInput-options .sterfive-typedInput-icon:not(.fa){background-color:var(--red-ui-primary-text-color);height:14px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;width:12px}.sterfive-combo-box .sterfive-dropdown{background-color:#fff;border:1px solid #ccc;display:none;left:0;max-height:400px;overflow-y:auto;position:absolute;top:100%;width:100%;z-index:1000}.sterfive-combo-box li:before{content:none}.sterfive-tree li.expandable:before,.sterfive-tree li.no-expandable:before{content:"\f0da";cursor:pointer;font-family:FontAwesome,sans-serif;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li.no-expandable:before{opacity:0}.sterfive-tree li.expanded:before{content:"\f0d7";cursor:pointer;font-family:FontAwesome,sans-serif;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li span.selected{border:.5px dotted #33f}.sterfive-tree .fa{color:#333;margin-right:10px}.sterfive-tree ul{list-style:none;padding-inline-start:2%}.sterfive-tree li{cursor:pointer;padding:5px}.sterfive-tree{list-style-type:none}.sterfive-tree,.sterfive-tree ol,.sterfive-tree ul{list-style-type:none;margin:0;padding:0}.sterfive-tree li:hover{background-color:#eee}.sterfive-tree li.loading:before{animation:fa-spin 1s linear infinite;content:"\f110";cursor:pointer;font-family:FontAwesome,sans-serif;font-weight:900;margin-right:5px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sterfive-tree .spinner{animation:spin .7s linear infinite;border:2px solid transparent;border-radius:50%;border-top-color:#666;display:inline-block;height:16px;width:16px}.sterfive-info{background-color:#fafad2;border-radius:10px;border-style:groove;display:block;font-size:10pt;margin:5px 0;padding:5px}.sterfive-info .ok{color:green}.sterfive-info .warning{color:darkred}.input-wrapper{border:0 solid #ccc;border-radius:5px;padding:0}.sterfive-input-group{border:1px solid #ccc;border-radius:5px;display:flex;overflow:hidden}.sterfive-input-group button,.sterfive-input-group input{border:none;outline:none;padding:10px}.sterfive-input-group input{flex:1}.sterfive-input-group button{background-color:var(--red-ui-form-button-background);color:#7b7a7a;cursor:pointer}.sterfive-input-group button:hover{background-color:var(--red-ui-secondary-background-hover)}.sterfive-info-text{color:#777;font-size:12px;margin-left:10px;margin-top:5px}.custom-checkbox{cursor:pointer;display:inline-block;font-family:FontAwesome,sans-serif;font-size:16px;font-weight:900;margin-right:10px;text-align:center;width:1em}.custom-checkbox.unchecked:before{content:"\f096"}.custom-checkbox.checked:before{content:"\f046"}.validate-cancel-buttons{background-color:#fff;position:sticky;right:0;top:0;z-index:1001}.cancel-button,.validate-button{cursor:pointer;font-size:16px;margin:5px}.sterfive-combo-box .sterfive-dropdown{position:relative}.floating-buttons{position:fixed;z-index:1003}
/*# sourceMappingURL=OpcUa-Client2-Write.css.map */
</style>
<!-- HTML CONTENTS -->
<script type="text/x-red" data-template-name="OpcUa-Client2-Write">
<h3>OpcUa Write</h3>
<div class="form-row">
<label for="node-input-name"><i class="icon-tasks"></i>Name</label>
<input type="text" id="node-input-name" placeholder="enter the friendly name of the node" />
</div>
<div class="form-row">
<label for="node-input-endpoint"><i class="icon-tasks"></i> Endpoint</label>
<input type="text" id="node-input-endpoint" placeholder="opc.tcp://localhost:4334" />
</div>
<div class="form-row">
<label for="node-input-attributeId">AttributeId</label>
<select type="text" id="node-input-attributeId" style="width: 72%">
<option selected value="Value">Value</option>
</select>
</div>
<div class="form-row">
<label for="node-input-nodeId" style="width: 100%"><i class="fa fa-tag"></i><span>NodeId</span></label>
<input type="text" id="node-input-nodeId" placeholder="ns=2;s=Variable1 or empty" />
</div>
</script>
<!-- MARKDOWN CONTENTS -->
<script type="text/markdown" data-help-name="OpcUa-Client2-Write">
# OPC UA Write Node
Writes values to OPC UA server variables and attributes. This node supports both single value writes and multiple value writes in a single operation.
## Configuration
### Node Properties
- **Name**: Optional friendly name for the node
- **Endpoint**: OPC UA server endpoint configuration (required)
- **AttributeId**: The attribute to write to (default: "Value")
- **NodeId**: The target node identifier (optional - can be provided via message)
### AttributeId Options
The node can write to various OPC UA node attributes:
- **Value** (default) - The node's current value
Note: only the "Value" attribute is supported for writing.
## Input Message Formats
### Single Value Write (Simple Form 1)
```javascript
msg = {
payload: <value>, // The value to write
nodeId: "ns=2;s=MyVar", // Target node (optional if configured)
topic: "ns=2;s=MyVar", // Alternative way to specify nodeId
attributeId: "Value", // Attribute to write (optional)
dataType: "Double" // Explicit data type (optional)
}
```
### Single Value Write (Simple Form 2)
```javascript
msg = {
payload: <value>, // The value to write
nodeId: "ns=2;s=MyVar", // Target node (optional if configured)
topic: "ns=2;s=MyVar", // Alternative way to specify nodeId
attributeId: "Value", // Attribute to write (optional)
dataType: "String" // Explicit data type as string (optional)
}
```
### Multiple Values Write
```javascript
msg = {
payload: [
// Array of write operations
{
nodeId: "ns=2;s=Var1",
value: 42,
dataType: "Int32",
},
{
nodeId: "ns=2;s=Var2",
value: "Hello",
dataType: "String",
},
],
};
```
## Payload Value Types
### Automatic Type Conversion
The node automatically converts JavaScript values to appropriate OPC UA data types:
- **Numbers**: Converted to appropriate numeric types (Int32, Double, etc.)
- **Strings**: Converted to OPC UA String type
- **Booleans**: Converted to OPC UA Boolean type
- **Arrays**: Converted to OPC UA arrays of the appropriate type
- **Objects**: Can be used for complex data structures
### Explicit Variant Format
For precise control over data type and structure:
```javascript
msg.payload = {
dataType: "Double", // OPC UA data type
value: 3.14159, // The actual value
arrayType: "Scalar", // "Scalar", "Array", or "Matrix"
dimensions: [3, 4], // Array dimensions (for matrices)
};
```
### Supported Data Types
Common OPC UA data types include:
- **Boolean** - true/false values
- **SByte, Byte** - 8-bit integers
- **Int16, UInt16** - 16-bit integers
- **Int32, UInt32** - 32-bit integers
- **Int64, UInt64** - 64-bit integers
- **Float, Double** - Floating point numbers
- **String** - Text strings
- **DateTime** - Date and time values
- **ByteString** - Binary data
- **NodeId** - OPC UA node identifiers
- **LocalizedText** - Localized text with language info
## Output Messages
### Single Write Response
```javascript
{
// Original input message properties
payload: <original_value>,
nodeId: "ns=2;s=MyVar",
// Write operation results
statusCode: "Good", // OPC UA status code
dataType: "Double", // Actual data type written
attributeId: "Value", // Attribute that was written
message: "error details" // Error message (if any)
}
```
### Multiple Write Response
```javascript
{
// Original input message properties
payload: [...],
// Array of write results
results: [
{
statusCode: "Good",
dataType: "Int32",
nodeId: "ns=2;s=Var1",
attributeId: "Value",
message: undefined
},
{
statusCode: "BadNodeIdUnknown",
dataType: "Null",
nodeId: "ns=2;s=BadVar",
attributeId: "Value",
message: "Node not found"
}
]
}
```
## Usage Examples
### Basic Value Write
```javascript
// Write a number to a variable
msg.payload = 42;
msg.nodeId = "ns=2;s=Temperature";
return msg;
```
### Write with Explicit Data Type
```javascript
// Ensure value is written as specific type
msg.payload = 100;
msg.nodeId = "ns=2;s=Pressure";
msg.dataType = "Float";
return msg;
```
### Write Array Values
```javascript
// Write an array of values
msg.payload = [1, 2, 3, 4, 5];
msg.nodeId = "ns=2;s=ArrayVariable";
msg.dataType = "Int32";
return msg;
```
### Write Multiple Variables
```javascript
// Write several variables in one operation
msg.payload = [
{
nodeId: "ns=2;s=Setpoint1",
value: 25.5,
dataType: "Double",
},
{
nodeId: "ns=2;s=Setpoint2",
value: 30.0,
dataType: "Double",
},
{
nodeId: "ns=2;s=EnableFlag",
value: true,
dataType: "Boolean",
},
];
return msg;
```
### Write Complex Variant
```javascript
// Write with full variant specification
msg.payload = {
dataType: "Double",
value: [1.1, 2.2, 3.3],
arrayType: "Array",
};
msg.nodeId = "ns=2;s=DoubleArray";
return msg;
```
## Error Handling
### Status Codes
The node returns OPC UA status codes indicating operation success or failure:
- **Good** - Operation completed successfully
- **BadNodeIdUnknown** - Node ID not found on server
- **BadAttributeIdInvalid** - Invalid attribute specified
- **BadTypeMismatch** - Data type conversion failed
- **BadUserAccessDenied** - Insufficient write permissions
- **BadNotWritable** - Attribute is read-only
### Error Messages
When writes fail, the output message includes:
- `statusCode`: OPC UA error code
- `message`: Detailed error description
- Node status indicator shows failure state
## Best Practices
1. **NodeId Specification**: Use either node configuration or message properties, not both
2. **Data Type Handling**: Let the node auto-detect types when possible
3. **Error Checking**: Always check `statusCode` in output messages
4. **Batch Operations**: Use multiple write format for better performance
5. **Connection Management**: Ensure OPC UA endpoint is properly configured
6. **Security**: Verify write permissions before attempting operations
7. **NodeId**: use either the standard NodeId format or the verified browsePath format. Use aliases for clarity and stability over server updates;
## Node Status Indicators
- **Blue dot**: Writing operation in progress
- **Green dot**: Write completed successfully
- **Red dot**: Write operation failed
- **Yellow dot**: Partial success (some writes failed in batch operation)
</script>
<!-- END OF CONTENTS -->
<script type="text/javascript">
function _0xb4ff(_0x1a8b5b,_0xe26c2){_0x1a8b5b=_0x1a8b5b-0x73;const _0x54477f=_0x5447();let _0xb4ff63=_0x54477f[_0x1a8b5b];return _0xb4ff63;}function _0x5447(){const _0x5b4203=['mouseenter','closest','\x22}><span\x20class=\x22tree-text\x22\x20title=','removeEventListener','log','callback','indexOf','</span>','currentParent','<ul\x20class=\x22sterfive-tree\x22></ul>','<li\x20key=\x22','00000000-0000-0000-0000-000000000000','prependTo','html','12px','prepend','min','this\x20node\x20will\x20not\x20process\x20messages\x20until\x20you\x20','name','$tree','empty','#ff9800',':focus','addClass',':visible','toISOString','#856404','translateY(-50%)','.licence-expiry-banner','VariableType','NodeId','nodeId_aliased','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','GET','endpoint','fadeOut','isSelectable','11498800eFtiSH','nodeIds','blur(20px)','ReferenceType','1px\x20solid\x20#ced4da','wrap','after','transparent','0\x202px\x208px\x20rgba(0,0,0,0.1)','onboarding-required-banner','match','#663c00','Get\x20a\x20license\x20now','HasProperty','selectedMenuItem','already\x20loading','/walk-backward','<iframe></iframe>','Forward','Good','ceil','DisplayName','15px','observe','first','expiryDate','<i\x20class=\x22fa\x20fa-id-card\x22/> \x20','css','mask-image:\x20url(','#f57c00','label','title','$elementDiv','$inputGroup','forEach','$menu','placeholder','#ccc','mousedown',',\x200.7)','14px','replace','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','preventDefault','span','toggle','nodeId_nsu','throw','DodgerBlue','10px','EXPIRED','.red-ui-tray-content','opacity','nsuNodeID','parentNode','toString','referenceTypeId','1.6','ns=0;i=61','$selectLabel','licence-prof-expired-banner','BrowseName','Invalid','24px','opc.tcp://opcuademo.sterfive.com:26543','sort','rgba(61,\x2060,\x204,\x200.525)','slideUp','statusText','20px','widget','15px\x2030px','12lRNRwX','Objects','OpcUa-Client2-Write','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','next','4BUCcMn','<p>','keys','loading','Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20licence\x20overlay','already\x20fetched','fa-sliders','Inverse','$input','message','bannerClass','Your\x20<strong>Professional\x20License</strong>\x20has\x20expired.\x20Please\x20renew\x20your\x20license\x20to\x20ensure\x20continued\x20access\x20to\x20support\x20and\x20updates.','append','apply','$selectTrigger','setMode','open','<div\x20class=\x22spinner\x22></div>','$uiSelect','background-color','status','licence-expiry-banner','#f8d7da','_showTypeMenu','column','true','blur(10px)','position','#C0DEED','prop','#fff3cd','style=\x22color:#1565C0;\x20text-decoration:underline;\x20font-weight:bold\x22>','30px','nodeClass','<i\x20class=\x22fa\x20fa-bookmark\x22/> \x20','ObjectType','Value\x20is\x20not\x20verified','pageX','element','getItem','i=61','suppressed','sterfive-input-error','#e9ecef','pageY','catch','_delay','<a\x20href=\x22#\x22></a>','text','selected','Both','https://opcua-for-node-red.doc.sterfive.com','> \x20','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','msg.','fetching\x20failed\x20with\x20error','bp_aliased','.red-ui-tray-body','<span\x20title=','parent','$dropdown','dblclick','call','rgba(','6ORCOHR','center','bold','12px\x2050px\x2012px\x2015px','/images/small-sterfive.png','filter','main-wrapper','addEventListener','/browse','I\x20accept\x20to\x20switch\x20to\x20the\x20free\x20version\x20(limited\x20features)','5531265IJNwTv','licenceInfo','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20','#721c24','Object','children','#333','thank\x20you!\x20Please\x20re-deploy\x20your\x20flows\x20to\x20activate\x20all\x20nodes.','.onboarding-required-banner','HasComponent','node_label_italic','push','show','/onboarding/status','\x20day','<a\x20href=\x22','displayName','fa-list-alt','rgba(255,\x20255,\x20255,\x200.9)','absolute','browseName','<div/>','Organizes','IsForward','assign','100%','string','sterfive-dropdown','Renew\x20Now','function','500','elements','nodes','#495057','before','none','application/json','resolveParentNode','browsePath','done','64px','NodeId\x20with\x20namespace\x20Urn','SandyBrown','SteelBlue','2px\x20solid\x20#28a745','aliasedNodeId','change','SeaGreen','stringify','Your\x20trial\x20period\x20has\x20ended.\x20To\x20continue\x20using\x20this\x20node,\x20please\x20purchase\x20a\x20professional\x20license\x20or\x20contact\x20our\x20support\x20team\x20for\x20assistance.','trigger','json','backgroundColor','each','6px\x2012px','opcua-for-nodered-last-overlay-shown','fa-cog','options','li[key=\x22','$info','endpointNode','pointer-events','><i\x20class=\x22fa\x20','off','reference','_hideMenu','nsu','DataType','<li>error\x20','HasSubtype','rgba(0,\x200,\x200,\x200.05)','Upgrade','opcUaEndpoint2Config','target','onboarded','<button>','opts','$combo','Trial\x20License\x20Expired','opacity\x200.2s','button','buttonText','licence-activation-overlay','reset','keyCode','namespaceAliases','ns=0;i=46','stopPropagation','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','tabindex','statusCode','<i>','Failed\x20to\x20check\x20licence\x20status:','expandable\x20expanded','HasChild','setItem','#1976D2','nodeId','join','multiple','mode','failure','background-color\x200.2s','#c82333','Unknown\x20Product','find','left','buttonCss','Aliased\x20Browse\x20Path','fa-folder','keydown','attr','hasClass','width=1200,height=800','icon','value','Unspecified','data','mouseleave','browse\x20path:\x20','TypeDefinition','fetched','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','isTypeRef','Method','/config#buy','POST','typeDefinition','8px','flex','ns=0;i=45','ns=0;i=34','ns=0;i=40','_blank','nsu\x20nodeId:\x20','err','<span>','1060zwBBDK','background-color:transparent;overflow:hidden;border:3px','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','now','animate','1957556Bqubds','sterfive-typedInput-options\x20sterfive-online-menu',';\x22></i>\x20','sterfive-info','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','2734837PkOCLx','removeClass','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','licence-activated','_initMenu','sterfive.nodeBrowser','remove','type','sterfive_opcua_nodered_doc','error','height','180px','expandable','1px\x20solid\x20#f5c6cb','RED.settings[\x22','offset','Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20licence\x20banner','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','red-ui-typedInput-focus','opcua',':first','../../icons/opcuanodeLogo.png','#d4edda','then','1px\x20solid\x20rgba(255,\x20255,\x20255,\x200.3)','node','2px\x20solid\x20#ff9800','Value','#155724','expanded','NodeClass','bannerCss','500px','verify','aliasedBrowsePath','HasTypeDefinition','</li>','0.0.0','<a>','$toggleTreeBtn','disconnect','BrowsePath','#node-input-endpoint','18px','\x22\x20style=\x22color:','<unknown>','relative','5px','TRIAL','680931JPJrxc','48643837lZOmup','references','hide','!!failure!!','#2196F3','messageCss','grey','/support-frame.html','<input\x20type=\x22checkbox\x22>','<div>','focus','length','top','toggleClass','registerType','pointer','sterfive-combo-box','red-ui-typedInput-icon','aliased\x20NodeId:\x20','replaceWith','View','Variable','underline','ns=0;i=85','_createMenu','40px','has-node-help-widget','#999','appendTo','1px\x20solid\x20#ccc','input[type=\x22checkbox\x22]','click','bp_indexed','\x22]\x20is\x20not\x20set,\x20using\x20default\x20API\x20namespace.\x20Available\x20keys:\x20','disarmClick','#node-input-nodeId','auto','white','statusCode:\x20','16px','warn','browseResult','startsWith','42219GlbDOj','</strong>.\x20','border','settings','__parentNode','$verifyBtn','getTime','checked','write','aliased\x20browsePath:\x20','val','DarkOrange'];_0x5447=function(){return _0x5b4203;};return _0x5447();}(function(_0x1d1b10,_0x1efdf3){const _0xe7a3c7=_0xb4ff,_0x19fa9d=_0x1d1b10();while(!![]){try{const _0x5a30b7=-parseInt(_0xe7a3c7(0x150))/0x1*(-parseInt(_0xe7a3c7(0x1fa))/0x2)+-parseInt(_0xe7a3c7(0x82))/0x3*(-parseInt(_0xe7a3c7(0x11a))/0x4)+parseInt(_0xe7a3c7(0x8c))/0x5+parseInt(_0xe7a3c7(0x1f5))/0x6*(parseInt(_0xe7a3c7(0x11f))/0x7)+parseInt(_0xe7a3c7(0x1ad))/0x8+parseInt(_0xe7a3c7(0x17c))/0x9*(-parseInt(_0xe7a3c7(0x115))/0xa)+-parseInt(_0xe7a3c7(0x151))/0xb;if(_0x5a30b7===_0x1efdf3)break;else _0x19fa9d['push'](_0x19fa9d['shift']());}catch(_0x143a0d){_0x19fa9d['push'](_0x19fa9d['shift']());}}}(_0x5447,0xb62e4),(function(){'use strict';const _0x58e863=_0xb4ff;function _0x125fdc(_0x116030){const _0x5ae188=_0xb4ff;!_0x116030[_0x5ae188(0x17b)]('/')&&(_0x116030='/'+_0x116030);const _0x8de022=_0x5ae188(0xd4);let _0xbfa03f=RED[_0x5ae188(0x17f)][_0x8de022];if(!_0xbfa03f){const _0x27318b=Object[_0x5ae188(0x1fc)](RED['settings'])[_0x5ae188(0x1ee)]()[_0x5ae188(0xee)](',\x20');console[_0x5ae188(0x179)](_0x5ae188(0x12d)+_0x8de022+_0x5ae188(0x172)+_0x27318b),_0xbfa03f='opcua-for-node-red-fix-me';}const _0x267fd8=RED[_0x5ae188(0x17f)]['apiRootUrl']||'',_0x57e2ed=''+_0x267fd8+_0xbfa03f+_0x116030;return _0x57e2ed;}const _0x4a2c22=()=>{const _0x372268=_0xb4ff,_0x432ec2=$(_0x372268(0x7b));if(_0x432ec2[_0x372268(0x15c)]){const _0x38fc90=$(_0x372268(0x1be),{'src':_0x125fdc(_0x372268(0x158)),'scrolling':'no','style':_0x372268(0x116),'allowtransparency':_0x372268(0x213),'width':_0x372268(0x12a),'height':'50px'});_0x432ec2[_0x372268(0x206)](_0x38fc90),_0x38fc90['css']({'position':_0x372268(0x9f),'right':_0x372268(0x1f2),'bottom':_0x372268(0x178)});}},_0x4f7df5=()=>{const _0x67c21c=_0xb4ff,_0x4bab43=$(_0x67c21c(0x149)),_0x538bb3=_0x4bab43[_0x67c21c(0x186)](),_0x2df10b=RED[_0x67c21c(0xac)]['node'](_0x538bb3);if(!_0x2df10b)return undefined;const {endpoint:_0x8d52ca,securityMode:_0x3da4d3,securityPolicy:_0x122281,userIdentityType:_0x5a6ffd,credentials:_0x52bd5a,namespaceAliases:_0x3b04a2}=_0x2df10b,_0x15dfe5={'endpoint':_0x8d52ca,'securityMode':_0x3da4d3,'securityPolicy':_0x122281,'userIdentityType':_0x5a6ffd,'credentials':_0x52bd5a,'namespaceAliases':_0x3b04a2};return _0x15dfe5;},_0x49a0d1=()=>{const _0x372a93=_0xb4ff,_0x18735a=$(_0x372a93(0x149)),_0x125db1=_0x18735a[_0x372a93(0x186)](),_0x3af9e5=_0x4f7df5();if(!_0x3af9e5)return undefined;const _0xfc45dc=_0x3af9e5['namespaceAliases'];return Object[_0x372a93(0xa4)]({'namespaceAliases':_0xfc45dc,'id':_0x125db1},_0x3af9e5);},_0x537711=()=>{return{'endpointNode':_0x49a0d1};};function _0x1b0598(_0x1bb796,_0x4e2b87,_0x4c2b17,_0x551032){function _0x217f76(_0x394557){return _0x394557 instanceof _0x4c2b17?_0x394557:new _0x4c2b17(function(_0x49cf4f){_0x49cf4f(_0x394557);});}return new(_0x4c2b17||(_0x4c2b17=Promise))(function(_0x16aabb,_0x39dcc){const _0x190700=_0xb4ff;function _0x4c7e68(_0x2b43af){const _0x562e6d=_0xb4ff;try{_0x50d264(_0x551032[_0x562e6d(0x1f9)](_0x2b43af));}catch(_0x50dc27){_0x39dcc(_0x50dc27);}}function _0x56ac75(_0xe28434){const _0x2a9a85=_0xb4ff;try{_0x50d264(_0x551032[_0x2a9a85(0x1dc)](_0xe28434));}catch(_0x36decc){_0x39dcc(_0x36decc);}}function _0x50d264(_0x6431c0){const _0xe10c4d=_0xb4ff;_0x6431c0[_0xe10c4d(0xb3)]?_0x16aabb(_0x6431c0['value']):_0x217f76(_0x6431c0[_0xe10c4d(0xff)])[_0xe10c4d(0x136)](_0x4c7e68,_0x56ac75);}_0x50d264((_0x551032=_0x551032[_0x190700(0x207)](_0x1bb796,_0x4e2b87||[]))[_0x190700(0x1f9)]());});}typeof SuppressedError===_0x58e863(0xa9)?SuppressedError:function(_0x3adf13,_0x128d5b,_0x46340a){const _0x3a9600=_0x58e863;var _0x3a4528=new Error(_0x46340a);return _0x3a4528[_0x3a9600(0x19a)]='SuppressedError',_0x3a4528[_0x3a9600(0x128)]=_0x3adf13,_0x3a4528[_0x3a9600(0x223)]=_0x128d5b,_0x3a4528;};function _0x9361f2(){return _0x1b0598(this,void 0x0,void 0x0,function*(){const _0x164072=_0xb4ff,_0x4b9906=_0x125fdc('/licenceInfo'),_0x5ad32b=yield fetch(_0x4b9906,{'method':_0x164072(0x1a9)}),_0x3961c4=new Date()[_0x164072(0x1a1)](),_0x5820f6={'status':'FAILED','type':'FREEWARE','productName':_0x164072(0xf4),'productVersion':_0x164072(0x144),'licenceInfo':{'licenceId':_0x164072(0x193),'licenceType':_0x164072(0x14c),'expiryDate':_0x3961c4,'onPremiseServerHost':'','expired':!![],'userCompany':'','userEmail':'','userName':''}};if(_0x5ad32b[_0x164072(0x20e)]!==0xc8)return console['log'](_0x164072(0x79),_0x5ad32b[_0x164072(0x20e)],_0x5ad32b[_0x164072(0x1f1)]),_0x5820f6;const _0x4a6c3d=yield _0x5ad32b['json']();return _0x4a6c3d;});}const _0x43d193=_0x58e863(0xc3);function _0x58fc7a(){return _0x1b0598(this,void 0x0,void 0x0,function*(){const _0x42f8a7=_0xb4ff;try{const _0x2130f4=_0x125fdc(_0x42f8a7(0x99)),_0x3b097b=yield fetch(_0x2130f4);if(!_0x3b097b['ok'])return{'onboarded':!![]};return yield _0x3b097b[_0x42f8a7(0xbf)]();}catch(_0x21b9e5){return{'onboarded':!![]};}});}function _0x3fc4cc(_0x19d6d3){const _0x4c7e6b=_0x58e863;_0x2d38c1({'bannerClass':_0x4c7e6b(0x1b6),'bannerCss':{'backgroundColor':'#fff3cd','borderBottom':_0x4c7e6b(0x139)},'messageHtml':'<strong>⚠️\x20Registration\x20required</strong>\x20—\x20'+_0x4c7e6b(0x199)+(_0x4c7e6b(0x9b)+_0x19d6d3+'\x22\x20target=\x22_blank\x22\x20')+_0x4c7e6b(0x219)+'complete\x20registration</a>.','messageCss':{'color':_0x4c7e6b(0x1b8)},'buttonText':'Register\x20now','buttonCss':{'backgroundColor':_0x4c7e6b(0x19d)},'buttonHoverCss':{'backgroundColor':_0x4c7e6b(0x1ca)},'supportUrl':_0x19d6d3});const _0x2259ec=setInterval(()=>_0x1b0598(this,void 0x0,void 0x0,function*(){const _0x5234e3=_0x4c7e6b;try{const _0x464780=yield _0x58fc7a();if(_0x464780['onboarded']){clearInterval(_0x2259ec);const _0x152392=$(_0x5234e3(0x94));_0x152392[_0x5234e3(0x15c)]>0x0&&(_0x152392[_0x5234e3(0x1c8)]({'backgroundColor':_0x5234e3(0x135),'borderBottom':_0x5234e3(0xb8)}),_0x152392[_0x5234e3(0xf5)](_0x5234e3(0x1d9))[_0x5234e3(0x195)]('<strong>✅\x20Registration\x20complete</strong>\x20—\x20'+_0x5234e3(0x93)),_0x152392[_0x5234e3(0xf5)](_0x5234e3(0x1d9))[_0x5234e3(0x1c8)]({'color':_0x5234e3(0x13b)}),_0x152392[_0x5234e3(0xf5)](_0x5234e3(0xdc))[_0x5234e3(0x125)](),setTimeout(()=>{const _0x1f03aa=_0x5234e3;_0x152392[_0x1f03aa(0x1f0)](0x12c,()=>_0x152392['remove']());},0x1388));}}catch(_0xddafd){}}),0xbb8),_0x23e156=new MutationObserver(()=>{const _0x4bd1d3=_0x4c7e6b;$(_0x4bd1d3(0x94))[_0x4bd1d3(0x15c)]===0x0&&(clearInterval(_0x2259ec),_0x23e156[_0x4bd1d3(0x147)]());}),_0x3b4b1d=$('.red-ui-tray-content')[_0x4c7e6b(0x1c5)]();_0x3b4b1d[_0x4c7e6b(0x15c)]>0x0&&_0x3b4b1d[0x0]&&_0x23e156[_0x4c7e6b(0x1c4)](_0x3b4b1d[0x0],{'childList':!![],'subtree':!![]});}function _0x50dae7(){return _0x1b0598(this,arguments,void 0x0,function*(_0xbc0569={}){const _0x2870f5=_0xb4ff,_0x9df0cf=_0x125fdc(_0x2870f5(0x109)),{delay:delay=0x5dc,supportUrl:supportUrl=_0x9df0cf,shouldShowOverlay:shouldShowOverlay=_0x3fe3eb=>_0x3fe3eb[_0x2870f5(0x20e)]===_0x2870f5(0x1df)&&_0x3fe3eb['type']===_0x2870f5(0x14f)}=_0xbc0569;try{const _0x53bdf2=yield _0x58fc7a();if(!_0x53bdf2[_0x2870f5(0xd6)])return yield _0x1fa59e(Math[_0x2870f5(0x198)](delay,0x1f4)),_0x3fc4cc(_0x125fdc('/config')),!![];const _0x42f23a=yield _0x9361f2();if(shouldShowOverlay(_0x42f23a)){const _0x2d9545=Date[_0x2870f5(0x118)](),_0x5e4d3c=parseInt(localStorage[_0x2870f5(0x221)](_0x43d193)||'0',0xa),_0x1413cf=0x3c*0x3c*0x3e8;return _0x2d9545-_0x5e4d3c>_0x1413cf?(yield _0x1fa59e(delay),_0x2acb48(supportUrl),localStorage[_0x2870f5(0xeb)](_0x43d193,_0x2d9545[_0x2870f5(0x1e4)]())):_0x89b6a4(supportUrl),!![];}if(_0x42f23a['type']===_0x2870f5(0x14f)&&_0x42f23a['status']!==_0x2870f5(0x1df)){const _0x16389b=_0x1f2837(_0x42f23a);if(_0x16389b<=0xa&&_0x16389b>0x0)return yield _0x1fa59e(delay),_0x9deb91(supportUrl,_0x16389b),!![];}if(_0x42f23a[_0x2870f5(0x126)]==='PROFESSIONAL'&&_0x42f23a[_0x2870f5(0x20e)]===_0x2870f5(0x1df))return yield _0x1fa59e(delay),_0x5c4fc0(supportUrl),!![];return![];}catch(_0x1ad17c){return console[_0x2870f5(0x128)](_0x2870f5(0xe8),_0x1ad17c),![];}});}function _0x2acb48(_0x12c8bb,_0x2f1c9e=0xbb8){const _0x55f10d=_0x58e863,_0x3ae308=$('.red-ui-tray-content')['first']();if(_0x3ae308[_0x55f10d(0x15c)]===0x0){console['warn'](_0x55f10d(0x1fe));return;}const _0x1d90ff=$(_0x55f10d(0x15a),{'class':_0x55f10d(0xde),'css':{'position':_0x55f10d(0x9f),'top':0x0,'left':0x0,'right':0x0,'bottom':0x0,'zIndex':0x2710,'backgroundColor':_0x3ae308[_0x55f10d(0x1c8)](_0x55f10d(0x20d))[_0x55f10d(0x1d6)]('rgb(',_0x55f10d(0x81))[_0x55f10d(0x1d6)](')',_0x55f10d(0x1d4)),'backdropFilter':_0x55f10d(0x214),'WebkitBackdropFilter':'blur(10px)','display':_0x55f10d(0x10d),'flexDirection':_0x55f10d(0x212),'alignItems':_0x55f10d(0x83),'justifyContent':'center','padding':_0x55f10d(0x16a)}}),_0x2d9d52=$(_0x55f10d(0x15a),{'css':{'backgroundColor':_0x55f10d(0x9e),'backdropFilter':_0x55f10d(0x1af),'WebkitBackdropFilter':_0x55f10d(0x1af),'borderRadius':_0x55f10d(0x178),'padding':'40px','maxWidth':_0x55f10d(0x13f),'textAlign':'center','boxShadow':'0\x2020px\x2050px\x20rgba(0,0,0,0.25)','border':_0x55f10d(0x137)}}),_0x262913=$('<img>',{'src':_0x125fdc(_0x55f10d(0x86)),'css':{'maxWidth':'150px','height':_0x55f10d(0x175),'marginBottom':_0x55f10d(0x1f2)}}),_0x51e88a=$(_0x55f10d(0x15a),{'css':{'fontSize':_0x55f10d(0xb4),'marginBottom':'20px'}})[_0x55f10d(0x22a)]('⚠️'),_0x5a6b54=$('<h2>',{'css':{'color':'#f44336','fontSize':_0x55f10d(0x1ec),'fontWeight':_0x55f10d(0x84),'marginBottom':'15px'}})[_0x55f10d(0x22a)](_0x55f10d(0xda)),_0x5c9afe=$(_0x55f10d(0x1fb),{'css':{'color':_0x55f10d(0x92),'fontSize':'16px','lineHeight':_0x55f10d(0x1e6),'marginBottom':_0x55f10d(0x21a)}})[_0x55f10d(0x195)](_0x55f10d(0xbd)),_0x529e42=$(_0x55f10d(0xd7),{'css':{'backgroundColor':_0x55f10d(0x155),'color':_0x55f10d(0x176),'border':_0x55f10d(0xaf),'padding':_0x55f10d(0x1f4),'fontSize':_0x55f10d(0x178),'fontWeight':_0x55f10d(0x84),'borderRadius':_0x55f10d(0x10c),'cursor':_0x55f10d(0x160),'marginBottom':_0x55f10d(0x1c3),'width':_0x55f10d(0xa5),'transition':_0x55f10d(0xf2)}})[_0x55f10d(0x22a)]('Get\x20Support\x20&\x20Activate\x20License')['on'](_0x55f10d(0x188),function(){const _0x2537ed=_0x55f10d;$(this)[_0x2537ed(0x1c8)](_0x2537ed(0xc0),'#1976D2');})['on'](_0x55f10d(0x102),function(){const _0x3a5696=_0x55f10d;$(this)[_0x3a5696(0x1c8)](_0x3a5696(0xc0),'#2196F3');})['on'](_0x55f10d(0x170),()=>{const _0x2ff831=_0x55f10d;window['open'](_0x12c8bb,_0x2ff831(0x111),_0x2ff831(0xfd));}),_0x19184b=$('<button>',{'class':'licence-continue-button','css':{'backgroundColor':_0x55f10d(0x1b4),'color':'#555','border':_0x55f10d(0x16e),'padding':'10px\x2020px','fontSize':_0x55f10d(0x1d5),'borderRadius':_0x55f10d(0x10c),'cursor':_0x55f10d(0x160),'marginTop':_0x55f10d(0x1de),'width':'100%','transition':'all\x200.2s','display':_0x55f10d(0xaf)}})[_0x55f10d(0x22a)](_0x55f10d(0x8b))['on'](_0x55f10d(0x188),function(){const _0x555b01=_0x55f10d;$(this)[_0x555b01(0x1c8)]({'backgroundColor':_0x555b01(0xd2),'borderColor':_0x555b01(0x16c)});})['on'](_0x55f10d(0x102),function(){const _0x242e1f=_0x55f10d;$(this)[_0x242e1f(0x1c8)]({'backgroundColor':_0x242e1f(0x1b4),'borderColor':_0x242e1f(0x1d2)});})['on'](_0x55f10d(0x170),()=>{const _0x140932=_0x55f10d;_0x1d90ff[_0x140932(0x1ab)](0x12c,()=>{const _0xc9b88e=_0x140932;_0x1d90ff[_0xc9b88e(0x125)]();});});setTimeout(()=>{_0x19184b['fadeIn']();},_0x2f1c9e),_0x2d9d52[_0x55f10d(0x206)](_0x262913),_0x2d9d52[_0x55f10d(0x206)](_0x51e88a),_0x2d9d52['append'](_0x5a6b54),_0x2d9d52[_0x55f10d(0x206)](_0x5c9afe),_0x2d9d52['append'](_0x529e42),_0x2d9d52['append'](_0x19184b),_0x1d90ff['append'](_0x2d9d52),_0x3ae308['css'](_0x55f10d(0x215),_0x55f10d(0x14d)),_0x3ae308[_0x55f10d(0x206)](_0x1d90ff),window[_0x55f10d(0x89)]('message',function _0x4109e5(_0x12c43b){const _0x35b273=_0x55f10d;_0x12c43b[_0x35b273(0x101)]&&_0x12c43b[_0x35b273(0x101)]['type']===_0x35b273(0x122)&&(_0x1d90ff[_0x35b273(0x1ab)](0x12c,()=>{_0x1d90ff['remove']();}),window[_0x35b273(0x18b)](_0x35b273(0x203),_0x4109e5));});}function _0x1fa59e(_0x598f48){return new Promise(_0x5bcc13=>setTimeout(_0x5bcc13,_0x598f48));}function _0x1f2837(_0x41cffb){const _0x4ca904=_0x58e863,_0x248994=_0x41cffb[_0x4ca904(0x8d)][_0x4ca904(0x1c6)];if(!_0x248994||_0x248994==='permanent')return Infinity;const _0x3bb12b=new Date(_0x248994),_0xb8270c=new Date(),_0x937a6e=_0x3bb12b['getTime']()-_0xb8270c[_0x4ca904(0x182)](),_0x368d38=Math[_0x4ca904(0x1c1)](_0x937a6e/(0x3e8*0x3c*0x3c*0x18));return _0x368d38;}function _0x9deb91(_0x33b39a,_0x286175){const _0x20e105=_0x58e863,_0x48ff84=$(_0x20e105(0x1e0))[_0x20e105(0x1c5)]();if(_0x48ff84['length']===0x0){console[_0x20e105(0x179)](_0x20e105(0x12f));return;}if(_0x48ff84[_0x20e105(0xf5)](_0x20e105(0x1a4))[_0x20e105(0x15c)]>0x0)return;const _0x47c842=$(_0x20e105(0x15a),{'class':_0x20e105(0x20f),'css':{'position':_0x20e105(0x14d),'backgroundColor':_0x20e105(0x218),'borderBottom':'2px\x20solid\x20#ffc107','padding':_0x20e105(0x85),'display':_0x20e105(0x10d),'alignItems':_0x20e105(0x83),'gap':_0x20e105(0x196),'boxShadow':_0x20e105(0x1b5),'zIndex':0x3e8}}),_0x4e4b6e=$(_0x20e105(0x15a),{'css':{'fontSize':_0x20e105(0x1f2),'flexShrink':0x0}})[_0x20e105(0x22a)]('⚠️'),_0x32dc87=$('<div>',{'css':{'flex':0x1,'fontSize':'14px','color':_0x20e105(0x1a2)}}),_0x552918=$(_0x20e105(0x114),{'css':{'fontWeight':_0x20e105(0xaa)}})['html']('Your\x20trial\x20license\x20expires\x20in\x20<strong>'+_0x286175+_0x20e105(0x9a)+(_0x286175!==0x1?'s':'')+_0x20e105(0x17d)),_0x2f7a89=$(_0x20e105(0x145),{'href':'#','css':{'color':'#2196F3','textDecoration':_0x20e105(0x167),'cursor':_0x20e105(0x160)}})['text'](_0x20e105(0x1b9))['on']('click',_0x4d4633=>{const _0x10bf99=_0x20e105;_0x4d4633[_0x10bf99(0x1d8)](),window[_0x10bf99(0x20a)](_0x33b39a,_0x10bf99(0x111),_0x10bf99(0xfd));});_0x32dc87['append'](_0x552918),_0x32dc87[_0x20e105(0x206)](_0x2f7a89);const _0x8bc316=$(_0x20e105(0xd7),{'css':{'position':_0x20e105(0x9f),'right':'10px','top':'50%','transform':_0x20e105(0x1a3),'backgroundColor':_0x20e105(0x1b4),'border':_0x20e105(0xaf),'fontSize':_0x20e105(0x1f2),'color':_0x20e105(0x1a2),'cursor':_0x20e105(0x160),'padding':'5px\x2010px','lineHeight':0x1,'opacity':0.7,'transition':_0x20e105(0xdb)}})[_0x20e105(0x195)]('×')['on'](_0x20e105(0x188),function(){const _0x51a829=_0x20e105;$(this)[_0x51a829(0x1c8)](_0x51a829(0x1e1),0x1);})['on']('mouseleave',function(){const _0x328a17=_0x20e105;$(this)[_0x328a17(0x1c8)]('opacity',0.7);})['on'](_0x20e105(0x170),()=>{_0x47c842['slideUp'](0xc8,()=>{const _0x3c2e16=_0xb4ff;_0x47c842[_0x3c2e16(0x125)]();});});_0x47c842[_0x20e105(0x206)](_0x4e4b6e),_0x47c842[_0x20e105(0x206)](_0x32dc87),_0x47c842[_0x20e105(0x206)](_0x8bc316),_0x48ff84[_0x20e105(0x197)](_0x47c842);}function _0x2d38c1(_0xe94b07){const _0x4456cb=_0x58e863,_0x1f8343=$('.red-ui-tray-content')[_0x4456cb(0x1c5)]();if(_0x1f8343[_0x4456cb(0x15c)]===0x0){console['warn']('Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20banner\x20.'+_0xe94b07['bannerClass']);return;}if(_0x1f8343[_0x4456cb(0xf5)]('.'+_0xe94b07[_0x4456cb(0x204)])[_0x4456cb(0x15c)]>0x0)return;const _0x4d604e=$(_0x4456cb(0x15a),{'class':_0xe94b07[_0x4456cb(0x204)],'css':Object[_0x4456cb(0xa4)]({'position':'relative','padding':'10px\x2015px','display':_0x4456cb(0x10d),'alignItems':_0x4456cb(0x83),'justifyContent':'space-between','gap':_0x4456cb(0x1c3),'zIndex':0x3e8},_0xe94b07[_0x4456cb(0x13e)])}),_0x50e5e0=$(_0x4456cb(0x15a),{'css':Object['assign']({'fontSize':'14px'},_0xe94b07[_0x4456cb(0x156)])}),_0x5d7bca=$(_0x4456cb(0x114))[_0x4456cb(0x195)](_0xe94b07['messageHtml']);_0x50e5e0['append'](_0x5d7bca);const _0x1ba1d0=$(_0x4456cb(0xd7),{'css':Object[_0x4456cb(0xa4)]({'color':'white','border':_0x4456cb(0xaf),'padding':_0x4456cb(0xc2),'fontSize':'13px','fontWeight':_0x4456cb(0x84),'borderRadius':_0x4456cb(0x14e),'cursor':_0x4456cb(0x160),'flexShrink':0x0,'transition':_0x4456cb(0xf2)},_0xe94b07[_0x4456cb(0xf7)])})[_0x4456cb(0x22a)](_0xe94b07[_0x4456cb(0xdd)])['on']('mouseenter',function(){const _0x2c8e0e=_0x4456cb;$(this)[_0x2c8e0e(0x1c8)](_0xe94b07['buttonHoverCss']);})['on']('mouseleave',function(){const _0x4c6c04=_0x4456cb;$(this)[_0x4c6c04(0x1c8)](_0xe94b07[_0x4c6c04(0xf7)]);})['on'](_0x4456cb(0x170),_0x32a75=>{const _0xb009ec=_0x4456cb;_0x32a75['preventDefault'](),window[_0xb009ec(0x20a)](_0xe94b07['supportUrl'],_0xb009ec(0x111),_0xb009ec(0xfd));});_0x4d604e[_0x4456cb(0x206)](_0x50e5e0),_0x4d604e[_0x4456cb(0x206)](_0x1ba1d0),_0x1f8343[_0x4456cb(0x197)](_0x4d604e);}function _0x89b6a4(_0x315e88){const _0x39975b=_0x58e863;_0x2d38c1({'bannerClass':'licence-freemium-banner','bannerCss':{'backgroundColor':_0x39975b(0x225),'borderBottom':_0x39975b(0x1b1)},'messageHtml':'You\x20are\x20using\x20the\x20<strong>Free\x20Version</strong>\x20with\x20limited\x20functionality.\x20','messageCss':{'color':_0x39975b(0xad)},'buttonText':_0x39975b(0xd3),'buttonCss':{'backgroundColor':_0x39975b(0x155)},'buttonHoverCss':{'backgroundColor':_0x39975b(0xec)},'supportUrl':_0x315e88});}function _0x5c4fc0(_0xfd4959){const _0x36deca=_0x58e863;_0x2d38c1({'bannerClass':_0x36deca(0x1e9),'bannerCss':{'backgroundColor':_0x36deca(0x210),'borderBottom':_0x36deca(0x12c)},'messageHtml':_0x36deca(0x205),'messageCss':{'color':_0x36deca(0x8f)},'buttonText':_0x36deca(0xa8),'buttonCss':{'backgroundColor':'#dc3545'},'buttonHoverCss':{'backgroundColor':_0x36deca(0xf3)},'supportUrl':_0xfd4959});}const _0x5dd226='ns=0;i=35',_0x559612=_0x58e863(0x1e7),_0x39ab51='ns=0;i=47',_0x4f7568=_0x58e863(0xe2),_0x16a396=_0x58e863(0x10f),_0x349e37=_0x58e863(0x10e),_0x9fa0ea=_0x58e863(0x110);var _0x2d757f;(function(_0xa885db){const _0x5c8066=_0x58e863;_0xa885db[_0xa885db[_0x5c8066(0x1bf)]=0x0]=_0x5c8066(0x1bf),_0xa885db[_0xa885db[_0x5c8066(0x201)]=0x1]=_0x5c8066(0x201),_0xa885db[_0xa885db[_0x5c8066(0x74)]=0x2]=_0x5c8066(0x74),_0xa885db[_0xa885db['Invalid']=0x3]=_0x5c8066(0x1eb);}(_0x2d757f||(_0x2d757f={})));var _0x69e67c;(function(_0x475abe){const _0x50e043=_0x58e863;_0x475abe[_0x475abe[_0x50e043(0x100)]=0x0]=_0x50e043(0x100),_0x475abe[_0x475abe['Object']=0x1]=_0x50e043(0x90),_0x475abe[_0x475abe[_0x50e043(0x166)]=0x2]='Variable',_0x475abe[_0x475abe[_0x50e043(0x108)]=0x4]='Method',_0x475abe[_0x475abe['ObjectType']=0x8]=_0x50e043(0x21d),_0x475abe[_0x475abe[_0x50e043(0x1a5)]=0x10]=_0x50e043(0x1a5),_0x475abe[_0x475abe[_0x50e043(0x1b0)]=0x20]=_0x50e043(0x1b0),_0x475abe[_0x475abe['DataType']=0x40]=_0x50e043(0xcf),_0x475abe[_0x475abe[_0x50e043(0x165)]=0x80]=_0x50e043(0x165);}(_0x69e67c||(_0x69e67c={})));var _0x4c7022;(function(_0x55cca6){const _0xf21a06=_0x58e863;_0x55cca6[_0x55cca6[_0xf21a06(0x90)]=0x1]=_0xf21a06(0x90),_0x55cca6[_0x55cca6['Variable']=0x2]=_0xf21a06(0x166),_0x55cca6[_0x55cca6[_0xf21a06(0x108)]=0x4]=_0xf21a06(0x108),_0x55cca6[_0x55cca6[_0xf21a06(0x21d)]=0x8]=_0xf21a06(0x21d),_0x55cca6[_0x55cca6[_0xf21a06(0x1a5)]=0x10]=_0xf21a06(0x1a5),_0x55cca6[_0x55cca6[_0xf21a06(0x1b0)]=0x20]='ReferenceType',_0x55cca6[_0x55cca6[_0xf21a06(0xcf)]=0x40]=_0xf21a06(0xcf),_0x55cca6[_0x55cca6[_0xf21a06(0x165)]=0x80]=_0xf21a06(0x165);}(_0x4c7022||(_0x4c7022={})));var _0xa30686;(function(_0x10c5e5){const _0x37e27c=_0x58e863;_0x10c5e5[_0x10c5e5[_0x37e27c(0x1b0)]=0x1]=_0x37e27c(0x1b0),_0x10c5e5[_0x10c5e5[_0x37e27c(0xa3)]=0x2]=_0x37e27c(0xa3),_0x10c5e5[_0x10c5e5[_0x37e27c(0x13d)]=0x4]='NodeClass',_0x10c5e5[_0x10c5e5[_0x37e27c(0x1ea)]=0x8]=_0x37e27c(0x1ea),_0x10c5e5[_0x10c5e5[_0x37e27c(0x1c2)]=0x10]=_0x37e27c(0x1c2),_0x10c5e5[_0x10c5e5[_0x37e27c(0x104)]=0x20]=_0x37e27c(0x104);}(_0xa30686||(_0xa30686={})));function _0x4d42ab(_0x39140f){const _0x42b504=_0x58e863;switch(_0x39140f){case _0x42b504(0xa2):return _0x5dd226;case _0x42b504(0x1ba):return _0x4f7568;case _0x42b504(0x95):return _0x39ab51;case _0x42b504(0xea):return _0x16a396;case _0x42b504(0xd1):return _0x349e37;case _0x42b504(0x142):return _0x9fa0ea;}}const _0x2b35ff=(_0x54688f,_0x59ed4b,_0xdc33e)=>_0x1b0598(void 0x0,[_0x54688f,_0x59ed4b,_0xdc33e],void 0x0,function*({endpointNode:_0x5878b,endpoint:_0x589b93},_0x2d31d5,_0x5c7fe5){const _0x32da2f=_0x58e863,_0x3747fb=Object[_0x32da2f(0xa4)](Object['assign']({},_0x5c7fe5),{'nodeId':_0x2d31d5,'resultMask':0x3f}),_0x54df87=_0x125fdc(_0x32da2f(0x8a)),_0x29fc80=yield fetch(_0x54df87,{'method':_0x32da2f(0x10a),'body':JSON['stringify']({'endpointNode':_0x5878b,'endpoint':_0x589b93,'browseDescription':_0x3747fb}),'headers':{'Content-Type':_0x32da2f(0xb0)}});if(_0x29fc80['status']!==0xc8)return console['log'](_0x32da2f(0x79),_0x29fc80['status'],_0x29fc80['statusText']),{'references':[]};const _0x14c612=yield _0x29fc80[_0x32da2f(0xbf)](),_0x3aef14=_0x14c612[_0x32da2f(0x17a)][_0x32da2f(0x152)]||[];return{'references':_0x3aef14};}),_0x376a78=_0x4130cd=>{const _0x3aa4fb=_0x58e863;switch(_0x4130cd['nodeClass']){case _0x3aa4fb(0x90):if(_0x4130cd['referenceTypeId']===_0x5dd226);if(_0x4130cd[_0x3aa4fb(0x10b)]===_0x559612||_0x4130cd[_0x3aa4fb(0x1e5)]===_0x3aa4fb(0x222))return{'icon':_0x3aa4fb(0xf9),'color':_0x3aa4fb(0x1ef)};return{'icon':'fa-object-group','color':_0x3aa4fb(0xbb)};case _0x3aa4fb(0x166):if(_0x4130cd[_0x3aa4fb(0x1e5)]===_0x39ab51)return{'icon':_0x3aa4fb(0x9d),'color':_0x3aa4fb(0xb7)};else return _0x4130cd[_0x3aa4fb(0x1e5)]===_0x4f7568?{'icon':_0x3aa4fb(0x9d),'color':_0x3aa4fb(0x1dd)}:{'icon':_0x3aa4fb(0x9d),'color':'CadetBlue'};case _0x3aa4fb(0x108):return{'icon':_0x3aa4fb(0xc4),'color':_0x3aa4fb(0xb6)};case'ObjectType':return{'icon':'fa-object-group','color':'DarkOrange'};case _0x3aa4fb(0x1a5):return{'icon':_0x3aa4fb(0x200),'color':_0x3aa4fb(0x187)};case _0x3aa4fb(0xcf):return{'icon':'fa-text-width','color':'CadetBlue'};}return{'icon':'fa-question','color':_0x3aa4fb(0x157)};},_0x3864f2={'referenceTypeId':_0x4d42ab(_0x58e863(0xea)),'includeSubtypes':!![],'browseDirection':_0x2d757f[_0x58e863(0x1bf)],'nodeClassMask':_0x69e67c[_0x58e863(0x166)]|_0x69e67c['Object']|_0x69e67c[_0x58e863(0x108)],'resultMask':0x3f},_0x17e9a8={'referenceTypeId':_0x4d42ab(_0x58e863(0xa2)),'includeSubtypes':!![],'browseDirection':_0x2d757f['Forward'],'nodeClassMask':_0x69e67c[_0x58e863(0x166)]|_0x69e67c['Object']|_0x69e67c[_0x58e863(0x108)],'resultMask':0x3f},_0x469904=(_0x1fd52d,_0x17aa89)=>_0x1b0598(void 0x0,[_0x1fd52d,_0x17aa89],void 0x0,function*({endpointNode:_0x50283b,endpoint:_0xdc2448},{nodeId:_0x4f2270,rootNodeId:_0x58ff70,isType:_0x590837}){const _0x5848a8=_0x58e863,_0x3532e7=_0x125fdc(_0x5848a8(0x1bd)),_0x586261=yield fetch(_0x3532e7,{'method':_0x5848a8(0x10a),'body':JSON[_0x5848a8(0xbc)]({'endpointNode':_0x50283b,'endpoint':_0xdc2448,'nodeId':_0x4f2270,'rootNodeId':_0x58ff70,'isType':_0x590837}),'headers':{'Content-Type':'application/json'}});if(_0x586261['status']!==0xc8)return null;const _0x4890ae=yield _0x586261['json']();return _0x4890ae['browsePath'];}),_0x408d66=(_0x35f3c8,_0xc6b77c)=>{const _0x426c86=_0x58e863;if(_0x35f3c8[_0x426c86(0xe6)]!==_0x426c86(0x1c0))return _0x35f3c8['requestedNodeId'];switch(_0xc6b77c){case _0x426c86(0xb2):return _0x35f3c8[_0x426c86(0x171)];case _0x426c86(0x141):return _0x35f3c8[_0x426c86(0x7a)]||_0x35f3c8[_0x426c86(0x171)];case'aliasedNodeId':return _0x35f3c8[_0x426c86(0x1a7)]||_0x35f3c8[_0x426c86(0x1db)];case _0x426c86(0x1e2):return _0x35f3c8[_0x426c86(0x1db)];default:return _0x35f3c8['nodeId'];}},_0x201335=_0x22e02b=>{const _0x29bfef=_0x58e863;if(_0x22e02b[_0x29bfef(0xe6)]!==_0x29bfef(0x1c0))return _0x29bfef(0x177)+_0x22e02b[_0x29bfef(0xe6)];else{const _0x3ec555=[];return _0x3ec555['push']('nodeId:\x20'+_0x22e02b[_0x29bfef(0xed)]),_0x3ec555['push'](_0x29bfef(0x103)+_0x22e02b['bp_indexed']),_0x3ec555[_0x29bfef(0x97)]('node\x20class:\x20'+_0x69e67c[_0x22e02b[_0x29bfef(0x21b)]]),_0x22e02b[_0x29bfef(0x1db)]&&_0x3ec555[_0x29bfef(0x97)](_0x29bfef(0x112)+_0x22e02b[_0x29bfef(0x1db)]),_0x22e02b[_0x29bfef(0x1a7)]&&_0x3ec555[_0x29bfef(0x97)](_0x29bfef(0x163)+_0x22e02b[_0x29bfef(0x1a7)]),_0x22e02b[_0x29bfef(0x171)]&&_0x3ec555[_0x29bfef(0x97)](_0x29bfef(0x185)+_0x22e02b[_0x29bfef(0x7a)]),_0x3ec555[_0x29bfef(0xee)]('\x0a');}};function _0xbbe1e3(_0x25a9ba){const _0x3ba06f=_0x58e863;if(_0x25a9ba['match'](/^nsu=/))return _0x3ba06f(0x1e2);if(_0x25a9ba[_0x3ba06f(0x1b7)](/^(ns=.*;)?(i|b|s|g)=/))return _0x3ba06f(0xed);if(_0x25a9ba[_0x3ba06f(0x1b7)](/^nsa=/))return _0x3ba06f(0xb9);if(_0x25a9ba['match'](/^(\/|\.)[0-9]+:/))return _0x3ba06f(0xb2);if(_0x25a9ba[_0x3ba06f(0x1b7)](/^(\/|\.).*:/))return _0x3ba06f(0xb2);}function _0x10dc8b(_0x441825){const _0x337010=_0x58e863,_0x3918ae=_0xbbe1e3(_0x441825);switch(_0x3918ae){case _0x337010(0xed):return'n';case _0x337010(0xb9):return'na';case'nsuNodeID':return _0x337010(0xce);case _0x337010(0xb2):return'b';case _0x337010(0x141):return'ab';default:return't';}}function _0x4d727f(_0x2576ce){const _0x172a39=_0x58e863;let _0x323f8a;switch(_0x2576ce){case'n':_0x323f8a=_0x172a39(0xed);break;case'na':_0x323f8a=_0x172a39(0xb9);break;case'nsu':_0x323f8a=_0x172a39(0x1e2);break;case'b':_0x323f8a=_0x172a39(0xb2);break;case'ab':_0x323f8a=_0x172a39(0x141);break;}return _0x323f8a;}function _0x3028da(_0x1f1e20){const _0x3f6ae4=_0x58e863;switch(_0x1f1e20){case _0x3f6ae4(0xed):return'n';case'aliasedNodeId':return'na';case'nsuNodeID':return _0x3f6ae4(0xce);case _0x3f6ae4(0xb2):return'b';case _0x3f6ae4(0x141):return'ab';default:return't';}}const _0x18f34b=(_0x1787ce,_0x273c42)=>_0x1b0598(void 0x0,[_0x1787ce,_0x273c42],void 0x0,function*({endpointNode:_0x152ea6,endpoint:_0x33fff2},_0xcd74e){const _0x329f4f=_0x58e863,_0x453492=_0x125fdc('/checkNodeId'),_0x2ac5ab=_0x152ea6['id'],_0x4400ef=RED['nodes'][_0x329f4f(0x138)](_0x2ac5ab);console[_0x329f4f(0x18c)](_0x4400ef[_0x329f4f(0xe1)]),_0x4400ef[_0x329f4f(0xe1)];const _0x2f6760=_0x152ea6[_0x329f4f(0xe1)],_0x1d05da=yield fetch(_0x453492,{'method':_0x329f4f(0x10a),'body':JSON[_0x329f4f(0xbc)]({'endpointNode':_0x152ea6,'endpoint':_0x33fff2,'nodeId':_0xcd74e,'namespaceAliases':_0x2f6760}),'headers':{'Content-Type':_0x329f4f(0xb0)}}),_0x54d974=yield _0x1d05da[_0x329f4f(0xbf)]();return{'json':_0x54d974,'data':_0x1d05da};}),_0x3f1363=(_0x387959,_0x1c6418,_0x3ac9f2,_0x422d87)=>_0x1b0598(void 0x0,[_0x387959,_0x1c6418,_0x3ac9f2,_0x422d87],void 0x0,function*({endpointNode:_0x725291,endpoint:_0x477145},_0x5bbc75,_0x18aa7f,_0x48c9e7){const _0x4d2192=_0x58e863,_0xd5e0ea=_0x18aa7f[_0x4d2192(0x186)](),{json:_0x38a062,data:_0x4a8d23}=yield _0x18f34b({'endpointNode':_0x725291,'endpoint':_0x477145},_0xd5e0ea),_0x15b614=(_0x1ac6bd,_0x20e3d8)=>{const _0x36a24b=_0x4d2192;_0x48c9e7[_0x36a24b(0x22a)](_0x1ac6bd)[_0x36a24b(0x19f)](_0x36a24b(0x11d))['addClass'](_0x20e3d8),_0x48c9e7[_0x36a24b(0x98)](),setTimeout(()=>{_0x48c9e7['removeClass'](_0x20e3d8),_0x48c9e7['hide']();},0xbb8);};if(_0x4a8d23[_0x4d2192(0x20e)]!==0xc8)return _0x15b614(_0x4d2192(0x154)+_0xd5e0ea,'failure'),![];else{if(_0x38a062[_0x4d2192(0xe6)]['match'](/Good/)){const _0x4c23c6=_0x201335(_0x38a062);_0x18aa7f[_0x4d2192(0xfb)]('title',_0x4c23c6);const _0x135eb9=_0x408d66(_0x38a062,_0x5bbc75);return _0x18aa7f[_0x4d2192(0x186)](_0x135eb9),_0x18aa7f[_0x4d2192(0xbe)](_0x4d2192(0xba)),_0x15b614('Good','ok'),!![];}else return _0x18aa7f[_0x4d2192(0x186)](''+_0xd5e0ea),_0x15b614(_0x38a062[_0x4d2192(0xe6)]+'\x20'+_0x4a8d23[_0x4d2192(0x1f1)],_0x4d2192(0xf1)),![];}});function _0x2e4fb8(_0x4c3e7e,_0x252b07){return _0x1b0598(this,void 0x0,void 0x0,function*(){const _0x2dcda8=_0xb4ff,_0x534105=_0x4c3e7e[_0x2dcda8(0x101)](_0x2dcda8(0xff)),_0x6c600a=yield _0x2b35ff(_0x252b07,_0x534105,_0x3864f2),_0x22a3be=yield _0x2b35ff(_0x252b07,_0x534105,_0x17e9a8);return{'references':[..._0x6c600a[_0x2dcda8(0x152)],..._0x22a3be[_0x2dcda8(0x152)]]};});}const _0x1ef9cb={'referenceTypeId':_0x4d42ab(_0x58e863(0xd1)),'includeSubtypes':!![],'browseDirection':_0x2d757f[_0x58e863(0x1bf)],'nodeClassMask':_0x69e67c[_0x58e863(0x1b0)]|_0x69e67c[_0x58e863(0x21d)]|_0x69e67c[_0x58e863(0xcf)]|_0x69e67c[_0x58e863(0x1a5)],'resultMask':0x3f};function _0x5a28fe(_0x4d3d37,_0x53e13d){return _0x1b0598(this,void 0x0,void 0x0,function*(){const _0x5b2a24=_0xb4ff,_0x487b8e=_0x4d3d37[_0x5b2a24(0x101)](_0x5b2a24(0xff)),_0x20cb4a=yield _0x2b35ff(_0x53e13d,_0x487b8e,_0x1ef9cb);return _0x20cb4a;});}const _0x4ffad5=_0x57ee3b=>{const _0x43ffb0=_0x58e863;var _0x20522a,_0x9120a6,_0x58e3c3,_0x3da3d5;if(!(_0x57ee3b===null||_0x57ee3b===void 0x0?void 0x0:_0x57ee3b[_0x43ffb0(0xed)])){const _0x3ebeca=$(_0x43ffb0(0xe4));return _0x3ebeca;}const _0xd72f5e=_0x57ee3b['nodeId'][_0x43ffb0(0x1e4)](),_0x53294c=((_0x20522a=_0x57ee3b[_0x43ffb0(0x9c)])===null||_0x20522a===void 0x0?void 0x0:_0x20522a[_0x43ffb0(0x22a)])||((_0x9120a6=_0x57ee3b[_0x43ffb0(0xa0)])===null||_0x9120a6===void 0x0?void 0x0:_0x9120a6['name'])||_0x57ee3b[_0x43ffb0(0xed)][_0x43ffb0(0x1e4)](),{icon:_0x13a798,color:_0xb59d53}=_0x376a78(_0x57ee3b),_0x43d921='('+_0x57ee3b[_0x43ffb0(0xed)][_0x43ffb0(0x1e4)]()+')\x20'+(((_0x58e3c3=_0x57ee3b[_0x43ffb0(0xa0)])===null||_0x58e3c3===void 0x0?void 0x0:_0x58e3c3['name'])||((_0x3da3d5=_0x57ee3b['displayName'])===null||_0x3da3d5===void 0x0?void 0x0:_0x3da3d5[_0x43ffb0(0x22a)])||''),_0x23dfbc=$(_0x43ffb0(0x192)+_0x57ee3b[_0x43ffb0(0xed)][_0x43ffb0(0x1e4)]()+_0x43ffb0(0x18a)+_0x43d921+_0x43ffb0(0xca)+_0x13a798+_0x43ffb0(0x14b)+_0xb59d53+_0x43ffb0(0x11c)+_0x53294c+'</span><ul></ul></li>');return _0x23dfbc[_0x43ffb0(0x19f)](_0x43ffb0(0x12b)),_0x23dfbc['data'](_0x43ffb0(0xff),_0xd72f5e),_0x23dfbc['data'](_0x43ffb0(0xcc),_0x57ee3b),_0x23dfbc;},_0x54f4c5=(_0x6cad4c,_0x2c1a1b)=>{const _0x127368=_0x58e863;return _0x2c1a1b[_0x127368(0xf5)](_0x127368(0xc6)+_0x6cad4c+'\x22]');},_0x5744be=(_0x7a0cd6,_0x4c9bf6)=>{const _0x456387=_0x58e863;_0x7a0cd6[_0x456387(0x19b)][_0x456387(0xf5)]('li\x20>\x20.tree-text')['removeClass'](_0x456387(0x73)),_0x4c9bf6[_0x456387(0xf5)]('.tree-text:first')[_0x456387(0x19f)]('selected');},_0x8646f7=(_0x3c632d,_0x556a47,_0x4b4fd3)=>_0x1b0598(void 0x0,void 0x0,void 0x0,function*(){const _0x5df058=_0x58e863;let _0x2a9fee=_0x4b4fd3[_0x5df058(0x91)](_0x5df058(0x133));_0x556a47['relativePath'][_0x5df058(0xab)]||[];const _0x5c3852=_0x556a47[_0x5df058(0x1ae)]||[];if(_0x5c3852['length']===0x0)return;for(const