@opcua/for-node-red 2.1.8 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all.js +1 -1
- package/package.json +1 -1
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +2 -2
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +2 -2
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +2 -2
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.html +13 -2
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +2 -2
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +2 -2
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.html +2 -2
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.html +195 -73
@@ -4,57 +4,10 @@
|
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
(function(_0x26b99f,_0x117003){const _0x147703=_0xe60d,_0x124f6c=_0x26b99f();while(!![]){try{const _0x4708d0=parseInt(_0x147703(0x1f3))/0x1+parseInt(_0x147703(0x1f9))/0x2*(parseInt(_0x147703(0x156))/0x3)+parseInt(_0x147703(0x1bb))/0x4*(-parseInt(_0x147703(0x16a))/0x5)+parseInt(_0x147703(0x16c))/0x6+-parseInt(_0x147703(0x1e8))/0x7*(-parseInt(_0x147703(0x191))/0x8)+parseInt(_0x147703(0x1d6))/0x9*(-parseInt(_0x147703(0x15c))/0xa)+-parseInt(_0x147703(0x1b7))/0xb*(parseInt(_0x147703(0x1cd))/0xc);if(_0x4708d0===_0x117003)break;else _0x124f6c['push'](_0x124f6c['shift']());}catch(_0x4ac935){_0x124f6c['push'](_0x124f6c['shift']());}}}(_0x1060,0x9b266),(function(){'use strict';const _0x30450f=_0xe60d;function _0x7e4864(_0x3cc946,_0x15e05a,_0x330510,_0x2f8ce6){const _0x2dd4b6=_0xe60d,_0x29c90a=$('#'+_0x3cc946+_0x2dd4b6(0x18e)),_0x478d77=$('#'+_0x3cc946+_0x2dd4b6(0x1af)),_0x58d068=$('#'+_0x3cc946+_0x2dd4b6(0x19c)),_0x49db1f=$('#'+_0x3cc946+_0x2dd4b6(0x1e3));let _0x51e7e5=![];_0x29c90a['hide'](),_0x478d77['hide'](),_0x58d068['hide'](),_0x15e05a['on']('click',()=>{const _0x4fff24=_0x2dd4b6;if(_0x51e7e5)return;_0x51e7e5=!![],_0x58d068[_0x4fff24(0x1a7)]('hide'),_0x58d068[_0x4fff24(0x1ef)](_0x4fff24(0x1a5)),_0x29c90a[_0x4fff24(0x1ac)](_0x4fff24(0x153)),_0x478d77[_0x4fff24(0x1ac)](_0x4fff24(0x153)),_0x49db1f[_0x4fff24(0x1ef)]('');const {body:_0x2ca7e3,url:_0x5d385b}=_0x330510();fetch(_0x5d385b,{'method':_0x4fff24(0x194),'headers':{'Content-Type':_0x4fff24(0x15f)},'body':JSON[_0x4fff24(0x1a1)](_0x2ca7e3)})[_0x4fff24(0x1cf)](_0x42db9f=>_0x42db9f[_0x4fff24(0x154)]())[_0x4fff24(0x1cf)](_0x1f6991=>{const _0x26c081=_0x4fff24;_0x51e7e5=![],_0x58d068['hide'](),console[_0x26c081(0x1d1)](JSON[_0x26c081(0x1a1)](_0x1f6991,null,'\x20'));if(_0x1f6991['result']==='ok')_0x29c90a['removeClass'](_0x26c081(0x153)),_0x478d77[_0x26c081(0x1ac)](_0x26c081(0x153)),_0x49db1f[_0x26c081(0x1ef)](_0x1f6991['message'][_0x26c081(0x159)]('\x0a',_0x26c081(0x1ce))),_0x2f8ce6(null,_0x1f6991);else{const _0x4caeb3=_0x39681b=>!_0x39681b?'':_0x39681b[_0x26c081(0x1d4)]('\x0a')[_0x26c081(0x1bc)](_0x581854=>'<p>'+_0x581854+'</p>')[_0x26c081(0x1e4)]('\x0a'),_0xe89840=_0x413bd4=>Array[_0x26c081(0x15d)](_0x413bd4)?_0x413bd4[_0x26c081(0x1bc)](_0x4caeb3)[_0x26c081(0x1e4)]('\x0a'):_0x4caeb3(_0x413bd4);_0x29c90a['addClass'](_0x26c081(0x153)),_0x478d77[_0x26c081(0x1a7)]('hide'),_0x49db1f[_0x26c081(0x1ef)](_0xe89840(_0x1f6991[_0x26c081(0x173)])+_0xe89840(_0x1f6991[_0x26c081(0x160)])),_0x2f8ce6(new Error(_0x1f6991[_0x26c081(0x1c6)]),_0x1f6991);}})[_0x4fff24(0x1f1)](_0x2eee23=>{const _0x3cada1=_0x4fff24;_0x51e7e5=![],_0x58d068[_0x3cada1(0x1ac)]('hide'),_0x29c90a['addClass'](_0x3cada1(0x153)),_0x478d77[_0x3cada1(0x1a7)]('hide'),_0x49db1f[_0x3cada1(0x1ef)](_0x3cada1(0x1b1)+_0x2eee23[_0x3cada1(0x173)]),console['log'](_0x3cada1(0x18d),_0x2eee23),_0x2f8ce6(_0x2eee23,null);});});}function _0x107b29(_0x127a2e,_0x21341c,_0x1a5fd7,_0x4a364b){function _0x570f62(_0x4e88f0){return _0x4e88f0 instanceof _0x1a5fd7?_0x4e88f0:new _0x1a5fd7(function(_0x4cc9bc){_0x4cc9bc(_0x4e88f0);});}return new(_0x1a5fd7||(_0x1a5fd7=Promise))(function(_0x89a78e,_0x251678){const _0x270be7=_0xe60d;function _0x341722(_0x4fc556){const _0x38cae0=_0xe60d;try{_0x3fa794(_0x4a364b[_0x38cae0(0x155)](_0x4fc556));}catch(_0x13d826){_0x251678(_0x13d826);}}function _0x2c2d14(_0x4c2a74){const _0x3de055=_0xe60d;try{_0x3fa794(_0x4a364b[_0x3de055(0x188)](_0x4c2a74));}catch(_0x237260){_0x251678(_0x237260);}}function _0x3fa794(_0x5b9f86){const _0x2b062d=_0xe60d;_0x5b9f86[_0x2b062d(0x162)]?_0x89a78e(_0x5b9f86[_0x2b062d(0x189)]):_0x570f62(_0x5b9f86[_0x2b062d(0x189)])[_0x2b062d(0x1cf)](_0x341722,_0x2c2d14);}_0x3fa794((_0x4a364b=_0x4a364b[_0x270be7(0x1b0)](_0x127a2e,_0x21341c||[]))[_0x270be7(0x155)]());});}typeof SuppressedError===_0x30450f(0x1ec)?SuppressedError:function(_0x32309f,_0x3fa5a1,_0x3c4e3e){const _0x2d706b=_0x30450f;var _0x44cde4=new Error(_0x3c4e3e);return _0x44cde4[_0x2d706b(0x195)]=_0x2d706b(0x1d7),_0x44cde4[_0x2d706b(0x170)]=_0x32309f,_0x44cde4['suppressed']=_0x3fa5a1,_0x44cde4;};function _0x277b73(_0x4f932b=''){return _0x107b29(this,void 0x0,void 0x0,function*(){const _0x5044bf=_0xe60d,_0x47dfb7=_0x4f932b+_0x5044bf(0x1f4),_0x39b446=_0x47dfb7+_0x5044bf(0x1aa),_0x4af7da=yield fetch(_0x39b446,{'method':_0x5044bf(0x194),'headers':{'Content-Type':_0x5044bf(0x15f)}});if(_0x4af7da['status']!==0xc8)return console[_0x5044bf(0x1d1)]('fetching\x20failed\x20with\x20error',_0x4af7da[_0x5044bf(0x182)],_0x4af7da[_0x5044bf(0x1d3)]),{};const _0x2a2445=yield _0x4af7da[_0x5044bf(0x154)]();return _0x2a2445;});}const _0x2ac073=()=>{const _0x3d60da=_0x30450f;$[_0x3d60da(0x171)](_0x3d60da(0x19a),{'options':{'baseUrl':''},'_create'(){const _0x358413=_0x3d60da,_0x5b3c8b=this;_0x277b73(_0x5b3c8b[_0x358413(0x1c3)])['then'](_0x37fb2e=>{const _0x482ba7=_0x358413;let _0x5dc13e='',_0x3ba8bc='',_0x5401a6='';const _0x180955=_0x37fb2e['status'];switch(_0x180955){case'AUTHORIZED':_0x5dc13e=_0x482ba7(0x19e);_0x37fb2e[_0x482ba7(0x1ee)]?_0x3ba8bc=_0x482ba7(0x1bd):(_0x3ba8bc=_0x482ba7(0x15a),_0x5401a6='');break;case _0x482ba7(0x187):_0x5dc13e='fa\x20fa-calendar-time',_0x3ba8bc=_0x482ba7(0x1ab),_0x5401a6=_0x482ba7(0x1c4);break;case _0x482ba7(0x1b9):default:_0x5dc13e='fa\x20fa-exclamation-circle',_0x3ba8bc=_0x482ba7(0x1c5),_0x5401a6=_0x482ba7(0x166);break;}this[_0x482ba7(0x1ed)]['addClass'](_0x482ba7(0x1ae)),this[_0x482ba7(0x1ed)][_0x482ba7(0x1ac)](_0x482ba7(0x1a3)+_0x180955),this[_0x482ba7(0x1ed)][_0x482ba7(0x1b5)]($(_0x482ba7(0x1f8))['addClass'](_0x482ba7(0x198))[_0x482ba7(0x1b5)]($('<i>')[_0x482ba7(0x1ac)](_0x5dc13e))),this[_0x482ba7(0x1ed)][_0x482ba7(0x1b5)]($('<span>')[_0x482ba7(0x1ac)](_0x482ba7(0x1b4))[_0x482ba7(0x1e6)](_0x3ba8bc)),this[_0x482ba7(0x1ed)]['append']($(_0x482ba7(0x1ce))),this[_0x482ba7(0x1ed)][_0x482ba7(0x1b5)]($(_0x482ba7(0x1f8))[_0x482ba7(0x1ac)](_0x482ba7(0x180))[_0x482ba7(0x1b5)](_0x5401a6));})[_0x358413(0x1f1)](_0x3c99bb=>{console['log'](_0x3c99bb);});}});};_0x2ac073();function _0x565d19(_0x8d9c7c){const _0x1c27e2=_0x30450f;let _0x5409ed;try{_0x5409ed=new URL(_0x8d9c7c);}catch(_0x2593b5){return![];}return _0x5409ed[_0x1c27e2(0x185)]===_0x1c27e2(0x199);}const _0x33654f={'publishingEnabled':!![],'requestedLifetimeCount':0x3e8,'requestedMaxKeepAliveCount':0xa,'requestedPublishingInterval':0x3e8,'maxNotificationsPerPublish':0x0,'priority':0x64};RED['nodes'][_0x30450f(0x178)](_0x30450f(0x1c9),{'category':_0x30450f(0x196),'paletteLabel':_0x30450f(0x167),'defaults':{'name':{'value':''},'endpoint':{'value':_0x30450f(0x168),'required':!![],'validate':_0x565d19},'securityMode':{'value':_0x30450f(0x1df)},'securityPolicy':{'value':_0x30450f(0x1df),'validate':_0xc59fa8=>{if(!_0xc59fa8)return![];return!![];}},'userIdentityType':{'value':_0x30450f(0x17c)},'userName':{'value':''},'password':{'value':'','type':_0x30450f(0x18a)},'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':_0x30450f(0x17f),'isDefault':!![],'parameters':Object[_0x30450f(0x1be)]({},_0x33654f)},{'id':'s2','name':_0x30450f(0x17b),'isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0x64,'requestedMaxKeepAliveCount':0x14,'requestedPublishingInterval':0x1388,'maxNotificationsPerPublish':0x64,'priority':0xa}},{'id':'s3','name':'Fast\x20Subscription','isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0xfa0,'requestedMaxKeepAliveCount':0x64,'requestedPublishingInterval':0xfa,'maxNotificationsPerPublish':0x64,'priority':0xc8}}],'required':![]}},'credentials':{'user':{'type':'text'},'password':{'type':_0x30450f(0x18a)}},'label':function(){const _0x236e55=_0x30450f;return this[_0x236e55(0x195)]||this[_0x236e55(0x172)]||_0x236e55(0x1f5);},'oneditsave'(){const _0x5024cc=_0x30450f,_0x35ddc5=$(_0x5024cc(0x1c1)),_0x3a5834=$(_0x5024cc(0x16b));_0x35ddc5[_0x5024cc(0x16e)]()===_0x5024cc(0x1df)&&_0x3a5834[_0x5024cc(0x1e6)](_0x5024cc(0x1df));const _0x2bddda=$(_0x5024cc(0x1b2))['editableList'](_0x5024cc(0x1a9)),_0x70d586=[],_0x16c042=_0x4dd395=>_0x4dd395;_0x2bddda[_0x5024cc(0x1a6)](function(_0x148a0a,_0x3dc27b){const _0x11a899=_0x5024cc,_0x587671=$(this),_0x382dfb={'id':'s'+_0x148a0a,'name':_0x587671[_0x11a899(0x1b8)]('.input-name')[_0x11a899(0x16e)](),'isDefault':!!_0x587671[_0x11a899(0x1b8)](_0x11a899(0x181))[_0x11a899(0x16e)](),'parameters':{'publishingEnabled':!!_0x587671['find'](_0x11a899(0x158))['is'](_0x11a899(0x1a4)),'requestedLifetimeCount':_0x16c042(_0x587671[_0x11a899(0x1b8)]('.input-requestedLifetimeCount')[_0x11a899(0x16e)]()),'requestedMaxKeepAliveCount':_0x16c042(_0x587671[_0x11a899(0x1b8)]('.input-requestedMaxKeepAliveCount')[_0x11a899(0x16e)]()),'requestedPublishingInterval':_0x16c042(_0x587671[_0x11a899(0x1b8)](_0x11a899(0x1bf))['val']()),'maxNotificationsPerPublish':_0x16c042(_0x587671['find'](_0x11a899(0x1f0))['val']()),'priority':_0x16c042(_0x587671[_0x11a899(0x1b8)](_0x11a899(0x1d9))[_0x11a899(0x16e)]())}};_0x382dfb[_0x11a899(0x1c7)][_0x11a899(0x186)]=!![],_0x382dfb[_0x11a899(0x1e7)]&&_0x382dfb['id']==='s0'&&(_0x382dfb[_0x11a899(0x195)]='Default\x20Subscription'),_0x70d586[_0x11a899(0x1e2)](_0x382dfb);}),this[_0x5024cc(0x1e1)]=_0x70d586;},'oneditprepare'(){const _0x2c925b=_0x30450f,_0x407b1e=this,_0x14c641=RED[_0x2c925b(0x1cb)][_0x2c925b(0x1d5)]({'id':_0x2c925b(0x1a0),'onchange':function(_0x539b58){const _0x5ba424=_0x2c925b;$('#node-config-endpoint-tabs-content')[_0x5ba424(0x1f7)]()[_0x5ba424(0x153)](),$('#'+_0x539b58['id'])[_0x5ba424(0x1ea)]();}});_0x14c641['addTab']({'id':_0x2c925b(0x1b3),'label':_0x2c925b(0x1cc)},0x0),_0x14c641[_0x2c925b(0x1c2)]({'id':_0x2c925b(0x18b),'label':_0x2c925b(0x192)},0x1),setTimeout(function(){const _0x821610=_0x2c925b;_0x14c641[_0x821610(0x177)]();},0x0);{const _0x2ef714=_0x470499=>{const _0x44e690=_0x2c925b;switch(_0x470499){case null:case undefined:case'':case _0x44e690(0x1df):$(_0x44e690(0x165))[_0x44e690(0x153)]();break;case _0x44e690(0x1e9):case'SignAndEncrypt':{const _0x11dc40=$(_0x44e690(0x165));(_0x11dc40[_0x44e690(0x16e)]()==='None'||_0x11dc40[_0x44e690(0x16e)]()==='')&&_0x11dc40[_0x44e690(0x16e)](_0x44e690(0x175)),$(_0x44e690(0x165))[_0x44e690(0x1ea)]();}break;default:console[_0x44e690(0x1d1)](_0x44e690(0x1de)+_0x470499);}};_0x2ef714(_0x407b1e[_0x2c925b(0x1b6)]);const _0x4c7a3d=$(_0x2c925b(0x16b));_0x4c7a3d['on']('change',()=>{const _0x5b80f3=_0x4c7a3d['val']();_0x2ef714(_0x5b80f3);});}const _0x4b8dbc=$(_0x2c925b(0x179));_0x4b8dbc[_0x2c925b(0x1c8)]({'baseUrl':''});{const _0x1cc6ef=$(_0x2c925b(0x183)),_0x16fcb6=$(_0x2c925b(0x1db)),_0x3d27ef=_0x12aec9=>{const _0x4108e1=_0x2c925b;_0x12aec9=_0x12aec9||_0x4108e1(0x17c);switch(_0x12aec9){case _0x4108e1(0x17c):$(_0x4108e1(0x1f6))[_0x4108e1(0x16e)](''),$(_0x4108e1(0x1dd))[_0x4108e1(0x16e)](''),_0x1cc6ef[_0x4108e1(0x153)](),_0x16fcb6[_0x4108e1(0x153)]();break;case _0x4108e1(0x1e0):_0x1cc6ef[_0x4108e1(0x1ea)](),_0x16fcb6[_0x4108e1(0x153)]();break;case _0x4108e1(0x1a8):$('#node-config-input-userName')[_0x4108e1(0x16e)](''),$(_0x4108e1(0x1dd))[_0x4108e1(0x16e)](''),_0x16fcb6['show'](),_0x1cc6ef[_0x4108e1(0x153)]();break;default:console['log']('invalid\x20userIdentityType\x20'+_0x12aec9);}};_0x3d27ef(_0x407b1e['userIdentityType']);const _0x57b880=$('#node-config-input-userIdentityType');_0x57b880['on']('change',()=>{const _0x45d513=_0x57b880['val']();_0x3d27ef(_0x45d513);}),$(_0x2c925b(0x1ba))[_0x2c925b(0x153)](),$(_0x2c925b(0x16d))['on'](_0x2c925b(0x1e5),function(){const _0x5adeb1=_0x2c925b;$(this)[_0x5adeb1(0x176)](_0x5adeb1(0x19f))?$(_0x5adeb1(0x1ba))['show']():$(_0x5adeb1(0x1ba))['hide']();}),_0x7e4864(_0x2c925b(0x19b),$(_0x2c925b(0x15b)),()=>({'url':_0x2c925b(0x174),'body':{'endpointNode':{'id':_0x407b1e['id'],'endpoint':$(_0x2c925b(0x1d0))[_0x2c925b(0x16e)](),'securityMode':$(_0x2c925b(0x16b))['val'](),'securityPolicy':$(_0x2c925b(0x1c1))[_0x2c925b(0x16e)](),'userIdentityType':$(_0x2c925b(0x169))[_0x2c925b(0x16e)](),'userName':$(_0x2c925b(0x1f6))[_0x2c925b(0x16e)](),'password':$('#node-config-input-password')[_0x2c925b(0x16e)](),'userCertificate':$(_0x2c925b(0x18c))[_0x2c925b(0x16e)](),'userPrivatekey':$(_0x2c925b(0x16f))['val'](),'certificate':$(_0x2c925b(0x1d8))[_0x2c925b(0x16e)](),'localfile':$(_0x2c925b(0x190))[_0x2c925b(0x16e)](),'localkeyfile':$(_0x2c925b(0x17a))['val'](),'useTransport':$('#node-input-useTransport')['prop'](_0x2c925b(0x19f)),'maxChunkCount':$('#node-input-maxChunkCount')['val'](),'maxMessageSize':$(_0x2c925b(0x163))['val'](),'receiveBufferSize':$(_0x2c925b(0x1ca))['val'](),'sendBufferSize':$(_0x2c925b(0x161))['val']()}}}),()=>{});const _0x28b0fb=(_0x2e549a,_0x17eedd)=>{const _0x388bfc=_0x2c925b;var _0x4ada45=_0x2e549a['width']()||0x64;_0x2e549a[_0x388bfc(0x1b8)](_0x388bfc(0x1da))['typedInput'](_0x388bfc(0x15e),_0x4ada45-0xf);},_0x4d0c5f=$(_0x2c925b(0x1b2))[_0x2c925b(0x1fa)]({'min-height':_0x2c925b(0x164),'min-width':'260px'})['editableList']({'addItem':(_0x40812a,_0x214e34,_0x8084f6)=>{const _0x1436d0=_0x2c925b,_0x536d55=_0x8084f6,_0x58c49c=$(_0x1436d0(0x184))[_0x1436d0(0x1fb)]()[_0x1436d0(0x1ad)](_0x40812a);_0x58c49c[_0x1436d0(0x1d2)]('id')[_0x1436d0(0x1a7)](_0x1436d0(0x153))[_0x1436d0(0x1a7)](_0x1436d0(0x1fc))['attr'](_0x1436d0(0x17e),_0x214e34),_0x58c49c['find'](_0x1436d0(0x17d))['val'](_0x536d55[_0x1436d0(0x195)]),_0x58c49c[_0x1436d0(0x1b8)](_0x1436d0(0x1bf))['val'](_0x536d55[_0x1436d0(0x1c7)][_0x1436d0(0x1f2)]),_0x58c49c['find']('.input-requestedMaxKeepAliveCount')[_0x1436d0(0x16e)](_0x536d55['parameters'][_0x1436d0(0x1dc)]),_0x58c49c[_0x1436d0(0x1b8)](_0x1436d0(0x1a2))[_0x1436d0(0x16e)](_0x536d55['parameters']['requestedLifetimeCount']),_0x58c49c[_0x1436d0(0x1b8)]('.input-maxNotificationsPerPublish')['val'](_0x536d55[_0x1436d0(0x1c7)][_0x1436d0(0x1c0)]||0x0),_0x58c49c[_0x1436d0(0x1b8)](_0x1436d0(0x1d9))[_0x1436d0(0x16e)](_0x536d55[_0x1436d0(0x1c7)]['priority']||0x0),_0x58c49c[_0x1436d0(0x1b8)](_0x1436d0(0x1eb))['text'](''+_0x214e34),_0x536d55[_0x1436d0(0x1e7)]&&_0x58c49c[_0x1436d0(0x1b8)]('.input-name')[_0x1436d0(0x176)](_0x1436d0(0x19d),!![]),_0x58c49c[_0x1436d0(0x1b8)](_0x1436d0(0x181))[_0x1436d0(0x176)]('checked',_0x536d55[_0x1436d0(0x1e7)]),_0x536d55[_0x1436d0(0x1e7)]&&(_0x40812a['find'](_0x1436d0(0x18f))[_0x1436d0(0x1ac)]('hide'),setTimeout(()=>_0x58c49c[_0x1436d0(0x1b8)](_0x1436d0(0x181))['prop']('disabled',!![]),0xa));},'removable':!![],'resizeItem':_0x28b0fb}),_0x2f7bd3=()=>{const _0x5ac8eb=_0x2c925b,_0x174ed4=_0x407b1e['subscriptions']||[];_0x174ed4[_0x5ac8eb(0x157)]===0x0&&_0x174ed4['push']({'id':'s1','name':_0x5ac8eb(0x17f),'isDefault':!![],'parameters':Object[_0x5ac8eb(0x1be)]({},_0x33654f)});_0x4d0c5f[_0x5ac8eb(0x193)](_0x5ac8eb(0x197));for(const _0xd85937 of _0x174ed4){_0x4d0c5f['editableList']('addItem',_0xd85937);}};_0x2f7bd3();}}});}()));function _0xe60d(_0x115093,_0x5d7de7){const _0x106084=_0x1060();return _0xe60d=function(_0xe60dc8,_0x3973a8){_0xe60dc8=_0xe60dc8-0x153;let _0x2f160f=_0x106084[_0xe60dc8];return _0x2f160f;},_0xe60d(_0x115093,_0x5d7de7);}function _0x1060(){const _0x313373=['password','endpoint-tab-subscriptions','#node-config-input-userCertificate','err','-success','.red-ui-editableList-item-remove','#node-input-localfile','488amFcOm','Subscriptions','editableList','POST','name','config','empty','licence-widget-icon','opc.tcp:','sterfive.licenceWidget','connection','-pending','readonly','fa\x20fa-check-circle','checked','node-config-endpoint-tabs','stringify','.input-requestedLifetimeCount','licence-widget-',':checked','Testing\x20Connection\x20...','each','removeClass','Certificate','items','/licenceInfo','Licence\x20expired','addClass','appendTo','licence-widget','-failure','apply','internal\x20error\x20','#subscriptions-container','endpoint-tab-connection','licence-widget-msg','append','securityMode','1109042ybwXmO','find','FAILED','#section-Advanced','16sUbvbH','map','Demo\x20licence','assign','.input-requestedPublishingInterval','maxNotificationsPerPublish','#node-config-input-securityPolicy','addTab','baseUrl','Your\x20license\x20has\x20expired.\x20Please\x20contact\x20our\x20support\x20team\x20or\x20visit\x20our\x20website\x20to\x20renew\x20your\x20license\x20and\x20regain\x20access\x20to\x20our\x20services.','Your\x20license\x20is\x20currently\x20invalid.','result','parameters','licenceWidget','OpcUa-Endpoint2','#node-input-receiveBufferSize','tabs','Connection','168UuRePA','<br>','then','#node-config-input-endpoint','log','removeAttr','statusText','split','create','89010lrJHqA','SuppressedError','#node-input-certificate','.input-priority','label','.section-userIdentityType-Certificate','requestedMaxKeepAliveCount','#node-config-input-password','invalid\x20securityMode\x20','None','UserName','subscriptions','push','-messages','join','change','text','isDefault','119287dnRyZF','Sign','show','.subscription-id','function','element','isDemo','html','.input-maxNotificationsPerPublish','catch','requestedPublishingInterval','336092eHFZci','/opcua-endpoint2','invalid\x20endpoint','#node-config-input-userName','children','<span>','6hPNKDc','css','clone','template','hide','json','next','792717JdJyCa','length','.input-publishingEnabled','replace','Your\x20licence\x20is\x20valid.','#test-connection','650JMYXhW','isArray','width','application/json','extra','#node-input-sendBufferSize','done','#node-input-maxMessageSize','150px','.section-securityPolicy','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.','opcua\x20endpoint','opc.tcp://opcuademo.sterfive.com:26543/UA/SampleServer','#node-config-input-userIdentityType','785415forgHJ','#node-config-input-securityMode','6899244zkMvBP','#toggleAdvancedSection','val','#node-config-input-userPrivatekey','error','widget','endpoint','message','/opcua-endpoint2/test-connection','Basic256Sha256','prop','resize','registerType','#licenceWidget','#node-input-localkeyfile','Slow\x20Subscription','Anonymous','.input-name','data-i','Default\x20Subscription','licence-widget-details','.input-isDefault','status','.section-userIdentityType-UserName','.template','protocol','publishingEnabled','EXPIRED','throw','value'];_0x1060=function(){return _0x313373;};return _0x1060();}
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg3ZTQ4NjQiLCJfMHgzY2M5NDYiLCJfMHgxNWUwNWEiLCJfMHgzMzA1MTAiLCJfMHgyZjhjZTYiLCJfMHgyOWM5MGEiLCIkIiwiXzB4NDc4ZDc3IiwiXzB4NThkMDY4IiwiXzB4NDlkYjFmIiwiXzB4NTFlN2U1IiwiYm9keSIsIl8weDJjYTdlMyIsInVybCIsIl8weDVkMzg1YiIsImZldGNoIiwiSlNPTiIsIl8weDQyZGI5ZiIsIl8weDFmNjk5MSIsImNvbnNvbGUiLCJfMHg0Y2FlYjMiLCJfMHgzOTY4MWIiLCJfMHg1ODE4NTQiLCJfMHhlODk4NDAiLCJfMHg0MTNiZDQiLCJBcnJheSIsIkVycm9yIiwiXzB4MmVlZTIzIiwiXzB4MTA3YjI5IiwiXzB4MTI3YTJlIiwiXzB4MjEzNDFjIiwiXzB4MWE1ZmQ3IiwiXzB4NGEzNjRiIiwiXzB4NTcwZjYyIiwiXzB4NGU4OGYwIiwiXzB4NGNjOWJjIiwiUHJvbWlzZSIsIl8weDg5YTc4ZSIsIl8weDI1MTY3OCIsIl8weDM0MTcyMiIsIl8weDRmYzU1NiIsIl8weDNmYTc5NCIsIl8weDEzZDgyNiIsIl8weDJjMmQxNCIsIl8weDRjMmE3NCIsIl8weDIzNzI2MCIsIl8weDViOWY4NiIsIlN1cHByZXNzZWRFcnJvciIsIl8weDMyMzA5ZiIsIl8weDNmYTVhMSIsIl8weDNjNGUzZSIsIl8weDQ0Y2RlNCIsIl8weDI3N2I3MyIsIl8weDRmOTMyYiIsIl8weDQ3ZGZiNyIsIl8weDM5YjQ0NiIsIl8weDRhZjdkYSIsIl8weDJhMjQ0NSIsIl8weDJhYzA3MyIsIl8weDViM2M4YiIsIl8weDM3ZmIyZSIsIl8weDVkYzEzZSIsIl8weDNiYThiYyIsIl8weDU0MDFhNiIsIl8weDE4MDk1NSIsIl8weDNjOTliYiIsIl8weDU2NWQxOSIsIl8weDhkOWM3YyIsIl8weDU0MDllZCIsIlVSTCIsIl8weDI1OTNiNSIsIl8weDMzNjU0ZiIsIlJFRCIsIl8weGM1OWZhOCIsIk9iamVjdCIsIl8weDM1ZGRjNSIsIl8weDNhNTgzNCIsIl8weDJiZGRkYSIsIl8weDcwZDU4NiIsIl8weDE2YzA0MiIsIl8weDRkZDM5NSIsIl8weDE0OGEwYSIsIl8weDNkYzI3YiIsIl8weDU4NzY3MSIsIl8weDM4MmRmYiIsIl8weDQwN2IxZSIsIl8weDE0YzY0MSIsIl8weDUzOWI1OCIsInNldFRpbWVvdXQiLCJfMHgyZWY3MTQiLCJfMHg0NzA0OTkiLCJ1bmRlZmluZWQiLCJfMHgxMWRjNDAiLCJfMHg0YzdhM2QiLCJfMHg1YjgwZjMiLCJfMHg0YjhkYmMiLCJfMHgxY2M2ZWYiLCJfMHgxNmZjYjYiLCJfMHgzZDI3ZWYiLCJfMHgxMmFlYzkiLCJfMHg1N2I4ODAiLCJfMHg0NWQ1MTMiLCJfMHgyOGIwZmIiLCJfMHgyZTU0OWEiLCJfMHgxN2VlZGQiLCJfMHg0YWRhNDUiLCJfMHg0ZDBjNWYiLCJfMHg0MDgxMmEiLCJfMHgyMTRlMzQiLCJfMHg4MDg0ZjYiLCJfMHg1MzZkNTUiLCJfMHg1OGM0OWMiLCJfMHgyZjdiZDMiLCJfMHgxNzRlZDQiLCJfMHhkODU5MzciXSwibWFwcGluZ3MiOiIyb0JBQUEsQ0FBQyxVLENBQ0csYSx3QkFFQSxTQUFTQSxTQUFULENBQXVCQyxTQUF2QixDQUErQkMsU0FBL0IsQ0FBb0NDLFNBQXBDLENBQTBDQyxTQUExQyxDLHlCQUNVQyxTQUFBLENBQWNDLENBQUEsQyxJQUFNTCxTLGlCQUFOLEMsQ0FDZE0sU0FBQSxDQUFjRCxDQUFBLEMsSUFBTUwsUyxpQkFBTixDLENBQ2RPLFNBQUEsQ0FBY0YsQ0FBQSxDLElBQU1MLFMsaUJBQU4sQyxDQUNkUSxTQUFBLENBQVdILENBQUEsQyxJQUFNTCxTLGlCQUFOLEMsQ0FDakIsSUFBSVMsU0FBQSxDLEdBQUosQ0FDQUwsU0FBQSxDLE1BQUEsRyxDQUNBRSxTQUFBLEMsTUFBQSxHLENBQ0FDLFNBQUEsQyxNQUFBLEcsQ0FDQU4sU0FBQSxDLElBQUEsRSxPQUFBLENBQWdCLEksOEJBQ1JRLFMsQ0FDQSxPQUNKQSxTQUFBLEMsS0FDQUYsU0FBQSxD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RSxnQkFBQSxFLE1BQUEsRSxVQUFBLEMsSUFBQSxDQUFqQixDLEdBQUEsQyxHQW5CTSxDLFdBdUJkLEMsSUF2QmMsQyxZQXdCZCxDQUFZVCxTQXhCRSxDQUZPLENBSnpCLENBZ0NNVSxTQUFBLENBQWtCLEksMkJBQ2RDLFNBQUEsQ0FBZ0I1QixTQUFBLEMsZUFBQSxHQUFzQixFLENBQ3hDNEIsU0FBQSxDLGdCQUFBLEksS0FFQUEsU0FBQSxDLE1BQUEsRUFBbUIsQyxJQUNmLEMsSUFEZSxDLE1BRWYsQyxnQkFGZSxDLFdBR2YsQyxJQUhlLEMsWUFJZixDQUFZdkMsTUFBQSxDLGdCQUFBLEVBQWMsRUFBZCxDQUFrQkgsU0FBbEIsQ0FKRyxDQUFuQixDLENBT0ptQyxTQUFBLEMsZ0JBQUEsRSxnQkFBQSxFQUNBLFVBQVdRLFNBQVgsSUFBMkJELFNBQTNCLEMsQ0FFSVAsU0FBQSxDLGNBQUEsRSxTQUFBLENBQXlDUSxTQUF6QyxDLEdBOUNSLENBaURBRixTQUFBLEUsR0FoVDhCLENBQTFDLEMsRUE1TEosRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gbWFuYWdlQVBJQ2FsbChwcmVmaXgsIGJ0biwgZnVuYywgb25SZXN1bHQpIHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc0ljb24gPSAkKGAjJHtwcmVmaXh9LXN1Y2Nlc3NgKTtcbiAgICAgICAgY29uc3QgZmFpbHVyZUljb24gPSAkKGAjJHtwcmVmaXh9LWZhaWx1cmVgKTtcbiAgICAgICAgY29uc3QgcGVuZGluZ0ljb24gPSAkKGAjJHtwcmVmaXh9LXBlbmRpbmdgKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSAkKGAjJHtwcmVmaXh9LW1lc3NhZ2VzYCk7XG4gICAgICAgIGxldCBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIHN1Y2Nlc3NJY29uLmhpZGUoKTtcbiAgICAgICAgZmFpbHVyZUljb24uaGlkZSgpO1xuICAgICAgICBwZW5kaW5nSWNvbi5oaWRlKCk7XG4gICAgICAgIGJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb25QZW5kaW5nKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGFjdGlvblBlbmRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcGVuZGluZ0ljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgcGVuZGluZ0ljb24uaHRtbChcIlRlc3RpbmcgQ29ubmVjdGlvbiAuLi5cIik7XG4gICAgICAgICAgICBzdWNjZXNzSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICBmYWlsdXJlSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICBtZXNzYWdlcy5odG1sKFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgeyBib2R5LCB1cmwgfSA9IGZ1bmMoKTtcbiAgICAgICAgICAgIC8vIHh4IGNvbnNvbGUubG9nKFwieHh4eHhcIiwgYm9keSk7XG4gICAgICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IGRhdGEuanNvbigpKVxuICAgICAgICAgICAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdJY29uLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCBcIiBcIikpO1xuICAgICAgICAgICAgICAgIGlmIChqc29uLnJlc3VsdCA9PT0gXCJva1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgZmFpbHVyZUljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5odG1sKGpzb24ubWVzc2FnZS5yZXBsYWNlKFwiXFxuXCIsIFwiPGJyPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0KG51bGwsIGpzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRhcHQgPSAoc3RyKSA9PiAhc3RyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc3RyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoYSkgPT4gYDxwPiR7YX08L3A+YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRhcHQyID0gKHN0cikgPT4gKEFycmF5LmlzQXJyYXkoc3RyKSA/IHN0ci5tYXAoYWRhcHQpLmpvaW4oXCJcXG5cIikgOiBhZGFwdChzdHIpKTtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoYWRhcHQyKGpzb24ubWVzc2FnZSkgKyBhZGFwdDIoanNvbi5leHRyYSkpO1xuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdChuZXcgRXJyb3IoanNvbi5yZXN1bHQpLCBqc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICBzdWNjZXNzSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgZmFpbHVyZUljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoXCJpbnRlcm5hbCBlcnJvciBcIiArIGVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgIG9uUmVzdWx0KGVyciwgbnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGZldGNoTGljZW5jZUluZm8oYmFzZVVybCA9IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vbGljZW5jZUluZm9gO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QganNvbiA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWNsYXJlTGljZW5jZVdpZGdldCA9ICgpID0+IHtcbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5saWNlbmNlV2lkZ2V0XCIsIHtcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZmV0Y2hMaWNlbmNlSW5mbyh0aGF0LmJhc2VVcmwpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpY29uID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0ganNvbi5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQVVUSE9SSVpFRFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWNoZWNrLWNpcmNsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmlzRGVtbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIkRlbW8gbGljZW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gXCJZb3VyIGxpY2VuY2UgaXMgdmFsaWQuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJFWFBJUkVEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbiA9IFwiZmEgZmEtY2FsZW5kYXItdGltZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiTGljZW5jZSBleHBpcmVkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiWW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBQbGVhc2UgY29udGFjdCBvdXIgc3VwcG9ydCB0ZWFtIG9yIHZpc2l0IG91ciB3ZWJzaXRlIHRvIHJlbmV3IHlvdXIgbGljZW5zZSBhbmQgcmVnYWluIGFjY2VzcyB0byBvdXIgc2VydmljZXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiWW91ciBsaWNlbnNlIGlzIGN1cnJlbnRseSBpbnZhbGlkLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIDxhIGhyZWY9XCJtYWlsdG86Y29udGFjdEBzdGVyZml2ZS5jb21cIj4gY29udGFjdCBvdXIgc3VwcG9ydCB0ZWFtPC9hPiBvciB2aXNpdCBvdXIgd2Vic2l0ZSB0byByZW5ldyB5b3VyIGxpY2Vuc2UgYW5kIHJlZ2FpbiBhY2Nlc3MgdG8gb3VyIHNlcnZpY2VzLic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLyoqICovXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZWxlbWVudC50ZXh0KFwiTGljZW5jZSBcIiArIEpTT04uc3RyaW5naWZ5KGpzb24pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZENsYXNzKFwibGljZW5jZS13aWRnZXRcIik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LVwiICsgc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPHNwYW4+XCIpLmFkZENsYXNzKFwibGljZW5jZS13aWRnZXQtaWNvblwiKS5hcHBlbmQoJChcIjxpPlwiKS5hZGRDbGFzcyhpY29uKSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKCQoXCI8c3Bhbj5cIikuYWRkQ2xhc3MoXCJsaWNlbmNlLXdpZGdldC1tc2dcIikudGV4dChtc2cpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPGJyPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJChcIjxzcGFuPlwiKS5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LWRldGFpbHNcIikuYXBwZW5kKGRldGFpbHMpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGRlY2xhcmVMaWNlbmNlV2lkZ2V0KCk7XG4gICAgZnVuY3Rpb24gaXNWYWxpZE9QQ19VQV9VUkkoc3RyKSB7XG4gICAgICAgIGxldCB1cmw7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB1cmwgPSBuZXcgVVJMKHN0cik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sID09PSBcIm9wYy50Y3A6XCI7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRTdWJzY3JpcHRpb25QYXJhbWV0ZXJzID0ge1xuICAgICAgICBwdWJsaXNoaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgcmVxdWVzdGVkTGlmZXRpbWVDb3VudDogMTAwMCxcbiAgICAgICAgcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQ6IDEwLCAvLyBldmVyeSAxMCBzZWNvbmRzXG4gICAgICAgIHJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbDogMTAwMCxcbiAgICAgICAgbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2g6IDAsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgfTtcbiAgICBSRUQubm9kZXMucmVnaXN0ZXJUeXBlKFwiT3BjVWEtRW5kcG9pbnQyXCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwiY29uZmlnXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJvcGN1YSBlbmRwb2ludFwiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgbmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0My9VQS9TYW1wbGVTZXJ2ZXJcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogaXNWYWxpZE9QQ19VQV9VUkksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU2VjdXJpdHkgTW9kZVxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlOiB7IHZhbHVlOiBcIk5vbmVcIiB9LFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3k6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJOb25lXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGU6IHsgdmFsdWU6IFwiQW5vbnltb3VzXCIgfSxcbiAgICAgICAgICAgIC8vIHRvIHVzZSB3aGVuIHVzZXJJZGVudGl0eVR5cGUgaXMgVXNlck5hbWVcbiAgICAgICAgICAgIHVzZXJOYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBwYXNzd29yZDogeyB2YWx1ZTogXCJcIiwgdHlwZTogXCJwYXNzd29yZFwiIH0sXG4gICAgICAgICAgICAvLyB0byB1c2Ugd2hlbiB1c2VySWRlbnRpdHlUeXBlIGlzIENlcnRpZmljYXRlXG4gICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIHVzZXJQcml2YXRla2V5OiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICAvLyB1c2VybmFtZVxuICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGZpeGVkIG9yIGNhbiBiZSByZWFkIHRocm91Z2ggZW5kUG9pbnRcbiAgICAgICAgICAgIGNlcnRpZmljYXRlOiB7IHZhbHVlOiBcIm5cIiB9LFxuICAgICAgICAgICAgbG9jYWxmaWxlOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBsb2NhbGtleWZpbGU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICB1c2VUcmFuc3BvcnQ6IHsgdmFsdWU6IGZhbHNlLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIG1heENodW5rQ291bnQ6IHsgdmFsdWU6IDEsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgbWF4TWVzc2FnZVNpemU6IHsgdmFsdWU6IDgxOTIsIHJlcXVpcmVkOiBmYWxzZSB9LCAvLyBzaG91bGQgYmUgYXQgbGVhc3QgODE5MlxuICAgICAgICAgICAgcmVjZWl2ZUJ1ZmZlclNpemU6IHsgdmFsdWU6IDgxOTIsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgc2VuZEJ1ZmZlclNpemU6IHsgdmFsdWU6IDgxOTIsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uczoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInMxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRlZmF1bHQgU3Vic2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0U3Vic2NyaXB0aW9uUGFyYW1ldGVycyksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInMyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNsb3cgU3Vic2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdFbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZExpZmV0aW1lQ291bnQ6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudDogMjAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiA1MDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoOiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiczNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRmFzdCBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTGlmZXRpbWVDb3VudDogNDAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbDogMjUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoOiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjcmVkZW50aWFsczoge1xuICAgICAgICAgICAgdXNlcjogeyB0eXBlOiBcInRleHRcIiB9LFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHsgdHlwZTogXCJwYXNzd29yZFwiIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IHRoaXMuZW5kcG9pbnQgfHwgXCJpbnZhbGlkIGVuZHBvaW50XCI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHNhdmUoKSB7XG4gICAgICAgICAgICBjb25zdCBfc2VjdXJpdHlQb2xpY3kgPSAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5UG9saWN5XCIpO1xuICAgICAgICAgICAgY29uc3QgX3NlY3VyaXR5TW9kZSA9ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlNb2RlXCIpO1xuICAgICAgICAgICAgaWYgKF9zZWN1cml0eVBvbGljeS52YWwoKSA9PT0gXCJOb25lXCIpIHtcbiAgICAgICAgICAgICAgICBfc2VjdXJpdHlNb2RlLnRleHQoXCJOb25lXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gKCgoKCgoKCgoKCByZXRyaWV2ZSBzdWJzY3JpcHRpb24gZGF0YSApKSkpKSkpKSkpXG4gICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25zSXRlbXMgPSAkKFwiI3N1YnNjcmlwdGlvbnMtY29udGFpbmVyXCIpLmVkaXRhYmxlTGlzdChcIml0ZW1zXCIpO1xuICAgICAgICAgICAgY29uc3QgcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgbiA9ICh4KSA9PiB4O1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uc0l0ZW1zLmVhY2goZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwic1wiICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGUuZmluZChcIi5pbnB1dC1uYW1lXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6ICEhZS5maW5kKFwiLmlucHV0LWlzRGVmYXVsdFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0VuYWJsZWQ6ICEhZS5maW5kKFwiLmlucHV0LXB1Ymxpc2hpbmdFbmFibGVkXCIpLmlzKFwiOmNoZWNrZWRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRMaWZldGltZUNvdW50OiBuKGUuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRMaWZldGltZUNvdW50XCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50OiBuKGUuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudFwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWw6IG4oZS5maW5kKFwiLmlucHV0LXJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbFwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogbihlLmZpbmQoXCIuaW5wdXQtbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2hcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IG4oZS5maW5kKFwiLmlucHV0LXByaW9yaXR5XCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIC8vIGZvcmNlIHRvIGJlIHRydWVcbiAgICAgICAgICAgICAgICBhLnBhcmFtZXRlcnMucHVibGlzaGluZ0VuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChhLmlzRGVmYXVsdCAmJiBhLmlkID09PSBcInMwXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIGRlZmF1bHQgc3Vic2NyaXB0aW9uIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lID0gXCJEZWZhdWx0IFN1YnNjcmlwdGlvblwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzLnB1c2goYSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHM7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHByZXBhcmUoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IHRhYnMgPSBSRUQudGFicy5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIGlkOiBcIm5vZGUtY29uZmlnLWVuZHBvaW50LXRhYnNcIixcbiAgICAgICAgICAgICAgICBvbmNoYW5nZTogZnVuY3Rpb24gKHRhYikge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtY29uZmlnLWVuZHBvaW50LXRhYnMtY29udGVudFwiKS5jaGlsZHJlbigpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIHRhYi5pZCkuc2hvdygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhYnMuYWRkVGFiKHtcbiAgICAgICAgICAgICAgICBpZDogXCJlbmRwb2ludC10YWItY29ubmVjdGlvblwiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkNvbm5lY3Rpb25cIixcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgdGFicy5hZGRUYWIoe1xuICAgICAgICAgICAgICAgIGlkOiBcImVuZHBvaW50LXRhYi1zdWJzY3JpcHRpb25zXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiU3Vic2NyaXB0aW9uc1wiLFxuICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0YWJzLnJlc2l6ZSgpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gaGFuZGxlIFNlY3VyaXR5IGNvbnRyb2xzXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZVNlY3VyaXR5Q29udHJvbCA9IChzZWN1cml0eU1vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzZWN1cml0eU1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbnVsbDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIk5vbmVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiLnNlY3Rpb24tc2VjdXJpdHlQb2xpY3lcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlNpZ25cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJTaWduQW5kRW5jcnlwdFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3AgPSAkKFwiLnNlY3Rpb24tc2VjdXJpdHlQb2xpY3lcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcC52YWwoKSA9PT0gXCJOb25lXCIgfHwgc3AudmFsKCkgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwLnZhbChcIkJhc2ljMjU2U2hhMjU2XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuc2VjdGlvbi1zZWN1cml0eVBvbGljeVwiKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImludmFsaWQgc2VjdXJpdHlNb2RlIFwiICsgc2VjdXJpdHlNb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdXBkYXRlU2VjdXJpdHlDb250cm9sKG5vZGUuc2VjdXJpdHlNb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBfc2VjdXJpdHlNb2RlID0gJChcIiNub2RlLWNvbmZpZy1pbnB1dC1zZWN1cml0eU1vZGVcIik7XG4gICAgICAgICAgICAgICAgX3NlY3VyaXR5TW9kZS5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlY3VyaXR5TW9kZSA9IF9zZWN1cml0eU1vZGUudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNlY3VyaXR5Q29udHJvbChuZXdTZWN1cml0eU1vZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGljZW5jZVdpZGdldCA9ICQoXCIjbGljZW5jZVdpZGdldFwiKTtcbiAgICAgICAgICAgIGxpY2VuY2VXaWRnZXQubGljZW5jZVdpZGdldCh7XG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgVXNlciBJZGVudGl0eSBDb250cm9sc1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdXRoUm93ID0gJChcIi5zZWN0aW9uLXVzZXJJZGVudGl0eVR5cGUtVXNlck5hbWVcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VydFJvdyA9ICQoXCIuc2VjdGlvbi11c2VySWRlbnRpdHlUeXBlLUNlcnRpZmljYXRlXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZUlkZW50aXR5Q29udHJvbHMgPSAodXNlcklkZW50aXR5VHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlID0gdXNlcklkZW50aXR5VHlwZSB8fCBcIkFub255bW91c1wiO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHVzZXJJZGVudGl0eVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJBbm9ueW1vdXNcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJOYW1lXCIpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtY29uZmlnLWlucHV0LXBhc3N3b3JkXCIpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoUm93LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0Um93LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJVc2VyTmFtZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhSb3cuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRSb3cuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkNlcnRpZmljYXRlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyTmFtZVwiKS52YWwoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1pbnB1dC1wYXNzd29yZFwiKS52YWwoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydFJvdy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFJvdy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW52YWxpZCB1c2VySWRlbnRpdHlUeXBlIFwiICsgdXNlcklkZW50aXR5VHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHVwZGF0ZUlkZW50aXR5Q29udHJvbHMobm9kZS51c2VySWRlbnRpdHlUeXBlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBfdXNlcklkZW50aXR5VHlwZSA9ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlcklkZW50aXR5VHlwZVwiKTtcbiAgICAgICAgICAgICAgICBfdXNlcklkZW50aXR5VHlwZS5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0lkZW50aXR5VHlwZSA9IF91c2VySWRlbnRpdHlUeXBlLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJZGVudGl0eUNvbnRyb2xzKG5ld0lkZW50aXR5VHlwZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYWR2YW5jZWQgY29udHJvbHNcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1BZHZhbmNlZFwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgJChcIiN0b2dnbGVBZHZhbmNlZFNlY3Rpb25cIikub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKFwiY2hlY2tlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQsIHNob3cgdGhlIGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLUFkdmFuY2VkXCIpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaGlkZSBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLUFkdmFuY2VkXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBUZXN0IGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgbWFuYWdlQVBJQ2FsbChcImNvbm5lY3Rpb25cIiwgJChcIiN0ZXN0LWNvbm5lY3Rpb25cIiksICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvb3BjdWEtZW5kcG9pbnQyL3Rlc3QtY29ubmVjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1lbmRwb2ludFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eU1vZGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlNb2RlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5UG9saWN5XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlcklkZW50aXR5VHlwZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyTmFtZTogJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyTmFtZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1wYXNzd29yZFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlckNlcnRpZmljYXRlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJQcml2YXRla2V5OiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJQcml2YXRla2V5XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLyBub3QgdGVzdGVkIHlldCAuLi46XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU6ICQoXCIjbm9kZS1pbnB1dC1jZXJ0aWZpY2F0ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGZpbGU6ICQoXCIjbm9kZS1pbnB1dC1sb2NhbGZpbGVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxrZXlmaWxlOiAkKFwiI25vZGUtaW5wdXQtbG9jYWxrZXlmaWxlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVRyYW5zcG9ydDogJChcIiNub2RlLWlucHV0LXVzZVRyYW5zcG9ydFwiKS5wcm9wKFwiY2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhDaHVua0NvdW50OiAkKFwiI25vZGUtaW5wdXQtbWF4Q2h1bmtDb3VudFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhNZXNzYWdlU2l6ZTogJChcIiNub2RlLWlucHV0LW1heE1lc3NhZ2VTaXplXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVCdWZmZXJTaXplOiAkKFwiI25vZGUtaW5wdXQtcmVjZWl2ZUJ1ZmZlclNpemVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZEJ1ZmZlclNpemU6ICQoXCIjbm9kZS1pbnB1dC1zZW5kQnVmZmVyU2l6ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksICgpID0+IHsgfSk7XG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyAgSW5zdGFsbCBzdWJzY3JpcHRpb25zIExpc3QgbWFuYWdlbWVudFxuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplVG9waWNzID0gKHRvcGljLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3V2lkdGggPSB0b3BpYy53aWR0aCgpIHx8IDEwMDtcbiAgICAgICAgICAgICAgICAgICAgdG9waWMuZmluZChcImxhYmVsXCIpLnR5cGVkSW5wdXQoXCJ3aWR0aFwiLCBuZXdXaWR0aCAtIDE1KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbkxpc3QgPSAkKFwiI3N1YnNjcmlwdGlvbnMtY29udGFpbmVyXCIpXG4gICAgICAgICAgICAgICAgICAgIC5jc3MoeyBcIm1pbi1oZWlnaHRcIjogXCIxNTBweFwiLCBcIm1pbi13aWR0aFwiOiBcIjI2MHB4XCIgfSlcbiAgICAgICAgICAgICAgICAgICAgLmVkaXRhYmxlTGlzdCh7XG4gICAgICAgICAgICAgICAgICAgIGFkZEl0ZW06IChjb250YWluZXIsIGluZGV4LCBkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gJChcIi50ZW1wbGF0ZVwiKS5jbG9uZSgpLmFwcGVuZFRvKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHIoXCJpZFwiKS5yZW1vdmVDbGFzcyhcImhpZGVcIikucmVtb3ZlQ2xhc3MoXCJ0ZW1wbGF0ZVwiKS5hdHRyKFwiZGF0YS1pXCIsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1uYW1lXCIpLnZhbChfZGF0YS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWxcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5yZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTGlmZXRpbWVDb3VudFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5yZXF1ZXN0ZWRMaWZldGltZUNvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaCB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1wcmlvcml0eVwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5wcmlvcml0eSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5zdWJzY3JpcHRpb24taWRcIikudGV4dChcIlwiICsgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kYXRhLmlzRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1uYW1lXCIpLnByb3AoXCJyZWFkb25seVwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1pc0RlZmF1bHRcIikucHJvcChcImNoZWNrZWRcIiwgX2RhdGEuaXNEZWZhdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGRlZmF1bHQgc3Vic2NyaXB0aW9uIGNhbm5vdCBiZSBhY2NpZGVudGFsbHkgcmVtb3ZlZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kYXRhLmlzRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKFwiLnJlZC11aS1lZGl0YWJsZUxpc3QtaXRlbS1yZW1vdmVcIikuYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudC5maW5kKFwiLmlucHV0LWlzRGVmYXVsdFwiKS5wcm9wKFwiZGlzYWJsZWRcIiwgdHJ1ZSksIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy8gc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlbW92YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzaXplSXRlbTogcmVzaXplVG9waWNzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IEFkZFN1YnNjcmlwdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IG5vZGUuc3Vic2NyaXB0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgbWlzc2luZyBkZWZhdWx0IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGVmYXVsdCBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFN1YnNjcmlwdGlvblBhcmFtZXRlcnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5lZGl0YWJsZUxpc3QoXCJlbXB0eVwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2NyaXB0aW9uLmlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5lZGl0YWJsZUxpc3QoXCJhZGRJdGVtXCIsIHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIEFkZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
7
|
+
function _0x1fbf(_0x12ddfe,_0x124669){const _0x27055e=_0x2705();return _0x1fbf=function(_0x1fbf8d,_0x3de7a6){_0x1fbf8d=_0x1fbf8d-0x169;let _0x5bb5fa=_0x27055e[_0x1fbf8d];return _0x5bb5fa;},_0x1fbf(_0x12ddfe,_0x124669);}(function(_0x385a78,_0x2cea18){const _0x4319dc=_0x1fbf,_0x36834b=_0x385a78();while(!![]){try{const _0x29afdc=-parseInt(_0x4319dc(0x1c9))/0x1*(-parseInt(_0x4319dc(0x1e2))/0x2)+-parseInt(_0x4319dc(0x190))/0x3*(-parseInt(_0x4319dc(0x216))/0x4)+parseInt(_0x4319dc(0x171))/0x5+-parseInt(_0x4319dc(0x19f))/0x6+-parseInt(_0x4319dc(0x1a9))/0x7*(-parseInt(_0x4319dc(0x1d8))/0x8)+parseInt(_0x4319dc(0x198))/0x9+parseInt(_0x4319dc(0x17c))/0xa*(-parseInt(_0x4319dc(0x179))/0xb);if(_0x29afdc===_0x2cea18)break;else _0x36834b['push'](_0x36834b['shift']());}catch(_0x3792fe){_0x36834b['push'](_0x36834b['shift']());}}}(_0x2705,0xe7db1),(function(){'use strict';const _0x1f52bc=_0x1fbf;function _0x20a403(_0x8611b5,_0x587680,_0x17f30e,_0x5b10f2){function _0x1c63d6(_0x4e018f){return _0x4e018f instanceof _0x17f30e?_0x4e018f:new _0x17f30e(function(_0x218e24){_0x218e24(_0x4e018f);});}return new(_0x17f30e||(_0x17f30e=Promise))(function(_0x510360,_0x172bb1){const _0x27e751=_0x1fbf;function _0x4bfcdb(_0x518c5e){const _0x41ec55=_0x1fbf;try{_0x35d4bc(_0x5b10f2[_0x41ec55(0x1df)](_0x518c5e));}catch(_0x2b7686){_0x172bb1(_0x2b7686);}}function _0x3e62fd(_0x5d8b9a){const _0x520157=_0x1fbf;try{_0x35d4bc(_0x5b10f2[_0x520157(0x1fb)](_0x5d8b9a));}catch(_0x49eeeb){_0x172bb1(_0x49eeeb);}}function _0x35d4bc(_0x3871f3){const _0x297419=_0x1fbf;_0x3871f3[_0x297419(0x218)]?_0x510360(_0x3871f3[_0x297419(0x1cc)]):_0x1c63d6(_0x3871f3[_0x297419(0x1cc)])['then'](_0x4bfcdb,_0x3e62fd);}_0x35d4bc((_0x5b10f2=_0x5b10f2[_0x27e751(0x209)](_0x8611b5,_0x587680||[]))['next']());});}typeof SuppressedError===_0x1f52bc(0x20c)?SuppressedError:function(_0x2f5e6e,_0x317a78,_0x461032){const _0x477195=_0x1f52bc;var _0x361cdc=new Error(_0x461032);return _0x361cdc[_0x477195(0x1e7)]=_0x477195(0x1fc),_0x361cdc[_0x477195(0x21c)]=_0x2f5e6e,_0x361cdc[_0x477195(0x1ae)]=_0x317a78,_0x361cdc;};function _0x592f14(_0x454c5c,_0x13d5fa,_0x201e55,_0x1e54b8){const _0x422409=_0x1f52bc,_0x44c70e=$('#'+_0x454c5c+'-success'),_0x16bdf9=$('#'+_0x454c5c+_0x422409(0x1e1)),_0x2bc6ce=$('#'+_0x454c5c+'-pending'),_0x8246c0=$('#'+_0x454c5c+'-messages');let _0x5ddca1=![];_0x44c70e[_0x422409(0x1e9)](),_0x16bdf9['hide'](),_0x2bc6ce[_0x422409(0x1e9)](),_0x13d5fa['on'](_0x422409(0x20e),()=>{const _0x2dfcab=_0x422409;if(_0x5ddca1)return;_0x5ddca1=!![],_0x2bc6ce[_0x2dfcab(0x16c)](_0x2dfcab(0x1e9)),_0x2bc6ce[_0x2dfcab(0x1d5)](_0x2dfcab(0x1ca)),_0x44c70e['addClass']('hide'),_0x16bdf9['addClass'](_0x2dfcab(0x1e9)),_0x8246c0[_0x2dfcab(0x1d5)]('');const {body:_0x942bf4,url:_0x35ba20}=_0x201e55();fetch(_0x35ba20,{'method':_0x2dfcab(0x19e),'headers':{'Content-Type':_0x2dfcab(0x1fd)},'body':JSON['stringify'](_0x942bf4)})[_0x2dfcab(0x18d)](_0x5e0478=>_0x5e0478[_0x2dfcab(0x205)]())['then'](_0x3cb2b7=>{const _0x2cc40a=_0x2dfcab;_0x5ddca1=![],_0x2bc6ce[_0x2cc40a(0x1e9)](),console[_0x2cc40a(0x1b3)](JSON[_0x2cc40a(0x18f)](_0x3cb2b7,null,'\x20'));if(_0x3cb2b7[_0x2cc40a(0x1d6)]==='ok')_0x44c70e[_0x2cc40a(0x16c)](_0x2cc40a(0x1e9)),_0x16bdf9[_0x2cc40a(0x176)](_0x2cc40a(0x1e9)),_0x8246c0[_0x2cc40a(0x1d5)](_0x3cb2b7[_0x2cc40a(0x1c5)][_0x2cc40a(0x1b7)]('\x0a','<br>')),_0x1e54b8(null,_0x3cb2b7);else{const _0x88eedb=_0x1780ac=>!_0x1780ac?'':_0x1780ac[_0x2cc40a(0x1dc)]('\x0a')[_0x2cc40a(0x20f)](_0x598fce=>_0x2cc40a(0x1a2)+_0x598fce+_0x2cc40a(0x1f2))['join']('\x0a'),_0x2d0a71=_0x3cabe0=>Array[_0x2cc40a(0x1ad)](_0x3cabe0)?_0x3cabe0['map'](_0x88eedb)[_0x2cc40a(0x1a6)]('\x0a'):_0x88eedb(_0x3cabe0);_0x44c70e[_0x2cc40a(0x176)](_0x2cc40a(0x1e9)),_0x16bdf9[_0x2cc40a(0x16c)]('hide'),_0x8246c0[_0x2cc40a(0x1d5)](_0x2d0a71(_0x3cb2b7[_0x2cc40a(0x1c5)])+_0x2d0a71(_0x3cb2b7[_0x2cc40a(0x1be)])),_0x1e54b8(new Error(_0x3cb2b7['result']),_0x3cb2b7);}})[_0x2dfcab(0x1db)](_0x4ccfd6=>{const _0x4753a3=_0x2dfcab;_0x5ddca1=![],_0x2bc6ce['addClass']('hide'),_0x44c70e['addClass'](_0x4753a3(0x1e9)),_0x16bdf9[_0x4753a3(0x16c)](_0x4753a3(0x1e9)),_0x8246c0['html'](_0x4753a3(0x1b8)+_0x4ccfd6[_0x4753a3(0x1c5)]),console[_0x4753a3(0x1b3)]('err',_0x4ccfd6),_0x1e54b8(_0x4ccfd6,null);});});}const _0x421de9=_0x1f52bc(0x1d4),_0x1a8f8f='pk_live_51HsE1sBCNccbzsVzt7zaq2uv20pkryWllAzvZgZd5AhwFI9A3qBIeOJvJwQF08lDoLpFqLjwmyA79wnPnYLsvKjt009f00VpCW';function _0x28332a(_0x4d9579=''){return _0x20a403(this,void 0x0,void 0x0,function*(){const _0x5cb498=_0x1fbf,_0x42ef8e=_0x4d9579+_0x5cb498(0x185),_0x273447=_0x42ef8e+_0x5cb498(0x19b),_0x4c4bd6=yield fetch(_0x273447,{'method':_0x5cb498(0x19e),'headers':{'Content-Type':_0x5cb498(0x1fd)}});if(_0x4c4bd6['status']!==0xc8)return console['log'](_0x5cb498(0x189),_0x4c4bd6[_0x5cb498(0x18a)],_0x4c4bd6[_0x5cb498(0x195)]),{};const _0x406ea5=yield _0x4c4bd6[_0x5cb498(0x205)]();return _0x406ea5;});}const _0x393e94=()=>{$['widget']('sterfive.licenceWidget',{'options':{'baseUrl':''},'_create'(){const _0x20ccf1=_0x1fbf,_0x52ac0b=this;_0x28332a(_0x52ac0b[_0x20ccf1(0x20d)])[_0x20ccf1(0x18d)](_0xbe910a=>{const _0x4252c0=_0x20ccf1;let _0x4a5e5b='',_0x485cce='',_0x544fdd='';const _0x5260f3=_0xbe910a[_0x4252c0(0x18a)];switch(_0x5260f3){case _0x4252c0(0x169):_0x4a5e5b='fa\x20fa-check-circle';_0xbe910a['isDemo']?(_0x485cce=_0x4252c0(0x1bf),_0x544fdd=_0x4252c0(0x172)):(_0x485cce='Your\x20licence\x20is\x20valid.',_0x544fdd='');break;case _0x4252c0(0x18e):_0x4a5e5b=_0x4252c0(0x183),_0x485cce=_0x4252c0(0x208),_0x544fdd=_0x4252c0(0x1f6);break;case _0x4252c0(0x211):default:_0x4a5e5b=_0x4252c0(0x1c8),_0x485cce=_0x4252c0(0x202),_0x544fdd='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.';break;}this[_0x4252c0(0x1a5)]['addClass'](_0x4252c0(0x1c7)),this[_0x4252c0(0x1a5)][_0x4252c0(0x176)](_0x4252c0(0x1a0)+_0x5260f3),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($(_0x4252c0(0x21a))[_0x4252c0(0x176)](_0x4252c0(0x1a4))[_0x4252c0(0x188)]($('<i>')[_0x4252c0(0x176)](_0x4a5e5b))),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($(_0x4252c0(0x21a))[_0x4252c0(0x176)](_0x4252c0(0x1ba))[_0x4252c0(0x1e6)](_0x485cce)),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($(_0x4252c0(0x1aa))),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($('<span>')[_0x4252c0(0x176)]('licence-widget-details')[_0x4252c0(0x188)](_0x544fdd));if(_0x5260f3===_0x4252c0(0x18e)||_0x5260f3==='FAILED'){const _0xbbf02d=$(_0x4252c0(0x16b));_0xbbf02d[_0x4252c0(0x1fe)]('id',_0x4252c0(0x206)),_0xbbf02d[_0x4252c0(0x1fe)]('class',_0x4252c0(0x1a7)),_0xbbf02d[_0x4252c0(0x1fe)](_0x4252c0(0x214),_0x4252c0(0x180)),_0xbbf02d['text'](_0x4252c0(0x204)),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)](_0xbbf02d);const _0x513c21=document[_0x4252c0(0x178)](_0x4252c0(0x1b9));_0x513c21['src']=_0x4252c0(0x20b),_0x513c21[_0x4252c0(0x16e)]=!![],$(_0x4252c0(0x1d3))[_0x4252c0(0x188)](_0x513c21);const _0x4224a8=$(_0x4252c0(0x1d1));_0x4224a8[_0x4252c0(0x1fe)](_0x4252c0(0x174),_0x421de9),_0x4224a8[_0x4252c0(0x1fe)](_0x4252c0(0x17b),_0x1a8f8f),_0x4224a8[_0x4252c0(0x1fe)](_0x4252c0(0x214),_0x4252c0(0x213)),_0x4224a8['hide'](),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)](_0x4224a8),_0xbbf02d['on'](_0x4252c0(0x20e),()=>{const _0x4b8ced=_0x4252c0;_0x4224a8[_0x4b8ced(0x1ea)](),_0xbbf02d[_0x4b8ced(0x1e9)](),this[_0x4b8ced(0x1a5)][_0x4b8ced(0x1fe)]('style','height:\x20100%\x20!important;');});}})[_0x20ccf1(0x1db)](_0x165bd8=>{const _0x467bc8=_0x20ccf1;console[_0x467bc8(0x1b3)](_0x165bd8);});}});};_0x393e94();function _0x553970(_0x565315){let _0x26f5cf;try{_0x26f5cf=new URL(_0x565315);}catch(_0x1f7924){return![];}return _0x26f5cf['protocol']==='opc.tcp:';}const _0x36d8d0={'publishingEnabled':!![],'requestedLifetimeCount':0x3e8,'requestedMaxKeepAliveCount':0xa,'requestedPublishingInterval':0x3e8,'maxNotificationsPerPublish':0x0,'priority':0x64};RED[_0x1f52bc(0x181)][_0x1f52bc(0x197)](_0x1f52bc(0x199),{'category':_0x1f52bc(0x184),'paletteLabel':_0x1f52bc(0x207),'defaults':{'name':{'value':''},'endpoint':{'value':'opc.tcp://opcuademo.sterfive.com:26543/UA/SampleServer','required':!![],'validate':_0x553970},'securityMode':{'value':'None'},'securityPolicy':{'value':_0x1f52bc(0x17e),'validate':_0xe0edc9=>{if(!_0xe0edc9)return![];return!![];}},'userIdentityType':{'value':_0x1f52bc(0x16d)},'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':_0x1f52bc(0x1b2),'isDefault':!![],'parameters':Object['assign']({},_0x36d8d0)},{'id':'s2','name':_0x1f52bc(0x17a),'isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0x64,'requestedMaxKeepAliveCount':0x14,'requestedPublishingInterval':0x1388,'maxNotificationsPerPublish':0x64,'priority':0xa}},{'id':'s3','name':'Fast\x20Subscription','isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0xfa0,'requestedMaxKeepAliveCount':0x64,'requestedPublishingInterval':0xfa,'maxNotificationsPerPublish':0x64,'priority':0xc8}}],'required':![]}},'credentials':{'user':{'type':_0x1f52bc(0x1e6)},'password':{'type':_0x1f52bc(0x1e0)}},'label':function(){const _0x207723=_0x1f52bc;return this[_0x207723(0x1e7)]||this[_0x207723(0x19d)]||'invalid\x20endpoint';},'oneditsave'(){const _0x57c886=_0x1f52bc,_0x10e164=$(_0x57c886(0x17f)),_0x1e074b=$(_0x57c886(0x212));_0x10e164[_0x57c886(0x20a)]()==='None'&&_0x1e074b[_0x57c886(0x1e6)](_0x57c886(0x17e));const _0x158910=$(_0x57c886(0x173))[_0x57c886(0x1c6)](_0x57c886(0x1d7)),_0x168089=[],_0x3a45c4=_0xfa70fb=>_0xfa70fb;_0x158910[_0x57c886(0x217)](function(_0x4e8449,_0x49eb80){const _0x2873e1=_0x57c886,_0x1e1ff2=$(this),_0x1c1eca={'id':'s'+_0x4e8449,'name':_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x196))[_0x2873e1(0x20a)](),'isDefault':!!_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x16a))[_0x2873e1(0x20a)](),'parameters':{'publishingEnabled':!!_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x1f9))['is'](':checked'),'requestedLifetimeCount':_0x3a45c4(_0x1e1ff2['find'](_0x2873e1(0x191))['val']()),'requestedMaxKeepAliveCount':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)]('.input-requestedMaxKeepAliveCount')[_0x2873e1(0x20a)]()),'requestedPublishingInterval':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x187))['val']()),'maxNotificationsPerPublish':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x186))['val']()),'priority':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x1f5))['val']())}};_0x1c1eca[_0x2873e1(0x1f3)]['publishingEnabled']=!![],_0x1c1eca[_0x2873e1(0x1d2)]&&_0x1c1eca['id']==='s0'&&(_0x1c1eca['name']=_0x2873e1(0x1b2)),_0x168089[_0x2873e1(0x1b0)](_0x1c1eca);}),this[_0x57c886(0x1cd)]=_0x168089;},'oneditprepare'(){const _0x1a7ff6=_0x1f52bc,_0x25805f=this,_0x31df80=RED[_0x1a7ff6(0x1a8)][_0x1a7ff6(0x1ee)]({'id':_0x1a7ff6(0x1e5),'onchange':function(_0x479d38){const _0x2e7cfe=_0x1a7ff6;$(_0x2e7cfe(0x1a3))[_0x2e7cfe(0x201)]()[_0x2e7cfe(0x1e9)](),$('#'+_0x479d38['id'])[_0x2e7cfe(0x1ea)]();}});_0x31df80['addTab']({'id':'endpoint-tab-connection','label':_0x1a7ff6(0x1cf)},0x0),_0x31df80['addTab']({'id':'endpoint-tab-subscriptions','label':_0x1a7ff6(0x18c)},0x1),setTimeout(function(){const _0x1e7ca6=_0x1a7ff6;_0x31df80[_0x1e7ca6(0x1b5)]();},0x0);{const _0x55f908=_0x537b17=>{const _0x148b82=_0x1a7ff6;switch(_0x537b17){case null:case undefined:case'':case'None':$('.section-securityPolicy')[_0x148b82(0x1e9)]();break;case'Sign':case _0x148b82(0x1e3):{const _0x23f8ca=$(_0x148b82(0x1ab));(_0x23f8ca[_0x148b82(0x20a)]()===_0x148b82(0x17e)||_0x23f8ca[_0x148b82(0x20a)]()==='')&&_0x23f8ca[_0x148b82(0x20a)](_0x148b82(0x1c4)),$('.section-securityPolicy')[_0x148b82(0x1ea)]();}break;default:console[_0x148b82(0x1b3)](_0x148b82(0x177)+_0x537b17);}};_0x55f908(_0x25805f[_0x1a7ff6(0x1a1)]);const _0x4d602b=$(_0x1a7ff6(0x212));_0x4d602b['on'](_0x1a7ff6(0x17d),()=>{const _0x2c0ebf=_0x4d602b['val']();_0x55f908(_0x2c0ebf);});}const _0x26f179=$('#licenceWidget');_0x26f179[_0x1a7ff6(0x19a)]({'baseUrl':''});{const _0x20749f=$(_0x1a7ff6(0x215)),_0x4a0494=$(_0x1a7ff6(0x1f7)),_0x20e3b4=_0x2cf3e2=>{const _0xd92134=_0x1a7ff6;_0x2cf3e2=_0x2cf3e2||_0xd92134(0x16d);switch(_0x2cf3e2){case _0xd92134(0x16d):$(_0xd92134(0x21b))[_0xd92134(0x20a)](''),$(_0xd92134(0x175))['val'](''),_0x20749f[_0xd92134(0x1e9)](),_0x4a0494['hide']();break;case _0xd92134(0x1de):_0x20749f['show'](),_0x4a0494[_0xd92134(0x1e9)]();break;case'Certificate':$(_0xd92134(0x21b))[_0xd92134(0x20a)](''),$(_0xd92134(0x175))[_0xd92134(0x20a)](''),_0x4a0494[_0xd92134(0x1ea)](),_0x20749f[_0xd92134(0x1e9)]();break;default:console['log'](_0xd92134(0x1d9)+_0x2cf3e2);}};_0x20e3b4(_0x25805f['userIdentityType']);const _0x4ba55a=$('#node-config-input-userIdentityType');_0x4ba55a['on']('change',()=>{const _0x5aa33f=_0x1a7ff6,_0x199634=_0x4ba55a[_0x5aa33f(0x20a)]();_0x20e3b4(_0x199634);});}{$(_0x1a7ff6(0x1fa))[_0x1a7ff6(0x1e9)](),$(_0x1a7ff6(0x170))['on'](_0x1a7ff6(0x17d),function(){const _0x1884ce=_0x1a7ff6;$(this)[_0x1884ce(0x1b4)]('checked')?$(_0x1884ce(0x1fa))[_0x1884ce(0x1ea)]():$(_0x1884ce(0x1fa))[_0x1884ce(0x1e9)]();});}{$(_0x1a7ff6(0x1bb))['on'](_0x1a7ff6(0x20e),()=>_0x20a403(this,void 0x0,void 0x0,function*(){const _0x1996c3=_0x1a7ff6,_0x5b8969=yield fetch(_0x1996c3(0x1c0)),_0x326236=yield _0x5b8969[_0x1996c3(0x205)](),_0x556801=JSON[_0x1996c3(0x18f)](_0x326236,null,'\x20');alert(_0x556801);}));}{_0x592f14(_0x1a7ff6(0x192),$(_0x1a7ff6(0x194)),()=>({'url':_0x1a7ff6(0x1c1),'body':{'endpointNode':{'id':_0x25805f['id'],'endpoint':$(_0x1a7ff6(0x1f0))[_0x1a7ff6(0x20a)](),'securityMode':$('#node-config-input-securityMode')[_0x1a7ff6(0x20a)](),'securityPolicy':$(_0x1a7ff6(0x17f))[_0x1a7ff6(0x20a)](),'userIdentityType':$('#node-config-input-userIdentityType')['val'](),'userName':$(_0x1a7ff6(0x21b))[_0x1a7ff6(0x20a)](),'password':$(_0x1a7ff6(0x175))[_0x1a7ff6(0x20a)](),'userCertificate':$(_0x1a7ff6(0x1eb))[_0x1a7ff6(0x20a)](),'userPrivatekey':$(_0x1a7ff6(0x18b))[_0x1a7ff6(0x20a)](),'certificate':$(_0x1a7ff6(0x1dd))['val'](),'localfile':$(_0x1a7ff6(0x193))[_0x1a7ff6(0x20a)](),'localkeyfile':$(_0x1a7ff6(0x1b1))[_0x1a7ff6(0x20a)](),'useTransport':$(_0x1a7ff6(0x210))[_0x1a7ff6(0x1b4)](_0x1a7ff6(0x1cb)),'maxChunkCount':$(_0x1a7ff6(0x1f8))[_0x1a7ff6(0x20a)](),'maxMessageSize':$(_0x1a7ff6(0x1bd))[_0x1a7ff6(0x20a)](),'receiveBufferSize':$(_0x1a7ff6(0x16f))[_0x1a7ff6(0x20a)](),'sendBufferSize':$('#node-input-sendBufferSize')[_0x1a7ff6(0x20a)]()}}}),()=>{});}{const _0x3d661a=(_0x2bde7a,_0xe26c51)=>{const _0x53da91=_0x1a7ff6;var _0x51f8bb=_0x2bde7a[_0x53da91(0x1b6)]()||0x64;_0x2bde7a[_0x53da91(0x1ff)](_0x53da91(0x1ac))['typedInput']('width',_0x51f8bb-0xf);},_0xc7313e=$(_0x1a7ff6(0x173))['css']({'min-height':_0x1a7ff6(0x1c3),'min-width':_0x1a7ff6(0x203)})[_0x1a7ff6(0x1c6)]({'addItem':(_0x5626b4,_0x536e57,_0x2903fb)=>{const _0x487f60=_0x1a7ff6,_0x1f0000=_0x2903fb,_0x2e81c0=$(_0x487f60(0x1ed))[_0x487f60(0x1ce)]()['appendTo'](_0x5626b4);_0x2e81c0[_0x487f60(0x1e8)]('id')[_0x487f60(0x16c)](_0x487f60(0x1e9))[_0x487f60(0x16c)](_0x487f60(0x1d0))['attr'](_0x487f60(0x1ec),_0x536e57),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x196))[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1e7)]),_0x2e81c0['find']('.input-requestedPublishingInterval')[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1f3)][_0x487f60(0x200)]),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x219))[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1f3)]['requestedMaxKeepAliveCount']),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x191))[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1f3)][_0x487f60(0x19c)]),_0x2e81c0['find']('.input-maxNotificationsPerPublish')[_0x487f60(0x20a)](_0x1f0000['parameters'][_0x487f60(0x182)]||0x0),_0x2e81c0['find'](_0x487f60(0x1f5))[_0x487f60(0x20a)](_0x1f0000['parameters'][_0x487f60(0x1ef)]||0x0),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x1e4))['text'](''+_0x536e57),_0x1f0000[_0x487f60(0x1d2)]&&_0x2e81c0['find'](_0x487f60(0x196))['prop']('readonly',!![]),_0x2e81c0[_0x487f60(0x1ff)]('.input-isDefault')[_0x487f60(0x1b4)]('checked',_0x1f0000[_0x487f60(0x1d2)]),_0x1f0000['isDefault']&&(_0x5626b4['find'](_0x487f60(0x1bc))[_0x487f60(0x176)](_0x487f60(0x1e9)),setTimeout(()=>_0x2e81c0['find'](_0x487f60(0x16a))[_0x487f60(0x1b4)](_0x487f60(0x1c2),!![]),0xa));},'removable':!![],'resizeItem':_0x3d661a}),_0x1084a7=()=>{const _0x463fef=_0x1a7ff6,_0x552db1=_0x25805f[_0x463fef(0x1cd)]||[];_0x552db1[_0x463fef(0x1da)]===0x0&&_0x552db1[_0x463fef(0x1b0)]({'id':'s1','name':_0x463fef(0x1b2),'isDefault':!![],'parameters':Object[_0x463fef(0x1f1)]({},_0x36d8d0)});_0xc7313e[_0x463fef(0x1c6)](_0x463fef(0x1af));for(const _0x42270f of _0x552db1){_0xc7313e[_0x463fef(0x1c6)](_0x463fef(0x1f4),_0x42270f);}};_0x1084a7();}}});}()));function _0x2705(){const _0x3727b7=['Connection','template','<stripe-pricing-table/>','isDefault','head','prctbl_1OJt49BCNccbzsVzkaANOgFL','html','result','items','11161944xuJzui','invalid\x20userIdentityType\x20','length','catch','split','#node-input-certificate','UserName','next','password','-failure','1838wisSRe','SignAndEncrypt','.subscription-id','node-config-endpoint-tabs','text','name','removeAttr','hide','show','#node-config-input-userCertificate','data-i','.template','create','priority','#node-config-input-endpoint','assign','</p>','parameters','addItem','.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.','.section-userIdentityType-Certificate','#node-input-maxChunkCount','.input-publishingEnabled','#section-Advanced','throw','SuppressedError','application/json','attr','find','requestedPublishingInterval','children','Your\x20license\x20is\x20currently\x20invalid.','260px','Subscribe','json','subscribe-button','opcua\x20endpoint','Licence\x20expired','apply','val','https://js.stripe.com/v3/pricing-table.js','function','baseUrl','click','map','#node-input-useTransport','FAILED','#node-config-input-securityMode','height:\x20100%;max-height:\x20100%;','style','.section-userIdentityType-UserName','4IXxtqN','each','done','.input-requestedMaxKeepAliveCount','<span>','#node-config-input-userName','error','AUTHORIZED','.input-isDefault','<button/>','removeClass','Anonymous','async','#node-input-receiveBufferSize','#toggleAdvancedSection','2730315uzSuNq','This\x20is\x20a\x20demo\x20licence\x20and\x20will\x20expire\x20soon.\x20Please\x20contact\x20our\x20support\x20team\x20or\x20visit\x20our\x20website\x20to\x20acquire\x20a\x20license\x20and\x20gain\x20access\x20to\x20full\x20functionality.','#subscriptions-container','pricing-table-id','#node-config-input-password','addClass','invalid\x20securityMode\x20','createElement','3551768OgRdup','Slow\x20Subscription','publishable-key','80mjALRf','change','None','#node-config-input-securityPolicy','margin-top:\x2020px;','nodes','maxNotificationsPerPublish','fa\x20fa-calendar-time','config','/opcua-endpoint2','.input-maxNotificationsPerPublish','.input-requestedPublishingInterval','append','fetching\x20failed\x20with\x20error','status','#node-config-input-userPrivatekey','Subscriptions','then','EXPIRED','stringify','1210914UBKegx','.input-requestedLifetimeCount','connection','#node-input-localfile','#test-connection','statusText','.input-name','registerType','7140402WYBMsI','OpcUa-Endpoint2','licenceWidget','/licenceInfo','requestedLifetimeCount','endpoint','POST','3626940SAHGvA','licence-widget-','securityMode','<p>','#node-config-endpoint-tabs-content','licence-widget-icon','element','join','btn\x20btn-primary','tabs','7ISVvKu','<br>','.section-securityPolicy','label','isArray','suppressed','empty','push','#node-input-localkeyfile','Default\x20Subscription','log','prop','resize','width','replace','internal\x20error\x20','script','licence-widget-msg','#checkCertificate','.red-ui-editableList-item-remove','#node-input-maxMessageSize','extra','Demo\x20licence','/opcua-endpoint2/client_certificate.json','/opcua-endpoint2/test-connection','disabled','150px','Basic256Sha256','message','editableList','licence-widget','fa\x20fa-exclamation-circle','1087PwWEWv','Testing\x20Connection\x20...','checked','value','subscriptions','clone'];_0x2705=function(){return _0x3727b7;};return _0x2705();}
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgyMGE0MDMiLCJfMHg4NjExYjUiLCJfMHg1ODc2ODAiLCJfMHgxN2YzMGUiLCJfMHg1YjEwZjIiLCJfMHgxYzYzZDYiLCJfMHg0ZTAxOGYiLCJfMHgyMThlMjQiLCJQcm9taXNlIiwiXzB4NTEwMzYwIiwiXzB4MTcyYmIxIiwiXzB4NGJmY2RiIiwiXzB4NTE4YzVlIiwiXzB4MzVkNGJjIiwiXzB4MmI3Njg2IiwiXzB4M2U2MmZkIiwiXzB4NWQ4YjlhIiwiXzB4NDllZWViIiwiXzB4Mzg3MWYzIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MmY1ZTZlIiwiXzB4MzE3YTc4IiwiXzB4NDYxMDMyIiwiXzB4MzYxY2RjIiwiRXJyb3IiLCJfMHg1OTJmMTQiLCJfMHg0NTRjNWMiLCJfMHgxM2Q1ZmEiLCJfMHgyMDFlNTUiLCJfMHgxZTU0YjgiLCJfMHg0NGM3MGUiLCIkIiwiXzB4MTZiZGY5IiwiXzB4MmJjNmNlIiwiXzB4ODI0NmMwIiwiXzB4NWRkY2ExIiwiYm9keSIsIl8weDk0MmJmNCIsInVybCIsIl8weDM1YmEyMCIsImZldGNoIiwiSlNPTiIsIl8weDVlMDQ3OCIsIl8weDNjYjJiNyIsImNvbnNvbGUiLCJfMHg4OGVlZGIiLCJfMHgxNzgwYWMiLCJfMHg1OThmY2UiLCJfMHgyZDBhNzEiLCJfMHgzY2FiZTAiLCJBcnJheSIsIl8weDRjY2ZkNiIsIl8weDQyMWRlOSIsIl8weDFhOGY4ZiIsIl8weDI4MzMyYSIsIl8weDRkOTU3OSIsIl8weDQyZWY4ZSIsIl8weDI3MzQ0NyIsIl8weDRjNGJkNiIsIl8weDQwNmVhNSIsIl8weDM5M2U5NCIsIl8weDUyYWMwYiIsIl8weGJlOTEwYSIsIl8weDRhNWU1YiIsIl8weDQ4NWNjZSIsIl8weDU0NGZkZCIsIl8weDUyNjBmMyIsIl8weGJiZjAyZCIsIl8weDUxM2MyMSIsImRvY3VtZW50IiwiXzB4NDIyNGE4IiwiXzB4MTY1YmQ4IiwiXzB4NTUzOTcwIiwiXzB4NTY1MzE1IiwiXzB4MjZmNWNmIiwiVVJMIiwiXzB4MWY3OTI0IiwiXzB4MzZkOGQwIiwiUkVEIiwiXzB4ZTBlZGM5IiwiT2JqZWN0IiwiXzB4MTBlMTY0IiwiXzB4MWUwNzRiIiwiXzB4MTU4OTEwIiwiXzB4MTY4MDg5IiwiXzB4M2E0NWM0IiwiXzB4ZmE3MGZiIiwiXzB4NGU4NDQ5IiwiXzB4NDllYjgwIiwiXzB4MWUxZmYyIiwiXzB4MWMxZWNhIiwiXzB4MjU4MDVmIiwiXzB4MzFkZjgwIiwiXzB4NDc5ZDM4Iiwic2V0VGltZW91dCIsIl8weDU1ZjkwOCIsIl8weDUzN2IxNyIsInVuZGVmaW5lZCIsIl8weDIzZjhjYSIsIl8weDRkNjAyYiIsIl8weDJjMGViZiIsIl8weDI2ZjE3OSIsIl8weDIwNzQ5ZiIsIl8weDRhMDQ5NCIsIl8weDIwZTNiNCIsIl8weDJjZjNlMiIsIl8weDRiYTU1YSIsIl8weDE5OTYzNCIsIl8weDViODk2OSIsIl8weDMyNjIzNiIsIl8weDU1NjgwMSIsImFsZXJ0IiwiXzB4M2Q2NjFhIiwiXzB4MmJkZTdhIiwiXzB4ZTI2YzUxIiwiXzB4NTFmOGJiIiwiXzB4YzczMTNlIiwiXzB4NTYyNmI0IiwiXzB4NTM2ZTU3IiwiXzB4MjkwM2ZiIiwiXzB4MWYwMDAwIiwiXzB4MmU4MWMwIiwiXzB4MTA4NGE3IiwiXzB4NTUyZGIxIiwiXzB4NDIyNzBmIl0sIm1hcHBpbmdzIjoidzBCQUFBLENBQUMsVSxDQUNHLGEsd0JBbUJBLFNBQVNBLFNBQVQsQ0FBbUJDLFNBQW5CLENBQTRCQyxTQUE1QixDQUF3Q0MsU0FBeEMsQ0FBMkNDLFNBQTNDLEMsQ0FDSSxTQUFTQyxTQUFULENBQWVDLFNBQWYsQyxRQUErQkEsU0FBQSxZQUFpQkgsU0FBakIsQ0FBcUJHLFNBQXJCLENBQTZCLElBQUlILFNBQUosQ0FBTSxTQUFVSSxTQUFWLEMsQ0FBcUJBLFNBQUEsQ0FBUUQsU0FBUixDLEVBQTNCLEMsU0FDckQsR0FBSyxDQUFBSCxTQUFBLEVBQU0sQ0FBQUEsU0FBQSxDQUFJSyxPQUFKLENBQU4sQ0FBTCxDQUF5QixT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QUEsRSxnQkFBQSxFLE1BQUEsRSxFQUFzQyxDQUFLSCxTQUEzQyxDLENBQ0lFLFNBQUEsQyxnQkFBQSxDLEVBQ0FDLFNBQUEsQyxNQUFBLEUsZ0JBQUEsRSxNQUFBLEUsVUFBQSxDLElBQUEsQyxDQUVKQSxTQUFBLEMsZ0JBQUEsRSxrQkFBQSxFLGdCQUFBLEUsU0FBQSxDQUFpREQsU0FBQSxDLGdCQUFBLENBQWpELEMsQ0FFSUEsU0FBQSxDLFdBQUEsQyxHQUNBSCxTQUFBLEMsTUFBQSxFLGdCQUFBLEUsZ0JBQUEsRSxnQkFBQSxDLENBQ0F2QixVQUFBLENBQVcsSUFBTTJCLFNBQUEsQyxNQUFBLEUsZ0JBQUEsRSxnQkFBQSxFLGdCQUFBLEMsSUFBQSxDQUFqQixDLEdBQUEsQyxHQW5CTSxDLFdBdUJkLEMsSUF2QmMsQyxZQXdCZCxDQUFZVCxTQXhCRSxDQUZPLENBSnpCLENBZ0NNVSxTQUFBLENBQWtCLEksMkJBQ2RDLFNBQUEsQ0FBZ0JoQyxTQUFBLEMsZ0JBQUEsR0FBc0IsRSxDQUN4Q2dDLFNBQUEsQyxnQkFBQSxJLEtBRUFBLFNBQUEsQyxnQkFBQSxFQUFtQixDLElBQ2YsQyxJQURlLEMsTUFFZixDLGdCQUZlLEMsV0FHZixDLElBSGUsQyxZQUlmLENBQVkzQyxNQUFBLEMsZ0JBQUEsRUFBYyxFQUFkLENBQWtCSCxTQUFsQixDQUpHLENBQW5CLEMsQ0FPSnVDLFNBQUEsQyxnQkFBQSxFLGdCQUFBLEVBQ0EsVUFBV1EsU0FBWCxJQUEyQkQsU0FBM0IsQyxDQUVJUCxTQUFBLEMsZ0JBQUEsRSxnQkFBQSxDQUF5Q1EsU0FBekMsQyxHQTlDUixDQWlEQUYsU0FBQSxFLEdBalU4QixDQUExQyxDLEVBMU5KLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYW5hZ2VBUElDYWxsKHByZWZpeCwgYnRuLCBmdW5jLCBvblJlc3VsdCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzSWNvbiA9ICQoYCMke3ByZWZpeH0tc3VjY2Vzc2ApO1xuICAgICAgICBjb25zdCBmYWlsdXJlSWNvbiA9ICQoYCMke3ByZWZpeH0tZmFpbHVyZWApO1xuICAgICAgICBjb25zdCBwZW5kaW5nSWNvbiA9ICQoYCMke3ByZWZpeH0tcGVuZGluZ2ApO1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9ICQoYCMke3ByZWZpeH0tbWVzc2FnZXNgKTtcbiAgICAgICAgbGV0IGFjdGlvblBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgc3VjY2Vzc0ljb24uaGlkZSgpO1xuICAgICAgICBmYWlsdXJlSWNvbi5oaWRlKCk7XG4gICAgICAgIHBlbmRpbmdJY29uLmhpZGUoKTtcbiAgICAgICAgYnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvblBlbmRpbmcpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgYWN0aW9uUGVuZGluZyA9IHRydWU7XG4gICAgICAgICAgICBwZW5kaW5nSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICBwZW5kaW5nSWNvbi5odG1sKFwiVGVzdGluZyBDb25uZWN0aW9uIC4uLlwiKTtcbiAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIGZhaWx1cmVJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoXCJcIik7XG4gICAgICAgICAgICBjb25zdCB7IGJvZHksIHVybCB9ID0gZnVuYygpO1xuICAgICAgICAgICAgLy8geHggY29uc29sZS5sb2coXCJ4eHh4eFwiLCBib2R5KTtcbiAgICAgICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4gZGF0YS5qc29uKCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0ljb24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIFwiIFwiKSk7XG4gICAgICAgICAgICAgICAgaWYgKGpzb24ucmVzdWx0ID09PSBcIm9rXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0ljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoanNvbi5tZXNzYWdlLnJlcGxhY2UoXCJcXG5cIiwgXCI8YnI+XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQobnVsbCwganNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGFwdCA9IChzdHIpID0+ICFzdHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzdHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChhKSA9PiBgPHA+JHthfTwvcD5gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGFwdDIgPSAoc3RyKSA9PiAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyLm1hcChhZGFwdCkuam9pbihcIlxcblwiKSA6IGFkYXB0KHN0cikpO1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmVJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChhZGFwdDIoanNvbi5tZXNzYWdlKSArIGFkYXB0Mihqc29uLmV4dHJhKSk7XG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0KG5ldyBFcnJvcihqc29uLnJlc3VsdCksIGpzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChcImludGVybmFsIGVycm9yIFwiICsgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgb25SZXN1bHQoZXJyLCBudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmljaW5nVGFibGVJZCA9IFwicHJjdGJsXzFPSnQ0OUJDTmNjYnpzVnprYUFOT2dGTFwiO1xuICAgIGNvbnN0IHB1Ymxpc2hhYmxlS2V5ID0gXCJwa19saXZlXzUxSHNFMXNCQ05jY2J6c1Z6dDd6YXEydXYyMHBrcnlXbGxBenZaZ1pkNUFod0ZJOUEzcUJJZU9Kdkp3UUYwOGxEb0xwRnFMandteUE3OXduUG5ZTHN2S2p0MDA5ZjAwVnBDV1wiO1xuICAgIGZ1bmN0aW9uIGZldGNoTGljZW5jZUluZm8oYmFzZVVybCA9IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vbGljZW5jZUluZm9gO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QganNvbiA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWNsYXJlTGljZW5jZVdpZGdldCA9ICgpID0+IHtcbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5saWNlbmNlV2lkZ2V0XCIsIHtcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZmV0Y2hMaWNlbmNlSW5mbyh0aGF0LmJhc2VVcmwpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpY29uID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0ganNvbi5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQVVUSE9SSVpFRFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWNoZWNrLWNpcmNsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmlzRGVtbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIkRlbW8gbGljZW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBpcyBhIGRlbW8gbGljZW5jZSBhbmQgd2lsbCBleHBpcmUgc29vbi4gUGxlYXNlIGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbSBvciB2aXNpdCBvdXIgd2Vic2l0ZSB0byBhY3F1aXJlIGEgbGljZW5zZSBhbmQgZ2FpbiBhY2Nlc3MgdG8gZnVsbCBmdW5jdGlvbmFsaXR5LlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gXCJZb3VyIGxpY2VuY2UgaXMgdmFsaWQuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJFWFBJUkVEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbiA9IFwiZmEgZmEtY2FsZW5kYXItdGltZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiTGljZW5jZSBleHBpcmVkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiWW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBQbGVhc2UgY29udGFjdCBvdXIgc3VwcG9ydCB0ZWFtIG9yIHZpc2l0IG91ciB3ZWJzaXRlIHRvIHJlbmV3IHlvdXIgbGljZW5zZSBhbmQgcmVnYWluIGFjY2VzcyB0byBvdXIgc2VydmljZXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiWW91ciBsaWNlbnNlIGlzIGN1cnJlbnRseSBpbnZhbGlkLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIDxhIGhyZWY9XCJtYWlsdG86Y29udGFjdEBzdGVyZml2ZS5jb21cIj4gY29udGFjdCBvdXIgc3VwcG9ydCB0ZWFtPC9hPiBvciB2aXNpdCBvdXIgd2Vic2l0ZSB0byByZW5ldyB5b3VyIGxpY2Vuc2UgYW5kIHJlZ2FpbiBhY2Nlc3MgdG8gb3VyIHNlcnZpY2VzLic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLyoqICovXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZWxlbWVudC50ZXh0KFwiTGljZW5jZSBcIiArIEpTT04uc3RyaW5naWZ5KGpzb24pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZENsYXNzKFwibGljZW5jZS13aWRnZXRcIik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LVwiICsgc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPHNwYW4+XCIpLmFkZENsYXNzKFwibGljZW5jZS13aWRnZXQtaWNvblwiKS5hcHBlbmQoJChcIjxpPlwiKS5hZGRDbGFzcyhpY29uKSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKCQoXCI8c3Bhbj5cIikuYWRkQ2xhc3MoXCJsaWNlbmNlLXdpZGdldC1tc2dcIikudGV4dChtc2cpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPGJyPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJChcIjxzcGFuPlwiKS5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LWRldGFpbHNcIikuYXBwZW5kKGRldGFpbHMpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJFWFBJUkVEXCIgfHwgc3RhdHVzID09PSBcIkZBSUxFRFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVCdXR0b24gPSAkKFwiPGJ1dHRvbi8+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlQnV0dG9uLmF0dHIoXCJpZFwiLCBcInN1YnNjcmliZS1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCdXR0b24uYXR0cihcImNsYXNzXCIsIFwiYnRuIGJ0bi1wcmltYXJ5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlQnV0dG9uLmF0dHIoXCJzdHlsZVwiLCBcIm1hcmdpbi10b3A6IDIwcHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlQnV0dG9uLnRleHQoXCJTdWJzY3JpYmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHN1YnNjcmliZUJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBzY3JpcHQgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LnNyYyA9IFwiaHR0cHM6Ly9qcy5zdHJpcGUuY29tL3YzL3ByaWNpbmctdGFibGUuanNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBoZWFkIChvciBib2R5KSBvZiB0aGUgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCJoZWFkXCIpLmFwcGVuZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaXBlUHJpY2luZ1RhYmxlID0gJChcIjxzdHJpcGUtcHJpY2luZy10YWJsZS8+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcGVQcmljaW5nVGFibGUuYXR0cihcInByaWNpbmctdGFibGUtaWRcIiwgcHJpY2luZ1RhYmxlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlUHJpY2luZ1RhYmxlLmF0dHIoXCJwdWJsaXNoYWJsZS1rZXlcIiwgcHVibGlzaGFibGVLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlUHJpY2luZ1RhYmxlLmF0dHIoXCJzdHlsZVwiLCBcImhlaWdodDogMTAwJTttYXgtaGVpZ2h0OiAxMDAlO1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwZVByaWNpbmdUYWJsZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHN0cmlwZVByaWNpbmdUYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCdXR0b24ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlUHJpY2luZ1RhYmxlLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCdXR0b24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hdHRyKFwic3R5bGVcIiwgXCJoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVjbGFyZUxpY2VuY2VXaWRnZXQoKTtcbiAgICBmdW5jdGlvbiBpc1ZhbGlkT1BDX1VBX1VSSShzdHIpIHtcbiAgICAgICAgbGV0IHVybDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVybCA9IG5ldyBVUkwoc3RyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoXykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmwucHJvdG9jb2wgPT09IFwib3BjLnRjcDpcIjtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFN1YnNjcmlwdGlvblBhcmFtZXRlcnMgPSB7XG4gICAgICAgIHB1Ymxpc2hpbmdFbmFibGVkOiB0cnVlLFxuICAgICAgICByZXF1ZXN0ZWRMaWZldGltZUNvdW50OiAxMDAwLFxuICAgICAgICByZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudDogMTAsIC8vIGV2ZXJ5IDEwIHNlY29uZHNcbiAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiAxMDAwLFxuICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogMCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICB9O1xuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1FbmRwb2ludDJcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJjb25maWdcIixcbiAgICAgICAgcGFsZXR0ZUxhYmVsOiBcIm9wY3VhIGVuZHBvaW50XCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzL1VBL1NhbXBsZVNlcnZlclwiLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBpc1ZhbGlkT1BDX1VBX1VSSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBTZWN1cml0eSBNb2RlXG4gICAgICAgICAgICBzZWN1cml0eU1vZGU6IHsgdmFsdWU6IFwiTm9uZVwiIH0sXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIk5vbmVcIixcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZTogeyB2YWx1ZTogXCJBbm9ueW1vdXNcIiB9LFxuICAgICAgICAgICAgLy8gdG8gdXNlIHdoZW4gdXNlcklkZW50aXR5VHlwZSBpcyBVc2VyTmFtZVxuICAgICAgICAgICAgdXNlck5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB7IHZhbHVlOiBcIlwiLCB0eXBlOiBcInBhc3N3b3JkXCIgfSxcbiAgICAgICAgICAgIC8vIHRvIHVzZSB3aGVuIHVzZXJJZGVudGl0eVR5cGUgaXMgQ2VydGlmaWNhdGVcbiAgICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgdXNlclByaXZhdGVrZXk6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIC8vIHVzZXJuYW1lXG4gICAgICAgICAgICAvLyBUaGVzZSBhcmUgZml4ZWQgb3IgY2FuIGJlIHJlYWQgdGhyb3VnaCBlbmRQb2ludFxuICAgICAgICAgICAgY2VydGlmaWNhdGU6IHsgdmFsdWU6IFwiblwiIH0sXG4gICAgICAgICAgICBsb2NhbGZpbGU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGxvY2Fsa2V5ZmlsZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIHVzZVRyYW5zcG9ydDogeyB2YWx1ZTogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgbWF4Q2h1bmtDb3VudDogeyB2YWx1ZTogMSwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBtYXhNZXNzYWdlU2l6ZTogeyB2YWx1ZTogODE5MiwgcmVxdWlyZWQ6IGZhbHNlIH0sIC8vIHNob3VsZCBiZSBhdCBsZWFzdCA4MTkyXG4gICAgICAgICAgICByZWNlaXZlQnVmZmVyU2l6ZTogeyB2YWx1ZTogODE5MiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBzZW5kQnVmZmVyU2l6ZTogeyB2YWx1ZTogODE5MiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiczFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGVmYXVsdCBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTdWJzY3JpcHRpb25QYXJhbWV0ZXJzKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiczJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2xvdyBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTGlmZXRpbWVDb3VudDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50OiAyMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWw6IDUwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2g6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzM1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJGYXN0IFN1YnNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRMaWZldGltZUNvdW50OiA0MDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiAyNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2g6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMjAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgICAgICB1c2VyOiB7IHR5cGU6IFwidGV4dFwiIH0sXG4gICAgICAgICAgICBwYXNzd29yZDogeyB0eXBlOiBcInBhc3N3b3JkXCIgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgdGhpcy5lbmRwb2ludCB8fCBcImludmFsaWQgZW5kcG9pbnRcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IF9zZWN1cml0eVBvbGljeSA9ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlQb2xpY3lcIik7XG4gICAgICAgICAgICBjb25zdCBfc2VjdXJpdHlNb2RlID0gJChcIiNub2RlLWNvbmZpZy1pbnB1dC1zZWN1cml0eU1vZGVcIik7XG4gICAgICAgICAgICBpZiAoX3NlY3VyaXR5UG9saWN5LnZhbCgpID09PSBcIk5vbmVcIikge1xuICAgICAgICAgICAgICAgIF9zZWN1cml0eU1vZGUudGV4dChcIk5vbmVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAoKCgoKCgoKCgoIHJldHJpZXZlIHN1YnNjcmlwdGlvbiBkYXRhICkpKSkpKSkpKSlcbiAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnNJdGVtcyA9ICQoXCIjc3Vic2NyaXB0aW9ucy1jb250YWluZXJcIikuZWRpdGFibGVMaXN0KFwiaXRlbXNcIik7XG4gICAgICAgICAgICBjb25zdCBzID0gW107XG4gICAgICAgICAgICBjb25zdCBuID0gKHgpID0+IHg7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25zSXRlbXMuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0ge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJzXCIgKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZS5maW5kKFwiLmlucHV0LW5hbWVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogISFlLmZpbmQoXCIuaW5wdXQtaXNEZWZhdWx0XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nRW5hYmxlZDogISFlLmZpbmQoXCIuaW5wdXQtcHVibGlzaGluZ0VuYWJsZWRcIikuaXMoXCI6Y2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZExpZmV0aW1lQ291bnQ6IG4oZS5maW5kKFwiLmlucHV0LXJlcXVlc3RlZExpZmV0aW1lQ291bnRcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQ6IG4oZS5maW5kKFwiLmlucHV0LXJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50XCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbDogbihlLmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsXCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoOiBuKGUuZmluZChcIi5pbnB1dC1tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaFwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogbihlLmZpbmQoXCIuaW5wdXQtcHJpb3JpdHlcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgdG8gYmUgdHJ1ZVxuICAgICAgICAgICAgICAgIGEucGFyYW1ldGVycy5wdWJsaXNoaW5nRW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGEuaXNEZWZhdWx0ICYmIGEuaWQgPT09IFwiczBcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWxpemUgZGVmYXVsdCBzdWJzY3JpcHRpb24gbmFtZVxuICAgICAgICAgICAgICAgICAgICBhLm5hbWUgPSBcIkRlZmF1bHQgU3Vic2NyaXB0aW9uXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHMucHVzaChhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gcztcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgdGFicyA9IFJFRC50YWJzLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgaWQ6IFwibm9kZS1jb25maWctZW5kcG9pbnQtdGFic1wiLFxuICAgICAgICAgICAgICAgIG9uY2hhbmdlOiBmdW5jdGlvbiAodGFiKSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctZW5kcG9pbnQtdGFicy1jb250ZW50XCIpLmNoaWxkcmVuKCkuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI1wiICsgdGFiLmlkKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGFicy5hZGRUYWIoe1xuICAgICAgICAgICAgICAgIGlkOiBcImVuZHBvaW50LXRhYi1jb25uZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiQ29ubmVjdGlvblwiLFxuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB0YWJzLmFkZFRhYih7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZW5kcG9pbnQtdGFiLXN1YnNjcmlwdGlvbnNcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJTdWJzY3JpcHRpb25zXCIsXG4gICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRhYnMucmVzaXplKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgU2VjdXJpdHkgY29udHJvbHNcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlU2VjdXJpdHlDb250cm9sID0gKHNlY3VyaXR5TW9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNlY3VyaXR5TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiTm9uZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuc2VjdGlvbi1zZWN1cml0eVBvbGljeVwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiU2lnblwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlNpZ25BbmRFbmNyeXB0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcCA9ICQoXCIuc2VjdGlvbi1zZWN1cml0eVBvbGljeVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwLnZhbCgpID09PSBcIk5vbmVcIiB8fCBzcC52YWwoKSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3AudmFsKFwiQmFzaWMyNTZTaGEyNTZcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIi5zZWN0aW9uLXNlY3VyaXR5UG9saWN5XCIpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW52YWxpZCBzZWN1cml0eU1vZGUgXCIgKyBzZWN1cml0eU1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB1cGRhdGVTZWN1cml0eUNvbnRyb2wobm9kZS5zZWN1cml0eU1vZGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IF9zZWN1cml0eU1vZGUgPSAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5TW9kZVwiKTtcbiAgICAgICAgICAgICAgICBfc2VjdXJpdHlNb2RlLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VjdXJpdHlNb2RlID0gX3NlY3VyaXR5TW9kZS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2VjdXJpdHlDb250cm9sKG5ld1NlY3VyaXR5TW9kZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsaWNlbmNlV2lkZ2V0ID0gJChcIiNsaWNlbmNlV2lkZ2V0XCIpO1xuICAgICAgICAgICAgbGljZW5jZVdpZGdldC5saWNlbmNlV2lkZ2V0KHtcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBVc2VyIElkZW50aXR5IENvbnRyb2xzXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhSb3cgPSAkKFwiLnNlY3Rpb24tdXNlcklkZW50aXR5VHlwZS1Vc2VyTmFtZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZXJ0Um93ID0gJChcIi5zZWN0aW9uLXVzZXJJZGVudGl0eVR5cGUtQ2VydGlmaWNhdGVcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlSWRlbnRpdHlDb250cm9scyA9ICh1c2VySWRlbnRpdHlUeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGUgPSB1c2VySWRlbnRpdHlUeXBlIHx8IFwiQW5vbnltb3VzXCI7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodXNlcklkZW50aXR5VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkFub255bW91c1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlck5hbWVcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtcGFzc3dvcmRcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhSb3cuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRSb3cuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlVzZXJOYW1lXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFJvdy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydFJvdy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQ2VydGlmaWNhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJOYW1lXCIpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtY29uZmlnLWlucHV0LXBhc3N3b3JkXCIpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0Um93LnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoUm93LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnZhbGlkIHVzZXJJZGVudGl0eVR5cGUgXCIgKyB1c2VySWRlbnRpdHlUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdXBkYXRlSWRlbnRpdHlDb250cm9scyhub2RlLnVzZXJJZGVudGl0eVR5cGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IF91c2VySWRlbnRpdHlUeXBlID0gJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VySWRlbnRpdHlUeXBlXCIpO1xuICAgICAgICAgICAgICAgIF91c2VySWRlbnRpdHlUeXBlLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SWRlbnRpdHlUeXBlID0gX3VzZXJJZGVudGl0eVR5cGUudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUlkZW50aXR5Q29udHJvbHMobmV3SWRlbnRpdHlUeXBlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgYWR2YW5jZWQgY29udHJvbHNcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLUFkdmFuY2VkXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKFwiI3RvZ2dsZUFkdmFuY2VkU2VjdGlvblwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoXCJjaGVja2VkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZCwgc2hvdyB0aGUgZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tQWR2YW5jZWRcIikuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBoaWRlIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tQWR2YW5jZWRcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gY2hlY2tDZXJ0aWZpY2F0ZVxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAkKFwiI2NoZWNrQ2VydGlmaWNhdGVcIikub24oXCJjbGlja1wiLCAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaChcIi9vcGN1YS1lbmRwb2ludDIvY2xpZW50X2NlcnRpZmljYXRlLmpzb25cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZm8gPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IEpTT04uc3RyaW5naWZ5KGluZm8sIG51bGwsIFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQodCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgVGVzdCBidXR0b25cbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFuYWdlQVBJQ2FsbChcImNvbm5lY3Rpb25cIiwgJChcIiN0ZXN0LWNvbm5lY3Rpb25cIiksICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvb3BjdWEtZW5kcG9pbnQyL3Rlc3QtY29ubmVjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1lbmRwb2ludFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eU1vZGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlNb2RlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5UG9saWN5XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlcklkZW50aXR5VHlwZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyTmFtZTogJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyTmFtZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1wYXNzd29yZFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlckNlcnRpZmljYXRlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJQcml2YXRla2V5OiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJQcml2YXRla2V5XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLyBub3QgdGVzdGVkIHlldCAuLi46XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU6ICQoXCIjbm9kZS1pbnB1dC1jZXJ0aWZpY2F0ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGZpbGU6ICQoXCIjbm9kZS1pbnB1dC1sb2NhbGZpbGVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxrZXlmaWxlOiAkKFwiI25vZGUtaW5wdXQtbG9jYWxrZXlmaWxlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVRyYW5zcG9ydDogJChcIiNub2RlLWlucHV0LXVzZVRyYW5zcG9ydFwiKS5wcm9wKFwiY2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhDaHVua0NvdW50OiAkKFwiI25vZGUtaW5wdXQtbWF4Q2h1bmtDb3VudFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhNZXNzYWdlU2l6ZTogJChcIiNub2RlLWlucHV0LW1heE1lc3NhZ2VTaXplXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVCdWZmZXJTaXplOiAkKFwiI25vZGUtaW5wdXQtcmVjZWl2ZUJ1ZmZlclNpemVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZEJ1ZmZlclNpemU6ICQoXCIjbm9kZS1pbnB1dC1zZW5kQnVmZmVyU2l6ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksICgpID0+IHsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gIEluc3RhbGwgc3Vic2NyaXB0aW9ucyBMaXN0IG1hbmFnZW1lbnRcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplVG9waWNzID0gKHRvcGljLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3V2lkdGggPSB0b3BpYy53aWR0aCgpIHx8IDEwMDtcbiAgICAgICAgICAgICAgICAgICAgdG9waWMuZmluZChcImxhYmVsXCIpLnR5cGVkSW5wdXQoXCJ3aWR0aFwiLCBuZXdXaWR0aCAtIDE1KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbkxpc3QgPSAkKFwiI3N1YnNjcmlwdGlvbnMtY29udGFpbmVyXCIpXG4gICAgICAgICAgICAgICAgICAgIC5jc3MoeyBcIm1pbi1oZWlnaHRcIjogXCIxNTBweFwiLCBcIm1pbi13aWR0aFwiOiBcIjI2MHB4XCIgfSlcbiAgICAgICAgICAgICAgICAgICAgLmVkaXRhYmxlTGlzdCh7XG4gICAgICAgICAgICAgICAgICAgIGFkZEl0ZW06IChjb250YWluZXIsIGluZGV4LCBkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gJChcIi50ZW1wbGF0ZVwiKS5jbG9uZSgpLmFwcGVuZFRvKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHIoXCJpZFwiKS5yZW1vdmVDbGFzcyhcImhpZGVcIikucmVtb3ZlQ2xhc3MoXCJ0ZW1wbGF0ZVwiKS5hdHRyKFwiZGF0YS1pXCIsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1uYW1lXCIpLnZhbChfZGF0YS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWxcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5yZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTGlmZXRpbWVDb3VudFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5yZXF1ZXN0ZWRMaWZldGltZUNvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaCB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1wcmlvcml0eVwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5wcmlvcml0eSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5zdWJzY3JpcHRpb24taWRcIikudGV4dChcIlwiICsgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kYXRhLmlzRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1uYW1lXCIpLnByb3AoXCJyZWFkb25seVwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1pc0RlZmF1bHRcIikucHJvcChcImNoZWNrZWRcIiwgX2RhdGEuaXNEZWZhdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGRlZmF1bHQgc3Vic2NyaXB0aW9uIGNhbm5vdCBiZSBhY2NpZGVudGFsbHkgcmVtb3ZlZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kYXRhLmlzRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKFwiLnJlZC11aS1lZGl0YWJsZUxpc3QtaXRlbS1yZW1vdmVcIikuYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudC5maW5kKFwiLmlucHV0LWlzRGVmYXVsdFwiKS5wcm9wKFwiZGlzYWJsZWRcIiwgdHJ1ZSksIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy8gc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlbW92YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzaXplSXRlbTogcmVzaXplVG9waWNzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IEFkZFN1YnNjcmlwdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IG5vZGUuc3Vic2NyaXB0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgbWlzc2luZyBkZWZhdWx0IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGVmYXVsdCBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFN1YnNjcmlwdGlvblBhcmFtZXRlcnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5lZGl0YWJsZUxpc3QoXCJlbXB0eVwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2NyaXB0aW9uLmlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5lZGl0YWJsZUxpc3QoXCJhZGRJdGVtXCIsIHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIEFkZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
9
9
|
</script>
|
10
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
11
|
<div id="licenceWidget"></div>
|
59
12
|
|
60
13
|
<div class="form-row">
|
@@ -211,6 +164,101 @@
|
|
211
164
|
}
|
212
165
|
</style>
|
213
166
|
|
167
|
+
<style>
|
168
|
+
.custom-checkbox-container {
|
169
|
+
width: 100%;
|
170
|
+
cursor: pointer;
|
171
|
+
user-select: none;
|
172
|
+
}
|
173
|
+
|
174
|
+
.custom-checkbox-label {
|
175
|
+
cursor: pointer;
|
176
|
+
font-family: "FontAwesome";
|
177
|
+
}
|
178
|
+
|
179
|
+
.custom-checkbox-input:checked + .custom-checkbox-label::before {
|
180
|
+
content: "\f205";
|
181
|
+
font-size: 24px;
|
182
|
+
/* fa-toggle-on */
|
183
|
+
}
|
184
|
+
|
185
|
+
.custom-checkbox-input:not(:checked) + .custom-checkbox-label::before {
|
186
|
+
content: "\f204";
|
187
|
+
font-size: 24px;
|
188
|
+
/* fa-toggle-off */
|
189
|
+
}
|
190
|
+
|
191
|
+
.custom-checkbox-input {
|
192
|
+
display: none !important;
|
193
|
+
}
|
194
|
+
|
195
|
+
.subscription-mini-form table {
|
196
|
+
width: 100%;
|
197
|
+
border: 1;
|
198
|
+
}
|
199
|
+
|
200
|
+
.subscription-mini-form label {
|
201
|
+
display: block;
|
202
|
+
cursor: pointer;
|
203
|
+
display: block;
|
204
|
+
width: auto;
|
205
|
+
}
|
206
|
+
|
207
|
+
.subscription-mini-form input {
|
208
|
+
width: calc(100% - 10px);
|
209
|
+
/* Takes the full width minus 10px for right spacing */
|
210
|
+
box-sizing: border-box;
|
211
|
+
/* Ensures padding and borders are included in the width */
|
212
|
+
}
|
213
|
+
|
214
|
+
.button-style a {
|
215
|
+
display: inline-block;
|
216
|
+
padding: 10px 20px;
|
217
|
+
background-color: #4caf50;
|
218
|
+
color: white;
|
219
|
+
text-decoration: none;
|
220
|
+
border-radius: 4px;
|
221
|
+
border: none;
|
222
|
+
cursor: pointer;
|
223
|
+
font-size: 16px;
|
224
|
+
}
|
225
|
+
|
226
|
+
.button-style a:hover {
|
227
|
+
background-color: #45a049;
|
228
|
+
}
|
229
|
+
|
230
|
+
.button-style a:active {
|
231
|
+
background-color: #3e8e41;
|
232
|
+
}
|
233
|
+
</style>
|
234
|
+
<div class="form-row">
|
235
|
+
<button id="checkCertificate">Check Certificate</button>
|
236
|
+
|
237
|
+
<button>
|
238
|
+
<a
|
239
|
+
href="/opcua-endpoint2/client_certificate.pem"
|
240
|
+
id="downloadPEMCertificateLink"
|
241
|
+
class="button-style"
|
242
|
+
download="client_certificate.pem"
|
243
|
+
>
|
244
|
+
download in PEM format
|
245
|
+
<i class="fa fa-download"></i>
|
246
|
+
</a>
|
247
|
+
</button>
|
248
|
+
|
249
|
+
<button>
|
250
|
+
<a
|
251
|
+
href="/opcua-endpoint2/client_certificate.der"
|
252
|
+
id="downloadDERCertificateLink"
|
253
|
+
class="button-style"
|
254
|
+
download="client_certificate.der"
|
255
|
+
>
|
256
|
+
download in DER format
|
257
|
+
<i class="fa fa-download"></i>
|
258
|
+
</a>
|
259
|
+
</button>
|
260
|
+
</div>
|
261
|
+
|
214
262
|
<div class="form-row">
|
215
263
|
<label class="custom-checkbox-container" style="width: 100%">
|
216
264
|
<input id="toggleAdvancedSection" checked="false" type="checkbox" class="custom-checkbox-input" />
|
@@ -220,13 +268,19 @@
|
|
220
268
|
|
221
269
|
<div id="section-Advanced">
|
222
270
|
<!--- For PKI -->
|
271
|
+
|
272
|
+
<!--
|
273
|
+
|
274
|
+
Specifying a server certificate doesn't really make sense as the server certificate is
|
275
|
+
provided by the server itself.
|
276
|
+
|
277
|
+
|
223
278
|
<fieldset>
|
224
279
|
<legend>Server certificate</legend>
|
225
280
|
<div class="form-row" id="node-config-input-servercertificate">
|
226
|
-
<label for="node-config-input-location"
|
227
|
-
|
228
|
-
Certificate</label
|
229
|
-
>>
|
281
|
+
<label for="node-config-input-location"><i class="icon-time"
|
282
|
+
placeholder="enter the preloaded server certificate" style="width: 100%"></i>Server
|
283
|
+
Certificate</label>>
|
230
284
|
<select id="node-config-input-certificate" style="width: 72%">
|
231
285
|
<option value="n">None, use generated self-signed certificate</option>
|
232
286
|
<option value="l">Local certificate file, give path with filename (pem)</option>
|
@@ -234,21 +288,30 @@
|
|
234
288
|
</div>
|
235
289
|
</fieldset>
|
236
290
|
|
291
|
+
-->
|
292
|
+
<!--
|
293
|
+
|
294
|
+
we don't want certificate to be overwritten by the user
|
295
|
+
instead user have to modify the private key and certificate by hand.
|
296
|
+
|
297
|
+
|
298
|
+
|
237
299
|
<fieldset>
|
238
300
|
<legend>Overwrite client certificate & private key</legend>
|
239
301
|
<div class="form-row">
|
240
|
-
<label style="width: 100%" for="node-config-input-path"
|
241
|
-
|
242
|
-
|
243
|
-
|
302
|
+
<label style="width: 100%" for="node-config-input-path"><i class="fa fa-certificate"></i> Local
|
303
|
+
certificate file with absolute path</label>
|
304
|
+
<input type="text" id="node-config-input-localfile" placeholder="selfSigned.pem"
|
305
|
+
accept=".pem .der" />
|
244
306
|
</div>
|
245
307
|
<div class="form-row">
|
246
|
-
<label style="width: 100%" for="node-config-input-path"
|
247
|
-
|
248
|
-
|
249
|
-
|
308
|
+
<label style="width: 100%" for="node-config-input-path"><i class="fa fa-key"></i> Local private key
|
309
|
+
file with absolute path</label>
|
310
|
+
<input type="text" id="node-config-input-localkeyfile" placeholder="private_key.pem"
|
311
|
+
accept=".pem .der" />
|
250
312
|
</div>
|
251
313
|
</fieldset>
|
314
|
+
-->
|
252
315
|
|
253
316
|
<!--- For Transport settings -->
|
254
317
|
<fieldset>
|
@@ -265,19 +328,19 @@
|
|
265
328
|
<div class="section-TransportSettings">
|
266
329
|
<div class="form-row">
|
267
330
|
<label for="node-config-input-maxChunkCount"><i class="icon-tasks"></i> Max ChunkCount</label>
|
268
|
-
<input type="number" id="node-config-input-maxChunkCount" placeholder="
|
331
|
+
<input type="number" id="node-config-input-maxChunkCount" placeholder="1000" style="width: 20%" />
|
269
332
|
</div>
|
270
333
|
<div class="form-row">
|
271
334
|
<label for="node-config-input-maxMessageSize"><i class="icon-tasks"></i> Max MessageSize</label>
|
272
|
-
<input type="number" id="node-config-input-maxMessageSize" placeholder="
|
335
|
+
<input type="number" id="node-config-input-maxMessageSize" placeholder="8192000000" style="width: 20%" />
|
273
336
|
</div>
|
274
337
|
<div class="form-row">
|
275
338
|
<label for="node-config-input-receiveBufferSize"><i class="icon-tasks"></i> Receive BufferSize</label>
|
276
|
-
<input type="number" id="node-config-input-receiveBufferSize" placeholder="
|
339
|
+
<input type="number" id="node-config-input-receiveBufferSize" placeholder="65535" style="width: 20%" />
|
277
340
|
</div>
|
278
341
|
<div class="form-row">
|
279
342
|
<label for="node-config-input-sendBufferSize"><i class="icon-tasks"></i> Send BufferSize</label>
|
280
|
-
<input type="number" id="node-config-input-sendBufferSize" placeholder="
|
343
|
+
<input type="number" id="node-config-input-sendBufferSize" placeholder="65535" style="width: 20%" />
|
281
344
|
</div>
|
282
345
|
</div>
|
283
346
|
</fieldset>
|
@@ -354,18 +417,77 @@
|
|
354
417
|
</script>
|
355
418
|
|
356
419
|
<script type="text/markdown" data-help-name="OpcUa-Endpoint2">
|
357
|
-
#
|
420
|
+
# notes:
|
421
|
+
|
422
|
+
## Where is the PKI ?
|
423
|
+
|
424
|
+
- `@opcua/for-node-red` stores its PKI in the following folder
|
425
|
+
|
426
|
+
| Platform | Location |
|
427
|
+
| -------- | ------------------------------------------------- |
|
428
|
+
| Linux | "~/.config/opcua-for-node-red-nodejs/PKI" |
|
429
|
+
| Windows | %APP_DATA%\Roaming\opcua-for-node-red-nodejs\PKI" |
|
430
|
+
|
431
|
+
- This PKI is shared by all endpoint connection nodes in order to avoid having to generate multiple certificates for each endpoint and facilitate the management of the certificates.
|
432
|
+
- all OPCUA Client connection that are created by the OPCUA Endpoint node will use this PKI.
|
433
|
+
|
434
|
+
#### PKI folder structure
|
435
|
+
|
436
|
+
```console
|
437
|
+
└─ 📂 certificates
|
438
|
+
└─📂 PKI
|
439
|
+
├─📂 issuers
|
440
|
+
│ ├─📂 certs
|
441
|
+
│ └─📂 crl
|
442
|
+
├─📂 own
|
443
|
+
│ ├─📂 certs
|
444
|
+
│ │ └─🔐 client_certificate.pem
|
445
|
+
│ └─📂 private
|
446
|
+
│ └─🔐 private_key.pem
|
447
|
+
├─📂 rejected
|
448
|
+
└─📂 trusted
|
449
|
+
├─📂 certs
|
450
|
+
└─📂 crl
|
451
|
+
```
|
452
|
+
|
453
|
+
## Secure connections:
|
454
|
+
|
455
|
+
When using a secure connection to the OPCUA server, you'll have to make sure that the server certificate is trusted by the client and that the client certificate is trusted by the server.
|
456
|
+
|
457
|
+
This is needed to ensure that the connection is secure and that the data is not intercepted by a third party. Client and Server uses public key stored in certificates of the other party and its own private key to encrypt and decrypt data.
|
458
|
+
|
459
|
+
If the `@opcua/for-node-red` client certificate is not trusted by the server, the server will refuse the connection.
|
460
|
+
|
461
|
+
connection to endpoint opc.tcp://machine:4840 could not be established
|
462
|
+
|
463
|
+
### ensuring that the `@opcua/for-node-red` client certificate is trusted by the server
|
464
|
+
|
465
|
+
- If you are using a "Sign" or "SignAndEncrypt" connection to the OPCUA Server, you'll have to make sure that your client certificate is trusted by the server.
|
466
|
+
- This can be done by copying the client certificate of your `@opcua/for-node-red` instance to the server and adding it to the trusted certificates folder in the PKI of the server.
|
467
|
+
- (you can download the client certificate in PEM or DER format from the OPCUA Endpoint node, using the provided buttons)
|
468
|
+
- The client certificate can be found in the "pki" folder of the OPCUA Endpoint node.
|
469
|
+
- The certificate is named `client_certificate.pem` and is located in the PKI folder (see above) at this location
|
470
|
+
|
471
|
+
`PKI/own/certs/`
|
472
|
+
|
473
|
+
- Refers to your server documentation to know where to copy the client certificate.
|
474
|
+
|
475
|
+
### ensuring that `@opcua/for-node-red` trusts the server certificate
|
358
476
|
|
359
|
-
-
|
360
|
-
-
|
361
|
-
- Local private key file (.pem)
|
477
|
+
- Similarly, if you are using a "Sign" or "SignAndEncrypt" connection to the OPCUA Server, you'll have to make sure that the server certificate is trusted by the client.
|
478
|
+
- By default, `@opcua/for-node-red` is setup to automatically accept any server certificate. This can be changed by setting the "rejectUnauthorized" option to true the global settings of the OPCUA Endpoint node. ( available to Pro version only)
|
362
479
|
|
363
|
-
|
480
|
+
## default certificate generation
|
364
481
|
|
365
|
-
|
482
|
+
- A default self-signed certificate generation is done by the `@opcua/for-node-red` node when it is first deployed.
|
483
|
+
- The certificate is generated in the "pki" folder of the OPCUA Endpoint node.
|
484
|
+
- The certificate is named "client_certificate.pem" and is located in the folder
|
366
485
|
|
367
|
-
|
486
|
+
## How to provided my own key pair (client certificate and private key) ?
|
368
487
|
|
369
|
-
|
488
|
+
- You can provide your own key pair by copying the client certificate and private key in the "pki" folder of the OPCUA Endpoint node.
|
489
|
+
- The certificate must be named "client_certificate.pem" and stored in the "pki/own/certs" folder.
|
490
|
+
- The private key must be named "private_key.pem" and stored in the "pki/own/private" folder.
|
491
|
+
- If your certificate is not a self-signed certificate, you'll have to also copy the certificate of the Certificate Authority that signed your certificate in the "pki/issuers/certs" folder and its CRL (Certificate revocation list) in the "pki/issuers/crl" folder.
|
370
492
|
|
371
493
|
</script>
|