@opcua/for-node-red 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all.js +1 -1
- package/config-panel/index.html +15 -0
- package/package.json +1 -1
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +2 -2
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +2 -2
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +150 -2
- package/source/OpcUa-Client2-ExtensionObject/OpcUa-Client2-ExtensionObject.html +2 -2
- package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.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 +16 -20
@@ -4,8 +4,8 @@
|
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
(function(_0x189ac2,_0x581ddb){const _0x541eeb=_0x3eab,_0xdb279d=_0x189ac2();while(!![]){try{const _0xdc408e=parseInt(_0x541eeb(0xca))/0x1*(-parseInt(_0x541eeb(0xd7))/0x2)+parseInt(_0x541eeb(0x19c))/0x3+-parseInt(_0x541eeb(0xe7))/0x4+-parseInt(_0x541eeb(0x171))/0x5+-parseInt(_0x541eeb(0x128))/0x6+-parseInt(_0x541eeb(0x131))/0x7*(-parseInt(_0x541eeb(0xb4))/0x8)+parseInt(_0x541eeb(0xda))/0x9;if(_0xdc408e===_0x581ddb)break;else _0xdb279d['push'](_0xdb279d['shift']());}catch(_0x2062dd){_0xdb279d['push'](_0xdb279d['shift']());}}}(_0x26f8,0xd23b9),(function(){'use strict';const _0x5480e9=_0x3eab;function _0x2a8b05(_0x3e2b3d,_0x7ebb2f,_0x182db5,_0x419c30){function _0x29cf87(_0x96c3b){return _0x96c3b instanceof _0x182db5?_0x96c3b:new _0x182db5(function(_0x2e588f){_0x2e588f(_0x96c3b);});}return new(_0x182db5||(_0x182db5=Promise))(function(_0x41d35a,_0x3ec7de){function _0x491ad8(_0x10aa02){const _0x294f15=_0x3eab;try{_0x5d13d2(_0x419c30[_0x294f15(0x186)](_0x10aa02));}catch(_0x2bc7cc){_0x3ec7de(_0x2bc7cc);}}function _0x513cf7(_0x384701){try{_0x5d13d2(_0x419c30['throw'](_0x384701));}catch(_0x21c399){_0x3ec7de(_0x21c399);}}function _0x5d13d2(_0x9d44d7){const _0x262fe4=_0x3eab;_0x9d44d7[_0x262fe4(0x14e)]?_0x41d35a(_0x9d44d7[_0x262fe4(0x1b0)]):_0x29cf87(_0x9d44d7[_0x262fe4(0x1b0)])[_0x262fe4(0x1af)](_0x491ad8,_0x513cf7);}_0x5d13d2((_0x419c30=_0x419c30['apply'](_0x3e2b3d,_0x7ebb2f||[]))['next']());});}typeof SuppressedError===_0x5480e9(0xd5)?SuppressedError:function(_0x5af18c,_0x102693,_0x4fe63c){const _0x245762=_0x5480e9;var _0x17f38f=new Error(_0x4fe63c);return _0x17f38f[_0x245762(0x198)]=_0x245762(0x18b),_0x17f38f[_0x245762(0x118)]=_0x5af18c,_0x17f38f['suppressed']=_0x102693,_0x17f38f;};const _0x30f40f='ns=0;i=35',_0x2167b5=_0x5480e9(0x113),_0x46e143=_0x5480e9(0x11d),_0x2a5cd5=_0x5480e9(0x181),_0x42dd12=_0x5480e9(0x1a6),_0xade7a3=_0x5480e9(0x162),_0xd0c767=_0x5480e9(0xc5);var _0x3a26a2;(function(_0x11f95f){const _0x17d7b0=_0x5480e9;_0x11f95f[_0x11f95f[_0x17d7b0(0xe4)]=0x0]=_0x17d7b0(0xe4),_0x11f95f[_0x11f95f[_0x17d7b0(0x12c)]=0x1]='Inverse',_0x11f95f[_0x11f95f[_0x17d7b0(0xc3)]=0x2]=_0x17d7b0(0xc3),_0x11f95f[_0x11f95f[_0x17d7b0(0xe6)]=0x3]=_0x17d7b0(0xe6);}(_0x3a26a2||(_0x3a26a2={})));var _0x5a8cb7;(function(_0x148828){const _0x2a3148=_0x5480e9;_0x148828[_0x148828[_0x2a3148(0x19e)]=0x0]=_0x2a3148(0x19e),_0x148828[_0x148828[_0x2a3148(0x1ae)]=0x1]='Object',_0x148828[_0x148828[_0x2a3148(0x116)]=0x2]=_0x2a3148(0x116),_0x148828[_0x148828[_0x2a3148(0x11c)]=0x4]=_0x2a3148(0x11c),_0x148828[_0x148828[_0x2a3148(0x148)]=0x8]=_0x2a3148(0x148),_0x148828[_0x148828[_0x2a3148(0x185)]=0x10]=_0x2a3148(0x185),_0x148828[_0x148828[_0x2a3148(0xc9)]=0x20]='ReferenceType',_0x148828[_0x148828['DataType']=0x40]=_0x2a3148(0x170),_0x148828[_0x148828[_0x2a3148(0x120)]=0x80]=_0x2a3148(0x120);}(_0x5a8cb7||(_0x5a8cb7={})));var _0x4ab01f;(function(_0x71622d){const _0x3357de=_0x5480e9;_0x71622d[_0x71622d['Object']=0x1]=_0x3357de(0x1ae),_0x71622d[_0x71622d[_0x3357de(0x116)]=0x2]=_0x3357de(0x116),_0x71622d[_0x71622d['Method']=0x4]='Method',_0x71622d[_0x71622d[_0x3357de(0x148)]=0x8]=_0x3357de(0x148),_0x71622d[_0x71622d['VariableType']=0x10]='VariableType',_0x71622d[_0x71622d['ReferenceType']=0x20]=_0x3357de(0xc9),_0x71622d[_0x71622d[_0x3357de(0x170)]=0x40]=_0x3357de(0x170),_0x71622d[_0x71622d[_0x3357de(0x120)]=0x80]=_0x3357de(0x120);}(_0x4ab01f||(_0x4ab01f={})));var _0x5c428e;(function(_0xf659cc){const _0x4cf6c5=_0x5480e9;_0xf659cc[_0xf659cc[_0x4cf6c5(0xc9)]=0x1]='ReferenceType',_0xf659cc[_0xf659cc[_0x4cf6c5(0x18e)]=0x2]=_0x4cf6c5(0x18e),_0xf659cc[_0xf659cc[_0x4cf6c5(0x155)]=0x4]=_0x4cf6c5(0x155),_0xf659cc[_0xf659cc[_0x4cf6c5(0xe9)]=0x8]=_0x4cf6c5(0xe9),_0xf659cc[_0xf659cc[_0x4cf6c5(0x110)]=0x10]='DisplayName',_0xf659cc[_0xf659cc[_0x4cf6c5(0x12d)]=0x20]=_0x4cf6c5(0x12d);}(_0x5c428e||(_0x5c428e={})));function _0x18d94c(_0x55a43c){const _0x2fe8fa=_0x5480e9;switch(_0x55a43c){case _0x2fe8fa(0xf1):return _0x30f40f;case _0x2fe8fa(0x173):return _0x2a5cd5;case _0x2fe8fa(0xf9):return _0x46e143;case _0x2fe8fa(0x167):return _0x42dd12;case _0x2fe8fa(0xff):return _0xade7a3;case _0x2fe8fa(0xf2):return _0xd0c767;}}const _0x429793=_0xf32ef9=>{const _0x110927=_0x5480e9;switch(_0xf32ef9[_0x110927(0x184)]){case'Object':if(_0xf32ef9[_0x110927(0x10b)]===_0x30f40f);if(_0xf32ef9[_0x110927(0x187)]===_0x2167b5||_0xf32ef9[_0x110927(0x10b)]===_0x110927(0x1a5))return{'icon':_0x110927(0x19b),'color':_0x110927(0x19f)};return{'icon':_0x110927(0x153),'color':'SeaGreen'};case _0x110927(0x116):if(_0xf32ef9[_0x110927(0x10b)]===_0x46e143)return{'icon':_0x110927(0x121),'color':_0x110927(0x169)};else return _0xf32ef9[_0x110927(0x10b)]===_0x2a5cd5?{'icon':'fa-list-alt','color':_0x110927(0x151)}:{'icon':'fa-list-alt','color':_0x110927(0xe8)};case _0x110927(0x11c):return{'icon':_0x110927(0xaf),'color':_0x110927(0x13d)};case _0x110927(0x148):return{'icon':_0x110927(0x153),'color':'DarkOrange'};case'VariableType':return{'icon':_0x110927(0xe0),'color':'DarkOrange'};case _0x110927(0x170):return{'icon':'fa-text-width','color':_0x110927(0xe8)};}return{'icon':'fa-question','color':'grey'};},_0x1fb1c=(_0x3108b5,_0x9474ee,_0x42b45f)=>_0x2a8b05(void 0x0,[_0x3108b5,_0x9474ee,_0x42b45f],void 0x0,function*({endpointNode:_0x66a554,endpoint:_0x244997,baseUrl:_0x1e160d},_0x51c979,_0x14f00b){const _0xe41006=_0x5480e9,_0x2b7c22=_0x1e160d+_0xe41006(0x157),_0x46be47=_0x2b7c22+'/browse',_0x5c5601=Object['assign'](Object['assign']({},_0x14f00b),{'nodeId':_0x51c979,'resultMask':0x3f}),_0x5d00be=yield fetch(_0x46be47,{'method':_0xe41006(0x10a),'body':JSON[_0xe41006(0xcd)]({'endpointNode':_0x66a554,'endpoint':_0x244997,'browseDescription':_0x5c5601}),'headers':{'Content-Type':_0xe41006(0x178)}});if(_0x5d00be[_0xe41006(0x156)]!==0xc8)return console['log'](_0xe41006(0x1a0),_0x5d00be[_0xe41006(0x156)],_0x5d00be[_0xe41006(0x14d)]),{'references':[]};const _0x49f8d1=yield _0x5d00be[_0xe41006(0xeb)](),_0x589d1d=_0x49f8d1[_0xe41006(0x13a)][_0xe41006(0x139)]||[];return{'references':_0x589d1d};}),_0x2c23c0={'referenceTypeId':_0x18d94c(_0x5480e9(0x167)),'includeSubtypes':!![],'browseDirection':_0x3a26a2[_0x5480e9(0xe4)],'nodeClassMask':_0x5a8cb7['Variable']|_0x5a8cb7[_0x5480e9(0x1ae)]|_0x5a8cb7['Method'],'resultMask':0x3f},_0x2c17a3={'referenceTypeId':_0x18d94c(_0x5480e9(0xf1)),'includeSubtypes':!![],'browseDirection':_0x3a26a2[_0x5480e9(0xe4)],'nodeClassMask':_0x5a8cb7[_0x5480e9(0x116)]|_0x5a8cb7[_0x5480e9(0x1ae)]|_0x5a8cb7[_0x5480e9(0x11c)],'resultMask':0x3f},_0x16b79a=(_0xe1b046,_0x5a8feb)=>_0x2a8b05(void 0x0,[_0xe1b046,_0x5a8feb],void 0x0,function*({endpointNode:_0x128b74,endpoint:_0x44c643,baseUrl:_0x358cbc},{nodeId:_0x19bca3,rootNodeId:_0x9cba50,isType:_0x11e807}){const _0x168aa7=_0x5480e9,_0x158ffd=_0x358cbc+_0x168aa7(0x157),_0x51ecce=_0x158ffd+_0x168aa7(0x1a1),_0x55e953=yield fetch(_0x51ecce,{'method':_0x168aa7(0x10a),'body':JSON[_0x168aa7(0xcd)]({'endpointNode':_0x128b74,'endpoint':_0x44c643,'nodeId':_0x19bca3,'rootNodeId':_0x9cba50,'isType':_0x11e807}),'headers':{'Content-Type':_0x168aa7(0x178)}});if(_0x55e953[_0x168aa7(0x156)]!==0xc8)return null;const _0xf9b084=yield _0x55e953[_0x168aa7(0xeb)]();return _0xf9b084[_0x168aa7(0x14a)];}),_0x5c87d2=(_0x284226,_0x34487)=>{const _0xc7e405=_0x5480e9;if(_0x284226[_0xc7e405(0xe3)]!==_0xc7e405(0x127))return _0x284226[_0xc7e405(0xed)];switch(_0x34487){case _0xc7e405(0x14a):return _0x284226[_0xc7e405(0x112)];case'aliasedBrowsePath':return _0x284226['bp_aliased']||_0x284226[_0xc7e405(0x112)];case _0xc7e405(0x141):return _0x284226[_0xc7e405(0x159)]||_0x284226[_0xc7e405(0xfc)];case _0xc7e405(0xd8):return _0x284226[_0xc7e405(0xfc)];default:case _0xc7e405(0x16c):return _0x284226[_0xc7e405(0x16c)];}},_0x55b761=_0x449cc8=>{const _0x271002=_0x5480e9;if(_0x449cc8[_0x271002(0xe3)]!=='Good')return _0x271002(0x136)+_0x449cc8['statusCode'];else{let _0x379049=[];return _0x379049[_0x271002(0x16d)]('nodeId:\x20'+_0x449cc8['nodeId']),_0x379049['push']('browse\x20path:\x20'+_0x449cc8[_0x271002(0x112)]),_0x379049['push'](_0x271002(0xd0)+_0x5a8cb7[_0x449cc8[_0x271002(0x184)]]),_0x449cc8['nodeId_nsu']&&_0x379049[_0x271002(0x16d)](_0x271002(0x190)+_0x449cc8[_0x271002(0xfc)]),_0x449cc8[_0x271002(0x159)]&&_0x379049[_0x271002(0x16d)](_0x271002(0x19d)+_0x449cc8[_0x271002(0x159)]),_0x449cc8['bp_indexed']&&_0x379049[_0x271002(0x16d)]('aliased\x20browsePath:\x20'+_0x449cc8[_0x271002(0xfb)]),_0x379049[_0x271002(0x1aa)]('\x0a');}};function _0x6f77dd(_0x17c1a1){const _0x1b0e86=_0x5480e9;if(_0x17c1a1[_0x1b0e86(0x1b8)](/^nsu=/))return _0x1b0e86(0xd8);if(_0x17c1a1[_0x1b0e86(0x1b8)](/^(ns=.*;)?(i|b|s|g)=/))return _0x1b0e86(0x16c);if(_0x17c1a1[_0x1b0e86(0x1b8)](/^nsa=/))return _0x1b0e86(0x141);if(_0x17c1a1[_0x1b0e86(0x1b8)](/^(\/|\.)[0-9]+:/))return _0x1b0e86(0x14a);if(_0x17c1a1[_0x1b0e86(0x1b8)](/^(\/|\.).*:/))return'browsePath';}function _0x32fd0b(_0x376b9e){const _0x1333b5=_0x5480e9,_0xdda9f=_0x6f77dd(_0x376b9e);switch(_0xdda9f){case _0x1333b5(0x16c):return'n';case _0x1333b5(0x141):return'na';case _0x1333b5(0xd8):return _0x1333b5(0x10e);case _0x1333b5(0x14a):return'b';case'aliasedBrowsePath':return'ab';default:return't';}}function _0xba0de1(_0x1dcbe9){const _0x1fb062=_0x5480e9;let _0x9ae902;switch(_0x1dcbe9){case'n':_0x9ae902='nodeId';break;case'na':_0x9ae902=_0x1fb062(0x141);break;case'nsu':_0x9ae902=_0x1fb062(0xd8);break;case'b':_0x9ae902=_0x1fb062(0x14a);break;case'ab':_0x9ae902=_0x1fb062(0xf8);break;}return _0x9ae902;}const _0x23dc48=(_0x26bd07,_0x5ec2a2)=>_0x2a8b05(void 0x0,[_0x26bd07,_0x5ec2a2],void 0x0,function*({endpointNode:_0x5be089,endpoint:_0x333fa6,baseUrl:_0x236e68},_0x12e89e){const _0x40075f=_0x5480e9,_0x2d41da=_0x236e68+'/opcua-for-node-red',_0x3eb172=_0x2d41da+_0x40075f(0xb6),_0x34cf77=_0x5be089['id'],_0x53e09a=RED[_0x40075f(0xc2)][_0x40075f(0x123)](_0x34cf77);console[_0x40075f(0xd6)](_0x53e09a[_0x40075f(0xd9)]),_0x53e09a[_0x40075f(0xd9)];const _0x412b38=_0x5be089[_0x40075f(0xd9)],_0xfd6993=yield fetch(_0x3eb172,{'method':'POST','body':JSON[_0x40075f(0xcd)]({'endpointNode':_0x5be089,'endpoint':_0x333fa6,'nodeId':_0x12e89e,'namespaceAliases':_0x412b38}),'headers':{'Content-Type':_0x40075f(0x178)}}),_0x2df078=yield _0xfd6993[_0x40075f(0xeb)]();return{'json':_0x2df078,'data':_0xfd6993};}),_0x4eef56=(_0x33c560,_0x53da3d,_0x57c383,_0x221045)=>_0x2a8b05(void 0x0,[_0x33c560,_0x53da3d,_0x57c383,_0x221045],void 0x0,function*({endpointNode:_0x876b02,endpoint:_0x10f36c,baseUrl:_0x422096},_0x407d2e,_0x14d514,_0x30b049){const _0x24482a=_0x5480e9,_0x11e880=_0x14d514['val'](),{json:_0x8df256,data:_0x2994c3}=yield _0x23dc48({'endpointNode':_0x876b02,'endpoint':_0x10f36c,'baseUrl':_0x422096},_0x11e880),_0x41c06e=(_0x39e24a,_0x3e0bee)=>{const _0x1f8bd2=_0x3eab;_0x30b049['text'](_0x39e24a)['addClass'](_0x1f8bd2(0x16f))[_0x1f8bd2(0x1a9)](_0x3e0bee),_0x30b049['show'](),setTimeout(()=>{const _0x532877=_0x1f8bd2;_0x30b049[_0x532877(0x104)](_0x3e0bee),_0x30b049[_0x532877(0x138)]();},0xbb8);};if(_0x2994c3[_0x24482a(0x156)]!==0xc8)return _0x41c06e(_0x24482a(0x1b2)+_0x11e880,_0x24482a(0x106)),![];else{if(_0x8df256[_0x24482a(0xe3)][_0x24482a(0x1b8)](/Good/)){const _0x24e606=_0x55b761(_0x8df256);_0x14d514[_0x24482a(0x196)]('title',_0x24e606);const _0x34eb8d=_0x5c87d2(_0x8df256,_0x407d2e);return _0x14d514[_0x24482a(0x154)](_0x34eb8d),_0x14d514[_0x24482a(0x1b9)](_0x24482a(0x146)),_0x41c06e(_0x24482a(0x127),'ok'),!![];}else return _0x14d514[_0x24482a(0x154)](''+_0x11e880),_0x41c06e(_0x8df256[_0x24482a(0xe3)]+'\x20'+_0x2994c3[_0x24482a(0x14d)],_0x24482a(0x106)),![];}});function _0x3539b4(_0x12cf9e,_0xed86fa){return _0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x49db9f=_0x3eab,_0x580110=_0x12cf9e['data'](_0x49db9f(0x1b0)),_0x2b8b8d=yield _0x1fb1c(_0xed86fa,_0x580110,_0x2c23c0),_0x5f0421=yield _0x1fb1c(_0xed86fa,_0x580110,_0x2c17a3);return{'references':[..._0x2b8b8d[_0x49db9f(0x139)],..._0x5f0421[_0x49db9f(0x139)]]};});}const _0x5c0928={'referenceTypeId':_0x18d94c(_0x5480e9(0xff)),'includeSubtypes':!![],'browseDirection':_0x3a26a2[_0x5480e9(0xe4)],'nodeClassMask':_0x5a8cb7[_0x5480e9(0xc9)]|_0x5a8cb7[_0x5480e9(0x148)]|_0x5a8cb7[_0x5480e9(0x170)]|_0x5a8cb7[_0x5480e9(0x185)],'resultMask':0x3f};function _0x4c81b5(_0x7a0ac1,_0xa9005e){return _0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x1f6ff1=_0x3eab,_0x2881fe=_0x7a0ac1[_0x1f6ff1(0x17c)]('value'),_0x964c35=yield _0x1fb1c(_0xa9005e,_0x2881fe,_0x5c0928);return _0x964c35;});}const _0x411eb1=_0xa2464e=>{const _0x5682ba=_0x5480e9;var _0x435137,_0x40032a,_0x5db638,_0x82e7a;if(!_0xa2464e||!_0xa2464e[_0x5682ba(0x16c)]){const _0x3a1228=$(_0x5682ba(0x192));return _0x3a1228;}const _0x31bea5=_0xa2464e[_0x5682ba(0x16c)][_0x5682ba(0x147)](),_0x15bac5=((_0x435137=_0xa2464e[_0x5682ba(0xbd)])===null||_0x435137===void 0x0?void 0x0:_0x435137[_0x5682ba(0x17f)])||((_0x40032a=_0xa2464e['browseName'])===null||_0x40032a===void 0x0?void 0x0:_0x40032a['name'])||_0xa2464e[_0x5682ba(0x16c)][_0x5682ba(0x147)](),{icon:_0x2d53a8,color:_0x1f1ec4}=_0x429793(_0xa2464e),_0x5acec2='('+_0xa2464e[_0x5682ba(0x16c)][_0x5682ba(0x147)]()+')\x20'+(((_0x5db638=_0xa2464e[_0x5682ba(0xd2)])===null||_0x5db638===void 0x0?void 0x0:_0x5db638[_0x5682ba(0x198)])||((_0x82e7a=_0xa2464e[_0x5682ba(0xbd)])===null||_0x82e7a===void 0x0?void 0x0:_0x82e7a[_0x5682ba(0x17f)])||''),_0x41c718=$(_0x5682ba(0x1bb)+_0xa2464e[_0x5682ba(0x16c)]['toString']()+_0x5682ba(0xbf)+_0x5acec2+_0x5682ba(0x176)+_0x2d53a8+'\x22\x20style=\x22color:'+_0x1f1ec4+';\x22></i>\x20'+_0x15bac5+_0x5682ba(0x1a3));return _0x41c718[_0x5682ba(0x1a9)]('expandable'),_0x41c718['data'](_0x5682ba(0x1b0),_0x31bea5),_0x41c718[_0x5682ba(0x17c)]('reference',_0xa2464e),_0x41c718;},_0x17c6a9=(_0x261db6,_0x499785)=>{const _0x42abb0=_0x5480e9;return _0x499785[_0x42abb0(0x183)](_0x42abb0(0x12f)+_0x261db6+'\x22]');},_0x17f3e5=(_0x1df431,_0x1af575)=>{const _0x518d11=_0x5480e9;_0x1df431[_0x518d11(0xb0)][_0x518d11(0x183)](_0x518d11(0x15d))['removeClass']('selected'),_0x1af575[_0x518d11(0x183)](_0x518d11(0xfa))['addClass'](_0x518d11(0x103));},_0x5b856a=(_0xd4e017,_0x1211b7,_0x5ba1f6)=>_0x2a8b05(void 0x0,void 0x0,void 0x0,function*(){const _0x49fd17=_0x5480e9;let _0x2dc08f=_0x5ba1f6[_0x49fd17(0x130)](_0x49fd17(0x134));_0x1211b7['relativePath']['elements']||[];const _0x380c51=_0x1211b7['nodeIds']||[];if(_0x380c51[_0x49fd17(0x18f)]===0x0)return;for(const _0x1840de of _0x380c51){_0x2dc08f[_0x49fd17(0xcc)](_0x49fd17(0x11a))&&(yield _0x5d189d(_0xd4e017,_0x2dc08f));const _0x591358=_0x17c6a9(_0x1840de,_0x2dc08f);if(_0x591358[_0x49fd17(0x18f)]===0x0)return;_0x2dc08f=_0x591358;}_0x17f3e5(_0xd4e017,_0x2dc08f),_0x37fa63(_0xd4e017[_0x49fd17(0x142)],_0x2dc08f);});function _0x37fa63(_0x1a32b3,_0x3cf043){const _0x1ef444=_0x5480e9,_0x2815da=_0x3cf043[_0x1ef444(0xe5)]()[_0x1ef444(0xf6)],_0x293992=_0x1a32b3[_0x1ef444(0x1b4)]();if(_0x293992==undefined)return;const _0x57232b=_0x293992+_0x2815da-_0x1a32b3[_0x1ef444(0xea)]()/0x2+_0x3cf043['height']()/0x2;_0x1a32b3[_0x1ef444(0x12b)]({'scrollTop':_0x57232b},0x1f4);}const _0x2620f2=(_0x5c9ec9,_0x577b09)=>_0x2a8b05(void 0x0,void 0x0,void 0x0,function*(){const _0x2038fb=_0x5480e9,_0xcd8e7a=_0x5c9ec9[_0x2038fb(0x12a)][_0x2038fb(0x154)](),_0x4a348e={'nodeId':_0xcd8e7a,'rootNodeId':_0x577b09[_0x2038fb(0x16c)],'isType':_0x5c9ec9['options']['isTypeRef']||![]},_0x2b2361=_0x4eccb7(_0x5c9ec9),_0x37f7ae=yield _0x16b79a(_0x2b2361,_0x4a348e);if(!_0x37f7ae)return;yield _0x5b856a(_0x5c9ec9,_0x37f7ae,_0x5c9ec9['$tree']);});function _0x2758a9(_0x574638,_0x4ede9a,_0x42f1b9,_0x2a7b23){return _0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x2c66ca=_0x3eab;if(_0x4ede9a[_0x2c66ca(0xcc)](_0x2c66ca(0x18c))){console['log']('already\x20fetched');return;}if(_0x4ede9a[_0x2c66ca(0xcc)]('loading')){console['log']('already\x20loading');return;}_0x4ede9a[_0x2c66ca(0x1a9)](_0x2c66ca(0x126)),_0x4ede9a[_0x2c66ca(0x188)](_0x2c66ca(0x17d));try{_0x4ede9a['children']('ul')[_0x2c66ca(0x150)]();const {references:_0x1cbb0}=yield _0x42f1b9(_0x4ede9a,_0x2a7b23);_0x1cbb0[_0x2c66ca(0xc7)]((_0x7b7df8,_0x19f366)=>{const _0x544851=_0x2c66ca;var _0x220ee8,_0x205bfc;return(((_0x220ee8=_0x7b7df8[_0x544851(0xd2)])===null||_0x220ee8===void 0x0?void 0x0:_0x220ee8[_0x544851(0x198)])||'')['localeCompare'](((_0x205bfc=_0x19f366['browseName'])===null||_0x205bfc===void 0x0?void 0x0:_0x205bfc[_0x544851(0x198)])||'');});for(const _0x5c2d6e of _0x1cbb0){if(_0x574638[_0x2c66ca(0x17b)][_0x2c66ca(0xde)]&&!_0x574638[_0x2c66ca(0x17b)][_0x2c66ca(0xde)](_0x5c2d6e))continue;const _0x3e83e4=_0x411eb1(_0x5c2d6e);_0x4ede9a[_0x2c66ca(0x130)]('ul')[_0x2c66ca(0x188)](_0x3e83e4);}_0x4ede9a['addClass'](_0x2c66ca(0x18c));}catch(_0x4f6dc6){_0x4ede9a[_0x2c66ca(0x130)]('ul')['append']('<li>error\x20'+_0x4f6dc6[_0x2c66ca(0xce)]+_0x2c66ca(0x1b6)),console[_0x2c66ca(0xd6)](_0x2c66ca(0xdf),_0x4f6dc6);}_0x4ede9a[_0x2c66ca(0x183)](_0x2c66ca(0x16b))[_0x2c66ca(0xc6)](),_0x4ede9a[_0x2c66ca(0x104)](_0x2c66ca(0x126));});}function _0x4eccb7(_0xc3aa24){const _0x1ec92a=_0x5480e9,_0x460f67={'baseUrl':_0xc3aa24['options'][_0x1ec92a(0x195)],'endpointNode':typeof _0xc3aa24[_0x1ec92a(0x17b)][_0x1ec92a(0x132)]===_0x1ec92a(0xd5)?_0xc3aa24[_0x1ec92a(0x17b)]['endpointNode']():_0xc3aa24[_0x1ec92a(0x17b)][_0x1ec92a(0x132)],'endpoint':typeof _0xc3aa24[_0x1ec92a(0x17b)]['endpoint']==='function'?_0xc3aa24['options'][_0x1ec92a(0xb8)]():_0xc3aa24[_0x1ec92a(0x17b)][_0x1ec92a(0xb8)]};return _0x460f67;}function _0x5d189d(_0x560e3b,_0x3d7344){return _0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x2c9c8b=_0x3eab;if(_0x3d7344[_0x2c9c8b(0xcc)](_0x2c9c8b(0x18c))){_0x3d7344[_0x2c9c8b(0x104)]('expandable')['addClass'](_0x2c9c8b(0x10f)),_0x3d7344[_0x2c9c8b(0x130)]('ul')[_0x2c9c8b(0x1a7)]();return;}const _0x1b206e=_0x4eccb7(_0x560e3b),_0xe49a11=!_0x560e3b[_0x2c9c8b(0x17b)][_0x2c9c8b(0x15b)]?_0x3539b4:_0x4c81b5;try{yield _0x2758a9(_0x560e3b,_0x3d7344,_0xe49a11,_0x1b206e),_0x3d7344['removeClass']('expandable')[_0x2c9c8b(0x1a9)](_0x2c9c8b(0x10f));}catch(_0x213bb5){_0x3d7344[_0x2c9c8b(0x104)](_0x2c9c8b(0x11a))[_0x2c9c8b(0x1a9)](_0x2c9c8b(0x10f)),console[_0x2c9c8b(0xd6)](_0x2c9c8b(0x118),_0x213bb5);}});}const _0x51a879={'browseName':{'namespaceIndex':0x0,'name':_0x5480e9(0xef)},'nodeClass':_0x5480e9(0x1ae),'nodeId':_0x5480e9(0x1a4),'displayName':{'text':_0x5480e9(0xef)},'typeDefinition':_0x2167b5},_0x34f7f1=()=>{const _0x493d18=_0x5480e9;$[_0x493d18(0xb5)](_0x493d18(0x11b),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>_0x51a879,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x2a8b05(this,void 0x0,void 0x0,function*(){const _0xd903aa=_0x3eab,_0x4236db=this;if(_0x4236db[_0xd903aa(0x168)]==undefined){const _0x1ca9ac=typeof _0x4236db[_0xd903aa(0x17b)]['parentNode']===_0xd903aa(0xd5)?_0x4236db[_0xd903aa(0x17b)]['parentNode'][_0xd903aa(0x109)](_0x4236db):_0x4236db['options'][_0xd903aa(0x1bc)];if(_0x1ca9ac instanceof Promise){const _0x1d946e=yield _0x1ca9ac;_0x4236db[_0xd903aa(0x168)]=_0x1d946e;}else _0x4236db[_0xd903aa(0x168)]=_0x1ca9ac;}return _0x4236db['__parentNode']||_0x51a879;});},'reset'(){return _0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x249d63=_0x3eab,_0x19461d=this,_0x276224=_0x19461d;_0x276224[_0x249d63(0x168)]=undefined,_0x19461d[_0x249d63(0xb0)][_0x249d63(0x150)]();const _0x58b104=yield this[_0x249d63(0x18d)](),_0x11e18d=_0x411eb1(_0x58b104);_0x19461d[_0x249d63(0xb0)][_0x249d63(0x188)](_0x11e18d),_0x19461d[_0x249d63(0x10d)]=_0x58b104;});},'verify'(_0x3c9640){const _0x86e2c=_0x493d18,_0x427f4a=this,_0x1b1b50=_0x4eccb7(_0x427f4a);_0x4eef56(_0x1b1b50,_0x3c9640,_0x427f4a[_0x86e2c(0x12a)],_0x427f4a['$info'])[_0x86e2c(0x1af)](_0x262b71=>{const _0x4c3f28=_0x86e2c;!_0x262b71?_0x427f4a[_0x4c3f28(0x19a)][_0x4c3f28(0x1a9)](_0x4c3f28(0xab)):_0x427f4a[_0x4c3f28(0x19a)][_0x4c3f28(0x104)](_0x4c3f28(0xab));});},'_hideMenu'(_0x2f8234){const _0x43e595=_0x493d18,_0x40efb5=this;$(document)[_0x43e595(0x149)](_0x43e595(0x16a)),_0x2f8234[_0x43e595(0x138)](),_0x2f8234[_0x43e595(0x100)]({'height':_0x43e595(0x165)});if(_0x2f8234[_0x43e595(0xb1)]['multiple']){var _0x3d4410=[];_0x2f8234[_0x43e595(0x183)](_0x43e595(0xf0))[_0x43e595(0x1b3)](function(){const _0x230821=_0x43e595;$(this)['prop']('checked')&&_0x3d4410[_0x230821(0x16d)]($(this)[_0x230821(0x17c)]('value'));}),_0x2f8234['callback'](_0x3d4410);}_0x40efb5['$elementDiv']['is'](_0x43e595(0xb9))?_0x40efb5['$input'][_0x43e595(0x1b9)](_0x43e595(0xfd)):_0x40efb5[_0x43e595(0xf7)]['trigger'](_0x43e595(0xfd));},'_createMenu'(_0x54185a,_0x24e5c5,_0x7b07e7){const _0x21ca60=_0x493d18;var _0x326cdc=this;const _0x1a697a=$('<div>')[_0x21ca60(0x1a9)](_0x21ca60(0x16e));return _0x1a697a[_0x21ca60(0xb1)]=_0x24e5c5,_0x1a697a[_0x21ca60(0xb7)]=_0x7b07e7,_0x54185a[_0x21ca60(0x125)](_0x384f7c=>{const _0x45fd6=_0x21ca60;typeof _0x384f7c===_0x45fd6(0x194)&&(_0x384f7c={'value':_0x384f7c,'label':_0x384f7c});var _0x5b7ffc=$(_0x45fd6(0x191))[_0x45fd6(0x196)](_0x45fd6(0x1b0),_0x384f7c['value'])[_0x45fd6(0xbc)](_0x1a697a);_0x384f7c[_0x45fd6(0xc4)]&&_0x5b7ffc[_0x45fd6(0x17f)](_0x384f7c[_0x45fd6(0xc4)]);_0x384f7c[_0x45fd6(0xb2)]&&_0x5b7ffc[_0x45fd6(0x166)](_0x45fd6(0xb2),_0x384f7c[_0x45fd6(0xb2)]);if(_0x384f7c[_0x45fd6(0xc1)]){if(_0x384f7c[_0x45fd6(0xc1)][_0x45fd6(0x175)]('<')===0x0)$(_0x384f7c[_0x45fd6(0xc1)])[_0x45fd6(0x161)](_0x5b7ffc);else _0x384f7c[_0x45fd6(0xc1)][_0x45fd6(0x175)]('/')!==-0x1?$(_0x45fd6(0x115),{'class':'red-ui-typedInput-icon','style':'mask-image:\x20url('+_0x384f7c[_0x45fd6(0xc1)]+_0x45fd6(0x144)+_0x384f7c[_0x45fd6(0xc1)]+');'})[_0x45fd6(0x161)](_0x5b7ffc):$(_0x45fd6(0x115),{'class':_0x45fd6(0x10c)+_0x384f7c[_0x45fd6(0xc1)]})[_0x45fd6(0x161)](_0x5b7ffc);}else _0x5b7ffc[_0x45fd6(0x100)]({'paddingLeft':_0x45fd6(0x11f)});!_0x384f7c['icon']&&!_0x384f7c[_0x45fd6(0xc4)]&&_0x5b7ffc[_0x45fd6(0x17f)](_0x384f7c['value']);var _0x1919f5;_0x24e5c5['multiple']&&(_0x1919f5=$('<input\x20type=\x22checkbox\x22>')[_0x45fd6(0x100)](_0x45fd6(0xf3),_0x45fd6(0x18a))['data'](_0x45fd6(0x1b0),_0x384f7c[_0x45fd6(0x1b0)])[_0x45fd6(0x161)](_0x5b7ffc)['on'](_0x45fd6(0xc8),function(_0x2401eb){const _0x5b6ba3=_0x45fd6;_0x2401eb[_0x5b6ba3(0x108)]();})),_0x5b7ffc['on']('click',function(_0x142741){const _0x2d5df9=_0x45fd6;_0x142741['preventDefault'](),_0x142741[_0x2d5df9(0xad)](),!_0x24e5c5[_0x2d5df9(0x105)]?(_0x7b07e7(_0x384f7c['value']),_0x326cdc[_0x2d5df9(0x152)](_0x1a697a)):_0x1919f5[_0x2d5df9(0x166)](_0x2d5df9(0x164),!_0x1919f5[_0x2d5df9(0x166)](_0x2d5df9(0x164)));});}),_0x1a697a['css']({'display':_0x21ca60(0x18a)}),_0x1a697a['on'](_0x21ca60(0x107),function(_0x51b834){const _0x580fa5=_0x21ca60;if(_0x51b834[_0x580fa5(0xee)]===0x28)_0x51b834['preventDefault'](),$(this)['children'](_0x580fa5(0x124))[_0x580fa5(0x186)]()[_0x580fa5(0x1b9)](_0x580fa5(0xfd));else{if(_0x51b834[_0x580fa5(0xee)]===0x26)_0x51b834[_0x580fa5(0x108)](),$(this)[_0x580fa5(0x130)](':focus')[_0x580fa5(0xd1)]()[_0x580fa5(0x1b9)](_0x580fa5(0xfd));else _0x51b834[_0x580fa5(0xee)]===0x1b&&(_0x51b834[_0x580fa5(0x108)](),_0x326cdc[_0x580fa5(0x152)](_0x1a697a));}_0x51b834[_0x580fa5(0xad)]();}),_0x1a697a;},'disarmClick':![],'_showMenu'(_0xf8435,_0x246d2b){const _0x12c397=_0x493d18;if(this[_0x12c397(0x199)]){this[_0x12c397(0x199)]=![];return;}var _0x23a22b=this,_0x4c5fac=_0x246d2b['offset'](),_0x245dce=_0x246d2b[_0x12c397(0xea)](),_0x47ac78=_0xf8435[_0x12c397(0xea)](),_0x42e483=_0x245dce+_0x4c5fac['top'];_0x42e483+_0x47ac78-$(document)[_0x12c397(0x1b4)]()>$(window)['height']()&&(_0x42e483-=_0x42e483+_0x47ac78-$(window)[_0x12c397(0xea)]()+0x5),_0x42e483<0x0&&(_0xf8435['height'](_0x47ac78+_0x42e483),_0x42e483=0x0),_0xf8435[_0x12c397(0x100)]({'top':_0x42e483+'px','left':_0x4c5fac[_0x12c397(0x111)]+'px'}),_0xf8435['slideDown'](0x64),this[_0x12c397(0x15f)](function(){const _0x3763f7=_0x12c397;_0x23a22b[_0x3763f7(0x1a2)][_0x3763f7(0x1a9)](_0x3763f7(0xe2)),$(document)['on'](_0x3763f7(0x16a),function(_0x2f503b){const _0x2846b4=_0x3763f7;!$(_0x2f503b['target'])[_0x2846b4(0x174)](_0xf8435)[_0x2846b4(0x18f)]&&_0x23a22b[_0x2846b4(0x152)](_0xf8435),$(_0x2f503b[_0x2846b4(0x1ba)])[_0x2846b4(0x174)](_0x246d2b)[_0x2846b4(0x18f)]&&(_0x23a22b['disarmClick']=!![],_0x2f503b[_0x2846b4(0x108)]());});});},'_showTypeMenu'(){const _0x5b0f3c=_0x493d18,_0x598f15=this;this[_0x5b0f3c(0x122)](_0x598f15[_0x5b0f3c(0x13c)],_0x598f15['$combo']),_0x598f15[_0x5b0f3c(0x142)][_0x5b0f3c(0x138)]();const _0x6b4d77=_0x598f15[_0x5b0f3c(0x1b1)];var _0xcec5b7=_0x598f15[_0x5b0f3c(0x13c)]['find'](_0x5b0f3c(0x1ac)+_0x6b4d77+'\x27');setTimeout(function(){const _0x384f0b=_0x5b0f3c;_0xcec5b7[_0x384f0b(0x1b9)]('focus');},0x78);},'_initMenu'(){const _0x42d1af=_0x493d18,_0x381eb5=this;_0x381eb5[_0x42d1af(0xf7)]['attr'](_0x42d1af(0x163),-0x1),_0x381eb5[_0x42d1af(0xf7)]['on'](_0x42d1af(0x15c),function(_0x2d4aef){const _0x2e0a9c=_0x42d1af;_0x2d4aef[_0x2e0a9c(0x108)]();});_0x381eb5[_0x42d1af(0x13c)]&&_0x381eb5[_0x42d1af(0x13c)][_0x42d1af(0xc6)]();const _0xbc787f=[{'label':_0x42d1af(0x17f),'value':'t','title':_0x42d1af(0x182),'icon':'<i\x20class=\x22fa\x20fa-font\x22/i>\x20'},{'label':'msg.','value':_0x42d1af(0xec),'title':'node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','icon':_0x42d1af(0xf5)},{'label':_0x42d1af(0x117),'value':'n','icon':_0x42d1af(0xd3)},{'label':_0x42d1af(0x137),'value':'na','icon':'<i\x20class=\x22fa\x20fa-bookmark\x22/> \x20'},{'label':_0x42d1af(0x13f),'value':_0x42d1af(0x10e),'icon':_0x42d1af(0xba)},{'label':_0x42d1af(0xbb),'value':'b','icon':_0x42d1af(0x158)},{'label':'Aliased\x20Browse\x20Path','value':'ab','icon':_0x42d1af(0x145)}],_0xcc6385=_0x32fd0b(_0x381eb5['$input']['val']()),_0x49100c=_0xbc787f[_0x42d1af(0x183)](_0x228ea4=>_0x228ea4[_0x42d1af(0x1b0)]===_0xcc6385);_0x381eb5[_0x42d1af(0x1ab)]['empty']()['append'](_0x42d1af(0x15e)+((_0x49100c===null||_0x49100c===void 0x0?void 0x0:_0x49100c[_0x42d1af(0xb2)])||'')+'> \x20'+((_0x49100c===null||_0x49100c===void 0x0?void 0x0:_0x49100c[_0x42d1af(0xc1)])||'')+'</span>'),_0x381eb5['selectedMenuItem']=_0xcc6385;const _0x4d2f77=this;_0x381eb5['$menu']=this[_0x42d1af(0x180)](_0xbc787f,{},_0x535b16=>{const _0x5a4da7=_0x42d1af,_0x4e6f56=_0xba0de1(_0x535b16);_0x4e6f56&&_0x4d2f77['verify'](_0x4e6f56);const _0x640a4a=_0xbc787f[_0x5a4da7(0x183)](_0x32222b=>_0x32222b[_0x5a4da7(0x1b0)]===_0x535b16);_0x381eb5[_0x5a4da7(0x1b1)]=_0x535b16,_0x381eb5[_0x5a4da7(0x1ab)][_0x5a4da7(0x150)]()[_0x5a4da7(0x188)](_0x5a4da7(0x15e)+((_0x640a4a===null||_0x640a4a===void 0x0?void 0x0:_0x640a4a[_0x5a4da7(0xb2)])||'')+'> \x20'+((_0x640a4a===null||_0x640a4a===void 0x0?void 0x0:_0x640a4a[_0x5a4da7(0xc1)])||'')+'</span>');}),_0x381eb5[_0x42d1af(0x13c)][_0x42d1af(0xbc)](document[_0x42d1af(0x133)]),_0x381eb5[_0x42d1af(0x13c)][_0x42d1af(0x138)](),_0x381eb5['$selectTrigger']['show']();},'mode'(){const _0x1640ba=this;return _0xba0de1(_0x1640ba['selectedMenuItem']);},'_create'(){const _0x5f164e=_0x493d18,_0x4c02c6=this;_0x4c02c6[_0x5f164e(0x12a)]=this['element'],_0x4c02c6['$input'][_0x5f164e(0x100)](_0x5f164e(0x14b),_0x5f164e(0x18a)),_0x4c02c6['$elementDiv']=_0x4c02c6['$input']['wrap'](_0x5f164e(0xcf))[_0x5f164e(0xdb)]()[_0x5f164e(0x1a9)]('main-wrapper'),_0x4c02c6[_0x5f164e(0x19a)]=$(_0x5f164e(0xc0)),_0x4c02c6[_0x5f164e(0x19a)][_0x5f164e(0x1a9)](_0x5f164e(0x11e)),_0x4c02c6[_0x5f164e(0x12a)][_0x5f164e(0x179)](_0x4c02c6[_0x5f164e(0x19a)]),_0x4c02c6[_0x5f164e(0x193)]=$(_0x5f164e(0xc0))[_0x5f164e(0x1a9)]('input-group'),_0x4c02c6['$combo'][_0x5f164e(0x188)](_0x4c02c6[_0x5f164e(0x193)]),_0x4c02c6[_0x5f164e(0x193)][_0x5f164e(0x188)](_0x4c02c6[_0x5f164e(0x12a)]),_0x4c02c6[_0x5f164e(0x189)]=$(_0x5f164e(0x1bd)),_0x4c02c6[_0x5f164e(0x12a)]['after'](_0x4c02c6[_0x5f164e(0x189)]),_0x4c02c6['$toggleTreeBtn']['on'](_0x5f164e(0x160),function(){return _0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x29007b=_0x3eab;var _0xdb7589;let _0x1440d0=![],_0xb986c4;!_0x4c02c6[_0x29007b(0x142)]['is'](_0x29007b(0xb9))&&(_0x4c02c6[_0x29007b(0x143)]['hide'](),_0xb986c4=yield _0x4c02c6['resolveParentNode'](),(_0xb986c4!==_0x4c02c6[_0x29007b(0x10d)]||((_0xdb7589=_0x4c02c6['currentParent'])===null||_0xdb7589===void 0x0?void 0x0:_0xdb7589['nodeId'])!==_0xb986c4['nodeId'])&&(yield _0x4c02c6[_0x29007b(0xae)]()),_0x1440d0=!![]),_0x4c02c6[_0x29007b(0x142)][_0x29007b(0x1a7)](),_0x1440d0&&(yield _0x2620f2(_0x4c02c6,_0xb986c4));});}),_0x4c02c6[_0x5f164e(0xbe)]=$(_0x5f164e(0x13e)),_0x4c02c6[_0x5f164e(0x12a)]['after'](_0x4c02c6[_0x5f164e(0xbe)]),_0x4c02c6[_0x5f164e(0xbe)]['on'](_0x5f164e(0x160),()=>{const _0xc3ca78=_0x4c02c6['mode']();if(!_0xc3ca78)return;this['verify'](_0xc3ca78);});const _0x12d45c=_0x5e2810=>_0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x2ab42c=_0x5f164e,_0x67fb8d=this,_0x38200d=_0x67fb8d[_0x2ab42c(0x1b5)]();if(!_0x38200d)return;const _0x72c1aa=_0x4eccb7(_0x67fb8d),{data:_0x94286b,json:_0x2c0306}=yield _0x23dc48(_0x72c1aa,_0x5e2810);if(_0x94286b[_0x2ab42c(0x156)]!==0xc8)return;if(_0x2c0306[_0x2ab42c(0xe3)][_0x2ab42c(0x1b8)](/Good/)){const _0xac5b08=_0x5c87d2(_0x2c0306,_0x38200d);_0x67fb8d[_0x2ab42c(0x12a)]['val'](_0xac5b08),_0x67fb8d[_0x2ab42c(0x12a)][_0x2ab42c(0x1b9)](_0x2ab42c(0x146));}});{_0x4c02c6[_0x5f164e(0x1a2)]=$('<div>'),_0x4c02c6[_0x5f164e(0x12a)]['before'](_0x4c02c6[_0x5f164e(0x1a2)]),_0x4c02c6['$selectTrigger']=$(_0x5f164e(0x13b))[_0x5f164e(0x161)](_0x4c02c6[_0x5f164e(0x1a2)]),$(_0x5f164e(0x114))['toggle'](!![])[_0x5f164e(0xbc)](_0x4c02c6['$selectTrigger']),_0x4c02c6[_0x5f164e(0xf7)]['on']('click',function(_0x2de32e){const _0x6c3e92=_0x5f164e;_0x2de32e[_0x6c3e92(0x108)](),_0x2de32e['stopPropagation'](),_0x4c02c6[_0x6c3e92(0x14f)]();}),_0x4c02c6[_0x5f164e(0xf7)]['on']('keydown',function(_0x358e3b){const _0xcec19d=_0x5f164e;_0x358e3b[_0xcec19d(0xee)]===0x28&&_0x4c02c6[_0xcec19d(0x14f)](),_0x358e3b['stopPropagation']();})['on'](_0x5f164e(0xfd),function(){const _0x145cd3=_0x5f164e;_0x4c02c6[_0x145cd3(0x1a2)][_0x145cd3(0x1a9)]('red-ui-typedInput-focus');})['on'](_0x5f164e(0xcb),function(){const _0x26c504=_0x5f164e;_0x4c02c6[_0x26c504(0x1a2)][_0x26c504(0x104)](_0x26c504(0xe2));}),_0x4c02c6[_0x5f164e(0x1ab)]=$(_0x5f164e(0x172))[_0x5f164e(0xbc)](_0x4c02c6['$selectTrigger']);}this[_0x5f164e(0xf4)]();!_0x4c02c6[_0x5f164e(0x12a)][_0x5f164e(0x196)](_0x5f164e(0x12e))&&_0x4c02c6[_0x5f164e(0x12a)]['attr'](_0x5f164e(0x12e),_0x5f164e(0x1b7));_0x4c02c6[_0x5f164e(0x143)]=$(_0x5f164e(0xdd)),_0x4c02c6[_0x5f164e(0x143)][_0x5f164e(0x138)](),_0x4c02c6[_0x5f164e(0x19a)][_0x5f164e(0x188)](_0x4c02c6['$info']),_0x4c02c6[_0x5f164e(0x142)]=$(_0x5f164e(0xc0))[_0x5f164e(0x1a9)](_0x5f164e(0x101))['hide']()[_0x5f164e(0xbc)](_0x4c02c6[_0x5f164e(0x19a)]),_0x4c02c6[_0x5f164e(0xb0)]=$('<ul\x20class=\x22sterfive-tree\x22></ul>')[_0x5f164e(0xbc)](_0x4c02c6[_0x5f164e(0x142)]),this[_0x5f164e(0xae)]();const _0x23afa5=(_0x1b1c95,_0x264841)=>{const _0xb2a3d2=_0x5f164e,_0x770d02=0x14,_0x1dfe2b=0x14,_0x4265e2=_0x1b1c95[_0xb2a3d2(0x102)](),_0x2e0a4e=_0x264841;if(_0x2e0a4e[_0xb2a3d2(0x14c)]>=_0x4265e2[_0xb2a3d2(0x111)]&&_0x2e0a4e[_0xb2a3d2(0x14c)]<=_0x4265e2[_0xb2a3d2(0x111)]+_0x770d02&&_0x2e0a4e[_0xb2a3d2(0x1a8)]>=_0x4265e2[_0xb2a3d2(0xf6)]&&_0x2e0a4e[_0xb2a3d2(0x1a8)]<=_0x4265e2[_0xb2a3d2(0xf6)]+_0x1dfe2b)return!![];return![];},_0x2238d4=_0x20f2b6=>_0x2a8b05(this,void 0x0,void 0x0,function*(){const _0x50bcbe=_0x5f164e;if(_0x20f2b6[_0x50bcbe(0xcc)]('expandable'))_0x5d189d(_0x4c02c6,_0x20f2b6);else{if(_0x20f2b6['hasClass'](_0x50bcbe(0x10f)))_0x20f2b6[_0x50bcbe(0x130)]('ul')[_0x50bcbe(0x1a7)](),_0x20f2b6[_0x50bcbe(0xfe)](_0x50bcbe(0x17e));else{if(_0x20f2b6[_0x50bcbe(0x130)]('ul')[_0x50bcbe(0x130)]()['length']>0x0)_0x20f2b6[_0x50bcbe(0x130)]('ul')[_0x50bcbe(0x1a7)](),_0x20f2b6['toggleClass'](_0x50bcbe(0x17e));else;}}});_0x4c02c6['$tree']['on'](_0x5f164e(0xe1),'li',function(_0x1d5996){const _0x44257a=_0x5f164e;var _0x396341,_0x1b0276;_0x1d5996[_0x44257a(0xad)]();let _0x616c2=$(this);if(_0x23afa5(_0x616c2,_0x1d5996))_0x2238d4(_0x616c2);else{const _0x4e0f07=_0x616c2[_0x44257a(0x17c)](_0x44257a(0x1b0)),_0x33168b=_0x616c2['data'](_0x44257a(0x1ad));if(_0x4c02c6[_0x44257a(0x17b)]['isSelectable']&&!_0x4c02c6['options']['isSelectable'](_0x33168b))return;_0x4c02c6[_0x44257a(0x12a)]['data'](_0x44257a(0x1ad),_0x33168b),((_0x396341=_0x33168b['displayName'])===null||_0x396341===void 0x0?void 0x0:_0x396341[_0x44257a(0x17f)])||((_0x1b0276=_0x33168b['browseName'])===null||_0x1b0276===void 0x0?void 0x0:_0x1b0276[_0x44257a(0x198)])||_0x33168b['nodeId']['toString'](),_0x12d45c(_0x4e0f07),_0x4c02c6['$dropdown'][_0x44257a(0x138)]();}}),_0x4c02c6[_0x5f164e(0xb0)]['on']('click','li',function(_0x4d1cc5){_0x4d1cc5['stopPropagation']();let _0xcd3633=$(this);_0x23afa5(_0xcd3633,_0x4d1cc5)&&_0x2238d4(_0xcd3633),_0x17f3e5(_0x4c02c6,_0xcd3633);}),$(document)['on'](_0x5f164e(0x160),function(_0x56f5b3){const _0x40613a=_0x5f164e;!$(_0x56f5b3[_0x40613a(0x1ba)])[_0x40613a(0x174)](_0x4c02c6[_0x40613a(0x19a)])['length']&&_0x4c02c6[_0x40613a(0x142)]['hide']();});}});},_0x359ae4=()=>{const _0xc024d=_0x5480e9,_0x3cb94b=$('#node-input-endpoint'),_0x519578=_0x3cb94b[_0xc024d(0x154)](),_0x64540e=RED['nodes'][_0xc024d(0x123)](_0x519578);if(!_0x64540e)return undefined;const {endpoint:_0x3a429a,securityMode:_0x7e858,securityPolicy:_0x3d7e41,userIdentityType:_0x5b3717,credentials:_0x5de35a,namespaceAliases:_0x355fd1}=_0x64540e,_0x2a0d6f={'endpoint':_0x3a429a,'securityMode':_0x7e858,'securityPolicy':_0x3d7e41,'userIdentityType':_0x5b3717,'credentials':_0x5de35a,'namespaceAliases':_0x355fd1};return _0x2a0d6f;},_0x33ff6e=()=>{const _0x305d9b=_0x5480e9,_0x462215=$(_0x305d9b(0x129)),_0x395012=_0x462215[_0x305d9b(0x154)](),_0x52f951=_0x359ae4();if(!_0x52f951)return undefined;const _0x119ca3=_0x52f951[_0x305d9b(0xd9)];return Object[_0x305d9b(0x140)]({'namespaceAliases':_0x119ca3,'id':_0x395012},_0x52f951);},_0x218430=()=>{return{'endpointNode':_0x33ff6e};};RED[_0x5480e9(0xc2)][_0x5480e9(0xac)](_0x5480e9(0x119),{'category':'opcua','color':_0x5480e9(0xb3),'align':_0x5480e9(0x17a),'icon':_0x5480e9(0x197),'paletteLabel':_0x5480e9(0xdc),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'nodeId':{'value':'','required':![]},'outputType':{'value':_0x5480e9(0x135),'required':!![]},'excludeEmpty':{'value':![]},'followOrganizes':{'value':![]}},'outputs':0x1,'label'(){const _0x2087d0=_0x5480e9;return this['name']||_0x2087d0(0x15a);},'labelStyle'(){const _0x121ed6=_0x5480e9;return this[_0x121ed6(0x198)]?_0x121ed6(0xd4):'';},'oneditprepare'(){const _0x3c8188=_0x5480e9,_0x3691b8=this;_0x34f7f1(),_0x3691b8['inputs']=0x1;const _0x3eb20b=$(_0x3c8188(0x177));_0x3eb20b['nodeBrowser'](Object['assign'](Object[_0x3c8188(0x140)]({},_0x218430()),{'isSelectable'(_0xddc553){const _0x195b5b=_0x3c8188;return _0xddc553['nodeClass']===_0x195b5b(0x116)||_0xddc553[_0x195b5b(0x184)]===_0x195b5b(0x1ae);}}));},'oneditsave'(){}});}()));function _0x3eab(_0x423f53,_0x5be52c){const _0x26f8ec=_0x26f8();return _0x3eab=function(_0x3eab1c,_0x1c8110){_0x3eab1c=_0x3eab1c-0xab;let _0x828c2a=_0x26f8ec[_0x3eab1c];return _0x828c2a;},_0x3eab(_0x423f53,_0x5be52c);}function _0x26f8(){const _0x1f9fe9=['join','$selectLabel','[value=\x27','reference','Object','then','value','selectedMenuItem','!!failure!!','each','scrollTop','mode','</li>','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','match','trigger','target','<li\x20key=\x22','parentNode','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','input-error','registerType','stopPropagation','reset','fa-cog','$tree','opts','title','#C0DEED','8ARPNeV','widget','/checkNodeId','callback','endpoint',':visible','<i\x20class=\x22fa\x20fa-id-card\x22/> \x20','BrowsePath','appendTo','displayName','$verifyBtn','\x22}><span\x20class=\x22tree-text\x22\x20title=','<div/>','icon','nodes','Both','label','ns=0;i=40','remove','sort','mousedown','ReferenceType','121zzXtIX','blur','hasClass','stringify','message','<div>','node\x20class:\x20','prev','browseName','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20','node_label_italic','function','log','8962ZJfWIm','nsuNodeID','namespaceAliases','14229549tVSYlB','parent','explore','<div\x20class=\x22info-text\x22></div>','filter','err','fa-sliders','dblclick','red-ui-typedInput-focus','statusCode','Forward','position','Invalid','2790176aOtUnR','CadetBlue','BrowseName','height','json','msg','requestedNodeId','keyCode','Objects','input[type=\x22checkbox\x22]','Organizes','HasTypeDefinition','pointer-events','_initMenu','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','top','$selectTrigger','aliasedBrowsePath','HasComponent','.tree-text:first','bp_aliased','nodeId_nsu','focus','toggleClass','HasSubtype','css','sterfive-dropdown','offset','selected','removeClass','multiple','failure','keydown','preventDefault','call','POST','referenceTypeId','red-ui-typedInput-icon\x20','currentParent','nsu','expanded','DisplayName','left','bp_indexed','ns=0;i=61','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','<i>','Variable','NodeId','error','OpcUa-Client2-Explore','expandable','sterfive.nodeBrowser','Method','ns=0;i=47','sterfive-combo-box','18px','View','fa-list-alt','_showMenu','node',':focus','forEach','loading','Good','968352vjvlTQ','#node-input-endpoint','$input','animate','Inverse','TypeDefinition','placeholder','li[key=\x22','children','3196403vOWVfn','endpointNode','body',':first','Value','statusCode:\x20','Aliased\x20NodeId','hide','references','browseResult','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','$menu','SandyBrown','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','NodeId\x20with\x20namespace\x20Urn','assign','aliasedNodeId','$dropdown','$info',');\x20-webkit-mask-image:\x20url(','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','change','toString','ObjectType','off','browsePath','border','pageX','statusText','done','_showTypeMenu','empty','DodgerBlue','_hideMenu','fa-object-group','val','NodeClass','status','/opcua-for-node-red','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','nodeId_aliased','OPCUA\x20Explore','isTypeRef','mousedown.red-ui-typedInput-focus-block','li\x20>\x20.tree-text','<span\x20title=','_delay','click','prependTo','ns=0;i=45','tabindex','checked','auto','prop','HasChild','__parentNode','SteelBlue','mousedown.red-ui-typedInput-close-property-select','.spinner','nodeId','push','sterfive-typedInput-options\x20sterfive-online-menu','sterfive-info','DataType','498595KCmGvC','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','HasProperty','closest','indexOf','><i\x20class=\x22fa\x20','#node-input-nodeId','application/json','replaceWith','right','options','data','<div\x20class=\x22spinner\x22></div>','expandable\x20expanded','text','_createMenu','ns=0;i=46','Value\x20is\x20not\x20verified','find','nodeClass','VariableType','next','typeDefinition','append','$toggleTreeBtn','none','SuppressedError','fetched','resolveParentNode','IsForward','length','nsu\x20nodeId:\x20','<a\x20href=\x22#\x22></a>','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','$inputGroup','string','baseUrl','attr','../../icons/opcuanodeLogo.png','name','disarmClick','$combo','fa-folder','972837FrYouy','aliased\x20NodeId:\x20','Unspecified','rgba(61,\x2060,\x204,\x200.525)','fetching\x20failed\x20with\x20error','/walk-backward','$uiSelect','</span><ul></ul></li>','ns=0;i=85','i=61','ns=0;i=34','toggle','pageY','addClass'];_0x26f8=function(){return _0x1f9fe9;};return _0x26f8();}
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgyYThiMDUiLCJfMHgzZTJiM2QiLCJfMHg3ZWJiMmYiLCJfMHgxODJkYjUiLCJfMHg0MTljMzAiLCJfMHgyOWNmODciLCJfMHg5NmMzYiIsIl8weDJlNTg4ZiIsIlByb21pc2UiLCJfMHg0MWQzNWEiLCJfMHgzZWM3ZGUiLCJfMHg0OTFhZDgiLCJfMHgxMGFhMDIiLCJfMHg1ZDEzZDIiLCJfMHgyYmM3Y2MiLCJfMHg1MTNjZjciLCJfMHgzODQ3MDEiLCJfMHgyMWMzOTkiLCJfMHg5ZDQ0ZDciLCJTdXBwcmVzc2VkRXJyb3IiLCJfMHg1YWYxOGMiLCJfMHgxMDI2OTMiLCJfMHg0ZmU2M2MiLCJfMHgxN2YzOGYiLCJFcnJvciIsIl8weDMwZjQwZiIsIl8weDIxNjdiNSIsIl8weDQ2ZTE0MyIsIl8weDJhNWNkNSIsIl8weDQyZGQxMiIsIl8weGFkZTdhMyIsIl8weGQwYzc2NyIsIl8weDNhMjZhMiIsIl8weDExZjk1ZiIsIl8weDVhOGNiNyIsIl8weDE0ODgyOCIsIl8weDRhYjAxZiIsIl8weDcxNjIyZCIsIl8weDVjNDI4ZSIsIl8weGY2NTljYyIsIl8weDE4ZDk0YyIsIl8weDU1YTQzYyIsIl8weDQyOTc5MyIsIl8weGYzMmVmOSIsIl8weDFmYjFjIiwiXzB4MzEwOGI1IiwiXzB4OTQ3NGVlIiwiXzB4NDJiNDVmIiwiZW5kcG9pbnROb2RlIiwiXzB4NjZhNTU0IiwiZW5kcG9pbnQiLCJfMHgyNDQ5OTciLCJiYXNlVXJsIiwiXzB4MWUxNjBkIiwiXzB4NTFjOTc5IiwiXzB4MTRmMDBiIiwiXzB4MmI3YzIyIiwiXzB4NDZiZTQ3IiwiXzB4NWM1NjAxIiwiT2JqZWN0IiwiXzB4NWQwMGJlIiwiZmV0Y2giLCJKU09OIiwiY29uc29sZSIsIl8weDQ5ZjhkMSIsIl8weDU4OWQxZCIsIl8weDJjMjNjMCIsIl8weDJjMTdhMyIsIl8weDE2Yjc5YSIsIl8weGUxYjA0NiIsIl8weDVhOGZlYiIsIl8weDEyOGI3NCIsIl8weDQ0YzY0MyIsIl8weDM1OGNiYyIsIm5vZGVJZCIsIl8weDE5YmNhMyIsInJvb3ROb2RlSWQiLCJfMHg5Y2JhNTAiLCJpc1R5cGUiLCJfMHgxMWU4MDciLCJfMHgxNThmZmQiLCJfMHg1MWVjY2UiLCJfMHg1NWU5NTMiLCJfMHhmOWIwODQiLCJfMHg1Yzg3ZDIiLCJfMHgyODQyMjYiLCJfMHgzNDQ4NyIsIl8weDU1Yjc2MSIsIl8weDQ0OWNjOCIsIl8weDM3OTA0OSIsIl8weDZmNzdkZCIsIl8weDE3YzFhMSIsIl8weDMyZmQwYiIsIl8weDM3NmI5ZSIsIl8weGRkYTlmIiwiXzB4YmEwZGUxIiwiXzB4MWRjYmU5IiwiXzB4OWFlOTAyIiwiXzB4MjNkYzQ4IiwiXzB4MjZiZDA3IiwiXzB4NWVjMmEyIiwiXzB4NWJlMDg5IiwiXzB4MzMzZmE2IiwiXzB4MjM2ZTY4IiwiXzB4MTJlODllIiwiXzB4MmQ0MWRhIiwiXzB4M2ViMTcyIiwiXzB4MzRjZjc3IiwiXzB4NTNlMDlhIiwiUkVEIiwiXzB4NDEyYjM4IiwiXzB4ZmQ2OTkzIiwiXzB4MmRmMDc4IiwiXzB4NGVlZjU2IiwiXzB4MzNjNTYwIiwiXzB4NTNkYTNkIiwiXzB4NTdjMzgzIiwiXzB4MjIxMDQ1IiwiXzB4ODc2YjAyIiwiXzB4MTBmMzZjIiwiXzB4NDIyMDk2IiwiXzB4NDA3ZDJlIiwiXzB4MTRkNTE0IiwiXzB4MzBiMDQ5IiwiXzB4MTFlODgwIiwianNvbiIsIl8weDhkZjI1NiIsImRhdGEiLCJfMHgyOTk0YzMiLCJfMHg0MWMwNmUiLCJfMHgzOWUyNGEiLCJfMHgzZTBiZWUiLCJzZXRUaW1lb3V0IiwiXzB4MjRlNjA2IiwiXzB4MzRlYjhkIiwiXzB4MzUzOWI0IiwiXzB4MTJjZjllIiwiXzB4ZWQ4NmZhIiwiXzB4NTgwMTEwIiwiXzB4MmI4YjhkIiwiXzB4NWYwNDIxIiwiXzB4NWMwOTI4IiwiXzB4NGM4MWI1IiwiXzB4N2EwYWMxIiwiXzB4YTkwMDVlIiwiXzB4Mjg4MWZlIiwiXzB4OTY0YzM1IiwiXzB4NDExZWIxIiwiXzB4YTI0NjRlIiwiXzB4NDM1MTM3IiwiXzB4NDAwMzJhIiwiXzB4NWRiNjM4IiwiXzB4ODJlN2EiLCJfMHgzYTEyMjgiLCIkIiwiXzB4MzFiZWE1IiwiXzB4MTViYWM1IiwiaWNvbiIsIl8weDJkNTNhOCIsImNvbG9yIiwiXzB4MWYxZWM0IiwiXzB4NWFjZWMyIiwiXzB4NDFjNzE4IiwiXzB4MTdjNmE5IiwiXzB4MjYxZGI2IiwiXzB4NDk5Nzg1IiwiXzB4MTdmM2U1IiwiXzB4MWRmNDMxIiwiXzB4MWFmNTc1IiwiXzB4NWI4NTZhIiwiXzB4ZDRlMDE3IiwiXzB4MTIxMWI3IiwiXzB4NWJhMWY2IiwiXzB4MmRjMDhmIiwiXzB4MzgwYzUxIiwiXzB4MTg0MGRlIiwiXzB4NWQxODlkIiwiXzB4NTkxMzU4IiwiXzB4MzdmYTYzIiwiXzB4MWEzMmIzIiwiXzB4M2NmMDQzIiwiXzB4MjgxNWRhIiwiXzB4MjkzOTkyIiwidW5kZWZpbmVkIiwiXzB4NTcyMzJiIiwiXzB4MjYyMGYyIiwiXzB4NWM5ZWM5IiwiXzB4NTc3YjA5IiwiXzB4Y2Q4ZTdhIiwiXzB4NGEzNDhlIiwiXzB4MmIyMzYxIiwiXzB4NGVjY2I3IiwiXzB4MzdmN2FlIiwiXzB4Mjc1OGE5IiwiXzB4NTc0NjM4IiwiXzB4NGVkZTlhIiwiXzB4NDJmMWI5IiwiXzB4MmE3YjIzIiwicmVmZXJlbmNlcyIsIl8weDFjYmIwIiwiXzB4N2I3ZGY4IiwiXzB4MTlmMzY2IiwiXzB4MjIwZWU4IiwiXzB4MjA1YmZjIiwiXzB4NWMyZDZlIiwiXzB4M2U4M2U0IiwiXzB4NGY2ZGM2IiwiXzB4YzNhYTI0IiwiXzB4NDYwZjY3IiwiXzB4NTYwZTNiIiwiXzB4M2Q3MzQ0IiwiXzB4MWIyMDZlIiwiXzB4ZTQ5YTExIiwiXzB4MjEzYmI1IiwiXzB4NTFhODc5IiwiXzB4MzRmN2YxIiwiXzB4NDIzNmRiIiwiXzB4MWNhOWFjIiwiXzB4MWQ5NDZlIiwiXzB4MTk0NjFkIiwiXzB4Mjc2MjI0IiwiXzB4NThiMTA0IiwiXzB4MTFlMThkIiwiXzB4M2M5NjQwIiwiXzB4NDI3ZjRhIiwiXzB4MWIxYjUwIiwiXzB4MjYyYjcxIiwiXzB4MmY4MjM0IiwiXzB4NDBlZmI1IiwiZG9jdW1lbnQiLCJfMHgzZDQ0MTAiLCJfMHg1NDE4NWEiLCJfMHgyNGU1YzUiLCJfMHg3YjA3ZTciLCJfMHgzMjZjZGMiLCJfMHgxYTY5N2EiLCJfMHgzODRmN2MiLCJfMHg1YjdmZmMiLCJfMHgxOTE5ZjUiLCJfMHgyNDAxZWIiLCJfMHgxNDI3NDEiLCJfMHg1MWI4MzQiLCJfMHhmODQzNSIsIl8weDI0NmQyYiIsIl8weDIzYTIyYiIsIl8weDRjNWZhYyIsIl8weDI0NWRjZSIsIl8weDQ3YWM3OCIsIl8weDQyZTQ4MyIsIndpbmRvdyIsIl8weDJmNTAzYiIsIl8weDU5OGYxNSIsIl8weDZiNGQ3NyIsIl8weGNlYzViNyIsIl8weDM4MWViNSIsIl8weDJkNGFlZiIsIl8weGJjNzg3ZiIsIl8weGNjNjM4NSIsIl8weDQ5MTAwYyIsIl8weDIyOGVhNCIsIl8weDRkMmY3NyIsIl8weDUzNWIxNiIsIl8weDRlNmY1NiIsIl8weDY0MGE0YSIsIl8weDMyMjIyYiIsIl8weDE2NDBiYSIsIl8weDRjMDJjNiIsIl8weGRiNzU4OSIsIl8weDE0NDBkMCIsIl8weGI5ODZjNCIsIl8weGMzY2E3OCIsIl8weDEyZDQ1YyIsIl8weDVlMjgxMCIsIl8weDY3ZmI4ZCIsIl8weDM4MjAwZCIsIl8weDcyYzFhYSIsIl8weDk0Mjg2YiIsIl8weDJjMDMwNiIsIl8weGFjNWIwOCIsIl8weDJkZTMyZSIsIl8weDM1OGUzYiIsIl8weDIzYWZhNSIsIl8weDFiMWM5NSIsIl8weDI2NDg0MSIsIl8weDc3MGQwMiIsIl8weDFkZmUyYiIsIl8weDQyNjVlMiIsIl8weDJlMGE0ZSIsIl8weDIyMzhkNCIsIl8weDIwZjJiNiIsIl8weDFkNTk5NiIsIl8weDM5NjM0MSIsIl8weDFiMDI3NiIsIl8weDYxNmMyIiwiXzB4NGUwZjA3IiwiXzB4MzMxNjhiIiwiXzB4NGQxY2M1IiwiXzB4Y2QzNjMzIiwiXzB4NTZmNWIzIiwiXzB4MzU5YWU0IiwiXzB4M2NiOTRiIiwiXzB4NTE5NTc4IiwiXzB4NjQ1NDBlIiwiXzB4M2E0MjlhIiwic2VjdXJpdHlNb2RlIiwiXzB4N2U4NTgiLCJzZWN1cml0eVBvbGljeSIsIl8weDNkN2U0MSIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHg1YjM3MTciLCJjcmVkZW50aWFscyIsIl8weDVkZTM1YSIsIm5hbWVzcGFjZUFsaWFzZXMiLCJfMHgzNTVmZDEiLCJfMHgyYTBkNmYiLCJfMHgzM2ZmNmUiLCJfMHg0NjIyMTUiLCJfMHgzOTUwMTIiLCJfMHg1MmY5NTEiLCJfMHgxMTljYTMiLCJfMHgyMTg0MzAiLCJfMHgzNjkxYjgiLCJfMHgzZWIyMGIiLCJfMHhkZGM1NTMiXSwibWFwcGluZ3MiOiJvaUJBQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsUUFBZixDLFFBQStCQSxRQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsUUFBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxRQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMsQ0FDNUIsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsQyx5QkFBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsU0FBVCxDQUFrQkMsU0FBbEIsQyxDQUEyQixHLENBQU1ILFNBQUEsQ0FBS1QsU0FBQSxDLE9BQUEsRUFBbUJZLFNBQW5CLENBQUwsQyxFQUFtQyxNQUFPQyxTQUFQLEMsQ0FBWVAsU0FBQSxDQUFPTyxTQUFQLEMsR0FDaEYsU0FBU0osU0FBVCxDQUFjSyxTQUFkLEMseUJBQXdCQSxTQUFBLEMsZ0JBQUEsRUFBY1QsU0FBQSxDQUFRUyxTQUFBLEMsZ0JBQUEsQ0FBUixDQUFkLENBQXNDYixTQUFBLENBQU1hLFNBQUEsQyxnQkFBQSxDQUFOLEUsZ0JBQUEsRUFBeUJQLFNBQXpCLENBQW9DSSxTQUFwQyxDLEVBQzlERixTQUFBLENBQU0sQ0FBQVQsU0FBQSxDQUFZQSxTQUFBLEMsT0FBQSxFQUFnQkgsU0FBaEIsQ0FBeUJDLFNBQUEsRUFBYyxFQUF2QyxDQUFaLENBQUQsQyxNQUFBLEdBQUwsQyxFQUpHLEMsRUFRWCxPQUFPaUIsZUFBUCxHLGVBQUEsQ0FBd0NBLGVBQXhDLENBQTBELFNBQVVDLFNBQVYsQ0FBaUJDLFNBQWpCLENBQTZCQyxTQUE3QixDLDJCQUN0RCxJQUFJQyxTQUFBLENBQUksSUFBSUMsS0FBSixDQUFVRixTQUFWLENBQVIsQyxPQUNPQyxTQUFBLEMsZ0JBQUEsRSxnQkFBQSxDQUE0QkEsU0FBQSxDLGdCQUFBLEVBQVVILFNBQXRDLENBQTZDRyxTQUFBLEMsWUFBQSxFQUFlRixTQUE1RCxDQUF3RUUsUyxFQUZuRixDQUtBLE1BQU1FLFNBQUEsQyxXQUFOLENBQ01DLFNBQUEsQyxnQkFETixDQUVNQyxTQUFBLEMsZ0JBRk4sQ0FHTUMsU0FBQSxDLGdCQUhOLENBSU1DLFNBQUEsQyxnQkFKTixDQUtNQyxTQUFBLEMsZ0JBTE4sQ0FNTUMsU0FBQSxDLGVBTk4sQ0FRQSxJQUFJQyxTQUFKLENBQ0EsQ0FBQyxTQUFVQyxTQUFWLEMsMkJBQ0dBLFNBQUEsQ0FBZ0JBLFNBQUEsQyxlQUFBLEUsR0FBaEIsRSxnQkFDQUEsU0FBQSxDQUFnQkEsU0FBQSxDLGdCQUFBLEUsR0FBaEIsRSxVQUNBQSxTQUFBLENBQWdCQSxTQUFBLEMsZUFBQSxFLEdBQWhCLEUsZ0JBQ0FBLFNBQUEsQ0FBZ0JBLFNBQUEsQyxlQUFBLEUsR0FBaEIsRSxpQkFKSixDQUtHRCxTQUFBLEVBQW9CLENBQUFBLFNBQUEsQ0FBa0IsRUFBbEIsQ0FMdkIsR0FNQSxJQUFJRSxTQUFKLENBQ0EsQ0FBQyxTQUFVQyxTQUFWLEMsMkJBQ0dBLFNBQUEsQ0FBVUEsU0FBQSxDLGdCQUFBLEUsR0FBVixFLGlCQUNBQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLEdBQVYsRSxTQUNBQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLEdBQVYsRSxpQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxHQUFWLEUsaUJBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGdCQUFBLEUsR0FBVixFLGlCQUNBQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLElBQVYsRSxpQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZUFBQSxFLElBQVYsRSxnQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsVUFBQSxFLElBQVYsRSxpQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxJQUFWLEUsa0JBVEosQ0FVR0QsU0FBQSxFQUFjLENBQUFBLFNBQUEsQ0FBWSxFQUFaLENBVmpCLEdBV0EsSUFBSUUsU0FBSixDQUNBLENBQUMsU0FBVUMsU0FBVixDLDJCQUNHQSxTQUFBLENBQWNBLFNBQUEsQyxRQUFBLEUsR0FBZCxFLGlCQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxnQkFBQSxFLEdBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsUUFBQSxFLEdBQWQsRSxTQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxnQkFBQSxFLEdBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsY0FBQSxFLElBQWQsRSxlQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxlQUFBLEUsSUFBZCxFLGdCQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxnQkFBQSxFLElBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZ0JBQUEsRSxJQUFkLEUsa0JBUkosQ0FTR0QsU0FBQSxFQUFrQixDQUFBQSxTQUFBLENBQWdCLEVBQWhCLENBVHJCLEdBVUEsSUFBSUUsU0FBSixDQUNBLENBQUMsU0FBVUMsU0FBVixDLDJCQUNHQSxTQUFBLENB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QyxDQUFoRCxDLEVBbC9CSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sLCBJdGVyYXRvciAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiRGF0YVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXRleHQtd2lkdGhcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJicm93c2UgZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB3YWxrQmFja3dhcmQgPSAoX2EsIF9iKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIF9iXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCB7IG5vZGVJZCwgcm9vdE5vZGVJZCwgaXNUeXBlIH0pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L3dhbGstYmFja3dhcmRgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCxcbiAgICAgICAgICAgICAgICBpc1R5cGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIGpzb24uYnJvd3NlUGF0aDtcbiAgICB9KTtcbiAgICBjb25zdCBjaG9vc2VOb2RlSWQgPSAoZGF0YSwgbW9kZSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEucmVxdWVzdGVkTm9kZUlkO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9pbmRleGVkO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuYnBfYWxpYXNlZCB8fCBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9hbGlhc2VkIHx8IGRhdGEubm9kZUlkX25zdTtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG1ha2VUb29sdGlwID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzQ29kZSAhPT0gXCJHb29kXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBgc3RhdHVzQ29kZTogJHtkYXRhLnN0YXR1c0NvZGV9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSBbXTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBub2RlSWQ6ICR7ZGF0YS5ub2RlSWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgYnJvd3NlIHBhdGg6ICR7ZGF0YS5icF9pbmRleGVkfWApO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGUgY2xhc3M6ICR7Tm9kZUNsYXNzW2RhdGEubm9kZUNsYXNzXX1gKTtcbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9uc3UpIHtcbiAgICAgICAgICAgICAgICBzdHIucHVzaChgbnN1IG5vZGVJZDogJHtkYXRhLm5vZGVJZF9uc3V9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5ub2RlSWRfYWxpYXNlZCkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBhbGlhc2VkIE5vZGVJZDogJHtkYXRhLm5vZGVJZF9hbGlhc2VkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEuYnBfaW5kZXhlZCkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBhbGlhc2VkIGJyb3dzZVBhdGg6ICR7ZGF0YS5icF9hbGlhc2VkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0ci5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBmaWd1cmVPdXRNb2RlKGVuaGFuY2VkTm9kZUlkKSB7XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zdT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibnN1Tm9kZUlEXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9eKG5zPS4qOyk/KGl8YnxzfGcpPS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJub2RlSWRcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL15uc2E9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14oXFwvfFxcLilbMC05XSs6LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14oXFwvfFxcLikuKjovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1lblVJdGVtVmFsdWUoc3RyKSB7XG4gICAgICAgIGNvbnN0IG1vZGUgPSBmaWd1cmVPdXRNb2RlKHN0cik7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibmFcIjtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuc3VcIjtcbiAgICAgICAgICAgIGNhc2UgXCJicm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYlwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYWJcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRvTW9kZSh2KSB7XG4gICAgICAgIGxldCBtb2RlO1xuICAgICAgICBzd2l0Y2ggKHYpIHtcbiAgICAgICAgICAgIGNhc2UgXCJuXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwibm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibmFcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJhbGlhc2VkTm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibnN1XCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwibnN1Tm9kZUlEXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYlwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJhYlwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWRCcm93c2VQYXRoXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgfVxuICAgIGNvbnN0IF9jYWxsQ2hlY2tOb2RlSWQgPSAoX2EsIG5vZGVJZF8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2NoZWNrTm9kZUlkYDtcbiAgICAgICAgY29uc3QgZUlkID0gZW5kcG9pbnROb2RlLmlkO1xuICAgICAgICBjb25zdCBuID0gUkVELm5vZGVzLm5vZGUoZUlkKTtcbiAgICAgICAgY29uc29sZS5sb2cobi5uYW1lc3BhY2VBbGlhc2VzKTtcbiAgICAgICAgbi5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICBjb25zdCBuYW1lc3BhY2VBbGlhc2VzID0gZW5kcG9pbnROb2RlLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2VBbGlhc2VzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIHsganNvbiwgZGF0YSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKF9hLCBtb2RlXzEsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBtb2RlXzEsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbW9kZSwgJGlucHV0RWxlbWVudCwgJGluZm8pIHtcbiAgICAgICAgY29uc3QgZW5oYW5jZWROb2RlSWQgPSAkaW5wdXRFbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCB7IGpzb24sIGRhdGEgfSA9IHlpZWxkIF9jYWxsQ2hlY2tOb2RlSWQoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIGVuaGFuY2VkTm9kZUlkKTtcbiAgICAgICAgY29uc3Qgc2V0Tm90aWZpY2F0aW9uID0gKHRleHQsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgJGluZm8udGV4dCh0ZXh0KS5hZGRDbGFzcyhcInN0ZXJmaXZlLWluZm9cIikuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICRpbmZvLnNob3coKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICRpbmZvLnJlbW92ZUNsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgZW5oYW5jZWROb2RlSWQsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2x0aXAgPSBtYWtlVG9vbHRpcChqc29uKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LmF0dHIoXCJ0aXRsZVwiLCB0b29sdGlwKTtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE5vZGVJZCA9IGNob29zZU5vZGVJZChqc29uLCBtb2RlKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChzZWxlY3RlZE5vZGVJZCk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIkdvb2RcIiwgXCJva1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGAke2VuaGFuY2VkTm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBmZXRjaENoaWxkcmVuKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUxKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDIgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbLi4uYnJvd3NlUmVzdWx0MS5yZWZlcmVuY2VzLCAuLi5icm93c2VSZXN1bHQyLnJlZmVyZW5jZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRlbXBsYXRlU1QgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc1N1YnR5cGVcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfCBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8IE5vZGVDbGFzcy5EYXRhVHlwZSB8IE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgZnVuY3Rpb24gZmV0Y2hTdWJ0eXBlcygkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlU1QpO1xuICAgICAgICAgICAgcmV0dXJuIGJyb3dzZVJlc3VsdDE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYWtlRWxlbWVudCA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZSB8fCAhcmVmZXJlbmNlLm5vZGVJZCkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSBmYS1lcnJvclwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPjwvaT5ubyByZWZlcmVuY2UgITx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdCA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgY29sb3IgfSA9IGdldEljb24ocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBgKCR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfSkgJHsoKF9jID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5uYW1lKSB8fCAoKF9kID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudGV4dCkgfHwgXCJcIn1gO1xuICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaSBrZXk9XCIke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX1cIn0+PHNwYW4gY2xhc3M9XCJ0cmVlLXRleHRcIiB0aXRsZT0ke3RpdGxlfT48aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4gJHt0fTwvc3Bhbj48dWw+PC91bD48L2xpPmApO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBmaW5kRWxlbWVudCA9IChub2RlSWQsICR0cmVlKSA9PiB7XG4gICAgICAgIHJldHVybiAkdHJlZS5maW5kKGBsaVtrZXk9XCIke25vZGVJZH1cIl1gKTtcbiAgICB9O1xuICAgIGNvbnN0IHNlbGVjdFNpbmdsZSA9ICh0aGF0LCAkbGkpID0+IHtcbiAgICAgICAgdGhhdC4kdHJlZS5maW5kKFwibGkgPiAudHJlZS10ZXh0XCIpLnJlbW92ZUNsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgICAgIC8vIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtc1xuICAgICAgICAkbGkuZmluZChcIi50cmVlLXRleHQ6Zmlyc3RcIikuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICB9O1xuICAgIGNvbnN0IGF1dG9FeHBhbmQgPSAodGhhdCwgYnJvd3NlUGF0aCwgJHRyZWUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBleHBhbmQgdGhlIHRyZWUgdG8gc2hvdyB0aGUgbm9kZUlkXG4gICAgICAgIGxldCAkY3VycmVudCA9ICR0cmVlLmNoaWxkcmVuKFwiOmZpcnN0XCIpO1xuICAgICAgICBicm93c2VQYXRoLnJlbGF0aXZlUGF0aC5lbGVtZW50cyB8fCBbXTtcbiAgICAgICAgY29uc3Qgbm9kZUlkcyA9IGJyb3dzZVBhdGgubm9kZUlkcyB8fCBbXTtcbiAgICAgICAgaWYgKG5vZGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBuIG9mIG5vZGVJZHMpIHtcbiAgICAgICAgICAgIGlmICgkY3VycmVudC5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGV4cGFuZCBhbmQgc2VsZWN0IHRoZSByaWdodCBlbGVtZW50XG4gICAgICAgICAgICAgICAgeWllbGQgX2V4cGFuZExpKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gZmluZEVsZW1lbnQobiwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgaWYgKCRlbGVtZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRjdXJyZW50ID0gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgc2Nyb2xsVG9MaSh0aGF0LiRkcm9wZG93biwgJGN1cnJlbnQpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIHNjcm9sbFRvTGkoJGNvbnRhaW5lciwgJHRhcmdldExpKSB7XG4gICAgICAgIC8vIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBpdGVtIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXJcbiAgICAgICAgY29uc3QgbGlQb3MgPSAkdGFyZ2V0TGkucG9zaXRpb24oKS50b3A7XG4gICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBjb250YWluZXJTY3JvbGxUb3AgPSAkY29udGFpbmVyLnNjcm9sbFRvcCgpO1xuICAgICAgICBpZiAoY29udGFpbmVyU2Nyb2xsVG9wID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gdG8gc2Nyb2xsIHRvIChjdXJyZW50IHNjcm9sbCArIGl0ZW0ncyBwb3NpdGlvbilcbiAgICAgICAgLy8gQWRqdXN0IHRoaXMgY2FsY3VsYXRpb24gYmFzZWQgb24geW91ciBuZWVkc1xuICAgICAgICBjb25zdCBzY3JvbGxUbyA9IGNvbnRhaW5lclNjcm9sbFRvcCArIGxpUG9zIC0gJGNvbnRhaW5lci5oZWlnaHQoKSAvIDIgKyAkdGFyZ2V0TGkuaGVpZ2h0KCkgLyAyO1xuICAgICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byBlbnN1cmUgdGhlIGl0ZW0gaXMgdmlzaWJsZVxuICAgICAgICAkY29udGFpbmVyLmFuaW1hdGUoe1xuICAgICAgICAgICAgc2Nyb2xsVG9wOiBzY3JvbGxUbyxcbiAgICAgICAgfSwgNTAwKTsgLy8gQWRqdXN0IHRoZSBkdXJhdGlvbiAoNTAwbXMpIGFzIG5lZWRlZFxuICAgIH1cbiAgICBjb25zdCByZWFjaFNlbGVjdGlvbiA9ICh0aGF0LCBwYXJlbnROb2RlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gdGhhdC4kaW5wdXQudmFsKCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICByb290Tm9kZUlkOiBwYXJlbnROb2RlLm5vZGVJZCxcbiAgICAgICAgICAgIGlzVHlwZTogdGhhdC5vcHRpb25zLmlzVHlwZVJlZiB8fCBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICBjb25zdCBicm93c2VQYXRoID0geWllbGQgd2Fsa0JhY2t3YXJkKGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWJyb3dzZVBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBhdXRvRXhwYW5kKHRoYXQsIGJyb3dzZVBhdGgsIHRoYXQuJHRyZWUpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRub2RlLCBmZXRjaEZ1bmMsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJsb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgJG5vZGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZWZlcmVuY2VzIH0gPSB5aWVsZCBmZXRjaEZ1bmMoJG5vZGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIHNvcnQgcmVmZXJlbmNlICAgYnkgYnJvd3NlTmFtZVxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMuc29ydCgoYSwgYikgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKCgoX2EgPSBhLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYW1lKSB8fCBcIlwiKS5sb2NhbGVDb21wYXJlKCgoX2IgPSBiLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCBcIlwiKTsgfSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYWtlQ29ubmVjdGlvbih0aGF0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZXhwYW5kTGkodGhhdCwgJGxpKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICBjb25zdCBmID0gIXRoYXQub3B0aW9ucy5pc1R5cGVSZWYgPyBmZXRjaENoaWxkcmVuIDogZmV0Y2hTdWJ0eXBlcztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJGxpLCBmLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0UGFyZW50Tm9kZSA9IHtcbiAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgIH07XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+IGRlZmF1bHRQYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb2x2ZVBhcmVudE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9fcGFyZW50Tm9kZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0eXBlb2YgdGhhdC5vcHRpb25zLnBhcmVudE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlLmNhbGwodGhhdCkgOiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gZGVzYztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fX3BhcmVudE5vZGUgfHwgZGVmYXVsdFBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsc28gcmVzZXQgcGFyZW50IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHRoYXQ7XG4gICAgICAgICAgICAgICAgICAgIGEuX19wYXJlbnROb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB5aWVsZCB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkobW9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgbW9kZSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcImlucHV0LWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8ucmVtb3ZlQ2xhc3MoXCJpbnB1dC1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9oaWRlTWVudShtZW51KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWNsb3NlLXByb3BlcnR5LXNlbGVjdFwiKTtcbiAgICAgICAgICAgICAgICBtZW51LmhpZGUoKTtcbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG1lbnUub3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5maW5kKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoXCJjaGVja2VkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQucHVzaCgkKHRoaXMpLmRhdGEoXCJ2YWx1ZVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBtZW51LmNhbGxiYWNrKHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuJGVsZW1lbnREaXYuaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIC8veHggfSBlbHNlIGlmICh0aGlzLiRvcHRpb25TZWxlY3RUcmlnZ2VyLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy94eCAgICAgdGhhdC4kb3B0aW9uU2VsZWN0VHJpZ2dlci50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZU1lbnUobWVudU9wdGlvbnMsIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnUgPSAkKFwiPGRpdj5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS10eXBlZElucHV0LW9wdGlvbnMgc3RlcmZpdmUtb25saW5lLW1lbnVcIik7XG4gICAgICAgICAgICAgICAgbWVudS5vcHRzID0gb3B0cztcbiAgICAgICAgICAgICAgICBtZW51LmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgbWVudU9wdGlvbnMuZm9yRWFjaCgob3B0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHQgPSB7IHZhbHVlOiBvcHQsIGxhYmVsOiBvcHQgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgb3AgPSAkKCc8YSBocmVmPVwiI1wiPjwvYT4nKS5hdHRyKFwidmFsdWVcIiwgb3B0LnZhbHVlKS5hcHBlbmRUbyhtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AudGV4dChvcHQubGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnByb3AoXCJ0aXRsZVwiLCBvcHQudGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5pY29uLmluZGV4T2YoXCI8XCIpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChvcHQuaWNvbikucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5pY29uLmluZGV4T2YoXCIvXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCI8aT5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogXCJyZWQtdWktdHlwZWRJbnB1dC1pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBcIm1hc2staW1hZ2U6IHVybChcIiArIG9wdC5pY29uICsgXCIpOyAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIiArIG9wdC5pY29uICsgXCIpO1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiPGk+XCIsIHsgY2xhc3M6IFwicmVkLXVpLXR5cGVkSW5wdXQtaWNvbiBcIiArIG9wdC5pY29uIH0pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC5jc3MoeyBwYWRkaW5nTGVmdDogXCIxOHB4XCIgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHQuaWNvbiAmJiAhb3B0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC50ZXh0KG9wdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNiO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2IgPSAkKCc8aW5wdXQgdHlwZT1cImNoZWNrYm94XCI+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKFwicG9pbnRlci1ldmVudHNcIiwgXCJub25lXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoXCJ2YWx1ZVwiLCBvcHQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmRUbyhvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oXCJtb3VzZWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3Aub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG9wdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYi5wcm9wKFwiY2hlY2tlZFwiLCAhY2IucHJvcChcImNoZWNrZWRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUub24oXCJrZXlkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBET1dOXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKFwiOmZvY3VzXCIpLm5leHQoKS50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVQXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKFwiOmZvY3VzXCIpLnByZXYoKS50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFU0NBUEVcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBtZW51O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FybUNsaWNrOiBmYWxzZSxcbiAgICAgICAgICAgIF9zaG93TWVudShtZW51LCByZWxhdGl2ZVRvKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYXJtQ2xpY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhcm1DbGljayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcG9zID0gcmVsYXRpdmVUby5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVsYXRpdmVUby5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgbWVudUhlaWdodCA9IG1lbnUuaGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IGhlaWdodCArIHBvcy50b3A7XG4gICAgICAgICAgICAgICAgaWYgKHRvcCArIG1lbnVIZWlnaHQgLSAkKGRvY3VtZW50KS5zY3JvbGxUb3AoKSA+ICQod2luZG93KS5oZWlnaHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0b3AgLT0gdG9wICsgbWVudUhlaWdodCAtICQod2luZG93KS5oZWlnaHQoKSArIDU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuaGVpZ2h0KG1lbnVIZWlnaHQgKyB0b3ApO1xuICAgICAgICAgICAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdG9wICsgXCJweFwiLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwb3MubGVmdCArIFwicHhcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51LnNsaWRlRG93bigxMDApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGF5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtY2xvc2UtcHJvcGVydHktc2VsZWN0XCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdChtZW51KS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKGV2ZW50LnRhcmdldCkuY2xvc2VzdChyZWxhdGl2ZVRvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmRpc2FybUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfc2hvd1R5cGVNZW51KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dNZW51KHRoYXQuJG1lbnUsIHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoYXQuc2VsZWN0ZWRNZW51SXRlbTtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSB0aGF0LiRtZW51LmZpbmQoXCJbdmFsdWU9J1wiICsgdHlwZSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH0sIDEyMCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2luaXRNZW51KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIuYXR0cihcInRhYmluZGV4XCIsIC0xKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLm9uKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWZvY3VzLWJsb2NrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuJG1lbnUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kbWVudS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZmEtaWQtY2FyZFxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVMaXN0ID0gW1xuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcInRleHRcIiwgdmFsdWU6IFwidFwiLCB0aXRsZTogXCJWYWx1ZSBpcyBub3QgdmVyaWZpZWRcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtZm9udFwiL2k+ICcgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibXNnLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwibXNnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJub2RlIGlkIG9yICBicm93c2UgcGF0aCBjb21lcyBmcm9tIGluamVjdGVkIG1zZyBwYXJhbWV0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlLW9wZW4tb1wiLz4nLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIk5vZGVJZFwiLCB2YWx1ZTogXCJuXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLXRhZ1wiLz4xICZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiQWxpYXNlZCBOb2RlSWRcIiwgdmFsdWU6IFwibmFcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtYm9va21hcmtcIi8+Jm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJOb2RlSWQgd2l0aCBuYW1lc3BhY2UgVXJuXCIsIHZhbHVlOiBcIm5zdVwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1pZC1jYXJkXCIvPiZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiQnJvd3NlUGF0aFwiLCB2YWx1ZTogXCJiXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLXRhZ1wiLz48aSBjbGFzcz1cImZhIGZhLWZpZ2h0ZXItamV0XCIvPiZuYnNwOycgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiQWxpYXNlZCBCcm93c2UgUGF0aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiYWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWJvb2ttYXJrXCIvPjxpIGNsYXNzPVwiZmEgZmEtZmlnaHRlci1qZXRcIi8+Jm5ic3A7JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBmaWd1cmVPdXRNZW5VSXRlbVZhbHVlKHRoYXQuJGlucHV0LnZhbCgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gdHlwZUxpc3QuZmluZCgoeCkgPT4geC52YWx1ZSA9PT0gYSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwuZW1wdHkoKS5hcHBlbmQoYDxzcGFuIHRpdGxlPSR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS50aXRsZSkgfHwgXCJcIn0+Jm5ic3A7ICR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5pY29uKSB8fCBcIlwifTwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSBhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51ID0gdGhpcy5fY3JlYXRlTWVudSh0eXBlTGlzdCwge30sICh2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0b01vZGUodik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBNZW51IHNlbGVjdGVkICFcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0LnZlcmlmeShtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdHlwZUxpc3QuZmluZCgoeCkgPT4geC52YWx1ZSA9PT0gdik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IHY7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsLmVtcHR5KCkuYXBwZW5kKGA8c3BhbiB0aXRsZT0keyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUudGl0bGUpIHx8IFwiXCJ9PiZuYnNwOyAkeyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuaWNvbikgfHwgXCJcIn08L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLnNob3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2RlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01vZGUodGhhdC5zZWxlY3RlZE1lbnVJdGVtKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmNzcyhcImJvcmRlclwiLCBcIm5vbmVcIik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRlbGVtZW50RGl2ID0gdGhhdC4kaW5wdXQud3JhcChcIjxkaXY+XCIpLnBhcmVudCgpLmFkZENsYXNzKFwibWFpbi13cmFwcGVyXCIpO1xuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gQ29tYm8gYnJvd3NlclxuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRjb21iby5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWlucHV0LXdyYXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQucmVwbGFjZVdpdGgodGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAgPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwiaW5wdXQtZ3JvdXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGlucHV0R3JvdXApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJGlucHV0KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBhZGQgYnV0dG9uIG9uIHRoZSByaWdodCBzaWRlXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB0b2dnbGVUcmVlQnRuXG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24gdGl0bGU9XCJvcGVuIE9QQ1VBIEFkZHJlc3NTcGFjZSBCcm93c2VyXCI+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmFmdGVyKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0geWllbGQgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiAmJiAoeWllbGQgcmVhY2hTZWxlY3Rpb24odGhhdCwgcGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB2ZXJpZnlCdG5cbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uIHRpdGxlPVwidmVyaWZ5IG5vZGVJZCBvciBicm93c2VQYXRoXCI+PGkgY2xhc3M9XCJmYSBmYS1yZWZyZXNoXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmFmdGVyKHRoYXQuJHZlcmlmeUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlID0gdGhhdC5tb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KG1vZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplSW5wdXQgPSAoaW5wdXQpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uRGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEsIGpzb24gfSA9IHlpZWxkIF9jYWxsQ2hlY2tOb2RlSWQoY29ubmVjdGlvbkRhdGEsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZUlkID0gY2hvb3NlTm9kZUlkKGpzb24sIG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudmFsKHNlbGVjdGVkTm9kZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIHByZXBlbmRlZCBidXR0b25cbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0ID0gJChcIjxkaXY+XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5iZWZvcmUodGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyID0gJCgnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCI+PC9idXR0b24+JykucHJlcGVuZFRvKHRoYXQuJHVpU2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgJCgnPGkgY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC1pY29uIGZhIGZhLWNhcmV0LWRvd25cIj48L2k+JykudG9nZ2xlKHRydWUpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zaG93VHlwZU1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImtleWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zaG93VHlwZU1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImZvY3VzXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJibHVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhciBvcHQgPSB0aGF0LnR5cGVNYXBbdGhhdC5wcm9wZXJ0eVR5cGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKG9wdC5oYXNWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LnJlbW92ZUNsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbCA9ICQoJzxzcGFuIGNsYXNzPVwicmVkLXVpLXR5cGVkSW5wdXQtdHlwZS1sYWJlbFwiPjwvc3Bhbj4nKS5hcHBlbmRUbyh0aGF0LiRzZWxlY3RUcmlnZ2VyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdE1lbnUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHRlbXBvcmF0eSBpbmZvIHBhbmVsXG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gZHJvcCBkb3duIHRyZWVcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCkuYXBwZW5kVG8odGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUgPSAkKGA8dWwgY2xhc3M9XCJzdGVyZml2ZS10cmVlXCI+PC91bD5gKS5hcHBlbmRUbyh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kZHJvcGRvd24uc2hvdygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbkxlZnRTaXplID0gKCRsaSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkbGkub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVFeHBhbnNpb24gPSAoJGxpKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZXhwYW5kTGkodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImRibGNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgaW5wdXQgPSBgWyR7ZGlzcGxheU5hbWV9XSgke3ZhbHVlfSlgO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplSW5wdXQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvdXRzaWRlIHRoZSBwYWdlIHdpbGwgaGlkZSB0aGUgZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdCh0aGF0LiRjb21ibykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIGNvbnRhaW5pbmc6XG4gICAgICogIC0gdGhlIGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LFxuICAgICAqICAtIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICogIC0gY3JlZGVudGlhbHNcbiAgICAgKiAgLSBuYW1lc3BhY2VBbGlhc2VzXG4gICAgICpcbiAgICAgKiBleHRyYWN0ZWQgZnJvbSB0aGUgdWkgd2lkZ2V0ICNub2RlLWlucHV0LWVuZHBvaW50XG4gICAgICovXG4gICAgY29uc3QgZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHJlZE5vZGUgPSBSRUQubm9kZXMubm9kZShlbmRwb2ludElkKTtcbiAgICAgICAgaWYgKCFyZWROb2RlKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy8gY29uc3QgY3JlZGVudGlhbHMgPSBSRUQuKGVuZHBvaW50SWQpO1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHNhbml0aXplIGFuZCBleHRyYWN0IHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIG9ubHkgKCBub3QgdGhlIG5vZGUtcmVkIHN0dWZmKVxuICAgICAgICBjb25zdCB7IGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LCB1c2VySWRlbnRpdHlUeXBlLCBjcmVkZW50aWFscywgbmFtZXNwYWNlQWxpYXNlcyB9ID0gcmVkTm9kZTtcbiAgICAgICAgY29uc3QgcmV0VmFsdWUgPSB7XG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgICAgICAgbmFtZXNwYWNlQWxpYXNlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJldFZhbHVlO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50TnIgPSBnZXRFbmRQb2ludEF0dHJpYnV0ZXMoKTtcbiAgICAgICAgaWYgKCFlbmRwb2ludE5yKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZUFsaWFzZXMgPSBlbmRwb2ludE5yLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgbmFtZXNwYWNlQWxpYXNlcywgaWQ6IGVuZHBvaW50SWQgfSwgZW5kcG9pbnROcik7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiBnZXRFbmRwb2ludFBhcmFtZXRlcnMsXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLUV4cGxvcmVcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJvcGN1YVwiLFxuICAgICAgICBjb2xvcjogXCIjQzBERUVEXCIsXG4gICAgICAgIGFsaWduOiBcInJpZ2h0XCIsXG4gICAgICAgIGljb246IFwiLi4vLi4vaWNvbnMvb3BjdWFub2RlTG9nby5wbmdcIixcbiAgICAgICAgcGFsZXR0ZUxhYmVsOiBcImV4cGxvcmVcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIGlucHV0czogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgb3V0cHV0OiB7IHZhbHVlOiA0IH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgLy8gZm9yIGFjdGlvbiBleHBsb3JlXG4gICAgICAgICAgICBub2RlSWQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgb3V0cHV0VHlwZTogeyB2YWx1ZTogXCJWYWx1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgZXhjbHVkZUVtcHR5OiB7IHZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgICAgLy8gcm9vdE5vZGU6IHsgdmFsdWU6IFwiQE9iamVjdEZvbGRlclwiIH0sXG4gICAgICAgICAgICBmb2xsb3dPcmdhbml6ZXM6IHsgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dHM6IDEsXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIEV4cGxvcmVcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQoKTtcbiAgICAgICAgICAgIG5vZGUuaW5wdXRzID0gMTtcbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIiB8fCBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgfSB9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHNhdmUoKSB7IH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
|
7
|
+
function _0x21eb(_0xdb2e9b,_0x2465e3){const _0x3fed38=_0x3fed();return _0x21eb=function(_0x21eb5a,_0x4cfaee){_0x21eb5a=_0x21eb5a-0x126;let _0x5e1be8=_0x3fed38[_0x21eb5a];return _0x5e1be8;},_0x21eb(_0xdb2e9b,_0x2465e3);}(function(_0xd87b6e,_0xc78543){const _0x1160ef=_0x21eb,_0x2ffa16=_0xd87b6e();while(!![]){try{const _0x32917a=-parseInt(_0x1160ef(0x186))/0x1+parseInt(_0x1160ef(0x19f))/0x2*(parseInt(_0x1160ef(0x18f))/0x3)+parseInt(_0x1160ef(0x1fe))/0x4*(-parseInt(_0x1160ef(0x227))/0x5)+parseInt(_0x1160ef(0x244))/0x6+parseInt(_0x1160ef(0x176))/0x7*(parseInt(_0x1160ef(0x22a))/0x8)+parseInt(_0x1160ef(0x17b))/0x9*(parseInt(_0x1160ef(0x1bb))/0xa)+parseInt(_0x1160ef(0x18e))/0xb*(-parseInt(_0x1160ef(0x144))/0xc);if(_0x32917a===_0xc78543)break;else _0x2ffa16['push'](_0x2ffa16['shift']());}catch(_0x29a998){_0x2ffa16['push'](_0x2ffa16['shift']());}}}(_0x3fed,0xf0fd9),(function(){'use strict';const _0x49eae4=_0x21eb;function _0x595b9b(_0x1b2be9,_0x5b4cd2,_0x2e3cb2,_0x12588d){function _0x42d712(_0x4c2080){return _0x4c2080 instanceof _0x2e3cb2?_0x4c2080:new _0x2e3cb2(function(_0x4e5b99){_0x4e5b99(_0x4c2080);});}return new(_0x2e3cb2||(_0x2e3cb2=Promise))(function(_0x219239,_0x29e303){const _0x49acab=_0x21eb;function _0x3ba0b3(_0x38bbbb){const _0x193fc4=_0x21eb;try{_0x32db5a(_0x12588d[_0x193fc4(0x14c)](_0x38bbbb));}catch(_0x481c6f){_0x29e303(_0x481c6f);}}function _0x5458a3(_0x4d4e77){try{_0x32db5a(_0x12588d['throw'](_0x4d4e77));}catch(_0xce1292){_0x29e303(_0xce1292);}}function _0x32db5a(_0x4203a2){const _0x48e1cf=_0x21eb;_0x4203a2[_0x48e1cf(0x203)]?_0x219239(_0x4203a2[_0x48e1cf(0x142)]):_0x42d712(_0x4203a2['value'])[_0x48e1cf(0x20f)](_0x3ba0b3,_0x5458a3);}_0x32db5a((_0x12588d=_0x12588d[_0x49acab(0x1d2)](_0x1b2be9,_0x5b4cd2||[]))['next']());});}typeof SuppressedError===_0x49eae4(0x242)?SuppressedError:function(_0x461a60,_0x2b6f89,_0x4b6de1){const _0xf8647d=_0x49eae4;var _0x24d9dc=new Error(_0x4b6de1);return _0x24d9dc[_0xf8647d(0x226)]=_0xf8647d(0x1d0),_0x24d9dc['error']=_0x461a60,_0x24d9dc[_0xf8647d(0x1fd)]=_0x2b6f89,_0x24d9dc;};const _0x19a4bc=_0x49eae4(0x17d),_0x283cb8=_0x49eae4(0x194),_0x3916e5='ns=0;i=47',_0x2195cf=_0x49eae4(0x151),_0x14b37c=_0x49eae4(0x1e3),_0x2ed4f5='ns=0;i=45',_0x2ad88d='ns=0;i=40';var _0x30758e;(function(_0x629d89){const _0xb99ec6=_0x49eae4;_0x629d89[_0x629d89[_0xb99ec6(0x1d4)]=0x0]=_0xb99ec6(0x1d4),_0x629d89[_0x629d89['Inverse']=0x1]=_0xb99ec6(0x196),_0x629d89[_0x629d89[_0xb99ec6(0x172)]=0x2]=_0xb99ec6(0x172),_0x629d89[_0x629d89[_0xb99ec6(0x127)]=0x3]='Invalid';}(_0x30758e||(_0x30758e={})));var _0x3fc322;(function(_0x1cf41a){const _0x329d5f=_0x49eae4;_0x1cf41a[_0x1cf41a[_0x329d5f(0x15b)]=0x0]=_0x329d5f(0x15b),_0x1cf41a[_0x1cf41a[_0x329d5f(0x208)]=0x1]=_0x329d5f(0x208),_0x1cf41a[_0x1cf41a['Variable']=0x2]=_0x329d5f(0x1e1),_0x1cf41a[_0x1cf41a[_0x329d5f(0x1fb)]=0x4]=_0x329d5f(0x1fb),_0x1cf41a[_0x1cf41a['ObjectType']=0x8]=_0x329d5f(0x128),_0x1cf41a[_0x1cf41a[_0x329d5f(0x12a)]=0x10]=_0x329d5f(0x12a),_0x1cf41a[_0x1cf41a[_0x329d5f(0x24a)]=0x20]=_0x329d5f(0x24a),_0x1cf41a[_0x1cf41a[_0x329d5f(0x12b)]=0x40]='DataType',_0x1cf41a[_0x1cf41a[_0x329d5f(0x146)]=0x80]=_0x329d5f(0x146);}(_0x3fc322||(_0x3fc322={})));var _0x4e5c91;(function(_0x30f068){const _0x2fe890=_0x49eae4;_0x30f068[_0x30f068[_0x2fe890(0x208)]=0x1]=_0x2fe890(0x208),_0x30f068[_0x30f068['Variable']=0x2]='Variable',_0x30f068[_0x30f068[_0x2fe890(0x1fb)]=0x4]='Method',_0x30f068[_0x30f068['ObjectType']=0x8]='ObjectType',_0x30f068[_0x30f068[_0x2fe890(0x12a)]=0x10]=_0x2fe890(0x12a),_0x30f068[_0x30f068[_0x2fe890(0x24a)]=0x20]=_0x2fe890(0x24a),_0x30f068[_0x30f068['DataType']=0x40]=_0x2fe890(0x12b),_0x30f068[_0x30f068[_0x2fe890(0x146)]=0x80]=_0x2fe890(0x146);}(_0x4e5c91||(_0x4e5c91={})));var _0xf986db;(function(_0x4924cc){const _0x4de11b=_0x49eae4;_0x4924cc[_0x4924cc['ReferenceType']=0x1]=_0x4de11b(0x24a),_0x4924cc[_0x4924cc['IsForward']=0x2]=_0x4de11b(0x228),_0x4924cc[_0x4924cc[_0x4de11b(0x24c)]=0x4]='NodeClass',_0x4924cc[_0x4924cc[_0x4de11b(0x200)]=0x8]=_0x4de11b(0x200),_0x4924cc[_0x4924cc[_0x4de11b(0x154)]=0x10]=_0x4de11b(0x154),_0x4924cc[_0x4924cc[_0x4de11b(0x1b5)]=0x20]='TypeDefinition';}(_0xf986db||(_0xf986db={})));function _0x9df3aa(_0x4d7f98){const _0x53e9c0=_0x49eae4;switch(_0x4d7f98){case _0x53e9c0(0x166):return _0x19a4bc;case _0x53e9c0(0x17f):return _0x2195cf;case _0x53e9c0(0x1e8):return _0x3916e5;case'HasChild':return _0x14b37c;case _0x53e9c0(0x19d):return _0x2ed4f5;case _0x53e9c0(0x1ee):return _0x2ad88d;}}const _0x163f3a=_0x255947=>{const _0x58510c=_0x49eae4;switch(_0x255947[_0x58510c(0x184)]){case'Object':if(_0x255947['referenceTypeId']===_0x19a4bc);if(_0x255947[_0x58510c(0x134)]===_0x283cb8||_0x255947[_0x58510c(0x1b7)]===_0x58510c(0x229))return{'icon':'fa-folder','color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':'fa-object-group','color':_0x58510c(0x15d)};case'Variable':if(_0x255947['referenceTypeId']===_0x3916e5)return{'icon':'fa-list-alt','color':'SteelBlue'};else return _0x255947[_0x58510c(0x1b7)]===_0x2195cf?{'icon':'fa-list-alt','color':_0x58510c(0x19b)}:{'icon':_0x58510c(0x177),'color':_0x58510c(0x141)};case _0x58510c(0x1fb):return{'icon':_0x58510c(0x211),'color':'SandyBrown'};case _0x58510c(0x128):return{'icon':_0x58510c(0x207),'color':_0x58510c(0x1ce)};case'VariableType':return{'icon':_0x58510c(0x178),'color':_0x58510c(0x1ce)};case _0x58510c(0x12b):return{'icon':'fa-text-width','color':_0x58510c(0x141)};}return{'icon':'fa-question','color':'grey'};},_0x6bd1fd=(_0x458b89,_0x5bf294,_0xe68926)=>_0x595b9b(void 0x0,[_0x458b89,_0x5bf294,_0xe68926],void 0x0,function*({endpointNode:_0x23218f,endpoint:_0x1cb50b,baseUrl:_0x4e1968},_0x18f760,_0x376779){const _0x5d43b5=_0x49eae4,_0x4635e3=_0x4e1968+_0x5d43b5(0x1f9),_0x10d34e=_0x4635e3+_0x5d43b5(0x155),_0x49056d=Object[_0x5d43b5(0x18b)](Object[_0x5d43b5(0x18b)]({},_0x376779),{'nodeId':_0x18f760,'resultMask':0x3f}),_0x172425=yield fetch(_0x10d34e,{'method':_0x5d43b5(0x145),'body':JSON[_0x5d43b5(0x165)]({'endpointNode':_0x23218f,'endpoint':_0x1cb50b,'browseDescription':_0x49056d}),'headers':{'Content-Type':_0x5d43b5(0x23d)}});if(_0x172425['status']!==0xc8)return console['log'](_0x5d43b5(0x1eb),_0x172425[_0x5d43b5(0x1d3)],_0x172425[_0x5d43b5(0x13f)]),{'references':[]};const _0x517656=yield _0x172425['json'](),_0x419b2a=_0x517656[_0x5d43b5(0x159)][_0x5d43b5(0x16c)]||[];return{'references':_0x419b2a};}),_0x20ea95={'referenceTypeId':_0x9df3aa(_0x49eae4(0x23c)),'includeSubtypes':!![],'browseDirection':_0x30758e[_0x49eae4(0x1d4)],'nodeClassMask':_0x3fc322[_0x49eae4(0x1e1)]|_0x3fc322[_0x49eae4(0x208)]|_0x3fc322[_0x49eae4(0x1fb)],'resultMask':0x3f},_0x1502f7={'referenceTypeId':_0x9df3aa(_0x49eae4(0x166)),'includeSubtypes':!![],'browseDirection':_0x30758e[_0x49eae4(0x1d4)],'nodeClassMask':_0x3fc322['Variable']|_0x3fc322['Object']|_0x3fc322['Method'],'resultMask':0x3f},_0x104891=(_0x1872fc,_0x5e0016)=>_0x595b9b(void 0x0,[_0x1872fc,_0x5e0016],void 0x0,function*({endpointNode:_0x5ac6f8,endpoint:_0x2e57b3,baseUrl:_0x5d4ecf},{nodeId:_0x40cd2c,rootNodeId:_0x101ce6,isType:_0x3a03ac}){const _0x2dae05=_0x49eae4,_0x1c1a45=_0x5d4ecf+'/opcua-for-node-red',_0x155d7a=_0x1c1a45+_0x2dae05(0x24b),_0x24c38e=yield fetch(_0x155d7a,{'method':'POST','body':JSON[_0x2dae05(0x165)]({'endpointNode':_0x5ac6f8,'endpoint':_0x2e57b3,'nodeId':_0x40cd2c,'rootNodeId':_0x101ce6,'isType':_0x3a03ac}),'headers':{'Content-Type':_0x2dae05(0x23d)}});if(_0x24c38e[_0x2dae05(0x1d3)]!==0xc8)return null;const _0x2d7a55=yield _0x24c38e[_0x2dae05(0x1e9)]();return _0x2d7a55[_0x2dae05(0x190)];}),_0xfb7640=(_0x1e3318,_0x290ad8)=>{const _0x4ded90=_0x49eae4;if(_0x1e3318[_0x4ded90(0x1c2)]!=='Good')return _0x1e3318[_0x4ded90(0x237)];switch(_0x290ad8){case _0x4ded90(0x190):return _0x1e3318[_0x4ded90(0x23a)];case'aliasedBrowsePath':return _0x1e3318[_0x4ded90(0x218)]||_0x1e3318['bp_indexed'];case _0x4ded90(0x212):return _0x1e3318[_0x4ded90(0x219)]||_0x1e3318[_0x4ded90(0x1aa)];case _0x4ded90(0x1c8):return _0x1e3318[_0x4ded90(0x1aa)];default:case _0x4ded90(0x20a):return _0x1e3318[_0x4ded90(0x20a)];}},_0x403246=_0x3d6090=>{const _0x3bd1d5=_0x49eae4;if(_0x3d6090[_0x3bd1d5(0x1c2)]!==_0x3bd1d5(0x20e))return _0x3bd1d5(0x1c7)+_0x3d6090[_0x3bd1d5(0x1c2)];else{let _0x18b464=[];return _0x18b464['push']('nodeId:\x20'+_0x3d6090[_0x3bd1d5(0x20a)]),_0x18b464[_0x3bd1d5(0x234)](_0x3bd1d5(0x180)+_0x3d6090[_0x3bd1d5(0x23a)]),_0x18b464[_0x3bd1d5(0x234)]('node\x20class:\x20'+_0x3fc322[_0x3d6090[_0x3bd1d5(0x184)]]),_0x3d6090[_0x3bd1d5(0x1aa)]&&_0x18b464[_0x3bd1d5(0x234)]('nsu\x20nodeId:\x20'+_0x3d6090[_0x3bd1d5(0x1aa)]),_0x3d6090[_0x3bd1d5(0x219)]&&_0x18b464['push']('aliased\x20NodeId:\x20'+_0x3d6090[_0x3bd1d5(0x219)]),_0x3d6090[_0x3bd1d5(0x23a)]&&_0x18b464['push'](_0x3bd1d5(0x164)+_0x3d6090[_0x3bd1d5(0x218)]),_0x18b464['join']('\x0a');}};function _0x5dc60e(_0x8fe451){const _0x38a7ba=_0x49eae4;if(_0x8fe451['match'](/^nsu=/))return'nsuNodeID';if(_0x8fe451[_0x38a7ba(0x223)](/^(ns=.*;)?(i|b|s|g)=/))return _0x38a7ba(0x20a);if(_0x8fe451[_0x38a7ba(0x223)](/^nsa=/))return _0x38a7ba(0x212);if(_0x8fe451['match'](/^(\/|\.)[0-9]+:/))return'browsePath';if(_0x8fe451['match'](/^(\/|\.).*:/))return _0x38a7ba(0x190);}function _0x33dabb(_0x51bf2b){const _0x55b4bc=_0x49eae4,_0x50dd9f=_0x5dc60e(_0x51bf2b);switch(_0x50dd9f){case'nodeId':return'n';case _0x55b4bc(0x212):return'na';case _0x55b4bc(0x1c8):return _0x55b4bc(0x1ec);case _0x55b4bc(0x190):return'b';case'aliasedBrowsePath':return'ab';default:return't';}}function _0x466fcc(_0x234843){const _0x6a2982=_0x49eae4;let _0x103d71;switch(_0x234843){case'n':_0x103d71=_0x6a2982(0x20a);break;case'na':_0x103d71=_0x6a2982(0x212);break;case _0x6a2982(0x1ec):_0x103d71=_0x6a2982(0x1c8);break;case'b':_0x103d71=_0x6a2982(0x190);break;case'ab':_0x103d71=_0x6a2982(0x1ba);break;}return _0x103d71;}const _0x54a2c5=(_0x29156e,_0x788b6d)=>_0x595b9b(void 0x0,[_0x29156e,_0x788b6d],void 0x0,function*({endpointNode:_0x12451e,endpoint:_0x132508,baseUrl:_0x40cd8},_0x5bceff){const _0x51a99b=_0x49eae4,_0xf936fa=_0x40cd8+_0x51a99b(0x1f9),_0x15b8a4=_0xf936fa+_0x51a99b(0x14f),_0x3213db=_0x12451e['id'],_0x586317=RED[_0x51a99b(0x1f8)][_0x51a99b(0x1cc)](_0x3213db);console[_0x51a99b(0x12f)](_0x586317[_0x51a99b(0x1d5)]),_0x586317[_0x51a99b(0x1d5)];const _0xc829a8=_0x12451e['namespaceAliases'],_0x3ae76a=yield fetch(_0x15b8a4,{'method':_0x51a99b(0x145),'body':JSON[_0x51a99b(0x165)]({'endpointNode':_0x12451e,'endpoint':_0x132508,'nodeId':_0x5bceff,'namespaceAliases':_0xc829a8}),'headers':{'Content-Type':'application/json'}}),_0x50c3f1=yield _0x3ae76a['json']();return{'json':_0x50c3f1,'data':_0x3ae76a};}),_0x3bf899=(_0x5e54d4,_0x28b2b4,_0x205aca,_0x51407a)=>_0x595b9b(void 0x0,[_0x5e54d4,_0x28b2b4,_0x205aca,_0x51407a],void 0x0,function*({endpointNode:_0x51cbba,endpoint:_0x5a19f2,baseUrl:_0x2a09e1},_0x2f3197,_0x3c7f8f,_0x1e61d6){const _0x4e403b=_0x49eae4,_0x2f4676=_0x3c7f8f[_0x4e403b(0x12c)](),{json:_0x59ce1f,data:_0x10c056}=yield _0x54a2c5({'endpointNode':_0x51cbba,'endpoint':_0x5a19f2,'baseUrl':_0x2a09e1},_0x2f4676),_0x26e71e=(_0x35b9a6,_0xc1a483)=>{const _0x970038=_0x4e403b;_0x1e61d6[_0x970038(0x143)](_0x35b9a6)['addClass'](_0x970038(0x21c))['addClass'](_0xc1a483),_0x1e61d6[_0x970038(0x132)](),setTimeout(()=>{_0x1e61d6['removeClass'](_0xc1a483),_0x1e61d6['hide']();},0xbb8);};if(_0x10c056[_0x4e403b(0x1d3)]!==0xc8)return _0x26e71e(_0x4e403b(0x14e)+_0x2f4676,_0x4e403b(0x163)),![];else{if(_0x59ce1f[_0x4e403b(0x1c2)]['match'](/Good/)){const _0x2127fb=_0x403246(_0x59ce1f);_0x3c7f8f['attr'](_0x4e403b(0x1ed),_0x2127fb);const _0x2876a3=_0xfb7640(_0x59ce1f,_0x2f3197);return _0x3c7f8f[_0x4e403b(0x12c)](_0x2876a3),_0x3c7f8f[_0x4e403b(0x247)]('change'),_0x26e71e(_0x4e403b(0x20e),'ok'),!![];}else return _0x3c7f8f['val'](''+_0x2f4676),_0x26e71e(_0x59ce1f[_0x4e403b(0x1c2)]+'\x20'+_0x10c056[_0x4e403b(0x13f)],_0x4e403b(0x163)),![];}});function _0x480bfb(_0xf3f720,_0x48564c){return _0x595b9b(this,void 0x0,void 0x0,function*(){const _0x5bde4f=_0x21eb,_0x4f8b38=_0xf3f720[_0x5bde4f(0x1a6)]('value'),_0x29d111=yield _0x6bd1fd(_0x48564c,_0x4f8b38,_0x20ea95),_0xd57b14=yield _0x6bd1fd(_0x48564c,_0x4f8b38,_0x1502f7);return{'references':[..._0x29d111[_0x5bde4f(0x16c)],..._0xd57b14['references']]};});}const _0x450dcc={'referenceTypeId':_0x9df3aa('HasSubtype'),'includeSubtypes':!![],'browseDirection':_0x30758e['Forward'],'nodeClassMask':_0x3fc322[_0x49eae4(0x24a)]|_0x3fc322['ObjectType']|_0x3fc322[_0x49eae4(0x12b)]|_0x3fc322[_0x49eae4(0x12a)],'resultMask':0x3f};function _0x520fae(_0x36bc0b,_0x3f6cea){return _0x595b9b(this,void 0x0,void 0x0,function*(){const _0x92a350=_0x21eb,_0x1843fb=_0x36bc0b[_0x92a350(0x1a6)](_0x92a350(0x142)),_0x491050=yield _0x6bd1fd(_0x3f6cea,_0x1843fb,_0x450dcc);return _0x491050;});}const _0x5ec0aa=_0x378de9=>{const _0x4574d3=_0x49eae4;var _0xd93024,_0x258b3f,_0x71072d,_0x487d7c;if(!_0x378de9||!_0x378de9[_0x4574d3(0x20a)]){const _0xabba18=$('<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>');return _0xabba18;}const _0x33c24b=_0x378de9[_0x4574d3(0x20a)][_0x4574d3(0x161)](),_0x275f5b=((_0xd93024=_0x378de9[_0x4574d3(0x1b9)])===null||_0xd93024===void 0x0?void 0x0:_0xd93024['text'])||((_0x258b3f=_0x378de9['browseName'])===null||_0x258b3f===void 0x0?void 0x0:_0x258b3f[_0x4574d3(0x226)])||_0x378de9[_0x4574d3(0x20a)]['toString'](),{icon:_0x21aa0b,color:_0x25c1f1}=_0x163f3a(_0x378de9),_0x35654d='('+_0x378de9[_0x4574d3(0x20a)][_0x4574d3(0x161)]()+')\x20'+(((_0x71072d=_0x378de9['browseName'])===null||_0x71072d===void 0x0?void 0x0:_0x71072d[_0x4574d3(0x226)])||((_0x487d7c=_0x378de9[_0x4574d3(0x1b9)])===null||_0x487d7c===void 0x0?void 0x0:_0x487d7c[_0x4574d3(0x143)])||''),_0x374d5c=$('<li\x20key=\x22'+_0x378de9['nodeId']['toString']()+_0x4574d3(0x23f)+_0x35654d+_0x4574d3(0x1a9)+_0x21aa0b+_0x4574d3(0x14a)+_0x25c1f1+_0x4574d3(0x221)+_0x275f5b+_0x4574d3(0x131));return _0x374d5c['addClass']('expandable'),_0x374d5c[_0x4574d3(0x1a6)]('value',_0x33c24b),_0x374d5c[_0x4574d3(0x1a6)]('reference',_0x378de9),_0x374d5c;},_0x21f60c=(_0x4ed3d9,_0x487358)=>{const _0x63fb2f=_0x49eae4;return _0x487358[_0x63fb2f(0x241)]('li[key=\x22'+_0x4ed3d9+'\x22]');},_0x1cc7fc=(_0x18f322,_0x3335a2)=>{const _0x87dbd0=_0x49eae4;_0x18f322['$tree']['find'](_0x87dbd0(0x126))['removeClass'](_0x87dbd0(0x248)),_0x3335a2['find'](_0x87dbd0(0x179))[_0x87dbd0(0x147)]('selected');},_0x30351a=(_0x57dc72,_0x3583bd,_0x3d7ea9)=>_0x595b9b(void 0x0,void 0x0,void 0x0,function*(){const _0x133f28=_0x49eae4;let _0x2f6371=_0x3d7ea9[_0x133f28(0x1e5)](_0x133f28(0x1c6));_0x3583bd[_0x133f28(0x17e)][_0x133f28(0x230)]||[];const _0x5019c6=_0x3583bd[_0x133f28(0x18c)]||[];if(_0x5019c6[_0x133f28(0x20b)]===0x0)return;for(const _0x52d93e of _0x5019c6){_0x2f6371['hasClass'](_0x133f28(0x1dd))&&(yield _0x15e0b3(_0x57dc72,_0x2f6371));const _0x224b81=_0x21f60c(_0x52d93e,_0x2f6371);if(_0x224b81[_0x133f28(0x20b)]===0x0)return;_0x2f6371=_0x224b81;}_0x1cc7fc(_0x57dc72,_0x2f6371),_0x2c5c54(_0x57dc72[_0x133f28(0x157)],_0x2f6371);});function _0x2c5c54(_0x5639af,_0x81c694){const _0x1c96ee=_0x49eae4,_0x36ad40=_0x81c694[_0x1c96ee(0x232)]()['top'],_0x44e5e4=_0x5639af[_0x1c96ee(0x22e)]();if(_0x44e5e4==undefined)return;const _0x294aad=_0x44e5e4+_0x36ad40-_0x5639af[_0x1c96ee(0x1f7)]()/0x2+_0x81c694[_0x1c96ee(0x1f7)]()/0x2;_0x5639af[_0x1c96ee(0x162)]({'scrollTop':_0x294aad},0x1f4);}const _0x2d78c7=(_0x200329,_0x5dcaa1)=>_0x595b9b(void 0x0,void 0x0,void 0x0,function*(){const _0x37c2ae=_0x49eae4,_0x48bd87=_0x200329[_0x37c2ae(0x1cd)]['val'](),_0x517058={'nodeId':_0x48bd87,'rootNodeId':_0x5dcaa1['nodeId'],'isType':_0x200329[_0x37c2ae(0x16a)][_0x37c2ae(0x246)]||![]},_0x2fa92d=_0xab3a58(_0x200329),_0x1af616=yield _0x104891(_0x2fa92d,_0x517058);if(!_0x1af616)return;yield _0x30351a(_0x200329,_0x1af616,_0x200329[_0x37c2ae(0x1f0)]);});function _0x7004c1(_0xea528e,_0x4532de,_0x3a27f2,_0x52d0a5){return _0x595b9b(this,void 0x0,void 0x0,function*(){const _0x3a91c9=_0x21eb;if(_0x4532de['hasClass'](_0x3a91c9(0x1af))){console[_0x3a91c9(0x12f)](_0x3a91c9(0x240));return;}if(_0x4532de[_0x3a91c9(0x1e4)](_0x3a91c9(0x16b))){console[_0x3a91c9(0x12f)]('already\x20loading');return;}_0x4532de[_0x3a91c9(0x147)](_0x3a91c9(0x16b)),_0x4532de[_0x3a91c9(0x239)](_0x3a91c9(0x198));try{_0x4532de[_0x3a91c9(0x1e5)]('ul')[_0x3a91c9(0x1c9)]();const {references:_0xb17365}=yield _0x3a27f2(_0x4532de,_0x52d0a5);_0xb17365[_0x3a91c9(0x181)]((_0x31dc27,_0x2255a6)=>{const _0x450c4c=_0x3a91c9;var _0x5593f7,_0x12b174;return(((_0x5593f7=_0x31dc27[_0x450c4c(0x220)])===null||_0x5593f7===void 0x0?void 0x0:_0x5593f7[_0x450c4c(0x226)])||'')[_0x450c4c(0x215)](((_0x12b174=_0x2255a6[_0x450c4c(0x220)])===null||_0x12b174===void 0x0?void 0x0:_0x12b174[_0x450c4c(0x226)])||'');});for(const _0x36fcf9 of _0xb17365){if(_0xea528e[_0x3a91c9(0x16a)][_0x3a91c9(0x17c)]&&!_0xea528e[_0x3a91c9(0x16a)]['filter'](_0x36fcf9))continue;const _0x974acf=_0x5ec0aa(_0x36fcf9);_0x4532de['children']('ul')['append'](_0x974acf);}_0x4532de[_0x3a91c9(0x147)]('fetched');}catch(_0x2c1ae6){_0x4532de[_0x3a91c9(0x1e5)]('ul')['append'](_0x3a91c9(0x13d)+_0x2c1ae6[_0x3a91c9(0x1ad)]+_0x3a91c9(0x1b2)),console[_0x3a91c9(0x12f)](_0x3a91c9(0x1ef),_0x2c1ae6);}_0x4532de[_0x3a91c9(0x241)](_0x3a91c9(0x1ae))['remove'](),_0x4532de[_0x3a91c9(0x1bf)](_0x3a91c9(0x16b));});}function _0xab3a58(_0x49b969){const _0x375c29=_0x49eae4,_0x745021={'baseUrl':_0x49b969[_0x375c29(0x16a)][_0x375c29(0x1bd)],'endpointNode':typeof _0x49b969[_0x375c29(0x16a)]['endpointNode']==='function'?_0x49b969[_0x375c29(0x16a)][_0x375c29(0x1db)]():_0x49b969[_0x375c29(0x16a)]['endpointNode'],'endpoint':typeof _0x49b969[_0x375c29(0x16a)]['endpoint']===_0x375c29(0x242)?_0x49b969[_0x375c29(0x16a)][_0x375c29(0x1d6)]():_0x49b969[_0x375c29(0x16a)]['endpoint']};return _0x745021;}function _0x15e0b3(_0x52351a,_0x356899){return _0x595b9b(this,void 0x0,void 0x0,function*(){const _0x1a50a0=_0x21eb;if(_0x356899[_0x1a50a0(0x1e4)](_0x1a50a0(0x1af))){_0x356899['removeClass'](_0x1a50a0(0x1dd))[_0x1a50a0(0x147)](_0x1a50a0(0x1c3)),_0x356899['children']('ul')['toggle']();return;}const _0xe99e93=_0xab3a58(_0x52351a),_0x4c6dcf=!_0x52351a[_0x1a50a0(0x16a)]['isTypeRef']?_0x480bfb:_0x520fae;try{yield _0x7004c1(_0x52351a,_0x356899,_0x4c6dcf,_0xe99e93),_0x356899[_0x1a50a0(0x1bf)](_0x1a50a0(0x1dd))[_0x1a50a0(0x147)]('expanded');}catch(_0x4c47a6){_0x356899[_0x1a50a0(0x1bf)](_0x1a50a0(0x1dd))[_0x1a50a0(0x147)](_0x1a50a0(0x1c3)),console[_0x1a50a0(0x12f)](_0x1a50a0(0x138),_0x4c47a6);}});}const _0x1076ae={'browseName':{'namespaceIndex':0x0,'name':'Objects'},'nodeClass':_0x49eae4(0x208),'nodeId':_0x49eae4(0x170),'displayName':{'text':'Objects'},'typeDefinition':_0x283cb8},_0x11bf98=()=>{const _0x3bc56b=_0x49eae4;$[_0x3bc56b(0x1c4)]('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>_0x1076ae,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x595b9b(this,void 0x0,void 0x0,function*(){const _0xd4c630=_0x21eb,_0x2dc2fc=this;if(_0x2dc2fc[_0xd4c630(0x1d9)]==undefined){const _0x1abe92=typeof _0x2dc2fc['options']['parentNode']===_0xd4c630(0x242)?_0x2dc2fc['options'][_0xd4c630(0x1f6)]['call'](_0x2dc2fc):_0x2dc2fc[_0xd4c630(0x16a)]['parentNode'];if(_0x1abe92 instanceof Promise){const _0xa110f3=yield _0x1abe92;_0x2dc2fc['__parentNode']=_0xa110f3;}else _0x2dc2fc[_0xd4c630(0x1d9)]=_0x1abe92;}return _0x2dc2fc[_0xd4c630(0x1d9)]||_0x1076ae;});},'reset'(){return _0x595b9b(this,void 0x0,void 0x0,function*(){const _0x4a9063=_0x21eb,_0x4b4f3a=this,_0x1f1491=_0x4b4f3a;_0x1f1491[_0x4a9063(0x1d9)]=undefined,_0x4b4f3a[_0x4a9063(0x1f0)][_0x4a9063(0x1c9)]();const _0x18d72c=yield this[_0x4a9063(0x238)](),_0x330e5c=_0x5ec0aa(_0x18d72c);_0x4b4f3a['$tree'][_0x4a9063(0x239)](_0x330e5c),_0x4b4f3a['currentParent']=_0x18d72c;});},'verify'(_0xdeae0f){const _0x2336e2=_0x3bc56b,_0x41cc6c=this,_0x340dbf=_0xab3a58(_0x41cc6c);_0x3bf899(_0x340dbf,_0xdeae0f,_0x41cc6c[_0x2336e2(0x1cd)],_0x41cc6c[_0x2336e2(0x197)])[_0x2336e2(0x20f)](_0x32c74b=>{const _0x18ac56=_0x2336e2;!_0x32c74b?_0x41cc6c[_0x18ac56(0x140)][_0x18ac56(0x147)](_0x18ac56(0x1e6)):_0x41cc6c['$combo']['removeClass'](_0x18ac56(0x1e6));});},'_hideMenu'(_0x16750b){const _0x4a8716=_0x3bc56b,_0x4f3c8b=this;$(document)['off'](_0x4a8716(0x209)),_0x16750b[_0x4a8716(0x204)](),_0x16750b['css']({'height':_0x4a8716(0x174)});if(_0x16750b[_0x4a8716(0x15e)][_0x4a8716(0x168)]){var _0x22f5b8=[];_0x16750b[_0x4a8716(0x241)](_0x4a8716(0x224))['each'](function(){const _0x1dfd9c=_0x4a8716;$(this)[_0x1dfd9c(0x14d)](_0x1dfd9c(0x13a))&&_0x22f5b8[_0x1dfd9c(0x234)]($(this)[_0x1dfd9c(0x1a6)]('value'));}),_0x16750b['callback'](_0x22f5b8);}_0x4f3c8b[_0x4a8716(0x236)]['is'](':visible')?_0x4f3c8b[_0x4a8716(0x1cd)][_0x4a8716(0x247)](_0x4a8716(0x136)):_0x4f3c8b[_0x4a8716(0x16f)][_0x4a8716(0x247)](_0x4a8716(0x136));},'_createMenu'(_0x1395a0,_0x3149ba,_0x43717d){const _0x4e1da4=_0x3bc56b;var _0x365053=this;const _0x964428=$(_0x4e1da4(0x19a))[_0x4e1da4(0x147)](_0x4e1da4(0x1fc));return _0x964428['opts']=_0x3149ba,_0x964428[_0x4e1da4(0x23e)]=_0x43717d,_0x1395a0[_0x4e1da4(0x214)](_0x4a59f9=>{const _0x198fe9=_0x4e1da4;typeof _0x4a59f9===_0x198fe9(0x245)&&(_0x4a59f9={'value':_0x4a59f9,'label':_0x4a59f9});var _0x3a7d1b=$('<a\x20href=\x22#\x22></a>')['attr']('value',_0x4a59f9[_0x198fe9(0x142)])[_0x198fe9(0x249)](_0x964428);_0x4a59f9['label']&&_0x3a7d1b[_0x198fe9(0x143)](_0x4a59f9[_0x198fe9(0x1da)]);_0x4a59f9['title']&&_0x3a7d1b['prop']('title',_0x4a59f9['title']);if(_0x4a59f9['icon']){if(_0x4a59f9[_0x198fe9(0x15f)][_0x198fe9(0x19c)]('<')===0x0)$(_0x4a59f9[_0x198fe9(0x15f)])[_0x198fe9(0x243)](_0x3a7d1b);else _0x4a59f9[_0x198fe9(0x15f)][_0x198fe9(0x19c)]('/')!==-0x1?$('<i>',{'class':_0x198fe9(0x16e),'style':_0x198fe9(0x1a1)+_0x4a59f9['icon']+_0x198fe9(0x1a5)+_0x4a59f9[_0x198fe9(0x15f)]+');'})[_0x198fe9(0x243)](_0x3a7d1b):$(_0x198fe9(0x135),{'class':_0x198fe9(0x1ab)+_0x4a59f9[_0x198fe9(0x15f)]})[_0x198fe9(0x243)](_0x3a7d1b);}else _0x3a7d1b[_0x198fe9(0x1c5)]({'paddingLeft':'18px'});!_0x4a59f9[_0x198fe9(0x15f)]&&!_0x4a59f9[_0x198fe9(0x1da)]&&_0x3a7d1b[_0x198fe9(0x143)](_0x4a59f9[_0x198fe9(0x142)]);var _0xa00d02;_0x3149ba['multiple']&&(_0xa00d02=$(_0x198fe9(0x16d))[_0x198fe9(0x1c5)](_0x198fe9(0x17a),_0x198fe9(0x1ff))['data'](_0x198fe9(0x142),_0x4a59f9['value'])['prependTo'](_0x3a7d1b)['on'](_0x198fe9(0x225),function(_0x3314fb){const _0x459ceb=_0x198fe9;_0x3314fb[_0x459ceb(0x169)]();})),_0x3a7d1b['on'](_0x198fe9(0x187),function(_0x46ba0a){const _0x180a02=_0x198fe9;_0x46ba0a[_0x180a02(0x169)](),_0x46ba0a[_0x180a02(0x1f5)](),!_0x3149ba['multiple']?(_0x43717d(_0x4a59f9[_0x180a02(0x142)]),_0x365053[_0x180a02(0x1cf)](_0x964428)):_0xa00d02[_0x180a02(0x14d)](_0x180a02(0x13a),!_0xa00d02['prop'](_0x180a02(0x13a)));});}),_0x964428[_0x4e1da4(0x1c5)]({'display':_0x4e1da4(0x1ff)}),_0x964428['on'](_0x4e1da4(0x1b4),function(_0x43f8f1){const _0x5f15e6=_0x4e1da4;if(_0x43f8f1['keyCode']===0x28)_0x43f8f1['preventDefault'](),$(this)['children'](_0x5f15e6(0x18a))[_0x5f15e6(0x14c)]()[_0x5f15e6(0x247)](_0x5f15e6(0x136));else{if(_0x43f8f1[_0x5f15e6(0x15c)]===0x26)_0x43f8f1['preventDefault'](),$(this)[_0x5f15e6(0x1e5)](_0x5f15e6(0x18a))[_0x5f15e6(0x231)]()['trigger'](_0x5f15e6(0x136));else _0x43f8f1[_0x5f15e6(0x15c)]===0x1b&&(_0x43f8f1['preventDefault'](),_0x365053[_0x5f15e6(0x1cf)](_0x964428));}_0x43f8f1[_0x5f15e6(0x1f5)]();}),_0x964428;},'disarmClick':![],'_showMenu'(_0x37e9a0,_0x4738ca){const _0x53aa42=_0x3bc56b;if(this[_0x53aa42(0x171)]){this[_0x53aa42(0x171)]=![];return;}var _0x5e29ae=this,_0x5c044c=_0x4738ca['offset'](),_0x57d9c3=_0x4738ca[_0x53aa42(0x1f7)](),_0x37be94=_0x37e9a0[_0x53aa42(0x1f7)](),_0x2a0d9a=_0x57d9c3+_0x5c044c[_0x53aa42(0x210)];_0x2a0d9a+_0x37be94-$(document)[_0x53aa42(0x22e)]()>$(window)['height']()&&(_0x2a0d9a-=_0x2a0d9a+_0x37be94-$(window)[_0x53aa42(0x1f7)]()+0x5),_0x2a0d9a<0x0&&(_0x37e9a0[_0x53aa42(0x1f7)](_0x37be94+_0x2a0d9a),_0x2a0d9a=0x0),_0x37e9a0['css']({'top':_0x2a0d9a+'px','left':_0x5c044c[_0x53aa42(0x150)]+'px'}),_0x37e9a0[_0x53aa42(0x149)](0x64),this['_delay'](function(){const _0x2f5450=_0x53aa42;_0x5e29ae[_0x2f5450(0x22c)][_0x2f5450(0x147)]('red-ui-typedInput-focus'),$(document)['on'](_0x2f5450(0x209),function(_0x6a6c1e){const _0x132b95=_0x2f5450;!$(_0x6a6c1e['target'])[_0x132b95(0x23b)](_0x37e9a0)[_0x132b95(0x20b)]&&_0x5e29ae[_0x132b95(0x1cf)](_0x37e9a0),$(_0x6a6c1e[_0x132b95(0x20c)])['closest'](_0x4738ca)['length']&&(_0x5e29ae[_0x132b95(0x171)]=!![],_0x6a6c1e[_0x132b95(0x169)]());});});},'_showTypeMenu'(){const _0x262167=_0x3bc56b,_0x59b2ef=this;this[_0x262167(0x21a)](_0x59b2ef[_0x262167(0x1fa)],_0x59b2ef[_0x262167(0x140)]),_0x59b2ef[_0x262167(0x157)][_0x262167(0x204)]();const _0x4dd7d9=_0x59b2ef[_0x262167(0x21f)];var _0x1911d4=_0x59b2ef['$menu']['find'](_0x262167(0x1f4)+_0x4dd7d9+'\x27');setTimeout(function(){const _0x589aba=_0x262167;_0x1911d4[_0x589aba(0x247)](_0x589aba(0x136));},0x78);},'_initMenu'(){const _0xe8c661=_0x3bc56b,_0x960c68=this;_0x960c68[_0xe8c661(0x16f)][_0xe8c661(0x1a4)](_0xe8c661(0x21b),-0x1),_0x960c68[_0xe8c661(0x16f)]['on'](_0xe8c661(0x152),function(_0x53897b){const _0x583186=_0xe8c661;_0x53897b[_0x583186(0x169)]();});_0x960c68['$menu']&&_0x960c68[_0xe8c661(0x1fa)][_0xe8c661(0x216)]();const _0xfcc393=[{'label':_0xe8c661(0x143),'value':'t','title':_0xe8c661(0x22d),'icon':_0xe8c661(0x1b3)},{'label':_0xe8c661(0x235),'value':_0xe8c661(0x13e),'title':_0xe8c661(0x158),'icon':_0xe8c661(0x175)},{'label':_0xe8c661(0x12e),'value':'n','icon':_0xe8c661(0x22b)},{'label':'Aliased\x20NodeId','value':'na','icon':_0xe8c661(0x201)},{'label':_0xe8c661(0x153),'value':_0xe8c661(0x1ec),'icon':_0xe8c661(0x1c1)},{'label':_0xe8c661(0x21e),'value':'b','icon':'<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> '},{'label':_0xe8c661(0x188),'value':'ab','icon':_0xe8c661(0x1a0)}],_0x19dedb=_0x33dabb(_0x960c68[_0xe8c661(0x1cd)][_0xe8c661(0x12c)]()),_0x23fd3f=_0xfcc393['find'](_0x203a70=>_0x203a70[_0xe8c661(0x142)]===_0x19dedb);_0x960c68[_0xe8c661(0x206)][_0xe8c661(0x1c9)]()['append'](_0xe8c661(0x195)+((_0x23fd3f===null||_0x23fd3f===void 0x0?void 0x0:_0x23fd3f[_0xe8c661(0x1ed)])||'')+_0xe8c661(0x148)+((_0x23fd3f===null||_0x23fd3f===void 0x0?void 0x0:_0x23fd3f[_0xe8c661(0x15f)])||'')+_0xe8c661(0x233)),_0x960c68['selectedMenuItem']=_0x19dedb;const _0x26cccb=this;_0x960c68['$menu']=this[_0xe8c661(0x1f1)](_0xfcc393,{},_0x259cde=>{const _0x16e95f=_0xe8c661,_0xaf8285=_0x466fcc(_0x259cde);_0xaf8285&&_0x26cccb['verify'](_0xaf8285);const _0x1c2dc7=_0xfcc393['find'](_0x2222aa=>_0x2222aa[_0x16e95f(0x142)]===_0x259cde);_0x960c68['selectedMenuItem']=_0x259cde,_0x960c68['$selectLabel'][_0x16e95f(0x1c9)]()['append'](_0x16e95f(0x195)+((_0x1c2dc7===null||_0x1c2dc7===void 0x0?void 0x0:_0x1c2dc7[_0x16e95f(0x1ed)])||'')+_0x16e95f(0x148)+((_0x1c2dc7===null||_0x1c2dc7===void 0x0?void 0x0:_0x1c2dc7[_0x16e95f(0x15f)])||'')+_0x16e95f(0x233));}),_0x960c68[_0xe8c661(0x1fa)]['appendTo'](document[_0xe8c661(0x1d8)]),_0x960c68['$menu']['hide'](),_0x960c68[_0xe8c661(0x16f)]['show']();},'mode'(){const _0x222a17=this;return _0x466fcc(_0x222a17['selectedMenuItem']);},'_create'(){const _0x227e5f=_0x3bc56b,_0x2ad26c=this;_0x2ad26c[_0x227e5f(0x1cd)]=this[_0x227e5f(0x18d)],_0x2ad26c[_0x227e5f(0x1cd)][_0x227e5f(0x1c5)]('border',_0x227e5f(0x1ff)),_0x2ad26c[_0x227e5f(0x236)]=_0x2ad26c[_0x227e5f(0x1cd)][_0x227e5f(0x1dc)]('<div>')['parent']()[_0x227e5f(0x147)](_0x227e5f(0x1e7)),_0x2ad26c[_0x227e5f(0x140)]=$(_0x227e5f(0x1bc)),_0x2ad26c[_0x227e5f(0x140)][_0x227e5f(0x147)](_0x227e5f(0x1a8)),_0x2ad26c[_0x227e5f(0x1cd)][_0x227e5f(0x156)](_0x2ad26c[_0x227e5f(0x140)]),_0x2ad26c['$inputGroup']=$(_0x227e5f(0x1bc))[_0x227e5f(0x147)](_0x227e5f(0x22f)),_0x2ad26c['$combo']['append'](_0x2ad26c[_0x227e5f(0x1c0)]),_0x2ad26c['$inputGroup'][_0x227e5f(0x239)](_0x2ad26c[_0x227e5f(0x1cd)]),_0x2ad26c[_0x227e5f(0x202)]=$(_0x227e5f(0x1a3)),_0x2ad26c['$input'][_0x227e5f(0x13c)](_0x2ad26c['$toggleTreeBtn']),_0x2ad26c[_0x227e5f(0x202)]['on'](_0x227e5f(0x187),function(){return _0x595b9b(this,void 0x0,void 0x0,function*(){const _0x57dfd4=_0x21eb;var _0x35bf4a;let _0x1fa7a5=![],_0x4b6168;!_0x2ad26c[_0x57dfd4(0x157)]['is'](':visible')&&(_0x2ad26c[_0x57dfd4(0x197)][_0x57dfd4(0x204)](),_0x4b6168=yield _0x2ad26c[_0x57dfd4(0x238)](),(_0x4b6168!==_0x2ad26c[_0x57dfd4(0x13b)]||((_0x35bf4a=_0x2ad26c[_0x57dfd4(0x13b)])===null||_0x35bf4a===void 0x0?void 0x0:_0x35bf4a[_0x57dfd4(0x20a)])!==_0x4b6168[_0x57dfd4(0x20a)])&&(yield _0x2ad26c[_0x57dfd4(0x160)]()),_0x1fa7a5=!![]),_0x2ad26c[_0x57dfd4(0x157)]['toggle'](),_0x1fa7a5&&(yield _0x2d78c7(_0x2ad26c,_0x4b6168));});}),_0x2ad26c['$verifyBtn']=$('<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>'),_0x2ad26c[_0x227e5f(0x1cd)][_0x227e5f(0x13c)](_0x2ad26c[_0x227e5f(0x1e0)]),_0x2ad26c[_0x227e5f(0x1e0)]['on']('click',()=>{const _0xb82e78=_0x227e5f,_0xbf9ffe=_0x2ad26c[_0xb82e78(0x1a7)]();if(!_0xbf9ffe)return;this[_0xb82e78(0x1b0)](_0xbf9ffe);});const _0x539e28=_0x456f73=>_0x595b9b(this,void 0x0,void 0x0,function*(){const _0x25ffec=_0x227e5f,_0x195572=this,_0x4b6cc6=_0x195572['mode']();if(!_0x4b6cc6)return;const _0x199817=_0xab3a58(_0x195572),{data:_0x26725d,json:_0x1a35dc}=yield _0x54a2c5(_0x199817,_0x456f73);if(_0x26725d[_0x25ffec(0x1d3)]!==0xc8)return;if(_0x1a35dc[_0x25ffec(0x1c2)][_0x25ffec(0x223)](/Good/)){const _0x3bec90=_0xfb7640(_0x1a35dc,_0x4b6cc6);_0x195572[_0x25ffec(0x1cd)]['val'](_0x3bec90),_0x195572[_0x25ffec(0x1cd)][_0x25ffec(0x247)](_0x25ffec(0x21d));}});{_0x2ad26c[_0x227e5f(0x22c)]=$(_0x227e5f(0x19a)),_0x2ad26c[_0x227e5f(0x1cd)]['before'](_0x2ad26c['$uiSelect']),_0x2ad26c[_0x227e5f(0x16f)]=$(_0x227e5f(0x19e))[_0x227e5f(0x243)](_0x2ad26c['$uiSelect']),$(_0x227e5f(0x1ea))[_0x227e5f(0x167)](!![])[_0x227e5f(0x249)](_0x2ad26c['$selectTrigger']),_0x2ad26c['$selectTrigger']['on'](_0x227e5f(0x187),function(_0x40caf5){const _0x706ab3=_0x227e5f;_0x40caf5[_0x706ab3(0x169)](),_0x40caf5['stopPropagation'](),_0x2ad26c[_0x706ab3(0x1a2)]();}),_0x2ad26c[_0x227e5f(0x16f)]['on'](_0x227e5f(0x1b4),function(_0x1e447f){const _0x42a55d=_0x227e5f;_0x1e447f[_0x42a55d(0x15c)]===0x28&&_0x2ad26c[_0x42a55d(0x1a2)](),_0x1e447f[_0x42a55d(0x1f5)]();})['on'](_0x227e5f(0x136),function(){const _0x3589d3=_0x227e5f;_0x2ad26c[_0x3589d3(0x22c)][_0x3589d3(0x147)](_0x3589d3(0x1b1));})['on'](_0x227e5f(0x137),function(){const _0x275e5c=_0x227e5f;_0x2ad26c['$uiSelect'][_0x275e5c(0x1bf)](_0x275e5c(0x1b1));}),_0x2ad26c[_0x227e5f(0x206)]=$(_0x227e5f(0x1e2))[_0x227e5f(0x249)](_0x2ad26c['$selectTrigger']);}this[_0x227e5f(0x1ca)]();!_0x2ad26c[_0x227e5f(0x1cd)]['attr'](_0x227e5f(0x182))&&_0x2ad26c[_0x227e5f(0x1cd)][_0x227e5f(0x1a4)](_0x227e5f(0x182),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20');_0x2ad26c[_0x227e5f(0x197)]=$(_0x227e5f(0x1b8)),_0x2ad26c[_0x227e5f(0x197)]['hide'](),_0x2ad26c[_0x227e5f(0x140)][_0x227e5f(0x239)](_0x2ad26c['$info']),_0x2ad26c[_0x227e5f(0x157)]=$(_0x227e5f(0x1bc))[_0x227e5f(0x147)](_0x227e5f(0x189))[_0x227e5f(0x204)]()[_0x227e5f(0x249)](_0x2ad26c['$combo']),_0x2ad26c['$tree']=$(_0x227e5f(0x1be))[_0x227e5f(0x249)](_0x2ad26c[_0x227e5f(0x157)]),this[_0x227e5f(0x160)]();const _0x250fcd=(_0x1485c5,_0x27ccc6)=>{const _0x8839e8=_0x227e5f,_0x4aaa9f=0x14,_0x1cd7d0=0x14,_0x1a4820=_0x1485c5[_0x8839e8(0x199)](),_0x58881c=_0x27ccc6;if(_0x58881c['pageX']>=_0x1a4820[_0x8839e8(0x150)]&&_0x58881c[_0x8839e8(0x15a)]<=_0x1a4820[_0x8839e8(0x150)]+_0x4aaa9f&&_0x58881c[_0x8839e8(0x191)]>=_0x1a4820[_0x8839e8(0x210)]&&_0x58881c[_0x8839e8(0x191)]<=_0x1a4820['top']+_0x1cd7d0)return!![];return![];},_0x597bd5=_0x3df135=>_0x595b9b(this,void 0x0,void 0x0,function*(){const _0x2abc11=_0x227e5f;if(_0x3df135['hasClass'](_0x2abc11(0x1dd)))_0x15e0b3(_0x2ad26c,_0x3df135);else{if(_0x3df135[_0x2abc11(0x1e4)]('expanded'))_0x3df135['children']('ul')[_0x2abc11(0x167)](),_0x3df135[_0x2abc11(0x192)](_0x2abc11(0x1d7));else{if(_0x3df135['children']('ul')[_0x2abc11(0x1e5)]()[_0x2abc11(0x20b)]>0x0)_0x3df135[_0x2abc11(0x1e5)]('ul')[_0x2abc11(0x167)](),_0x3df135[_0x2abc11(0x192)](_0x2abc11(0x1d7));else;}}});_0x2ad26c[_0x227e5f(0x1f0)]['on'](_0x227e5f(0x20d),'li',function(_0x13bb01){const _0x39932f=_0x227e5f;var _0x1afea6,_0x12390f;_0x13bb01[_0x39932f(0x1f5)]();let _0x2ec887=$(this);if(_0x250fcd(_0x2ec887,_0x13bb01))_0x597bd5(_0x2ec887);else{const _0x38d783=_0x2ec887[_0x39932f(0x1a6)](_0x39932f(0x142)),_0x5824e4=_0x2ec887[_0x39932f(0x1a6)](_0x39932f(0x139));if(_0x2ad26c[_0x39932f(0x16a)]['isSelectable']&&!_0x2ad26c[_0x39932f(0x16a)]['isSelectable'](_0x5824e4))return;_0x2ad26c[_0x39932f(0x1cd)][_0x39932f(0x1a6)](_0x39932f(0x139),_0x5824e4),((_0x1afea6=_0x5824e4[_0x39932f(0x1b9)])===null||_0x1afea6===void 0x0?void 0x0:_0x1afea6[_0x39932f(0x143)])||((_0x12390f=_0x5824e4[_0x39932f(0x220)])===null||_0x12390f===void 0x0?void 0x0:_0x12390f[_0x39932f(0x226)])||_0x5824e4[_0x39932f(0x20a)][_0x39932f(0x161)](),_0x539e28(_0x38d783),_0x2ad26c['$dropdown'][_0x39932f(0x204)]();}}),_0x2ad26c[_0x227e5f(0x1f0)]['on'](_0x227e5f(0x187),'li',function(_0x17af27){const _0x133fa0=_0x227e5f;_0x17af27[_0x133fa0(0x1f5)]();let _0x5e4e4f=$(this);_0x250fcd(_0x5e4e4f,_0x17af27)&&_0x597bd5(_0x5e4e4f),_0x1cc7fc(_0x2ad26c,_0x5e4e4f);}),$(document)['on'](_0x227e5f(0x187),function(_0x369afb){const _0x2652ac=_0x227e5f;!$(_0x369afb[_0x2652ac(0x20c)])[_0x2652ac(0x23b)](_0x2ad26c['$combo'])[_0x2652ac(0x20b)]&&_0x2ad26c['$dropdown'][_0x2652ac(0x204)]();});}});},_0x3d7d51=()=>{const _0x2ee027=_0x49eae4,_0x3576af=$(_0x2ee027(0x14b)),_0x186d8d=_0x3576af['val'](),_0x2217cf=RED[_0x2ee027(0x1f8)]['node'](_0x186d8d);if(!_0x2217cf)return undefined;const {endpoint:_0x2ca67a,securityMode:_0x375879,securityPolicy:_0x1cee63,userIdentityType:_0x48509e,credentials:_0x3f478e,namespaceAliases:_0x418f0b}=_0x2217cf,_0x1f7b6a={'endpoint':_0x2ca67a,'securityMode':_0x375879,'securityPolicy':_0x1cee63,'userIdentityType':_0x48509e,'credentials':_0x3f478e,'namespaceAliases':_0x418f0b};return _0x1f7b6a;},_0x21eea4=()=>{const _0xf3eca2=_0x49eae4,_0x36a4bd=$(_0xf3eca2(0x14b)),_0x58c82b=_0x36a4bd['val'](),_0x30e9e0=_0x3d7d51();if(!_0x30e9e0)return undefined;const _0x1ac404=_0x30e9e0[_0xf3eca2(0x1d5)];return Object[_0xf3eca2(0x18b)]({'namespaceAliases':_0x1ac404,'id':_0x58c82b},_0x30e9e0);},_0x66a68f=()=>{return{'endpointNode':_0x21eea4};},_0x34ef0c=()=>{const _0x24bd6c=_0x49eae4;debugger;const _0x34ec33=$('.red-ui-tray-body');console['log']('installFeedbackWidget\x20',_0x34ec33[_0x24bd6c(0x20b)]);if(_0x34ec33[_0x24bd6c(0x20b)]){console[_0x24bd6c(0x12f)](_0x24bd6c(0x183));const _0x713c15=$('<iframe></iframe>',{'src':_0x24bd6c(0x1ac),'scrolling':'no','style':_0x24bd6c(0x1d1),'allowtransparency':_0x24bd6c(0x130),'width':_0x24bd6c(0x217),'height':_0x24bd6c(0x1cb)});_0x34ec33[_0x24bd6c(0x239)](_0x713c15),_0x713c15[_0x24bd6c(0x1c5)]({'position':_0x24bd6c(0x129),'right':_0x24bd6c(0x173),'bottom':_0x24bd6c(0x193)});}};RED['nodes']['registerType']('OpcUa-Client2-Explore',{'category':_0x49eae4(0x1de),'color':_0x49eae4(0x205),'align':_0x49eae4(0x213),'icon':_0x49eae4(0x1df),'paletteLabel':'explore','defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x49eae4(0x1b6)},'nodeId':{'value':'','required':![]},'outputType':{'value':_0x49eae4(0x1f3),'required':!![]},'excludeEmpty':{'value':![]},'followOrganizes':{'value':![]}},'outputs':0x1,'label'(){const _0x428e4b=_0x49eae4;return this[_0x428e4b(0x226)]||_0x428e4b(0x133);},'labelStyle'(){const _0x470725=_0x49eae4;return this[_0x470725(0x226)]?_0x470725(0x1f2):'';},'oneditprepare'(){const _0x53ee2b=_0x49eae4,_0x505216=this;_0x11bf98(),_0x34ef0c(),_0x505216[_0x53ee2b(0x12d)]=0x1;const _0x6d3a20=$(_0x53ee2b(0x185));_0x6d3a20[_0x53ee2b(0x222)](Object[_0x53ee2b(0x18b)](Object[_0x53ee2b(0x18b)]({},_0x66a68f()),{'isSelectable'(_0x3c47ef){const _0x3729c4=_0x53ee2b;return _0x3c47ef[_0x3729c4(0x184)]==='Variable'||_0x3c47ef[_0x3729c4(0x184)]===_0x3729c4(0x208);}}));},'oneditsave'(){}});}()));function _0x3fed(){const _0x25f310=['ObjectType','absolute','VariableType','DataType','val','inputs','NodeId','log','true','</span><ul></ul></li>','show','OPCUA\x20Explore','typeDefinition','<i>','focus','blur','error','reference','checked','currentParent','after','<li>error\x20','msg','statusText','$combo','CadetBlue','value','text','36dwFYaX','POST','View','addClass','> \x20','slideDown','\x22\x20style=\x22color:','#node-input-endpoint','next','prop','!!failure!!','/checkNodeId','left','ns=0;i=46','mousedown.red-ui-typedInput-focus-block','NodeId\x20with\x20namespace\x20Urn','DisplayName','/browse','replaceWith','$dropdown','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','browseResult','pageX','Unspecified','keyCode','SeaGreen','opts','icon','reset','toString','animate','failure','aliased\x20browsePath:\x20','stringify','Organizes','toggle','multiple','preventDefault','options','loading','references','<input\x20type=\x22checkbox\x22>','red-ui-typedInput-icon','$selectTrigger','ns=0;i=85','disarmClick','Both','20px','auto','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','1088934bASHra','fa-list-alt','fa-sliders','.tree-text:first','pointer-events','631989sOZVIq','filter','ns=0;i=35','relativePath','HasProperty','browse\x20path:\x20','sort','placeholder','installing\x20iframe','nodeClass','#node-input-nodeId','1755930HqUboH','click','Aliased\x20Browse\x20Path','sterfive-dropdown',':focus','assign','nodeIds','element','4671931gMKcCw','205371XVbbbL','browsePath','pageY','toggleClass','16px','ns=0;i=61','<span\x20title=','Inverse','$info','<div\x20class=\x22spinner\x22></div>','offset','<div>','DodgerBlue','indexOf','HasSubtype','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','56UdeMrR','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','mask-image:\x20url(','_showTypeMenu','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','attr',');\x20-webkit-mask-image:\x20url(','data','mode','sterfive-combo-box','><i\x20class=\x22fa\x20','nodeId_nsu','red-ui-typedInput-icon\x20','/opcua-for-node-red/support-frame.html','message','.spinner','fetched','verify','red-ui-typedInput-focus','</li>','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','keydown','TypeDefinition','OpcUa-Endpoint2','referenceTypeId','<div\x20class=\x22info-text\x22></div>','displayName','aliasedBrowsePath','80UxKEdo','<div/>','baseUrl','<ul\x20class=\x22sterfive-tree\x22></ul>','removeClass','$inputGroup','<i\x20class=\x22fa\x20fa-id-card\x22/> \x20','statusCode','expanded','widget','css',':first','statusCode:\x20','nsuNodeID','empty','_initMenu','30px','node','$input','DarkOrange','_hideMenu','SuppressedError','background-color:transparent;overflow:hidden;border:3px','apply','status','Forward','namespaceAliases','endpoint','expandable\x20expanded','body','__parentNode','label','endpointNode','wrap','expandable','opcua','../../icons/opcuanodeLogo.png','$verifyBtn','Variable','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','ns=0;i=34','hasClass','children','input-error','main-wrapper','HasComponent','json','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','fetching\x20failed\x20with\x20error','nsu','title','HasTypeDefinition','err','$tree','_createMenu','node_label_italic','Value','[value=\x27','stopPropagation','parentNode','height','nodes','/opcua-for-node-red','$menu','Method','sterfive-typedInput-options\x20sterfive-online-menu','suppressed','164cECarO','none','BrowseName','<i\x20class=\x22fa\x20fa-bookmark\x22/> \x20','$toggleTreeBtn','done','hide','#C0DEED','$selectLabel','fa-object-group','Object','mousedown.red-ui-typedInput-close-property-select','nodeId','length','target','dblclick','Good','then','top','fa-cog','aliasedNodeId','right','forEach','localeCompare','remove','180px','bp_aliased','nodeId_aliased','_showMenu','tabindex','sterfive-info','change','BrowsePath','selectedMenuItem','browseName',';\x22></i>\x20','nodeBrowser','match','input[type=\x22checkbox\x22]','mousedown','name','161110HmgLpN','IsForward','i=61','56HeTlsk','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20','$uiSelect','Value\x20is\x20not\x20verified','scrollTop','input-group','elements','prev','position','</span>','push','msg.','$elementDiv','requestedNodeId','resolveParentNode','append','bp_indexed','closest','HasChild','application/json','callback','\x22}><span\x20class=\x22tree-text\x22\x20title=','already\x20fetched','find','function','prependTo','10624764yhbSjk','string','isTypeRef','trigger','selected','appendTo','ReferenceType','/walk-backward','NodeClass','li\x20>\x20.tree-text','Invalid'];_0x3fed=function(){return _0x25f310;};return _0x3fed();}
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg1OTViOWIiLCJfMHgxYjJiZTkiLCJfMHg1YjRjZDIiLCJfMHgyZTNjYjIiLCJfMHgxMjU4OGQiLCJfMHg0MmQ3MTIiLCJfMHg0YzIwODAiLCJfMHg0ZTViOTkiLCJQcm9taXNlIiwiXzB4MjE5MjM5IiwiXzB4MjllMzAzIiwiXzB4M2JhMGIzIiwiXzB4MzhiYmJiIiwiXzB4MzJkYjVhIiwiXzB4NDgxYzZmIiwiXzB4NTQ1OGEzIiwiXzB4NGQ0ZTc3IiwiXzB4Y2UxMjkyIiwiXzB4NDIwM2EyIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NDYxYTYwIiwiXzB4MmI2Zjg5IiwiXzB4NGI2ZGUxIiwiXzB4MjRkOWRjIiwiRXJyb3IiLCJfMHgxOWE0YmMiLCJfMHgyODNjYjgiLCJfMHgzOTE2ZTUiLCJfMHgyMTk1Y2YiLCJfMHgxNGIzN2MiLCJfMHgyZWQ0ZjUiLCJfMHgyYWQ4OGQiLCJfMHgzMDc1OGUiLCJfMHg2MjlkODkiLCJfMHgzZmMzMjIiLCJfMHgxY2Y0MWEiLCJfMHg0ZTVjOTEiLCJfMHgzMGYwNjgiLCJfMHhmOTg2ZGIiLCJfMHg0OTI0Y2MiLCJfMHg5ZGYzYWEiLCJfMHg0ZDdmOTgiLCJfMHgxNjNmM2EiLCJfMHgyNTU5NDciLCJfMHg2YmQxZmQiLCJfMHg0NThiODkiLCJfMHg1YmYyOTQiLCJfMHhlNjg5MjYiLCJlbmRwb2ludE5vZGUiLCJfMHgyMzIxOGYiLCJlbmRwb2ludCIsIl8weDFjYjUwYiIsImJhc2VVcmwiLCJfMHg0ZTE5NjgiLCJfMHgxOGY3NjAiLCJfMHgzNzY3NzkiLCJfMHg0NjM1ZTMiLCJfMHgxMGQzNGUiLCJfMHg0OTA1NmQiLCJPYmplY3QiLCJfMHgxNzI0MjUiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4NTE3NjU2IiwiXzB4NDE5YjJhIiwiXzB4MjBlYTk1IiwiXzB4MTUwMmY3IiwiXzB4MTA0ODkxIiwiXzB4MTg3MmZjIiwiXzB4NWUwMDE2IiwiXzB4NWFjNmY4IiwiXzB4MmU1N2IzIiwiXzB4NWQ0ZWNmIiwibm9kZUlkIiwiXzB4NDBjZDJjIiwicm9vdE5vZGVJZCIsIl8weDEwMWNlNiIsImlzVHlwZSIsIl8weDNhMDNhYyIsIl8weDFjMWE0NSIsIl8weDE1NWQ3YSIsIl8weDI0YzM4ZSIsIl8weDJkN2E1NSIsIl8weGZiNzY0MCIsIl8weDFlMzMxOCIsIl8weDI5MGFkOCIsIl8weDQwMzI0NiIsIl8weDNkNjA5MCIsIl8weDE4YjQ2NCIsIl8weDVkYzYwZSIsIl8weDhmZTQ1MSIsIl8weDMzZGFiYiIsIl8weDUxYmYyYiIsIl8weDUwZGQ5ZiIsIl8weDQ2NmZjYyIsIl8weDIzNDg0MyIsIl8weDEwM2Q3MSIsIl8weDU0YTJjNSIsIl8weDI5MTU2ZSIsIl8weDc4OGI2ZCIsIl8weDEyNDUxZSIsIl8weDEzMjUwOCIsIl8weDQwY2Q4IiwiXzB4NWJjZWZmIiwiXzB4ZjkzNmZhIiwiXzB4MTViOGE0IiwiXzB4MzIxM2RiIiwiXzB4NTg2MzE3IiwiUkVEIiwiXzB4YzgyOWE4IiwiXzB4M2FlNzZhIiwiXzB4NTBjM2YxIiwiXzB4M2JmODk5IiwiXzB4NWU1NGQ0IiwiXzB4MjhiMmI0IiwiXzB4MjA1YWNhIiwiXzB4NTE0MDdhIiwiXzB4NTFjYmJhIiwiXzB4NWExOWYyIiwiXzB4MmEwOWUxIiwiXzB4MmYzMTk3IiwiXzB4M2M3ZjhmIiwiXzB4MWU2MWQ2IiwiXzB4MmY0Njc2IiwianNvbiIsIl8weDU5Y2UxZiIsImRhdGEiLCJfMHgxMGMwNTYiLCJfMHgyNmU3MWUiLCJfMHgzNWI5YTYiLCJfMHhjMWE0ODMiLCJzZXRUaW1lb3V0IiwiXzB4MjEyN2ZiIiwiXzB4Mjg3NmEzIiwiXzB4NDgwYmZiIiwiXzB4ZjNmNzIwIiwiXzB4NDg1NjRjIiwiXzB4NGY4YjM4IiwiXzB4MjlkMTExIiwiXzB4ZDU3YjE0IiwiXzB4NDUwZGNjIiwiXzB4NTIwZmFlIiwiXzB4MzZiYzBiIiwiXzB4M2Y2Y2VhIiwiXzB4MTg0M2ZiIiwiXzB4NDkxMDUwIiwiXzB4NWVjMGFhIiwiXzB4Mzc4ZGU5IiwiXzB4ZDkzMDI0IiwiXzB4MjU4YjNmIiwiXzB4NzEwNzJkIiwiXzB4NDg3ZDdjIiwiXzB4YWJiYTE4IiwiJCIsIl8weDMzYzI0YiIsIl8weDI3NWY1YiIsImljb24iLCJfMHgyMWFhMGIiLCJjb2xvciIsIl8weDI1YzFmMSIsIl8weDM1NjU0ZCIsIl8weDM3NGQ1YyIsIl8weDIxZjYwYyIsIl8weDRlZDNkOSIsIl8weDQ4NzM1OCIsIl8weDFjYzdmYyIsIl8weDE4ZjMyMiIsIl8weDMzMzVhMiIsIl8weDMwMzUxYSIsIl8weDU3ZGM3MiIsIl8weDM1ODNiZCIsIl8weDNkN2VhOSIsIl8weDJmNjM3MSIsIl8weDUwMTljNiIsIl8weDUyZDkzZSIsIl8weDE1ZTBiMyIsIl8weDIyNGI4MSIsIl8weDJjNWM1NCIsIl8weDU2MzlhZiIsIl8weDgxYzY5NCIsIl8weDM2YWQ0MCIsIl8weDQ0ZTVlNCIsInVuZGVmaW5lZCIsIl8weDI5NGFhZCIsIl8weDJkNzhjNyIsIl8weDIwMDMyOSIsIl8weDVkY2FhMSIsIl8weDQ4YmQ4NyIsIl8weDUxNzA1OCIsIl8weDJmYTkyZCIsIl8weGFiM2E1OCIsIl8weDFhZjYxNiIsIl8weDcwMDRjMSIsIl8weGVhNTI4ZSIsIl8weDQ1MzJkZSIsIl8weDNhMjdmMiIsIl8weDUyZDBhNSIsInJlZmVyZW5jZXMiLCJfMHhiMTczNjUiLCJfMHgzMWRjMjciLCJfMHgyMjU1YTYiLCJfMHg1NTkzZjciLCJfMHgxMmIxNzQiLCJfMHgzNmZjZjkiLCJfMHg5NzRhY2YiLCJfMHgyYzFhZTYiLCJfMHg0OWI5NjkiLCJfMHg3NDUwMjEiLCJfMHg1MjM1MWEiLCJfMHgzNTY4OTkiLCJfMHhlOTllOTMiLCJfMHg0YzZkY2YiLCJfMHg0YzQ3YTYiLCJfMHgxMDc2YWUiLCJfMHgxMWJmOTgiLCJfMHgyZGMyZmMiLCJfMHgxYWJlOTIiLCJfMHhhMTEwZjMiLCJfMHg0YjRmM2EiLCJfMHgxZjE0OTEiLCJfMHgxOGQ3MmMiLCJfMHgzMzBlNWMiLCJfMHhkZWFlMGYiLCJfMHg0MWNjNmMiLCJfMHgzNDBkYmYiLCJfMHgzMmM3NGIiLCJfMHgxNjc1MGIiLCJfMHg0ZjNjOGIiLCJkb2N1bWVudCIsIl8weDIyZjViOCIsIl8weDEzOTVhMCIsIl8weDMxNDliYSIsIl8weDQzNzE3ZCIsIl8weDM2NTA1MyIsIl8weDk2NDQyOCIsIl8weDRhNTlmOSIsIl8weDNhN2QxYiIsIl8weGEwMGQwMiIsIl8weDMzMTRmYiIsIl8weDQ2YmEwYSIsIl8weDQzZjhmMSIsIl8weDM3ZTlhMCIsIl8weDQ3MzhjYSIsIl8weDVlMjlhZSIsIl8weDVjMDQ0YyIsIl8weDU3ZDljMyIsIl8weDM3YmU5NCIsIl8weDJhMGQ5YSIsIndpbmRvdyIsIl8weDZhNmMxZSIsIl8weDU5YjJlZiIsIl8weDRkZDdkOSIsIl8weDE5MTFkNCIsIl8weDk2MGM2OCIsIl8weDUzODk3YiIsIl8weGZjYzM5MyIsIl8weDE5ZGVkYiIsIl8weDIzZmQzZiIsIl8weDIwM2E3MCIsIl8weDI2Y2NjYiIsIl8weDI1OWNkZSIsIl8weGFmODI4NSIsIl8weDFjMmRjNyIsIl8weDIyMjJhYSIsIl8weDIyMmExNyIsIl8weDJhZDI2YyIsIl8weDM1YmY0YSIsIl8weDFmYTdhNSIsIl8weDRiNjE2OCIsIl8weGJmOWZmZSIsIl8weDUzOWUyOCIsIl8weDQ1NmY3MyIsIl8weDE5NTU3MiIsIl8weDRiNmNjNiIsIl8weDE5OTgxNyIsIl8weDI2NzI1ZCIsIl8weDFhMzVkYyIsIl8weDNiZWM5MCIsIl8weDQwY2FmNSIsIl8weDFlNDQ3ZiIsIl8weDI1MGZjZCIsIl8weDE0ODVjNSIsIl8weDI3Y2NjNiIsIl8weDRhYWE5ZiIsIl8weDFjZDdkMCIsIl8weDFhNDgyMCIsIl8weDU4ODgxYyIsIl8weDU5N2JkNSIsIl8weDNkZjEzNSIsIl8weDEzYmIwMSIsIl8weDFhZmVhNiIsIl8weDEyMzkwZiIsIl8weDJlYzg4NyIsIl8weDM4ZDc4MyIsIl8weDU4MjRlNCIsIl8weDE3YWYyNyIsIl8weDVlNGU0ZiIsIl8weDM2OWFmYiIsIl8weDNkN2Q1MSIsIl8weDM1NzZhZiIsIl8weDE4NmQ4ZCIsIl8weDIyMTdjZiIsIl8weDJjYTY3YSIsInNlY3VyaXR5TW9kZSIsIl8weDM3NTg3OSIsInNlY3VyaXR5UG9saWN5IiwiXzB4MWNlZTYzIiwidXNlcklkZW50aXR5VHlwZSIsIl8weDQ4NTA5ZSIsImNyZWRlbnRpYWxzIiwiXzB4M2Y0NzhlIiwibmFtZXNwYWNlQWxpYXNlcyIsIl8weDQxOGYwYiIsIl8weDFmN2I2YSIsIl8weDIxZWVhNCIsIl8weDM2YTRiZCIsIl8weDU4YzgyYiIsIl8weDMwZTllMCIsIl8weDFhYzQwNCIsIl8weDY2YTY4ZiIsIl8weDM0ZWYwYyIsIl8weDM0ZWMzMyIsIl8weDcxM2MxNSIsIl8weDUwNTIxNiIsIl8weDZkM2EyMCIsIl8weDNjNDdlZiJdLCJtYXBwaW5ncyI6Im8yQkFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFTQSxTQUFULENBQW1CQyxTQUFuQixDQUE0QkMsU0FBNUIsQ0FBd0NDLFNBQXhDLENBQTJDQyxTQUEzQyxDLENBQ0ksU0FBU0MsU0FBVCxDQUFlQyxTQUFmLEMsUUFBK0JBLFNBQUEsWUFBaUJILFNBQWpCLENBQXFCRyxTQUFyQixDQUE2QixJQUFJSCxTQUFKLENBQU0sU0FBVUksU0FBVixDLENBQXFCQSxTQUFBLENBQVFELFNBQVIsQyxFQUEzQixDLFNBQ3JELEdBQUssQ0FBQUgsU0FBQSxFQUFNLENBQUFBLFNBQUEsQ0FBSUssT0FBSixDQUFOLENBQUwsQ0FBeUIsU0FBVUMsU0FBVixDQUFtQkMsU0FBbkIsQyx5QkFDNUIsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsQyx5QkFBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsU0FBVCxDQUFrQkMsU0FBbEIsQyxDQUEyQixHLENBQU1ILFNBQUEsQ0FBS1QsU0FBQSxDLE9BQUEsRUFBbUJZLFNBQW5CLENBQUwsQyxFQUFtQyxN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QUpBLEMsVUFLTixDQUFVLEMsT0FBRSxDLEVBQUYsQyxVQUFhLEMsSUFBYixDLE1BQTZCLEMsZ0JBQTdCLENBTEosQyxRQU9OLENBQVEsQyxPQUFFLEMsRUFBRixDLFVBQWEsQyxHQUFiLENBUEYsQyxZQVFOLENBQVksQyxPQUFFLEMsZ0JBQUYsQyxVQUFrQixDLElBQWxCLENBUk4sQyxjQVNOLENBQWMsQyxPQUFFLEMsR0FBRixDQVRSLEMsaUJBV04sQ0FBaUIsQyxPQUFFLEMsR0FBRixDQVhYLENBTmtDLEMsU0FtQjVDLEMsR0FuQjRDLEMsT0FvQjVDLEUsa0NBQ1csSyxnQkFBQSxHLGtCQXJCaUMsQyxZQXVCNUMsRSxrQ0FDVyxLLGdCQUFBLEUsZ0JBQUEsQyxJQXhCaUMsQyxlQTBCNUMsRSwyQkFDVXVOLFNBQUEsQ0FBTyxJLENBQ2I3RyxTQUFBLEUsQ0FDQTBHLFNBQUEsRSxDQUNBRyxTQUFBLEMsZ0JBQUEsRSxHQUZBLENBR0EsTUFBTUMsU0FBQSxDQUFVM0ssQ0FBQSxDLGdCQUFBLENBQWhCLENBQ0EySyxTQUFBLEMsZ0JBQUEsRUFBb0IxUSxNQUFBLEMsZ0JBQUEsRUFBY0EsTUFBQSxDLGdCQUFBLEVBQWMsRUFBZCxDQUFrQnFRLFNBQUEsRUFBbEIsQ0FBZCxDQUFpRSxDLGNBQUUsQ0FBYU0sU0FBYixDLGtDQUN4RUEsU0FBQSxDLGdCQUFBLEksVUFBQSxFQUFxQ0EsU0FBQSxDLGdCQUFBLEksa0JBRGlDLENBQWpFLENBQXBCLEMsRUFoQ3dDLEMsWUFvQzVDLEUsRUFwQzRDLENBQWhELEMsRUE1Z0NKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJEYXRhVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtdGV4dC13aWR0aFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9IChfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJyb3dzZSBmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHdhbGtCYWNrd2FyZCA9IChfYSwgX2IpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgX2JdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIHsgbm9kZUlkLCByb290Tm9kZUlkLCBpc1R5cGUgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vd2Fsay1iYWNrd2FyZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkLFxuICAgICAgICAgICAgICAgIGlzVHlwZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4ganNvbi5icm93c2VQYXRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNob29zZU5vZGVJZCA9IChkYXRhLCBtb2RlKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgIT09IFwiR29vZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5yZXF1ZXN0ZWROb2RlSWQ7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9hbGlhc2VkIHx8IGRhdGEuYnBfaW5kZXhlZDtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkX2FsaWFzZWQgfHwgZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9uc3U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgbWFrZVRvb2x0aXAgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGBzdGF0dXNDb2RlOiAke2RhdGEuc3RhdHVzQ29kZX1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHN0ciA9IFtdO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGVJZDogJHtkYXRhLm5vZGVJZH1gKTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBicm93c2UgcGF0aDogJHtkYXRhLmJwX2luZGV4ZWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgbm9kZSBjbGFzczogJHtOb2RlQ2xhc3NbZGF0YS5ub2RlQ2xhc3NdfWApO1xuICAgICAgICAgICAgaWYgKGRhdGEubm9kZUlkX25zdSkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBuc3Ugbm9kZUlkOiAke2RhdGEubm9kZUlkX25zdX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9hbGlhc2VkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgTm9kZUlkOiAke2RhdGEubm9kZUlkX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5icF9pbmRleGVkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgYnJvd3NlUGF0aDogJHtkYXRhLmJwX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1vZGUoZW5oYW5jZWROb2RlSWQpIHtcbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9ebnN1PS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14obnM9Lio7KT8oaXxifHN8Zyk9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zYT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYWxpYXNlZE5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKVswLTldKzovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKS4qOi8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJicm93c2VQYXRoXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZShzdHIpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGZpZ3VyZU91dE1vZGUoc3RyKTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiblwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuYVwiO1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5zdVwiO1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJiXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhYlwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdG9Nb2RlKHYpIHtcbiAgICAgICAgbGV0IG1vZGU7XG4gICAgICAgIHN3aXRjaCAodikge1xuICAgICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJub2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuYVwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuc3VcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImFiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYWxpYXNlZEJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kZTtcbiAgICB9XG4gICAgY29uc3QgX2NhbGxDaGVja05vZGVJZCA9IChfYSwgbm9kZUlkXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vY2hlY2tOb2RlSWRgO1xuICAgICAgICBjb25zdCBlSWQgPSBlbmRwb2ludE5vZGUuaWQ7XG4gICAgICAgIGNvbnN0IG4gPSBSRUQubm9kZXMubm9kZShlSWQpO1xuICAgICAgICBjb25zb2xlLmxvZyhuLm5hbWVzcGFjZUFsaWFzZXMpO1xuICAgICAgICBuLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZUFsaWFzZXMgPSBlbmRwb2ludE5vZGUubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgICAgIG5hbWVzcGFjZUFsaWFzZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4geyBqc29uLCBkYXRhIH07XG4gICAgfSk7XG4gICAgY29uc3QgaW50ZXJuYWxWZXJpZnkgPSAoX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBtb2RlLCAkaW5wdXRFbGVtZW50LCAkaW5mbykge1xuICAgICAgICBjb25zdCBlbmhhbmNlZE5vZGVJZCA9ICRpbnB1dEVsZW1lbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHsganNvbiwgZGF0YSB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZCh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgZW5oYW5jZWROb2RlSWQpO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBlbmhhbmNlZE5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcCA9IG1ha2VUb29sdGlwKGpzb24pO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQuYXR0cihcInRpdGxlXCIsIHRvb2x0aXApO1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZUlkID0gY2hvb3NlTm9kZUlkKGpzb24sIG1vZGUpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKHNlbGVjdGVkTm9kZUlkKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7ZW5oYW5jZWROb2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmICghcmVmZXJlbmNlIHx8ICFyZWZlcmVuY2Uubm9kZUlkKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGAoJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9KSAkeygoX2MgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hbWUpIHx8ICgoX2QgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50ZXh0KSB8fCBcIlwifWA7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpIGtleT1cIiR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfVwifT48c3BhbiBjbGFzcz1cInRyZWUtdGV4dFwiIHRpdGxlPSR7dGl0bGV9PjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PC9zcGFuPjx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGZpbmRFbGVtZW50ID0gKG5vZGVJZCwgJHRyZWUpID0+IHtcbiAgICAgICAgcmV0dXJuICR0cmVlLmZpbmQoYGxpW2tleT1cIiR7bm9kZUlkfVwiXWApO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0U2luZ2xlID0gKHRoYXQsICRsaSkgPT4ge1xuICAgICAgICB0aGF0LiR0cmVlLmZpbmQoXCJsaSA+IC50cmVlLXRleHRcIikucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgLy8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgICRsaS5maW5kKFwiLnRyZWUtdGV4dDpmaXJzdFwiKS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgIH07XG4gICAgY29uc3QgYXV0b0V4cGFuZCA9ICh0aGF0LCBicm93c2VQYXRoLCAkdHJlZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGV4cGFuZCB0aGUgdHJlZSB0byBzaG93IHRoZSBub2RlSWRcbiAgICAgICAgbGV0ICRjdXJyZW50ID0gJHRyZWUuY2hpbGRyZW4oXCI6Zmlyc3RcIik7XG4gICAgICAgIGJyb3dzZVBhdGgucmVsYXRpdmVQYXRoLmVsZW1lbnRzIHx8IFtdO1xuICAgICAgICBjb25zdCBub2RlSWRzID0gYnJvd3NlUGF0aC5ub2RlSWRzIHx8IFtdO1xuICAgICAgICBpZiAobm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZUlkcykge1xuICAgICAgICAgICAgaWYgKCRjdXJyZW50Lmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZXhwYW5kIGFuZCBzZWxlY3QgdGhlIHJpZ2h0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICB5aWVsZCBfZXhwYW5kTGkodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBmaW5kRWxlbWVudChuLCAkY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoJGVsZW1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGN1cnJlbnQgPSAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICBzY3JvbGxUb0xpKHRoYXQuJGRyb3Bkb3duLCAkY3VycmVudCk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9MaSgkY29udGFpbmVyLCAkdGFyZ2V0TGkpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGl0ZW0gcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBsaVBvcyA9ICR0YXJnZXRMaS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclNjcm9sbFRvcCA9ICRjb250YWluZXIuc2Nyb2xsVG9wKCk7XG4gICAgICAgIGlmIChjb250YWluZXJTY3JvbGxUb3AgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiB0byBzY3JvbGwgdG8gKGN1cnJlbnQgc2Nyb2xsICsgaXRlbSdzIHBvc2l0aW9uKVxuICAgICAgICAvLyBBZGp1c3QgdGhpcyBjYWxjdWxhdGlvbiBiYXNlZCBvbiB5b3VyIG5lZWRzXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gY29udGFpbmVyU2Nyb2xsVG9wICsgbGlQb3MgLSAkY29udGFpbmVyLmhlaWdodCgpIC8gMiArICR0YXJnZXRMaS5oZWlnaHQoKSAvIDI7XG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIGVuc3VyZSB0aGUgaXRlbSBpcyB2aXNpYmxlXG4gICAgICAgICRjb250YWluZXIuYW5pbWF0ZSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHNjcm9sbFRvLFxuICAgICAgICB9LCA1MDApOyAvLyBBZGp1c3QgdGhlIGR1cmF0aW9uICg1MDBtcykgYXMgbmVlZGVkXG4gICAgfVxuICAgIGNvbnN0IHJlYWNoU2VsZWN0aW9uID0gKHRoYXQsIHBhcmVudE5vZGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBub2RlSWQgPSB0aGF0LiRpbnB1dC52YWwoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIHJvb3ROb2RlSWQ6IHBhcmVudE5vZGUubm9kZUlkLFxuICAgICAgICAgICAgaXNUeXBlOiB0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmIHx8IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgIGNvbnN0IGJyb3dzZVBhdGggPSB5aWVsZCB3YWxrQmFja3dhcmQoZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIGlmICghYnJvd3NlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIGF1dG9FeHBhbmQodGhhdCwgYnJvd3NlUGF0aCwgdGhhdC4kdHJlZSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gc29ydCByZWZlcmVuY2UgICBieSBicm93c2VOYW1lXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlcy5zb3J0KChhLCBiKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoKChfYSA9IGEuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8IFwiXCIpLmxvY2FsZUNvbXBhcmUoKChfYiA9IGIuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IFwiXCIpOyB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoYDxsaT5lcnJvciAke2Vyci5tZXNzYWdlfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmZpbmQoXCIuc3Bpbm5lclwiKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICRub2RlLnJlbW92ZUNsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1ha2VDb25uZWN0aW9uKHRoYXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9leHBhbmRMaSh0aGF0LCAkbGkpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbGksIGYsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRQYXJlbnROb2RlID0ge1xuICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gZGVmYXVsdFBhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuX19wYXJlbnROb2RlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUuY2FsbCh0aGF0KSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHlpZWxkIGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBkZXNjO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9fcGFyZW50Tm9kZSB8fCBkZWZhdWx0UGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyByZXNldCBwYXJlbnQgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdGhhdDtcbiAgICAgICAgICAgICAgICAgICAgYS5fX3BhcmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHlpZWxkIHRoaXMucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmN1cnJlbnRQYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmlmeShtb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCBtb2RlLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwiaW5wdXQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5yZW1vdmVDbGFzcyhcImlucHV0LWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2hpZGVNZW51KG1lbnUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtY2xvc2UtcHJvcGVydHktc2VsZWN0XCIpO1xuICAgICAgICAgICAgICAgIG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAobWVudS5vcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBtZW51LmZpbmQoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykucHJvcChcImNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5wdXNoKCQodGhpcykuZGF0YShcInZhbHVlXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2soc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kZWxlbWVudERpdi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgLy94eCB9IGVsc2UgaWYgKHRoaXMuJG9wdGlvblNlbGVjdFRyaWdnZXIuaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAvL3h4ICAgICB0aGF0LiRvcHRpb25TZWxlY3RUcmlnZ2VyLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlTWVudShtZW51T3B0aW9ucywgb3B0cywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVudSA9ICQoXCI8ZGl2PlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLXR5cGVkSW5wdXQtb3B0aW9ucyBzdGVyZml2ZS1vbmxpbmUtbWVudVwiKTtcbiAgICAgICAgICAgICAgICBtZW51Lm9wdHMgPSBvcHRzO1xuICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBtZW51T3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdCA9IHsgdmFsdWU6IG9wdCwgbGFiZWw6IG9wdCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcCA9ICQoJzxhIGhyZWY9XCIjXCI+PC9hPicpLmF0dHIoXCJ2YWx1ZVwiLCBvcHQudmFsdWUpLmFwcGVuZFRvKG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC50ZXh0KG9wdC5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AucHJvcChcInRpdGxlXCIsIG9wdC50aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0Lmljb24uaW5kZXhPZihcIjxcIikgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9wdC5pY29uKS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0Lmljb24uaW5kZXhPZihcIi9cIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIjxpPlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBcInJlZC11aS10eXBlZElucHV0LWljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwibWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7IC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCI8aT5cIiwgeyBjbGFzczogXCJyZWQtdWktdHlwZWRJbnB1dC1pY29uIFwiICsgb3B0Lmljb24gfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLmNzcyh7IHBhZGRpbmdMZWZ0OiBcIjE4cHhcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdC5pY29uICYmICFvcHQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnRleHQob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgY2I7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYiA9ICQoJzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoXCJwb2ludGVyLWV2ZW50c1wiLCBcIm5vbmVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YShcInZhbHVlXCIsIG9wdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlcGVuZFRvKG9wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcIm1vdXNlZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLnByb3AoXCJjaGVja2VkXCIsICFjYi5wcm9wKFwiY2hlY2tlZFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5vbihcImtleWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERPV05cbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikubmV4dCgpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMzgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVVBcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikucHJldigpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTQ0FQRVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzYXJtQ2xpY2s6IGZhbHNlLFxuICAgICAgICAgICAgX3Nob3dNZW51KG1lbnUsIHJlbGF0aXZlVG8pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNhcm1DbGljaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FybUNsaWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWxhdGl2ZVRvLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSByZWxhdGl2ZVRvLmhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHZhciBtZW51SGVpZ2h0ID0gbWVudS5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgdG9wID0gaGVpZ2h0ICsgcG9zLnRvcDtcbiAgICAgICAgICAgICAgICBpZiAodG9wICsgbWVudUhlaWdodCAtICQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpID4gJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcCAtPSB0b3AgKyBtZW51SGVpZ2h0IC0gJCh3aW5kb3cpLmhlaWdodCgpICsgNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRvcCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5oZWlnaHQobWVudUhlaWdodCArIHRvcCk7XG4gICAgICAgICAgICAgICAgICAgIHRvcCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3AgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBvcy5sZWZ0ICsgXCJweFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuc2xpZGVEb3duKDEwMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1jbG9zZS1wcm9wZXJ0eS1zZWxlY3RcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KG1lbnUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHJlbGF0aXZlVG8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuZGlzYXJtQ2xpY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9zaG93VHlwZU1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd01lbnUodGhhdC4kbWVudSwgdGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhhdC5zZWxlY3RlZE1lbnVJdGVtO1xuICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IHRoYXQuJG1lbnUuZmluZChcIlt2YWx1ZT0nXCIgKyB0eXBlICsgXCInXCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfSwgMTIwKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaW5pdE1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5hdHRyKFwidGFiaW5kZXhcIiwgLTEpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtZm9jdXMtYmxvY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kbWVudSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRtZW51LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBmYS1pZC1jYXJkXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUxpc3QgPSBbXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwidGV4dFwiLCB2YWx1ZTogXCJ0XCIsIHRpdGxlOiBcIlZhbHVlIGlzIG5vdCB2ZXJpZmllZFwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1mb250XCIvaT4gJyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJtc2cuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJtc2dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIm5vZGUgaWQgb3IgIGJyb3dzZSBwYXRoIGNvbWVzIGZyb20gaW5qZWN0ZWQgbXNnIHBhcmFtZXRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUtb3Blbi1vXCIvPicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTm9kZUlkXCIsIHZhbHVlOiBcIm5cIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjEgJm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJBbGlhc2VkIE5vZGVJZFwiLCB2YWx1ZTogXCJuYVwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1ib29rbWFya1wiLz4mbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIk5vZGVJZCB3aXRoIG5hbWVzcGFjZSBVcm5cIiwgdmFsdWU6IFwibnN1XCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWlkLWNhcmRcIi8+Jm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJCcm93c2VQYXRoXCIsIHZhbHVlOiBcImJcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjxpIGNsYXNzPVwiZmEgZmEtZmlnaHRlci1qZXRcIi8+Jm5ic3A7JyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJBbGlhc2VkIEJyb3dzZSBQYXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJhYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtYm9va21hcmtcIi8+PGkgY2xhc3M9XCJmYSBmYS1maWdodGVyLWpldFwiLz4mbmJzcDsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGZpZ3VyZU91dE1lblVJdGVtVmFsdWUodGhhdC4kaW5wdXQudmFsKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSBhKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbC5lbXB0eSgpLmFwcGVuZChgPHNwYW4gdGl0bGU9JHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnRpdGxlKSB8fCBcIlwifT4mbmJzcDsgJHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLmljb24pIHx8IFwiXCJ9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IGE7XG4gICAgICAgICAgICAgICAgY29uc3QgdHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUgPSB0aGlzLl9jcmVhdGVNZW51KHR5cGVMaXN0LCB7fSwgKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRvTW9kZSh2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIE1lbnUgc2VsZWN0ZWQgIVxuICAgICAgICAgICAgICAgICAgICAgICAgdHQudmVyaWZ5KG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSB2KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gdjtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwuZW1wdHkoKS5hcHBlbmQoYDxzcGFuIHRpdGxlPSR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS50aXRsZSkgfHwgXCJcIn0+Jm5ic3A7ICR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5pY29uKSB8fCBcIlwifTwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIuc2hvdygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vZGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTW9kZSh0aGF0LnNlbGVjdGVkTWVudUl0ZW0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuY3NzKFwiYm9yZGVyXCIsIFwibm9uZVwiKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnREaXYgPSB0aGF0LiRpbnB1dC53cmFwKFwiPGRpdj5cIikucGFyZW50KCkuYWRkQ2xhc3MoXCJtYWluLXdyYXBwZXJcIik7XG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBDb21ibyBicm93c2VyXG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8gPSAkKFwiPGRpdi8+XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwic3RlcmZpdmUtY29tYm8tYm94XCIpO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtaW5wdXQtd3JhcFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIGFkZCBidXR0b24gb24gdGhlIHJpZ2h0IHNpZGVcbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHRvZ2dsZVRyZWVCdG5cbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbiB0aXRsZT1cIm9wZW4gT1BDVUEgQWRkcmVzc1NwYWNlIEJyb3dzZXJcIj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSB5aWVsZCB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uICYmICh5aWVsZCByZWFjaFNlbGVjdGlvbih0aGF0LCBwYXJlbnROb2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHZlcmlmeUJ0blxuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24gdGl0bGU9XCJ2ZXJpZnkgbm9kZUlkIG9yIGJyb3dzZVBhdGhcIj48aSBjbGFzcz1cImZhIGZhLXJlZnJlc2hcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkobW9kZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVJbnB1dCA9IChpbnB1dCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25EYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwganNvbiB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZChjb25uZWN0aW9uRGF0YSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgcHJlcGVuZGVkIGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QgPSAkKFwiPGRpdj5cIik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmJlZm9yZSh0aGF0LiR1aVNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIgPSAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIj48L2J1dHRvbj4nKS5wcmVwZW5kVG8odGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICAkKCc8aSBjbGFzcz1cInJlZC11aS10eXBlZElucHV0LWljb24gZmEgZmEtY2FyZXQtZG93blwiPjwvaT4nKS50b2dnbGUodHJ1ZSkuYXBwZW5kVG8odGhhdC4kc2VsZWN0VHJpZ2dlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwiZm9jdXNcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImJsdXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyIG9wdCA9IHRoYXQudHlwZU1hcFt0aGF0LnByb3BlcnR5VHlwZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob3B0Lmhhc1ZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QucmVtb3ZlQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsID0gJCgnPHNwYW4gY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC10eXBlLWxhYmVsXCI+PC9zcGFuPicpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0TWVudSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdGVtcG9yYXR5IGluZm8gcGFuZWxcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBkcm9wIGRvd24gdHJlZVxuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKS5hcHBlbmRUbyh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRkcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBpc09uTGVmdFNpemUgPSAoJGxpLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICRsaS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUV4cGFuc2lvbiA9ICgkbGkpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9leHBhbmRMaSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiZGJsY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVJbnB1dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgY29udGFpbmluZzpcbiAgICAgKiAgLSB0aGUgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksXG4gICAgICogIC0gdXNlcklkZW50aXR5VHlwZSxcbiAgICAgKiAgLSBjcmVkZW50aWFsc1xuICAgICAqICAtIG5hbWVzcGFjZUFsaWFzZXNcbiAgICAgKlxuICAgICAqIGV4dHJhY3RlZCBmcm9tIHRoZSB1aSB3aWRnZXQgI25vZGUtaW5wdXQtZW5kcG9pbnRcbiAgICAgKi9cbiAgICBjb25zdCBnZXRFbmRQb2ludEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgcmVkTm9kZSA9IFJFRC5ub2Rlcy5ub2RlKGVuZHBvaW50SWQpO1xuICAgICAgICBpZiAoIXJlZE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBjb25zdCBjcmVkZW50aWFscyA9IFJFRC4oZW5kcG9pbnRJZCk7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXRpemUgYW5kIGV4dHJhY3QgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgb25seSAoIG5vdCB0aGUgbm9kZS1yZWQgc3R1ZmYpXG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksIHVzZXJJZGVudGl0eVR5cGUsIGNyZWRlbnRpYWxzLCBuYW1lc3BhY2VBbGlhc2VzIH0gPSByZWROb2RlO1xuICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBuYW1lc3BhY2VBbGlhc2VzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0VmFsdWU7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnROciA9IGdldEVuZFBvaW50QXR0cmlidXRlcygpO1xuICAgICAgICBpZiAoIWVuZHBvaW50TnIpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZXNwYWNlQWxpYXNlcyA9IGVuZHBvaW50TnIubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyBuYW1lc3BhY2VBbGlhc2VzLCBpZDogZW5kcG9pbnRJZCB9LCBlbmRwb2ludE5yKTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgaW5zdGFsbEZlZWRiYWNrV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZWJ1Z2dlcjtcbiAgICAgICAgY29uc3QgdHJheUNvbnRlbnQgPSAkKFwiLnJlZC11aS10cmF5LWJvZHlcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW5zdGFsbEZlZWRiYWNrV2lkZ2V0IFwiLCB0cmF5Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBpZiAodHJheUNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc3RhbGxpbmcgaWZyYW1lXCIpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpZnJhbWUgZWxlbWVudFxuICAgICAgICAgICAgY29uc3QgaWZyYW1lID0gJChcIjxpZnJhbWU+PC9pZnJhbWU+XCIsIHtcbiAgICAgICAgICAgICAgICBzcmM6IFwiL29wY3VhLWZvci1ub2RlLXJlZC9zdXBwb3J0LWZyYW1lLmh0bWxcIixcbiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6IFwibm9cIixcbiAgICAgICAgICAgICAgICBzdHlsZTogXCJiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O292ZXJmbG93OmhpZGRlbjtib3JkZXI6M3B4XCIsXG4gICAgICAgICAgICAgICAgYWxsb3d0cmFuc3BhcmVuY3k6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE4MHB4XCIsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjMwcHhcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBpZnJhbWUgdG8gdGhlIGZlZWRiYWNrIGVsZW1lbnRcbiAgICAgICAgICAgIHRyYXlDb250ZW50LmFwcGVuZChpZnJhbWUpO1xuICAgICAgICAgICAgLy8gUG9zaXRpb24gdGhlIGZlZWRiYWNrIGVsZW1lbnQgYXQgdGhlIGJvdHRvbSByaWdodCBvZiB0aGUgdHJheSBjb250ZW50XG4gICAgICAgICAgICBpZnJhbWUuY3NzKHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBcIjIwcHhcIixcbiAgICAgICAgICAgICAgICBib3R0b206IFwiMTZweFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItRXhwbG9yZVwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwiZXhwbG9yZVwiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDQgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgbmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlLCB0eXBlOiBcIk9wY1VhLUVuZHBvaW50MlwiIH0sXG4gICAgICAgICAgICAvLyBmb3IgYWN0aW9uIGV4cGxvcmVcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBvdXRwdXRUeXBlOiB7IHZhbHVlOiBcIlZhbHVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBleGNsdWRlRW1wdHk6IHsgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgICAvLyByb290Tm9kZTogeyB2YWx1ZTogXCJAT2JqZWN0Rm9sZGVyXCIgfSxcbiAgICAgICAgICAgIGZvbGxvd09yZ2FuaXplczogeyB2YWx1ZTogZmFsc2UgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0czogMSxcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgRXhwbG9yZVwiO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA/IFwibm9kZV9sYWJlbF9pdGFsaWNcIiA6IFwiXCI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHByZXBhcmUoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcztcbiAgICAgICAgICAgIGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCgpO1xuICAgICAgICAgICAgaW5zdGFsbEZlZWRiYWNrV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IGlzU2VsZWN0YWJsZShub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlZhcmlhYmxlXCIgfHwgbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-Explore">
|
11
11
|
<style>
|
@@ -88,6 +88,154 @@
|
|
88
88
|
</script>
|
89
89
|
|
90
90
|
<script type="text/markdown" data-help-name="OpcUa-Client2-Explore">
|
91
|
+
explore a node of a OPCUA server, and get the structure of the node and its children.
|
92
|
+
|
93
|
+
## Explore action
|
94
|
+
|
95
|
+
you can either
|
96
|
+
|
97
|
+
- Inject your OPC UA address (NodeId) by the `nodeId` or `topic` property of an injected message or
|
98
|
+
- use the nodeId attribute defined in the OpcUa-Explore node itself.
|
99
|
+
|
100
|
+
## Input
|
101
|
+
|
102
|
+
The explore operation is triggered when the node receive an input message.
|
103
|
+
|
104
|
+
The nodeId to explore can be specified in the following ways, in priority order:
|
105
|
+
|
106
|
+
:msg.nodeId (string): the nodeId to explore
|
107
|
+
|
108
|
+
or if `msg.nodeId` is not defined:
|
109
|
+
|
110
|
+
:parameter.nodeId (string): the nodeId to read defined in the node configuration itself.
|
111
|
+
|
112
|
+
## Output
|
113
|
+
|
114
|
+
:msg.payload (Object): the structure of the node and its children.
|
115
|
+
|
116
|
+
### output type
|
117
|
+
|
118
|
+
- you can control the value that will be stored on the leaf of the returned object.
|
119
|
+
|
120
|
+
- It can be either
|
121
|
+
|
122
|
+
| Leaf Output Type | msg:outputType | Description |
|
123
|
+
| ------------------ | ----------------- | ---------------------------------------------------------------------------------------- |
|
124
|
+
| Value | Value | the variable value |
|
125
|
+
| DataValue | DataValue | the variable value with additional information |
|
126
|
+
| Variant | Variant | the variable value with additional information |
|
127
|
+
| StatusCode | StatusCode | the status code of the variable |
|
128
|
+
| NodeId | NodeId | the nodeId of the variable ( with namespace index) |
|
129
|
+
| NodeId with Uri | NSUNodeId | the nodeId of the variable ( with namespace urn) |
|
130
|
+
| BrowsePath | BrowsePath | the browse Path of the variable, starting from the Object Folder , with indexed namspace |
|
131
|
+
| Aliased BrowsePath | AliasedBrowsePath | the browse Path of the variable, starting from the Object Folder , with aliased namspace |
|
132
|
+
|
133
|
+
- if `msg.outputType` is defined, then it takes precedence on the `outputType` attribute defined in the node configuration itself.
|
134
|
+
|
135
|
+
### exclude empty flag
|
136
|
+
|
137
|
+
if (msg.excludeEmpty === true) then the node will not return empty nodes in the output structure.
|
138
|
+
|
139
|
+
### follow `organizes` reference
|
140
|
+
|
141
|
+
- If this flag is set to true, the node will also follow the `organizes` reference and return the children of the referenced node. (Origanizes, HasPropoerty and HasComponent references)
|
142
|
+
- If this flag is set to false, the node will return the children of the input node only. (HasPropoerty and HasComponent references)
|
143
|
+
|
144
|
+
### notes:
|
145
|
+
|
146
|
+
- Once the explorer hits a variables node, it reads the associated value (Value, DataValue, Variant, StatusCode, NodeId, NodeId with Uri, BrowsePath, Aliased BrowsePath) and stores it in the leaf of the returned object. It will not explore the children of the variable node any further.
|
147
|
+
|
148
|
+
- If the explorer hits a folder node, it will explore the children of the folder node and store them in the returned object, only if the `follow Organizes reference` flag is set to true.
|
149
|
+
|
150
|
+
- you can browse the children nodes of a Variable node , by specifying the Variable node as an input.
|
151
|
+
|
152
|
+
### Example
|
153
|
+
|
154
|
+
```json
|
155
|
+
{
|
156
|
+
"payload": "ns=1;s=Temperature",
|
157
|
+
"outputType": "Value"
|
158
|
+
}
|
159
|
+
```
|
160
|
+
|
161
|
+
### reading subtree structure
|
162
|
+
|
163
|
+
if the injected `msg.payload` is an object, the OPCUARead node will read the subtree structure of the node.
|
164
|
+
|
165
|
+
For instance:
|
166
|
+
|
167
|
+
```json
|
168
|
+
{
|
169
|
+
"nodeId": "/Server/ServerStatus",
|
170
|
+
"outputType": "Value"
|
171
|
+
}
|
172
|
+
```
|
173
|
+
|
174
|
+
will return the following structure:
|
175
|
+
|
176
|
+
```json
|
177
|
+
{
|
178
|
+
"payload": {
|
179
|
+
"StartTime": "2025-01-19T17:09:44.579Z",
|
180
|
+
"CurrentTime": "2025-01-21T20:24:17.285Z",
|
181
|
+
"State": 0,
|
182
|
+
"BuildInfo": {
|
183
|
+
"ProductUri": "NodeOPCUA-Server-for-CTT",
|
184
|
+
"ManufacturerName": "NodeOPCUA : MIT Licence ( see http://node-opcua.github.io/)",
|
185
|
+
"ProductName": "NodeOPCUA-Server",
|
186
|
+
"SoftwareVersion": "2.140.0",
|
187
|
+
"BuildNumber": "1234",
|
188
|
+
"BuildDate": "2020-02-01T00:00:00.000Z"
|
189
|
+
},
|
190
|
+
"SecondsTillShutdown": 0,
|
191
|
+
"ShutdownReason": {}
|
192
|
+
}
|
193
|
+
}
|
194
|
+
```
|
195
|
+
|
196
|
+
```json
|
197
|
+
{
|
198
|
+
"nodeId": "/Server/ServerStatus",
|
199
|
+
"outputType": "NodeId"
|
200
|
+
}
|
201
|
+
```
|
202
|
+
|
203
|
+
will return the following structure:
|
204
|
+
|
205
|
+
```json
|
206
|
+
{
|
207
|
+
"payload": {
|
208
|
+
"StartTime": "ns=0;i=2257",
|
209
|
+
"CurrentTime": "ns=0;i=2258",
|
210
|
+
"State": "ns=0;i=2259",
|
211
|
+
"BuildInfo": "ns=0;i=2260",
|
212
|
+
"SecondsTillShutdown": "ns=0;i=2992",
|
213
|
+
"ShutdownReason": "ns=0;i=2993"
|
214
|
+
}
|
215
|
+
}
|
216
|
+
```
|
217
|
+
|
218
|
+
```json
|
219
|
+
{
|
220
|
+
"nodeId": "/Server/ServerStatus/BuildInfo",
|
221
|
+
"outputType": "AliasedBrowsePath"
|
222
|
+
}
|
223
|
+
```
|
224
|
+
|
225
|
+
will return the following structure:
|
226
|
+
|
227
|
+
```json
|
228
|
+
{
|
229
|
+
"payload": {
|
230
|
+
"ProductUri": "/Server.ServerStatus.BuildInfo.ProductUri",
|
231
|
+
"ManufacturerName": "/Server.ServerStatus.BuildInfo.ManufacturerName",
|
232
|
+
"ProductName": "/Server.ServerStatus.BuildInfo.ProductName",
|
233
|
+
"SoftwareVersion": "/Server.ServerStatus.BuildInfo.SoftwareVersion",
|
234
|
+
"BuildNumber": "/Server.ServerStatus.BuildInfo.BuildNumber",
|
235
|
+
"BuildDate": "/Server.ServerStatus.BuildInfo.BuildDate"
|
236
|
+
}
|
237
|
+
}
|
238
|
+
```
|
91
239
|
|
92
240
|
</script>
|
93
241
|
//# sourceMappingURL=OpcUa-Client2-Explore.html.map
|