@opcua/for-node-red 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DOC.md +60 -0
- package/README.md +5 -61
- package/package.json +8 -28
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.css +2 -0
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +50 -0
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.js +2 -0
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.css +2 -0
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.html +171 -0
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.js +2 -0
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.css +2 -0
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +95 -0
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.js +2 -0
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.css +2 -0
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +50 -0
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.js +2 -0
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.css +2 -0
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.html +49 -0
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.js +2 -0
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.css +2 -0
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.html +371 -0
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.js +2 -0
@@ -0,0 +1,371 @@
|
|
1
|
+
<style>
|
2
|
+
.licence-widget-icon{font-size:1.5em;margin-right:10px}.licence-widget{background-color:#fdfdfd;border:1px solid #eaeaea;border-radius:6px;box-sizing:border-box;font-family:Courier New,Courier,monospace;font-size:.8em;font-style:italic;margin-bottom:10px;margin-top:10px;max-height:200px;overflow-x:auto;overflow-y:auto;padding:10px;white-space:nowrap;width:100%}.licence-widget::-webkit-scrollbar{display:none}.licence-widget{scrollbar-color:transparent transparent;scrollbar-width:none}.licence-widget-AUTHORIZED{background-color:#d5f5e3}.licence-widget-FAILED{background-color:#fadbd8}.licence-widget-details{text-wrap:pretty;font-size:.8em;font-style:italic;padding:2px}
|
3
|
+
/*# sourceMappingURL=OpcUa-Endpoint2.css.map */
|
4
|
+
</style>
|
5
|
+
|
6
|
+
<script type="text/javascript">
|
7
|
+
(function(_0x419332,_0x33a4a9){const _0x460658=_0x5741,_0x520dd4=_0x419332();while(!![]){try{const _0x1f1613=-parseInt(_0x460658(0xb3))/0x1+-parseInt(_0x460658(0xcf))/0x2*(parseInt(_0x460658(0xd6))/0x3)+parseInt(_0x460658(0x131))/0x4*(-parseInt(_0x460658(0xe6))/0x5)+parseInt(_0x460658(0xa9))/0x6+-parseInt(_0x460658(0xa3))/0x7*(parseInt(_0x460658(0xea))/0x8)+parseInt(_0x460658(0x11c))/0x9*(parseInt(_0x460658(0xda))/0xa)+parseInt(_0x460658(0xd5))/0xb;if(_0x1f1613===_0x33a4a9)break;else _0x520dd4['push'](_0x520dd4['shift']());}catch(_0x2beff2){_0x520dd4['push'](_0x520dd4['shift']());}}}(_0x45b3,0xba0fd),(function(){'use strict';const _0x57754c=_0x5741;function _0x4bd827(_0x49a852,_0x49cd8d,_0x543fa3,_0x256afa){const _0x5dcf3e=_0x5741,_0x554ec5=$('#'+_0x49a852+_0x5dcf3e(0xb6)),_0x4bbc35=$('#'+_0x49a852+_0x5dcf3e(0xb4)),_0x4bbf0e=$('#'+_0x49a852+_0x5dcf3e(0x99)),_0x150026=$('#'+_0x49a852+_0x5dcf3e(0xaa));let _0x22165e=![];_0x554ec5['hide'](),_0x4bbc35[_0x5dcf3e(0x118)](),_0x4bbf0e[_0x5dcf3e(0x118)](),_0x49cd8d['on']('click',()=>{const _0x1fc92f=_0x5dcf3e;if(_0x22165e)return;_0x22165e=!![],_0x4bbf0e[_0x1fc92f(0x115)](_0x1fc92f(0x118)),_0x4bbf0e[_0x1fc92f(0x12c)]('Testing\x20Connection\x20...'),_0x554ec5['addClass'](_0x1fc92f(0x118)),_0x4bbc35[_0x1fc92f(0xe3)](_0x1fc92f(0x118)),_0x150026[_0x1fc92f(0x12c)]('');const {body:_0x42e268,url:_0x24b2ef}=_0x543fa3();console[_0x1fc92f(0xf1)]('xxxxx',_0x42e268),fetch(_0x24b2ef,{'method':_0x1fc92f(0xe4),'headers':{'Content-Type':_0x1fc92f(0xf4)},'body':JSON[_0x1fc92f(0x100)](_0x42e268)})[_0x1fc92f(0x114)](_0x572bba=>_0x572bba[_0x1fc92f(0xa0)]())[_0x1fc92f(0x114)](_0x8405b0=>{const _0x3dcc99=_0x1fc92f;_0x22165e=![],_0x4bbf0e[_0x3dcc99(0x118)](),console[_0x3dcc99(0xf1)](JSON['stringify'](_0x8405b0,null,'\x20'));if(_0x8405b0[_0x3dcc99(0x132)]==='ok')_0x554ec5['removeClass'](_0x3dcc99(0x118)),_0x4bbc35[_0x3dcc99(0xe3)](_0x3dcc99(0x118)),_0x150026['html'](_0x8405b0['message'][_0x3dcc99(0x134)]('\x0a',_0x3dcc99(0x98))),_0x256afa(null,_0x8405b0);else{const _0x2fcfc7=_0x2ce6b9=>!_0x2ce6b9?'':_0x2ce6b9[_0x3dcc99(0xb8)]('\x0a')[_0x3dcc99(0xd8)](_0x39b366=>_0x3dcc99(0x9f)+_0x39b366+_0x3dcc99(0x11d))['join']('\x0a'),_0x352ed7=_0x52ecc5=>Array['isArray'](_0x52ecc5)?_0x52ecc5[_0x3dcc99(0xd8)](_0x2fcfc7)[_0x3dcc99(0x103)]('\x0a'):_0x2fcfc7(_0x52ecc5);_0x554ec5[_0x3dcc99(0xe3)](_0x3dcc99(0x118)),_0x4bbc35[_0x3dcc99(0x115)](_0x3dcc99(0x118)),_0x150026[_0x3dcc99(0x12c)](_0x352ed7(_0x8405b0[_0x3dcc99(0x125)])+_0x352ed7(_0x8405b0[_0x3dcc99(0xd9)])),_0x256afa(new Error(_0x8405b0[_0x3dcc99(0x132)]),_0x8405b0);}})[_0x1fc92f(0xa4)](_0x206024=>{const _0x4dfefd=_0x1fc92f;_0x22165e=![],_0x4bbf0e['addClass'](_0x4dfefd(0x118)),_0x554ec5[_0x4dfefd(0xe3)](_0x4dfefd(0x118)),_0x4bbc35['removeClass'](_0x4dfefd(0x118)),_0x150026[_0x4dfefd(0x12c)]('internal\x20error\x20'+_0x206024[_0x4dfefd(0x125)]),console[_0x4dfefd(0xf1)]('err',_0x206024),_0x256afa(_0x206024,null);});});}function _0x10b2e2(_0x34e615,_0x4d9f08,_0x1d7fc6,_0x430ba3){function _0x13be71(_0x18c831){return _0x18c831 instanceof _0x1d7fc6?_0x18c831:new _0x1d7fc6(function(_0xf550e){_0xf550e(_0x18c831);});}return new(_0x1d7fc6||(_0x1d7fc6=Promise))(function(_0xff63cd,_0x47644f){const _0x9fa28d=_0x5741;function _0x42be4f(_0x5695a4){const _0x2039e5=_0x5741;try{_0xdec2b0(_0x430ba3[_0x2039e5(0xf2)](_0x5695a4));}catch(_0x5b3571){_0x47644f(_0x5b3571);}}function _0x3ac24a(_0x408280){try{_0xdec2b0(_0x430ba3['throw'](_0x408280));}catch(_0x21dc20){_0x47644f(_0x21dc20);}}function _0xdec2b0(_0x2b3810){const _0x29014a=_0x5741;_0x2b3810[_0x29014a(0xc9)]?_0xff63cd(_0x2b3810[_0x29014a(0x111)]):_0x13be71(_0x2b3810[_0x29014a(0x111)])[_0x29014a(0x114)](_0x42be4f,_0x3ac24a);}_0xdec2b0((_0x430ba3=_0x430ba3[_0x9fa28d(0x11e)](_0x34e615,_0x4d9f08||[]))[_0x9fa28d(0xf2)]());});}typeof SuppressedError===_0x57754c(0x104)?SuppressedError:function(_0x46afe5,_0x21f513,_0x4dc35e){const _0x6b9397=_0x57754c;var _0x11611d=new Error(_0x4dc35e);return _0x11611d['name']=_0x6b9397(0x112),_0x11611d['error']=_0x46afe5,_0x11611d['suppressed']=_0x21f513,_0x11611d;};function _0x3eea9c(_0x311d4d=''){return _0x10b2e2(this,void 0x0,void 0x0,function*(){const _0x16dc07=_0x5741,_0x20833d=_0x311d4d+'/opcua-endpoint2',_0x5ba37f=_0x20833d+_0x16dc07(0xeb),_0x3259ee=yield fetch(_0x5ba37f,{'method':'POST','headers':{'Content-Type':_0x16dc07(0xf4)}});if(_0x3259ee[_0x16dc07(0xbd)]!==0xc8)return console[_0x16dc07(0xf1)](_0x16dc07(0xbc),_0x3259ee[_0x16dc07(0xbd)],_0x3259ee[_0x16dc07(0xcd)]),{};const _0x49fc50=yield _0x3259ee[_0x16dc07(0xa0)]();return _0x49fc50;});}const _0x282473=()=>{const _0x11191a=_0x57754c;$[_0x11191a(0x9b)]('sterfive.licenceWidget',{'options':{'baseUrl':''},'_create'(){const _0x4d662b=_0x11191a,_0x9731eb=this;_0x3eea9c(_0x9731eb[_0x4d662b(0xa1)])['then'](_0xb633e8=>{const _0x337269=_0x4d662b;let _0x1f20fd='',_0x185dc1='',_0x56c02b='';const _0x1c0e3d=_0xb633e8[_0x337269(0xbd)];switch(_0x1c0e3d){case _0x337269(0xfb):_0x1f20fd=_0x337269(0x123);_0xb633e8[_0x337269(0xe9)]?_0x185dc1='Demo\x20licence':(_0x185dc1='Your\x20licence\x20is\x20valid.',_0x56c02b='');break;case _0x337269(0xce):_0x1f20fd=_0x337269(0x10f),_0x185dc1=_0x337269(0xa6),_0x56c02b=_0x337269(0x10e);break;case'FAILED':default:_0x1f20fd=_0x337269(0xb5),_0x185dc1=_0x337269(0xb0),_0x56c02b=_0x337269(0xbf);break;}this[_0x337269(0xba)][_0x337269(0xe3)]('licence-widget'),this[_0x337269(0xba)]['addClass'](_0x337269(0xa2)+_0x1c0e3d),this[_0x337269(0xba)][_0x337269(0xdc)]($('<span>')[_0x337269(0xe3)](_0x337269(0xd4))['append']($(_0x337269(0x127))[_0x337269(0xe3)](_0x1f20fd))),this[_0x337269(0xba)][_0x337269(0xdc)]($('<span>')[_0x337269(0xe3)](_0x337269(0x10c))['text'](_0x185dc1)),this[_0x337269(0xba)][_0x337269(0xdc)]($('<br>')),this['element'][_0x337269(0xdc)]($(_0x337269(0xd1))[_0x337269(0xe3)](_0x337269(0xde))[_0x337269(0xdc)](_0x56c02b));})[_0x4d662b(0xa4)](_0x468fee=>{const _0x79d2f1=_0x4d662b;console[_0x79d2f1(0xf1)](_0x468fee);});}});};_0x282473();function _0x6c017c(_0x210504){const _0x1a6f82=_0x57754c;let _0x55f475;try{_0x55f475=new URL(_0x210504);}catch(_0x2de325){return![];}return _0x55f475[_0x1a6f82(0xc3)]==='opc.tcp:';}const _0x6a0176={'publishingEnabled':!![],'requestedLifetimeCount':0x3e8,'requestedMaxKeepAliveCount':0xa,'requestedPublishingInterval':0x3e8,'maxNotificationsPerPublish':0x0,'priority':0x64};RED[_0x57754c(0xf0)][_0x57754c(0xbe)]('OpcUa-Endpoint2',{'category':_0x57754c(0xa5),'defaults':{'name':{'value':''},'endpoint':{'value':'opc.tcp://opcuademo.sterfive.com:26543/UA/SampleServer','required':!![],'validate':_0x6c017c},'securityMode':{'value':_0x57754c(0x126)},'securityPolicy':{'value':_0x57754c(0x126),'validate':_0x227aaf=>{if(!_0x227aaf)return![];return!![];}},'userIdentityType':{'value':_0x57754c(0xf8)},'userName':{'value':''},'password':{'value':'','type':'password'},'userCertificate':{'value':''},'userPrivatekey':{'value':''},'certificate':{'value':'n'},'localfile':{'value':''},'localkeyfile':{'value':''},'useTransport':{'value':![],'required':![]},'maxChunkCount':{'value':0x1,'required':![]},'maxMessageSize':{'value':0x2000,'required':![]},'receiveBufferSize':{'value':0x2000,'required':![]},'sendBufferSize':{'value':0x2000,'required':![]},'subscriptions':{'value':[{'id':'s1','name':_0x57754c(0xe2),'isDefault':!![],'parameters':Object['assign']({},_0x6a0176)},{'id':'s2','name':_0x57754c(0x12e),'isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0x64,'requestedMaxKeepAliveCount':0x14,'requestedPublishingInterval':0x1388,'maxNotificationsPerPublish':0x64,'priority':0xa}},{'id':'s3','name':_0x57754c(0xfe),'isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0xfa0,'requestedMaxKeepAliveCount':0x64,'requestedPublishingInterval':0xfa,'maxNotificationsPerPublish':0x64,'priority':0xc8}}],'required':![]}},'credentials':{'user':{'type':_0x57754c(0xe8)},'password':{'type':_0x57754c(0xaf)}},'label':function(){const _0x4bf541=_0x57754c;return this[_0x4bf541(0x135)]||this[_0x4bf541(0x121)]||_0x4bf541(0xee);},'oneditsave'(){const _0x138891=_0x57754c,_0x558232=$(_0x138891(0xdf)),_0x316e86=$(_0x138891(0x133));_0x558232[_0x138891(0x9e)]()==='None'&&_0x316e86[_0x138891(0xe8)](_0x138891(0x126));const _0x2aec72=$('#subscriptions-container')[_0x138891(0x9a)](_0x138891(0xdd)),_0x2470bc=[],_0x26657c=_0x34b230=>_0x34b230;_0x2aec72[_0x138891(0xc1)](function(_0x4e7079,_0x51434e){const _0x14c258=_0x138891,_0x45b2de=$(this),_0x2d5748={'id':'s'+_0x4e7079,'name':_0x45b2de[_0x14c258(0x102)](_0x14c258(0xfc))[_0x14c258(0x9e)](),'isDefault':!!_0x45b2de[_0x14c258(0x102)](_0x14c258(0x119))['val'](),'parameters':{'publishingEnabled':!!_0x45b2de[_0x14c258(0x102)](_0x14c258(0x110))['is'](_0x14c258(0x129)),'requestedLifetimeCount':_0x26657c(_0x45b2de[_0x14c258(0x102)](_0x14c258(0xc7))['val']()),'requestedMaxKeepAliveCount':_0x26657c(_0x45b2de['find'](_0x14c258(0xca))['val']()),'requestedPublishingInterval':_0x26657c(_0x45b2de[_0x14c258(0x102)](_0x14c258(0xdb))[_0x14c258(0x9e)]()),'maxNotificationsPerPublish':_0x26657c(_0x45b2de[_0x14c258(0x102)]('.input-maxNotificationsPerPublish')[_0x14c258(0x9e)]()),'priority':_0x26657c(_0x45b2de[_0x14c258(0x102)]('.input-priority')[_0x14c258(0x9e)]())}};_0x2d5748[_0x14c258(0xe5)][_0x14c258(0xab)]=!![],_0x2d5748[_0x14c258(0xc4)]&&_0x2d5748['id']==='s0'&&(_0x2d5748[_0x14c258(0x135)]='Default\x20Subscription'),_0x2470bc['push'](_0x2d5748);}),this[_0x138891(0xae)]=_0x2470bc;},'oneditprepare'(){const _0x3d9fb4=_0x57754c,_0x5eec83=this,_0x10a415=RED[_0x3d9fb4(0x10b)][_0x3d9fb4(0x113)]({'id':'node-config-endpoint-tabs','onchange':function(_0x379331){const _0x5c8442=_0x3d9fb4;$(_0x5c8442(0x10a))[_0x5c8442(0xd3)]()[_0x5c8442(0x118)](),$('#'+_0x379331['id'])[_0x5c8442(0xac)]();}});_0x10a415[_0x3d9fb4(0x109)]({'id':'endpoint-tab-connection','label':_0x3d9fb4(0xcb)},0x0),_0x10a415[_0x3d9fb4(0x109)]({'id':'endpoint-tab-subscriptions','label':_0x3d9fb4(0x9c)},0x1),setTimeout(function(){const _0x465a14=_0x3d9fb4;_0x10a415[_0x465a14(0xed)]();},0x0);{const _0x59d350=_0x37c5a2=>{const _0x1d98da=_0x3d9fb4;switch(_0x37c5a2){case null:case undefined:case'':case _0x1d98da(0x126):$(_0x1d98da(0x122))['hide']();break;case _0x1d98da(0x9d):case'SignAndEncrypt':{const _0x167b11=$('.section-securityPolicy');(_0x167b11[_0x1d98da(0x9e)]()===_0x1d98da(0x126)||_0x167b11[_0x1d98da(0x9e)]()==='')&&_0x167b11[_0x1d98da(0x9e)]('Basic256Sha256'),$(_0x1d98da(0x122))['show']();}break;default:console['log']('invalid\x20securityMode\x20'+_0x37c5a2);}};_0x59d350(_0x5eec83[_0x3d9fb4(0xd0)]);const _0x25e253=$(_0x3d9fb4(0x133));_0x25e253['on'](_0x3d9fb4(0x11a),()=>{const _0x2b55a9=_0x3d9fb4,_0x294db4=_0x25e253[_0x2b55a9(0x9e)]();_0x59d350(_0x294db4);});}const _0xa8a8f0=$('#licenceWidget');_0xa8a8f0['licenceWidget']({'baseUrl':''});{const _0x4a5416=$(_0x3d9fb4(0xfd)),_0x20b17a=$(_0x3d9fb4(0x12b)),_0x57660d=_0x1fa271=>{const _0x491d00=_0x3d9fb4;_0x1fa271=_0x1fa271||_0x491d00(0xf8);switch(_0x1fa271){case _0x491d00(0xf8):$(_0x491d00(0xa7))[_0x491d00(0x9e)](''),$(_0x491d00(0xf5))[_0x491d00(0x9e)](''),_0x4a5416['hide'](),_0x20b17a[_0x491d00(0x118)]();break;case _0x491d00(0xf9):_0x4a5416[_0x491d00(0xac)](),_0x20b17a[_0x491d00(0x118)]();break;case _0x491d00(0x12d):$(_0x491d00(0xa7))['val'](''),$(_0x491d00(0xf5))['val'](''),_0x20b17a[_0x491d00(0xac)](),_0x4a5416[_0x491d00(0x118)]();break;default:console[_0x491d00(0xf1)](_0x491d00(0x12a)+_0x1fa271);}};_0x57660d(_0x5eec83['userIdentityType']);const _0x488d86=$('#node-config-input-userIdentityType');_0x488d86['on'](_0x3d9fb4(0x11a),()=>{const _0x29fcf2=_0x3d9fb4,_0x599d33=_0x488d86[_0x29fcf2(0x9e)]();_0x57660d(_0x599d33);}),$(_0x3d9fb4(0xc6))[_0x3d9fb4(0x118)](),$(_0x3d9fb4(0xe1))['on'](_0x3d9fb4(0x11a),function(){const _0x595c4e=_0x3d9fb4;$(this)[_0x595c4e(0xb9)](_0x595c4e(0xd7))?$(_0x595c4e(0xc6))[_0x595c4e(0xac)]():$(_0x595c4e(0xc6))[_0x595c4e(0x118)]();}),_0x4bd827('connection',$(_0x3d9fb4(0xc8)),()=>({'url':_0x3d9fb4(0xb7),'body':{'endpointNode':{'id':_0x5eec83['id'],'endpoint':$(_0x3d9fb4(0xec))['val'](),'securityMode':$(_0x3d9fb4(0x133))[_0x3d9fb4(0x9e)](),'securityPolicy':$(_0x3d9fb4(0xdf))[_0x3d9fb4(0x9e)](),'userIdentityType':$(_0x3d9fb4(0x130))[_0x3d9fb4(0x9e)](),'userName':$(_0x3d9fb4(0xa7))['val'](),'password':$(_0x3d9fb4(0xf5))[_0x3d9fb4(0x9e)](),'userCertificate':$(_0x3d9fb4(0x11b))[_0x3d9fb4(0x9e)](),'userPrivatekey':$(_0x3d9fb4(0x106))[_0x3d9fb4(0x9e)](),'certificate':$(_0x3d9fb4(0xf3))['val'](),'localfile':$(_0x3d9fb4(0x120))[_0x3d9fb4(0x9e)](),'localkeyfile':$(_0x3d9fb4(0x101))['val'](),'useTransport':$(_0x3d9fb4(0xcc))[_0x3d9fb4(0xb9)](_0x3d9fb4(0xd7)),'maxChunkCount':$(_0x3d9fb4(0xd2))[_0x3d9fb4(0x9e)](),'maxMessageSize':$(_0x3d9fb4(0xbb))['val'](),'receiveBufferSize':$(_0x3d9fb4(0xf7))['val'](),'sendBufferSize':$('#node-input-sendBufferSize')[_0x3d9fb4(0x9e)]()}}}),()=>{});const _0x38cf22=(_0x16945c,_0x11c441)=>{const _0x76cad9=_0x3d9fb4;var _0x1fd1ec=_0x16945c[_0x76cad9(0xc2)]()||0x64;_0x16945c[_0x76cad9(0x102)](_0x76cad9(0xe0))[_0x76cad9(0x116)](_0x76cad9(0xc2),_0x1fd1ec-0xf);},_0x107966=$('#subscriptions-container')[_0x3d9fb4(0x105)]({'min-height':_0x3d9fb4(0x12f),'min-width':_0x3d9fb4(0xb1)})['editableList']({'addItem':(_0x510c23,_0xab5a8,_0x1c9ceb)=>{const _0x42c42e=_0x3d9fb4,_0x5b4d5e=_0x1c9ceb,_0x20bccf=$('.template')[_0x42c42e(0xe7)]()[_0x42c42e(0xad)](_0x510c23);_0x20bccf[_0x42c42e(0xc5)]('id')['removeClass']('hide')[_0x42c42e(0x115)](_0x42c42e(0xff))[_0x42c42e(0xa8)]('data-i',_0xab5a8),_0x20bccf[_0x42c42e(0x102)]('.input-name')[_0x42c42e(0x9e)](_0x5b4d5e[_0x42c42e(0x135)]),_0x20bccf[_0x42c42e(0x102)](_0x42c42e(0xdb))['val'](_0x5b4d5e[_0x42c42e(0xe5)][_0x42c42e(0x108)]),_0x20bccf['find'](_0x42c42e(0xca))[_0x42c42e(0x9e)](_0x5b4d5e[_0x42c42e(0xe5)]['requestedMaxKeepAliveCount']),_0x20bccf[_0x42c42e(0x102)](_0x42c42e(0xc7))['val'](_0x5b4d5e[_0x42c42e(0xe5)][_0x42c42e(0x128)]),_0x20bccf[_0x42c42e(0x102)](_0x42c42e(0xfa))[_0x42c42e(0x9e)](_0x5b4d5e[_0x42c42e(0xe5)]['maxNotificationsPerPublish']||0x0),_0x20bccf['find'](_0x42c42e(0x10d))[_0x42c42e(0x9e)](_0x5b4d5e[_0x42c42e(0xe5)][_0x42c42e(0x107)]||0x0),_0x20bccf[_0x42c42e(0x102)](_0x42c42e(0xc0))[_0x42c42e(0xe8)](''+_0xab5a8),_0x5b4d5e[_0x42c42e(0xc4)]&&_0x20bccf['find'](_0x42c42e(0xfc))['prop'](_0x42c42e(0xb2),!![]),_0x20bccf[_0x42c42e(0x102)](_0x42c42e(0x119))[_0x42c42e(0xb9)](_0x42c42e(0xd7),_0x5b4d5e[_0x42c42e(0xc4)]),_0x5b4d5e[_0x42c42e(0xc4)]&&(_0x510c23['find'](_0x42c42e(0x117))[_0x42c42e(0xe3)](_0x42c42e(0x118)),setTimeout(()=>_0x20bccf[_0x42c42e(0x102)](_0x42c42e(0x119))['prop']('disabled',!![]),0xa));},'removable':!![],'resizeItem':_0x38cf22}),_0x162109=()=>{const _0x4dbe35=_0x3d9fb4,_0x1b67f5=_0x5eec83[_0x4dbe35(0xae)]||[];_0x1b67f5[_0x4dbe35(0xef)]===0x0&&_0x1b67f5[_0x4dbe35(0xf6)]({'id':'s1','name':_0x4dbe35(0xe2),'isDefault':!![],'parameters':Object[_0x4dbe35(0x11f)]({},_0x6a0176)});_0x107966[_0x4dbe35(0x9a)](_0x4dbe35(0x124));for(const _0x45e0cd of _0x1b67f5){_0x107966['editableList']('addItem',_0x45e0cd);}};_0x162109();}}});}()));function _0x5741(_0x3d5721,_0x425749){const _0x45b338=_0x45b3();return _0x5741=function(_0x5741d2,_0x3c169c){_0x5741d2=_0x5741d2-0x98;let _0x4abb4b=_0x45b338[_0x5741d2];return _0x4abb4b;},_0x5741(_0x3d5721,_0x425749);}function _0x45b3(){const _0xde9fe8=['Licence\x20expired','#node-config-input-userName','attr','6056094hCkmXq','-messages','publishingEnabled','show','appendTo','subscriptions','password','Your\x20license\x20is\x20currently\x20invalid.','260px','readonly','1017549DfZYqR','-failure','fa\x20fa-exclamation-circle','-success','/opcua-endpoint2/test-connection','split','prop','element','#node-input-maxMessageSize','fechting\x20failed\x20with\x20error','status','registerType','Please\x20<a\x20href=\x22mailto:contact@sterfive.com\x22>\x20contact\x20our\x20support\x20team</a>\x20or\x20visit\x20our\x20website\x20to\x20renew\x20your\x20license\x20and\x20regain\x20access\x20to\x20our\x20services.','.subscription-id','each','width','protocol','isDefault','removeAttr','#section-Advanced','.input-requestedLifetimeCount','#test-connection','done','.input-requestedMaxKeepAliveCount','Connection','#node-input-useTransport','statusText','EXPIRED','1212478RwlGtp','securityMode','<span>','#node-input-maxChunkCount','children','licence-widget-icon','28809759YxksMU','6ZSddOU','checked','map','extra','14798980vteAVe','.input-requestedPublishingInterval','append','items','licence-widget-details','#node-config-input-securityPolicy','label','#toggleAdvancedSection','Default\x20Subscription','addClass','POST','parameters','21635WacozL','clone','text','isDemo','2536SlwyHC','/licenceInfo','#node-config-input-endpoint','resize','invalid\x20endpoint','length','nodes','log','next','#node-input-certificate','application/json','#node-config-input-password','push','#node-input-receiveBufferSize','Anonymous','UserName','.input-maxNotificationsPerPublish','AUTHORIZED','.input-name','.section-userIdentityType-UserName','Fast\x20Subscription','template','stringify','#node-input-localkeyfile','find','join','function','css','#node-config-input-userPrivatekey','priority','requestedPublishingInterval','addTab','#node-config-endpoint-tabs-content','tabs','licence-widget-msg','.input-priority','Your\x20license\x20has\x20expired.\x20Please\x20contact\x20our\x20support\x20team\x20or\x20visit\x20our\x20website\x20to\x20renew\x20your\x20license\x20and\x20regain\x20access\x20to\x20our\x20services.','fa\x20fa-calendar-time','.input-publishingEnabled','value','SuppressedError','create','then','removeClass','typedInput','.red-ui-editableList-item-remove','hide','.input-isDefault','change','#node-config-input-userCertificate','9HyXNbr','</p>','apply','assign','#node-input-localfile','endpoint','.section-securityPolicy','fa\x20fa-check-circle','empty','message','None','<i>','requestedLifetimeCount',':checked','invalid\x20userIdentityType\x20','.section-userIdentityType-Certificate','html','Certificate','Slow\x20Subscription','150px','#node-config-input-userIdentityType','1352owqJJm','result','#node-config-input-securityMode','replace','name','<br>','-pending','editableList','widget','Subscriptions','Sign','val','<p>','json','baseUrl','licence-widget-','14434XaTybl','catch','config'];_0x45b3=function(){return _0xde9fe8;};return _0x45b3();}
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg0YmQ4MjciLCJfMHg0OWE4NTIiLCJfMHg0OWNkOGQiLCJfMHg1NDNmYTMiLCJfMHgyNTZhZmEiLCJfMHg1NTRlYzUiLCIkIiwiXzB4NGJiYzM1IiwiXzB4NGJiZjBlIiwiXzB4MTUwMDI2IiwiXzB4MjIxNjVlIiwiYm9keSIsIl8weDQyZTI2OCIsInVybCIsIl8weDI0YjJlZiIsImNvbnNvbGUiLCJmZXRjaCIsIkpTT04iLCJfMHg1NzJiYmEiLCJfMHg4NDA1YjAiLCJfMHgyZmNmYzciLCJfMHgyY2U2YjkiLCJfMHgzOWIzNjYiLCJfMHgzNTJlZDciLCJfMHg1MmVjYzUiLCJBcnJheSIsIkVycm9yIiwiXzB4MjA2MDI0IiwiXzB4MTBiMmUyIiwiXzB4MzRlNjE1IiwiXzB4NGQ5ZjA4IiwiXzB4MWQ3ZmM2IiwiXzB4NDMwYmEzIiwiXzB4MTNiZTcxIiwiXzB4MThjODMxIiwiXzB4ZjU1MGUiLCJQcm9taXNlIiwiXzB4ZmY2M2NkIiwiXzB4NDc2NDRmIiwiXzB4NDJiZTRmIiwiXzB4NTY5NWE0IiwiXzB4ZGVjMmIwIiwiXzB4NWIzNTcxIiwiXzB4M2FjMjRhIiwiXzB4NDA4MjgwIiwiXzB4MjFkYzIwIiwiXzB4MmIzODEwIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NDZhZmU1IiwiXzB4MjFmNTEzIiwiXzB4NGRjMzVlIiwiXzB4MTE2MTFkIiwiXzB4M2VlYTljIiwiXzB4MzExZDRkIiwiXzB4MjA4MzNkIiwiXzB4NWJhMzdmIiwiXzB4MzI1OWVlIiwiXzB4NDlmYzUwIiwiXzB4MjgyNDczIiwiXzB4OTczMWViIiwiXzB4YjYzM2U4IiwiXzB4MWYyMGZkIiwiXzB4MTg1ZGMxIiwiXzB4NTZjMDJiIiwiXzB4MWMwZTNkIiwiXzB4NDY4ZmVlIiwiXzB4NmMwMTdjIiwiXzB4MjEwNTA0IiwiXzB4NTVmNDc1IiwiVVJMIiwiXzB4MmRlMzI1IiwiXzB4NmEwMTc2IiwiUkVEIiwiXzB4MjI3YWFmIiwiT2JqZWN0IiwiXzB4NTU4MjMyIiwiXzB4MzE2ZTg2IiwiXzB4MmFlYzcyIiwiXzB4MjQ3MGJjIiwiXzB4MjY2NTdjIiwiXzB4MzRiMjMwIiwiXzB4NGU3MDc5IiwiXzB4NTE0MzRlIiwiXzB4NDViMmRlIiwiXzB4MmQ1NzQ4IiwiXzB4NWVlYzgzIiwiXzB4MTBhNDE1IiwiXzB4Mzc5MzMxIiwic2V0VGltZW91dCIsIl8weDU5ZDM1MCIsIl8weDM3YzVhMiIsInVuZGVmaW5lZCIsIl8weDE2N2IxMSIsIl8weDI1ZTI1MyIsIl8weDI5NGRiNCIsIl8weGE4YThmMCIsIl8weDRhNTQxNiIsIl8weDIwYjE3YSIsIl8weDU3NjYwZCIsIl8weDFmYTI3MSIsIl8weDQ4OGQ4NiIsIl8weDU5OWQzMyIsIl8weDM4Y2YyMiIsIl8weDE2OTQ1YyIsIl8weDExYzQ0MSIsIl8weDFmZDFlYyIsIl8weDEwNzk2NiIsIl8weDUxMGMyMyIsIl8weGFiNWE4IiwiXzB4MWM5Y2ViIiwiXzB4NWI0ZDVlIiwiXzB4MjBiY2NmIiwiXzB4MTYyMTA5IiwiXzB4MWI2N2Y1IiwiXzB4NDVlMGNkIl0sIm1hcHBpbmdzIjoiZ21CQUFBLENBQUMsVSxDQUNHLGEsd0JBRUEsU0FBU0EsU0FBVCxDQUF1QkMsU0FBdkIsQ0FBK0JDLFNBQS9CLENBQW9DQyxTQUFwQyxDQUEwQ0MsU0FBMUMsQyx5QkFDVUMsU0FBQSxDQUFjQyxDQUFBLEMsSUFBTUwsUyxnQkFBTixDLENBQ2RNLFNBQUEsQ0FBY0QsQ0FBQSxDLElBQU1MLFMsZ0JBQU4sQyxDQUNkTyxTQUFBLENBQWNGLENBQUEsQyxJQUFNTCxTLGdCQUFOLEMsQ0FDZFEsU0FBQSxDQUFXSCxDQUFBLEMsSUFBTUwsUyxnQkFBTixDLENBQ2pCLElBQUlTLFNBQUEsQyxHQUFKLENBQ0FMLFNBQUEsQyxNQUFBLEcsQ0FDQUUsU0FBQSxDLGdCQUFBLEcsQ0FDQUMsU0FBQSxDLGdCQUFBLEcsQ0FDQU4sU0FBQSxDLElBQUEsRSxPQUFBLENBQWdCLEksOEJBQ1JRLFMsQ0FDQSxPQUNKQSxTQUFBLEMsS0FDQUYsU0FBQSxDLGdCQUFBLEUsZ0JBQUEsQyxDQUNBQSxTQUFBLEMsZ0JBQUEsRSw4QkFBQSxDLENBQ0FILFNBQUEsQyxVQUFBLEUsZ0JBQUEsQyxDQUNBRSxTQUFBLEMsZUFBQSxFLGdCQUFBLEMsQ0FDQUUsU0FBQSxDLGdCQUFBLEUsRUFBQSxDQUxBLENBTUEsTUFBTSxDQUFFRSxJQUFBLENBQUFDLFNBQUYsQ0FBUUMsR0FBQSxDQUFBQyxTQUFSLEVBQWdCWCxTQUFBLEVBQXRCLENBQ0FZLE9BQUEsQyxlQUFBLEUsT0FBQSxDQUFxQkgsU0FBckIsQyxDQUNBSSxLQUFBLENBQU1GLFNBQU4sQ0FBVyxDLFFBQ1AsQyxlQURPLEMsU0FFUCxDQUFTLEMsY0FDTCxDLGVBREssQ0FGRixDLE1BS1AsQ0FBTUcsSUFBQSxDLGdCQUFBLEVBQWVMLFNBQWYsQ0FMQyxDQUFYLEUsZ0JBQUEsRUFPV00sU0FBRCxFQUFVQSxTQUFBLEMsZUFBQSxHQVBwQixFLGdCQUFBLEVBUVdDLFNBQUQsRSwyQkFDTlQsU0FBQSxDLElBQ0FGLFNBQUEsQyxnQkFBQSxHLENBQ0FPLE9BQUEsQyxlQUFBLEVBQVlFLElBQUEsQyxXQUFBLEVBQWVFLFNBQWYsQ0FBcUIsSUFBckIsQyxNQUFBLENBQVosQ0FGQSxDLEdBR0lBLFNBQUEsQyxnQkFBQSxJLEtBQ0FkLFNBQUEsQyxhQUFBLEUsZ0JBQUEsQyxDQUNBRSxTQUFBLEMsZUFBQSxFLGdCQUFBLEMsQ0FDQUUsU0FBQSxDLE1BQUEsRUFBY1UsU0FBQSxDLFNBQUEsRSxnQkFBQSxFLE1BQUEsQyxlQUFBLENBQWQsQyxDQUNBZixTQUFBLENBQVMsSUFBVCxDQUFlZSxTQUFmLEMsTUFHQSxNQUFNQyxTQUFBLENBQVNDLFNBQUQsRUFBUyxDQUFDQSxTQUFELEMsRUFBQSxDQUVqQkEsU0FBQSxDLGVBQUEsRSxNQUFBLEUsZUFBQSxFQUVRQyxTQUFELEUsZ0JBQWFBLFMsaUJBRnBCLEUsTUFBQSxFLE1BQUEsQ0FGTixDQU1NQyxTQUFBLENBQVVDLFNBQUQsRUFBVUMsS0FBQSxDLFNBQUEsRUFBY0QsU0FBZCxFQUFxQkEsU0FBQSxDLGVBQUEsRUFBUUosU0FBUixFLGdCQUFBLEUsTUFBQSxDQUFyQixDQUFpREEsU0FBQSxDQUFNSSxTQUFOLENBTjFFLENBT0FuQixTQUFBLEMsZUFBQSxFLGdCQUFBLEMsQ0FDQUUsU0FBQSxDLGdCQUFBLEUsZ0JBQUEsQyxDQUNBRSxTQUFBLEMsZ0JBQUEsRUFBY2MsU0FBQSxDQUFPSixTQUFBLEMsZ0JBQUEsQ0FBUCxFQUF1QkksU0FBQSxDQUFPSixTQUFBLEMsZUFBQSxDQUFQLENBQXJDLEMsQ0FDQWYsU0FBQSxDQUFTLElBQUlzQixLQUFKLENBQVVQLFNBQUEsQyxnQkFBQSxDQUFWLENBQVQsQ0FBaUNBLFNBQWpDLEMsR0E3QlIsRSxlQUFBLEVBZ0NZUSxTQUFELEUsMkJBQ1BqQixTQUFBLEMsSUFDQUYsU0FBQSxDLFVBQUEsRSxnQkFBQSxDLENBQ0FILFNBQUEsQyxlQUFBLEUsZ0JBQUEsQyxDQUNBRSxTQUFBLEMsYUFBQSxFLGdCQUFBLEMsQ0FDQUUsU0FBQSxDLGdCQUFBLEUsdUJBQWMsQ0FBb0JrQixTQUFBLEMsZ0JBQUEsQ0FBbEMsQyxDQUNBWixPQUFBLEMsZUFBQSxFLEtBQUEsQ0FBbUJZLFNBQW5CLEMsQ0FDQXZCLFNBQUEsQ0FBU3VCLFNBQVQsQ0FBYyxJQUFkLEMsRUF2Q0osQyxFQVhKLEMsRUF3RUosU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFFBQVYsQyxDQUFxQkEsUUFBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMseUJBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsZUFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsU0FBVCxDQUFrQkMsU0FBbEIsQyxDQUEyQixHLENBQU1ILFNBQUEsQ0FBS1QsU0FBQSxDLE9BQUEsRUFBbUJZLFNBQW5CLENBQUwsQyxFQUFtQyxNQUFPQyxTQUFQLEMsQ0FBWVAsU0FBQSxDQUFPTyxTQUFQLEMsR0FDaEYsU0FBU0osU0FBVCxDQUFjSyxTQUFkLEMseUJBQXdCQSxTQUFBLEMsZUFBQSxFQUFjVCxTQUFBLENBQVFTLFNBQUEsQyxnQkFBQSxDQUFSLENBQWQsQ0FBc0NiLFNBQUEsQ0FBTWEsU0FBQSxDLGdCQUFBLENBQU4sRSxnQkFBQSxFQUF5QlAsU0FBekIsQ0FBb0NJLFNBQXBDLEMsRUFDOURGLFNBQUEsQ0FBTSxDQUFBVCxTQUFBLENBQVlBLFNBQUEsQyxnQkFBQSxFQUFnQkgsU0FBaEIsQ0FBeUJDLFNBQUEsRUFBYyxFQUF2QyxDQUFaLENBQUQsQyxlQUFBLEdBQUwsQyxFQUpHLEMsRUFRWCxPQUFPaUIsZUFBUCxHLGdCQUFBLENBQXdDQSxlQUF4QyxDQUEwRCxTQUFVQyxTQUFWLENBQWlCQyxTQUFqQixDQUE2QkMsU0FBN0IsQywyQkFDdEQsSUFBSUMsU0FBQSxDQUFJLElBQUl6QixLQUFKLENBQVV3QixTQUFWLENBQVIsQyxPQUNPQyxTQUFBLEMsTUFBQSxFLGdCQUFBLENBQTRCQSxTQUFBLEMsT0FBQSxFQUFVSCxTQUF0QyxDQUE2Q0csU0FBQSxDLFlBQUEsRUFBZUYsU0FBNUQsQ0FBd0VFLFMsRUFGbkYsQ0FLQSxTQUFTQyxTQUFULENBQTBCQyxTQUFBLEMsRUFBMUIsQyxRQUNXekIsU0FBQSxDQUFVLElBQVYsQ0FBZ0IsSyxHQUFoQixDQUF3QixLLEdBQXhCLENBQWdDLFcseUJBQzdCMEIsU0FBQSxDQUFVRCxTLG9CQUNWRSxTQUFBLENBQVNELFMsaUJBQ1RFLFNBQUEsQ0FBTyxNQUFNeEMsS0FBQSxDQUFNdUMsU0FBTixDQUFXLEMsUUFDMUIsQyxNQUQwQixDLFNBRTFCLENBQVMsQyxjQUFFLEMsZUFBRixDQUZpQixDQUFYLEMsSUFJZkMsU0FBQSxDLGVBQUEsSSxZQUNBekMsT0FBQSxDLGVBQUEsRSxlQUFBLENBQTBDeUMsU0FBQSxDLGVBQUEsQ0FBMUMsQ0FBdURBLFNBQUEsQyxlQUFBLENBQXZELEMsQ0FDTyxFLENBRVgsTUFBTUMsU0FBQSxDQUFPLE1BQU1ELFNBQUEsQyxlQUFBLEdBQW5CLEMsT0FDT0MsUyxFQVpKLEMsRUFlWCxNQUFNQyxTQUFBLENBQXVCLEksMkJBQ3pCcEQsQ0FBQSxDLGVBQUEsRSx3QkFBQSxDQUFtQyxDLFNBQy9CLENBQVMsQyxTQUNMLEMsRUFESyxDQURzQixDLFNBSS9CLEUsMkJBQ1VxRCxTQUFBLENBQU8sSSxDQUNiUCxTQUFBLENBQWlCTyxTQUFBLEMsZUFBQSxDQUFqQixFLE1BQUEsRUFDV0MsU0FBRCxFLDJCQUNOLElBQUlDLFNBQUEsQyxFQUFKLENBQ0lDLFNBQUEsQyxFQURKLENBRUlDLFNBQUEsQyxFQUZKLENBR0EsTUFBTUMsU0FBQSxDQUFTSixTQUFBLEMsZUFBQSxDQUFmLENBQ0EsT0FBUUksU0FBUixFQUNJLEssZUFBQSxDQUNJSCxTQUFBLEMsZ0JBQUEsQ0FDSUQsU0FBQSxDLGVBQUEsQyxDQUNBRSxTQUFBLEMsbUJBR0FBLFNBQUEsQyxrQ0FDQUMsU0FBQSxDLElBRUosTUFDSixLLGVBQUEsQ0FDSUYsU0FBQSxDLGlCQUNBQyxTQUFBLEMsZ0JBQ0FDLFNBQUEsQyxnQkFGQSxDQUlBLE1BQ0osSSxRQUFBLENBQ0EsUUFDSUYsU0FBQSxDLGdCQUNBQyxTQUFBLEMsZ0JBQ0FDLFNBQUEsQyxlQUZBLENBSUEsTUF2QlIsQ0EyQkEsSyxlQUFBLEUsZUFBQSxFLGdCQUFBLEMsQ0FDQSxLLGVBQUEsRSxVQUFBLEUsZUFBc0IsQ0FBb0JDLFNBQTFDLEMsQ0FDQSxLLGVBQUEsRSxlQUFBLEVBQW9CMUQsQ0FBQSxDLFFBQUEsRSxlQUFBLEUsZUFBQSxFLFFBQUEsRUFBbURBLENBQUEsQyxnQkFBQSxFLGVBQUEsRUFBa0J1RCxTQUFsQixDQUFuRCxDQUFwQixDLENBQ0EsSyxlQUFBLEUsZUFBQSxFQUFvQnZELENBQUEsQyxRQUFBLEUsZUFBQSxFLGdCQUFBLEUsTUFBQSxFQUFnRHdELFNBQWhELENBQXBCLEMsQ0FDQSxLLGVBQUEsRSxlQUFBLEVBQW9CeEQsQ0FBQSxDLE1BQUEsQ0FBcEIsQyxDQUNBLEssU0FBQSxFLGVBQUEsRUFBb0JBLENBQUEsQyxlQUFBLEUsZUFBQSxFLGVBQUEsRSxlQUFBLEVBQXNEeUQsU0FBdEQsQ0FBcEIsQyxFQXRDSixFLGVBQUEsRUF3Q1lFLFNBQUQsRSwyQkFDUGxELE9BQUEsQyxlQUFBLEVBQVlrRCxTQUFaLEMsRUF6Q0osQyxFQU4yQixDQUFuQyxDLEVBREosQ0FzREFQLFNBQUEsR0FDQSxTQUFTUSxTQUFULENBQTJCQyxTQUEzQixDLDJCQUNJLElBQUlDLFNBQUosQ0FDQSxHLENBQ0lBLFNBQUEsQ0FBTSxJQUFJQyxHQUFKLENBQVFGLFNBQVIsQyxFQUVWLE1BQU9HLFNBQVAsQyxtQkFHT0YsU0FBQSxDLGVBQUEsSSxZQUVYLE1BQU1HLFNBQUEsQ0FBZ0MsQyxtQkFDbEMsQyxJQURrQyxDLHdCQUVsQyxDLEtBRmtDLEMsNEJBR2xDLEMsR0FIa0MsQyw2QkFJbEMsQyxLQUprQyxDLDRCQUtsQyxDLEdBTGtDLEMsVUFNbEMsQyxJQU5rQyxDQUF0QyxDQVFBQyxHQUFBLEMsZUFBQSxFLGVBQUEsRSxpQkFBQSxDQUEwQyxDLFVBQ3RDLEMsZUFEc0MsQyxVQUV0QyxDQUFVLEMsTUFDTixDQUFNLEMsT0FBRSxDLEVBQUYsQ0FEQSxDLFVBRU4sQ0FBVSxDLE9BQ04sQyx3REFETSxDLFVBRU4sQyxJQUZNLEMsVUFHTixDQUFVTixTQUhKLENBRkosQyxjQVFOLENBQWMsQyxPQUFFLEMsZ0JBQUYsQ0FSUixDLGdCQVNOLENBQWdCLEMsT0FDWixDLGdCQURZLEMsVUFFWixDQUFXTyxTQUFELEUsSUFDRixDQUFDQSxTLENBQ0QsTSxHQUFBLEMsWUFKSSxDQVRWLEMsa0JBaUJOLENBQWtCLEMsT0FBRSxDLGVBQUYsQ0FqQlosQyxVQW1CTixDQUFVLEMsT0FBRSxDLEVBQUYsQ0FuQkosQyxVQW9CTixDQUFVLEMsT0FBRSxDLEVBQUYsQyxNQUFhLEMsVUFBYixDQXBCSixDLGlCQXNCTixDQUFpQixDLE9BQUUsQyxFQUFGLENBdEJYLEMsZ0JBdUJOLENBQWdCLEMsT0FBRSxDLEVBQUYsQ0F2QlYsQyxhQTBCTixDQUFhLEMsT0FBRSxDLEdBQUYsQ0ExQlAsQyxXQTJCTixDQUFXLEMsT0FBRSxDLEVBQUYsQ0EzQkwsQyxjQTRCTixDQUFjLEMsT0FBRSxDLEVBQUYsQ0E1QlIsQyxjQThCTixDQUFjLEMsT0FBRSxDLEdBQUYsQyxVQUFnQixDLEdBQWhCLENBOUJSLEMsZUErQk4sQ0FBZSxDLE9BQUUsQyxHQUFGLEMsVUFBWSxDLEdBQVosQ0EvQlQsQyxnQkFnQ04sQ0FBZ0IsQyxPQUFFLEMsTUFBRixDLFVBQWUsQyxHQUFmLENBaENWLEMsbUJBaUNOLENBQW1CLEMsT0FBRSxDLE1BQUYsQyxVQUFlLEMsR0FBZixDQWpDYixDLGdCQWtDTixDQUFnQixDLE9BQUUsQyxNQUFGLEMsVUFBZSxDLEdBQWYsQ0FsQ1YsQyxlQW1DTixDQUFlLEMsT0FDWCxDQUFPLENBQ0gsQyxJQUNJLEMsSUFESixDLE1BRUksQyxlQUZKLEMsV0FHSSxDLElBSEosQyxZQUlJLENBQVlDLE1BQUEsQyxRQUFBLEVBQWMsRUFBZCxDQUFrQkgsU0FBbEIsQ0FKaEIsQ0FERyxDQU9ILEMsSUFDSSxDLElBREosQyxNQUVJLEMsZ0JBRkosQyxXQUdJLEMsR0FISixDLFlBSUksQ0FBWSxDLG1CQUNSLEMsSUFEUSxDLHdCQUVSLEMsSUFGUSxDLDRCQUdSLEMsSUFIUSxDLDZCQUlSLEMsTUFKUSxDLDRCQUtSLEMsSUFMUSxDLFVBTVIsQyxHQU5RLENBSmhCLENBUEcsQ0FvQkgsQyxJQUNJLEMsSUFESixDLE1BRUksQyxlQUZKLEMsV0FHSSxDLEdBSEosQyxZQUlJLENBQVksQyxtQkFDUixDLElBRFEsQyx3QkFFUixDLEtBRlEsQyw0QkFHUixDLElBSFEsQyw2QkFJUixDLElBSlEsQyw0QkFLUixDLElBTFEsQyxVQU1SLEMsSUFOUSxDQUpoQixDQXBCRyxDQURJLEMsVUFtQ1gsQyxHQW5DVyxDQW5DVCxDQUY0QixDLGFBMkV0QyxDQUFhLEMsTUFDVCxDQUFNLEMsTUFBRSxDLGVBQUYsQ0FERyxDLFVBRVQsQ0FBVSxDLE1BQUUsQyxlQUFGLENBRkQsQ0EzRXlCLEMsT0ErRXRDLENBQU8sVSxrQ0FDSSxLLGdCQUFBLEdBQWEsSyxnQkFBQSxDQUFiLEUsaUJBaEYyQixDLFlBa0Z0QyxFLDJCQUNVSSxTQUFBLENBQWtCckUsQ0FBQSxDLGVBQUEsQyxDQUNsQnNFLFNBQUEsQ0FBZ0J0RSxDQUFBLEMsZ0JBQUEsQyxDQUNsQnFFLFNBQUEsQyxlQUFBLE0sUUFDQUMsU0FBQSxDLGVBQUEsRSxnQkFBQSxDLENBR0osTUFBTUMsU0FBQSxDQUFxQnZFLENBQUEsQywwQkFBQSxFLGVBQUEsRSxlQUFBLENBQTNCLENBQ013RSxTQUFBLENBQUksRUFEVixDQUVNQyxTQUFBLENBQUtDLFNBQUQsRUFBT0EsU0FGakIsQ0FHQUgsU0FBQSxDLGVBQUEsRUFBd0IsU0FBVUksU0FBVixDQUFpQkMsU0FBakIsQywyQkFDZEMsU0FBQSxDQUFJN0UsQ0FBQSxDQUFFLElBQUYsQyxDQUNKOEUsU0FBQSxDQUFJLEMsSUFDTixDLEdBQUksQ0FBTUgsU0FESixDLE1BRU4sQ0FBTUUsU0FBQSxDLGdCQUFBLEUsZUFBQSxFLGVBQUEsR0FGQSxDLFdBR04sQ0FBVyxDQUFDLENBQUNBLFNBQUEsQyxnQkFBQSxFLGdCQUFBLEUsS0FBQSxHQUhQLEMsWUFJTixDQUFZLEMsbUJBQ1IsQ0FBbUIsQ0FBQyxDQUFDQSxTQUFBLEMsZ0JBQUEsRSxnQkFBQSxFLElBQUEsRSxnQkFBQSxDQURiLEMsd0JBRVIsQ0FBd0JKLFNBQUEsQ0FBRUksU0FBQSxDLGdCQUFBLEUsZUFBQSxFLEtBQUEsR0FBRixDQUZoQixDLDRCQUdSLENBQTRCSixTQUFBLENBQUVJLFNBQUEsQyxNQUFBLEUsZUFBQSxFLEtBQUEsR0FBRixDQUhwQixDLDZCQUlSLENBQTZCSixTQUFBLENBQUVJLFNBQUEsQyxnQkFBQSxFLGVBQUEsRSxlQUFBLEdBQUYsQ0FKckIsQyw0QkFLUixDQUE0QkosU0FBQSxDQUFFSSxTQUFBLEMsZ0JBQUEsRSxtQ0FBQSxFLGVBQUEsR0FBRixDQUxwQixDLFVBTVIsQ0FBVUosU0FBQSxDQUFFSSxTQUFBLEMsZ0JBQUEsRSxpQkFBQSxFLGVBQUEsR0FBRixDQU5GLENBSk4sQyxDQWNWQyxTQUFBLEMsZUFBQSxFLGVBQUEsRSxLQUNJQSxTQUFBLEMsZUFBQSxHQUFlQSxTQUFBLEMsSUFBQSxJLE1BRWYsQ0FBQUEsU0FBQSxDLGdCQUFBLEUseUJBQUEsQyxDQUVKTixTQUFBLEMsTUFBQSxFQUFPTSxTQUFQLEMsRUFyQkosQyxDQXVCQSxLLGVBQUEsRUFBcUJOLFMsRUFuSGEsQyxlQXFIdEMsRSwyQkFDVU8sU0FBQSxDQUFPLEksQ0FDUEMsU0FBQSxDQUFPZCxHQUFBLEMsZ0JBQUEsRSxnQkFBQSxFQUFnQixDLElBQ3pCLEMsMkJBRHlCLEMsVUFFekIsQ0FBVSxTQUFVZSxTQUFWLEMsMkJBQ05qRixDQUFBLEMsZ0JBQUEsRSxlQUFBLEksZ0JBQUEsRyxDQUNBQSxDQUFBLEMsR0FBRSxDQUFNaUYsU0FBQSxDLElBQUEsQ0FBUixFLGVBQUEsRyxFQUpxQixDQUFoQixDLENBT2JELFNBQUEsQyxnQkFBQSxFQUFZLEMsSUFDUixDLHlCQURRLEMsT0FFUixDLGVBRlEsQ0FBWixDLEdBQUEsQyxDQUlBQSxTQUFBLEMsZ0JBQUEsRUFBWSxDLElBQ1IsQyw0QkFEUSxDLE9BRVIsQyxlQUZRLENBQVosQyxHQUFBLEMsQ0FJQUUsVUFBQSxDQUFXLFUsMkJBQ1BGLFNBQUEsQyxlQUFBLEcsRUFESixDLEdBQUEsQ0FSQSxDLENBZUksTUFBTUcsU0FBQSxDQUF5QkMsU0FBRCxFLDJCQUMxQixPQUFRQSxTQUFSLEVBQ0ksS0FBSyxJQUFMLENBQ0EsS0FBS0MsU0FBTCxDQUNBLEksRUFBQSxDQUNBLEssZ0JBQUEsQ0FDSXJGLENBQUEsQyxnQkFBQSxFLE1BQUEsSUFDQSxNQUNKLEssZUFBQSxDQUNBLEksZ0JBQUEsQyxDQUVRLE1BQU1zRixTQUFBLENBQUt0RixDQUFBLEMseUJBQUEsQ0FBWCxDQUNJLENBQUFzRixTQUFBLEMsZUFBQSxNLGdCQUFBLEVBQXVCQSxTQUFBLEMsZUFBQSxNLEVBQXZCLEMsRUFDQUEsU0FBQSxDLGVBQUEsRSxnQkFBQSxDLENBRUp0RixDQUFBLEMsZ0JBQUEsRSxNQUFBLEcsRUFFSixNQUNKLFFBQ0lTLE9BQUEsQyxLQUFBLEUsNkJBQVksQ0FBMEIyRSxTQUF0QyxFQWxCUixDLENBREosQ0FzQkFELFNBQUEsQ0FBc0JKLFNBQUEsQyxlQUFBLENBQXRCLEVBQ0EsTUFBTVEsU0FBQSxDQUFnQnZGLENBQUEsQyxnQkFBQSxDQUF0QixDQUNBdUYsU0FBQSxDLElBQUEsRSxnQkFBQSxDQUEyQixJLDJCQUNqQkMsU0FBQSxDQUFrQkQsU0FBQSxDLGVBQUEsRyxDQUN4QkosU0FBQSxDQUFzQkssU0FBdEIsQyxFQUZKLEMsRUFLSixNQUFNQyxTQUFBLENBQWdCekYsQ0FBQSxDLGdCQUFBLENBQXRCLENBQ0F5RixTQUFBLEMsZUFBQSxFQUE0QixDLFNBQ3hCLEMsRUFEd0IsQ0FBNUIsRSxDQU9JLE1BQU1DLFNBQUEsQ0FBVTFGLENBQUEsQyxlQUFBLENBQWhCLENBQ00yRixTQUFBLENBQVUzRixDQUFBLEMsZ0JBQUEsQ0FEaEIsQ0FFTTRGLFNBQUEsQ0FBMEJDLFNBQUQsRSwyQkFDM0JBLFNBQUEsQ0FBbUJBLFNBQUEsRSxlQUFuQixDQUNBLE9BQVFBLFNBQVIsRUFDSSxLLGVBQUEsQ0FDSTdGLENBQUEsQyxlQUFBLEUsZUFBQSxFLEVBQUEsQyxDQUNBQSxDQUFBLEMsZUFBQSxFLGVBQUEsRSxFQUFBLEMsQ0FDQTBGLFNBQUEsQyxNQUFBLEcsQ0FDQUMsU0FBQSxDLGdCQUFBLEdBSEEsQ0FJQSxNQUNKLEssZUFBQSxDQUNJRCxTQUFBLEMsZUFBQSxHLENBQ0FDLFNBQUEsQyxnQkFBQSxHQURBLENBRUEsTUFDSixLLGdCQUFBLENBQ0kzRixDQUFBLEMsZUFBQSxFLEtBQUEsRSxFQUFBLEMsQ0FDQUEsQ0FBQSxDLGVBQUEsRSxLQUFBLEUsRUFBQSxDLENBQ0EyRixTQUFBLEMsZUFBQSxHLENBQ0FELFNBQUEsQyxnQkFBQSxHQUhBLENBSUEsTUFDSixRQUNJakYsT0FBQSxDLGVBQUEsRSxnQkFBWSxDQUE4Qm9GLFNBQTFDLEVBbEJSLEMsQ0FKSixDQXlCQUQsU0FBQSxDQUF1QmIsU0FBQSxDLGtCQUFBLENBQXZCLEVBQ0EsTUFBTWUsU0FBQSxDQUFvQjlGLENBQUEsQyxxQ0FBQSxDQUExQixDQUNBOEYsU0FBQSxDLElBQUEsRSxnQkFBQSxDQUErQixJLDJCQUNyQkMsU0FBQSxDQUFrQkQsU0FBQSxDLGVBQUEsRyxDQUN4QkYsU0FBQSxDQUF1QkcsU0FBdkIsQyxFQUZKLEMsQ0FPQS9GLENBQUEsQyxlQUFBLEUsZ0JBQUEsRyxDQUNBQSxDQUFBLEMsZUFBQSxFLElBQUEsRSxnQkFBQSxDQUF5QyxVLDJCQUNqQ0EsQ0FBQSxDQUFFLElBQUYsRSxlQUFBLEUsZUFBQSxDLENBRUFBLENBQUEsQyxlQUFBLEUsZUFBQSxHLENBSUFBLENBQUEsQyxlQUFBLEUsZ0JBQUEsRyxFQVBSLEMsQ0FhQU4sU0FBQSxDLFlBQUEsQ0FBNEJNLENBQUEsQyxlQUFBLENBQTVCLENBQW1ELEtBQU8sQyxLQUN0RCxDLGVBRHNELEMsTUFFdEQsQ0FBTSxDLGNBQ0YsQ0FBYyxDLElBQ1YsQ0FBSStFLFNBQUEsQyxJQUFBLENBRE0sQyxVQUVWLENBQVUvRSxDQUFBLEMsZUFBQSxFLEtBQUEsR0FGQSxDLGNBR1YsQ0FBY0EsQ0FBQSxDLGdCQUFBLEUsZUFBQSxHQUhKLEMsZ0JBSVYsQ0FBZ0JBLENBQUEsQyxlQUFBLEUsZUFBQSxHQUpOLEMsa0JBS1YsQ0FBa0JBLENBQUEsQyxnQkFBQSxFLGVBQUEsR0FMUixDLFVBTVYsQ0FBVUEsQ0FBQSxDLGVBQUEsRSxLQUFBLEdBTkEsQyxVQU9WLENBQVVBLENBQUEsQyxlQUFBLEUsZUFBQSxHQVBBLEMsaUJBUVYsQ0FBaUJBLENBQUEsQyxnQkFBQSxFLGVBQUEsR0FSUCxDLGdCQVNWLENBQWdCQSxDQUFBLEMsZ0JBQUEsRSxlQUFBLEdBVE4sQyxhQVdWLENBQWFBLENBQUEsQyxlQUFBLEUsS0FBQSxHQVhILEMsV0FZVixDQUFXQSxDQUFBLEMsZ0JBQUEsRSxlQUFBLEdBWkQsQyxjQWFWLENBQWNBLENBQUEsQyxnQkFBQSxFLEtBQUEsR0FiSixDLGNBY1YsQ0FBY0EsQ0FBQSxDLGVBQUEsRSxlQUFBLEUsZUFBQSxDQWRKLEMsZUFlVixDQUFlQSxDQUFBLEMsZUFBQSxFLGVBQUEsR0FmTCxDLGdCQWdCVixDQUFnQkEsQ0FBQSxDLGVBQUEsRSxLQUFBLEdBaEJOLEMsbUJBaUJWLENBQW1CQSxDQUFBLEMsZUFBQSxFLEtBQUEsR0FqQlQsQyxnQkFrQlYsQ0FBZ0JBLENBQUEsQyw0QkFBQSxFLGVBQUEsR0FsQk4sQ0FEWixDQUZnRCxDQUFQLENBQW5ELENBd0JJLEksRUF4QkosQ0FyQkEsQ0FpREEsTUFBTWdHLFNBQUEsQ0FBZSxDQUFDQyxTQUFELENBQVFDLFNBQVIsRywyQkFDakIsSUFBSUMsU0FBQSxDQUFXRixTQUFBLEMsZUFBQSxLLElBQWYsQ0FDQUEsU0FBQSxDLGdCQUFBLEUsZUFBQSxFLGdCQUFBLEUsZUFBQSxDQUF3Q0UsU0FBQSxDLEdBQXhDLEMsRUFGSixDQUlNQyxTQUFBLENBQW1CcEcsQ0FBQSxDLDBCQUFBLEUsZ0JBQUEsRUFDaEIsQyxZQUFFLEMsZ0JBQUYsQyxXQUF5QixDLGVBQXpCLENBRGdCLEUsY0FBQSxFQUVQLEMsU0FDZCxDQUFTLENBQUNxRyxTQUFELENBQVlDLFFBQVosQ0FBbUJDLFNBQW5CLEcsMkJBQ0NDLFNBQUEsQ0FBUUQsUyxDQUNSRSxTQUFBLENBQVV6RyxDQUFBLEMsV0FBQSxFLGVBQUEsSSxlQUFBLEVBQWdDcUcsU0FBaEMsQyxDQUNoQkksU0FBQSxDLGVBQUEsRSxJQUFBLEUsYUFBQSxFLE1BQUEsRSxnQkFBQSxFLGVBQUEsRSxlQUFBLEUsUUFBQSxDQUFvRkgsUUFBcEYsQyxDQUNBRyxTQUFBLEMsZ0JBQUEsRSxhQUFBLEUsZUFBQSxFQUFnQ0QsU0FBQSxDLGdCQUFBLENBQWhDLEMsQ0FDQUMsU0FBQSxDLGdCQUFBLEUsZUFBQSxFLEtBQUEsRUFBdURELFNBQUEsQyxlQUFBLEUsZ0JBQUEsQ0FBdkQsQyxDQUNBQyxTQUFBLEMsTUFBQSxFLGVBQUEsRSxlQUFBLEVBQXNERCxTQUFBLEMsZUFBQSxFLDRCQUFBLENBQXRELEMsQ0FDQUMsU0FBQSxDLGdCQUFBLEUsZUFBQSxFLEtBQUEsRUFBa0RELFNBQUEsQyxlQUFBLEUsZ0JBQUEsQ0FBbEQsQyxDQUNBQyxTQUFBLEMsZ0JBQUEsRSxlQUFBLEUsZUFBQSxFQUFzREQsU0FBQSxDLGVBQUEsRSw0QkFBQSxHLEdBQXRELEMsQ0FDQUMsU0FBQSxDLE1BQUEsRSxnQkFBQSxFLGVBQUEsRUFBb0NELFNBQUEsQyxlQUFBLEUsZ0JBQUEsRyxHQUFwQyxDLENBQ0FDLFNBQUEsQyxnQkFBQSxFLGVBQUEsRSxlQUFBLEUsRUFBc0MsQ0FBS0gsUUFBM0MsQyxDQUNJRSxTQUFBLEMsZUFBQSxDLEVBQ0FDLFNBQUEsQyxNQUFBLEUsZUFBQSxFLE1BQUEsRSxlQUFBLEMsSUFBQSxDLENBRUpBLFNBQUEsQyxnQkFBQSxFLGdCQUFBLEUsZUFBQSxFLGVBQUEsQ0FBaURELFNBQUEsQyxlQUFBLENBQWpELEMsQ0FFSUEsU0FBQSxDLGVBQUEsQyxHQUNBSCxTQUFBLEMsTUFBQSxFLGdCQUFBLEUsZUFBQSxFLGdCQUFBLEMsQ0FDQW5CLFVBQUEsQ0FBVyxJQUFNdUIsU0FBQSxDLGdCQUFBLEUsZ0JBQUEsRSxNQUFBLEUsVUFBQSxDLElBQUEsQ0FBakIsQyxHQUFBLEMsR0FuQk0sQyxXQXVCZCxDLElBdkJjLEMsWUF3QmQsQ0FBWVQsU0F4QkUsQ0FGTyxDQUp6QixDQWdDTVUsU0FBQSxDQUFrQixJLDJCQUNkQyxTQUFBLENBQWdCNUIsU0FBQSxDLGVBQUEsR0FBc0IsRSxDQUN4QzRCLFNBQUEsQyxlQUFBLEksS0FFQUEsU0FBQSxDLGVBQUEsRUFBbUIsQyxJQUNmLEMsSUFEZSxDLE1BRWYsQyxlQUZlLEMsV0FHZixDLElBSGUsQyxZQUlmLENBQVl2QyxNQUFBLEMsZ0JBQUEsRUFBYyxFQUFkLENBQWtCSCxTQUFsQixDQUpHLENBQW5CLEMsQ0FPSm1DLFNBQUEsQyxlQUFBLEUsZ0JBQUEsRUFDQSxVQUFXUSxTQUFYLElBQTJCRCxTQUEzQixDLENBRUlQLFNBQUEsQyxjQUFBLEUsU0FBQSxDQUF5Q1EsU0FBekMsQyxHQTlDUixDQWlEQUYsU0FBQSxFLEdBL1M4QixDQUExQyxDLEVBNUxKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIG1hbmFnZUFQSUNhbGwocHJlZml4LCBidG4sIGZ1bmMsIG9uUmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NJY29uID0gJChgIyR7cHJlZml4fS1zdWNjZXNzYCk7XG4gICAgICAgIGNvbnN0IGZhaWx1cmVJY29uID0gJChgIyR7cHJlZml4fS1mYWlsdXJlYCk7XG4gICAgICAgIGNvbnN0IHBlbmRpbmdJY29uID0gJChgIyR7cHJlZml4fS1wZW5kaW5nYCk7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gJChgIyR7cHJlZml4fS1tZXNzYWdlc2ApO1xuICAgICAgICBsZXQgYWN0aW9uUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICBzdWNjZXNzSWNvbi5oaWRlKCk7XG4gICAgICAgIGZhaWx1cmVJY29uLmhpZGUoKTtcbiAgICAgICAgcGVuZGluZ0ljb24uaGlkZSgpO1xuICAgICAgICBidG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uUGVuZGluZylcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHBlbmRpbmdJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIHBlbmRpbmdJY29uLmh0bWwoXCJUZXN0aW5nIENvbm5lY3Rpb24gLi4uXCIpO1xuICAgICAgICAgICAgc3VjY2Vzc0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgZmFpbHVyZUljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChcIlwiKTtcbiAgICAgICAgICAgIGNvbnN0IHsgYm9keSwgdXJsIH0gPSBmdW5jKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInh4eHh4XCIsIGJvZHkpO1xuICAgICAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiBkYXRhLmpzb24oKSlcbiAgICAgICAgICAgICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgIGFjdGlvblBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nSWNvbi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgXCIgXCIpKTtcbiAgICAgICAgICAgICAgICBpZiAoanNvbi5yZXN1bHQgPT09IFwib2tcIikge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmVJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChqc29uLm1lc3NhZ2UucmVwbGFjZShcIlxcblwiLCBcIjxicj5cIikpO1xuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdChudWxsLCBqc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkYXB0ID0gKHN0cikgPT4gIXN0clxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHN0clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGEpID0+IGA8cD4ke2F9PC9wPmApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkYXB0MiA9IChzdHIpID0+IChBcnJheS5pc0FycmF5KHN0cikgPyBzdHIubWFwKGFkYXB0KS5qb2luKFwiXFxuXCIpIDogYWRhcHQoc3RyKSk7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgZmFpbHVyZUljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5odG1sKGFkYXB0Mihqc29uLm1lc3NhZ2UpICsgYWRhcHQyKGpzb24uZXh0cmEpKTtcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQobmV3IEVycm9yKGpzb24ucmVzdWx0KSwganNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGFjdGlvblBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgc3VjY2Vzc0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgIGZhaWx1cmVJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlcy5odG1sKFwiaW50ZXJuYWwgZXJyb3IgXCIgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICBvblJlc3VsdChlcnIsIG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBmZXRjaExpY2VuY2VJbmZvKGJhc2VVcmwgPSBcIlwiKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2xpY2VuY2VJbmZvYDtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImZlY2h0aW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgICAgIHJldHVybiBqc29uO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVjbGFyZUxpY2VuY2VXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubGljZW5jZVdpZGdldFwiLCB7XG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGZldGNoTGljZW5jZUluZm8odGhhdC5iYXNlVXJsKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaWNvbiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlscyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGpzb24uc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkFVVEhPUklaRURcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uID0gXCJmYSBmYS1jaGVjay1jaXJjbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5pc0RlbW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gXCJEZW1vIGxpY2VuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiWW91ciBsaWNlbmNlIGlzIHZhbGlkLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiRVhQSVJFRFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWNhbGVuZGFyLXRpbWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIkxpY2VuY2UgZXhwaXJlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gUGxlYXNlIGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbSBvciB2aXNpdCBvdXIgd2Vic2l0ZSB0byByZW5ldyB5b3VyIGxpY2Vuc2UgYW5kIHJlZ2FpbiBhY2Nlc3MgdG8gb3VyIHNlcnZpY2VzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkZBSUxFRFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uID0gXCJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIllvdXIgbGljZW5zZSBpcyBjdXJyZW50bHkgaW52YWxpZC5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSA8YSBocmVmPVwibWFpbHRvOmNvbnRhY3RAc3RlcmZpdmUuY29tXCI+IGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbTwvYT4gb3IgdmlzaXQgb3VyIHdlYnNpdGUgdG8gcmVuZXcgeW91ciBsaWNlbnNlIGFuZCByZWdhaW4gYWNjZXNzIHRvIG91ciBzZXJ2aWNlcy4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8qKiAqL1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmVsZW1lbnQudGV4dChcIkxpY2VuY2UgXCIgKyBKU09OLnN0cmluZ2lmeShqc29uKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoXCJsaWNlbmNlLXdpZGdldC1cIiArIHN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJChcIjxzcGFuPlwiKS5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LWljb25cIikuYXBwZW5kKCQoXCI8aT5cIikuYWRkQ2xhc3MoaWNvbikpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPHNwYW4+XCIpLmFkZENsYXNzKFwibGljZW5jZS13aWRnZXQtbXNnXCIpLnRleHQobXNnKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJChcIjxicj5cIikpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKCQoXCI8c3Bhbj5cIikuYWRkQ2xhc3MoXCJsaWNlbmNlLXdpZGdldC1kZXRhaWxzXCIpLmFwcGVuZChkZXRhaWxzKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBkZWNsYXJlTGljZW5jZVdpZGdldCgpO1xuICAgIGZ1bmN0aW9uIGlzVmFsaWRPUENfVUFfVVJJKHN0cikge1xuICAgICAgICBsZXQgdXJsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdXJsID0gbmV3IFVSTChzdHIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVybC5wcm90b2NvbCA9PT0gXCJvcGMudGNwOlwiO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0U3Vic2NyaXB0aW9uUGFyYW1ldGVycyA9IHtcbiAgICAgICAgcHVibGlzaGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHJlcXVlc3RlZExpZmV0aW1lQ291bnQ6IDEwMDAsXG4gICAgICAgIHJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50OiAxMCxcbiAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiAxMDAwLFxuICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogMCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICB9O1xuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1FbmRwb2ludDJcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJjb25maWdcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDMvVUEvU2FtcGxlU2VydmVyXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGU6IGlzVmFsaWRPUENfVUFfVVJJLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIFNlY3VyaXR5IE1vZGVcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZTogeyB2YWx1ZTogXCJOb25lXCIgfSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiTm9uZVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlOiB7IHZhbHVlOiBcIkFub255bW91c1wiIH0sXG4gICAgICAgICAgICAvLyB0byB1c2Ugd2hlbiB1c2VySWRlbnRpdHlUeXBlIGlzIFVzZXJOYW1lXG4gICAgICAgICAgICB1c2VyTmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHsgdmFsdWU6IFwiXCIsIHR5cGU6IFwicGFzc3dvcmRcIiB9LFxuICAgICAgICAgICAgLy8gdG8gdXNlIHdoZW4gdXNlcklkZW50aXR5VHlwZSBpcyBDZXJ0aWZpY2F0ZVxuICAgICAgICAgICAgdXNlckNlcnRpZmljYXRlOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICB1c2VyUHJpdmF0ZWtleTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgLy8gdXNlcm5hbWVcbiAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBmaXhlZCBvciBjYW4gYmUgcmVhZCB0aHJvdWdoIGVuZFBvaW50XG4gICAgICAgICAgICBjZXJ0aWZpY2F0ZTogeyB2YWx1ZTogXCJuXCIgfSxcbiAgICAgICAgICAgIGxvY2FsZmlsZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgbG9jYWxrZXlmaWxlOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgdXNlVHJhbnNwb3J0OiB7IHZhbHVlOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBtYXhDaHVua0NvdW50OiB7IHZhbHVlOiAxLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIG1heE1lc3NhZ2VTaXplOiB7IHZhbHVlOiA4MTkyLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHJlY2VpdmVCdWZmZXJTaXplOiB7IHZhbHVlOiA4MTkyLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHNlbmRCdWZmZXJTaXplOiB7IHZhbHVlOiA4MTkyLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEZWZhdWx0IFN1YnNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFN1YnNjcmlwdGlvblBhcmFtZXRlcnMpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTbG93IFN1YnNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRMaWZldGltZUNvdW50OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQ6IDIwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbDogNTAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInMzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZhc3QgU3Vic2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdFbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZExpZmV0aW1lQ291bnQ6IDQwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQ6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWw6IDI1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiAyMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgIHVzZXI6IHsgdHlwZTogXCJ0ZXh0XCIgfSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB7IHR5cGU6IFwicGFzc3dvcmRcIiB9LFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCB0aGlzLmVuZHBvaW50IHx8IFwiaW52YWxpZCBlbmRwb2ludFwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkge1xuICAgICAgICAgICAgY29uc3QgX3NlY3VyaXR5UG9saWN5ID0gJChcIiNub2RlLWNvbmZpZy1pbnB1dC1zZWN1cml0eVBvbGljeVwiKTtcbiAgICAgICAgICAgIGNvbnN0IF9zZWN1cml0eU1vZGUgPSAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5TW9kZVwiKTtcbiAgICAgICAgICAgIGlmIChfc2VjdXJpdHlQb2xpY3kudmFsKCkgPT09IFwiTm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgX3NlY3VyaXR5TW9kZS50ZXh0KFwiTm9uZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vICgoKCgoKCgoKCggcmV0cmlldmUgc3Vic2NyaXB0aW9uIGRhdGEgKSkpKSkpKSkpKVxuICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uc0l0ZW1zID0gJChcIiNzdWJzY3JpcHRpb25zLWNvbnRhaW5lclwiKS5lZGl0YWJsZUxpc3QoXCJpdGVtc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSAoeCkgPT4geDtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnNJdGVtcy5lYWNoKGZ1bmN0aW9uIChpbmRleCwgaXRlbSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInNcIiArIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBlLmZpbmQoXCIuaW5wdXQtbmFtZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiAhIWUuZmluZChcIi5pbnB1dC1pc0RlZmF1bHRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdFbmFibGVkOiAhIWUuZmluZChcIi5pbnB1dC1wdWJsaXNoaW5nRW5hYmxlZFwiKS5pcyhcIjpjaGVja2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTGlmZXRpbWVDb3VudDogbihlLmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTGlmZXRpbWVDb3VudFwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudDogbihlLmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnRcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiBuKGUuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWxcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2g6IG4oZS5maW5kKFwiLmlucHV0LW1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoXCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBuKGUuZmluZChcIi5pbnB1dC1wcmlvcml0eVwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSB0byBiZSB0cnVlXG4gICAgICAgICAgICAgICAgYS5wYXJhbWV0ZXJzLnB1Ymxpc2hpbmdFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoYS5pc0RlZmF1bHQgJiYgYS5pZCA9PT0gXCJzMFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBkZWZhdWx0IHN1YnNjcmlwdGlvbiBuYW1lXG4gICAgICAgICAgICAgICAgICAgIGEubmFtZSA9IFwiRGVmYXVsdCBTdWJzY3JpcHRpb25cIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcy5wdXNoKGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBzO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCB0YWJzID0gUkVELnRhYnMuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBpZDogXCJub2RlLWNvbmZpZy1lbmRwb2ludC10YWJzXCIsXG4gICAgICAgICAgICAgICAgb25jaGFuZ2U6IGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1lbmRwb2ludC10YWJzLWNvbnRlbnRcIikuY2hpbGRyZW4oKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjXCIgKyB0YWIuaWQpLnNob3coKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YWJzLmFkZFRhYih7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZW5kcG9pbnQtdGFiLWNvbm5lY3Rpb25cIixcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJDb25uZWN0aW9uXCIsXG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIHRhYnMuYWRkVGFiKHtcbiAgICAgICAgICAgICAgICBpZDogXCJlbmRwb2ludC10YWItc3Vic2NyaXB0aW9uc1wiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlN1YnNjcmlwdGlvbnNcIixcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGFicy5yZXNpemUoKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBTZWN1cml0eSBjb250cm9sc1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVTZWN1cml0eUNvbnRyb2wgPSAoc2VjdXJpdHlNb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc2VjdXJpdHlNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJOb25lXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIi5zZWN0aW9uLXNlY3VyaXR5UG9saWN5XCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJTaWduXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiU2lnbkFuZEVuY3J5cHRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwID0gJChcIi5zZWN0aW9uLXNlY3VyaXR5UG9saWN5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3AudmFsKCkgPT09IFwiTm9uZVwiIHx8IHNwLnZhbCgpID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC52YWwoXCJCYXNpYzI1NlNoYTI1NlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiLnNlY3Rpb24tc2VjdXJpdHlQb2xpY3lcIikuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnZhbGlkIHNlY3VyaXR5TW9kZSBcIiArIHNlY3VyaXR5TW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHVwZGF0ZVNlY3VyaXR5Q29udHJvbChub2RlLnNlY3VyaXR5TW9kZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgX3NlY3VyaXR5TW9kZSA9ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlNb2RlXCIpO1xuICAgICAgICAgICAgICAgIF9zZWN1cml0eU1vZGUub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWN1cml0eU1vZGUgPSBfc2VjdXJpdHlNb2RlLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTZWN1cml0eUNvbnRyb2wobmV3U2VjdXJpdHlNb2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxpY2VuY2VXaWRnZXQgPSAkKFwiI2xpY2VuY2VXaWRnZXRcIik7XG4gICAgICAgICAgICBsaWNlbmNlV2lkZ2V0LmxpY2VuY2VXaWRnZXQoe1xuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgdGhlIFVzZXIgSWRlbnRpdHkgQ29udHJvbHNcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXV0aFJvdyA9ICQoXCIuc2VjdGlvbi11c2VySWRlbnRpdHlUeXBlLVVzZXJOYW1lXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlcnRSb3cgPSAkKFwiLnNlY3Rpb24tdXNlcklkZW50aXR5VHlwZS1DZXJ0aWZpY2F0ZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVJZGVudGl0eUNvbnRyb2xzID0gKHVzZXJJZGVudGl0eVR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSA9IHVzZXJJZGVudGl0eVR5cGUgfHwgXCJBbm9ueW1vdXNcIjtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh1c2VySWRlbnRpdHlUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQW5vbnltb3VzXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyTmFtZVwiKS52YWwoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1pbnB1dC1wYXNzd29yZFwiKS52YWwoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFJvdy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydFJvdy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5hbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoUm93LnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0Um93LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJDZXJ0aWZpY2F0ZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlck5hbWVcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtcGFzc3dvcmRcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRSb3cuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhSb3cuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImludmFsaWQgdXNlcklkZW50aXR5VHlwZSBcIiArIHVzZXJJZGVudGl0eVR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB1cGRhdGVJZGVudGl0eUNvbnRyb2xzKG5vZGUudXNlcklkZW50aXR5VHlwZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgX3VzZXJJZGVudGl0eVR5cGUgPSAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJJZGVudGl0eVR5cGVcIik7XG4gICAgICAgICAgICAgICAgX3VzZXJJZGVudGl0eVR5cGUub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdJZGVudGl0eVR5cGUgPSBfdXNlcklkZW50aXR5VHlwZS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSWRlbnRpdHlDb250cm9scyhuZXdJZGVudGl0eVR5cGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIGFkdmFuY2VkIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tQWR2YW5jZWRcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICQoXCIjdG9nZ2xlQWR2YW5jZWRTZWN0aW9uXCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykucHJvcChcImNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLCBzaG93IHRoZSBkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1BZHZhbmNlZFwiKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGhpZGUgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1BZHZhbmNlZFwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgVGVzdCBidXR0b25cbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIG1hbmFnZUFQSUNhbGwoXCJjb25uZWN0aW9uXCIsICQoXCIjdGVzdC1jb25uZWN0aW9uXCIpLCAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IFwiL29wY3VhLWVuZHBvaW50Mi90ZXN0LWNvbm5lY3Rpb25cIixcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtZW5kcG9pbnRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHlNb2RlOiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5TW9kZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eVBvbGljeTogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1zZWN1cml0eVBvbGljeVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlOiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJJZGVudGl0eVR5cGVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck5hbWU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlck5hbWVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtcGFzc3dvcmRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckNlcnRpZmljYXRlOiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJDZXJ0aWZpY2F0ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyUHJpdmF0ZWtleTogJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyUHJpdmF0ZWtleVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8gbm90IHRlc3RlZCB5ZXQgLi4uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlOiAkKFwiI25vZGUtaW5wdXQtY2VydGlmaWNhdGVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxmaWxlOiAkKFwiI25vZGUtaW5wdXQtbG9jYWxmaWxlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsa2V5ZmlsZTogJChcIiNub2RlLWlucHV0LWxvY2Fsa2V5ZmlsZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VUcmFuc3BvcnQ6ICQoXCIjbm9kZS1pbnB1dC11c2VUcmFuc3BvcnRcIikucHJvcChcImNoZWNrZWRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2h1bmtDb3VudDogJChcIiNub2RlLWlucHV0LW1heENodW5rQ291bnRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TWVzc2FnZVNpemU6ICQoXCIjbm9kZS1pbnB1dC1tYXhNZXNzYWdlU2l6ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlQnVmZmVyU2l6ZTogJChcIiNub2RlLWlucHV0LXJlY2VpdmVCdWZmZXJTaXplXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRCdWZmZXJTaXplOiAkKFwiI25vZGUtaW5wdXQtc2VuZEJ1ZmZlclNpemVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLCAoKSA9PiB7IH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gIEluc3RhbGwgc3Vic2NyaXB0aW9ucyBMaXN0IG1hbmFnZW1lbnRcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZVRvcGljcyA9ICh0b3BpYywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1dpZHRoID0gdG9waWMud2lkdGgoKSB8fCAxMDA7XG4gICAgICAgICAgICAgICAgICAgIHRvcGljLmZpbmQoXCJsYWJlbFwiKS50eXBlZElucHV0KFwid2lkdGhcIiwgbmV3V2lkdGggLSAxNSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25MaXN0ID0gJChcIiNzdWJzY3JpcHRpb25zLWNvbnRhaW5lclwiKVxuICAgICAgICAgICAgICAgICAgICAuY3NzKHsgXCJtaW4taGVpZ2h0XCI6IFwiMTUwcHhcIiwgXCJtaW4td2lkdGhcIjogXCIyNjBweFwiIH0pXG4gICAgICAgICAgICAgICAgICAgIC5lZGl0YWJsZUxpc3Qoe1xuICAgICAgICAgICAgICAgICAgICBhZGRJdGVtOiAoY29udGFpbmVyLCBpbmRleCwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX2RhdGEgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9ICQoXCIudGVtcGxhdGVcIikuY2xvbmUoKS5hcHBlbmRUbyhjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyKFwiaWRcIikucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpLnJlbW92ZUNsYXNzKFwidGVtcGxhdGVcIikuYXR0cihcImRhdGEtaVwiLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtbmFtZVwiKS52YWwoX2RhdGEubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsXCIpLnZhbChfZGF0YS5wYXJhbWV0ZXJzLnJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnRcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maW5kKFwiLmlucHV0LXJlcXVlc3RlZExpZmV0aW1lQ291bnRcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucmVxdWVzdGVkTGlmZXRpbWVDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2hcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMubWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2ggfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcHJpb3JpdHlcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucHJpb3JpdHkgfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuc3Vic2NyaXB0aW9uLWlkXCIpLnRleHQoXCJcIiArIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZGF0YS5pc0RlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtbmFtZVwiKS5wcm9wKFwicmVhZG9ubHlcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtaXNEZWZhdWx0XCIpLnByb3AoXCJjaGVja2VkXCIsIF9kYXRhLmlzRGVmYXVsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBkZWZhdWx0IHN1YnNjcmlwdGlvbiBjYW5ub3QgYmUgYWNjaWRlbnRhbGx5IHJlbW92ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZGF0YS5pc0RlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZChcIi5yZWQtdWktZWRpdGFibGVMaXN0LWl0ZW0tcmVtb3ZlXCIpLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGVsZW1lbnQuZmluZChcIi5pbnB1dC1pc0RlZmF1bHRcIikucHJvcChcImRpc2FibGVkXCIsIHRydWUpLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICByZW1vdmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZUl0ZW06IHJlc2l6ZVRvcGljcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBBZGRTdWJzY3JpcHRpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSBub2RlLnN1YnNjcmlwdGlvbnMgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJzY3JpcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIG1pc3NpbmcgZGVmYXVsdCBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiczFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRlZmF1bHQgU3Vic2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTdWJzY3JpcHRpb25QYXJhbWV0ZXJzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbkxpc3QuZWRpdGFibGVMaXN0KFwiZW1wdHlcIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YnNjcmlwdGlvbi5pc0RlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbkxpc3QuZWRpdGFibGVMaXN0KFwiYWRkSXRlbVwiLCBzdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBBZGRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxufSkoKTsiXX0=
|
9
|
+
</script>
|
10
|
+
<script type="text/x-red" data-template-name="OpcUa-Endpoint2">
|
11
|
+
<style>
|
12
|
+
.custom-checkbox-container {
|
13
|
+
width: 100%;
|
14
|
+
cursor: pointer;
|
15
|
+
user-select: none;
|
16
|
+
}
|
17
|
+
|
18
|
+
.custom-checkbox-label {
|
19
|
+
cursor: pointer;
|
20
|
+
font-family: "FontAwesome";
|
21
|
+
}
|
22
|
+
|
23
|
+
.custom-checkbox-input:checked + .custom-checkbox-label::before {
|
24
|
+
content: "\f205";
|
25
|
+
font-size: 24px;
|
26
|
+
/* fa-toggle-on */
|
27
|
+
}
|
28
|
+
|
29
|
+
.custom-checkbox-input:not(:checked) + .custom-checkbox-label::before {
|
30
|
+
content: "\f204";
|
31
|
+
font-size: 24px;
|
32
|
+
/* fa-toggle-off */
|
33
|
+
}
|
34
|
+
|
35
|
+
.custom-checkbox-input {
|
36
|
+
display: none;
|
37
|
+
}
|
38
|
+
|
39
|
+
.subscription-mini-form table {
|
40
|
+
width: 100%;
|
41
|
+
border: 1;
|
42
|
+
}
|
43
|
+
|
44
|
+
.subscription-mini-form label {
|
45
|
+
display: block;
|
46
|
+
cursor: pointer;
|
47
|
+
display: block;
|
48
|
+
width: auto;
|
49
|
+
}
|
50
|
+
|
51
|
+
.subscription-mini-form input {
|
52
|
+
width: calc(100% - 10px);
|
53
|
+
/* Takes the full width minus 10px for right spacing */
|
54
|
+
box-sizing: border-box;
|
55
|
+
/* Ensures padding and borders are included in the width */
|
56
|
+
}
|
57
|
+
</style>
|
58
|
+
<div id="licenceWidget"></div>
|
59
|
+
|
60
|
+
<div class="form-row">
|
61
|
+
<label for="node-config-input-name"><i class="fa fa-tag"></i>Name</label>
|
62
|
+
<input type="text" id="node-config-input-name" placeholder="enter the friendly name of the connection" />
|
63
|
+
</div>
|
64
|
+
|
65
|
+
<div class="form-row">
|
66
|
+
<ul style="min-width: 600px; margin-bottom: 20px" id="node-config-endpoint-tabs"></ul>
|
67
|
+
</div>
|
68
|
+
|
69
|
+
<div id="node-config-endpoint-tabs-content" style="min-height: 150px">
|
70
|
+
<div id="endpoint-tab-connection" style="display: none">
|
71
|
+
<div class="form-row">
|
72
|
+
<label for="node-config-input-endpoint"> <i class="fa fa-plug"> </i> Endpoint</label>
|
73
|
+
<input type="text" id="node-config-input-endpoint" placeholder="opc.tcp://opcuademo.sterfive.com:26543" />
|
74
|
+
</div>
|
75
|
+
|
76
|
+
<div class="form-row">
|
77
|
+
<button id="test-connection" class="btn btn-primary" style="margin-left: 10px">
|
78
|
+
<i class="fa fa-flask"></i> Check Connection
|
79
|
+
</button>
|
80
|
+
|
81
|
+
<i id="connection-pending" class="hide fa fa-spinner" style="display: none" color="green"></i>
|
82
|
+
<i id="connection-success" class="hide fa fa-check-square" style="color: green; font-size: 1.2em; display: none"></i>
|
83
|
+
<i
|
84
|
+
id="connection-failure"
|
85
|
+
class="hide fa fa-exclamation-triangle"
|
86
|
+
style="color: red; font-size: 1.2em; display: none"
|
87
|
+
></i>
|
88
|
+
|
89
|
+
<style>
|
90
|
+
#connection-messages {
|
91
|
+
margin-top: 10px;
|
92
|
+
margin-bottom: 10px;
|
93
|
+
display: none;
|
94
|
+
background-color: #fdfdfd;
|
95
|
+
width: 100%;
|
96
|
+
max-height: 200px;
|
97
|
+
padding: 10px;
|
98
|
+
box-sizing: border-box;
|
99
|
+
border-radius: 6px;
|
100
|
+
font-size: 0.8em;
|
101
|
+
font-style: italic;
|
102
|
+
font-family: "Courier New", Courier, monospace;
|
103
|
+
white-space: nowrap;
|
104
|
+
overflow-x: auto;
|
105
|
+
overflow-y: auto;
|
106
|
+
}
|
107
|
+
|
108
|
+
/* For Webkit browsers like Chrome and Safari */
|
109
|
+
#connection-messages::-webkit-scrollbar {
|
110
|
+
display: none;
|
111
|
+
}
|
112
|
+
|
113
|
+
#connection-messages {
|
114
|
+
/* For Firefox */
|
115
|
+
scrollbar-width: none;
|
116
|
+
scrollbar-color: transparent transparent;
|
117
|
+
/* makes the thumb and track transparent */
|
118
|
+
}
|
119
|
+
|
120
|
+
#connection-failure:not(.hide) ~ #connection-messages {
|
121
|
+
border: 2px solid red;
|
122
|
+
display: inline-block;
|
123
|
+
}
|
124
|
+
|
125
|
+
#connection-success:not(.hide) ~ #connection-messages {
|
126
|
+
border: 2px solid green;
|
127
|
+
display: inline-block;
|
128
|
+
}
|
129
|
+
|
130
|
+
#connection-messages p {
|
131
|
+
display: block;
|
132
|
+
margin: 2, 0, 2, 0;
|
133
|
+
padding: 0, 0, 0, 0, 0;
|
134
|
+
/* Adjust spacing before the break */
|
135
|
+
}
|
136
|
+
</style>
|
137
|
+
<div id="connection-messages"></div>
|
138
|
+
</div>
|
139
|
+
|
140
|
+
<fieldset>
|
141
|
+
<legend>Security</legend>
|
142
|
+
<div class="form-row">
|
143
|
+
<label for="node-config-input-securityMode"><i class="icon-key"></i> Security Mode</label>
|
144
|
+
<select type="text" id="node-config-input-securityMode">
|
145
|
+
<option value="None">None</option>
|
146
|
+
<option value="Sign">Sign</option>
|
147
|
+
<option value="SignAndEncrypt">Sign&Encrypt</option>
|
148
|
+
</select>
|
149
|
+
</div>
|
150
|
+
<div class="form-row section-securityPolicy">
|
151
|
+
<label for="node-config-input-securityPolicy"><i class="icon-key"></i> Security Policy</label>
|
152
|
+
<select type="text" id="node-config-input-securityPolicy">
|
153
|
+
<!--
|
154
|
+
<option value="None">None</option>
|
155
|
+
-->
|
156
|
+
<option value="Basic256Rsa15">Basic256Rsa15</option>
|
157
|
+
<option value="Basic256Sha256">Basic256Sha256</option>
|
158
|
+
<option value="Aes128_Sha256">Aes128_Sha256</option>
|
159
|
+
<option value="Aes128_Sha256_RsaOaep">Aes128_Sha256_RsaOaep</option>
|
160
|
+
<!-- <option value="PubSub_Aes128_CTR">PubSub_Aes128_CTR</option>
|
161
|
+
<option value="PubSub_Aes256_CTR">PubSub_Aes256_CTR</option> -->
|
162
|
+
<option value="Basic128">Basic128 (obsolete)</option>
|
163
|
+
<option value="Basic192">Basic192 (obsolete)</option>
|
164
|
+
<option value="Basic192Rsa15">Basic192Rsa15 (obsolete)</option>
|
165
|
+
<option value="Basic128Rsa15">Basic128Rsa15 (obsolete)</option>
|
166
|
+
<option value="Basic256">Basic256 (obsolete)</option>
|
167
|
+
</select>
|
168
|
+
</div>
|
169
|
+
</fieldset>
|
170
|
+
<fieldset>
|
171
|
+
<legend>User Session Type</legend>
|
172
|
+
|
173
|
+
<div class="form-row">
|
174
|
+
<label for="node-config-input-userIdentityType"><i class="icon-key"></i>User Identity</label>
|
175
|
+
<select type="text" id="node-config-input-userIdentityType">
|
176
|
+
<option value="Anonymous">Anonymous</option>
|
177
|
+
<option value="UserName">Username & Password</option>
|
178
|
+
<option value="Certificate">X509 Certificate</option>
|
179
|
+
</select>
|
180
|
+
</div>
|
181
|
+
<div class="section-userIdentityType-UserName">
|
182
|
+
<div class="form-row">
|
183
|
+
<label for="node-config-input-userName"><i class="fa fa-user"></i> User</label>
|
184
|
+
<input type="text" id="node-config-input-userName" />
|
185
|
+
</div>
|
186
|
+
<div class="form-row">
|
187
|
+
<label for="node-config-input-password"><i class="fa fa-lock"></i> Password</label>
|
188
|
+
<input type="password" id="node-config-input-password" />
|
189
|
+
</div>
|
190
|
+
</div>
|
191
|
+
<div class="section-userIdentityType-Certificate">
|
192
|
+
<div class="form-row">
|
193
|
+
<label style="width: 35%" for="node-config-input-userCertificate"
|
194
|
+
><i class="fa fa-certificate"></i> Certificate</label
|
195
|
+
>
|
196
|
+
<input style="width: 65%" type="text" id="node-config-input-userCertificate" />
|
197
|
+
</div>
|
198
|
+
<div class="form-row">
|
199
|
+
<label style="width: 35%" for="node-config-input-userPrivatekey"><i class="fa fa-key"></i> Private key</label>
|
200
|
+
<input style="width: 65%" type="text" id="node-config-input-userPrivatekey" />
|
201
|
+
</div>
|
202
|
+
</div>
|
203
|
+
</fieldset>
|
204
|
+
|
205
|
+
<hr />
|
206
|
+
|
207
|
+
<style>
|
208
|
+
label {
|
209
|
+
display: block;
|
210
|
+
cursor: pointer;
|
211
|
+
}
|
212
|
+
</style>
|
213
|
+
|
214
|
+
<div class="form-row">
|
215
|
+
<label class="custom-checkbox-container" style="width: 100%">
|
216
|
+
<input id="toggleAdvancedSection" checked="false" type="checkbox" class="custom-checkbox-input" />
|
217
|
+
<span class="custom-checkbox-label"> Advanced parameters ....</span>
|
218
|
+
</label>
|
219
|
+
</div>
|
220
|
+
|
221
|
+
<div id="section-Advanced">
|
222
|
+
<!--- For PKI -->
|
223
|
+
<fieldset>
|
224
|
+
<legend>Server certificate</legend>
|
225
|
+
<div class="form-row" id="node-config-input-servercertificate">
|
226
|
+
<label for="node-config-input-location"
|
227
|
+
><i class="icon-time" placeholder="enter the preloaded server certificate" style="width: 100%"></i>Server
|
228
|
+
Certificate</label
|
229
|
+
>>
|
230
|
+
<select id="node-config-input-certificate" style="width: 72%">
|
231
|
+
<option value="n">None, use generated self-signed certificate</option>
|
232
|
+
<option value="l">Local certificate file, give path with filename (pem)</option>
|
233
|
+
</select>
|
234
|
+
</div>
|
235
|
+
</fieldset>
|
236
|
+
|
237
|
+
<fieldset>
|
238
|
+
<legend>Overwrite client certificate & private key</legend>
|
239
|
+
<div class="form-row">
|
240
|
+
<label style="width: 100%" for="node-config-input-path"
|
241
|
+
><i class="fa fa-certificate"></i> Local certificate file with absolute path</label
|
242
|
+
>
|
243
|
+
<input type="text" id="node-config-input-localfile" placeholder="selfSigned.pem" accept=".pem .der" />
|
244
|
+
</div>
|
245
|
+
<div class="form-row">
|
246
|
+
<label style="width: 100%" for="node-config-input-path"
|
247
|
+
><i class="fa fa-key"></i> Local private key file with absolute path</label
|
248
|
+
>
|
249
|
+
<input type="text" id="node-config-input-localkeyfile" placeholder="private_key.pem" accept=".pem .der" />
|
250
|
+
</div>
|
251
|
+
</fieldset>
|
252
|
+
|
253
|
+
<!--- For Transport settings -->
|
254
|
+
<fieldset>
|
255
|
+
<legend>Advanced transport settings</legend>
|
256
|
+
<p>only use those parameters if you know what you are doing !</p>
|
257
|
+
|
258
|
+
<div class="form-row">
|
259
|
+
<label class="custom-checkbox-container">
|
260
|
+
<input id="node-config-input-useTransport" checked="false" type="checkbox" class="custom-checkbox-input" />
|
261
|
+
<span class="custom-checkbox-label">Advanced transport setting ...</span>
|
262
|
+
</label>
|
263
|
+
</div>
|
264
|
+
|
265
|
+
<div class="section-TransportSettings">
|
266
|
+
<div class="form-row">
|
267
|
+
<label for="node-config-input-maxChunkCount"><i class="icon-tasks"></i> Max ChunkCount</label>
|
268
|
+
<input type="number" id="node-config-input-maxChunkCount" placeholder="10" style="width: 20%" />
|
269
|
+
</div>
|
270
|
+
<div class="form-row">
|
271
|
+
<label for="node-config-input-maxMessageSize"><i class="icon-tasks"></i> Max MessageSize</label>
|
272
|
+
<input type="number" id="node-config-input-maxMessageSize" placeholder="8192" style="width: 20%" />
|
273
|
+
</div>
|
274
|
+
<div class="form-row">
|
275
|
+
<label for="node-config-input-receiveBufferSize"><i class="icon-tasks"></i> Receive BufferSize</label>
|
276
|
+
<input type="number" id="node-config-input-receiveBufferSize" placeholder="8192" style="width: 20%" />
|
277
|
+
</div>
|
278
|
+
<div class="form-row">
|
279
|
+
<label for="node-config-input-sendBufferSize"><i class="icon-tasks"></i> Send BufferSize</label>
|
280
|
+
<input type="number" id="node-config-input-sendBufferSize" placeholder="8192" style="width: 20%" />
|
281
|
+
</div>
|
282
|
+
</div>
|
283
|
+
</fieldset>
|
284
|
+
</div>
|
285
|
+
</div>
|
286
|
+
<div id="endpoint-tab-subscriptions" style="display: none">
|
287
|
+
<div class="form-row">
|
288
|
+
<ol class="DebugMe" id="subscriptions-container"></ol>
|
289
|
+
</div>
|
290
|
+
</div>
|
291
|
+
</div>
|
292
|
+
|
293
|
+
<!--
|
294
|
+
the template for the subscription
|
295
|
+
-->
|
296
|
+
<div class="hide template subscription-mini-form" id="subscription-template">
|
297
|
+
<h3>subscription <span class="subscription-id"></span></h3>
|
298
|
+
<input type="checkbox" class="hide input-isDefault" />
|
299
|
+
<table>
|
300
|
+
<tr>
|
301
|
+
<td><i class="fa fa-tag"></i><strong> Name </strong></td>
|
302
|
+
<td>
|
303
|
+
<input type="text" class="input-name" placeholder="enter a subscription name" />
|
304
|
+
</td>
|
305
|
+
</tr>
|
306
|
+
<!-- <tr>
|
307
|
+
<td colspan="2">
|
308
|
+
<hr>
|
309
|
+
</td>
|
310
|
+
</tr> -->
|
311
|
+
<tr>
|
312
|
+
<td><i class="fa fa-bell"> </i> Publishing Interval</td>
|
313
|
+
<td>
|
314
|
+
<input type="number" class="input-requestedPublishingInterval" />
|
315
|
+
<span>ms</span>
|
316
|
+
</td>
|
317
|
+
</tr>
|
318
|
+
<tr>
|
319
|
+
<td><i class="fa fa-heartbeat"> </i> Max Keepalive count</td>
|
320
|
+
<td>
|
321
|
+
<input type="number" class="input-requestedMaxKeepAliveCount" />
|
322
|
+
</td>
|
323
|
+
</tr>
|
324
|
+
<tr>
|
325
|
+
<td><i class="fa fa-hourglass-end"> </i> Live Time Count</td>
|
326
|
+
<td>
|
327
|
+
<input type="number" class="input-requestedLifetimeCount" />
|
328
|
+
</td>
|
329
|
+
</tr>
|
330
|
+
<tr>
|
331
|
+
<td><i class="fa fa-tag"></i> Max notifications per publishing</td>
|
332
|
+
<td>
|
333
|
+
<input type="number" class="input-maxNotificationsPerPublish" />
|
334
|
+
</td>
|
335
|
+
</tr>
|
336
|
+
<tr>
|
337
|
+
<td><i class="fa fa-exclamation"></i> Priority</td>
|
338
|
+
<td>
|
339
|
+
<input type="number" class="input-priority" />
|
340
|
+
</td>
|
341
|
+
</tr>
|
342
|
+
<tr>
|
343
|
+
<td>Publishing</td>
|
344
|
+
<td>
|
345
|
+
<label class="custom-checkbox-container">
|
346
|
+
<input type="checkbox" checked class="nide custom-checkbox-input input-publishingEnabled" />
|
347
|
+
<span class="custom-checkbox-label"></span>
|
348
|
+
</label>
|
349
|
+
</td>
|
350
|
+
</tr>
|
351
|
+
</table>
|
352
|
+
</div>
|
353
|
+
|
354
|
+
</script>
|
355
|
+
|
356
|
+
<script type="text/markdown" data-help-name="OpcUa-Endpoint2">
|
357
|
+
# Server certificate options are:
|
358
|
+
|
359
|
+
- None
|
360
|
+
- Local certificate file (.pem)
|
361
|
+
- Local private key file (.pem)
|
362
|
+
|
363
|
+
Certificate is not needed if security is None.
|
364
|
+
|
365
|
+
Client will try to load server certificate from endpoint if server can provide it (copy server certificate under pki folder).
|
366
|
+
|
367
|
+
Local file with relative path and certificate filename can be then used to use server certificate (.pem ending file).
|
368
|
+
|
369
|
+
User can manually copy server certificate.
|
370
|
+
|
371
|
+
</script>
|