@opcua/for-node-red 2.1.3 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all.js +2 -22557
- package/package.json +1 -1
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +14 -12
- 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 +2 -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 +2 -2
package/package.json
CHANGED
@@ -4,8 +4,8 @@
|
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
(function(_0x158357,_0x8ae7b2){const _0x31bc95=_0x3221,_0x4589e0=_0x158357();while(!![]){try{const _0x524724=parseInt(_0x31bc95(0x207))/0x1+parseInt(_0x31bc95(0x1a8))/0x2+parseInt(_0x31bc95(0x1a1))/0x3*(parseInt(_0x31bc95(0x1f9))/0x4)+parseInt(_0x31bc95(0x1df))/0x5+-parseInt(_0x31bc95(0x241))/0x6+parseInt(_0x31bc95(0x1b4))/0x7*(-parseInt(_0x31bc95(0x223))/0x8)+-parseInt(_0x31bc95(0x218))/0x9;if(_0x524724===_0x8ae7b2)break;else _0x4589e0['push'](_0x4589e0['shift']());}catch(_0x5b0323){_0x4589e0['push'](_0x4589e0['shift']());}}}(_0xa680,0xbdaa8),(function(){'use strict';const _0x39f476=_0x3221;function _0x581237(_0x46a8a6,_0x563d3b,_0x56eaa5,_0x5b6734){function _0x21ba3f(_0x2b74ea){return _0x2b74ea instanceof _0x56eaa5?_0x2b74ea:new _0x56eaa5(function(_0x9768b9){_0x9768b9(_0x2b74ea);});}return new(_0x56eaa5||(_0x56eaa5=Promise))(function(_0x22cbf3,_0x4b9b14){const _0x553544=_0x3221;function _0x44ca98(_0x4014f6){const _0x2f562f=_0x3221;try{_0x5ba955(_0x5b6734[_0x2f562f(0x1f5)](_0x4014f6));}catch(_0x30eb61){_0x4b9b14(_0x30eb61);}}function _0x253f0d(_0x1ba6da){try{_0x5ba955(_0x5b6734['throw'](_0x1ba6da));}catch(_0x20676b){_0x4b9b14(_0x20676b);}}function _0x5ba955(_0x2352ee){const _0xd2fa48=_0x3221;_0x2352ee['done']?_0x22cbf3(_0x2352ee[_0xd2fa48(0x1ce)]):_0x21ba3f(_0x2352ee[_0xd2fa48(0x1ce)])[_0xd2fa48(0x1a2)](_0x44ca98,_0x253f0d);}_0x5ba955((_0x5b6734=_0x5b6734[_0x553544(0x21b)](_0x46a8a6,_0x563d3b||[]))[_0x553544(0x1f5)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x1e39cd,_0x4dacdd,_0x5355bf){const _0x3e8c55=_0x3221;var _0x5ceb7c=new Error(_0x5355bf);return _0x5ceb7c[_0x3e8c55(0x258)]='SuppressedError',_0x5ceb7c[_0x3e8c55(0x209)]=_0x1e39cd,_0x5ceb7c[_0x3e8c55(0x1ab)]=_0x4dacdd,_0x5ceb7c;};const _0xb537fe=_0x39f476(0x216),_0x40925d='ns=0;i=61',_0x3fff45=_0x39f476(0x1b2),_0x52682a='ns=0;i=46',_0x1bd957=_0x39f476(0x1ca),_0x565167=_0x39f476(0x233),_0x453f2e='ns=0;i=40';var _0x423c21;(function(_0x3f1bc6){const _0x363380=_0x39f476;_0x3f1bc6[_0x3f1bc6[_0x363380(0x1ec)]=0x0]=_0x363380(0x1ec),_0x3f1bc6[_0x3f1bc6['Inverse']=0x1]=_0x363380(0x24f),_0x3f1bc6[_0x3f1bc6[_0x363380(0x248)]=0x2]=_0x363380(0x248),_0x3f1bc6[_0x3f1bc6[_0x363380(0x247)]=0x3]='Invalid';}(_0x423c21||(_0x423c21={})));var _0x45e92b;(function(_0xb91777){const _0x5bdfea=_0x39f476;_0xb91777[_0xb91777[_0x5bdfea(0x246)]=0x0]=_0x5bdfea(0x246),_0xb91777[_0xb91777[_0x5bdfea(0x1b8)]=0x1]=_0x5bdfea(0x1b8),_0xb91777[_0xb91777[_0x5bdfea(0x215)]=0x2]=_0x5bdfea(0x215),_0xb91777[_0xb91777[_0x5bdfea(0x253)]=0x4]=_0x5bdfea(0x253),_0xb91777[_0xb91777[_0x5bdfea(0x1ea)]=0x8]='ObjectType',_0xb91777[_0xb91777[_0x5bdfea(0x200)]=0x10]=_0x5bdfea(0x200),_0xb91777[_0xb91777[_0x5bdfea(0x21c)]=0x20]=_0x5bdfea(0x21c),_0xb91777[_0xb91777[_0x5bdfea(0x1d3)]=0x40]=_0x5bdfea(0x1d3),_0xb91777[_0xb91777[_0x5bdfea(0x252)]=0x80]=_0x5bdfea(0x252);}(_0x45e92b||(_0x45e92b={})));var _0x5163c7;(function(_0x5eed4e){const _0x34597c=_0x39f476;_0x5eed4e[_0x5eed4e[_0x34597c(0x1b8)]=0x1]=_0x34597c(0x1b8),_0x5eed4e[_0x5eed4e['Variable']=0x2]='Variable',_0x5eed4e[_0x5eed4e[_0x34597c(0x253)]=0x4]=_0x34597c(0x253),_0x5eed4e[_0x5eed4e[_0x34597c(0x1ea)]=0x8]=_0x34597c(0x1ea),_0x5eed4e[_0x5eed4e[_0x34597c(0x200)]=0x10]=_0x34597c(0x200),_0x5eed4e[_0x5eed4e['ReferenceType']=0x20]=_0x34597c(0x21c),_0x5eed4e[_0x5eed4e['DataType']=0x40]=_0x34597c(0x1d3),_0x5eed4e[_0x5eed4e['View']=0x80]=_0x34597c(0x252);}(_0x5163c7||(_0x5163c7={})));function _0x46d8eb(_0x3728d4,_0x2d7dc4){const _0x3f01d8=_0x39f476;if(typeof _0x2d7dc4===_0x3f01d8(0x20b))return _0x2d7dc4;const _0x58b7da=parseInt(_0x2d7dc4,0xa);if(!isNaN(_0x58b7da))return _0x58b7da;const _0x1d971f=_0x2d7dc4[_0x3f01d8(0x1d9)](/\||;|,/)[_0x3f01d8(0x23f)](_0x2062aa=>_0x2062aa[_0x3f01d8(0x20d)]());let _0x265c34=0x0;for(const _0x58d9b4 of _0x1d971f){_0x265c34|=_0x3728d4[_0x58d9b4];}return _0x265c34;}function _0x5a0618(_0x197e61,_0x1e110a){const _0x17b7c5=_0x39f476;_0x1e110a=_0x46d8eb(_0x197e61,_0x1e110a);const _0xabdb38=[];for(const [_0x5ba4a0,_0x51048a]of Object[_0x17b7c5(0x1c7)](_0x197e61)){typeof _0x1e110a===_0x17b7c5(0x20b)&&((_0x1e110a&_0x51048a)===_0x51048a&&_0xabdb38[_0x17b7c5(0x1f1)](_0x5ba4a0));}return _0xabdb38[_0x17b7c5(0x1d7)](_0x17b7c5(0x243));}var _0x10b72e;(function(_0x2033ed){const _0x1abec1=_0x39f476;_0x2033ed[_0x2033ed[_0x1abec1(0x21c)]=0x1]=_0x1abec1(0x21c),_0x2033ed[_0x2033ed['IsForward']=0x2]='IsForward',_0x2033ed[_0x2033ed['NodeClass']=0x4]=_0x1abec1(0x1c0),_0x2033ed[_0x2033ed['BrowseName']=0x8]='BrowseName',_0x2033ed[_0x2033ed['DisplayName']=0x10]=_0x1abec1(0x240),_0x2033ed[_0x2033ed[_0x1abec1(0x210)]=0x20]=_0x1abec1(0x210);}(_0x10b72e||(_0x10b72e={})));function _0x3a14d9(_0xf85394){const _0xcbc02=_0x39f476;switch(_0xf85394){case _0xcbc02(0x21d):return _0xb537fe;case _0xcbc02(0x23b):return _0x52682a;case'HasComponent':return _0x3fff45;case'HasChild':return _0x1bd957;case _0xcbc02(0x1c3):return _0x565167;case _0xcbc02(0x239):return _0x453f2e;}}const _0x2f773a=_0x39584f=>{const _0x6b24d2=_0x39f476;switch(_0x39584f[_0x6b24d2(0x219)]){case _0x6b24d2(0x1b8):if(_0x39584f['referenceTypeId']===_0xb537fe);if(_0x39584f[_0x6b24d2(0x1b7)]===_0x40925d||_0x39584f[_0x6b24d2(0x24b)]===_0x6b24d2(0x214))return{'icon':_0x6b24d2(0x20a),'color':_0x6b24d2(0x22f)};return{'icon':'fa-object-group','color':_0x6b24d2(0x1dc)};case _0x6b24d2(0x215):if(_0x39584f[_0x6b24d2(0x24b)]===_0x3fff45)return{'icon':_0x6b24d2(0x1d1),'color':'SteelBlue'};else return _0x39584f[_0x6b24d2(0x24b)]===_0x52682a?{'icon':_0x6b24d2(0x1d1),'color':'DodgerBlue'}:{'icon':_0x6b24d2(0x1d1),'color':_0x6b24d2(0x1b5)};case _0x6b24d2(0x253):return{'icon':_0x6b24d2(0x1f2),'color':'SandyBrown'};case'ObjectType':return{'icon':_0x6b24d2(0x22e),'color':_0x6b24d2(0x250)};case'VariableType':return{'icon':_0x6b24d2(0x24e),'color':'DarkOrange'};}return{'icon':'fa-question','color':_0x6b24d2(0x1ad)};},_0x2101de=({endpointNode:_0x300223,endpoint:_0xca12c8,baseUrl:_0xe212a2},_0x455b23,_0x10aa25)=>_0x581237(void 0x0,void 0x0,void 0x0,function*(){const _0x23b1a5=_0x39f476,_0x2e5066=_0xe212a2+_0x23b1a5(0x1b9),_0x27c139=_0x2e5066+_0x23b1a5(0x1a5),_0x36bb84=Object[_0x23b1a5(0x1c5)](Object[_0x23b1a5(0x1c5)]({},_0x10aa25),{'nodeId':_0x455b23,'resultMask':0x3f}),_0x514923=yield fetch(_0x27c139,{'method':_0x23b1a5(0x20e),'body':JSON['stringify']({'endpointNode':_0x300223,'endpoint':_0xca12c8,'browseDescription':_0x36bb84}),'headers':{'Content-Type':'application/json'}});if(_0x514923['status']!==0xc8)return console[_0x23b1a5(0x220)](_0x23b1a5(0x1ff),_0x514923['status'],_0x514923[_0x23b1a5(0x1a6)]),{'references':[]};console[_0x23b1a5(0x220)](_0x23b1a5(0x257),_0x514923[_0x23b1a5(0x21a)],_0x514923[_0x23b1a5(0x1a6)]);const _0xc4483c=yield _0x514923['json'](),_0x5d6a14=_0xc4483c[_0x23b1a5(0x234)][_0x23b1a5(0x245)]||[];return{'references':_0x5d6a14};}),_0x45d447={'referenceTypeId':_0x3a14d9(_0x39f476(0x1db)),'includeSubtypes':!![],'browseDirection':_0x423c21[_0x39f476(0x1ec)],'nodeClassMask':_0x45e92b['Variable']|_0x45e92b['Object']|_0x45e92b['Method'],'resultMask':0x3f},_0x447d04={'referenceTypeId':_0x3a14d9(_0x39f476(0x21d)),'includeSubtypes':!![],'browseDirection':_0x423c21[_0x39f476(0x1ec)],'nodeClassMask':_0x45e92b[_0x39f476(0x215)]|_0x45e92b[_0x39f476(0x1b8)]|_0x45e92b[_0x39f476(0x253)],'resultMask':0x3f},_0x40f979=({endpointNode:_0x5bca44,endpoint:_0x50fccf,baseUrl:_0x21ff94},_0x572ff9,_0x4b29d0)=>_0x581237(void 0x0,void 0x0,void 0x0,function*(){const _0x13c7f3=_0x39f476,_0x54e2ec=_0x21ff94+'/opcua-endpoint2',_0x4d1aa8=_0x572ff9[_0x13c7f3(0x1b6)](),_0x18dc4f=yield fetch(_0x54e2ec+_0x13c7f3(0x1a3),{'method':_0x13c7f3(0x20e),'body':JSON[_0x13c7f3(0x1bf)]({'endpointNode':_0x5bca44,'endpoint':_0x50fccf,'nodeId':_0x4d1aa8}),'headers':{'Content-Type':'application/json'}}),_0x13c429=(_0x26c679,_0x53b08f)=>{const _0x427a34=_0x13c7f3;_0x4b29d0['text'](_0x26c679)[_0x427a34(0x1ae)](_0x427a34(0x1c6))[_0x427a34(0x1ae)](_0x53b08f),_0x4b29d0[_0x427a34(0x1e3)](),setTimeout(()=>{const _0x1e0dbc=_0x427a34;_0x4b29d0[_0x1e0dbc(0x1d4)](_0x53b08f),_0x4b29d0[_0x1e0dbc(0x213)]();},0xbb8);},_0x35c91a=yield _0x18dc4f['json']();_0x18dc4f['status']!==0xc8?_0x13c429(_0x13c7f3(0x1e7)+_0x4d1aa8,_0x13c7f3(0x244)):_0x35c91a[_0x13c7f3(0x1e4)][_0x13c7f3(0x20f)](/Good/)?(_0x572ff9[_0x13c7f3(0x1b6)](_0x35c91a['nodeAddressString']),_0x572ff9['trigger'](_0x13c7f3(0x1f6)),_0x13c429('Good','ok')):(_0x572ff9['val'](''+_0x4d1aa8),_0x13c429(_0x35c91a[_0x13c7f3(0x1e4)]+'\x20'+_0x18dc4f[_0x13c7f3(0x1a6)],_0x13c7f3(0x244)));});function _0x3f89bd(_0x39a0e9,_0x3e39b2){return _0x581237(this,void 0x0,void 0x0,function*(){const _0x5566ee=_0x3221,_0x22161c=_0x39a0e9[_0x5566ee(0x1e1)](_0x5566ee(0x1ce)),_0x42d672=yield _0x2101de(_0x3e39b2,_0x22161c,_0x45d447),_0xde6319=yield _0x2101de(_0x3e39b2,_0x22161c,_0x447d04);return{'references':[..._0x42d672[_0x5566ee(0x245)],..._0xde6319[_0x5566ee(0x245)]]};});}const _0x1a7cc7={'referenceTypeId':_0x3a14d9(_0x39f476(0x1c3)),'includeSubtypes':!![],'browseDirection':_0x423c21[_0x39f476(0x1ec)],'nodeClassMask':_0x45e92b[_0x39f476(0x21c)]|_0x45e92b['ObjectType']|_0x45e92b[_0x39f476(0x1d3)]|_0x45e92b[_0x39f476(0x200)],'resultMask':0x3f};function _0xf0e942(_0x51a472,_0x2b8c18){return _0x581237(this,void 0x0,void 0x0,function*(){const _0x3111ed=_0x3221,_0x4eb25c=_0x51a472[_0x3111ed(0x1e1)](_0x3111ed(0x1ce)),_0x102e3a=yield _0x2101de(_0x2b8c18,_0x4eb25c,_0x1a7cc7);return _0x102e3a;});}const _0x294d73=_0x1c4030=>{const _0x5b3219=_0x39f476;var _0x4523ac,_0x732245;if(!_0x1c4030){const _0x453221=$('<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>');return _0x453221;}const _0x25c94b=_0x1c4030[_0x5b3219(0x1d5)][_0x5b3219(0x225)](),_0x78ef2c=((_0x4523ac=_0x1c4030['displayName'])===null||_0x4523ac===void 0x0?void 0x0:_0x4523ac[_0x5b3219(0x1e2)])||((_0x732245=_0x1c4030[_0x5b3219(0x203)])===null||_0x732245===void 0x0?void 0x0:_0x732245[_0x5b3219(0x258)])||_0x1c4030['nodeId']['toString'](),{icon:_0x211a29,color:_0x2748bd}=_0x2f773a(_0x1c4030),_0x2bcf7d=$(_0x5b3219(0x21e)+_0x211a29+'\x22\x20style=\x22color:'+_0x2748bd+_0x5b3219(0x1c4)+_0x78ef2c+'<ul></ul></li>');return _0x2bcf7d['addClass'](_0x5b3219(0x230)),_0x2bcf7d[_0x5b3219(0x1e1)]('value',_0x25c94b),_0x2bcf7d['data'](_0x5b3219(0x1ef),_0x1c4030),_0x2bcf7d;},_0x16d58d=()=>{const _0x25a08a=_0x39f476;$['widget']('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x25a08a(0x259)},'nodeClass':_0x25a08a(0x1b8),'nodeId':_0x25a08a(0x236),'displayName':{'text':_0x25a08a(0x259)},'typeDefinition':_0x40925d}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x581237(this,void 0x0,void 0x0,function*(){const _0x254b9b=_0x3221,_0x4d0cff=this,_0x4ec6bf=typeof _0x4d0cff['options'][_0x254b9b(0x1d8)]===_0x254b9b(0x254)?_0x4d0cff['options']['parentNode']():_0x4d0cff['options'][_0x254b9b(0x1d8)];if(_0x4ec6bf instanceof Promise)return yield _0x4ec6bf;return _0x4ec6bf;});},'reset'(){const _0xc5e9f6=_0x25a08a,_0x1d0d9e=this;_0x1d0d9e[_0xc5e9f6(0x1ed)][_0xc5e9f6(0x21f)](),this['resolveParentNode']()[_0xc5e9f6(0x1a2)](_0x15a819=>{const _0x59c45f=_0xc5e9f6,_0x2e8fb8=_0x294d73(_0x15a819);_0x1d0d9e[_0x59c45f(0x1ed)][_0x59c45f(0x1a9)](_0x2e8fb8),_0x1d0d9e[_0x59c45f(0x22d)]=_0x15a819;});},'verify'(){const _0x1d477f=_0x25a08a,_0x54b1c0=this,_0xf6ab9b={'baseUrl':_0x54b1c0[_0x1d477f(0x1d6)][_0x1d477f(0x25d)],'endpointNode':typeof _0x54b1c0[_0x1d477f(0x1d6)][_0x1d477f(0x238)]===_0x1d477f(0x254)?_0x54b1c0[_0x1d477f(0x1d6)][_0x1d477f(0x238)]():_0x54b1c0[_0x1d477f(0x1d6)]['endpointNode'],'endpoint':typeof _0x54b1c0[_0x1d477f(0x1d6)]['endpoint']===_0x1d477f(0x254)?_0x54b1c0[_0x1d477f(0x1d6)][_0x1d477f(0x1fc)]():_0x54b1c0[_0x1d477f(0x1d6)]['endpoint']};_0x40f979(_0xf6ab9b,_0x54b1c0[_0x1d477f(0x1fe)],_0x54b1c0[_0x1d477f(0x23a)]);},'_create'(){const _0x37dd23=_0x25a08a,_0x93f31e=this;function _0x310ab9(_0x544353,_0x456cb4,_0x4dd6a2){return _0x581237(this,void 0x0,void 0x0,function*(){const _0x2a3786=_0x3221;if(_0x544353[_0x2a3786(0x24a)]('fetched')){console['log'](_0x2a3786(0x1fb));return;}if(_0x544353[_0x2a3786(0x24a)](_0x2a3786(0x1c8))){console[_0x2a3786(0x220)](_0x2a3786(0x231));return;}_0x544353[_0x2a3786(0x1ae)](_0x2a3786(0x1c8)),_0x544353[_0x2a3786(0x1a9)](_0x2a3786(0x235));try{_0x544353[_0x2a3786(0x222)]('ul')['empty']();const {references:_0x4a618e}=yield _0x456cb4(_0x544353,_0x4dd6a2);for(const _0x51ea6a of _0x4a618e){if(_0x93f31e[_0x2a3786(0x1d6)][_0x2a3786(0x1e6)]&&!_0x93f31e[_0x2a3786(0x1d6)][_0x2a3786(0x1e6)](_0x51ea6a))continue;const _0x4191f4=_0x294d73(_0x51ea6a);_0x544353[_0x2a3786(0x222)]('ul')[_0x2a3786(0x1a9)](_0x4191f4);}_0x544353[_0x2a3786(0x1ae)]('fetched');}catch(_0x256439){_0x544353[_0x2a3786(0x222)]('ul')[_0x2a3786(0x1a9)](_0x2a3786(0x1f3)+_0x256439[_0x2a3786(0x1f4)]+'</li>'),console['log'](_0x2a3786(0x212),_0x256439);}_0x544353[_0x2a3786(0x1d2)]('.spinner')[_0x2a3786(0x20c)](),_0x544353[_0x2a3786(0x1d4)](_0x2a3786(0x1c8));});}_0x93f31e['$input']=this[_0x37dd23(0x22b)],_0x93f31e[_0x37dd23(0x1bc)]=$('<div/>'),_0x93f31e[_0x37dd23(0x1bc)][_0x37dd23(0x1ae)](_0x37dd23(0x1e0)),this[_0x37dd23(0x22b)][_0x37dd23(0x1cd)](_0x93f31e[_0x37dd23(0x1bc)]),_0x93f31e[_0x37dd23(0x1cb)]=$(_0x37dd23(0x24c))[_0x37dd23(0x1ae)](_0x37dd23(0x1cc)),_0x93f31e[_0x37dd23(0x1bc)]['append'](_0x93f31e[_0x37dd23(0x1cb)]),_0x93f31e[_0x37dd23(0x1cb)][_0x37dd23(0x1a9)](_0x93f31e[_0x37dd23(0x1fe)]),_0x93f31e[_0x37dd23(0x1de)]=$(_0x37dd23(0x1fd)),_0x93f31e[_0x37dd23(0x1cb)][_0x37dd23(0x1a9)](_0x93f31e[_0x37dd23(0x1de)]),_0x93f31e['$toggleTreeBtn']['on'](_0x37dd23(0x23c),function(){const _0x273c41=_0x37dd23;!_0x93f31e[_0x273c41(0x232)]['is'](_0x273c41(0x229))&&(_0x93f31e['resolveParentNode']()[_0x273c41(0x1a2)](_0x516eeb=>{const _0xe9ae12=_0x273c41;var _0x5c24f6;(_0x516eeb!==_0x93f31e['currentParent']||((_0x5c24f6=_0x93f31e[_0xe9ae12(0x22d)])===null||_0x5c24f6===void 0x0?void 0x0:_0x5c24f6['nodeId'])!==_0x516eeb[_0xe9ae12(0x1d5)])&&_0x93f31e[_0xe9ae12(0x1aa)]();}),_0x93f31e['$info'][_0x273c41(0x213)]()),_0x93f31e[_0x273c41(0x232)]['toggle']();}),_0x93f31e['$verifyBtn']=$(_0x37dd23(0x1a7)),_0x93f31e[_0x37dd23(0x1cb)]['append'](_0x93f31e[_0x37dd23(0x1dd)]),_0x93f31e[_0x37dd23(0x1dd)]['on'](_0x37dd23(0x23c),()=>{const _0x11bd71=_0x37dd23;this[_0x11bd71(0x202)]();}),!_0x93f31e[_0x37dd23(0x1fe)][_0x37dd23(0x1af)](_0x37dd23(0x22c))&&_0x93f31e[_0x37dd23(0x1fe)][_0x37dd23(0x1af)](_0x37dd23(0x22c),_0x37dd23(0x23e)),_0x93f31e[_0x37dd23(0x23a)]=$(_0x37dd23(0x25c)),_0x93f31e['$info'][_0x37dd23(0x213)](),{'baseUrl':_0x93f31e['options'][_0x37dd23(0x25d)],'endpointNode':typeof _0x93f31e[_0x37dd23(0x1d6)]['endpointNode']===_0x37dd23(0x254)?_0x93f31e[_0x37dd23(0x1d6)][_0x37dd23(0x238)]():_0x93f31e['options'][_0x37dd23(0x238)],'endpoint':typeof _0x93f31e['options'][_0x37dd23(0x1fc)]===_0x37dd23(0x254)?_0x93f31e['options']['endpoint']():_0x93f31e[_0x37dd23(0x1d6)][_0x37dd23(0x1fc)]},_0x93f31e[_0x37dd23(0x232)]=$('<div/>')['addClass'](_0x37dd23(0x1eb))[_0x37dd23(0x213)](),_0x93f31e[_0x37dd23(0x1bc)]['append'](_0x93f31e['$info']),_0x93f31e[_0x37dd23(0x1bc)][_0x37dd23(0x1a9)](_0x93f31e[_0x37dd23(0x232)]),_0x93f31e[_0x37dd23(0x1ed)]=$(_0x37dd23(0x1e9))[_0x37dd23(0x1e5)](_0x93f31e[_0x37dd23(0x232)]),this[_0x37dd23(0x1aa)](),_0x93f31e['$tree']['on'](_0x37dd23(0x23c),'li',function(_0xb851b4){const _0x350993=_0x37dd23;var _0x3c4610,_0x3ad7d4;_0xb851b4[_0x350993(0x1d0)]();let _0x803d81=$(this);const _0x3f25b4=0x14,_0xa41e87=0x14,_0x4266f0=$(this)[_0x350993(0x1da)](),_0x14a41c=_0xb851b4;if(_0x14a41c[_0x350993(0x1ac)]>=_0x4266f0['left']&&_0x14a41c['pageX']<=_0x4266f0['left']+_0x3f25b4&&_0x14a41c['pageY']>=_0x4266f0[_0x350993(0x237)]&&_0x14a41c['pageY']<=_0x4266f0[_0x350993(0x237)]+_0xa41e87){if(_0x803d81[_0x350993(0x24a)]('expandable')){if(_0x803d81[_0x350993(0x24a)](_0x350993(0x22a))){_0x803d81[_0x350993(0x1d4)](_0x350993(0x230))['addClass'](_0x350993(0x221)),_0x803d81['children']('ul')['toggle']();return;}const _0x6b05c6={'baseUrl':_0x93f31e[_0x350993(0x1d6)]['baseUrl'],'endpointNode':typeof _0x93f31e[_0x350993(0x1d6)]['endpointNode']===_0x350993(0x254)?_0x93f31e['options'][_0x350993(0x238)]():_0x93f31e['options'][_0x350993(0x238)],'endpoint':typeof _0x93f31e[_0x350993(0x1d6)][_0x350993(0x1fc)]===_0x350993(0x254)?_0x93f31e[_0x350993(0x1d6)][_0x350993(0x1fc)]():_0x93f31e['options']['endpoint']},_0x3cda8d=!_0x93f31e[_0x350993(0x1d6)][_0x350993(0x1c1)]?_0x3f89bd:_0xf0e942;_0x310ab9(_0x803d81,_0x3cda8d,_0x6b05c6)[_0x350993(0x1a2)](()=>{const _0x50b2b6=_0x350993;console[_0x50b2b6(0x220)](_0x50b2b6(0x1a4)),console[_0x50b2b6(0x220)]('fetched'),_0x803d81[_0x50b2b6(0x1d4)]('expandable')[_0x50b2b6(0x1ae)](_0x50b2b6(0x221));})['catch'](_0x321b1a=>{const _0x45ca71=_0x350993;_0x803d81[_0x45ca71(0x1d4)]('expandable')[_0x45ca71(0x1ae)](_0x45ca71(0x221)),console[_0x45ca71(0x220)](_0x45ca71(0x209),_0x321b1a);});}else{if(_0x803d81[_0x350993(0x24a)](_0x350993(0x221)))_0x803d81[_0x350993(0x222)]('ul')[_0x350993(0x1bb)](),_0x803d81[_0x350993(0x1b1)](_0x350993(0x1cf));else{if(_0x803d81['children']('ul')[_0x350993(0x222)]()['length']>0x0)_0x803d81[_0x350993(0x222)]('ul')['toggle'](),_0x803d81['toggleClass']('expandable\x20expanded');else;}}}else{const _0x5a8e93=_0x803d81[_0x350993(0x1e1)]('value'),_0x536ee6=_0x803d81[_0x350993(0x1e1)](_0x350993(0x1ef));if(_0x93f31e[_0x350993(0x1d6)][_0x350993(0x1fa)]&&!_0x93f31e[_0x350993(0x1d6)][_0x350993(0x1fa)](_0x536ee6))return;_0x93f31e[_0x350993(0x1fe)]['data'](_0x350993(0x1ef),_0x536ee6);const _0x58c93b=((_0x3c4610=_0x536ee6[_0x350993(0x25b)])===null||_0x3c4610===void 0x0?void 0x0:_0x3c4610[_0x350993(0x1e2)])||((_0x3ad7d4=_0x536ee6[_0x350993(0x203)])===null||_0x3ad7d4===void 0x0?void 0x0:_0x3ad7d4[_0x350993(0x258)])||_0x536ee6[_0x350993(0x1d5)][_0x350993(0x225)](),_0x5b9641='['+_0x58c93b+']('+_0x5a8e93+')';_0x93f31e['$input'][_0x350993(0x1b6)](_0x5b9641),_0x93f31e[_0x350993(0x1fe)][_0x350993(0x1e8)](_0x350993(0x1f6)),_0x93f31e[_0x350993(0x232)]['hide']();}}),$(document)['on']('click',function(_0x47e797){const _0x483c37=_0x37dd23;!$(_0x47e797[_0x483c37(0x1c2)])['closest'](_0x93f31e[_0x483c37(0x1bc)])[_0x483c37(0x208)]&&_0x93f31e[_0x483c37(0x232)]['hide']();});}});},_0x9f7425=()=>{const _0x5c8774=_0x39f476;$[_0x5c8774(0x211)]('sterfive.flagEditor',{'options':{'namesToBits':{},'value':0x0},'_create'(){const _0x106a3f=_0x5c8774,_0x30b6c1=this;_0x30b6c1['$input']=this[_0x106a3f(0x22b)],_0x30b6c1['$combo']=$(_0x106a3f(0x24c)),_0x30b6c1['$combo'][_0x106a3f(0x1ae)](_0x106a3f(0x1e0)),this[_0x106a3f(0x22b)][0x0][_0x106a3f(0x1f8)][_0x106a3f(0x1c9)](_0x30b6c1['$combo'][0x0],this[_0x106a3f(0x22b)][0x0]),_0x30b6c1[_0x106a3f(0x1cb)]=$('<div/>')[_0x106a3f(0x1ae)](_0x106a3f(0x1cc)),_0x30b6c1[_0x106a3f(0x1bc)][_0x106a3f(0x1a9)](_0x30b6c1[_0x106a3f(0x1cb)]),_0x30b6c1['$inputGroup'][_0x106a3f(0x1a9)](_0x30b6c1[_0x106a3f(0x1fe)]),_0x30b6c1[_0x106a3f(0x1de)]=$(_0x106a3f(0x1f0)),_0x30b6c1[_0x106a3f(0x1cb)]['append'](_0x30b6c1[_0x106a3f(0x1de)]),_0x30b6c1[_0x106a3f(0x1de)]['on'](_0x106a3f(0x23c),function(){const _0x4b9470=_0x106a3f;_0x30b6c1[_0x4b9470(0x232)][_0x4b9470(0x1bb)](),_0x30b6c1[_0x4b9470(0x232)]['is'](_0x4b9470(0x229))&&(_0x1f578f(),_0x30b6c1[_0x4b9470(0x1bc)][_0x4b9470(0x1d2)](_0x4b9470(0x242))[_0x4b9470(0x201)](function(){const _0x34e792=_0x4b9470;let _0x1154c1=$(this)[_0x34e792(0x1e2)]();const _0x3a9cdf=_0x30b6c1['options']['namesToBits'][_0x1154c1];if(_0x3a9cdf===undefined)throw new Error('Unknown\x20bit\x20name');(_0x30b6c1[_0x34e792(0x1d6)][_0x34e792(0x1ce)]&_0x3a9cdf)===_0x3a9cdf?$(this)['addClass'](_0x34e792(0x224)):$(this)[_0x34e792(0x1d4)]('selected');}),_0x30b6c1[_0x4b9470(0x226)]());}),_0x30b6c1[_0x106a3f(0x232)]=$('<div\x20class=\x22custom-select\x22></div>')[_0x106a3f(0x213)]()[_0x106a3f(0x227)](this[_0x106a3f(0x22b)]),$['each'](this['options'][_0x106a3f(0x205)],function(_0x4a4610){const _0x2eaf89=_0x106a3f,_0x2dbf9c=$('<div\x20class=\x22custom-option\x22\x20data-value=\x22'+_0x4a4610+'\x22>'+_0x2eaf89(0x1be)+_0x4a4610+_0x2eaf89(0x25a));_0x30b6c1[_0x2eaf89(0x232)]['append'](_0x2dbf9c);}),_0x30b6c1[_0x106a3f(0x232)]['on'](_0x106a3f(0x23c),_0x106a3f(0x242),function(){const _0x158185=_0x106a3f;$(this)[_0x158185(0x1b1)](_0x158185(0x224));const _0x198b9e=$(this)['data'](_0x158185(0x1ce));$(this)[_0x158185(0x24a)](_0x158185(0x224))?_0x307676(_0x198b9e):_0x320794(_0x198b9e),_0x30b6c1[_0x158185(0x226)]();}),_0x30b6c1[_0x106a3f(0x1bc)]['append'](_0x30b6c1[_0x106a3f(0x232)]);const _0x1f578f=()=>{const _0x5bceaf=_0x106a3f,_0x31438d=this['element'][_0x5bceaf(0x1b6)]();_0x30b6c1['options']['value']=_0x46d8eb(_0x30b6c1[_0x5bceaf(0x1d6)]['namesToBits'],_0x31438d);},_0x307676=_0x370465=>{const _0x577901=_0x106a3f,_0x396ce5=_0x30b6c1['options'][_0x577901(0x205)][_0x370465];if(_0x396ce5===undefined)throw new Error(_0x577901(0x1b0));this[_0x577901(0x1d6)][_0x577901(0x1ce)]|=_0x396ce5;},_0x320794=_0x380324=>{const _0x3c30ea=_0x106a3f,_0x194cd4=_0x30b6c1[_0x3c30ea(0x1d6)]['namesToBits'][_0x380324];if(_0x194cd4===undefined)throw new Error('Unknown\x20bit\x20name');this['options'][_0x3c30ea(0x1ce)]&=~_0x194cd4,this[_0x3c30ea(0x22b)][_0x3c30ea(0x1b6)](_0x5a0618(_0x30b6c1[_0x3c30ea(0x1d6)][_0x3c30ea(0x205)],this[_0x3c30ea(0x1d6)][_0x3c30ea(0x1ce)]));};_0x1f578f();},'updateValue'(){const _0x7fc3e9=_0x5c8774,_0x22df26=this;this[_0x7fc3e9(0x22b)][_0x7fc3e9(0x1b6)](_0x5a0618(_0x22df26[_0x7fc3e9(0x1d6)]['namesToBits'],this[_0x7fc3e9(0x1d6)][_0x7fc3e9(0x1ce)]));},'_destroy'(){const _0x773234=_0x5c8774,_0x24d45d=this;_0x24d45d[_0x773234(0x232)][_0x773234(0x20c)]();}});};RED['nodes'][_0x39f476(0x24d)]('OpcUa-Client2-Browse',{'category':'opcua','color':_0x39f476(0x1ba),'align':_0x39f476(0x217),'icon':_0x39f476(0x228),'paletteLabel':_0x39f476(0x1bd),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'nodeId':{'value':'','required':![]},'referenceTypeId':{'value':'HasChild','required':![]},'includeSubtypes':{'value':![],'required':!![]},'browseDirection':{'value':_0x39f476(0x1ec),'required':!![]},'nodeClassMask':{'value':_0x39f476(0x23d),'required':![]},'resultMask':{'value':_0x39f476(0x204),'required':![]}},'outputs':0x1,'label'(){const _0x40eab4=_0x39f476;return this[_0x40eab4(0x258)]||_0x40eab4(0x249);},'labelStyle'(){return this['name']?'node_label_italic':'';},'oneditprepare'(){const _0x52d055=_0x39f476,_0x2cb33b=this;_0x16d58d(),_0x9f7425(),_0x2cb33b[_0x52d055(0x255)]=0x1;const _0x359e54=$('#node-input-nodeClassMask');_0x359e54[_0x52d055(0x1b3)]({'namesToBits':{'Object':0x1,'Variable':0x2,'Method':0x4,'ObjectType':0x8,'VariableType':0x10,'ReferenceType':0x20,'DataType':0x40,'View':0x80},'value':0x0});const _0x2a1115=$(_0x52d055(0x206));_0x2a1115[_0x52d055(0x1b3)]({'namesToBits':{'ReferenceType':0x1,'IsForward':0x2,'NodeClass':0x4,'BrowseName':0x8,'DisplayName':0x10,'TypeDefinition':0x20},'value':0x3f});const _0x2616a9=$(_0x52d055(0x256));_0x2616a9[_0x52d055(0x1ee)]({'isSelectable'(_0x18b763){const _0x17dbc2=_0x52d055;return _0x18b763[_0x17dbc2(0x219)]===_0x17dbc2(0x215)||_0x18b763[_0x17dbc2(0x219)]==='Object';}});const _0x508dd5={'nodeId':'i=31','referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':'References'},'displayName':{'text':'References'},'nodeClass':_0x52d055(0x21c),'typeDefinition':_0x52d055(0x251)},_0x1fa107=$(_0x52d055(0x1f7));_0x1fa107[_0x52d055(0x1ee)]({'parentNode':()=>_0x508dd5,'isSelectable'(_0x20c02b){const _0xf5f3c4=_0x52d055;return _0x20c02b['nodeClass']===_0xf5f3c4(0x21c);},'isTypeRef':!![]});},'oneditsave'(){}});}()));function _0x3221(_0x35fd9e,_0x286ed8){const _0xa6808c=_0xa680();return _0x3221=function(_0x3221b2,_0x6a68ac){_0x3221b2=_0x3221b2-0x1a1;let _0x2ac3b7=_0xa6808c[_0x3221b2];return _0x2ac3b7;},_0x3221(_0x35fd9e,_0x286ed8);}function _0xa680(){const _0x40354e=['.custom-option','\x20|\x20','failure','references','Unspecified','Invalid','Both','OPCUA\x20Browse','hasClass','referenceTypeId','<div/>','registerType','fa-sliders','Inverse','DarkOrange','i=31','View','Method','function','inputs','#node-input-nodeId','fetched\x20:\x20','name','Objects','</div>','displayName','<div\x20class=\x22info-text\x22></div>','baseUrl','9EUseSw','then','/checkNodeId','\x20Fetching\x20done','/browse','statusText','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','2232522weoVVv','append','reset','suppressed','pageX','grey','addClass','attr','Unknown\x20bit\x20name','toggleClass','ns=0;i=47','flagEditor','430633rAAUzd','CadetBlue','val','typeDefinition','Object','/opcua-endpoint2','#C0DEED','toggle','$combo','browse','<span\x20class=\x22custom-checkbox\x22></span>','stringify','NodeClass','isTypeRef','target','HasSubtype',';\x22></i>\x20','assign','sterfive-info','entries','loading','replaceChild','ns=0;i=34','$inputGroup','input-group','replaceWith','value','expandable\x20expanded','stopPropagation','fa-list-alt','find','DataType','removeClass','nodeId','options','join','parentNode','split','offset','HasChild','SeaGreen','$verifyBtn','$toggleTreeBtn','4868350MpGhfO','sterfive-combo-box','data','text','show','statusCode','appendTo','filter','!!failure!!','trigger','<ul\x20class=\x22sterfive-tree\x22></ul>','ObjectType','sterfive-dropdown','Forward','$tree','nodeBrowser','reference','<button><i\x20class=\x22fa\x20fa-eye\x22></i></button>','push','fa-cog','<li>error\x20','message','next','change','#node-input-referenceTypeId','parentElement','1248608UcscNE','isSelectable','already\x20fetched','endpoint','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','$input','fetching\x20failed\x20with\x20error','VariableType','each','verify','browseName','ReferenceType\x20|\x20BrowseName\x20|\x20TypeDefinition\x20|\x20DisplayName\x20|\x20NodeClass\x20|\x20IsForward','namesToBits','#node-input-resultMask','1108341CeLXzP','length','error','fa-folder','number','remove','trim','POST','match','TypeDefinition','widget','err','hide','i=61','Variable','ns=0;i=35','right','6122727VNpOrE','nodeClass','status','apply','ReferenceType','Organizes','<li><i\x20class=\x22fa\x20','empty','log','expanded','children','152FeUluS','selected','toString','updateValue','insertAfter','../../icons/opcuanodeLogo.png',':visible','fetched','element','placeholder','currentParent','fa-object-group','rgba(61,\x2060,\x204,\x200.525)','expandable','already\x20loading','$dropdown','ns=0;i=45','browseResult','<div\x20class=\x22spinner\x22></div>','ns=0;i=85','top','endpointNode','HasTypeDefinition','$info','HasProperty','click','Variable\x20|\x20Object\x20|\x20Method\x20|\x20ObjectType\x20|\x20VariableType','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','map','DisplayName','9052152EEtIWM'];_0xa680=function(){return _0x40354e;};return _0xa680();}
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg1ODEyMzciLCJfMHg0NmE4YTYiLCJfMHg1NjNkM2IiLCJfMHg1NmVhYTUiLCJfMHg1YjY3MzQiLCJfMHgyMWJhM2YiLCJfMHgyYjc0ZWEiLCJfMHg5NzY4YjkiLCJQcm9taXNlIiwiXzB4MjJjYmYzIiwiXzB4NGI5YjE0IiwiXzB4NDRjYTk4IiwiXzB4NDAxNGY2IiwiXzB4NWJhOTU1IiwiXzB4MzBlYjYxIiwiXzB4MjUzZjBkIiwiXzB4MWJhNmRhIiwiXzB4MjA2NzZiIiwiXzB4MjM1MmVlIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MWUzOWNkIiwiXzB4NGRhY2RkIiwiXzB4NTM1NWJmIiwiXzB4NWNlYjdjIiwiRXJyb3IiLCJfMHhiNTM3ZmUiLCJfMHg0MDkyNWQiLCJfMHgzZmZmNDUiLCJfMHg1MjY4MmEiLCJfMHgxYmQ5NTciLCJfMHg1NjUxNjciLCJfMHg0NTNmMmUiLCJfMHg0MjNjMjEiLCJfMHgzZjFiYzYiLCJfMHg0NWU5MmIiLCJfMHhiOTE3NzciLCJfMHg1MTYzYzciLCJfMHg1ZWVkNGUiLCJfMHg0NmQ4ZWIiLCJfMHgzNzI4ZDQiLCJfMHgyZDdkYzQiLCJfMHg1OGI3ZGEiLCJwYXJzZUludCIsImlzTmFOIiwiXzB4MWQ5NzFmIiwiXzB4MjA2MmFhIiwiXzB4MjY1YzM0IiwiXzB4NThkOWI0IiwiXzB4NWEwNjE4IiwiXzB4MTk3ZTYxIiwiXzB4MWUxMTBhIiwiXzB4YWJkYjM4IiwiXzB4NWJhNGEwIiwiXzB4NTEwNDhhIiwiT2JqZWN0IiwiXzB4MTBiNzJlIiwiXzB4MjAzM2VkIiwiXzB4M2ExNGQ5IiwiXzB4Zjg1Mzk0IiwiXzB4MmY3NzNhIiwiXzB4Mzk1ODRmIiwiXzB4MjEwMWRlIiwiZW5kcG9pbnROb2RlIiwiXzB4MzAwMjIzIiwiZW5kcG9pbnQiLCJfMHhjYTEyYzgiLCJiYXNlVXJsIiwiXzB4ZTIxMmEyIiwiXzB4NDU1YjIzIiwiXzB4MTBhYTI1IiwiXzB4MmU1MDY2IiwiXzB4MjdjMTM5IiwiXzB4MzZiYjg0IiwiXzB4NTE0OTIzIiwiZmV0Y2giLCJKU09OIiwiY29uc29sZSIsIl8weGM0NDgzYyIsIl8weDVkNmExNCIsIl8weDQ1ZDQ0NyIsIl8weDQ0N2QwNCIsIl8weDQwZjk3OSIsIl8weDViY2E0NCIsIl8weDUwZmNjZiIsIl8weDIxZmY5NCIsIl8weDU3MmZmOSIsIl8weDRiMjlkMCIsIl8weDU0ZTJlYyIsIl8weDRkMWFhOCIsIl8weDE4ZGM0ZiIsIl8weDEzYzQyOSIsIl8weDI2YzY3OSIsIl8weDUzYjA4ZiIsInNldFRpbWVvdXQiLCJfMHgzNWM5MWEiLCJfMHgzZjg5YmQiLCJfMHgzOWEwZTkiLCJfMHgzZTM5YjIiLCJfMHgyMjE2MWMiLCJfMHg0MmQ2NzIiLCJfMHhkZTYzMTkiLCJfMHgxYTdjYzciLCJfMHhmMGU5NDIiLCJfMHg1MWE0NzIiLCJfMHgyYjhjMTgiLCJfMHg0ZWIyNWMiLCJfMHgxMDJlM2EiLCJfMHgyOTRkNzMiLCJfMHgxYzQwMzAiLCJfMHg0NTIzYWMiLCJfMHg3MzIyNDUiLCJfMHg0NTMyMjEiLCIkIiwiXzB4MjVjOTRiIiwiXzB4NzhlZjJjIiwiaWNvbiIsIl8weDIxMWEyOSIsImNvbG9yIiwiXzB4Mjc0OGJkIiwiXzB4MmJjZjdkIiwiXzB4MTZkNThkIiwidW5kZWZpbmVkIiwiXzB4NGQwY2ZmIiwiXzB4NGVjNmJmIiwiXzB4MWQwZDllIiwiXzB4MTVhODE5IiwiXzB4MmU4ZmI4IiwiXzB4NTRiMWMwIiwiXzB4ZjZhYjliIiwiXzB4OTNmMzFlIiwiXzB4MzEwYWI5IiwiXzB4NTQ0MzUzIiwiXzB4NDU2Y2I0IiwiXzB4NGRkNmEyIiwicmVmZXJlbmNlcyIsIl8weDRhNjE4ZSIsIl8weDUxZWE2YSIsIl8weDQxOTFmNCIsIl8weDI1NjQzOSIsIl8weDUxNmVlYiIsIl8weDVjMjRmNiIsIl8weGI4NTFiNCIsIl8weDNjNDYxMCIsIl8weDNhZDdkNCIsIl8weDgwM2Q4MSIsIl8weDNmMjViNCIsIl8weGE0MWU4NyIsIl8weDQyNjZmMCIsIl8weDE0YTQxYyIsIl8weDZiMDVjNiIsIl8weDNjZGE4ZCIsIl8weDMyMWIxYSIsIl8weDVhOGU5MyIsIl8weDUzNmVlNiIsIl8weDU4YzkzYiIsIl8weDViOTY0MSIsImRvY3VtZW50IiwiXzB4NDdlNzk3IiwiXzB4OWY3NDI1IiwiXzB4MzBiNmMxIiwiXzB4MWY1NzhmIiwiXzB4MTE1NGMxIiwiXzB4M2E5Y2RmIiwiXzB4NGE0NjEwIiwiXzB4MmRiZjljIiwiXzB4MTk4YjllIiwiXzB4MzA3Njc2IiwiXzB4MzIwNzk0IiwiXzB4MzE0MzhkIiwiXzB4MzcwNDY1IiwiXzB4Mzk2Y2U1IiwiXzB4MzgwMzI0IiwiXzB4MTk0Y2Q0IiwiXzB4MjJkZjI2IiwiXzB4MjRkNDVkIiwiUkVEIiwiXzB4MmNiMzNiIiwiXzB4MzU5ZTU0IiwiXzB4MmExMTE1IiwiXzB4MjYxNmE5IiwiXzB4MThiNzYzIiwiXzB4NTA4ZGQ1IiwiXzB4MWZhMTA3IiwiXzB4MjBjMDJiIl0sIm1hcHBpbmdzIjoic2lCQUFBLENBQUMsVSxDQUNHLGEsd0JBbUJBLFNBQVNBLFNBQVQsQ0FBbUJDLFNBQW5CLENBQTRCQyxTQUE1QixDQUF3Q0MsU0FBeEMsQ0FBMkNDLFNBQTNDLEMsQ0FDSSxTQUFTQyxTQUFULENBQWVDLFNBQWYsQyxRQUErQkEsU0FBQSxZQUFpQkgsU0FBakIsQ0FBcUJHLFNBQXJCLENBQTZCLElBQUlILFNBQUosQ0FBTSxTQUFVSSxTQUFWLEMsQ0FBcUJBLFNBQUEsQ0FBUUQsU0FBUixDLEVBQTNCLEMsU0FDckQsR0FBSyxDQUFBSCxTQUFBLEVBQU0sQ0FBQUEsU0FBQSxDQUFJSyxPQUFKLENBQU4sQ0FBTCxDQUF5QixTQUFVQyxTQUFWLENBQW1CQyxTQUFuQixDLHlCQUM1QixTQUFTQyxTQUFULENBQW1CQyxTQUFuQixDLHlCQUE0QixHLENBQU1DLFNBQUEsQ0FBS1QsU0FBQSxDLGdCQUFBLEVBQWVRLFNBQWYsQ0FBTCxDLEVBQStCLE1BQU9FLFNBQVAsQyxDQUFZSixTQUFBLENBQU9JLFNBQVAsQyxHQUM3RSxTQUFTQyxTQUFULENBQWtC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c0UsU0FBQSxDLGdCQUFBLEVBQTZCLEMsWUFDekIsQ0FBWSxJQUFNRCxTQURPLEMsY0FFekIsQ0FBYUUsU0FBYixDLGtDQUNXQSxTQUFBLEMsV0FBQSxJLGtCQUhjLEMsV0FLekIsQyxJQUx5QixDQUE3QixDLEVBekV1QyxDLFlBaUYzQyxFLEVBakYyQyxDQUEvQyxDLEVBM2tCSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIGZ1bmN0aW9uIGNvZXJjZUZsYWdNYXNrVG9OdW1iZXIodHlwZSwgc3RyKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RyID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0ckFzTnVtID0gcGFyc2VJbnQoc3RyLCAxMCk7XG4gICAgICAgIGlmICghaXNOYU4oc3RyQXNOdW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyQXNOdW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmxhZ3MgPSBzdHIuc3BsaXQoL1xcfHw7fCwvKS5tYXAoKGEpID0+IGEudHJpbSgpKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBmbGFncykge1xuICAgICAgICAgICAgcmVzdWx0IHw9IHR5cGVbZmxhZ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29lcmNlRmxhZ01hc2tUb1N0cmluZyh0eXBlLCB2YWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IGNvZXJjZUZsYWdNYXNrVG9OdW1iZXIodHlwZSwgdmFsdWUpO1xuICAgICAgICBjb25zdCByID0gW107XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgYml0TWFza10gb2YgT2JqZWN0LmVudHJpZXModHlwZSkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoKHZhbHVlICYgYml0TWFzaykgPT09IGJpdE1hc2spIHtcbiAgICAgICAgICAgICAgICAgICAgci5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByLmpvaW4oXCIgfCBcIik7XG4gICAgfVxuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vYnJvd3NlYDtcbiAgICAgICAgY29uc3QgYnJvd3NlRGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlKSwgeyBub2RlSWQsIHJlc3VsdE1hc2s6IDYzIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBicm93c2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgJGlucHV0RWxlbWVudCwgJGluZm8pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKGAke3Jvb3R9L2NoZWNrTm9kZUlkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgbm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChqc29uLm5vZGVBZGRyZXNzU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSBmYS1lcnJvclwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPjwvaT5ubyByZWZlcmVuY2UgITx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdCA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgY29sb3IgfSA9IGdldEljb24ocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08dWw+PC91bD48L2xpPmApO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUoKSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCkudGhlbigocGFyZW50Tm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUoJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzb2x2ZVBhcmVudE5vZGUoKS50aGVuKChwYXJlbnROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1mbGFza1wiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICQodGhpcykub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mZXRjaERhdGFGb3JOb2RlKCRsaSwgZiwgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiBGZXRjaGluZyBkb25lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuY2hpbGRyZW4oXCJ1bFwiKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlY2xhcmVGbGFnRWRpdG9yV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLmZsYWdFZGl0b3JcIiwge1xuICAgICAgICAgICAgLy8gZGVmYXVsdCBvcHRpb25zXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgbmFtZXNUb0JpdHM6IHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbW9yZSBuYW1lcyBhbmQgYml0IHZhbHVlc1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBDdXN0b20gRHJvcGRvd25cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50WzBdLnBhcmVudEVsZW1lbnQucmVwbGFjZUNoaWxkKHRoYXQuJGNvbWJvWzBdLCB0aGlzLmVsZW1lbnRbMF0pO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuZWxlbWVudC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIC8vIHRoZSB0b2dnbGUgdHJlZSBidXR0b246XG4gICAgICAgICAgICAgICAgLy8gICB3aGVuIHdlIGNsaWNrIGl0IHRoZSBkcm9wIGRvd24gcGFuZWwgaXMgZGlzcGxheWVkXG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRzZWxlY3QuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZyb21JbnB1dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uZmluZChcIi5jdXN0b20tb3B0aW9uXCIpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25OYW1lID0gJCh0aGlzKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYml0VmFsdWUgPSB0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHNbb3B0aW9uTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBiaXQgbmFtZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGF0Lm9wdGlvbnMudmFsdWUgJiBiaXRWYWx1ZSkgPT09IGJpdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaGlkZGVuIHNlbGVjdCBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnVwZGF0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcCBkb3duIHBhbmVsXG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKCc8ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiPjwvZGl2PicpLmhpZGUoKS5pbnNlcnRBZnRlcih0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICQuZWFjaCh0aGlzLm9wdGlvbnMubmFtZXNUb0JpdHMsIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRvcHRpb24gPSAkKCc8ZGl2IGNsYXNzPVwiY3VzdG9tLW9wdGlvblwiIGRhdGEtdmFsdWU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+PC9zcGFuPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uYXBwZW5kKCRvcHRpb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBvcHRpb25zIGluIHRoZSBkcm9wIGRvd24gcGFuZWwgaXMgY2xpY2tlZCxcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5vbihcImNsaWNrXCIsIFwiLmN1c3RvbS1vcHRpb25cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJCh0aGlzKS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKFwic2VsZWN0ZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnNldEJpdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhhdC51cGRhdGVWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlRnJvbUlucHV0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZWxlbWVudC52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5vcHRpb25zLnZhbHVlID0gY29lcmNlRmxhZ01hc2tUb051bWJlcih0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHMsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHNldEJpdCA9IChiaXROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpdCA9IHRoYXQub3B0aW9ucy5uYW1lc1RvQml0c1tiaXROYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJpdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGJpdCBuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSB8PSBiaXQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB1bnNldEJpdCA9IChiaXROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpdCA9IHRoYXQub3B0aW9ucy5uYW1lc1RvQml0c1tiaXROYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJpdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGJpdCBuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSAmPSB+Yml0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudmFsKGNvZXJjZUZsYWdNYXNrVG9TdHJpbmcodGhhdC5vcHRpb25zLm5hbWVzVG9CaXRzLCB0aGlzLm9wdGlvbnMudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZyb21JbnB1dCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZVZhbHVlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC52YWwoY29lcmNlRmxhZ01hc2tUb1N0cmluZyh0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHMsIHRoaXMub3B0aW9ucy52YWx1ZSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9kZXN0cm95KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnJlbW92ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLUJyb3dzZVwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwiYnJvd3NlXCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogNCB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIC8vIGZvciBhY3Rpb24gcmVhZFxuICAgICAgICAgICAgbm9kZUlkOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHJlZmVyZW5jZVR5cGVJZDogeyB2YWx1ZTogXCJIYXNDaGlsZFwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIGluY2x1ZGVTdWJ0eXBlczogeyB2YWx1ZTogZmFsc2UsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBicm93c2VEaXJlY3Rpb246IHsgdmFsdWU6IFwiRm9yd2FyZFwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgbm9kZUNsYXNzTWFzazogeyB2YWx1ZTogXCJWYXJpYWJsZSB8IE9iamVjdCB8IE1ldGhvZCB8IE9iamVjdFR5cGUgfCBWYXJpYWJsZVR5cGVcIiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICByZXN1bHRNYXNrOiB7IHZhbHVlOiBcIlJlZmVyZW5jZVR5cGUgfCBCcm93c2VOYW1lIHwgVHlwZURlZmluaXRpb24gfCBEaXNwbGF5TmFtZSB8IE5vZGVDbGFzcyB8IElzRm9yd2FyZFwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0czogMSxcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgQnJvd3NlXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBkZWNsYXJlRmxhZ0VkaXRvcldpZGdldCgpO1xuICAgICAgICAgICAgbm9kZS5pbnB1dHMgPSAxO1xuICAgICAgICAgICAgY29uc3QgJG5vZGVDbGFzc01hc2sgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUNsYXNzTWFza1wiKTtcbiAgICAgICAgICAgICRub2RlQ2xhc3NNYXNrLmZsYWdFZGl0b3Ioe1xuICAgICAgICAgICAgICAgIG5hbWVzVG9CaXRzOiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdDogMSxcbiAgICAgICAgICAgICAgICAgICAgVmFyaWFibGU6IDIsXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogNCxcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZTogOCxcbiAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVUeXBlOiAxNixcbiAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlVHlwZTogMzIsXG4gICAgICAgICAgICAgICAgICAgIERhdGFUeXBlOiA2NCxcbiAgICAgICAgICAgICAgICAgICAgVmlldzogMTI4LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0ICRyZXN1bHRNYXNrID0gJChcIiNub2RlLWlucHV0LXJlc3VsdE1hc2tcIik7XG4gICAgICAgICAgICAkcmVzdWx0TWFzay5mbGFnRWRpdG9yKHtcbiAgICAgICAgICAgICAgICBuYW1lc1RvQml0czoge1xuICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VUeXBlOiAxLFxuICAgICAgICAgICAgICAgICAgICBJc0ZvcndhcmQ6IDIsXG4gICAgICAgICAgICAgICAgICAgIE5vZGVDbGFzczogNCxcbiAgICAgICAgICAgICAgICAgICAgQnJvd3NlTmFtZTogOCxcbiAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU6IDE2LFxuICAgICAgICAgICAgICAgICAgICBUeXBlRGVmaW5pdGlvbjogMzIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogNjMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3Nlcih7XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIiB8fCBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlc05vZGVEZXNjID0ge1xuICAgICAgICAgICAgICAgIG5vZGVJZDogXCJpPTMxXCIsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiBcIlwiLFxuICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiUmVmZXJlbmNlc1wiIH0sXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJSZWZlcmVuY2VzXCIgfSxcbiAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiUmVmZXJlbmNlVHlwZVwiLFxuICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBcImk9MzFcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCAkcmVmZXJlbmNlVHlwZUlkID0gJChcIiNub2RlLWlucHV0LXJlZmVyZW5jZVR5cGVJZFwiKTtcbiAgICAgICAgICAgICRyZWZlcmVuY2VUeXBlSWQubm9kZUJyb3dzZXIoe1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+IHJlZmVyZW5jZXNOb2RlRGVzYywgLy8gUmVmZXJlbmNlcyxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHsgfSxcbiAgICB9KTtcblxufSkoKTsiXX0=
|
7
|
+
function _0x551c(_0x8ebf82,_0x4b3094){const _0xabc37d=_0xabc3();return _0x551c=function(_0x551ca6,_0x5e12c9){_0x551ca6=_0x551ca6-0x1b1;let _0x483478=_0xabc37d[_0x551ca6];return _0x483478;},_0x551c(_0x8ebf82,_0x4b3094);}function _0xabc3(){const _0x48a255=['trim','fa-question','Unknown\x20bit\x20name','NodeClass','function','ns=0;i=46','#node-input-resultMask','12DlalHO','ns=0;i=34','offset','fa-object-group','#node-input-nodeClassMask','Method','<ul\x20class=\x22sterfive-tree\x22></ul>',';\x22></i>\x20','../../icons/opcuanodeLogo.png','entries','$verifyBtn','currentParent','assign','parentElement','join','sterfive.flagEditor','application/json','next','/opcua-endpoint2','push','Invalid','reference','HasSubtype','verify','nodeAddressString','stopPropagation','appendTo','BrowseName','flagEditor','typeDefinition','fa-folder','append','replaceChild','catch','reset','registerType','Forward','then','closest','fetched','opc.tcp://opcuademo.sterfive.com:26543','expandable','endpointNode','updateValue','find','POST','replaceWith','resolveParentNode','json','input-group','<div\x20class=\x22custom-option\x22\x20data-value=\x22','each','ReferenceType','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','toString','sterfive-combo-box','hide','ReferenceType\x20|\x20BrowseName\x20|\x20TypeDefinition\x20|\x20DisplayName\x20|\x20NodeClass\x20|\x20IsForward','\x20|\x20','stringify','VariableType','ns=0;i=40','$combo','fa-sliders','SeaGreen','Inverse','fa-cog','Object','toggleClass','map','nodeClass','<div\x20class=\x22spinner\x22></div>','HasChild','selected','split','$inputGroup','hasClass','$input','81078gtdhaq','/browse','<div\x20class=\x22info-text\x22></div>','loading','\x20Fetching\x20done','number','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','sterfive.nodeBrowser','nodeId','DarkOrange','references','error','OpcUa-Client2-Browse','sterfive-info','isSelectable','namesToBits','DataType','toggle','$info','.custom-option','<li><i\x20class=\x22fa\x20','expandable\x20expanded','sterfive-dropdown','<div\x20class=\x22custom-select\x22></div>','ns=0;i=35','filter','options','opcua','pageY','message','35gnbXgp','$dropdown','statusCode','status','name','baseUrl','element','removeClass','addClass','4732440RwaGJe','View','Both','show','log','Organizes','OPCUA\x20Browse','remove','i=31','/checkNodeId','val','referenceTypeId','326332alCeBS','nodeBrowser','data','fa-list-alt','pageX','Objects','click','change','browse','length','#node-input-nodeId','trigger','!!failure!!','ObjectType','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','displayName','<div/>','children','3015594gCkvCO','1198204OddOpH','value','failure','expanded','TypeDefinition','<li>error\x20','grey','endpoint','2920920WSTeMr','SuppressedError','statusText','HasComponent','IsForward','i=61','attr','DisplayName','text','Unspecified','browseResult','ns=0;i=47','$tree','parentNode','$toggleTreeBtn','Variable','suppressed','done','<span\x20class=\x22custom-checkbox\x22></span>','354704HmXvwC','nodes','top','apply','HasTypeDefinition','placeholder','OpcUa-Endpoint2','browseName','Good','<button><i\x20class=\x22fa\x20fa-eye\x22></i></button>','SandyBrown',':visible'];_0xabc3=function(){return _0x48a255;};return _0xabc3();}(function(_0x3ccbe0,_0x412031){const _0x46e968=_0x551c,_0x1af2d7=_0x3ccbe0();while(!![]){try{const _0x53b5a1=-parseInt(_0x46e968(0x1f4))/0x1+parseInt(_0x46e968(0x1d9))/0x2+parseInt(_0x46e968(0x207))/0x3*(parseInt(_0x46e968(0x1c6))/0x4)+-parseInt(_0x46e968(0x1e1))/0x5+parseInt(_0x46e968(0x255))/0x6*(parseInt(_0x46e968(0x1b1))/0x7)+parseInt(_0x46e968(0x1ba))/0x8+-parseInt(_0x46e968(0x1d8))/0x9;if(_0x53b5a1===_0x412031)break;else _0x1af2d7['push'](_0x1af2d7['shift']());}catch(_0x4ce111){_0x1af2d7['push'](_0x1af2d7['shift']());}}}(_0xabc3,0x4bd48),(function(){'use strict';const _0x272a42=_0x551c;function _0x160a85(_0x52c89a,_0xfc22aa,_0x1f1504,_0x44c3cf){function _0x1a133c(_0x1d5865){return _0x1d5865 instanceof _0x1f1504?_0x1d5865:new _0x1f1504(function(_0x2d9881){_0x2d9881(_0x1d5865);});}return new(_0x1f1504||(_0x1f1504=Promise))(function(_0x1bca89,_0x1975f7){const _0x4ee164=_0x551c;function _0x4065db(_0x54bbea){const _0x181e96=_0x551c;try{_0x1f3ed0(_0x44c3cf[_0x181e96(0x218)](_0x54bbea));}catch(_0x3005ab){_0x1975f7(_0x3005ab);}}function _0x5f65a1(_0x2799de){try{_0x1f3ed0(_0x44c3cf['throw'](_0x2799de));}catch(_0x22e351){_0x1975f7(_0x22e351);}}function _0x1f3ed0(_0x17897d){const _0x3b034c=_0x551c;_0x17897d[_0x3b034c(0x1f2)]?_0x1bca89(_0x17897d[_0x3b034c(0x1da)]):_0x1a133c(_0x17897d['value'])[_0x3b034c(0x22c)](_0x4065db,_0x5f65a1);}_0x1f3ed0((_0x44c3cf=_0x44c3cf[_0x4ee164(0x1f7)](_0x52c89a,_0xfc22aa||[]))[_0x4ee164(0x218)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x38865e,_0x37df93,_0xa1790d){const _0x4ffd2f=_0x551c;var _0x196d80=new Error(_0xa1790d);return _0x196d80[_0x4ffd2f(0x1b5)]=_0x4ffd2f(0x1e2),_0x196d80[_0x4ffd2f(0x260)]=_0x38865e,_0x196d80[_0x4ffd2f(0x1f1)]=_0x37df93,_0x196d80;};const _0xb3d622=_0x272a42(0x26d),_0x3b343d='ns=0;i=61',_0x4c3adc=_0x272a42(0x1ec),_0xc09ff1=_0x272a42(0x205),_0x1de323=_0x272a42(0x208),_0x22627a='ns=0;i=45',_0x5b4969=_0x272a42(0x244);var _0x307bb5;(function(_0x5c2872){const _0x45f51b=_0x272a42;_0x5c2872[_0x5c2872[_0x45f51b(0x22b)]=0x0]=_0x45f51b(0x22b),_0x5c2872[_0x5c2872[_0x45f51b(0x248)]=0x1]=_0x45f51b(0x248),_0x5c2872[_0x5c2872[_0x45f51b(0x1bc)]=0x2]=_0x45f51b(0x1bc),_0x5c2872[_0x5c2872[_0x45f51b(0x21b)]=0x3]=_0x45f51b(0x21b);}(_0x307bb5||(_0x307bb5={})));var _0x351e40;(function(_0x3a7a9e){const _0x2f210a=_0x272a42;_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x1ea)]=0x0]=_0x2f210a(0x1ea),_0x3a7a9e[_0x3a7a9e['Object']=0x1]='Object',_0x3a7a9e[_0x3a7a9e['Variable']=0x2]=_0x2f210a(0x1f0),_0x3a7a9e[_0x3a7a9e['Method']=0x4]=_0x2f210a(0x20c),_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x1d3)]=0x8]='ObjectType',_0x3a7a9e[_0x3a7a9e['VariableType']=0x10]=_0x2f210a(0x243),_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x23b)]=0x20]=_0x2f210a(0x23b),_0x3a7a9e[_0x3a7a9e['DataType']=0x40]=_0x2f210a(0x265),_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x1bb)]=0x80]=_0x2f210a(0x1bb);}(_0x351e40||(_0x351e40={})));var _0x28ce43;(function(_0x263152){const _0x23699f=_0x272a42;_0x263152[_0x263152[_0x23699f(0x24a)]=0x1]=_0x23699f(0x24a),_0x263152[_0x263152[_0x23699f(0x1f0)]=0x2]=_0x23699f(0x1f0),_0x263152[_0x263152[_0x23699f(0x20c)]=0x4]=_0x23699f(0x20c),_0x263152[_0x263152[_0x23699f(0x1d3)]=0x8]=_0x23699f(0x1d3),_0x263152[_0x263152[_0x23699f(0x243)]=0x10]='VariableType',_0x263152[_0x263152['ReferenceType']=0x20]=_0x23699f(0x23b),_0x263152[_0x263152[_0x23699f(0x265)]=0x40]=_0x23699f(0x265),_0x263152[_0x263152[_0x23699f(0x1bb)]=0x80]=_0x23699f(0x1bb);}(_0x28ce43||(_0x28ce43={})));function _0x5e1489(_0xd71ce,_0x494c1a){const _0x32fa6f=_0x272a42;if(typeof _0x494c1a==='number')return _0x494c1a;const _0x4b47df=parseInt(_0x494c1a,0xa);if(!isNaN(_0x4b47df))return _0x4b47df;const _0xd590bd=_0x494c1a[_0x32fa6f(0x251)](/\||;|,/)[_0x32fa6f(0x24c)](_0x215f6b=>_0x215f6b[_0x32fa6f(0x200)]());let _0x41882c=0x0;for(const _0x16b1c6 of _0xd590bd){_0x41882c|=_0xd71ce[_0x16b1c6];}return _0x41882c;}function _0x2d7986(_0x2a3993,_0x42d433){const _0x306b46=_0x272a42;_0x42d433=_0x5e1489(_0x2a3993,_0x42d433);const _0x1f120a=[];for(const [_0x34438d,_0x2efbc7]of Object[_0x306b46(0x210)](_0x2a3993)){typeof _0x42d433===_0x306b46(0x25a)&&((_0x42d433&_0x2efbc7)===_0x2efbc7&&_0x1f120a[_0x306b46(0x21a)](_0x34438d));}return _0x1f120a[_0x306b46(0x215)](_0x306b46(0x241));}var _0x38f1d7;(function(_0x205724){const _0x5a4c45=_0x272a42;_0x205724[_0x205724[_0x5a4c45(0x23b)]=0x1]='ReferenceType',_0x205724[_0x205724['IsForward']=0x2]=_0x5a4c45(0x1e5),_0x205724[_0x205724[_0x5a4c45(0x203)]=0x4]='NodeClass',_0x205724[_0x205724[_0x5a4c45(0x222)]=0x8]=_0x5a4c45(0x222),_0x205724[_0x205724[_0x5a4c45(0x1e8)]=0x10]=_0x5a4c45(0x1e8),_0x205724[_0x205724[_0x5a4c45(0x1dd)]=0x20]=_0x5a4c45(0x1dd);}(_0x38f1d7||(_0x38f1d7={})));function _0x2ebaf3(_0x5d315f){const _0x49e141=_0x272a42;switch(_0x5d315f){case _0x49e141(0x1bf):return _0xb3d622;case'HasProperty':return _0xc09ff1;case _0x49e141(0x1e4):return _0x4c3adc;case _0x49e141(0x24f):return _0x1de323;case _0x49e141(0x21d):return _0x22627a;case _0x49e141(0x1f8):return _0x5b4969;}}const _0x22d122=_0x59c5f3=>{const _0x4ec803=_0x272a42;switch(_0x59c5f3['nodeClass']){case'Object':if(_0x59c5f3[_0x4ec803(0x1c5)]===_0xb3d622);if(_0x59c5f3[_0x4ec803(0x224)]===_0x3b343d||_0x59c5f3[_0x4ec803(0x1c5)]===_0x4ec803(0x1e6))return{'icon':_0x4ec803(0x225),'color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':_0x4ec803(0x20a),'color':_0x4ec803(0x247)};case _0x4ec803(0x1f0):if(_0x59c5f3[_0x4ec803(0x1c5)]===_0x4c3adc)return{'icon':_0x4ec803(0x1c9),'color':'SteelBlue'};else return _0x59c5f3[_0x4ec803(0x1c5)]===_0xc09ff1?{'icon':'fa-list-alt','color':'DodgerBlue'}:{'icon':_0x4ec803(0x1c9),'color':'CadetBlue'};case _0x4ec803(0x20c):return{'icon':_0x4ec803(0x249),'color':_0x4ec803(0x1fe)};case _0x4ec803(0x1d3):return{'icon':_0x4ec803(0x20a),'color':_0x4ec803(0x25e)};case _0x4ec803(0x243):return{'icon':_0x4ec803(0x246),'color':_0x4ec803(0x25e)};}return{'icon':_0x4ec803(0x201),'color':_0x4ec803(0x1df)};},_0x37f61a=({endpointNode:_0x1283a1,endpoint:_0x3ee90b,baseUrl:_0x43f5c0},_0x4d3bdc,_0x3fe658)=>_0x160a85(void 0x0,void 0x0,void 0x0,function*(){const _0x1ce117=_0x272a42,_0x37f14a=_0x43f5c0+_0x1ce117(0x219),_0x2419ac=_0x37f14a+_0x1ce117(0x256),_0x1628f9=Object[_0x1ce117(0x213)](Object[_0x1ce117(0x213)]({},_0x3fe658),{'nodeId':_0x4d3bdc,'resultMask':0x3f}),_0x4558ac=yield fetch(_0x2419ac,{'method':_0x1ce117(0x234),'body':JSON[_0x1ce117(0x242)]({'endpointNode':_0x1283a1,'endpoint':_0x3ee90b,'browseDescription':_0x1628f9}),'headers':{'Content-Type':_0x1ce117(0x217)}});if(_0x4558ac[_0x1ce117(0x1b4)]!==0xc8)return console[_0x1ce117(0x1be)]('fetching\x20failed\x20with\x20error',_0x4558ac[_0x1ce117(0x1b4)],_0x4558ac['statusText']),{'references':[]};console[_0x1ce117(0x1be)]('fetched\x20:\x20',_0x4558ac[_0x1ce117(0x1b4)],_0x4558ac[_0x1ce117(0x1e3)]);const _0x2d3f9c=yield _0x4558ac[_0x1ce117(0x237)](),_0x5aa172=_0x2d3f9c[_0x1ce117(0x1eb)][_0x1ce117(0x25f)]||[];return{'references':_0x5aa172};}),_0x17892b={'referenceTypeId':_0x2ebaf3(_0x272a42(0x24f)),'includeSubtypes':!![],'browseDirection':_0x307bb5[_0x272a42(0x22b)],'nodeClassMask':_0x351e40['Variable']|_0x351e40['Object']|_0x351e40['Method'],'resultMask':0x3f},_0x2babad={'referenceTypeId':_0x2ebaf3(_0x272a42(0x1bf)),'includeSubtypes':!![],'browseDirection':_0x307bb5[_0x272a42(0x22b)],'nodeClassMask':_0x351e40[_0x272a42(0x1f0)]|_0x351e40[_0x272a42(0x24a)]|_0x351e40['Method'],'resultMask':0x3f},_0x450ef7=({endpointNode:_0x459e02,endpoint:_0x51e588,baseUrl:_0x48e953},_0x580815,_0x2156ee)=>_0x160a85(void 0x0,void 0x0,void 0x0,function*(){const _0x12eb10=_0x272a42,_0x58adee=_0x48e953+_0x12eb10(0x219),_0x1ca9eb=_0x580815[_0x12eb10(0x1c4)](),_0x210cd4=yield fetch(_0x58adee+_0x12eb10(0x1c3),{'method':'POST','body':JSON[_0x12eb10(0x242)]({'endpointNode':_0x459e02,'endpoint':_0x51e588,'nodeId':_0x1ca9eb}),'headers':{'Content-Type':_0x12eb10(0x217)}}),_0x32502c=(_0x40c241,_0xb0f05)=>{const _0x4862e4=_0x12eb10;_0x2156ee[_0x4862e4(0x1e9)](_0x40c241)[_0x4862e4(0x1b9)](_0x4862e4(0x262))[_0x4862e4(0x1b9)](_0xb0f05),_0x2156ee[_0x4862e4(0x1bd)](),setTimeout(()=>{const _0x4ed67f=_0x4862e4;_0x2156ee[_0x4ed67f(0x1b8)](_0xb0f05),_0x2156ee[_0x4ed67f(0x23f)]();},0xbb8);},_0x1a21e2=yield _0x210cd4['json']();_0x210cd4[_0x12eb10(0x1b4)]!==0xc8?_0x32502c(_0x12eb10(0x1d2)+_0x1ca9eb,_0x12eb10(0x1db)):_0x1a21e2[_0x12eb10(0x1b3)]['match'](/Good/)?(_0x580815['val'](_0x1a21e2[_0x12eb10(0x21f)]),_0x580815['trigger'](_0x12eb10(0x1cd)),_0x32502c(_0x12eb10(0x1fc),'ok')):(_0x580815[_0x12eb10(0x1c4)](''+_0x1ca9eb),_0x32502c(_0x1a21e2[_0x12eb10(0x1b3)]+'\x20'+_0x210cd4[_0x12eb10(0x1e3)],_0x12eb10(0x1db)));});function _0x325521(_0x35d835,_0x1ae41b){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0xbdbb28=_0x551c,_0x4c2c9a=_0x35d835[_0xbdbb28(0x1c8)]('value'),_0x500a5f=yield _0x37f61a(_0x1ae41b,_0x4c2c9a,_0x17892b),_0x427dac=yield _0x37f61a(_0x1ae41b,_0x4c2c9a,_0x2babad);return{'references':[..._0x500a5f[_0xbdbb28(0x25f)],..._0x427dac[_0xbdbb28(0x25f)]]};});}const _0x57ac10={'referenceTypeId':_0x2ebaf3(_0x272a42(0x21d)),'includeSubtypes':!![],'browseDirection':_0x307bb5[_0x272a42(0x22b)],'nodeClassMask':_0x351e40['ReferenceType']|_0x351e40[_0x272a42(0x1d3)]|_0x351e40[_0x272a42(0x265)]|_0x351e40[_0x272a42(0x243)],'resultMask':0x3f};function _0x10a75c(_0x4c188e,_0x13cdf3){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0x589423=_0x551c,_0x51400e=_0x4c188e[_0x589423(0x1c8)](_0x589423(0x1da)),_0x4f0591=yield _0x37f61a(_0x13cdf3,_0x51400e,_0x57ac10);return _0x4f0591;});}const _0x2f87e3=_0xfc03dc=>{const _0x1239d1=_0x272a42;var _0x5cdd02,_0x13f5bc;if(!_0xfc03dc){const _0x2ca808=$('<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>');return _0x2ca808;}const _0x5318c4=_0xfc03dc[_0x1239d1(0x25d)]['toString'](),_0x3411dc=((_0x5cdd02=_0xfc03dc['displayName'])===null||_0x5cdd02===void 0x0?void 0x0:_0x5cdd02[_0x1239d1(0x1e9)])||((_0x13f5bc=_0xfc03dc[_0x1239d1(0x1fb)])===null||_0x13f5bc===void 0x0?void 0x0:_0x13f5bc[_0x1239d1(0x1b5)])||_0xfc03dc['nodeId'][_0x1239d1(0x23d)](),{icon:_0xe07323,color:_0x247e94}=_0x22d122(_0xfc03dc),_0x5ca749=$(_0x1239d1(0x269)+_0xe07323+'\x22\x20style=\x22color:'+_0x247e94+_0x1239d1(0x20e)+_0x3411dc+'<ul></ul></li>');return _0x5ca749[_0x1239d1(0x1b9)](_0x1239d1(0x230)),_0x5ca749[_0x1239d1(0x1c8)](_0x1239d1(0x1da),_0x5318c4),_0x5ca749[_0x1239d1(0x1c8)]('reference',_0xfc03dc),_0x5ca749;},_0xeb1ac5=()=>{const _0x520d6a=_0x272a42;$['widget'](_0x520d6a(0x25c),{'options':{'endpointNode':()=>({'endpoint':_0x520d6a(0x22f)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x520d6a(0x1cb)},'nodeClass':'Object','nodeId':'ns=0;i=85','displayName':{'text':_0x520d6a(0x1cb)},'typeDefinition':_0x3b343d}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0xe9a3e0=_0x551c,_0x499904=this,_0x396541=typeof _0x499904[_0xe9a3e0(0x26f)][_0xe9a3e0(0x1ee)]===_0xe9a3e0(0x204)?_0x499904[_0xe9a3e0(0x26f)][_0xe9a3e0(0x1ee)]():_0x499904[_0xe9a3e0(0x26f)][_0xe9a3e0(0x1ee)];if(_0x396541 instanceof Promise)return yield _0x396541;return _0x396541;});},'reset'(){const _0x5c49d2=_0x520d6a,_0x21145b=this;_0x21145b[_0x5c49d2(0x1ed)]['empty'](),this[_0x5c49d2(0x236)]()[_0x5c49d2(0x22c)](_0x47b2cc=>{const _0x233236=_0x5c49d2,_0x363767=_0x2f87e3(_0x47b2cc);_0x21145b[_0x233236(0x1ed)][_0x233236(0x226)](_0x363767),_0x21145b[_0x233236(0x212)]=_0x47b2cc;});},'verify'(){const _0x5c9763=_0x520d6a,_0x534921=this,_0x286951={'baseUrl':_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x1b6)],'endpointNode':typeof _0x534921[_0x5c9763(0x26f)][_0x5c9763(0x231)]===_0x5c9763(0x204)?_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x231)]():_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x231)],'endpoint':typeof _0x534921[_0x5c9763(0x26f)][_0x5c9763(0x1e0)]==='function'?_0x534921['options'][_0x5c9763(0x1e0)]():_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x1e0)]};_0x450ef7(_0x286951,_0x534921['$input'],_0x534921[_0x5c9763(0x267)]);},'_create'(){const _0x37e8ce=_0x520d6a,_0x25c664=this;function _0x40374a(_0x2c5cf2,_0x3afb5a,_0x4b5137){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0x4b1344=_0x551c;if(_0x2c5cf2[_0x4b1344(0x253)](_0x4b1344(0x22e))){console['log']('already\x20fetched');return;}if(_0x2c5cf2[_0x4b1344(0x253)]('loading')){console[_0x4b1344(0x1be)]('already\x20loading');return;}_0x2c5cf2[_0x4b1344(0x1b9)](_0x4b1344(0x258)),_0x2c5cf2[_0x4b1344(0x226)](_0x4b1344(0x24e));try{_0x2c5cf2[_0x4b1344(0x1d7)]('ul')['empty']();const {references:_0x3213ec}=yield _0x3afb5a(_0x2c5cf2,_0x4b5137);for(const _0x1fbcf0 of _0x3213ec){if(_0x25c664[_0x4b1344(0x26f)][_0x4b1344(0x26e)]&&!_0x25c664[_0x4b1344(0x26f)][_0x4b1344(0x26e)](_0x1fbcf0))continue;const _0x408f89=_0x2f87e3(_0x1fbcf0);_0x2c5cf2[_0x4b1344(0x1d7)]('ul')['append'](_0x408f89);}_0x2c5cf2['addClass'](_0x4b1344(0x22e));}catch(_0x16d8bb){_0x2c5cf2[_0x4b1344(0x1d7)]('ul')['append'](_0x4b1344(0x1de)+_0x16d8bb[_0x4b1344(0x272)]+'</li>'),console['log']('err',_0x16d8bb);}_0x2c5cf2['find']('.spinner')['remove'](),_0x2c5cf2['removeClass'](_0x4b1344(0x258));});}_0x25c664['$input']=this[_0x37e8ce(0x1b7)],_0x25c664['$combo']=$('<div/>'),_0x25c664[_0x37e8ce(0x245)][_0x37e8ce(0x1b9)](_0x37e8ce(0x23e)),this[_0x37e8ce(0x1b7)][_0x37e8ce(0x235)](_0x25c664['$combo']),_0x25c664[_0x37e8ce(0x252)]=$('<div/>')[_0x37e8ce(0x1b9)](_0x37e8ce(0x238)),_0x25c664[_0x37e8ce(0x245)]['append'](_0x25c664[_0x37e8ce(0x252)]),_0x25c664[_0x37e8ce(0x252)][_0x37e8ce(0x226)](_0x25c664[_0x37e8ce(0x254)]),_0x25c664[_0x37e8ce(0x1ef)]=$(_0x37e8ce(0x25b)),_0x25c664[_0x37e8ce(0x252)][_0x37e8ce(0x226)](_0x25c664[_0x37e8ce(0x1ef)]),_0x25c664[_0x37e8ce(0x1ef)]['on']('click',function(){const _0x9b9c9d=_0x37e8ce;!_0x25c664['$dropdown']['is'](':visible')&&(_0x25c664[_0x9b9c9d(0x236)]()['then'](_0x46a83e=>{const _0xb9e4be=_0x9b9c9d;var _0x55ef62;(_0x46a83e!==_0x25c664[_0xb9e4be(0x212)]||((_0x55ef62=_0x25c664[_0xb9e4be(0x212)])===null||_0x55ef62===void 0x0?void 0x0:_0x55ef62[_0xb9e4be(0x25d)])!==_0x46a83e['nodeId'])&&_0x25c664[_0xb9e4be(0x229)]();}),_0x25c664[_0x9b9c9d(0x267)]['hide']()),_0x25c664[_0x9b9c9d(0x1b2)][_0x9b9c9d(0x266)]();}),_0x25c664[_0x37e8ce(0x211)]=$(_0x37e8ce(0x1d4)),_0x25c664[_0x37e8ce(0x252)][_0x37e8ce(0x226)](_0x25c664['$verifyBtn']),_0x25c664[_0x37e8ce(0x211)]['on']('click',()=>{const _0x11d5c3=_0x37e8ce;this[_0x11d5c3(0x21e)]();}),!_0x25c664['$input'][_0x37e8ce(0x1e7)](_0x37e8ce(0x1f9))&&_0x25c664[_0x37e8ce(0x254)]['attr'](_0x37e8ce(0x1f9),_0x37e8ce(0x23c)),_0x25c664[_0x37e8ce(0x267)]=$(_0x37e8ce(0x257)),_0x25c664['$info'][_0x37e8ce(0x23f)](),{'baseUrl':_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x1b6)],'endpointNode':typeof _0x25c664[_0x37e8ce(0x26f)]['endpointNode']===_0x37e8ce(0x204)?_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x231)]():_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x231)],'endpoint':typeof _0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x1e0)]===_0x37e8ce(0x204)?_0x25c664[_0x37e8ce(0x26f)]['endpoint']():_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x1e0)]},_0x25c664[_0x37e8ce(0x1b2)]=$(_0x37e8ce(0x1d6))[_0x37e8ce(0x1b9)](_0x37e8ce(0x26b))[_0x37e8ce(0x23f)](),_0x25c664[_0x37e8ce(0x245)][_0x37e8ce(0x226)](_0x25c664[_0x37e8ce(0x267)]),_0x25c664[_0x37e8ce(0x245)][_0x37e8ce(0x226)](_0x25c664['$dropdown']),_0x25c664['$tree']=$(_0x37e8ce(0x20d))[_0x37e8ce(0x221)](_0x25c664[_0x37e8ce(0x1b2)]),this[_0x37e8ce(0x229)](),_0x25c664[_0x37e8ce(0x1ed)]['on'](_0x37e8ce(0x1cc),'li',function(_0x25a300){const _0x549685=_0x37e8ce;var _0x12298c,_0x4c14f6;_0x25a300[_0x549685(0x220)]();let _0x1a27f7=$(this);const _0x605f9a=0x14,_0x457347=0x14,_0x3451e7=$(this)[_0x549685(0x209)](),_0x4cf963=_0x25a300;if(_0x4cf963[_0x549685(0x1ca)]>=_0x3451e7['left']&&_0x4cf963[_0x549685(0x1ca)]<=_0x3451e7['left']+_0x605f9a&&_0x4cf963[_0x549685(0x271)]>=_0x3451e7[_0x549685(0x1f6)]&&_0x4cf963[_0x549685(0x271)]<=_0x3451e7['top']+_0x457347){if(_0x1a27f7[_0x549685(0x253)](_0x549685(0x230))){if(_0x1a27f7[_0x549685(0x253)](_0x549685(0x22e))){_0x1a27f7[_0x549685(0x1b8)](_0x549685(0x230))['addClass'](_0x549685(0x1dc)),_0x1a27f7[_0x549685(0x1d7)]('ul')[_0x549685(0x266)]();return;}const _0x5e5f4b={'baseUrl':_0x25c664['options'][_0x549685(0x1b6)],'endpointNode':typeof _0x25c664[_0x549685(0x26f)][_0x549685(0x231)]===_0x549685(0x204)?_0x25c664[_0x549685(0x26f)]['endpointNode']():_0x25c664[_0x549685(0x26f)][_0x549685(0x231)],'endpoint':typeof _0x25c664['options'][_0x549685(0x1e0)]===_0x549685(0x204)?_0x25c664[_0x549685(0x26f)][_0x549685(0x1e0)]():_0x25c664['options'][_0x549685(0x1e0)]},_0x2f3726=!_0x25c664[_0x549685(0x26f)]['isTypeRef']?_0x325521:_0x10a75c;_0x40374a(_0x1a27f7,_0x2f3726,_0x5e5f4b)['then'](()=>{const _0x4d7ef5=_0x549685;console['log'](_0x4d7ef5(0x259)),console['log'](_0x4d7ef5(0x22e)),_0x1a27f7[_0x4d7ef5(0x1b8)](_0x4d7ef5(0x230))[_0x4d7ef5(0x1b9)]('expanded');})[_0x549685(0x228)](_0x57e335=>{const _0x39c0ee=_0x549685;_0x1a27f7[_0x39c0ee(0x1b8)](_0x39c0ee(0x230))['addClass']('expanded'),console[_0x39c0ee(0x1be)](_0x39c0ee(0x260),_0x57e335);});}else{if(_0x1a27f7[_0x549685(0x253)]('expanded'))_0x1a27f7[_0x549685(0x1d7)]('ul')[_0x549685(0x266)](),_0x1a27f7['toggleClass'](_0x549685(0x26a));else{if(_0x1a27f7[_0x549685(0x1d7)]('ul')[_0x549685(0x1d7)]()['length']>0x0)_0x1a27f7[_0x549685(0x1d7)]('ul')['toggle'](),_0x1a27f7[_0x549685(0x24b)](_0x549685(0x26a));else;}}}else{const _0x450c29=_0x1a27f7[_0x549685(0x1c8)](_0x549685(0x1da)),_0x19d46d=_0x1a27f7[_0x549685(0x1c8)](_0x549685(0x21c));if(_0x25c664['options']['isSelectable']&&!_0x25c664[_0x549685(0x26f)][_0x549685(0x263)](_0x19d46d))return;_0x25c664['$input'][_0x549685(0x1c8)](_0x549685(0x21c),_0x19d46d);const _0x3a917d=((_0x12298c=_0x19d46d[_0x549685(0x1d5)])===null||_0x12298c===void 0x0?void 0x0:_0x12298c[_0x549685(0x1e9)])||((_0x4c14f6=_0x19d46d[_0x549685(0x1fb)])===null||_0x4c14f6===void 0x0?void 0x0:_0x4c14f6['name'])||_0x19d46d[_0x549685(0x25d)]['toString'](),_0x36fe2a='['+_0x3a917d+']('+_0x450c29+')';_0x25c664[_0x549685(0x254)][_0x549685(0x1c4)](_0x36fe2a),_0x25c664[_0x549685(0x254)][_0x549685(0x1d1)](_0x549685(0x1cd)),_0x25c664[_0x549685(0x1b2)][_0x549685(0x23f)]();}}),$(document)['on']('click',function(_0x4641a3){const _0x7635fe=_0x37e8ce;!$(_0x4641a3['target'])[_0x7635fe(0x22d)](_0x25c664['$combo'])[_0x7635fe(0x1cf)]&&_0x25c664['$dropdown'][_0x7635fe(0x23f)]();});}});},_0x1c2d97=()=>{const _0x14002e=_0x272a42;$['widget'](_0x14002e(0x216),{'options':{'namesToBits':{},'value':0x0},'_create'(){const _0x1498f7=_0x14002e,_0x359d86=this;_0x359d86[_0x1498f7(0x254)]=this[_0x1498f7(0x1b7)],_0x359d86[_0x1498f7(0x245)]=$(_0x1498f7(0x1d6)),_0x359d86['$combo'][_0x1498f7(0x1b9)](_0x1498f7(0x23e)),this[_0x1498f7(0x1b7)][0x0][_0x1498f7(0x214)][_0x1498f7(0x227)](_0x359d86[_0x1498f7(0x245)][0x0],this[_0x1498f7(0x1b7)][0x0]),_0x359d86[_0x1498f7(0x252)]=$(_0x1498f7(0x1d6))[_0x1498f7(0x1b9)]('input-group'),_0x359d86[_0x1498f7(0x245)][_0x1498f7(0x226)](_0x359d86['$inputGroup']),_0x359d86['$inputGroup']['append'](_0x359d86[_0x1498f7(0x254)]),_0x359d86[_0x1498f7(0x1ef)]=$(_0x1498f7(0x1fd)),_0x359d86[_0x1498f7(0x252)]['append'](_0x359d86[_0x1498f7(0x1ef)]),_0x359d86[_0x1498f7(0x1ef)]['on'](_0x1498f7(0x1cc),function(){const _0xaf3b60=_0x1498f7;_0x359d86[_0xaf3b60(0x1b2)][_0xaf3b60(0x266)](),_0x359d86[_0xaf3b60(0x1b2)]['is'](_0xaf3b60(0x1ff))&&(_0x36cfca(),_0x359d86['$combo'][_0xaf3b60(0x233)](_0xaf3b60(0x268))['each'](function(){const _0x45d6e9=_0xaf3b60;let _0x578587=$(this)[_0x45d6e9(0x1e9)]();const _0x2646a9=_0x359d86[_0x45d6e9(0x26f)]['namesToBits'][_0x578587];if(_0x2646a9===undefined)throw new Error(_0x45d6e9(0x202));(_0x359d86[_0x45d6e9(0x26f)][_0x45d6e9(0x1da)]&_0x2646a9)===_0x2646a9?$(this)[_0x45d6e9(0x1b9)](_0x45d6e9(0x250)):$(this)[_0x45d6e9(0x1b8)](_0x45d6e9(0x250));}),_0x359d86['updateValue']());}),_0x359d86[_0x1498f7(0x1b2)]=$(_0x1498f7(0x26c))[_0x1498f7(0x23f)]()['insertAfter'](this['element']),$[_0x1498f7(0x23a)](this['options']['namesToBits'],function(_0x2d822f){const _0x221e92=_0x1498f7,_0x4e97f4=$(_0x221e92(0x239)+_0x2d822f+'\x22>'+_0x221e92(0x1f3)+_0x2d822f+'</div>');_0x359d86['$dropdown'][_0x221e92(0x226)](_0x4e97f4);}),_0x359d86[_0x1498f7(0x1b2)]['on'](_0x1498f7(0x1cc),_0x1498f7(0x268),function(){const _0x66e6cd=_0x1498f7;$(this)[_0x66e6cd(0x24b)](_0x66e6cd(0x250));const _0x3c98ff=$(this)[_0x66e6cd(0x1c8)]('value');$(this)[_0x66e6cd(0x253)]('selected')?_0x189192(_0x3c98ff):_0x59e252(_0x3c98ff),_0x359d86[_0x66e6cd(0x232)]();}),_0x359d86[_0x1498f7(0x245)][_0x1498f7(0x226)](_0x359d86[_0x1498f7(0x1b2)]);const _0x36cfca=()=>{const _0x293177=_0x1498f7,_0x15e516=this[_0x293177(0x1b7)][_0x293177(0x1c4)]();_0x359d86['options'][_0x293177(0x1da)]=_0x5e1489(_0x359d86[_0x293177(0x26f)][_0x293177(0x264)],_0x15e516);},_0x189192=_0x2585ff=>{const _0x3240a8=_0x1498f7,_0x3c568e=_0x359d86[_0x3240a8(0x26f)][_0x3240a8(0x264)][_0x2585ff];if(_0x3c568e===undefined)throw new Error(_0x3240a8(0x202));this['options'][_0x3240a8(0x1da)]|=_0x3c568e;},_0x59e252=_0x1fab4d=>{const _0x35b286=_0x1498f7,_0x2a4c78=_0x359d86[_0x35b286(0x26f)][_0x35b286(0x264)][_0x1fab4d];if(_0x2a4c78===undefined)throw new Error(_0x35b286(0x202));this[_0x35b286(0x26f)][_0x35b286(0x1da)]&=~_0x2a4c78,this[_0x35b286(0x1b7)][_0x35b286(0x1c4)](_0x2d7986(_0x359d86['options'][_0x35b286(0x264)],this['options'][_0x35b286(0x1da)]));};_0x36cfca();},'updateValue'(){const _0x200492=_0x14002e,_0x237d26=this;this[_0x200492(0x1b7)]['val'](_0x2d7986(_0x237d26[_0x200492(0x26f)]['namesToBits'],this['options'][_0x200492(0x1da)]));},'_destroy'(){const _0x585e70=_0x14002e,_0x19f160=this;_0x19f160[_0x585e70(0x1b2)][_0x585e70(0x1c1)]();}});};RED[_0x272a42(0x1f5)][_0x272a42(0x22a)](_0x272a42(0x261),{'category':_0x272a42(0x270),'color':'#C0DEED','align':'right','icon':_0x272a42(0x20f),'paletteLabel':_0x272a42(0x1ce),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x272a42(0x1fa)},'nodeId':{'value':'','required':![]},'referenceTypeId':{'value':_0x272a42(0x24f),'required':![]},'includeSubtypes':{'value':![],'required':!![]},'browseDirection':{'value':_0x272a42(0x22b),'required':!![]},'nodeClassMask':{'value':'Variable\x20|\x20Object\x20|\x20Method\x20|\x20ObjectType\x20|\x20VariableType','required':![]},'resultMask':{'value':_0x272a42(0x240),'required':![]}},'outputs':0x1,'label'(){const _0x79b077=_0x272a42;return this[_0x79b077(0x1b5)]||_0x79b077(0x1c0);},'labelStyle'(){const _0x66c26b=_0x272a42;return this[_0x66c26b(0x1b5)]?'node_label_italic':'';},'oneditprepare'(){const _0x2276a3=_0x272a42,_0xd7c497=this;_0xeb1ac5(),_0x1c2d97(),_0xd7c497['inputs']=0x1;const _0x200a08=$(_0x2276a3(0x20b));_0x200a08[_0x2276a3(0x223)]({'namesToBits':{'Object':0x1,'Variable':0x2,'Method':0x4,'ObjectType':0x8,'VariableType':0x10,'ReferenceType':0x20,'DataType':0x40,'View':0x80},'value':0x0});const _0x35fb15=$(_0x2276a3(0x206));_0x35fb15[_0x2276a3(0x223)]({'namesToBits':{'ReferenceType':0x1,'IsForward':0x2,'NodeClass':0x4,'BrowseName':0x8,'DisplayName':0x10,'TypeDefinition':0x20},'value':0x3f});const _0x34b345=$(_0x2276a3(0x1d0));_0x34b345['nodeBrowser']({'isSelectable'(_0x16a443){const _0x31ee14=_0x2276a3;return _0x16a443[_0x31ee14(0x24d)]===_0x31ee14(0x1f0)||_0x16a443[_0x31ee14(0x24d)]===_0x31ee14(0x24a);}});const _0x5e2630={'nodeId':_0x2276a3(0x1c2),'referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':'References'},'displayName':{'text':'References'},'nodeClass':_0x2276a3(0x23b),'typeDefinition':_0x2276a3(0x1c2)},_0x343fc4=$('#node-input-referenceTypeId');_0x343fc4[_0x2276a3(0x1c7)]({'parentNode':()=>_0x5e2630,'isSelectable'(_0x12b4fa){const _0xcedbd5=_0x2276a3;return _0x12b4fa[_0xcedbd5(0x24d)]===_0xcedbd5(0x23b);},'isTypeRef':!![]});},'oneditsave'(){}});}()));
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgxNjBhODUiLCJfMHg1MmM4OWEiLCJfMHhmYzIyYWEiLCJfMHgxZjE1MDQiLCJfMHg0NGMzY2YiLCJfMHgxYTEzM2MiLCJfMHgxZDU4NjUiLCJfMHgyZDk4ODEiLCJQcm9taXNlIiwiXzB4MWJjYTg5IiwiXzB4MTk3NWY3IiwiXzB4NDA2NWRiIiwiXzB4NTRiYmVhIiwiXzB4MWYzZWQwIiwiXzB4MzAwNWFiIiwiXzB4NWY2NWExIiwiXzB4Mjc5OWRlIiwiXzB4MjJlMzUxIiwiXzB4MTc4OTdkIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4Mzg4NjVlIiwiXzB4MzdkZjkzIiwiXzB4YTE3OTBkIiwiXzB4MTk2ZDgwIiwiRXJyb3IiLCJfMHhiM2Q2MjIiLCJfMHgzYjM0M2QiLCJfMHg0YzNhZGMiLCJfMHhjMDlmZjEiLCJfMHgxZGUzMjMiLCJfMHgyMjYyN2EiLCJfMHg1YjQ5NjkiLCJfMHgzMDdiYjUiLCJfMHg1YzI4NzIiLCJfMHgzNTFlNDAiLCJfMHgzYTdhOWUiLCJfMHgyOGNlNDMiLCJfMHgyNjMxNTIiLCJfMHg1ZTE0ODkiLCJfMHhkNzFjZSIsIl8weDQ5NGMxYSIsIl8weDRiNDdkZiIsInBhcnNlSW50IiwiaXNOYU4iLCJfMHhkNTkwYmQiLCJfMHgyMTVmNmIiLCJfMHg0MTg4MmMiLCJfMHgxNmIxYzYiLCJfMHgyZDc5ODYiLCJfMHgyYTM5OTMiLCJfMHg0MmQ0MzMiLCJfMHgxZjEyMGEiLCJfMHgzNDQzOGQiLCJfMHgyZWZiYzciLCJPYmplY3QiLCJfMHgzOGYxZDciLCJfMHgyMDU3MjQiLCJfMHgyZWJhZjMiLCJfMHg1ZDMxNWYiLCJfMHgyMmQxMjIiLCJfMHg1OWM1ZjMiLCJfMHgzN2Y2MWEiLCJlbmRwb2ludE5vZGUiLCJfMHgxMjgzYTEiLCJlbmRwb2ludCIsIl8weDNlZTkwYiIsImJhc2VVcmwiLCJfMHg0M2Y1YzAiLCJfMHg0ZDNiZGMiLCJfMHgzZmU2NTgiLCJfMHgzN2YxNGEiLCJfMHgyNDE5YWMiLCJfMHgxNjI4ZjkiLCJfMHg0NTU4YWMiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4MmQzZjljIiwiXzB4NWFhMTcyIiwiXzB4MTc4OTJiIiwiXzB4MmJhYmFkIiwiXzB4NDUwZWY3IiwiXzB4NDU5ZTAyIiwiXzB4NTFlNTg4IiwiXzB4NDhlOTUzIiwiXzB4NTgwODE1IiwiXzB4MjE1NmVlIiwiXzB4NThhZGVlIiwiXzB4MWNhOWViIiwiXzB4MjEwY2Q0IiwiXzB4MzI1MDJjIiwiXzB4NDBjMjQxIiwiXzB4YjBmMDUiLCJzZXRUaW1lb3V0IiwiXzB4MWEyMWUyIiwiXzB4MzI1NTIxIiwiXzB4MzVkODM1IiwiXzB4MWFlNDFiIiwiXzB4NGMyYzlhIiwiXzB4NTAwYTVmIiwiXzB4NDI3ZGFjIiwiXzB4NTdhYzEwIiwiXzB4MTBhNzVjIiwiXzB4NGMxODhlIiwiXzB4MTNjZGYzIiwiXzB4NTE0MDBlIiwiXzB4NGYwNTkxIiwiXzB4MmY4N2UzIiwiXzB4ZmMwM2RjIiwiXzB4NWNkZDAyIiwiXzB4MTNmNWJjIiwiXzB4MmNhODA4IiwiJCIsIl8weDUzMThjNCIsIl8weDM0MTFkYyIsImljb24iLCJfMHhlMDczMjMiLCJjb2xvciIsIl8weDI0N2U5NCIsIl8weDVjYTc0OSIsIl8weGViMWFjNSIsInVuZGVmaW5lZCIsIl8weDQ5OTkwNCIsIl8weDM5NjU0MSIsIl8weDIxMTQ1YiIsIl8weDQ3YjJjYyIsIl8weDM2Mzc2NyIsIl8weDUzNDkyMSIsIl8weDI4Njk1MSIsIl8weDI1YzY2NCIsIl8weDQwMzc0YSIsIl8weDJjNWNmMiIsIl8weDNhZmI1YSIsIl8weDRiNTEzNyIsInJlZmVyZW5jZXMiLCJfMHgzMjEzZWMiLCJfMHgxZmJjZjAiLCJfMHg0MDhmODkiLCJfMHgxNmQ4YmIiLCJfMHg0NmE4M2UiLCJfMHg1NWVmNjIiLCJfMHgyNWEzMDAiLCJfMHgxMjI5OGMiLCJfMHg0YzE0ZjYiLCJfMHgxYTI3ZjciLCJfMHg2MDVmOWEiLCJfMHg0NTczNDciLCJfMHgzNDUxZTciLCJfMHg0Y2Y5NjMiLCJfMHg1ZTVmNGIiLCJfMHgyZjM3MjYiLCJfMHg1N2UzMzUiLCJfMHg0NTBjMjkiLCJfMHgxOWQ0NmQiLCJfMHgzYTkxN2QiLCJfMHgzNmZlMmEiLCJkb2N1bWVudCIsIl8weDQ2NDFhMyIsIl8weDFjMmQ5NyIsIl8weDM1OWQ4NiIsIl8weDM2Y2ZjYSIsIl8weDU3ODU4NyIsIl8weDI2NDZhOSIsIl8weDJkODIyZiIsIl8weDRlOTdmNCIsIl8weDNjOThmZiIsIl8weDE4OTE5MiIsIl8weDU5ZTI1MiIsIl8weDE1ZTUxNiIsIl8weDI1ODVmZiIsIl8weDNjNTY4ZSIsIl8weDFmYWI0ZCIsIl8weDJhNGM3OCIsIl8weDIzN2QyNiIsIl8weDE5ZjE2MCIsIlJFRCIsIl8weGQ3YzQ5NyIsIl8weDIwMGEwOCIsIl8weDM1ZmIxNSIsIl8weDM0YjM0NSIsIl8weDE2YTQ0MyIsIl8weDVlMjYzMCIsIl8weDM0M2ZjNCIsIl8weDEyYjRmYSJdLCJtYXBwaW5ncyI6IjRzSEFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFTQSxTQUFULENBQW1CQyxTQUFuQixDQUE0QkMsU0FBNUIsQ0FBd0NDLFNBQXhDLENBQTJDQyxTQUEzQyxDLENBQ0ksU0FBU0MsU0FBVCxDQUFlQyxTQUFmLEMsUUFBK0JBLFNBQUEsWUFBaUJILFNBQWpCLENBQXFCRyxTQUFyQixDQUE2QixJQUFJSCxTQUFKLENBQU0sU0FBVUksU0FBVixDLENBQXFCQSxTQUFBLENBQVFELFNBQVIsQyxFQUEzQixDLFNBQ3JELEdBQUssQ0FBQUgsU0FBQSxFQUFNLENBQUFBLFNBQUEsQ0FBSUssT0FBSixDQUFOLENBQUwsQ0FBeUIsU0FBVUMsU0FBVixDQUFtQkMsU0FBbkIsQyx5QkFDNUIsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsQyx5QkFBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsU0FBVCxDQUFrQkMs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Q0FSekIsQ0FTQXNFLFNBQUEsQyxnQkFBQSxFQUE2QixDLFlBQ3pCLENBQVksSUFBTUQsU0FETyxDLGNBRXpCLENBQWFFLFNBQWIsQyxrQ0FDV0EsU0FBQSxDLGdCQUFBLEksa0JBSGMsQyxXQUt6QixDLElBTHlCLENBQTdCLEMsRUF6RXVDLEMsWUFpRjNDLEUsRUFqRjJDLENBQS9DLEMsRUEza0JKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBjb25zdCBPcmdhbml6ZXNSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNVwiO1xuICAgIGNvbnN0IEZvbGRlclR5cGUgPSBcIm5zPTA7aT02MVwiO1xuICAgIGNvbnN0IEhhc0NvbXBvbmVudFJlZk5vZGVJZCA9IFwibnM9MDtpPTQ3XCI7XG4gICAgY29uc3QgSGFzUHJvcGVydHlSZWZOb2RlSWQgPSBcIm5zPTA7aT00NlwiO1xuICAgIGNvbnN0IEhhc0NoaWxkUmVmTm9kZUlkID0gXCJucz0wO2k9MzRcIjtcbiAgICBjb25zdCBIYXNTdWJ0eXBlUmVmTm9kZUlkID0gXCJucz0wO2k9NDVcIjtcbiAgICBjb25zdCBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZCA9IFwibnM9MDtpPTQwXCI7XG5cbiAgICB2YXIgQnJvd3NlRGlyZWN0aW9uO1xuICAgIChmdW5jdGlvbiAoQnJvd3NlRGlyZWN0aW9uKSB7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJGb3J3YXJkXCJdID0gMF0gPSBcIkZvcndhcmRcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmVyc2VcIl0gPSAxXSA9IFwiSW52ZXJzZVwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiQm90aFwiXSA9IDJdID0gXCJCb3RoXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZhbGlkXCJdID0gM10gPSBcIkludmFsaWRcIjtcbiAgICB9KShCcm93c2VEaXJlY3Rpb24gfHwgKEJyb3dzZURpcmVjdGlvbiA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzcztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzcykge1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVW5zcGVjaWZpZWRcIl0gPSAwXSA9IFwiVW5zcGVjaWZpZWRcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzIHx8IChOb2RlQ2xhc3MgPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3NNYXNrO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzTWFzaykge1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzTWFzayB8fCAoTm9kZUNsYXNzTWFzayA9IHt9KSk7XG4gICAgZnVuY3Rpb24gY29lcmNlRmxhZ01hc2tUb051bWJlcih0eXBlLCBzdHIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RyQXNOdW0gPSBwYXJzZUludChzdHIsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihzdHJBc051bSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJBc051bTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmbGFncyA9IHN0ci5zcGxpdCgvXFx8fDt8LC8pLm1hcCgoYSkgPT4gYS50cmltKCkpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBmbGFnIG9mIGZsYWdzKSB7XG4gICAgICAgICAgICByZXN1bHQgfD0gdHlwZVtmbGFnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb2VyY2VGbGFnTWFza1RvU3RyaW5nKHR5cGUsIHZhbHVlKSB7XG4gICAgICAgIHZhbHVlID0gY29lcmNlRmxhZ01hc2tUb051bWJlcih0eXBlLCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHIgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBiaXRNYXNrXSBvZiBPYmplY3QuZW50cmllcyh0eXBlKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiBiaXRNYXNrKSA9PT0gYml0TWFzaykge1xuICAgICAgICAgICAgICAgICAgICByLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHIuam9pbihcIiB8IFwiKTtcbiAgICB9XG4gICAgdmFyIFJlc3VsdE1hc2s7XG4gICAgKGZ1bmN0aW9uIChSZXN1bHRNYXNrKSB7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAxXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJJc0ZvcndhcmRcIl0gPSAyXSA9IFwiSXNGb3J3YXJkXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIk5vZGVDbGFzc1wiXSA9IDRdID0gXCJOb2RlQ2xhc3NcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiQnJvd3NlTmFtZVwiXSA9IDhdID0gXCJCcm93c2VOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkRpc3BsYXlOYW1lXCJdID0gMTZdID0gXCJEaXNwbGF5TmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJUeXBlRGVmaW5pdGlvblwiXSA9IDMyXSA9IFwiVHlwZURlZmluaXRpb25cIjtcbiAgICB9KShSZXN1bHRNYXNrIHx8IChSZXN1bHRNYXNrID0ge30pKTtcbiAgICAvLyAgY29uc3QgcSA9IFJlZmVyZW5jZVR5cGVJZHMuT3JnYW5pemVzO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVOb2RlSWQobm9kZUlkTGlrZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGVJZExpa2UpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPcmdhbml6ZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JnYW5pemVzUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1Byb3BlcnR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1Byb3BlcnR5UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NvbXBvbmVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDb21wb25lbnRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ2hpbGRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ2hpbGRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzU3VidHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNTdWJ0eXBlUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1R5cGVEZWZpbml0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0SWNvbiA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZWZlcmVuY2Uubm9kZUNsYXNzKSB7XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IE9yZ2FuaXplc1JlZk5vZGVJZCkgO1xuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UudHlwZURlZmluaXRpb24gPT09IEZvbGRlclR5cGUgfHwgcmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gXCJpPTYxXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1mb2xkZXJcIiwgY29sb3I6IFwicmdiYSg2MSwgNjAsIDQsIDAuNTI1KVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIlNlYUdyZWVuXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNDb21wb25lbnRSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJTdGVlbEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNQcm9wZXJ0eVJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkRvZGdlckJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJNZXRob2RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWNvZ1wiLCBjb2xvcjogXCJTYW5keUJyb3duXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1zbGlkZXJzXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkLCB0ZW1wbGF0ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCAkaW5wdXRFbGVtZW50LCAkaW5mbykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCBub2RlSWQgPSAkaW5wdXRFbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2goYCR7cm9vdH0vY2hlY2tOb2RlSWRgLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNldE5vdGlmaWNhdGlvbiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBub2RlSWQsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGpzb24ubm9kZUFkZHJlc3NTdHJpbmcpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCJHb29kXCIsIFwib2tcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChgJHtub2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNUID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNTdWJ0eXBlXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHwgTm9kZUNsYXNzLk9iamVjdFR5cGUgfCBOb2RlQ2xhc3MuRGF0YVR5cGUgfCBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlLFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZldGNoU3VidHlwZXMoJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZVNUKTtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VSZXN1bHQxO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFrZUVsZW1lbnQgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4gJHt0fTx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFsgVGVtcGVyYXR1cmUgIF1cbiAgICAgICAgICogICAoIHRvb2x0aXAgOiAoL09iamVjdHMvTXlTZW5zb3IpIChucz0xO3M9VGVtcGVyYXR1cmUpKVxuICAgICAgICAgKiBbICsgW0ZvbGRlcl0gT2JqZWN0c11cbiAgICAgICAgICogWyAgICAgW09iamVjdF0gTXlTZW5zb3JdXG4gICAgICAgICAqIFsgICAgICggKSBbVmFyaWFibGVdIFRlbXBlcmF0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5ub2RlQnJvd3NlclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUoKSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCkudGhlbigocGFyZW50Tm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUoJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzb2x2ZVBhcmVudE5vZGUoKS50aGVuKChwYXJlbnROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1mbGFza1wiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICQodGhpcykub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mZXRjaERhdGFGb3JOb2RlKCRsaSwgZiwgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiBGZXRjaGluZyBkb25lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuY2hpbGRyZW4oXCJ1bFwiKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlY2xhcmVGbGFnRWRpdG9yV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLmZsYWdFZGl0b3JcIiwge1xuICAgICAgICAgICAgLy8gZGVmYXVsdCBvcHRpb25zXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgbmFtZXNUb0JpdHM6IHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbW9yZSBuYW1lcyBhbmQgYml0IHZhbHVlc1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBDdXN0b20gRHJvcGRvd25cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50WzBdLnBhcmVudEVsZW1lbnQucmVwbGFjZUNoaWxkKHRoYXQuJGNvbWJvWzBdLCB0aGlzLmVsZW1lbnRbMF0pO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuZWxlbWVudC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIC8vIHRoZSB0b2dnbGUgdHJlZSBidXR0b246XG4gICAgICAgICAgICAgICAgLy8gICB3aGVuIHdlIGNsaWNrIGl0IHRoZSBkcm9wIGRvd24gcGFuZWwgaXMgZGlzcGxheWVkXG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRzZWxlY3QuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZyb21JbnB1dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uZmluZChcIi5jdXN0b20tb3B0aW9uXCIpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25OYW1lID0gJCh0aGlzKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYml0VmFsdWUgPSB0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHNbb3B0aW9uTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBiaXQgbmFtZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGF0Lm9wdGlvbnMudmFsdWUgJiBiaXRWYWx1ZSkgPT09IGJpdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaGlkZGVuIHNlbGVjdCBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnVwZGF0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcCBkb3duIHBhbmVsXG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKCc8ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiPjwvZGl2PicpLmhpZGUoKS5pbnNlcnRBZnRlcih0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICQuZWFjaCh0aGlzLm9wdGlvbnMubmFtZXNUb0JpdHMsIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRvcHRpb24gPSAkKCc8ZGl2IGNsYXNzPVwiY3VzdG9tLW9wdGlvblwiIGRhdGEtdmFsdWU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+PC9zcGFuPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uYXBwZW5kKCRvcHRpb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBvcHRpb25zIGluIHRoZSBkcm9wIGRvd24gcGFuZWwgaXMgY2xpY2tlZCxcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5vbihcImNsaWNrXCIsIFwiLmN1c3RvbS1vcHRpb25cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJCh0aGlzKS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKFwic2VsZWN0ZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnNldEJpdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhhdC51cGRhdGVWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlRnJvbUlucHV0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZWxlbWVudC52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5vcHRpb25zLnZhbHVlID0gY29lcmNlRmxhZ01hc2tUb051bWJlcih0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHMsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHNldEJpdCA9IChiaXROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpdCA9IHRoYXQub3B0aW9ucy5uYW1lc1RvQml0c1tiaXROYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJpdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGJpdCBuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSB8PSBiaXQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB1bnNldEJpdCA9IChiaXROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpdCA9IHRoYXQub3B0aW9ucy5uYW1lc1RvQml0c1tiaXROYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJpdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGJpdCBuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSAmPSB+Yml0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudmFsKGNvZXJjZUZsYWdNYXNrVG9TdHJpbmcodGhhdC5vcHRpb25zLm5hbWVzVG9CaXRzLCB0aGlzLm9wdGlvbnMudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZyb21JbnB1dCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZVZhbHVlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC52YWwoY29lcmNlRmxhZ01hc2tUb1N0cmluZyh0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHMsIHRoaXMub3B0aW9ucy52YWx1ZSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9kZXN0cm95KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnJlbW92ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLUJyb3dzZVwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwiYnJvd3NlXCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogNCB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIC8vIGZvciBhY3Rpb24gcmVhZFxuICAgICAgICAgICAgbm9kZUlkOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHJlZmVyZW5jZVR5cGVJZDogeyB2YWx1ZTogXCJIYXNDaGlsZFwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIGluY2x1ZGVTdWJ0eXBlczogeyB2YWx1ZTogZmFsc2UsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBicm93c2VEaXJlY3Rpb246IHsgdmFsdWU6IFwiRm9yd2FyZFwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgbm9kZUNsYXNzTWFzazogeyB2YWx1ZTogXCJWYXJpYWJsZSB8IE9iamVjdCB8IE1ldGhvZCB8IE9iamVjdFR5cGUgfCBWYXJpYWJsZVR5cGVcIiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICByZXN1bHRNYXNrOiB7IHZhbHVlOiBcIlJlZmVyZW5jZVR5cGUgfCBCcm93c2VOYW1lIHwgVHlwZURlZmluaXRpb24gfCBEaXNwbGF5TmFtZSB8IE5vZGVDbGFzcyB8IElzRm9yd2FyZFwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0czogMSxcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgQnJvd3NlXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBkZWNsYXJlRmxhZ0VkaXRvcldpZGdldCgpO1xuICAgICAgICAgICAgbm9kZS5pbnB1dHMgPSAxO1xuICAgICAgICAgICAgY29uc3QgJG5vZGVDbGFzc01hc2sgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUNsYXNzTWFza1wiKTtcbiAgICAgICAgICAgICRub2RlQ2xhc3NNYXNrLmZsYWdFZGl0b3Ioe1xuICAgICAgICAgICAgICAgIG5hbWVzVG9CaXRzOiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdDogMSxcbiAgICAgICAgICAgICAgICAgICAgVmFyaWFibGU6IDIsXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogNCxcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZTogOCxcbiAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVUeXBlOiAxNixcbiAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlVHlwZTogMzIsXG4gICAgICAgICAgICAgICAgICAgIERhdGFUeXBlOiA2NCxcbiAgICAgICAgICAgICAgICAgICAgVmlldzogMTI4LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0ICRyZXN1bHRNYXNrID0gJChcIiNub2RlLWlucHV0LXJlc3VsdE1hc2tcIik7XG4gICAgICAgICAgICAkcmVzdWx0TWFzay5mbGFnRWRpdG9yKHtcbiAgICAgICAgICAgICAgICBuYW1lc1RvQml0czoge1xuICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VUeXBlOiAxLFxuICAgICAgICAgICAgICAgICAgICBJc0ZvcndhcmQ6IDIsXG4gICAgICAgICAgICAgICAgICAgIE5vZGVDbGFzczogNCxcbiAgICAgICAgICAgICAgICAgICAgQnJvd3NlTmFtZTogOCxcbiAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU6IDE2LFxuICAgICAgICAgICAgICAgICAgICBUeXBlRGVmaW5pdGlvbjogMzIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogNjMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3Nlcih7XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIiB8fCBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlc05vZGVEZXNjID0ge1xuICAgICAgICAgICAgICAgIG5vZGVJZDogXCJpPTMxXCIsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiBcIlwiLFxuICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiUmVmZXJlbmNlc1wiIH0sXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJSZWZlcmVuY2VzXCIgfSxcbiAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiUmVmZXJlbmNlVHlwZVwiLFxuICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBcImk9MzFcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCAkcmVmZXJlbmNlVHlwZUlkID0gJChcIiNub2RlLWlucHV0LXJlZmVyZW5jZVR5cGVJZFwiKTtcbiAgICAgICAgICAgICRyZWZlcmVuY2VUeXBlSWQubm9kZUJyb3dzZXIoe1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+IHJlZmVyZW5jZXNOb2RlRGVzYywgLy8gUmVmZXJlbmNlcyxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHsgfSxcbiAgICB9KTtcblxufSkoKTsiXX0=
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-Browse">
|
11
11
|
<style>
|
@@ -25,12 +25,12 @@
|
|
25
25
|
font-size: 24px;
|
26
26
|
}
|
27
27
|
|
28
|
-
.my-checkbox-input:checked
|
28
|
+
.my-checkbox-input:checked ~ .my-checkbox-mark::before {
|
29
29
|
content: "\f205";
|
30
30
|
/* fa-toggle-on */
|
31
31
|
}
|
32
32
|
|
33
|
-
.my-checkbox-input:not(checked)
|
33
|
+
.my-checkbox-input:not(checked) ~ .my-checkbox-mark::before {
|
34
34
|
content: "\f204";
|
35
35
|
/* fa-toggle-off */
|
36
36
|
}
|
@@ -48,8 +48,7 @@
|
|
48
48
|
<div class="form-row">
|
49
49
|
<label for="node-input-nodeId"><i class="fa fa-tag"></i>NodeId</label>
|
50
50
|
<input type="text" id="node-input-nodeId" placeholder="ns=2;s=Variable1 or empty" />
|
51
|
-
<button for="node-input-nodeId" id="nodeId-checkBtn" class="red-ui-button red-ui-button-small"
|
52
|
-
style="margin-left: 10px">
|
51
|
+
<button for="node-input-nodeId" id="nodeId-checkBtn" class="red-ui-button red-ui-button-small" style="margin-left: 10px">
|
53
52
|
<i class="fa fa-flask"></i>Check
|
54
53
|
</button>
|
55
54
|
</div>
|
@@ -57,14 +56,17 @@
|
|
57
56
|
<div class="form-row">
|
58
57
|
<label for="node-input-referenceTypeId"><i class="fa fa-tag"></i>ReferenceTypeId</label>
|
59
58
|
<input type="text" id="node-input-referenceTypeId" placeholder="ns=2;s=Variable1 or empty" />
|
60
|
-
<button
|
61
|
-
|
59
|
+
<button
|
60
|
+
for="node-input-referenceTypeId"
|
61
|
+
id="referenceTypeId-checkBtn"
|
62
|
+
class="red-ui-button red-ui-button-small"
|
63
|
+
style="margin-left: 10px"
|
64
|
+
>
|
62
65
|
<i class="fa fa-flask"></i>Check
|
63
66
|
</button>
|
64
67
|
</div>
|
65
68
|
<div class="form-row">
|
66
|
-
<label class="my-checkbox-label" for="node-input-includeSubtypes"><i class="fa fa-play"></i>Include Subtypes
|
67
|
-
</label>
|
69
|
+
<label class="my-checkbox-label" for="node-input-includeSubtypes"><i class="fa fa-play"></i>Include Subtypes </label>
|
68
70
|
<label>
|
69
71
|
<input type="checkbox" checked class="my-checkbox-input" id="node-input-includeSubtypes" />
|
70
72
|
<span class="my-checkbox-mark"></span>
|
@@ -83,17 +85,17 @@
|
|
83
85
|
<div class="form-row">
|
84
86
|
<label for="node-input-nodeClassMask">Node Class Mask</label>
|
85
87
|
<div>
|
86
|
-
|
87
88
|
<input type="text" id="node-input-nodeClassMask" placeholder="Object | Variable" />
|
88
89
|
</div>
|
89
90
|
</div>
|
90
91
|
|
91
92
|
<div class="form-row">
|
92
93
|
<label for="node-input-resultMask">Result Mask</label>
|
93
|
-
<div>
|
94
|
+
<div>
|
94
95
|
<input type="text" id="node-input-resultMask" placeholder="NodeClass | BrowseName |DisplayName" />
|
95
96
|
</div>
|
96
97
|
</div>
|
98
|
+
|
97
99
|
</script>
|
98
100
|
|
99
101
|
<script type="text/markdown" data-help-name="OpcUa-Client2-Browse">
|